@oxyhq/bloom 0.39.0 → 0.41.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 (63) hide show
  1. package/lib/commonjs/theme/build-theme-from-seed.js +90 -0
  2. package/lib/commonjs/theme/build-theme-from-seed.js.map +1 -0
  3. package/lib/commonjs/theme/color-engine/scheme-variants.js +23 -0
  4. package/lib/commonjs/theme/color-engine/scheme-variants.js.map +1 -1
  5. package/lib/commonjs/theme/color-presets.js +13 -13
  6. package/lib/commonjs/theme/color-presets.js.map +1 -1
  7. package/lib/commonjs/theme/color-scope/seed-scope.js +1 -0
  8. package/lib/commonjs/theme/color-scope/seed-scope.js.map +1 -1
  9. package/lib/commonjs/theme/index.js +94 -0
  10. package/lib/commonjs/theme/index.js.map +1 -1
  11. package/lib/commonjs/theme/seed-scope/index.js +87 -0
  12. package/lib/commonjs/theme/seed-scope/index.js.map +1 -0
  13. package/lib/commonjs/theme/seed-scope/index.web.js +86 -0
  14. package/lib/commonjs/theme/seed-scope/index.web.js.map +1 -0
  15. package/lib/module/theme/build-theme-from-seed.js +85 -0
  16. package/lib/module/theme/build-theme-from-seed.js.map +1 -0
  17. package/lib/module/theme/color-engine/scheme-variants.js +22 -0
  18. package/lib/module/theme/color-engine/scheme-variants.js.map +1 -1
  19. package/lib/module/theme/color-presets.js +13 -13
  20. package/lib/module/theme/color-presets.js.map +1 -1
  21. package/lib/module/theme/color-scope/seed-scope.js +1 -0
  22. package/lib/module/theme/color-scope/seed-scope.js.map +1 -1
  23. package/lib/module/theme/index.js +7 -0
  24. package/lib/module/theme/index.js.map +1 -1
  25. package/lib/module/theme/seed-scope/index.js +82 -0
  26. package/lib/module/theme/seed-scope/index.js.map +1 -0
  27. package/lib/module/theme/seed-scope/index.web.js +81 -0
  28. package/lib/module/theme/seed-scope/index.web.js.map +1 -0
  29. package/lib/typescript/commonjs/theme/build-theme-from-seed.d.ts +23 -0
  30. package/lib/typescript/commonjs/theme/build-theme-from-seed.d.ts.map +1 -0
  31. package/lib/typescript/commonjs/theme/color-engine/scheme-variants.d.ts +10 -1
  32. package/lib/typescript/commonjs/theme/color-engine/scheme-variants.d.ts.map +1 -1
  33. package/lib/typescript/commonjs/theme/color-scope/seed-scope.d.ts +3 -2
  34. package/lib/typescript/commonjs/theme/color-scope/seed-scope.d.ts.map +1 -1
  35. package/lib/typescript/commonjs/theme/index.d.ts +7 -0
  36. package/lib/typescript/commonjs/theme/index.d.ts.map +1 -1
  37. package/lib/typescript/commonjs/theme/seed-scope/index.d.ts +37 -0
  38. package/lib/typescript/commonjs/theme/seed-scope/index.d.ts.map +1 -0
  39. package/lib/typescript/commonjs/theme/seed-scope/index.web.d.ts +35 -0
  40. package/lib/typescript/commonjs/theme/seed-scope/index.web.d.ts.map +1 -0
  41. package/lib/typescript/module/theme/build-theme-from-seed.d.ts +23 -0
  42. package/lib/typescript/module/theme/build-theme-from-seed.d.ts.map +1 -0
  43. package/lib/typescript/module/theme/color-engine/scheme-variants.d.ts +10 -1
  44. package/lib/typescript/module/theme/color-engine/scheme-variants.d.ts.map +1 -1
  45. package/lib/typescript/module/theme/color-scope/seed-scope.d.ts +3 -2
  46. package/lib/typescript/module/theme/color-scope/seed-scope.d.ts.map +1 -1
  47. package/lib/typescript/module/theme/index.d.ts +7 -0
  48. package/lib/typescript/module/theme/index.d.ts.map +1 -1
  49. package/lib/typescript/module/theme/seed-scope/index.d.ts +37 -0
  50. package/lib/typescript/module/theme/seed-scope/index.d.ts.map +1 -0
  51. package/lib/typescript/module/theme/seed-scope/index.web.d.ts +35 -0
  52. package/lib/typescript/module/theme/seed-scope/index.web.d.ts.map +1 -0
  53. package/package.json +1 -1
  54. package/src/theme/__tests__/__fixtures__/golden-resolved-tokens.json +74 -74
  55. package/src/theme/__tests__/__snapshots__/visual-gallery.test.tsx.snap +68 -68
  56. package/src/theme/__tests__/build-theme-from-seed-parity.test.ts +33 -0
  57. package/src/theme/build-theme-from-seed.ts +99 -0
  58. package/src/theme/color-engine/scheme-variants.ts +30 -1
  59. package/src/theme/color-presets.ts +13 -13
  60. package/src/theme/color-scope/seed-scope.ts +4 -2
  61. package/src/theme/index.ts +21 -0
  62. package/src/theme/seed-scope/index.tsx +100 -0
  63. package/src/theme/seed-scope/index.web.tsx +110 -0
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ import { generateRoleColors } from "./color-engine/index.js";
4
+ import { buildSeedScopeVars } from "./color-scope/seed-scope.js";
5
+ import { STATUS_COLORS } from "./build-theme.js";
6
+ import { THEME_GRADIENTS } from "./gradients.js";
7
+ /**
8
+ * Build the JS `theme.colors` object from an ARBITRARY seed colour — the dynamic
9
+ * counterpart of `buildTheme(preset, …)`.
10
+ *
11
+ * This mirrors `buildColorsFromPreset` (`build-theme.ts`) field-for-field, but
12
+ * sources its tokens from `buildSeedScopeVars({ seed })` instead of a named
13
+ * preset, so a preset's seed reproduces that preset's JS theme exactly. Keeping
14
+ * the two in lockstep is enforced by `__tests__/build-theme-from-seed-parity.test.ts`.
15
+ *
16
+ * Token-backed fields read the resolved `rgb(...)` token map; the brand-tint
17
+ * family (primarySubtle / negative / …) reads the engine's container/error roles
18
+ * directly — identical to the preset path.
19
+ */
20
+ export function buildColorsFromSeed(seed, resolved, variant, contrastLevel) {
21
+ const t = buildSeedScopeVars({
22
+ seed,
23
+ mode: resolved,
24
+ variant,
25
+ contrastLevel
26
+ });
27
+ const isDark = resolved === 'dark';
28
+
29
+ // Read a resolved `rgb(...)` token by its bare name (no leading `--`).
30
+ const g = k => t[`--${k}`] ?? 'rgb(0 0 0)';
31
+ const r = generateRoleColors({
32
+ seed,
33
+ variant,
34
+ isDark,
35
+ contrastLevel
36
+ });
37
+ return {
38
+ background: g('background'),
39
+ backgroundSecondary: g('surface'),
40
+ backgroundTertiary: g('popover'),
41
+ text: g('foreground'),
42
+ textSecondary: g('muted-foreground'),
43
+ textTertiary: r.outline,
44
+ border: g('border'),
45
+ borderLight: g('input'),
46
+ primary: g('primary'),
47
+ primaryForeground: g('primary-foreground'),
48
+ primaryLight: g('surface'),
49
+ primaryDark: g('background'),
50
+ secondary: g('secondary'),
51
+ secondaryForeground: g('secondary-foreground'),
52
+ tertiary: g('tertiary'),
53
+ tertiaryForeground: g('tertiary-foreground'),
54
+ tint: g('primary'),
55
+ icon: g('muted-foreground'),
56
+ iconActive: g('primary'),
57
+ ...STATUS_COLORS,
58
+ primarySubtle: r.primaryContainer,
59
+ primarySubtleForeground: r.onPrimaryContainer,
60
+ negative: r.error,
61
+ negativeForeground: r.onError,
62
+ negativeSubtle: r.errorContainer,
63
+ negativeSubtleForeground: r.onErrorContainer,
64
+ contrast50: g('muted'),
65
+ card: g('card'),
66
+ shadow: isDark ? 'rgba(0, 0, 0, 0.3)' : 'rgba(0, 0, 0, 0.1)',
67
+ overlay: 'rgba(0, 0, 0, 0.5)'
68
+ };
69
+ }
70
+
71
+ /**
72
+ * Build a full `Theme` from a seed colour and a resolved light/dark mode. Unlike
73
+ * `buildTheme`, there is no adaptive (Material You / iOS dynamic) override — a
74
+ * seed IS the dynamic source here.
75
+ */
76
+ export function buildThemeFromSeed(seed, resolved, variant, contrastLevel) {
77
+ return {
78
+ mode: resolved,
79
+ colors: buildColorsFromSeed(seed, resolved, variant, contrastLevel),
80
+ gradients: THEME_GRADIENTS,
81
+ isDark: resolved === 'dark',
82
+ isLight: resolved === 'light'
83
+ };
84
+ }
85
+ //# sourceMappingURL=build-theme-from-seed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["generateRoleColors","buildSeedScopeVars","STATUS_COLORS","THEME_GRADIENTS","buildColorsFromSeed","seed","resolved","variant","contrastLevel","t","mode","isDark","g","k","r","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","error","negativeForeground","onError","negativeSubtle","errorContainer","negativeSubtleForeground","onErrorContainer","contrast50","card","shadow","overlay","buildThemeFromSeed","colors","gradients","isLight"],"sourceRoot":"../../../src","sources":["theme/build-theme-from-seed.ts"],"mappings":"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","ignoreList":[]}
@@ -36,6 +36,27 @@ export function schemeVibrant(source, isDark, contrastLevel) {
36
36
  }
37
37
 
38
38
  /** Playful, intentionally detached from the seed hue (primary rotated 240°). */
39
+ /**
40
+ * Bloom's own brand-vivid scheme. Same vibrant base (max-chroma primary) but the
41
+ * secondary and tertiary accents keep MUCH more chroma than canonical M3 (which
42
+ * intentionally desaturates supporting accents). Neutrals stay low-chroma so
43
+ * surfaces read as clean tinted light/dark. This is what the presets use — the
44
+ * old hand-authored palette felt more vivid than pure M3, and this restores that
45
+ * across the whole primary/secondary/tertiary trio.
46
+ */
47
+ export function schemeVivid(source, isDark, contrastLevel) {
48
+ return new DynamicScheme({
49
+ sourceColorArgb: source.toInt(),
50
+ variant: Variant.VIBRANT,
51
+ contrastLevel,
52
+ isDark,
53
+ primaryPalette: TonalPalette.fromHueAndChroma(source.hue, 200.0),
54
+ secondaryPalette: TonalPalette.fromHueAndChroma(DynamicScheme.getRotatedHue(source, VIBRANT_HUES, VIBRANT_SECONDARY_ROTATIONS), 64.0),
55
+ tertiaryPalette: TonalPalette.fromHueAndChroma(DynamicScheme.getRotatedHue(source, VIBRANT_HUES, VIBRANT_TERTIARY_ROTATIONS), 72.0),
56
+ neutralPalette: TonalPalette.fromHueAndChroma(source.hue, 10.0),
57
+ neutralVariantPalette: TonalPalette.fromHueAndChroma(source.hue, 12.0)
58
+ });
59
+ }
39
60
  export function schemeExpressive(source, isDark, contrastLevel) {
40
61
  return new DynamicScheme({
41
62
  sourceColorArgb: source.toInt(),
@@ -80,6 +101,7 @@ export function schemeNeutral(source, isDark, contrastLevel) {
80
101
  });
81
102
  }
82
103
  const BUILDERS = {
104
+ vivid: schemeVivid,
83
105
  vibrant: schemeVibrant,
84
106
  expressive: schemeExpressive,
85
107
  tonalSpot: schemeTonalSpot,
@@ -1 +1 @@
1
- {"version":3,"names":["DynamicScheme","sanitizeDegreesDouble","TonalPalette","Variant","VIBRANT_HUES","VIBRANT_SECONDARY_ROTATIONS","VIBRANT_TERTIARY_ROTATIONS","EXPRESSIVE_HUES","EXPRESSIVE_SECONDARY_ROTATIONS","EXPRESSIVE_TERTIARY_ROTATIONS","schemeVibrant","source","isDark","contrastLevel","sourceColorArgb","toInt","variant","VIBRANT","primaryPalette","fromHueAndChroma","hue","secondaryPalette","getRotatedHue","tertiaryPalette","neutralPalette","neutralVariantPalette","schemeExpressive","EXPRESSIVE","schemeTonalSpot","TONAL_SPOT","schemeNeutral","NEUTRAL","BUILDERS","vibrant","expressive","tonalSpot","neutral","buildScheme"],"sourceRoot":"../../../../src","sources":["theme/color-engine/scheme-variants.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["DynamicScheme","sanitizeDegreesDouble","TonalPalette","Variant","VIBRANT_HUES","VIBRANT_SECONDARY_ROTATIONS","VIBRANT_TERTIARY_ROTATIONS","EXPRESSIVE_HUES","EXPRESSIVE_SECONDARY_ROTATIONS","EXPRESSIVE_TERTIARY_ROTATIONS","schemeVibrant","source","isDark","contrastLevel","sourceColorArgb","toInt","variant","VIBRANT","primaryPalette","fromHueAndChroma","hue","secondaryPalette","getRotatedHue","tertiaryPalette","neutralPalette","neutralVariantPalette","schemeVivid","schemeExpressive","EXPRESSIVE","schemeTonalSpot","TONAL_SPOT","schemeNeutral","NEUTRAL","BUILDERS","vivid","vibrant","expressive","tonalSpot","neutral","buildScheme"],"sourceRoot":"../../../../src","sources":["theme/color-engine/scheme-variants.ts"],"mappings":"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","ignoreList":[]}
@@ -52,67 +52,67 @@ export const APP_COLOR_PRESETS = {
52
52
  teal: {
53
53
  name: 'teal',
54
54
  hex: '#005c67',
55
- variant: 'vibrant'
55
+ variant: 'vivid'
56
56
  },
57
57
  blue: {
58
58
  name: 'blue',
59
59
  hex: '#1d9bf0',
60
- variant: 'vibrant'
60
+ variant: 'vivid'
61
61
  },
62
62
  green: {
63
63
  name: 'green',
64
64
  hex: '#10b981',
65
- variant: 'vibrant'
65
+ variant: 'vivid'
66
66
  },
67
67
  amber: {
68
68
  name: 'amber',
69
69
  hex: '#f59e0b',
70
- variant: 'vibrant'
70
+ variant: 'vivid'
71
71
  },
72
72
  yellow: {
73
73
  name: 'yellow',
74
74
  hex: '#ffc300',
75
- variant: 'vibrant'
75
+ variant: 'vivid'
76
76
  },
77
77
  red: {
78
78
  name: 'red',
79
79
  hex: '#ef4444',
80
- variant: 'vibrant'
80
+ variant: 'vivid'
81
81
  },
82
82
  purple: {
83
83
  name: 'purple',
84
84
  hex: '#8b5cf6',
85
- variant: 'vibrant'
85
+ variant: 'vivid'
86
86
  },
87
87
  pink: {
88
88
  name: 'pink',
89
89
  hex: '#ec4899',
90
- variant: 'vibrant'
90
+ variant: 'vivid'
91
91
  },
92
92
  sky: {
93
93
  name: 'sky',
94
94
  hex: '#0ea5e9',
95
- variant: 'vibrant'
95
+ variant: 'vivid'
96
96
  },
97
97
  orange: {
98
98
  name: 'orange',
99
99
  hex: '#f97316',
100
- variant: 'vibrant'
100
+ variant: 'vivid'
101
101
  },
102
102
  mint: {
103
103
  name: 'mint',
104
104
  hex: '#14b8a6',
105
- variant: 'vibrant'
105
+ variant: 'vivid'
106
106
  },
107
107
  oxy: {
108
108
  name: 'oxy',
109
109
  hex: '#c46ede',
110
- variant: 'vibrant'
110
+ variant: 'vivid'
111
111
  },
112
112
  faircoin: {
113
113
  name: 'faircoin',
114
114
  hex: '#9ffb50',
115
- variant: 'vibrant'
115
+ variant: 'vivid'
116
116
  }
117
117
  };
118
118
  //# sourceMappingURL=color-presets.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["APP_COLOR_NAMES","PREMIUM_COLOR_NAMES","HEX_TO_APP_COLOR","hexToAppColorName","hex","toLowerCase","APP_COLOR_PRESETS","teal","name","variant","blue","green","amber","yellow","red","purple","pink","sky","orange","mint","oxy","faircoin"],"sourceRoot":"../../../src","sources":["theme/color-presets.ts"],"mappings":";;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAO,MAAMA,eAAwC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;;AAEzK;AACA,OAAO,MAAMC,mBAA4C,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC;AAE/E,OAAO,MAAMC,gBAA8C,GAAG;EAC5D,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,OAAO;EAClB,SAAS,EAAE,OAAO;EAClB,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,KAAK;EAChB,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,KAAK;EAChB,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,KAAK;EAChB,SAAS,EAAE;AACb,CAAC;AAED,OAAO,SAASC,iBAAiBA,CAACC,GAAW,EAAgB;EAC3D,OAAOF,gBAAgB,CAACE,GAAG,CAACC,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM;AACtD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAAuD,GAAG;EACrEC,IAAI,EAAE;IAAEC,IAAI,EAAE,MAAM;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EAC1DC,IAAI,EAAE;IAAEF,IAAI,EAAE,MAAM;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EAC1DE,KAAK,EAAE;IAAEH,IAAI,EAAE,OAAO;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EAC5DG,KAAK,EAAE;IAAEJ,IAAI,EAAE,OAAO;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EAC5DI,MAAM,EAAE;IAAEL,IAAI,EAAE,QAAQ;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EAC9DK,GAAG,EAAE;IAAEN,IAAI,EAAE,KAAK;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EACxDM,MAAM,EAAE;IAAEP,IAAI,EAAE,QAAQ;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EAC9DO,IAAI,EAAE;IAAER,IAAI,EAAE,MAAM;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EAC1DQ,GAAG,EAAE;IAAET,IAAI,EAAE,KAAK;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EACxDS,MAAM,EAAE;IAAEV,IAAI,EAAE,QAAQ;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EAC9DU,IAAI,EAAE;IAAEX,IAAI,EAAE,MAAM;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EAC1DW,GAAG,EAAE;IAAEZ,IAAI,EAAE,KAAK;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU,CAAC;EACxDY,QAAQ,EAAE;IAAEb,IAAI,EAAE,UAAU;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAU;AACnE,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["APP_COLOR_NAMES","PREMIUM_COLOR_NAMES","HEX_TO_APP_COLOR","hexToAppColorName","hex","toLowerCase","APP_COLOR_PRESETS","teal","name","variant","blue","green","amber","yellow","red","purple","pink","sky","orange","mint","oxy","faircoin"],"sourceRoot":"../../../src","sources":["theme/color-presets.ts"],"mappings":";;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAO,MAAMA,eAAwC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;;AAEzK;AACA,OAAO,MAAMC,mBAA4C,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC;AAE/E,OAAO,MAAMC,gBAA8C,GAAG;EAC5D,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,OAAO;EAClB,SAAS,EAAE,OAAO;EAClB,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,KAAK;EAChB,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,KAAK;EAChB,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,KAAK;EAChB,SAAS,EAAE;AACb,CAAC;AAED,OAAO,SAASC,iBAAiBA,CAACC,GAAW,EAAgB;EAC3D,OAAOF,gBAAgB,CAACE,GAAG,CAACC,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM;AACtD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAAuD,GAAG;EACrEC,IAAI,EAAE;IAAEC,IAAI,EAAE,MAAM;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EACxDC,IAAI,EAAE;IAAEF,IAAI,EAAE,MAAM;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EACxDE,KAAK,EAAE;IAAEH,IAAI,EAAE,OAAO;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EAC1DG,KAAK,EAAE;IAAEJ,IAAI,EAAE,OAAO;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EAC1DI,MAAM,EAAE;IAAEL,IAAI,EAAE,QAAQ;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EAC5DK,GAAG,EAAE;IAAEN,IAAI,EAAE,KAAK;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EACtDM,MAAM,EAAE;IAAEP,IAAI,EAAE,QAAQ;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EAC5DO,IAAI,EAAE;IAAER,IAAI,EAAE,MAAM;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EACxDQ,GAAG,EAAE;IAAET,IAAI,EAAE,KAAK;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EACtDS,MAAM,EAAE;IAAEV,IAAI,EAAE,QAAQ;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EAC5DU,IAAI,EAAE;IAAEX,IAAI,EAAE,MAAM;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EACxDW,GAAG,EAAE;IAAEZ,IAAI,EAAE,KAAK;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EACtDY,QAAQ,EAAE;IAAEb,IAAI,EAAE,UAAU;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ;AACjE,CAAC","ignoreList":[]}
@@ -77,6 +77,7 @@ export function roleColorsToPresetTokens(r) {
77
77
  export function buildSeedScopeVars(options) {
78
78
  const roles = generateRoleColors({
79
79
  seed: options.seed,
80
+ variant: options.variant ?? 'vivid',
80
81
  isDark: options.mode === 'dark',
81
82
  contrastLevel: options.contrastLevel ?? 0
82
83
  });
@@ -1 +1 @@
1
- {"version":3,"names":["generateRoleColors","CANONICAL_TOKENS","roleColorsToPresetTokens","r","background","onBackground","surfaceContainerLow","onSurface","surfaceContainer","primary","onPrimary","secondary","onSecondary","tertiary","onTertiary","surfaceContainerHigh","onSurfaceVariant","secondaryContainer","onSecondaryContainer","error","outlineVariant","surfaceContainerLowest","primaryContainer","tertiaryContainer","buildSeedScopeVars","options","roles","seed","isDark","mode","contrastLevel","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","CANONICAL_TOKENS","roleColorsToPresetTokens","r","background","onBackground","surfaceContainerLow","onSurface","surfaceContainer","primary","onPrimary","secondary","onSecondary","tertiary","onTertiary","surfaceContainerHigh","onSurfaceVariant","secondaryContainer","onSecondaryContainer","error","outlineVariant","surfaceContainerLowest","primaryContainer","tertiaryContainer","buildSeedScopeVars","options","roles","seed","variant","isDark","mode","contrastLevel","tokens","vars","token","value","undefined"],"sourceRoot":"../../../../src","sources":["theme/color-scope/seed-scope.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAA6C,0BAAiB;AACzF,SAASC,gBAAgB,QAAQ,sBAAmB;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,wBAAwBA,CAACC,CAAa,EAA0B;EAC9E,OAAO;IACL;IACA,cAAc,EAAEA,CAAC,CAACC,UAAU;IAC5B,cAAc,EAAED,CAAC,CAACE,YAAY;IAC9B,WAAW,EAAEF,CAAC,CAACG,mBAAmB;IAClC,sBAAsB,EAAEH,CAAC,CAACI,SAAS;IACnC,WAAW,EAAEJ,CAAC,CAACK,gBAAgB;IAC/B,sBAAsB,EAAEL,CAAC,CAACI,SAAS;IACnC,WAAW,EAAEJ,CAAC,CAACM,OAAO;IACtB,sBAAsB,EAAEN,CAAC,CAACO,SAAS;IACnC,aAAa,EAAEP,CAAC,CAACQ,SAAS;IAC1B,wBAAwB,EAAER,CAAC,CAACS,WAAW;IACvC,YAAY,EAAET,CAAC,CAACU,QAAQ;IACxB,uBAAuB,EAAEV,CAAC,CAACW,UAAU;IACrC,SAAS,EAAEX,CAAC,CAACY,oBAAoB;IACjC,oBAAoB,EAAEZ,CAAC,CAACa,gBAAgB;IACxC,UAAU,EAAEb,CAAC,CAACc,kBAAkB;IAChC,qBAAqB,EAAEd,CAAC,CAACe,oBAAoB;IAC7C,eAAe,EAAEf,CAAC,CAACgB,KAAK;IACxB,UAAU,EAAEhB,CAAC,CAACiB,cAAc;IAC5B,SAAS,EAAEjB,CAAC,CAACiB,cAAc;IAC3B,QAAQ,EAAEjB,CAAC,CAACM,OAAO;IACnB,WAAW,EAAEN,CAAC,CAACG,mBAAmB;IAElC;IACA,QAAQ,EAAEH,CAAC,CAACkB,sBAAsB;IAClC,mBAAmB,EAAElB,CAAC,CAACI,SAAS;IAChC,WAAW,EAAEJ,CAAC,CAACM,OAAO;IACtB,WAAW,EAAEN,CAAC,CAACQ,SAAS;IACxB,WAAW,EAAER,CAAC,CAACU,QAAQ;IACvB,WAAW,EAAEV,CAAC,CAACmB,gBAAgB;IAC/B,WAAW,EAAEnB,CAAC,CAACoB,iBAAiB;IAChC,gBAAgB,EAAEpB,CAAC,CAACC,UAAU;IAC9B,sBAAsB,EAAED,CAAC,CAACI,SAAS;IACnC,mBAAmB,EAAEJ,CAAC,CAACM,OAAO;IAC9B,8BAA8B,EAAEN,CAAC,CAACO,SAAS;IAC3C,kBAAkB,EAAEP,CAAC,CAACc,kBAAkB;IACxC,6BAA6B,EAAEd,CAAC,CAACe,oBAAoB;IACrD,kBAAkB,EAAEf,CAAC,CAACiB,cAAc;IACpC,gBAAgB,EAAEjB,CAAC,CAACM;EACtB,CAAC;AACH;;AAEA;;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASe,kBAAkBA,CAACC,OAAyB,EAA0B;EACpF,MAAMC,KAAK,GAAG1B,kBAAkB,CAAC;IAC/B2B,IAAI,EAAEF,OAAO,CAACE,IAAI;IAClBC,OAAO,EAAEH,OAAO,CAACG,OAAO,IAAI,OAAO;IACnCC,MAAM,EAAEJ,OAAO,CAACK,IAAI,KAAK,MAAM;IAC/BC,aAAa,EAAEN,OAAO,CAACM,aAAa,IAAI;EAC1C,CAAC,CAAC;EACF,MAAMC,MAAM,GAAG9B,wBAAwB,CAACwB,KAAK,CAAC;EAC9C,MAAMO,IAA4B,GAAG;IAAE,GAAGD;EAAO,CAAC;EAElD,KAAK,MAAME,KAAK,IAAIjC,gBAAgB,EAAE;IACpC,MAAMkC,KAAK,GAAGH,MAAM,CAAC,KAAKE,KAAK,EAAE,CAAC;IAClC,IAAIC,KAAK,KAAKC,SAAS,EAAE;MACvBH,IAAI,CAAC,WAAWC,KAAK,EAAE,CAAC,GAAGC,KAAK;IAClC;EACF;EAEA,OAAOF,IAAI;AACb","ignoreList":[]}
@@ -2,7 +2,14 @@
2
2
 
3
3
  export { BloomThemeProvider } from "./BloomThemeProvider.js";
4
4
  export { BloomColorScope, useColorScopeStyle } from './color-scope';
5
+ export { BloomSeedScope } from './seed-scope';
6
+ export { buildSeedScopeVars, roleColorsToPresetTokens } from "./color-scope/seed-scope.js";
7
+ // Colour engine — the dependency-free tonal system that turns ANY seed colour
8
+ // into a full role set. Surfaced here so consumers can derive dynamic themes
9
+ // (e.g. from artwork) without reaching into the internal color-engine path.
10
+ export { generateRoleColors, seedHexFromImagePixels, seedsFromImagePixels, quantizeImage, argbFromHex, hexFromArgb, argbFromRgb, redFromArgb, greenFromArgb, blueFromArgb } from "./color-engine/index.js";
5
11
  export { buildTheme, STATUS_COLORS } from "./build-theme.js";
12
+ export { buildThemeFromSeed, buildColorsFromSeed } from "./build-theme-from-seed.js";
6
13
  export { THEME_GRADIENTS } from "./gradients.js";
7
14
  export { useTheme, useThemeColor, useBloomTheme } from "./use-theme.js";
8
15
  export { useNavigationTheme } from "./use-navigation-theme.js";
@@ -1 +1 @@
1
- {"version":3,"names":["BloomThemeProvider","BloomColorScope","useColorScopeStyle","buildTheme","STATUS_COLORS","THEME_GRADIENTS","useTheme","useThemeColor","useBloomTheme","useNavigationTheme","APP_COLOR_NAMES","PREMIUM_COLOR_NAMES","APP_COLOR_PRESETS","HEX_TO_APP_COLOR","hexToAppColorName","parseRgb","withAlpha","getPresetVars","applyPresetVarsToDocument","applyDarkClass","setColorSchemeSafe","initCssInteropDarkMode","webLocalStorage"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,yBAAsB;AAKzD,SAASC,eAAe,EAAEC,kBAAkB,QAAQ,eAAe;AAEnE,SAASC,UAAU,EAAEC,aAAa,QAAQ,kBAAe;AACzD,SAASC,eAAe,QAAQ,gBAAa;AAC7C,SAASC,QAAQ,EAAEC,aAAa,EAAEC,aAAa,QAAQ,gBAAa;AACpE,SAASC,kBAAkB,QAAQ,2BAAwB;AAI3D,SACEC,eAAe,EACfC,mBAAmB,EACnBC,iBAAiB,EACjBC,gBAAgB,EAChBC,iBAAiB,QACZ,oBAAiB;AACxB,SAASC,QAAQ,EAAEC,SAAS,QAAQ,kBAAe;AAEnD,SAASC,aAAa,EAAEC,yBAAyB,QAAQ,kBAAe;AACxE,SAASC,cAAc,QAAQ,uBAAoB;AACnD,SAASC,kBAAkB,QAAQ,4BAAyB;AAC5D,SAASC,sBAAsB,QAAQ,uBAAoB;AAE3D,SAASC,eAAe,QAAQ,kBAAe","ignoreList":[]}
1
+ {"version":3,"names":["BloomThemeProvider","BloomColorScope","useColorScopeStyle","BloomSeedScope","buildSeedScopeVars","roleColorsToPresetTokens","generateRoleColors","seedHexFromImagePixels","seedsFromImagePixels","quantizeImage","argbFromHex","hexFromArgb","argbFromRgb","redFromArgb","greenFromArgb","blueFromArgb","buildTheme","STATUS_COLORS","buildThemeFromSeed","buildColorsFromSeed","THEME_GRADIENTS","useTheme","useThemeColor","useBloomTheme","useNavigationTheme","APP_COLOR_NAMES","PREMIUM_COLOR_NAMES","APP_COLOR_PRESETS","HEX_TO_APP_COLOR","hexToAppColorName","parseRgb","withAlpha","getPresetVars","applyPresetVarsToDocument","applyDarkClass","setColorSchemeSafe","initCssInteropDarkMode","webLocalStorage"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,yBAAsB;AAKzD,SAASC,eAAe,EAAEC,kBAAkB,QAAQ,eAAe;AAEnE,SAASC,cAAc,QAAQ,cAAc;AAE7C,SAASC,kBAAkB,EAAEC,wBAAwB,QAAQ,6BAA0B;AAEvF;AACA;AACA;AACA,SACEC,kBAAkB,EAClBC,sBAAsB,EACtBC,oBAAoB,EACpBC,aAAa,EACbC,WAAW,EACXC,WAAW,EACXC,WAAW,EACXC,WAAW,EACXC,aAAa,EACbC,YAAY,QACP,yBAAgB;AAEvB,SAASC,UAAU,EAAEC,aAAa,QAAQ,kBAAe;AACzD,SAASC,kBAAkB,EAAEC,mBAAmB,QAAQ,4BAAyB;AACjF,SAASC,eAAe,QAAQ,gBAAa;AAC7C,SAASC,QAAQ,EAAEC,aAAa,EAAEC,aAAa,QAAQ,gBAAa;AACpE,SAASC,kBAAkB,QAAQ,2BAAwB;AAI3D,SACEC,eAAe,EACfC,mBAAmB,EACnBC,iBAAiB,EACjBC,gBAAgB,EAChBC,iBAAiB,QACZ,oBAAiB;AACxB,SAASC,QAAQ,EAAEC,SAAS,QAAQ,kBAAe;AAEnD,SAASC,aAAa,EAAEC,yBAAyB,QAAQ,kBAAe;AACxE,SAASC,cAAc,QAAQ,uBAAoB;AACnD,SAASC,kBAAkB,QAAQ,4BAAyB;AAC5D,SAASC,sBAAsB,QAAQ,uBAAoB;AAE3D,SAASC,eAAe,QAAQ,kBAAe","ignoreList":[]}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ import React, { Children, cloneElement, isValidElement, useContext, useMemo } from 'react';
4
+ import { View } from 'react-native';
5
+ import { BloomThemeContext } from "../BloomThemeProvider.js";
6
+ import { buildSeedScopeVars } from "../color-scope/seed-scope.js";
7
+ import { getVariableContextProvider } from "../color-scope/style-builder.js";
8
+ import { buildThemeFromSeed } from "../build-theme-from-seed.js";
9
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
10
+ /**
11
+ * Native `<BloomSeedScope>`: scopes a subtree to an ARBITRARY seed colour's
12
+ * palette (the dynamic counterpart of `<BloomColorScope>`, which takes a named
13
+ * preset). Feeds the seed through the colour engine and (1) provides the
14
+ * resulting canonical CSS vars to descendants via react-native-css's
15
+ * `VariableContext` — so `bg-background` / `bg-card` / `var(--primary)` resolve
16
+ * against the seed inside this subtree — and (2) publishes a matching JS `theme`
17
+ * on `BloomThemeContext`, so `useTheme()`/`useBloomTheme()` consumers inside the
18
+ * subtree also re-theme. The `colorPreset` field is left as the parent's (a seed
19
+ * is not a named preset).
20
+ */
21
+ export function BloomSeedScope({
22
+ seed,
23
+ variant,
24
+ contrastLevel,
25
+ asChild = false,
26
+ style,
27
+ children
28
+ }) {
29
+ // Hooks run unconditionally; conditional no-op/throw is applied afterwards.
30
+ const parent = useContext(BloomThemeContext);
31
+ const resolvedMode = parent?.theme.mode ?? 'light';
32
+ const nativeVars = useMemo(() => seed ? buildSeedScopeVars({
33
+ seed,
34
+ mode: resolvedMode,
35
+ variant,
36
+ contrastLevel
37
+ }) : null, [seed, resolvedMode, variant, contrastLevel]);
38
+ const contextValue = useMemo(() => {
39
+ if (!parent || !seed) return null;
40
+ const theme = buildThemeFromSeed(seed, resolvedMode, variant, contrastLevel);
41
+ return {
42
+ ...parent,
43
+ theme
44
+ };
45
+ }, [parent, seed, resolvedMode, variant, contrastLevel]);
46
+ if (!parent) {
47
+ throw new Error('BloomSeedScope must be used within a <BloomThemeProvider>');
48
+ }
49
+ // `seed` undefined => no-op; children inherit the parent scope.
50
+ if (!nativeVars || !contextValue) return /*#__PURE__*/_jsx(_Fragment, {
51
+ children: children
52
+ });
53
+ const VariableProvider = getVariableContextProvider();
54
+ let content;
55
+ if (asChild) {
56
+ const child = Children.only(children);
57
+ if (! /*#__PURE__*/isValidElement(child)) {
58
+ throw new Error('BloomSeedScope with `asChild` requires a single React element child that accepts a `style` prop.');
59
+ }
60
+ const childStyle = child.props.style;
61
+ const mergedStyle = [style, childStyle];
62
+ content = /*#__PURE__*/cloneElement(child, {
63
+ style: mergedStyle
64
+ });
65
+ } else {
66
+ content = /*#__PURE__*/_jsx(View, {
67
+ style: [{
68
+ flex: 1
69
+ }, style],
70
+ children: children
71
+ });
72
+ }
73
+ const scoped = VariableProvider ? /*#__PURE__*/_jsx(VariableProvider, {
74
+ value: nativeVars,
75
+ children: content
76
+ }) : content;
77
+ return /*#__PURE__*/_jsx(BloomThemeContext.Provider, {
78
+ value: contextValue,
79
+ children: scoped
80
+ });
81
+ }
82
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Children","cloneElement","isValidElement","useContext","useMemo","View","BloomThemeContext","buildSeedScopeVars","getVariableContextProvider","buildThemeFromSeed","Fragment","_Fragment","jsx","_jsx","BloomSeedScope","seed","variant","contrastLevel","asChild","style","children","parent","resolvedMode","theme","mode","nativeVars","contextValue","Error","VariableProvider","content","child","only","childStyle","props","mergedStyle","flex","scoped","value","Provider"],"sourceRoot":"../../../../src","sources":["theme/seed-scope/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ import React, { Children, cloneElement, isValidElement, useContext, useMemo } from 'react';
4
+ import { BloomThemeContext } from "../BloomThemeProvider.js";
5
+ import { buildSeedScopeVars } from "../color-scope/seed-scope.js";
6
+ import { buildThemeFromSeed } from "../build-theme-from-seed.js";
7
+
8
+ /**
9
+ * On web the single `asChild` child is frequently a react-native-web component
10
+ * whose `style` prop is a style ARRAY (or a numeric registered-style id), not a
11
+ * plain object. Spreading such an array into an object literal would copy its
12
+ * numeric indices as keys and crash RNW; merge as an array instead.
13
+ */
14
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
15
+ /**
16
+ * Web `<BloomSeedScope>`: scopes a subtree to an ARBITRARY seed colour's palette
17
+ * (the dynamic counterpart of `<BloomColorScope>`). It (1) writes every canonical
18
+ * `--x` token plus the Tailwind v4 `--color-x` aliases (already resolved to
19
+ * `rgb(...)`) onto the wrapping element's inline `style`, so NativeWind classes
20
+ * inside resolve against the seed palette instead of the document root, and
21
+ * (2) publishes a matching JS `theme` on `BloomThemeContext` so
22
+ * `useTheme()`/`useBloomTheme()` consumers inside the subtree re-theme too. The
23
+ * `colorPreset` field is left as the parent's (a seed is not a named preset).
24
+ */
25
+ export function BloomSeedScope({
26
+ seed,
27
+ variant,
28
+ contrastLevel,
29
+ asChild = false,
30
+ style,
31
+ children
32
+ }) {
33
+ const parent = useContext(BloomThemeContext);
34
+ const resolvedMode = parent?.theme.mode ?? 'light';
35
+ const varsStyle = useMemo(() => seed ? buildSeedScopeVars({
36
+ seed,
37
+ mode: resolvedMode,
38
+ variant,
39
+ contrastLevel
40
+ }) : null, [seed, resolvedMode, variant, contrastLevel]);
41
+ const contextValue = useMemo(() => {
42
+ if (!parent || !seed) return null;
43
+ const theme = buildThemeFromSeed(seed, resolvedMode, variant, contrastLevel);
44
+ return {
45
+ ...parent,
46
+ theme
47
+ };
48
+ }, [parent, seed, resolvedMode, variant, contrastLevel]);
49
+ if (!parent) {
50
+ throw new Error('BloomSeedScope must be used within a <BloomThemeProvider>');
51
+ }
52
+ if (!varsStyle || !contextValue) return /*#__PURE__*/_jsx(_Fragment, {
53
+ children: children
54
+ });
55
+ let content;
56
+ if (asChild) {
57
+ const child = Children.only(children);
58
+ if (! /*#__PURE__*/isValidElement(child)) {
59
+ throw new Error('BloomSeedScope with `asChild` requires a single React element child that accepts a `style` prop.');
60
+ }
61
+ const childStyle = child.props.style;
62
+ const mergedStyle = [varsStyle, style, childStyle];
63
+ content = /*#__PURE__*/cloneElement(child, {
64
+ style: mergedStyle
65
+ });
66
+ } else {
67
+ const mergedStyle = {
68
+ ...varsStyle,
69
+ ...style
70
+ };
71
+ content = /*#__PURE__*/_jsx("div", {
72
+ style: mergedStyle,
73
+ children: children
74
+ });
75
+ }
76
+ return /*#__PURE__*/_jsx(BloomThemeContext.Provider, {
77
+ value: contextValue,
78
+ children: content
79
+ });
80
+ }
81
+ //# sourceMappingURL=index.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Children","cloneElement","isValidElement","useContext","useMemo","BloomThemeContext","buildSeedScopeVars","buildThemeFromSeed","Fragment","_Fragment","jsx","_jsx","BloomSeedScope","seed","variant","contrastLevel","asChild","style","children","parent","resolvedMode","theme","mode","varsStyle","contextValue","Error","content","child","only","childStyle","props","mergedStyle","Provider","value"],"sourceRoot":"../../../../src","sources":["theme/seed-scope/index.web.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,YAAY,EAAEC,cAAc,EAAEC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAE1F,SAASC,iBAAiB,QAAqC,0BAAuB;AACtF,SAASC,kBAAkB,QAAQ,8BAA2B;AAC9D,SAASC,kBAAkB,QAAQ,6BAA0B;;AAyB7D;AACA;AACA;AACA;AACA;AACA;AALA,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAC;EAC7BC,IAAI;EACJC,OAAO;EACPC,aAAa;EACbC,OAAO,GAAG,KAAK;EACfC,KAAK;EACLC;AACmB,CAAC,EAAE;EACtB,MAAMC,MAAM,GAAGhB,UAAU,CAACE,iBAAiB,CAAC;EAC5C,MAAMe,YAAY,GAAGD,MAAM,EAAEE,KAAK,CAACC,IAAI,IAAI,OAAO;EAElD,MAAMC,SAAS,GAAGnB,OAAO,CACvB,MACES,IAAI,GACCP,kBAAkB,CAAC;IAClBO,IAAI;IACJS,IAAI,EAAEF,YAAY;IAClBN,OAAO;IACPC;EACF,CAAC,CAAC,GACF,IAAI,EACV,CAACF,IAAI,EAAEO,YAAY,EAAEN,OAAO,EAAEC,aAAa,CAC7C,CAAC;EAED,MAAMS,YAAY,GAAGpB,OAAO,CAAgC,MAAM;IAChE,IAAI,CAACe,MAAM,IAAI,CAACN,IAAI,EAAE,OAAO,IAAI;IACjC,MAAMQ,KAAK,GAAGd,kBAAkB,CAACM,IAAI,EAAEO,YAAY,EAAEN,OAAO,EAAEC,aAAa,CAAC;IAC5E,OAAO;MAAE,GAAGI,MAAM;MAAEE;IAAM,CAAC;EAC7B,CAAC,EAAE,CAACF,MAAM,EAAEN,IAAI,EAAEO,YAAY,EAAEN,OAAO,EAAEC,aAAa,CAAC,CAAC;EAExD,IAAI,CAACI,MAAM,EAAE;IACX,MAAM,IAAIM,KAAK,CAAC,2DAA2D,CAAC;EAC9E;EACA,IAAI,CAACF,SAAS,IAAI,CAACC,YAAY,EAAE,oBAAOb,IAAA,CAAAF,SAAA;IAAAS,QAAA,EAAGA;EAAQ,CAAG,CAAC;EAEvD,IAAIQ,OAAwB;EAC5B,IAAIV,OAAO,EAAE;IACX,MAAMW,KAAK,GAAG3B,QAAQ,CAAC4B,IAAI,CAACV,QAAQ,CAAC;IACrC,IAAI,eAAChB,cAAc,CAAiByB,KAAK,CAAC,EAAE;MAC1C,MAAM,IAAIF,KAAK,CACb,kGACF,CAAC;IACH;IACA,MAAMI,UAAU,GAAGF,KAAK,CAACG,KAAK,CAACb,KAAK;IACpC,MAAMc,WAAqB,GAAG,CAACR,SAAS,EAAEN,KAAK,EAAEY,UAAU,CAAC;IAC5DH,OAAO,gBAAGzB,YAAY,CAAC0B,KAAK,EAAE;MAAEV,KAAK,EAAEc;IAAY,CAAC,CAAC;EACvD,CAAC,MAAM;IACL,MAAMA,WAAgC,GAAG;MAAE,GAAGR,SAAS;MAAE,GAAGN;IAAM,CAAC;IACnES,OAAO,gBAAGf,IAAA;MAAKM,KAAK,EAAEc,WAAY;MAAAb,QAAA,EAAEA;IAAQ,CAAM,CAAC;EACrD;EAEA,oBAAOP,IAAA,CAACN,iBAAiB,CAAC2B,QAAQ;IAACC,KAAK,EAAET,YAAa;IAAAN,QAAA,EAAEQ;EAAO,CAA6B,CAAC;AAChG","ignoreList":[]}
@@ -0,0 +1,23 @@
1
+ import { type SchemeVariant } from './color-engine';
2
+ import type { Theme, ThemeColors } from './types';
3
+ /**
4
+ * Build the JS `theme.colors` object from an ARBITRARY seed colour — the dynamic
5
+ * counterpart of `buildTheme(preset, …)`.
6
+ *
7
+ * This mirrors `buildColorsFromPreset` (`build-theme.ts`) field-for-field, but
8
+ * sources its tokens from `buildSeedScopeVars({ seed })` instead of a named
9
+ * preset, so a preset's seed reproduces that preset's JS theme exactly. Keeping
10
+ * the two in lockstep is enforced by `__tests__/build-theme-from-seed-parity.test.ts`.
11
+ *
12
+ * Token-backed fields read the resolved `rgb(...)` token map; the brand-tint
13
+ * family (primarySubtle / negative / …) reads the engine's container/error roles
14
+ * directly — identical to the preset path.
15
+ */
16
+ export declare function buildColorsFromSeed(seed: string, resolved: 'light' | 'dark', variant?: SchemeVariant, contrastLevel?: number): ThemeColors;
17
+ /**
18
+ * Build a full `Theme` from a seed colour and a resolved light/dark mode. Unlike
19
+ * `buildTheme`, there is no adaptive (Material You / iOS dynamic) override — a
20
+ * seed IS the dynamic source here.
21
+ */
22
+ export declare function buildThemeFromSeed(seed: string, resolved: 'light' | 'dark', variant?: SchemeVariant, contrastLevel?: number): Theme;
23
+ //# sourceMappingURL=build-theme-from-seed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-theme-from-seed.d.ts","sourceRoot":"","sources":["../../../../src/theme/build-theme-from-seed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIzF,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAElD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,GAAG,MAAM,EAC1B,OAAO,CAAC,EAAE,aAAa,EACvB,aAAa,CAAC,EAAE,MAAM,GACrB,WAAW,CAsDb;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,GAAG,MAAM,EAC1B,OAAO,CAAC,EAAE,aAAa,EACvB,aAAa,CAAC,EAAE,MAAM,GACrB,KAAK,CAQP"}
@@ -9,10 +9,19 @@
9
9
  */
10
10
  import { DynamicScheme } from './dynamic-scheme';
11
11
  import type { Hct } from './hct';
12
- export type SchemeVariant = 'vibrant' | 'expressive' | 'tonalSpot' | 'neutral';
12
+ export type SchemeVariant = 'vivid' | 'vibrant' | 'expressive' | 'tonalSpot' | 'neutral';
13
13
  /** Maxed-out colourfulness at each position of the primary palette. */
14
14
  export declare function schemeVibrant(source: Hct, isDark: boolean, contrastLevel: number): DynamicScheme;
15
15
  /** Playful, intentionally detached from the seed hue (primary rotated 240°). */
16
+ /**
17
+ * Bloom's own brand-vivid scheme. Same vibrant base (max-chroma primary) but the
18
+ * secondary and tertiary accents keep MUCH more chroma than canonical M3 (which
19
+ * intentionally desaturates supporting accents). Neutrals stay low-chroma so
20
+ * surfaces read as clean tinted light/dark. This is what the presets use — the
21
+ * old hand-authored palette felt more vivid than pure M3, and this restores that
22
+ * across the whole primary/secondary/tertiary trio.
23
+ */
24
+ export declare function schemeVivid(source: Hct, isDark: boolean, contrastLevel: number): DynamicScheme;
16
25
  export declare function schemeExpressive(source: Hct, isDark: boolean, contrastLevel: number): DynamicScheme;
17
26
  /** The Material You default — a calm, balanced treatment of the seed. */
18
27
  export declare function schemeTonalSpot(source: Hct, isDark: boolean, contrastLevel: number): DynamicScheme;
@@ -1 +1 @@
1
- {"version":3,"file":"scheme-variants.d.ts","sourceRoot":"","sources":["../../../../../src/theme/color-engine/scheme-variants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAKjC,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;AAU/E,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,aAAa,CAkBhG;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,aAAa,CAkBnG;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,aAAa,CAYlG;AAED,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,aAAa,CAYhG;AASD,sCAAsC;AACtC,wBAAgB,WAAW,CACzB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,OAAO,EACf,aAAa,SAAI,GAChB,aAAa,CAEf"}
1
+ {"version":3,"file":"scheme-variants.d.ts","sourceRoot":"","sources":["../../../../../src/theme/color-engine/scheme-variants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAKjC,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;AAUzF,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,aAAa,CAkBhG;AAED,gFAAgF;AAChF;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,aAAa,CAkB9F;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,aAAa,CAkBnG;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,aAAa,CAYlG;AAED,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,aAAa,CAYhG;AAUD,sCAAsC;AACtC,wBAAgB,WAAW,CACzB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,OAAO,EACf,aAAa,SAAI,GAChB,aAAa,CAEf"}
@@ -20,8 +20,9 @@ export interface SeedScopeOptions {
20
20
  seed: string;
21
21
  mode: 'light' | 'dark';
22
22
  /**
23
- * The tonal scheme variant. Defaults to `'vibrant'` — the same variant every
24
- * named Bloom preset uses, so a preset's seed reproduces that preset exactly.
23
+ * The tonal scheme variant. Defaults to `'vivid'` — the same variant every
24
+ * named Bloom preset uses, so a preset's seed reproduces that preset exactly
25
+ * (and an artwork-extracted seed gets the same brand-vivid feel as the app).
25
26
  */
26
27
  variant?: SchemeVariant;
27
28
  /** −1 (low) … 0 (normal) … 1 (high). Defaults to 0. */
@@ -1 +1 @@
1
- {"version":3,"file":"seed-scope.d.ts","sourceRoot":"","sources":["../../../../../src/theme/color-scope/seed-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAG1F;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0C9E;AAED,mEAAmE;AACnE,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBpF"}
1
+ {"version":3,"file":"seed-scope.d.ts","sourceRoot":"","sources":["../../../../../src/theme/color-scope/seed-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAG1F;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0C9E;AAED,mEAAmE;AACnE,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBpF"}
@@ -2,7 +2,14 @@ export { BloomThemeProvider } from './BloomThemeProvider';
2
2
  export type { BloomThemeProviderProps, BloomThemeContextValue, } from './BloomThemeProvider';
3
3
  export { BloomColorScope, useColorScopeStyle } from './color-scope';
4
4
  export type { BloomColorScopeProps } from './color-scope';
5
+ export { BloomSeedScope } from './seed-scope';
6
+ export type { BloomSeedScopeProps } from './seed-scope';
7
+ export { buildSeedScopeVars, roleColorsToPresetTokens } from './color-scope/seed-scope';
8
+ export type { SeedScopeOptions } from './color-scope/seed-scope';
9
+ export { generateRoleColors, seedHexFromImagePixels, seedsFromImagePixels, quantizeImage, argbFromHex, hexFromArgb, argbFromRgb, redFromArgb, greenFromArgb, blueFromArgb, } from './color-engine';
10
+ export type { RoleColors, GenerateOptions, RoleName, SchemeVariant } from './color-engine';
5
11
  export { buildTheme, STATUS_COLORS } from './build-theme';
12
+ export { buildThemeFromSeed, buildColorsFromSeed } from './build-theme-from-seed';
6
13
  export { THEME_GRADIENTS } from './gradients';
7
14
  export { useTheme, useThemeColor, useBloomTheme } from './use-theme';
8
15
  export { useNavigationTheme } from './use-navigation-theme';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACnF,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5F,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACxF,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAIjE,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,aAAa,EACb,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACnF,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5F,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ import { type StyleProp, type ViewStyle } from 'react-native';
3
+ import type { SchemeVariant } from '../color-engine';
4
+ export interface BloomSeedScopeProps {
5
+ /**
6
+ * The seed colour (`#rrggbb`) to derive this subtree's palette from. When
7
+ * `undefined`, the scope is a no-op and children inherit the parent scope
8
+ * unchanged — pass `undefined` to fall back to the app preset (e.g. on
9
+ * mouse-leave/blur when restoring the default theme).
10
+ */
11
+ seed: string | undefined;
12
+ /** Tonal scheme variant. Defaults to `'vibrant'` (matches Bloom presets). */
13
+ variant?: SchemeVariant;
14
+ /** −1 (low) … 0 (normal) … 1 (high). Defaults to 0. */
15
+ contrastLevel?: number;
16
+ /**
17
+ * When `true`, do not render a wrapping `<View>`. The single child is cloned
18
+ * with the caller's `style` merged into its `style` prop (Radix-style).
19
+ */
20
+ asChild?: boolean;
21
+ /** Additional style applied to the wrapping `<View>` (or merged into the cloned child with `asChild`). */
22
+ style?: StyleProp<ViewStyle>;
23
+ children: React.ReactNode;
24
+ }
25
+ /**
26
+ * Native `<BloomSeedScope>`: scopes a subtree to an ARBITRARY seed colour's
27
+ * palette (the dynamic counterpart of `<BloomColorScope>`, which takes a named
28
+ * preset). Feeds the seed through the colour engine and (1) provides the
29
+ * resulting canonical CSS vars to descendants via react-native-css's
30
+ * `VariableContext` — so `bg-background` / `bg-card` / `var(--primary)` resolve
31
+ * against the seed inside this subtree — and (2) publishes a matching JS `theme`
32
+ * on `BloomThemeContext`, so `useTheme()`/`useBloomTheme()` consumers inside the
33
+ * subtree also re-theme. The `colorPreset` field is left as the parent's (a seed
34
+ * is not a named preset).
35
+ */
36
+ export declare function BloomSeedScope({ seed, variant, contrastLevel, asChild, style, children, }: BloomSeedScopeProps): import("react/jsx-runtime").JSX.Element;
37
+ //# sourceMappingURL=index.d.ts.map