bash-ui
ComponentsDesign systemsHow to use
Getting started
IntroductionHow to use
Design systemsSee all →
The MeridianFrontierUnderstatedCuratedStudioNeutralPlayground
ButtonsSee all →
Social link buttonsKey login buttonSend buttonArrow buttonVideo buttonApp store badgeTonal buttonLoading buttonCTA buttonInbox buttonDelete button
Top navbars & navigationSee all →
Radial navigationExpanding menuGooey tabsCount tabsApp sidebar
InputsSee all →
Sort-by headingDissolve inputSearchable selectCheckboxLock toggleNotification toggleGooey inputSearch barRange sliderDate range calendar
ChartsSee all →
GitHub activity chartRevenue bar chartDonut chartMoney flow chartIncome vs spending chartFunnel chartMetric cardPipeline chartBreakdown dialAI cost cardStick progress bar
Data displaySee all →
Tech stack logosWallet cardScore gauge
Images & mediaSee all →
Doodle portraitImage collageQR codeSaved board
Text & typeSee all →
Scramble text
ListsSee all →
Ranking tableTo-do listFAQ accordionSwipe cards
FeedbackSee all →
Feedback cardFeedback sheet
Menus & overlaysSee all →
Link previewInfo tooltipAccount menu

Curated

Used bySteezeSruxayStqorcStewxdSteekjSteezoSteezexoxoxoSruxay

A refined visual identity that feels elevated without feeling exclusive. Thoughtful design gives it a distinctive presence while keeping it welcoming and approachable.

Drop 04

The Lagos linen edit

Live

Hand-dyed adire sets from three Yaba studios, sized S to XXL and shipped from Lagos within two days.

Earnings
₦412,500
Orders
37
Drop code
STZ-0421

Admin · 12 orders to ship · 1 refund pending

States

Payout sent Friday
12 orders awaiting dispatch
1 refund requested

System palette

Shape

Panel12px
Inset8px
Actionpill

Text types

Select a type to highlight it in the card above. Select again to clear.

Rules

  1. 01

    Playfair speaks, DM Sans explains

    Playfair Display is the page's root face: wordmark, headings, navigation and button labels. DM Sans carries paragraphs, answers, form copy and the footer. Section headings request weight 300, which renders as Playfair's lightest available weight (400); the hero uses 500 and small card titles 600 in uppercase. Body copy often sits at DM Sans 300 with 1.5–1.6 line height.

  2. 02

    Charcoal and cream, nothing else neutral

    The ground is #222222 and the ink is #f1efe0; light mode swaps them, as the landing's cream sections do. Derive every other neutral from those two at reduced strength: borders at 10–15%, quiet fills at 2–5%, supporting text at 60–70%. Never use pure white text or a grey from another scale.

  3. 03

    Tight serifs, spaced labels

    Large headings pull in tracking (about −1 to −2px at 32–64px) with 1.1–1.2 leading and stay in sentence case. Italicise one phrase for emphasis, as in "Join the culture". Small eyebrows, numbering (01, 02…) and footer captions go uppercase with +0.05em to 1px tracking.

  4. 04

    Actions are pills

    Primary calls to action are rounded-full pills in Playfair: cream fill with charcoal label, or a cream outline in the navigation. On hover, a small dot expands to fill the pill and the label gives way to an up-right arrow over about 300ms. Inputs and inner controls use rounded-inset (8px), cards rounded-panel (12px) and full-screen dialogs about 16px.

  5. 05

    Hairlines, not boxes

    Cards barely lift from the ground: a near-invisible fill with a border-rule hairline. Lists and accordions separate items with bottom borders only. Reserve deep, soft black shadows for floating media such as phone mock-ups; do not add decorative shadows to cards.

  6. 06

    Lilac is a glow, used sparingly

    Lead is the lilac from the page glow and the app's on-switches, spinners and default-address badges. Use it for links, focus, selection and small marks, never for large fills or body text. Primary buttons stay cream on charcoal (or charcoal on cream). In light mode, lead deepens so it reads as text on cream.

  7. 07

    Status in soft pastels

    Steeze's internal dashboards mark good in mint, warning in gold and bad in rose, and rank in gold, silver and bronze. Pair each with a label. On charcoal the pastels are used as-is; on cream this entry deepens them so they pass as text.

  8. 08

    Slow, confident motion

    Entrances rise 20–50px and fade over 0.8–1s on cubic-bezier(0.22, 1, 0.36, 1), staggered 0.1–0.2s. The hero's slide uses 2.8s on cubic-bezier(0.19, 1, 0.22, 1). Hover changes take about 300ms, card washes about 500ms. Honour reduced motion with useReducedMotionConfig().

  9. 09

    Outfit belongs to the tools

    The admin dashboard uses Outfit (variable, 100–900) for everything; it is the interface font here (font-interface). Use it for dense screens such as tables, dashboards and the app's earnings figures. Customer-facing copy stays Playfair and DM Sans. The admin's own colours are not part of this system, and nor is the app's Montserrat.

  10. 10

    Orbitron is for card numbers

    The app sets payment-card digits in Orbitron with wide tracking; it is the mono face here (font-mono). Keep it to short technical strings such as card numbers and codes, never paragraphs or labels.

  11. 11

    Two quiet button fills

    Beside a primary action, the app uses two filled buttons with rounded-inset corners and DM Sans semibold labels: tonal, a blue-slate (#323743) with off-white text, for things like Earnings; and secondary, a mid grey (#5E5E5E) with white text, for things like Edit Profile. Both hold their colour in light and dark.

Accessibility

WCAG 2.2 colour contrast

Calculated from this system’s colours in both modes. These are contrast checks, not an overall accessibility score or certification.

Light · 12/13 pairs meet AA

Text pairs use the normal-size AA threshold; focus-ring pairs use the non-text threshold.

  • AaHeading on card14.56:1 · AAA
  • AaBody on card14.56:1 · AAA
  • AaSupporting text on card5.78:1 · AA
  • AaQuiet text on card3.21:1 · Large text only
  • AaBody on inset12.56:1 · AAA
  • AaLink on card5.92:1 · AA
  • AaPrimary button label13.76:1 · AAA
  • AaInk button label13.76:1 · AAA
  • AaPositive state4.96:1 · AA
  • AaWaiting state4.74:1 · AA
  • AaNegative state5.45:1 · AA
  • AaFocus ring against card4.29:1 · AA non-text
  • AaFocus ring against ground4.05:1 · AA non-text
Dark · 12/13 pairs meet AA

Text pairs use the normal-size AA threshold; focus-ring pairs use the non-text threshold.

  • AaHeading on card13.08:1 · AAA
  • AaBody on card13.08:1 · AAA
  • AaSupporting text on card5.55:1 · AA
  • AaQuiet text on card3.22:1 · Large text only
  • AaBody on inset12.07:1 · AAA
  • AaLink on card6.76:1 · AA
  • AaPrimary button label13.76:1 · AAA
  • AaInk button label13.76:1 · AAA
  • AaPositive state7.48:1 · AAA
  • AaWaiting state7.16:1 · AAA
  • AaNegative state6.83:1 · AA
  • AaFocus ring against card4.30:1 · AA non-text
  • AaFocus ring against ground4.52:1 · AA non-text

Normal text: AA ≥ 4.5:1, AAA ≥ 7:1. Large text: AA ≥ 3:1, AAA ≥ 4.5:1 (24px regular or approximately 18.67px bold). Non-text indicators: AA ≥ 3:1. Ratios are displayed rounded down; results use full precision.

AA text guidanceAAA text guidanceNon-text contrast guidance