@nxds/core 0.12.0 → 0.14.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/palette.ts","../../tokens/primitives/color.json","../../src/token-source/perceptual-grid.ts","../../src/token-source/perceptual-grid.json","../../src/token-source/perceptual-grid-hue.json","../../src/lib/token-scales.generated.ts","../../src/lib/primitive-palette.ts"],"sourcesContent":["import { oklch, parse } from 'culori';\n\nimport primitiveColors from '../../tokens/primitives/color.json' with { type: 'json' };\n\nexport const SHADES = [\n '50',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n '950',\n] as const;\n\nexport type Shade = (typeof SHADES)[number];\n\nexport const PALETTE_KEYS = [\n 'slate',\n 'neutral',\n 'gray',\n 'stone',\n 'zinc',\n] as const;\n\nexport type PaletteKey = (typeof PALETTE_KEYS)[number];\n\nexport const TIER_THRESHOLDS = {\n body: 75,\n ui: 60,\n incidental: 45,\n} as const;\n\nexport type Tier = keyof typeof TIER_THRESHOLDS;\n\n/** Light/dark theme axis. */\nexport type Mode = 'light' | 'dark';\n\n/** Surface tone families an nxds theme can be seeded with. */\nexport type NxdsSurfaceTone = 'stone' | 'neutral' | 'zinc' | 'slate' | 'gray';\n\nexport interface PaletteReference {\n c: number;\n h: number;\n}\n\nfunction deriveReference(palette: PaletteKey): PaletteReference {\n const hex = primitiveColors[palette]['500'].$value;\n const parsed = parse(hex);\n if (!parsed) {\n throw new Error(`palette: cannot parse '${palette}.500' hex '${hex}'`);\n }\n const o = oklch(parsed);\n if (!o) {\n throw new Error(`palette: cannot convert '${palette}.500' to OKLCH`);\n }\n return { c: o.c ?? 0, h: o.h ?? 0 };\n}\n\nconst paletteReferenceCache = new Map<PaletteKey, PaletteReference>();\n\nexport function getPaletteReference(palette: PaletteKey): PaletteReference {\n const cached = paletteReferenceCache.get(palette);\n if (cached) return cached;\n const reference = deriveReference(palette);\n paletteReferenceCache.set(palette, reference);\n return reference;\n}\n","{\n \"green\": {\n \"50\": {\n \"$value\": \"#f1f7ef\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#e6f3e3\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#cce2c7\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#a6c99e\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#7fb175\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#569947\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#3f7932\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#306424\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#264d1c\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#1e3b17\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#12250d\",\n \"$type\": \"color\"\n }\n },\n \"emerald\": {\n \"50\": {\n \"$value\": \"#ecfdf5\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#d1fae5\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#a7f3d0\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#6ee7b7\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#34d399\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#10b981\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#059669\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#047857\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#065f46\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#064e3b\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#022c22\",\n \"$type\": \"color\"\n }\n },\n \"teal\": {\n \"50\": {\n \"$value\": \"#f0fdfa\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#ccfbf1\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#99f6e4\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#5eead4\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#2dd4bf\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#14b8a6\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#0d9488\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#0f766e\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#115e59\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#134e4a\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#042f2e\",\n \"$type\": \"color\"\n }\n },\n \"cyan\": {\n \"50\": {\n \"$value\": \"#ecfeff\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#cffafe\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#a5f3fc\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#67e8f9\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#22d3ee\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#06b6d4\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#0891b2\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#0e7490\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#155e75\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#164e63\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#083344\",\n \"$type\": \"color\"\n }\n },\n \"sky\": {\n \"50\": {\n \"$value\": \"#f0f9ff\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#e0f2fe\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#bae6fd\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#7dd3fc\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#38bdf8\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#0ea5e9\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#0284c7\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#0369a1\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#075985\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#0c4a6e\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#082f49\",\n \"$type\": \"color\"\n }\n },\n \"indigo\": {\n \"50\": {\n \"$value\": \"#eef2ff\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#e0e7ff\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#c7d2fe\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#a5b4fc\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#818cf8\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#6366f1\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#4f46e5\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#4338ca\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#3730a3\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#312e81\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#1e1b4b\",\n \"$type\": \"color\"\n }\n },\n \"violet\": {\n \"50\": {\n \"$value\": \"#f5f3ff\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#ede9fe\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#ddd6fe\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#c4b5fd\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#a78bfa\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#8b5cf6\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#7c3aed\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#6d28d9\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#5b21b6\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#4c1d95\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#2e1065\",\n \"$type\": \"color\"\n }\n },\n \"purple\": {\n \"50\": {\n \"$value\": \"#faf5ff\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#f3e8ff\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#e9d5ff\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#d8b4fe\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#c084fc\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#a855f7\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#9333ea\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#7e22ce\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#6b21a8\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#581c87\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#3b0764\",\n \"$type\": \"color\"\n }\n },\n \"fuchsia\": {\n \"50\": {\n \"$value\": \"#fdf4ff\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#fae8ff\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#f5d0fe\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#f0abfc\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#e879f9\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#d946ef\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#c026d3\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#a21caf\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#86198f\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#701a75\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#4a044e\",\n \"$type\": \"color\"\n }\n },\n \"pink\": {\n \"50\": {\n \"$value\": \"#fdf2f8\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#fce7f3\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#fbcfe8\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#f9a8d4\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#f472b6\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#ec4899\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#db2777\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#be185d\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#9d174d\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#831843\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#500724\",\n \"$type\": \"color\"\n }\n },\n \"slate\": {\n \"50\": {\n \"$value\": \"#f8fafc\",\n \"$type\": \"color\"\n },\n \"75\": {\n \"$value\": \"#f2f6fa\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#f1f5f9\",\n \"$type\": \"color\"\n },\n \"150\": {\n \"$value\": \"#e0e6ee\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#e2e8f0\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#cbd5e1\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#90a1b9\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#62748e\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#45556c\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#314158\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#1d293d\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#0f172a\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#020617\",\n \"$type\": \"color\"\n },\n \"a50\": {\n \"$value\": \"#0206170a\",\n \"$type\": \"color\"\n },\n \"a100\": {\n \"$value\": \"#02061710\",\n \"$type\": \"color\"\n },\n \"a200\": {\n \"$value\": \"#02061718\",\n \"$type\": \"color\"\n },\n \"a300\": {\n \"$value\": \"#02061730\",\n \"$type\": \"color\"\n },\n \"a400\": {\n \"$value\": \"#02061750\",\n \"$type\": \"color\"\n },\n \"a500\": {\n \"$value\": \"#02061780\",\n \"$type\": \"color\"\n },\n \"a600\": {\n \"$value\": \"#020617a0\",\n \"$type\": \"color\"\n },\n \"a700\": {\n \"$value\": \"#020617c0\",\n \"$type\": \"color\"\n },\n \"a800\": {\n \"$value\": \"#020617d8\",\n \"$type\": \"color\"\n },\n \"a900\": {\n \"$value\": \"#020617e8\",\n \"$type\": \"color\"\n },\n \"a950\": {\n \"$value\": \"#020617f4\",\n \"$type\": \"color\"\n }\n },\n \"rose\": {\n \"50\": {\n \"$value\": \"#fff1f2\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#ffe4e6\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#fecdd3\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#fda4af\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#fb7185\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#f43f5e\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#e11d48\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#be123c\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#9f1239\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#881337\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#4c0519\",\n \"$type\": \"color\"\n }\n },\n \"lime\": {\n \"50\": {\n \"$value\": \"#f7fee7\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#ecfccb\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#d9f99d\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#bef264\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#a3e635\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#84cc16\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#65a30d\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#4d7c0f\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#3f6212\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#365314\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#1a2e05\",\n \"$type\": \"color\"\n }\n },\n \"yellow\": {\n \"50\": {\n \"$value\": \"#fefce8\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#fef9c3\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#fef08a\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#fde047\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#facc15\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#eab308\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#ca8a04\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#a16207\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#854d0e\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#713f12\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#422006\",\n \"$type\": \"color\"\n }\n },\n \"blue\": {\n \"50\": {\n \"$value\": \"#f1f6fc\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#e6effc\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#c4daf5\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#9dc1ee\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#71a1df\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#3d7bc8\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#2863ab\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#184f90\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#113d70\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#0d2e55\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#051a36\",\n \"$type\": \"color\"\n }\n },\n \"gray\": {\n \"50\": {\n \"$value\": \"#f9fafb\",\n \"$type\": \"color\"\n },\n \"75\": {\n \"$value\": \"#f4f5f7\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#f3f4f6\",\n \"$type\": \"color\"\n },\n \"150\": {\n \"$value\": \"#e3e5e9\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#e5e7eb\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#d1d5db\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#99a1af\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#6a7282\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#4a5565\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#364153\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#1e2939\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#111827\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#030712\",\n \"$type\": \"color\"\n },\n \"a50\": {\n \"$value\": \"#0307120a\",\n \"$type\": \"color\"\n },\n \"a100\": {\n \"$value\": \"#03071210\",\n \"$type\": \"color\"\n },\n \"a200\": {\n \"$value\": \"#03071218\",\n \"$type\": \"color\"\n },\n \"a300\": {\n \"$value\": \"#03071230\",\n \"$type\": \"color\"\n },\n \"a400\": {\n \"$value\": \"#03071250\",\n \"$type\": \"color\"\n },\n \"a500\": {\n \"$value\": \"#03071280\",\n \"$type\": \"color\"\n },\n \"a600\": {\n \"$value\": \"#030712a0\",\n \"$type\": \"color\"\n },\n \"a700\": {\n \"$value\": \"#030712c0\",\n \"$type\": \"color\"\n },\n \"a800\": {\n \"$value\": \"#030712d8\",\n \"$type\": \"color\"\n },\n \"a900\": {\n \"$value\": \"#030712e8\",\n \"$type\": \"color\"\n },\n \"a950\": {\n \"$value\": \"#030712f4\",\n \"$type\": \"color\"\n }\n },\n \"zinc\": {\n \"50\": {\n \"$value\": \"#fafafa\",\n \"$type\": \"color\"\n },\n \"75\": {\n \"$value\": \"#f5f5f6\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#f4f4f5\",\n \"$type\": \"color\"\n },\n \"150\": {\n \"$value\": \"#e4e6e8\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#e3e5e7\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#d2d5d8\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#9f9fa9\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#71717b\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#52525c\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#3f3f46\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#26272a\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#17181b\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#08090b\",\n \"$type\": \"color\"\n },\n \"a50\": {\n \"$value\": \"#08090b0a\",\n \"$type\": \"color\"\n },\n \"a100\": {\n \"$value\": \"#08090b10\",\n \"$type\": \"color\"\n },\n \"a200\": {\n \"$value\": \"#08090b18\",\n \"$type\": \"color\"\n },\n \"a300\": {\n \"$value\": \"#08090b30\",\n \"$type\": \"color\"\n },\n \"a400\": {\n \"$value\": \"#08090b50\",\n \"$type\": \"color\"\n },\n \"a500\": {\n \"$value\": \"#08090b80\",\n \"$type\": \"color\"\n },\n \"a600\": {\n \"$value\": \"#08090ba0\",\n \"$type\": \"color\"\n },\n \"a700\": {\n \"$value\": \"#08090bc0\",\n \"$type\": \"color\"\n },\n \"a800\": {\n \"$value\": \"#08090bd8\",\n \"$type\": \"color\"\n },\n \"a900\": {\n \"$value\": \"#08090be8\",\n \"$type\": \"color\"\n },\n \"a950\": {\n \"$value\": \"#08090bf4\",\n \"$type\": \"color\"\n }\n },\n \"neutral\": {\n \"50\": {\n \"$value\": \"#fafafa\",\n \"$type\": \"color\"\n },\n \"75\": {\n \"$value\": \"#f5f5f5\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#f5f5f5\",\n \"$type\": \"color\"\n },\n \"150\": {\n \"$value\": \"#e5e5e5\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#e5e5e5\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#d4d4d4\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#a1a1a1\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#737373\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#525252\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#404040\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#262626\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#171717\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#0a0a0a\",\n \"$type\": \"color\"\n },\n \"a50\": {\n \"$value\": \"#0a0a0a0a\",\n \"$type\": \"color\"\n },\n \"a100\": {\n \"$value\": \"#0a0a0a10\",\n \"$type\": \"color\"\n },\n \"a200\": {\n \"$value\": \"#0a0a0a18\",\n \"$type\": \"color\"\n },\n \"a300\": {\n \"$value\": \"#0a0a0a30\",\n \"$type\": \"color\"\n },\n \"a400\": {\n \"$value\": \"#0a0a0a50\",\n \"$type\": \"color\"\n },\n \"a500\": {\n \"$value\": \"#0a0a0a80\",\n \"$type\": \"color\"\n },\n \"a600\": {\n \"$value\": \"#0a0a0aa0\",\n \"$type\": \"color\"\n },\n \"a700\": {\n \"$value\": \"#0a0a0ac0\",\n \"$type\": \"color\"\n },\n \"a800\": {\n \"$value\": \"#0a0a0ad8\",\n \"$type\": \"color\"\n },\n \"a900\": {\n \"$value\": \"#0a0a0ae8\",\n \"$type\": \"color\"\n },\n \"a950\": {\n \"$value\": \"#0a0a0af4\",\n \"$type\": \"color\"\n }\n },\n \"stone\": {\n \"50\": {\n \"$value\": \"#fbfaf8\",\n \"$type\": \"color\"\n },\n \"75\": {\n \"$value\": \"#f6f5f2\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#eeedeb\",\n \"$type\": \"color\"\n },\n \"150\": {\n \"$value\": \"#e7e5e2\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#d6d4d1\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#b6b2ad\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#95928c\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#75726d\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#595854\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#444441\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#2d2d2d\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#181818\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#050505\",\n \"$type\": \"color\"\n },\n \"a50\": {\n \"$value\": \"#0b09040a\",\n \"$type\": \"color\"\n },\n \"a100\": {\n \"$value\": \"#0b090410\",\n \"$type\": \"color\"\n },\n \"a200\": {\n \"$value\": \"#0b090418\",\n \"$type\": \"color\"\n },\n \"a300\": {\n \"$value\": \"#0b090430\",\n \"$type\": \"color\"\n },\n \"a400\": {\n \"$value\": \"#0b090450\",\n \"$type\": \"color\"\n },\n \"a500\": {\n \"$value\": \"#0b090480\",\n \"$type\": \"color\"\n },\n \"a600\": {\n \"$value\": \"#0b0904a0\",\n \"$type\": \"color\"\n },\n \"a700\": {\n \"$value\": \"#0b0904c0\",\n \"$type\": \"color\"\n },\n \"a800\": {\n \"$value\": \"#0b0904d8\",\n \"$type\": \"color\"\n },\n \"a900\": {\n \"$value\": \"#0b0904e8\",\n \"$type\": \"color\"\n },\n \"a950\": {\n \"$value\": \"#0b0904f4\",\n \"$type\": \"color\"\n }\n },\n \"red\": {\n \"50\": {\n \"$value\": \"#fef2f0\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#fee9e6\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#facfc9\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#f0a99f\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#e58175\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#d95c50\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#c13d34\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#a32d26\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#7f211b\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#5f1a15\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#3d110d\",\n \"$type\": \"color\"\n }\n },\n \"orange\": {\n \"50\": {\n \"$value\": \"#fff7ed\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#ffedd5\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#fed7aa\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#fdba74\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#fb923c\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#f97316\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#ea580c\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#c2410c\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#9a3412\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#7c2d12\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#431407\",\n \"$type\": \"color\"\n }\n },\n \"amber\": {\n \"50\": {\n \"$value\": \"#faf4ec\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#f9eddd\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#efd7b7\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#e5bd86\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#d8a354\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#c88a1e\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#b37903\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#946406\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#764f05\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#5a3b03\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#392402\",\n \"$type\": \"color\"\n }\n },\n \"white\": {\n \"base\": {\n \"$value\": \"#ffffff\",\n \"$type\": \"color\"\n },\n \"a50\": {\n \"$value\": \"#ffffff0a\",\n \"$type\": \"color\"\n },\n \"a100\": {\n \"$value\": \"#ffffff10\",\n \"$type\": \"color\"\n },\n \"a200\": {\n \"$value\": \"#ffffff18\",\n \"$type\": \"color\"\n },\n \"a300\": {\n \"$value\": \"#ffffff30\",\n \"$type\": \"color\"\n },\n \"a400\": {\n \"$value\": \"#ffffff50\",\n \"$type\": \"color\"\n },\n \"a500\": {\n \"$value\": \"#ffffff80\",\n \"$type\": \"color\"\n },\n \"a600\": {\n \"$value\": \"#ffffffa0\",\n \"$type\": \"color\"\n },\n \"a700\": {\n \"$value\": \"#ffffffc0\",\n \"$type\": \"color\"\n },\n \"a800\": {\n \"$value\": \"#ffffffd8\",\n \"$type\": \"color\"\n },\n \"a900\": {\n \"$value\": \"#ffffffe8\",\n \"$type\": \"color\"\n },\n \"a950\": {\n \"$value\": \"#fffffff4\",\n \"$type\": \"color\"\n }\n },\n \"black\": {\n \"base\": {\n \"$value\": \"#0a0a0a\",\n \"$type\": \"color\"\n },\n \"a50\": {\n \"$value\": \"#0a0a0a0a\",\n \"$type\": \"color\"\n },\n \"a100\": {\n \"$value\": \"#0a0a0a10\",\n \"$type\": \"color\"\n },\n \"a200\": {\n \"$value\": \"#0a0a0a18\",\n \"$type\": \"color\"\n },\n \"a300\": {\n \"$value\": \"#0a0a0a30\",\n \"$type\": \"color\"\n },\n \"a400\": {\n \"$value\": \"#0a0a0a50\",\n \"$type\": \"color\"\n },\n \"a500\": {\n \"$value\": \"#0a0a0a80\",\n \"$type\": \"color\"\n },\n \"a600\": {\n \"$value\": \"#0a0a0aa0\",\n \"$type\": \"color\"\n },\n \"a700\": {\n \"$value\": \"#0a0a0ac0\",\n \"$type\": \"color\"\n },\n \"a800\": {\n \"$value\": \"#0a0a0ad8\",\n \"$type\": \"color\"\n },\n \"a900\": {\n \"$value\": \"#0a0a0ae8\",\n \"$type\": \"color\"\n },\n \"a950\": {\n \"$value\": \"#0a0a0af4\",\n \"$type\": \"color\"\n }\n }\n}\n","import { clampChroma, converter, type Oklch, oklch, parse } from 'culori';\n\nimport type { Shade } from '../lib/palette.ts';\n\nimport flatGrid from './perceptual-grid.json' with { type: 'json' };\nimport hueGrid from './perceptual-grid-hue.json' with { type: 'json' };\n\n// emit ships P3 chroma; audit scores in sRGB (legacy-display equivalent)\nconst EMIT_GAMUT = 'p3';\nconst AUDIT_GAMUT = 'rgb';\n\nconst toRgb = converter('rgb');\n\nexport const PERCEPTUAL_L_GRID: Readonly<Record<Shade, number>> =\n Object.freeze(flatGrid);\n\nconst PERCEPTUAL_L_GRID_HUE: Readonly<\n Record<string, Readonly<Record<Shade, number>>>\n> = Object.freeze(\n Object.fromEntries(\n Object.entries(hueGrid).map(([name, curve]) => [name, Object.freeze(curve)])\n )\n);\n\nconst CUSP_FRACTION = 0.95; // sit just inside the P3 cusp for render safety\n\nconst SHADE_KEY_RE = /^(50|100|200|300|400|500|600|700|800|900|950)$/;\n\nexport function isPaletteShadeKey(key: unknown): key is Shade {\n return typeof key === 'string' && SHADE_KEY_RE.test(key);\n}\n\nfunction round(value: number, decimals: number) {\n const factor = 10 ** decimals;\n return Math.round(value * factor) / factor;\n}\n\nfunction formatPaletteOklch({ l, c, h, alpha }: Oklch) {\n const finite = (v: number | undefined) =>\n v !== undefined && Number.isFinite(v) ? v : 0;\n const lRounded = round(finite(l), 4);\n const cRounded = round(finite(c), 4);\n // Hue is undefined when chroma is 0 (achromatic). Emit 0 rather than `none`\n // so consuming CSS stays compatible with the project's spot-check format.\n const hRounded = c && h !== undefined ? round(finite(h), 3) : 0;\n const base = `oklch(${lRounded} ${cRounded} ${hRounded}`;\n if (alpha !== undefined && alpha < 1) {\n return `${base} / ${round(alpha, 4)})`;\n }\n return `${base})`;\n}\n\nfunction parseToOklch(hex: string): Oklch {\n const parsed = parse(hex);\n if (!parsed) {\n throw new Error(`palette: cannot parse color \"${hex}\"`);\n }\n return oklch(parsed);\n}\n\nfunction computePinnedOklch(\n hex: string,\n shade: string,\n palette?: string,\n reportGamutClip?: (message: string) => void\n): Oklch {\n const hueCurve = palette ? PERCEPTUAL_L_GRID_HUE[palette] : undefined;\n const pinnedL = isPaletteShadeKey(shade)\n ? (hueCurve ?? PERCEPTUAL_L_GRID)[shade]\n : undefined;\n if (pinnedL === undefined) {\n throw new Error(`palette: unknown shade \"${shade}\" for ${hex}`);\n }\n\n const source = parseToOklch(hex);\n\n // Re-pitched hues take chroma at the P3 cusp for the (hue, pinned-L) pair —\n // pale near white, vivid at the peak — driven by the gamut, not the source\n // hex. Every other palette keeps its source chroma (flat-grid behaviour).\n let chroma = source.c ?? 0;\n if (hueCurve) {\n const cuspC =\n clampChroma(\n { mode: 'oklch', l: pinnedL, c: 0.5, h: source.h },\n 'oklch',\n EMIT_GAMUT\n ).c ?? 0;\n chroma = cuspC * CUSP_FRACTION;\n }\n\n const target: Oklch = {\n mode: 'oklch',\n l: pinnedL,\n c: chroma,\n h: source.h,\n ...(source.alpha !== undefined ? { alpha: source.alpha } : {}),\n };\n\n const clamped = clampChroma(target, 'oklch', EMIT_GAMUT);\n\n if (!hueCurve) {\n const originalC = target.c;\n const clampedC = clamped.c ?? 0;\n if (originalC > 0 && (originalC - clampedC) / originalC > 0.2) {\n reportGamutClip?.(\n `palette: P3 gamut clip on ${hex} at shade ${shade} — C ${originalC.toFixed(4)} → ${clampedC.toFixed(4)}`\n );\n }\n }\n\n return clamped;\n}\n\nexport function hexToOklchPinned(\n hex: string,\n shade: string,\n palette?: string,\n reportGamutClip?: (message: string) => void\n): string {\n return formatPaletteOklch(\n computePinnedOklch(hex, shade, palette, reportGamutClip)\n );\n}\n\nexport function hexToOklchMechanical(hex: string): string {\n return formatPaletteOklch(parseToOklch(hex));\n}\n\nfunction oklchToSrgbInts(oklchColor: Oklch): [number, number, number] {\n const rgb = toRgb(clampChroma(oklchColor, 'oklch', AUDIT_GAMUT));\n if ((rgb.alpha ?? 1) < 1) {\n // apca-w3 `sRGBtoY` reads only [r,g,b]; an alpha-bearing color must be\n // pre-blended against its actual background before contrast computation.\n throw new Error(\n 'palette: oklchToSrgbInts received alpha-bearing color; pre-blend before contrast computation'\n );\n }\n const channel = (v: number) =>\n Math.max(0, Math.min(255, Math.round(v * 255)));\n return [channel(rgb.r), channel(rgb.g), channel(rgb.b)];\n}\n\n// Audit conversion retains the unrounded coordinates; parsing emitted CSS\n// first would change some sRGB integer channels at rounding boundaries.\nexport function hexToSrgbInts(\n hex: string,\n shade?: string,\n palette?: string\n): [number, number, number] {\n if (shade !== undefined) {\n return oklchToSrgbInts(computePinnedOklch(hex, shade, palette));\n }\n return oklchToSrgbInts(parseToOklch(hex));\n}\n","{\n \"50\": 0.985,\n \"100\": 0.945,\n \"200\": 0.87,\n \"300\": 0.765,\n \"400\": 0.66,\n \"500\": 0.553,\n \"600\": 0.46,\n \"700\": 0.385,\n \"800\": 0.297,\n \"900\": 0.207,\n \"950\": 0.118\n}\n","{\n \"rose\": {\n \"50\": 0.971,\n \"100\": 0.936,\n \"200\": 0.885,\n \"300\": 0.81,\n \"400\": 0.71,\n \"500\": 0.64,\n \"600\": 0.58,\n \"700\": 0.51,\n \"800\": 0.42,\n \"900\": 0.34,\n \"950\": 0.25\n },\n \"red\": {\n \"50\": 0.971,\n \"100\": 0.936,\n \"200\": 0.885,\n \"300\": 0.808,\n \"400\": 0.704,\n \"500\": 0.637,\n \"600\": 0.577,\n \"700\": 0.505,\n \"800\": 0.42,\n \"900\": 0.34,\n \"950\": 0.25\n },\n \"orange\": {\n \"50\": 0.98,\n \"100\": 0.955,\n \"200\": 0.91,\n \"300\": 0.84,\n \"400\": 0.78,\n \"500\": 0.71,\n \"600\": 0.62,\n \"700\": 0.52,\n \"800\": 0.43,\n \"900\": 0.34,\n \"950\": 0.25\n },\n \"amber\": {\n \"50\": 0.985,\n \"100\": 0.96,\n \"200\": 0.92,\n \"300\": 0.87,\n \"400\": 0.84,\n \"500\": 0.77,\n \"600\": 0.68,\n \"700\": 0.57,\n \"800\": 0.46,\n \"900\": 0.35,\n \"950\": 0.24\n },\n \"yellow\": {\n \"50\": 0.985,\n \"100\": 0.96,\n \"200\": 0.92,\n \"300\": 0.88,\n \"400\": 0.86,\n \"500\": 0.8,\n \"600\": 0.72,\n \"700\": 0.6,\n \"800\": 0.47,\n \"900\": 0.35,\n \"950\": 0.23\n },\n \"lime\": {\n \"50\": 0.985,\n \"100\": 0.965,\n \"200\": 0.93,\n \"300\": 0.9,\n \"400\": 0.88,\n \"500\": 0.82,\n \"600\": 0.73,\n \"700\": 0.61,\n \"800\": 0.49,\n \"900\": 0.37,\n \"950\": 0.26\n },\n \"green\": {\n \"50\": 0.982,\n \"100\": 0.96,\n \"200\": 0.925,\n \"300\": 0.87,\n \"400\": 0.79,\n \"500\": 0.72,\n \"600\": 0.62,\n \"700\": 0.52,\n \"800\": 0.43,\n \"900\": 0.34,\n \"950\": 0.25\n },\n \"emerald\": {\n \"50\": 0.982,\n \"100\": 0.96,\n \"200\": 0.925,\n \"300\": 0.87,\n \"400\": 0.79,\n \"500\": 0.72,\n \"600\": 0.62,\n \"700\": 0.52,\n \"800\": 0.43,\n \"900\": 0.34,\n \"950\": 0.25\n },\n \"teal\": {\n \"50\": 0.98,\n \"100\": 0.945,\n \"200\": 0.9,\n \"300\": 0.85,\n \"400\": 0.79,\n \"500\": 0.72,\n \"600\": 0.62,\n \"700\": 0.52,\n \"800\": 0.43,\n \"900\": 0.34,\n \"950\": 0.25\n },\n \"cyan\": {\n \"50\": 0.98,\n \"100\": 0.955,\n \"200\": 0.91,\n \"300\": 0.85,\n \"400\": 0.79,\n \"500\": 0.72,\n \"600\": 0.63,\n \"700\": 0.53,\n \"800\": 0.44,\n \"900\": 0.35,\n \"950\": 0.26\n },\n \"sky\": {\n \"50\": 0.975,\n \"100\": 0.945,\n \"200\": 0.895,\n \"300\": 0.82,\n \"400\": 0.74,\n \"500\": 0.67,\n \"600\": 0.58,\n \"700\": 0.5,\n \"800\": 0.42,\n \"900\": 0.34,\n \"950\": 0.25\n },\n \"blue\": {\n \"50\": 0.97,\n \"100\": 0.932,\n \"200\": 0.882,\n \"300\": 0.809,\n \"400\": 0.707,\n \"500\": 0.623,\n \"600\": 0.546,\n \"700\": 0.488,\n \"800\": 0.41,\n \"900\": 0.33,\n \"950\": 0.25\n },\n \"indigo\": {\n \"50\": 0.96,\n \"100\": 0.925,\n \"200\": 0.865,\n \"300\": 0.78,\n \"400\": 0.67,\n \"500\": 0.57,\n \"600\": 0.49,\n \"700\": 0.42,\n \"800\": 0.35,\n \"900\": 0.28,\n \"950\": 0.21\n },\n \"violet\": {\n \"50\": 0.965,\n \"100\": 0.93,\n \"200\": 0.875,\n \"300\": 0.79,\n \"400\": 0.68,\n \"500\": 0.59,\n \"600\": 0.51,\n \"700\": 0.44,\n \"800\": 0.37,\n \"900\": 0.3,\n \"950\": 0.22\n },\n \"purple\": {\n \"50\": 0.967,\n \"100\": 0.935,\n \"200\": 0.88,\n \"300\": 0.8,\n \"400\": 0.7,\n \"500\": 0.61,\n \"600\": 0.53,\n \"700\": 0.46,\n \"800\": 0.39,\n \"900\": 0.32,\n \"950\": 0.24\n },\n \"fuchsia\": {\n \"50\": 0.97,\n \"100\": 0.94,\n \"200\": 0.89,\n \"300\": 0.81,\n \"400\": 0.71,\n \"500\": 0.63,\n \"600\": 0.56,\n \"700\": 0.49,\n \"800\": 0.41,\n \"900\": 0.33,\n \"950\": 0.25\n },\n \"pink\": {\n \"50\": 0.97,\n \"100\": 0.94,\n \"200\": 0.89,\n \"300\": 0.82,\n \"400\": 0.72,\n \"500\": 0.64,\n \"600\": 0.57,\n \"700\": 0.5,\n \"800\": 0.42,\n \"900\": 0.34,\n \"950\": 0.25\n }\n}\n","// Generated from packages/core/tokens by scripts/generate-token-scales.js.\n// Run `pnpm --filter @nxds/core generate:scales` after editing the tokens.\n\n/** The spacing scale. Each step has its own `--nx-spacing-*` variable. */\nexport const SPACING_STEPS = [\n 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 20, 24,\n 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 72, 80, 96,\n] as const;\n\n/** A step on the spacing scale. */\nexport type SpacingStep = (typeof SPACING_STEPS)[number];\n\n/** The primitive colour palettes that have a shade ramp. */\nexport const PRIMITIVE_PALETTE_NAMES = [\n 'green',\n 'emerald',\n 'teal',\n 'cyan',\n 'sky',\n 'indigo',\n 'violet',\n 'purple',\n 'fuchsia',\n 'pink',\n 'slate',\n 'rose',\n 'lime',\n 'yellow',\n 'blue',\n 'gray',\n 'zinc',\n 'neutral',\n 'stone',\n 'red',\n 'orange',\n 'amber',\n] as const;\n\nexport type PrimitivePaletteName = (typeof PRIMITIVE_PALETTE_NAMES)[number];\n","import primitiveColors from '../../tokens/primitives/color.json';\nimport {\n hexToOklchPinned,\n isPaletteShadeKey,\n} from '../token-source/perceptual-grid';\n\nimport { type Shade, SHADES } from './palette';\nimport {\n PRIMITIVE_PALETTE_NAMES,\n type PrimitivePaletteName,\n} from './token-scales.generated';\n\nexport type PrimitivePaletteRamp = Readonly<Record<Shade, string>>;\n\nconst rampCache = new Map<PrimitivePaletteName, PrimitivePaletteRamp>();\n\nexport function getPaletteRamp(\n palette: PrimitivePaletteName\n): PrimitivePaletteRamp {\n if (!PRIMITIVE_PALETTE_NAMES.includes(palette)) {\n throw new Error(`palette: unknown primitive palette \"${palette}\"`);\n }\n const cached = rampCache.get(palette);\n if (cached) return cached;\n const ramp = Object.freeze(\n Object.fromEntries(\n SHADES.map((shade) => [\n shade,\n hexToOklchPinned(\n primitiveColors[palette][shade].$value,\n shade,\n palette\n ),\n ])\n ) as Record<Shade, string>\n );\n rampCache.set(palette, ramp);\n return ramp;\n}\n\nexport function getPaletteShade(\n palette: PrimitivePaletteName,\n shade: Shade\n): string {\n if (!isPaletteShadeKey(shade)) {\n throw new Error(`palette: unknown shade \"${shade}\"`);\n }\n return getPaletteRamp(palette)[shade];\n}\n"],"mappings":"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","names":["oklch","parse","parse","oklch"]}
1
+ {"version":3,"sources":["../../src/lib/palette.ts","../../tokens/primitives/color.json","../../src/token-source/perceptual-grid.ts","../../src/token-source/perceptual-grid.json","../../src/token-source/perceptual-grid-hue.json","../../src/lib/token-scales.generated.ts","../../src/lib/primitive-palette.ts"],"sourcesContent":["import { oklch, parse } from 'culori';\n\nimport primitiveColors from '../../tokens/primitives/color.json' with { type: 'json' };\n\nexport const SHADES = [\n '50',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n '950',\n] as const;\n\nexport type Shade = (typeof SHADES)[number];\n\nexport const PALETTE_KEYS = [\n 'slate',\n 'neutral',\n 'gray',\n 'stone',\n 'zinc',\n] as const;\n\nexport type PaletteKey = (typeof PALETTE_KEYS)[number];\n\nexport const TIER_THRESHOLDS = {\n body: 75,\n ui: 60,\n incidental: 45,\n} as const;\n\nexport type Tier = keyof typeof TIER_THRESHOLDS;\n\n/** Light/dark theme axis. */\nexport type Mode = 'light' | 'dark';\n\n/** Surface tone families an nxds theme can be seeded with. */\nexport type NxdsSurfaceTone = 'stone' | 'neutral' | 'zinc' | 'slate' | 'gray';\n\nexport interface PaletteReference {\n c: number;\n h: number;\n}\n\nfunction deriveReference(palette: PaletteKey): PaletteReference {\n const hex = primitiveColors[palette]['500'].$value;\n const parsed = parse(hex);\n if (!parsed) {\n throw new Error(`palette: cannot parse '${palette}.500' hex '${hex}'`);\n }\n const o = oklch(parsed);\n if (!o) {\n throw new Error(`palette: cannot convert '${palette}.500' to OKLCH`);\n }\n return { c: o.c ?? 0, h: o.h ?? 0 };\n}\n\nconst paletteReferenceCache = new Map<PaletteKey, PaletteReference>();\n\nexport function getPaletteReference(palette: PaletteKey): PaletteReference {\n const cached = paletteReferenceCache.get(palette);\n if (cached) return cached;\n const reference = deriveReference(palette);\n paletteReferenceCache.set(palette, reference);\n return reference;\n}\n","{\n \"green\": {\n \"50\": {\n \"$value\": \"#f1f7ef\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#e6f3e3\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#cce2c7\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#a6c99e\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#7fb175\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#569947\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#3f7932\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#306424\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#264d1c\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#1e3b17\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#12250d\",\n \"$type\": \"color\"\n }\n },\n \"emerald\": {\n \"50\": {\n \"$value\": \"#ecfdf5\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#d1fae5\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#a7f3d0\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#6ee7b7\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#34d399\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#10b981\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#059669\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#047857\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#065f46\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#064e3b\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#022c22\",\n \"$type\": \"color\"\n }\n },\n \"teal\": {\n \"50\": {\n \"$value\": \"#f0fdfa\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#ccfbf1\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#99f6e4\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#5eead4\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#2dd4bf\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#14b8a6\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#0d9488\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#0f766e\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#115e59\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#134e4a\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#042f2e\",\n \"$type\": \"color\"\n }\n },\n \"cyan\": {\n \"50\": {\n \"$value\": \"#ecfeff\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#cffafe\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#a5f3fc\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#67e8f9\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#22d3ee\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#06b6d4\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#0891b2\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#0e7490\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#155e75\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#164e63\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#083344\",\n \"$type\": \"color\"\n }\n },\n \"sky\": {\n \"50\": {\n \"$value\": \"#f0f9ff\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#e0f2fe\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#bae6fd\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#7dd3fc\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#38bdf8\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#0ea5e9\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#0284c7\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#0369a1\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#075985\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#0c4a6e\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#082f49\",\n \"$type\": \"color\"\n }\n },\n \"indigo\": {\n \"50\": {\n \"$value\": \"#eef2ff\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#e0e7ff\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#c7d2fe\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#a5b4fc\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#818cf8\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#6366f1\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#4f46e5\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#4338ca\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#3730a3\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#312e81\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#1e1b4b\",\n \"$type\": \"color\"\n }\n },\n \"violet\": {\n \"50\": {\n \"$value\": \"#f5f3ff\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#ede9fe\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#ddd6fe\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#c4b5fd\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#a78bfa\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#8b5cf6\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#7c3aed\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#6d28d9\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#5b21b6\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#4c1d95\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#2e1065\",\n \"$type\": \"color\"\n }\n },\n \"purple\": {\n \"50\": {\n \"$value\": \"#faf5ff\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#f3e8ff\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#e9d5ff\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#d8b4fe\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#c084fc\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#a855f7\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#9333ea\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#7e22ce\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#6b21a8\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#581c87\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#3b0764\",\n \"$type\": \"color\"\n }\n },\n \"fuchsia\": {\n \"50\": {\n \"$value\": \"#fdf4ff\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#fae8ff\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#f5d0fe\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#f0abfc\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#e879f9\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#d946ef\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#c026d3\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#a21caf\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#86198f\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#701a75\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#4a044e\",\n \"$type\": \"color\"\n }\n },\n \"pink\": {\n \"50\": {\n \"$value\": \"#fdf2f8\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#fce7f3\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#fbcfe8\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#f9a8d4\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#f472b6\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#ec4899\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#db2777\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#be185d\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#9d174d\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#831843\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#500724\",\n \"$type\": \"color\"\n }\n },\n \"slate\": {\n \"50\": {\n \"$value\": \"#f8fafc\",\n \"$type\": \"color\"\n },\n \"75\": {\n \"$value\": \"#f2f6fa\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#f1f5f9\",\n \"$type\": \"color\"\n },\n \"150\": {\n \"$value\": \"#e0e6ee\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#e2e8f0\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#cbd5e1\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#90a1b9\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#62748e\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#45556c\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#314158\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#1d293d\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#0f172a\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#020617\",\n \"$type\": \"color\"\n },\n \"a50\": {\n \"$value\": \"#0206170a\",\n \"$type\": \"color\"\n },\n \"a100\": {\n \"$value\": \"#02061710\",\n \"$type\": \"color\"\n },\n \"a200\": {\n \"$value\": \"#02061718\",\n \"$type\": \"color\"\n },\n \"a300\": {\n \"$value\": \"#02061730\",\n \"$type\": \"color\"\n },\n \"a400\": {\n \"$value\": \"#02061750\",\n \"$type\": \"color\"\n },\n \"a500\": {\n \"$value\": \"#02061780\",\n \"$type\": \"color\"\n },\n \"a600\": {\n \"$value\": \"#020617a0\",\n \"$type\": \"color\"\n },\n \"a700\": {\n \"$value\": \"#020617c0\",\n \"$type\": \"color\"\n },\n \"a800\": {\n \"$value\": \"#020617d8\",\n \"$type\": \"color\"\n },\n \"a900\": {\n \"$value\": \"#020617e8\",\n \"$type\": \"color\"\n },\n \"a950\": {\n \"$value\": \"#020617f4\",\n \"$type\": \"color\"\n }\n },\n \"rose\": {\n \"50\": {\n \"$value\": \"#fff1f2\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#ffe4e6\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#fecdd3\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#fda4af\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#fb7185\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#f43f5e\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#e11d48\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#be123c\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#9f1239\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#881337\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#4c0519\",\n \"$type\": \"color\"\n }\n },\n \"lime\": {\n \"50\": {\n \"$value\": \"#f7fee7\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#ecfccb\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#d9f99d\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#bef264\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#a3e635\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#84cc16\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#65a30d\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#4d7c0f\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#3f6212\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#365314\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#1a2e05\",\n \"$type\": \"color\"\n }\n },\n \"yellow\": {\n \"50\": {\n \"$value\": \"#fefce8\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#fef9c3\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#fef08a\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#fde047\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#facc15\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#eab308\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#ca8a04\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#a16207\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#854d0e\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#713f12\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#422006\",\n \"$type\": \"color\"\n }\n },\n \"blue\": {\n \"50\": {\n \"$value\": \"#f1f6fc\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#e6effc\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#c4daf5\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#9dc1ee\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#71a1df\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#3d7bc8\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#2863ab\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#184f90\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#113d70\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#0d2e55\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#051a36\",\n \"$type\": \"color\"\n }\n },\n \"gray\": {\n \"50\": {\n \"$value\": \"#f9fafb\",\n \"$type\": \"color\"\n },\n \"75\": {\n \"$value\": \"#f4f5f7\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#f3f4f6\",\n \"$type\": \"color\"\n },\n \"150\": {\n \"$value\": \"#e3e5e9\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#e5e7eb\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#d1d5db\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#99a1af\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#6a7282\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#4a5565\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#364153\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#1e2939\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#111827\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#030712\",\n \"$type\": \"color\"\n },\n \"a50\": {\n \"$value\": \"#0307120a\",\n \"$type\": \"color\"\n },\n \"a100\": {\n \"$value\": \"#03071210\",\n \"$type\": \"color\"\n },\n \"a200\": {\n \"$value\": \"#03071218\",\n \"$type\": \"color\"\n },\n \"a300\": {\n \"$value\": \"#03071230\",\n \"$type\": \"color\"\n },\n \"a400\": {\n \"$value\": \"#03071250\",\n \"$type\": \"color\"\n },\n \"a500\": {\n \"$value\": \"#03071280\",\n \"$type\": \"color\"\n },\n \"a600\": {\n \"$value\": \"#030712a0\",\n \"$type\": \"color\"\n },\n \"a700\": {\n \"$value\": \"#030712c0\",\n \"$type\": \"color\"\n },\n \"a800\": {\n \"$value\": \"#030712d8\",\n \"$type\": \"color\"\n },\n \"a900\": {\n \"$value\": \"#030712e8\",\n \"$type\": \"color\"\n },\n \"a950\": {\n \"$value\": \"#030712f4\",\n \"$type\": \"color\"\n }\n },\n \"zinc\": {\n \"50\": {\n \"$value\": \"#fafafa\",\n \"$type\": \"color\"\n },\n \"75\": {\n \"$value\": \"#f5f5f6\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#f4f4f5\",\n \"$type\": \"color\"\n },\n \"150\": {\n \"$value\": \"#e4e6e8\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#e3e5e7\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#d2d5d8\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#9f9fa9\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#71717b\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#52525c\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#3f3f46\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#26272a\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#17181b\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#08090b\",\n \"$type\": \"color\"\n },\n \"a50\": {\n \"$value\": \"#08090b0a\",\n \"$type\": \"color\"\n },\n \"a100\": {\n \"$value\": \"#08090b10\",\n \"$type\": \"color\"\n },\n \"a200\": {\n \"$value\": \"#08090b18\",\n \"$type\": \"color\"\n },\n \"a300\": {\n \"$value\": \"#08090b30\",\n \"$type\": \"color\"\n },\n \"a400\": {\n \"$value\": \"#08090b50\",\n \"$type\": \"color\"\n },\n \"a500\": {\n \"$value\": \"#08090b80\",\n \"$type\": \"color\"\n },\n \"a600\": {\n \"$value\": \"#08090ba0\",\n \"$type\": \"color\"\n },\n \"a700\": {\n \"$value\": \"#08090bc0\",\n \"$type\": \"color\"\n },\n \"a800\": {\n \"$value\": \"#08090bd8\",\n \"$type\": \"color\"\n },\n \"a900\": {\n \"$value\": \"#08090be8\",\n \"$type\": \"color\"\n },\n \"a950\": {\n \"$value\": \"#08090bf4\",\n \"$type\": \"color\"\n }\n },\n \"neutral\": {\n \"50\": {\n \"$value\": \"#fafafa\",\n \"$type\": \"color\"\n },\n \"75\": {\n \"$value\": \"#f5f5f5\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#f5f5f5\",\n \"$type\": \"color\"\n },\n \"150\": {\n \"$value\": \"#e5e5e5\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#e5e5e5\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#d4d4d4\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#a1a1a1\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#737373\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#525252\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#404040\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#262626\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#171717\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#0a0a0a\",\n \"$type\": \"color\"\n },\n \"a50\": {\n \"$value\": \"#0a0a0a0a\",\n \"$type\": \"color\"\n },\n \"a100\": {\n \"$value\": \"#0a0a0a10\",\n \"$type\": \"color\"\n },\n \"a200\": {\n \"$value\": \"#0a0a0a18\",\n \"$type\": \"color\"\n },\n \"a300\": {\n \"$value\": \"#0a0a0a30\",\n \"$type\": \"color\"\n },\n \"a400\": {\n \"$value\": \"#0a0a0a50\",\n \"$type\": \"color\"\n },\n \"a500\": {\n \"$value\": \"#0a0a0a80\",\n \"$type\": \"color\"\n },\n \"a600\": {\n \"$value\": \"#0a0a0aa0\",\n \"$type\": \"color\"\n },\n \"a700\": {\n \"$value\": \"#0a0a0ac0\",\n \"$type\": \"color\"\n },\n \"a800\": {\n \"$value\": \"#0a0a0ad8\",\n \"$type\": \"color\"\n },\n \"a900\": {\n \"$value\": \"#0a0a0ae8\",\n \"$type\": \"color\"\n },\n \"a950\": {\n \"$value\": \"#0a0a0af4\",\n \"$type\": \"color\"\n }\n },\n \"stone\": {\n \"50\": {\n \"$value\": \"#fbfaf8\",\n \"$type\": \"color\"\n },\n \"75\": {\n \"$value\": \"#f6f5f2\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#eeedeb\",\n \"$type\": \"color\"\n },\n \"150\": {\n \"$value\": \"#e7e5e2\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#d6d4d1\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#b6b2ad\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#95928c\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#75726d\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#595854\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#444441\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#2d2d2d\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#181818\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#050505\",\n \"$type\": \"color\"\n },\n \"a50\": {\n \"$value\": \"#0b09040a\",\n \"$type\": \"color\"\n },\n \"a100\": {\n \"$value\": \"#0b090410\",\n \"$type\": \"color\"\n },\n \"a200\": {\n \"$value\": \"#0b090418\",\n \"$type\": \"color\"\n },\n \"a300\": {\n \"$value\": \"#0b090430\",\n \"$type\": \"color\"\n },\n \"a400\": {\n \"$value\": \"#0b090450\",\n \"$type\": \"color\"\n },\n \"a500\": {\n \"$value\": \"#0b090480\",\n \"$type\": \"color\"\n },\n \"a600\": {\n \"$value\": \"#0b0904a0\",\n \"$type\": \"color\"\n },\n \"a700\": {\n \"$value\": \"#0b0904c0\",\n \"$type\": \"color\"\n },\n \"a800\": {\n \"$value\": \"#0b0904d8\",\n \"$type\": \"color\"\n },\n \"a900\": {\n \"$value\": \"#0b0904e8\",\n \"$type\": \"color\"\n },\n \"a950\": {\n \"$value\": \"#0b0904f4\",\n \"$type\": \"color\"\n }\n },\n \"red\": {\n \"50\": {\n \"$value\": \"#fef2f0\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#fee9e6\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#facfc9\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#f0a99f\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#e58175\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#d95c50\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#c13d34\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#a32d26\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#7f211b\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#5f1a15\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#3d110d\",\n \"$type\": \"color\"\n }\n },\n \"orange\": {\n \"50\": {\n \"$value\": \"#fff7ed\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#ffedd5\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#fed7aa\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#fdba74\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#fb923c\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#f97316\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#ea580c\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#c2410c\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#9a3412\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#7c2d12\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#431407\",\n \"$type\": \"color\"\n }\n },\n \"amber\": {\n \"50\": {\n \"$value\": \"#faf4ec\",\n \"$type\": \"color\"\n },\n \"100\": {\n \"$value\": \"#f9eddd\",\n \"$type\": \"color\"\n },\n \"200\": {\n \"$value\": \"#efd7b7\",\n \"$type\": \"color\"\n },\n \"300\": {\n \"$value\": \"#e5bd86\",\n \"$type\": \"color\"\n },\n \"400\": {\n \"$value\": \"#d8a354\",\n \"$type\": \"color\"\n },\n \"500\": {\n \"$value\": \"#c88a1e\",\n \"$type\": \"color\"\n },\n \"600\": {\n \"$value\": \"#b37903\",\n \"$type\": \"color\"\n },\n \"700\": {\n \"$value\": \"#946406\",\n \"$type\": \"color\"\n },\n \"800\": {\n \"$value\": \"#764f05\",\n \"$type\": \"color\"\n },\n \"900\": {\n \"$value\": \"#5a3b03\",\n \"$type\": \"color\"\n },\n \"950\": {\n \"$value\": \"#392402\",\n \"$type\": \"color\"\n }\n },\n \"white\": {\n \"base\": {\n \"$value\": \"#ffffff\",\n \"$type\": \"color\"\n },\n \"a50\": {\n \"$value\": \"#ffffff0a\",\n \"$type\": \"color\"\n },\n \"a100\": {\n \"$value\": \"#ffffff10\",\n \"$type\": \"color\"\n },\n \"a200\": {\n \"$value\": \"#ffffff18\",\n \"$type\": \"color\"\n },\n \"a300\": {\n \"$value\": \"#ffffff30\",\n \"$type\": \"color\"\n },\n \"a400\": {\n \"$value\": \"#ffffff50\",\n \"$type\": \"color\"\n },\n \"a500\": {\n \"$value\": \"#ffffff80\",\n \"$type\": \"color\"\n },\n \"a600\": {\n \"$value\": \"#ffffffa0\",\n \"$type\": \"color\"\n },\n \"a700\": {\n \"$value\": \"#ffffffc0\",\n \"$type\": \"color\"\n },\n \"a800\": {\n \"$value\": \"#ffffffd8\",\n \"$type\": \"color\"\n },\n \"a900\": {\n \"$value\": \"#ffffffe8\",\n \"$type\": \"color\"\n },\n \"a950\": {\n \"$value\": \"#fffffff4\",\n \"$type\": \"color\"\n }\n },\n \"black\": {\n \"base\": {\n \"$value\": \"#0a0a0a\",\n \"$type\": \"color\"\n },\n \"a50\": {\n \"$value\": \"#0a0a0a0a\",\n \"$type\": \"color\"\n },\n \"a100\": {\n \"$value\": \"#0a0a0a10\",\n \"$type\": \"color\"\n },\n \"a200\": {\n \"$value\": \"#0a0a0a18\",\n \"$type\": \"color\"\n },\n \"a300\": {\n \"$value\": \"#0a0a0a30\",\n \"$type\": \"color\"\n },\n \"a400\": {\n \"$value\": \"#0a0a0a50\",\n \"$type\": \"color\"\n },\n \"a500\": {\n \"$value\": \"#0a0a0a80\",\n \"$type\": \"color\"\n },\n \"a600\": {\n \"$value\": \"#0a0a0aa0\",\n \"$type\": \"color\"\n },\n \"a700\": {\n \"$value\": \"#0a0a0ac0\",\n \"$type\": \"color\"\n },\n \"a800\": {\n \"$value\": \"#0a0a0ad8\",\n \"$type\": \"color\"\n },\n \"a900\": {\n \"$value\": \"#0a0a0ae8\",\n \"$type\": \"color\"\n },\n \"a950\": {\n \"$value\": \"#0a0a0af4\",\n \"$type\": \"color\"\n }\n }\n}\n","import { clampChroma, converter, type Oklch, oklch, parse } from 'culori';\n\nimport type { Shade } from '../lib/palette.ts';\n\nimport flatGrid from './perceptual-grid.json' with { type: 'json' };\nimport hueGrid from './perceptual-grid-hue.json' with { type: 'json' };\n\n// emit ships P3 chroma; audit scores in sRGB (legacy-display equivalent)\nconst EMIT_GAMUT = 'p3';\nconst AUDIT_GAMUT = 'rgb';\n\nconst toRgb = converter('rgb');\n\nexport const PERCEPTUAL_L_GRID: Readonly<Record<Shade, number>> =\n Object.freeze(flatGrid);\n\nconst PERCEPTUAL_L_GRID_HUE: Readonly<\n Record<string, Readonly<Record<Shade, number>>>\n> = Object.freeze(\n Object.fromEntries(\n Object.entries(hueGrid).map(([name, curve]) => [name, Object.freeze(curve)])\n )\n);\n\nconst CUSP_FRACTION = 0.95; // sit just inside the P3 cusp for render safety\n\nconst SHADE_KEY_RE = /^(50|100|200|300|400|500|600|700|800|900|950)$/;\n\nexport function isPaletteShadeKey(key: unknown): key is Shade {\n return typeof key === 'string' && SHADE_KEY_RE.test(key);\n}\n\nfunction round(value: number, decimals: number) {\n const factor = 10 ** decimals;\n return Math.round(value * factor) / factor;\n}\n\nfunction formatPaletteOklch({ l, c, h, alpha }: Oklch) {\n const finite = (v: number | undefined) =>\n v !== undefined && Number.isFinite(v) ? v : 0;\n const lRounded = round(finite(l), 4);\n const cRounded = round(finite(c), 4);\n // Hue is undefined when chroma is 0 (achromatic). Emit 0 rather than `none`\n // so consuming CSS stays compatible with the project's spot-check format.\n const hRounded = c && h !== undefined ? round(finite(h), 3) : 0;\n const base = `oklch(${lRounded} ${cRounded} ${hRounded}`;\n if (alpha !== undefined && alpha < 1) {\n return `${base} / ${round(alpha, 4)})`;\n }\n return `${base})`;\n}\n\nfunction parseToOklch(hex: string): Oklch {\n const parsed = parse(hex);\n if (!parsed) {\n throw new Error(`palette: cannot parse color \"${hex}\"`);\n }\n return oklch(parsed);\n}\n\nfunction computePinnedOklch(\n hex: string,\n shade: string,\n palette?: string,\n reportGamutClip?: (message: string) => void\n): Oklch {\n const hueCurve = palette ? PERCEPTUAL_L_GRID_HUE[palette] : undefined;\n const pinnedL = isPaletteShadeKey(shade)\n ? (hueCurve ?? PERCEPTUAL_L_GRID)[shade]\n : undefined;\n if (pinnedL === undefined) {\n throw new Error(`palette: unknown shade \"${shade}\" for ${hex}`);\n }\n\n const source = parseToOklch(hex);\n\n // Re-pitched hues take chroma at the P3 cusp for the (hue, pinned-L) pair —\n // pale near white, vivid at the peak — driven by the gamut, not the source\n // hex. Every other palette keeps its source chroma (flat-grid behaviour).\n let chroma = source.c ?? 0;\n if (hueCurve) {\n const cuspC =\n clampChroma(\n { mode: 'oklch', l: pinnedL, c: 0.5, h: source.h },\n 'oklch',\n EMIT_GAMUT\n ).c ?? 0;\n chroma = cuspC * CUSP_FRACTION;\n }\n\n const target: Oklch = {\n mode: 'oklch',\n l: pinnedL,\n c: chroma,\n h: source.h,\n ...(source.alpha !== undefined ? { alpha: source.alpha } : {}),\n };\n\n const clamped = clampChroma(target, 'oklch', EMIT_GAMUT);\n\n if (!hueCurve) {\n const originalC = target.c;\n const clampedC = clamped.c ?? 0;\n if (originalC > 0 && (originalC - clampedC) / originalC > 0.2) {\n reportGamutClip?.(\n `palette: P3 gamut clip on ${hex} at shade ${shade} — C ${originalC.toFixed(4)} → ${clampedC.toFixed(4)}`\n );\n }\n }\n\n return clamped;\n}\n\nexport function hexToOklchPinned(\n hex: string,\n shade: string,\n palette?: string,\n reportGamutClip?: (message: string) => void\n): string {\n return formatPaletteOklch(\n computePinnedOklch(hex, shade, palette, reportGamutClip)\n );\n}\n\nexport function hexToOklchMechanical(hex: string): string {\n return formatPaletteOklch(parseToOklch(hex));\n}\n\nfunction oklchToSrgbInts(oklchColor: Oklch): [number, number, number] {\n const rgb = toRgb(clampChroma(oklchColor, 'oklch', AUDIT_GAMUT));\n if ((rgb.alpha ?? 1) < 1) {\n // apca-w3 `sRGBtoY` reads only [r,g,b]; an alpha-bearing color must be\n // pre-blended against its actual background before contrast computation.\n throw new Error(\n 'palette: oklchToSrgbInts received alpha-bearing color; pre-blend before contrast computation'\n );\n }\n const channel = (v: number) =>\n Math.max(0, Math.min(255, Math.round(v * 255)));\n return [channel(rgb.r), channel(rgb.g), channel(rgb.b)];\n}\n\n// Audit conversion retains the unrounded coordinates; parsing emitted CSS\n// first would change some sRGB integer channels at rounding boundaries.\nexport function hexToSrgbInts(\n hex: string,\n shade?: string,\n palette?: string\n): [number, number, number] {\n if (shade !== undefined) {\n return oklchToSrgbInts(computePinnedOklch(hex, shade, palette));\n }\n return oklchToSrgbInts(parseToOklch(hex));\n}\n","{\n \"50\": 0.985,\n \"100\": 0.945,\n \"200\": 0.87,\n \"300\": 0.765,\n \"400\": 0.66,\n \"500\": 0.553,\n \"600\": 0.46,\n \"700\": 0.385,\n \"800\": 0.297,\n \"900\": 0.207,\n \"950\": 0.118\n}\n","{\n \"rose\": {\n \"50\": 0.971,\n \"100\": 0.936,\n \"200\": 0.885,\n \"300\": 0.81,\n \"400\": 0.71,\n \"500\": 0.64,\n \"600\": 0.58,\n \"700\": 0.51,\n \"800\": 0.42,\n \"900\": 0.34,\n \"950\": 0.25\n },\n \"red\": {\n \"50\": 0.971,\n \"100\": 0.936,\n \"200\": 0.885,\n \"300\": 0.808,\n \"400\": 0.704,\n \"500\": 0.637,\n \"600\": 0.577,\n \"700\": 0.505,\n \"800\": 0.42,\n \"900\": 0.34,\n \"950\": 0.25\n },\n \"orange\": {\n \"50\": 0.98,\n \"100\": 0.955,\n \"200\": 0.91,\n \"300\": 0.84,\n \"400\": 0.78,\n \"500\": 0.71,\n \"600\": 0.62,\n \"700\": 0.52,\n \"800\": 0.43,\n \"900\": 0.34,\n \"950\": 0.25\n },\n \"amber\": {\n \"50\": 0.985,\n \"100\": 0.96,\n \"200\": 0.92,\n \"300\": 0.87,\n \"400\": 0.84,\n \"500\": 0.77,\n \"600\": 0.68,\n \"700\": 0.57,\n \"800\": 0.46,\n \"900\": 0.35,\n \"950\": 0.24\n },\n \"yellow\": {\n \"50\": 0.985,\n \"100\": 0.96,\n \"200\": 0.92,\n \"300\": 0.88,\n \"400\": 0.86,\n \"500\": 0.8,\n \"600\": 0.72,\n \"700\": 0.6,\n \"800\": 0.47,\n \"900\": 0.35,\n \"950\": 0.23\n },\n \"lime\": {\n \"50\": 0.985,\n \"100\": 0.965,\n \"200\": 0.93,\n \"300\": 0.9,\n \"400\": 0.88,\n \"500\": 0.82,\n \"600\": 0.73,\n \"700\": 0.61,\n \"800\": 0.49,\n \"900\": 0.37,\n \"950\": 0.26\n },\n \"green\": {\n \"50\": 0.982,\n \"100\": 0.96,\n \"200\": 0.925,\n \"300\": 0.87,\n \"400\": 0.79,\n \"500\": 0.72,\n \"600\": 0.62,\n \"700\": 0.52,\n \"800\": 0.43,\n \"900\": 0.34,\n \"950\": 0.25\n },\n \"emerald\": {\n \"50\": 0.982,\n \"100\": 0.96,\n \"200\": 0.925,\n \"300\": 0.87,\n \"400\": 0.79,\n \"500\": 0.72,\n \"600\": 0.62,\n \"700\": 0.52,\n \"800\": 0.43,\n \"900\": 0.34,\n \"950\": 0.25\n },\n \"teal\": {\n \"50\": 0.98,\n \"100\": 0.945,\n \"200\": 0.9,\n \"300\": 0.85,\n \"400\": 0.79,\n \"500\": 0.72,\n \"600\": 0.62,\n \"700\": 0.52,\n \"800\": 0.43,\n \"900\": 0.34,\n \"950\": 0.25\n },\n \"cyan\": {\n \"50\": 0.98,\n \"100\": 0.955,\n \"200\": 0.91,\n \"300\": 0.85,\n \"400\": 0.79,\n \"500\": 0.72,\n \"600\": 0.63,\n \"700\": 0.53,\n \"800\": 0.44,\n \"900\": 0.35,\n \"950\": 0.26\n },\n \"sky\": {\n \"50\": 0.975,\n \"100\": 0.945,\n \"200\": 0.895,\n \"300\": 0.82,\n \"400\": 0.74,\n \"500\": 0.67,\n \"600\": 0.58,\n \"700\": 0.5,\n \"800\": 0.42,\n \"900\": 0.34,\n \"950\": 0.25\n },\n \"blue\": {\n \"50\": 0.97,\n \"100\": 0.932,\n \"200\": 0.882,\n \"300\": 0.809,\n \"400\": 0.707,\n \"500\": 0.623,\n \"600\": 0.546,\n \"700\": 0.488,\n \"800\": 0.41,\n \"900\": 0.33,\n \"950\": 0.25\n },\n \"indigo\": {\n \"50\": 0.96,\n \"100\": 0.925,\n \"200\": 0.865,\n \"300\": 0.78,\n \"400\": 0.67,\n \"500\": 0.57,\n \"600\": 0.49,\n \"700\": 0.42,\n \"800\": 0.35,\n \"900\": 0.28,\n \"950\": 0.21\n },\n \"violet\": {\n \"50\": 0.965,\n \"100\": 0.93,\n \"200\": 0.875,\n \"300\": 0.79,\n \"400\": 0.68,\n \"500\": 0.59,\n \"600\": 0.51,\n \"700\": 0.44,\n \"800\": 0.37,\n \"900\": 0.3,\n \"950\": 0.22\n },\n \"purple\": {\n \"50\": 0.967,\n \"100\": 0.935,\n \"200\": 0.88,\n \"300\": 0.8,\n \"400\": 0.7,\n \"500\": 0.61,\n \"600\": 0.53,\n \"700\": 0.46,\n \"800\": 0.39,\n \"900\": 0.32,\n \"950\": 0.24\n },\n \"fuchsia\": {\n \"50\": 0.97,\n \"100\": 0.94,\n \"200\": 0.89,\n \"300\": 0.81,\n \"400\": 0.71,\n \"500\": 0.63,\n \"600\": 0.56,\n \"700\": 0.49,\n \"800\": 0.41,\n \"900\": 0.33,\n \"950\": 0.25\n },\n \"pink\": {\n \"50\": 0.97,\n \"100\": 0.94,\n \"200\": 0.89,\n \"300\": 0.82,\n \"400\": 0.72,\n \"500\": 0.64,\n \"600\": 0.57,\n \"700\": 0.5,\n \"800\": 0.42,\n \"900\": 0.34,\n \"950\": 0.25\n }\n}\n","// Generated from packages/core/tokens and Tailwind's theme by scripts/generate-token-scales.js.\n// Run `pnpm --filter @nxds/core generate:scales` after editing the tokens.\n\n/** The spacing scale. Each step has its own `--nx-spacing-*` variable. */\nexport const SPACING_STEPS = [\n 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 20, 24,\n 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 72, 80, 96,\n] as const;\n\n/** A step on the spacing scale. */\nexport type SpacingStep = (typeof SPACING_STEPS)[number];\n\n/** The primitive colour palettes that have a shade ramp. */\nexport const PRIMITIVE_PALETTE_NAMES = [\n 'green',\n 'emerald',\n 'teal',\n 'cyan',\n 'sky',\n 'indigo',\n 'violet',\n 'purple',\n 'fuchsia',\n 'pink',\n 'slate',\n 'rose',\n 'lime',\n 'yellow',\n 'blue',\n 'gray',\n 'zinc',\n 'neutral',\n 'stone',\n 'red',\n 'orange',\n 'amber',\n] as const;\n\nexport type PrimitivePaletteName = (typeof PRIMITIVE_PALETTE_NAMES)[number];\n\n/** Tailwind's page widths in rem, by name. The UI scale multiplies them. */\nexport const PAGE_WIDTHS_REM = {\n '3xs': 16,\n '2xs': 18,\n xs: 20,\n sm: 24,\n md: 28,\n lg: 32,\n xl: 36,\n '2xl': 42,\n '3xl': 48,\n '4xl': 56,\n '5xl': 64,\n '6xl': 72,\n '7xl': 80,\n} as const;\n","import primitiveColors from '../../tokens/primitives/color.json';\nimport {\n hexToOklchPinned,\n isPaletteShadeKey,\n} from '../token-source/perceptual-grid';\n\nimport { type Shade, SHADES } from './palette';\nimport {\n PRIMITIVE_PALETTE_NAMES,\n type PrimitivePaletteName,\n} from './token-scales.generated';\n\nexport type PrimitivePaletteRamp = Readonly<Record<Shade, string>>;\n\nconst rampCache = new Map<PrimitivePaletteName, PrimitivePaletteRamp>();\n\nexport function getPaletteRamp(\n palette: PrimitivePaletteName\n): PrimitivePaletteRamp {\n if (!PRIMITIVE_PALETTE_NAMES.includes(palette)) {\n throw new Error(`palette: unknown primitive palette \"${palette}\"`);\n }\n const cached = rampCache.get(palette);\n if (cached) return cached;\n const ramp = Object.freeze(\n Object.fromEntries(\n SHADES.map((shade) => [\n shade,\n hexToOklchPinned(\n primitiveColors[palette][shade].$value,\n shade,\n palette\n ),\n ])\n ) as Record<Shade, string>\n );\n rampCache.set(palette, ramp);\n return ramp;\n}\n\nexport function getPaletteShade(\n palette: PrimitivePaletteName,\n shade: Shade\n): string {\n if (!isPaletteShadeKey(shade)) {\n throw new Error(`palette: unknown shade \"${shade}\"`);\n }\n return getPaletteRamp(palette)[shade];\n}\n"],"mappings":"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","names":["oklch","parse","parse","oklch"]}
@@ -1,5 +1,42 @@
1
1
  import { N as NxdsSurfaceTone } from './palette-BKTIQ0WC.js';
2
2
 
3
+ /**
4
+ * Each UI scale, as factors of the Default scale. `spacing` multiplies every
5
+ * density and radius step and the page widths, `text` every type size, and
6
+ * `icon` every icon glyph. `text: 12 / 14` turns 14px label text into 12px.
7
+ */
8
+ declare const UI_SCALES: {
9
+ readonly small: {
10
+ readonly spacing: 0.9;
11
+ readonly text: number;
12
+ readonly icon: number;
13
+ };
14
+ readonly default: {
15
+ readonly spacing: 1;
16
+ readonly text: 1;
17
+ readonly icon: 1;
18
+ };
19
+ readonly large: {
20
+ readonly spacing: 1.1;
21
+ readonly text: number;
22
+ readonly icon: number;
23
+ };
24
+ readonly larger: {
25
+ readonly spacing: 1.25;
26
+ readonly text: number;
27
+ readonly icon: number;
28
+ };
29
+ };
30
+ type UiScale = keyof typeof UI_SCALES;
31
+ /**
32
+ * The label text sizes a person can pick, in px at the Default scale. 14 is
33
+ * the Default label size, and writes no block of its own.
34
+ */
35
+ declare const TEXT_SIZES: readonly [12, 13, 14, 15, 16];
36
+ type TextSize = (typeof TEXT_SIZES)[number];
37
+ /** The label text size, in px, that `textSize` shows at `scale`. */
38
+ declare function textSizePx(textSize: TextSize, scale: UiScale): number;
39
+
3
40
  interface ThemeSeeds {
4
41
  /** Drives the primary family ramp. */
5
42
  accent: string;
@@ -43,6 +80,9 @@ declare function themeToCss(derived: DerivedTheme): string;
43
80
 
44
81
  type ModeSeeds = Pick<ThemeSeeds, 'background' | 'foreground'>;
45
82
  type NxdsAppearanceMode = 'light' | 'dark' | 'system';
83
+ type NxdsUiScale = UiScale;
84
+ /** The label text size, in px at the Default UI scale. */
85
+ type NxdsTextSize = TextSize;
46
86
  type NxdsDensity = 'tight' | 'compact' | 'default' | 'comfortable' | 'relaxed' | 'spacious';
47
87
  type NxdsCorners = 'square' | 'subtle' | 'smooth' | 'round' | 'extra-round';
48
88
  type NxdsElevation = 'flat' | 'quiet' | 'soft' | 'standard' | 'strong';
@@ -52,7 +92,6 @@ interface NxdsAppearancePrefs {
52
92
  /** The heading `font-family` stack. `null` follows `uiFont`. */
53
93
  headingFont: string | null;
54
94
  codeFont: string;
55
- uiFontSize: number;
56
95
  codeFontSize: number;
57
96
  reduceMotion: boolean;
58
97
  pointerCursors: boolean;
@@ -64,6 +103,8 @@ interface NxdsAppearanceState {
64
103
  surfaceTone: NxdsSurfaceTone;
65
104
  lightContrast: number;
66
105
  darkContrast: number;
106
+ uiScale: NxdsUiScale;
107
+ textSize: NxdsTextSize;
67
108
  density: NxdsDensity;
68
109
  corners: NxdsCorners;
69
110
  elevation: NxdsElevation;
@@ -98,6 +139,24 @@ declare const BASE_TONE_SEEDS: Record<NxdsSurfaceTone, {
98
139
  light: ModeSeeds;
99
140
  dark: ModeSeeds;
100
141
  }>;
142
+ declare const UI_SCALE_OPTIONS: readonly [{
143
+ readonly value: "small";
144
+ readonly label: "Small";
145
+ }, {
146
+ readonly value: "default";
147
+ readonly label: "Default";
148
+ }, {
149
+ readonly value: "large";
150
+ readonly label: "Large";
151
+ }, {
152
+ readonly value: "larger";
153
+ readonly label: "Larger";
154
+ }];
155
+ /** The text sizes, each labelled with its label size at the Default UI scale. */
156
+ declare const TEXT_SIZE_OPTIONS: readonly {
157
+ readonly value: NxdsTextSize;
158
+ readonly label: string;
159
+ }[];
101
160
  declare const DENSITY_OPTIONS: readonly [{
102
161
  readonly value: "tight";
103
162
  readonly label: "Tight";
@@ -166,7 +225,9 @@ declare const FONT_SIZE_PX_MAX = 32;
166
225
  declare function normalizeAppearanceModeIds(raw: unknown): unknown;
167
226
  declare function sanitizeNxdsAppearancePrefs(raw: unknown): NxdsAppearancePrefs;
168
227
  declare function sanitizeNxdsAppearance(rawInput: unknown): NxdsAppearanceState;
169
- declare function createNxdsThemeContract(state: NxdsAppearanceState): ThemeDerivationInput;
228
+ /** The appearance fields runtime colours derive from. */
229
+ type NxdsColorAppearance = Pick<NxdsAppearanceState, 'brandColor' | 'surfaceTone' | 'lightContrast' | 'darkContrast'>;
230
+ declare function createNxdsThemeContract(state: NxdsColorAppearance): ThemeDerivationInput;
170
231
  declare function appearancePrefsToCss(prefs: NxdsAppearancePrefs): string;
171
232
 
172
233
  /**
@@ -259,4 +320,4 @@ declare const DARK_SURFACE_LADDER: {
259
320
  };
260
321
  };
261
322
 
262
- export { BASE_TONE_OPTIONS as B, CORNER_OPTIONS as C, DARK_SURFACE_LADDER as D, ELEVATION_OPTIONS as E, FONT_SIZE_PX_MAX as F, LIGHT_SURFACE_LADDER as L, type NxdsPresetField as N, SURFACE_TOKENS as S, type ThemeDerivationInput as T, type NxdsAppearancePrefs as a, type NxdsAppearanceState as b, type ShadeAnchor as c, type DerivedTheme as d, BASE_TONE_SEEDS as e, DEFAULT_BRAND_COLOR as f, DEFAULT_NXDS_APPEARANCE as g, DENSITY_OPTIONS as h, FONT_SIZE_PX_MIN as i, type NxdsAppearanceMode as j, type NxdsCorners as k, type NxdsDensity as l, type NxdsElevation as m, type NxdsStroke as n, type NxdsThemeContract as o, STROKE_OPTIONS as p, type SurfaceToken as q, type ThemeSeeds as r, type TokenMap as s, appearancePrefsToCss as t, createNxdsThemeContract as u, deriveTheme as v, normalizeAppearanceModeIds as w, sanitizeNxdsAppearance as x, sanitizeNxdsAppearancePrefs as y, themeToCss as z };
323
+ export { normalizeAppearanceModeIds as A, BASE_TONE_OPTIONS as B, CORNER_OPTIONS as C, DARK_SURFACE_LADDER as D, ELEVATION_OPTIONS as E, FONT_SIZE_PX_MAX as F, sanitizeNxdsAppearance as G, sanitizeNxdsAppearancePrefs as H, textSizePx as I, themeToCss as J, LIGHT_SURFACE_LADDER as L, type NxdsColorAppearance as N, SURFACE_TOKENS as S, TEXT_SIZE_OPTIONS as T, UI_SCALE_OPTIONS as U, type NxdsUiScale as a, type NxdsTextSize as b, type NxdsAppearancePrefs as c, type NxdsPresetField as d, type ShadeAnchor as e, type NxdsAppearanceState as f, type DerivedTheme as g, BASE_TONE_SEEDS as h, DEFAULT_BRAND_COLOR as i, DEFAULT_NXDS_APPEARANCE as j, DENSITY_OPTIONS as k, FONT_SIZE_PX_MIN as l, type NxdsAppearanceMode as m, type NxdsCorners as n, type NxdsDensity as o, type NxdsElevation as p, type NxdsStroke as q, type NxdsThemeContract as r, STROKE_OPTIONS as s, type SurfaceToken as t, type ThemeDerivationInput as u, type ThemeSeeds as v, type TokenMap as w, appearancePrefsToCss as x, createNxdsThemeContract as y, deriveTheme as z };