@nxds/core 0.9.1 → 0.10.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.
- package/README.md +2 -2
- package/dist/runtime/catalogue.cjs +79 -21
- package/dist/runtime/catalogue.cjs.map +1 -1
- package/dist/runtime/catalogue.d.cts +6 -5
- package/dist/runtime/catalogue.d.ts +6 -5
- package/dist/runtime/catalogue.js +79 -21
- package/dist/runtime/catalogue.js.map +1 -1
- package/dist/runtime/index.cjs +30 -4
- package/dist/runtime/index.cjs.map +1 -1
- package/dist/runtime/index.d.cts +8 -1
- package/dist/runtime/index.d.ts +8 -1
- package/dist/runtime/index.js +29 -4
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/palette.cjs +26 -3
- package/dist/runtime/palette.cjs.map +1 -1
- package/dist/runtime/palette.d.cts +3 -1402
- package/dist/runtime/palette.d.ts +3 -1402
- package/dist/runtime/palette.js +26 -3
- package/dist/runtime/palette.js.map +1 -1
- package/dist/runtime/token-scales.generated-CCNkHJ3I.d.cts +9 -0
- package/dist/runtime/token-scales.generated-CCNkHJ3I.d.ts +9 -0
- package/package.json +3 -2
package/dist/runtime/palette.cjs
CHANGED
|
@@ -1739,10 +1739,33 @@ function hexToOklchPinned(hex, shade, palette, reportGamutClip) {
|
|
|
1739
1739
|
);
|
|
1740
1740
|
}
|
|
1741
1741
|
|
|
1742
|
+
// src/lib/token-scales.generated.ts
|
|
1743
|
+
var PRIMITIVE_PALETTE_NAMES = [
|
|
1744
|
+
"green",
|
|
1745
|
+
"emerald",
|
|
1746
|
+
"teal",
|
|
1747
|
+
"cyan",
|
|
1748
|
+
"sky",
|
|
1749
|
+
"indigo",
|
|
1750
|
+
"violet",
|
|
1751
|
+
"purple",
|
|
1752
|
+
"fuchsia",
|
|
1753
|
+
"pink",
|
|
1754
|
+
"slate",
|
|
1755
|
+
"rose",
|
|
1756
|
+
"lime",
|
|
1757
|
+
"yellow",
|
|
1758
|
+
"blue",
|
|
1759
|
+
"gray",
|
|
1760
|
+
"zinc",
|
|
1761
|
+
"neutral",
|
|
1762
|
+
"stone",
|
|
1763
|
+
"red",
|
|
1764
|
+
"orange",
|
|
1765
|
+
"amber"
|
|
1766
|
+
];
|
|
1767
|
+
|
|
1742
1768
|
// src/lib/primitive-palette.ts
|
|
1743
|
-
var PRIMITIVE_PALETTE_NAMES = Object.keys(color_default).filter(
|
|
1744
|
-
(name) => name !== "white" && name !== "black"
|
|
1745
|
-
);
|
|
1746
1769
|
var rampCache = /* @__PURE__ */ new Map();
|
|
1747
1770
|
function getPaletteRamp(palette) {
|
|
1748
1771
|
if (!PRIMITIVE_PALETTE_NAMES.includes(palette)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/palette.ts","../../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/primitive-palette.ts"],"sourcesContent":["export { type Shade, SHADES } from './lib/palette';\nexport {\n getPaletteRamp,\n getPaletteShade,\n PRIMITIVE_PALETTE_NAMES,\n type PrimitivePaletteName,\n type PrimitivePaletteRamp,\n} from './lib/primitive-palette';\n","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","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';\n\nexport type PrimitivePaletteName = Exclude<\n keyof typeof primitiveColors,\n 'white' | 'black'\n>;\nexport type PrimitivePaletteRamp = Readonly<Record<Shade, string>>;\n\nexport const PRIMITIVE_PALETTE_NAMES: readonly PrimitivePaletteName[] =\n Object.keys(primitiveColors).filter(\n (name): name is PrimitivePaletteName => name !== 'white' && name !== 'black'\n );\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":["import_culori"]}
|
|
1
|
+
{"version":3,"sources":["../../src/palette.ts","../../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":["export { type Shade, SHADES } from './lib/palette';\nexport {\n getPaletteRamp,\n getPaletteShade,\n type PrimitivePaletteRamp,\n} from './lib/primitive-palette';\nexport {\n PRIMITIVE_PALETTE_NAMES,\n type PrimitivePaletteName,\n} from './lib/token-scales.generated';\n","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":["import_culori"]}
|