Blocks

Feature Bento

Asymmetric bento grid: one large anchor card and a constellation of small ones.

Built for the details

The unglamorous parts of great interfaces, handled once and handled well.

Motion that settles once

Three shared springs power every hover, reveal, and layout shift, so the whole page moves as one body. Entrances breathe a single time — nothing wobbles, nothing nags. Override per component only when the physics genuinely call for it.

Token-pure theming

Every color, radius, and shadow resolves through CSS variables. Flip one attribute for a full light theme.

Composed, not configured

Blocks accept plain content props — arrays in, polished sections out. No config files, no schema wrangling.

Accessible by default

Focus rings, aria wiring, and keyboard paths ship in every component, with reduced-motion fallbacks throughout.

Fast where it counts

Transform-only animation and lazy ambient effects keep interaction under a frame, even on modest hardware.

Install

Copies the component source — plus its small internal deps — into your project. You own the code from the first minute.

terminal
npx lumora-ui@latest add features

Import

Using the workspace package instead? Deep imports keep cold starts lean; the barrel is fully tree-shakable either way.

app/page.tsx
import { FeatureBento } from "@lumora/ui/blocks/features";
// or from the barrel:
import { FeatureBento } from "@lumora/ui";

Props worth knowing

items take { icon?, title, body } in display order — the first fills the large 2×2 anchor cell, the rest flow into small cells. heading and subheading top the section. Props extend the natural HTML element, so className, event handlers, and aria attributes pass straight through.