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

Frontier

Used byLedge.

An overdue departure from the expected, where expressive design and thoughtful restraint come together to make innovation feel natural, credible, and assured.

Lekki · Yearly lease

Flat 3, Bourdillon Court

Part paid

A two-bedroom let to the same tenant since 2023. The first instalment has cleared; the second falls due in March.

Annual rent
₦4.8m
Collected
₦2.4m
Outstanding
₦2.4m

Ref LG-0412 · Lease ends 31 Jan 2026

States

First instalment paid
Second instalment due 1 March
Service charge overdue

System palette

Shape

Panel16px
Inset10px
Actionpill

Text types

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

Rules

  1. 01

    Two serifs, two jobs

    Instrument Serif (400) gives headings and key financial figures their editorial character. Lora carries body text, labels and controls. Use tabular numerals for aligned amounts; monospace is a registry fallback for code, not the app's financial typeface.

  2. 02

    Use the current cool app surface

    Near-white ground, white cards, cool blue-grey insets and slate ink. The landlord, tenant and admin apps all use ledge-cool. Its 16px panels and 10px inputs supersede the older 4px base styles.

  3. 03

    Hairlines first, shadows lightly

    Cards use border-rule with rounded-panel and generous padding. A very faint shadow can lift an interactive card; stronger shadows belong to floating dialogs and menus. Use paper for recessed content.

  4. 04

    Green actions are pills

    Primary actions use bg-primary text-primary-foreground and rounded-full; hover deepens the green. Secondary actions are outlined pills. Reserve rounded-inset for inputs and inner surfaces. Links, selected dates and the brand's terminal dot use lead.

  5. 05

    Labels whisper; headings read naturally

    Small section eyebrows and field labels may be uppercase with 0.08–0.25em tracking. Headings stay in sentence case with tight leading. Use dim for explanatory copy and faint for quiet labels and furniture.

  6. 06

    Financial colour has a meaning

    Green marks collected or paid, gold marks pending or outstanding, and red marks overdue or failed. Pair each colour with a label. Charts distinguish landlord funds in emerald, Ledge revenue in gold and processing fees in clay; avoid decorative rainbow series.

  7. 07

    Leave room to read

    Use a centred reading column (48rem tenant, 56rem landlord, 64rem admin), roughly 24px side gutters and 48px main vertical padding. Separate sections generously; group related ledger rows with fine dividers. Subtle ruled lines and dotted leaders are optional ledger details.

  8. 08

    Motion follows the ledger

    Sections rise and fade in reading order; chart bars grow from their baseline and arcs draw on. Keep hover changes near 200ms and entrances around 700–900ms. Honour reduced motion with useReducedMotionConfig() when implementing registry components.

  9. 09

    Dark mode is a bash-ui adaptation

    Ledge's app supplies the light palette only. This entry derives dark slate surfaces, pale ink, lifted green actions and brighter state colours for the gallery's dark mode. Additional contract colours and ranked chart ramps are palette extensions rather than original Ledge tokens.

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 card15.16:1 · AAA
  • AaBody on card15.16:1 · AAA
  • AaSupporting text on card5.63:1 · AA
  • AaQuiet text on card2.62:1 · Below AA
  • AaBody on inset13.58:1 · AAA
  • AaLink on card12.53:1 · AAA
  • AaPrimary button label12.53:1 · AAA
  • AaInk button label15.00:1 · AAA
  • AaPositive state7.93:1 · AAA
  • AaWaiting state5.04:1 · AA
  • AaNegative state6.22:1 · AA
  • AaFocus ring against card12.53:1 · AA non-text
  • AaFocus ring against ground12.39:1 · AA non-text
Dark · 13/13 pairs meet AA

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

  • AaHeading on card14.58:1 · AAA
  • AaBody on card12.78:1 · AAA
  • AaSupporting text on card8.57:1 · AAA
  • AaQuiet text on card5.54:1 · AA
  • AaBody on inset11.03:1 · AAA
  • AaLink on card9.06:1 · AAA
  • AaPrimary button label10.03:1 · AAA
  • AaInk button label16.13:1 · AAA
  • AaPositive state6.90:1 · AA
  • AaWaiting state7.34:1 · AAA
  • AaNegative state6.84:1 · AA
  • AaFocus ring against card9.06:1 · AA non-text
  • AaFocus ring against ground10.03: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