Ship-It Designv0.0.20

GitHub

Touch & density

The desktop tokens are designed for cursor input — small click targets, dense information. The mobile design canvas adds a parallel set of touch tokens that bump dimensions to thumb-friendly sizes (44pt minimum tap target per Apple HIG), grow the type scale for one-arm reading, and round corners slightly more for the iOS feel.

Touch tokens#

Generated from packages/tokens/src/mobile.ts. Available as raw CSS variables (var(--touch-min)) and as Tailwind utilities.

TokenCSS varTailwindUse
Min tap--touch-min: 44pxh-touch, w-touch, min-h-touchSmallest acceptable tap target
Comfortable tap--touch-comfortable: 48pxh-touch-comfortable, min-h-touch-comfortableDefault for primary actions
Row--row-h: 56pxh-rowList row height
Row (large)--row-h-lg: 64pxh-row-lgFeatured list row
Nav bar--navbar-h: 56pxh-navbarMobile in-app top header
Tab bar--tabbar-h: 64pxh-tabbarBottom tab bar
Screen pad--screen-pad: 16pxpx-gutterDefault screen edge padding
Screen pad (large)--screen-pad-lg: 20pxpx-gutter-lgComfortable screen padding

Mobile type scale#

Bumped against desktop for thumb readability. body 13→15, h1 34→30 (down to fit a 390-wide screen), eyebrow 10→11, mono 11→12.

TokenTailwindPxvs desktop
--font-size-m-eyebrowtext-m-eyebrow11+1
--font-size-m-monotext-m-mono12+1
--font-size-m-bodytext-m-body15+2
--font-size-m-body-lgtext-m-body-lg17+2
--font-size-m-h4text-m-h419+1
--font-size-m-h3text-m-h323+1
--font-size-m-h2text-m-h226-2
--font-size-m-h1text-m-h130-4

Mobile radii#

Slightly larger than desktop — touch surfaces look right when corners feel "cushion-y".

TokenTailwindPx
--radius-m-tabrounded-m-tab12
--radius-m-cardrounded-m-card16
--radius-m-sheetrounded-m-sheet20

The density prop#

Most interactive primitives accept density?: 'comfortable' | 'touch' (default 'comfortable'). Passing density="touch" swaps the dimensions to the mobile tokens above without changing the visual variant.

tsx
// Same Button, two surfaces:
<Button variant="primary" size="md">Save</Button>
<Button variant="primary" size="md" density="touch">Save</Button>

Currently density-aware: Button, IconButton, Input, SearchInput, Switch, Checkbox, Card, Chip, Topbar, plus the shipit composites AskBar and CopilotMessage. The remaining interactive primitives will gain density in a follow-up — for now use the mobile-only patterns (TabBar, LargeTitle, PullToRefresh, Drawer side="bottom", NotifRow) for surfaces that need touch dimensions today.