@oxyhq/bloom 0.79.1 → 0.81.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 (99) hide show
  1. package/lib/commonjs/scroll/index.web.js +52 -18
  2. package/lib/commonjs/scroll/index.web.js.map +1 -1
  3. package/lib/commonjs/scroll/scrollable.web.js +9 -3
  4. package/lib/commonjs/scroll/scrollable.web.js.map +1 -1
  5. package/lib/commonjs/tabs/Tabs.js +409 -71
  6. package/lib/commonjs/tabs/Tabs.js.map +1 -1
  7. package/lib/commonjs/tabs/expo-router/RouterTabs.js +215 -0
  8. package/lib/commonjs/tabs/expo-router/RouterTabs.js.map +1 -0
  9. package/lib/commonjs/tabs/expo-router/index.js +13 -0
  10. package/lib/commonjs/tabs/expo-router/index.js.map +1 -0
  11. package/lib/commonjs/theme/color-engine/index.js +6 -0
  12. package/lib/commonjs/theme/color-engine/index.js.map +1 -1
  13. package/lib/commonjs/theme/color-engine/scheme-variants.js +29 -1
  14. package/lib/commonjs/theme/color-engine/scheme-variants.js.map +1 -1
  15. package/lib/commonjs/theme/color-policy.js +54 -10
  16. package/lib/commonjs/theme/color-policy.js.map +1 -1
  17. package/lib/commonjs/theme/color-presets.js +14 -2
  18. package/lib/commonjs/theme/color-presets.js.map +1 -1
  19. package/lib/commonjs/theme/color-scope/seed-scope.js +5 -1
  20. package/lib/commonjs/theme/color-scope/seed-scope.js.map +1 -1
  21. package/lib/module/scroll/index.web.js +52 -18
  22. package/lib/module/scroll/index.web.js.map +1 -1
  23. package/lib/module/scroll/scrollable.web.js +9 -3
  24. package/lib/module/scroll/scrollable.web.js.map +1 -1
  25. package/lib/module/tabs/Tabs.js +417 -73
  26. package/lib/module/tabs/Tabs.js.map +1 -1
  27. package/lib/module/tabs/expo-router/RouterTabs.js +210 -0
  28. package/lib/module/tabs/expo-router/RouterTabs.js.map +1 -0
  29. package/lib/module/tabs/expo-router/index.js +10 -0
  30. package/lib/module/tabs/expo-router/index.js.map +1 -0
  31. package/lib/module/theme/color-engine/index.js +1 -1
  32. package/lib/module/theme/color-engine/index.js.map +1 -1
  33. package/lib/module/theme/color-engine/scheme-variants.js +28 -1
  34. package/lib/module/theme/color-engine/scheme-variants.js.map +1 -1
  35. package/lib/module/theme/color-policy.js +53 -10
  36. package/lib/module/theme/color-policy.js.map +1 -1
  37. package/lib/module/theme/color-presets.js +14 -2
  38. package/lib/module/theme/color-presets.js.map +1 -1
  39. package/lib/module/theme/color-scope/seed-scope.js +6 -2
  40. package/lib/module/theme/color-scope/seed-scope.js.map +1 -1
  41. package/lib/typescript/commonjs/scroll/index.web.d.ts.map +1 -1
  42. package/lib/typescript/commonjs/scroll/scrollable.web.d.ts +18 -5
  43. package/lib/typescript/commonjs/scroll/scrollable.web.d.ts.map +1 -1
  44. package/lib/typescript/commonjs/tabs/Tabs.d.ts +41 -1
  45. package/lib/typescript/commonjs/tabs/Tabs.d.ts.map +1 -1
  46. package/lib/typescript/commonjs/tabs/expo-router/RouterTabs.d.ts +80 -0
  47. package/lib/typescript/commonjs/tabs/expo-router/RouterTabs.d.ts.map +1 -0
  48. package/lib/typescript/commonjs/tabs/expo-router/index.d.ts +9 -0
  49. package/lib/typescript/commonjs/tabs/expo-router/index.d.ts.map +1 -0
  50. package/lib/typescript/commonjs/tabs/types.d.ts +48 -4
  51. package/lib/typescript/commonjs/tabs/types.d.ts.map +1 -1
  52. package/lib/typescript/commonjs/theme/color-engine/index.d.ts +1 -1
  53. package/lib/typescript/commonjs/theme/color-engine/index.d.ts.map +1 -1
  54. package/lib/typescript/commonjs/theme/color-engine/scheme-variants.d.ts +13 -1
  55. package/lib/typescript/commonjs/theme/color-engine/scheme-variants.d.ts.map +1 -1
  56. package/lib/typescript/commonjs/theme/color-policy.d.ts +6 -0
  57. package/lib/typescript/commonjs/theme/color-policy.d.ts.map +1 -1
  58. package/lib/typescript/commonjs/theme/color-presets.d.ts +1 -1
  59. package/lib/typescript/commonjs/theme/color-presets.d.ts.map +1 -1
  60. package/lib/typescript/commonjs/theme/color-scope/seed-scope.d.ts.map +1 -1
  61. package/lib/typescript/module/scroll/index.web.d.ts.map +1 -1
  62. package/lib/typescript/module/scroll/scrollable.web.d.ts +18 -5
  63. package/lib/typescript/module/scroll/scrollable.web.d.ts.map +1 -1
  64. package/lib/typescript/module/tabs/Tabs.d.ts +41 -1
  65. package/lib/typescript/module/tabs/Tabs.d.ts.map +1 -1
  66. package/lib/typescript/module/tabs/expo-router/RouterTabs.d.ts +80 -0
  67. package/lib/typescript/module/tabs/expo-router/RouterTabs.d.ts.map +1 -0
  68. package/lib/typescript/module/tabs/expo-router/index.d.ts +9 -0
  69. package/lib/typescript/module/tabs/expo-router/index.d.ts.map +1 -0
  70. package/lib/typescript/module/tabs/types.d.ts +48 -4
  71. package/lib/typescript/module/tabs/types.d.ts.map +1 -1
  72. package/lib/typescript/module/theme/color-engine/index.d.ts +1 -1
  73. package/lib/typescript/module/theme/color-engine/index.d.ts.map +1 -1
  74. package/lib/typescript/module/theme/color-engine/scheme-variants.d.ts +13 -1
  75. package/lib/typescript/module/theme/color-engine/scheme-variants.d.ts.map +1 -1
  76. package/lib/typescript/module/theme/color-policy.d.ts +6 -0
  77. package/lib/typescript/module/theme/color-policy.d.ts.map +1 -1
  78. package/lib/typescript/module/theme/color-presets.d.ts +1 -1
  79. package/lib/typescript/module/theme/color-presets.d.ts.map +1 -1
  80. package/lib/typescript/module/theme/color-scope/seed-scope.d.ts.map +1 -1
  81. package/package.json +15 -1
  82. package/src/__tests__/Tabs.test.tsx +470 -7
  83. package/src/__tests__/optional-peer-imports.test.ts +5 -0
  84. package/src/__tests__/scroll-web.test.tsx +255 -2
  85. package/src/__tests__/theme.test.ts +2 -1
  86. package/src/scroll/index.web.tsx +55 -19
  87. package/src/scroll/scrollable.web.ts +30 -8
  88. package/src/tabs/Tabs.tsx +518 -83
  89. package/src/tabs/expo-router/RouterTabs.tsx +268 -0
  90. package/src/tabs/expo-router/index.ts +8 -0
  91. package/src/tabs/types.ts +48 -4
  92. package/src/theme/__tests__/__fixtures__/golden-resolved-tokens.json +120 -0
  93. package/src/theme/__tests__/__snapshots__/visual-gallery.test.tsx.snap +70 -0
  94. package/src/theme/__tests__/policy-legibility.test.ts +12 -4
  95. package/src/theme/color-engine/index.ts +1 -1
  96. package/src/theme/color-engine/scheme-variants.ts +38 -1
  97. package/src/theme/color-policy.ts +68 -14
  98. package/src/theme/color-presets.ts +11 -2
  99. package/src/theme/color-scope/seed-scope.ts +6 -2
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RouterTabs = RouterTabs;
7
+ var _react = require("react");
8
+ var _reactNativeGestureHandler = require("react-native-gesture-handler");
9
+ var _reactNativeReanimated = require("react-native-reanimated");
10
+ var _expoRouter = require("expo-router");
11
+ var _Tabs = require("../Tabs.js");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ /**
14
+ * expo-router bindings for the in-screen tab strip.
15
+ *
16
+ * This subpath (`@oxyhq/bloom/tabs/expo-router`) is the ONLY place in the tabs
17
+ * feature allowed to import `expo-router`, which is why it is a separate entry:
18
+ * the core `@oxyhq/bloom/tabs` stays usable in an app with a different router,
19
+ * or none, and the optional peer is never pulled into a bundle that does not
20
+ * ask for it. Same split as `tab-bar` / `tab-bar/expo-router` and
21
+ * `scroll` / `scroll/expo-router`.
22
+ *
23
+ * Everything routing-shaped lives here on purpose: which tab the route means,
24
+ * what a committed swipe navigates to, and which links to warm. The strip
25
+ * itself stays presentational and knows only about measured geometry.
26
+ */
27
+
28
+ /**
29
+ * Resolve which item the current route belongs to.
30
+ *
31
+ * LONGEST matching prefix, on a segment boundary — not an exact match. All
32
+ * three properties matter:
33
+ *
34
+ * - A prefix is needed because a tab may own a subtree (`/feeds/1/topics` and
35
+ * anything under it), and an exact match would drop the underline the moment
36
+ * the user goes one level deeper.
37
+ * - LONGEST is needed because the default tab's href is a prefix of every
38
+ * sibling's (`/@ana` vs `/@ana/replies`), so a first-match rule would light
39
+ * up the default tab on every tab.
40
+ * - The segment boundary is what stops `/feeds/12` from matching `/feeds/1`.
41
+ *
42
+ * Returns `undefined` when nothing matches, which is a real state — a strip
43
+ * rendered by a LAYOUT keeps rendering while a child route outside the tab set
44
+ * is showing — and leaves the underline hidden rather than parked on a lie.
45
+ */
46
+ function matchActiveValue(items, pathname) {
47
+ let best;
48
+ for (const item of items) {
49
+ // `Href` is a string or an object; only a string form can be compared to a
50
+ // pathname, and an object form describes params we cannot resolve here.
51
+ if (typeof item.href !== 'string') continue;
52
+ // Compare paths only: a query string describes what the tab shows, not
53
+ // which tab it is, and a trailing slash is the same route either way.
54
+ const [path = ''] = item.href.split('?');
55
+ const href = path.replace(/\/$/, '');
56
+ const isMatch = pathname === href || pathname.startsWith(`${href}/`);
57
+ if (!isMatch) continue;
58
+ if (!best || href.length > best.length) {
59
+ best = {
60
+ value: item.value,
61
+ length: href.length
62
+ };
63
+ }
64
+ }
65
+ return best?.value;
66
+ }
67
+
68
+ /**
69
+ * A tab strip whose selection IS the route.
70
+ *
71
+ * Render it in the LAYOUT that owns the tabs, above the `<Slot/>` that renders
72
+ * them — not inside the tab screens themselves. That placement is the whole
73
+ * point, and it is load-bearing twice over: a strip inside the screens is
74
+ * unmounted and rebuilt by every navigation, so its underline has nothing to
75
+ * animate from and the chrome blanks while the incoming route's chunk loads;
76
+ * and a GESTURE inside the screens would be destroyed by the very navigation it
77
+ * commits, mid-release.
78
+ *
79
+ * ```tsx
80
+ * // app/(app)/[username]/_layout.tsx
81
+ * <RouterTabs
82
+ * items={[
83
+ * { value: 'posts', label: 'Posts', href: `/${username}` },
84
+ * { value: 'replies', label: 'Replies', href: `/${username}/replies` },
85
+ * ]}
86
+ * />
87
+ * <Slot />
88
+ * ```
89
+ */
90
+ function RouterTabs({
91
+ items,
92
+ onReselect,
93
+ swipeEnabled = true,
94
+ ...tabsProps
95
+ }) {
96
+ const pathname = (0, _expoRouter.usePathname)();
97
+ const activeValue = (0, _react.useMemo)(() => matchActiveValue(items, pathname), [items, pathname]);
98
+ const dragRef = (0, _react.useRef)(null);
99
+ // What releasing right now would commit. A ref rather than state: it is
100
+ // written on every frame of the drag and read once, and re-rendering the
101
+ // strip mid-gesture would fight the animation the gesture is driving.
102
+ const pendingRef = (0, _react.useRef)(null);
103
+ const navigateTo = (0, _react.useCallback)(value => {
104
+ const target = items.find(item => item.value === value);
105
+ if (!target) return;
106
+ // PUSH, not replace: a history entry per tab is what makes Back return to
107
+ // the tab the reader came from instead of leaving the screen entirely.
108
+ _expoRouter.router.push(target.href);
109
+ }, [items]);
110
+ const handlePress = (0, _react.useCallback)(item => {
111
+ if (item.value === activeValue) {
112
+ onReselect?.(item.value);
113
+ return;
114
+ }
115
+ navigateTo(item.value);
116
+ }, [activeValue, onReselect, navigateTo]);
117
+ const onDrag = (0, _react.useCallback)(translationX => {
118
+ pendingRef.current = dragRef.current?.drag(translationX) ?? null;
119
+ }, []);
120
+
121
+ // `onEnd` does not fire for every terminated gesture, and `onFinalize` fires
122
+ // for all of them — including after `onEnd`. Guarding on the ref being
123
+ // non-null is what makes the second call a no-op instead of a double commit.
124
+ const releasedRef = (0, _react.useRef)(true);
125
+ const onRelease = (0, _react.useCallback)(() => {
126
+ if (releasedRef.current) return;
127
+ releasedRef.current = true;
128
+ const committed = pendingRef.current;
129
+ pendingRef.current = null;
130
+ // The underline commits first and instantly: it lives in the layout, it
131
+ // survives the swap, and it is the honest signal the gesture was accepted.
132
+ // The content area arrives when its chunk does.
133
+ dragRef.current?.release(committed);
134
+ if (committed !== null) navigateTo(committed);
135
+ }, [navigateTo]);
136
+ const onBegin = (0, _react.useCallback)(() => {
137
+ releasedRef.current = false;
138
+ }, []);
139
+ const panGesture = (0, _react.useMemo)(() => _reactNativeGestureHandler.Gesture.Pan()
140
+ // Horizontal intent only. This is a hint to the gesture system and is
141
+ // NOT what protects vertical scrolling on web — see `touchAction` below.
142
+ .activeOffsetX([-12, 12]).failOffsetY([-12, 12]).onBegin(() => {
143
+ (0, _reactNativeReanimated.runOnJS)(onBegin)();
144
+ }).onUpdate(event => {
145
+ (0, _reactNativeReanimated.runOnJS)(onDrag)(event.translationX);
146
+ }).onFinalize(() => {
147
+ (0, _reactNativeReanimated.runOnJS)(onRelease)();
148
+ }), [onBegin, onDrag, onRelease]);
149
+
150
+ // Warm every OTHER tab's async chunk. That fetch is the ~300ms the content
151
+ // area would otherwise spend empty after a commit, and a swipe offers no
152
+ // hover to warm on, so it is done up front rather than on interaction.
153
+ //
154
+ // `router.prefetch` — the public imperative API (declared in expo-router's
155
+ // `global-state/router.d.ts`) — rather than wrapping each trigger in
156
+ // `<Link prefetch asChild>`. Both reasons are about the WRAPPER, not about
157
+ // prefetching: `asChild` is Radix's `Slot`, which COMPOSES event handlers, so
158
+ // the trigger's own `onPress` and the link's navigation would both run — and
159
+ // the link's push knows nothing about `onReselect`, so re-tapping the active
160
+ // tab would push a duplicate entry and make Back appear to do nothing. It
161
+ // also injects an `href` a `Pressable` ignores. The prefetching itself is
162
+ // identical: `<Link prefetch>` renders `<Prefetch href/>` beside its element
163
+ // and does nothing else.
164
+ //
165
+ // Known trade: a real `<Link>` would render a web anchor, which is what gives
166
+ // middle-click and open-in-new-tab. A tab strip arguably wants that; getting
167
+ // both needs the trigger to render an anchor itself, which is a change to the
168
+ // core rather than to this file.
169
+ (0, _react.useEffect)(() => {
170
+ for (const item of items) {
171
+ if (item.value === activeValue || item.disabled) continue;
172
+ _expoRouter.router.prefetch(item.href);
173
+ }
174
+ }, [items, activeValue]);
175
+ const strip =
176
+ /*#__PURE__*/
177
+ // `hasSelection` is what stops the underline asserting a tab while a
178
+ // NON-TAB sibling route is showing — the layout that renders this strip
179
+ // renders those too (a profile's `/followers` beside its tab routes).
180
+ (0, _jsxRuntime.jsx)(_Tabs.Tabs, {
181
+ ...tabsProps,
182
+ ref: dragRef,
183
+ hasSelection: activeValue !== undefined,
184
+ children: items.map(item => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tabs.TabsTrigger, {
185
+ value: item.value,
186
+ label: item.label,
187
+ icon: item.icon,
188
+ count: item.count,
189
+ disabled: item.disabled
190
+ // Focus, never a press, is what drives the underline — so a deep
191
+ // link, a browser Back and a back gesture animate exactly like a tap.
192
+ ,
193
+ isFocused: item.value === activeValue,
194
+ onPress: () => handlePress(item)
195
+ }, item.value))
196
+ });
197
+ if (!swipeEnabled) return strip;
198
+ return (
199
+ /*#__PURE__*/
200
+ // `touchAction="pan-y"` is MANDATORY and is the landmine of this file.
201
+ // RNGH sets the detector's view to `touch-action: none` on web
202
+ // (`GestureHandlerWebDelegate.js`), which disables browser-native VERTICAL
203
+ // scrolling on that element. `failOffsetY` above does not protect against
204
+ // it: that is a JS decision taken after `touch-action` has already told the
205
+ // browser not to scroll. Removing this prop is silent on native and breaks
206
+ // scrolling on mobile web.
207
+ (0, _jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector, {
208
+ gesture: panGesture,
209
+ touchAction: "pan-y",
210
+ children: strip
211
+ })
212
+ );
213
+ }
214
+ RouterTabs.displayName = 'RouterTabs';
215
+ //# sourceMappingURL=RouterTabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNativeGestureHandler","_reactNativeReanimated","_expoRouter","_Tabs","_jsxRuntime","matchActiveValue","items","pathname","best","item","href","path","split","replace","isMatch","startsWith","length","value","RouterTabs","onReselect","swipeEnabled","tabsProps","usePathname","activeValue","useMemo","dragRef","useRef","pendingRef","navigateTo","useCallback","target","find","router","push","handlePress","onDrag","translationX","current","drag","releasedRef","onRelease","committed","release","onBegin","panGesture","Gesture","Pan","activeOffsetX","failOffsetY","runOnJS","onUpdate","event","onFinalize","useEffect","disabled","prefetch","strip","jsx","Tabs","ref","hasSelection","undefined","children","map","TabsTrigger","label","icon","count","isFocused","onPress","GestureDetector","gesture","touchAction","displayName"],"sourceRoot":"../../../../src","sources":["tabs/expo-router/RouterTabs.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "RouterTabs", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _RouterTabs.RouterTabs;
10
+ }
11
+ });
12
+ var _RouterTabs = require("./RouterTabs.js");
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_RouterTabs","require"],"sourceRoot":"../../../../src","sources":["tabs/expo-router/index.ts"],"mappings":";;;;;;;;;;;AAMA,IAAAA,WAAA,GAAAC,OAAA","ignoreList":[]}
@@ -84,6 +84,12 @@ Object.defineProperty(exports, "schemeExpressive", {
84
84
  return _schemeVariants.schemeExpressive;
85
85
  }
86
86
  });
87
+ Object.defineProperty(exports, "schemeMonochrome", {
88
+ enumerable: true,
89
+ get: function () {
90
+ return _schemeVariants.schemeMonochrome;
91
+ }
92
+ });
87
93
  Object.defineProperty(exports, "schemeNeutral", {
88
94
  enumerable: true,
89
95
  get: function () {
@@ -1 +1 @@
1
- {"version":3,"names":["_hct","require","_tonalPalette","_dynamicScheme","_schemeVariants","_colorRoles","_colorRole","_quantizerWu","_score","_seedFromImage","_colorUtils","argbFromHex","hex","h","replace","v","length","parseInt","hexFromArgb","argb","r","redFromArgb","toString","padStart","g","greenFromArgb","b","blueFromArgb","generateRoleColors","opts","scheme","buildScheme","variant","Hct","fromInt","seed","isDark","contrastLevel","secondarySource","secondarySeed","undefined","tertiarySource","tertiarySeed","out","name","Object","keys","Roles","getArgb"],"sourceRoot":"../../../../src","sources":["theme/color-engine/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AAEA,IAAAI,WAAA,GAAAJ,OAAA;AAEA,IAAAK,UAAA,GAAAL,OAAA;AACA,IAAAM,YAAA,GAAAN,OAAA;AACA,IAAAO,MAAA,GAAAP,OAAA;AAEA,IAAAQ,cAAA,GAAAR,OAAA;AACA,IAAAS,WAAA,GAAAT,OAAA;AArBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAoBA;AACO,SAASU,WAAWA,CAACC,GAAW,EAAU;EAC/C,MAAMC,CAAC,GAAGD,GAAG,CAACE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;EAC9B,MAAMC,CAAC,GAAGF,CAAC,CAACG,MAAM,KAAK,CAAC,GAAG,KAAKH,CAAC,EAAE,GAAGA,CAAC;EACvC,OAAOI,QAAQ,CAACF,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC;AAC9B;;AAEA;AACO,SAASG,WAAWA,CAACC,IAAY,EAAU;EAChD,MAAMC,CAAC,GAAG,IAAAC,uBAAW,EAACF,IAAI,CAAC,CAACG,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EACzD,MAAMC,CAAC,GAAG,IAAAC,yBAAa,EAACN,IAAI,CAAC,CAACG,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAC3D,MAAMG,CAAC,GAAG,IAAAC,wBAAY,EAACR,IAAI,CAAC,CAACG,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAC1D,OAAO,IAAIH,CAAC,GAAGI,CAAC,GAAGE,CAAC,EAAE;AACxB;;AAEA;;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,kBAAkBA,CAACC,IAAqB,EAAc;EACpE,MAAMC,MAAM,GAAG,IAAAC,2BAAW,EACxBF,IAAI,CAACG,OAAO,IAAI,SAAS,EACzBC,QAAG,CAACC,OAAO,CAACvB,WAAW,CAACkB,IAAI,CAACM,IAAI,CAAC,CAAC,EACnCN,IAAI,CAACO,MAAM,IAAI,KAAK,EACpBP,IAAI,CAACQ,aAAa,IAAI,CAAC,EACvB;IACEC,eAAe,EACbT,IAAI,CAACU,aAAa,KAAKC,SAAS,GAC5BP,QAAG,CAACC,OAAO,CAACvB,WAAW,CAACkB,IAAI,CAACU,aAAa,CAAC,CAAC,GAC5CC,SAAS;IACfC,cAAc,EACZZ,IAAI,CAACa,YAAY,KAAKF,SAAS,GAC3BP,QAAG,CAACC,OAAO,CAACvB,WAAW,CAACkB,IAAI,CAACa,YAAY,CAAC,CAAC,GAC3CF;EACR,CACF,CAAC;EACD,MAAMG,GAAG,GAAG,CAAC,CAAe;EAC5B,KAAK,MAAMC,IAAI,IAAIC,MAAM,CAACC,IAAI,CAACC,iBAAK,CAAC,EAAgB;IACnD,MAAM5B,IAAI,GAAG4B,iBAAK,CAACH,IAAI,CAAC,CAACI,OAAO,CAAClB,MAAM,CAAC;IACxCa,GAAG,CAACC,IAAI,CAAC,GAAG,OAAO,IAAAvB,uBAAW,EAACF,IAAI,CAAC,IAAI,IAAAM,yBAAa,EAACN,IAAI,CAAC,IAAI,IAAAQ,wBAAY,EAACR,IAAI,CAAC,GAAG;EACtF;EACA,OAAOwB,GAAG;AACZ","ignoreList":[]}
1
+ {"version":3,"names":["_hct","require","_tonalPalette","_dynamicScheme","_schemeVariants","_colorRoles","_colorRole","_quantizerWu","_score","_seedFromImage","_colorUtils","argbFromHex","hex","h","replace","v","length","parseInt","hexFromArgb","argb","r","redFromArgb","toString","padStart","g","greenFromArgb","b","blueFromArgb","generateRoleColors","opts","scheme","buildScheme","variant","Hct","fromInt","seed","isDark","contrastLevel","secondarySource","secondarySeed","undefined","tertiarySource","tertiarySeed","out","name","Object","keys","Roles","getArgb"],"sourceRoot":"../../../../src","sources":["theme/color-engine/index.ts"],"mappings":"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","ignoreList":[]}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.buildScheme = buildScheme;
7
7
  exports.schemeExpressive = schemeExpressive;
8
+ exports.schemeMonochrome = schemeMonochrome;
8
9
  exports.schemeNeutral = schemeNeutral;
9
10
  exports.schemeTonalSpot = schemeTonalSpot;
10
11
  exports.schemeVibrant = schemeVibrant;
@@ -128,12 +129,39 @@ function schemeNeutral(source, isDark, contrastLevel, accents = {}) {
128
129
  neutralVariantPalette: _tonalPalette.TonalPalette.fromHueAndChroma(source.hue, 2.0)
129
130
  });
130
131
  }
132
+
133
+ /**
134
+ * No colour at all: every palette is greyscale, so the seed's hue is irrelevant
135
+ * and only its tone survives. This is the variant the `isMonochrome` role
136
+ * branches in `color-roles` were written for — they push `primary` to the far end
137
+ * of the scale (tone 0 on a light page, 100 on a dark one) rather than the
138
+ * mid-tone the chromatic curves would pick, which is what keeps a black-and-white
139
+ * theme from reading as a grey one.
140
+ *
141
+ * A pinned accent is ignored on purpose: honouring it would put one coloured
142
+ * family back into a scheme whose entire point is that nothing is coloured.
143
+ */
144
+ function schemeMonochrome(source, isDark, contrastLevel) {
145
+ const grey = () => _tonalPalette.TonalPalette.fromHueAndChroma(source.hue, 0);
146
+ return new _dynamicScheme.DynamicScheme({
147
+ sourceColorArgb: source.toInt(),
148
+ variant: _variant.Variant.MONOCHROME,
149
+ contrastLevel,
150
+ isDark,
151
+ primaryPalette: grey(),
152
+ secondaryPalette: grey(),
153
+ tertiaryPalette: grey(),
154
+ neutralPalette: grey(),
155
+ neutralVariantPalette: grey()
156
+ });
157
+ }
131
158
  const BUILDERS = {
132
159
  vivid: schemeVivid,
133
160
  vibrant: schemeVibrant,
134
161
  expressive: schemeExpressive,
135
162
  tonalSpot: schemeTonalSpot,
136
- neutral: schemeNeutral
163
+ neutral: schemeNeutral,
164
+ monochrome: schemeMonochrome
137
165
  };
138
166
 
139
167
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["_dynamicScheme","require","_mathUtils","_tonalPalette","_variant","accentPalette","source","derived","undefined","TonalPalette","fromInt","toInt","VIBRANT_HUES","VIBRANT_SECONDARY_ROTATIONS","VIBRANT_TERTIARY_ROTATIONS","EXPRESSIVE_HUES","EXPRESSIVE_SECONDARY_ROTATIONS","EXPRESSIVE_TERTIARY_ROTATIONS","schemeVibrant","isDark","contrastLevel","accents","DynamicScheme","sourceColorArgb","variant","Variant","VIBRANT","primaryPalette","fromHueAndChroma","hue","secondaryPalette","secondarySource","getRotatedHue","tertiaryPalette","tertiarySource","neutralPalette","neutralVariantPalette","schemeVivid","schemeExpressive","EXPRESSIVE","sanitizeDegreesDouble","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":[]}
1
+ {"version":3,"names":["_dynamicScheme","require","_mathUtils","_tonalPalette","_variant","accentPalette","source","derived","undefined","TonalPalette","fromInt","toInt","VIBRANT_HUES","VIBRANT_SECONDARY_ROTATIONS","VIBRANT_TERTIARY_ROTATIONS","EXPRESSIVE_HUES","EXPRESSIVE_SECONDARY_ROTATIONS","EXPRESSIVE_TERTIARY_ROTATIONS","schemeVibrant","isDark","contrastLevel","accents","DynamicScheme","sourceColorArgb","variant","Variant","VIBRANT","primaryPalette","fromHueAndChroma","hue","secondaryPalette","secondarySource","getRotatedHue","tertiaryPalette","tertiarySource","neutralPalette","neutralVariantPalette","schemeVivid","schemeExpressive","EXPRESSIVE","sanitizeDegreesDouble","schemeTonalSpot","TONAL_SPOT","schemeNeutral","NEUTRAL","schemeMonochrome","grey","MONOCHROME","BUILDERS","vivid","vibrant","expressive","tonalSpot","neutral","monochrome","buildScheme"],"sourceRoot":"../../../../src","sources":["theme/color-engine/scheme-variants.ts"],"mappings":"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","ignoreList":[]}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.STATUS_SEEDS = void 0;
7
7
  exports.buildPolicyTokens = buildPolicyTokens;
8
+ exports.isColourlessSeed = isColourlessSeed;
8
9
  var _index = require("./color-engine/index.js");
9
10
  var _hct = require("./color-engine/hct.js");
10
11
  var _tonalPalette = require("./color-engine/tonal-palette.js");
@@ -130,6 +131,35 @@ const SUBTLE_ALPHA = {
130
131
  dark: 0.24
131
132
  };
132
133
 
134
+ /**
135
+ * A seed at or below this chroma has no colour to derive from, so the whole
136
+ * palette goes greyscale — the black-and-white theme. Keyed on the seed rather
137
+ * than on a flag, so picking any grey in a colour wheel lands there too instead
138
+ * of on a nearly-grey approximation of it.
139
+ */
140
+ const MONOCHROME_MAX_CHROMA = 6;
141
+
142
+ /**
143
+ * Whether a seed carries no colour to derive a theme from — the one authority for
144
+ * that question, so the policy and the scheme choice can never disagree about a
145
+ * given seed and produce a grey palette wearing chromatic surfaces.
146
+ */
147
+ function isColourlessSeed(seedHex) {
148
+ return _hct.Hct.fromInt((0, _index.argbFromHex)(seedHex)).chroma <= MONOCHROME_MAX_CHROMA;
149
+ }
150
+
151
+ /** Where a monochrome brand fill sits: near-black on a white page, near-white on a black one. */
152
+ const MONOCHROME_FILL_TONE = {
153
+ light: 12,
154
+ dark: 94
155
+ };
156
+
157
+ /** The quiet member of a monochrome trio — the only one that is actually grey. */
158
+ const MONOCHROME_SECONDARY_TONE = {
159
+ light: 36,
160
+ dark: 72
161
+ };
162
+
133
163
  /** Split-complementary: the two accents sit either side of the seed's complement. */
134
164
  const SPLIT_ROTATIONS = [150, 210];
135
165
 
@@ -209,7 +239,8 @@ function vividHueNear(hue) {
209
239
  * ceasing to be itself: yellow turns to brown and lime to moss. Those keep their
210
240
  * own tone and take a black label instead, which is what a bright yellow button
211
241
  * wants anyway. The 25-tone budget is what separates the two cases, and it is
212
- * why 11 of the 13 presets carry white and exactly the two light ones do not.
242
+ * why 11 of the 13 chromatic presets carry white and exactly the two light ones
243
+ * do not. (`mono` sits outside this rule — see MONOCHROME_FILL_TONE.)
213
244
  */
214
245
  function whiteLabelTone(palette, seedTone, isDark) {
215
246
  // LIGHT: every fill comes down, no exemption. On a near-white page a bright
@@ -301,17 +332,22 @@ function buildPolicyTokens(seedHex, isDark, roles, pinned = {}) {
301
332
  // tone <= 49, so that is the ceiling — in dark as much as in light. Letting the
302
333
  // dark fill sit at the seed's own tone instead makes it brighter, but every one
303
334
  // of those labels turns black, which costs more than the brightness buys.
335
+ const monochrome = seed.chroma <= MONOCHROME_MAX_CHROMA;
304
336
  // DARK keys off the seed itself so the fill IS the brand hex; LIGHT uses the
305
337
  // max-chroma palette, which is what stops a deepened fill from going pastel.
306
- const brandPalette = isDark ? _tonalPalette.TonalPalette.fromInt((0, _index.argbFromHex)(seedHex)) : _tonalPalette.TonalPalette.fromHueAndChroma(seed.hue, 200);
307
- const primary = fillPair(brandPalette, whiteLabelTone(brandPalette, seed.tone, isDark));
338
+ // A monochrome seed has no chroma to preserve either way, and its fill goes to
339
+ // the far end of the scale rather than the white-label ceiling: a mid-grey
340
+ // button reads as disabled, where near-black on white reads as the primary
341
+ // action.
342
+ const brandPalette = monochrome ? _tonalPalette.TonalPalette.fromHueAndChroma(0, 0) : isDark ? _tonalPalette.TonalPalette.fromInt((0, _index.argbFromHex)(seedHex)) : _tonalPalette.TonalPalette.fromHueAndChroma(seed.hue, 200);
343
+ const primary = fillPair(brandPalette, monochrome ? isDark ? MONOCHROME_FILL_TONE.dark : MONOCHROME_FILL_TONE.light : whiteLabelTone(brandPalette, seed.tone, isDark));
308
344
  const tokens = {
309
345
  '--primary': primary.fill,
310
346
  '--primary-foreground': primary.foreground,
311
347
  // The accent legible as TEXT on the page surface — the job M3's `primary`
312
348
  // does correctly, and which the fill must stop trying to do at the same time.
313
349
  '--primary-text': roles.primary,
314
- '--primary-subtle': rgba(_tonalPalette.TonalPalette.fromHueAndChroma(seed.hue, 200).tone(SUBTLE_SOURCE_TONE), isDark ? SUBTLE_ALPHA.dark : SUBTLE_ALPHA.light),
350
+ '--primary-subtle': rgba(_tonalPalette.TonalPalette.fromHueAndChroma(seed.hue, monochrome ? 0 : 200).tone(SUBTLE_SOURCE_TONE), isDark ? SUBTLE_ALPHA.dark : SUBTLE_ALPHA.light),
315
351
  '--ring': roles.primary,
316
352
  // `--card` is the one surface MAPPING the policy changes.
317
353
  // `surfaceContainerLowest` is M3's RECESSED step: in dark it sits at tone 4
@@ -321,7 +357,7 @@ function buildPolicyTokens(seedHex, isDark, roles, pinned = {}) {
321
357
  '--card': isDark ? roles.surfaceContainer : roles.surfaceContainerLowest,
322
358
  // A touch darker than M3's page background: near-white reads as unfinished
323
359
  // next to the card, and the extra step gives the surface ramp somewhere to sit.
324
- '--background': rgb(_tonalPalette.TonalPalette.fromHueAndChroma(seed.hue, 10).tone(isDark ? 4 : 96)),
360
+ '--background': rgb(_tonalPalette.TonalPalette.fromHueAndChroma(seed.hue, monochrome ? 0 : 10).tone(isDark ? 4 : 96)),
325
361
  // `--accent` stays what every consumer actually uses it for: a hover surface.
326
362
  '--accent': roles.surfaceContainerHigh,
327
363
  '--accent-foreground': roles.onSurfaceVariant
@@ -332,9 +368,11 @@ function buildPolicyTokens(seedHex, isDark, roles, pinned = {}) {
332
368
  const hue = pin !== undefined ? _hct.Hct.fromInt((0, _index.argbFromHex)(pin)).hue : hues[role];
333
369
  // One hue, three palettes. Every member shares it, so the family still reads
334
370
  // as one colour; only how loudly each speaks differs.
335
- const fillPalette = _tonalPalette.TonalPalette.fromHueAndChroma(hue, ACCENT_CHROMA);
336
- const textPalette = _tonalPalette.TonalPalette.fromHueAndChroma(hue, TEXT_CHROMA);
337
- const vividPalette = _tonalPalette.TonalPalette.fromHueAndChroma(hue, 200);
371
+ // A monochrome theme has no accents to rotate to; the trio becomes a ladder
372
+ // of greys, which still separates a standout button from a quiet one.
373
+ const fillPalette = _tonalPalette.TonalPalette.fromHueAndChroma(hue, monochrome ? 0 : ACCENT_CHROMA);
374
+ const textPalette = _tonalPalette.TonalPalette.fromHueAndChroma(hue, monochrome ? 0 : TEXT_CHROMA);
375
+ const vividPalette = _tonalPalette.TonalPalette.fromHueAndChroma(hue, monochrome ? 0 : 200);
338
376
  // DARK sits at the hue's peak tone, floored by the same rule the brand fill
339
377
  // uses: some hues peak dark (violet at 35), and rendering them there gives a
340
378
  // slab rather than a highlight. LIGHT goes deep like every other fill, but
@@ -350,7 +388,12 @@ function buildPolicyTokens(seedHex, isDark, roles, pinned = {}) {
350
388
  // black. The accent chroma cap already keeps these hues out of neon territory,
351
389
  // and the hue itself is the caller's brand rather than ours to move. The
352
390
  // analyzer still runs where it was designed to, inside `color-roles`.
353
- const tone = accentTone(hue, isDark);
391
+ // Monochrome keeps `tertiary` AT the brand fill rather than a step off it:
392
+ // tertiary is what a compose button and a FAB paint with, and those are the
393
+ // primary action — a step of grey between them and `primary` reads as two
394
+ // buttons disagreeing, not as hierarchy. `secondary` carries the whole
395
+ // demotion instead.
396
+ const tone = monochrome ? role === 'tertiary' ? isDark ? MONOCHROME_FILL_TONE.dark : MONOCHROME_FILL_TONE.light : isDark ? MONOCHROME_SECONDARY_TONE.dark : MONOCHROME_SECONDARY_TONE.light : accentTone(hue, isDark);
354
397
  const pair = fillPair(fillPalette, tone);
355
398
  tokens[`--${role}`] = pair.fill;
356
399
  tokens[`--${role}-foreground`] = pair.foreground;
@@ -362,7 +405,8 @@ function buildPolicyTokens(seedHex, isDark, roles, pinned = {}) {
362
405
  // The old ramp drew all five from the primary/secondary/tertiary trio, which
363
406
  // spans ~35 degrees, so adjacent series were indistinguishable.
364
407
  for (let i = 0; i < 5; i += 1) {
365
- tokens[`--chart-${i + 1}`] = rgb(_tonalPalette.TonalPalette.fromHueAndChroma((seed.hue + i * 72) % 360, 60).tone(isDark ? 72 : 48));
408
+ // Greyscale charts spread by TONE instead of hue the only axis left.
409
+ tokens[`--chart-${i + 1}`] = monochrome ? rgb(_tonalPalette.TonalPalette.fromHueAndChroma(0, 0).tone(isDark ? 40 + i * 13 : 78 - i * 13)) : rgb(_tonalPalette.TonalPalette.fromHueAndChroma((seed.hue + i * 72) % 360, 60).tone(isDark ? 72 : 48));
366
410
  }
367
411
 
368
412
  // The status family, themed per mode. The four frozen hexes it replaces all
@@ -1 +1 @@
1
- {"version":3,"names":["_index","require","_hct","_tonalPalette","_colorUtils","STATUS_SEEDS","exports","success","error","warning","info","AA","rgb","argb","redFromArgb","greenFromArgb","blueFromArgb","rgba","alpha","contrastOf","onWhite","channel","v","c","Math","pow","luminance","foregroundFor","noLegibleForeground","LIGHT_FILL_TONE","DARK_FILL_TONE","TONE_BUDGET","DARK_SEED_FLOOR","DARK_ACCENT_FLOOR","ACCENT_CHROMA","TEXT_TONE","light","dark","TEXT_CHROMA","SUBTLE_SOURCE_TONE","SUBTLE_ALPHA","SPLIT_ROTATIONS","VIVID_SNAP_WINDOW","VIVID_SNAP_MIN_GAIN","MIN_ACCENT_SEPARATION","DESTRUCTIVE_PROXIMITY","hueDistance","a","b","d","abs","min","peakTone","hue","palette","TonalPalette","fromHueAndChroma","bestTone","bestChroma","tone","chroma","Hct","fromInt","peakChroma","vividHueNear","baseChroma","bestHue","delta","candidate","whiteLabelTone","seedTone","isDark","max","accentTone","peak","fillPair","startTone","fill","foreground","accentHues","seedHue","firstRotation","secondRotation","geometricA","geometricB","geometricStandout","quiet","snapped","standout","errorHue","argbFromHex","secondary","tertiary","buildPolicyTokens","seedHex","roles","pinned","seed","brandPalette","primary","tokens","surfaceContainer","surfaceContainerLowest","surfaceContainerHigh","onSurfaceVariant","hues","role","pin","undefined","fillPalette","textPalette","vividPalette","pair","i","hex","Object","entries","status"],"sourceRoot":"../../../src","sources":["theme/color-policy.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_index","require","_hct","_tonalPalette","_colorUtils","STATUS_SEEDS","exports","success","error","warning","info","AA","rgb","argb","redFromArgb","greenFromArgb","blueFromArgb","rgba","alpha","contrastOf","onWhite","channel","v","c","Math","pow","luminance","foregroundFor","noLegibleForeground","LIGHT_FILL_TONE","DARK_FILL_TONE","TONE_BUDGET","DARK_SEED_FLOOR","DARK_ACCENT_FLOOR","ACCENT_CHROMA","TEXT_TONE","light","dark","TEXT_CHROMA","SUBTLE_SOURCE_TONE","SUBTLE_ALPHA","MONOCHROME_MAX_CHROMA","isColourlessSeed","seedHex","Hct","fromInt","argbFromHex","chroma","MONOCHROME_FILL_TONE","MONOCHROME_SECONDARY_TONE","SPLIT_ROTATIONS","VIVID_SNAP_WINDOW","VIVID_SNAP_MIN_GAIN","MIN_ACCENT_SEPARATION","DESTRUCTIVE_PROXIMITY","hueDistance","a","b","d","abs","min","peakTone","hue","palette","TonalPalette","fromHueAndChroma","bestTone","bestChroma","tone","peakChroma","vividHueNear","baseChroma","bestHue","delta","candidate","whiteLabelTone","seedTone","isDark","max","accentTone","peak","fillPair","startTone","fill","foreground","accentHues","seedHue","firstRotation","secondRotation","geometricA","geometricB","geometricStandout","quiet","snapped","standout","errorHue","secondary","tertiary","buildPolicyTokens","roles","pinned","seed","monochrome","brandPalette","primary","tokens","surfaceContainer","surfaceContainerLowest","surfaceContainerHigh","onSurfaceVariant","hues","role","pin","undefined","fillPalette","textPalette","vividPalette","pair","i","hex","Object","entries","status"],"sourceRoot":"../../../src","sources":["theme/color-policy.ts"],"mappings":"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","ignoreList":[]}
@@ -24,7 +24,7 @@ exports.hexToAppColorName = hexToAppColorName;
24
24
  * resolved `--token -> value` record that `getPresetVars` produces).
25
25
  */
26
26
 
27
- const APP_COLOR_NAMES = exports.APP_COLOR_NAMES = ['teal', 'blue', 'green', 'amber', 'yellow', 'red', 'purple', 'pink', 'sky', 'orange', 'mint', 'oxy', 'faircoin'];
27
+ const APP_COLOR_NAMES = exports.APP_COLOR_NAMES = ['teal', 'blue', 'green', 'amber', 'yellow', 'red', 'purple', 'pink', 'sky', 'orange', 'mint', 'oxy', 'faircoin', 'mono'];
28
28
 
29
29
  /** Premium-exclusive presets, hidden from the standard color picker. */
30
30
  const PREMIUM_COLOR_NAMES = exports.PREMIUM_COLOR_NAMES = ['oxy', 'faircoin'];
@@ -41,7 +41,8 @@ const HEX_TO_APP_COLOR = exports.HEX_TO_APP_COLOR = {
41
41
  '#f97316': 'orange',
42
42
  '#14b8a6': 'mint',
43
43
  '#c46ede': 'oxy',
44
- '#9ffb50': 'faircoin'
44
+ '#9ffb50': 'faircoin',
45
+ '#000000': 'mono'
45
46
  };
46
47
  function hexToAppColorName(hex) {
47
48
  return HEX_TO_APP_COLOR[hex.toLowerCase()] ?? 'teal';
@@ -118,6 +119,17 @@ const APP_COLOR_PRESETS = exports.APP_COLOR_PRESETS = {
118
119
  name: 'faircoin',
119
120
  hex: '#9ffb50',
120
121
  variant: 'vivid'
122
+ },
123
+ /**
124
+ * No colour at all — the black-and-white theme. Its seed carries zero chroma,
125
+ * which is the whole mechanism: the policy derives a greyscale palette from any
126
+ * seed with none, so a user who picks a grey in the colour wheel lands here too
127
+ * rather than on a nearly-grey approximation.
128
+ */
129
+ mono: {
130
+ name: 'mono',
131
+ hex: '#000000',
132
+ variant: 'monochrome'
121
133
  }
122
134
  };
123
135
  //# sourceMappingURL=color-presets.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["APP_COLOR_NAMES","exports","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;;AAuBA;AACA;AACA;AACA;AACA;AACA;;AAGO,MAAMA,eAAwC,GAAAC,OAAA,CAAAD,eAAA,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;AACO,MAAME,mBAA4C,GAAAD,OAAA,CAAAC,mBAAA,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC;AAExE,MAAMC,gBAA8C,GAAAF,OAAA,CAAAE,gBAAA,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;AAEM,SAASC,iBAAiBA,CAACC,GAAW,EAAgB;EAC3D,OAAOF,gBAAgB,CAACE,GAAG,CAACC,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM;AACtD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,iBAAuD,GAAAN,OAAA,CAAAM,iBAAA,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":[]}
1
+ {"version":3,"names":["APP_COLOR_NAMES","exports","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","mono"],"sourceRoot":"../../../src","sources":["theme/color-presets.ts"],"mappings":";;;;;;;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAuBA;AACA;AACA;AACA;AACA;AACA;;AAGO,MAAMA,eAAwC,GAAAC,OAAA,CAAAD,eAAA,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,EAAE,MAAM,CAAC;;AAEjL;AACO,MAAME,mBAA4C,GAAAD,OAAA,CAAAC,mBAAA,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC;AAExE,MAAMC,gBAA8C,GAAAF,OAAA,CAAAE,gBAAA,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,UAAU;EACrB,SAAS,EAAE;AACb,CAAC;AAEM,SAASC,iBAAiBA,CAACC,GAAW,EAAgB;EAC3D,OAAOF,gBAAgB,CAACE,GAAG,CAACC,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM;AACtD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,iBAAuD,GAAAN,OAAA,CAAAM,iBAAA,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,CAAC;EAChE;AACF;AACA;AACA;AACA;AACA;EACEa,IAAI,EAAE;IAAEd,IAAI,EAAE,MAAM;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAa;AAC9D,CAAC","ignoreList":[]}
@@ -84,7 +84,11 @@ function roleColorsToPresetTokens(r) {
84
84
  function buildSeedScopeVars(options) {
85
85
  const roles = (0, _index.generateRoleColors)({
86
86
  seed: options.seed,
87
- variant: options.variant ?? 'vivid',
87
+ // A seed with no chroma has no colour for a chromatic variant to work with,
88
+ // so it takes the greyscale scheme unless the caller asked for something else.
89
+ // This is what makes a grey picked in a colour wheel produce the SAME
90
+ // black-and-white theme as the `mono` preset instead of a tinted near-grey.
91
+ variant: options.variant ?? ((0, _colorPolicy.isColourlessSeed)(options.seed) ? 'monochrome' : 'vivid'),
88
92
  isDark: options.mode === 'dark',
89
93
  contrastLevel: options.contrastLevel ?? 0,
90
94
  secondarySeed: options.secondarySeed,