@oxyhq/bloom 0.73.0 → 0.74.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 (118) hide show
  1. package/lib/commonjs/button/Button.js +104 -42
  2. package/lib/commonjs/button/Button.js.map +1 -1
  3. package/lib/commonjs/button/Button.web.js +11 -3
  4. package/lib/commonjs/button/Button.web.js.map +1 -1
  5. package/lib/commonjs/design-tokens/theme.css +22 -0
  6. package/lib/commonjs/fab/Fab.js +9 -0
  7. package/lib/commonjs/fab/Fab.js.map +1 -1
  8. package/lib/commonjs/fab/Fab.web.js +11 -0
  9. package/lib/commonjs/fab/Fab.web.js.map +1 -1
  10. package/lib/commonjs/theme/BloomThemeProvider.js.map +1 -1
  11. package/lib/commonjs/theme/build-theme-from-seed.js +7 -5
  12. package/lib/commonjs/theme/build-theme-from-seed.js.map +1 -1
  13. package/lib/commonjs/theme/build-theme.js +9 -4
  14. package/lib/commonjs/theme/build-theme.js.map +1 -1
  15. package/lib/commonjs/theme/color-policy.js +315 -0
  16. package/lib/commonjs/theme/color-policy.js.map +1 -0
  17. package/lib/commonjs/theme/color-scope/seed-scope.js +13 -1
  18. package/lib/commonjs/theme/color-scope/seed-scope.js.map +1 -1
  19. package/lib/commonjs/theme/color-scope/style-builder.js +6 -0
  20. package/lib/commonjs/theme/color-scope/style-builder.js.map +1 -1
  21. package/lib/commonjs/theme/preset-vars.js +9 -1
  22. package/lib/commonjs/theme/preset-vars.js.map +1 -1
  23. package/lib/commonjs/theme/token-registry.js +11 -1
  24. package/lib/commonjs/theme/token-registry.js.map +1 -1
  25. package/lib/module/button/Button.js +104 -42
  26. package/lib/module/button/Button.js.map +1 -1
  27. package/lib/module/button/Button.web.js +11 -3
  28. package/lib/module/button/Button.web.js.map +1 -1
  29. package/lib/module/design-tokens/theme.css +22 -0
  30. package/lib/module/fab/Fab.js +9 -0
  31. package/lib/module/fab/Fab.js.map +1 -1
  32. package/lib/module/fab/Fab.web.js +11 -0
  33. package/lib/module/fab/Fab.web.js.map +1 -1
  34. package/lib/module/theme/BloomThemeProvider.js.map +1 -1
  35. package/lib/module/theme/build-theme-from-seed.js +7 -5
  36. package/lib/module/theme/build-theme-from-seed.js.map +1 -1
  37. package/lib/module/theme/build-theme.js +9 -4
  38. package/lib/module/theme/build-theme.js.map +1 -1
  39. package/lib/module/theme/color-policy.js +310 -0
  40. package/lib/module/theme/color-policy.js.map +1 -0
  41. package/lib/module/theme/color-scope/seed-scope.js +13 -1
  42. package/lib/module/theme/color-scope/seed-scope.js.map +1 -1
  43. package/lib/module/theme/color-scope/style-builder.js +6 -0
  44. package/lib/module/theme/color-scope/style-builder.js.map +1 -1
  45. package/lib/module/theme/preset-vars.js +9 -1
  46. package/lib/module/theme/preset-vars.js.map +1 -1
  47. package/lib/module/theme/token-registry.js +11 -1
  48. package/lib/module/theme/token-registry.js.map +1 -1
  49. package/lib/typescript/commonjs/button/Button.d.ts.map +1 -1
  50. package/lib/typescript/commonjs/button/Button.web.d.ts.map +1 -1
  51. package/lib/typescript/commonjs/button/types.d.ts +8 -0
  52. package/lib/typescript/commonjs/button/types.d.ts.map +1 -1
  53. package/lib/typescript/commonjs/fab/Fab.d.ts.map +1 -1
  54. package/lib/typescript/commonjs/fab/Fab.web.d.ts.map +1 -1
  55. package/lib/typescript/commonjs/fab/types.d.ts +6 -1
  56. package/lib/typescript/commonjs/fab/types.d.ts.map +1 -1
  57. package/lib/typescript/commonjs/icons/common.d.ts +1 -1
  58. package/lib/typescript/commonjs/theme/BloomThemeProvider.d.ts.map +1 -1
  59. package/lib/typescript/commonjs/theme/build-theme-from-seed.d.ts.map +1 -1
  60. package/lib/typescript/commonjs/theme/build-theme.d.ts.map +1 -1
  61. package/lib/typescript/commonjs/theme/color-policy.d.ts +48 -0
  62. package/lib/typescript/commonjs/theme/color-policy.d.ts.map +1 -0
  63. package/lib/typescript/commonjs/theme/color-scope/seed-scope.d.ts.map +1 -1
  64. package/lib/typescript/commonjs/theme/color-scope/style-builder.d.ts.map +1 -1
  65. package/lib/typescript/commonjs/theme/preset-vars.d.ts.map +1 -1
  66. package/lib/typescript/commonjs/theme/token-registry.d.ts +1 -1
  67. package/lib/typescript/commonjs/theme/token-registry.d.ts.map +1 -1
  68. package/lib/typescript/module/button/Button.d.ts.map +1 -1
  69. package/lib/typescript/module/button/Button.web.d.ts.map +1 -1
  70. package/lib/typescript/module/button/types.d.ts +8 -0
  71. package/lib/typescript/module/button/types.d.ts.map +1 -1
  72. package/lib/typescript/module/fab/Fab.d.ts.map +1 -1
  73. package/lib/typescript/module/fab/Fab.web.d.ts.map +1 -1
  74. package/lib/typescript/module/fab/types.d.ts +6 -1
  75. package/lib/typescript/module/fab/types.d.ts.map +1 -1
  76. package/lib/typescript/module/icons/common.d.ts +1 -1
  77. package/lib/typescript/module/theme/BloomThemeProvider.d.ts.map +1 -1
  78. package/lib/typescript/module/theme/build-theme-from-seed.d.ts.map +1 -1
  79. package/lib/typescript/module/theme/build-theme.d.ts.map +1 -1
  80. package/lib/typescript/module/theme/color-policy.d.ts +48 -0
  81. package/lib/typescript/module/theme/color-policy.d.ts.map +1 -0
  82. package/lib/typescript/module/theme/color-scope/seed-scope.d.ts.map +1 -1
  83. package/lib/typescript/module/theme/color-scope/style-builder.d.ts.map +1 -1
  84. package/lib/typescript/module/theme/preset-vars.d.ts.map +1 -1
  85. package/lib/typescript/module/theme/token-registry.d.ts +1 -1
  86. package/lib/typescript/module/theme/token-registry.d.ts.map +1 -1
  87. package/package.json +1 -1
  88. package/src/__tests__/Button.test.tsx +166 -1
  89. package/src/__tests__/Button.web.test.tsx +16 -0
  90. package/src/__tests__/preset-vars.test.ts +27 -15
  91. package/src/button/Button.tsx +123 -40
  92. package/src/button/Button.web.tsx +11 -3
  93. package/src/button/types.ts +8 -0
  94. package/src/design-tokens/theme.css +22 -0
  95. package/src/fab/Fab.tsx +3 -0
  96. package/src/fab/Fab.web.tsx +3 -0
  97. package/src/fab/types.ts +6 -1
  98. package/src/theme/BloomThemeProvider.tsx +7 -4
  99. package/src/theme/__tests__/__fixtures__/golden-resolved-tokens.json +1300 -312
  100. package/src/theme/__tests__/__snapshots__/visual-gallery.test.tsx.snap +442 -442
  101. package/src/theme/__tests__/policy-legibility.test.ts +118 -0
  102. package/src/theme/__tests__/theme-colors-parity.test.ts +11 -6
  103. package/src/theme/build-theme-from-seed.ts +7 -4
  104. package/src/theme/build-theme.ts +9 -4
  105. package/src/theme/color-policy.ts +342 -0
  106. package/src/theme/color-scope/seed-scope.ts +13 -1
  107. package/src/theme/color-scope/style-builder.ts +6 -0
  108. package/src/theme/preset-vars.ts +10 -1
  109. package/src/theme/token-registry.ts +32 -0
  110. package/lib/commonjs/fonts/font-data.web.js +0 -22
  111. package/lib/commonjs/fonts/font-data.web.js.map +0 -1
  112. package/lib/module/fonts/font-data.web.js +0 -18
  113. package/lib/module/fonts/font-data.web.js.map +0 -1
  114. package/lib/typescript/commonjs/fonts/font-data.web.d.ts +0 -5
  115. package/lib/typescript/commonjs/fonts/font-data.web.d.ts.map +0 -1
  116. package/lib/typescript/module/fonts/font-data.web.d.ts +0 -5
  117. package/lib/typescript/module/fonts/font-data.web.d.ts.map +0 -1
  118. package/src/fonts/font-data.web.ts +0 -15
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","APP_COLOR_PRESETS","generateRoleColors","getAdaptiveColors","getResolvedTokens","THEME_GRADIENTS","STATUS_COLORS","success","error","warning","info","buildColorsFromPreset","preset","resolved","accents","t","isDark","g","k","config","r","seed","hex","variant","secondarySeed","secondaryHex","tertiarySeed","tertiaryHex","background","backgroundSecondary","backgroundTertiary","text","textSecondary","textTertiary","outline","border","borderLight","primary","primaryForeground","primaryLight","primaryDark","secondary","secondaryForeground","tertiary","tertiaryForeground","tint","icon","iconActive","primarySubtle","primaryContainer","primarySubtleForeground","onPrimaryContainer","negative","negativeForeground","onError","negativeSubtle","errorContainer","negativeSubtleForeground","onErrorContainer","contrast50","card","shadow","overlay","buildTheme","isAdaptive","adaptive","OS","undefined","colors","mode","gradients","isLight"],"sourceRoot":"../../../src","sources":["theme/build-theme.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Platform","APP_COLOR_PRESETS","generateRoleColors","getAdaptiveColors","getResolvedTokens","THEME_GRADIENTS","STATUS_COLORS","success","error","warning","info","buildColorsFromPreset","preset","resolved","accents","t","isDark","g","k","config","r","seed","hex","variant","secondarySeed","secondaryHex","tertiarySeed","tertiaryHex","background","backgroundSecondary","backgroundTertiary","text","textSecondary","textTertiary","outline","border","borderLight","primary","primaryForeground","primaryLight","primaryDark","secondary","secondaryForeground","tertiary","tertiaryForeground","tint","icon","iconActive","primarySubtle","primarySubtleForeground","onPrimaryContainer","negative","negativeForeground","onError","negativeSubtle","negativeSubtleForeground","contrast50","card","shadow","overlay","buildTheme","isAdaptive","adaptive","OS","undefined","colors","mode","gradients","isLight"],"sourceRoot":"../../../src","sources":["theme/build-theme.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,iBAAiB,QAA2B,oBAAiB;AACtE,SAASC,kBAAkB,QAAyB,yBAAgB;AAEpE,SAASC,iBAAiB,QAAQ,sBAAmB;AACrD,SAASC,iBAAiB,QAAQ,qBAAkB;AACpD,SAASC,eAAe,QAAQ,gBAAa;AAG7C;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAG;EAC3BC,OAAO,EAAE,SAAS;EAClBC,KAAK,EAAE,SAAS;EAChBC,OAAO,EAAE,SAAS;EAClBC,IAAI,EAAE;AACR,CAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,qBAAqBA,CAC5BC,MAAoB,EACpBC,QAA0B,EAC1BC,OAAyB,EACZ;EACb,MAAMC,CAAC,GAAGX,iBAAiB,CAACQ,MAAM,EAAEC,QAAQ,EAAEC,OAAO,CAAC;EACtD,MAAME,MAAM,GAAGH,QAAQ,KAAK,MAAM;;EAElC;EACA,MAAMI,CAAC,GAAIC,CAAS,IAAaH,CAAC,CAAC,KAAKG,CAAC,EAAE,CAAC,IAAI,YAAY;;EAE5D;EACA;EACA;EACA,MAAMC,MAAM,GAAGlB,iBAAiB,CAACW,MAAM,CAAC;EACxC,MAAMQ,CAAa,GAAGlB,kBAAkB,CAAC;IACvCmB,IAAI,EAAEF,MAAM,CAACG,GAAG;IAChBC,OAAO,EAAEJ,MAAM,CAACI,OAAO;IACvBP,MAAM;IACNQ,aAAa,EAAEV,OAAO,EAAEW,YAAY,IAAIN,MAAM,CAACM,YAAY;IAC3DC,YAAY,EAAEZ,OAAO,EAAEa,WAAW,IAAIR,MAAM,CAACQ;EAC/C,CAAC,CAAC;EAEF,OAAO;IACLC,UAAU,EAAEX,CAAC,CAAC,YAAY,CAAC;IAC3BY,mBAAmB,EAAEZ,CAAC,CAAC,SAAS,CAAC;IACjCa,kBAAkB,EAAEb,CAAC,CAAC,SAAS,CAAC;IAEhCc,IAAI,EAAEd,CAAC,CAAC,YAAY,CAAC;IACrBe,aAAa,EAAEf,CAAC,CAAC,kBAAkB,CAAC;IACpCgB,YAAY,EAAEb,CAAC,CAACc,OAAO;IAEvBC,MAAM,EAAElB,CAAC,CAAC,QAAQ,CAAC;IACnBmB,WAAW,EAAEnB,CAAC,CAAC,OAAO,CAAC;IAEvBoB,OAAO,EAAEpB,CAAC,CAAC,SAAS,CAAC;IACrBqB,iBAAiB,EAAErB,CAAC,CAAC,oBAAoB,CAAC;IAC1C;IACA;IACAsB,YAAY,EAAEtB,CAAC,CAAC,SAAS,CAAC;IAC1BuB,WAAW,EAAEvB,CAAC,CAAC,YAAY,CAAC;IAE5B;IACA;IACAwB,SAAS,EAAExB,CAAC,CAAC,WAAW,CAAC;IACzByB,mBAAmB,EAAEzB,CAAC,CAAC,sBAAsB,CAAC;IAC9C0B,QAAQ,EAAE1B,CAAC,CAAC,UAAU,CAAC;IACvB2B,kBAAkB,EAAE3B,CAAC,CAAC,qBAAqB,CAAC;IAE5C4B,IAAI,EAAE5B,CAAC,CAAC,SAAS,CAAC;IAClB6B,IAAI,EAAE7B,CAAC,CAAC,kBAAkB,CAAC;IAC3B8B,UAAU,EAAE9B,CAAC,CAAC,SAAS,CAAC;IAExB;IACA;IACAV,OAAO,EAAEU,CAAC,CAAC,SAAS,CAAC;IACrBT,KAAK,EAAES,CAAC,CAAC,OAAO,CAAC;IACjBR,OAAO,EAAEQ,CAAC,CAAC,SAAS,CAAC;IACrBP,IAAI,EAAEO,CAAC,CAAC,MAAM,CAAC;IAEf+B,aAAa,EAAE/B,CAAC,CAAC,gBAAgB,CAAC;IAClCgC,uBAAuB,EAAE7B,CAAC,CAAC8B,kBAAkB;IAC7CC,QAAQ,EAAE/B,CAAC,CAACZ,KAAK;IACjB4C,kBAAkB,EAAEhC,CAAC,CAACiC,OAAO;IAC7BC,cAAc,EAAErC,CAAC,CAAC,cAAc,CAAC;IACjCsC,wBAAwB,EAAEtC,CAAC,CAAC,YAAY,CAAC;IACzCuC,UAAU,EAAEvC,CAAC,CAAC,OAAO,CAAC;IAEtB;IACAwC,IAAI,EAAExC,CAAC,CAAC,MAAM,CAAC;IACfyC,MAAM,EAAE1C,MAAM,GAAG,oBAAoB,GAAG,oBAAoB;IAC5D2C,OAAO,EAAE;EACX,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CACxBhD,MAAoB,EACpBC,QAA0B,EAC1BgD,UAAmB,GAAG,KAAK,EAC3B/C,OAAyB,EAClB;EACP,MAAMgD,QAAQ,GAAGD,UAAU,IAAI7D,QAAQ,CAAC+D,EAAE,KAAK,KAAK,GAAG5D,iBAAiB,CAAC,CAAC,GAAG6D,SAAS;EACtF,MAAMC,MAAM,GAAGH,QAAQ,IAAInD,qBAAqB,CAACC,MAAM,EAAEC,QAAQ,EAAEC,OAAO,CAAC;EAE3E,OAAO;IACLoD,IAAI,EAAErD,QAAQ;IACdoD,MAAM;IACNE,SAAS,EAAE9D,eAAe;IAC1BW,MAAM,EAAEH,QAAQ,KAAK,MAAM;IAC3BuD,OAAO,EAAEvD,QAAQ,KAAK;EACxB,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,310 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Bloom colour policy — how a seed becomes the visible token set.
5
+ *
6
+ * The engine (`color-engine/`) answers "what colours exist around this seed".
7
+ * This module answers the separate question of how deep, how loud and how far
8
+ * apart they should be, which canonical Material 3 answers differently than
9
+ * Bloom needs:
10
+ *
11
+ * - M3 puts `primary` at tone 80 in dark so it can be used as TEXT. Bloom uses
12
+ * `--primary` as a FILL (buttons, FABs, the user's own chat bubble), and tone
13
+ * 80 collapses chroma — the reason the whole palette read pastel. The two jobs
14
+ * are split here: `--primary` is the fill, `--primary-text` is the accent
15
+ * legible as text on the page.
16
+ * - M3's supporting accents rotate 18–35 degrees off the seed, so the
17
+ * primary/secondary/tertiary trio lands in one hue family and cannot encode
18
+ * anything. A real split-complementary rotation fixes that.
19
+ * - Chroma has to scale inversely with the area a colour paints: a chip's
20
+ * background covers far more pixels than its label.
21
+ *
22
+ * The single rule underneath every decision here is that **light and dark want
23
+ * opposite things**. On a near-white page a fill must go deep to read calm; on a
24
+ * near-black one it must stay bright or it turns to mud. Every asymmetry below
25
+ * is that rule applied to one more role.
26
+ */
27
+ import { argbFromHex } from "./color-engine/index.js";
28
+ import { Hct } from "./color-engine/hct.js";
29
+ import { TonalPalette } from "./color-engine/tonal-palette.js";
30
+ import { fixIfDisliked } from "./color-engine/dislike-analyzer.js";
31
+ import { blueFromArgb, greenFromArgb, redFromArgb } from "./color-engine/color-utils.js";
32
+
33
+ /** Semantic status seeds. Only hue and chroma survive; tones come from the policy. */
34
+ export const STATUS_SEEDS = {
35
+ success: '#10B981',
36
+ error: '#EF4444',
37
+ warning: '#F59E0B',
38
+ info: '#3B82F6'
39
+ };
40
+
41
+ /** Optional real accent colours — e.g. the 2nd and 3rd seeds extracted from artwork. */
42
+
43
+ /** The tokens the policy owns. Everything else keeps coming from the M3 roles. */
44
+
45
+ const AA = 4.5;
46
+ const rgb = argb => `rgb(${redFromArgb(argb)} ${greenFromArgb(argb)} ${blueFromArgb(argb)})`;
47
+
48
+ /**
49
+ * A translucent tint, as `rgba(r, g, b, a)`.
50
+ *
51
+ * Deliberately the legacy comma form: React Native's colour parser accepts it on
52
+ * every platform, while the modern `rgb(r g b / a)` slash syntax is a web-only
53
+ * spelling.
54
+ */
55
+ const rgba = (argb, alpha) => `rgba(${redFromArgb(argb)}, ${greenFromArgb(argb)}, ${blueFromArgb(argb)}, ${alpha})`;
56
+
57
+ /**
58
+ * WCAG contrast of a QUANTIZED colour against white or black.
59
+ *
60
+ * The engine's tone-based ratio is continuous, but what ships is an 8-bit colour
61
+ * whose rounding turns a nominal 4.50 into a measured 4.49 — below AA. Every
62
+ * legibility decision here reads the colour that actually renders.
63
+ */
64
+ function contrastOf(argb, onWhite) {
65
+ const channel = v => {
66
+ const c = v / 255;
67
+ return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
68
+ };
69
+ const luminance = 0.2126 * channel(redFromArgb(argb)) + 0.7152 * channel(greenFromArgb(argb)) + 0.0722 * channel(blueFromArgb(argb));
70
+ return onWhite ? 1.05 / (luminance + 0.05) : (luminance + 0.05) / 0.05;
71
+ }
72
+
73
+ /**
74
+ * White and black are never both legible on the same fill — white needs a
75
+ * light-enough one, black a dark-enough one, and they overlap in a single tone.
76
+ * So the foreground is not a preference: the fill's tone already decided it. The
77
+ * one overlapping tone goes to white, because landing there is the entire point
78
+ * of a deep fill.
79
+ */
80
+ const foregroundFor = argb => contrastOf(argb, true) >= AA ? 'rgb(255 255 255)' : 'rgb(0 0 0)';
81
+ const noLegibleForeground = argb => contrastOf(argb, true) < AA && contrastOf(argb, false) < AA;
82
+
83
+ /** The tone a white-label fill sits at in LIGHT mode. */
84
+ const LIGHT_FILL_TONE = 45;
85
+
86
+ /** No dark-mode fill sits below this: under it a colour goes heavy on black. */
87
+ const DARK_FLOOR = 58;
88
+
89
+ /** Chroma ceiling for an accent FILL — the brand palette's own maximum, not the gamut's. */
90
+ const ACCENT_CHROMA = 80;
91
+
92
+ /** The text/icon member: small enough that saturation costs nothing. */
93
+ const TEXT_TONE = {
94
+ light: 40,
95
+ dark: 80
96
+ };
97
+ const TEXT_CHROMA = 60;
98
+
99
+ /** The `-subtle` tint is mixed from a BRIGHT tone at low alpha, never a dark one at high alpha. */
100
+ const SUBTLE_SOURCE_TONE = 60;
101
+ const SUBTLE_ALPHA = {
102
+ light: 0.13,
103
+ dark: 0.24
104
+ };
105
+
106
+ /** Split-complementary: the two accents sit either side of the seed's complement. */
107
+ const SPLIT_ROTATIONS = [150, 210];
108
+
109
+ /** How far the standout accent may move toward a more vivid hue, and the gain that earns it. */
110
+ const VIVID_SNAP_WINDOW = 25;
111
+ const VIVID_SNAP_MIN_GAIN = 15;
112
+
113
+ /** Below this the split pair stops reading as a pair, so a snap that crowds it is abandoned. */
114
+ const MIN_ACCENT_SEPARATION = 25;
115
+
116
+ /** A standout accent this close to the error hue reads as "delete", not "create". */
117
+ const DESTRUCTIVE_PROXIMITY = 30;
118
+ function hueDistance(a, b) {
119
+ const d = Math.abs(a - b) % 360;
120
+ return Math.min(d, 360 - d);
121
+ }
122
+
123
+ /**
124
+ * The tone at which a hue reaches its highest chroma in sRGB — where it is most
125
+ * itself.
126
+ *
127
+ * It varies enormously by family: red and orange peak near tone 55, violet near
128
+ * 33, while lime, green and cyan only peak above 85. A single tone for every hue
129
+ * therefore reads right for some and as mud for others — lime at tone 49 is
130
+ * olive, and it takes tone 89 to look like lime at all.
131
+ */
132
+ function peakTone(hue) {
133
+ const palette = TonalPalette.fromHueAndChroma(hue, 200);
134
+ let bestTone = 50;
135
+ let bestChroma = -1;
136
+ for (let tone = 30; tone <= 92; tone += 1) {
137
+ const chroma = Hct.fromInt(palette.tone(tone)).chroma;
138
+ if (chroma > bestChroma) {
139
+ bestChroma = chroma;
140
+ bestTone = tone;
141
+ }
142
+ }
143
+ return bestTone;
144
+ }
145
+
146
+ /** How vivid a hue can get at all — its chroma at its peak tone. */
147
+ function peakChroma(hue) {
148
+ return Hct.fromInt(TonalPalette.fromHueAndChroma(hue, 200).tone(peakTone(hue))).chroma;
149
+ }
150
+
151
+ /**
152
+ * Nudge a hue to the most vivid one near it, but only when that is a real gain.
153
+ *
154
+ * The sRGB gamut is not a circle, so a rotation can land in a genuinely dull
155
+ * pocket: from a magenta seed the +150 arm falls on hue 113, which peaks at
156
+ * chroma 74 and reads as acid yellow, while hue 138 twenty-five degrees away
157
+ * peaks at 101 and is the lime it was supposed to be. The threshold keeps this
158
+ * from becoming a free-for-all — the same search would drift a well-placed pink
159
+ * to magenta for four points, which is noise.
160
+ */
161
+ function vividHueNear(hue) {
162
+ const baseChroma = peakChroma(hue);
163
+ let bestHue = hue;
164
+ let bestChroma = baseChroma;
165
+ for (let delta = -VIVID_SNAP_WINDOW; delta <= VIVID_SNAP_WINDOW; delta += 1) {
166
+ const candidate = ((hue + delta) % 360 + 360) % 360;
167
+ const chroma = peakChroma(candidate);
168
+ if (chroma > bestChroma) {
169
+ bestChroma = chroma;
170
+ bestHue = candidate;
171
+ }
172
+ }
173
+ return bestChroma - baseChroma >= VIVID_SNAP_MIN_GAIN ? bestHue : hue;
174
+ }
175
+
176
+ /** Settle a fill tone so some foreground is legible, then pair it with that foreground. */
177
+ function fillPair(palette, startTone) {
178
+ let tone = startTone;
179
+ while (noLegibleForeground(palette.tone(tone)) && tone > 1 && tone < 99) {
180
+ tone += tone < 50 ? -1 : 1;
181
+ }
182
+ return {
183
+ fill: rgb(palette.tone(tone)),
184
+ foreground: foregroundFor(palette.tone(tone))
185
+ };
186
+ }
187
+
188
+ /**
189
+ * Pick the two accent hues: which arm of the split becomes the STANDOUT one
190
+ * (`tertiary` — the FAB, the compose button) and which stays quiet.
191
+ *
192
+ * A split pair is symmetric about the complement, but the two arms are not
193
+ * equally vivid, because the gamut is not a circle. The louder role takes
194
+ * whichever arm can reach more chroma, then that arm alone is allowed to drift
195
+ * toward a more vivid neighbour. Only the standout moves: snapping both can pull
196
+ * them onto the same pocket, which collapses the pair and leaves the destructive
197
+ * check below with nothing to swap to.
198
+ */
199
+ function accentHues(seedHue) {
200
+ const [firstRotation, secondRotation] = SPLIT_ROTATIONS;
201
+ const geometricA = (seedHue + firstRotation) % 360;
202
+ const geometricB = (seedHue + secondRotation) % 360;
203
+ const geometricStandout = peakChroma(geometricA) >= peakChroma(geometricB) ? geometricA : geometricB;
204
+ const quiet = geometricStandout === geometricA ? geometricB : geometricA;
205
+ const snapped = vividHueNear(geometricStandout);
206
+ const standout = hueDistance(snapped, quiet) >= MIN_ACCENT_SEPARATION ? snapped : geometricStandout;
207
+
208
+ // A call to action must not be mistaken for a destructive one. When the loud
209
+ // arm lands near the error hue the two trade places, which keeps the split
210
+ // pair intact instead of inventing a third rotation.
211
+ const errorHue = Hct.fromInt(argbFromHex(STATUS_SEEDS.error)).hue;
212
+ return hueDistance(standout, errorHue) < DESTRUCTIVE_PROXIMITY ? {
213
+ secondary: standout,
214
+ tertiary: quiet
215
+ } : {
216
+ secondary: quiet,
217
+ tertiary: standout
218
+ };
219
+ }
220
+
221
+ /**
222
+ * Build the policy-owned tokens for a seed and mode.
223
+ *
224
+ * `roles` is the engine's `vivid` role set for the same seed and mode, passed in
225
+ * so the caller does not generate it twice — the surface scale and
226
+ * `--primary-text` come straight from it.
227
+ */
228
+ export function buildPolicyTokens(seedHex, isDark, roles, pinned = {}) {
229
+ const seed = Hct.fromInt(argbFromHex(seedHex));
230
+
231
+ // LIGHT takes the max-chroma palette at a deep tone: on a near-white page the
232
+ // fill has to go deep to read calm, and max chroma is what keeps it from going
233
+ // pastel there. DARK takes the SEED'S OWN palette — its own chroma and its own
234
+ // tone, floored so a dark seed still lifts off the ground. At a fixed dark tone
235
+ // every mid-tone preset read dull on black, and the ones that looked right were
236
+ // exactly those whose seed tone escaped it.
237
+ const brandPalette = isDark ? TonalPalette.fromInt(argbFromHex(seedHex)) : TonalPalette.fromHueAndChroma(seed.hue, 200);
238
+ const primary = fillPair(brandPalette, isDark ? Math.max(seed.tone, DARK_FLOOR) : LIGHT_FILL_TONE);
239
+ const tokens = {
240
+ '--primary': primary.fill,
241
+ '--primary-foreground': primary.foreground,
242
+ // The accent legible as TEXT on the page surface — the job M3's `primary`
243
+ // does correctly, and which the fill must stop trying to do at the same time.
244
+ '--primary-text': roles.primary,
245
+ '--primary-subtle': rgba(TonalPalette.fromHueAndChroma(seed.hue, 200).tone(SUBTLE_SOURCE_TONE), isDark ? SUBTLE_ALPHA.dark : SUBTLE_ALPHA.light),
246
+ '--ring': roles.primary,
247
+ // `--card` is the one surface MAPPING the policy changes.
248
+ // `surfaceContainerLowest` is M3's RECESSED step: in dark it sits at tone 4
249
+ // against a tone-6 background, so every card, sheet and chat bubble sinks
250
+ // into the page instead of lifting off it. Light is unaffected — lowest IS
251
+ // the lightest there — so only dark moves.
252
+ '--card': isDark ? roles.surfaceContainer : roles.surfaceContainerLowest,
253
+ // A touch darker than M3's page background: near-white reads as unfinished
254
+ // next to the card, and the extra step gives the surface ramp somewhere to sit.
255
+ '--background': rgb(TonalPalette.fromHueAndChroma(seed.hue, 10).tone(isDark ? 4 : 96)),
256
+ // `--accent` stays what every consumer actually uses it for: a hover surface.
257
+ '--accent': roles.surfaceContainerHigh,
258
+ '--accent-foreground': roles.onSurfaceVariant
259
+ };
260
+ const hues = accentHues(seed.hue);
261
+ for (const role of ['secondary', 'tertiary']) {
262
+ const pin = pinned[role];
263
+ const hue = pin !== undefined ? Hct.fromInt(argbFromHex(pin)).hue : hues[role];
264
+ // One hue, three palettes. Every member shares it, so the family still reads
265
+ // as one colour; only how loudly each speaks differs.
266
+ const fillPalette = TonalPalette.fromHueAndChroma(hue, ACCENT_CHROMA);
267
+ const textPalette = TonalPalette.fromHueAndChroma(hue, TEXT_CHROMA);
268
+ const vividPalette = TonalPalette.fromHueAndChroma(hue, 200);
269
+ // DARK sits at the hue's peak tone, floored by the same rule the brand fill
270
+ // uses: some hues peak dark (violet at 35), and rendering them there gives a
271
+ // slab rather than a highlight. LIGHT goes deep like every other fill, but
272
+ // that is exactly the tone where a yellow-green turns to bile, so the
273
+ // analyzer runs there — Bloom ships it yet only reaches it on the fidelity
274
+ // path, which no Bloom variant uses, so a rotated accent could land in the
275
+ // band with nothing to lift it out.
276
+ const tone = isDark ? Math.max(peakTone(hue), DARK_FLOOR) : fixIfDisliked(Hct.fromInt(fillPalette.tone(LIGHT_FILL_TONE))).tone;
277
+ const pair = fillPair(fillPalette, tone);
278
+ tokens[`--${role}`] = pair.fill;
279
+ tokens[`--${role}-foreground`] = pair.foreground;
280
+ tokens[`--${role}-text`] = rgb(textPalette.tone(isDark ? TEXT_TONE.dark : TEXT_TONE.light));
281
+ tokens[`--${role}-subtle`] = rgba(vividPalette.tone(SUBTLE_SOURCE_TONE), isDark ? SUBTLE_ALPHA.dark : SUBTLE_ALPHA.light);
282
+ }
283
+
284
+ // Categorical chart ramp: five hues spread evenly from the seed at one tone.
285
+ // The old ramp drew all five from the primary/secondary/tertiary trio, which
286
+ // spans ~35 degrees, so adjacent series were indistinguishable.
287
+ for (let i = 0; i < 5; i += 1) {
288
+ tokens[`--chart-${i + 1}`] = rgb(TonalPalette.fromHueAndChroma((seed.hue + i * 72) % 360, 60).tone(isDark ? 72 : 48));
289
+ }
290
+
291
+ // The status family, themed per mode. The four frozen hexes it replaces all
292
+ // FAIL AA under white text — warning at 2.15, success 2.54, info 3.68, error
293
+ // 3.76 — and had no subtle or text member, so every status pill in the
294
+ // ecosystem was either illegible or hand-rolled.
295
+ for (const [role, hex] of Object.entries(STATUS_SEEDS)) {
296
+ const status = Hct.fromInt(argbFromHex(hex));
297
+ const palette = TonalPalette.fromHueAndChroma(status.hue, status.chroma);
298
+ const pair = fillPair(palette, isDark ? Math.max(status.tone, DARK_FLOOR) : LIGHT_FILL_TONE);
299
+ tokens[`--${role}`] = pair.fill;
300
+ tokens[`--${role}-foreground`] = pair.foreground;
301
+ tokens[`--${role}-text`] = rgb(TonalPalette.fromHueAndChroma(status.hue, TEXT_CHROMA).tone(isDark ? TEXT_TONE.dark : TEXT_TONE.light));
302
+ // Mixed from the seed's OWN tone and chroma — for error that reproduces
303
+ // #EF4444 exactly, the bright red consumers were hand-tinting with
304
+ // `theme.colors.error + '15'`, which only worked because that token was a
305
+ // flat hex and produced an opaque slab on any `rgb(...)` one.
306
+ tokens[`--${role}-subtle`] = rgba(palette.tone(status.tone), isDark ? SUBTLE_ALPHA.dark : SUBTLE_ALPHA.light);
307
+ }
308
+ return tokens;
309
+ }
310
+ //# sourceMappingURL=color-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["argbFromHex","Hct","TonalPalette","fixIfDisliked","blueFromArgb","greenFromArgb","redFromArgb","STATUS_SEEDS","success","error","warning","info","AA","rgb","argb","rgba","alpha","contrastOf","onWhite","channel","v","c","Math","pow","luminance","foregroundFor","noLegibleForeground","LIGHT_FILL_TONE","DARK_FLOOR","ACCENT_CHROMA","TEXT_TONE","light","dark","TEXT_CHROMA","SUBTLE_SOURCE_TONE","SUBTLE_ALPHA","SPLIT_ROTATIONS","VIVID_SNAP_WINDOW","VIVID_SNAP_MIN_GAIN","MIN_ACCENT_SEPARATION","DESTRUCTIVE_PROXIMITY","hueDistance","a","b","d","abs","min","peakTone","hue","palette","fromHueAndChroma","bestTone","bestChroma","tone","chroma","fromInt","peakChroma","vividHueNear","baseChroma","bestHue","delta","candidate","fillPair","startTone","fill","foreground","accentHues","seedHue","firstRotation","secondRotation","geometricA","geometricB","geometricStandout","quiet","snapped","standout","errorHue","secondary","tertiary","buildPolicyTokens","seedHex","isDark","roles","pinned","seed","brandPalette","primary","max","tokens","surfaceContainer","surfaceContainerLowest","surfaceContainerHigh","onSurfaceVariant","hues","role","pin","undefined","fillPalette","textPalette","vividPalette","pair","i","hex","Object","entries","status"],"sourceRoot":"../../../src","sources":["theme/color-policy.ts"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { generateRoleColors } from "../color-engine/index.js";
4
+ import { buildPolicyTokens } from "../color-policy.js";
4
5
  import { CANONICAL_TOKENS } from "../token-registry.js";
5
6
 
6
7
  /**
@@ -85,10 +86,21 @@ export function buildSeedScopeVars(options) {
85
86
  secondarySeed: options.secondarySeed,
86
87
  tertiarySeed: options.tertiarySeed
87
88
  });
88
- const tokens = roleColorsToPresetTokens(roles);
89
+ const tokens = {
90
+ ...roleColorsToPresetTokens(roles),
91
+ ...buildPolicyTokens(options.seed, options.mode === 'dark', roles, {
92
+ secondary: options.secondarySeed,
93
+ tertiary: options.tertiarySeed
94
+ })
95
+ };
89
96
  const vars = {
90
97
  ...tokens
91
98
  };
99
+
100
+ // Policy tokens live outside CANONICAL_TOKENS, so alias every token present.
101
+ for (const [key, value] of Object.entries(tokens)) {
102
+ vars[`--color-${key.slice(2)}`] = value;
103
+ }
92
104
  for (const token of CANONICAL_TOKENS) {
93
105
  const value = tokens[`--${token}`];
94
106
  if (value !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"names":["generateRoleColors","CANONICAL_TOKENS","roleColorsToPresetTokens","r","background","onBackground","surfaceContainerLow","onSurface","surfaceContainer","primary","onPrimary","secondaryContainer","onSecondaryContainer","tertiaryContainer","onTertiaryContainer","surfaceContainerHigh","onSurfaceVariant","error","outlineVariant","surfaceContainerLowest","secondary","tertiary","primaryContainer","buildSeedScopeVars","options","roles","seed","variant","isDark","mode","contrastLevel","secondarySeed","tertiarySeed","tokens","vars","token","value","undefined"],"sourceRoot":"../../../../src","sources":["theme/color-scope/seed-scope.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["generateRoleColors","buildPolicyTokens","CANONICAL_TOKENS","roleColorsToPresetTokens","r","background","onBackground","surfaceContainerLow","onSurface","surfaceContainer","primary","onPrimary","secondaryContainer","onSecondaryContainer","tertiaryContainer","onTertiaryContainer","surfaceContainerHigh","onSurfaceVariant","error","outlineVariant","surfaceContainerLowest","secondary","tertiary","primaryContainer","buildSeedScopeVars","options","roles","seed","variant","isDark","mode","contrastLevel","secondarySeed","tertiarySeed","tokens","vars","key","value","Object","entries","slice","token","undefined"],"sourceRoot":"../../../../src","sources":["theme/color-scope/seed-scope.ts"],"mappings":"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","ignoreList":[]}
@@ -119,6 +119,12 @@ export function buildScopeVars(colorPreset, mode, accents) {
119
119
  const vars = {
120
120
  ...tokens
121
121
  };
122
+
123
+ // Policy tokens live outside CANONICAL_TOKENS, so give every token present a
124
+ // `--color-*` alias; NativeWind resolves its utilities through those.
125
+ for (const [key, value] of Object.entries(tokens)) {
126
+ vars[`--color-${key.slice(2)}`] = value;
127
+ }
122
128
  for (const token of CANONICAL_TOKENS) {
123
129
  const value = tokens[`--${token}`];
124
130
  if (value !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","CANONICAL_TOKENS","getResolvedTokens","nativeWindModule","unavailableReason","hasWarned","loadNativeWindVars","undefined","require","loaded","vars","error","Error","message","String","warnScopeInert","detail","process","env","NODE_ENV","console","warn","buildScopeVars","colorPreset","mode","accents","tokens","token","value","getVariableContextProvider","OS","module","VariableContextProvider","buildNativePresetStyle"],"sourceRoot":"../../../../src","sources":["theme/color-scope/style-builder.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Platform","CANONICAL_TOKENS","getResolvedTokens","nativeWindModule","unavailableReason","hasWarned","loadNativeWindVars","undefined","require","loaded","vars","error","Error","message","String","warnScopeInert","detail","process","env","NODE_ENV","console","warn","buildScopeVars","colorPreset","mode","accents","tokens","key","value","Object","entries","slice","token","getVariableContextProvider","OS","module","VariableContextProvider","buildNativePresetStyle"],"sourceRoot":"../../../../src","sources":["theme/color-scope/style-builder.ts"],"mappings":"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","ignoreList":[]}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { APP_COLOR_PRESETS } from "./color-presets.js";
4
4
  import { generateRoleColors } from "./color-engine/index.js";
5
+ import { buildPolicyTokens } from "./color-policy.js";
5
6
 
6
7
  /**
7
8
  * Optional explicit accent-colour overrides (`#rrggbb`) that PIN the secondary
@@ -47,7 +48,7 @@ export function getPresetVars(colorName, mode, accents) {
47
48
  secondarySeed: accents?.secondaryHex ?? preset.secondaryHex,
48
49
  tertiarySeed: accents?.tertiaryHex ?? preset.tertiaryHex
49
50
  });
50
- return {
51
+ const base = {
51
52
  // --- base shadcn palette ---
52
53
  '--background': r.background,
53
54
  '--foreground': r.onBackground,
@@ -97,6 +98,13 @@ export function getPresetVars(colorName, mode, accents) {
97
98
  '--sidebar-border': r.outlineVariant,
98
99
  '--sidebar-ring': r.primary
99
100
  };
101
+ return {
102
+ ...base,
103
+ ...buildPolicyTokens(preset.hex, mode === 'dark', r, {
104
+ secondary: accents?.secondaryHex ?? preset.secondaryHex,
105
+ tertiary: accents?.tertiaryHex ?? preset.tertiaryHex
106
+ })
107
+ };
100
108
  }
101
109
 
102
110
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["APP_COLOR_PRESETS","generateRoleColors","getResolvedTokens","getPresetVars","colorName","mode","accents","preset","r","seed","hex","variant","isDark","secondarySeed","secondaryHex","tertiarySeed","tertiaryHex","background","onBackground","surfaceContainerLow","onSurface","surfaceContainer","primary","onPrimary","secondaryContainer","onSecondaryContainer","tertiaryContainer","onTertiaryContainer","surfaceContainerHigh","onSurfaceVariant","error","outlineVariant","surfaceContainerLowest","secondary","tertiary","primaryContainer","applyPresetVarsToDocument","document","vars","root","documentElement","style","key","value","Object","entries","setProperty"],"sourceRoot":"../../../src","sources":["theme/preset-vars.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["APP_COLOR_PRESETS","generateRoleColors","buildPolicyTokens","getResolvedTokens","getPresetVars","colorName","mode","accents","preset","r","seed","hex","variant","isDark","secondarySeed","secondaryHex","tertiarySeed","tertiaryHex","base","background","onBackground","surfaceContainerLow","onSurface","surfaceContainer","primary","onPrimary","secondaryContainer","onSecondaryContainer","tertiaryContainer","onTertiaryContainer","surfaceContainerHigh","onSurfaceVariant","error","outlineVariant","surfaceContainerLowest","secondary","tertiary","primaryContainer","applyPresetVarsToDocument","document","vars","root","documentElement","style","key","value","Object","entries","setProperty"],"sourceRoot":"../../../src","sources":["theme/preset-vars.ts"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,17 @@ import { getPresetVars } from "./preset-vars.js";
16
16
  * Order mirrors `getPresetVars`'s insertion order: base tokens first (in the
17
17
  * order they appear in the preset data), then the synthesized extended tokens.
18
18
  */
19
- export const CANONICAL_TOKENS = ['background', 'foreground', 'surface', 'surface-foreground', 'popover', 'popover-foreground', 'primary', 'primary-foreground', 'secondary', 'secondary-foreground', 'tertiary', 'tertiary-foreground', 'muted', 'muted-foreground', 'accent', 'accent-foreground', 'destructive', 'border', 'input', 'ring', 'sidebar', 'card', 'card-foreground', 'chart-1', 'chart-2', 'chart-3', 'chart-4', 'chart-5', 'content-area', 'sidebar-foreground', 'sidebar-primary', 'sidebar-primary-foreground', 'sidebar-accent', 'sidebar-accent-foreground', 'sidebar-border', 'sidebar-ring'];
19
+ export const CANONICAL_TOKENS = ['background', 'foreground', 'surface', 'surface-foreground', 'popover', 'popover-foreground', 'primary', 'primary-foreground', 'secondary', 'secondary-foreground', 'tertiary', 'tertiary-foreground', 'muted', 'muted-foreground', 'accent', 'accent-foreground', 'destructive', 'border', 'input', 'ring', 'sidebar', 'card', 'card-foreground', 'chart-1', 'chart-2', 'chart-3', 'chart-4', 'chart-5', 'content-area', 'sidebar-foreground', 'sidebar-primary', 'sidebar-primary-foreground', 'sidebar-accent', 'sidebar-accent-foreground', 'sidebar-border', 'sidebar-ring',
20
+ // --- the accent families ---
21
+ // Each accent is a FAMILY, not a colour: a fill, the label that is legible on
22
+ // it, a `-text` form for a mark on the page, and a `-subtle` translucent tint
23
+ // for the surface behind one. A single value can only ever be a fill, which is
24
+ // why consumers hand-rolled the rest with hex-alpha arithmetic.
25
+ 'primary-text', 'primary-subtle', 'secondary-text', 'secondary-subtle', 'tertiary-text', 'tertiary-subtle',
26
+ // --- semantic status, themed per mode ---
27
+ // Replaces four frozen hexes that all FAILED AA under white text (warning at
28
+ // 2.15, success 2.54, info 3.68, error 3.76) and had no subtle or text member.
29
+ 'success', 'success-foreground', 'success-text', 'success-subtle', 'error', 'error-foreground', 'error-text', 'error-subtle', 'warning', 'warning-foreground', 'warning-text', 'warning-subtle', 'info', 'info-foreground', 'info-text', 'info-subtle'];
20
30
 
21
31
  /** A canonical token name (no leading `--`). */
22
32
 
@@ -1 +1 @@
1
- {"version":3,"names":["APP_COLOR_NAMES","getPresetVars","CANONICAL_TOKENS","RAW_HSL_TRIPLE","hslToSrgb","triple","colorPart","alphaPart","split","map","part","trim","channels","filter","Boolean","hue","parseFloat","replace","sat","light","h","Number","isFinite","s","l","chroma","Math","abs","huePrime","second","r","g","b","match","red","round","green","blue","undefined","alpha","endsWith","safeAlpha","getResolvedTokens","preset","mode","accents","raw","resolved","key","value","Object","entries","test"],"sourceRoot":"../../../src","sources":["theme/token-registry.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["APP_COLOR_NAMES","getPresetVars","CANONICAL_TOKENS","RAW_HSL_TRIPLE","hslToSrgb","triple","colorPart","alphaPart","split","map","part","trim","channels","filter","Boolean","hue","parseFloat","replace","sat","light","h","Number","isFinite","s","l","chroma","Math","abs","huePrime","second","r","g","b","match","red","round","green","blue","undefined","alpha","endsWith","safeAlpha","getResolvedTokens","preset","mode","accents","raw","resolved","key","value","Object","entries","test"],"sourceRoot":"../../../src","sources":["theme/token-registry.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../../src/button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAgB7C,OAAO,KAAK,EAAE,WAAW,EAA6B,MAAM,SAAS,CAAC;AAEtE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAkRtE,eAAO,MAAM,MAAM,yCAAwB,CAAC;AAG5C,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,eAAe,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEtE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,WAAW,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAElE,CAAC;AAGH,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAMH,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,iBAAiB,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAExE,CAAC"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../../src/button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4C,MAAM,OAAO,CAAC;AAmBjE,OAAO,KAAK,EAAE,WAAW,EAA6B,MAAM,SAAS,CAAC;AAEtE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAkWtE,eAAO,MAAM,MAAM,yCAAwB,CAAC;AAG5C,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,eAAe,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEtE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,WAAW,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAElE,CAAC;AAGH,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAMH,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,iBAAiB,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAExE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Button.web.d.ts","sourceRoot":"","sources":["../../../../src/button/Button.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KASN,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAE,WAAW,EAA6B,MAAM,SAAS,CAAC;AAEtE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AA+ZtE,eAAO,MAAM,MAAM,yCAA2B,CAAC;AAG/C,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,eAAe,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEtE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,WAAW,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAElE,CAAC;AAGH,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,iBAAiB,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAExE,CAAC"}
1
+ {"version":3,"file":"Button.web.d.ts","sourceRoot":"","sources":["../../../../src/button/Button.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KASN,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAE,WAAW,EAA6B,MAAM,SAAS,CAAC;AAEtE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAuatE,eAAO,MAAM,MAAM,yCAA2B,CAAC;AAG/C,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,eAAe,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEtE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,WAAW,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAElE,CAAC;AAGH,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,aAAa,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEpE,CAAC;AAGH,eAAO,MAAM,UAAU,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAEjE,CAAC;AAGH,eAAO,MAAM,iBAAiB,oCAAgB,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,6CAExE,CAAC"}
@@ -10,6 +10,14 @@ import type { StyleProp, ViewStyle, TextStyle } from 'react-native';
10
10
  * the set. On native they fall back to a sensible equivalent
11
11
  * (`outline → secondary`, `link → text`, `destructive → primary` tinted with
12
12
  * the negative token) so passing them never crashes a native consumer.
13
+ *
14
+ * `text` (and its web alias `link`) is DELIBERATELY not a transparent `ghost`:
15
+ * it is the compact inline affordance, so it overrides the size config's padding
16
+ * down to 4/8 on BOTH platforms. `ghost` keeps the full padding — it is a
17
+ * regular button that happens to have no background. The one geometry that does
18
+ * differ by platform is `minHeight`: web clears it for `text`/`link` so the
19
+ * control hugs its label and sits inline, native keeps the size config's value
20
+ * because a finger needs the target and a cursor does not.
13
21
  */
14
22
  export type ButtonVariant = 'primary' | 'secondary' | 'inverse' | 'icon' | 'ghost' | 'text' | 'outline' | 'link' | 'destructive';
15
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/button/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,WAAW,GACX,SAAS,GACT,MAAM,GACN,OAAO,GACP,MAAM,GACN,SAAS,GACT,MAAM,GACN,aAAa,CAAC;AAElB;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,QAAQ,GACR,OAAO,GACP,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,MAAM,CAAC;AAEX,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAEjC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAEhC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IAWnB;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC/D;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/button/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,WAAW,GACX,SAAS,GACT,MAAM,GACN,OAAO,GACP,MAAM,GACN,SAAS,GACT,MAAM,GACN,aAAa,CAAC;AAElB;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,QAAQ,GACR,OAAO,GACP,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,MAAM,CAAC;AAEX,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAEjC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAEhC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IAWnB;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC/D;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Fab.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAa7C,OAAO,KAAK,EAAgB,QAAQ,EAAuB,MAAM,SAAS,CAAC;AAE3E,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAyM3E,eAAO,MAAM,GAAG,sCAAqB,CAAC"}
1
+ {"version":3,"file":"Fab.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAa7C,OAAO,KAAK,EAAgB,QAAQ,EAAuB,MAAM,SAAS,CAAC;AAE3E,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA4M3E,eAAO,MAAM,GAAG,sCAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Fab.web.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAgB,QAAQ,EAAuB,MAAM,SAAS,CAAC;AAE3E,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAiS3E,eAAO,MAAM,GAAG,sCAAwB,CAAC"}
1
+ {"version":3,"file":"Fab.web.d.ts","sourceRoot":"","sources":["../../../../src/fab/Fab.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAgB,QAAQ,EAAuB,MAAM,SAAS,CAAC;AAE3E,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAoS3E,eAAO,MAAM,GAAG,sCAAwB,CAAC"}
@@ -8,7 +8,12 @@ import type { StyleProp, ViewStyle, TextStyle } from 'react-native';
8
8
  * A lower-emphasis FAB that still reads as elevated.
9
9
  * - `surface` — alias of `secondary`, named for Material-style "surface" FABs.
10
10
  */
11
- export type FabVariant = 'primary' | 'secondary' | 'surface';
11
+ /**
12
+ * M3 defines four FAB colour variants. Bloom previously mapped `secondary` onto
13
+ * the neutral card surface, so a "secondary FAB" was a grey circle and the
14
+ * accent trio had no home in the component that most wants one.
15
+ */
16
+ export type FabVariant = 'primary' | 'secondary' | 'tertiary' | 'surface';
12
17
  /**
13
18
  * FAB size presets, matching Material-ish conventions but in Bloom's scale:
14
19
  * - `small` — 40px (compact / dense layouts)