Search Raihin Design System

Search tokens, pages and quick actions

Foundations

The rules of the road

The Raihin design system is one canonical theme. Most decisions about names, structure, and pairings have already been made and locked. New work composes inside this vocabulary rather than inventing alongside it.

Locked

System identity. Treat as fixed.

  • z-index scale (cross-surface layering)
  • --ring-width = 3px
  • Status hue conventions (red = destructive, green = success, …)
  • State-layer opacities (4/6/8/12/16%)
  • --size-* ratios
  • Opacity scale
Brand

Defines how Raihin looks and feels.

  • Surfaces (--background, --card, --popover)
  • Foreground hierarchies
  • --primary, --secondary, --accent
  • Status lightness/chroma
  • Fonts
  • Semantic radii (--radius-button, --radius-card, …)
  • Chart palette
Tunable

Adjust as the product evolves.

  • Shadows
  • Motion durations & easings
  • --overlay opacity
  • Per-control surfaces (switch, slider, scrollbar, skeleton)
  • --placeholder-color
  • Link / code / kbd treatments
  • Blur scale
<div className="bg-black/30 rounded-3xl z-50">…</div>
<div className="bg-overlay rounded-card z-overlay">…</div>

Inline color/radius/z-index values. Use the token vocabulary.

<div className="bg-destructive/10 text-destructive">Error</div>
<div className="bg-destructive text-destructive-foreground border border-destructive-border">Error</div>

Status uses the solid pattern. /10 on a pastel base loses contrast.

<div className="bg-card text-foreground/70">…</div>
<div className="bg-card text-card-foreground">…</div>

Semantic foreground pairs. Don't split bg-{role} from text-{role}-foreground.

<input className="text-sm" />
<input className="text-base md:text-sm" />

iOS Safari focus-zoom rule. Text inputs must be at least 16px on mobile.

<div><Card className="mb-4" /><Card className="mb-4" /></div>
<div className="flex flex-col gap-4"><Card /><Card /></div>

Margins collapse and fight stacking. Use gap-* on a flex/grid parent for sibling spacing.

<div className="gap-3 p-5">…</div>
<div className="gap-2 p-4">…</div>

Prefer even Tailwind spacing steps (2, 4, 6, 8, 10, 12). Odd steps usually mean fighting the layout — pick the nearest even step or a density token.