crucıble

Blog

An editorial blog home template: a serif masthead with slim nav and a subscribe button, a two-column featured essay over graded cover art with an Anneal headline, a recent-posts grid of Kindle spotlight cards with topic chips and initials bylines, a browse-by-topic rail, a newsletter sign-up card, and a multi-column footer — every string a prop, one warm-terracotta accent knob.

motionpro

Installation

CLI

npx shadcn@latest add @crucible/blog

Manual — install dependencies, then copy the source

npm install motion

Props

PropTypeDefaultDescription
brandstring"The Filament"Publication name in the masthead + footer.
logoReact.ReactNodethe built-in nib markInline logo mark (20×20, currentColor).
kickerstring"Field notes on craft & code"Short kicker above the masthead, e.g. an issue line.
navBlogNavItem[]Top navigation links.
subscribeLabelstring"Subscribe"Header subscribe-button label.
featuredLabelstring"Featured"Small eyebrow over the featured post.
featuredBlogPostThe lead article.
latestHeadingstring"Latest writing"Section heading over the recent-posts grid.
latestLinkBlogNavItem"See all" link beside the latest heading.
postsBlogPost[]Recent-article cards.
topicsHeadingstring"Browse by topic"Heading over the topics rail.
categoriesBlogCategory[]Topic chips.
newsletterHeadingReact.ReactNodeNewsletter band heading.
newsletterSubheadReact.ReactNodeNewsletter band supporting line.
newsletterPlaceholderstring"you@studio.com"Email input placeholder.
newsletterCtastring"Subscribe"Newsletter submit label.
newsletterConfirmationstringConfirmation shown after a successful (client-side) submit.
newsletterNoteReact.ReactNodeFine print under the newsletter form.
onSubscribe(email: string) => voidCalled with the entered email on newsletter submit. The form always shows its confirmation state locally; wire this to a real endpoint if you like.
footerGroupsBlogFooterGroup[]Footer link groups.
footerNoteReact.ReactNodeFooter legal line.
accentstring"#d98a5b" (warm terracotta)Signature hue, any CSS color.
Also accepts all props of Omit<React.ComponentPropsWithoutRef<"div">, "children" | "onSubmit">they pass through to the underlying element.

Honors prefers-reduced-motion with a designed static fallback, and passes className through.