@oxyhq/bloom 0.7.7 → 0.8.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.
Files changed (109) hide show
  1. package/lib/commonjs/normalize-colors.d.js +2 -0
  2. package/lib/commonjs/normalize-colors.d.js.map +1 -0
  3. package/lib/commonjs/theme/apply-dark-class.js +8 -24
  4. package/lib/commonjs/theme/apply-dark-class.js.map +1 -1
  5. package/lib/commonjs/theme/build-theme.js +39 -61
  6. package/lib/commonjs/theme/build-theme.js.map +1 -1
  7. package/lib/commonjs/theme/color-presets.js +9 -9
  8. package/lib/commonjs/theme/color-scope/index.web.js +7 -14
  9. package/lib/commonjs/theme/color-scope/index.web.js.map +1 -1
  10. package/lib/commonjs/theme/color-scope/style-builder.js +7 -6
  11. package/lib/commonjs/theme/color-scope/style-builder.js.map +1 -1
  12. package/lib/commonjs/theme/color-space.js +76 -0
  13. package/lib/commonjs/theme/color-space.js.map +1 -0
  14. package/lib/commonjs/theme/index.js +0 -6
  15. package/lib/commonjs/theme/index.js.map +1 -1
  16. package/lib/commonjs/theme/native-root-vars.native.js +28 -18
  17. package/lib/commonjs/theme/native-root-vars.native.js.map +1 -1
  18. package/lib/commonjs/theme/preset-vars.js +20 -152
  19. package/lib/commonjs/theme/preset-vars.js.map +1 -1
  20. package/lib/commonjs/theme/token-registry.js +123 -0
  21. package/lib/commonjs/theme/token-registry.js.map +1 -0
  22. package/lib/module/normalize-colors.d.js +2 -0
  23. package/lib/module/normalize-colors.d.js.map +1 -0
  24. package/lib/module/theme/apply-dark-class.js +8 -19
  25. package/lib/module/theme/apply-dark-class.js.map +1 -1
  26. package/lib/module/theme/build-theme.js +39 -61
  27. package/lib/module/theme/build-theme.js.map +1 -1
  28. package/lib/module/theme/color-presets.js +9 -9
  29. package/lib/module/theme/color-scope/index.web.js +7 -14
  30. package/lib/module/theme/color-scope/index.web.js.map +1 -1
  31. package/lib/module/theme/color-scope/style-builder.js +7 -6
  32. package/lib/module/theme/color-scope/style-builder.js.map +1 -1
  33. package/lib/module/theme/color-space.js +69 -0
  34. package/lib/module/theme/color-space.js.map +1 -0
  35. package/lib/module/theme/index.js +1 -1
  36. package/lib/module/theme/index.js.map +1 -1
  37. package/lib/module/theme/native-root-vars.native.js +29 -18
  38. package/lib/module/theme/native-root-vars.native.js.map +1 -1
  39. package/lib/module/theme/preset-vars.js +19 -150
  40. package/lib/module/theme/preset-vars.js.map +1 -1
  41. package/lib/module/theme/token-registry.js +113 -0
  42. package/lib/module/theme/token-registry.js.map +1 -0
  43. package/lib/typescript/commonjs/theme/apply-dark-class.d.ts +5 -10
  44. package/lib/typescript/commonjs/theme/apply-dark-class.d.ts.map +1 -1
  45. package/lib/typescript/commonjs/theme/build-theme.d.ts +1 -1
  46. package/lib/typescript/commonjs/theme/build-theme.d.ts.map +1 -1
  47. package/lib/typescript/commonjs/theme/color-presets.d.ts +9 -9
  48. package/lib/typescript/commonjs/theme/color-scope/index.web.d.ts.map +1 -1
  49. package/lib/typescript/commonjs/theme/color-scope/style-builder.d.ts +5 -2
  50. package/lib/typescript/commonjs/theme/color-scope/style-builder.d.ts.map +1 -1
  51. package/lib/typescript/commonjs/theme/color-space.d.ts +28 -0
  52. package/lib/typescript/commonjs/theme/color-space.d.ts.map +1 -0
  53. package/lib/typescript/commonjs/theme/index.d.ts +1 -2
  54. package/lib/typescript/commonjs/theme/index.d.ts.map +1 -1
  55. package/lib/typescript/commonjs/theme/native-root-vars.native.d.ts +25 -15
  56. package/lib/typescript/commonjs/theme/native-root-vars.native.d.ts.map +1 -1
  57. package/lib/typescript/commonjs/theme/preset-vars.d.ts +11 -74
  58. package/lib/typescript/commonjs/theme/preset-vars.d.ts.map +1 -1
  59. package/lib/typescript/commonjs/theme/token-registry.d.ts +53 -0
  60. package/lib/typescript/commonjs/theme/token-registry.d.ts.map +1 -0
  61. package/lib/typescript/commonjs/theme/types.d.ts +3 -0
  62. package/lib/typescript/commonjs/theme/types.d.ts.map +1 -1
  63. package/lib/typescript/module/theme/apply-dark-class.d.ts +5 -10
  64. package/lib/typescript/module/theme/apply-dark-class.d.ts.map +1 -1
  65. package/lib/typescript/module/theme/build-theme.d.ts +1 -1
  66. package/lib/typescript/module/theme/build-theme.d.ts.map +1 -1
  67. package/lib/typescript/module/theme/color-presets.d.ts +9 -9
  68. package/lib/typescript/module/theme/color-scope/index.web.d.ts.map +1 -1
  69. package/lib/typescript/module/theme/color-scope/style-builder.d.ts +5 -2
  70. package/lib/typescript/module/theme/color-scope/style-builder.d.ts.map +1 -1
  71. package/lib/typescript/module/theme/color-space.d.ts +28 -0
  72. package/lib/typescript/module/theme/color-space.d.ts.map +1 -0
  73. package/lib/typescript/module/theme/index.d.ts +1 -2
  74. package/lib/typescript/module/theme/index.d.ts.map +1 -1
  75. package/lib/typescript/module/theme/native-root-vars.native.d.ts +25 -15
  76. package/lib/typescript/module/theme/native-root-vars.native.d.ts.map +1 -1
  77. package/lib/typescript/module/theme/preset-vars.d.ts +11 -74
  78. package/lib/typescript/module/theme/preset-vars.d.ts.map +1 -1
  79. package/lib/typescript/module/theme/token-registry.d.ts +53 -0
  80. package/lib/typescript/module/theme/token-registry.d.ts.map +1 -0
  81. package/lib/typescript/module/theme/types.d.ts +3 -0
  82. package/lib/typescript/module/theme/types.d.ts.map +1 -1
  83. package/package.json +1 -1
  84. package/src/__tests__/BloomColorScope.test.tsx +5 -5
  85. package/src/__tests__/BloomThemeProvider.test.tsx +4 -3
  86. package/src/__tests__/apply-dark-class.test.ts +26 -21
  87. package/src/__tests__/native-root-vars.test.ts +8 -7
  88. package/src/__tests__/preset-vars.test.ts +31 -77
  89. package/src/__tests__/theme.test.ts +6 -6
  90. package/src/normalize-colors.d.ts +22 -0
  91. package/src/react-native-css.d.ts +3 -3
  92. package/src/theme/__tests__/__fixtures__/golden-resolved-tokens.json +574 -0
  93. package/src/theme/__tests__/__snapshots__/visual-gallery.test.tsx.snap +838 -0
  94. package/src/theme/__tests__/color-space.test.ts +28 -0
  95. package/src/theme/__tests__/golden-tokens.test.ts +33 -0
  96. package/src/theme/__tests__/runtime-contract.test.ts +49 -0
  97. package/src/theme/__tests__/token-registry.test.ts +30 -0
  98. package/src/theme/__tests__/visual-gallery.test.tsx +10 -0
  99. package/src/theme/apply-dark-class.ts +8 -17
  100. package/src/theme/build-theme.ts +39 -67
  101. package/src/theme/color-presets.ts +9 -9
  102. package/src/theme/color-scope/index.web.tsx +7 -14
  103. package/src/theme/color-scope/style-builder.ts +7 -4
  104. package/src/theme/color-space.ts +56 -0
  105. package/src/theme/index.ts +1 -6
  106. package/src/theme/native-root-vars.native.ts +28 -18
  107. package/src/theme/preset-vars.ts +17 -178
  108. package/src/theme/token-registry.ts +159 -0
  109. package/src/theme/types.ts +3 -0
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=normalize-colors.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["normalize-colors.d.ts"],"mappings":"","ignoreList":[]}
@@ -5,19 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.applyColorPresetVars = applyColorPresetVars;
7
7
  exports.applyDarkClass = applyDarkClass;
8
- Object.defineProperty(exports, "toWebColorValue", {
9
- enumerable: true,
10
- get: function () {
11
- return _presetVars.toWebColorValue;
12
- }
13
- });
14
8
  var _reactNative = require("react-native");
15
9
  var _colorPresets = require("./color-presets.js");
16
- var _presetVars = require("./preset-vars.js");
17
- // Re-exported so the web var-contract helper is reachable from this file (the
18
- // home of the web write path). Defined in `preset-vars.ts` next to the related
19
- // HSL parsing so native (which never imports this module) doesn't pull it in.
20
-
10
+ var _tokenRegistry = require("./token-registry.js");
21
11
  function applyDarkClass(resolved) {
22
12
  if (_reactNative.Platform.OS === 'web' && typeof document !== 'undefined') {
23
13
  document.documentElement.classList.toggle('dark', resolved === 'dark');
@@ -32,28 +22,22 @@ function applyDarkClass(resolved) {
32
22
  * -------------------------------------------------------------------
33
23
  * The shadcn/Tailwind-v4 web apps compile their color utilities to reference the
34
24
  * BASE token directly (`.bg-background { background-color: var(--background) }`),
35
- * so on web the base `--x` tokens MUST be FULL CSS colors. We therefore write
36
- * them as `hsl(...)` (e.g. `--primary: hsl(185 100% 20%)`) `var(--primary)`
37
- * then resolves to a valid color. The resolved `--color-*` vars are written
38
- * verbatim as `rgb(...)` (already full colors, used by native `color-mix` alpha
39
- * utilities; harmless on web). Non-color tokens (`--radius`, etc.) pass through
40
- * unchanged. See `toWebColorValue`.
25
+ * so on web the base `--x` tokens MUST be FULL CSS colors. `getResolvedTokens`
26
+ * returns every canonical token already resolved to an sRGB `rgb(...)` string,
27
+ * so `var(--x)` resolves to a valid color directly no per-value wrapping. The
28
+ * same rgb values feed native (`color-mix` alpha utilities resolve on sRGB), so
29
+ * web and native share one canonical token pipeline.
41
30
  *
42
- * NATIVE writes the SAME tokens as RAW HSL triples (no `hsl()` wrapper) via
43
- * `rootVariables` (`native-root-vars.native.ts`), consumed through bloom's
44
- * native `global.css` `hsl(var(--x))` indirection — that path is untouched here.
45
31
  * Includes extended tokens (card, chart-*, content-area, sidebar-*) so consumer
46
32
  * apps don't need to synthesize them.
47
33
  */
48
34
  function applyColorPresetVars(preset, resolved) {
49
35
  if (_reactNative.Platform.OS !== 'web' || typeof document === 'undefined') return;
50
36
  if (!_colorPresets.APP_COLOR_PRESETS[preset]) return;
51
- const vars = (0, _presetVars.getPresetVars)(preset, resolved, {
52
- includeResolvedColorVars: true
53
- });
37
+ const vars = (0, _tokenRegistry.getResolvedTokens)(preset, resolved);
54
38
  const root = document.documentElement.style;
55
39
  for (const [key, value] of Object.entries(vars)) {
56
- root.setProperty(key, (0, _presetVars.toWebColorValue)(key, value));
40
+ root.setProperty(key, value);
57
41
  }
58
42
  }
59
43
  //# sourceMappingURL=apply-dark-class.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_colorPresets","_presetVars","applyDarkClass","resolved","Platform","OS","document","documentElement","classList","toggle","applyColorPresetVars","preset","APP_COLOR_PRESETS","vars","getPresetVars","includeResolvedColorVars","root","style","key","value","Object","entries","setProperty","toWebColorValue"],"sourceRoot":"../../../src","sources":["theme/apply-dark-class.ts"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAEA;AACA;AACA;;AAGO,SAASG,cAAcA,CAACC,QAA0B,EAAE;EACzD,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;IAC5DA,QAAQ,CAACC,eAAe,CAACC,SAAS,CAACC,MAAM,CAAC,MAAM,EAAEN,QAAQ,KAAK,MAAM,CAAC;EACxE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASO,oBAAoBA,CAACC,MAAoB,EAAER,QAA0B,EAAE;EACrF,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;EAC9D,IAAI,CAACM,+BAAiB,CAACD,MAAM,CAAC,EAAE;EAEhC,MAAME,IAAI,GAAG,IAAAC,yBAAa,EAACH,MAAM,EAAER,QAAQ,EAAE;IAAEY,wBAAwB,EAAE;EAAK,CAAC,CAAC;EAChF,MAAMC,IAAI,GAAGV,QAAQ,CAACC,eAAe,CAACU,KAAK;EAE3C,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACR,IAAI,CAAC,EAAE;IAC/CG,IAAI,CAACM,WAAW,CAACJ,GAAG,EAAE,IAAAK,2BAAe,EAACL,GAAG,EAAEC,KAAK,CAAC,CAAC;EACpD;AACF","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_colorPresets","_tokenRegistry","applyDarkClass","resolved","Platform","OS","document","documentElement","classList","toggle","applyColorPresetVars","preset","APP_COLOR_PRESETS","vars","getResolvedTokens","root","style","key","value","Object","entries","setProperty"],"sourceRoot":"../../../src","sources":["theme/apply-dark-class.ts"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAEO,SAASG,cAAcA,CAACC,QAA0B,EAAE;EACzD,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;IAC5DA,QAAQ,CAACC,eAAe,CAACC,SAAS,CAACC,MAAM,CAAC,MAAM,EAAEN,QAAQ,KAAK,MAAM,CAAC;EACxE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASO,oBAAoBA,CAACC,MAAoB,EAAER,QAA0B,EAAE;EACrF,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;EAC9D,IAAI,CAACM,+BAAiB,CAACD,MAAM,CAAC,EAAE;EAEhC,MAAME,IAAI,GAAG,IAAAC,gCAAiB,EAACH,MAAM,EAAER,QAAQ,CAAC;EAChD,MAAMY,IAAI,GAAGT,QAAQ,CAACC,eAAe,CAACS,KAAK;EAE3C,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACP,IAAI,CAAC,EAAE;IAC/CE,IAAI,CAACM,WAAW,CAACJ,GAAG,EAAEC,KAAK,CAAC;EAC9B;AACF","ignoreList":[]}
@@ -6,8 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.STATUS_COLORS = void 0;
7
7
  exports.buildTheme = buildTheme;
8
8
  var _reactNative = require("react-native");
9
- var _colorPresets = require("./color-presets.js");
10
9
  var _adaptiveColors = require("./adaptive-colors.js");
10
+ var _tokenRegistry = require("./token-registry.js");
11
+ var _colorSpace = require("./color-space.js");
11
12
  /**
12
13
  * Status colors used across the design system. Independent of the accent
13
14
  * preset so semantic intent stays stable across themes.
@@ -20,72 +21,49 @@ const STATUS_COLORS = exports.STATUS_COLORS = {
20
21
  };
21
22
 
22
23
  /**
23
- * Convert a shadcn-style HSL CSS variable (`'H S% L%'` or `'H S% L% / A'`)
24
- * into a fully-resolved `hsl()` / `hsla()` color string consumable by both
25
- * web `style` and React Native.
24
+ * Build the JS `theme.colors` object from the SAME canonical rgb token source
25
+ * the web/native CSS-var writes use (`getResolvedTokens`). JS styles and the
26
+ * `var(--x)` document tokens therefore share one rgb pipeline — no second,
27
+ * drift-prone HSL conversion lives here. Subtle/alpha mixes derive from the
28
+ * resolved rgb via `parseRgbString` + `srgbToRgbString`.
26
29
  */
27
- function hslVarToColor(hslVar) {
28
- const parts = hslVar.split('/').map(p => p.trim());
29
- const triple = parts[0] ?? '0 0% 0%';
30
- const components = triple.replace(/\s+/g, ', ');
31
- if (parts.length === 2) {
32
- const alpha = parseFloat(parts[1] ?? '100') / 100;
33
- return `hsla(${components}, ${alpha})`;
34
- }
35
- return `hsl(${components})`;
36
- }
37
- function extractHue(hslVar) {
38
- const first = hslVar.split(/\s+/)[0] ?? '0';
39
- const hue = parseInt(first, 10);
40
- return Number.isFinite(hue) ? hue : 0;
41
- }
42
- function hsl(h, s, l) {
43
- return `hsl(${h}, ${s}%, ${l}%)`;
44
- }
45
- function readToken(tokens, key, fallback = '0 0% 0%') {
46
- return hslVarToColor(tokens[key] ?? fallback);
47
- }
48
30
  function buildColorsFromPreset(preset, resolved) {
49
- const config = _colorPresets.APP_COLOR_PRESETS[preset];
50
- const tokens = resolved === 'dark' ? config.dark : config.light;
31
+ const t = (0, _tokenRegistry.getResolvedTokens)(preset, resolved);
51
32
  const isDark = resolved === 'dark';
52
- const primaryHue = extractHue(tokens['--primary'] ?? '0 0% 50%');
53
- const destructiveHue = extractHue(tokens['--destructive'] ?? '0 0% 0%');
54
- const background = readToken(tokens, '--background');
55
- const surface = readToken(tokens, '--surface');
56
- const mutedForeground = readToken(tokens, '--muted-foreground', '0 0% 50%');
57
- const primaryColor = readToken(tokens, '--primary', '0 0% 50%');
58
- const primaryForeground = readToken(tokens, '--primary-foreground', '0 0% 100%');
33
+
34
+ // Read a resolved `rgb(...)` token by its bare name (no leading `--`).
35
+ const g = k => t[`--${k}`] ?? 'rgb(0 0 0)';
36
+ // Re-emit a resolved token at a given alpha (sRGB rgb-with-alpha).
37
+ const mix = (k, a) => (0, _colorSpace.srgbToRgbString)((0, _colorSpace.parseRgbString)(g(k)), a);
59
38
  return {
60
- background,
61
- backgroundSecondary: surface,
62
- backgroundTertiary: readToken(tokens, '--muted'),
63
- text: readToken(tokens, '--foreground', '0 0% 100%'),
64
- textSecondary: mutedForeground,
65
- textTertiary: mutedForeground,
66
- border: readToken(tokens, '--border', '0 0% 20%'),
67
- borderLight: readToken(tokens, '--input', '0 0% 20%'),
68
- primary: primaryColor,
69
- primaryForeground,
70
- // Legacy aliases retained for backwards compatibility with downstream
71
- // consumers. `primaryLight` should be a brand tint, not the surface, but
72
- // changing this is a breaking change handled in a separate major.
73
- primaryLight: surface,
74
- primaryDark: background,
75
- // `secondary` historically mirrored `primary`. Retained for compatibility.
76
- secondary: primaryColor,
77
- tint: primaryColor,
78
- icon: mutedForeground,
79
- iconActive: primaryColor,
39
+ background: g('background'),
40
+ backgroundSecondary: g('surface'),
41
+ backgroundTertiary: g('muted'),
42
+ text: g('foreground'),
43
+ textSecondary: g('muted-foreground'),
44
+ textTertiary: g('muted-foreground'),
45
+ border: g('border'),
46
+ borderLight: g('input'),
47
+ primary: g('primary'),
48
+ primaryForeground: g('primary-foreground'),
49
+ // Corrected aliases (see types.ts): `primaryLight` is the preset accent
50
+ // tint, `primaryDark` is the focus-ring shade NOT the surface/background.
51
+ primaryLight: g('accent'),
52
+ primaryDark: g('ring'),
53
+ // Corrected: `secondary` is the preset's secondary surface, NOT a primary mirror.
54
+ secondary: g('secondary'),
55
+ tint: g('primary'),
56
+ icon: g('muted-foreground'),
57
+ iconActive: g('primary'),
80
58
  ...STATUS_COLORS,
81
- primarySubtle: isDark ? hsl(primaryHue, 50, 10) : hsl(primaryHue, 70, 93),
82
- primarySubtleForeground: isDark ? hsl(primaryHue, 70, 65) : hsl(primaryHue, 90, 25),
83
- negative: hsl(destructiveHue, 84, 45),
59
+ primarySubtle: mix('primary', isDark ? 0.16 : 0.12),
60
+ primarySubtleForeground: g('primary'),
61
+ negative: g('destructive'),
84
62
  negativeForeground: '#FFFFFF',
85
- negativeSubtle: isDark ? hsl(destructiveHue, 50, 10) : hsl(destructiveHue, 90, 95),
86
- negativeSubtleForeground: isDark ? hsl(destructiveHue, 70, 65) : hsl(destructiveHue, 80, 40),
87
- contrast50: isDark ? hsl(primaryHue, 15, 12) : hsl(primaryHue, 10, 93),
88
- card: surface,
63
+ negativeSubtle: mix('destructive', isDark ? 0.16 : 0.12),
64
+ negativeSubtleForeground: g('destructive'),
65
+ contrast50: mix('foreground', 0.5),
66
+ card: g('card'),
89
67
  shadow: isDark ? 'rgba(0, 0, 0, 0.3)' : 'rgba(0, 0, 0, 0.1)',
90
68
  overlay: 'rgba(0, 0, 0, 0.5)'
91
69
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_colorPresets","_adaptiveColors","STATUS_COLORS","exports","success","error","warning","info","hslVarToColor","hslVar","parts","split","map","p","trim","triple","components","replace","length","alpha","parseFloat","extractHue","first","hue","parseInt","Number","isFinite","hsl","h","s","l","readToken","tokens","key","fallback","buildColorsFromPreset","preset","resolved","config","APP_COLOR_PRESETS","dark","light","isDark","primaryHue","destructiveHue","background","surface","mutedForeground","primaryColor","primaryForeground","backgroundSecondary","backgroundTertiary","text","textSecondary","textTertiary","border","borderLight","primary","primaryLight","primaryDark","secondary","tint","icon","iconActive","primarySubtle","primarySubtleForeground","negative","negativeForeground","negativeSubtle","negativeSubtleForeground","contrast50","card","shadow","overlay","buildTheme","isAdaptive","adaptive","Platform","OS","getAdaptiveColors","undefined","colors","mode","isLight"],"sourceRoot":"../../../src","sources":["theme/build-theme.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_adaptiveColors","_tokenRegistry","_colorSpace","STATUS_COLORS","exports","success","error","warning","info","buildColorsFromPreset","preset","resolved","t","getResolvedTokens","isDark","g","k","mix","a","srgbToRgbString","parseRgbString","background","backgroundSecondary","backgroundTertiary","text","textSecondary","textTertiary","border","borderLight","primary","primaryForeground","primaryLight","primaryDark","secondary","tint","icon","iconActive","primarySubtle","primarySubtleForeground","negative","negativeForeground","negativeSubtle","negativeSubtleForeground","contrast50","card","shadow","overlay","buildTheme","isAdaptive","adaptive","Platform","OS","getAdaptiveColors","undefined","colors","mode","isLight"],"sourceRoot":"../../../src","sources":["theme/build-theme.ts"],"mappings":"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","ignoreList":[]}
@@ -11,17 +11,17 @@ exports.hexToAppColorName = hexToAppColorName;
11
11
  * Keys carry a leading `--` for historical reasons (shadcn-style CSS variable
12
12
  * names) — keep in mind the values are platform-agnostic **raw HSL triples**
13
13
  * (e.g. `'185 100% 20%'` or `'185 100% 20% / 0.5'`), not CSS-resolved colors.
14
- * The same map drives both:
15
- * - the web layer: the base `--x` tokens are wrapped to full `hsl(...)` colors
16
- * (via `toWebColorValue`) before being written to `document.documentElement`
17
- * / a `BloomColorScope` element, so `var(--x)` the form Tailwind v4
18
- * `@theme inline` compiles its color utilities to resolves to a valid
19
- * color directly; the resolved `--color-*` companions are written as
20
- * `rgb(...)`, and
14
+ * The single canonical resolver `getResolvedTokens` (in `token-registry.ts`)
15
+ * converts this raw map to sRGB `rgb(...)` for every runtime write — the same
16
+ * values drive BOTH layers:
17
+ * - the web layer: `getResolvedTokens`'s `rgb(...)` strings are written to
18
+ * `document.documentElement` / a `BloomColorScope` element, so `var(--x)`
19
+ * the form Tailwind v4 `@theme inline` compiles its color utilities to
20
+ * resolves to a valid color directly, and
21
21
  * - the native layer (`buildTheme` resolves the raw triples into `hsl(...)`
22
22
  * strings consumable by React Native styles; `native-root-vars.native.ts`
23
- * writes the raw triples through bloom's `hsl(var(--x))` `global.css`
24
- * indirection).
23
+ * writes the same canonical `rgb(...)` values into react-native-css's
24
+ * `rootVariables` family).
25
25
  *
26
26
  * The `--` prefix is an implementation detail we will drop in a future major.
27
27
  */
@@ -8,24 +8,17 @@ exports.useColorScopeStyle = useColorScopeStyle;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _BloomThemeProvider = require("../BloomThemeProvider.js");
10
10
  var _buildTheme = require("../build-theme.js");
11
- var _presetVars = require("../preset-vars.js");
12
- var _styleBuilder = require("./style-builder.js");
11
+ var _tokenRegistry = require("../token-registry.js");
13
12
  var _jsxRuntime = require("react/jsx-runtime");
14
13
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
14
  /**
16
- * `buildScopeVars` returns the preset's tokens as platform-agnostic raw HSL
17
- * triples (shared with the native write path). On web they are scoped onto an
18
- * element's inline `style`, where Tailwind v4's compiled utilities read them as
19
- * `var(--x)` directly so the base tokens MUST be full CSS colors. Wrap each
20
- * raw triple in `hsl(...)` via `toWebColorValue`; `--color-*` rgb vars and
21
- * non-color tokens pass through. See `toWebColorValue` in `../preset-vars`.
15
+ * `getResolvedTokens` returns every canonical token already resolved to an sRGB
16
+ * `rgb(...)` string the SAME pipeline the document-root web writer and the
17
+ * native writer use. Scoped onto an element's inline `style`, Tailwind v4's
18
+ * compiled utilities read these as `var(--x)` directly, so each base token is a
19
+ * full CSS color with no per-value wrapping needed.
22
20
  */function buildWebScopeVars(colorPreset, mode) {
23
- const raw = (0, _styleBuilder.buildScopeVars)(colorPreset, mode);
24
- const out = {};
25
- for (const [key, value] of Object.entries(raw)) {
26
- out[key] = (0, _presetVars.toWebColorValue)(key, value);
27
- }
28
- return out;
21
+ return (0, _tokenRegistry.getResolvedTokens)(colorPreset, mode);
29
22
  }
30
23
 
31
24
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_BloomThemeProvider","_buildTheme","_presetVars","_styleBuilder","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","buildWebScopeVars","colorPreset","mode","raw","buildScopeVars","out","key","value","entries","toWebColorValue","BloomColorScope","asChild","style","children","parent","useContext","BloomThemeContext","Error","jsx","Fragment","resolvedMode","theme","contextValue","useMemo","buildTheme","varsStyle","content","child","Children","only","isValidElement","childStyle","props","mergedStyle","cloneElement","Provider","useColorScopeStyle"],"sourceRoot":"../../../../src","sources":["theme/color-scope/index.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_BloomThemeProvider","_buildTheme","_tokenRegistry","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","buildWebScopeVars","colorPreset","mode","getResolvedTokens","BloomColorScope","asChild","style","children","parent","useContext","BloomThemeContext","Error","jsx","Fragment","resolvedMode","theme","contextValue","useMemo","buildTheme","varsStyle","content","child","Children","only","isValidElement","childStyle","props","mergedStyle","cloneElement","Provider","value","useColorScopeStyle"],"sourceRoot":"../../../../src","sources":["theme/color-scope/index.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -7,7 +7,7 @@ exports.buildNativePresetStyle = buildNativePresetStyle;
7
7
  exports.buildScopeVars = buildScopeVars;
8
8
  exports.getVariableContextProvider = getVariableContextProvider;
9
9
  var _reactNative = require("react-native");
10
- var _presetVars = require("../preset-vars.js");
10
+ var _tokenRegistry = require("../token-registry.js");
11
11
  var _lazyRequire = require("../../utils/lazy-require.js");
12
12
  /**
13
13
  * Component that provides inline CSS variables to a subtree via NativeWind's
@@ -20,13 +20,14 @@ const getNativeWindVars = (0, _lazyRequire.lazyRequire)('nativewind');
20
20
 
21
21
  /**
22
22
  * Build the CSS custom-property map for a preset, ready to be applied to a
23
- * subtree. Always includes the resolved `--color-*` vars so Tailwind v4
24
- * `@theme` utilities (e.g. `bg-background`) honour the scope.
23
+ * subtree. Every token is resolved to an sRGB `rgb(...)` string via
24
+ * `getResolvedTokens` the single canonical token pipeline shared by web and
25
+ * native — so Tailwind v4 `@theme` utilities (e.g. `bg-background`) and
26
+ * `color-mix`-based alpha utilities (`bg-primary/10`) both resolve against the
27
+ * same color values. Keys retain the leading `--`.
25
28
  */
26
29
  function buildScopeVars(colorPreset, mode) {
27
- return (0, _presetVars.getPresetVars)(colorPreset, mode, {
28
- includeResolvedColorVars: true
29
- });
30
+ return (0, _tokenRegistry.getResolvedTokens)(colorPreset, mode);
30
31
  }
31
32
 
32
33
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_presetVars","_lazyRequire","getNativeWindVars","lazyRequire","buildScopeVars","colorPreset","mode","getPresetVars","includeResolvedColorVars","getVariableContextProvider","Platform","OS","module","VariableContextProvider","buildNativePresetStyle","undefined","vars"],"sourceRoot":"../../../../src","sources":["theme/color-scope/style-builder.ts"],"mappings":";;;;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,YAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;;AAWA,MAAMG,iBAAiB,GAAG,IAAAC,wBAAW,EAAuB,YAAY,CAAC;;AAEzE;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAC5BC,WAAyB,EACzBC,IAAsB,EACE;EACxB,OAAO,IAAAC,yBAAa,EAACF,WAAW,EAAEC,IAAI,EAAE;IAAEE,wBAAwB,EAAE;EAAK,CAAC,CAAC;AAC7E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,0BAA0BA,CAAA,EAA4C;EACpF,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE,OAAO,IAAI;EACtC,MAAMC,MAAM,GAAGV,iBAAiB,CAAC,CAAC;EAClC,IAAI,CAACU,MAAM,IAAI,OAAOA,MAAM,CAACC,uBAAuB,KAAK,UAAU,EAAE,OAAO,IAAI;EAChF,OAAOD,MAAM,CAACC,uBAAuB;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,sBAAsBA,CACpCT,WAAyB,EACzBC,IAAsB,EACA;EACtB,IAAII,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE,OAAOI,SAAS;EAC3C,MAAMH,MAAM,GAAGV,iBAAiB,CAAC,CAAC;EAClC,IAAI,CAACU,MAAM,IAAI,OAAOA,MAAM,CAACI,IAAI,KAAK,UAAU,EAAE,OAAOD,SAAS;EAClE,OAAOH,MAAM,CAACI,IAAI,CAACZ,cAAc,CAACC,WAAW,EAAEC,IAAI,CAAC,CAAC;AACvD","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_tokenRegistry","_lazyRequire","getNativeWindVars","lazyRequire","buildScopeVars","colorPreset","mode","getResolvedTokens","getVariableContextProvider","Platform","OS","module","VariableContextProvider","buildNativePresetStyle","undefined","vars"],"sourceRoot":"../../../../src","sources":["theme/color-scope/style-builder.ts"],"mappings":";;;;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAD,OAAA;AAEA,IAAAE,YAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;;AAWA,MAAMG,iBAAiB,GAAG,IAAAC,wBAAW,EAAuB,YAAY,CAAC;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAC5BC,WAAyB,EACzBC,IAAsB,EACE;EACxB,OAAO,IAAAC,gCAAiB,EAACF,WAAW,EAAEC,IAAI,CAAC;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,0BAA0BA,CAAA,EAA4C;EACpF,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE,OAAO,IAAI;EACtC,MAAMC,MAAM,GAAGT,iBAAiB,CAAC,CAAC;EAClC,IAAI,CAACS,MAAM,IAAI,OAAOA,MAAM,CAACC,uBAAuB,KAAK,UAAU,EAAE,OAAO,IAAI;EAChF,OAAOD,MAAM,CAACC,uBAAuB;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,sBAAsBA,CACpCR,WAAyB,EACzBC,IAAsB,EACA;EACtB,IAAIG,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE,OAAOI,SAAS;EAC3C,MAAMH,MAAM,GAAGT,iBAAiB,CAAC,CAAC;EAClC,IAAI,CAACS,MAAM,IAAI,OAAOA,MAAM,CAACI,IAAI,KAAK,UAAU,EAAE,OAAOD,SAAS;EAClE,OAAOH,MAAM,CAACI,IAAI,CAACX,cAAc,CAACC,WAAW,EAAEC,IAAI,CAAC,CAAC;AACvD","ignoreList":[]}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.deltaE = deltaE;
7
+ exports.oklchToSrgb = oklchToSrgb;
8
+ exports.parseRgbString = parseRgbString;
9
+ exports.srgbToRgbString = srgbToRgbString;
10
+ // l 0..1, c 0..~0.4, h deg
11
+ // 0..255 integers
12
+
13
+ const clamp = (n, lo, hi) => Math.min(hi, Math.max(lo, n));
14
+ const srgbGamma = x => x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055;
15
+
16
+ /** OKLCH → linear OKLab → linear sRGB → gamma sRGB → 0..255. Pure. */
17
+ function oklchToSrgb({
18
+ l,
19
+ c,
20
+ h
21
+ }) {
22
+ const hr = h * Math.PI / 180;
23
+ const a = c * Math.cos(hr);
24
+ const b2 = c * Math.sin(hr);
25
+ const l_ = l + 0.3963377774 * a + 0.2158037573 * b2;
26
+ const m_ = l - 0.1055613458 * a - 0.0638541728 * b2;
27
+ const s_ = l - 0.0894841775 * a - 1.291485548 * b2;
28
+ const lc = l_ ** 3,
29
+ mc = m_ ** 3,
30
+ sc = s_ ** 3;
31
+ const lr = +4.0767416621 * lc - 3.3077115913 * mc + 0.2309699292 * sc;
32
+ const lg = -1.2684380046 * lc + 2.6097574011 * mc - 0.3413193965 * sc;
33
+ const lb = -0.0041960863 * lc - 0.7034186147 * mc + 1.707614701 * sc;
34
+ return {
35
+ r: Math.round(clamp(srgbGamma(lr), 0, 1) * 255),
36
+ g: Math.round(clamp(srgbGamma(lg), 0, 1) * 255),
37
+ b: Math.round(clamp(srgbGamma(lb), 0, 1) * 255)
38
+ };
39
+ }
40
+ function srgbToRgbString({
41
+ r,
42
+ g,
43
+ b
44
+ }, alpha) {
45
+ return alpha === undefined || alpha >= 1 ? `rgb(${r} ${g} ${b})` : `rgb(${r} ${g} ${b} / ${alpha})`;
46
+ }
47
+
48
+ /**
49
+ * Parse an `rgb(...)` / `rgba(...)` string into an {@link Rgb}.
50
+ *
51
+ * Contract: input MUST be an `rgb(...)` / `rgba(...)` string (e.g. a resolved
52
+ * token from `getResolvedTokens`). Both modern (`rgb(r g b)`) and legacy
53
+ * (`rgb(r, g, b)`) syntaxes are accepted. Anything else throws — this is a
54
+ * canonical-pipeline primitive and a non-rgb input signals a real bug at the
55
+ * call site, never a value to silently coerce to black.
56
+ *
57
+ * @throws {Error} if `s` is not an `rgb()` / `rgba()` string.
58
+ */
59
+ function parseRgbString(s) {
60
+ const inner = s.match(/rgba?\(([^)]+)\)/i)?.[1];
61
+ if (inner === undefined) {
62
+ throw new Error(`parseRgbString: expected an rgb() string, got: ${s}`);
63
+ }
64
+ const [r, g, b] = inner.split(/[ ,/]+/).map(n => parseInt(n, 10));
65
+ return {
66
+ r: r ?? 0,
67
+ g: g ?? 0,
68
+ b: b ?? 0
69
+ };
70
+ }
71
+
72
+ /** Cheap perceptual-ish distance in sRGB (sufficient for a ≤1 rounding gate). */
73
+ function deltaE(a, b) {
74
+ return Math.sqrt((a.r - b.r) ** 2 + (a.g - b.g) ** 2 + (a.b - b.b) ** 2) / Math.sqrt(3);
75
+ }
76
+ //# sourceMappingURL=color-space.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["clamp","n","lo","hi","Math","min","max","srgbGamma","x","pow","oklchToSrgb","l","c","h","hr","PI","a","cos","b2","sin","l_","m_","s_","lc","mc","sc","lr","lg","lb","r","round","g","b","srgbToRgbString","alpha","undefined","parseRgbString","s","inner","match","Error","split","map","parseInt","deltaE","sqrt"],"sourceRoot":"../../../src","sources":["theme/color-space.ts"],"mappings":"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","ignoreList":[]}
@@ -87,12 +87,6 @@ Object.defineProperty(exports, "setColorSchemeSafe", {
87
87
  return _setColorSchemeSafe.setColorSchemeSafe;
88
88
  }
89
89
  });
90
- Object.defineProperty(exports, "toWebColorValue", {
91
- enumerable: true,
92
- get: function () {
93
- return _presetVars.toWebColorValue;
94
- }
95
- });
96
90
  Object.defineProperty(exports, "useBloomTheme", {
97
91
  enumerable: true,
98
92
  get: function () {
@@ -1 +1 @@
1
- {"version":3,"names":["_BloomThemeProvider","require","_colorScope","_buildTheme","_useTheme","_colorPresets","_presetVars","_applyDarkClass","_setColorSchemeSafe","_initCssInterop","_persistence"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AAKA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AAGA,IAAAI,aAAA,GAAAJ,OAAA;AAOA,IAAAK,WAAA,GAAAL,OAAA;AAMA,IAAAM,eAAA,GAAAN,OAAA;AACA,IAAAO,mBAAA,GAAAP,OAAA;AACA,IAAAQ,eAAA,GAAAR,OAAA;AAEA,IAAAS,YAAA,GAAAT,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_BloomThemeProvider","require","_colorScope","_buildTheme","_useTheme","_colorPresets","_presetVars","_applyDarkClass","_setColorSchemeSafe","_initCssInterop","_persistence"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AAKA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AAGA,IAAAI,aAAA,GAAAJ,OAAA;AAOA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,eAAA,GAAAN,OAAA;AACA,IAAAO,mBAAA,GAAAP,OAAA;AACA,IAAAQ,eAAA,GAAAR,OAAA;AAEA,IAAAS,YAAA,GAAAT,OAAA","ignoreList":[]}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.applyNativeRootVars = applyNativeRootVars;
7
7
  var _nativeInternal = require("react-native-css/native-internal");
8
- var _styleBuilder = require("./color-scope/style-builder.js");
8
+ var _tokenRegistry = require("./token-registry.js");
9
9
  /// <reference path="../react-native-css.d.ts" />
10
10
  // The triple-slash reference above pins Bloom's ambient declaration for
11
11
  // `react-native-css/native-internal` (`src/react-native-css.d.ts`) into the
@@ -45,18 +45,28 @@ var _styleBuilder = require("./color-scope/style-builder.js");
45
45
  * `BloomThemeProvider`'s `VariableContextProvider` only feeds path #1, so the navigator
46
46
  * host and every portal/modal — which render outside that subtree — never see the
47
47
  * preset vars and fall through to `rootVariables`/`universalVariables`. By default those
48
- * families hold only react-native-css's own `__rn-css-rem`/`__rn-css-color` entries
49
- * (Bloom's `global.css` defines the `hsl(var(--primary))` indirection but not the HSL
50
- * triples themselves those are injected at runtime), so the whole tree below the
51
- * navigator renders monochrome. Writing the vars into `rootVariables` here is the
52
- * exact same mechanism react-native-css uses for compiled `:root {}` / `@theme` vars
53
- * (`StyleCollection.inject` does `rootVariables(name).set(valueArray)`), so portaled
54
- * content resolves the palette identically regardless of React-tree position.
48
+ * families hold only react-native-css's own `__rn-css-rem`/`__rn-css-color` entries, so
49
+ * the whole tree below the navigator renders monochrome until the palette is injected at
50
+ * runtime. Writing the vars into `rootVariables` here is the exact same mechanism
51
+ * react-native-css uses for compiled `:root {}` / `@theme` vars (`StyleCollection.inject`
52
+ * does `rootVariables(name).set(valueArray)`), so portaled content resolves the palette
53
+ * identically regardless of React-tree position.
55
54
  *
56
- * The raw tokens are written as HSL triples (`primary: '205 87% 53%'`) and the
57
- * resolved Tailwind v4 `--color-*` vars as sRGB `rgb(...)` (`color-primary:
58
- * 'rgb(31 153 239)'`) the latter so `color-mix`-based alpha utilities resolve
59
- * on native (see `getPresetVars` / `hslTripletToRgb`).
55
+ * Consumer contract (CRITICAL single canonical color pipeline)
56
+ * -------------------------------------------------------------
57
+ * Each base `--x` token is now written as a FULL `rgb(...)` color (not a raw HSL
58
+ * triple). A consuming app's Tailwind `@theme` must therefore reference these
59
+ * base tokens DIRECTLY (its Tailwind color var equals `var(--x)`) and must NOT
60
+ * wrap them in `hsl(...)`. The legacy `hsl(var(--x))` indirection (which assumed
61
+ * a raw triple) would produce the invalid `hsl(rgb(...))` and must be removed in
62
+ * every consumer. Web and native now share this one contract.
63
+ *
64
+ * Every token is written as an sRGB `rgb(...)` string from the single canonical
65
+ * token pipeline (`getResolvedTokens`) — `primary: 'rgb(31 153 239)'` — the SAME
66
+ * values web writes to `document.documentElement`. sRGB is the space
67
+ * react-native-css's `color-mix` resolver registers, so `color-mix`-based alpha
68
+ * utilities (`bg-primary/10`) resolve on native; full (non-alpha) utilities
69
+ * resolve directly through bloom's `global.css` `var(--x)` indirection.
60
70
  *
61
71
  * Why a STATIC `import`, not a runtime `require` (critical)
62
72
  * ---------------------------------------------------------
@@ -86,15 +96,15 @@ var _styleBuilder = require("./color-scope/style-builder.js");
86
96
  * `shared.rootVariables[name]`, and `@property --x` goes through
87
97
  * `name.startsWith("--") ? name.slice(2) : name`. The lookup side matches: a `var(--x)`
88
98
  * reference compiles to `[{}, "var", ident.slice(2)]`, so `varResolver` looks up the
89
- * bare name. `buildScopeVars` returns keys WITH the `--` prefix, so we strip it before
90
- * writing each entry.
99
+ * bare name. `getResolvedTokens` returns keys WITH the `--` prefix, so we strip it
100
+ * before writing each entry.
91
101
  *
92
102
  * Value shape
93
103
  * -----------
94
104
  * Each entry is a `VariableValue[]` — an array of `[value, mediaCondition?]` tuples.
95
105
  * Bloom's preset vars are unconditional, so each is a single-element `[[value]]`, e.g.
96
- * `rootVariables('primary').set([['205 87% 53%']])`. This is the same shape the compiler
97
- * emits for unconditional `:root` vars.
106
+ * `rootVariables('primary').set([['rgb(31 153 239)']])`. This is the same shape the
107
+ * compiler emits for unconditional `:root` vars.
98
108
  *
99
109
  * This is native-only and additive: the `VariableContextProvider` wrapper stays (it is
100
110
  * the correct, scoped mechanism for `BloomColorScope` subtree overrides and harmlessly
@@ -117,9 +127,9 @@ var _styleBuilder = require("./color-scope/style-builder.js");
117
127
  */
118
128
  function applyNativeRootVars(colorPreset, mode) {
119
129
  if (typeof _nativeInternal.rootVariables !== 'function') return;
120
- const vars = (0, _styleBuilder.buildScopeVars)(colorPreset, mode);
130
+ const vars = (0, _tokenRegistry.getResolvedTokens)(colorPreset, mode);
121
131
  for (const [key, value] of Object.entries(vars)) {
122
- // The family is keyed by the bare name; `buildScopeVars` keys include `--`.
132
+ // The family is keyed by the bare name; `getResolvedTokens` keys include `--`.
123
133
  const name = key.startsWith('--') ? key.slice(2) : key;
124
134
  (0, _nativeInternal.rootVariables)(name).set([[value]]);
125
135
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_nativeInternal","require","_styleBuilder","applyNativeRootVars","colorPreset","mode","rootVariables","vars","buildScopeVars","key","value","Object","entries","name","startsWith","slice","set"],"sourceRoot":"../../../src","sources":["theme/native-root-vars.native.ts"],"mappings":";;;;;;AAgBA,IAAAA,eAAA,GAAAC,OAAA;AAEA,IAAAC,aAAA,GAAAD,OAAA;AAlBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,mBAAmBA,CAACC,WAAyB,EAAEC,IAAsB,EAAQ;EAC3F,IAAI,OAAOC,6BAAa,KAAK,UAAU,EAAE;EAEzC,MAAMC,IAAI,GAAG,IAAAC,4BAAc,EAACJ,WAAW,EAAEC,IAAI,CAAC;EAC9C,KAAK,MAAM,CAACI,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,IAAI,CAAC,EAAE;IAC/C;IACA,MAAMM,IAAI,GAAGJ,GAAG,CAACK,UAAU,CAAC,IAAI,CAAC,GAAGL,GAAG,CAACM,KAAK,CAAC,CAAC,CAAC,GAAGN,GAAG;IACtD,IAAAH,6BAAa,EAACO,IAAI,CAAC,CAACG,GAAG,CAAC,CAAC,CAACN,KAAK,CAAC,CAAC,CAAC;EACpC;AACF","ignoreList":[]}
1
+ {"version":3,"names":["_nativeInternal","require","_tokenRegistry","applyNativeRootVars","colorPreset","mode","rootVariables","vars","getResolvedTokens","key","value","Object","entries","name","startsWith","slice","set"],"sourceRoot":"../../../src","sources":["theme/native-root-vars.native.ts"],"mappings":";;;;;;AAgBA,IAAAA,eAAA,GAAAC,OAAA;AAGA,IAAAC,cAAA,GAAAD,OAAA;AAnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,mBAAmBA,CAACC,WAAyB,EAAEC,IAAsB,EAAQ;EAC3F,IAAI,OAAOC,6BAAa,KAAK,UAAU,EAAE;EAEzC,MAAMC,IAAI,GAAG,IAAAC,gCAAiB,EAACJ,WAAW,EAAEC,IAAI,CAAC;EACjD,KAAK,MAAM,CAACI,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,IAAI,CAAC,EAAE;IAC/C;IACA,MAAMM,IAAI,GAAGJ,GAAG,CAACK,UAAU,CAAC,IAAI,CAAC,GAAGL,GAAG,CAACM,KAAK,CAAC,CAAC,CAAC,GAAGN,GAAG;IACtD,IAAAH,6BAAa,EAACO,IAAI,CAAC,CAACG,GAAG,CAAC,CAAC,CAACN,KAAK,CAAC,CAAC,CAAC;EACpC;AACF","ignoreList":[]}