@oxyhq/bloom 0.36.0 → 0.37.1

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 (235) hide show
  1. package/lib/commonjs/theme/build-theme.js +31 -43
  2. package/lib/commonjs/theme/build-theme.js.map +1 -1
  3. package/lib/commonjs/theme/color-engine/cam16.js +161 -0
  4. package/lib/commonjs/theme/color-engine/cam16.js.map +1 -0
  5. package/lib/commonjs/theme/color-engine/color-role.js +183 -0
  6. package/lib/commonjs/theme/color-engine/color-role.js.map +1 -0
  7. package/lib/commonjs/theme/color-engine/color-roles.js +416 -0
  8. package/lib/commonjs/theme/color-engine/color-roles.js.map +1 -0
  9. package/lib/commonjs/theme/color-engine/color-utils.js +157 -0
  10. package/lib/commonjs/theme/color-engine/color-utils.js.map +1 -0
  11. package/lib/commonjs/theme/color-engine/contrast-curve.js +32 -0
  12. package/lib/commonjs/theme/color-engine/contrast-curve.js.map +1 -0
  13. package/lib/commonjs/theme/color-engine/contrast.js +70 -0
  14. package/lib/commonjs/theme/color-engine/contrast.js.map +1 -0
  15. package/lib/commonjs/theme/color-engine/dislike-analyzer.js +26 -0
  16. package/lib/commonjs/theme/color-engine/dislike-analyzer.js.map +1 -0
  17. package/lib/commonjs/theme/color-engine/dynamic-scheme.js +70 -0
  18. package/lib/commonjs/theme/color-engine/dynamic-scheme.js.map +1 -0
  19. package/lib/commonjs/theme/color-engine/hct-solver.js +236 -0
  20. package/lib/commonjs/theme/color-engine/hct-solver.js.map +1 -0
  21. package/lib/commonjs/theme/color-engine/hct.js +67 -0
  22. package/lib/commonjs/theme/color-engine/hct.js.map +1 -0
  23. package/lib/commonjs/theme/color-engine/index.js +173 -0
  24. package/lib/commonjs/theme/color-engine/index.js.map +1 -0
  25. package/lib/commonjs/theme/color-engine/lab-point-provider.js +32 -0
  26. package/lib/commonjs/theme/color-engine/lab-point-provider.js.map +1 -0
  27. package/lib/commonjs/theme/color-engine/math-utils.js +77 -0
  28. package/lib/commonjs/theme/color-engine/math-utils.js.map +1 -0
  29. package/lib/commonjs/theme/color-engine/quantizer-map.js +24 -0
  30. package/lib/commonjs/theme/color-engine/quantizer-map.js.map +1 -0
  31. package/lib/commonjs/theme/color-engine/quantizer-wu.js +266 -0
  32. package/lib/commonjs/theme/color-engine/quantizer-wu.js.map +1 -0
  33. package/lib/commonjs/theme/color-engine/scheme-variants.js +102 -0
  34. package/lib/commonjs/theme/color-engine/scheme-variants.js.map +1 -0
  35. package/lib/commonjs/theme/color-engine/score.js +80 -0
  36. package/lib/commonjs/theme/color-engine/score.js.map +1 -0
  37. package/lib/commonjs/theme/color-engine/seed-from-image.js +73 -0
  38. package/lib/commonjs/theme/color-engine/seed-from-image.js.map +1 -0
  39. package/lib/commonjs/theme/color-engine/tonal-palette.js +95 -0
  40. package/lib/commonjs/theme/color-engine/tonal-palette.js.map +1 -0
  41. package/lib/commonjs/theme/color-engine/tone-delta-pair.js +26 -0
  42. package/lib/commonjs/theme/color-engine/tone-delta-pair.js.map +1 -0
  43. package/lib/commonjs/theme/color-engine/variant.js +26 -0
  44. package/lib/commonjs/theme/color-engine/variant.js.map +1 -0
  45. package/lib/commonjs/theme/color-engine/viewing-conditions.js +61 -0
  46. package/lib/commonjs/theme/color-engine/viewing-conditions.js.map +1 -0
  47. package/lib/commonjs/theme/color-presets.js +44 -572
  48. package/lib/commonjs/theme/color-presets.js.map +1 -1
  49. package/lib/commonjs/theme/preset-vars.js +69 -49
  50. package/lib/commonjs/theme/preset-vars.js.map +1 -1
  51. package/lib/module/theme/build-theme.js +32 -44
  52. package/lib/module/theme/build-theme.js.map +1 -1
  53. package/lib/module/theme/color-engine/cam16.js +155 -0
  54. package/lib/module/theme/color-engine/cam16.js.map +1 -0
  55. package/lib/module/theme/color-engine/color-role.js +177 -0
  56. package/lib/module/theme/color-engine/color-role.js.map +1 -0
  57. package/lib/module/theme/color-engine/color-roles.js +411 -0
  58. package/lib/module/theme/color-engine/color-roles.js.map +1 -0
  59. package/lib/module/theme/color-engine/color-utils.js +135 -0
  60. package/lib/module/theme/color-engine/color-utils.js.map +1 -0
  61. package/lib/module/theme/color-engine/contrast-curve.js +26 -0
  62. package/lib/module/theme/color-engine/contrast-curve.js.map +1 -0
  63. package/lib/module/theme/color-engine/contrast.js +61 -0
  64. package/lib/module/theme/color-engine/contrast.js.map +1 -0
  65. package/lib/module/theme/color-engine/dislike-analyzer.js +20 -0
  66. package/lib/module/theme/color-engine/dislike-analyzer.js.map +1 -0
  67. package/lib/module/theme/color-engine/dynamic-scheme.js +65 -0
  68. package/lib/module/theme/color-engine/dynamic-scheme.js.map +1 -0
  69. package/lib/module/theme/color-engine/hct-solver.js +231 -0
  70. package/lib/module/theme/color-engine/hct-solver.js.map +1 -0
  71. package/lib/module/theme/color-engine/hct.js +61 -0
  72. package/lib/module/theme/color-engine/hct.js.map +1 -0
  73. package/lib/module/theme/color-engine/index.js +57 -0
  74. package/lib/module/theme/color-engine/index.js.map +1 -0
  75. package/lib/module/theme/color-engine/lab-point-provider.js +25 -0
  76. package/lib/module/theme/color-engine/lab-point-provider.js.map +1 -0
  77. package/lib/module/theme/color-engine/math-utils.js +65 -0
  78. package/lib/module/theme/color-engine/math-utils.js.map +1 -0
  79. package/lib/module/theme/color-engine/quantizer-map.js +20 -0
  80. package/lib/module/theme/color-engine/quantizer-map.js.map +1 -0
  81. package/lib/module/theme/color-engine/quantizer-wu.js +261 -0
  82. package/lib/module/theme/color-engine/quantizer-wu.js.map +1 -0
  83. package/lib/module/theme/color-engine/scheme-variants.js +93 -0
  84. package/lib/module/theme/color-engine/scheme-variants.js.map +1 -0
  85. package/lib/module/theme/color-engine/score.js +75 -0
  86. package/lib/module/theme/color-engine/score.js.map +1 -0
  87. package/lib/module/theme/color-engine/seed-from-image.js +67 -0
  88. package/lib/module/theme/color-engine/seed-from-image.js.map +1 -0
  89. package/lib/module/theme/color-engine/tonal-palette.js +89 -0
  90. package/lib/module/theme/color-engine/tonal-palette.js.map +1 -0
  91. package/lib/module/theme/color-engine/tone-delta-pair.js +21 -0
  92. package/lib/module/theme/color-engine/tone-delta-pair.js.map +1 -0
  93. package/lib/module/theme/color-engine/variant.js +22 -0
  94. package/lib/module/theme/color-engine/variant.js.map +1 -0
  95. package/lib/module/theme/color-engine/viewing-conditions.js +55 -0
  96. package/lib/module/theme/color-engine/viewing-conditions.js.map +1 -0
  97. package/lib/module/theme/color-presets.js +44 -572
  98. package/lib/module/theme/color-presets.js.map +1 -1
  99. package/lib/module/theme/preset-vars.js +69 -48
  100. package/lib/module/theme/preset-vars.js.map +1 -1
  101. package/lib/typescript/commonjs/theme/build-theme.d.ts.map +1 -1
  102. package/lib/typescript/commonjs/theme/color-engine/cam16.d.ts +26 -0
  103. package/lib/typescript/commonjs/theme/color-engine/cam16.d.ts.map +1 -0
  104. package/lib/typescript/commonjs/theme/color-engine/color-role.d.ts +36 -0
  105. package/lib/typescript/commonjs/theme/color-engine/color-role.d.ts.map +1 -0
  106. package/lib/typescript/commonjs/theme/color-engine/color-roles.d.ts +58 -0
  107. package/lib/typescript/commonjs/theme/color-engine/color-roles.d.ts.map +1 -0
  108. package/lib/typescript/commonjs/theme/color-engine/color-utils.d.ts +32 -0
  109. package/lib/typescript/commonjs/theme/color-engine/color-utils.d.ts.map +1 -0
  110. package/lib/typescript/commonjs/theme/color-engine/contrast-curve.d.ts +9 -0
  111. package/lib/typescript/commonjs/theme/color-engine/contrast-curve.d.ts.map +1 -0
  112. package/lib/typescript/commonjs/theme/color-engine/contrast.d.ts +12 -0
  113. package/lib/typescript/commonjs/theme/color-engine/contrast.d.ts.map +1 -0
  114. package/lib/typescript/commonjs/theme/color-engine/dislike-analyzer.d.ts +11 -0
  115. package/lib/typescript/commonjs/theme/color-engine/dislike-analyzer.d.ts.map +1 -0
  116. package/lib/typescript/commonjs/theme/color-engine/dynamic-scheme.d.ts +47 -0
  117. package/lib/typescript/commonjs/theme/color-engine/dynamic-scheme.d.ts.map +1 -0
  118. package/lib/typescript/commonjs/theme/color-engine/hct-solver.d.ts +6 -0
  119. package/lib/typescript/commonjs/theme/color-engine/hct-solver.d.ts.map +1 -0
  120. package/lib/typescript/commonjs/theme/color-engine/hct.d.ts +20 -0
  121. package/lib/typescript/commonjs/theme/color-engine/hct.d.ts.map +1 -0
  122. package/lib/typescript/commonjs/theme/color-engine/index.d.ts +44 -0
  123. package/lib/typescript/commonjs/theme/color-engine/index.d.ts.map +1 -0
  124. package/lib/typescript/commonjs/theme/color-engine/lab-point-provider.d.ts +6 -0
  125. package/lib/typescript/commonjs/theme/color-engine/lab-point-provider.d.ts.map +1 -0
  126. package/lib/typescript/commonjs/theme/color-engine/math-utils.d.ts +46 -0
  127. package/lib/typescript/commonjs/theme/color-engine/math-utils.d.ts.map +1 -0
  128. package/lib/typescript/commonjs/theme/color-engine/quantizer-map.d.ts +3 -0
  129. package/lib/typescript/commonjs/theme/color-engine/quantizer-map.d.ts.map +1 -0
  130. package/lib/typescript/commonjs/theme/color-engine/quantizer-wu.d.ts +3 -0
  131. package/lib/typescript/commonjs/theme/color-engine/quantizer-wu.d.ts.map +1 -0
  132. package/lib/typescript/commonjs/theme/color-engine/scheme-variants.d.ts +23 -0
  133. package/lib/typescript/commonjs/theme/color-engine/scheme-variants.d.ts.map +1 -0
  134. package/lib/typescript/commonjs/theme/color-engine/score.d.ts +8 -0
  135. package/lib/typescript/commonjs/theme/color-engine/score.d.ts.map +1 -0
  136. package/lib/typescript/commonjs/theme/color-engine/seed-from-image.d.ts +13 -0
  137. package/lib/typescript/commonjs/theme/color-engine/seed-from-image.d.ts.map +1 -0
  138. package/lib/typescript/commonjs/theme/color-engine/tonal-palette.d.ts +24 -0
  139. package/lib/typescript/commonjs/theme/color-engine/tonal-palette.d.ts.map +1 -0
  140. package/lib/typescript/commonjs/theme/color-engine/tone-delta-pair.d.ts +19 -0
  141. package/lib/typescript/commonjs/theme/color-engine/tone-delta-pair.d.ts.map +1 -0
  142. package/lib/typescript/commonjs/theme/color-engine/variant.d.ts +19 -0
  143. package/lib/typescript/commonjs/theme/color-engine/variant.d.ts.map +1 -0
  144. package/lib/typescript/commonjs/theme/color-engine/viewing-conditions.d.ts +18 -0
  145. package/lib/typescript/commonjs/theme/color-engine/viewing-conditions.d.ts.map +1 -0
  146. package/lib/typescript/commonjs/theme/color-presets.d.ts +25 -20
  147. package/lib/typescript/commonjs/theme/color-presets.d.ts.map +1 -1
  148. package/lib/typescript/commonjs/theme/preset-vars.d.ts +16 -12
  149. package/lib/typescript/commonjs/theme/preset-vars.d.ts.map +1 -1
  150. package/lib/typescript/module/theme/build-theme.d.ts.map +1 -1
  151. package/lib/typescript/module/theme/color-engine/cam16.d.ts +26 -0
  152. package/lib/typescript/module/theme/color-engine/cam16.d.ts.map +1 -0
  153. package/lib/typescript/module/theme/color-engine/color-role.d.ts +36 -0
  154. package/lib/typescript/module/theme/color-engine/color-role.d.ts.map +1 -0
  155. package/lib/typescript/module/theme/color-engine/color-roles.d.ts +58 -0
  156. package/lib/typescript/module/theme/color-engine/color-roles.d.ts.map +1 -0
  157. package/lib/typescript/module/theme/color-engine/color-utils.d.ts +32 -0
  158. package/lib/typescript/module/theme/color-engine/color-utils.d.ts.map +1 -0
  159. package/lib/typescript/module/theme/color-engine/contrast-curve.d.ts +9 -0
  160. package/lib/typescript/module/theme/color-engine/contrast-curve.d.ts.map +1 -0
  161. package/lib/typescript/module/theme/color-engine/contrast.d.ts +12 -0
  162. package/lib/typescript/module/theme/color-engine/contrast.d.ts.map +1 -0
  163. package/lib/typescript/module/theme/color-engine/dislike-analyzer.d.ts +11 -0
  164. package/lib/typescript/module/theme/color-engine/dislike-analyzer.d.ts.map +1 -0
  165. package/lib/typescript/module/theme/color-engine/dynamic-scheme.d.ts +47 -0
  166. package/lib/typescript/module/theme/color-engine/dynamic-scheme.d.ts.map +1 -0
  167. package/lib/typescript/module/theme/color-engine/hct-solver.d.ts +6 -0
  168. package/lib/typescript/module/theme/color-engine/hct-solver.d.ts.map +1 -0
  169. package/lib/typescript/module/theme/color-engine/hct.d.ts +20 -0
  170. package/lib/typescript/module/theme/color-engine/hct.d.ts.map +1 -0
  171. package/lib/typescript/module/theme/color-engine/index.d.ts +44 -0
  172. package/lib/typescript/module/theme/color-engine/index.d.ts.map +1 -0
  173. package/lib/typescript/module/theme/color-engine/lab-point-provider.d.ts +6 -0
  174. package/lib/typescript/module/theme/color-engine/lab-point-provider.d.ts.map +1 -0
  175. package/lib/typescript/module/theme/color-engine/math-utils.d.ts +46 -0
  176. package/lib/typescript/module/theme/color-engine/math-utils.d.ts.map +1 -0
  177. package/lib/typescript/module/theme/color-engine/quantizer-map.d.ts +3 -0
  178. package/lib/typescript/module/theme/color-engine/quantizer-map.d.ts.map +1 -0
  179. package/lib/typescript/module/theme/color-engine/quantizer-wu.d.ts +3 -0
  180. package/lib/typescript/module/theme/color-engine/quantizer-wu.d.ts.map +1 -0
  181. package/lib/typescript/module/theme/color-engine/scheme-variants.d.ts +23 -0
  182. package/lib/typescript/module/theme/color-engine/scheme-variants.d.ts.map +1 -0
  183. package/lib/typescript/module/theme/color-engine/score.d.ts +8 -0
  184. package/lib/typescript/module/theme/color-engine/score.d.ts.map +1 -0
  185. package/lib/typescript/module/theme/color-engine/seed-from-image.d.ts +13 -0
  186. package/lib/typescript/module/theme/color-engine/seed-from-image.d.ts.map +1 -0
  187. package/lib/typescript/module/theme/color-engine/tonal-palette.d.ts +24 -0
  188. package/lib/typescript/module/theme/color-engine/tonal-palette.d.ts.map +1 -0
  189. package/lib/typescript/module/theme/color-engine/tone-delta-pair.d.ts +19 -0
  190. package/lib/typescript/module/theme/color-engine/tone-delta-pair.d.ts.map +1 -0
  191. package/lib/typescript/module/theme/color-engine/variant.d.ts +19 -0
  192. package/lib/typescript/module/theme/color-engine/variant.d.ts.map +1 -0
  193. package/lib/typescript/module/theme/color-engine/viewing-conditions.d.ts +18 -0
  194. package/lib/typescript/module/theme/color-engine/viewing-conditions.d.ts.map +1 -0
  195. package/lib/typescript/module/theme/color-presets.d.ts +25 -20
  196. package/lib/typescript/module/theme/color-presets.d.ts.map +1 -1
  197. package/lib/typescript/module/theme/preset-vars.d.ts +16 -12
  198. package/lib/typescript/module/theme/preset-vars.d.ts.map +1 -1
  199. package/package.json +12 -1
  200. package/src/__tests__/BloomThemeProvider.test.tsx +9 -4
  201. package/src/__tests__/native-root-vars.test.ts +8 -4
  202. package/src/__tests__/preset-vars.test.ts +66 -37
  203. package/src/__tests__/theme.test.ts +20 -12
  204. package/src/theme/__tests__/__fixtures__/golden-resolved-tokens.json +509 -509
  205. package/src/theme/__tests__/__snapshots__/visual-gallery.test.tsx.snap +613 -613
  206. package/src/theme/__tests__/color-engine-golden.test.ts +81 -0
  207. package/src/theme/__tests__/fixtures/color-engine-golden.json +1 -0
  208. package/src/theme/__tests__/golden-tokens.test.ts +6 -7
  209. package/src/theme/__tests__/runtime-contract.test.ts +8 -8
  210. package/src/theme/__tests__/theme-colors-parity.test.ts +44 -88
  211. package/src/theme/build-theme.ts +32 -44
  212. package/src/theme/color-engine/cam16.ts +179 -0
  213. package/src/theme/color-engine/color-role.ts +217 -0
  214. package/src/theme/color-engine/color-roles.ts +435 -0
  215. package/src/theme/color-engine/color-utils.ts +157 -0
  216. package/src/theme/color-engine/contrast-curve.ts +25 -0
  217. package/src/theme/color-engine/contrast.ts +59 -0
  218. package/src/theme/color-engine/dislike-analyzer.ts +19 -0
  219. package/src/theme/color-engine/dynamic-scheme.ts +90 -0
  220. package/src/theme/color-engine/hct-solver.ts +263 -0
  221. package/src/theme/color-engine/hct.ts +69 -0
  222. package/src/theme/color-engine/index.ts +73 -0
  223. package/src/theme/color-engine/lab-point-provider.ts +26 -0
  224. package/src/theme/color-engine/math-utils.ts +69 -0
  225. package/src/theme/color-engine/quantizer-map.ts +17 -0
  226. package/src/theme/color-engine/quantizer-wu.ts +320 -0
  227. package/src/theme/color-engine/scheme-variants.ts +113 -0
  228. package/src/theme/color-engine/score.ts +82 -0
  229. package/src/theme/color-engine/seed-from-image.ts +64 -0
  230. package/src/theme/color-engine/tonal-palette.ts +94 -0
  231. package/src/theme/color-engine/tone-delta-pair.ts +21 -0
  232. package/src/theme/color-engine/variant.ts +18 -0
  233. package/src/theme/color-engine/viewing-conditions.ts +77 -0
  234. package/src/theme/color-presets.ts +54 -631
  235. package/src/theme/preset-vars.ts +70 -51
@@ -7,6 +7,7 @@ exports.STATUS_COLORS = void 0;
7
7
  exports.buildTheme = buildTheme;
8
8
  var _reactNative = require("react-native");
9
9
  var _colorPresets = require("./color-presets.js");
10
+ var _index = require("./color-engine/index.js");
10
11
  var _adaptiveColors = require("./adaptive-colors.js");
11
12
  var _tokenRegistry = require("./token-registry.js");
12
13
  var _gradients = require("./gradients.js");
@@ -22,29 +23,16 @@ const STATUS_COLORS = exports.STATUS_COLORS = {
22
23
  };
23
24
 
24
25
  /**
25
- * Extract the integer hue from a shadcn-style raw HSL triple (`'H S% L%'`,
26
- * optionally with an alpha tail). Used to seed the computed brand tints below
27
- * from the preset's primary/destructive hue, exactly as pre-0.8.0.
28
- */
29
- function extractHue(triple) {
30
- const first = (triple.split(/\s+/)[0] ?? '0').replace(/deg$/i, '');
31
- const hue = parseInt(first, 10);
32
- return Number.isFinite(hue) ? hue : 0;
33
- }
34
-
35
- /**
36
- * Build the JS `theme.colors` object from the SAME canonical rgb token source
37
- * the web/native CSS-var writes use (`getResolvedTokens`). JS styles and the
38
- * `var(--x)` document tokens therefore share one rgb pipeline — no second,
39
- * drift-prone HSL conversion lives here.
26
+ * Build the JS `theme.colors` object from the SAME engine-derived colours the
27
+ * web/native CSS-var writes use. Token-backed fields read from the resolved rgb
28
+ * token map (`getResolvedTokens`, which sources from the engine via
29
+ * `getPresetVars`); the brand-tint family (primarySubtle/negative/…) reads the
30
+ * engine's container/error roles directly. JS styles and the `var(--x)` document
31
+ * tokens therefore share one engine-backed pipeline — no second HSL conversion.
40
32
  *
41
- * Token-backed values read straight from the resolved rgb map via `g(...)`.
42
- * The brand tints (primarySubtle/negative/contrast50/...) reproduce the EXACT
43
- * pre-0.8.0 colors computed from the preset's primary/destructive HUE with
44
- * the historical `hsl(h, s%, l%)` math — but are emitted as `rgb(...)` by
45
- * routing the triple through the registry's `hslToSrgb`, so the single-format
46
- * pipeline is preserved. (`hsl(h,s%,l%)` and the `rgb(...)` of the same color
47
- * are byte-identical under the RN/RNW/browser parser.)
33
+ * The two intentional fixes land here too: `card` is now the lightest surface
34
+ * (`--card` engine `surfaceContainerLowest`) and `secondary` is a real
35
+ * contrast colour (engine `secondary` role), not a mirror of `primary`.
48
36
  */
49
37
  function buildColorsFromPreset(preset, resolved) {
50
38
  const t = (0, _tokenRegistry.getResolvedTokens)(preset, resolved);
@@ -53,22 +41,21 @@ function buildColorsFromPreset(preset, resolved) {
53
41
  // Read a resolved `rgb(...)` token by its bare name (no leading `--`).
54
42
  const g = k => t[`--${k}`] ?? 'rgb(0 0 0)';
55
43
 
56
- // Convert a computed `H S% L%` triple to the canonical `rgb(...)` via the
57
- // registry's single HSL→sRGB conversion (matches the old `hsl(h,s%,l%)`).
58
- const hslRgb = (h, s, l) => (0, _tokenRegistry.hslToSrgb)(`${h} ${s}% ${l}%`);
59
-
60
- // Brand hues seed the computed tints from the preset's raw HSL triples,
61
- // exactly as the pre-0.8.0 logic did.
62
- const presetTokens = isDark ? _colorPresets.APP_COLOR_PRESETS[preset].dark : _colorPresets.APP_COLOR_PRESETS[preset].light;
63
- const pHue = extractHue(presetTokens['--primary'] ?? '0 0% 50%');
64
- const dHue = extractHue(presetTokens['--destructive'] ?? '0 0% 0%');
44
+ // The full engine role set for fields that map to roles Bloom's canonical
45
+ // token set does not surface (containers, error family).
46
+ const config = _colorPresets.APP_COLOR_PRESETS[preset];
47
+ const r = (0, _index.generateRoleColors)({
48
+ seed: config.hex,
49
+ variant: config.variant,
50
+ isDark
51
+ });
65
52
  return {
66
53
  background: g('background'),
67
54
  backgroundSecondary: g('surface'),
68
- backgroundTertiary: g('muted'),
55
+ backgroundTertiary: g('popover'),
69
56
  text: g('foreground'),
70
57
  textSecondary: g('muted-foreground'),
71
- textTertiary: g('muted-foreground'),
58
+ textTertiary: r.outline,
72
59
  border: g('border'),
73
60
  borderLight: g('input'),
74
61
  primary: g('primary'),
@@ -77,20 +64,21 @@ function buildColorsFromPreset(preset, resolved) {
77
64
  // `primaryDark` is the page background — retained for downstream consumers.
78
65
  primaryLight: g('surface'),
79
66
  primaryDark: g('background'),
80
- // `secondary` historically mirrors `primary`. Retained for compatibility.
81
- secondary: g('primary'),
67
+ // The FIX: `secondary` is now a real contrast colour (engine `secondary`).
68
+ secondary: g('secondary'),
82
69
  tint: g('primary'),
83
70
  icon: g('muted-foreground'),
84
71
  iconActive: g('primary'),
85
72
  ...STATUS_COLORS,
86
- primarySubtle: isDark ? hslRgb(pHue, 50, 10) : hslRgb(pHue, 70, 93),
87
- primarySubtleForeground: isDark ? hslRgb(pHue, 70, 65) : hslRgb(pHue, 90, 25),
88
- negative: hslRgb(dHue, 84, 45),
89
- negativeForeground: '#FFFFFF',
90
- negativeSubtle: isDark ? hslRgb(dHue, 50, 10) : hslRgb(dHue, 90, 95),
91
- negativeSubtleForeground: isDark ? hslRgb(dHue, 70, 65) : hslRgb(dHue, 80, 40),
92
- contrast50: isDark ? hslRgb(pHue, 15, 12) : hslRgb(pHue, 10, 93),
93
- card: g('surface'),
73
+ primarySubtle: r.primaryContainer,
74
+ primarySubtleForeground: r.onPrimaryContainer,
75
+ negative: r.error,
76
+ negativeForeground: r.onError,
77
+ negativeSubtle: r.errorContainer,
78
+ negativeSubtleForeground: r.onErrorContainer,
79
+ contrast50: g('muted'),
80
+ // The FIX: `card` is the lightest surface (engine `surfaceContainerLowest`).
81
+ card: g('card'),
94
82
  shadow: isDark ? 'rgba(0, 0, 0, 0.3)' : 'rgba(0, 0, 0, 0.1)',
95
83
  overlay: 'rgba(0, 0, 0, 0.5)'
96
84
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_colorPresets","_adaptiveColors","_tokenRegistry","_gradients","STATUS_COLORS","exports","success","error","warning","info","extractHue","triple","first","split","replace","hue","parseInt","Number","isFinite","buildColorsFromPreset","preset","resolved","t","getResolvedTokens","isDark","g","k","hslRgb","h","s","l","hslToSrgb","presetTokens","APP_COLOR_PRESETS","dark","light","pHue","dHue","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","gradients","THEME_GRADIENTS","isLight"],"sourceRoot":"../../../src","sources":["theme/build-theme.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_colorPresets","_index","_adaptiveColors","_tokenRegistry","_gradients","STATUS_COLORS","exports","success","error","warning","info","buildColorsFromPreset","preset","resolved","t","getResolvedTokens","isDark","g","k","config","APP_COLOR_PRESETS","r","generateRoleColors","seed","hex","variant","background","backgroundSecondary","backgroundTertiary","text","textSecondary","textTertiary","outline","border","borderLight","primary","primaryForeground","primaryLight","primaryDark","secondary","tint","icon","iconActive","primarySubtle","primaryContainer","primarySubtleForeground","onPrimaryContainer","negative","negativeForeground","onError","negativeSubtle","errorContainer","negativeSubtleForeground","onErrorContainer","contrast50","card","shadow","overlay","buildTheme","isAdaptive","adaptive","Platform","OS","getAdaptiveColors","undefined","colors","mode","gradients","THEME_GRADIENTS","isLight"],"sourceRoot":"../../../src","sources":["theme/build-theme.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Cam16 = void 0;
7
+ var _colorUtils = require("./color-utils.js");
8
+ var _mathUtils = require("./math-utils.js");
9
+ var _viewingConditions = require("./viewing-conditions.js");
10
+ /**
11
+ * Bloom colour engine — CAM16 colour appearance model.
12
+ *
13
+ * Faithful port of Material Color Utilities' `Cam16` (Apache-2.0) into Bloom's
14
+ * own code. A colour is defined by its ARGB AND the viewing conditions; CAM16
15
+ * also exposes CAM16-UCS coordinates (jstar/astar/bstar) for perceptual
16
+ * distance. Underpins the HCT colour space.
17
+ */
18
+
19
+ class Cam16 {
20
+ constructor(hue, chroma, j, q, m, s, jstar, astar, bstar) {
21
+ this.hue = hue;
22
+ this.chroma = chroma;
23
+ this.j = j;
24
+ this.q = q;
25
+ this.m = m;
26
+ this.s = s;
27
+ this.jstar = jstar;
28
+ this.astar = astar;
29
+ this.bstar = bstar;
30
+ }
31
+
32
+ /** CAM16-UCS perceptual distance to another colour. */
33
+ distance(other) {
34
+ const dJ = this.jstar - other.jstar;
35
+ const dA = this.astar - other.astar;
36
+ const dB = this.bstar - other.bstar;
37
+ const dEPrime = Math.sqrt(dJ * dJ + dA * dA + dB * dB);
38
+ return 1.41 * Math.pow(dEPrime, 0.63);
39
+ }
40
+ static fromInt(argb) {
41
+ return Cam16.fromIntInViewingConditions(argb, _viewingConditions.ViewingConditions.DEFAULT);
42
+ }
43
+ static fromIntInViewingConditions(argb, vc) {
44
+ const red = (argb & 0x00ff0000) >> 16;
45
+ const green = (argb & 0x0000ff00) >> 8;
46
+ const blue = argb & 0x000000ff;
47
+ const redL = (0, _colorUtils.linearized)(red);
48
+ const greenL = (0, _colorUtils.linearized)(green);
49
+ const blueL = (0, _colorUtils.linearized)(blue);
50
+ const x = 0.41233895 * redL + 0.35762064 * greenL + 0.18051042 * blueL;
51
+ const y = 0.2126 * redL + 0.7152 * greenL + 0.0722 * blueL;
52
+ const z = 0.01932141 * redL + 0.11916382 * greenL + 0.95034478 * blueL;
53
+ return Cam16.fromXyzInViewingConditions(x, y, z, vc);
54
+ }
55
+ static fromXyzInViewingConditions(x, y, z, vc) {
56
+ const rC = 0.401288 * x + 0.650173 * y - 0.051461 * z;
57
+ const gC = -0.250268 * x + 1.204414 * y + 0.045854 * z;
58
+ const bC = -0.002079 * x + 0.048952 * y + 0.953127 * z;
59
+ const rD = vc.rgbD[0] * rC;
60
+ const gD = vc.rgbD[1] * gC;
61
+ const bD = vc.rgbD[2] * bC;
62
+ const rAF = Math.pow(vc.fl * Math.abs(rD) / 100.0, 0.42);
63
+ const gAF = Math.pow(vc.fl * Math.abs(gD) / 100.0, 0.42);
64
+ const bAF = Math.pow(vc.fl * Math.abs(bD) / 100.0, 0.42);
65
+ const rA = (0, _mathUtils.signum)(rD) * 400.0 * rAF / (rAF + 27.13);
66
+ const gA = (0, _mathUtils.signum)(gD) * 400.0 * gAF / (gAF + 27.13);
67
+ const bA = (0, _mathUtils.signum)(bD) * 400.0 * bAF / (bAF + 27.13);
68
+ const a = (11.0 * rA + -12.0 * gA + bA) / 11.0;
69
+ const b = (rA + gA - 2.0 * bA) / 9.0;
70
+ const u = (20.0 * rA + 20.0 * gA + 21.0 * bA) / 20.0;
71
+ const p2 = (40.0 * rA + 20.0 * gA + bA) / 20.0;
72
+ const atan2 = Math.atan2(b, a);
73
+ const atanDegrees = atan2 * 180.0 / Math.PI;
74
+ const hue = atanDegrees < 0 ? atanDegrees + 360.0 : atanDegrees >= 360 ? atanDegrees - 360 : atanDegrees;
75
+ const hueRadians = hue * Math.PI / 180.0;
76
+ const ac = p2 * vc.nbb;
77
+ const J = 100.0 * Math.pow(ac / vc.aw, vc.c * vc.z);
78
+ const Q = 4.0 / vc.c * Math.sqrt(J / 100.0) * (vc.aw + 4.0) * vc.fLRoot;
79
+ const huePrime = hue < 20.14 ? hue + 360 : hue;
80
+ const eHue = 1.0 / 4.0 * (Math.cos(huePrime * Math.PI / 180.0 + 2.0) + 3.8);
81
+ const p1 = 50000.0 / 13.0 * eHue * vc.nc * vc.ncb;
82
+ const t = p1 * Math.sqrt(a * a + b * b) / (u + 0.305);
83
+ const alpha = Math.pow(t, 0.9) * Math.pow(1.64 - Math.pow(0.29, vc.n), 0.73);
84
+ const C = alpha * Math.sqrt(J / 100.0);
85
+ const M = C * vc.fLRoot;
86
+ const s = 50.0 * Math.sqrt(alpha * vc.c / (vc.aw + 4.0));
87
+ const jstar = (1.0 + 100.0 * 0.007) * J / (1.0 + 0.007 * J);
88
+ const mstar = Math.log(1.0 + 0.0228 * M) / 0.0228;
89
+ const astar = mstar * Math.cos(hueRadians);
90
+ const bstar = mstar * Math.sin(hueRadians);
91
+ return new Cam16(hue, C, J, Q, M, s, jstar, astar, bstar);
92
+ }
93
+ static fromJch(j, c, h) {
94
+ return Cam16.fromJchInViewingConditions(j, c, h, _viewingConditions.ViewingConditions.DEFAULT);
95
+ }
96
+ static fromJchInViewingConditions(j, c, h, vc) {
97
+ const q = 4.0 / vc.c * Math.sqrt(j / 100.0) * (vc.aw + 4.0) * vc.fLRoot;
98
+ const m = c * vc.fLRoot;
99
+ const alpha = c / Math.sqrt(j / 100.0);
100
+ const s = 50.0 * Math.sqrt(alpha * vc.c / (vc.aw + 4.0));
101
+ const hueRadians = h * Math.PI / 180.0;
102
+ const jstar = (1.0 + 100.0 * 0.007) * j / (1.0 + 0.007 * j);
103
+ const mstar = 1.0 / 0.0228 * Math.log(1.0 + 0.0228 * m);
104
+ const astar = mstar * Math.cos(hueRadians);
105
+ const bstar = mstar * Math.sin(hueRadians);
106
+ return new Cam16(h, c, j, q, m, s, jstar, astar, bstar);
107
+ }
108
+ static fromUcs(jstar, astar, bstar) {
109
+ return Cam16.fromUcsInViewingConditions(jstar, astar, bstar, _viewingConditions.ViewingConditions.DEFAULT);
110
+ }
111
+ static fromUcsInViewingConditions(jstar, astar, bstar, vc) {
112
+ const a = astar;
113
+ const b = bstar;
114
+ const m = Math.sqrt(a * a + b * b);
115
+ const M = (Math.exp(m * 0.0228) - 1.0) / 0.0228;
116
+ const c = M / vc.fLRoot;
117
+ let h = Math.atan2(b, a) * (180.0 / Math.PI);
118
+ if (h < 0.0) h += 360.0;
119
+ const j = jstar / (1 - (jstar - 100) * 0.007);
120
+ return Cam16.fromJchInViewingConditions(j, c, h, vc);
121
+ }
122
+ toInt() {
123
+ return this.viewed(_viewingConditions.ViewingConditions.DEFAULT);
124
+ }
125
+ viewed(vc) {
126
+ const xyz = this.xyzInViewingConditions(vc);
127
+ return (0, _colorUtils.argbFromXyz)(xyz[0], xyz[1], xyz[2]);
128
+ }
129
+ xyzInViewingConditions(vc) {
130
+ const alpha = this.chroma === 0.0 || this.j === 0.0 ? 0.0 : this.chroma / Math.sqrt(this.j / 100.0);
131
+ const t = Math.pow(alpha / Math.pow(1.64 - Math.pow(0.29, vc.n), 0.73), 1.0 / 0.9);
132
+ const hRad = this.hue * Math.PI / 180.0;
133
+ const eHue = 0.25 * (Math.cos(hRad + 2.0) + 3.8);
134
+ const ac = vc.aw * Math.pow(this.j / 100.0, 1.0 / vc.c / vc.z);
135
+ const p1 = eHue * (50000.0 / 13.0) * vc.nc * vc.ncb;
136
+ const p2 = ac / vc.nbb;
137
+ const hSin = Math.sin(hRad);
138
+ const hCos = Math.cos(hRad);
139
+ const gamma = 23.0 * (p2 + 0.305) * t / (23.0 * p1 + 11.0 * t * hCos + 108.0 * t * hSin);
140
+ const a = gamma * hCos;
141
+ const b = gamma * hSin;
142
+ const rA = (460.0 * p2 + 451.0 * a + 288.0 * b) / 1403.0;
143
+ const gA = (460.0 * p2 - 891.0 * a - 261.0 * b) / 1403.0;
144
+ const bA = (460.0 * p2 - 220.0 * a - 6300.0 * b) / 1403.0;
145
+ const rCBase = Math.max(0, 27.13 * Math.abs(rA) / (400.0 - Math.abs(rA)));
146
+ const rC = (0, _mathUtils.signum)(rA) * (100.0 / vc.fl) * Math.pow(rCBase, 1.0 / 0.42);
147
+ const gCBase = Math.max(0, 27.13 * Math.abs(gA) / (400.0 - Math.abs(gA)));
148
+ const gC = (0, _mathUtils.signum)(gA) * (100.0 / vc.fl) * Math.pow(gCBase, 1.0 / 0.42);
149
+ const bCBase = Math.max(0, 27.13 * Math.abs(bA) / (400.0 - Math.abs(bA)));
150
+ const bC = (0, _mathUtils.signum)(bA) * (100.0 / vc.fl) * Math.pow(bCBase, 1.0 / 0.42);
151
+ const rF = rC / vc.rgbD[0];
152
+ const gF = gC / vc.rgbD[1];
153
+ const bF = bC / vc.rgbD[2];
154
+ const x = 1.86206786 * rF - 1.01125463 * gF + 0.14918677 * bF;
155
+ const y = 0.38752654 * rF + 0.62144744 * gF - 0.00897398 * bF;
156
+ const z = -0.0158415 * rF - 0.03412294 * gF + 1.04996444 * bF;
157
+ return [x, y, z];
158
+ }
159
+ }
160
+ exports.Cam16 = Cam16;
161
+ //# sourceMappingURL=cam16.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_colorUtils","require","_mathUtils","_viewingConditions","Cam16","constructor","hue","chroma","j","q","m","s","jstar","astar","bstar","distance","other","dJ","dA","dB","dEPrime","Math","sqrt","pow","fromInt","argb","fromIntInViewingConditions","ViewingConditions","DEFAULT","vc","red","green","blue","redL","linearized","greenL","blueL","x","y","z","fromXyzInViewingConditions","rC","gC","bC","rD","rgbD","gD","bD","rAF","fl","abs","gAF","bAF","rA","signum","gA","bA","a","b","u","p2","atan2","atanDegrees","PI","hueRadians","ac","nbb","J","aw","c","Q","fLRoot","huePrime","eHue","cos","p1","nc","ncb","t","alpha","n","C","M","mstar","log","sin","fromJch","h","fromJchInViewingConditions","fromUcs","fromUcsInViewingConditions","exp","toInt","viewed","xyz","xyzInViewingConditions","argbFromXyz","hRad","hSin","hCos","gamma","rCBase","max","gCBase","bCBase","rF","gF","bF","exports"],"sourceRoot":"../../../../src","sources":["theme/color-engine/cam16.ts"],"mappings":";;;;;;AAQA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAF,OAAA;AAVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKO,MAAMG,KAAK,CAAC;EACjBC,WAAWA,CACAC,GAAW,EACXC,MAAc,EACdC,CAAS,EACTC,CAAS,EACTC,CAAS,EACTC,CAAS,EACTC,KAAa,EACbC,KAAa,EACbC,KAAa,EACtB;IAAA,KATSR,GAAW,GAAXA,GAAW;IAAA,KACXC,MAAc,GAAdA,MAAc;IAAA,KACdC,CAAS,GAATA,CAAS;IAAA,KACTC,CAAS,GAATA,CAAS;IAAA,KACTC,CAAS,GAATA,CAAS;IAAA,KACTC,CAAS,GAATA,CAAS;IAAA,KACTC,KAAa,GAAbA,KAAa;IAAA,KACbC,KAAa,GAAbA,KAAa;IAAA,KACbC,KAAa,GAAbA,KAAa;EACrB;;EAEH;EACAC,QAAQA,CAACC,KAAY,EAAU;IAC7B,MAAMC,EAAE,GAAG,IAAI,CAACL,KAAK,GAAGI,KAAK,CAACJ,KAAK;IACnC,MAAMM,EAAE,GAAG,IAAI,CAACL,KAAK,GAAGG,KAAK,CAACH,KAAK;IACnC,MAAMM,EAAE,GAAG,IAAI,CAACL,KAAK,GAAGE,KAAK,CAACF,KAAK;IACnC,MAAMM,OAAO,GAAGC,IAAI,CAACC,IAAI,CAACL,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE,CAAC;IACtD,OAAO,IAAI,GAAGE,IAAI,CAACE,GAAG,CAACH,OAAO,EAAE,IAAI,CAAC;EACvC;EAEA,OAAOI,OAAOA,CAACC,IAAY,EAAS;IAClC,OAAOrB,KAAK,CAACsB,0BAA0B,CAACD,IAAI,EAAEE,oCAAiB,CAACC,OAAO,CAAC;EAC1E;EAEA,OAAOF,0BAA0BA,CAACD,IAAY,EAAEI,EAAqB,EAAS;IAC5E,MAAMC,GAAG,GAAG,CAACL,IAAI,GAAG,UAAU,KAAK,EAAE;IACrC,MAAMM,KAAK,GAAG,CAACN,IAAI,GAAG,UAAU,KAAK,CAAC;IACtC,MAAMO,IAAI,GAAGP,IAAI,GAAG,UAAU;IAC9B,MAAMQ,IAAI,GAAG,IAAAC,sBAAU,EAACJ,GAAG,CAAC;IAC5B,MAAMK,MAAM,GAAG,IAAAD,sBAAU,EAACH,KAAK,CAAC;IAChC,MAAMK,KAAK,GAAG,IAAAF,sBAAU,EAACF,IAAI,CAAC;IAC9B,MAAMK,CAAC,GAAG,UAAU,GAAGJ,IAAI,GAAG,UAAU,GAAGE,MAAM,GAAG,UAAU,GAAGC,KAAK;IACtE,MAAME,CAAC,GAAG,MAAM,GAAGL,IAAI,GAAG,MAAM,GAAGE,MAAM,GAAG,MAAM,GAAGC,KAAK;IAC1D,MAAMG,CAAC,GAAG,UAAU,GAAGN,IAAI,GAAG,UAAU,GAAGE,MAAM,GAAG,UAAU,GAAGC,KAAK;IACtE,OAAOhC,KAAK,CAACoC,0BAA0B,CAACH,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAEV,EAAE,CAAC;EACtD;EAEA,OAAOW,0BAA0BA,CAC/BH,CAAS,EACTC,CAAS,EACTC,CAAS,EACTV,EAAqB,EACd;IACP,MAAMY,EAAE,GAAG,QAAQ,GAAGJ,CAAC,GAAG,QAAQ,GAAGC,CAAC,GAAG,QAAQ,GAAGC,CAAC;IACrD,MAAMG,EAAE,GAAG,CAAC,QAAQ,GAAGL,CAAC,GAAG,QAAQ,GAAGC,CAAC,GAAG,QAAQ,GAAGC,CAAC;IACtD,MAAMI,EAAE,GAAG,CAAC,QAAQ,GAAGN,CAAC,GAAG,QAAQ,GAAGC,CAAC,GAAG,QAAQ,GAAGC,CAAC;IACtD,MAAMK,EAAE,GAAGf,EAAE,CAACgB,IAAI,CAAC,CAAC,CAAC,GAAGJ,EAAE;IAC1B,MAAMK,EAAE,GAAGjB,EAAE,CAACgB,IAAI,CAAC,CAAC,CAAC,GAAGH,EAAE;IAC1B,MAAMK,EAAE,GAAGlB,EAAE,CAACgB,IAAI,CAAC,CAAC,CAAC,GAAGF,EAAE;IAC1B,MAAMK,GAAG,GAAG3B,IAAI,CAACE,GAAG,CAAEM,EAAE,CAACoB,EAAE,GAAG5B,IAAI,CAAC6B,GAAG,CAACN,EAAE,CAAC,GAAI,KAAK,EAAE,IAAI,CAAC;IAC1D,MAAMO,GAAG,GAAG9B,IAAI,CAACE,GAAG,CAAEM,EAAE,CAACoB,EAAE,GAAG5B,IAAI,CAAC6B,GAAG,CAACJ,EAAE,CAAC,GAAI,KAAK,EAAE,IAAI,CAAC;IAC1D,MAAMM,GAAG,GAAG/B,IAAI,CAACE,GAAG,CAAEM,EAAE,CAACoB,EAAE,GAAG5B,IAAI,CAAC6B,GAAG,CAACH,EAAE,CAAC,GAAI,KAAK,EAAE,IAAI,CAAC;IAC1D,MAAMM,EAAE,GAAI,IAAAC,iBAAM,EAACV,EAAE,CAAC,GAAG,KAAK,GAAGI,GAAG,IAAKA,GAAG,GAAG,KAAK,CAAC;IACrD,MAAMO,EAAE,GAAI,IAAAD,iBAAM,EAACR,EAAE,CAAC,GAAG,KAAK,GAAGK,GAAG,IAAKA,GAAG,GAAG,KAAK,CAAC;IACrD,MAAMK,EAAE,GAAI,IAAAF,iBAAM,EAACP,EAAE,CAAC,GAAG,KAAK,GAAGK,GAAG,IAAKA,GAAG,GAAG,KAAK,CAAC;IACrD,MAAMK,CAAC,GAAG,CAAC,IAAI,GAAGJ,EAAE,GAAG,CAAC,IAAI,GAAGE,EAAE,GAAGC,EAAE,IAAI,IAAI;IAC9C,MAAME,CAAC,GAAG,CAACL,EAAE,GAAGE,EAAE,GAAG,GAAG,GAAGC,EAAE,IAAI,GAAG;IACpC,MAAMG,CAAC,GAAG,CAAC,IAAI,GAAGN,EAAE,GAAG,IAAI,GAAGE,EAAE,GAAG,IAAI,GAAGC,EAAE,IAAI,IAAI;IACpD,MAAMI,EAAE,GAAG,CAAC,IAAI,GAAGP,EAAE,GAAG,IAAI,GAAGE,EAAE,GAAGC,EAAE,IAAI,IAAI;IAC9C,MAAMK,KAAK,GAAGxC,IAAI,CAACwC,KAAK,CAACH,CAAC,EAAED,CAAC,CAAC;IAC9B,MAAMK,WAAW,GAAID,KAAK,GAAG,KAAK,GAAIxC,IAAI,CAAC0C,EAAE;IAC7C,MAAMzD,GAAG,GACPwD,WAAW,GAAG,CAAC,GAAGA,WAAW,GAAG,KAAK,GAAGA,WAAW,IAAI,GAAG,GAAGA,WAAW,GAAG,GAAG,GAAGA,WAAW;IAC9F,MAAME,UAAU,GAAI1D,GAAG,GAAGe,IAAI,CAAC0C,EAAE,GAAI,KAAK;IAC1C,MAAME,EAAE,GAAGL,EAAE,GAAG/B,EAAE,CAACqC,GAAG;IACtB,MAAMC,CAAC,GAAG,KAAK,GAAG9C,IAAI,CAACE,GAAG,CAAC0C,EAAE,GAAGpC,EAAE,CAACuC,EAAE,EAAEvC,EAAE,CAACwC,CAAC,GAAGxC,EAAE,CAACU,CAAC,CAAC;IACnD,MAAM+B,CAAC,GAAI,GAAG,GAAGzC,EAAE,CAACwC,CAAC,GAAIhD,IAAI,CAACC,IAAI,CAAC6C,CAAC,GAAG,KAAK,CAAC,IAAItC,EAAE,CAACuC,EAAE,GAAG,GAAG,CAAC,GAAGvC,EAAE,CAAC0C,MAAM;IACzE,MAAMC,QAAQ,GAAGlE,GAAG,GAAG,KAAK,GAAGA,GAAG,GAAG,GAAG,GAAGA,GAAG;IAC9C,MAAMmE,IAAI,GAAI,GAAG,GAAG,GAAG,IAAKpD,IAAI,CAACqD,GAAG,CAAEF,QAAQ,GAAGnD,IAAI,CAAC0C,EAAE,GAAI,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAC/E,MAAMY,EAAE,GAAK,OAAO,GAAG,IAAI,GAAIF,IAAI,GAAG5C,EAAE,CAAC+C,EAAE,GAAG/C,EAAE,CAACgD,GAAI;IACrD,MAAMC,CAAC,GAAIH,EAAE,GAAGtD,IAAI,CAACC,IAAI,CAACmC,CAAC,GAAGA,CAAC,GAAGC,CAAC,GAAGA,CAAC,CAAC,IAAKC,CAAC,GAAG,KAAK,CAAC;IACvD,MAAMoB,KAAK,GAAG1D,IAAI,CAACE,GAAG,CAACuD,CAAC,EAAE,GAAG,CAAC,GAAGzD,IAAI,CAACE,GAAG,CAAC,IAAI,GAAGF,IAAI,CAACE,GAAG,CAAC,IAAI,EAAEM,EAAE,CAACmD,CAAC,CAAC,EAAE,IAAI,CAAC;IAC5E,MAAMC,CAAC,GAAGF,KAAK,GAAG1D,IAAI,CAACC,IAAI,CAAC6C,CAAC,GAAG,KAAK,CAAC;IACtC,MAAMe,CAAC,GAAGD,CAAC,GAAGpD,EAAE,CAAC0C,MAAM;IACvB,MAAM5D,CAAC,GAAG,IAAI,GAAGU,IAAI,CAACC,IAAI,CAAEyD,KAAK,GAAGlD,EAAE,CAACwC,CAAC,IAAKxC,EAAE,CAACuC,EAAE,GAAG,GAAG,CAAC,CAAC;IAC1D,MAAMxD,KAAK,GAAI,CAAC,GAAG,GAAG,KAAK,GAAG,KAAK,IAAIuD,CAAC,IAAK,GAAG,GAAG,KAAK,GAAGA,CAAC,CAAC;IAC7D,MAAMgB,KAAK,GAAG9D,IAAI,CAAC+D,GAAG,CAAC,GAAG,GAAG,MAAM,GAAGF,CAAC,CAAC,GAAG,MAAM;IACjD,MAAMrE,KAAK,GAAGsE,KAAK,GAAG9D,IAAI,CAACqD,GAAG,CAACV,UAAU,CAAC;IAC1C,MAAMlD,KAAK,GAAGqE,KAAK,GAAG9D,IAAI,CAACgE,GAAG,CAACrB,UAAU,CAAC;IAC1C,OAAO,IAAI5D,KAAK,CAACE,GAAG,EAAE2E,CAAC,EAAEd,CAAC,EAAEG,CAAC,EAAEY,CAAC,EAAEvE,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAEC,KAAK,CAAC;EAC3D;EAEA,OAAOwE,OAAOA,CAAC9E,CAAS,EAAE6D,CAAS,EAAEkB,CAAS,EAAS;IACrD,OAAOnF,KAAK,CAACoF,0BAA0B,CAAChF,CAAC,EAAE6D,CAAC,EAAEkB,CAAC,EAAE5D,oCAAiB,CAACC,OAAO,CAAC;EAC7E;EAEA,OAAO4D,0BAA0BA,CAC/BhF,CAAS,EACT6D,CAAS,EACTkB,CAAS,EACT1D,EAAqB,EACd;IACP,MAAMpB,CAAC,GAAI,GAAG,GAAGoB,EAAE,CAACwC,CAAC,GAAIhD,IAAI,CAACC,IAAI,CAACd,CAAC,GAAG,KAAK,CAAC,IAAIqB,EAAE,CAACuC,EAAE,GAAG,GAAG,CAAC,GAAGvC,EAAE,CAAC0C,MAAM;IACzE,MAAM7D,CAAC,GAAG2D,CAAC,GAAGxC,EAAE,CAAC0C,MAAM;IACvB,MAAMQ,KAAK,GAAGV,CAAC,GAAGhD,IAAI,CAACC,IAAI,CAACd,CAAC,GAAG,KAAK,CAAC;IACtC,MAAMG,CAAC,GAAG,IAAI,GAAGU,IAAI,CAACC,IAAI,CAAEyD,KAAK,GAAGlD,EAAE,CAACwC,CAAC,IAAKxC,EAAE,CAACuC,EAAE,GAAG,GAAG,CAAC,CAAC;IAC1D,MAAMJ,UAAU,GAAIuB,CAAC,GAAGlE,IAAI,CAAC0C,EAAE,GAAI,KAAK;IACxC,MAAMnD,KAAK,GAAI,CAAC,GAAG,GAAG,KAAK,GAAG,KAAK,IAAIJ,CAAC,IAAK,GAAG,GAAG,KAAK,GAAGA,CAAC,CAAC;IAC7D,MAAM2E,KAAK,GAAI,GAAG,GAAG,MAAM,GAAI9D,IAAI,CAAC+D,GAAG,CAAC,GAAG,GAAG,MAAM,GAAG1E,CAAC,CAAC;IACzD,MAAMG,KAAK,GAAGsE,KAAK,GAAG9D,IAAI,CAACqD,GAAG,CAACV,UAAU,CAAC;IAC1C,MAAMlD,KAAK,GAAGqE,KAAK,GAAG9D,IAAI,CAACgE,GAAG,CAACrB,UAAU,CAAC;IAC1C,OAAO,IAAI5D,KAAK,CAACmF,CAAC,EAAElB,CAAC,EAAE7D,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAEC,KAAK,CAAC;EACzD;EAEA,OAAO2E,OAAOA,CAAC7E,KAAa,EAAEC,KAAa,EAAEC,KAAa,EAAS;IACjE,OAAOV,KAAK,CAACsF,0BAA0B,CAAC9E,KAAK,EAAEC,KAAK,EAAEC,KAAK,EAAEa,oCAAiB,CAACC,OAAO,CAAC;EACzF;EAEA,OAAO8D,0BAA0BA,CAC/B9E,KAAa,EACbC,KAAa,EACbC,KAAa,EACbe,EAAqB,EACd;IACP,MAAM4B,CAAC,GAAG5C,KAAK;IACf,MAAM6C,CAAC,GAAG5C,KAAK;IACf,MAAMJ,CAAC,GAAGW,IAAI,CAACC,IAAI,CAACmC,CAAC,GAAGA,CAAC,GAAGC,CAAC,GAAGA,CAAC,CAAC;IAClC,MAAMwB,CAAC,GAAG,CAAC7D,IAAI,CAACsE,GAAG,CAACjF,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,MAAM;IAC/C,MAAM2D,CAAC,GAAGa,CAAC,GAAGrD,EAAE,CAAC0C,MAAM;IACvB,IAAIgB,CAAC,GAAGlE,IAAI,CAACwC,KAAK,CAACH,CAAC,EAAED,CAAC,CAAC,IAAI,KAAK,GAAGpC,IAAI,CAAC0C,EAAE,CAAC;IAC5C,IAAIwB,CAAC,GAAG,GAAG,EAAEA,CAAC,IAAI,KAAK;IACvB,MAAM/E,CAAC,GAAGI,KAAK,IAAI,CAAC,GAAG,CAACA,KAAK,GAAG,GAAG,IAAI,KAAK,CAAC;IAC7C,OAAOR,KAAK,CAACoF,0BAA0B,CAAChF,CAAC,EAAE6D,CAAC,EAAEkB,CAAC,EAAE1D,EAAE,CAAC;EACtD;EAEA+D,KAAKA,CAAA,EAAW;IACd,OAAO,IAAI,CAACC,MAAM,CAAClE,oCAAiB,CAACC,OAAO,CAAC;EAC/C;EAEAiE,MAAMA,CAAChE,EAAqB,EAAU;IACpC,MAAMiE,GAAG,GAAG,IAAI,CAACC,sBAAsB,CAAClE,EAAE,CAAC;IAC3C,OAAO,IAAAmE,uBAAW,EAACF,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC;EAC5C;EAEAC,sBAAsBA,CAAClE,EAAqB,EAA4B;IACtE,MAAMkD,KAAK,GAAG,IAAI,CAACxE,MAAM,KAAK,GAAG,IAAI,IAAI,CAACC,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,IAAI,CAACD,MAAM,GAAGc,IAAI,CAACC,IAAI,CAAC,IAAI,CAACd,CAAC,GAAG,KAAK,CAAC;IACnG,MAAMsE,CAAC,GAAGzD,IAAI,CAACE,GAAG,CAACwD,KAAK,GAAG1D,IAAI,CAACE,GAAG,CAAC,IAAI,GAAGF,IAAI,CAACE,GAAG,CAAC,IAAI,EAAEM,EAAE,CAACmD,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IAClF,MAAMiB,IAAI,GAAI,IAAI,CAAC3F,GAAG,GAAGe,IAAI,CAAC0C,EAAE,GAAI,KAAK;IACzC,MAAMU,IAAI,GAAG,IAAI,IAAIpD,IAAI,CAACqD,GAAG,CAACuB,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAChD,MAAMhC,EAAE,GAAGpC,EAAE,CAACuC,EAAE,GAAG/C,IAAI,CAACE,GAAG,CAAC,IAAI,CAACf,CAAC,GAAG,KAAK,EAAE,GAAG,GAAGqB,EAAE,CAACwC,CAAC,GAAGxC,EAAE,CAACU,CAAC,CAAC;IAC9D,MAAMoC,EAAE,GAAGF,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG5C,EAAE,CAAC+C,EAAE,GAAG/C,EAAE,CAACgD,GAAG;IACnD,MAAMjB,EAAE,GAAGK,EAAE,GAAGpC,EAAE,CAACqC,GAAG;IACtB,MAAMgC,IAAI,GAAG7E,IAAI,CAACgE,GAAG,CAACY,IAAI,CAAC;IAC3B,MAAME,IAAI,GAAG9E,IAAI,CAACqD,GAAG,CAACuB,IAAI,CAAC;IAC3B,MAAMG,KAAK,GAAI,IAAI,IAAIxC,EAAE,GAAG,KAAK,CAAC,GAAGkB,CAAC,IAAK,IAAI,GAAGH,EAAE,GAAG,IAAI,GAAGG,CAAC,GAAGqB,IAAI,GAAG,KAAK,GAAGrB,CAAC,GAAGoB,IAAI,CAAC;IAC1F,MAAMzC,CAAC,GAAG2C,KAAK,GAAGD,IAAI;IACtB,MAAMzC,CAAC,GAAG0C,KAAK,GAAGF,IAAI;IACtB,MAAM7C,EAAE,GAAG,CAAC,KAAK,GAAGO,EAAE,GAAG,KAAK,GAAGH,CAAC,GAAG,KAAK,GAAGC,CAAC,IAAI,MAAM;IACxD,MAAMH,EAAE,GAAG,CAAC,KAAK,GAAGK,EAAE,GAAG,KAAK,GAAGH,CAAC,GAAG,KAAK,GAAGC,CAAC,IAAI,MAAM;IACxD,MAAMF,EAAE,GAAG,CAAC,KAAK,GAAGI,EAAE,GAAG,KAAK,GAAGH,CAAC,GAAG,MAAM,GAAGC,CAAC,IAAI,MAAM;IACzD,MAAM2C,MAAM,GAAGhF,IAAI,CAACiF,GAAG,CAAC,CAAC,EAAG,KAAK,GAAGjF,IAAI,CAAC6B,GAAG,CAACG,EAAE,CAAC,IAAK,KAAK,GAAGhC,IAAI,CAAC6B,GAAG,CAACG,EAAE,CAAC,CAAC,CAAC;IAC3E,MAAMZ,EAAE,GAAG,IAAAa,iBAAM,EAACD,EAAE,CAAC,IAAI,KAAK,GAAGxB,EAAE,CAACoB,EAAE,CAAC,GAAG5B,IAAI,CAACE,GAAG,CAAC8E,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IACtE,MAAME,MAAM,GAAGlF,IAAI,CAACiF,GAAG,CAAC,CAAC,EAAG,KAAK,GAAGjF,IAAI,CAAC6B,GAAG,CAACK,EAAE,CAAC,IAAK,KAAK,GAAGlC,IAAI,CAAC6B,GAAG,CAACK,EAAE,CAAC,CAAC,CAAC;IAC3E,MAAMb,EAAE,GAAG,IAAAY,iBAAM,EAACC,EAAE,CAAC,IAAI,KAAK,GAAG1B,EAAE,CAACoB,EAAE,CAAC,GAAG5B,IAAI,CAACE,GAAG,CAACgF,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IACtE,MAAMC,MAAM,GAAGnF,IAAI,CAACiF,GAAG,CAAC,CAAC,EAAG,KAAK,GAAGjF,IAAI,CAAC6B,GAAG,CAACM,EAAE,CAAC,IAAK,KAAK,GAAGnC,IAAI,CAAC6B,GAAG,CAACM,EAAE,CAAC,CAAC,CAAC;IAC3E,MAAMb,EAAE,GAAG,IAAAW,iBAAM,EAACE,EAAE,CAAC,IAAI,KAAK,GAAG3B,EAAE,CAACoB,EAAE,CAAC,GAAG5B,IAAI,CAACE,GAAG,CAACiF,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IACtE,MAAMC,EAAE,GAAGhE,EAAE,GAAGZ,EAAE,CAACgB,IAAI,CAAC,CAAC,CAAC;IAC1B,MAAM6D,EAAE,GAAGhE,EAAE,GAAGb,EAAE,CAACgB,IAAI,CAAC,CAAC,CAAC;IAC1B,MAAM8D,EAAE,GAAGhE,EAAE,GAAGd,EAAE,CAACgB,IAAI,CAAC,CAAC,CAAC;IAC1B,MAAMR,CAAC,GAAG,UAAU,GAAGoE,EAAE,GAAG,UAAU,GAAGC,EAAE,GAAG,UAAU,GAAGC,EAAE;IAC7D,MAAMrE,CAAC,GAAG,UAAU,GAAGmE,EAAE,GAAG,UAAU,GAAGC,EAAE,GAAG,UAAU,GAAGC,EAAE;IAC7D,MAAMpE,CAAC,GAAG,CAAC,SAAS,GAAGkE,EAAE,GAAG,UAAU,GAAGC,EAAE,GAAG,UAAU,GAAGC,EAAE;IAC7D,OAAO,CAACtE,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;EAClB;AACF;AAACqE,OAAA,CAAAxG,KAAA,GAAAA,KAAA","ignoreList":[]}
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ColorRole = void 0;
7
+ var _contrast = require("./contrast.js");
8
+ var _mathUtils = require("./math-utils.js");
9
+ /**
10
+ * Bloom colour engine — a colour role.
11
+ *
12
+ * Faithful port of Material Color Utilities' `DynamicColor` (Apache-2.0),
13
+ * renamed to Bloom's own `ColorRole`. A role is a *recipe*, not a fixed colour:
14
+ * a palette + a base tone + (optionally) a background to contrast against and a
15
+ * paired role to keep tonal distance from. `getArgb(scheme)` resolves the recipe
16
+ * against a scheme's palettes, dark mode and contrast level into a concrete
17
+ * colour — guaranteeing legibility. This is the heart of the system.
18
+ */
19
+
20
+ class ColorRole {
21
+ hctCache = new Map();
22
+ static fromPalette(args) {
23
+ return new ColorRole(args);
24
+ }
25
+ constructor(args) {
26
+ this.name = args.name ?? '';
27
+ this.palette = args.palette;
28
+ this.tone = args.tone;
29
+ this.isBackground = args.isBackground ?? false;
30
+ this.background = args.background;
31
+ this.secondBackground = args.secondBackground;
32
+ this.contrastCurve = args.contrastCurve;
33
+ this.toneDeltaPair = args.toneDeltaPair;
34
+ if (!args.background && args.secondBackground) {
35
+ throw new Error(`Color ${this.name} has secondBackground defined, but background is not.`);
36
+ }
37
+ if (!args.background && args.contrastCurve) {
38
+ throw new Error(`Color ${this.name} has contrastCurve defined, but background is not.`);
39
+ }
40
+ if (args.background && !args.contrastCurve) {
41
+ throw new Error(`Color ${this.name} has background defined, but contrastCurve is not.`);
42
+ }
43
+ }
44
+ getArgb(scheme) {
45
+ return this.getHct(scheme).toInt();
46
+ }
47
+ getHct(scheme) {
48
+ const cached = this.hctCache.get(scheme);
49
+ if (cached != null) return cached;
50
+ const tone = this.getTone(scheme);
51
+ const answer = this.palette(scheme).getHct(tone);
52
+ if (this.hctCache.size > 4) this.hctCache.clear();
53
+ this.hctCache.set(scheme, answer);
54
+ return answer;
55
+ }
56
+ getTone(scheme) {
57
+ const decreasingContrast = scheme.contrastLevel < 0;
58
+ if (this.toneDeltaPair) {
59
+ const pair = this.toneDeltaPair(scheme);
60
+ const {
61
+ roleA,
62
+ roleB,
63
+ delta,
64
+ polarity,
65
+ stayTogether
66
+ } = pair;
67
+ const bg = this.background(scheme);
68
+ const bgTone = bg.getTone(scheme);
69
+ const aIsNearer = polarity === 'nearer' || polarity === 'lighter' && !scheme.isDark || polarity === 'darker' && scheme.isDark;
70
+ const nearer = aIsNearer ? roleA : roleB;
71
+ const farther = aIsNearer ? roleB : roleA;
72
+ const amNearer = this.name === nearer.name;
73
+ const expansionDir = scheme.isDark ? 1 : -1;
74
+ const nContrast = nearer.contrastCurve.get(scheme.contrastLevel);
75
+ const fContrast = farther.contrastCurve.get(scheme.contrastLevel);
76
+ const nInitialTone = nearer.tone(scheme);
77
+ let nTone = (0, _contrast.ratioOfTones)(bgTone, nInitialTone) >= nContrast ? nInitialTone : ColorRole.foregroundTone(bgTone, nContrast);
78
+ const fInitialTone = farther.tone(scheme);
79
+ let fTone = (0, _contrast.ratioOfTones)(bgTone, fInitialTone) >= fContrast ? fInitialTone : ColorRole.foregroundTone(bgTone, fContrast);
80
+ if (decreasingContrast) {
81
+ nTone = ColorRole.foregroundTone(bgTone, nContrast);
82
+ fTone = ColorRole.foregroundTone(bgTone, fContrast);
83
+ }
84
+ if ((fTone - nTone) * expansionDir >= delta) {
85
+ // constraint already satisfied
86
+ } else {
87
+ fTone = (0, _mathUtils.clampDouble)(0, 100, nTone + delta * expansionDir);
88
+ if ((fTone - nTone) * expansionDir >= delta) {
89
+ // satisfied after expanding farther
90
+ } else {
91
+ nTone = (0, _mathUtils.clampDouble)(0, 100, fTone - delta * expansionDir);
92
+ }
93
+ }
94
+ if (50 <= nTone && nTone < 60) {
95
+ if (expansionDir > 0) {
96
+ nTone = 60;
97
+ fTone = Math.max(fTone, nTone + delta * expansionDir);
98
+ } else {
99
+ nTone = 49;
100
+ fTone = Math.min(fTone, nTone + delta * expansionDir);
101
+ }
102
+ } else if (50 <= fTone && fTone < 60) {
103
+ if (stayTogether) {
104
+ if (expansionDir > 0) {
105
+ nTone = 60;
106
+ fTone = Math.max(fTone, nTone + delta * expansionDir);
107
+ } else {
108
+ nTone = 49;
109
+ fTone = Math.min(fTone, nTone + delta * expansionDir);
110
+ }
111
+ } else if (expansionDir > 0) {
112
+ fTone = 60;
113
+ } else {
114
+ fTone = 49;
115
+ }
116
+ }
117
+ return amNearer ? nTone : fTone;
118
+ }
119
+ let answer = this.tone(scheme);
120
+ if (this.background == null) return answer;
121
+ const bgTone = this.background(scheme).getTone(scheme);
122
+ const desiredRatio = this.contrastCurve.get(scheme.contrastLevel);
123
+ if ((0, _contrast.ratioOfTones)(bgTone, answer) >= desiredRatio) {
124
+ // already contrasts enough
125
+ } else {
126
+ answer = ColorRole.foregroundTone(bgTone, desiredRatio);
127
+ }
128
+ if (decreasingContrast) {
129
+ answer = ColorRole.foregroundTone(bgTone, desiredRatio);
130
+ }
131
+ if (this.isBackground && 50 <= answer && answer < 60) {
132
+ answer = (0, _contrast.ratioOfTones)(49, bgTone) >= desiredRatio ? 49 : 60;
133
+ }
134
+ if (this.secondBackground) {
135
+ const bg1 = this.background;
136
+ const bg2 = this.secondBackground;
137
+ const bgTone1 = bg1(scheme).getTone(scheme);
138
+ const bgTone2 = bg2(scheme).getTone(scheme);
139
+ const upper = Math.max(bgTone1, bgTone2);
140
+ const lower = Math.min(bgTone1, bgTone2);
141
+ if ((0, _contrast.ratioOfTones)(upper, answer) >= desiredRatio && (0, _contrast.ratioOfTones)(lower, answer) >= desiredRatio) {
142
+ return answer;
143
+ }
144
+ const lightOption = (0, _contrast.lighter)(upper, desiredRatio);
145
+ const darkOption = (0, _contrast.darker)(lower, desiredRatio);
146
+ const availables = [];
147
+ if (lightOption !== -1) availables.push(lightOption);
148
+ if (darkOption !== -1) availables.push(darkOption);
149
+ const prefersLight = ColorRole.tonePrefersLightForeground(bgTone1) || ColorRole.tonePrefersLightForeground(bgTone2);
150
+ if (prefersLight) return lightOption < 0 ? 100 : lightOption;
151
+ const onlyAvailable = availables[0];
152
+ if (availables.length === 1 && onlyAvailable !== undefined) return onlyAvailable;
153
+ return darkOption < 0 ? 0 : darkOption;
154
+ }
155
+ return answer;
156
+ }
157
+ static foregroundTone(bgTone, ratio) {
158
+ const lighterTone = (0, _contrast.lighterUnsafe)(bgTone, ratio);
159
+ const darkerTone = (0, _contrast.darkerUnsafe)(bgTone, ratio);
160
+ const lighterRatio = (0, _contrast.ratioOfTones)(lighterTone, bgTone);
161
+ const darkerRatio = (0, _contrast.ratioOfTones)(darkerTone, bgTone);
162
+ const preferLighter = ColorRole.tonePrefersLightForeground(bgTone);
163
+ if (preferLighter) {
164
+ const negligibleDifference = Math.abs(lighterRatio - darkerRatio) < 0.1 && lighterRatio < ratio && darkerRatio < ratio;
165
+ return lighterRatio >= ratio || lighterRatio >= darkerRatio || negligibleDifference ? lighterTone : darkerTone;
166
+ }
167
+ return darkerRatio >= ratio || darkerRatio >= lighterRatio ? darkerTone : lighterTone;
168
+ }
169
+ static tonePrefersLightForeground(tone) {
170
+ return Math.round(tone) < 60.0;
171
+ }
172
+ static toneAllowsLightForeground(tone) {
173
+ return Math.round(tone) <= 49.0;
174
+ }
175
+ static enableLightForeground(tone) {
176
+ if (ColorRole.tonePrefersLightForeground(tone) && !ColorRole.toneAllowsLightForeground(tone)) {
177
+ return 49.0;
178
+ }
179
+ return tone;
180
+ }
181
+ }
182
+ exports.ColorRole = ColorRole;
183
+ //# sourceMappingURL=color-role.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_contrast","require","_mathUtils","ColorRole","hctCache","Map","fromPalette","args","constructor","name","palette","tone","isBackground","background","secondBackground","contrastCurve","toneDeltaPair","Error","getArgb","scheme","getHct","toInt","cached","get","getTone","answer","size","clear","set","decreasingContrast","contrastLevel","pair","roleA","roleB","delta","polarity","stayTogether","bg","bgTone","aIsNearer","isDark","nearer","farther","amNearer","expansionDir","nContrast","fContrast","nInitialTone","nTone","ratioOfTones","foregroundTone","fInitialTone","fTone","clampDouble","Math","max","min","desiredRatio","bg1","bg2","bgTone1","bgTone2","upper","lower","lightOption","lighter","darkOption","darker","availables","push","prefersLight","tonePrefersLightForeground","onlyAvailable","length","undefined","ratio","lighterTone","lighterUnsafe","darkerTone","darkerUnsafe","lighterRatio","darkerRatio","preferLighter","negligibleDifference","abs","round","toneAllowsLightForeground","enableLightForeground","exports"],"sourceRoot":"../../../../src","sources":["theme/color-engine/color-role.ts"],"mappings":"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","ignoreList":[]}