SearchApi Design System

Components

      • Playground
      • All variants
      • States
      • Full width
      • Playground
      • Variants
    • Locale Switcher
    • Site Footer
      • Playground
      • Every preference
      • Playground
      • Every preference
      • HTTP request
      • Every token kind
      • Playground
      • Every target
      • Playground
      • Slots
      • Sunk body
      • Plan comparison
      • Numeric columns
      • Parameter reference
      • Payload
      • With drill-in tokens
      • An error envelope
      • All meanings
      • Playground
      • Every service
      • Playground
      • Lettermark
      • Playground
      • Named and decorative
      • Default
      • In a value list
      • Playground
      • Playground
      • In a row
      • Playground
      • Default
      • With type
      • Required
      • In context
      • Current
      • Sizes
      • States
      • Composed
      • Playground
      • Playground
      • Multiline
      • Playground
      • Required, default and set rows
      • With a validation error
      • With a handed-in token
      • Playground
      • Requiredness
      • Defaults and enums
    • Playground
      • Playground
      • With parameters set
      • No recording, Run disabled
      • Playground
      • Handed in from another engine
      • With a validation error
      • Playground
      • Multiple
      • Closed
      • Results view
      • Sidebar
      • Panel
      • Lettermark services
      • Playground
      • Renders nothing
      • Playground
      • Variants
      • Export switcher
    • Engine Page Header

No matching results.

Pages

  • Foundations
  • Colour
  • Typography
  • Radius & shadow
  • Motion
  • Data states
  • Parameter vocabulary
  • Form controls

No matching results.

Typography

Typography

The site makes no font request. Everything below the display face resolves against what the reader already has, which is why application.html.erb has no <link> to a font host and why a new stack has to enter through design/design-tokens.json rather than through application CSS.

Families

TokenStack
font-sansInter, ui-sans-serif, system-ui, 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', 'Yu Gothic UI', Meiryo, sans-serif
font-monoui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace
font-displayMagistral, Inter, ui-sans-serif, system-ui, 'Hiragino Kaku Gothic ProN', 'Hiragino Sans', 'Yu Gothic UI', Meiryo, sans-serif

Sans — Search 87 engines through one endpoint

Mono — GET /api/v1/search?engine=google

Display — Search 87 engines through one endpoint

Brand headings only; body copy stays sans. Self-hosted from design/assets/fonts and linked, never inlined — the first family of font_display names the @font-face family, the rest is the sans stack so non-Latin/Cyrillic text (CJK included) falls through unchanged. Five uprights, no italics and no 600: a 600 request resolves upward to Bold 700. The vendor's own CSS splits these across three family names (Magistral / Magistral Book / Magistral Extra); we register all five under one family so weight matching works. ExtraBold 800 is the cut the searchapi.io wordmark was drawn from.

Weights

400 — The quick brown fox jumps over the lazy dog

500 — The quick brown fox jumps over the lazy dog

600 — The quick brown fox jumps over the lazy dog

700 — The quick brown fox jumps over the lazy dog

800 — The quick brown fox jumps over the lazy dog

Scale

Sizes and their line heights, as tokens.css emits them into @theme. The px/line notation is the record's; the rendered line is the size itself.

TokenValueSpecimen
text-xs 12px/16 Search
text-sm 14px/20 Search
text-base 16px/24 Search
text-lg 18px/28 Search
text-xl 20px/28 Search
text-2xl 24px/32 Search
text-3xl 30px/36 Search
text-4xl 36px/40 Search
text-5xl 48px/1 Search
text-6xl 60px/1 Search

Observed on the docs surface

  • h1 — 24px/700
  • h2 — 18px/600
  • h3 — 16px/600 (in gray-50 band, pad 4x24)
  • body — 14px/400
  • code — 14px mono
  • copy_btn — 12px/500
Colour Radius & shadow