Interlace Theme
interlace-ui/themeFreeTheme
@interlace/ui — full DS CSS baseline: tokens, foundation (type/spacing/radius), preflight (focus ring + min-viewport contract), shadcn↔fumadocs bridge, and brand palette.
Install it
npx shadcn@latest add https://ds.interlace.tools/r/theme.jsonSource
1/*2 * @interlace/ui — canonical CSS contract.3 *4 * THE single import a consumer app needs:5 *6 * @import "tailwindcss";7 * @import "@interlace/ui/styles/index.css";8 *9 * That's the full DS baseline — type scale + spacing + radius + container10 * widths + focus ring + min-viewport contract + fumadocs bridge + brand11 * palette + every semantic token (--background / --foreground /12 * --muted-foreground / --ring / ...) — wired into Tailwind v4 utilities.13 *14 * ─── Why a barrel + cascade layers ─────────────────────────────────15 *16 * Before this file existed, consumers had to know — and repeat in order —17 * the five-file import chain (tokens → foundation → preflight → theme →18 * interlace-theme). A typo or skipped file silently degraded half the19 * contract (e.g. omitting preflight.css cost the WCAG 2.2 SC 2.4.13 focus20 * ring). This barrel makes the contract a single line, and CSS Cascade21 * Layers make the order self-documenting:22 *23 * `@layer interlace.primitives, interlace.foundation, interlace.preflight,24 * interlace.bridge, interlace.brand, interlace.semantics;`25 *26 * Reading left to right = ascending priority (later layers win in the27 * cascade). The whole stack stays under the `interlace.*` namespace so a28 * consumer who wants to fork the brand declares `@layer interlace.brand`29 * AFTER importing this file and their declarations deterministically30 * override ours — regardless of declaration order or specificity. Without31 * layers, brand override is source-order roulette.32 *33 * ─── What each layer owns ──────────────────────────────────────────34 *35 * interlace.primitives — raw values: keyframes, motion timings, animation36 * utility classes. No semantic meaning, just37 * mechanical primitives. (tokens.css)38 *39 * interlace.foundation — type scale, spacing scale, radius, container40 * widths, font families. Brand-invariant41 * STRUCTURE registered as Tailwind theme tokens.42 * (foundation.css — @theme stays top-level for43 * Tailwind to process)44 *45 * interlace.preflight — token-aware baseline beyond Tailwind's own46 * preflight: body bg/fg/font, ::selection, focus47// … truncated
