@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,210 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * expo-router bindings for the in-screen tab strip.
5
+ *
6
+ * This subpath (`@oxyhq/bloom/tabs/expo-router`) is the ONLY place in the tabs
7
+ * feature allowed to import `expo-router`, which is why it is a separate entry:
8
+ * the core `@oxyhq/bloom/tabs` stays usable in an app with a different router,
9
+ * or none, and the optional peer is never pulled into a bundle that does not
10
+ * ask for it. Same split as `tab-bar` / `tab-bar/expo-router` and
11
+ * `scroll` / `scroll/expo-router`.
12
+ *
13
+ * Everything routing-shaped lives here on purpose: which tab the route means,
14
+ * what a committed swipe navigates to, and which links to warm. The strip
15
+ * itself stays presentational and knows only about measured geometry.
16
+ */
17
+ import { useCallback, useEffect, useMemo, useRef } from 'react';
18
+ import { Gesture, GestureDetector } from 'react-native-gesture-handler';
19
+ import { runOnJS } from 'react-native-reanimated';
20
+ import { router, usePathname } from 'expo-router';
21
+ import { Tabs, TabsTrigger } from "../Tabs.js";
22
+ import { jsx as _jsx } from "react/jsx-runtime";
23
+ /**
24
+ * Resolve which item the current route belongs to.
25
+ *
26
+ * LONGEST matching prefix, on a segment boundary — not an exact match. All
27
+ * three properties matter:
28
+ *
29
+ * - A prefix is needed because a tab may own a subtree (`/feeds/1/topics` and
30
+ * anything under it), and an exact match would drop the underline the moment
31
+ * the user goes one level deeper.
32
+ * - LONGEST is needed because the default tab's href is a prefix of every
33
+ * sibling's (`/@ana` vs `/@ana/replies`), so a first-match rule would light
34
+ * up the default tab on every tab.
35
+ * - The segment boundary is what stops `/feeds/12` from matching `/feeds/1`.
36
+ *
37
+ * Returns `undefined` when nothing matches, which is a real state — a strip
38
+ * rendered by a LAYOUT keeps rendering while a child route outside the tab set
39
+ * is showing — and leaves the underline hidden rather than parked on a lie.
40
+ */
41
+ function matchActiveValue(items, pathname) {
42
+ let best;
43
+ for (const item of items) {
44
+ // `Href` is a string or an object; only a string form can be compared to a
45
+ // pathname, and an object form describes params we cannot resolve here.
46
+ if (typeof item.href !== 'string') continue;
47
+ // Compare paths only: a query string describes what the tab shows, not
48
+ // which tab it is, and a trailing slash is the same route either way.
49
+ const [path = ''] = item.href.split('?');
50
+ const href = path.replace(/\/$/, '');
51
+ const isMatch = pathname === href || pathname.startsWith(`${href}/`);
52
+ if (!isMatch) continue;
53
+ if (!best || href.length > best.length) {
54
+ best = {
55
+ value: item.value,
56
+ length: href.length
57
+ };
58
+ }
59
+ }
60
+ return best?.value;
61
+ }
62
+
63
+ /**
64
+ * A tab strip whose selection IS the route.
65
+ *
66
+ * Render it in the LAYOUT that owns the tabs, above the `<Slot/>` that renders
67
+ * them — not inside the tab screens themselves. That placement is the whole
68
+ * point, and it is load-bearing twice over: a strip inside the screens is
69
+ * unmounted and rebuilt by every navigation, so its underline has nothing to
70
+ * animate from and the chrome blanks while the incoming route's chunk loads;
71
+ * and a GESTURE inside the screens would be destroyed by the very navigation it
72
+ * commits, mid-release.
73
+ *
74
+ * ```tsx
75
+ * // app/(app)/[username]/_layout.tsx
76
+ * <RouterTabs
77
+ * items={[
78
+ * { value: 'posts', label: 'Posts', href: `/${username}` },
79
+ * { value: 'replies', label: 'Replies', href: `/${username}/replies` },
80
+ * ]}
81
+ * />
82
+ * <Slot />
83
+ * ```
84
+ */
85
+ export function RouterTabs({
86
+ items,
87
+ onReselect,
88
+ swipeEnabled = true,
89
+ ...tabsProps
90
+ }) {
91
+ const pathname = usePathname();
92
+ const activeValue = useMemo(() => matchActiveValue(items, pathname), [items, pathname]);
93
+ const dragRef = useRef(null);
94
+ // What releasing right now would commit. A ref rather than state: it is
95
+ // written on every frame of the drag and read once, and re-rendering the
96
+ // strip mid-gesture would fight the animation the gesture is driving.
97
+ const pendingRef = useRef(null);
98
+ const navigateTo = useCallback(value => {
99
+ const target = items.find(item => item.value === value);
100
+ if (!target) return;
101
+ // PUSH, not replace: a history entry per tab is what makes Back return to
102
+ // the tab the reader came from instead of leaving the screen entirely.
103
+ router.push(target.href);
104
+ }, [items]);
105
+ const handlePress = useCallback(item => {
106
+ if (item.value === activeValue) {
107
+ onReselect?.(item.value);
108
+ return;
109
+ }
110
+ navigateTo(item.value);
111
+ }, [activeValue, onReselect, navigateTo]);
112
+ const onDrag = useCallback(translationX => {
113
+ pendingRef.current = dragRef.current?.drag(translationX) ?? null;
114
+ }, []);
115
+
116
+ // `onEnd` does not fire for every terminated gesture, and `onFinalize` fires
117
+ // for all of them — including after `onEnd`. Guarding on the ref being
118
+ // non-null is what makes the second call a no-op instead of a double commit.
119
+ const releasedRef = useRef(true);
120
+ const onRelease = useCallback(() => {
121
+ if (releasedRef.current) return;
122
+ releasedRef.current = true;
123
+ const committed = pendingRef.current;
124
+ pendingRef.current = null;
125
+ // The underline commits first and instantly: it lives in the layout, it
126
+ // survives the swap, and it is the honest signal the gesture was accepted.
127
+ // The content area arrives when its chunk does.
128
+ dragRef.current?.release(committed);
129
+ if (committed !== null) navigateTo(committed);
130
+ }, [navigateTo]);
131
+ const onBegin = useCallback(() => {
132
+ releasedRef.current = false;
133
+ }, []);
134
+ const panGesture = useMemo(() => Gesture.Pan()
135
+ // Horizontal intent only. This is a hint to the gesture system and is
136
+ // NOT what protects vertical scrolling on web — see `touchAction` below.
137
+ .activeOffsetX([-12, 12]).failOffsetY([-12, 12]).onBegin(() => {
138
+ runOnJS(onBegin)();
139
+ }).onUpdate(event => {
140
+ runOnJS(onDrag)(event.translationX);
141
+ }).onFinalize(() => {
142
+ runOnJS(onRelease)();
143
+ }), [onBegin, onDrag, onRelease]);
144
+
145
+ // Warm every OTHER tab's async chunk. That fetch is the ~300ms the content
146
+ // area would otherwise spend empty after a commit, and a swipe offers no
147
+ // hover to warm on, so it is done up front rather than on interaction.
148
+ //
149
+ // `router.prefetch` — the public imperative API (declared in expo-router's
150
+ // `global-state/router.d.ts`) — rather than wrapping each trigger in
151
+ // `<Link prefetch asChild>`. Both reasons are about the WRAPPER, not about
152
+ // prefetching: `asChild` is Radix's `Slot`, which COMPOSES event handlers, so
153
+ // the trigger's own `onPress` and the link's navigation would both run — and
154
+ // the link's push knows nothing about `onReselect`, so re-tapping the active
155
+ // tab would push a duplicate entry and make Back appear to do nothing. It
156
+ // also injects an `href` a `Pressable` ignores. The prefetching itself is
157
+ // identical: `<Link prefetch>` renders `<Prefetch href/>` beside its element
158
+ // and does nothing else.
159
+ //
160
+ // Known trade: a real `<Link>` would render a web anchor, which is what gives
161
+ // middle-click and open-in-new-tab. A tab strip arguably wants that; getting
162
+ // both needs the trigger to render an anchor itself, which is a change to the
163
+ // core rather than to this file.
164
+ useEffect(() => {
165
+ for (const item of items) {
166
+ if (item.value === activeValue || item.disabled) continue;
167
+ router.prefetch(item.href);
168
+ }
169
+ }, [items, activeValue]);
170
+ const strip =
171
+ /*#__PURE__*/
172
+ // `hasSelection` is what stops the underline asserting a tab while a
173
+ // NON-TAB sibling route is showing — the layout that renders this strip
174
+ // renders those too (a profile's `/followers` beside its tab routes).
175
+ _jsx(Tabs, {
176
+ ...tabsProps,
177
+ ref: dragRef,
178
+ hasSelection: activeValue !== undefined,
179
+ children: items.map(item => /*#__PURE__*/_jsx(TabsTrigger, {
180
+ value: item.value,
181
+ label: item.label,
182
+ icon: item.icon,
183
+ count: item.count,
184
+ disabled: item.disabled
185
+ // Focus, never a press, is what drives the underline — so a deep
186
+ // link, a browser Back and a back gesture animate exactly like a tap.
187
+ ,
188
+ isFocused: item.value === activeValue,
189
+ onPress: () => handlePress(item)
190
+ }, item.value))
191
+ });
192
+ if (!swipeEnabled) return strip;
193
+ return (
194
+ /*#__PURE__*/
195
+ // `touchAction="pan-y"` is MANDATORY and is the landmine of this file.
196
+ // RNGH sets the detector's view to `touch-action: none` on web
197
+ // (`GestureHandlerWebDelegate.js`), which disables browser-native VERTICAL
198
+ // scrolling on that element. `failOffsetY` above does not protect against
199
+ // it: that is a JS decision taken after `touch-action` has already told the
200
+ // browser not to scroll. Removing this prop is silent on native and breaks
201
+ // scrolling on mobile web.
202
+ _jsx(GestureDetector, {
203
+ gesture: panGesture,
204
+ touchAction: "pan-y",
205
+ children: strip
206
+ })
207
+ );
208
+ }
209
+ RouterTabs.displayName = 'RouterTabs';
210
+ //# sourceMappingURL=RouterTabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useMemo","useRef","Gesture","GestureDetector","runOnJS","router","usePathname","Tabs","TabsTrigger","jsx","_jsx","matchActiveValue","items","pathname","best","item","href","path","split","replace","isMatch","startsWith","length","value","RouterTabs","onReselect","swipeEnabled","tabsProps","activeValue","dragRef","pendingRef","navigateTo","target","find","push","handlePress","onDrag","translationX","current","drag","releasedRef","onRelease","committed","release","onBegin","panGesture","Pan","activeOffsetX","failOffsetY","onUpdate","event","onFinalize","disabled","prefetch","strip","ref","hasSelection","undefined","children","map","label","icon","count","isFocused","onPress","gesture","touchAction","displayName"],"sourceRoot":"../../../../src","sources":["tabs/expo-router/RouterTabs.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Entry for `@oxyhq/bloom/tabs/expo-router`. The component lives in a sibling
5
+ * module because this file is the published entry path and must stay stable;
6
+ * the split also keeps the router binding in one place, which is what the
7
+ * optional-peer allowlist asserts about.
8
+ */
9
+ export { RouterTabs } from "./RouterTabs.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["RouterTabs"],"sourceRoot":"../../../../src","sources":["tabs/expo-router/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,UAAU,QAAQ,iBAAc","ignoreList":[]}
@@ -12,7 +12,7 @@
12
12
  export { Hct } from "./hct.js";
13
13
  export { TonalPalette } from "./tonal-palette.js";
14
14
  export { DynamicScheme } from "./dynamic-scheme.js";
15
- export { buildScheme, schemeVibrant, schemeExpressive, schemeTonalSpot, schemeNeutral } from "./scheme-variants.js";
15
+ export { buildScheme, schemeVibrant, schemeExpressive, schemeTonalSpot, schemeNeutral, schemeMonochrome } from "./scheme-variants.js";
16
16
  export { Roles } from "./color-roles.js";
17
17
  export { ColorRole } from "./color-role.js";
18
18
  export { quantizeWu } from "./quantizer-wu.js";
@@ -1 +1 @@
1
- {"version":3,"names":["Hct","TonalPalette","DynamicScheme","buildScheme","schemeVibrant","schemeExpressive","schemeTonalSpot","schemeNeutral","Roles","ColorRole","quantizeWu","score","quantizeImage","seedsFromImagePixels","seedHexFromImagePixels","argbFromRgb","redFromArgb","greenFromArgb","blueFromArgb","argbFromHex","hex","h","replace","v","length","parseInt","hexFromArgb","argb","r","toString","padStart","g","b","generateRoleColors","opts","scheme","variant","fromInt","seed","isDark","contrastLevel","secondarySource","secondarySeed","undefined","tertiarySource","tertiarySeed","out","name","Object","keys","getArgb"],"sourceRoot":"../../../../src","sources":["theme/color-engine/index.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Hct","TonalPalette","DynamicScheme","buildScheme","schemeVibrant","schemeExpressive","schemeTonalSpot","schemeNeutral","schemeMonochrome","Roles","ColorRole","quantizeWu","score","quantizeImage","seedsFromImagePixels","seedHexFromImagePixels","argbFromRgb","redFromArgb","greenFromArgb","blueFromArgb","argbFromHex","hex","h","replace","v","length","parseInt","hexFromArgb","argb","r","toString","padStart","g","b","generateRoleColors","opts","scheme","variant","fromInt","seed","isDark","contrastLevel","secondarySource","secondarySeed","undefined","tertiarySource","tertiarySeed","out","name","Object","keys","getArgb"],"sourceRoot":"../../../../src","sources":["theme/color-engine/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,GAAG,QAAQ,UAAO;AAC3B,SAASC,YAAY,QAAQ,oBAAiB;AAC9C,SAASC,aAAa,QAAQ,qBAAkB;AAChD,SAASC,WAAW,EAAEC,aAAa,EAAEC,gBAAgB,EAAEC,eAAe,EAAEC,aAAa,EAAEC,gBAAgB,QAAQ,sBAAmB;AAElI,SAASC,KAAK,QAAQ,kBAAe;AAErC,SAASC,SAAS,QAAQ,iBAAc;AACxC,SAASC,UAAU,QAAQ,mBAAgB;AAC3C,SAASC,KAAK,QAAQ,YAAS;AAE/B,SAASC,aAAa,EAAEC,oBAAoB,EAAEC,sBAAsB,QAAQ,sBAAmB;AAC/F,SAASC,WAAW,EAAEC,WAAW,EAAEC,aAAa,EAAEC,YAAY,QAAQ,kBAAe;AAErF,SAASA,YAAY,EAAED,aAAa,EAAED,WAAW,QAAQ,kBAAe;AACxE,SAASR,KAAK,QAAuB,kBAAe;AACpD,SAAST,GAAG,QAAQ,UAAO;AAC3B,SAASG,WAAW,QAA4B,sBAAmB;;AAEnE;AACA,OAAO,SAASiB,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;AACA,OAAO,SAASG,WAAWA,CAACC,IAAY,EAAU;EAChD,MAAMC,CAAC,GAAGZ,WAAW,CAACW,IAAI,CAAC,CAACE,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EACzD,MAAMC,CAAC,GAAGd,aAAa,CAACU,IAAI,CAAC,CAACE,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAC3D,MAAME,CAAC,GAAGd,YAAY,CAACS,IAAI,CAAC,CAACE,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAC1D,OAAO,IAAIF,CAAC,GAAGG,CAAC,GAAGC,CAAC,EAAE;AACxB;;AAEA;;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAACC,IAAqB,EAAc;EACpE,MAAMC,MAAM,GAAGjC,WAAW,CACxBgC,IAAI,CAACE,OAAO,IAAI,SAAS,EACzBrC,GAAG,CAACsC,OAAO,CAAClB,WAAW,CAACe,IAAI,CAACI,IAAI,CAAC,CAAC,EACnCJ,IAAI,CAACK,MAAM,IAAI,KAAK,EACpBL,IAAI,CAACM,aAAa,IAAI,CAAC,EACvB;IACEC,eAAe,EACbP,IAAI,CAACQ,aAAa,KAAKC,SAAS,GAC5B5C,GAAG,CAACsC,OAAO,CAAClB,WAAW,CAACe,IAAI,CAACQ,aAAa,CAAC,CAAC,GAC5CC,SAAS;IACfC,cAAc,EACZV,IAAI,CAACW,YAAY,KAAKF,SAAS,GAC3B5C,GAAG,CAACsC,OAAO,CAAClB,WAAW,CAACe,IAAI,CAACW,YAAY,CAAC,CAAC,GAC3CF;EACR,CACF,CAAC;EACD,MAAMG,GAAG,GAAG,CAAC,CAAe;EAC5B,KAAK,MAAMC,IAAI,IAAIC,MAAM,CAACC,IAAI,CAACzC,KAAK,CAAC,EAAgB;IACnD,MAAMmB,IAAI,GAAGnB,KAAK,CAACuC,IAAI,CAAC,CAACG,OAAO,CAACf,MAAM,CAAC;IACxCW,GAAG,CAACC,IAAI,CAAC,GAAG,OAAO/B,WAAW,CAACW,IAAI,CAAC,IAAIV,aAAa,CAACU,IAAI,CAAC,IAAIT,YAAY,CAACS,IAAI,CAAC,GAAG;EACtF;EACA,OAAOmB,GAAG;AACZ","ignoreList":[]}
@@ -119,12 +119,39 @@ export function schemeNeutral(source, isDark, contrastLevel, accents = {}) {
119
119
  neutralVariantPalette: TonalPalette.fromHueAndChroma(source.hue, 2.0)
120
120
  });
121
121
  }
122
+
123
+ /**
124
+ * No colour at all: every palette is greyscale, so the seed's hue is irrelevant
125
+ * and only its tone survives. This is the variant the `isMonochrome` role
126
+ * branches in `color-roles` were written for — they push `primary` to the far end
127
+ * of the scale (tone 0 on a light page, 100 on a dark one) rather than the
128
+ * mid-tone the chromatic curves would pick, which is what keeps a black-and-white
129
+ * theme from reading as a grey one.
130
+ *
131
+ * A pinned accent is ignored on purpose: honouring it would put one coloured
132
+ * family back into a scheme whose entire point is that nothing is coloured.
133
+ */
134
+ export function schemeMonochrome(source, isDark, contrastLevel) {
135
+ const grey = () => TonalPalette.fromHueAndChroma(source.hue, 0);
136
+ return new DynamicScheme({
137
+ sourceColorArgb: source.toInt(),
138
+ variant: Variant.MONOCHROME,
139
+ contrastLevel,
140
+ isDark,
141
+ primaryPalette: grey(),
142
+ secondaryPalette: grey(),
143
+ tertiaryPalette: grey(),
144
+ neutralPalette: grey(),
145
+ neutralVariantPalette: grey()
146
+ });
147
+ }
122
148
  const BUILDERS = {
123
149
  vivid: schemeVivid,
124
150
  vibrant: schemeVibrant,
125
151
  expressive: schemeExpressive,
126
152
  tonalSpot: schemeTonalSpot,
127
- neutral: schemeNeutral
153
+ neutral: schemeNeutral,
154
+ monochrome: schemeMonochrome
128
155
  };
129
156
 
130
157
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["DynamicScheme","sanitizeDegreesDouble","TonalPalette","Variant","accentPalette","source","derived","undefined","fromInt","toInt","VIBRANT_HUES","VIBRANT_SECONDARY_ROTATIONS","VIBRANT_TERTIARY_ROTATIONS","EXPRESSIVE_HUES","EXPRESSIVE_SECONDARY_ROTATIONS","EXPRESSIVE_TERTIARY_ROTATIONS","schemeVibrant","isDark","contrastLevel","accents","sourceColorArgb","variant","VIBRANT","primaryPalette","fromHueAndChroma","hue","secondaryPalette","secondarySource","getRotatedHue","tertiaryPalette","tertiarySource","neutralPalette","neutralVariantPalette","schemeVivid","schemeExpressive","EXPRESSIVE","schemeTonalSpot","TONAL_SPOT","schemeNeutral","NEUTRAL","BUILDERS","vivid","vibrant","expressive","tonalSpot","neutral","buildScheme"],"sourceRoot":"../../../../src","sources":["theme/color-engine/scheme-variants.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["DynamicScheme","sanitizeDegreesDouble","TonalPalette","Variant","accentPalette","source","derived","undefined","fromInt","toInt","VIBRANT_HUES","VIBRANT_SECONDARY_ROTATIONS","VIBRANT_TERTIARY_ROTATIONS","EXPRESSIVE_HUES","EXPRESSIVE_SECONDARY_ROTATIONS","EXPRESSIVE_TERTIARY_ROTATIONS","schemeVibrant","isDark","contrastLevel","accents","sourceColorArgb","variant","VIBRANT","primaryPalette","fromHueAndChroma","hue","secondaryPalette","secondarySource","getRotatedHue","tertiaryPalette","tertiarySource","neutralPalette","neutralVariantPalette","schemeVivid","schemeExpressive","EXPRESSIVE","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":[]}
@@ -125,6 +125,35 @@ const SUBTLE_ALPHA = {
125
125
  dark: 0.24
126
126
  };
127
127
 
128
+ /**
129
+ * A seed at or below this chroma has no colour to derive from, so the whole
130
+ * palette goes greyscale — the black-and-white theme. Keyed on the seed rather
131
+ * than on a flag, so picking any grey in a colour wheel lands there too instead
132
+ * of on a nearly-grey approximation of it.
133
+ */
134
+ const MONOCHROME_MAX_CHROMA = 6;
135
+
136
+ /**
137
+ * Whether a seed carries no colour to derive a theme from — the one authority for
138
+ * that question, so the policy and the scheme choice can never disagree about a
139
+ * given seed and produce a grey palette wearing chromatic surfaces.
140
+ */
141
+ export function isColourlessSeed(seedHex) {
142
+ return Hct.fromInt(argbFromHex(seedHex)).chroma <= MONOCHROME_MAX_CHROMA;
143
+ }
144
+
145
+ /** Where a monochrome brand fill sits: near-black on a white page, near-white on a black one. */
146
+ const MONOCHROME_FILL_TONE = {
147
+ light: 12,
148
+ dark: 94
149
+ };
150
+
151
+ /** The quiet member of a monochrome trio — the only one that is actually grey. */
152
+ const MONOCHROME_SECONDARY_TONE = {
153
+ light: 36,
154
+ dark: 72
155
+ };
156
+
128
157
  /** Split-complementary: the two accents sit either side of the seed's complement. */
129
158
  const SPLIT_ROTATIONS = [150, 210];
130
159
 
@@ -204,7 +233,8 @@ function vividHueNear(hue) {
204
233
  * ceasing to be itself: yellow turns to brown and lime to moss. Those keep their
205
234
  * own tone and take a black label instead, which is what a bright yellow button
206
235
  * wants anyway. The 25-tone budget is what separates the two cases, and it is
207
- * why 11 of the 13 presets carry white and exactly the two light ones do not.
236
+ * why 11 of the 13 chromatic presets carry white and exactly the two light ones
237
+ * do not. (`mono` sits outside this rule — see MONOCHROME_FILL_TONE.)
208
238
  */
209
239
  function whiteLabelTone(palette, seedTone, isDark) {
210
240
  // LIGHT: every fill comes down, no exemption. On a near-white page a bright
@@ -296,17 +326,22 @@ export function buildPolicyTokens(seedHex, isDark, roles, pinned = {}) {
296
326
  // tone <= 49, so that is the ceiling — in dark as much as in light. Letting the
297
327
  // dark fill sit at the seed's own tone instead makes it brighter, but every one
298
328
  // of those labels turns black, which costs more than the brightness buys.
329
+ const monochrome = seed.chroma <= MONOCHROME_MAX_CHROMA;
299
330
  // DARK keys off the seed itself so the fill IS the brand hex; LIGHT uses the
300
331
  // max-chroma palette, which is what stops a deepened fill from going pastel.
301
- const brandPalette = isDark ? TonalPalette.fromInt(argbFromHex(seedHex)) : TonalPalette.fromHueAndChroma(seed.hue, 200);
302
- const primary = fillPair(brandPalette, whiteLabelTone(brandPalette, seed.tone, isDark));
332
+ // A monochrome seed has no chroma to preserve either way, and its fill goes to
333
+ // the far end of the scale rather than the white-label ceiling: a mid-grey
334
+ // button reads as disabled, where near-black on white reads as the primary
335
+ // action.
336
+ const brandPalette = monochrome ? TonalPalette.fromHueAndChroma(0, 0) : isDark ? TonalPalette.fromInt(argbFromHex(seedHex)) : TonalPalette.fromHueAndChroma(seed.hue, 200);
337
+ const primary = fillPair(brandPalette, monochrome ? isDark ? MONOCHROME_FILL_TONE.dark : MONOCHROME_FILL_TONE.light : whiteLabelTone(brandPalette, seed.tone, isDark));
303
338
  const tokens = {
304
339
  '--primary': primary.fill,
305
340
  '--primary-foreground': primary.foreground,
306
341
  // The accent legible as TEXT on the page surface — the job M3's `primary`
307
342
  // does correctly, and which the fill must stop trying to do at the same time.
308
343
  '--primary-text': roles.primary,
309
- '--primary-subtle': rgba(TonalPalette.fromHueAndChroma(seed.hue, 200).tone(SUBTLE_SOURCE_TONE), isDark ? SUBTLE_ALPHA.dark : SUBTLE_ALPHA.light),
344
+ '--primary-subtle': rgba(TonalPalette.fromHueAndChroma(seed.hue, monochrome ? 0 : 200).tone(SUBTLE_SOURCE_TONE), isDark ? SUBTLE_ALPHA.dark : SUBTLE_ALPHA.light),
310
345
  '--ring': roles.primary,
311
346
  // `--card` is the one surface MAPPING the policy changes.
312
347
  // `surfaceContainerLowest` is M3's RECESSED step: in dark it sits at tone 4
@@ -316,7 +351,7 @@ export function buildPolicyTokens(seedHex, isDark, roles, pinned = {}) {
316
351
  '--card': isDark ? roles.surfaceContainer : roles.surfaceContainerLowest,
317
352
  // A touch darker than M3's page background: near-white reads as unfinished
318
353
  // next to the card, and the extra step gives the surface ramp somewhere to sit.
319
- '--background': rgb(TonalPalette.fromHueAndChroma(seed.hue, 10).tone(isDark ? 4 : 96)),
354
+ '--background': rgb(TonalPalette.fromHueAndChroma(seed.hue, monochrome ? 0 : 10).tone(isDark ? 4 : 96)),
320
355
  // `--accent` stays what every consumer actually uses it for: a hover surface.
321
356
  '--accent': roles.surfaceContainerHigh,
322
357
  '--accent-foreground': roles.onSurfaceVariant
@@ -327,9 +362,11 @@ export function buildPolicyTokens(seedHex, isDark, roles, pinned = {}) {
327
362
  const hue = pin !== undefined ? Hct.fromInt(argbFromHex(pin)).hue : hues[role];
328
363
  // One hue, three palettes. Every member shares it, so the family still reads
329
364
  // as one colour; only how loudly each speaks differs.
330
- const fillPalette = TonalPalette.fromHueAndChroma(hue, ACCENT_CHROMA);
331
- const textPalette = TonalPalette.fromHueAndChroma(hue, TEXT_CHROMA);
332
- const vividPalette = TonalPalette.fromHueAndChroma(hue, 200);
365
+ // A monochrome theme has no accents to rotate to; the trio becomes a ladder
366
+ // of greys, which still separates a standout button from a quiet one.
367
+ const fillPalette = TonalPalette.fromHueAndChroma(hue, monochrome ? 0 : ACCENT_CHROMA);
368
+ const textPalette = TonalPalette.fromHueAndChroma(hue, monochrome ? 0 : TEXT_CHROMA);
369
+ const vividPalette = TonalPalette.fromHueAndChroma(hue, monochrome ? 0 : 200);
333
370
  // DARK sits at the hue's peak tone, floored by the same rule the brand fill
334
371
  // uses: some hues peak dark (violet at 35), and rendering them there gives a
335
372
  // slab rather than a highlight. LIGHT goes deep like every other fill, but
@@ -345,7 +382,12 @@ export function buildPolicyTokens(seedHex, isDark, roles, pinned = {}) {
345
382
  // black. The accent chroma cap already keeps these hues out of neon territory,
346
383
  // and the hue itself is the caller's brand rather than ours to move. The
347
384
  // analyzer still runs where it was designed to, inside `color-roles`.
348
- const tone = accentTone(hue, isDark);
385
+ // Monochrome keeps `tertiary` AT the brand fill rather than a step off it:
386
+ // tertiary is what a compose button and a FAB paint with, and those are the
387
+ // primary action — a step of grey between them and `primary` reads as two
388
+ // buttons disagreeing, not as hierarchy. `secondary` carries the whole
389
+ // demotion instead.
390
+ 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);
349
391
  const pair = fillPair(fillPalette, tone);
350
392
  tokens[`--${role}`] = pair.fill;
351
393
  tokens[`--${role}-foreground`] = pair.foreground;
@@ -357,7 +399,8 @@ export function buildPolicyTokens(seedHex, isDark, roles, pinned = {}) {
357
399
  // The old ramp drew all five from the primary/secondary/tertiary trio, which
358
400
  // spans ~35 degrees, so adjacent series were indistinguishable.
359
401
  for (let i = 0; i < 5; i += 1) {
360
- tokens[`--chart-${i + 1}`] = rgb(TonalPalette.fromHueAndChroma((seed.hue + i * 72) % 360, 60).tone(isDark ? 72 : 48));
402
+ // Greyscale charts spread by TONE instead of hue the only axis left.
403
+ tokens[`--chart-${i + 1}`] = monochrome ? rgb(TonalPalette.fromHueAndChroma(0, 0).tone(isDark ? 40 + i * 13 : 78 - i * 13)) : rgb(TonalPalette.fromHueAndChroma((seed.hue + i * 72) % 360, 60).tone(isDark ? 72 : 48));
361
404
  }
362
405
 
363
406
  // The status family, themed per mode. The four frozen hexes it replaces all
@@ -1 +1 @@
1
- {"version":3,"names":["argbFromHex","Hct","TonalPalette","blueFromArgb","greenFromArgb","redFromArgb","STATUS_SEEDS","success","error","warning","info","AA","rgb","argb","rgba","alpha","contrastOf","onWhite","channel","v","c","Math","pow","luminance","foregroundFor","noLegibleForeground","LIGHT_FILL_TONE","DARK_FILL_TONE","TONE_BUDGET","DARK_SEED_FLOOR","DARK_ACCENT_FLOOR","ACCENT_CHROMA","TEXT_TONE","light","dark","TEXT_CHROMA","SUBTLE_SOURCE_TONE","SUBTLE_ALPHA","SPLIT_ROTATIONS","VIVID_SNAP_WINDOW","VIVID_SNAP_MIN_GAIN","MIN_ACCENT_SEPARATION","DESTRUCTIVE_PROXIMITY","hueDistance","a","b","d","abs","min","peakTone","hue","palette","fromHueAndChroma","bestTone","bestChroma","tone","chroma","fromInt","peakChroma","vividHueNear","baseChroma","bestHue","delta","candidate","whiteLabelTone","seedTone","isDark","max","accentTone","peak","fillPair","startTone","fill","foreground","accentHues","seedHue","firstRotation","secondRotation","geometricA","geometricB","geometricStandout","quiet","snapped","standout","errorHue","secondary","tertiary","buildPolicyTokens","seedHex","roles","pinned","seed","brandPalette","primary","tokens","surfaceContainer","surfaceContainerLowest","surfaceContainerHigh","onSurfaceVariant","hues","role","pin","undefined","fillPalette","textPalette","vividPalette","pair","i","hex","Object","entries","status"],"sourceRoot":"../../../src","sources":["theme/color-policy.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["argbFromHex","Hct","TonalPalette","blueFromArgb","greenFromArgb","redFromArgb","STATUS_SEEDS","success","error","warning","info","AA","rgb","argb","rgba","alpha","contrastOf","onWhite","channel","v","c","Math","pow","luminance","foregroundFor","noLegibleForeground","LIGHT_FILL_TONE","DARK_FILL_TONE","TONE_BUDGET","DARK_SEED_FLOOR","DARK_ACCENT_FLOOR","ACCENT_CHROMA","TEXT_TONE","light","dark","TEXT_CHROMA","SUBTLE_SOURCE_TONE","SUBTLE_ALPHA","MONOCHROME_MAX_CHROMA","isColourlessSeed","seedHex","fromInt","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","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":[]}
@@ -19,7 +19,7 @@
19
19
  * resolved `--token -> value` record that `getPresetVars` produces).
20
20
  */
21
21
 
22
- export const APP_COLOR_NAMES = ['teal', 'blue', 'green', 'amber', 'yellow', 'red', 'purple', 'pink', 'sky', 'orange', 'mint', 'oxy', 'faircoin'];
22
+ export const APP_COLOR_NAMES = ['teal', 'blue', 'green', 'amber', 'yellow', 'red', 'purple', 'pink', 'sky', 'orange', 'mint', 'oxy', 'faircoin', 'mono'];
23
23
 
24
24
  /** Premium-exclusive presets, hidden from the standard color picker. */
25
25
  export const PREMIUM_COLOR_NAMES = ['oxy', 'faircoin'];
@@ -36,7 +36,8 @@ export const HEX_TO_APP_COLOR = {
36
36
  '#f97316': 'orange',
37
37
  '#14b8a6': 'mint',
38
38
  '#c46ede': 'oxy',
39
- '#9ffb50': 'faircoin'
39
+ '#9ffb50': 'faircoin',
40
+ '#000000': 'mono'
40
41
  };
41
42
  export function hexToAppColorName(hex) {
42
43
  return HEX_TO_APP_COLOR[hex.toLowerCase()] ?? 'teal';
@@ -113,6 +114,17 @@ export const APP_COLOR_PRESETS = {
113
114
  name: 'faircoin',
114
115
  hex: '#9ffb50',
115
116
  variant: 'vivid'
117
+ },
118
+ /**
119
+ * No colour at all — the black-and-white theme. Its seed carries zero chroma,
120
+ * which is the whole mechanism: the policy derives a greyscale palette from any
121
+ * seed with none, so a user who picks a grey in the colour wheel lands here too
122
+ * rather than on a nearly-grey approximation.
123
+ */
124
+ mono: {
125
+ name: 'mono',
126
+ hex: '#000000',
127
+ variant: 'monochrome'
116
128
  }
117
129
  };
118
130
  //# sourceMappingURL=color-presets.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["APP_COLOR_NAMES","PREMIUM_COLOR_NAMES","HEX_TO_APP_COLOR","hexToAppColorName","hex","toLowerCase","APP_COLOR_PRESETS","teal","name","variant","blue","green","amber","yellow","red","purple","pink","sky","orange","mint","oxy","faircoin"],"sourceRoot":"../../../src","sources":["theme/color-presets.ts"],"mappings":";;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAuBA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAO,MAAMA,eAAwC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;;AAEzK;AACA,OAAO,MAAMC,mBAA4C,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC;AAE/E,OAAO,MAAMC,gBAA8C,GAAG;EAC5D,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,OAAO;EAClB,SAAS,EAAE,OAAO;EAClB,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,KAAK;EAChB,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,KAAK;EAChB,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE,KAAK;EAChB,SAAS,EAAE;AACb,CAAC;AAED,OAAO,SAASC,iBAAiBA,CAACC,GAAW,EAAgB;EAC3D,OAAOF,gBAAgB,CAACE,GAAG,CAACC,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM;AACtD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAAuD,GAAG;EACrEC,IAAI,EAAE;IAAEC,IAAI,EAAE,MAAM;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EACxDC,IAAI,EAAE;IAAEF,IAAI,EAAE,MAAM;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EACxDE,KAAK,EAAE;IAAEH,IAAI,EAAE,OAAO;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EAC1DG,KAAK,EAAE;IAAEJ,IAAI,EAAE,OAAO;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EAC1DI,MAAM,EAAE;IAAEL,IAAI,EAAE,QAAQ;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EAC5DK,GAAG,EAAE;IAAEN,IAAI,EAAE,KAAK;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EACtDM,MAAM,EAAE;IAAEP,IAAI,EAAE,QAAQ;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EAC5DO,IAAI,EAAE;IAAER,IAAI,EAAE,MAAM;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EACxDQ,GAAG,EAAE;IAAET,IAAI,EAAE,KAAK;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EACtDS,MAAM,EAAE;IAAEV,IAAI,EAAE,QAAQ;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EAC5DU,IAAI,EAAE;IAAEX,IAAI,EAAE,MAAM;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EACxDW,GAAG,EAAE;IAAEZ,IAAI,EAAE,KAAK;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ,CAAC;EACtDY,QAAQ,EAAE;IAAEb,IAAI,EAAE,UAAU;IAAEJ,GAAG,EAAE,SAAS;IAAEK,OAAO,EAAE;EAAQ;AACjE,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["APP_COLOR_NAMES","PREMIUM_COLOR_NAMES","HEX_TO_APP_COLOR","hexToAppColorName","hex","toLowerCase","APP_COLOR_PRESETS","teal","name","variant","blue","green","amber","yellow","red","purple","pink","sky","orange","mint","oxy","faircoin","mono"],"sourceRoot":"../../../src","sources":["theme/color-presets.ts"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { generateRoleColors } from "../color-engine/index.js";
4
- import { buildPolicyTokens } from "../color-policy.js";
4
+ import { buildPolicyTokens, isColourlessSeed } from "../color-policy.js";
5
5
  import { CANONICAL_TOKENS } from "../token-registry.js";
6
6
 
7
7
  /**
@@ -80,7 +80,11 @@ export function roleColorsToPresetTokens(r) {
80
80
  export function buildSeedScopeVars(options) {
81
81
  const roles = generateRoleColors({
82
82
  seed: options.seed,
83
- variant: options.variant ?? 'vivid',
83
+ // A seed with no chroma has no colour for a chromatic variant to work with,
84
+ // so it takes the greyscale scheme unless the caller asked for something else.
85
+ // This is what makes a grey picked in a colour wheel produce the SAME
86
+ // black-and-white theme as the `mono` preset instead of a tinted near-grey.
87
+ variant: options.variant ?? (isColourlessSeed(options.seed) ? 'monochrome' : 'vivid'),
84
88
  isDark: options.mode === 'dark',
85
89
  contrastLevel: options.contrastLevel ?? 0,
86
90
  secondarySeed: options.secondarySeed,
@@ -1 +1 @@
1
- {"version":3,"names":["generateRoleColors","buildPolicyTokens","CANONICAL_TOKENS","roleColorsToPresetTokens","r","background","onBackground","surfaceContainerLow","onSurface","surfaceContainer","primary","onPrimary","secondaryContainer","onSecondaryContainer","tertiaryContainer","onTertiaryContainer","surfaceContainerHigh","onSurfaceVariant","error","outlineVariant","surfaceContainerLowest","secondary","tertiary","primaryContainer","buildSeedScopeVars","options","roles","seed","variant","isDark","mode","contrastLevel","secondarySeed","tertiarySeed","tokens","vars","key","value","Object","entries","slice","token","undefined"],"sourceRoot":"../../../../src","sources":["theme/color-scope/seed-scope.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAA6C,0BAAiB;AACzF,SAASC,iBAAiB,QAAQ,oBAAiB;AACnD,SAASC,gBAAgB,QAAQ,sBAAmB;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,wBAAwBA,CAACC,CAAa,EAA0B;EAC9E,OAAO;IACL;IACA,cAAc,EAAEA,CAAC,CAACC,UAAU;IAC5B,cAAc,EAAED,CAAC,CAACE,YAAY;IAC9B,WAAW,EAAEF,CAAC,CAACG,mBAAmB;IAClC,sBAAsB,EAAEH,CAAC,CAACI,SAAS;IACnC,WAAW,EAAEJ,CAAC,CAACK,gBAAgB;IAC/B,sBAAsB,EAAEL,CAAC,CAACI,SAAS;IACnC,WAAW,EAAEJ,CAAC,CAACM,OAAO;IACtB,sBAAsB,EAAEN,CAAC,CAACO,SAAS;IACnC;IACA;IACA,aAAa,EAAEP,CAAC,CAACQ,kBAAkB;IACnC,wBAAwB,EAAER,CAAC,CAACS,oBAAoB;IAChD,YAAY,EAAET,CAAC,CAACU,iBAAiB;IACjC,uBAAuB,EAAEV,CAAC,CAACW,mBAAmB;IAC9C,SAAS,EAAEX,CAAC,CAACY,oBAAoB;IACjC,oBAAoB,EAAEZ,CAAC,CAACa,gBAAgB;IACxC,UAAU,EAAEb,CAAC,CAACQ,kBAAkB;IAChC,qBAAqB,EAAER,CAAC,CAACS,oBAAoB;IAC7C,eAAe,EAAET,CAAC,CAACc,KAAK;IACxB,UAAU,EAAEd,CAAC,CAACe,cAAc;IAC5B,SAAS,EAAEf,CAAC,CAACe,cAAc;IAC3B,QAAQ,EAAEf,CAAC,CAACM,OAAO;IACnB,WAAW,EAAEN,CAAC,CAACG,mBAAmB;IAElC;IACA,QAAQ,EAAEH,CAAC,CAACgB,sBAAsB;IAClC,mBAAmB,EAAEhB,CAAC,CAACI,SAAS;IAChC,WAAW,EAAEJ,CAAC,CAACM,OAAO;IACtB,WAAW,EAAEN,CAAC,CAACiB,SAAS;IACxB,WAAW,EAAEjB,CAAC,CAACkB,QAAQ;IACvB,WAAW,EAAElB,CAAC,CAACmB,gBAAgB;IAC/B,WAAW,EAAEnB,CAAC,CAACU,iBAAiB;IAChC,gBAAgB,EAAEV,CAAC,CAACC,UAAU;IAC9B,sBAAsB,EAAED,CAAC,CAACI,SAAS;IACnC,mBAAmB,EAAEJ,CAAC,CAACM,OAAO;IAC9B,8BAA8B,EAAEN,CAAC,CAACO,SAAS;IAC3C,kBAAkB,EAAEP,CAAC,CAACQ,kBAAkB;IACxC,6BAA6B,EAAER,CAAC,CAACS,oBAAoB;IACrD,kBAAkB,EAAET,CAAC,CAACe,cAAc;IACpC,gBAAgB,EAAEf,CAAC,CAACM;EACtB,CAAC;AACH;;AAEA;;AA2BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASc,kBAAkBA,CAACC,OAAyB,EAA0B;EACpF,MAAMC,KAAK,GAAG1B,kBAAkB,CAAC;IAC/B2B,IAAI,EAAEF,OAAO,CAACE,IAAI;IAClBC,OAAO,EAAEH,OAAO,CAACG,OAAO,IAAI,OAAO;IACnCC,MAAM,EAAEJ,OAAO,CAACK,IAAI,KAAK,MAAM;IAC/BC,aAAa,EAAEN,OAAO,CAACM,aAAa,IAAI,CAAC;IACzCC,aAAa,EAAEP,OAAO,CAACO,aAAa;IACpCC,YAAY,EAAER,OAAO,CAACQ;EACxB,CAAC,CAAC;EACF,MAAMC,MAA8B,GAAG;IACrC,GAAG/B,wBAAwB,CAACuB,KAAK,CAAC;IAClC,GAAGzB,iBAAiB,CAACwB,OAAO,CAACE,IAAI,EAAEF,OAAO,CAACK,IAAI,KAAK,MAAM,EAAEJ,KAAK,EAAE;MACjEL,SAAS,EAAEI,OAAO,CAACO,aAAa;MAChCV,QAAQ,EAAEG,OAAO,CAACQ;IACpB,CAAC;EACH,CAAC;EACD,MAAME,IAA4B,GAAG;IAAE,GAAGD;EAAO,CAAC;;EAElD;EACA,KAAK,MAAM,CAACE,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,MAAM,CAAC,EAAE;IACjDC,IAAI,CAAC,WAAWC,GAAG,CAACI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAGH,KAAK;EACzC;EAEA,KAAK,MAAMI,KAAK,IAAIvC,gBAAgB,EAAE;IACpC,MAAMmC,KAAK,GAAGH,MAAM,CAAC,KAAKO,KAAK,EAAE,CAAC;IAClC,IAAIJ,KAAK,KAAKK,SAAS,EAAE;MACvBP,IAAI,CAAC,WAAWM,KAAK,EAAE,CAAC,GAAGJ,KAAK;IAClC;EACF;EAEA,OAAOF,IAAI;AACb","ignoreList":[]}
1
+ {"version":3,"names":["generateRoleColors","buildPolicyTokens","isColourlessSeed","CANONICAL_TOKENS","roleColorsToPresetTokens","r","background","onBackground","surfaceContainerLow","onSurface","surfaceContainer","primary","onPrimary","secondaryContainer","onSecondaryContainer","tertiaryContainer","onTertiaryContainer","surfaceContainerHigh","onSurfaceVariant","error","outlineVariant","surfaceContainerLowest","secondary","tertiary","primaryContainer","buildSeedScopeVars","options","roles","seed","variant","isDark","mode","contrastLevel","secondarySeed","tertiarySeed","tokens","vars","key","value","Object","entries","slice","token","undefined"],"sourceRoot":"../../../../src","sources":["theme/color-scope/seed-scope.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/scroll/index.web.tsx"],"names":[],"mappings":"AA6CA,OAAO,KAAK,EACV,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAEtD,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,8BAA8B,EAC9B,uBAAuB,EACvB,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,SAAS,CAAC;AA0DjB;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,CAAC,EAAE,2BAA2B,GACpC,wBAAwB,CA4J1B"}
1
+ {"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../src/scroll/index.web.tsx"],"names":[],"mappings":"AA6CA,OAAO,KAAK,EACV,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAEtD,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,8BAA8B,EAC9B,uBAAuB,EACvB,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,SAAS,CAAC;AA0DjB;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,CAAC,EAAE,2BAA2B,GACpC,wBAAwB,CAgM1B"}