@oxyhq/bloom 0.76.1 → 0.77.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.
@@ -90,6 +90,12 @@ const LIGHT_FILL_TONE = 45;
90
90
  /** The tone a white-label fill sits at in DARK: the ceiling white text allows. */
91
91
  const DARK_FILL_TONE = 49;
92
92
 
93
+ /** How far a fill may be dragged from its natural tone before the colour is lost. */
94
+ const TONE_BUDGET = 25;
95
+
96
+ /** No dark-mode BRAND fill sits below this: under it a colour goes heavy on black. */
97
+ const DARK_SEED_FLOOR = 58;
98
+
93
99
  /**
94
100
  * No dark-mode ACCENT sits below this. Some hues peak dark — violet at tone 33 —
95
101
  * and rendering one there gives a slab rather than a highlight.
@@ -206,11 +212,31 @@ function vividHueNear(hue) {
206
212
  * why 11 of the 13 presets carry white and exactly the two light ones do not.
207
213
  */
208
214
  function whiteLabelTone(palette, seedTone, isDark) {
209
- const target = isDark ? DARK_FILL_TONE : LIGHT_FILL_TONE;
210
- const candidate = Math.max(target, seedTone - 25);
215
+ // DARK keeps the brand's OWN tone, floored so a dark seed still lifts off the
216
+ // ground. On a near-black page the fill IS the brand — oxy at tone 49 is a
217
+ // different, electric purple, not #c46ede — so fidelity wins and the label
218
+ // follows. LIGHT is the opposite: a bright fill on a white page reads thin, so
219
+ // it comes down to the ceiling white allows unless that costs more than the
220
+ // budget, which is what keeps yellow yellow and faircoin lime.
221
+ if (isDark) return Math.max(seedTone, DARK_SEED_FLOOR);
222
+ const candidate = Math.max(LIGHT_FILL_TONE, seedTone - TONE_BUDGET);
211
223
  return contrastOf(palette.tone(candidate), true) >= AA ? candidate : seedTone;
212
224
  }
213
225
 
226
+ /**
227
+ * The same budget governs the ACCENT: come down to where white fits, unless the
228
+ * descent would cost more than this and destroy the hue. An accent that peaks
229
+ * bright — a lime at tone 88 — keeps its peak and takes a black label; one that
230
+ * peaks dark comes down and carries white.
231
+ */
232
+ function accentTone(hue, isDark) {
233
+ if (!isDark) return LIGHT_FILL_TONE;
234
+ const peak = Math.max(peakTone(hue), DARK_ACCENT_FLOOR);
235
+ const palette = _tonalPalette.TonalPalette.fromHueAndChroma(hue, ACCENT_CHROMA);
236
+ const candidate = Math.max(DARK_FILL_TONE, peak - TONE_BUDGET);
237
+ return contrastOf(palette.tone(candidate), true) >= AA ? candidate : peak;
238
+ }
239
+
214
240
  /** Settle a fill tone so some foreground is legible, then pair it with that foreground. */
215
241
  function fillPair(palette, startTone) {
216
242
  let tone = startTone;
@@ -273,7 +299,9 @@ function buildPolicyTokens(seedHex, isDark, roles, pinned = {}) {
273
299
  // tone <= 49, so that is the ceiling — in dark as much as in light. Letting the
274
300
  // dark fill sit at the seed's own tone instead makes it brighter, but every one
275
301
  // of those labels turns black, which costs more than the brightness buys.
276
- const brandPalette = _tonalPalette.TonalPalette.fromHueAndChroma(seed.hue, 200);
302
+ // DARK keys off the seed itself so the fill IS the brand hex; LIGHT uses the
303
+ // max-chroma palette, which is what stops a deepened fill from going pastel.
304
+ const brandPalette = isDark ? _tonalPalette.TonalPalette.fromInt((0, _index.argbFromHex)(seedHex)) : _tonalPalette.TonalPalette.fromHueAndChroma(seed.hue, 200);
277
305
  const primary = fillPair(brandPalette, whiteLabelTone(brandPalette, seed.tone, isDark));
278
306
  const tokens = {
279
307
  '--primary': primary.fill,
@@ -320,7 +348,7 @@ function buildPolicyTokens(seedHex, isDark, roles, pinned = {}) {
320
348
  // black. The accent chroma cap already keeps these hues out of neon territory,
321
349
  // and the hue itself is the caller's brand rather than ours to move. The
322
350
  // analyzer still runs where it was designed to, inside `color-roles`.
323
- const tone = isDark ? Math.max(peakTone(hue), DARK_ACCENT_FLOOR) : LIGHT_FILL_TONE;
351
+ const tone = accentTone(hue, isDark);
324
352
  const pair = fillPair(fillPalette, tone);
325
353
  tokens[`--${role}`] = pair.fill;
326
354
  tokens[`--${role}-foreground`] = pair.foreground;
@@ -1 +1 @@
1
- {"version":3,"names":["_index","require","_hct","_tonalPalette","_colorUtils","STATUS_SEEDS","exports","success","error","warning","info","AA","rgb","argb","redFromArgb","greenFromArgb","blueFromArgb","rgba","alpha","contrastOf","onWhite","channel","v","c","Math","pow","luminance","foregroundFor","noLegibleForeground","LIGHT_FILL_TONE","DARK_FILL_TONE","DARK_ACCENT_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","TonalPalette","fromHueAndChroma","bestTone","bestChroma","tone","chroma","Hct","fromInt","peakChroma","vividHueNear","baseChroma","bestHue","delta","candidate","whiteLabelTone","seedTone","isDark","target","max","fillPair","startTone","fill","foreground","accentHues","seedHue","firstRotation","secondRotation","geometricA","geometricB","geometricStandout","quiet","snapped","standout","errorHue","argbFromHex","secondary","tertiary","buildPolicyTokens","seedHex","roles","pinned","seed","brandPalette","primary","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
+ {"version":3,"names":["_index","require","_hct","_tonalPalette","_colorUtils","STATUS_SEEDS","exports","success","error","warning","info","AA","rgb","argb","redFromArgb","greenFromArgb","blueFromArgb","rgba","alpha","contrastOf","onWhite","channel","v","c","Math","pow","luminance","foregroundFor","noLegibleForeground","LIGHT_FILL_TONE","DARK_FILL_TONE","TONE_BUDGET","DARK_SEED_FLOOR","DARK_ACCENT_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","TonalPalette","fromHueAndChroma","bestTone","bestChroma","tone","chroma","Hct","fromInt","peakChroma","vividHueNear","baseChroma","bestHue","delta","candidate","whiteLabelTone","seedTone","isDark","max","accentTone","peak","fillPair","startTone","fill","foreground","accentHues","seedHue","firstRotation","secondRotation","geometricA","geometricB","geometricStandout","quiet","snapped","standout","errorHue","argbFromHex","secondary","tertiary","buildPolicyTokens","seedHex","roles","pinned","seed","brandPalette","primary","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":[]}
@@ -85,6 +85,12 @@ const LIGHT_FILL_TONE = 45;
85
85
  /** The tone a white-label fill sits at in DARK: the ceiling white text allows. */
86
86
  const DARK_FILL_TONE = 49;
87
87
 
88
+ /** How far a fill may be dragged from its natural tone before the colour is lost. */
89
+ const TONE_BUDGET = 25;
90
+
91
+ /** No dark-mode BRAND fill sits below this: under it a colour goes heavy on black. */
92
+ const DARK_SEED_FLOOR = 58;
93
+
88
94
  /**
89
95
  * No dark-mode ACCENT sits below this. Some hues peak dark — violet at tone 33 —
90
96
  * and rendering one there gives a slab rather than a highlight.
@@ -201,11 +207,31 @@ function vividHueNear(hue) {
201
207
  * why 11 of the 13 presets carry white and exactly the two light ones do not.
202
208
  */
203
209
  function whiteLabelTone(palette, seedTone, isDark) {
204
- const target = isDark ? DARK_FILL_TONE : LIGHT_FILL_TONE;
205
- const candidate = Math.max(target, seedTone - 25);
210
+ // DARK keeps the brand's OWN tone, floored so a dark seed still lifts off the
211
+ // ground. On a near-black page the fill IS the brand — oxy at tone 49 is a
212
+ // different, electric purple, not #c46ede — so fidelity wins and the label
213
+ // follows. LIGHT is the opposite: a bright fill on a white page reads thin, so
214
+ // it comes down to the ceiling white allows unless that costs more than the
215
+ // budget, which is what keeps yellow yellow and faircoin lime.
216
+ if (isDark) return Math.max(seedTone, DARK_SEED_FLOOR);
217
+ const candidate = Math.max(LIGHT_FILL_TONE, seedTone - TONE_BUDGET);
206
218
  return contrastOf(palette.tone(candidate), true) >= AA ? candidate : seedTone;
207
219
  }
208
220
 
221
+ /**
222
+ * The same budget governs the ACCENT: come down to where white fits, unless the
223
+ * descent would cost more than this and destroy the hue. An accent that peaks
224
+ * bright — a lime at tone 88 — keeps its peak and takes a black label; one that
225
+ * peaks dark comes down and carries white.
226
+ */
227
+ function accentTone(hue, isDark) {
228
+ if (!isDark) return LIGHT_FILL_TONE;
229
+ const peak = Math.max(peakTone(hue), DARK_ACCENT_FLOOR);
230
+ const palette = TonalPalette.fromHueAndChroma(hue, ACCENT_CHROMA);
231
+ const candidate = Math.max(DARK_FILL_TONE, peak - TONE_BUDGET);
232
+ return contrastOf(palette.tone(candidate), true) >= AA ? candidate : peak;
233
+ }
234
+
209
235
  /** Settle a fill tone so some foreground is legible, then pair it with that foreground. */
210
236
  function fillPair(palette, startTone) {
211
237
  let tone = startTone;
@@ -268,7 +294,9 @@ export function buildPolicyTokens(seedHex, isDark, roles, pinned = {}) {
268
294
  // tone <= 49, so that is the ceiling — in dark as much as in light. Letting the
269
295
  // dark fill sit at the seed's own tone instead makes it brighter, but every one
270
296
  // of those labels turns black, which costs more than the brightness buys.
271
- const brandPalette = TonalPalette.fromHueAndChroma(seed.hue, 200);
297
+ // DARK keys off the seed itself so the fill IS the brand hex; LIGHT uses the
298
+ // max-chroma palette, which is what stops a deepened fill from going pastel.
299
+ const brandPalette = isDark ? TonalPalette.fromInt(argbFromHex(seedHex)) : TonalPalette.fromHueAndChroma(seed.hue, 200);
272
300
  const primary = fillPair(brandPalette, whiteLabelTone(brandPalette, seed.tone, isDark));
273
301
  const tokens = {
274
302
  '--primary': primary.fill,
@@ -315,7 +343,7 @@ export function buildPolicyTokens(seedHex, isDark, roles, pinned = {}) {
315
343
  // black. The accent chroma cap already keeps these hues out of neon territory,
316
344
  // and the hue itself is the caller's brand rather than ours to move. The
317
345
  // analyzer still runs where it was designed to, inside `color-roles`.
318
- const tone = isDark ? Math.max(peakTone(hue), DARK_ACCENT_FLOOR) : LIGHT_FILL_TONE;
346
+ const tone = accentTone(hue, isDark);
319
347
  const pair = fillPair(fillPalette, tone);
320
348
  tokens[`--${role}`] = pair.fill;
321
349
  tokens[`--${role}-foreground`] = pair.foreground;
@@ -1 +1 @@
1
- {"version":3,"names":["argbFromHex","Hct","TonalPalette","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_FILL_TONE","DARK_ACCENT_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","whiteLabelTone","seedTone","isDark","target","max","fillPair","startTone","fill","foreground","accentHues","seedHue","firstRotation","secondRotation","geometricA","geometricB","geometricStandout","quiet","snapped","standout","errorHue","secondary","tertiary","buildPolicyTokens","seedHex","roles","pinned","seed","brandPalette","primary","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":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,WAAW,QAAyB,yBAAgB;AAC7D,SAASC,GAAG,QAAQ,uBAAoB;AACxC,SAASC,YAAY,QAAQ,iCAA8B;AAC3D,SAASC,YAAY,EAAEC,aAAa,EAAEC,WAAW,QAAQ,+BAA4B;;AAErF;AACA,OAAO,MAAMC,YAAY,GAAG;EAC1BC,OAAO,EAAE,SAAS;EAClBC,KAAK,EAAE,SAAS;EAChBC,OAAO,EAAE,SAAS;EAClBC,IAAI,EAAE;AACR,CAAU;;AAEV;;AAMA;;AAGA,MAAMC,EAAE,GAAG,GAAG;AAEd,MAAMC,GAAG,GAAIC,IAAY,IACvB,OAAOR,WAAW,CAACQ,IAAI,CAAC,IAAIT,aAAa,CAACS,IAAI,CAAC,IAAIV,YAAY,CAACU,IAAI,CAAC,GAAG;;AAE1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,IAAI,GAAGA,CAACD,IAAY,EAAEE,KAAa,KACvC,QAAQV,WAAW,CAACQ,IAAI,CAAC,KAAKT,aAAa,CAACS,IAAI,CAAC,KAAKV,YAAY,CAACU,IAAI,CAAC,KAAKE,KAAK,GAAG;;AAEvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,UAAUA,CAACH,IAAY,EAAEI,OAAgB,EAAU;EAC1D,MAAMC,OAAO,GAAIC,CAAS,IAAa;IACrC,MAAMC,CAAC,GAAGD,CAAC,GAAG,GAAG;IACjB,OAAOC,CAAC,IAAI,OAAO,GAAGA,CAAC,GAAG,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAC,CAACF,CAAC,GAAG,KAAK,IAAI,KAAK,EAAE,GAAG,CAAC;EACtE,CAAC;EACD,MAAMG,SAAS,GACb,MAAM,GAAGL,OAAO,CAACb,WAAW,CAACQ,IAAI,CAAC,CAAC,GACnC,MAAM,GAAGK,OAAO,CAACd,aAAa,CAACS,IAAI,CAAC,CAAC,GACrC,MAAM,GAAGK,OAAO,CAACf,YAAY,CAACU,IAAI,CAAC,CAAC;EACtC,OAAOI,OAAO,GAAG,IAAI,IAAIM,SAAS,GAAG,IAAI,CAAC,GAAG,CAACA,SAAS,GAAG,IAAI,IAAI,IAAI;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,aAAa,GAAIX,IAAY,IACjCG,UAAU,CAACH,IAAI,EAAE,IAAI,CAAC,IAAIF,EAAE,GAAG,kBAAkB,GAAG,YAAY;AAElE,MAAMc,mBAAmB,GAAIZ,IAAY,IACvCG,UAAU,CAACH,IAAI,EAAE,IAAI,CAAC,GAAGF,EAAE,IAAIK,UAAU,CAACH,IAAI,EAAE,KAAK,CAAC,GAAGF,EAAE;;AAE7D;AACA,MAAMe,eAAe,GAAG,EAAE;;AAE1B;AACA,MAAMC,cAAc,GAAG,EAAE;;AAEzB;AACA;AACA;AACA;AACA,MAAMC,iBAAiB,GAAG,EAAE;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAMC,aAAa,GAAG,EAAE;;AAExB;AACA,MAAMC,SAAS,GAAG;EAAEC,KAAK,EAAE,EAAE;EAAEC,IAAI,EAAE;AAAG,CAAU;AAClD,MAAMC,WAAW,GAAG,EAAE;;AAEtB;AACA,MAAMC,kBAAkB,GAAG,EAAE;AAC7B,MAAMC,YAAY,GAAG;EAAEJ,KAAK,EAAE,IAAI;EAAEC,IAAI,EAAE;AAAK,CAAU;;AAEzD;AACA,MAAMI,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,CAAU;;AAE3C;AACA,MAAMC,iBAAiB,GAAG,EAAE;AAC5B,MAAMC,mBAAmB,GAAG,EAAE;;AAE9B;AACA,MAAMC,qBAAqB,GAAG,EAAE;;AAEhC;AACA,MAAMC,qBAAqB,GAAG,EAAE;AAEhC,SAASC,WAAWA,CAACC,CAAS,EAAEC,CAAS,EAAU;EACjD,MAAMC,CAAC,GAAGvB,IAAI,CAACwB,GAAG,CAACH,CAAC,GAAGC,CAAC,CAAC,GAAG,GAAG;EAC/B,OAAOtB,IAAI,CAACyB,GAAG,CAACF,CAAC,EAAE,GAAG,GAAGA,CAAC,CAAC;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,QAAQA,CAACC,GAAW,EAAU;EACrC,MAAMC,OAAO,GAAG/C,YAAY,CAACgD,gBAAgB,CAACF,GAAG,EAAE,GAAG,CAAC;EACvD,IAAIG,QAAQ,GAAG,EAAE;EACjB,IAAIC,UAAU,GAAG,CAAC,CAAC;EACnB,KAAK,IAAIC,IAAI,GAAG,EAAE,EAAEA,IAAI,IAAI,EAAE,EAAEA,IAAI,IAAI,CAAC,EAAE;IACzC,MAAMC,MAAM,GAAGrD,GAAG,CAACsD,OAAO,CAACN,OAAO,CAACI,IAAI,CAACA,IAAI,CAAC,CAAC,CAACC,MAAM;IACrD,IAAIA,MAAM,GAAGF,UAAU,EAAE;MACvBA,UAAU,GAAGE,MAAM;MACnBH,QAAQ,GAAGE,IAAI;IACjB;EACF;EACA,OAAOF,QAAQ;AACjB;;AAEA;AACA,SAASK,UAAUA,CAACR,GAAW,EAAU;EACvC,OAAO/C,GAAG,CAACsD,OAAO,CAACrD,YAAY,CAACgD,gBAAgB,CAACF,GAAG,EAAE,GAAG,CAAC,CAACK,IAAI,CAACN,QAAQ,CAACC,GAAG,CAAC,CAAC,CAAC,CAACM,MAAM;AACxF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,YAAYA,CAACT,GAAW,EAAU;EACzC,MAAMU,UAAU,GAAGF,UAAU,CAACR,GAAG,CAAC;EAClC,IAAIW,OAAO,GAAGX,GAAG;EACjB,IAAII,UAAU,GAAGM,UAAU;EAC3B,KAAK,IAAIE,KAAK,GAAG,CAACvB,iBAAiB,EAAEuB,KAAK,IAAIvB,iBAAiB,EAAEuB,KAAK,IAAI,CAAC,EAAE;IAC3E,MAAMC,SAAS,GAAG,CAAE,CAACb,GAAG,GAAGY,KAAK,IAAI,GAAG,GAAI,GAAG,IAAI,GAAG;IACrD,MAAMN,MAAM,GAAGE,UAAU,CAACK,SAAS,CAAC;IACpC,IAAIP,MAAM,GAAGF,UAAU,EAAE;MACvBA,UAAU,GAAGE,MAAM;MACnBK,OAAO,GAAGE,SAAS;IACrB;EACF;EACA,OAAOT,UAAU,GAAGM,UAAU,IAAIpB,mBAAmB,GAAGqB,OAAO,GAAGX,GAAG;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASc,cAAcA,CAACb,OAAqB,EAAEc,QAAgB,EAAEC,MAAe,EAAU;EACxF,MAAMC,MAAM,GAAGD,MAAM,GAAGrC,cAAc,GAAGD,eAAe;EACxD,MAAMmC,SAAS,GAAGxC,IAAI,CAAC6C,GAAG,CAACD,MAAM,EAAEF,QAAQ,GAAG,EAAE,CAAC;EACjD,OAAO/C,UAAU,CAACiC,OAAO,CAACI,IAAI,CAACQ,SAAS,CAAC,EAAE,IAAI,CAAC,IAAIlD,EAAE,GAAGkD,SAAS,GAAGE,QAAQ;AAC/E;;AAEA;AACA,SAASI,QAAQA,CAAClB,OAAqB,EAAEmB,SAAiB,EAAwC;EAChG,IAAIf,IAAI,GAAGe,SAAS;EACpB,OAAO3C,mBAAmB,CAACwB,OAAO,CAACI,IAAI,CAACA,IAAI,CAAC,CAAC,IAAIA,IAAI,GAAG,CAAC,IAAIA,IAAI,GAAG,EAAE,EAAE;IACvEA,IAAI,IAAIA,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;EAC5B;EACA,OAAO;IAAEgB,IAAI,EAAEzD,GAAG,CAACqC,OAAO,CAACI,IAAI,CAACA,IAAI,CAAC,CAAC;IAAEiB,UAAU,EAAE9C,aAAa,CAACyB,OAAO,CAACI,IAAI,CAACA,IAAI,CAAC;EAAE,CAAC;AACzF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASkB,UAAUA,CAACC,OAAe,EAA2C;EAC5E,MAAM,CAACC,aAAa,EAAEC,cAAc,CAAC,GAAGtC,eAAe;EACvD,MAAMuC,UAAU,GAAG,CAACH,OAAO,GAAGC,aAAa,IAAI,GAAG;EAClD,MAAMG,UAAU,GAAG,CAACJ,OAAO,GAAGE,cAAc,IAAI,GAAG;EAEnD,MAAMG,iBAAiB,GACrBrB,UAAU,CAACmB,UAAU,CAAC,IAAInB,UAAU,CAACoB,UAAU,CAAC,GAAGD,UAAU,GAAGC,UAAU;EAC5E,MAAME,KAAK,GAAGD,iBAAiB,KAAKF,UAAU,GAAGC,UAAU,GAAGD,UAAU;EACxE,MAAMI,OAAO,GAAGtB,YAAY,CAACoB,iBAAiB,CAAC;EAC/C,MAAMG,QAAQ,GACZvC,WAAW,CAACsC,OAAO,EAAED,KAAK,CAAC,IAAIvC,qBAAqB,GAAGwC,OAAO,GAAGF,iBAAiB;;EAEpF;EACA;EACA;EACA,MAAMI,QAAQ,GAAGhF,GAAG,CAACsD,OAAO,CAACvD,WAAW,CAACM,YAAY,CAACE,KAAK,CAAC,CAAC,CAACwC,GAAG;EACjE,OAAOP,WAAW,CAACuC,QAAQ,EAAEC,QAAQ,CAAC,GAAGzC,qBAAqB,GAC1D;IAAE0C,SAAS,EAAEF,QAAQ;IAAEG,QAAQ,EAAEL;EAAM,CAAC,GACxC;IAAEI,SAAS,EAAEJ,KAAK;IAAEK,QAAQ,EAAEH;EAAS,CAAC;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASI,iBAAiBA,CAC/BC,OAAe,EACfrB,MAAe,EACfsB,KAAiB,EACjBC,MAAqB,GAAG,CAAC,CAAC,EACZ;EACd,MAAMC,IAAI,GAAGvF,GAAG,CAACsD,OAAO,CAACvD,WAAW,CAACqF,OAAO,CAAC,CAAC;;EAE9C;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMI,YAAY,GAAGvF,YAAY,CAACgD,gBAAgB,CAACsC,IAAI,CAACxC,GAAG,EAAE,GAAG,CAAC;EACjE,MAAM0C,OAAO,GAAGvB,QAAQ,CAACsB,YAAY,EAAE3B,cAAc,CAAC2B,YAAY,EAAED,IAAI,CAACnC,IAAI,EAAEW,MAAM,CAAC,CAAC;EAEvF,MAAM2B,MAAoB,GAAG;IAC3B,WAAW,EAAED,OAAO,CAACrB,IAAI;IACzB,sBAAsB,EAAEqB,OAAO,CAACpB,UAAU;IAC1C;IACA;IACA,gBAAgB,EAAEgB,KAAK,CAACI,OAAO;IAC/B,kBAAkB,EAAE5E,IAAI,CACtBZ,YAAY,CAACgD,gBAAgB,CAACsC,IAAI,CAACxC,GAAG,EAAE,GAAG,CAAC,CAACK,IAAI,CAACnB,kBAAkB,CAAC,EACrE8B,MAAM,GAAG7B,YAAY,CAACH,IAAI,GAAGG,YAAY,CAACJ,KAC5C,CAAC;IACD,QAAQ,EAAEuD,KAAK,CAACI,OAAO;IACvB;IACA;IACA;IACA;IACA;IACA,QAAQ,EAAE1B,MAAM,GAAGsB,KAAK,CAACM,gBAAgB,GAAGN,KAAK,CAACO,sBAAsB;IACxE;IACA;IACA,cAAc,EAAEjF,GAAG,CAACV,YAAY,CAACgD,gBAAgB,CAACsC,IAAI,CAACxC,GAAG,EAAE,EAAE,CAAC,CAACK,IAAI,CAACW,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACtF;IACA,UAAU,EAAEsB,KAAK,CAACQ,oBAAoB;IACtC,qBAAqB,EAAER,KAAK,CAACS;EAC/B,CAAC;EAED,MAAMC,IAAI,GAAGzB,UAAU,CAACiB,IAAI,CAACxC,GAAG,CAAC;EACjC,KAAK,MAAMiD,IAAI,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAW;IACrD,MAAMC,GAAG,GAAGX,MAAM,CAACU,IAAI,CAAC;IACxB,MAAMjD,GAAG,GAAGkD,GAAG,KAAKC,SAAS,GAAGlG,GAAG,CAACsD,OAAO,CAACvD,WAAW,CAACkG,GAAG,CAAC,CAAC,CAAClD,GAAG,GAAGgD,IAAI,CAACC,IAAI,CAAC;IAC9E;IACA;IACA,MAAMG,WAAW,GAAGlG,YAAY,CAACgD,gBAAgB,CAACF,GAAG,EAAEnB,aAAa,CAAC;IACrE,MAAMwE,WAAW,GAAGnG,YAAY,CAACgD,gBAAgB,CAACF,GAAG,EAAEf,WAAW,CAAC;IACnE,MAAMqE,YAAY,GAAGpG,YAAY,CAACgD,gBAAgB,CAACF,GAAG,EAAE,GAAG,CAAC;IAC5D;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,MAAMK,IAAI,GAAGW,MAAM,GAAG3C,IAAI,CAAC6C,GAAG,CAACnB,QAAQ,CAACC,GAAG,CAAC,EAAEpB,iBAAiB,CAAC,GAAGF,eAAe;IAClF,MAAM6E,IAAI,GAAGpC,QAAQ,CAACiC,WAAW,EAAE/C,IAAI,CAAC;IACxCsC,MAAM,CAAC,KAAKM,IAAI,EAAE,CAAC,GAAGM,IAAI,CAAClC,IAAI;IAC/BsB,MAAM,CAAC,KAAKM,IAAI,aAAa,CAAC,GAAGM,IAAI,CAACjC,UAAU;IAChDqB,MAAM,CAAC,KAAKM,IAAI,OAAO,CAAC,GAAGrF,GAAG,CAACyF,WAAW,CAAChD,IAAI,CAACW,MAAM,GAAGlC,SAAS,CAACE,IAAI,GAAGF,SAAS,CAACC,KAAK,CAAC,CAAC;IAC3F4D,MAAM,CAAC,KAAKM,IAAI,SAAS,CAAC,GAAGnF,IAAI,CAC/BwF,YAAY,CAACjD,IAAI,CAACnB,kBAAkB,CAAC,EACrC8B,MAAM,GAAG7B,YAAY,CAACH,IAAI,GAAGG,YAAY,CAACJ,KAC5C,CAAC;EACH;;EAEA;EACA;EACA;EACA,KAAK,IAAIyE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,CAAC,EAAE;IAC7Bb,MAAM,CAAC,WAAWa,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG5F,GAAG,CAC9BV,YAAY,CAACgD,gBAAgB,CAAC,CAACsC,IAAI,CAACxC,GAAG,GAAGwD,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAACnD,IAAI,CAACW,MAAM,GAAG,EAAE,GAAG,EAAE,CACpF,CAAC;EACH;;EAEA;EACA;EACA;EACA;EACA,KAAK,MAAM,CAACiC,IAAI,EAAEQ,GAAG,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACrG,YAAY,CAAC,EAAE;IACtD,MAAMsG,MAAM,GAAG3G,GAAG,CAACsD,OAAO,CAACvD,WAAW,CAACyG,GAAG,CAAC,CAAC;IAC5C,MAAMxD,OAAO,GAAG/C,YAAY,CAACgD,gBAAgB,CAAC0D,MAAM,CAAC5D,GAAG,EAAE4D,MAAM,CAACtD,MAAM,CAAC;IACxE,MAAMiD,IAAI,GAAGpC,QAAQ,CAAClB,OAAO,EAAEe,MAAM,GAAGrC,cAAc,GAAGD,eAAe,CAAC;IACzEiE,MAAM,CAAC,KAAKM,IAAI,EAAE,CAAC,GAAGM,IAAI,CAAClC,IAAI;IAC/BsB,MAAM,CAAC,KAAKM,IAAI,aAAa,CAAC,GAAGM,IAAI,CAACjC,UAAU;IAChDqB,MAAM,CAAC,KAAKM,IAAI,OAAO,CAAC,GAAGrF,GAAG,CAC5BV,YAAY,CAACgD,gBAAgB,CAAC0D,MAAM,CAAC5D,GAAG,EAAEf,WAAW,CAAC,CAACoB,IAAI,CACzDW,MAAM,GAAGlC,SAAS,CAACE,IAAI,GAAGF,SAAS,CAACC,KACtC,CACF,CAAC;IACD;IACA;IACA;IACA;IACA4D,MAAM,CAAC,KAAKM,IAAI,SAAS,CAAC,GAAGnF,IAAI,CAC/BmC,OAAO,CAACI,IAAI,CAACuD,MAAM,CAACvD,IAAI,CAAC,EACzBW,MAAM,GAAG7B,YAAY,CAACH,IAAI,GAAGG,YAAY,CAACJ,KAC5C,CAAC;EACH;EAEA,OAAO4D,MAAM;AACf","ignoreList":[]}
1
+ {"version":3,"names":["argbFromHex","Hct","TonalPalette","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_FILL_TONE","TONE_BUDGET","DARK_SEED_FLOOR","DARK_ACCENT_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","whiteLabelTone","seedTone","isDark","max","accentTone","peak","fillPair","startTone","fill","foreground","accentHues","seedHue","firstRotation","secondRotation","geometricA","geometricB","geometricStandout","quiet","snapped","standout","errorHue","secondary","tertiary","buildPolicyTokens","seedHex","roles","pinned","seed","brandPalette","primary","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 +1 @@
1
- {"version":3,"file":"color-policy.d.ts","sourceRoot":"","sources":["../../../../src/theme/color-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAK9D,sFAAsF;AACtF,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,kFAAkF;AAClF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAoNlD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,UAAU,EACjB,MAAM,GAAE,aAAkB,GACzB,YAAY,CA4Gd"}
1
+ {"version":3,"file":"color-policy.d.ts","sourceRoot":"","sources":["../../../../src/theme/color-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAK9D,sFAAsF;AACtF,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,kFAAkF;AAClF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AA8OlD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,UAAU,EACjB,MAAM,GAAE,aAAkB,GACzB,YAAY,CAgHd"}
@@ -1 +1 @@
1
- {"version":3,"file":"color-policy.d.ts","sourceRoot":"","sources":["../../../../src/theme/color-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAK9D,sFAAsF;AACtF,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,kFAAkF;AAClF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAoNlD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,UAAU,EACjB,MAAM,GAAE,aAAkB,GACzB,YAAY,CA4Gd"}
1
+ {"version":3,"file":"color-policy.d.ts","sourceRoot":"","sources":["../../../../src/theme/color-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAK9D,sFAAsF;AACtF,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AAEX,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,kFAAkF;AAClF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AA8OlD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,UAAU,EACjB,MAAM,GAAE,aAAkB,GACzB,YAAY,CAgHd"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/bloom",
3
- "version": "0.76.1",
3
+ "version": "0.77.0",
4
4
  "packageManager": "bun@1.3.14",
5
5
  "description": "Bloom UI — Oxy ecosystem component library for React Native + Expo + Web",
6
6
  "main": "lib/commonjs/index.js",
@@ -66,12 +66,12 @@
66
66
  "--surface-foreground": "rgb(215 229 232)",
67
67
  "--popover": "rgb(21 34 36)",
68
68
  "--popover-foreground": "rgb(215 229 232)",
69
- "--primary": "rgb(0 129 143)",
70
- "--primary-foreground": "rgb(255 255 255)",
71
- "--secondary": "rgb(243 74 143)",
72
- "--secondary-foreground": "rgb(0 0 0)",
73
- "--tertiary": "rgb(253 144 0)",
74
- "--tertiary-foreground": "rgb(0 0 0)",
69
+ "--primary": "rgb(80 150 161)",
70
+ "--primary-foreground": "rgb(0 0 0)",
71
+ "--secondary": "rgb(213 49 120)",
72
+ "--secondary-foreground": "rgb(255 255 255)",
73
+ "--tertiary": "rgb(174 97 0)",
74
+ "--tertiary-foreground": "rgb(255 255 255)",
75
75
  "--muted": "rgb(32 44 46)",
76
76
  "--muted-foreground": "rgb(184 202 205)",
77
77
  "--accent": "rgb(32 44 46)",
@@ -186,10 +186,10 @@
186
186
  "--surface-foreground": "rgb(220 227 238)",
187
187
  "--popover": "rgb(25 32 40)",
188
188
  "--popover-foreground": "rgb(220 227 238)",
189
- "--primary": "rgb(0 121 192)",
190
- "--primary-foreground": "rgb(255 255 255)",
191
- "--secondary": "rgb(247 81 63)",
192
- "--secondary-foreground": "rgb(0 0 0)",
189
+ "--primary": "rgb(29 155 240)",
190
+ "--primary-foreground": "rgb(0 0 0)",
191
+ "--secondary": "rgb(214 58 43)",
192
+ "--secondary-foreground": "rgb(255 255 255)",
193
193
  "--tertiary": "rgb(252 220 0)",
194
194
  "--tertiary-foreground": "rgb(0 0 0)",
195
195
  "--muted": "rgb(36 43 51)",
@@ -306,12 +306,12 @@
306
306
  "--surface-foreground": "rgb(217 230 220)",
307
307
  "--popover": "rgb(23 34 28)",
308
308
  "--popover-foreground": "rgb(217 230 220)",
309
- "--primary": "rgb(0 133 91)",
310
- "--primary-foreground": "rgb(255 255 255)",
311
- "--secondary": "rgb(247 76 101)",
312
- "--secondary-foreground": "rgb(0 0 0)",
313
- "--tertiary": "rgb(189 94 255)",
314
- "--tertiary-foreground": "rgb(0 0 0)",
309
+ "--primary": "rgb(16 185 129)",
310
+ "--primary-foreground": "rgb(0 0 0)",
311
+ "--secondary": "rgb(216 52 80)",
312
+ "--secondary-foreground": "rgb(255 255 255)",
313
+ "--tertiary": "rgb(165 64 234)",
314
+ "--tertiary-foreground": "rgb(255 255 255)",
315
315
  "--muted": "rgb(33 44 38)",
316
316
  "--muted-foreground": "rgb(186 203 191)",
317
317
  "--accent": "rgb(33 44 38)",
@@ -426,12 +426,12 @@
426
426
  "--surface-foreground": "rgb(244 223 203)",
427
427
  "--popover": "rgb(40 30 17)",
428
428
  "--popover-foreground": "rgb(244 223 203)",
429
- "--primary": "rgb(163 103 0)",
430
- "--primary-foreground": "rgb(255 255 255)",
429
+ "--primary": "rgb(245 158 11)",
430
+ "--primary-foreground": "rgb(0 0 0)",
431
431
  "--secondary": "rgb(0 213 255)",
432
432
  "--secondary-foreground": "rgb(0 0 0)",
433
- "--tertiary": "rgb(111 128 255)",
434
- "--tertiary-foreground": "rgb(0 0 0)",
433
+ "--tertiary": "rgb(78 98 255)",
434
+ "--tertiary-foreground": "rgb(255 255 255)",
435
435
  "--muted": "rgb(51 40 27)",
436
436
  "--muted-foreground": "rgb(217 195 171)",
437
437
  "--accent": "rgb(51 40 27)",
@@ -548,10 +548,10 @@
548
548
  "--popover-foreground": "rgb(238 225 202)",
549
549
  "--primary": "rgb(255 195 0)",
550
550
  "--primary-foreground": "rgb(0 0 0)",
551
- "--secondary": "rgb(0 186 255)",
552
- "--secondary-foreground": "rgb(0 0 0)",
553
- "--tertiary": "rgb(149 115 255)",
554
- "--tertiary-foreground": "rgb(0 0 0)",
551
+ "--secondary": "rgb(0 125 173)",
552
+ "--secondary-foreground": "rgb(255 255 255)",
553
+ "--tertiary": "rgb(127 81 255)",
554
+ "--tertiary-foreground": "rgb(255 255 255)",
555
555
  "--muted": "rgb(48 41 26)",
556
556
  "--muted-foreground": "rgb(211 197 170)",
557
557
  "--accent": "rgb(48 41 26)",
@@ -666,10 +666,10 @@
666
666
  "--surface-foreground": "rgb(249 220 217)",
667
667
  "--popover": "rgb(43 28 26)",
668
668
  "--popover-foreground": "rgb(249 220 217)",
669
- "--primary": "rgb(234 0 37)",
670
- "--primary-foreground": "rgb(255 255 255)",
671
- "--secondary": "rgb(0 193 253)",
672
- "--secondary-foreground": "rgb(0 0 0)",
669
+ "--primary": "rgb(250 76 75)",
670
+ "--primary-foreground": "rgb(0 0 0)",
671
+ "--secondary": "rgb(0 126 166)",
672
+ "--secondary-foreground": "rgb(255 255 255)",
673
673
  "--tertiary": "rgb(90 250 115)",
674
674
  "--tertiary-foreground": "rgb(0 0 0)",
675
675
  "--muted": "rgb(54 38 37)",
@@ -786,8 +786,8 @@
786
786
  "--surface-foreground": "rgb(231 224 238)",
787
787
  "--popover": "rgb(33 30 40)",
788
788
  "--popover-foreground": "rgb(231 224 238)",
789
- "--primary": "rgb(134 77 255)",
790
- "--primary-foreground": "rgb(255 255 255)",
789
+ "--primary": "rgb(155 113 255)",
790
+ "--primary-foreground": "rgb(0 0 0)",
791
791
  "--secondary": "rgb(254 199 0)",
792
792
  "--secondary-foreground": "rgb(0 0 0)",
793
793
  "--tertiary": "rgb(118 245 94)",
@@ -906,8 +906,8 @@
906
906
  "--surface-foreground": "rgb(245 220 227)",
907
907
  "--popover": "rgb(41 28 33)",
908
908
  "--popover-foreground": "rgb(245 220 227)",
909
- "--primary": "rgb(224 0 136)",
910
- "--primary-foreground": "rgb(255 255 255)",
909
+ "--primary": "rgb(240 75 156)",
910
+ "--primary-foreground": "rgb(0 0 0)",
911
911
  "--secondary": "rgb(0 237 255)",
912
912
  "--secondary-foreground": "rgb(0 0 0)",
913
913
  "--tertiary": "rgb(100 250 110)",
@@ -1026,10 +1026,10 @@
1026
1026
  "--surface-foreground": "rgb(219 227 237)",
1027
1027
  "--popover": "rgb(24 33 39)",
1028
1028
  "--popover-foreground": "rgb(219 227 237)",
1029
- "--primary": "rgb(0 124 177)",
1030
- "--primary-foreground": "rgb(255 255 255)",
1031
- "--secondary": "rgb(246 83 51)",
1032
- "--secondary-foreground": "rgb(0 0 0)",
1029
+ "--primary": "rgb(14 165 233)",
1030
+ "--primary-foreground": "rgb(0 0 0)",
1031
+ "--secondary": "rgb(213 61 30)",
1032
+ "--secondary-foreground": "rgb(255 255 255)",
1033
1033
  "--tertiary": "rgb(253 200 0)",
1034
1034
  "--tertiary-foreground": "rgb(0 0 0)",
1035
1035
  "--muted": "rgb(34 43 50)",
@@ -1146,12 +1146,12 @@
1146
1146
  "--surface-foreground": "rgb(248 221 209)",
1147
1147
  "--popover": "rgb(43 28 21)",
1148
1148
  "--popover-foreground": "rgb(248 221 209)",
1149
- "--primary": "rgb(192 84 0)",
1150
- "--primary-foreground": "rgb(255 255 255)",
1149
+ "--primary": "rgb(249 115 22)",
1150
+ "--primary-foreground": "rgb(0 0 0)",
1151
1151
  "--secondary": "rgb(0 255 254)",
1152
1152
  "--secondary-foreground": "rgb(0 0 0)",
1153
- "--tertiary": "rgb(114 127 255)",
1154
- "--tertiary-foreground": "rgb(0 0 0)",
1153
+ "--tertiary": "rgb(81 97 255)",
1154
+ "--tertiary-foreground": "rgb(255 255 255)",
1155
1155
  "--muted": "rgb(54 39 31)",
1156
1156
  "--muted-foreground": "rgb(223 192 178)",
1157
1157
  "--accent": "rgb(54 39 31)",
@@ -1266,12 +1266,12 @@
1266
1266
  "--surface-foreground": "rgb(215 230 225)",
1267
1267
  "--popover": "rgb(21 34 32)",
1268
1268
  "--popover-foreground": "rgb(215 230 225)",
1269
- "--primary": "rgb(0 131 118)",
1270
- "--primary-foreground": "rgb(255 255 255)",
1271
- "--secondary": "rgb(244 86 35)",
1272
- "--secondary-foreground": "rgb(0 0 0)",
1273
- "--tertiary": "rgb(227 85 221)",
1274
- "--tertiary-foreground": "rgb(0 0 0)",
1269
+ "--primary": "rgb(20 184 166)",
1270
+ "--primary-foreground": "rgb(0 0 0)",
1271
+ "--secondary": "rgb(212 63 10)",
1272
+ "--secondary-foreground": "rgb(255 255 255)",
1273
+ "--tertiary": "rgb(193 53 190)",
1274
+ "--tertiary-foreground": "rgb(255 255 255)",
1275
1275
  "--muted": "rgb(32 44 42)",
1276
1276
  "--muted-foreground": "rgb(184 202 198)",
1277
1277
  "--accent": "rgb(32 44 42)",
@@ -1386,8 +1386,8 @@
1386
1386
  "--surface-foreground": "rgb(237 222 235)",
1387
1387
  "--popover": "rgb(37 29 38)",
1388
1388
  "--popover-foreground": "rgb(237 222 235)",
1389
- "--primary": "rgb(191 0 244)",
1390
- "--primary-foreground": "rgb(255 255 255)",
1389
+ "--primary": "rgb(196 110 222)",
1390
+ "--primary-foreground": "rgb(0 0 0)",
1391
1391
  "--secondary": "rgb(0 253 200)",
1392
1392
  "--secondary-foreground": "rgb(0 0 0)",
1393
1393
  "--tertiary": "rgb(142 249 86)",
@@ -1506,12 +1506,12 @@
1506
1506
  "--surface-foreground": "rgb(223 229 211)",
1507
1507
  "--popover": "rgb(28 33 22)",
1508
1508
  "--popover-foreground": "rgb(223 229 211)",
1509
- "--primary": "rgb(139 255 0)",
1509
+ "--primary": "rgb(159 251 80)",
1510
1510
  "--primary-foreground": "rgb(0 0 0)",
1511
- "--secondary": "rgb(122 125 255)",
1512
- "--secondary-foreground": "rgb(0 0 0)",
1513
- "--tertiary": "rgb(232 76 188)",
1514
- "--tertiary-foreground": "rgb(0 0 0)",
1511
+ "--secondary": "rgb(92 94 255)",
1512
+ "--secondary-foreground": "rgb(255 255 255)",
1513
+ "--tertiary": "rgb(203 50 163)",
1514
+ "--tertiary-foreground": "rgb(255 255 255)",
1515
1515
  "--muted": "rgb(38 44 32)",
1516
1516
  "--muted-foreground": "rgb(193 202 180)",
1517
1517
  "--accent": "rgb(38 44 32)",
@@ -12,16 +12,16 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
12
12
  "contrast50": "rgb(51 40 27)",
13
13
  "error": "rgb(218 52 55)",
14
14
  "icon": "rgb(217 195 171)",
15
- "iconActive": "rgb(163 103 0)",
15
+ "iconActive": "rgb(245 158 11)",
16
16
  "info": "rgb(33 112 228)",
17
17
  "negative": "rgb(255 180 171)",
18
18
  "negativeForeground": "rgb(105 0 5)",
19
19
  "negativeSubtle": "rgba(239, 68, 68, 0.24)",
20
20
  "negativeSubtleForeground": "rgb(255 179 173)",
21
21
  "overlay": "rgba(0, 0, 0, 0.5)",
22
- "primary": "rgb(163 103 0)",
22
+ "primary": "rgb(245 158 11)",
23
23
  "primaryDark": "rgb(21 12 3)",
24
- "primaryForeground": "rgb(255 255 255)",
24
+ "primaryForeground": "rgb(0 0 0)",
25
25
  "primaryLight": "rgb(36 26 14)",
26
26
  "primarySubtle": "rgba(202, 129, 0, 0.24)",
27
27
  "primarySubtleForeground": "rgb(255 221 184)",
@@ -29,12 +29,12 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
29
29
  "secondaryForeground": "rgb(0 0 0)",
30
30
  "shadow": "rgba(0, 0, 0, 0.3)",
31
31
  "success": "rgb(0 133 91)",
32
- "tertiary": "rgb(111 128 255)",
33
- "tertiaryForeground": "rgb(0 0 0)",
32
+ "tertiary": "rgb(78 98 255)",
33
+ "tertiaryForeground": "rgb(255 255 255)",
34
34
  "text": "rgb(244 223 203)",
35
35
  "textSecondary": "rgb(217 195 171)",
36
36
  "textTertiary": "rgb(161 141 120)",
37
- "tint": "rgb(163 103 0)",
37
+ "tint": "rgb(245 158 11)",
38
38
  "warning": "rgb(163 103 0)",
39
39
  },
40
40
  "amber/light": {
@@ -82,21 +82,21 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
82
82
  "contrast50": "rgb(36 43 51)",
83
83
  "error": "rgb(218 52 55)",
84
84
  "icon": "rgb(190 199 212)",
85
- "iconActive": "rgb(0 121 192)",
85
+ "iconActive": "rgb(29 155 240)",
86
86
  "info": "rgb(33 112 228)",
87
87
  "negative": "rgb(255 180 171)",
88
88
  "negativeForeground": "rgb(105 0 5)",
89
89
  "negativeSubtle": "rgba(239, 68, 68, 0.24)",
90
90
  "negativeSubtleForeground": "rgb(255 179 173)",
91
91
  "overlay": "rgba(0, 0, 0, 0.5)",
92
- "primary": "rgb(0 121 192)",
92
+ "primary": "rgb(29 155 240)",
93
93
  "primaryDark": "rgb(8 15 22)",
94
- "primaryForeground": "rgb(255 255 255)",
94
+ "primaryForeground": "rgb(0 0 0)",
95
95
  "primaryLight": "rgb(21 28 36)",
96
96
  "primarySubtle": "rgba(0, 151, 237, 0.24)",
97
97
  "primarySubtleForeground": "rgb(207 229 255)",
98
- "secondary": "rgb(247 81 63)",
99
- "secondaryForeground": "rgb(0 0 0)",
98
+ "secondary": "rgb(214 58 43)",
99
+ "secondaryForeground": "rgb(255 255 255)",
100
100
  "shadow": "rgba(0, 0, 0, 0.3)",
101
101
  "success": "rgb(0 133 91)",
102
102
  "tertiary": "rgb(252 220 0)",
@@ -104,7 +104,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
104
104
  "text": "rgb(220 227 238)",
105
105
  "textSecondary": "rgb(190 199 212)",
106
106
  "textTertiary": "rgb(136 146 158)",
107
- "tint": "rgb(0 121 192)",
107
+ "tint": "rgb(29 155 240)",
108
108
  "warning": "rgb(163 103 0)",
109
109
  },
110
110
  "blue/light": {
@@ -152,29 +152,29 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
152
152
  "contrast50": "rgb(38 44 32)",
153
153
  "error": "rgb(218 52 55)",
154
154
  "icon": "rgb(193 202 180)",
155
- "iconActive": "rgb(139 255 0)",
155
+ "iconActive": "rgb(159 251 80)",
156
156
  "info": "rgb(33 112 228)",
157
157
  "negative": "rgb(255 180 171)",
158
158
  "negativeForeground": "rgb(105 0 5)",
159
159
  "negativeSubtle": "rgba(239, 68, 68, 0.24)",
160
160
  "negativeSubtleForeground": "rgb(255 179 173)",
161
161
  "overlay": "rgba(0, 0, 0, 0.5)",
162
- "primary": "rgb(139 255 0)",
162
+ "primary": "rgb(159 251 80)",
163
163
  "primaryDark": "rgb(10 16 6)",
164
164
  "primaryForeground": "rgb(0 0 0)",
165
165
  "primaryLight": "rgb(24 29 18)",
166
166
  "primarySubtle": "rgba(87, 163, 0, 0.24)",
167
167
  "primarySubtleForeground": "rgb(138 254 0)",
168
- "secondary": "rgb(122 125 255)",
169
- "secondaryForeground": "rgb(0 0 0)",
168
+ "secondary": "rgb(92 94 255)",
169
+ "secondaryForeground": "rgb(255 255 255)",
170
170
  "shadow": "rgba(0, 0, 0, 0.3)",
171
171
  "success": "rgb(0 133 91)",
172
- "tertiary": "rgb(232 76 188)",
173
- "tertiaryForeground": "rgb(0 0 0)",
172
+ "tertiary": "rgb(203 50 163)",
173
+ "tertiaryForeground": "rgb(255 255 255)",
174
174
  "text": "rgb(223 229 211)",
175
175
  "textSecondary": "rgb(193 202 180)",
176
176
  "textTertiary": "rgb(139 148 128)",
177
- "tint": "rgb(139 255 0)",
177
+ "tint": "rgb(159 251 80)",
178
178
  "warning": "rgb(163 103 0)",
179
179
  },
180
180
  "faircoin/light": {
@@ -222,29 +222,29 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
222
222
  "contrast50": "rgb(33 44 38)",
223
223
  "error": "rgb(218 52 55)",
224
224
  "icon": "rgb(186 203 191)",
225
- "iconActive": "rgb(0 133 91)",
225
+ "iconActive": "rgb(16 185 129)",
226
226
  "info": "rgb(33 112 228)",
227
227
  "negative": "rgb(255 180 171)",
228
228
  "negativeForeground": "rgb(105 0 5)",
229
229
  "negativeSubtle": "rgba(239, 68, 68, 0.24)",
230
230
  "negativeSubtleForeground": "rgb(255 179 173)",
231
231
  "overlay": "rgba(0, 0, 0, 0.5)",
232
- "primary": "rgb(0 133 91)",
232
+ "primary": "rgb(16 185 129)",
233
233
  "primaryDark": "rgb(6 16 11)",
234
- "primaryForeground": "rgb(255 255 255)",
234
+ "primaryForeground": "rgb(0 0 0)",
235
235
  "primaryLight": "rgb(19 30 24)",
236
236
  "primarySubtle": "rgba(0, 165, 114, 0.24)",
237
237
  "primarySubtleForeground": "rgb(71 255 184)",
238
- "secondary": "rgb(247 76 101)",
239
- "secondaryForeground": "rgb(0 0 0)",
238
+ "secondary": "rgb(216 52 80)",
239
+ "secondaryForeground": "rgb(255 255 255)",
240
240
  "shadow": "rgba(0, 0, 0, 0.3)",
241
241
  "success": "rgb(0 133 91)",
242
- "tertiary": "rgb(189 94 255)",
243
- "tertiaryForeground": "rgb(0 0 0)",
242
+ "tertiary": "rgb(165 64 234)",
243
+ "tertiaryForeground": "rgb(255 255 255)",
244
244
  "text": "rgb(217 230 220)",
245
245
  "textSecondary": "rgb(186 203 191)",
246
246
  "textTertiary": "rgb(132 149 138)",
247
- "tint": "rgb(0 133 91)",
247
+ "tint": "rgb(16 185 129)",
248
248
  "warning": "rgb(163 103 0)",
249
249
  },
250
250
  "green/light": {
@@ -292,29 +292,29 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
292
292
  "contrast50": "rgb(32 44 42)",
293
293
  "error": "rgb(218 52 55)",
294
294
  "icon": "rgb(184 202 198)",
295
- "iconActive": "rgb(0 131 118)",
295
+ "iconActive": "rgb(20 184 166)",
296
296
  "info": "rgb(33 112 228)",
297
297
  "negative": "rgb(255 180 171)",
298
298
  "negativeForeground": "rgb(105 0 5)",
299
299
  "negativeSubtle": "rgba(239, 68, 68, 0.24)",
300
300
  "negativeSubtleForeground": "rgb(255 179 173)",
301
301
  "overlay": "rgba(0, 0, 0, 0.5)",
302
- "primary": "rgb(0 131 118)",
302
+ "primary": "rgb(20 184 166)",
303
303
  "primaryDark": "rgb(5 16 14)",
304
- "primaryForeground": "rgb(255 255 255)",
304
+ "primaryForeground": "rgb(0 0 0)",
305
305
  "primaryLight": "rgb(17 30 28)",
306
306
  "primarySubtle": "rgba(0, 163, 146, 0.24)",
307
307
  "primarySubtleForeground": "rgb(0 254 229)",
308
- "secondary": "rgb(244 86 35)",
309
- "secondaryForeground": "rgb(0 0 0)",
308
+ "secondary": "rgb(212 63 10)",
309
+ "secondaryForeground": "rgb(255 255 255)",
310
310
  "shadow": "rgba(0, 0, 0, 0.3)",
311
311
  "success": "rgb(0 133 91)",
312
- "tertiary": "rgb(227 85 221)",
313
- "tertiaryForeground": "rgb(0 0 0)",
312
+ "tertiary": "rgb(193 53 190)",
313
+ "tertiaryForeground": "rgb(255 255 255)",
314
314
  "text": "rgb(215 230 225)",
315
315
  "textSecondary": "rgb(184 202 198)",
316
316
  "textTertiary": "rgb(130 148 144)",
317
- "tint": "rgb(0 131 118)",
317
+ "tint": "rgb(20 184 166)",
318
318
  "warning": "rgb(163 103 0)",
319
319
  },
320
320
  "mint/light": {
@@ -362,16 +362,16 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
362
362
  "contrast50": "rgb(54 39 31)",
363
363
  "error": "rgb(218 52 55)",
364
364
  "icon": "rgb(223 192 178)",
365
- "iconActive": "rgb(192 84 0)",
365
+ "iconActive": "rgb(249 115 22)",
366
366
  "info": "rgb(33 112 228)",
367
367
  "negative": "rgb(255 180 171)",
368
368
  "negativeForeground": "rgb(105 0 5)",
369
369
  "negativeSubtle": "rgba(239, 68, 68, 0.24)",
370
370
  "negativeSubtleForeground": "rgb(255 179 173)",
371
371
  "overlay": "rgba(0, 0, 0, 0.5)",
372
- "primary": "rgb(192 84 0)",
372
+ "primary": "rgb(249 115 22)",
373
373
  "primaryDark": "rgb(23 11 5)",
374
- "primaryForeground": "rgb(255 255 255)",
374
+ "primaryForeground": "rgb(0 0 0)",
375
375
  "primaryLight": "rgb(38 24 17)",
376
376
  "primarySubtle": "rgba(237, 105, 0, 0.24)",
377
377
  "primarySubtleForeground": "rgb(255 219 202)",
@@ -379,12 +379,12 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
379
379
  "secondaryForeground": "rgb(0 0 0)",
380
380
  "shadow": "rgba(0, 0, 0, 0.3)",
381
381
  "success": "rgb(0 133 91)",
382
- "tertiary": "rgb(114 127 255)",
383
- "tertiaryForeground": "rgb(0 0 0)",
382
+ "tertiary": "rgb(81 97 255)",
383
+ "tertiaryForeground": "rgb(255 255 255)",
384
384
  "text": "rgb(248 221 209)",
385
385
  "textSecondary": "rgb(223 192 178)",
386
386
  "textTertiary": "rgb(166 139 126)",
387
- "tint": "rgb(192 84 0)",
387
+ "tint": "rgb(249 115 22)",
388
388
  "warning": "rgb(163 103 0)",
389
389
  },
390
390
  "orange/light": {
@@ -432,16 +432,16 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
432
432
  "contrast50": "rgb(48 39 49)",
433
433
  "error": "rgb(218 52 55)",
434
434
  "icon": "rgb(210 193 210)",
435
- "iconActive": "rgb(191 0 244)",
435
+ "iconActive": "rgb(196 110 222)",
436
436
  "info": "rgb(33 112 228)",
437
437
  "negative": "rgb(255 180 171)",
438
438
  "negativeForeground": "rgb(105 0 5)",
439
439
  "negativeSubtle": "rgba(239, 68, 68, 0.24)",
440
440
  "negativeSubtleForeground": "rgb(255 179 173)",
441
441
  "overlay": "rgba(0, 0, 0, 0.5)",
442
- "primary": "rgb(191 0 244)",
442
+ "primary": "rgb(196 110 222)",
443
443
  "primaryDark": "rgb(19 12 20)",
444
- "primaryForeground": "rgb(255 255 255)",
444
+ "primaryForeground": "rgb(0 0 0)",
445
445
  "primaryLight": "rgb(33 25 34)",
446
446
  "primarySubtle": "rgba(213, 86, 255, 0.24)",
447
447
  "primarySubtleForeground": "rgb(251 215 255)",
@@ -454,7 +454,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
454
454
  "text": "rgb(237 222 235)",
455
455
  "textSecondary": "rgb(210 193 210)",
456
456
  "textTertiary": "rgb(155 140 155)",
457
- "tint": "rgb(191 0 244)",
457
+ "tint": "rgb(196 110 222)",
458
458
  "warning": "rgb(163 103 0)",
459
459
  },
460
460
  "oxy/light": {
@@ -502,16 +502,16 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
502
502
  "contrast50": "rgb(53 38 43)",
503
503
  "error": "rgb(218 52 55)",
504
504
  "icon": "rgb(219 191 200)",
505
- "iconActive": "rgb(224 0 136)",
505
+ "iconActive": "rgb(240 75 156)",
506
506
  "info": "rgb(33 112 228)",
507
507
  "negative": "rgb(255 180 171)",
508
508
  "negativeForeground": "rgb(105 0 5)",
509
509
  "negativeSubtle": "rgba(239, 68, 68, 0.24)",
510
510
  "negativeSubtleForeground": "rgb(255 179 173)",
511
511
  "overlay": "rgba(0, 0, 0, 0.5)",
512
- "primary": "rgb(224 0 136)",
512
+ "primary": "rgb(240 75 156)",
513
513
  "primaryDark": "rgb(23 11 15)",
514
- "primaryForeground": "rgb(255 255 255)",
514
+ "primaryForeground": "rgb(0 0 0)",
515
515
  "primaryLight": "rgb(37 24 29)",
516
516
  "primarySubtle": "rgba(255, 69, 163, 0.24)",
517
517
  "primarySubtleForeground": "rgb(255 217 228)",
@@ -524,7 +524,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
524
524
  "text": "rgb(245 220 227)",
525
525
  "textSecondary": "rgb(219 191 200)",
526
526
  "textTertiary": "rgb(163 138 146)",
527
- "tint": "rgb(224 0 136)",
527
+ "tint": "rgb(240 75 156)",
528
528
  "warning": "rgb(163 103 0)",
529
529
  },
530
530
  "pink/light": {
@@ -572,16 +572,16 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
572
572
  "contrast50": "rgb(44 40 51)",
573
573
  "error": "rgb(218 52 55)",
574
574
  "icon": "rgb(203 195 213)",
575
- "iconActive": "rgb(134 77 255)",
575
+ "iconActive": "rgb(155 113 255)",
576
576
  "info": "rgb(33 112 228)",
577
577
  "negative": "rgb(255 180 171)",
578
578
  "negativeForeground": "rgb(105 0 5)",
579
579
  "negativeSubtle": "rgba(239, 68, 68, 0.24)",
580
580
  "negativeSubtleForeground": "rgb(255 179 173)",
581
581
  "overlay": "rgba(0, 0, 0, 0.5)",
582
- "primary": "rgb(134 77 255)",
582
+ "primary": "rgb(155 113 255)",
583
583
  "primaryDark": "rgb(16 13 22)",
584
- "primaryForeground": "rgb(255 255 255)",
584
+ "primaryForeground": "rgb(0 0 0)",
585
585
  "primaryLight": "rgb(29 26 36)",
586
586
  "primarySubtle": "rgba(160, 120, 255, 0.24)",
587
587
  "primarySubtleForeground": "rgb(233 221 255)",
@@ -594,7 +594,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
594
594
  "text": "rgb(231 224 238)",
595
595
  "textSecondary": "rgb(203 195 213)",
596
596
  "textTertiary": "rgb(148 142 159)",
597
- "tint": "rgb(134 77 255)",
597
+ "tint": "rgb(155 113 255)",
598
598
  "warning": "rgb(163 103 0)",
599
599
  },
600
600
  "purple/light": {
@@ -642,21 +642,21 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
642
642
  "contrast50": "rgb(54 38 37)",
643
643
  "error": "rgb(218 52 55)",
644
644
  "icon": "rgb(223 191 188)",
645
- "iconActive": "rgb(234 0 37)",
645
+ "iconActive": "rgb(250 76 75)",
646
646
  "info": "rgb(33 112 228)",
647
647
  "negative": "rgb(255 180 171)",
648
648
  "negativeForeground": "rgb(105 0 5)",
649
649
  "negativeSubtle": "rgba(239, 68, 68, 0.24)",
650
650
  "negativeSubtleForeground": "rgb(255 179 173)",
651
651
  "overlay": "rgba(0, 0, 0, 0.5)",
652
- "primary": "rgb(234 0 37)",
652
+ "primary": "rgb(250 76 75)",
653
653
  "primaryDark": "rgb(24 11 10)",
654
- "primaryForeground": "rgb(255 255 255)",
654
+ "primaryForeground": "rgb(0 0 0)",
655
655
  "primaryLight": "rgb(39 24 23)",
656
656
  "primarySubtle": "rgba(255, 84, 81, 0.24)",
657
657
  "primarySubtleForeground": "rgb(255 218 215)",
658
- "secondary": "rgb(0 193 253)",
659
- "secondaryForeground": "rgb(0 0 0)",
658
+ "secondary": "rgb(0 126 166)",
659
+ "secondaryForeground": "rgb(255 255 255)",
660
660
  "shadow": "rgba(0, 0, 0, 0.3)",
661
661
  "success": "rgb(0 133 91)",
662
662
  "tertiary": "rgb(90 250 115)",
@@ -664,7 +664,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
664
664
  "text": "rgb(249 220 217)",
665
665
  "textSecondary": "rgb(223 191 188)",
666
666
  "textTertiary": "rgb(167 138 136)",
667
- "tint": "rgb(234 0 37)",
667
+ "tint": "rgb(250 76 75)",
668
668
  "warning": "rgb(163 103 0)",
669
669
  },
670
670
  "red/light": {
@@ -712,21 +712,21 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
712
712
  "contrast50": "rgb(34 43 50)",
713
713
  "error": "rgb(218 52 55)",
714
714
  "icon": "rgb(188 200 211)",
715
- "iconActive": "rgb(0 124 177)",
715
+ "iconActive": "rgb(14 165 233)",
716
716
  "info": "rgb(33 112 228)",
717
717
  "negative": "rgb(255 180 171)",
718
718
  "negativeForeground": "rgb(105 0 5)",
719
719
  "negativeSubtle": "rgba(239, 68, 68, 0.24)",
720
720
  "negativeSubtleForeground": "rgb(255 179 173)",
721
721
  "overlay": "rgba(0, 0, 0, 0.5)",
722
- "primary": "rgb(0 124 177)",
722
+ "primary": "rgb(14 165 233)",
723
723
  "primaryDark": "rgb(7 15 21)",
724
- "primaryForeground": "rgb(255 255 255)",
724
+ "primaryForeground": "rgb(0 0 0)",
725
725
  "primaryLight": "rgb(20 29 35)",
726
726
  "primarySubtle": "rgba(0, 154, 218, 0.24)",
727
727
  "primarySubtleForeground": "rgb(201 230 255)",
728
- "secondary": "rgb(246 83 51)",
729
- "secondaryForeground": "rgb(0 0 0)",
728
+ "secondary": "rgb(213 61 30)",
729
+ "secondaryForeground": "rgb(255 255 255)",
730
730
  "shadow": "rgba(0, 0, 0, 0.3)",
731
731
  "success": "rgb(0 133 91)",
732
732
  "tertiary": "rgb(253 200 0)",
@@ -734,7 +734,7 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
734
734
  "text": "rgb(219 227 237)",
735
735
  "textSecondary": "rgb(188 200 211)",
736
736
  "textTertiary": "rgb(134 146 157)",
737
- "tint": "rgb(0 124 177)",
737
+ "tint": "rgb(14 165 233)",
738
738
  "warning": "rgb(163 103 0)",
739
739
  },
740
740
  "sky/light": {
@@ -782,29 +782,29 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
782
782
  "contrast50": "rgb(32 44 46)",
783
783
  "error": "rgb(218 52 55)",
784
784
  "icon": "rgb(184 202 205)",
785
- "iconActive": "rgb(0 129 143)",
785
+ "iconActive": "rgb(80 150 161)",
786
786
  "info": "rgb(33 112 228)",
787
787
  "negative": "rgb(255 180 171)",
788
788
  "negativeForeground": "rgb(105 0 5)",
789
789
  "negativeSubtle": "rgba(239, 68, 68, 0.24)",
790
790
  "negativeSubtleForeground": "rgb(255 179 173)",
791
791
  "overlay": "rgba(0, 0, 0, 0.5)",
792
- "primary": "rgb(0 129 143)",
792
+ "primary": "rgb(80 150 161)",
793
793
  "primaryDark": "rgb(5 16 18)",
794
- "primaryForeground": "rgb(255 255 255)",
794
+ "primaryForeground": "rgb(0 0 0)",
795
795
  "primaryLight": "rgb(17 29 32)",
796
796
  "primarySubtle": "rgba(0, 159, 177, 0.24)",
797
797
  "primarySubtleForeground": "rgb(154 240 255)",
798
- "secondary": "rgb(243 74 143)",
799
- "secondaryForeground": "rgb(0 0 0)",
798
+ "secondary": "rgb(213 49 120)",
799
+ "secondaryForeground": "rgb(255 255 255)",
800
800
  "shadow": "rgba(0, 0, 0, 0.3)",
801
801
  "success": "rgb(0 133 91)",
802
- "tertiary": "rgb(253 144 0)",
803
- "tertiaryForeground": "rgb(0 0 0)",
802
+ "tertiary": "rgb(174 97 0)",
803
+ "tertiaryForeground": "rgb(255 255 255)",
804
804
  "text": "rgb(215 229 232)",
805
805
  "textSecondary": "rgb(184 202 205)",
806
806
  "textTertiary": "rgb(131 148 151)",
807
- "tint": "rgb(0 129 143)",
807
+ "tint": "rgb(80 150 161)",
808
808
  "warning": "rgb(163 103 0)",
809
809
  },
810
810
  "teal/light": {
@@ -865,12 +865,12 @@ exports[`theme.colors snapshot for all presets (catches unintended palette shift
865
865
  "primaryLight": "rgb(33 27 13)",
866
866
  "primarySubtle": "rgba(182, 138, 0, 0.24)",
867
867
  "primarySubtleForeground": "rgb(255 223 154)",
868
- "secondary": "rgb(0 186 255)",
869
- "secondaryForeground": "rgb(0 0 0)",
868
+ "secondary": "rgb(0 125 173)",
869
+ "secondaryForeground": "rgb(255 255 255)",
870
870
  "shadow": "rgba(0, 0, 0, 0.3)",
871
871
  "success": "rgb(0 133 91)",
872
- "tertiary": "rgb(149 115 255)",
873
- "tertiaryForeground": "rgb(0 0 0)",
872
+ "tertiary": "rgb(127 81 255)",
873
+ "tertiaryForeground": "rgb(255 255 255)",
874
874
  "text": "rgb(238 225 202)",
875
875
  "textSecondary": "rgb(211 197 170)",
876
876
  "textTertiary": "rgb(156 143 119)",
@@ -97,6 +97,12 @@ const LIGHT_FILL_TONE = 45;
97
97
  /** The tone a white-label fill sits at in DARK: the ceiling white text allows. */
98
98
  const DARK_FILL_TONE = 49;
99
99
 
100
+ /** How far a fill may be dragged from its natural tone before the colour is lost. */
101
+ const TONE_BUDGET = 25;
102
+
103
+ /** No dark-mode BRAND fill sits below this: under it a colour goes heavy on black. */
104
+ const DARK_SEED_FLOOR = 58;
105
+
100
106
  /**
101
107
  * No dark-mode ACCENT sits below this. Some hues peak dark — violet at tone 33 —
102
108
  * and rendering one there gives a slab rather than a highlight.
@@ -208,11 +214,31 @@ function vividHueNear(hue: number): number {
208
214
  * why 11 of the 13 presets carry white and exactly the two light ones do not.
209
215
  */
210
216
  function whiteLabelTone(palette: TonalPalette, seedTone: number, isDark: boolean): number {
211
- const target = isDark ? DARK_FILL_TONE : LIGHT_FILL_TONE;
212
- const candidate = Math.max(target, seedTone - 25);
217
+ // DARK keeps the brand's OWN tone, floored so a dark seed still lifts off the
218
+ // ground. On a near-black page the fill IS the brand — oxy at tone 49 is a
219
+ // different, electric purple, not #c46ede — so fidelity wins and the label
220
+ // follows. LIGHT is the opposite: a bright fill on a white page reads thin, so
221
+ // it comes down to the ceiling white allows unless that costs more than the
222
+ // budget, which is what keeps yellow yellow and faircoin lime.
223
+ if (isDark) return Math.max(seedTone, DARK_SEED_FLOOR);
224
+ const candidate = Math.max(LIGHT_FILL_TONE, seedTone - TONE_BUDGET);
213
225
  return contrastOf(palette.tone(candidate), true) >= AA ? candidate : seedTone;
214
226
  }
215
227
 
228
+ /**
229
+ * The same budget governs the ACCENT: come down to where white fits, unless the
230
+ * descent would cost more than this and destroy the hue. An accent that peaks
231
+ * bright — a lime at tone 88 — keeps its peak and takes a black label; one that
232
+ * peaks dark comes down and carries white.
233
+ */
234
+ function accentTone(hue: number, isDark: boolean): number {
235
+ if (!isDark) return LIGHT_FILL_TONE;
236
+ const peak = Math.max(peakTone(hue), DARK_ACCENT_FLOOR);
237
+ const palette = TonalPalette.fromHueAndChroma(hue, ACCENT_CHROMA);
238
+ const candidate = Math.max(DARK_FILL_TONE, peak - TONE_BUDGET);
239
+ return contrastOf(palette.tone(candidate), true) >= AA ? candidate : peak;
240
+ }
241
+
216
242
  /** Settle a fill tone so some foreground is legible, then pair it with that foreground. */
217
243
  function fillPair(palette: TonalPalette, startTone: number): { fill: string; foreground: string } {
218
244
  let tone = startTone;
@@ -276,7 +302,11 @@ export function buildPolicyTokens(
276
302
  // tone <= 49, so that is the ceiling — in dark as much as in light. Letting the
277
303
  // dark fill sit at the seed's own tone instead makes it brighter, but every one
278
304
  // of those labels turns black, which costs more than the brightness buys.
279
- const brandPalette = TonalPalette.fromHueAndChroma(seed.hue, 200);
305
+ // DARK keys off the seed itself so the fill IS the brand hex; LIGHT uses the
306
+ // max-chroma palette, which is what stops a deepened fill from going pastel.
307
+ const brandPalette = isDark
308
+ ? TonalPalette.fromInt(argbFromHex(seedHex))
309
+ : TonalPalette.fromHueAndChroma(seed.hue, 200);
280
310
  const primary = fillPair(brandPalette, whiteLabelTone(brandPalette, seed.tone, isDark));
281
311
 
282
312
  const tokens: PolicyTokens = {
@@ -328,7 +358,7 @@ export function buildPolicyTokens(
328
358
  // black. The accent chroma cap already keeps these hues out of neon territory,
329
359
  // and the hue itself is the caller's brand rather than ours to move. The
330
360
  // analyzer still runs where it was designed to, inside `color-roles`.
331
- const tone = isDark ? Math.max(peakTone(hue), DARK_ACCENT_FLOOR) : LIGHT_FILL_TONE;
361
+ const tone = accentTone(hue, isDark);
332
362
  const pair = fillPair(fillPalette, tone);
333
363
  tokens[`--${role}`] = pair.fill;
334
364
  tokens[`--${role}-foreground`] = pair.foreground;