@qw-ui/tokens 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/seed/index.json","../src/color-architecture.ts","../src/seed/index.ts","../src/schema.ts","../src/color.ts","../src/derive/oklch.ts","../src/derive/naming.ts","../src/derive/reference.ts","../src/derive/semantic.ts","../src/derive/index.ts","../src/derive/live-css.ts"],"names":["seedColor","parse","formatHex","s","color"],"mappings":"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","file":"index.js","sourcesContent":["{\n \"qw\": {\n \"seed\": {\n \"color\": {\n \"brand\": { \"$value\": { \"colorSpace\": \"srgb\", \"components\": [0, 0.0667, 1], \"alpha\": 1 }, \"$type\": \"color\" },\n \"black\": { \"$value\": { \"colorSpace\": \"srgb\", \"components\": [0.1333, 0.1333, 0.1333], \"alpha\": 1 }, \"$type\": \"color\" },\n \"white\": { \"$value\": { \"colorSpace\": \"srgb\", \"components\": [1, 1, 1], \"alpha\": 1 }, \"$type\": \"color\" },\n \"gray\": { \"$value\": { \"colorSpace\": \"srgb\", \"components\": [0.6, 0.6, 0.6], \"alpha\": 1 }, \"$type\": \"color\" },\n \"red\": { \"$value\": { \"colorSpace\": \"srgb\", \"components\": [1, 0.251, 0.251], \"alpha\": 1 }, \"$type\": \"color\" },\n \"orange\": { \"$value\": { \"colorSpace\": \"srgb\", \"components\": [1, 0.4196, 0.2471], \"alpha\": 1 }, \"$type\": \"color\" },\n \"yellow\": { \"$value\": { \"colorSpace\": \"srgb\", \"components\": [1, 0.8353, 0.4588], \"alpha\": 1 }, \"$type\": \"color\" },\n \"green\": { \"$value\": { \"colorSpace\": \"srgb\", \"components\": [0.1216, 0.6, 0.2471], \"alpha\": 1 }, \"$type\": \"color\" },\n \"cyan\": { \"$value\": { \"colorSpace\": \"srgb\", \"components\": [0.1608, 0.7451, 0.8], \"alpha\": 1 }, \"$type\": \"color\" },\n \"blue\": { \"$value\": { \"colorSpace\": \"srgb\", \"components\": [0.051, 0.3255, 1], \"alpha\": 1 }, \"$type\": \"color\" },\n \"purple\": { \"$value\": { \"colorSpace\": \"srgb\", \"components\": [0.2627, 0.1725, 0.8588], \"alpha\": 1 }, \"$type\": \"color\" },\n \"brown\": { \"$value\": { \"colorSpace\": \"srgb\", \"components\": [0.7059, 0.3686, 0.0235], \"alpha\": 1 }, \"$type\": \"color\" }\n },\n \"size\": {\n \"spacing\": {\n \"step\": { \"$value\": { \"value\": 4, \"unit\": \"px\" }, \"$type\": \"dimension\" }\n },\n \"borderWidth\": {\n \"hairline\": { \"$value\": { \"value\": 1, \"unit\": \"px\" }, \"$type\": \"dimension\" }\n },\n \"radius\": {\n \"base\": { \"$value\": { \"value\": 8, \"unit\": \"px\" }, \"$type\": \"dimension\" },\n \"full\": { \"$value\": { \"value\": 9999, \"unit\": \"px\" }, \"$type\": \"dimension\" }\n },\n \"controlSize\": {\n \"base\": { \"$value\": { \"value\": 40, \"unit\": \"px\" }, \"$type\": \"dimension\" }\n },\n \"iconSize\": {\n \"base\": { \"$value\": { \"value\": 20, \"unit\": \"px\" }, \"$type\": \"dimension\" }\n },\n \"opacity\": {\n \"disabled\": { \"$value\": 0.5, \"$type\": \"number\" },\n \"alphaStep\": { \"$value\": 0.04, \"$type\": \"number\" }\n },\n \"zIndex\": {\n \"step\": { \"$value\": 10, \"$type\": \"number\" }\n }\n },\n \"typography\": {\n \"fontFamily\": {\n \"text\": { \"$value\": [\"system-ui\", \"-apple-system\", \"BlinkMacSystemFont\", \"Segoe UI\", \"Roboto\", \"Helvetica Neue\", \"Arial\", \"sans-serif\"], \"$type\": \"fontFamily\" },\n \"number\": { \"$value\": [\"PlusJakartaSans\", \"system-ui\", \"Segoe UI\", \"Roboto\", \"Helvetica Neue\", \"Arial\", \"sans-serif\"], \"$type\": \"fontFamily\" },\n \"code\": { \"$value\": [\"ui-monospace\", \"SFMono-Regular\", \"SF Mono\", \"Menlo\", \"Consolas\", \"Liberation Mono\", \"monospace\"], \"$type\": \"fontFamily\" },\n \"textMacLatin\": { \"$value\": [\"-apple-system\", \"BlinkMacSystemFont\", \"SF Pro Text\", \"system-ui\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", \"sans-serif\"], \"$type\": \"fontFamily\" },\n \"textMacZh\": { \"$value\": [\"PingFang SC\", \"-apple-system\", \"BlinkMacSystemFont\", \"Hiragino Sans GB\", \"Hiragino Sans\", \"SF Pro Text\", \"system-ui\", \"Noto Sans SC\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", \"sans-serif\"], \"$type\": \"fontFamily\" },\n \"textMacJa\": { \"$value\": [\"Hiragino Sans\", \"Hiragino Kaku Gothic ProN\", \"-apple-system\", \"BlinkMacSystemFont\", \"PingFang SC\", \"SF Pro Text\", \"system-ui\", \"Noto Sans JP\", \"Helvetica Neue\", \"Helvetica\", \"Arial\", \"sans-serif\"], \"$type\": \"fontFamily\" },\n \"textWindowsLatin\": { \"$value\": [\"Segoe UI\", \"system-ui\", \"Roboto\", \"Noto Sans\", \"Helvetica Neue\", \"Arial\", \"sans-serif\"], \"$type\": \"fontFamily\" },\n \"textWindowsZh\": { \"$value\": [\"Microsoft YaHei\", \"Segoe UI\", \"system-ui\", \"Roboto\", \"Noto Sans SC\", \"Helvetica Neue\", \"Arial\", \"sans-serif\"], \"$type\": \"fontFamily\" },\n \"textWindowsJa\": { \"$value\": [\"Meiryo\", \"Yu Gothic UI\", \"Segoe UI\", \"system-ui\", \"Roboto\", \"Noto Sans JP\", \"Helvetica Neue\", \"Arial\", \"sans-serif\"], \"$type\": \"fontFamily\" }\n },\n \"fontWeight\": {\n \"regular\": { \"$value\": 400, \"$type\": \"fontWeight\" },\n \"medium\": { \"$value\": 500, \"$type\": \"fontWeight\" },\n \"semibold\": { \"$value\": 600, \"$type\": \"fontWeight\" }\n },\n \"fontSize\": {\n \"base\": { \"$value\": { \"value\": 14, \"unit\": \"px\" }, \"$type\": \"dimension\" }\n },\n \"lineHeight\": {\n \"base\": { \"$value\": 1.5, \"$type\": \"number\" }\n },\n \"letterSpacing\": {\n \"base\": { \"$value\": { \"value\": 0, \"unit\": \"px\" }, \"$type\": \"dimension\" }\n }\n },\n \"motion\": {\n \"duration\": {\n \"base\": { \"$value\": { \"value\": 200, \"unit\": \"ms\" }, \"$type\": \"duration\" }\n },\n \"easing\": {\n \"standard\": { \"$value\": [0.16, 1, 0.3, 1], \"$type\": \"cubicBezier\" }\n }\n },\n \"effect\": {\n \"shadow\": {\n \"base\": {\n \"$value\": {\n \"color\": { \"colorSpace\": \"srgb\", \"components\": [0, 0, 0], \"alpha\": 0.08 },\n \"offsetX\": { \"value\": 0, \"unit\": \"px\" },\n \"offsetY\": { \"value\": 2, \"unit\": \"px\" },\n \"blur\": { \"value\": 4, \"unit\": \"px\" },\n \"spread\": { \"value\": 0, \"unit\": \"px\" }\n },\n \"$type\": \"shadow\"\n }\n }\n }\n }\n }\n}\n","export const FIGMA_COLOR_COLLECTION = \"Color\";\nexport const FIGMA_COLOR_PREFIX = \"qw\";\n\nexport const T1_COLOR_KEYS = [\n \"brand\",\n \"black\",\n \"white\",\n \"gray\",\n \"red\",\n \"orange\",\n \"yellow\",\n \"green\",\n \"cyan\",\n \"blue\",\n \"purple\",\n \"brown\",\n] as const;\n\nexport type T1ColorKey = (typeof T1_COLOR_KEYS)[number];\n\nexport const FIGMA_T1_SEED_HEX: Record<T1ColorKey, string> = {\n brand: \"#0011FF\",\n black: \"#222222\",\n white: \"#FFFFFF\",\n gray: \"#999999\",\n red: \"#FF4040\",\n orange: \"#FF6B3F\",\n yellow: \"#FFD575\",\n green: \"#1F993F\",\n cyan: \"#29BECC\",\n blue: \"#0D53FF\",\n purple: \"#432CDB\",\n brown: \"#B45E06\",\n};\n\nexport const T2_ALPHA_STEPS = [5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100] as const;\nexport const T2_ALPHA_KEYS = T2_ALPHA_STEPS.map((step) => `a${step}`) as [\n \"a5\",\n \"a10\",\n \"a20\",\n \"a30\",\n \"a40\",\n \"a50\",\n \"a60\",\n \"a70\",\n \"a80\",\n \"a90\",\n \"a100\",\n];\n\nexport type T2AlphaStep = (typeof T2_ALPHA_STEPS)[number];\nexport type T2AlphaKey = (typeof T2_ALPHA_KEYS)[number];\n\nexport const T2_OKLCH_STEPS = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900] as const;\nexport type T2OklchStep = (typeof T2_OKLCH_STEPS)[number];\n\nexport const FIGMA_T2_SOLID_SCALE: Record<T1ColorKey, Record<T2OklchStep, string>> = {\n brand: {\n 50: \"#F2F6FF\",\n 100: \"#E6ECFF\",\n 200: \"#C4D8FF\",\n 300: \"#9DBDFF\",\n 400: \"#6C9AFF\",\n 500: \"#426EFF\",\n 600: \"#1B57FF\",\n 700: \"#002CE8\",\n 800: \"#001A99\",\n 900: \"#000540\",\n },\n black: {\n 50: \"#F6F6F6\",\n 100: \"#EBEBEB\",\n 200: \"#D7D7D7\",\n 300: \"#BEBEBE\",\n 400: \"#9E9E9E\",\n 500: \"#868686\",\n 600: \"#6F6F6F\",\n 700: \"#555555\",\n 800: \"#353535\",\n 900: \"#121212\",\n },\n white: {\n 50: \"#F6F6F6\",\n 100: \"#EBEBEB\",\n 200: \"#D7D7D7\",\n 300: \"#BEBEBE\",\n 400: \"#9E9E9E\",\n 500: \"#868686\",\n 600: \"#6F6F6F\",\n 700: \"#555555\",\n 800: \"#353535\",\n 900: \"#121212\",\n },\n gray: {\n 50: \"#F6F6F6\",\n 100: \"#EEEEEE\",\n 200: \"#E0E0E0\",\n 300: \"#CCCCCC\",\n 400: \"#A2A9B6\",\n 500: \"#888E99\",\n 600: \"#666666\",\n 700: \"#3A3A3A\",\n 800: \"#2D2D2D\",\n 900: \"#202020\",\n },\n red: {\n 50: \"#FFF3F1\",\n 100: \"#FFE7E4\",\n 200: \"#FFC8C2\",\n 300: \"#FFA097\",\n 400: \"#FF5745\",\n 500: \"#FF4D4D\",\n 600: \"#CF081E\",\n 700: \"#A30013\",\n 800: \"#6A0009\",\n 900: \"#2A0001\",\n },\n orange: {\n 50: \"#FFF3EF\",\n 100: \"#FFE5DD\",\n 200: \"#FFC9B9\",\n 300: \"#FFA287\",\n 400: \"#F76F47\",\n 500: \"#FF764D\",\n 600: \"#C03800\",\n 700: \"#962A00\",\n 800: \"#611800\",\n 900: \"#260500\",\n },\n yellow: {\n 50: \"#FFF5DF\",\n 100: \"#FFE9B9\",\n 200: \"#F4D38B\",\n 300: \"#DCB96B\",\n 400: \"#BE9940\",\n 500: \"#A78013\",\n 600: \"#8B6900\",\n 700: \"#6C5100\",\n 800: \"#453200\",\n 900: \"#191000\",\n },\n green: {\n 50: \"#E2FFE4\",\n 100: \"#BCFFC3\",\n 200: \"#9BEFA5\",\n 300: \"#7BD688\",\n 400: \"#52B764\",\n 500: \"#2C9F47\",\n 600: \"#068631\",\n 700: \"#006823\",\n 800: \"#004213\",\n 900: \"#001704\",\n },\n cyan: {\n 50: \"#E0FCFF\",\n 100: \"#BAF8FF\",\n 200: \"#91EAF2\",\n 300: \"#65D0DC\",\n 400: \"#2FB2BE\",\n 500: \"#0098A4\",\n 600: \"#007E88\",\n 700: \"#006169\",\n 800: \"#003D43\",\n 900: \"#001518\",\n },\n blue: {\n 50: \"#EBF5FF\",\n 100: \"#E7F1FF\",\n 200: \"#D6EBFF\",\n 300: \"#9CBEFF\",\n 400: \"#3086FF\",\n 500: \"#1677FF\",\n 600: \"#266FFF\",\n 700: \"#003DB8\",\n 800: \"#001D66\",\n 900: \"#000A3A\",\n },\n purple: {\n 50: \"#F3F5FF\",\n 100: \"#E6EAFF\",\n 200: \"#CDD5FF\",\n 300: \"#A699FF\",\n 400: \"#8692FF\",\n 500: \"#6B71FF\",\n 600: \"#5550F2\",\n 700: \"#4135C9\",\n 800: \"#280B96\",\n 900: \"#0C0041\",\n },\n brown: {\n 50: \"#FFF3EC\",\n 100: \"#FFE6D5\",\n 200: \"#FFCBA8\",\n 300: \"#F8A971\",\n 400: \"#DA8749\",\n 500: \"#C36D24\",\n 600: \"#A75600\",\n 700: \"#824100\",\n 800: \"#542800\",\n 900: \"#200B00\",\n },\n};\n\nexport const FIGMA_T3_COLOR_ROLES = {\n \"surface.base\": { light: \"color.white.base\", dark: \"color.black.base\" },\n \"surface.subtle\": { light: \"color.gray.50\", dark: \"color.gray.900\" },\n \"surface.elevated\": { light: \"color.white.base\", dark: \"color.gray.800\" },\n \"surface.header\": { light: \"color.gray.100\", dark: \"color.gray.700\" },\n \"surface.brand-subtle\": { light: \"color.blue.50\", dark: \"color.blue.800\" },\n\n \"content.primary\": { light: \"color.black.base\", dark: \"color.white.base\" },\n \"content.secondary\": { light: \"color.gray.600\", dark: \"color.gray.base\" },\n \"content.tertiary\": { light: \"color.gray.base\", dark: \"color.gray.600\" },\n \"content.placeholder\": { light: \"color.gray.300\", dark: \"color.white.a30\" },\n \"content.intro\": { light: \"color.gray.400\", dark: \"color.gray.500\" },\n\n \"border.default\": { light: \"color.gray.100\", dark: \"color.gray.700\" },\n \"border.strong\": { light: \"color.gray.300\", dark: \"color.gray.600\" },\n \"border.focus\": { light: \"color.brand.base\", dark: \"color.brand.500\" },\n\n \"fill.subtle\": { light: \"color.gray.50\", dark: \"color.white.a20\" },\n \"fill.hover\": { light: \"color.gray.100\", dark: \"color.gray.800\" },\n \"fill.active\": { light: \"color.blue.50\", dark: \"color.blue.800\" },\n \"fill.disabled\": { light: \"color.gray.50\", dark: \"color.gray.900\" },\n\n \"action.brand\": { light: \"color.brand.base\", dark: \"color.brand.500\" },\n \"action.product\": { light: \"color.blue.base\", dark: \"color.blue.600\" },\n \"action.selected\": { light: \"color.blue.a20\", dark: \"color.blue.a40\" },\n \"action.inverse\": { light: \"color.white.base\", dark: \"color.black.base\" },\n\n \"status.success\": { light: \"color.green.base\", dark: \"color.green.base\" },\n \"status.warning\": { light: \"color.yellow.base\", dark: \"color.yellow.base\" },\n \"status.danger\": { light: \"color.red.400\", dark: \"color.red.400\" },\n \"status.info\": { light: \"color.blue.base\", dark: \"color.blue.600\" },\n\n \"overlay.scrim\": { light: \"color.black.a50\", dark: \"color.black.a70\" },\n \"overlay.guide\": { light: \"color.black.a70\", dark: \"color.black.a70\" },\n} as const;\n","import raw from \"./index.json\" with { type: \"json\" };\nimport { T1_COLOR_KEYS } from \"../color-architecture.js\";\nimport type { Seed } from \"../schema.js\";\nimport type { SeedColorValue } from \"../color.js\";\n\n/**\n * 把设计交付的 DTCG seed (嵌套 $value,五大类目) 拍平成 derive() 可消费的\n * Seed 形状。DTCG 是设计/Figma 的事实来源;这里是工程读取它的唯一入口。\n * 数值与 packages/tokens/design/seed.tokens.json 逐条一致(parity 测试保证不漂移)。\n */\nconst s = raw.qw.seed;\n\ntype Dimension = { value: number; unit: string };\nconst px = (d: Dimension) => `${d.value}${d.unit}`;\nconst color = (v: unknown) => v as SeedColorValue;\n\nexport const defaultSeed: Seed = {\n color: Object.fromEntries(T1_COLOR_KEYS.map((key) => [key, color(s.color[key].$value)])) as Seed[\"color\"],\n size: {\n spacing: {\n step: px(s.size.spacing.step.$value),\n },\n borderWidth: {\n hairline: px(s.size.borderWidth.hairline.$value),\n },\n radius: {\n base: px(s.size.radius.base.$value),\n full: px(s.size.radius.full.$value),\n },\n controlSize: {\n base: px(s.size.controlSize.base.$value),\n },\n iconSize: {\n base: px(s.size.iconSize.base.$value),\n },\n opacity: {\n disabled: s.size.opacity.disabled.$value,\n alphaStep: s.size.opacity.alphaStep.$value,\n },\n zIndex: {\n step: s.size.zIndex.step.$value,\n },\n },\n typography: {\n fontFamily: {\n text: s.typography.fontFamily.text.$value,\n number: s.typography.fontFamily.number.$value,\n code: s.typography.fontFamily.code.$value,\n textMacLatin: s.typography.fontFamily.textMacLatin.$value,\n textMacZh: s.typography.fontFamily.textMacZh.$value,\n textMacJa: s.typography.fontFamily.textMacJa.$value,\n textWindowsLatin: s.typography.fontFamily.textWindowsLatin.$value,\n textWindowsZh: s.typography.fontFamily.textWindowsZh.$value,\n textWindowsJa: s.typography.fontFamily.textWindowsJa.$value,\n },\n fontWeight: {\n regular: s.typography.fontWeight.regular.$value,\n medium: s.typography.fontWeight.medium.$value,\n semibold: s.typography.fontWeight.semibold.$value,\n },\n fontSize: {\n base: px(s.typography.fontSize.base.$value),\n },\n lineHeight: {\n base: s.typography.lineHeight.base.$value,\n },\n letterSpacing: {\n base: px(s.typography.letterSpacing.base.$value),\n },\n },\n motion: {\n duration: {\n base: px(s.motion.duration.base.$value),\n },\n easing: {\n standard: s.motion.easing.standard.$value as [number, number, number, number],\n },\n },\n effect: {\n shadow: {\n base: {\n color: color(s.effect.shadow.base.$value.color),\n offsetX: px(s.effect.shadow.base.$value.offsetX),\n offsetY: px(s.effect.shadow.base.$value.offsetY),\n blur: px(s.effect.shadow.base.$value.blur),\n spread: px(s.effect.shadow.base.$value.spread),\n },\n },\n },\n};\n","import { z } from \"zod\";\nimport { T1_COLOR_KEYS } from \"./color-architecture.js\";\n\n/**\n * seedColor — DTCG Color module 结构化颜色(不再接受十六进制字符串)。\n * - srgb:components 各分量 0–1(写 0–255 会被拒绝,这是常见错误)。\n * - oklch:l 0–1、c ≥0、h 为角度;用于\"设计师直接以感知空间拍板\"的输入。\n */\nconst seedColor = z\n .object({\n colorSpace: z.enum([\"srgb\", \"oklch\"]),\n components: z.tuple([z.number(), z.number(), z.number()]),\n alpha: z.number().min(0).max(1),\n })\n .superRefine((c, ctx) => {\n if (c.colorSpace === \"srgb\") {\n if (c.components.some((v) => v < 0 || v > 1)) {\n ctx.addIssue({\n code: \"custom\",\n message: \"srgb components 必须是 0–1(不是 0–255),例如 #0011ff → [0, 0.0667, 1]\",\n });\n }\n } else {\n const [l, chroma] = c.components;\n if (l < 0 || l > 1 || chroma < 0) {\n ctx.addIssue({ code: \"custom\", message: \"oklch 要求 l ∈ [0,1] 且 c ≥ 0\" });\n }\n }\n });\n\nconst cubicBezier = z.tuple([z.number(), z.number(), z.number(), z.number()]);\n\nconst fontStack = z.array(z.string()).min(1);\nconst colorSeedShape = Object.fromEntries(T1_COLOR_KEYS.map((key) => [key, seedColor])) as Record<\n (typeof T1_COLOR_KEYS)[number],\n typeof seedColor\n>;\n\n/**\n * SeedSchema — T1 Seed 的唯一事实源校验(RFC 0001 §2.1,v3 修订)。\n *\n * 五大类目 color/size/typography/motion/effect,字段结构对齐\n * packages/tokens/design/seed.tokens.json,全部字段必填——不允许省略后静默\n * 回退默认值,锚点缺口必须在 Seed 层显式补齐,Reference 层不得用硬编码兜底。\n *\n * v3 变化:\n * - 颜色全部结构化(DTCG Color module,支持 srgb/oklch)。\n * - radius/controlSize/iconSize 只留 base 锚点(full 是独立的裁切基准决策),\n * sm/lg 由 Reference 层按既定公式派生。\n * - lineHeight 从 size 移入 typography;新增 letterSpacing.base 锚点。\n * - fontFamily 换 text/number/code 三族 + 平台/语言变体(textMacXx、textWindowsXx)。\n */\nexport const SeedSchema = z.object({\n color: z.object(colorSeedShape),\n size: z.object({\n spacing: z.object({\n step: z.string(),\n }),\n borderWidth: z.object({\n hairline: z.string(),\n }),\n radius: z.object({\n /** 控件基准圆角;Reference 派生 sm=×0.5 / md=×1 / lg=×1.75。 */\n base: z.string(),\n /** 药丸/圆形裁切基准(独立设计决策,不从 base 派生)。 */\n full: z.string(),\n }),\n controlSize: z.object({\n /** md 控件高度锚点;sm/lg = base ∓ spacing.step × 2。 */\n base: z.string(),\n }),\n iconSize: z.object({\n /** md 图标尺寸锚点;sm/lg = base ∓ spacing.step。 */\n base: z.string(),\n }),\n opacity: z.object({\n disabled: z.number().min(0).max(1),\n alphaStep: z.number().min(0).max(1),\n }),\n zIndex: z.object({\n step: z.number().int().positive(),\n }),\n }),\n typography: z.object({\n fontFamily: z.object({\n /** 通用正文栈(跨平台缺省)。 */\n text: fontStack,\n /** 数字/数据展示栈。 */\n number: fontStack,\n /** 代码等宽栈。 */\n code: fontStack,\n /** 平台/语言细分变体,供上层按 UA/lang 重映射 text 角色。 */\n textMacLatin: fontStack,\n textMacZh: fontStack,\n textMacJa: fontStack,\n textWindowsLatin: fontStack,\n textWindowsZh: fontStack,\n textWindowsJa: fontStack,\n }),\n fontWeight: z.object({\n regular: z.number(),\n medium: z.number(),\n semibold: z.number(),\n }),\n fontSize: z.object({\n base: z.string(),\n }),\n lineHeight: z.object({\n base: z.number().positive(),\n }),\n letterSpacing: z.object({\n base: z.string(),\n }),\n }),\n motion: z.object({\n duration: z.object({\n base: z.string(),\n }),\n easing: z.object({\n standard: cubicBezier,\n }),\n }),\n effect: z.object({\n shadow: z.object({\n base: z.object({\n color: seedColor,\n offsetX: z.string(),\n offsetY: z.string(),\n blur: z.string(),\n spread: z.string(),\n }),\n }),\n }),\n});\n\nexport type SeedInput = z.input<typeof SeedSchema>;\nexport type Seed = z.infer<typeof SeedSchema>;\n\n/**\n * validateSeed — ConfigProvider 在 dev 模式调用;生产环境可裁掉,不带 zod 体积。\n * 解析失败抛错,错误信息直接定位到字段。\n */\nexport function validateSeed(seed: unknown): Seed {\n const r = SeedSchema.safeParse(seed);\n if (!r.success) {\n console.error(\"[qw] invalid seed:\", r.error.format());\n throw new Error(\"invalid seed\");\n }\n return r.data;\n}\n","import { formatHex, parse, rgb } from \"culori\";\n\n/**\n * SeedColorValue — DTCG Color module 结构化颜色(design-tokens.org 2025.10)。\n * Seed 层颜色不再用十六进制字符串:结构化后输出 Web / iOS / Android / Figma\n * 插件 / 文档都更稳定,且支持 oklch 等更高级色彩空间直接作为设计输入。\n *\n * - srgb:components = [r, g, b],各分量 0–1(不是 0–255)。\n * - oklch:components = [l, c, h](l 0–1、c ≥0、h 角度)。\n */\nexport interface SeedColorValue {\n colorSpace: \"srgb\" | \"oklch\";\n components: [number, number, number];\n alpha: number;\n}\n\ntype CuloriColor =\n | { mode: \"rgb\"; r: number; g: number; b: number; alpha?: number }\n | { mode: \"oklch\"; l: number; c: number; h: number; alpha?: number };\n\n/** SeedColorValue → culori 可消费的颜色对象。 */\nexport function toCulori(c: SeedColorValue): CuloriColor {\n if (c.colorSpace === \"srgb\") {\n return { mode: \"rgb\", r: c.components[0], g: c.components[1], b: c.components[2], alpha: c.alpha };\n }\n return { mode: \"oklch\", l: c.components[0], c: c.components[1], h: c.components[2], alpha: c.alpha };\n}\n\n// 6 位小数:精度足以保证 hex → 结构化 → ramp 与直接 hex → ramp 全阶一致。\nconst round6 = (n: number) => Math.round(n * 1000000) / 1000000;\n\n/** 十六进制(#rgb / #rrggbb)→ 结构化 srgb SeedColorValue。编辑器色板输入的桥。 */\nexport function hexToSeedColor(hex: string): SeedColorValue {\n const parsed = rgb(parse(hex));\n if (!parsed) throw new Error(`[qw] 无法解析颜色: ${hex}`);\n return {\n colorSpace: \"srgb\",\n components: [round6(parsed.r), round6(parsed.g), round6(parsed.b)],\n alpha: parsed.alpha ?? 1,\n };\n}\n\n/** 结构化颜色 → #rrggbb(丢 alpha;oklch 会先转 sRGB)。展示/对比度计算用。 */\nexport function seedColorToHex(c: SeedColorValue): string {\n const converted = rgb(toCulori(c));\n if (!converted) throw new Error(`[qw] 无法转换颜色: ${JSON.stringify(c)}`);\n return formatHex(converted) ?? \"#000000\";\n}\n\n/**\n * 结构化颜色 → CSS 颜色字符串。srgb 且不透明输出 hex;srgb 半透明输出\n * `rgb(r g b / a)`;oklch 保持原生 `oklch(l c h / a)`(relative color 派生保真)。\n */\nexport function seedColorToCss(c: SeedColorValue): string {\n if (c.colorSpace === \"oklch\") {\n const [l, ch, h] = c.components;\n return c.alpha >= 1 ? `oklch(${l} ${ch} ${h})` : `oklch(${l} ${ch} ${h} / ${c.alpha})`;\n }\n if (c.alpha >= 1) return seedColorToHex(c);\n const [r, g, b] = c.components.map((v) => Math.round(v * 255));\n return `rgb(${r} ${g} ${b} / ${c.alpha})`;\n}\n","import { oklch, formatHex, clampChroma, parse } from \"culori\";\nimport { toCulori, type SeedColorValue } from \"../color.js\";\n\n/** 10 档 token: 50 / 100 / 200 / ... / 900 */\nexport const STEPS = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900] as const;\nexport type Step = (typeof STEPS)[number];\n\n/**\n * OKLCH L 目标曲线 — 感知均匀的亮度阶梯 (0..1)。\n * 50 最亮 → 900 最暗;端点 0.972 / 0.18 避免纯白纯黑导致对比\"塌\"。\n * (替换原 HSV:HSV 在感知上不均匀,深档发灰/浅档发白,WCAG 易不过。)\n *\n * 导出供 live-css 生成器复用:CSS relative color 语法\n * `oklch(from var(--seed) L calc(c * f) h)` 的 L/f 常量与这里同源。\n */\nexport const L_TARGETS: Record<Step, number> = {\n 50: 0.972,\n 100: 0.94,\n 200: 0.88,\n 300: 0.8,\n 400: 0.7,\n 500: 0.62,\n 600: 0.54,\n 700: 0.45,\n 800: 0.33,\n 900: 0.18,\n};\n\n/**\n * chroma 端点衰减 — 在 L 的亮/暗两端轻微衰减 chroma,避免 out-of-gamut;\n * 中段 (L≈0.6) 保留全 chroma。\n */\nexport function chromaFactor(l: number): number {\n // 距离中点 0.6 越远,衰减越多;端点约保留 55%。\n const d = Math.abs(l - 0.6) / 0.6;\n return 1 - 0.45 * Math.min(1, d);\n}\n\nexport type Ramp = Record<Step, string>;\n\n/**\n * 给一个 seed 颜色(结构化 SeedColorValue 或 CSS 颜色字符串),算 10 阶 ramp。\n * L 走目标曲线,hue 固定,chroma 端点衰减后再 clampChroma 收进 sRGB 色域。\n */\nexport function ramp(seedColor: SeedColorValue | string): Ramp {\n const input = typeof seedColor === \"string\" ? parse(seedColor) : toCulori(seedColor);\n const base = oklch(input);\n if (!base) throw new Error(`[qw] 无法解析颜色: ${JSON.stringify(seedColor)}`);\n const baseC = base.c ?? 0;\n const baseH = base.h ?? 0;\n\n const out = {} as Ramp;\n for (const step of STEPS) {\n const l = L_TARGETS[step];\n const c = baseC * chromaFactor(l);\n const inGamut = clampChroma({ mode: \"oklch\", l, c, h: baseH }, \"oklch\");\n out[step] = formatHex(inGamut) ?? formatHex(base) ?? \"#000000\";\n }\n return out;\n}\n\n/** 相对亮度 (WCAG) — 用于对偶/校验时的对比度判断。 */\nexport function relativeLuminance(hex: string): number {\n const srgb = parse(hex) as { r: number; g: number; b: number } | undefined;\n if (!srgb) return 0;\n const lin = (v: number) => (v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4));\n return 0.2126 * lin(srgb.r) + 0.7152 * lin(srgb.g) + 0.0722 * lin(srgb.b);\n}\n\n/** WCAG 对比度 (1..21)。 */\nexport function contrastRatio(fg: string, bg: string): number {\n const l1 = relativeLuminance(fg);\n const l2 = relativeLuminance(bg);\n const [hi, lo] = l1 > l2 ? [l1, l2] : [l2, l1];\n return (hi + 0.05) / (lo + 0.05);\n}\n","/**\n * T1/T2/T3 token 的 CSS 变量命名:`--qw-{layer}-{kebab(path)}`。\n *\n * `layer` 区分 Seed(\"seed\",仅出现在 live CSS 产物里、供响应式级联的锚点变量)、\n * Reference(\"ref\",原子层,组件禁止直接引用)与 Semantic(\"sem\",组件唯一\n * 合法消费入口)。`path` 的每个 segment 是内部 TS 属性名(天然 camelCase,\n * 如 \"brandSubtle\"/\"controlSize\"),命名前需转成 kebab-case 才能对齐\n * packages/tokens/design/*.tokens.json 里锁定的 cssVar 字符串。\n *\n * 例:toVar(\"sem\", [\"color\",\"surface\",\"brandSubtle\"]) → \"--qw-sem-color-surface-brand-subtle\"\n * toVar(\"sem\", [\"size\",\"controlHeight\",\"sm\"]) → \"--qw-sem-size-control-height-sm\"\n * toVar(\"seed\", [\"color\",\"brand\"]) → \"--qw-seed-color-brand\"\n *\n * 这是唯一命名口子,运行时 flat var map、build-tokens.ts 的 CSS 出口与\n * live CSS 生成器共用。\n */\nexport type Layer = \"seed\" | \"ref\" | \"sem\";\n\nfunction kebab(segment: string): string {\n return segment.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\nexport function toVar(layer: Layer, path: string[]): string {\n return `--qw-${layer}-${path.map(kebab).join(\"-\")}`;\n}\n","import { ramp, L_TARGETS, chromaFactor, type Step } from \"./oklch.js\";\nimport { toVar } from \"./naming.js\";\nimport {\n FIGMA_T2_SOLID_SCALE,\n T1_COLOR_KEYS,\n T2_ALPHA_STEPS,\n T2_OKLCH_STEPS,\n type T1ColorKey,\n type T2OklchStep,\n} from \"../color-architecture.js\";\nimport { seedColorToCss, seedColorToHex, type SeedColorValue } from \"../color.js\";\nimport type { Seed } from \"../schema.js\";\n\n/**\n * T2 Reference(Primitive)派生 —— RFC 0001 §2.1,v3 声明式重构。\n *\n * v3 核心变化:每条 Reference token 的派生规则不再是不透明的 `(seed) => string`\n * 函数,而是可机器读取的 `Derivation` AST——同一份 AST 同时驱动:\n * 1. 运行时求值(evaluateDerivation → tokens);\n * 2. DTCG design 文件生成(scripts/export-design-tokens.ts,$value 全部结构化引用);\n * 3. live CSS 生成(derive/live-css.ts,relative color / calc 表达式);\n * 4. Token Studio 的派生公式展示(formatDerivation)。\n *\n * `seedRefs` 由 AST 自动推导(seedRefsOf),不再手写;可追溯性校验\n * (derive/reference.test.ts)遍历 recipes 断言 seedRefs 非空。\n * 颜色层对齐 Figma `Color/qw` 变量集合:\n * - T1 Seed 为 12 个单色种子;\n * - T2 Reference 为每个 seed 的 A5-A100 Alpha 通道、50-900 OKLCH 设计校准实色色阶、base 引用。\n */\n\nexport type ShadowLevel = \"sm\" | \"md\" | \"lg\";\n\nexport type Derivation =\n /** 直通引用 Seed 字段(dimension/number/duration 字符串或数字)。 */\n | { kind: \"alias\"; seedRef: string }\n /** dimension 字符串 × factor;round:\"int\" 时四舍五入为整数(字号档位用)。 */\n | { kind: \"scale\"; seedRef: string; factor: number; round?: \"int\" }\n /** 无单位数字 × factor(zIndex 刻度)。 */\n | { kind: \"scaleNumber\"; seedRef: string; factor: number }\n /** 无单位数字 + delta(lineHeight tight/relaxed = base ∓ 0.25)。 */\n | { kind: \"offsetNumber\"; seedRef: string; delta: number }\n /** dimension + 另一 dimension × n(controlSize/iconSize sm/lg = base ∓ spacing.step × n)。 */\n | { kind: \"offsetSteps\"; seedRef: string; stepRef: string; n: number }\n /** OKLCH 感知均匀色阶(L 曲线 + chroma 端点衰减,算法见 oklch.ts)。 */\n | { kind: \"oklchRamp\"; seedRef: string; step: Step }\n /** Figma 校准后的 OKLCH 实色色阶;血缘仍指向 T1 seed,但数值由设计稿拍板。 */\n | { kind: \"figmaOklchScale\"; seedRef: string; step: T2OklchStep; value: string }\n /** T1 seed 颜色的固定 Alpha 通道。 */\n | { kind: \"seedAlpha\"; seedRef: string; alpha: number }\n /** 旧版纯黑/纯白透明度工具刻度。保留求值器兼容,不再由 T2 主链路生成。 */\n | { kind: \"alphaScale\"; channel: \"black\" | \"white\"; stepRef: string; multiplier: number }\n /** 字体栈(string[] → CSS font-family 列表)。 */\n | { kind: \"fontStack\"; seedRef: string }\n /** cubic-bezier 四元组 → CSS 函数。 */\n | { kind: \"cubicBezier\"; seedRef: string }\n /** 白名单字面量(色彩空间数学端点,非设计决策)。 */\n | { kind: \"literal\"; value: string }\n /** 阴影档位:形状 = shadow.base × 档位比例,颜色 = alphaStep × 档位倍数。 */\n | { kind: \"shadowLayer\"; level: ShadowLevel };\n\nexport interface ReferenceRecipe {\n path: string[];\n cssVar: string;\n /** 由 derivation 自动推导的 Seed 依赖(点分路径),供可追溯性校验与血缘展示。 */\n seedRefs: string[];\n derivation: Derivation;\n}\n\n/** 拍平后的 CSS 变量映射:cssVar → 字符串值(--qw-ref-* 全集)。 */\nexport type ReferenceTokens = Record<string, string>;\n\n/** 阴影形状(不含颜色),供 Semantic 层复合 effect.shadow.* 时引用固定形状字段。 */\nexport interface ShadowShape {\n offsetX: string;\n offsetY: string;\n blur: string;\n spread: string;\n}\n\nexport interface ReferenceBuild {\n recipes: ReferenceRecipe[];\n tokens: ReferenceTokens;\n shapes: {\n shadow: { sm: ShadowShape; md: ShadowShape; lg: ShadowShape };\n };\n}\n\n/* ------------------------------------------------------------------ */\n/* Seed 取值与格式化工具 */\n/* ------------------------------------------------------------------ */\n\n/** 按点分路径读 Seed 字段(\"size.spacing.step\" → seed.size.spacing.step)。 */\nexport function seedValueAt(seed: Seed, dotted: string): unknown {\n let node: unknown = seed;\n for (const seg of dotted.split(\".\")) {\n if (node == null || typeof node !== \"object\") {\n throw new Error(`[qw] Seed 路径不存在: ${dotted}`);\n }\n node = (node as Record<string, unknown>)[seg];\n }\n if (node === undefined) throw new Error(`[qw] Seed 路径不存在: ${dotted}`);\n return node;\n}\n\nfunction parsePx(s: string): { value: number; unit: string } {\n const m = /^(-?\\d+(?:\\.\\d+)?)(.*)$/.exec(s.trim());\n if (!m) throw new Error(`[qw] 无法解析尺寸: ${s}`);\n return { value: Number(m[1]), unit: m[2] ?? \"\" };\n}\n\nconst round2 = (n: number) => Math.round(n * 100) / 100;\n\nfunction rgba(components: readonly [number, number, number], alpha: number): string {\n return `rgba(${components[0]}, ${components[1]}, ${components[2]}, ${round2(alpha)})`;\n}\n\nfunction hexRgb(hex: string): [number, number, number] {\n const m = /^#?([0-9a-f]{6})$/i.exec(hex);\n if (!m) throw new Error(`[qw] 无法解析 hex 颜色: ${hex}`);\n const n = Number.parseInt(m[1]!, 16);\n return [(n >> 16) & 255, (n >> 8) & 255, n & 255];\n}\n\nfunction seedAlphaCss(seedColor: SeedColorValue, alpha: number): string {\n if (alpha >= 1) return seedColorToCss({ ...seedColor, alpha: 1 });\n return rgba(hexRgb(seedColorToHex(seedColor)), alpha);\n}\n\nexport function formatFontFamily(list: string[]): string {\n return list.map((f) => (/[\\s./]/.test(f) ? `'${f}'` : f)).join(\", \");\n}\n\nfunction formatCubicBezier([a, b, c, d]: readonly [number, number, number, number]): string {\n return `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\n}\n\n/** 阴影档位系数:形状(offset/blur/spread 缩放)+ 颜色(alphaStep 倍数)。 */\nexport const SHADOW_LEVELS: Record<ShadowLevel, { offset: number; blur: number; alphaMult: number }> = {\n sm: { offset: 0.5, blur: 0.5, alphaMult: 2 },\n md: { offset: 2, blur: 3, alphaMult: 3 },\n lg: { offset: 4, blur: 6, alphaMult: 4 },\n};\n\nfunction shadowShapeOf(seed: Seed, level: ShadowLevel): ShadowShape {\n const { offset, blur } = SHADOW_LEVELS[level];\n const base = seed.effect.shadow.base;\n const scale = (s: string, f: number) => {\n const { value, unit } = parsePx(s);\n return `${round2(value * f)}${unit}`;\n };\n return {\n offsetX: scale(base.offsetX, offset),\n offsetY: scale(base.offsetY, offset),\n blur: scale(base.blur, blur),\n spread: scale(base.spread, offset),\n };\n}\n\n/* ------------------------------------------------------------------ */\n/* AST 求值器 / seedRefs 推导 / 公式展示 */\n/* ------------------------------------------------------------------ */\n\n/** 求值:一条 Derivation + Seed → 最终 CSS 值字符串。 */\nexport function evaluateDerivation(d: Derivation, seed: Seed): string {\n switch (d.kind) {\n case \"alias\": {\n const v = seedValueAt(seed, d.seedRef);\n if (v != null && typeof v === \"object\" && \"colorSpace\" in v) {\n return seedColorToCss(v as SeedColorValue);\n }\n return typeof v === \"number\" ? String(v) : (v as string);\n }\n case \"scale\": {\n const { value, unit } = parsePx(seedValueAt(seed, d.seedRef) as string);\n const scaled = value * d.factor;\n return `${d.round === \"int\" ? Math.round(scaled) : round2(scaled)}${unit}`;\n }\n case \"scaleNumber\":\n return String(round2((seedValueAt(seed, d.seedRef) as number) * d.factor));\n case \"offsetNumber\":\n return String(round2((seedValueAt(seed, d.seedRef) as number) + d.delta));\n case \"offsetSteps\": {\n const base = parsePx(seedValueAt(seed, d.seedRef) as string);\n const step = parsePx(seedValueAt(seed, d.stepRef) as string);\n return `${round2(base.value + step.value * d.n)}${base.unit}`;\n }\n case \"oklchRamp\":\n return ramp(seed.color[d.seedRef.split(\".\")[1] as keyof Seed[\"color\"]])[d.step];\n case \"figmaOklchScale\":\n return d.value;\n case \"seedAlpha\":\n return seedAlphaCss(seedValueAt(seed, d.seedRef) as SeedColorValue, d.alpha);\n case \"alphaScale\": {\n const step = seedValueAt(seed, d.stepRef) as number;\n const channel: [number, number, number] = d.channel === \"black\" ? [0, 0, 0] : [255, 255, 255];\n return rgba(channel, step * d.multiplier);\n }\n case \"fontStack\":\n return formatFontFamily(seedValueAt(seed, d.seedRef) as string[]);\n case \"cubicBezier\":\n return formatCubicBezier(seedValueAt(seed, d.seedRef) as [number, number, number, number]);\n case \"literal\":\n return d.value;\n case \"shadowLayer\": {\n const { offsetX, offsetY, blur, spread } = shadowShapeOf(seed, d.level);\n const color = rgba([0, 0, 0], seed.size.opacity.alphaStep * SHADOW_LEVELS[d.level].alphaMult);\n return `${offsetX} ${offsetY} ${blur} ${spread} ${color}`;\n }\n }\n}\n\n/** Seed 依赖推导:AST 里出现的全部 Seed 点分路径。 */\nexport function seedRefsOf(d: Derivation): string[] {\n switch (d.kind) {\n case \"alias\":\n case \"scale\":\n case \"scaleNumber\":\n case \"offsetNumber\":\n case \"oklchRamp\":\n case \"figmaOklchScale\":\n case \"seedAlpha\":\n case \"fontStack\":\n case \"cubicBezier\":\n return [d.seedRef];\n case \"offsetSteps\":\n return [d.seedRef, d.stepRef];\n case \"alphaScale\":\n return [d.stepRef];\n case \"literal\":\n return [];\n case \"shadowLayer\":\n return [\"effect.shadow.base\", \"size.opacity.alphaStep\"];\n }\n}\n\n/** 人读派生公式(Token Studio 展示用)。 */\nexport function formatDerivation(d: Derivation): string {\n const sign = (n: number) => (n >= 0 ? \"+\" : \"−\");\n switch (d.kind) {\n case \"alias\":\n case \"fontStack\":\n case \"cubicBezier\":\n return `= seed.${d.seedRef}`;\n case \"scale\":\n return `= seed.${d.seedRef} × ${d.factor}`;\n case \"scaleNumber\":\n return `= seed.${d.seedRef} × ${d.factor}`;\n case \"offsetNumber\":\n return `= seed.${d.seedRef} ${sign(d.delta)} ${Math.abs(d.delta)}`;\n case \"offsetSteps\":\n return `= seed.${d.seedRef} ${sign(d.n)} seed.${d.stepRef} × ${Math.abs(d.n)}`;\n case \"oklchRamp\":\n return `= oklch(seed.${d.seedRef}) @ L ${L_TARGETS[d.step]} · C × ${round2(chromaFactor(L_TARGETS[d.step]))}`;\n case \"figmaOklchScale\":\n return `= figma Color/qw/t2/${d.seedRef.split(\".\")[1]}/${d.step}(OKLCH 设计校准)`;\n case \"seedAlpha\":\n return `= seed.${d.seedRef} / ${round2(d.alpha * 100)}%`;\n case \"alphaScale\":\n return `= ${d.channel === \"black\" ? \"黑\" : \"白\"} / seed.${d.stepRef} × ${d.multiplier}`;\n case \"literal\":\n return `= ${d.value}(色彩空间端点,白名单字面量)`;\n case \"shadowLayer\": {\n const f = SHADOW_LEVELS[d.level];\n return `= seed.effect.shadow.base 形状 × {offset ${f.offset}, blur ${f.blur}} · 色 = 黑 / alphaStep × ${f.alphaMult}`;\n }\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* 13 组配方(声明式) */\n/* ------------------------------------------------------------------ */\n\nfunction ref(path: string[], derivation: Derivation): ReferenceRecipe {\n return { path, cssVar: toVar(\"ref\", path), seedRefs: seedRefsOf(derivation), derivation };\n}\n\nexport const RAMP_COLORS = T1_COLOR_KEYS;\n\n/** 1. 12 个 Seed ×(A5-A100 Alpha 通道 + 50-900 Figma OKLCH 校准色阶 + base)。 */\nexport function buildColorRampRecipes(): ReferenceRecipe[] {\n const out: ReferenceRecipe[] = [];\n for (const name of RAMP_COLORS) {\n const seedRef = `color.${name}`;\n for (const alpha of T2_ALPHA_STEPS) {\n out.push(ref([\"color\", name, `a${alpha}`], { kind: \"seedAlpha\", seedRef, alpha: alpha / 100 }));\n }\n for (const step of T2_OKLCH_STEPS) {\n out.push(\n ref([\"color\", name, String(step)], {\n kind: \"figmaOklchScale\",\n seedRef,\n step,\n value: FIGMA_T2_SOLID_SCALE[name as T1ColorKey][step],\n }),\n );\n }\n out.push(ref([\"color\", name, \"base\"], { kind: \"alias\", seedRef }));\n }\n return out;\n}\n\n/** @deprecated Figma T2 已不再使用 neutral 0/1000 端点;保留给历史迁移脚本。 */\nexport function buildNeutralEndpointRecipes(): ReferenceRecipe[] {\n return [\n ref([\"color\", \"neutral\", \"0\"], { kind: \"literal\", value: \"#ffffff\" }),\n ref([\"color\", \"neutral\", \"1000\"], { kind: \"literal\", value: \"#000000\" }),\n ];\n}\n\nexport const BLACK_ALPHA: ReadonlyArray<readonly [string, number]> = [\n [\"4\", 1],\n [\"8\", 2],\n [\"12\", 3],\n [\"16\", 4],\n [\"24\", 6],\n [\"32\", 8],\n [\"48\", 12],\n [\"64\", 16],\n];\nexport const WHITE_ALPHA: ReadonlyArray<readonly [string, number]> = [\n [\"8\", 2],\n [\"16\", 4],\n [\"24\", 6],\n [\"32\", 8],\n];\n\n/** @deprecated Figma T2 已改为每个 Seed 自带 Alpha 通道;保留给历史迁移脚本。 */\nexport function buildAlphaScaleRecipes(): ReferenceRecipe[] {\n const out: ReferenceRecipe[] = [];\n for (const [key, mult] of BLACK_ALPHA) {\n out.push(\n ref([\"color\", \"blackAlpha\", key], {\n kind: \"alphaScale\",\n channel: \"black\",\n stepRef: \"size.opacity.alphaStep\",\n multiplier: mult,\n }),\n );\n }\n for (const [key, mult] of WHITE_ALPHA) {\n out.push(\n ref([\"color\", \"whiteAlpha\", key], {\n kind: \"alphaScale\",\n channel: \"white\",\n stepRef: \"size.opacity.alphaStep\",\n multiplier: mult,\n }),\n );\n }\n return out;\n}\n\n/** 4. 间距刻度 = spacing.step × N (N=1..8)。 */\nexport function buildSpacingRecipes(): ReferenceRecipe[] {\n const out: ReferenceRecipe[] = [];\n for (let n = 1; n <= 8; n++) {\n out.push(ref([\"size\", \"spacing\", String(n)], { kind: \"scale\", seedRef: \"size.spacing.step\", factor: n }));\n }\n return out;\n}\n\n/** 圆角档位系数(sm/lg 从 base 派生;默认 base=8px → 4/8/14)。 */\nexport const RADIUS_FACTORS = { sm: 0.5, md: 1, lg: 1.75 } as const;\n\n/** 5. 圆角刻度:sm/md/lg 由 radius.base 按系数派生,full 直通独立裁切基准。 */\nexport function buildRadiusRecipes(): ReferenceRecipe[] {\n return [\n ref([\"size\", \"radius\", \"sm\"], { kind: \"scale\", seedRef: \"size.radius.base\", factor: RADIUS_FACTORS.sm }),\n ref([\"size\", \"radius\", \"md\"], { kind: \"alias\", seedRef: \"size.radius.base\" }),\n ref([\"size\", \"radius\", \"lg\"], { kind: \"scale\", seedRef: \"size.radius.base\", factor: RADIUS_FACTORS.lg }),\n ref([\"size\", \"radius\", \"full\"], { kind: \"alias\", seedRef: \"size.radius.full\" }),\n ];\n}\n\n/** 6. 控件/图标尺寸:md = base 直通,sm/lg = base ∓ spacing.step × n(控件 ×2、图标 ×1)。 */\nexport function buildControlIconSizeRecipes(): ReferenceRecipe[] {\n const step = \"size.spacing.step\";\n return [\n ref([\"size\", \"controlSize\", \"sm\"], { kind: \"offsetSteps\", seedRef: \"size.controlSize.base\", stepRef: step, n: -2 }),\n ref([\"size\", \"controlSize\", \"md\"], { kind: \"alias\", seedRef: \"size.controlSize.base\" }),\n ref([\"size\", \"controlSize\", \"lg\"], { kind: \"offsetSteps\", seedRef: \"size.controlSize.base\", stepRef: step, n: 2 }),\n ref([\"size\", \"iconSize\", \"sm\"], { kind: \"offsetSteps\", seedRef: \"size.iconSize.base\", stepRef: step, n: -1 }),\n ref([\"size\", \"iconSize\", \"md\"], { kind: \"alias\", seedRef: \"size.iconSize.base\" }),\n ref([\"size\", \"iconSize\", \"lg\"], { kind: \"offsetSteps\", seedRef: \"size.iconSize.base\", stepRef: step, n: 1 }),\n ];\n}\n\n/** 7. 描边宽度 —— 直通引用。 */\nexport function buildBorderWidthRecipes(): ReferenceRecipe[] {\n return [ref([\"size\", \"borderWidth\", \"hairline\"], { kind: \"alias\", seedRef: \"size.borderWidth.hairline\" })];\n}\n\n/** 8. 行高(typography 类目):normal 直通 Seed,tight/relaxed = base ∓ 0.25。 */\nexport function buildLineHeightRecipes(): ReferenceRecipe[] {\n return [\n ref([\"typography\", \"lineHeight\", \"tight\"], { kind: \"offsetNumber\", seedRef: \"typography.lineHeight.base\", delta: -0.25 }),\n ref([\"typography\", \"lineHeight\", \"normal\"], { kind: \"alias\", seedRef: \"typography.lineHeight.base\" }),\n ref([\"typography\", \"lineHeight\", \"relaxed\"], { kind: \"offsetNumber\", seedRef: \"typography.lineHeight.base\", delta: 0.25 }),\n ];\n}\n\n/** 9. 禁用态不透明度 —— 直通引用。 */\nexport function buildOpacityRecipes(): ReferenceRecipe[] {\n return [ref([\"size\", \"opacity\", \"disabled\"], { kind: \"alias\", seedRef: \"size.opacity.disabled\" })];\n}\n\n/** 10. 层级刻度 = zIndex.step × N (N=1..4);角色分配交给 Semantic 层。 */\nexport function buildZIndexRecipes(): ReferenceRecipe[] {\n return [1, 2, 3, 4].map((n) =>\n ref([\"size\", \"zIndex\", String(n)], { kind: \"scaleNumber\", seedRef: \"size.zIndex.step\", factor: n }),\n );\n}\n\nexport const FONT_FAMILY_KEYS = [\n \"text\",\n \"number\",\n \"code\",\n \"textMacLatin\",\n \"textMacZh\",\n \"textMacJa\",\n \"textWindowsLatin\",\n \"textWindowsZh\",\n \"textWindowsJa\",\n] as const;\n\n/** 字号档位倍数(沿用既定视觉:14px 基准 → 12/16/20/24)。 */\nexport const FONT_SIZE_FACTORS: Record<string, number> = { sm: 0.857, lg: 1.143, xl: 1.429, \"2xl\": 1.714 };\n\n/** 11. 排版原子:字体族(三族 + 平台/语言变体)/字重直通,字号按既定倍数派生。 */\nexport function buildTypographyRecipes(): ReferenceRecipe[] {\n const out: ReferenceRecipe[] = [];\n for (const key of FONT_FAMILY_KEYS) {\n out.push(ref([\"typography\", \"fontFamily\", key], { kind: \"fontStack\", seedRef: `typography.fontFamily.${key}` }));\n }\n for (const key of [\"regular\", \"medium\", \"semibold\"] as const) {\n out.push(ref([\"typography\", \"fontWeight\", key], { kind: \"alias\", seedRef: `typography.fontWeight.${key}` }));\n }\n out.push(ref([\"typography\", \"fontSize\", \"base\"], { kind: \"alias\", seedRef: \"typography.fontSize.base\" }));\n for (const [key, factor] of Object.entries(FONT_SIZE_FACTORS)) {\n out.push(\n ref([\"typography\", \"fontSize\", key], { kind: \"scale\", seedRef: \"typography.fontSize.base\", factor, round: \"int\" }),\n );\n }\n out.push(ref([\"typography\", \"letterSpacing\", \"base\"], { kind: \"alias\", seedRef: \"typography.letterSpacing.base\" }));\n return out;\n}\n\n/** 动效时长档位倍数。 */\nexport const DURATION_FACTORS = { fast: 0.5, slow: 1.6 } as const;\n\n/** 12. 动效:duration 按倍数派生,easing 直通。 */\nexport function buildMotionRecipes(): ReferenceRecipe[] {\n return [\n ref([\"motion\", \"duration\", \"fast\"], { kind: \"scale\", seedRef: \"motion.duration.base\", factor: DURATION_FACTORS.fast }),\n ref([\"motion\", \"duration\", \"base\"], { kind: \"alias\", seedRef: \"motion.duration.base\" }),\n ref([\"motion\", \"duration\", \"slow\"], { kind: \"scale\", seedRef: \"motion.duration.base\", factor: DURATION_FACTORS.slow }),\n ref([\"motion\", \"easing\", \"standard\"], { kind: \"cubicBezier\", seedRef: \"motion.easing.standard\" }),\n ];\n}\n\n/**\n * 13. 阴影:形状由 effect.shadow.base 按各档位比例缩放,颜色沿用\n * alphaStep 结构锚点。它不是 Figma Color 变量体系里的 T2 颜色 token。\n */\nexport function buildShadowRecipes(): ReferenceRecipe[] {\n return ([\"sm\", \"md\", \"lg\"] as const).map((level) => ref([\"effect\", \"shadow\", level], { kind: \"shadowLayer\", level }));\n}\n\nexport function allReferenceRecipes(): ReferenceRecipe[] {\n return [\n ...buildColorRampRecipes(),\n ...buildSpacingRecipes(),\n ...buildRadiusRecipes(),\n ...buildControlIconSizeRecipes(),\n ...buildBorderWidthRecipes(),\n ...buildLineHeightRecipes(),\n ...buildOpacityRecipes(),\n ...buildZIndexRecipes(),\n ...buildTypographyRecipes(),\n ...buildMotionRecipes(),\n ...buildShadowRecipes(),\n ];\n}\n\n/** T2 顶层入口:喂一个 Seed,产出全量 Reference recipes + 拍平后的 CSS 变量映射 + 阴影形状(供 Semantic 层消费)。 */\nexport function buildReference(seed: Seed): ReferenceBuild {\n const recipes = allReferenceRecipes();\n const tokens: ReferenceTokens = {};\n for (const recipe of recipes) tokens[recipe.cssVar] = evaluateDerivation(recipe.derivation, seed);\n return {\n recipes,\n tokens,\n shapes: {\n shadow: {\n sm: shadowShapeOf(seed, \"sm\"),\n md: shadowShapeOf(seed, \"md\"),\n lg: shadowShapeOf(seed, \"lg\"),\n },\n },\n };\n}\n","import { toVar } from \"./naming.js\";\nimport type { ReferenceBuild, ReferenceTokens, ShadowLevel } from \"./reference.js\";\nimport { FIGMA_T3_COLOR_ROLES } from \"../color-architecture.js\";\n\n/**\n * T3 Semantic 派生 —— RFC 0001 §2.1,v3 修订。\n *\n * R7 类型隔离(强制 FR-010):本模块**不 import `Seed`/`schema.ts`** 任何符号,\n * 只接受 `buildReference()` 的输出(`ReferenceBuild`)。Semantic 角色永远经由\n * Reference 层中转到 Seed,不允许绕过 Reference 直接引用 Seed 字段。\n *\n * v3 变化:全部角色表从模块私有改为导出的结构化元数据(SEMANTIC_ROLES),\n * 供 design 文件生成器(scripts/export-design-tokens.ts)、live CSS 生成器\n * (derive/live-css.ts)与 Token Studio 的血缘展示共用同一份事实。\n */\nexport type SemanticMode = \"light\" | \"dark\";\n\nfunction pick(tokens: ReferenceTokens, dottedRefPath: string): string {\n const v = tokens[toVar(\"ref\", dottedRefPath.split(\".\"))];\n if (v === undefined) throw new Error(`[qw] Semantic 引用了不存在的 Reference token: ${dottedRefPath}`);\n return v;\n}\n\nfunction semVar(path: string[]): string {\n return toVar(\"sem\", path);\n}\n\n/* ------------------------------------------------------------------ */\n/* 结构类角色表(mode 无关) */\n/* ------------------------------------------------------------------ */\n\nexport const RADIUS_ROLES: Record<string, string> = {\n control: \"size.radius.md\",\n card: \"size.radius.lg\",\n pill: \"size.radius.full\",\n full: \"size.radius.full\",\n};\n\nexport const CONTROL_HEIGHT_ROLES: Record<string, string> = {\n sm: \"size.controlSize.sm\",\n md: \"size.controlSize.md\",\n lg: \"size.controlSize.lg\",\n};\n\nexport const ICON_SIZE_ROLES: Record<string, string> = {\n sm: \"size.iconSize.sm\",\n md: \"size.iconSize.md\",\n lg: \"size.iconSize.lg\",\n};\n\nexport const INSET_STACK_ROLES: Record<string, string> = {\n sm: \"size.spacing.2\",\n md: \"size.spacing.4\",\n lg: \"size.spacing.6\",\n};\n\nexport const Z_INDEX_ROLES: Record<string, string> = {\n dropdown: \"size.zIndex.1\",\n sticky: \"size.zIndex.2\",\n overlay: \"size.zIndex.3\",\n toast: \"size.zIndex.4\",\n};\n\nexport const MOTION_DURATION_ROLES: Record<string, string> = {\n fast: \"motion.duration.fast\",\n base: \"motion.duration.base\",\n slow: \"motion.duration.slow\",\n};\n\n/** 字体族角色:text(正文缺省)/ number(数字数据)/ code(等宽)。 */\nexport const FONT_FAMILY_ROLES: Record<string, string> = {\n text: \"typography.fontFamily.text\",\n number: \"typography.fontFamily.number\",\n code: \"typography.fontFamily.code\",\n};\n\nexport interface TypographyRole {\n fontFamilyRef: string;\n fontSizeRef: string;\n fontWeightRef: string;\n lineHeightRef: string;\n letterSpacingRef: string;\n}\n\nconst T_LETTER = \"typography.letterSpacing.base\";\n\n/** typography.* 复合角色:每个字段各自引用 Reference(无任何裸字面量)。 */\nexport const TYPOGRAPHY_ROLES: Record<string, TypographyRole> = {\n body: {\n fontFamilyRef: \"typography.fontFamily.text\",\n fontSizeRef: \"typography.fontSize.base\",\n fontWeightRef: \"typography.fontWeight.regular\",\n lineHeightRef: \"typography.lineHeight.normal\",\n letterSpacingRef: T_LETTER,\n },\n bodyStrong: {\n fontFamilyRef: \"typography.fontFamily.text\",\n fontSizeRef: \"typography.fontSize.base\",\n fontWeightRef: \"typography.fontWeight.medium\",\n lineHeightRef: \"typography.lineHeight.normal\",\n letterSpacingRef: T_LETTER,\n },\n headingSm: {\n fontFamilyRef: \"typography.fontFamily.text\",\n fontSizeRef: \"typography.fontSize.lg\",\n fontWeightRef: \"typography.fontWeight.semibold\",\n lineHeightRef: \"typography.lineHeight.tight\",\n letterSpacingRef: T_LETTER,\n },\n headingMd: {\n fontFamilyRef: \"typography.fontFamily.text\",\n fontSizeRef: \"typography.fontSize.xl\",\n fontWeightRef: \"typography.fontWeight.semibold\",\n lineHeightRef: \"typography.lineHeight.tight\",\n letterSpacingRef: T_LETTER,\n },\n headingLg: {\n fontFamilyRef: \"typography.fontFamily.text\",\n fontSizeRef: \"typography.fontSize.2xl\",\n fontWeightRef: \"typography.fontWeight.semibold\",\n lineHeightRef: \"typography.lineHeight.tight\",\n letterSpacingRef: T_LETTER,\n },\n caption: {\n fontFamilyRef: \"typography.fontFamily.text\",\n fontSizeRef: \"typography.fontSize.sm\",\n fontWeightRef: \"typography.fontWeight.regular\",\n lineHeightRef: \"typography.lineHeight.normal\",\n letterSpacingRef: T_LETTER,\n },\n code: {\n fontFamilyRef: \"typography.fontFamily.code\",\n fontSizeRef: \"typography.fontSize.sm\",\n fontWeightRef: \"typography.fontWeight.regular\",\n lineHeightRef: \"typography.lineHeight.normal\",\n letterSpacingRef: T_LETTER,\n },\n};\n\nexport const TYPOGRAPHY_FIELDS = [\n \"fontFamily\",\n \"fontSize\",\n \"fontWeight\",\n \"lineHeight\",\n \"letterSpacing\",\n] as const;\n\n/* ------------------------------------------------------------------ */\n/* 颜色角色表(light/dark 各自引用 Reference 路径) */\n/* ------------------------------------------------------------------ */\n\nexport interface ColorRoleRefs {\n light: string;\n dark: string;\n}\n\nexport const COLOR_ROLES: Record<string, ColorRoleRefs> = FIGMA_T3_COLOR_ROLES;\n\nexport const SHADOW_COMPOSITE_ROLES: Record<string, ShadowLevel> = {};\n\n/* ------------------------------------------------------------------ */\n/* 血缘元数据(Token Studio / 文档消费) */\n/* ------------------------------------------------------------------ */\n\nexport type SemanticRoleEntry =\n | {\n kind: \"structural\";\n /** Semantic 路径(点分,如 \"size.radius.control\")。 */\n path: string;\n cssVar: string;\n /** 引用的 Reference 路径(点分)。 */\n refPath: string;\n }\n | {\n kind: \"color\";\n path: string;\n cssVar: string;\n refPath: { light: string; dark: string };\n }\n | {\n kind: \"shadowComposite\";\n path: string;\n cssVar: string;\n /** 形状来源(reference.effect.shadow.<level>)+ 颜色来源。 */\n shapeRef: string;\n colorRole: string;\n };\n\n/**\n * 全量 Semantic 角色的结构化血缘表——\"角色 → 引用的 Reference 路径(含 light/dark 分支)\"。\n * 与 buildSemanticStructural/buildSemanticColor 的产出一一对应(顺序一致)。\n */\nexport function semanticRoleEntries(): SemanticRoleEntry[] {\n const out: SemanticRoleEntry[] = [];\n const structural = (path: string[], refPath: string) =>\n out.push({ kind: \"structural\", path: path.join(\".\"), cssVar: semVar(path), refPath });\n\n for (const [role, refPath] of Object.entries(RADIUS_ROLES)) structural([\"size\", \"radius\", role], refPath);\n for (const [role, refPath] of Object.entries(CONTROL_HEIGHT_ROLES)) structural([\"size\", \"controlHeight\", role], refPath);\n for (const [role, refPath] of Object.entries(ICON_SIZE_ROLES)) structural([\"size\", \"iconSize\", role], refPath);\n for (const [role, refPath] of Object.entries(INSET_STACK_ROLES)) {\n structural([\"size\", \"inset\", role], refPath);\n structural([\"size\", \"stack\", role], refPath);\n }\n structural([\"size\", \"opacity\", \"disabled\"], \"size.opacity.disabled\");\n for (const [role, refPath] of Object.entries(Z_INDEX_ROLES)) structural([\"size\", \"zIndex\", role], refPath);\n for (const [role, refPath] of Object.entries(FONT_FAMILY_ROLES)) structural([\"typography\", \"fontFamily\", role], refPath);\n for (const [role, spec] of Object.entries(TYPOGRAPHY_ROLES)) {\n structural([\"typography\", role, \"fontFamily\"], spec.fontFamilyRef);\n structural([\"typography\", role, \"fontSize\"], spec.fontSizeRef);\n structural([\"typography\", role, \"fontWeight\"], spec.fontWeightRef);\n structural([\"typography\", role, \"lineHeight\"], spec.lineHeightRef);\n structural([\"typography\", role, \"letterSpacing\"], spec.letterSpacingRef);\n }\n for (const [role, refPath] of Object.entries(MOTION_DURATION_ROLES)) structural([\"motion\", \"duration\", role], refPath);\n structural([\"motion\", \"easing\", \"standard\"], \"motion.easing.standard\");\n\n for (const [path, refs] of Object.entries(COLOR_ROLES)) {\n const segs = [\"color\", ...path.split(\".\")];\n out.push({ kind: \"color\", path: segs.join(\".\"), cssVar: semVar(segs), refPath: refs });\n }\n for (const [role, level] of Object.entries(SHADOW_COMPOSITE_ROLES)) {\n const segs = [\"effect\", \"shadow\", role];\n out.push({\n kind: \"shadowComposite\",\n path: segs.join(\".\"),\n cssVar: semVar(segs),\n shapeRef: `effect.shadow.${level}`,\n colorRole: \"color.shadow\",\n });\n }\n return out;\n}\n\n/* ------------------------------------------------------------------ */\n/* 求值 */\n/* ------------------------------------------------------------------ */\n\n/**\n * 结构类(mode 无关):尺寸角色 + 字体族角色 + 排版复合角色 + 动效时长/缓动。\n * `effect.shadow.*` 的颜色字段随 mode 变化,归入 `buildSemanticColor`。\n */\nexport function buildSemanticStructural(reference: ReferenceBuild): Record<string, string> {\n const out: Record<string, string> = {};\n const { tokens } = reference;\n for (const entry of semanticRoleEntries()) {\n if (entry.kind !== \"structural\") continue;\n out[entry.cssVar] = pick(tokens, entry.refPath);\n }\n return out;\n}\n\n/**\n * 颜色类(light/dark 分别求值):color.* 全部角色。\n */\nexport function buildSemanticColor(reference: ReferenceBuild, mode: SemanticMode): Record<string, string> {\n const out: Record<string, string> = {};\n const { tokens, shapes } = reference;\n\n for (const entry of semanticRoleEntries()) {\n if (entry.kind !== \"color\") continue;\n out[entry.cssVar] = pick(tokens, entry.refPath[mode]);\n }\n\n const shadowColor = out[semVar([\"color\", \"shadow\"])];\n for (const [role, level] of Object.entries(SHADOW_COMPOSITE_ROLES) as Array<\n [keyof typeof SHADOW_COMPOSITE_ROLES, ShadowLevel]\n >) {\n const shape = shapes.shadow[level];\n out[semVar([\"effect\", \"shadow\", role])] =\n `${shape.offsetX} ${shape.offsetY} ${shape.blur} ${shape.spread} ${shadowColor}`;\n }\n\n return out;\n}\n","import { buildReference } from \"./reference.js\";\nimport { buildSemanticStructural, buildSemanticColor } from \"./semantic.js\";\nimport type { SemanticMode } from \"./semantic.js\";\nimport type { Seed } from \"../schema.js\";\n\nexport { toVar } from \"./naming.js\";\nexport type { Layer } from \"./naming.js\";\nexport { ramp, STEPS, L_TARGETS, chromaFactor, contrastRatio } from \"./oklch.js\";\nexport type { Step, Ramp } from \"./oklch.js\";\nexport type { SemanticMode as Mode } from \"./semantic.js\";\nexport type {\n ReferenceRecipe,\n ReferenceTokens,\n ReferenceBuild,\n Derivation,\n ShadowLevel,\n ShadowShape,\n} from \"./reference.js\";\nexport {\n buildReference,\n allReferenceRecipes,\n evaluateDerivation,\n seedRefsOf,\n formatDerivation,\n seedValueAt,\n RAMP_COLORS,\n BLACK_ALPHA,\n WHITE_ALPHA,\n RADIUS_FACTORS,\n FONT_SIZE_FACTORS,\n DURATION_FACTORS,\n SHADOW_LEVELS,\n FONT_FAMILY_KEYS,\n} from \"./reference.js\";\nexport {\n buildSemanticStructural,\n buildSemanticColor,\n semanticRoleEntries,\n RADIUS_ROLES,\n CONTROL_HEIGHT_ROLES,\n ICON_SIZE_ROLES,\n INSET_STACK_ROLES,\n Z_INDEX_ROLES,\n MOTION_DURATION_ROLES,\n FONT_FAMILY_ROLES,\n TYPOGRAPHY_ROLES,\n TYPOGRAPHY_FIELDS,\n COLOR_ROLES,\n SHADOW_COMPOSITE_ROLES,\n} from \"./semantic.js\";\nexport type { SemanticRoleEntry, ColorRoleRefs, TypographyRole } from \"./semantic.js\";\n\nexport interface DerivedTokens {\n /** 亮色全量 CSS 变量:--qw-ref-* ∪ --qw-sem-*(light 取值)。 */\n light: Record<string, string>;\n /** 暗色全量 CSS 变量:--qw-ref-* ∪ --qw-sem-*(dark 取值)。 */\n dark: Record<string, string>;\n}\n\n/**\n * derive — 单源派生(RFC 0001)。喂一个 Seed,编排 T2 Reference → T3 Semantic,\n * 返回亮/暗两套全量 CSS 变量映射(含 --qw-ref-* 与 --qw-sem-*)。\n * 外部签名/返回值形状与改造前保持一致(FR-014),供 `@qw-ui/react`、`@qw-ui/vue` 的\n * ConfigProvider 直接消费,无需改动。\n *\n * 注意:`validateSeed` 不在此处调用(沿用现状契约),校验是调用方的责任。\n */\nexport function derive(seed: Seed): DerivedTokens {\n const reference = buildReference(seed);\n const structural = buildSemanticStructural(reference);\n const mk = (mode: SemanticMode): Record<string, string> => ({\n ...reference.tokens,\n ...structural,\n ...buildSemanticColor(reference, mode),\n });\n return { light: mk(\"light\"), dark: mk(\"dark\") };\n}\n","import { toVar } from \"./naming.js\";\nimport { L_TARGETS, chromaFactor } from \"./oklch.js\";\nimport { seedColorToCss } from \"../color.js\";\nimport {\n allReferenceRecipes,\n formatFontFamily,\n SHADOW_LEVELS,\n FONT_FAMILY_KEYS,\n type Derivation,\n type ShadowLevel,\n} from \"./reference.js\";\nimport { semanticRoleEntries } from \"./semantic.js\";\nimport type { Seed } from \"../schema.js\";\n\n/**\n * live CSS 生成器 —— dist/tokens.live.css / Token Studio 响应式级联的引擎。\n *\n * 与静态 tokens.css(解析后的字面值,SSR 稳定出口)不同,live CSS 把整棵派生\n * 树翻译成 CSS 原生表达式:\n * - T1 Seed 落为 `--qw-seed-*` 变量(唯一含具体数值的层);\n * - T2 Reference 用 relative color(oklch(from …))/ calc() 从 Seed 变量派生;\n * - T3 Semantic 全部是 `var(--qw-ref-*)` 别名;dark 模式只在暗色选择器下\n * 重映射 sem → 不同的 ref 档位。\n *\n * 于是改一个 `--qw-seed-*`(setProperty 即可),整棵 ref/sem 树由浏览器原生\n * 级联更新,零 JS 重算。依赖现代 CSS(relative color / round()),刻意不做\n * 老浏览器兼容——组件库消费方继续用静态 tokens.css。\n */\n\nconst round4 = (n: number) => Math.round(n * 10000) / 10000;\n\nfunction seedVar(dotted: string): string {\n return toVar(\"seed\", dotted.split(\".\"));\n}\n\n/* ------------------------------------------------------------------ */\n/* T1:Seed → --qw-seed-* 变量表 */\n/* ------------------------------------------------------------------ */\n\n/** Seed 拍平成 `--qw-seed-*` → CSS 值。live CSS 里唯一携带具体数值的层。 */\nexport function seedCssVars(seed: Seed): Record<string, string> {\n const out: Record<string, string> = {};\n for (const [name, value] of Object.entries(seed.color)) {\n out[seedVar(`color.${name}`)] = seedColorToCss(value);\n }\n out[seedVar(\"size.spacing.step\")] = seed.size.spacing.step;\n out[seedVar(\"size.borderWidth.hairline\")] = seed.size.borderWidth.hairline;\n out[seedVar(\"size.radius.base\")] = seed.size.radius.base;\n out[seedVar(\"size.radius.full\")] = seed.size.radius.full;\n out[seedVar(\"size.controlSize.base\")] = seed.size.controlSize.base;\n out[seedVar(\"size.iconSize.base\")] = seed.size.iconSize.base;\n out[seedVar(\"size.opacity.disabled\")] = String(seed.size.opacity.disabled);\n out[seedVar(\"size.opacity.alphaStep\")] = String(seed.size.opacity.alphaStep);\n out[seedVar(\"size.zIndex.step\")] = String(seed.size.zIndex.step);\n for (const key of FONT_FAMILY_KEYS) {\n out[seedVar(`typography.fontFamily.${key}`)] = formatFontFamily(seed.typography.fontFamily[key]);\n }\n out[seedVar(\"typography.fontWeight.regular\")] = String(seed.typography.fontWeight.regular);\n out[seedVar(\"typography.fontWeight.medium\")] = String(seed.typography.fontWeight.medium);\n out[seedVar(\"typography.fontWeight.semibold\")] = String(seed.typography.fontWeight.semibold);\n out[seedVar(\"typography.fontSize.base\")] = seed.typography.fontSize.base;\n out[seedVar(\"typography.lineHeight.base\")] = String(seed.typography.lineHeight.base);\n out[seedVar(\"typography.letterSpacing.base\")] = seed.typography.letterSpacing.base;\n out[seedVar(\"motion.duration.base\")] = seed.motion.duration.base;\n const [a, b, c, d] = seed.motion.easing.standard;\n out[seedVar(\"motion.easing.standard\")] = `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\n out[seedVar(\"effect.shadow.base.offsetX\")] = seed.effect.shadow.base.offsetX;\n out[seedVar(\"effect.shadow.base.offsetY\")] = seed.effect.shadow.base.offsetY;\n out[seedVar(\"effect.shadow.base.blur\")] = seed.effect.shadow.base.blur;\n out[seedVar(\"effect.shadow.base.spread\")] = seed.effect.shadow.base.spread;\n return out;\n}\n\n/* ------------------------------------------------------------------ */\n/* T2:Derivation AST → CSS 表达式 */\n/* ------------------------------------------------------------------ */\n\nfunction shadowShapeExprs(level: ShadowLevel): { offsetX: string; offsetY: string; blur: string; spread: string } {\n const { offset, blur } = SHADOW_LEVELS[level];\n const scale = (field: string, f: number) => `calc(var(${seedVar(`effect.shadow.base.${field}`)}) * ${f})`;\n return {\n offsetX: scale(\"offsetX\", offset),\n offsetY: scale(\"offsetY\", offset),\n blur: scale(\"blur\", blur),\n spread: scale(\"spread\", offset),\n };\n}\n\n/** 一条 Derivation → 引用 `--qw-seed-*` 的 CSS 原生表达式。 */\nexport function derivationToCssExpr(d: Derivation): string {\n switch (d.kind) {\n case \"alias\":\n case \"fontStack\":\n case \"cubicBezier\":\n return `var(${seedVar(d.seedRef)})`;\n case \"scale\": {\n const expr = `calc(var(${seedVar(d.seedRef)}) * ${d.factor})`;\n return d.round === \"int\" ? `round(nearest, ${expr}, 1px)` : expr;\n }\n case \"scaleNumber\":\n return `calc(var(${seedVar(d.seedRef)}) * ${d.factor})`;\n case \"offsetNumber\":\n return `calc(var(${seedVar(d.seedRef)}) ${d.delta >= 0 ? \"+\" : \"-\"} ${Math.abs(d.delta)})`;\n case \"offsetSteps\":\n return `calc(var(${seedVar(d.seedRef)}) ${d.n >= 0 ? \"+\" : \"-\"} var(${seedVar(d.stepRef)}) * ${Math.abs(d.n)})`;\n case \"oklchRamp\": {\n const l = L_TARGETS[d.step];\n const f = round4(chromaFactor(l));\n return `oklch(from var(${seedVar(d.seedRef)}) ${l} calc(c * ${f}) h)`;\n }\n case \"figmaOklchScale\":\n return d.value;\n case \"seedAlpha\":\n return `rgb(from var(${seedVar(d.seedRef)}) r g b / ${round4(d.alpha)})`;\n case \"alphaScale\": {\n const channel = d.channel === \"black\" ? \"0 0 0\" : \"255 255 255\";\n return `rgb(${channel} / calc(var(${seedVar(d.stepRef)}) * ${d.multiplier}))`;\n }\n case \"literal\":\n return d.value;\n case \"shadowLayer\": {\n const s = shadowShapeExprs(d.level);\n const alpha = `calc(var(${seedVar(\"size.opacity.alphaStep\")}) * ${SHADOW_LEVELS[d.level].alphaMult})`;\n return `${s.offsetX} ${s.offsetY} ${s.blur} ${s.spread} rgb(0 0 0 / ${alpha})`;\n }\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* 组装 */\n/* ------------------------------------------------------------------ */\n\nexport interface LiveCssOptions {\n /** 亮色作用域选择器,默认 \":root\"。 */\n selector?: string;\n /** 暗色作用域选择器,默认 '[data-qw-mode=\"dark\"]'。 */\n darkSelector?: string;\n}\n\nfunction block(selector: string, decls: Array<[string, string]>): string {\n return `${selector} {\\n${decls.map(([k, v]) => ` ${k}: ${v};`).join(\"\\n\")}\\n}\\n`;\n}\n\n/**\n * 生成整份 live CSS:\n * 1. seed 块(具体数值);2. ref 块(表达式派生);3. sem 块(light 别名);\n * 4. dark 块(仅重映射随 mode 变化的 sem 颜色别名)。\n */\nexport function buildLiveCss(seed: Seed, options: LiveCssOptions = {}): string {\n const selector = options.selector ?? \":root\";\n const darkSelector = options.darkSelector ?? '[data-qw-mode=\"dark\"]';\n\n const seedDecls = Object.entries(seedCssVars(seed));\n\n const refDecls: Array<[string, string]> = allReferenceRecipes().map((r) => [\n r.cssVar,\n derivationToCssExpr(r.derivation),\n ]);\n\n const semLight: Array<[string, string]> = [];\n const semDark: Array<[string, string]> = [];\n for (const entry of semanticRoleEntries()) {\n if (entry.kind === \"structural\") {\n semLight.push([entry.cssVar, `var(${toVar(\"ref\", entry.refPath.split(\".\"))})`]);\n } else if (entry.kind === \"color\") {\n semLight.push([entry.cssVar, `var(${toVar(\"ref\", entry.refPath.light.split(\".\"))})`]);\n if (entry.refPath.dark !== entry.refPath.light) {\n semDark.push([entry.cssVar, `var(${toVar(\"ref\", entry.refPath.dark.split(\".\"))})`]);\n }\n } else {\n // shadow 复合:形状表达式 + mode 感知的 sem 颜色(dark 无需重复,颜色变量自己会变)。\n const level = entry.shapeRef.split(\".\").pop() as ShadowLevel;\n const s = shadowShapeExprs(level);\n semLight.push([\n entry.cssVar,\n `${s.offsetX} ${s.offsetY} ${s.blur} ${s.spread} var(${toVar(\"sem\", entry.colorRole.split(\".\"))})`,\n ]);\n }\n }\n\n return [\n \"/* @qw-ui/tokens live — Seed 变量驱动的响应式派生树(relative color / calc),请勿手改。\",\n \" 改 --qw-seed-* 即级联整棵 ref/sem 树;需要现代浏览器,组件库消费方请用静态 tokens.css。 */\",\n block(selector, [...seedDecls, ...refDecls, ...semLight]),\n block(darkSelector, semDark),\n ].join(\"\\n\");\n}\n"]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/seed/index.json","../src/color-architecture.ts","../src/seed/index.ts","../src/schema.ts","../src/color.ts","../src/derive/oklch.ts","../src/derive/naming.ts","../src/derive/reference.ts","../src/derive/semantic.ts","../src/derive/index.ts","../src/derive/live-css.ts","../src/compat/schema.ts","../src/compat/color.ts","../src/compat/build.ts"],"sourcesContent":["","export const FIGMA_COLOR_COLLECTION = \"Color\";\nexport const FIGMA_COLOR_PREFIX = \"qw\";\n\nexport const T1_COLOR_KEYS = [\n \"brand\",\n \"black\",\n \"white\",\n \"gray\",\n \"red\",\n \"orange\",\n \"yellow\",\n \"green\",\n \"cyan\",\n \"blue\",\n \"purple\",\n \"brown\",\n] as const;\n\nexport type T1ColorKey = (typeof T1_COLOR_KEYS)[number];\n\nexport const FIGMA_T1_SEED_HEX: Record<T1ColorKey, string> = {\n brand: \"#0011FF\",\n black: \"#222222\",\n white: \"#FFFFFF\",\n gray: \"#999999\",\n red: \"#FF4040\",\n orange: \"#FF6B3F\",\n yellow: \"#FFD575\",\n green: \"#1F993F\",\n cyan: \"#29BECC\",\n blue: \"#0D53FF\",\n purple: \"#432CDB\",\n brown: \"#B45E06\",\n};\n\nexport const T2_ALPHA_STEPS = [5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100] as const;\nexport const T2_ALPHA_KEYS = T2_ALPHA_STEPS.map((step) => `a${step}`) as [\n \"a5\",\n \"a10\",\n \"a20\",\n \"a30\",\n \"a40\",\n \"a50\",\n \"a60\",\n \"a70\",\n \"a80\",\n \"a90\",\n \"a100\",\n];\n\nexport type T2AlphaStep = (typeof T2_ALPHA_STEPS)[number];\nexport type T2AlphaKey = (typeof T2_ALPHA_KEYS)[number];\n\nexport const T2_OKLCH_STEPS = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900] as const;\nexport type T2OklchStep = (typeof T2_OKLCH_STEPS)[number];\n\nexport const FIGMA_T2_SOLID_SCALE: Record<T1ColorKey, Record<T2OklchStep, string>> = {\n brand: {\n 50: \"#F2F6FF\",\n 100: \"#E6ECFF\",\n 200: \"#C4D8FF\",\n 300: \"#9DBDFF\",\n 400: \"#6C9AFF\",\n 500: \"#426EFF\",\n 600: \"#1B57FF\",\n 700: \"#002CE8\",\n 800: \"#001A99\",\n 900: \"#000540\",\n },\n black: {\n 50: \"#F6F6F6\",\n 100: \"#EBEBEB\",\n 200: \"#D7D7D7\",\n 300: \"#BEBEBE\",\n 400: \"#9E9E9E\",\n 500: \"#868686\",\n 600: \"#6F6F6F\",\n 700: \"#555555\",\n 800: \"#353535\",\n 900: \"#121212\",\n },\n white: {\n 50: \"#F6F6F6\",\n 100: \"#EBEBEB\",\n 200: \"#D7D7D7\",\n 300: \"#BEBEBE\",\n 400: \"#9E9E9E\",\n 500: \"#868686\",\n 600: \"#6F6F6F\",\n 700: \"#555555\",\n 800: \"#353535\",\n 900: \"#121212\",\n },\n gray: {\n 50: \"#F6F6F6\",\n 100: \"#EEEEEE\",\n 200: \"#E0E0E0\",\n 300: \"#CCCCCC\",\n 400: \"#A2A9B6\",\n 500: \"#888E99\",\n 600: \"#666666\",\n 700: \"#3A3A3A\",\n 800: \"#2D2D2D\",\n 900: \"#202020\",\n },\n red: {\n 50: \"#FFF3F1\",\n 100: \"#FFE7E4\",\n 200: \"#FFC8C2\",\n 300: \"#FFA097\",\n 400: \"#FF5745\",\n 500: \"#FF4D4D\",\n 600: \"#CF081E\",\n 700: \"#A30013\",\n 800: \"#6A0009\",\n 900: \"#2A0001\",\n },\n orange: {\n 50: \"#FFF3EF\",\n 100: \"#FFE5DD\",\n 200: \"#FFC9B9\",\n 300: \"#FFA287\",\n 400: \"#F76F47\",\n 500: \"#FF764D\",\n 600: \"#C03800\",\n 700: \"#962A00\",\n 800: \"#611800\",\n 900: \"#260500\",\n },\n yellow: {\n 50: \"#FFF5DF\",\n 100: \"#FFE9B9\",\n 200: \"#F4D38B\",\n 300: \"#DCB96B\",\n 400: \"#BE9940\",\n 500: \"#A78013\",\n 600: \"#8B6900\",\n 700: \"#6C5100\",\n 800: \"#453200\",\n 900: \"#191000\",\n },\n green: {\n 50: \"#E2FFE4\",\n 100: \"#BCFFC3\",\n 200: \"#9BEFA5\",\n 300: \"#7BD688\",\n 400: \"#52B764\",\n 500: \"#2C9F47\",\n 600: \"#068631\",\n 700: \"#006823\",\n 800: \"#004213\",\n 900: \"#001704\",\n },\n cyan: {\n 50: \"#E0FCFF\",\n 100: \"#BAF8FF\",\n 200: \"#91EAF2\",\n 300: \"#65D0DC\",\n 400: \"#2FB2BE\",\n 500: \"#0098A4\",\n 600: \"#007E88\",\n 700: \"#006169\",\n 800: \"#003D43\",\n 900: \"#001518\",\n },\n blue: {\n 50: \"#EBF5FF\",\n 100: \"#E7F1FF\",\n 200: \"#D6EBFF\",\n 300: \"#9CBEFF\",\n 400: \"#3086FF\",\n 500: \"#1677FF\",\n 600: \"#266FFF\",\n 700: \"#003DB8\",\n 800: \"#001D66\",\n 900: \"#000A3A\",\n },\n purple: {\n 50: \"#F3F5FF\",\n 100: \"#E6EAFF\",\n 200: \"#CDD5FF\",\n 300: \"#A699FF\",\n 400: \"#8692FF\",\n 500: \"#6B71FF\",\n 600: \"#5550F2\",\n 700: \"#4135C9\",\n 800: \"#280B96\",\n 900: \"#0C0041\",\n },\n brown: {\n 50: \"#FFF3EC\",\n 100: \"#FFE6D5\",\n 200: \"#FFCBA8\",\n 300: \"#F8A971\",\n 400: \"#DA8749\",\n 500: \"#C36D24\",\n 600: \"#A75600\",\n 700: \"#824100\",\n 800: \"#542800\",\n 900: \"#200B00\",\n },\n};\n\nexport const FIGMA_T3_COLOR_ROLES = {\n \"surface.base\": { light: \"color.white.base\", dark: \"color.black.base\" },\n \"surface.subtle\": { light: \"color.gray.50\", dark: \"color.gray.900\" },\n \"surface.elevated\": { light: \"color.white.base\", dark: \"color.gray.800\" },\n \"surface.header\": { light: \"color.gray.100\", dark: \"color.gray.700\" },\n \"surface.brand-subtle\": { light: \"color.blue.50\", dark: \"color.blue.800\" },\n\n \"content.primary\": { light: \"color.black.base\", dark: \"color.white.base\" },\n \"content.secondary\": { light: \"color.gray.600\", dark: \"color.gray.base\" },\n \"content.tertiary\": { light: \"color.gray.base\", dark: \"color.gray.600\" },\n \"content.placeholder\": { light: \"color.gray.300\", dark: \"color.white.a30\" },\n \"content.intro\": { light: \"color.gray.400\", dark: \"color.gray.500\" },\n\n \"border.default\": { light: \"color.gray.100\", dark: \"color.gray.700\" },\n \"border.strong\": { light: \"color.gray.300\", dark: \"color.gray.600\" },\n \"border.focus\": { light: \"color.brand.base\", dark: \"color.brand.500\" },\n\n \"fill.subtle\": { light: \"color.gray.50\", dark: \"color.white.a20\" },\n \"fill.hover\": { light: \"color.gray.100\", dark: \"color.gray.800\" },\n \"fill.active\": { light: \"color.blue.50\", dark: \"color.blue.800\" },\n \"fill.disabled\": { light: \"color.gray.50\", dark: \"color.gray.900\" },\n\n \"action.brand\": { light: \"color.brand.base\", dark: \"color.brand.500\" },\n \"action.product\": { light: \"color.blue.base\", dark: \"color.blue.600\" },\n \"action.selected\": { light: \"color.blue.a20\", dark: \"color.blue.a40\" },\n \"action.inverse\": { light: \"color.white.base\", dark: \"color.black.base\" },\n\n \"status.success\": { light: \"color.green.base\", dark: \"color.green.base\" },\n \"status.warning\": { light: \"color.yellow.base\", dark: \"color.yellow.base\" },\n \"status.danger\": { light: \"color.red.400\", dark: \"color.red.400\" },\n \"status.info\": { light: \"color.blue.base\", dark: \"color.blue.600\" },\n\n \"overlay.scrim\": { light: \"color.black.a50\", dark: \"color.black.a70\" },\n \"overlay.guide\": { light: \"color.black.a70\", dark: \"color.black.a70\" },\n} as const;\n","import raw from \"./index.json\" with { type: \"json\" };\nimport { T1_COLOR_KEYS } from \"../color-architecture.js\";\nimport type { Seed } from \"../schema.js\";\nimport type { SeedColorValue } from \"../color.js\";\n\n/**\n * 把设计交付的 DTCG seed (嵌套 $value,五大类目) 拍平成 derive() 可消费的\n * Seed 形状。DTCG 是设计/Figma 的事实来源;这里是工程读取它的唯一入口。\n * 数值与 packages/tokens/design/seed.tokens.json 逐条一致(parity 测试保证不漂移)。\n */\nconst s = raw.qw.seed;\n\ntype Dimension = { value: number; unit: string };\nconst px = (d: Dimension) => `${d.value}${d.unit}`;\nconst color = (v: unknown) => v as SeedColorValue;\n\nexport const defaultSeed: Seed = {\n color: Object.fromEntries(T1_COLOR_KEYS.map((key) => [key, color(s.color[key].$value)])) as Seed[\"color\"],\n size: {\n spacing: {\n step: px(s.size.spacing.step.$value),\n },\n borderWidth: {\n hairline: px(s.size.borderWidth.hairline.$value),\n },\n radius: {\n base: px(s.size.radius.base.$value),\n full: px(s.size.radius.full.$value),\n },\n controlSize: {\n base: px(s.size.controlSize.base.$value),\n },\n iconSize: {\n base: px(s.size.iconSize.base.$value),\n },\n opacity: {\n disabled: s.size.opacity.disabled.$value,\n alphaStep: s.size.opacity.alphaStep.$value,\n },\n zIndex: {\n step: s.size.zIndex.step.$value,\n },\n },\n typography: {\n fontFamily: {\n text: s.typography.fontFamily.text.$value,\n number: s.typography.fontFamily.number.$value,\n code: s.typography.fontFamily.code.$value,\n textMacLatin: s.typography.fontFamily.textMacLatin.$value,\n textMacZh: s.typography.fontFamily.textMacZh.$value,\n textMacJa: s.typography.fontFamily.textMacJa.$value,\n textWindowsLatin: s.typography.fontFamily.textWindowsLatin.$value,\n textWindowsZh: s.typography.fontFamily.textWindowsZh.$value,\n textWindowsJa: s.typography.fontFamily.textWindowsJa.$value,\n },\n fontWeight: {\n regular: s.typography.fontWeight.regular.$value,\n medium: s.typography.fontWeight.medium.$value,\n semibold: s.typography.fontWeight.semibold.$value,\n },\n fontSize: {\n base: px(s.typography.fontSize.base.$value),\n },\n lineHeight: {\n base: s.typography.lineHeight.base.$value,\n },\n letterSpacing: {\n base: px(s.typography.letterSpacing.base.$value),\n },\n },\n motion: {\n duration: {\n base: px(s.motion.duration.base.$value),\n },\n easing: {\n standard: s.motion.easing.standard.$value as [number, number, number, number],\n },\n },\n effect: {\n shadow: {\n base: {\n color: color(s.effect.shadow.base.$value.color),\n offsetX: px(s.effect.shadow.base.$value.offsetX),\n offsetY: px(s.effect.shadow.base.$value.offsetY),\n blur: px(s.effect.shadow.base.$value.blur),\n spread: px(s.effect.shadow.base.$value.spread),\n },\n },\n },\n};\n","import { z } from \"zod\";\nimport { T1_COLOR_KEYS } from \"./color-architecture.js\";\n\n/**\n * seedColor — DTCG Color module 结构化颜色(不再接受十六进制字符串)。\n * - srgb:components 各分量 0–1(写 0–255 会被拒绝,这是常见错误)。\n * - oklch:l 0–1、c ≥0、h 为角度;用于\"设计师直接以感知空间拍板\"的输入。\n */\nconst seedColor = z\n .object({\n colorSpace: z.enum([\"srgb\", \"oklch\"]),\n components: z.tuple([z.number(), z.number(), z.number()]),\n alpha: z.number().min(0).max(1),\n })\n .superRefine((c, ctx) => {\n if (c.colorSpace === \"srgb\") {\n if (c.components.some((v) => v < 0 || v > 1)) {\n ctx.addIssue({\n code: \"custom\",\n message: \"srgb components 必须是 0–1(不是 0–255),例如 #0011ff → [0, 0.0667, 1]\",\n });\n }\n } else {\n const [l, chroma] = c.components;\n if (l < 0 || l > 1 || chroma < 0) {\n ctx.addIssue({ code: \"custom\", message: \"oklch 要求 l ∈ [0,1] 且 c ≥ 0\" });\n }\n }\n });\n\nconst cubicBezier = z.tuple([z.number(), z.number(), z.number(), z.number()]);\n\nconst fontStack = z.array(z.string()).min(1);\nconst colorSeedShape = Object.fromEntries(T1_COLOR_KEYS.map((key) => [key, seedColor])) as Record<\n (typeof T1_COLOR_KEYS)[number],\n typeof seedColor\n>;\n\n/**\n * SeedSchema — T1 Seed 的唯一事实源校验(RFC 0001 §2.1,v3 修订)。\n *\n * 五大类目 color/size/typography/motion/effect,字段结构对齐\n * packages/tokens/design/seed.tokens.json,全部字段必填——不允许省略后静默\n * 回退默认值,锚点缺口必须在 Seed 层显式补齐,Reference 层不得用硬编码兜底。\n *\n * v3 变化:\n * - 颜色全部结构化(DTCG Color module,支持 srgb/oklch)。\n * - radius/controlSize/iconSize 只留 base 锚点(full 是独立的裁切基准决策),\n * sm/lg 由 Reference 层按既定公式派生。\n * - lineHeight 从 size 移入 typography;新增 letterSpacing.base 锚点。\n * - fontFamily 换 text/number/code 三族 + 平台/语言变体(textMacXx、textWindowsXx)。\n */\nexport const SeedSchema = z.object({\n color: z.object(colorSeedShape),\n size: z.object({\n spacing: z.object({\n step: z.string(),\n }),\n borderWidth: z.object({\n hairline: z.string(),\n }),\n radius: z.object({\n /** 控件基准圆角;Reference 派生 sm=×0.5 / md=×1 / lg=×1.75。 */\n base: z.string(),\n /** 药丸/圆形裁切基准(独立设计决策,不从 base 派生)。 */\n full: z.string(),\n }),\n controlSize: z.object({\n /** md 控件高度锚点;sm/lg = base ∓ spacing.step × 2。 */\n base: z.string(),\n }),\n iconSize: z.object({\n /** md 图标尺寸锚点;sm/lg = base ∓ spacing.step。 */\n base: z.string(),\n }),\n opacity: z.object({\n disabled: z.number().min(0).max(1),\n alphaStep: z.number().min(0).max(1),\n }),\n zIndex: z.object({\n step: z.number().int().positive(),\n }),\n }),\n typography: z.object({\n fontFamily: z.object({\n /** 通用正文栈(跨平台缺省)。 */\n text: fontStack,\n /** 数字/数据展示栈。 */\n number: fontStack,\n /** 代码等宽栈。 */\n code: fontStack,\n /** 平台/语言细分变体,供上层按 UA/lang 重映射 text 角色。 */\n textMacLatin: fontStack,\n textMacZh: fontStack,\n textMacJa: fontStack,\n textWindowsLatin: fontStack,\n textWindowsZh: fontStack,\n textWindowsJa: fontStack,\n }),\n fontWeight: z.object({\n regular: z.number(),\n medium: z.number(),\n semibold: z.number(),\n }),\n fontSize: z.object({\n base: z.string(),\n }),\n lineHeight: z.object({\n base: z.number().positive(),\n }),\n letterSpacing: z.object({\n base: z.string(),\n }),\n }),\n motion: z.object({\n duration: z.object({\n base: z.string(),\n }),\n easing: z.object({\n standard: cubicBezier,\n }),\n }),\n effect: z.object({\n shadow: z.object({\n base: z.object({\n color: seedColor,\n offsetX: z.string(),\n offsetY: z.string(),\n blur: z.string(),\n spread: z.string(),\n }),\n }),\n }),\n});\n\nexport type SeedInput = z.input<typeof SeedSchema>;\nexport type Seed = z.infer<typeof SeedSchema>;\n\n/**\n * validateSeed — ConfigProvider 在 dev 模式调用;生产环境可裁掉,不带 zod 体积。\n * 解析失败抛错,错误信息直接定位到字段。\n */\nexport function validateSeed(seed: unknown): Seed {\n const r = SeedSchema.safeParse(seed);\n if (!r.success) {\n console.error(\"[qw] invalid seed:\", r.error.format());\n throw new Error(\"invalid seed\");\n }\n return r.data;\n}\n","import { formatHex, parse, rgb } from \"culori\";\n\n/**\n * SeedColorValue — DTCG Color module 结构化颜色(design-tokens.org 2025.10)。\n * Seed 层颜色不再用十六进制字符串:结构化后输出 Web / iOS / Android / Figma\n * 插件 / 文档都更稳定,且支持 oklch 等更高级色彩空间直接作为设计输入。\n *\n * - srgb:components = [r, g, b],各分量 0–1(不是 0–255)。\n * - oklch:components = [l, c, h](l 0–1、c ≥0、h 角度)。\n */\nexport interface SeedColorValue {\n colorSpace: \"srgb\" | \"oklch\";\n components: [number, number, number];\n alpha: number;\n}\n\ntype CuloriColor =\n | { mode: \"rgb\"; r: number; g: number; b: number; alpha?: number }\n | { mode: \"oklch\"; l: number; c: number; h: number; alpha?: number };\n\n/** SeedColorValue → culori 可消费的颜色对象。 */\nexport function toCulori(c: SeedColorValue): CuloriColor {\n if (c.colorSpace === \"srgb\") {\n return { mode: \"rgb\", r: c.components[0], g: c.components[1], b: c.components[2], alpha: c.alpha };\n }\n return { mode: \"oklch\", l: c.components[0], c: c.components[1], h: c.components[2], alpha: c.alpha };\n}\n\n// 6 位小数:精度足以保证 hex → 结构化 → ramp 与直接 hex → ramp 全阶一致。\nconst round6 = (n: number) => Math.round(n * 1000000) / 1000000;\n\n/** 十六进制(#rgb / #rrggbb)→ 结构化 srgb SeedColorValue。编辑器色板输入的桥。 */\nexport function hexToSeedColor(hex: string): SeedColorValue {\n const parsed = rgb(parse(hex));\n if (!parsed) throw new Error(`[qw] 无法解析颜色: ${hex}`);\n return {\n colorSpace: \"srgb\",\n components: [round6(parsed.r), round6(parsed.g), round6(parsed.b)],\n alpha: parsed.alpha ?? 1,\n };\n}\n\n/** 结构化颜色 → #rrggbb(丢 alpha;oklch 会先转 sRGB)。展示/对比度计算用。 */\nexport function seedColorToHex(c: SeedColorValue): string {\n const converted = rgb(toCulori(c));\n if (!converted) throw new Error(`[qw] 无法转换颜色: ${JSON.stringify(c)}`);\n return formatHex(converted) ?? \"#000000\";\n}\n\n/**\n * 结构化颜色 → CSS 颜色字符串。srgb 且不透明输出 hex;srgb 半透明输出\n * `rgb(r g b / a)`;oklch 保持原生 `oklch(l c h / a)`(relative color 派生保真)。\n */\nexport function seedColorToCss(c: SeedColorValue): string {\n if (c.colorSpace === \"oklch\") {\n const [l, ch, h] = c.components;\n return c.alpha >= 1 ? `oklch(${l} ${ch} ${h})` : `oklch(${l} ${ch} ${h} / ${c.alpha})`;\n }\n if (c.alpha >= 1) return seedColorToHex(c);\n const [r, g, b] = c.components.map((v) => Math.round(v * 255));\n return `rgb(${r} ${g} ${b} / ${c.alpha})`;\n}\n","import { oklch, formatHex, clampChroma, parse } from \"culori\";\nimport { toCulori, type SeedColorValue } from \"../color.js\";\n\n/** 10 档 token: 50 / 100 / 200 / ... / 900 */\nexport const STEPS = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900] as const;\nexport type Step = (typeof STEPS)[number];\n\n/**\n * OKLCH L 目标曲线 — 感知均匀的亮度阶梯 (0..1)。\n * 50 最亮 → 900 最暗;端点 0.972 / 0.18 避免纯白纯黑导致对比\"塌\"。\n * (替换原 HSV:HSV 在感知上不均匀,深档发灰/浅档发白,WCAG 易不过。)\n *\n * 导出供 live-css 生成器复用:CSS relative color 语法\n * `oklch(from var(--seed) L calc(c * f) h)` 的 L/f 常量与这里同源。\n */\nexport const L_TARGETS: Record<Step, number> = {\n 50: 0.972,\n 100: 0.94,\n 200: 0.88,\n 300: 0.8,\n 400: 0.7,\n 500: 0.62,\n 600: 0.54,\n 700: 0.45,\n 800: 0.33,\n 900: 0.18,\n};\n\n/**\n * chroma 端点衰减 — 在 L 的亮/暗两端轻微衰减 chroma,避免 out-of-gamut;\n * 中段 (L≈0.6) 保留全 chroma。\n */\nexport function chromaFactor(l: number): number {\n // 距离中点 0.6 越远,衰减越多;端点约保留 55%。\n const d = Math.abs(l - 0.6) / 0.6;\n return 1 - 0.45 * Math.min(1, d);\n}\n\nexport type Ramp = Record<Step, string>;\n\n/**\n * 给一个 seed 颜色(结构化 SeedColorValue 或 CSS 颜色字符串),算 10 阶 ramp。\n * L 走目标曲线,hue 固定,chroma 端点衰减后再 clampChroma 收进 sRGB 色域。\n */\nexport function ramp(seedColor: SeedColorValue | string): Ramp {\n const input = typeof seedColor === \"string\" ? parse(seedColor) : toCulori(seedColor);\n const base = oklch(input);\n if (!base) throw new Error(`[qw] 无法解析颜色: ${JSON.stringify(seedColor)}`);\n const baseC = base.c ?? 0;\n const baseH = base.h ?? 0;\n\n const out = {} as Ramp;\n for (const step of STEPS) {\n const l = L_TARGETS[step];\n const c = baseC * chromaFactor(l);\n const inGamut = clampChroma({ mode: \"oklch\", l, c, h: baseH }, \"oklch\");\n out[step] = formatHex(inGamut) ?? formatHex(base) ?? \"#000000\";\n }\n return out;\n}\n\n/** 相对亮度 (WCAG) — 用于对偶/校验时的对比度判断。 */\nexport function relativeLuminance(hex: string): number {\n const srgb = parse(hex) as { r: number; g: number; b: number } | undefined;\n if (!srgb) return 0;\n const lin = (v: number) => (v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4));\n return 0.2126 * lin(srgb.r) + 0.7152 * lin(srgb.g) + 0.0722 * lin(srgb.b);\n}\n\n/** WCAG 对比度 (1..21)。 */\nexport function contrastRatio(fg: string, bg: string): number {\n const l1 = relativeLuminance(fg);\n const l2 = relativeLuminance(bg);\n const [hi, lo] = l1 > l2 ? [l1, l2] : [l2, l1];\n return (hi + 0.05) / (lo + 0.05);\n}\n","/**\n * T1/T2/T3 token 的 CSS 变量命名:`--qw-{layer}-{kebab(path)}`。\n *\n * `layer` 区分 Seed(\"seed\",仅出现在 live CSS 产物里、供响应式级联的锚点变量)、\n * Reference(\"ref\",原子层,组件禁止直接引用)与 Semantic(\"sem\",组件唯一\n * 合法消费入口)。`path` 的每个 segment 是内部 TS 属性名(天然 camelCase,\n * 如 \"brandSubtle\"/\"controlSize\"),命名前需转成 kebab-case 才能对齐\n * packages/tokens/design/*.tokens.json 里锁定的 cssVar 字符串。\n *\n * 例:toVar(\"sem\", [\"color\",\"surface\",\"brandSubtle\"]) → \"--qw-sem-color-surface-brand-subtle\"\n * toVar(\"sem\", [\"size\",\"controlHeight\",\"sm\"]) → \"--qw-sem-size-control-height-sm\"\n * toVar(\"seed\", [\"color\",\"brand\"]) → \"--qw-seed-color-brand\"\n *\n * 这是唯一命名口子,运行时 flat var map、build-tokens.ts 的 CSS 出口与\n * live CSS 生成器共用。\n */\nexport type Layer = \"seed\" | \"ref\" | \"sem\";\n\nfunction kebab(segment: string): string {\n return segment.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\nexport function toVar(layer: Layer, path: string[]): string {\n return `--qw-${layer}-${path.map(kebab).join(\"-\")}`;\n}\n","import { ramp, L_TARGETS, chromaFactor, type Step } from \"./oklch.js\";\nimport { toVar } from \"./naming.js\";\nimport {\n FIGMA_T2_SOLID_SCALE,\n T1_COLOR_KEYS,\n T2_ALPHA_STEPS,\n T2_OKLCH_STEPS,\n type T1ColorKey,\n type T2OklchStep,\n} from \"../color-architecture.js\";\nimport { seedColorToCss, seedColorToHex, type SeedColorValue } from \"../color.js\";\nimport type { Seed } from \"../schema.js\";\n\n/**\n * T2 Reference(Primitive)派生 —— RFC 0001 §2.1,v3 声明式重构。\n *\n * v3 核心变化:每条 Reference token 的派生规则不再是不透明的 `(seed) => string`\n * 函数,而是可机器读取的 `Derivation` AST——同一份 AST 同时驱动:\n * 1. 运行时求值(evaluateDerivation → tokens);\n * 2. DTCG design 文件生成(scripts/export-design-tokens.ts,$value 全部结构化引用);\n * 3. live CSS 生成(derive/live-css.ts,relative color / calc 表达式);\n * 4. Token Studio 的派生公式展示(formatDerivation)。\n *\n * `seedRefs` 由 AST 自动推导(seedRefsOf),不再手写;可追溯性校验\n * (derive/reference.test.ts)遍历 recipes 断言 seedRefs 非空。\n * 颜色层对齐 Figma `Color/qw` 变量集合:\n * - T1 Seed 为 12 个单色种子;\n * - T2 Reference 为每个 seed 的 A5-A100 Alpha 通道、50-900 OKLCH 设计校准实色色阶、base 引用。\n */\n\nexport type ShadowLevel = \"sm\" | \"md\" | \"lg\";\n\nexport type Derivation =\n /** 直通引用 Seed 字段(dimension/number/duration 字符串或数字)。 */\n | { kind: \"alias\"; seedRef: string }\n /** dimension 字符串 × factor;round:\"int\" 时四舍五入为整数(字号档位用)。 */\n | { kind: \"scale\"; seedRef: string; factor: number; round?: \"int\" }\n /** 无单位数字 × factor(zIndex 刻度)。 */\n | { kind: \"scaleNumber\"; seedRef: string; factor: number }\n /** 无单位数字 + delta(lineHeight tight/relaxed = base ∓ 0.25)。 */\n | { kind: \"offsetNumber\"; seedRef: string; delta: number }\n /** dimension + 另一 dimension × n(controlSize/iconSize sm/lg = base ∓ spacing.step × n)。 */\n | { kind: \"offsetSteps\"; seedRef: string; stepRef: string; n: number }\n /** OKLCH 感知均匀色阶(L 曲线 + chroma 端点衰减,算法见 oklch.ts)。 */\n | { kind: \"oklchRamp\"; seedRef: string; step: Step }\n /** Figma 校准后的 OKLCH 实色色阶;血缘仍指向 T1 seed,但数值由设计稿拍板。 */\n | { kind: \"figmaOklchScale\"; seedRef: string; step: T2OklchStep; value: string }\n /** T1 seed 颜色的固定 Alpha 通道。 */\n | { kind: \"seedAlpha\"; seedRef: string; alpha: number }\n /** 旧版纯黑/纯白透明度工具刻度。保留求值器兼容,不再由 T2 主链路生成。 */\n | { kind: \"alphaScale\"; channel: \"black\" | \"white\"; stepRef: string; multiplier: number }\n /** 字体栈(string[] → CSS font-family 列表)。 */\n | { kind: \"fontStack\"; seedRef: string }\n /** cubic-bezier 四元组 → CSS 函数。 */\n | { kind: \"cubicBezier\"; seedRef: string }\n /** 白名单字面量(色彩空间数学端点,非设计决策)。 */\n | { kind: \"literal\"; value: string }\n /** 阴影档位:形状 = shadow.base × 档位比例,颜色 = alphaStep × 档位倍数。 */\n | { kind: \"shadowLayer\"; level: ShadowLevel };\n\nexport interface ReferenceRecipe {\n path: string[];\n cssVar: string;\n /** 由 derivation 自动推导的 Seed 依赖(点分路径),供可追溯性校验与血缘展示。 */\n seedRefs: string[];\n derivation: Derivation;\n}\n\n/** 拍平后的 CSS 变量映射:cssVar → 字符串值(--qw-ref-* 全集)。 */\nexport type ReferenceTokens = Record<string, string>;\n\n/** 阴影形状(不含颜色),供 Semantic 层复合 effect.shadow.* 时引用固定形状字段。 */\nexport interface ShadowShape {\n offsetX: string;\n offsetY: string;\n blur: string;\n spread: string;\n}\n\nexport interface ReferenceBuild {\n recipes: ReferenceRecipe[];\n tokens: ReferenceTokens;\n shapes: {\n shadow: { sm: ShadowShape; md: ShadowShape; lg: ShadowShape };\n };\n}\n\n/* ------------------------------------------------------------------ */\n/* Seed 取值与格式化工具 */\n/* ------------------------------------------------------------------ */\n\n/** 按点分路径读 Seed 字段(\"size.spacing.step\" → seed.size.spacing.step)。 */\nexport function seedValueAt(seed: Seed, dotted: string): unknown {\n let node: unknown = seed;\n for (const seg of dotted.split(\".\")) {\n if (node == null || typeof node !== \"object\") {\n throw new Error(`[qw] Seed 路径不存在: ${dotted}`);\n }\n node = (node as Record<string, unknown>)[seg];\n }\n if (node === undefined) throw new Error(`[qw] Seed 路径不存在: ${dotted}`);\n return node;\n}\n\nfunction parsePx(s: string): { value: number; unit: string } {\n const m = /^(-?\\d+(?:\\.\\d+)?)(.*)$/.exec(s.trim());\n if (!m) throw new Error(`[qw] 无法解析尺寸: ${s}`);\n return { value: Number(m[1]), unit: m[2] ?? \"\" };\n}\n\nconst round2 = (n: number) => Math.round(n * 100) / 100;\n\nfunction rgba(components: readonly [number, number, number], alpha: number): string {\n return `rgba(${components[0]}, ${components[1]}, ${components[2]}, ${round2(alpha)})`;\n}\n\nfunction hexRgb(hex: string): [number, number, number] {\n const m = /^#?([0-9a-f]{6})$/i.exec(hex);\n if (!m) throw new Error(`[qw] 无法解析 hex 颜色: ${hex}`);\n const n = Number.parseInt(m[1]!, 16);\n return [(n >> 16) & 255, (n >> 8) & 255, n & 255];\n}\n\nfunction seedAlphaCss(seedColor: SeedColorValue, alpha: number): string {\n if (alpha >= 1) return seedColorToCss({ ...seedColor, alpha: 1 });\n return rgba(hexRgb(seedColorToHex(seedColor)), alpha);\n}\n\nexport function formatFontFamily(list: string[]): string {\n return list.map((f) => (/[\\s./]/.test(f) ? `'${f}'` : f)).join(\", \");\n}\n\nfunction formatCubicBezier([a, b, c, d]: readonly [number, number, number, number]): string {\n return `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\n}\n\n/** 阴影档位系数:形状(offset/blur/spread 缩放)+ 颜色(alphaStep 倍数)。 */\nexport const SHADOW_LEVELS: Record<ShadowLevel, { offset: number; blur: number; alphaMult: number }> = {\n sm: { offset: 0.5, blur: 0.5, alphaMult: 2 },\n md: { offset: 2, blur: 3, alphaMult: 3 },\n lg: { offset: 4, blur: 6, alphaMult: 4 },\n};\n\nfunction shadowShapeOf(seed: Seed, level: ShadowLevel): ShadowShape {\n const { offset, blur } = SHADOW_LEVELS[level];\n const base = seed.effect.shadow.base;\n const scale = (s: string, f: number) => {\n const { value, unit } = parsePx(s);\n return `${round2(value * f)}${unit}`;\n };\n return {\n offsetX: scale(base.offsetX, offset),\n offsetY: scale(base.offsetY, offset),\n blur: scale(base.blur, blur),\n spread: scale(base.spread, offset),\n };\n}\n\n/* ------------------------------------------------------------------ */\n/* AST 求值器 / seedRefs 推导 / 公式展示 */\n/* ------------------------------------------------------------------ */\n\n/** 求值:一条 Derivation + Seed → 最终 CSS 值字符串。 */\nexport function evaluateDerivation(d: Derivation, seed: Seed): string {\n switch (d.kind) {\n case \"alias\": {\n const v = seedValueAt(seed, d.seedRef);\n if (v != null && typeof v === \"object\" && \"colorSpace\" in v) {\n return seedColorToCss(v as SeedColorValue);\n }\n return typeof v === \"number\" ? String(v) : (v as string);\n }\n case \"scale\": {\n const { value, unit } = parsePx(seedValueAt(seed, d.seedRef) as string);\n const scaled = value * d.factor;\n return `${d.round === \"int\" ? Math.round(scaled) : round2(scaled)}${unit}`;\n }\n case \"scaleNumber\":\n return String(round2((seedValueAt(seed, d.seedRef) as number) * d.factor));\n case \"offsetNumber\":\n return String(round2((seedValueAt(seed, d.seedRef) as number) + d.delta));\n case \"offsetSteps\": {\n const base = parsePx(seedValueAt(seed, d.seedRef) as string);\n const step = parsePx(seedValueAt(seed, d.stepRef) as string);\n return `${round2(base.value + step.value * d.n)}${base.unit}`;\n }\n case \"oklchRamp\":\n return ramp(seed.color[d.seedRef.split(\".\")[1] as keyof Seed[\"color\"]])[d.step];\n case \"figmaOklchScale\":\n return d.value;\n case \"seedAlpha\":\n return seedAlphaCss(seedValueAt(seed, d.seedRef) as SeedColorValue, d.alpha);\n case \"alphaScale\": {\n const step = seedValueAt(seed, d.stepRef) as number;\n const channel: [number, number, number] = d.channel === \"black\" ? [0, 0, 0] : [255, 255, 255];\n return rgba(channel, step * d.multiplier);\n }\n case \"fontStack\":\n return formatFontFamily(seedValueAt(seed, d.seedRef) as string[]);\n case \"cubicBezier\":\n return formatCubicBezier(seedValueAt(seed, d.seedRef) as [number, number, number, number]);\n case \"literal\":\n return d.value;\n case \"shadowLayer\": {\n const { offsetX, offsetY, blur, spread } = shadowShapeOf(seed, d.level);\n const color = rgba([0, 0, 0], seed.size.opacity.alphaStep * SHADOW_LEVELS[d.level].alphaMult);\n return `${offsetX} ${offsetY} ${blur} ${spread} ${color}`;\n }\n }\n}\n\n/** Seed 依赖推导:AST 里出现的全部 Seed 点分路径。 */\nexport function seedRefsOf(d: Derivation): string[] {\n switch (d.kind) {\n case \"alias\":\n case \"scale\":\n case \"scaleNumber\":\n case \"offsetNumber\":\n case \"oklchRamp\":\n case \"figmaOklchScale\":\n case \"seedAlpha\":\n case \"fontStack\":\n case \"cubicBezier\":\n return [d.seedRef];\n case \"offsetSteps\":\n return [d.seedRef, d.stepRef];\n case \"alphaScale\":\n return [d.stepRef];\n case \"literal\":\n return [];\n case \"shadowLayer\":\n return [\"effect.shadow.base\", \"size.opacity.alphaStep\"];\n }\n}\n\n/** 人读派生公式(Token Studio 展示用)。 */\nexport function formatDerivation(d: Derivation): string {\n const sign = (n: number) => (n >= 0 ? \"+\" : \"−\");\n switch (d.kind) {\n case \"alias\":\n case \"fontStack\":\n case \"cubicBezier\":\n return `= seed.${d.seedRef}`;\n case \"scale\":\n return `= seed.${d.seedRef} × ${d.factor}`;\n case \"scaleNumber\":\n return `= seed.${d.seedRef} × ${d.factor}`;\n case \"offsetNumber\":\n return `= seed.${d.seedRef} ${sign(d.delta)} ${Math.abs(d.delta)}`;\n case \"offsetSteps\":\n return `= seed.${d.seedRef} ${sign(d.n)} seed.${d.stepRef} × ${Math.abs(d.n)}`;\n case \"oklchRamp\":\n return `= oklch(seed.${d.seedRef}) @ L ${L_TARGETS[d.step]} · C × ${round2(chromaFactor(L_TARGETS[d.step]))}`;\n case \"figmaOklchScale\":\n return `= figma Color/qw/t2/${d.seedRef.split(\".\")[1]}/${d.step}(OKLCH 设计校准)`;\n case \"seedAlpha\":\n return `= seed.${d.seedRef} / ${round2(d.alpha * 100)}%`;\n case \"alphaScale\":\n return `= ${d.channel === \"black\" ? \"黑\" : \"白\"} / seed.${d.stepRef} × ${d.multiplier}`;\n case \"literal\":\n return `= ${d.value}(色彩空间端点,白名单字面量)`;\n case \"shadowLayer\": {\n const f = SHADOW_LEVELS[d.level];\n return `= seed.effect.shadow.base 形状 × {offset ${f.offset}, blur ${f.blur}} · 色 = 黑 / alphaStep × ${f.alphaMult}`;\n }\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* 13 组配方(声明式) */\n/* ------------------------------------------------------------------ */\n\nfunction ref(path: string[], derivation: Derivation): ReferenceRecipe {\n return { path, cssVar: toVar(\"ref\", path), seedRefs: seedRefsOf(derivation), derivation };\n}\n\nexport const RAMP_COLORS = T1_COLOR_KEYS;\n\n/** 1. 12 个 Seed ×(A5-A100 Alpha 通道 + 50-900 Figma OKLCH 校准色阶 + base)。 */\nexport function buildColorRampRecipes(): ReferenceRecipe[] {\n const out: ReferenceRecipe[] = [];\n for (const name of RAMP_COLORS) {\n const seedRef = `color.${name}`;\n for (const alpha of T2_ALPHA_STEPS) {\n out.push(ref([\"color\", name, `a${alpha}`], { kind: \"seedAlpha\", seedRef, alpha: alpha / 100 }));\n }\n for (const step of T2_OKLCH_STEPS) {\n out.push(\n ref([\"color\", name, String(step)], {\n kind: \"figmaOklchScale\",\n seedRef,\n step,\n value: FIGMA_T2_SOLID_SCALE[name as T1ColorKey][step],\n }),\n );\n }\n out.push(ref([\"color\", name, \"base\"], { kind: \"alias\", seedRef }));\n }\n return out;\n}\n\n/** @deprecated Figma T2 已不再使用 neutral 0/1000 端点;保留给历史迁移脚本。 */\nexport function buildNeutralEndpointRecipes(): ReferenceRecipe[] {\n return [\n ref([\"color\", \"neutral\", \"0\"], { kind: \"literal\", value: \"#ffffff\" }),\n ref([\"color\", \"neutral\", \"1000\"], { kind: \"literal\", value: \"#000000\" }),\n ];\n}\n\nexport const BLACK_ALPHA: ReadonlyArray<readonly [string, number]> = [\n [\"4\", 1],\n [\"8\", 2],\n [\"12\", 3],\n [\"16\", 4],\n [\"24\", 6],\n [\"32\", 8],\n [\"48\", 12],\n [\"64\", 16],\n];\nexport const WHITE_ALPHA: ReadonlyArray<readonly [string, number]> = [\n [\"8\", 2],\n [\"16\", 4],\n [\"24\", 6],\n [\"32\", 8],\n];\n\n/** @deprecated Figma T2 已改为每个 Seed 自带 Alpha 通道;保留给历史迁移脚本。 */\nexport function buildAlphaScaleRecipes(): ReferenceRecipe[] {\n const out: ReferenceRecipe[] = [];\n for (const [key, mult] of BLACK_ALPHA) {\n out.push(\n ref([\"color\", \"blackAlpha\", key], {\n kind: \"alphaScale\",\n channel: \"black\",\n stepRef: \"size.opacity.alphaStep\",\n multiplier: mult,\n }),\n );\n }\n for (const [key, mult] of WHITE_ALPHA) {\n out.push(\n ref([\"color\", \"whiteAlpha\", key], {\n kind: \"alphaScale\",\n channel: \"white\",\n stepRef: \"size.opacity.alphaStep\",\n multiplier: mult,\n }),\n );\n }\n return out;\n}\n\n/** 4. 间距刻度 = spacing.step × N (N=1..8)。 */\nexport function buildSpacingRecipes(): ReferenceRecipe[] {\n const out: ReferenceRecipe[] = [];\n for (let n = 1; n <= 8; n++) {\n out.push(ref([\"size\", \"spacing\", String(n)], { kind: \"scale\", seedRef: \"size.spacing.step\", factor: n }));\n }\n return out;\n}\n\n/** 圆角档位系数(sm/lg 从 base 派生;默认 base=8px → 4/8/14)。 */\nexport const RADIUS_FACTORS = { sm: 0.5, md: 1, lg: 1.75 } as const;\n\n/** 5. 圆角刻度:sm/md/lg 由 radius.base 按系数派生,full 直通独立裁切基准。 */\nexport function buildRadiusRecipes(): ReferenceRecipe[] {\n return [\n ref([\"size\", \"radius\", \"sm\"], { kind: \"scale\", seedRef: \"size.radius.base\", factor: RADIUS_FACTORS.sm }),\n ref([\"size\", \"radius\", \"md\"], { kind: \"alias\", seedRef: \"size.radius.base\" }),\n ref([\"size\", \"radius\", \"lg\"], { kind: \"scale\", seedRef: \"size.radius.base\", factor: RADIUS_FACTORS.lg }),\n ref([\"size\", \"radius\", \"full\"], { kind: \"alias\", seedRef: \"size.radius.full\" }),\n ];\n}\n\n/** 6. 控件/图标尺寸:md = base 直通,sm/lg = base ∓ spacing.step × n(控件 ×2、图标 ×1)。 */\nexport function buildControlIconSizeRecipes(): ReferenceRecipe[] {\n const step = \"size.spacing.step\";\n return [\n ref([\"size\", \"controlSize\", \"sm\"], { kind: \"offsetSteps\", seedRef: \"size.controlSize.base\", stepRef: step, n: -2 }),\n ref([\"size\", \"controlSize\", \"md\"], { kind: \"alias\", seedRef: \"size.controlSize.base\" }),\n ref([\"size\", \"controlSize\", \"lg\"], { kind: \"offsetSteps\", seedRef: \"size.controlSize.base\", stepRef: step, n: 2 }),\n ref([\"size\", \"iconSize\", \"sm\"], { kind: \"offsetSteps\", seedRef: \"size.iconSize.base\", stepRef: step, n: -1 }),\n ref([\"size\", \"iconSize\", \"md\"], { kind: \"alias\", seedRef: \"size.iconSize.base\" }),\n ref([\"size\", \"iconSize\", \"lg\"], { kind: \"offsetSteps\", seedRef: \"size.iconSize.base\", stepRef: step, n: 1 }),\n ];\n}\n\n/** 7. 描边宽度 —— 直通引用。 */\nexport function buildBorderWidthRecipes(): ReferenceRecipe[] {\n return [ref([\"size\", \"borderWidth\", \"hairline\"], { kind: \"alias\", seedRef: \"size.borderWidth.hairline\" })];\n}\n\n/** 8. 行高(typography 类目):normal 直通 Seed,tight/relaxed = base ∓ 0.25。 */\nexport function buildLineHeightRecipes(): ReferenceRecipe[] {\n return [\n ref([\"typography\", \"lineHeight\", \"tight\"], { kind: \"offsetNumber\", seedRef: \"typography.lineHeight.base\", delta: -0.25 }),\n ref([\"typography\", \"lineHeight\", \"normal\"], { kind: \"alias\", seedRef: \"typography.lineHeight.base\" }),\n ref([\"typography\", \"lineHeight\", \"relaxed\"], { kind: \"offsetNumber\", seedRef: \"typography.lineHeight.base\", delta: 0.25 }),\n ];\n}\n\n/** 9. 禁用态不透明度 —— 直通引用。 */\nexport function buildOpacityRecipes(): ReferenceRecipe[] {\n return [ref([\"size\", \"opacity\", \"disabled\"], { kind: \"alias\", seedRef: \"size.opacity.disabled\" })];\n}\n\n/** 10. 层级刻度 = zIndex.step × N (N=1..4);角色分配交给 Semantic 层。 */\nexport function buildZIndexRecipes(): ReferenceRecipe[] {\n return [1, 2, 3, 4].map((n) =>\n ref([\"size\", \"zIndex\", String(n)], { kind: \"scaleNumber\", seedRef: \"size.zIndex.step\", factor: n }),\n );\n}\n\nexport const FONT_FAMILY_KEYS = [\n \"text\",\n \"number\",\n \"code\",\n \"textMacLatin\",\n \"textMacZh\",\n \"textMacJa\",\n \"textWindowsLatin\",\n \"textWindowsZh\",\n \"textWindowsJa\",\n] as const;\n\n/** 字号档位倍数(沿用既定视觉:14px 基准 → 12/16/20/24)。 */\nexport const FONT_SIZE_FACTORS: Record<string, number> = { sm: 0.857, lg: 1.143, xl: 1.429, \"2xl\": 1.714 };\n\n/** 11. 排版原子:字体族(三族 + 平台/语言变体)/字重直通,字号按既定倍数派生。 */\nexport function buildTypographyRecipes(): ReferenceRecipe[] {\n const out: ReferenceRecipe[] = [];\n for (const key of FONT_FAMILY_KEYS) {\n out.push(ref([\"typography\", \"fontFamily\", key], { kind: \"fontStack\", seedRef: `typography.fontFamily.${key}` }));\n }\n for (const key of [\"regular\", \"medium\", \"semibold\"] as const) {\n out.push(ref([\"typography\", \"fontWeight\", key], { kind: \"alias\", seedRef: `typography.fontWeight.${key}` }));\n }\n out.push(ref([\"typography\", \"fontSize\", \"base\"], { kind: \"alias\", seedRef: \"typography.fontSize.base\" }));\n for (const [key, factor] of Object.entries(FONT_SIZE_FACTORS)) {\n out.push(\n ref([\"typography\", \"fontSize\", key], { kind: \"scale\", seedRef: \"typography.fontSize.base\", factor, round: \"int\" }),\n );\n }\n out.push(ref([\"typography\", \"letterSpacing\", \"base\"], { kind: \"alias\", seedRef: \"typography.letterSpacing.base\" }));\n return out;\n}\n\n/** 动效时长档位倍数。 */\nexport const DURATION_FACTORS = { fast: 0.5, slow: 1.6 } as const;\n\n/** 12. 动效:duration 按倍数派生,easing 直通。 */\nexport function buildMotionRecipes(): ReferenceRecipe[] {\n return [\n ref([\"motion\", \"duration\", \"fast\"], { kind: \"scale\", seedRef: \"motion.duration.base\", factor: DURATION_FACTORS.fast }),\n ref([\"motion\", \"duration\", \"base\"], { kind: \"alias\", seedRef: \"motion.duration.base\" }),\n ref([\"motion\", \"duration\", \"slow\"], { kind: \"scale\", seedRef: \"motion.duration.base\", factor: DURATION_FACTORS.slow }),\n ref([\"motion\", \"easing\", \"standard\"], { kind: \"cubicBezier\", seedRef: \"motion.easing.standard\" }),\n ];\n}\n\n/**\n * 13. 阴影:形状由 effect.shadow.base 按各档位比例缩放,颜色沿用\n * alphaStep 结构锚点。它不是 Figma Color 变量体系里的 T2 颜色 token。\n */\nexport function buildShadowRecipes(): ReferenceRecipe[] {\n return ([\"sm\", \"md\", \"lg\"] as const).map((level) => ref([\"effect\", \"shadow\", level], { kind: \"shadowLayer\", level }));\n}\n\nexport function allReferenceRecipes(): ReferenceRecipe[] {\n return [\n ...buildColorRampRecipes(),\n ...buildSpacingRecipes(),\n ...buildRadiusRecipes(),\n ...buildControlIconSizeRecipes(),\n ...buildBorderWidthRecipes(),\n ...buildLineHeightRecipes(),\n ...buildOpacityRecipes(),\n ...buildZIndexRecipes(),\n ...buildTypographyRecipes(),\n ...buildMotionRecipes(),\n ...buildShadowRecipes(),\n ];\n}\n\n/** T2 顶层入口:喂一个 Seed,产出全量 Reference recipes + 拍平后的 CSS 变量映射 + 阴影形状(供 Semantic 层消费)。 */\nexport function buildReference(seed: Seed): ReferenceBuild {\n const recipes = allReferenceRecipes();\n const tokens: ReferenceTokens = {};\n for (const recipe of recipes) tokens[recipe.cssVar] = evaluateDerivation(recipe.derivation, seed);\n return {\n recipes,\n tokens,\n shapes: {\n shadow: {\n sm: shadowShapeOf(seed, \"sm\"),\n md: shadowShapeOf(seed, \"md\"),\n lg: shadowShapeOf(seed, \"lg\"),\n },\n },\n };\n}\n","import { toVar } from \"./naming.js\";\nimport type { ReferenceBuild, ReferenceTokens, ShadowLevel } from \"./reference.js\";\nimport { FIGMA_T3_COLOR_ROLES } from \"../color-architecture.js\";\n\n/**\n * T3 Semantic 派生 —— RFC 0001 §2.1,v3 修订。\n *\n * R7 类型隔离(强制 FR-010):本模块**不 import `Seed`/`schema.ts`** 任何符号,\n * 只接受 `buildReference()` 的输出(`ReferenceBuild`)。Semantic 角色永远经由\n * Reference 层中转到 Seed,不允许绕过 Reference 直接引用 Seed 字段。\n *\n * v3 变化:全部角色表从模块私有改为导出的结构化元数据(SEMANTIC_ROLES),\n * 供 design 文件生成器(scripts/export-design-tokens.ts)、live CSS 生成器\n * (derive/live-css.ts)与 Token Studio 的血缘展示共用同一份事实。\n */\nexport type SemanticMode = \"light\" | \"dark\";\n\nfunction pick(tokens: ReferenceTokens, dottedRefPath: string): string {\n const v = tokens[toVar(\"ref\", dottedRefPath.split(\".\"))];\n if (v === undefined) throw new Error(`[qw] Semantic 引用了不存在的 Reference token: ${dottedRefPath}`);\n return v;\n}\n\nfunction semVar(path: string[]): string {\n return toVar(\"sem\", path);\n}\n\n/* ------------------------------------------------------------------ */\n/* 结构类角色表(mode 无关) */\n/* ------------------------------------------------------------------ */\n\nexport const RADIUS_ROLES: Record<string, string> = {\n control: \"size.radius.md\",\n card: \"size.radius.lg\",\n pill: \"size.radius.full\",\n full: \"size.radius.full\",\n};\n\nexport const CONTROL_HEIGHT_ROLES: Record<string, string> = {\n sm: \"size.controlSize.sm\",\n md: \"size.controlSize.md\",\n lg: \"size.controlSize.lg\",\n};\n\nexport const ICON_SIZE_ROLES: Record<string, string> = {\n sm: \"size.iconSize.sm\",\n md: \"size.iconSize.md\",\n lg: \"size.iconSize.lg\",\n};\n\nexport const INSET_STACK_ROLES: Record<string, string> = {\n sm: \"size.spacing.2\",\n md: \"size.spacing.4\",\n lg: \"size.spacing.6\",\n};\n\nexport const Z_INDEX_ROLES: Record<string, string> = {\n dropdown: \"size.zIndex.1\",\n sticky: \"size.zIndex.2\",\n overlay: \"size.zIndex.3\",\n toast: \"size.zIndex.4\",\n};\n\nexport const MOTION_DURATION_ROLES: Record<string, string> = {\n fast: \"motion.duration.fast\",\n base: \"motion.duration.base\",\n slow: \"motion.duration.slow\",\n};\n\n/** 字体族角色:text(正文缺省)/ number(数字数据)/ code(等宽)。 */\nexport const FONT_FAMILY_ROLES: Record<string, string> = {\n text: \"typography.fontFamily.text\",\n number: \"typography.fontFamily.number\",\n code: \"typography.fontFamily.code\",\n};\n\nexport interface TypographyRole {\n fontFamilyRef: string;\n fontSizeRef: string;\n fontWeightRef: string;\n lineHeightRef: string;\n letterSpacingRef: string;\n}\n\nconst T_LETTER = \"typography.letterSpacing.base\";\n\n/** typography.* 复合角色:每个字段各自引用 Reference(无任何裸字面量)。 */\nexport const TYPOGRAPHY_ROLES: Record<string, TypographyRole> = {\n body: {\n fontFamilyRef: \"typography.fontFamily.text\",\n fontSizeRef: \"typography.fontSize.base\",\n fontWeightRef: \"typography.fontWeight.regular\",\n lineHeightRef: \"typography.lineHeight.normal\",\n letterSpacingRef: T_LETTER,\n },\n bodyStrong: {\n fontFamilyRef: \"typography.fontFamily.text\",\n fontSizeRef: \"typography.fontSize.base\",\n fontWeightRef: \"typography.fontWeight.medium\",\n lineHeightRef: \"typography.lineHeight.normal\",\n letterSpacingRef: T_LETTER,\n },\n headingSm: {\n fontFamilyRef: \"typography.fontFamily.text\",\n fontSizeRef: \"typography.fontSize.lg\",\n fontWeightRef: \"typography.fontWeight.semibold\",\n lineHeightRef: \"typography.lineHeight.tight\",\n letterSpacingRef: T_LETTER,\n },\n headingMd: {\n fontFamilyRef: \"typography.fontFamily.text\",\n fontSizeRef: \"typography.fontSize.xl\",\n fontWeightRef: \"typography.fontWeight.semibold\",\n lineHeightRef: \"typography.lineHeight.tight\",\n letterSpacingRef: T_LETTER,\n },\n headingLg: {\n fontFamilyRef: \"typography.fontFamily.text\",\n fontSizeRef: \"typography.fontSize.2xl\",\n fontWeightRef: \"typography.fontWeight.semibold\",\n lineHeightRef: \"typography.lineHeight.tight\",\n letterSpacingRef: T_LETTER,\n },\n caption: {\n fontFamilyRef: \"typography.fontFamily.text\",\n fontSizeRef: \"typography.fontSize.sm\",\n fontWeightRef: \"typography.fontWeight.regular\",\n lineHeightRef: \"typography.lineHeight.normal\",\n letterSpacingRef: T_LETTER,\n },\n code: {\n fontFamilyRef: \"typography.fontFamily.code\",\n fontSizeRef: \"typography.fontSize.sm\",\n fontWeightRef: \"typography.fontWeight.regular\",\n lineHeightRef: \"typography.lineHeight.normal\",\n letterSpacingRef: T_LETTER,\n },\n};\n\nexport const TYPOGRAPHY_FIELDS = [\n \"fontFamily\",\n \"fontSize\",\n \"fontWeight\",\n \"lineHeight\",\n \"letterSpacing\",\n] as const;\n\n/* ------------------------------------------------------------------ */\n/* 颜色角色表(light/dark 各自引用 Reference 路径) */\n/* ------------------------------------------------------------------ */\n\nexport interface ColorRoleRefs {\n light: string;\n dark: string;\n}\n\nexport const COLOR_ROLES: Record<string, ColorRoleRefs> = {\n ...FIGMA_T3_COLOR_ROLES,\n // Figma T3 集合之外的补充角色:阴影颜色分量(effect.shadow.* 复合专用)。\n shadow: { light: \"color.black.a10\", dark: \"color.black.a50\" },\n};\n\n/** 复合阴影角色:形状取 Reference effect.shadow.<level>,颜色取 color.shadow。 */\nexport const SHADOW_COMPOSITE_ROLES: Record<string, ShadowLevel> = {\n dialog: \"lg\",\n};\n\n/* ------------------------------------------------------------------ */\n/* 血缘元数据(Token Studio / 文档消费) */\n/* ------------------------------------------------------------------ */\n\nexport type SemanticRoleEntry =\n | {\n kind: \"structural\";\n /** Semantic 路径(点分,如 \"size.radius.control\")。 */\n path: string;\n cssVar: string;\n /** 引用的 Reference 路径(点分)。 */\n refPath: string;\n }\n | {\n kind: \"color\";\n path: string;\n cssVar: string;\n refPath: { light: string; dark: string };\n }\n | {\n kind: \"shadowComposite\";\n path: string;\n cssVar: string;\n /** 形状来源(reference.effect.shadow.<level>)+ 颜色来源。 */\n shapeRef: string;\n colorRole: string;\n };\n\n/**\n * 全量 Semantic 角色的结构化血缘表——\"角色 → 引用的 Reference 路径(含 light/dark 分支)\"。\n * 与 buildSemanticStructural/buildSemanticColor 的产出一一对应(顺序一致)。\n */\nexport function semanticRoleEntries(): SemanticRoleEntry[] {\n const out: SemanticRoleEntry[] = [];\n const structural = (path: string[], refPath: string) =>\n out.push({ kind: \"structural\", path: path.join(\".\"), cssVar: semVar(path), refPath });\n\n for (const [role, refPath] of Object.entries(RADIUS_ROLES)) structural([\"size\", \"radius\", role], refPath);\n for (const [role, refPath] of Object.entries(CONTROL_HEIGHT_ROLES)) structural([\"size\", \"controlHeight\", role], refPath);\n for (const [role, refPath] of Object.entries(ICON_SIZE_ROLES)) structural([\"size\", \"iconSize\", role], refPath);\n for (const [role, refPath] of Object.entries(INSET_STACK_ROLES)) {\n structural([\"size\", \"inset\", role], refPath);\n structural([\"size\", \"stack\", role], refPath);\n }\n structural([\"size\", \"opacity\", \"disabled\"], \"size.opacity.disabled\");\n for (const [role, refPath] of Object.entries(Z_INDEX_ROLES)) structural([\"size\", \"zIndex\", role], refPath);\n for (const [role, refPath] of Object.entries(FONT_FAMILY_ROLES)) structural([\"typography\", \"fontFamily\", role], refPath);\n for (const [role, spec] of Object.entries(TYPOGRAPHY_ROLES)) {\n structural([\"typography\", role, \"fontFamily\"], spec.fontFamilyRef);\n structural([\"typography\", role, \"fontSize\"], spec.fontSizeRef);\n structural([\"typography\", role, \"fontWeight\"], spec.fontWeightRef);\n structural([\"typography\", role, \"lineHeight\"], spec.lineHeightRef);\n structural([\"typography\", role, \"letterSpacing\"], spec.letterSpacingRef);\n }\n for (const [role, refPath] of Object.entries(MOTION_DURATION_ROLES)) structural([\"motion\", \"duration\", role], refPath);\n structural([\"motion\", \"easing\", \"standard\"], \"motion.easing.standard\");\n\n for (const [path, refs] of Object.entries(COLOR_ROLES)) {\n const segs = [\"color\", ...path.split(\".\")];\n out.push({ kind: \"color\", path: segs.join(\".\"), cssVar: semVar(segs), refPath: refs });\n }\n for (const [role, level] of Object.entries(SHADOW_COMPOSITE_ROLES)) {\n const segs = [\"effect\", \"shadow\", role];\n out.push({\n kind: \"shadowComposite\",\n path: segs.join(\".\"),\n cssVar: semVar(segs),\n shapeRef: `effect.shadow.${level}`,\n colorRole: \"color.shadow\",\n });\n }\n return out;\n}\n\n/* ------------------------------------------------------------------ */\n/* 求值 */\n/* ------------------------------------------------------------------ */\n\n/**\n * 结构类(mode 无关):尺寸角色 + 字体族角色 + 排版复合角色 + 动效时长/缓动。\n * `effect.shadow.*` 的颜色字段随 mode 变化,归入 `buildSemanticColor`。\n */\nexport function buildSemanticStructural(reference: ReferenceBuild): Record<string, string> {\n const out: Record<string, string> = {};\n const { tokens } = reference;\n for (const entry of semanticRoleEntries()) {\n if (entry.kind !== \"structural\") continue;\n out[entry.cssVar] = pick(tokens, entry.refPath);\n }\n return out;\n}\n\n/**\n * 颜色类(light/dark 分别求值):color.* 全部角色。\n */\nexport function buildSemanticColor(reference: ReferenceBuild, mode: SemanticMode): Record<string, string> {\n const out: Record<string, string> = {};\n const { tokens, shapes } = reference;\n\n for (const entry of semanticRoleEntries()) {\n if (entry.kind !== \"color\") continue;\n out[entry.cssVar] = pick(tokens, entry.refPath[mode]);\n }\n\n const shadowColor = out[semVar([\"color\", \"shadow\"])];\n for (const [role, level] of Object.entries(SHADOW_COMPOSITE_ROLES) as Array<\n [keyof typeof SHADOW_COMPOSITE_ROLES, ShadowLevel]\n >) {\n const shape = shapes.shadow[level];\n out[semVar([\"effect\", \"shadow\", role])] =\n `${shape.offsetX} ${shape.offsetY} ${shape.blur} ${shape.spread} ${shadowColor}`;\n }\n\n return out;\n}\n","import { buildReference } from \"./reference.js\";\nimport { buildSemanticStructural, buildSemanticColor } from \"./semantic.js\";\nimport type { SemanticMode } from \"./semantic.js\";\nimport type { Seed } from \"../schema.js\";\n\nexport { toVar } from \"./naming.js\";\nexport type { Layer } from \"./naming.js\";\nexport { ramp, STEPS, L_TARGETS, chromaFactor, contrastRatio } from \"./oklch.js\";\nexport type { Step, Ramp } from \"./oklch.js\";\nexport type { SemanticMode as Mode } from \"./semantic.js\";\nexport type {\n ReferenceRecipe,\n ReferenceTokens,\n ReferenceBuild,\n Derivation,\n ShadowLevel,\n ShadowShape,\n} from \"./reference.js\";\nexport {\n buildReference,\n allReferenceRecipes,\n evaluateDerivation,\n seedRefsOf,\n formatDerivation,\n seedValueAt,\n RAMP_COLORS,\n BLACK_ALPHA,\n WHITE_ALPHA,\n RADIUS_FACTORS,\n FONT_SIZE_FACTORS,\n DURATION_FACTORS,\n SHADOW_LEVELS,\n FONT_FAMILY_KEYS,\n} from \"./reference.js\";\nexport {\n buildSemanticStructural,\n buildSemanticColor,\n semanticRoleEntries,\n RADIUS_ROLES,\n CONTROL_HEIGHT_ROLES,\n ICON_SIZE_ROLES,\n INSET_STACK_ROLES,\n Z_INDEX_ROLES,\n MOTION_DURATION_ROLES,\n FONT_FAMILY_ROLES,\n TYPOGRAPHY_ROLES,\n TYPOGRAPHY_FIELDS,\n COLOR_ROLES,\n SHADOW_COMPOSITE_ROLES,\n} from \"./semantic.js\";\nexport type { SemanticRoleEntry, ColorRoleRefs, TypographyRole } from \"./semantic.js\";\n\nexport interface DerivedTokens {\n /** 亮色全量 CSS 变量:--qw-ref-* ∪ --qw-sem-*(light 取值)。 */\n light: Record<string, string>;\n /** 暗色全量 CSS 变量:--qw-ref-* ∪ --qw-sem-*(dark 取值)。 */\n dark: Record<string, string>;\n}\n\n/**\n * derive — 单源派生(RFC 0001)。喂一个 Seed,编排 T2 Reference → T3 Semantic,\n * 返回亮/暗两套全量 CSS 变量映射(含 --qw-ref-* 与 --qw-sem-*)。\n * 外部签名/返回值形状与改造前保持一致(FR-014),供 `@qw-ui/react`、`@qw-ui/vue` 的\n * ConfigProvider 直接消费,无需改动。\n *\n * 注意:`validateSeed` 不在此处调用(沿用现状契约),校验是调用方的责任。\n */\nexport function derive(seed: Seed): DerivedTokens {\n const reference = buildReference(seed);\n const structural = buildSemanticStructural(reference);\n const mk = (mode: SemanticMode): Record<string, string> => ({\n ...reference.tokens,\n ...structural,\n ...buildSemanticColor(reference, mode),\n });\n return { light: mk(\"light\"), dark: mk(\"dark\") };\n}\n","import { toVar } from \"./naming.js\";\nimport { L_TARGETS, chromaFactor } from \"./oklch.js\";\nimport { seedColorToCss } from \"../color.js\";\nimport {\n allReferenceRecipes,\n formatFontFamily,\n SHADOW_LEVELS,\n FONT_FAMILY_KEYS,\n type Derivation,\n type ShadowLevel,\n} from \"./reference.js\";\nimport { semanticRoleEntries } from \"./semantic.js\";\nimport type { Seed } from \"../schema.js\";\n\n/**\n * live CSS 生成器 —— dist/tokens.live.css / Token Studio 响应式级联的引擎。\n *\n * 与静态 tokens.css(解析后的字面值,SSR 稳定出口)不同,live CSS 把整棵派生\n * 树翻译成 CSS 原生表达式:\n * - T1 Seed 落为 `--qw-seed-*` 变量(唯一含具体数值的层);\n * - T2 Reference 用 relative color(oklch(from …))/ calc() 从 Seed 变量派生;\n * - T3 Semantic 全部是 `var(--qw-ref-*)` 别名;dark 模式只在暗色选择器下\n * 重映射 sem → 不同的 ref 档位。\n *\n * 于是改一个 `--qw-seed-*`(setProperty 即可),整棵 ref/sem 树由浏览器原生\n * 级联更新,零 JS 重算。依赖现代 CSS(relative color / round()),刻意不做\n * 老浏览器兼容——组件库消费方继续用静态 tokens.css。\n */\n\nconst round4 = (n: number) => Math.round(n * 10000) / 10000;\n\nfunction seedVar(dotted: string): string {\n return toVar(\"seed\", dotted.split(\".\"));\n}\n\n/* ------------------------------------------------------------------ */\n/* T1:Seed → --qw-seed-* 变量表 */\n/* ------------------------------------------------------------------ */\n\n/** Seed 拍平成 `--qw-seed-*` → CSS 值。live CSS 里唯一携带具体数值的层。 */\nexport function seedCssVars(seed: Seed): Record<string, string> {\n const out: Record<string, string> = {};\n for (const [name, value] of Object.entries(seed.color)) {\n out[seedVar(`color.${name}`)] = seedColorToCss(value);\n }\n out[seedVar(\"size.spacing.step\")] = seed.size.spacing.step;\n out[seedVar(\"size.borderWidth.hairline\")] = seed.size.borderWidth.hairline;\n out[seedVar(\"size.radius.base\")] = seed.size.radius.base;\n out[seedVar(\"size.radius.full\")] = seed.size.radius.full;\n out[seedVar(\"size.controlSize.base\")] = seed.size.controlSize.base;\n out[seedVar(\"size.iconSize.base\")] = seed.size.iconSize.base;\n out[seedVar(\"size.opacity.disabled\")] = String(seed.size.opacity.disabled);\n out[seedVar(\"size.opacity.alphaStep\")] = String(seed.size.opacity.alphaStep);\n out[seedVar(\"size.zIndex.step\")] = String(seed.size.zIndex.step);\n for (const key of FONT_FAMILY_KEYS) {\n out[seedVar(`typography.fontFamily.${key}`)] = formatFontFamily(seed.typography.fontFamily[key]);\n }\n out[seedVar(\"typography.fontWeight.regular\")] = String(seed.typography.fontWeight.regular);\n out[seedVar(\"typography.fontWeight.medium\")] = String(seed.typography.fontWeight.medium);\n out[seedVar(\"typography.fontWeight.semibold\")] = String(seed.typography.fontWeight.semibold);\n out[seedVar(\"typography.fontSize.base\")] = seed.typography.fontSize.base;\n out[seedVar(\"typography.lineHeight.base\")] = String(seed.typography.lineHeight.base);\n out[seedVar(\"typography.letterSpacing.base\")] = seed.typography.letterSpacing.base;\n out[seedVar(\"motion.duration.base\")] = seed.motion.duration.base;\n const [a, b, c, d] = seed.motion.easing.standard;\n out[seedVar(\"motion.easing.standard\")] = `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\n out[seedVar(\"effect.shadow.base.offsetX\")] = seed.effect.shadow.base.offsetX;\n out[seedVar(\"effect.shadow.base.offsetY\")] = seed.effect.shadow.base.offsetY;\n out[seedVar(\"effect.shadow.base.blur\")] = seed.effect.shadow.base.blur;\n out[seedVar(\"effect.shadow.base.spread\")] = seed.effect.shadow.base.spread;\n return out;\n}\n\n/* ------------------------------------------------------------------ */\n/* T2:Derivation AST → CSS 表达式 */\n/* ------------------------------------------------------------------ */\n\nfunction shadowShapeExprs(level: ShadowLevel): { offsetX: string; offsetY: string; blur: string; spread: string } {\n const { offset, blur } = SHADOW_LEVELS[level];\n const scale = (field: string, f: number) => `calc(var(${seedVar(`effect.shadow.base.${field}`)}) * ${f})`;\n return {\n offsetX: scale(\"offsetX\", offset),\n offsetY: scale(\"offsetY\", offset),\n blur: scale(\"blur\", blur),\n spread: scale(\"spread\", offset),\n };\n}\n\n/** 一条 Derivation → 引用 `--qw-seed-*` 的 CSS 原生表达式。 */\nexport function derivationToCssExpr(d: Derivation): string {\n switch (d.kind) {\n case \"alias\":\n case \"fontStack\":\n case \"cubicBezier\":\n return `var(${seedVar(d.seedRef)})`;\n case \"scale\": {\n const expr = `calc(var(${seedVar(d.seedRef)}) * ${d.factor})`;\n return d.round === \"int\" ? `round(nearest, ${expr}, 1px)` : expr;\n }\n case \"scaleNumber\":\n return `calc(var(${seedVar(d.seedRef)}) * ${d.factor})`;\n case \"offsetNumber\":\n return `calc(var(${seedVar(d.seedRef)}) ${d.delta >= 0 ? \"+\" : \"-\"} ${Math.abs(d.delta)})`;\n case \"offsetSteps\":\n return `calc(var(${seedVar(d.seedRef)}) ${d.n >= 0 ? \"+\" : \"-\"} var(${seedVar(d.stepRef)}) * ${Math.abs(d.n)})`;\n case \"oklchRamp\": {\n const l = L_TARGETS[d.step];\n const f = round4(chromaFactor(l));\n return `oklch(from var(${seedVar(d.seedRef)}) ${l} calc(c * ${f}) h)`;\n }\n case \"figmaOklchScale\":\n return d.value;\n case \"seedAlpha\":\n return `rgb(from var(${seedVar(d.seedRef)}) r g b / ${round4(d.alpha)})`;\n case \"alphaScale\": {\n const channel = d.channel === \"black\" ? \"0 0 0\" : \"255 255 255\";\n return `rgb(${channel} / calc(var(${seedVar(d.stepRef)}) * ${d.multiplier}))`;\n }\n case \"literal\":\n return d.value;\n case \"shadowLayer\": {\n const s = shadowShapeExprs(d.level);\n const alpha = `calc(var(${seedVar(\"size.opacity.alphaStep\")}) * ${SHADOW_LEVELS[d.level].alphaMult})`;\n return `${s.offsetX} ${s.offsetY} ${s.blur} ${s.spread} rgb(0 0 0 / ${alpha})`;\n }\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* 组装 */\n/* ------------------------------------------------------------------ */\n\nexport interface LiveCssOptions {\n /** 亮色作用域选择器,默认 \":root\"。 */\n selector?: string;\n /** 暗色作用域选择器,默认 '[data-qw-mode=\"dark\"]'。 */\n darkSelector?: string;\n}\n\nfunction block(selector: string, decls: Array<[string, string]>): string {\n return `${selector} {\\n${decls.map(([k, v]) => ` ${k}: ${v};`).join(\"\\n\")}\\n}\\n`;\n}\n\n/**\n * 生成整份 live CSS:\n * 1. seed 块(具体数值);2. ref 块(表达式派生);3. sem 块(light 别名);\n * 4. dark 块(仅重映射随 mode 变化的 sem 颜色别名)。\n */\nexport function buildLiveCss(seed: Seed, options: LiveCssOptions = {}): string {\n const selector = options.selector ?? \":root\";\n const darkSelector = options.darkSelector ?? '[data-qw-mode=\"dark\"]';\n\n const seedDecls = Object.entries(seedCssVars(seed));\n\n const refDecls: Array<[string, string]> = allReferenceRecipes().map((r) => [\n r.cssVar,\n derivationToCssExpr(r.derivation),\n ]);\n\n const semLight: Array<[string, string]> = [];\n const semDark: Array<[string, string]> = [];\n for (const entry of semanticRoleEntries()) {\n if (entry.kind === \"structural\") {\n semLight.push([entry.cssVar, `var(${toVar(\"ref\", entry.refPath.split(\".\"))})`]);\n } else if (entry.kind === \"color\") {\n semLight.push([entry.cssVar, `var(${toVar(\"ref\", entry.refPath.light.split(\".\"))})`]);\n if (entry.refPath.dark !== entry.refPath.light) {\n semDark.push([entry.cssVar, `var(${toVar(\"ref\", entry.refPath.dark.split(\".\"))})`]);\n }\n } else {\n // shadow 复合:形状表达式 + mode 感知的 sem 颜色(dark 无需重复,颜色变量自己会变)。\n const level = entry.shapeRef.split(\".\").pop() as ShadowLevel;\n const s = shadowShapeExprs(level);\n semLight.push([\n entry.cssVar,\n `${s.offsetX} ${s.offsetY} ${s.blur} ${s.spread} var(${toVar(\"sem\", entry.colorRole.split(\".\"))})`,\n ]);\n }\n }\n\n return [\n \"/* @qw-ui/tokens live — Seed 变量驱动的响应式派生树(relative color / calc),请勿手改。\",\n \" 改 --qw-seed-* 即级联整棵 ref/sem 树;需要现代浏览器,组件库消费方请用静态 tokens.css。 */\",\n block(selector, [...seedDecls, ...refDecls, ...semLight]),\n block(darkSelector, semDark),\n ].join(\"\\n\");\n}\n","import { z } from \"zod\";\n\n/** DTCG 兼容的颜色字面量:hex、hex/NN% 透明度后缀,或结构化 srgb。 */\nconst legacyHexColor = z\n .string()\n .regex(/^#[0-9A-Fa-f]{6}(\\/\\d{1,3}%)?$/, \"期望 #RRGGBB 或 #RRGGBB/NN%\");\n\nconst structuredColor = z.object({\n colorSpace: z.literal(\"srgb\"),\n components: z.tuple([z.number(), z.number(), z.number()]),\n alpha: z.number().min(0).max(1),\n});\n\nconst dimensionValue = z.object({\n value: z.number(),\n unit: z.enum([\"px\", \"rem\", \"em\", \"%\"]),\n});\n\nconst modePair = z.object({\n light: z.union([legacyHexColor, structuredColor, z.string()]),\n dark: z.union([legacyHexColor, structuredColor, z.string()]),\n});\n\nexport const compatStatusSchema = z.enum([\"active\", \"aliased\", \"deprecated\"]);\n\nexport const compatEntrySchema = z\n .object({\n path: z\n .string()\n .regex(\n /^[a-z][a-z0-9-]*\\.[a-z][a-z0-9.-]*$/,\n \"path 格式:<component>.<category>.<name>,如 button.color.bg-soft-brand\",\n ),\n type: z.enum([\"color\", \"dimension\", \"typography\", \"motion\"]),\n value: z.union([\n modePair,\n dimensionValue,\n z.object({ aliasOf: z.string().min(1) }),\n ]),\n source: z.object({\n figma: z.string().url(),\n nodeId: z.string().min(1),\n legacyName: z.string().nullable(),\n }),\n introducedBy: z.string().min(1),\n reason: z.string().min(1),\n owner: z.string().min(1),\n targetSemanticRole: z.string().nullable(),\n status: compatStatusSchema,\n reviewAfter: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/),\n migrationIssue: z.string().nullable(),\n })\n .superRefine((entry, ctx) => {\n if (entry.status === \"aliased\") {\n if (!(\"aliasOf\" in entry.value)) {\n ctx.addIssue({\n code: \"custom\",\n message: \"status=aliased 时 value 必须为 { aliasOf }\",\n path: [\"value\"],\n });\n }\n if (!entry.targetSemanticRole) {\n ctx.addIssue({\n code: \"custom\",\n message: \"status=aliased 时 targetSemanticRole 必填\",\n path: [\"targetSemanticRole\"],\n });\n }\n }\n if (entry.status === \"active\" && \"aliasOf\" in entry.value) {\n ctx.addIssue({\n code: \"custom\",\n message: \"status=active 时不得使用 aliasOf\",\n path: [\"value\"],\n });\n }\n });\n\nexport const compatRegistrySchema = z.object({\n $description: z.string().optional(),\n version: z.literal(1),\n graceDays: z.number().int().positive().default(90),\n entries: z.array(compatEntrySchema).min(1),\n});\n\nexport type CompatEntry = z.infer<typeof compatEntrySchema>;\nexport type CompatRegistry = z.infer<typeof compatRegistrySchema>;\nexport type CompatStatus = z.infer<typeof compatStatusSchema>;\n\n/** path → CSS 变量名:`button.color.bg-soft-brand` → `--qw-compat-button-color-bg-soft-brand` */\nexport function compatPathToCssVar(path: string): string {\n return `--qw-compat-${path.replace(/\\./g, \"-\")}`;\n}\n\n/** path → component slug(第一段) */\nexport function compatComponentOf(path: string): string {\n return path.split(\".\")[0]!;\n}\n\n/** path → helper suffix(component 之后的段,用 `-` 连接) */\nexport function compatSuffixOf(path: string): string {\n const parts = path.split(\".\");\n return parts.slice(1).join(\"-\");\n}\n","/**\n * 将 legacy hex(含 /NN% 透明度后缀)或 DTCG srgb 结构转为 CSS 颜色字符串。\n */\nexport function compatColorToCss(\n input: string | { colorSpace: \"srgb\"; components: [number, number, number]; alpha: number },\n): string {\n if (typeof input === \"string\") {\n const m = /^#([0-9A-Fa-f]{6})(?:\\/(\\d{1,3})%)?$/.exec(input);\n if (!m) throw new Error(`[qw-compat] 无法解析颜色: ${input}`);\n const n = Number.parseInt(m[1]!, 16);\n const r = (n >> 16) & 255;\n const g = (n >> 8) & 255;\n const b = n & 255;\n const alpha = m[2] != null ? Number(m[2]) / 100 : 1;\n if (alpha >= 1) return `#${m[1]!.toUpperCase()}`;\n return `rgba(${r}, ${g}, ${b}, ${roundAlpha(alpha)})`;\n }\n const [r, g, b] = input.components.map((c) => Math.round(c * 255)) as [number, number, number];\n const alpha = input.alpha;\n if (alpha >= 1) {\n const hex = [r, g, b].map((x) => x.toString(16).padStart(2, \"0\")).join(\"\");\n return `#${hex}`;\n }\n return `rgba(${r}, ${g}, ${b}, ${roundAlpha(alpha)})`;\n}\n\nfunction roundAlpha(a: number): number {\n return Math.round(a * 1000) / 1000;\n}\n","import { compatColorToCss } from \"./color.js\";\nimport {\n compatComponentOf,\n compatPathToCssVar,\n compatSuffixOf,\n type CompatEntry,\n type CompatRegistry,\n} from \"./schema.js\";\n\nexport interface CompatBuild {\n light: Record<string, string>;\n dark: Record<string, string>;\n /** path → cssVar */\n paths: Record<string, string>;\n /** component → suffix[] */\n byComponent: Record<string, string[]>;\n entries: CompatEntry[];\n graceDays: number;\n}\n\nfunction dimensionToCss(value: { value: number; unit: string }): string {\n return `${value.value}${value.unit}`;\n}\n\nfunction resolveEntryValue(\n entry: CompatEntry,\n mode: \"light\" | \"dark\",\n semCssVar: (role: string) => string,\n): string {\n const v = entry.value;\n if (\"aliasOf\" in v) {\n return `var(${semCssVar(v.aliasOf)})`;\n }\n if (\"light\" in v && \"dark\" in v) {\n const raw = v[mode];\n if (entry.type === \"color\") {\n return compatColorToCss(raw as Parameters<typeof compatColorToCss>[0]);\n }\n return String(raw);\n }\n if (\"value\" in v && \"unit\" in v) {\n return dimensionToCss(v);\n }\n throw new Error(`[qw-compat] 条目 ${entry.path} 的 value 形状无法解析`);\n}\n\n/** semantic role 点分路径 → --qw-sem-* CSS 变量 */\nfunction semRoleToCssVar(role: string): string {\n const parts = role.split(\".\");\n const category = parts[0]!;\n const rest = parts.slice(1).join(\"-\");\n return `--qw-sem-${category}-${rest}`;\n}\n\nexport function buildCompatFromRegistry(registry: CompatRegistry): CompatBuild {\n const light: Record<string, string> = {};\n const dark: Record<string, string> = {};\n const paths: Record<string, string> = {};\n const byComponent: Record<string, string[]> = {};\n\n for (const entry of registry.entries) {\n const cssVar = compatPathToCssVar(entry.path);\n paths[entry.path] = cssVar;\n const component = compatComponentOf(entry.path);\n const suffix = compatSuffixOf(entry.path);\n if (!byComponent[component]) byComponent[component] = [];\n byComponent[component].push(suffix);\n\n const resolve = (mode: \"light\" | \"dark\") =>\n resolveEntryValue(entry, mode, semRoleToCssVar);\n\n if (\"light\" in entry.value && \"dark\" in entry.value) {\n light[cssVar] = resolve(\"light\");\n const darkVal = resolve(\"dark\");\n if (darkVal !== light[cssVar]) dark[cssVar] = darkVal;\n } else {\n const val = resolve(\"light\");\n light[cssVar] = val;\n }\n }\n\n return {\n light,\n dark,\n paths,\n byComponent,\n entries: registry.entries,\n graceDays: registry.graceDays,\n };\n}\n\nfunction componentSuffixTypeName(component: string): string {\n const pascal = component\n .split(\"-\")\n .map((s) => s.charAt(0).toUpperCase() + s.slice(1))\n .join(\"\");\n return `Compat${pascal}Suffix`;\n}\n\nfunction componentSuffixConstName(component: string): string {\n const pascal = component\n .split(\"-\")\n .map((s) => s.charAt(0).toUpperCase() + s.slice(1))\n .join(\"\");\n return `compat${pascal}Suffixes`;\n}\n\n/** 生成 compat token-paths TypeScript 片段(并入 tokens.ts) */\nexport function formatCompatTypes(build: CompatBuild): string {\n const components = Object.keys(build.byComponent).sort();\n const lines: string[] = [\n \"export const compatComponents = \" + JSON.stringify(components) + \" as const;\",\n \"export type CompatComponent = (typeof compatComponents)[number];\",\n ];\n for (const c of components) {\n const suffixes = [...build.byComponent[c]!].sort();\n const constName = componentSuffixConstName(c);\n const typeName = componentSuffixTypeName(c);\n lines.push(`export const ${constName} = ${JSON.stringify(suffixes)} as const;`);\n lines.push(`export type ${typeName} = (typeof ${constName})[number];`);\n }\n if (components.length === 1) {\n const c = components[0]!;\n lines.push(`export type CompatSuffix<C extends CompatComponent> = C extends ${JSON.stringify(c)} ? ${componentSuffixTypeName(c)} : never;`);\n } else if (components.length > 1) {\n lines.push(\"export type CompatSuffix<C extends CompatComponent> =\");\n for (const c of components) {\n lines.push(` C extends ${JSON.stringify(c)} ? ${componentSuffixTypeName(c)} :`);\n }\n lines.push(\" never;\");\n }\n return lines.join(\"\\n\");\n}\n"],"mappings":"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"}