@boopdoopgoop/design-system 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tokens/primitives.json","../src/tokens/semantic.json","../src/token-engine.ts","../src/index.ts"],"sourcesContent":["{\n \"$description\": \"DTCG 2025.10 primitives. Colors use sRGB components in the 0–1 range; dimensions are CSS pixels. Product CSS is the value authority.\",\n \"primitive\": {\n \"color\": {\n \"$type\": \"color\",\n \"white\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [1, 1, 1],\n \"hex\": \"#ffffff\"\n }\n },\n \"black\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [0, 0, 0],\n \"hex\": \"#000000\"\n }\n },\n \"ink\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.10196078431372549, 0.10196078431372549, 0.10196078431372549\n ],\n \"hex\": \"#1a1a1a\"\n }\n },\n \"muted\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [0.4, 0.4, 0.4],\n \"hex\": \"#666666\"\n }\n },\n \"mist\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.9568627450980393, 0.9568627450980393, 0.9490196078431372\n ],\n \"hex\": \"#f4f4f2\"\n }\n },\n \"line\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.8196078431372549, 0.8196078431372549, 0.8196078431372549\n ],\n \"hex\": \"#d1d1d1\"\n }\n },\n \"control-line\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.5803921568627451, 0.5803921568627451, 0.5803921568627451\n ],\n \"hex\": \"#949494\"\n }\n },\n \"placeholder\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.4627450980392157, 0.4627450980392157, 0.4627450980392157\n ],\n \"hex\": \"#767676\"\n }\n },\n \"signal\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.27058823529411763, 0.27058823529411763, 0.27058823529411763\n ],\n \"hex\": \"#454545\"\n }\n },\n \"warning\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.5411764705882353, 0.41568627450980394, 0.07058823529411765\n ],\n \"hex\": \"#8a6a12\"\n }\n },\n \"success\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.2196078431372549, 0.43529411764705883, 0.1411764705882353\n ],\n \"hex\": \"#386f24\"\n }\n },\n \"danger\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.6078431372549019, 0.17254901960784313, 0.17254901960784313\n ],\n \"hex\": \"#9b2c2c\"\n }\n },\n \"info\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [0.2, 0.3137254901960784, 0.611764705882353],\n \"hex\": \"#33509c\"\n }\n },\n \"sage\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.8627450980392157, 0.9098039215686274, 0.8313725490196079\n ],\n \"hex\": \"#dce8d4\"\n }\n },\n \"sage-ink\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.1843137254901961, 0.2901960784313726, 0.1607843137254902\n ],\n \"hex\": \"#2f4a29\"\n }\n },\n \"slate\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.8588235294117647, 0.8980392156862745, 0.9372549019607843\n ],\n \"hex\": \"#dbe5ef\"\n }\n },\n \"slate-ink\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.19607843137254902, 0.2823529411764706, 0.3764705882352941\n ],\n \"hex\": \"#324860\"\n }\n },\n \"ochre\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.9411764705882353, 0.8901960784313725, 0.7686274509803922\n ],\n \"hex\": \"#f0e3c4\"\n }\n },\n \"ochre-ink\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [0.4, 0.2980392156862745, 0.08627450980392157],\n \"hex\": \"#664c16\"\n }\n },\n \"clay\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.9411764705882353, 0.8588235294117647, 0.8156862745098039\n ],\n \"hex\": \"#f0dbd0\"\n }\n },\n \"clay-ink\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.4549019607843137, 0.2627450980392157, 0.1843137254901961\n ],\n \"hex\": \"#74432f\"\n }\n },\n \"mauve\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.9098039215686274, 0.8627450980392157, 0.9254901960784314\n ],\n \"hex\": \"#e8dcec\"\n }\n },\n \"mauve-ink\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.3686274509803922, 0.25098039215686274, 0.40784313725490196\n ],\n \"hex\": \"#5e4068\"\n }\n },\n \"stone\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.9019607843137255, 0.8901960784313725, 0.8588235294117647\n ],\n \"hex\": \"#e6e3db\"\n }\n },\n \"stone-ink\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.30980392156862746, 0.2980392156862745, 0.2627450980392157\n ],\n \"hex\": \"#4f4c43\"\n }\n },\n \"paper\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.9490196078431372, 0.9294117647058824, 0.8862745098039215\n ],\n \"hex\": \"#f2ede2\"\n }\n },\n \"sheet\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.9725490196078431, 0.9607843137254902, 0.9333333333333333\n ],\n \"hex\": \"#f8f5ee\"\n }\n },\n \"ink-70\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.28627450980392155, 0.2784313725490196, 0.26666666666666666\n ],\n \"hex\": \"#494744\"\n }\n },\n \"ink-35\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.615686274509804, 0.6039215686274509, 0.5764705882352941\n ],\n \"hex\": \"#9d9a93\"\n }\n },\n \"ink-18\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [\n 0.7764705882352941, 0.7607843137254902, 0.7254901960784313\n ],\n \"hex\": \"#c6c2b9\"\n }\n },\n \"yellow\": {\n \"$value\": {\n \"colorSpace\": \"srgb\",\n \"components\": [1, 0.9098039215686274, 0],\n \"hex\": \"#ffe800\"\n }\n }\n },\n \"font\": {\n \"$type\": \"fontFamily\",\n \"display\": {\n \"$value\": [\n \"Big Shoulders Display\",\n \"Arial Narrow\",\n \"Helvetica Neue\",\n \"Arial\",\n \"sans-serif\"\n ]\n },\n \"body\": {\n \"$value\": [\"Archivo\", \"ui-sans-serif\", \"system-ui\", \"sans-serif\"]\n },\n \"mono\": {\n \"$value\": [\"Spline Sans Mono\", \"ui-monospace\", \"Menlo\", \"monospace\"]\n }\n },\n \"size\": {\n \"$type\": \"dimension\",\n \"11\": { \"$value\": { \"value\": 11, \"unit\": \"px\" } },\n \"12\": { \"$value\": { \"value\": 12, \"unit\": \"px\" } },\n \"14\": { \"$value\": { \"value\": 14, \"unit\": \"px\" } },\n \"15\": { \"$value\": { \"value\": 15, \"unit\": \"px\" } },\n \"18\": { \"$value\": { \"value\": 18, \"unit\": \"px\" } },\n \"24\": { \"$value\": { \"value\": 24, \"unit\": \"px\" } },\n \"32\": { \"$value\": { \"value\": 32, \"unit\": \"px\" } }\n },\n \"dimension\": {\n \"$type\": \"dimension\",\n \"zero\": { \"$value\": { \"value\": 0, \"unit\": \"px\" } },\n \"one\": { \"$value\": { \"value\": 1, \"unit\": \"px\" } },\n \"two\": { \"$value\": { \"value\": 2, \"unit\": \"px\" } },\n \"three\": { \"$value\": { \"value\": 3, \"unit\": \"px\" } }\n },\n \"space\": {\n \"$type\": \"dimension\",\n \"4\": { \"$value\": { \"value\": 4, \"unit\": \"px\" } },\n \"6\": { \"$value\": { \"value\": 6, \"unit\": \"px\" } },\n \"8\": { \"$value\": { \"value\": 8, \"unit\": \"px\" } },\n \"10\": { \"$value\": { \"value\": 10, \"unit\": \"px\" } },\n \"12\": { \"$value\": { \"value\": 12, \"unit\": \"px\" } },\n \"16\": { \"$value\": { \"value\": 16, \"unit\": \"px\" } },\n \"20\": { \"$value\": { \"value\": 20, \"unit\": \"px\" } },\n \"24\": { \"$value\": { \"value\": 24, \"unit\": \"px\" } },\n \"32\": { \"$value\": { \"value\": 32, \"unit\": \"px\" } }\n },\n \"component-size\": {\n \"$type\": \"dimension\",\n \"control\": { \"$value\": { \"value\": 44, \"unit\": \"px\" } },\n \"textarea\": { \"$value\": { \"value\": 96, \"unit\": \"px\" } },\n \"modal\": { \"$value\": { \"value\": 480, \"unit\": \"px\" } }\n },\n \"layer\": {\n \"$type\": \"number\",\n \"modal\": { \"$value\": 50 }\n },\n \"weight\": {\n \"$type\": \"fontWeight\",\n \"regular\": { \"$value\": 400 },\n \"medium\": { \"$value\": 500 },\n \"semibold\": { \"$value\": 600 },\n \"bold\": { \"$value\": 700 },\n \"black\": { \"$value\": 900 }\n },\n \"ratio\": {\n \"$type\": \"number\",\n \"display\": { \"$value\": 1 },\n \"body\": { \"$value\": 1.45 },\n \"copy\": { \"$value\": 1.4 },\n \"label\": { \"$value\": 1.25 },\n \"grain\": { \"$value\": 0.1 },\n \"hover\": { \"$value\": 0.05 },\n \"overlay\": { \"$value\": 0.4 },\n \"disabled\": { \"$value\": 0.55 },\n \"tracking-control\": { \"$value\": 0.08 },\n \"tracking-label\": { \"$value\": 0.12 },\n \"tracking-panel\": { \"$value\": 0.14 }\n }\n }\n}\n","{\n \"$description\": \"Semantic aliases. App chrome and risograph paper are independent named tiers, not light/dark modes. Font choices are fixed for this release.\",\n \"color\": {\n \"$type\": \"color\",\n \"app\": {\n \"$description\": \"theme.css lines 6–32. App chrome only.\",\n \"canvas\": { \"$value\": \"{primitive.color.white}\" },\n \"paper\": { \"$value\": \"{primitive.color.white}\" },\n \"ink\": { \"$value\": \"{primitive.color.ink}\" },\n \"muted\": { \"$value\": \"{primitive.color.muted}\" },\n \"mist\": { \"$value\": \"{primitive.color.mist}\" },\n \"line\": { \"$value\": \"{primitive.color.line}\" },\n \"control-line\": { \"$value\": \"{primitive.color.control-line}\" },\n \"placeholder\": { \"$value\": \"{primitive.color.placeholder}\" },\n \"signal\": { \"$value\": \"{primitive.color.signal}\" },\n \"on-signal\": { \"$value\": \"{primitive.color.white}\" },\n \"focus\": { \"$value\": \"{primitive.color.ink}\" },\n \"warning\": { \"$value\": \"{primitive.color.warning}\" },\n \"success\": { \"$value\": \"{primitive.color.success}\" },\n \"danger\": { \"$value\": \"{primitive.color.danger}\" },\n \"info\": { \"$value\": \"{primitive.color.info}\" },\n \"tile-sage\": { \"$value\": \"{primitive.color.sage}\" },\n \"tile-sage-ink\": { \"$value\": \"{primitive.color.sage-ink}\" },\n \"tile-slate\": { \"$value\": \"{primitive.color.slate}\" },\n \"tile-slate-ink\": { \"$value\": \"{primitive.color.slate-ink}\" },\n \"tile-ochre\": { \"$value\": \"{primitive.color.ochre}\" },\n \"tile-ochre-ink\": { \"$value\": \"{primitive.color.ochre-ink}\" },\n \"tile-clay\": { \"$value\": \"{primitive.color.clay}\" },\n \"tile-clay-ink\": { \"$value\": \"{primitive.color.clay-ink}\" },\n \"tile-mauve\": { \"$value\": \"{primitive.color.mauve}\" },\n \"tile-mauve-ink\": { \"$value\": \"{primitive.color.mauve-ink}\" },\n \"tile-stone\": { \"$value\": \"{primitive.color.stone}\" },\n \"tile-stone-ink\": { \"$value\": \"{primitive.color.stone-ink}\" }\n },\n \"riso\": {\n \"$description\": \"risograph.css lines 12–18. A single black drum at three densities and marker yellow.\",\n \"paper\": { \"$value\": \"{primitive.color.paper}\" },\n \"sheet\": { \"$value\": \"{primitive.color.sheet}\" },\n \"ink\": { \"$value\": \"{primitive.color.black}\" },\n \"ink-2\": { \"$value\": \"{primitive.color.ink-70}\" },\n \"tint-35\": { \"$value\": \"{primitive.color.ink-35}\" },\n \"tint-18\": { \"$value\": \"{primitive.color.ink-18}\" },\n \"highlight\": { \"$value\": \"{primitive.color.yellow}\" }\n }\n },\n \"font\": {\n \"$type\": \"fontFamily\",\n \"display\": { \"$value\": \"{primitive.font.display}\" },\n \"body\": { \"$value\": \"{primitive.font.body}\" },\n \"sans\": { \"$value\": \"{font.body}\" },\n \"ui\": { \"$value\": \"{font.body}\" },\n \"mono\": { \"$value\": \"{primitive.font.mono}\" }\n },\n \"text\": {\n \"$type\": \"dimension\",\n \"display\": { \"$value\": \"{primitive.size.32}\" },\n \"heading\": { \"$value\": \"{primitive.size.24}\" },\n \"body\": { \"$value\": \"{primitive.size.15}\" },\n \"ui\": { \"$value\": \"{primitive.size.14}\" },\n \"mono\": { \"$value\": \"{primitive.size.12}\" },\n \"label\": { \"$value\": \"{primitive.size.11}\" }\n },\n \"leading\": {\n \"$type\": \"number\",\n \"display\": { \"$value\": \"{primitive.ratio.display}\" },\n \"body\": { \"$value\": \"{primitive.ratio.body}\" },\n \"ui\": { \"$value\": \"{primitive.ratio.copy}\" },\n \"label\": { \"$value\": \"{primitive.ratio.label}\" }\n },\n \"font-weight\": {\n \"$type\": \"fontWeight\",\n \"black\": { \"$value\": \"{primitive.weight.black}\" },\n \"regular\": { \"$value\": \"{primitive.weight.regular}\" },\n \"medium\": { \"$value\": \"{primitive.weight.medium}\" },\n \"semibold\": { \"$value\": \"{primitive.weight.semibold}\" },\n \"bold\": { \"$value\": \"{primitive.weight.bold}\" }\n },\n \"radius\": {\n \"$type\": \"dimension\",\n \"control\": { \"$value\": \"{primitive.dimension.zero}\" }\n },\n \"border\": {\n \"$type\": \"dimension\",\n \"app\": { \"$value\": \"{primitive.dimension.one}\" },\n \"riso\": { \"$value\": \"{primitive.dimension.three}\" }\n },\n \"focus\": {\n \"$type\": \"dimension\",\n \"app-width\": { \"$value\": \"{primitive.dimension.two}\" },\n \"app-offset\": { \"$value\": \"{primitive.dimension.two}\" },\n \"riso-width\": { \"$value\": \"{primitive.dimension.three}\" },\n \"riso-offset\": { \"$value\": \"{primitive.dimension.three}\" }\n },\n \"space\": {\n \"$type\": \"dimension\",\n \"xs\": { \"$value\": \"{primitive.space.4}\" },\n \"hint\": { \"$value\": \"{primitive.space.6}\" },\n \"sm\": { \"$value\": \"{primitive.space.8}\" },\n \"tag-inline\": { \"$value\": \"{primitive.space.10}\" },\n \"md\": { \"$value\": \"{primitive.space.12}\" },\n \"lg\": { \"$value\": \"{primitive.space.16}\" },\n \"panel\": { \"$value\": \"{primitive.space.20}\" },\n \"modal\": { \"$value\": \"{primitive.space.24}\" },\n \"viewport\": { \"$value\": \"{primitive.space.32}\" }\n },\n \"size\": {\n \"$type\": \"dimension\",\n \"control\": { \"$value\": \"{primitive.component-size.control}\" },\n \"icon\": { \"$value\": \"{primitive.size.12}\" },\n \"close-icon\": { \"$value\": \"{primitive.size.14}\" },\n \"close\": { \"$value\": \"{primitive.size.32}\" },\n \"textarea\": { \"$value\": \"{primitive.component-size.textarea}\" },\n \"modal\": { \"$value\": \"{primitive.component-size.modal}\" }\n },\n \"layer\": {\n \"$type\": \"number\",\n \"modal\": { \"$value\": \"{primitive.layer.modal}\" }\n },\n \"tracking\": {\n \"$type\": \"number\",\n \"control\": { \"$value\": \"{primitive.ratio.tracking-control}\" },\n \"label\": { \"$value\": \"{primitive.ratio.tracking-label}\" },\n \"panel\": { \"$value\": \"{primitive.ratio.tracking-panel}\" }\n },\n \"opacity\": {\n \"$type\": \"number\",\n \"riso-grain\": { \"$value\": \"{primitive.ratio.grain}\" },\n \"hover\": { \"$value\": \"{primitive.ratio.hover}\" },\n \"overlay\": { \"$value\": \"{primitive.ratio.overlay}\" },\n \"disabled\": { \"$value\": \"{primitive.ratio.disabled}\" },\n \"disabled-close\": { \"$value\": \"{primitive.ratio.overlay}\" }\n }\n}\n","export type TokenType =\n 'color' | 'dimension' | 'fontFamily' | 'fontWeight' | 'number';\n\nexport interface Token {\n $type: TokenType;\n $value: unknown;\n $description?: string;\n}\n\nexport interface ResolvedToken extends Token {\n path: string;\n cssName: string;\n cssValue: string;\n}\n\nconst types = new Set<TokenType>([\n 'color',\n 'dimension',\n 'fontFamily',\n 'fontWeight',\n 'number',\n]);\nconst reference = /^\\{([^{}]+)\\}$/;\n\nfunction object(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/** Flatten the supported DTCG subset, honoring inherited group types. */\nexport function flattenTokens(...documents: unknown[]): Record<string, Token> {\n const result: Record<string, Token> = {};\n function visit(node: unknown, path: string[], inherited?: TokenType): void {\n if (!object(node))\n throw new Error(`Invalid token group: ${path.join('.')}`);\n const type = (node.$type ?? inherited) as TokenType;\n if ('$value' in node) {\n const name = path.join('.');\n if (!name || !types.has(type))\n throw new Error(`Unsupported type: ${name}`);\n if (name in result) throw new Error(`Duplicate token: ${name}`);\n result[name] = {\n $type: type,\n $value: node.$value,\n ...(typeof node.$description === 'string'\n ? { $description: node.$description }\n : {}),\n };\n return;\n }\n for (const [key, child] of Object.entries(node)) {\n if (key.startsWith('$')) continue;\n if (!/^[a-z0-9-]+$/.test(key))\n throw new Error(`Invalid token key: ${key}`);\n visit(child, [...path, key], type);\n }\n }\n for (const document of documents) visit(document, []);\n return result;\n}\n\nfunction serialize(type: TokenType, value: unknown, path: string): string {\n const fail = (): never => {\n throw new Error(`Invalid ${type} value: ${path}`);\n };\n switch (type) {\n case 'color': {\n if (!object(value) || value.colorSpace !== 'srgb') return fail();\n const components = value.components;\n if (\n !Array.isArray(components) ||\n components.length !== 3 ||\n !components.every(\n (n) =>\n typeof n === 'number' && Number.isFinite(n) && n >= 0 && n <= 1,\n )\n )\n return fail();\n const alpha = value.alpha ?? 1;\n if (\n typeof alpha !== 'number' ||\n !Number.isFinite(alpha) ||\n alpha < 0 ||\n alpha > 1\n )\n return fail();\n const hex = `#${components\n .map((n: number) =>\n Math.round(n * 255)\n .toString(16)\n .padStart(2, '0'),\n )\n .join('')}`;\n if (value.hex !== undefined && value.hex !== hex) return fail();\n return alpha === 1\n ? hex\n : `rgb(${components.map((n: number) => Math.round(n * 255)).join(' ')} / ${alpha})`;\n }\n case 'dimension':\n if (\n !object(value) ||\n typeof value.value !== 'number' ||\n !Number.isFinite(value.value) ||\n !['px', 'rem'].includes(String(value.unit))\n )\n return fail();\n return `${value.value}${value.unit}`;\n case 'fontFamily': {\n const families = typeof value === 'string' ? [value] : value;\n if (\n !Array.isArray(families) ||\n !families.length ||\n !families.every(\n (family) =>\n typeof family === 'string' && /^[a-zA-Z0-9 -]+$/.test(family),\n )\n )\n return fail();\n const generic = new Set([\n 'serif',\n 'sans-serif',\n 'monospace',\n 'system-ui',\n 'ui-serif',\n 'ui-sans-serif',\n 'ui-monospace',\n ]);\n return families\n .map((family: string) => (generic.has(family) ? family : `\"${family}\"`))\n .join(', ');\n }\n case 'fontWeight':\n if (\n typeof value !== 'number' ||\n !Number.isFinite(value) ||\n value < 1 ||\n value > 1000\n )\n return fail();\n return String(value);\n case 'number':\n if (typeof value !== 'number' || !Number.isFinite(value)) return fail();\n return String(value);\n }\n}\n\n/** Resolve aliases with explicit missing-reference, cycle, and type checks. */\nexport function resolveTokens(\n tokens: Record<string, Token>,\n): Record<string, ResolvedToken> {\n const resolved: Record<string, ResolvedToken> = {};\n const visiting = new Set<string>();\n const names = new Set<string>();\n function resolve(path: string): ResolvedToken {\n if (resolved[path]) return resolved[path];\n const token = tokens[path];\n if (!token) throw new Error(`Missing alias target: ${path}`);\n if (visiting.has(path)) throw new Error(`Circular alias: ${path}`);\n visiting.add(path);\n let value = token.$value;\n const match = typeof value === 'string' ? reference.exec(value) : null;\n if (match) {\n const target = resolve(match[1]!);\n if (target.$type !== token.$type)\n throw new Error(`Alias type mismatch: ${path}`);\n value = target.$value;\n }\n const cssName = `--ds-${path.replaceAll('.', '-')}`;\n if (names.has(cssName)) throw new Error(`CSS name collision: ${cssName}`);\n names.add(cssName);\n const entry = {\n ...token,\n $value: value,\n path,\n cssName,\n cssValue: serialize(token.$type, value, path),\n };\n resolved[path] = entry;\n visiting.delete(path);\n return entry;\n }\n for (const path of Object.keys(tokens).sort()) resolve(path);\n return resolved;\n}\n\nconst commonRoles = {\n canvas: ['canvas', 'paper'],\n paper: ['paper', 'paper'],\n sheet: ['paper', 'sheet'],\n ink: ['ink', 'ink'],\n muted: ['muted', 'ink-2'],\n line: ['line', 'tint-18'],\n 'control-line': ['control-line', 'ink'],\n placeholder: ['placeholder', 'tint-35'],\n signal: ['signal', 'ink'],\n 'on-signal': ['on-signal', 'paper'],\n focus: ['focus', 'ink'],\n} as const;\n\n/** Deterministic output: no timestamps, filesystem access, or external tools. */\nexport function renderTheme(tokens: Record<string, Token>): string {\n const resolved = resolveTokens(tokens);\n const entries = Object.entries(resolved).sort(([a], [b]) =>\n a.localeCompare(b, 'en'),\n );\n function declaration(path: string): string {\n const token = tokens[path]!;\n const match =\n typeof token.$value === 'string' ? reference.exec(token.$value) : null;\n return match\n ? `var(${resolved[match[1]!]!.cssName})`\n : resolved[path]!.cssValue;\n }\n function roles(tier: 'app' | 'riso'): string[] {\n return Object.entries(commonRoles).map(([role, targets]) => {\n const path = `color.${tier}.${targets[tier === 'app' ? 0 : 1]}`;\n if (!resolved[path]) throw new Error(`Missing tier role: ${path}`);\n return ` --ds-color-${role}: var(${resolved[path].cssName});`;\n });\n }\n const theme = entries\n .filter(([path]) =>\n /^(color|font|text|leading|font-weight|radius)\\./.test(path),\n )\n .map(\n ([path, token]) =>\n ` --${path.replaceAll('.', '-')}: var(${token.cssName});`,\n );\n theme.push(\n ...Object.keys(commonRoles).map(\n (role) => ` --color-${role}: var(--ds-color-${role});`,\n ),\n );\n return [\n '/* Generated from src/tokens/*.json. Run pnpm generate; do not edit. */',\n ':root {',\n ...entries.map(\n ([path, token]) => ` ${token.cssName}: ${declaration(path)};`,\n ),\n ...roles('app'),\n '}',\n '',\n '[data-intangibility-tier=\"app\"] {',\n ...roles('app'),\n '}',\n '',\n '[data-intangibility-tier=\"riso\"] {',\n ...roles('riso'),\n '}',\n '',\n '/* Inline utilities resolve scoped roles on the consuming element. */',\n '@theme inline static {',\n ...theme,\n '}',\n '',\n ].join('\\n');\n}\n","import primitives from './tokens/primitives.json';\nimport semantic from './tokens/semantic.json';\nimport { flattenTokens, resolveTokens } from './token-engine';\n\n/** DTCG source documents; CSS and font loading remain opt-in. */\nexport const tokenDocuments = { primitives, semantic };\nexport const tokens = flattenTokens(primitives, semantic);\nexport const resolvedTokens = resolveTokens(tokens);\nexport { flattenTokens, resolveTokens, renderTheme } from './token-engine';\nexport type { Token, TokenType, ResolvedToken } from './token-engine';\n"],"mappings":"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","names":["tokens"]}
package/package.json CHANGED
@@ -1,6 +1,101 @@
1
1
  {
2
2
  "name": "@boopdoopgoop/design-system",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.2.0",
4
+ "description": "Intangibility tokens, typography, React components, and Tailwind CSS v4 theme",
5
+ "type": "module",
6
+ "packageManager": "pnpm@10.15.1",
7
+ "engines": {
8
+ "node": "22.23.2",
9
+ "pnpm": "10.15.1"
10
+ },
11
+ "main": "./dist/index.cjs",
12
+ "module": "./dist/index.js",
13
+ "types": "./dist/index.d.ts",
14
+ "exports": {
15
+ ".": {
16
+ "import": {
17
+ "types": "./dist/index.d.ts",
18
+ "default": "./dist/index.js"
19
+ },
20
+ "require": {
21
+ "types": "./dist/index.d.cts",
22
+ "default": "./dist/index.cjs"
23
+ }
24
+ },
25
+ "./components": {
26
+ "import": {
27
+ "types": "./dist/components/index.d.ts",
28
+ "default": "./dist/components/index.js"
29
+ },
30
+ "require": {
31
+ "types": "./dist/components/index.d.cts",
32
+ "default": "./dist/components/index.cjs"
33
+ }
34
+ },
35
+ "./components.css": "./styles/components.css",
36
+ "./theme.css": "./styles/theme.css",
37
+ "./fonts.css": "./styles/fonts.css",
38
+ "./tokens/primitives.json": "./src/tokens/primitives.json",
39
+ "./tokens/semantic.json": "./src/tokens/semantic.json"
40
+ },
41
+ "files": [
42
+ "dist",
43
+ "styles",
44
+ "src/tokens",
45
+ "README.md"
46
+ ],
47
+ "sideEffects": [
48
+ "**/*.css"
49
+ ],
50
+ "scripts": {
51
+ "generate": "tsx scripts/generate-theme.ts",
52
+ "generate:check": "tsx scripts/generate-theme.ts --check",
53
+ "format": "prettier --check .",
54
+ "format:write": "prettier --write .",
55
+ "lint": "eslint . --max-warnings 0",
56
+ "typecheck": "tsc --noEmit",
57
+ "test": "pnpm build && vitest run",
58
+ "build": "pnpm generate:check && tsup",
59
+ "prepack": "pnpm typecheck && pnpm test"
60
+ },
61
+ "peerDependencies": {
62
+ "react": "^19.0.0",
63
+ "react-dom": "^19.0.0",
64
+ "react-aria-components": "^1.21.1"
65
+ },
66
+ "peerDependenciesMeta": {
67
+ "react-aria-components": {
68
+ "optional": true
69
+ }
70
+ },
71
+ "dependencies": {
72
+ "@fontsource/archivo": "^5.3.0",
73
+ "@fontsource/big-shoulders-display": "^5.3.0",
74
+ "@fontsource/spline-sans-mono": "^5.3.0",
75
+ "clsx": "^2.1.1",
76
+ "tailwind-merge": "^3.7.0"
77
+ },
78
+ "devDependencies": {
79
+ "@eslint/js": "10.0.1",
80
+ "@tailwindcss/node": "^4.3.5",
81
+ "@testing-library/jest-dom": "^7.0.1",
82
+ "@testing-library/react": "^16.3.3",
83
+ "@testing-library/user-event": "^14.6.8",
84
+ "@types/node": "^22.20.5",
85
+ "@types/react": "^19.3.0",
86
+ "@types/react-dom": "^19.3.0",
87
+ "esbuild": "^0.28.2",
88
+ "eslint": "10.14.0",
89
+ "jsdom": "^31.0.0",
90
+ "prettier": "3.9.10",
91
+ "react": "^19.3.1",
92
+ "react-aria-components": "^1.22.1",
93
+ "react-dom": "^19.3.1",
94
+ "tailwindcss": "^4.3.5",
95
+ "tsup": "8.5.0",
96
+ "tsx": "4.23.15",
97
+ "typescript": "5.9.3",
98
+ "typescript-eslint": "8.72.1",
99
+ "vitest": "^5.1.0"
100
+ }
101
+ }
@@ -0,0 +1,354 @@
1
+ {
2
+ "$description": "DTCG 2025.10 primitives. Colors use sRGB components in the 0–1 range; dimensions are CSS pixels. Product CSS is the value authority.",
3
+ "primitive": {
4
+ "color": {
5
+ "$type": "color",
6
+ "white": {
7
+ "$value": {
8
+ "colorSpace": "srgb",
9
+ "components": [1, 1, 1],
10
+ "hex": "#ffffff"
11
+ }
12
+ },
13
+ "black": {
14
+ "$value": {
15
+ "colorSpace": "srgb",
16
+ "components": [0, 0, 0],
17
+ "hex": "#000000"
18
+ }
19
+ },
20
+ "ink": {
21
+ "$value": {
22
+ "colorSpace": "srgb",
23
+ "components": [
24
+ 0.10196078431372549, 0.10196078431372549, 0.10196078431372549
25
+ ],
26
+ "hex": "#1a1a1a"
27
+ }
28
+ },
29
+ "muted": {
30
+ "$value": {
31
+ "colorSpace": "srgb",
32
+ "components": [0.4, 0.4, 0.4],
33
+ "hex": "#666666"
34
+ }
35
+ },
36
+ "mist": {
37
+ "$value": {
38
+ "colorSpace": "srgb",
39
+ "components": [
40
+ 0.9568627450980393, 0.9568627450980393, 0.9490196078431372
41
+ ],
42
+ "hex": "#f4f4f2"
43
+ }
44
+ },
45
+ "line": {
46
+ "$value": {
47
+ "colorSpace": "srgb",
48
+ "components": [
49
+ 0.8196078431372549, 0.8196078431372549, 0.8196078431372549
50
+ ],
51
+ "hex": "#d1d1d1"
52
+ }
53
+ },
54
+ "control-line": {
55
+ "$value": {
56
+ "colorSpace": "srgb",
57
+ "components": [
58
+ 0.5803921568627451, 0.5803921568627451, 0.5803921568627451
59
+ ],
60
+ "hex": "#949494"
61
+ }
62
+ },
63
+ "placeholder": {
64
+ "$value": {
65
+ "colorSpace": "srgb",
66
+ "components": [
67
+ 0.4627450980392157, 0.4627450980392157, 0.4627450980392157
68
+ ],
69
+ "hex": "#767676"
70
+ }
71
+ },
72
+ "signal": {
73
+ "$value": {
74
+ "colorSpace": "srgb",
75
+ "components": [
76
+ 0.27058823529411763, 0.27058823529411763, 0.27058823529411763
77
+ ],
78
+ "hex": "#454545"
79
+ }
80
+ },
81
+ "warning": {
82
+ "$value": {
83
+ "colorSpace": "srgb",
84
+ "components": [
85
+ 0.5411764705882353, 0.41568627450980394, 0.07058823529411765
86
+ ],
87
+ "hex": "#8a6a12"
88
+ }
89
+ },
90
+ "success": {
91
+ "$value": {
92
+ "colorSpace": "srgb",
93
+ "components": [
94
+ 0.2196078431372549, 0.43529411764705883, 0.1411764705882353
95
+ ],
96
+ "hex": "#386f24"
97
+ }
98
+ },
99
+ "danger": {
100
+ "$value": {
101
+ "colorSpace": "srgb",
102
+ "components": [
103
+ 0.6078431372549019, 0.17254901960784313, 0.17254901960784313
104
+ ],
105
+ "hex": "#9b2c2c"
106
+ }
107
+ },
108
+ "info": {
109
+ "$value": {
110
+ "colorSpace": "srgb",
111
+ "components": [0.2, 0.3137254901960784, 0.611764705882353],
112
+ "hex": "#33509c"
113
+ }
114
+ },
115
+ "sage": {
116
+ "$value": {
117
+ "colorSpace": "srgb",
118
+ "components": [
119
+ 0.8627450980392157, 0.9098039215686274, 0.8313725490196079
120
+ ],
121
+ "hex": "#dce8d4"
122
+ }
123
+ },
124
+ "sage-ink": {
125
+ "$value": {
126
+ "colorSpace": "srgb",
127
+ "components": [
128
+ 0.1843137254901961, 0.2901960784313726, 0.1607843137254902
129
+ ],
130
+ "hex": "#2f4a29"
131
+ }
132
+ },
133
+ "slate": {
134
+ "$value": {
135
+ "colorSpace": "srgb",
136
+ "components": [
137
+ 0.8588235294117647, 0.8980392156862745, 0.9372549019607843
138
+ ],
139
+ "hex": "#dbe5ef"
140
+ }
141
+ },
142
+ "slate-ink": {
143
+ "$value": {
144
+ "colorSpace": "srgb",
145
+ "components": [
146
+ 0.19607843137254902, 0.2823529411764706, 0.3764705882352941
147
+ ],
148
+ "hex": "#324860"
149
+ }
150
+ },
151
+ "ochre": {
152
+ "$value": {
153
+ "colorSpace": "srgb",
154
+ "components": [
155
+ 0.9411764705882353, 0.8901960784313725, 0.7686274509803922
156
+ ],
157
+ "hex": "#f0e3c4"
158
+ }
159
+ },
160
+ "ochre-ink": {
161
+ "$value": {
162
+ "colorSpace": "srgb",
163
+ "components": [0.4, 0.2980392156862745, 0.08627450980392157],
164
+ "hex": "#664c16"
165
+ }
166
+ },
167
+ "clay": {
168
+ "$value": {
169
+ "colorSpace": "srgb",
170
+ "components": [
171
+ 0.9411764705882353, 0.8588235294117647, 0.8156862745098039
172
+ ],
173
+ "hex": "#f0dbd0"
174
+ }
175
+ },
176
+ "clay-ink": {
177
+ "$value": {
178
+ "colorSpace": "srgb",
179
+ "components": [
180
+ 0.4549019607843137, 0.2627450980392157, 0.1843137254901961
181
+ ],
182
+ "hex": "#74432f"
183
+ }
184
+ },
185
+ "mauve": {
186
+ "$value": {
187
+ "colorSpace": "srgb",
188
+ "components": [
189
+ 0.9098039215686274, 0.8627450980392157, 0.9254901960784314
190
+ ],
191
+ "hex": "#e8dcec"
192
+ }
193
+ },
194
+ "mauve-ink": {
195
+ "$value": {
196
+ "colorSpace": "srgb",
197
+ "components": [
198
+ 0.3686274509803922, 0.25098039215686274, 0.40784313725490196
199
+ ],
200
+ "hex": "#5e4068"
201
+ }
202
+ },
203
+ "stone": {
204
+ "$value": {
205
+ "colorSpace": "srgb",
206
+ "components": [
207
+ 0.9019607843137255, 0.8901960784313725, 0.8588235294117647
208
+ ],
209
+ "hex": "#e6e3db"
210
+ }
211
+ },
212
+ "stone-ink": {
213
+ "$value": {
214
+ "colorSpace": "srgb",
215
+ "components": [
216
+ 0.30980392156862746, 0.2980392156862745, 0.2627450980392157
217
+ ],
218
+ "hex": "#4f4c43"
219
+ }
220
+ },
221
+ "paper": {
222
+ "$value": {
223
+ "colorSpace": "srgb",
224
+ "components": [
225
+ 0.9490196078431372, 0.9294117647058824, 0.8862745098039215
226
+ ],
227
+ "hex": "#f2ede2"
228
+ }
229
+ },
230
+ "sheet": {
231
+ "$value": {
232
+ "colorSpace": "srgb",
233
+ "components": [
234
+ 0.9725490196078431, 0.9607843137254902, 0.9333333333333333
235
+ ],
236
+ "hex": "#f8f5ee"
237
+ }
238
+ },
239
+ "ink-70": {
240
+ "$value": {
241
+ "colorSpace": "srgb",
242
+ "components": [
243
+ 0.28627450980392155, 0.2784313725490196, 0.26666666666666666
244
+ ],
245
+ "hex": "#494744"
246
+ }
247
+ },
248
+ "ink-35": {
249
+ "$value": {
250
+ "colorSpace": "srgb",
251
+ "components": [
252
+ 0.615686274509804, 0.6039215686274509, 0.5764705882352941
253
+ ],
254
+ "hex": "#9d9a93"
255
+ }
256
+ },
257
+ "ink-18": {
258
+ "$value": {
259
+ "colorSpace": "srgb",
260
+ "components": [
261
+ 0.7764705882352941, 0.7607843137254902, 0.7254901960784313
262
+ ],
263
+ "hex": "#c6c2b9"
264
+ }
265
+ },
266
+ "yellow": {
267
+ "$value": {
268
+ "colorSpace": "srgb",
269
+ "components": [1, 0.9098039215686274, 0],
270
+ "hex": "#ffe800"
271
+ }
272
+ }
273
+ },
274
+ "font": {
275
+ "$type": "fontFamily",
276
+ "display": {
277
+ "$value": [
278
+ "Big Shoulders Display",
279
+ "Arial Narrow",
280
+ "Helvetica Neue",
281
+ "Arial",
282
+ "sans-serif"
283
+ ]
284
+ },
285
+ "body": {
286
+ "$value": ["Archivo", "ui-sans-serif", "system-ui", "sans-serif"]
287
+ },
288
+ "mono": {
289
+ "$value": ["Spline Sans Mono", "ui-monospace", "Menlo", "monospace"]
290
+ }
291
+ },
292
+ "size": {
293
+ "$type": "dimension",
294
+ "11": { "$value": { "value": 11, "unit": "px" } },
295
+ "12": { "$value": { "value": 12, "unit": "px" } },
296
+ "14": { "$value": { "value": 14, "unit": "px" } },
297
+ "15": { "$value": { "value": 15, "unit": "px" } },
298
+ "18": { "$value": { "value": 18, "unit": "px" } },
299
+ "24": { "$value": { "value": 24, "unit": "px" } },
300
+ "32": { "$value": { "value": 32, "unit": "px" } }
301
+ },
302
+ "dimension": {
303
+ "$type": "dimension",
304
+ "zero": { "$value": { "value": 0, "unit": "px" } },
305
+ "one": { "$value": { "value": 1, "unit": "px" } },
306
+ "two": { "$value": { "value": 2, "unit": "px" } },
307
+ "three": { "$value": { "value": 3, "unit": "px" } }
308
+ },
309
+ "space": {
310
+ "$type": "dimension",
311
+ "4": { "$value": { "value": 4, "unit": "px" } },
312
+ "6": { "$value": { "value": 6, "unit": "px" } },
313
+ "8": { "$value": { "value": 8, "unit": "px" } },
314
+ "10": { "$value": { "value": 10, "unit": "px" } },
315
+ "12": { "$value": { "value": 12, "unit": "px" } },
316
+ "16": { "$value": { "value": 16, "unit": "px" } },
317
+ "20": { "$value": { "value": 20, "unit": "px" } },
318
+ "24": { "$value": { "value": 24, "unit": "px" } },
319
+ "32": { "$value": { "value": 32, "unit": "px" } }
320
+ },
321
+ "component-size": {
322
+ "$type": "dimension",
323
+ "control": { "$value": { "value": 44, "unit": "px" } },
324
+ "textarea": { "$value": { "value": 96, "unit": "px" } },
325
+ "modal": { "$value": { "value": 480, "unit": "px" } }
326
+ },
327
+ "layer": {
328
+ "$type": "number",
329
+ "modal": { "$value": 50 }
330
+ },
331
+ "weight": {
332
+ "$type": "fontWeight",
333
+ "regular": { "$value": 400 },
334
+ "medium": { "$value": 500 },
335
+ "semibold": { "$value": 600 },
336
+ "bold": { "$value": 700 },
337
+ "black": { "$value": 900 }
338
+ },
339
+ "ratio": {
340
+ "$type": "number",
341
+ "display": { "$value": 1 },
342
+ "body": { "$value": 1.45 },
343
+ "copy": { "$value": 1.4 },
344
+ "label": { "$value": 1.25 },
345
+ "grain": { "$value": 0.1 },
346
+ "hover": { "$value": 0.05 },
347
+ "overlay": { "$value": 0.4 },
348
+ "disabled": { "$value": 0.55 },
349
+ "tracking-control": { "$value": 0.08 },
350
+ "tracking-label": { "$value": 0.12 },
351
+ "tracking-panel": { "$value": 0.14 }
352
+ }
353
+ }
354
+ }