Astro 7 + React 19 · clone it free, ships with perfect Lighthouse scoresGet started free →

Component library

Beautiful blocks,
wired to your brand

Every component below is built on the same six design tokens as the rest of the template — change one value in one.config.ts and they all re-skin. Accessible, responsive, dark-mode ready, zero config.

Block Button.astro

Five variants — primary, secondary, tertiary, ghost, destructive — across three sizes. Icon slots, loading and disabled states, and an href prop that renders a real anchor instead of a button.

Design system

Buttons

One primitive, five variants, three sizes. Hairline borders, token-driven colour, and crisp keyboard focus — every state accounted for.

SmallMediumLarge
Primary
Secondary
Tertiary
Ghost
Destructive

With icons

Icon only

Loading

Disabled

Full width

Block Card.astro

One composable primitive, five layouts: feature (icon + link), stat (oversized number + trend), profile (avatar + socials), pricing (tier + feature list + CTA), and a bare default — switched with a single variant prop.

One card, five layouts

A card for every surface

Feature, stat, profile, and pricing — all from a single composable component. Hairline borders, the icon-chip treatment, colour as a sparing accent. Switch a theme in the nav and watch every card respond.

1,234
your metric here+00%
0.0d
your metric here−0.0d
00%
your metric here+0%
00 KB
your metric here
Team memberRole, Company

A one-line bio goes here — what they do, and one thing they are known for.

Team memberRole, Company

Keep it to a sentence. The card truncates, and the second line is the one that gets cut.

Team memberRole, Company

Replace these with real people before you ship — and never invent a statistic.

Starter

For solo builders shipping their first site.

$0forever
  • Free forever template
  • Full design system
  • Motion library
  • Community support

Enterprise

For teams with custom infrastructure needs.

Custom
  • Everything in Pro
  • Dedicated support
  • SLA + uptime guarantees
  • Custom plugins
  • On-prem deployment

Block Carousel.astro

A native CSS scroll-snap carousel — no JS animation loop. Feed it items or slot children directly; perView and peek control how much of the next slide shows. Arrows, dots, and arrow-key navigation wired in.

Component

Carousel

A content carousel on native CSS scroll-snap — smooth, touch-native, and reduced-motion safe. Drag, click the arrows, tap a dot, or use the arrow keys.

Testimonials

Feature cards

Block Tabs.astro

Accessible tabs with a gliding active-tab indicator — pure Astro plus one scoped script, zero React. Panels are named slots (panel-<id>); full keyboard support (arrow keys, Home/End) baked in.

Component

Tabs that glide

A sliding indicator tracks the active tab. Full keyboard support, ARIA roles, and a crossfade that yields to reduced-motion. Zero React.

One mental model

Every surface in the template derives from six editable tokens. Pick a color, and the whole system — cards, inputs, focus rings, these tabs — recalibrates in one motion. No theme files to chase.

  • Six tokens, three depth levels
  • Auto dark-mode flip, WCAG AA
  • Hairline borders, generous space

Block Quote.astro

Pull-quotes in three variants — featured (large, centered), inline (accent bar), and compact (grid card) — each with an optional 1–5 star rating and an avatar-initials fallback.

In their words

Pull-quotes, three ways

An inline quote is shorter — one sentence, the single thing they would tell a colleague.

Customer nameRole, Company

A short customer quote goes here. One or two sentences on the outcome, in their own words.

Customer nameRole, Company

A concrete result lands harder than an adjective — and it is the part a reader can actually check.

Customer nameRole, Company

Only publish a quote you have consent to publish, attributed to someone who really said it.

Customer nameRole, Company

Block ContactForm.astro

A complete contact form built from one reusable field shape — label, hairline border, helper text, per-field error and valid states — with inline validation on blur and a simulated (offline) submit.

Get in touch

Let's talk

One reusable field shape — hairline borders, token-driven colour, crisp focus rings, and forgiving inline validation. Every state is accounted for, and the whole thing flips with dark mode.

We'll only use this to reply.

A sentence or two is plenty — at least 20 characters.

Or just stay in the loop

Product notes and the occasional release. No spam.

Block Breadcrumbs.astro

An accessible breadcrumb trail — chevron or slash separators, an optional home icon, and a maxItems prop that collapses deep trails into an accessible '…' menu.

Navigation

A breadcrumb trail, three ways

A short three-level trail with chevron separators
A deep trail collapsed past four levels — open the… menu for the hidden crumbs
A leading home icon, slash separators, and a long current page that truncates

Block Footer.astro

The site's full marketing footer — brand column, socials, four link columns, newsletter signup, and a legal bottom bar — shown here with zero props. The real one closes this page below.