Quiet, precise components for React.

63 accessible components in plain CSS and one set of tokens. Hairlines, one cool accent and calm motion — for products that read as engineered, not decorated.

Get startedComponents
npm i @meridui/react

One set of tokens. The whole screen follows.

Accent, radius, density, theme and type scale are custom properties. Change one and the dashboard, form and dialog below all follow, with the exact CSS it takes underneath.

Tokens

Theme
Accent
Radius
Density
Type scale

Every control sets custom properties on the preview. Nothing else changes.

data-theme="light" data-accent="blue" data-density="default"

Deployments

northwind-web · eu-central

CommitStatusBranchAge
a41f9c2 Fix focus ring on menusReadymain2m ago
c09e6b3 Docs: RTL guideQueueddocs/rtl1m ago
9b07e11 Annual billing plansBuildingfeat/billing-v26m ago
e3c5d80 Upgrade @meridui/reactReadymain2h ago
71d2a4f Sort indicators in tablesFailedfeat/sorting3h ago

Project settings

Delete preview deployment?

feat/billing-v2 will stop serving traffic. Production is not affected.

Generated CSS

Attributes: data-theme="light" data-accent="blue" data-density="default"

Defaults. Change a control to see the tokens it sets.

Six rules, applied everywhere.

Every component follows the same design contract, so a page built from Merid holds together without a review. Principles

  1. One accent, used sparinglyA single cool blue carries interaction and selection. Everything else is ink-tinted neutral.
  2. Surface before borderTrays separate regions first. A hairline is the last resort, never a heavier rule.
  3. Hairlines onlyEvery border is one pixel. Selection is a 1.5px accent ring. Never two, never dark.
  4. Hierarchy from toneThree text tones and two weights. Colour is never a crutch for emphasis.
  5. Quiet interactionTints and a .97 press in 150 to 200 milliseconds. Reduced motion removes all of it.
  6. Open cascadeEvery rule lives in a named layer, so your styles win without !important.

npm i @meridui/react

Install once, import one stylesheet, ship.