@oxyhq/bloom 1.0.0 → 1.0.2

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 (218) hide show
  1. package/README.md +16 -4
  2. package/docs/accordion.mdx +69 -0
  3. package/docs/activity-heatmap.mdx +71 -0
  4. package/docs/admonition.mdx +77 -0
  5. package/docs/alert-dialog.mdx +75 -0
  6. package/docs/alert.mdx +93 -0
  7. package/docs/animated-check.mdx +53 -0
  8. package/docs/aspect-ratio.mdx +45 -0
  9. package/docs/avatar-group.mdx +91 -0
  10. package/docs/avatar.mdx +126 -0
  11. package/docs/badge.mdx +74 -0
  12. package/docs/benefit-list.mdx +56 -0
  13. package/docs/bottom-sheet.mdx +103 -0
  14. package/docs/button.mdx +218 -0
  15. package/docs/card.mdx +106 -0
  16. package/docs/checkbox.mdx +59 -0
  17. package/docs/chip.mdx +53 -0
  18. package/docs/code.mdx +50 -0
  19. package/docs/combobox.mdx +64 -0
  20. package/docs/command.mdx +85 -0
  21. package/docs/composition-bar.mdx +63 -0
  22. package/docs/connection-dots.mdx +50 -0
  23. package/docs/connection-status.mdx +56 -0
  24. package/docs/content-panel.mdx +62 -0
  25. package/docs/context-menu.mdx +65 -0
  26. package/docs/design-tokens.mdx +254 -0
  27. package/docs/dialog.mdx +277 -0
  28. package/docs/divider.mdx +56 -0
  29. package/docs/dot-grid-meter.mdx +66 -0
  30. package/docs/dropdown-menu.mdx +161 -0
  31. package/docs/error-boundary.mdx +72 -0
  32. package/docs/fab.mdx +67 -0
  33. package/docs/field.mdx +70 -0
  34. package/docs/fill.mdx +58 -0
  35. package/docs/fonts.mdx +144 -0
  36. package/docs/frosted-icon-button.mdx +60 -0
  37. package/docs/getting-started.mdx +75 -0
  38. package/docs/grid.mdx +64 -0
  39. package/docs/hooks.mdx +81 -0
  40. package/docs/icon-circle.mdx +66 -0
  41. package/docs/icons.mdx +69 -0
  42. package/docs/image-aspect-ratio-cache.mdx +63 -0
  43. package/docs/image-resolver.mdx +66 -0
  44. package/docs/index.mdx +44 -0
  45. package/docs/input-group.mdx +58 -0
  46. package/docs/item.mdx +69 -0
  47. package/docs/kbd.mdx +57 -0
  48. package/docs/label.mdx +50 -0
  49. package/docs/link-preview.mdx +66 -0
  50. package/docs/list.mdx +72 -0
  51. package/docs/loading.mdx +129 -0
  52. package/docs/media-inset-border.mdx +52 -0
  53. package/docs/menubar.mdx +86 -0
  54. package/docs/migrating-to-1.0.mdx +434 -0
  55. package/docs/motion.mdx +83 -0
  56. package/docs/overlay.mdx +75 -0
  57. package/docs/popover.mdx +73 -0
  58. package/docs/portal.mdx +63 -0
  59. package/docs/pressable-scale.mdx +51 -0
  60. package/docs/profile-card.mdx +66 -0
  61. package/docs/progressive-blur.mdx +54 -0
  62. package/docs/prompt-input.mdx +183 -0
  63. package/docs/provider.mdx +64 -0
  64. package/docs/radio-indicator.mdx +60 -0
  65. package/docs/radio.mdx +65 -0
  66. package/docs/scroll.mdx +66 -0
  67. package/docs/search.mdx +67 -0
  68. package/docs/segmented-control.mdx +76 -0
  69. package/docs/select.mdx +93 -0
  70. package/docs/settings-list.mdx +186 -0
  71. package/docs/skeleton.mdx +66 -0
  72. package/docs/slider.mdx +73 -0
  73. package/docs/stat-bar.mdx +59 -0
  74. package/docs/stat-widgets.mdx +33 -0
  75. package/docs/styles.mdx +61 -0
  76. package/docs/subtle-hover.mdx +53 -0
  77. package/docs/surfaces.mdx +72 -0
  78. package/docs/switch.mdx +90 -0
  79. package/docs/tab-bar.mdx +386 -0
  80. package/docs/tabs.mdx +75 -0
  81. package/docs/text-field.mdx +187 -0
  82. package/docs/theme.mdx +67 -0
  83. package/docs/toast.mdx +285 -0
  84. package/docs/tooltip.mdx +67 -0
  85. package/docs/typography.mdx +88 -0
  86. package/docs/user-hover-card.mdx +140 -0
  87. package/docs/zoomable-image-gallery.mdx +66 -0
  88. package/lib/commonjs/design-tokens/color-roles.js +21 -1
  89. package/lib/commonjs/design-tokens/color-roles.js.map +1 -1
  90. package/lib/commonjs/design-tokens/index.js +6 -0
  91. package/lib/commonjs/design-tokens/index.js.map +1 -1
  92. package/lib/commonjs/design-tokens/tailwind-preset.js +3 -1
  93. package/lib/commonjs/design-tokens/tailwind-preset.js.map +1 -1
  94. package/lib/commonjs/design-tokens/theme-css.js +1 -0
  95. package/lib/commonjs/design-tokens/theme-css.js.map +1 -1
  96. package/lib/commonjs/design-tokens/theme.css +3 -0
  97. package/lib/commonjs/design-tokens/tokens-json.js +13 -4
  98. package/lib/commonjs/design-tokens/tokens-json.js.map +1 -1
  99. package/lib/commonjs/design-tokens/tokens.json +6227 -265
  100. package/lib/commonjs/index.js +7 -0
  101. package/lib/commonjs/index.js.map +1 -1
  102. package/lib/commonjs/index.web.js +7 -0
  103. package/lib/commonjs/index.web.js.map +1 -1
  104. package/lib/commonjs/theme/ambient-store.js +16 -1
  105. package/lib/commonjs/theme/ambient-store.js.map +1 -1
  106. package/lib/commonjs/theme/color-policy.js +30 -33
  107. package/lib/commonjs/theme/color-policy.js.map +1 -1
  108. package/lib/commonjs/theme/color-presets.js +413 -166
  109. package/lib/commonjs/theme/color-presets.js.map +1 -1
  110. package/lib/commonjs/theme/color-scope/seed-scope.js +1 -0
  111. package/lib/commonjs/theme/color-scope/seed-scope.js.map +1 -1
  112. package/lib/commonjs/theme/glass-colors.js +18 -21
  113. package/lib/commonjs/theme/glass-colors.js.map +1 -1
  114. package/lib/commonjs/theme/index.js +30 -0
  115. package/lib/commonjs/theme/index.js.map +1 -1
  116. package/lib/commonjs/theme/index.web.js +30 -0
  117. package/lib/commonjs/theme/index.web.js.map +1 -1
  118. package/lib/module/design-tokens/color-roles.js +20 -0
  119. package/lib/module/design-tokens/color-roles.js.map +1 -1
  120. package/lib/module/design-tokens/index.js +2 -2
  121. package/lib/module/design-tokens/index.js.map +1 -1
  122. package/lib/module/design-tokens/tailwind-preset.js +4 -2
  123. package/lib/module/design-tokens/tailwind-preset.js.map +1 -1
  124. package/lib/module/design-tokens/theme-css.js +2 -1
  125. package/lib/module/design-tokens/theme-css.js.map +1 -1
  126. package/lib/module/design-tokens/theme.css +3 -0
  127. package/lib/module/design-tokens/tokens-json.js +14 -5
  128. package/lib/module/design-tokens/tokens-json.js.map +1 -1
  129. package/lib/module/design-tokens/tokens.json +6227 -265
  130. package/lib/module/index.js +1 -1
  131. package/lib/module/index.js.map +1 -1
  132. package/lib/module/index.web.js +1 -1
  133. package/lib/module/index.web.js.map +1 -1
  134. package/lib/module/theme/ambient-store.js +16 -1
  135. package/lib/module/theme/ambient-store.js.map +1 -1
  136. package/lib/module/theme/color-policy.js +30 -33
  137. package/lib/module/theme/color-policy.js.map +1 -1
  138. package/lib/module/theme/color-presets.js +412 -165
  139. package/lib/module/theme/color-presets.js.map +1 -1
  140. package/lib/module/theme/color-scope/seed-scope.js +2 -1
  141. package/lib/module/theme/color-scope/seed-scope.js.map +1 -1
  142. package/lib/module/theme/glass-colors.js +18 -21
  143. package/lib/module/theme/glass-colors.js.map +1 -1
  144. package/lib/module/theme/index.js +1 -1
  145. package/lib/module/theme/index.js.map +1 -1
  146. package/lib/module/theme/index.web.js +1 -1
  147. package/lib/module/theme/index.web.js.map +1 -1
  148. package/lib/typescript/commonjs/design-tokens/color-roles.d.ts +20 -0
  149. package/lib/typescript/commonjs/design-tokens/color-roles.d.ts.map +1 -1
  150. package/lib/typescript/commonjs/design-tokens/index.d.ts +3 -3
  151. package/lib/typescript/commonjs/design-tokens/index.d.ts.map +1 -1
  152. package/lib/typescript/commonjs/design-tokens/tailwind-preset.d.ts.map +1 -1
  153. package/lib/typescript/commonjs/design-tokens/theme-css.d.ts.map +1 -1
  154. package/lib/typescript/commonjs/design-tokens/tokens-json.d.ts +12 -3
  155. package/lib/typescript/commonjs/design-tokens/tokens-json.d.ts.map +1 -1
  156. package/lib/typescript/commonjs/index.d.ts +2 -2
  157. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  158. package/lib/typescript/commonjs/index.web.d.ts +2 -2
  159. package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
  160. package/lib/typescript/commonjs/theme/ambient-store.d.ts.map +1 -1
  161. package/lib/typescript/commonjs/theme/color-policy.d.ts.map +1 -1
  162. package/lib/typescript/commonjs/theme/color-presets.d.ts +386 -62
  163. package/lib/typescript/commonjs/theme/color-presets.d.ts.map +1 -1
  164. package/lib/typescript/commonjs/theme/color-scope/seed-scope.d.ts.map +1 -1
  165. package/lib/typescript/commonjs/theme/glass-colors.d.ts +18 -21
  166. package/lib/typescript/commonjs/theme/glass-colors.d.ts.map +1 -1
  167. package/lib/typescript/commonjs/theme/index.d.ts +2 -2
  168. package/lib/typescript/commonjs/theme/index.d.ts.map +1 -1
  169. package/lib/typescript/commonjs/theme/index.web.d.ts +2 -2
  170. package/lib/typescript/commonjs/theme/index.web.d.ts.map +1 -1
  171. package/lib/typescript/module/design-tokens/color-roles.d.ts +20 -0
  172. package/lib/typescript/module/design-tokens/color-roles.d.ts.map +1 -1
  173. package/lib/typescript/module/design-tokens/index.d.ts +3 -3
  174. package/lib/typescript/module/design-tokens/index.d.ts.map +1 -1
  175. package/lib/typescript/module/design-tokens/tailwind-preset.d.ts.map +1 -1
  176. package/lib/typescript/module/design-tokens/theme-css.d.ts.map +1 -1
  177. package/lib/typescript/module/design-tokens/tokens-json.d.ts +12 -3
  178. package/lib/typescript/module/design-tokens/tokens-json.d.ts.map +1 -1
  179. package/lib/typescript/module/index.d.ts +2 -2
  180. package/lib/typescript/module/index.d.ts.map +1 -1
  181. package/lib/typescript/module/index.web.d.ts +2 -2
  182. package/lib/typescript/module/index.web.d.ts.map +1 -1
  183. package/lib/typescript/module/theme/ambient-store.d.ts.map +1 -1
  184. package/lib/typescript/module/theme/color-policy.d.ts.map +1 -1
  185. package/lib/typescript/module/theme/color-presets.d.ts +386 -62
  186. package/lib/typescript/module/theme/color-presets.d.ts.map +1 -1
  187. package/lib/typescript/module/theme/color-scope/seed-scope.d.ts.map +1 -1
  188. package/lib/typescript/module/theme/glass-colors.d.ts +18 -21
  189. package/lib/typescript/module/theme/glass-colors.d.ts.map +1 -1
  190. package/lib/typescript/module/theme/index.d.ts +2 -2
  191. package/lib/typescript/module/theme/index.d.ts.map +1 -1
  192. package/lib/typescript/module/theme/index.web.d.ts +2 -2
  193. package/lib/typescript/module/theme/index.web.d.ts.map +1 -1
  194. package/package.json +5 -2
  195. package/src/__tests__/support/collision-fixture-barrel.ts +20 -0
  196. package/src/__tests__/support/constructed-style-sheets.ts +68 -0
  197. package/src/__tests__/support/press-host.ts +30 -0
  198. package/src/__tests__/support/rendered-style.ts +99 -0
  199. package/src/__tests__/support/unread-hook-fixture.ts +33 -0
  200. package/src/design-tokens/color-roles.ts +21 -0
  201. package/src/design-tokens/index.ts +3 -2
  202. package/src/design-tokens/tailwind-preset.ts +3 -2
  203. package/src/design-tokens/theme-css.ts +2 -1
  204. package/src/design-tokens/theme.css +3 -0
  205. package/src/design-tokens/tokens-json.ts +29 -9
  206. package/src/design-tokens/tokens.json +6227 -265
  207. package/src/glass/GlassSurface.tsx +2 -2
  208. package/src/index.ts +2 -0
  209. package/src/index.web.ts +2 -0
  210. package/src/theme/__tests__/__fixtures__/golden-resolved-tokens.json +4082 -0
  211. package/src/theme/__tests__/fixtures/color-engine-golden.json +1 -0
  212. package/src/theme/ambient-store.ts +21 -1
  213. package/src/theme/color-policy.ts +33 -38
  214. package/src/theme/color-presets.ts +473 -146
  215. package/src/theme/color-scope/seed-scope.ts +2 -1
  216. package/src/theme/glass-colors.ts +18 -21
  217. package/src/theme/index.ts +16 -1
  218. package/src/theme/index.web.ts +16 -1
@@ -1,89 +1,413 @@
1
1
  import type { SchemeVariant } from './color-engine';
2
- export type AppColorName = 'teal' | 'blue' | 'green' | 'yellow' | 'red' | 'purple' | 'pink' | 'sky' | 'orange' | 'mint' | 'oxy' | 'faircoin' | 'pumpkin' | 'gray' | 'brown' | 'peach' | 'rose' | 'mono';
3
- /**
4
- * A single colour preset: a brand SEED colour plus the tonal scheme variant to
5
- * derive its full role set with.
6
- *
7
- * Every preset's palette is now GENERATED by Bloom's dependency-free colour
8
- * engine (`color-engine/`) from this seed — no hand-authored HSL triples. The
9
- * engine's `generateRoleColors({ seed, variant, isDark })` yields the full
10
- * Material-3 role set for light and dark; `getPresetVars` (in `preset-vars.ts`)
11
- * maps those roles onto Bloom's canonical token names. A user-picked colour
12
- * flows through the identical path — a preset is just a fixed seed.
13
- */
14
- /**
15
- * Why a preset is not offered to every user. Absent means it is.
16
- *
17
- * The two are NOT interchangeable and must not collapse back into one list: a
18
- * `handle` preset belongs to a specific account and cannot be bought, while a
19
- * `premium` one is exactly what is bought. Conflating them is how the picker
20
- * came to offer both of Oxy's reserved brand colours to everybody.
21
- */
2
+ /** Why a preset is not offered to every user. Absent means it is free. */
22
3
  export type ColorPresetGate =
23
4
  /** Reserved for the account whose brand it is — not purchasable. */
24
5
  'handle'
25
6
  /** Sold with a subscription. */
26
7
  | 'premium';
8
+ /** Stable picker/playground categories, ordered from specific to general. */
9
+ declare const COLOR_PRESET_FAMILY_SOURCES: readonly [{
10
+ readonly name: "brand";
11
+ readonly displayName: "Brand";
12
+ readonly description: "Reserved ecosystem identities.";
13
+ }, {
14
+ readonly name: "botanical";
15
+ readonly displayName: "Botanical";
16
+ readonly description: "Greens, jade and living hues.";
17
+ }, {
18
+ readonly name: "ocean";
19
+ readonly displayName: "Ocean";
20
+ readonly description: "Blue, cyan and aquatic identities.";
21
+ }, {
22
+ readonly name: "sunset";
23
+ readonly displayName: "Sunset";
24
+ readonly description: "Red, orange and golden identities.";
25
+ }, {
26
+ readonly name: "earth";
27
+ readonly displayName: "Earth";
28
+ readonly description: "Warm mineral and grounded identities.";
29
+ }, {
30
+ readonly name: "jewel";
31
+ readonly displayName: "Jewel";
32
+ readonly description: "Purple, rose and saturated gem hues.";
33
+ }, {
34
+ readonly name: "neutral";
35
+ readonly displayName: "Neutral";
36
+ readonly description: "Slate, graphite and monochrome.";
37
+ }];
38
+ export type ColorPresetFamily = (typeof COLOR_PRESET_FAMILY_SOURCES)[number]['name'];
39
+ export interface ColorPresetFamilyDefinition {
40
+ name: ColorPresetFamily;
41
+ displayName: string;
42
+ description: string;
43
+ }
44
+ export declare const COLOR_PRESET_FAMILY_REGISTRY: readonly ColorPresetFamilyDefinition[];
45
+ export declare const COLOR_PRESET_FAMILIES: readonly ColorPresetFamily[];
46
+ export type ColorPresetPairing = 'derived' | 'curated';
47
+ /**
48
+ * The ONE authored preset source.
49
+ *
50
+ * Everything public below — the name union, ordered registry, lookup record,
51
+ * hex lookup, gate lists, family groups and playground list — is derived from
52
+ * this tuple. A preset is a seed recipe, never a frozen light/dark token table;
53
+ * Bloom's colour policy resolves both modes at runtime.
54
+ */
55
+ declare const COLOR_PRESET_SOURCES: readonly [{
56
+ readonly name: "teal";
57
+ readonly displayName: "Teal";
58
+ readonly family: "ocean";
59
+ readonly description: "Deep teal identity with dynamically derived split-complementary accents.";
60
+ readonly hex: "#005c67";
61
+ readonly variant: "vivid";
62
+ readonly pairing: "derived";
63
+ }, {
64
+ readonly name: "blue";
65
+ readonly displayName: "Blue";
66
+ readonly family: "ocean";
67
+ readonly description: "Clear social blue with vivid generated supporting colours.";
68
+ readonly hex: "#1d9bf0";
69
+ readonly variant: "vivid";
70
+ readonly pairing: "derived";
71
+ }, {
72
+ readonly name: "green";
73
+ readonly displayName: "Green";
74
+ readonly family: "botanical";
75
+ readonly description: "Fresh green identity with dynamically generated contrast accents.";
76
+ readonly hex: "#10b981";
77
+ readonly variant: "vivid";
78
+ readonly pairing: "derived";
79
+ }, {
80
+ readonly name: "yellow";
81
+ readonly displayName: "Yellow";
82
+ readonly family: "sunset";
83
+ readonly description: "A signal-yellow identity deliberately brought deep enough for a white label.";
84
+ readonly hex: "#ffd400";
85
+ readonly variant: "vivid";
86
+ readonly pairing: "derived";
87
+ readonly label: "white";
88
+ }, {
89
+ readonly name: "red";
90
+ readonly displayName: "Red";
91
+ readonly family: "sunset";
92
+ readonly description: "Direct red identity with contrasting generated accent arms.";
93
+ readonly hex: "#ef4444";
94
+ readonly variant: "vivid";
95
+ readonly pairing: "derived";
96
+ }, {
97
+ readonly name: "purple";
98
+ readonly displayName: "Purple";
99
+ readonly family: "jewel";
100
+ readonly description: "Bright purple identity with dynamically derived action colours.";
101
+ readonly hex: "#b866ff";
102
+ readonly variant: "vivid";
103
+ readonly pairing: "derived";
104
+ }, {
105
+ readonly name: "pink";
106
+ readonly displayName: "Pink";
107
+ readonly family: "jewel";
108
+ readonly description: "Hot pink identity with a vivid generated complement.";
109
+ readonly hex: "#f91880";
110
+ readonly variant: "vivid";
111
+ readonly pairing: "derived";
112
+ }, {
113
+ readonly name: "sky";
114
+ readonly displayName: "Sky";
115
+ readonly family: "ocean";
116
+ readonly description: "Open sky blue with dynamically generated supporting accents.";
117
+ readonly hex: "#03a9f4";
118
+ readonly variant: "vivid";
119
+ readonly pairing: "derived";
120
+ }, {
121
+ readonly name: "orange";
122
+ readonly displayName: "Orange";
123
+ readonly family: "sunset";
124
+ readonly description: "A gamut-aware orange that stays orange at white-label fill tones.";
125
+ readonly hex: "#ff7a00";
126
+ readonly variant: "vivid";
127
+ readonly pairing: "derived";
128
+ }, {
129
+ readonly name: "mint";
130
+ readonly displayName: "Mint";
131
+ readonly family: "botanical";
132
+ readonly description: "Cool mint identity with vivid generated supporting hues.";
133
+ readonly hex: "#14b8a6";
134
+ readonly variant: "vivid";
135
+ readonly pairing: "derived";
136
+ }, {
137
+ readonly name: "oxy";
138
+ readonly displayName: "Oxy";
139
+ readonly family: "brand";
140
+ readonly description: "Oxy purple, reserved for the Oxy account identity.";
141
+ readonly hex: "#c46ede";
142
+ readonly variant: "vivid";
143
+ readonly pairing: "derived";
144
+ readonly gate: "handle";
145
+ }, {
146
+ readonly name: "faircoin";
147
+ readonly displayName: "FairCoin";
148
+ readonly family: "brand";
149
+ readonly description: "FairCoin lime, reserved for the FairCoin account identity.";
150
+ readonly hex: "#9ffb50";
151
+ readonly variant: "vivid";
152
+ readonly pairing: "derived";
153
+ readonly gate: "handle";
154
+ }, {
155
+ readonly name: "pumpkin";
156
+ readonly displayName: "Pumpkin";
157
+ readonly family: "sunset";
158
+ readonly description: "Golden pumpkin orange with a generated split complement.";
159
+ readonly hex: "#ff9800";
160
+ readonly variant: "vivid";
161
+ readonly pairing: "derived";
162
+ }, {
163
+ readonly name: "gray";
164
+ readonly displayName: "Slate";
165
+ readonly family: "neutral";
166
+ readonly description: "Cool slate identity with restrained chroma and generated accents.";
167
+ readonly hex: "#607d8b";
168
+ readonly variant: "vivid";
169
+ readonly pairing: "derived";
170
+ }, {
171
+ readonly name: "brown";
172
+ readonly displayName: "Brown";
173
+ readonly family: "earth";
174
+ readonly description: "Deep earthen brown with a contrasting generated action colour.";
175
+ readonly hex: "#813519";
176
+ readonly variant: "vivid";
177
+ readonly pairing: "derived";
178
+ }, {
179
+ readonly name: "peach";
180
+ readonly displayName: "Peach";
181
+ readonly family: "earth";
182
+ readonly description: "Warm peach identity with dynamically derived contrast accents.";
183
+ readonly hex: "#ffb28d";
184
+ readonly variant: "vivid";
185
+ readonly pairing: "derived";
186
+ }, {
187
+ readonly name: "rose";
188
+ readonly displayName: "Rose";
189
+ readonly family: "jewel";
190
+ readonly description: "Light rose identity with generated vivid supporting hues.";
191
+ readonly hex: "#fcaffe";
192
+ readonly variant: "vivid";
193
+ readonly pairing: "derived";
194
+ }, {
195
+ readonly name: "mono";
196
+ readonly displayName: "Monochrome";
197
+ readonly family: "neutral";
198
+ readonly description: "Colourless identity and surfaces, derived as a true greyscale theme.";
199
+ readonly hex: "#000000";
200
+ readonly variant: "monochrome";
201
+ readonly pairing: "derived";
202
+ readonly gate: "premium";
203
+ }, {
204
+ readonly name: "grove";
205
+ readonly displayName: "Grove + Marigold";
206
+ readonly family: "botanical";
207
+ readonly description: "Green identity with warm marigold reserved for the action that must win.";
208
+ readonly hex: "#087a3e";
209
+ readonly tertiaryHex: "#ffb000";
210
+ readonly variant: "vivid";
211
+ readonly pairing: "curated";
212
+ readonly featured: true;
213
+ }, {
214
+ readonly name: "ember";
215
+ readonly displayName: "Terracotta + Saffron";
216
+ readonly family: "earth";
217
+ readonly description: "Terracotta identity with a high-energy saffron action.";
218
+ readonly hex: "#b52f0c";
219
+ readonly tertiaryHex: "#ffb000";
220
+ readonly variant: "vivid";
221
+ readonly pairing: "curated";
222
+ readonly featured: true;
223
+ }, {
224
+ readonly name: "merlot";
225
+ readonly displayName: "Oxblood + Coral";
226
+ readonly family: "jewel";
227
+ readonly description: "Deep wine identity with coral action, expressive without reading destructive.";
228
+ readonly hex: "#a5003c";
229
+ readonly tertiaryHex: "#ff542e";
230
+ readonly variant: "vivid";
231
+ readonly pairing: "curated";
232
+ readonly featured: true;
233
+ }, {
234
+ readonly name: "cobalt";
235
+ readonly displayName: "Cobalt + Signal Yellow";
236
+ readonly family: "ocean";
237
+ readonly description: "Cobalt structure cut by a saturated signal-yellow action.";
238
+ readonly hex: "#154fd7";
239
+ readonly tertiaryHex: "#ffd000";
240
+ readonly variant: "vivid";
241
+ readonly pairing: "curated";
242
+ readonly featured: true;
243
+ }, {
244
+ readonly name: "jade";
245
+ readonly displayName: "Jade + Tangerine";
246
+ readonly family: "botanical";
247
+ readonly description: "Clean jade identity with a direct tangerine action.";
248
+ readonly hex: "#007a4b";
249
+ readonly tertiaryHex: "#ff5e00";
250
+ readonly variant: "vivid";
251
+ readonly pairing: "curated";
252
+ readonly featured: true;
253
+ }, {
254
+ readonly name: "pine";
255
+ readonly displayName: "Pine + Rose";
256
+ readonly family: "botanical";
257
+ readonly description: "Sober pine identity with a vivid rose action.";
258
+ readonly hex: "#135c2d";
259
+ readonly tertiaryHex: "#f0005a";
260
+ readonly variant: "vivid";
261
+ readonly pairing: "curated";
262
+ readonly featured: true;
263
+ }, {
264
+ readonly name: "olive";
265
+ readonly displayName: "Olive + Lilac";
266
+ readonly family: "earth";
267
+ readonly description: "Editorial olive identity with an unexpected clear lilac action.";
268
+ readonly hex: "#5f6400";
269
+ readonly tertiaryHex: "#7c25e8";
270
+ readonly variant: "vivid";
271
+ readonly pairing: "curated";
272
+ readonly featured: true;
273
+ }, {
274
+ readonly name: "lagoon";
275
+ readonly displayName: "Teal + Coral";
276
+ readonly family: "ocean";
277
+ readonly description: "Aquatic teal identity with a warm coral action.";
278
+ readonly hex: "#00706d";
279
+ readonly tertiaryHex: "#ff4935";
280
+ readonly variant: "vivid";
281
+ readonly pairing: "curated";
282
+ readonly featured: true;
283
+ }, {
284
+ readonly name: "navy";
285
+ readonly displayName: "Navy + Apricot";
286
+ readonly family: "ocean";
287
+ readonly description: "Serious navy identity softened by a human apricot action.";
288
+ readonly hex: "#0b2c72";
289
+ readonly tertiaryHex: "#ff6b20";
290
+ readonly variant: "vivid";
291
+ readonly pairing: "curated";
292
+ readonly featured: true;
293
+ }, {
294
+ readonly name: "azure";
295
+ readonly displayName: "Sky + Vermilion";
296
+ readonly family: "ocean";
297
+ readonly description: "Airy sky identity with a decisive vermilion action.";
298
+ readonly hex: "#006a94";
299
+ readonly tertiaryHex: "#e82e12";
300
+ readonly variant: "vivid";
301
+ readonly pairing: "curated";
302
+ readonly featured: true;
303
+ }, {
304
+ readonly name: "violet";
305
+ readonly displayName: "Violet + Lime";
306
+ readonly family: "jewel";
307
+ readonly description: "Deep violet identity with an electric lime action.";
308
+ readonly hex: "#7227c4";
309
+ readonly tertiaryHex: "#78c900";
310
+ readonly variant: "vivid";
311
+ readonly pairing: "curated";
312
+ readonly featured: true;
313
+ }, {
314
+ readonly name: "lavender";
315
+ readonly displayName: "Lavender + Brass";
316
+ readonly family: "jewel";
317
+ readonly description: "Calm lavender identity with a warmer, more editorial brass action.";
318
+ readonly hex: "#5c3db5";
319
+ readonly tertiaryHex: "#d98900";
320
+ readonly variant: "vivid";
321
+ readonly pairing: "curated";
322
+ readonly featured: true;
323
+ }, {
324
+ readonly name: "plum";
325
+ readonly displayName: "Plum + Aqua";
326
+ readonly family: "jewel";
327
+ readonly description: "Nocturnal plum identity with a bright aqua action.";
328
+ readonly hex: "#8d075f";
329
+ readonly tertiaryHex: "#00aeb8";
330
+ readonly variant: "vivid";
331
+ readonly pairing: "curated";
332
+ readonly featured: true;
333
+ }, {
334
+ readonly name: "cherry";
335
+ readonly displayName: "Cherry + Powder Blue";
336
+ readonly family: "jewel";
337
+ readonly description: "Cherry identity with a cool powder-blue counterpoint.";
338
+ readonly hex: "#b00038";
339
+ readonly tertiaryHex: "#2979e8";
340
+ readonly variant: "vivid";
341
+ readonly pairing: "curated";
342
+ readonly featured: true;
343
+ }, {
344
+ readonly name: "chocolate";
345
+ readonly displayName: "Chocolate + Cyan";
346
+ readonly family: "earth";
347
+ readonly description: "Material chocolate identity with a crisp technological cyan action.";
348
+ readonly hex: "#7a2a00";
349
+ readonly tertiaryHex: "#00aabe";
350
+ readonly variant: "vivid";
351
+ readonly pairing: "curated";
352
+ readonly featured: true;
353
+ }, {
354
+ readonly name: "graphite";
355
+ readonly displayName: "Graphite + Acid";
356
+ readonly family: "neutral";
357
+ readonly description: "Near-neutral identity that gives the stage to an acid-green action.";
358
+ readonly hex: "#272b28";
359
+ readonly tertiaryHex: "#78c900";
360
+ readonly variant: "vivid";
361
+ readonly pairing: "curated";
362
+ readonly featured: true;
363
+ }];
364
+ /** Preset identifiers are inferred from the authored registry, never repeated. */
365
+ export type AppColorName = (typeof COLOR_PRESET_SOURCES)[number]['name'];
366
+ /**
367
+ * Backwards-compatible named-preset contract. Rich picker metadata lives on
368
+ * {@link ColorPresetRecipe} so existing consumers constructing this type do not
369
+ * acquire new required fields in a patch release.
370
+ */
27
371
  export interface AppColorPreset {
28
372
  name: AppColorName;
29
- /** The brand seed colour, `#rrggbb`. Also the value the colour picker matches. */
30
373
  hex: string;
31
- /** The tonal scheme variant the engine derives roles with. */
32
374
  variant: SchemeVariant;
33
- /**
34
- * Optional explicit secondary-accent seed, `#rrggbb`. When set, the secondary
35
- * palette is PINNED to this brand colour (hue + chroma preserved; M3 role tones
36
- * still apply) instead of the derived hue-rotation of {@link AppColorPreset.hex}.
37
- * Bloom's built-in presets do NOT set this, so their generated output is
38
- * unchanged; a consumer brand with a distinct accent (blue primary + yellow
39
- * secondary) sets it to pin its real accent family.
40
- */
41
375
  secondaryHex?: string;
42
- /**
43
- * Optional explicit tertiary-accent seed, `#rrggbb`. Same semantics as
44
- * {@link AppColorPreset.secondaryHex} for the tertiary palette.
45
- */
46
376
  tertiaryHex?: string;
47
- /**
48
- * Force the fill to a tone a WHITE label fits, in BOTH modes — overriding the
49
- * budget that otherwise lets an already-light seed keep its own tone in dark
50
- * and take a black label.
51
- *
52
- * It has to be declared, because it cannot be derived: `yellow` (seed tone 86)
53
- * wants to come down to a deep gold with white on it, and `faircoin` (tone 90)
54
- * wants to stay a bright lime with black on it. Two seeds four tones apart,
55
- * opposite answers — nothing in the hex distinguishes them, only what the brand
56
- * is for.
57
- */
58
377
  label?: 'white';
59
- /**
60
- * Who may pick this preset. Absent = everyone. Bloom only DECLARES the gate;
61
- * whether a given viewer satisfies it is the consuming app's question, since
62
- * only the app knows who is signed in and what they pay for.
63
- */
64
378
  gate?: ColorPresetGate;
65
379
  }
66
- /**
67
- * Historically each preset carried a full light/dark map of raw HSL triples.
68
- * That map is gone — the engine derives every role from {@link AppColorPreset.hex}.
69
- * The type alias is retained for the public `PresetTokens` export shape (the
70
- * resolved `--token -> value` record that `getPresetVars` produces).
71
- */
72
- export type PresetTokens = Record<string, string>;
380
+ /** Enriched registry entry for a picker or colour playground. */
381
+ export interface ColorPresetRecipe extends AppColorPreset {
382
+ displayName: string;
383
+ family: ColorPresetFamily;
384
+ description: string;
385
+ pairing: ColorPresetPairing;
386
+ featured: boolean;
387
+ }
388
+ /** Stable ordered entries for pickers, filters and the Storybook playground. */
389
+ export declare const COLOR_PRESET_REGISTRY: readonly ColorPresetRecipe[];
73
390
  export declare const APP_COLOR_NAMES: readonly AppColorName[];
391
+ export declare const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset>;
74
392
  export declare const HEX_TO_APP_COLOR: Record<string, AppColorName>;
75
393
  export declare function hexToAppColorName(hex: string): AppColorName;
394
+ /** The sixteen approved paired directions in the permanent Mention playground. */
395
+ export declare const COLOR_PLAYGROUND_NAMES: readonly AppColorName[];
396
+ export interface ColorPresetGroup extends ColorPresetFamilyDefinition {
397
+ presets: readonly ColorPresetRecipe[];
398
+ }
399
+ /** Ordered family metadata and entries for consumer pickers. */
400
+ export declare const COLOR_PRESET_GROUPS: Readonly<Record<ColorPresetFamily, ColorPresetGroup>>;
76
401
  /**
77
- * The 13 named presets, each a brand seed + scheme variant. The engine derives
78
- * the full role set (light + dark) from the seed. Seeds are the brand hex of
79
- * each preset; `oxy` reads most faithfully as `vibrant`, everything else keeps a
80
- * bold `vibrant` derivation to match the prior saturated palette.
402
+ * Historically each preset carried a full light/dark map of raw HSL triples.
403
+ * The engine now derives every role from the registry's seeds.
81
404
  */
82
- export declare const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset>;
405
+ export type PresetTokens = Record<string, string>;
83
406
  /** Available to every user, signed in or not. */
84
407
  export declare const FREE_COLOR_NAMES: readonly AppColorName[];
85
408
  /** Reserved for the account whose brand it is (`oxy`, `faircoin`) — not for sale. */
86
409
  export declare const HANDLE_COLOR_NAMES: readonly AppColorName[];
87
410
  /** Sold with a subscription. */
88
411
  export declare const PREMIUM_COLOR_NAMES: readonly AppColorName[];
412
+ export {};
89
413
  //# sourceMappingURL=color-presets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"color-presets.d.ts","sourceRoot":"","sources":["../../../../src/theme/color-presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,MAAM,GACN,OAAO,GACP,QAAQ,GACR,KAAK,GACL,QAAQ,GACR,MAAM,GACN,KAAK,GACL,QAAQ,GACR,MAAM,GACN,KAAK,GACL,UAAU,GACV,SAAS,GACT,MAAM,GACN,OAAO,GACP,OAAO,GACP,MAAM,GACN,MAAM,CAAC;AAEX;;;;;;;;;;GAUG;AACH;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe;AACzB,oEAAoE;AAClE,QAAQ;AACV,gCAAgC;GAC9B,SAAS,CAAC;AAEd,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,kFAAkF;IAClF,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,OAAO,EAAE,aAAa,CAAC;IACvB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAElD,eAAO,MAAM,eAAe,EAAE,SAAS,YAAY,EAAkK,CAAC;AAEtN,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAmBzD,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAE3D;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,cAAc,CA+BlE,CAAC;AAgBF,iDAAiD;AACjD,eAAO,MAAM,gBAAgB,EAAE,SAAS,YAAY,EAA4B,CAAC;AAEjF,qFAAqF;AACrF,eAAO,MAAM,kBAAkB,EAAE,SAAS,YAAY,EAA2B,CAAC;AAElF,gCAAgC;AAChC,eAAO,MAAM,mBAAmB,EAAE,SAAS,YAAY,EAA4B,CAAC"}
1
+ {"version":3,"file":"color-presets.d.ts","sourceRoot":"","sources":["../../../../src/theme/color-presets.ts"],"names":[],"mappings":"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"}
@@ -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;AAyB1F;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAevF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA4C9E;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;IACvB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBpF"}
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;AA0B1F;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAevF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA4C9E;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;IACvB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBpF"}
@@ -16,23 +16,22 @@
16
16
  *
17
17
  * The 15% that bleeds through moves the pane TOWARD the surface under it, and
18
18
  * in light mode that means lighter — which is the direction a white label can
19
- * least afford. Measured over 18 presets x 2 modes x 5 Bloom surfaces:
19
+ * least afford. Measured over 34 presets x 2 modes x 5 Bloom surfaces:
20
20
  *
21
- * `Button` primary 30 of 180 rows fall below WCAG AA, in the band
22
- * 4.17..4.49, ALL of them in LIGHT mode, across nine
23
- * presets (blue, faircoin, green, mint, orange, pumpkin,
24
- * rose, sky, yellow).
25
- * `Button` destructive 0 of 180. Worst 5.32.
21
+ * `Button` primary 38 of 340 rows fall below WCAG AA, in the band
22
+ * 4.17..4.49, ALL of them in LIGHT mode, across fourteen
23
+ * presets (blue, faircoin, green, lagoon, lavender, mint,
24
+ * olive, orange, pine, plum, pumpkin, rose, sky, yellow).
25
+ * `Button` destructive 0 of 340. Worst 5.32.
26
26
  *
27
- * As a SOLID fill all 360 rows pass, so this is a real regression and not an
28
- * inherited one 173 rows across the whole fill vocabulary cross the AA line
29
- * that did not before, none of which failed both ways. That count was 45 (and
30
- * 263) until `SURFACE_RAMP` opened up three of the five Bloom surfaces the
31
- * button can sit on a palette improvement showing up here, not a relaxed
32
- * bar; re-measure both numbers on every alpha or surface change.
27
+ * As a SOLID fill all 680 Button rows pass. The original 18 presets retain
28
+ * their exact 30/180 shipped failure set; all eight added failures belong to
29
+ * the new recipes. A browser helper briefly reported 45 only because it parsed
30
+ * the structured `GLASS_SHEEN.bottom` stop as CSS; that was measurement drift,
31
+ * never the shipped oracle and never a threshold being relaxed.
33
32
  *
34
33
  * The alpha at which the failures reach zero is **0.89** (worst 4.52), and the
35
- * curve between is steep: 0.86 -> 21 rows, 0.87 -> 14, 0.88 -> 5, 0.89 -> 0.
34
+ * curve between is steep: 0.86 -> 25 rows, 0.87 -> 14, 0.88 -> 5, 0.89 -> 0.
36
35
  * So AA compliance costs four hundredths of alpha. 0.85 is kept because it is
37
36
  * the reference's own value and matching the reference is the requirement;
38
37
  * `glass-colors.test.ts` pins the compromise as an EXACT failure count and an
@@ -168,7 +167,7 @@ export interface GlassColors {
168
167
  * `colors.negative`, `colors.success` — rather than a tone name, because the
169
168
  * caller is the only one who knows which token its variant means. `Button`'s
170
169
  * `destructive` is `colors.negative` (the engine's error ROLE) and not
171
- * `colors.error` (the fixed status seed): measured, those two differ in all 36
170
+ * `colors.error` (the fixed status seed): measured, those two differ in all 68
172
171
  * preset x mode combinations and by as much as `rgb(255 180 171)` against
173
172
  * `rgb(209 45 50)` on `teal`/dark, so a tone vocabulary here would have
174
173
  * silently repainted every destructive button on the way past.
@@ -183,13 +182,11 @@ export interface GlassColors {
183
182
  * It is worth writing down WHY it is that token, because at 0.25 it was
184
183
  * `colors.text` and that was correct THEN: a pane that is three-quarters
185
184
  * backdrop takes its luminance from the page, so it needed the page's reading
186
- * colour at that alpha `colors.text` passed everywhere and the on-fill
187
- * token failed 650 of 1080 rows. At 0.85 the pane is the fill, so it takes
188
- * the fill's own label: on the SAME 1080-row matrix (presets x modes x tones
189
- * x surfaces), `colors.text` now fails AA on 864 rows (worst 1.21) against
190
- * the on-fill token's 173 (worst 4.17) — the reason this flipped when the
191
- * alpha did. Neither count is permanent; the gate re-measures both on every
192
- * alpha or surface change and reports them side by side.
185
+ * colour. At 0.85 the pane is the fill, so it takes the fill's own label: on
186
+ * the complete 2040-row matrix (34 presets x 2 modes x 6 tones x 5 surfaces),
187
+ * `colors.text` fails AA on 1714 rows (worst 1.21) against the on-fill token's
188
+ * 305 (worst 4.17). Neither count is permanent; the gate re-measures and pins
189
+ * both on every alpha or surface change.
193
190
  */
194
191
  export declare function resolveGlassColors(fill: string): GlassColors;
195
192
  //# sourceMappingURL=glass-colors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"glass-colors.d.ts","sourceRoot":"","sources":["../../../../src/theme/glass-colors.ts"],"names":[],"mappings":"AAyEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;IAItB,0EAA0E;;CAElE,CAAC;AAEX,wFAAwF;AACxF,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAE1D;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB,6CAA6C,CAAC;AAE9E,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,eAAoC,CAAC;AAEnE;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,QAA4K,CAAC;AAE9M;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,oBAAoB,QAA6B,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,QAAQ,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAM5D"}
1
+ {"version":3,"file":"glass-colors.d.ts","sourceRoot":"","sources":["../../../../src/theme/glass-colors.ts"],"names":[],"mappings":"AAyEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;IAItB,0EAA0E;;CAElE,CAAC;AAEX,wFAAwF;AACxF,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAElF,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAE1D;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB,6CAA6C,CAAC;AAE9E,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,eAAoC,CAAC;AAEnE;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,QAA4K,CAAC;AAE9M;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,oBAAoB,QAA6B,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,QAAQ,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAM5D"}
@@ -16,8 +16,8 @@ export type { AmbientThemeState, AmbientThemeApi, AmbientAccents, UseAmbientThem
16
16
  export { useNavigationTheme } from './use-navigation-theme';
17
17
  export type { NavigationTheme, NavigationThemeFont } from './use-navigation-theme';
18
18
  export type { Theme, ThemeColors, ThemeMode, ThemeGradient, ThemeGradients } from './types';
19
- export type { AppColorName, AppColorPreset, ColorPresetGate, PresetTokens } from './color-presets';
20
- export { APP_COLOR_NAMES, FREE_COLOR_NAMES, HANDLE_COLOR_NAMES, PREMIUM_COLOR_NAMES, APP_COLOR_PRESETS, HEX_TO_APP_COLOR, hexToAppColorName, } from './color-presets';
19
+ export type { AppColorName, AppColorPreset, ColorPresetFamily, ColorPresetFamilyDefinition, ColorPresetGate, ColorPresetGroup, ColorPresetPairing, ColorPresetRecipe, PresetTokens, } from './color-presets';
20
+ export { APP_COLOR_NAMES, COLOR_PLAYGROUND_NAMES, COLOR_PRESET_FAMILIES, COLOR_PRESET_FAMILY_REGISTRY, COLOR_PRESET_GROUPS, COLOR_PRESET_REGISTRY, FREE_COLOR_NAMES, HANDLE_COLOR_NAMES, PREMIUM_COLOR_NAMES, APP_COLOR_PRESETS, HEX_TO_APP_COLOR, hexToAppColorName, } from './color-presets';
21
21
  export { parseRgb, parseRgba, withAlpha } from './color-utils';
22
22
  export type { RgbChannels, RgbaChannels } from './color-utils';
23
23
  export { pressedSurface, PRESS_LAYER_ALPHA } from './press-colors';
@@ -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,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAepE,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAClF,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAChE,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,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,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACnG,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAK/D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAMnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAG1D,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,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAepE,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAClF,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAChE,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,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,EACV,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,2BAA2B,EAC3B,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,4BAA4B,EAC5B,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAK/D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAMnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAG1D,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"}
@@ -16,8 +16,8 @@ export type { AmbientThemeState, AmbientThemeApi, AmbientAccents, UseAmbientThem
16
16
  export { useNavigationTheme } from './use-navigation-theme';
17
17
  export type { NavigationTheme, NavigationThemeFont } from './use-navigation-theme';
18
18
  export type { Theme, ThemeColors, ThemeMode, ThemeGradient, ThemeGradients } from './types';
19
- export type { AppColorName, AppColorPreset, ColorPresetGate, PresetTokens } from './color-presets';
20
- export { APP_COLOR_NAMES, FREE_COLOR_NAMES, HANDLE_COLOR_NAMES, PREMIUM_COLOR_NAMES, APP_COLOR_PRESETS, HEX_TO_APP_COLOR, hexToAppColorName, } from './color-presets';
19
+ export type { AppColorName, AppColorPreset, ColorPresetFamily, ColorPresetFamilyDefinition, ColorPresetGate, ColorPresetGroup, ColorPresetPairing, ColorPresetRecipe, PresetTokens, } from './color-presets';
20
+ export { APP_COLOR_NAMES, COLOR_PLAYGROUND_NAMES, COLOR_PRESET_FAMILIES, COLOR_PRESET_FAMILY_REGISTRY, COLOR_PRESET_GROUPS, COLOR_PRESET_REGISTRY, FREE_COLOR_NAMES, HANDLE_COLOR_NAMES, PREMIUM_COLOR_NAMES, APP_COLOR_PRESETS, HEX_TO_APP_COLOR, hexToAppColorName, } from './color-presets';
21
21
  export { parseRgb, parseRgba, withAlpha } from './color-utils';
22
22
  export type { RgbChannels, RgbaChannels } from './color-utils';
23
23
  export { pressedSurface, PRESS_LAYER_ALPHA } from './press-colors';
@@ -1 +1 @@
1
- {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.web.ts"],"names":[],"mappings":"AAKA,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,yBAAyB,CAAC;AAC9E,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAepE,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAClF,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAChE,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,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,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACnG,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAK/D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAMnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAG1D,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.web.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.web.ts"],"names":[],"mappings":"AAKA,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,yBAAyB,CAAC;AAC9E,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAepE,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAClF,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAChE,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,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,EACV,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,2BAA2B,EAC3B,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,4BAA4B,EAC5B,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAK/D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAMnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAG1D,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"}