# Miltinson Design System — full corpus > Miltinson Design System — tokens, React 19 components, and AI patterns for the products built on it. Ink-led palette with one amber accent, sharp radii, hairline borders, WCAG AA by default. Packages: @elirobinson/tokens, @elirobinson/react, @elirobinson/ai-patterns (GitHub Packages registry). ## System constraints (machine-checkable ids from @elirobinson/ai-patterns/contracts) - **no-barrel-imports** — Import via package subpaths only — @elirobinson/react/components//, @elirobinson/react/hooks/, @elirobinson/tokens/tokens.css. There are no barrel files; a bare @elirobinson/react import does not resolve. Check: Every import from an @elirobinson package names a subpath (components/*, hooks/*, styles/*.css, styles.css, tokens.css, tailwind.css, tokens.json, tokens-data, manifest, patterns, contracts, agents/*, testing/*). - **no-foreign-component-libraries** — @elirobinson/react is the component vocabulary. A second library (MUI, Chakra, Ant Design, Mantine, HeroUI, Headless UI, DaisyUI) forks the system's behaviour and accessibility guarantees. Radix is already wrapped by the system, so importing it directly does the same. Check: No import resolves to a foreign component library, and no direct Radix import appears outside a repo's sanctioned gap-filler directory. - **no-hardcoded-design-values** — Colour, radius, shadow and motion come from tokens — a mapped Tailwind utility, a .t-* class, or var(--token) in an arbitrary value. A literal cannot be re-pointed, so it silently stops responding to [data-theme="dark"] and to any token change. Check: No hex / rgb() / hsl() / oklch() literal, and no magic px or ms for radius, shadow or duration, appears in a className string, a style object, or a stylesheet that consumes values. - **no-underlined-control-label** — A control does not underline its own label. An underline is the one visual signal a hyperlink owns; drawn under a button, chip, tab or pagination item it stops telling a reader whether the thing navigates or acts, and on a filled surface it reads as a link wearing a button. Emphasis on a control comes from the fill, the label weight, or a border. A link-styled button on no fill is a different, legitimate pattern and is out of scope. Check: No rule that paints a control's own filled surface also declares text-decoration: underline (or its longhand) on that control. - **control-edge-contrast** — A control's edge comes from --border-control, not --border or --border-strong. The decorative pair measures 1.24:1 and 1.53:1 against --bg and is for surface seams — card edges, table rules, dividers, the edge of a floating panel — where nothing depends on seeing the line. --border-control is 3.64:1 light and 3.95:1 dark in the default palette, clearing the 3:1 SC 1.4.11 asks of the boundary that tells a user where an input, switch, chip, slider, stepper or segmented control is. Both tokens measure correctly on their own, so a per-token contrast sweep cannot see the mistake; it is a component reaching for the wrong one. Check: No rule whose selector names a control paints a border (border, border-color, or any side/logical longhand) with var(--border) or var(--border-strong). The test: if the border were invisible, would the user lose the control? - **status-surface-foreground** — A status surface is three tokens that only work together. --status-success | warning | danger | info is the fill and is never text; --status-X-on is the text drawn on that fill; --status-X-fg is status-coloured text on --bg or --surface; --status-X-tint with --status-X-tint-edge is the quiet pair. --status-success and --status-warning stopped being brand aliases and now own palette-independent hues, so a foreground that flips with the theme — var(--fg-inverse), or the legacy var(--fg-on-signal) — no longer tracks the fill it sits on and misses 4.5:1 in whichever theme it was not measured in. --status-warning is 1.87:1 against --bg in light, a documented SC 1.4.11 exception that holds only while the hue is a fill and the text on it carries the contrast; as a line it is the whole signal, so a warning fill or rule is edged with --status-warning-border (3.76:1 light, 11.22:1 dark). --fg-on-signal survives only as an alias of --accent-fg and collapses under any non-default palette. Check: No rule that paints a status fill (background or background-color set to var(--status-success | warning | danger | info)) also sets color to var(--fg-inverse) or var(--fg-on-signal) — the text on a status fill is var(--status--on). No border, outline or column-rule colour is var(--status-warning) — an edge is var(--status-warning-border). No value anywhere, including a custom-property definition, references var(--fg-on-signal). The -on, -fg, -tint, -tint-edge and -border members are the fixes and are never the defect. - **forward-ref** — Every component that renders a focusable or interactive native element uses forwardRef, forwarding to the outermost interactive element the component owns. Check: The component is wrapped in React.forwardRef and the forwarded ref resolves to the interactive DOM node (or a documented handle, e.g. VirtualListHandle). - **touch-target-primary** — Primary interactive controls at their default size — buttons, pagination items, segmented-control options, nav items — have a minimum touch target of var(--target) square (44x44px, and what every primary control gets under data-platform="mobile" and on a coarse-pointer phone; the dense tier is excluded from that floor by name rather than inflated to it, because it is already measured against 24x24). Reach for the token, not the number: a literal is what no-hardcoded-design-values forbids, and it cannot be re-pointed by the platform dial. Where visual density matters, keep the painted glyph small and expand the hit area with padding or a bounded overlay rather than inflating the visible control. A control whose whole purpose is to be compact belongs under touch-target-dense instead; padding it back up to var(--target) only turns it into the default size and removes the reason the compact variant exists. Check: The computed hit area of each primary control is at least var(--target) square, measured on whichever single surface receives the interaction — the control itself, or a