cubby
Sign In

Design

Living gallery of cubby's components and tokens. Not in the nav — reachable at /design.

Design language

Warm-Paper Ledger

A print-editorial aesthetic applied to a data-dense dashboard. Cubby is still a dashboard — panels, metrics, charts, tables — but it reads like a printed control sheet or ledger, not a lit-up glass UI. Matte instrument panel, not glass dashboard: no glass, glow, drop shadows, dark canvas, neon, or gradient fills. Light mode only.

The one rule — separation by rule and tone, never by elevation. The moment something casts a shadow or glows it reads as glass. Keep everything flat on the paper and it stays a ledger.

Palette

paperbase canvas
paper-altzebra / inset
paper-surfaceheaders / panels
inktext + thick rules
hairlinedividers / borders
ultramarinethe lone accent

Type

  • JetBrains Mono — data, cells, metrics, numerals (tabular-nums, right-aligned).
  • Space Grotesk — headings & panel titles, letter-spacing -0.02em.
  • Inter — body & prose. Eyebrows are mono, uppercase, tracked-out.

How dashboard elements translate

  • · Panels → ruled regions: a hairline border or a 3px ink top-rule, paper-surface background, square corners, zero shadow.
  • · Stat tiles → ledger entries: a big mono number + small label, hairline-divided. Accent only on the one live metric.
  • · Charts → matte & ruled: a flat ink ladder + a single ultramarine, hairline gridlines, no gradients or glow. Rating scales stay off the blue axis.
  • · Tables → zebra by paper tone; category fills are tints, not chips; sticky paper-surface headers under a 3px ink rule; tight rows.
  • · Nav & chrome → hairline-divided and flat. No raised or shadowed bars.
  • · Accent is the loudest thing on screen — active row, hover, focus, the one live value. Everywhere else stays ink + paper.

A warm-paper instrument panel: dense mono data on soft paper, panels defined by ink rules and hairlines instead of shadows, matte flat charts, and a lone ultramarine accent reserved for the live/active value — a dashboard that reads like a printed ledger, not a glass one.

References McMaster-Carr · Datasette · The Monospace Web · Oxide Computer (light) · US / Berkeley Graphics · Gwern + Tufte CSS. Not the vibe: Fey, Mercury, glass / dark dashboards — same density, opposite material. Paper, not glass.

Color tokens

styles.css :root

Surfaces

background
card
muted
accent
secondary
border
input

Semantic

primary
destructive
positive
plum
slate

Chart ramp

chart-1
chart-2
chart-3
chart-4
chart-5
chart-6
chart-7
chart-8

Sequential ramp

chart-seq-1
chart-seq-2
chart-seq-3
chart-seq-4
chart-seq-5

Rule & tone separation

Warm-Paper Ledger — no elevation

Panels are defined by a 3px ink top-rule + hairline border and zebra paper tone — never a shadow, glow, or gradient. Corners are square.

Ledger panelrule + hairline
rolled oats$9.41
almond milk$5.42
kosher salt$11.00
bread flour$4.20
3px ink top-rule (var(--rule-ink)) — panel / header edge
hairline border (var(--border)) — quiet division
zebra tone (bg-card / bg-muted) — row banding, no rule
ultramarine spine (border-l-primary) — the one live accent

Typography

styles.css @layer base

Heading 1 — Space Grotesk

Heading 2 — Space Grotesk

Heading 3 — Space Grotesk

Body copy is Inter. The quick brown fox jumps over the lazy dog — crisp, neutral, legible at small sizes.

Mono is JetBrains Mono — used on chrome, codes, and numerals: 041570052600 · $9.41 · 248

Eyebrow micro-label

text-3xstext-2xstext-xstext-smtext-base
TableLabel
Unit price
MonoValue
$9.41248041570052600
Caption

A figure caption.

DenseMeta
updated 2h ago · 12 items

Surfaces

components/ui/surface
specPlate

Ingredient decomposition

components/recipe/decomposition-view
3 parts
1 ¼ cups all-purpose flour, sifted
Ranged + paren
2–3 cups (240–360 g) bread flour
Amount + name
2 cloves garlic
Whole = name
Pierre Ferrand 1840 Cognac
Recognizer
Juice of 1 lemon
Legend
amountnamemodifier

Comparison glyphs

components/recipe/compare/DeviationBar
Strip · μ75 of 100
0%
60%
75%
90%
100%
Tight cluster
80%
89%
59%
87%
Distribution
75%
79%
Legend
largest deviation from average

Buttons

components/ui/button
Variants
Sizes
Icon
States

Badges & labels

badge · DotLabel · EntityInlineLink
Badge
defaultsecondaryoutlinedestructive
Categories
foodtoolstool consumablestool accessoriesstoragehardwareelectronicssoftwarehouseholdsupplies
Location types
roomareabagboxshelfcratehalf-crate
Recipe tags
diet:vegancuisine:thaiweeknight
Status
UPLOADEDPENDINGFAILED
Ink stamp
On fileIn stockUnsaved

Forms

input · textarea · switch · checkbox · combobox
= 0.3333333333333333
= 1.5
= 0.0625
= 0.37
= 34

Stored f64 shown after =. Renders fractions, parses 1/3 · ⅓ · 1 1/2 · decimals on blur.

Switch
On
Checkbox
Checked

Cards

components/ui/card
Card
One ruled region — paper-surface fill + hairline border, square corners, zero shadow. Eyebrow title takes an optional icon.
Dashboard card

Same surface + an icon-eyebrow header helper.

Table

components/ui/table
IngredientCategoryPrice
almond milkfood$5.42
rolled oatsfood$9.41
Festool padtools$39.99
3 items$54.82

The selected row shows the paper tint + ultramarine spine.

Overlays

dialog · alert-dialog · dropdown · popover · toast
Triggers
Dialog widths

Alerts

components/common/colored-alert

Misc

info-row · ticket-divider · skeleton · none

Fact sheet (dot-leader)

UPC041570052600
Price$5.42
ManufacturerBlue Diamond
Notes

Ticket divider

Skeleton

Empty value

Conversion graph

units/unit-mapping-graph · d3-force

Nodes themed per measure kind · dashed native bridges (g↔lb) · nutrient edges opt-in

Entity preview

EntityPreviewContent · ui/preview-card

Manifest hovercard shown on any entity link — shared header (icon · name · open · tag · identity) + cross-links + entity-specific body

RT-Style Chicken Rice Bowl
recipe
makes 1 serving
Per recipe
PROTEIN7.2gFAT3.1gCARBS6.8gFIBER1.4g
Cost$0.489/13
Calories90 kcal8/13
Ingredients13
Steps5
cilantro
ingredient
aka coriander, fresh coriander
Per 100g
CAL23kcalPROTEIN2.1gFAT0.5gCARBS3.7gFIBER2.8g
Pricefrom $1.99/ea
Recipes2
kosher salt
product
Diamond Crystal · food
Per 100g
SODIUM40000mg
Price$11.00/ea
UPC013600020019
KOSHER SALT, KOSHER
usda
Branded· Diamond Crystal
Per 100g
SODIUM40000mg
Salt Fat Acid Heat
cookbook
Samin Nosrat
Recipes41of 86
SubjectsCooking, Technique
Top Shelf
location
shelf
On hand12
Sub-locations3
Diamond Crystal Kosher Salt
inventory
Top Shelf
On hand3 lb
Value$11.97
Sunday Supper
meal
Aug 9
Recipes2Buttermilk-Brined Chicken, Kale Caesar
Cost$18.40
Calories2140 kcal
🔨
Backyard Deck Rebuild
project
In progress · Renovation · Home
Spent$1,240.00of $2,000
Tasks5/8
Expenses6
DatesNo date
Sand and stain the railing
task
In progress · Paint & Finishes
StatusIn progress
DueAug 1
Cedar decking boards
expense
Materials · Building & Framing
Cost$340.00
DateJul 10
WN63446464
purchase
Jul 10
Expense total$396.40of $412 stated
Expenses3
Order #WN63446464
DateJul 10
Home Depot
vendor
Spend$8,413
Purchases27

Form field groups

inventory/amount-field-group · units/unit-mapping-pair-field

Fraction-aware amount + unit pair, and the composable “A = B” mapping pair (reused by the product unit-conversion editor)

Amount
Mapping pair
=

Tabs

components/ui/tabs
Overview panel content.

Toggles & view switcher

components/ui/toggle · view-switcher
View switch

Tooltip & keys

components/ui/tooltip · kbd
Tooltip
Kbd
KEsc

Spinner

components/ui/spinner
Sizes

Avatar

components/ui/avatar
Group
NSABCD
+3

Breadcrumb

components/ui/breadcrumb

Separator & collapsible

components/ui/separator · collapsible
Above the rule
Below the rule
Collapsible region content.

Stat tiles

components/ui/stat-tile
Cost / serving
$0.42
Calories
90
Ingredients
13
Coverage
9/13

Empty state

components/ui/empty
No inventory yet
Add your first item to start tracking what’s in the pantry.

Scroll area

components/ui/scroll-area

Inline labels & time

DotLabel · HoverableTimestamp
Dot label
ProduceDairyPantry
Timestamp