@oxy.so/bloom 4.26.0 → 4.28.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.
- package/NOTICE +2 -0
- package/README.md +1 -1
- package/docs/design-tokens.mdx +15 -4
- package/docs/glass.mdx +1 -1
- package/docs/icons.mdx +21 -2
- package/lib/commonjs/design-tokens/tokens.json +50 -48
- package/lib/commonjs/icons/index.js +12 -0
- package/lib/commonjs/icons/index.js.map +1 -1
- package/lib/commonjs/icons/remix/RiInstagramFill.js +12 -0
- package/lib/commonjs/icons/remix/RiInstagramFill.js.map +1 -0
- package/lib/commonjs/icons/remix/RiMastodonFill.js +12 -0
- package/lib/commonjs/icons/remix/RiMastodonFill.js.map +1 -0
- package/lib/commonjs/icons/remix/RiMediumFill.js +12 -0
- package/lib/commonjs/icons/remix/RiMediumFill.js.map +1 -0
- package/lib/commonjs/icons/remix/RiThreadsFill.js +12 -0
- package/lib/commonjs/icons/remix/RiThreadsFill.js.map +1 -0
- package/lib/commonjs/icons/remix/index.js +28 -0
- package/lib/commonjs/icons/remix/index.js.map +1 -1
- package/lib/commonjs/icons/simple-icons/SiSubstack.js +22 -0
- package/lib/commonjs/icons/simple-icons/SiSubstack.js.map +1 -0
- package/lib/commonjs/icons/simple-icons/index.js +13 -0
- package/lib/commonjs/icons/simple-icons/index.js.map +1 -0
- package/lib/commonjs/theme/color-presets.js +64 -4
- package/lib/commonjs/theme/color-presets.js.map +1 -1
- package/lib/commonjs/theme/preset-vars.js +19 -1
- package/lib/commonjs/theme/preset-vars.js.map +1 -1
- package/lib/module/design-tokens/tokens.json +50 -48
- package/lib/module/icons/index.js +5 -3
- package/lib/module/icons/index.js.map +1 -1
- package/lib/module/icons/remix/RiInstagramFill.js +9 -0
- package/lib/module/icons/remix/RiInstagramFill.js.map +1 -0
- package/lib/module/icons/remix/RiMastodonFill.js +9 -0
- package/lib/module/icons/remix/RiMastodonFill.js.map +1 -0
- package/lib/module/icons/remix/RiMediumFill.js +9 -0
- package/lib/module/icons/remix/RiMediumFill.js.map +1 -0
- package/lib/module/icons/remix/RiThreadsFill.js +9 -0
- package/lib/module/icons/remix/RiThreadsFill.js.map +1 -0
- package/lib/module/icons/remix/index.js +4 -0
- package/lib/module/icons/remix/index.js.map +1 -1
- package/lib/module/icons/simple-icons/SiSubstack.js +19 -0
- package/lib/module/icons/simple-icons/SiSubstack.js.map +1 -0
- package/lib/module/icons/simple-icons/index.js +7 -0
- package/lib/module/icons/simple-icons/index.js.map +1 -0
- package/lib/module/theme/color-presets.js +64 -4
- package/lib/module/theme/color-presets.js.map +1 -1
- package/lib/module/theme/preset-vars.js +20 -2
- package/lib/module/theme/preset-vars.js.map +1 -1
- package/lib/typescript/commonjs/icons/index.d.ts +1 -0
- package/lib/typescript/commonjs/icons/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/icons/remix/RiInstagramFill.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiInstagramFill.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiMastodonFill.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiMastodonFill.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiMediumFill.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiMediumFill.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/RiThreadsFill.d.ts +8 -0
- package/lib/typescript/commonjs/icons/remix/RiThreadsFill.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/remix/index.d.ts +4 -0
- package/lib/typescript/commonjs/icons/remix/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/icons/simple-icons/SiSubstack.d.ts +17 -0
- package/lib/typescript/commonjs/icons/simple-icons/SiSubstack.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/simple-icons/index.d.ts +2 -0
- package/lib/typescript/commonjs/icons/simple-icons/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/theme/color-presets.d.ts +57 -2
- package/lib/typescript/commonjs/theme/color-presets.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/preset-vars.d.ts.map +1 -1
- package/lib/typescript/module/icons/index.d.ts +1 -0
- package/lib/typescript/module/icons/index.d.ts.map +1 -1
- package/lib/typescript/module/icons/remix/RiInstagramFill.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiInstagramFill.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiMastodonFill.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiMastodonFill.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiMediumFill.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiMediumFill.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/RiThreadsFill.d.ts +8 -0
- package/lib/typescript/module/icons/remix/RiThreadsFill.d.ts.map +1 -0
- package/lib/typescript/module/icons/remix/index.d.ts +4 -0
- package/lib/typescript/module/icons/remix/index.d.ts.map +1 -1
- package/lib/typescript/module/icons/simple-icons/SiSubstack.d.ts +17 -0
- package/lib/typescript/module/icons/simple-icons/SiSubstack.d.ts.map +1 -0
- package/lib/typescript/module/icons/simple-icons/index.d.ts +2 -0
- package/lib/typescript/module/icons/simple-icons/index.d.ts.map +1 -0
- package/lib/typescript/module/theme/color-presets.d.ts +57 -2
- package/lib/typescript/module/theme/color-presets.d.ts.map +1 -1
- package/lib/typescript/module/theme/preset-vars.d.ts.map +1 -1
- package/package.json +18 -1
- package/src/design-tokens/tokens.json +50 -48
- package/src/icons/index.ts +5 -3
- package/src/icons/remix/RiInstagramFill.tsx +6 -0
- package/src/icons/remix/RiMastodonFill.tsx +6 -0
- package/src/icons/remix/RiMediumFill.tsx +6 -0
- package/src/icons/remix/RiThreadsFill.tsx +6 -0
- package/src/icons/remix/index.ts +4 -0
- package/src/icons/simple-icons/SiSubstack.tsx +16 -0
- package/src/icons/simple-icons/index.ts +4 -0
- package/src/theme/color-presets.ts +67 -2
- package/src/theme/preset-vars.ts +22 -1
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { createSinglePathSVG } from '../TEMPLATE';
|
|
2
|
+
|
|
3
|
+
/** Remix Icon `medium-fill` (Logos). */
|
|
4
|
+
export const RiMediumFill = createSinglePathSVG({
|
|
5
|
+
path: 'M6.15789 3H17.8421C19.5862 3 21 4.41384 21 6.15789V9.52368C20.9185 9.51825 20.8369 9.51611 20.7552 9.51611C20.3527 9.51611 19.8589 9.61374 19.5076 9.79063C19.1075 9.97583 18.7548 10.2528 18.4613 10.6162C17.9888 11.2018 17.7025 11.9931 17.6329 12.8824C17.618 13.059 17.6131 13.2366 17.6163 13.4138C17.6632 15.4279 18.7512 17.0376 20.6837 17.0376C20.7919 17.0376 20.8974 17.0325 21 17.0226V17.8421C21 19.5862 19.5862 21 17.8421 21H6.15789C4.41384 21 3 19.5862 3 17.8421V6.15789C3 4.41384 4.41384 3 6.15789 3ZM21 15.3878V12.6621H19.3473C19.2728 13.9784 19.9927 15.0913 21 15.3878ZM21 12.2813V9.97343C20.92 9.95153 20.8345 9.93978 20.7435 9.93827C19.9294 9.95506 19.4442 10.9302 19.3838 12.2813H21ZM17.6973 7.30004L17.7115 7.29693V7.18701H14.8127L12.1211 13.5132L9.42952 7.18701H6.30572V7.29693L6.31975 7.30004C6.84885 7.41946 7.11748 7.59757 7.11748 8.23987V15.7595C7.11748 16.4018 6.84782 16.5799 6.31871 16.6993L6.30469 16.7024V16.8127H8.42408V16.7028L8.41007 16.6996C7.88095 16.5802 7.61232 16.4021 7.61232 15.7598V8.67605L11.07 16.8127H11.2661L14.8245 8.44914V15.9455C14.7792 16.4528 14.513 16.6095 14.0339 16.7176L14.0197 16.7209V16.83H17.7115V16.7209L17.6973 16.7176C17.2177 16.6095 16.9451 16.4528 16.8998 15.9455L16.8974 8.23987H16.8998C16.8998 7.59757 17.1684 7.41946 17.6973 7.30004Z',
|
|
6
|
+
});
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { createSinglePathSVG } from '../TEMPLATE';
|
|
2
|
+
|
|
3
|
+
/** Remix Icon `threads-fill` (Logos). */
|
|
4
|
+
export const RiThreadsFill = createSinglePathSVG({
|
|
5
|
+
path: 'M16.7051 11.1081C16.543 8.12137 14.911 6.41148 12.1708 6.39398C10.5193 6.3838 9.13771 7.08389 8.29233 8.36664L9.79941 9.40046C10.4334 8.43852 11.4342 8.24015 12.1593 8.24685C13.0616 8.2526 13.7425 8.51494 14.1832 9.02653C14.5038 9.39899 14.7183 9.91367 14.8245 10.5632C14.0246 10.4273 13.1594 10.3855 12.2345 10.4385C9.62919 10.5886 7.95426 12.1081 8.06675 14.2194C8.12384 15.2904 8.65739 16.2118 9.56906 16.8137C10.3399 17.3225 11.3326 17.5713 12.3644 17.515C13.727 17.4403 14.7959 16.9205 15.5416 15.9699C16.1079 15.248 16.4661 14.3125 16.6243 13.1338C17.2737 13.5257 17.7549 14.0414 18.0207 14.6613C18.4726 15.7151 18.499 17.4469 17.086 18.8587C15.848 20.0955 14.3598 20.6306 12.1108 20.6471C9.61601 20.6286 7.72924 19.8285 6.50253 18.269C5.35381 16.8088 4.76014 14.6996 4.73799 12C4.76014 9.30038 5.35381 7.19117 6.50253 5.73092C7.72924 4.17147 9.61597 3.37141 12.1107 3.35287C14.6236 3.37155 16.5433 4.17547 17.8169 5.74244C18.4415 6.51086 18.9123 7.47721 19.2227 8.60394L20.9888 8.13274C20.6125 6.74587 20.0205 5.55078 19.2148 4.55966C17.582 2.55073 15.1816 1.52134 12.1046 1.5C9.03385 1.52127 6.6725 2.55457 5.08614 4.57117C3.67451 6.3657 2.94634 8.87742 2.92188 12.0074C2.94634 15.1373 3.67451 17.6343 5.08614 19.4289C6.6725 21.4454 9.04616 22.4788 12.1169 22.5C14.847 22.4811 16.7713 21.7663 18.3566 20.1825C20.4307 18.1103 20.3682 15.513 19.6846 13.9185C19.1595 12.6943 18.1141 11.7129 16.7051 11.1081ZM12.2669 15.6648C11.125 15.7291 9.93869 15.2166 9.88019 14.1188C9.83684 13.3048 10.4595 12.3966 12.3369 12.2884C13.2594 12.2352 14.1138 12.2976 14.8701 12.463C14.6538 15.1648 13.3848 15.6035 12.2669 15.6648Z',
|
|
6
|
+
});
|
package/src/icons/remix/index.ts
CHANGED
|
@@ -245,6 +245,7 @@ export { RiIndeterminateCircleFill } from './RiIndeterminateCircleFill';
|
|
|
245
245
|
export { RiInfinityLine } from './RiInfinityLine';
|
|
246
246
|
export { RiInformationFill } from './RiInformationFill';
|
|
247
247
|
export { RiInformationLine } from './RiInformationLine';
|
|
248
|
+
export { RiInstagramFill } from './RiInstagramFill';
|
|
248
249
|
export { RiItalic } from './RiItalic';
|
|
249
250
|
export { RiKanbanView2 } from './RiKanbanView2';
|
|
250
251
|
export { RiKey2Line } from './RiKey2Line';
|
|
@@ -280,7 +281,9 @@ export { RiMapPin2Fill } from './RiMapPin2Fill';
|
|
|
280
281
|
export { RiMapPin2Line } from './RiMapPin2Line';
|
|
281
282
|
export { RiMapPinFill } from './RiMapPinFill';
|
|
282
283
|
export { RiMapPinLine } from './RiMapPinLine';
|
|
284
|
+
export { RiMastodonFill } from './RiMastodonFill';
|
|
283
285
|
export { RiMedalLine } from './RiMedalLine';
|
|
286
|
+
export { RiMediumFill } from './RiMediumFill';
|
|
284
287
|
export { RiMegaphoneLine } from './RiMegaphoneLine';
|
|
285
288
|
export { RiMenLine } from './RiMenLine';
|
|
286
289
|
export { RiMenuLine } from './RiMenuLine';
|
|
@@ -428,6 +431,7 @@ export { RiTentLine } from './RiTentLine';
|
|
|
428
431
|
export { RiTerminalBoxLine } from './RiTerminalBoxLine';
|
|
429
432
|
export { RiTerminalFill } from './RiTerminalFill';
|
|
430
433
|
export { RiTestTubeFill } from './RiTestTubeFill';
|
|
434
|
+
export { RiThreadsFill } from './RiThreadsFill';
|
|
431
435
|
export { RiThumbDownLine } from './RiThumbDownLine';
|
|
432
436
|
export { RiThumbUpFill } from './RiThumbUpFill';
|
|
433
437
|
export { RiThumbUpLine } from './RiThumbUpLine';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createSinglePathSVG } from '../TEMPLATE';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Simple Icons `substack` (simple-icons@16.32.0, CC0 1.0). Remix Icon has no
|
|
5
|
+
* Substack glyph, so this one mark comes from the set `social-button` already
|
|
6
|
+
* draws brand marks from. The path is verbatim.
|
|
7
|
+
*
|
|
8
|
+
* Simple Icons draws edge to edge on its 24 grid (this path spans y 0–24);
|
|
9
|
+
* Remix Logos keep a 2-unit margin (Bluesky, X and Mastodon sit inside 2–22).
|
|
10
|
+
* The `-2 -2 28 28` viewBox scales the same path onto that 20-unit live area,
|
|
11
|
+
* so the mark sits at the same visual size as the Remix brand glyphs beside it.
|
|
12
|
+
*/
|
|
13
|
+
export const SiSubstack = createSinglePathSVG({
|
|
14
|
+
path: 'M22.539 8.242H1.46V5.406h21.08v2.836zM1.46 10.812V24L12 18.11 22.54 24V10.812H1.46zM22.54 0H1.46v2.836h21.08V0z',
|
|
15
|
+
viewBox: '-2 -2 28 28',
|
|
16
|
+
});
|
|
@@ -51,6 +51,7 @@ interface ColorPresetSource {
|
|
|
51
51
|
/** Force a white primary label even when preserving the seed would choose black. */
|
|
52
52
|
label?: 'white';
|
|
53
53
|
gate?: ColorPresetGate;
|
|
54
|
+
tokens?: PresetTokenOverrides;
|
|
54
55
|
}
|
|
55
56
|
|
|
56
57
|
/**
|
|
@@ -157,11 +158,63 @@ const COLOR_PRESET_SOURCES = [
|
|
|
157
158
|
name: 'oxy',
|
|
158
159
|
displayName: 'Oxy',
|
|
159
160
|
family: 'brand',
|
|
160
|
-
description: 'Oxy
|
|
161
|
+
description: 'Oxy orchid with a magenta support and a terracotta action, reserved for the Oxy account identity.',
|
|
161
162
|
hex: '#c46ede',
|
|
163
|
+
secondaryHex: '#8f3987',
|
|
164
|
+
tertiaryHex: '#a0392b',
|
|
162
165
|
variant: 'vivid',
|
|
163
|
-
pairing: '
|
|
166
|
+
pairing: 'curated',
|
|
164
167
|
gate: 'handle',
|
|
168
|
+
// Hand-authored from the Oxy logo's own Material 3 scheme (plum page, pink
|
|
169
|
+
// surfaces, orchid/magenta/terracotta trio). The accent fills and their
|
|
170
|
+
// labels are that scheme's roles verbatim. The surface ladder keeps each
|
|
171
|
+
// role's hue and chroma (capped at Bloom's 28) but sits on Bloom's
|
|
172
|
+
// four-tone ramp, since the scheme's own two-tone steps fall below what the
|
|
173
|
+
// eye separates (`SURFACE_RAMP`, color-policy.ts). Text, borders and status
|
|
174
|
+
// stay derived: the policy is what holds them at AA on that deeper ladder.
|
|
175
|
+
tokens: {
|
|
176
|
+
light: {
|
|
177
|
+
'--background': '#f7ebf0',
|
|
178
|
+
'--surface': '#f1dde9',
|
|
179
|
+
'--popover': '#edcee4',
|
|
180
|
+
'--card': '#fff7f9',
|
|
181
|
+
'--muted': '#e7c1dd',
|
|
182
|
+
'--accent': '#e7c1dd',
|
|
183
|
+
'--primary': '#9422ae',
|
|
184
|
+
'--primary-foreground': '#ffeefc',
|
|
185
|
+
'--ring': '#9422ae',
|
|
186
|
+
'--secondary': '#8f3987',
|
|
187
|
+
'--secondary-foreground': '#ffeef8',
|
|
188
|
+
'--tertiary': '#a0392b',
|
|
189
|
+
'--tertiary-foreground': '#ffefed',
|
|
190
|
+
'--sidebar': '#f1dde9',
|
|
191
|
+
'--sidebar-primary': '#9422ae',
|
|
192
|
+
'--sidebar-primary-foreground': '#ffeefc',
|
|
193
|
+
'--sidebar-accent': '#ffbdf1',
|
|
194
|
+
'--sidebar-accent-foreground': '#772371',
|
|
195
|
+
'--sidebar-ring': '#9422ae',
|
|
196
|
+
},
|
|
197
|
+
dark: {
|
|
198
|
+
'--background': '#1f031d',
|
|
199
|
+
'--surface': '#2f0f2c',
|
|
200
|
+
'--popover': '#381835',
|
|
201
|
+
'--card': '#4b2947',
|
|
202
|
+
'--muted': '#42203d',
|
|
203
|
+
'--accent': '#42203d',
|
|
204
|
+
'--primary': '#ec86ff',
|
|
205
|
+
'--ring': '#ec86ff',
|
|
206
|
+
'--secondary': '#fd99ee',
|
|
207
|
+
'--secondary-foreground': '#651161',
|
|
208
|
+
'--tertiary': '#ff9381',
|
|
209
|
+
'--tertiary-foreground': '#640d05',
|
|
210
|
+
'--sidebar': '#2f0f2c',
|
|
211
|
+
'--sidebar-primary': '#ec86ff',
|
|
212
|
+
'--sidebar-primary-foreground': '#530065',
|
|
213
|
+
'--sidebar-accent': '#762371',
|
|
214
|
+
'--sidebar-accent-foreground': '#ffbbf1',
|
|
215
|
+
'--sidebar-ring': '#ec86ff',
|
|
216
|
+
},
|
|
217
|
+
},
|
|
165
218
|
},
|
|
166
219
|
{
|
|
167
220
|
name: 'faircoin',
|
|
@@ -782,6 +835,8 @@ export interface AppColorPreset {
|
|
|
782
835
|
tertiaryHex?: string;
|
|
783
836
|
label?: 'white';
|
|
784
837
|
gate?: ColorPresetGate;
|
|
838
|
+
/** Authored per-mode token values that win over the engine's derivation. */
|
|
839
|
+
tokens?: PresetTokenOverrides;
|
|
785
840
|
}
|
|
786
841
|
|
|
787
842
|
/** Enriched registry entry for a picker or colour playground. */
|
|
@@ -815,6 +870,7 @@ export const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset> =
|
|
|
815
870
|
...(preset.tertiaryHex !== undefined ? { tertiaryHex: preset.tertiaryHex } : {}),
|
|
816
871
|
...(preset.label !== undefined ? { label: preset.label } : {}),
|
|
817
872
|
...(preset.gate !== undefined ? { gate: preset.gate } : {}),
|
|
873
|
+
...(preset.tokens !== undefined ? { tokens: preset.tokens } : {}),
|
|
818
874
|
};
|
|
819
875
|
return presets;
|
|
820
876
|
}, {} as Record<AppColorName, AppColorPreset>);
|
|
@@ -857,6 +913,15 @@ export const COLOR_PRESET_GROUPS: Readonly<Record<ColorPresetFamily, ColorPreset
|
|
|
857
913
|
*/
|
|
858
914
|
export type PresetTokens = Record<string, string>;
|
|
859
915
|
|
|
916
|
+
/**
|
|
917
|
+
* A hand-authored brand scheme, per mode, as `#rrggbb` keyed by canonical token.
|
|
918
|
+
* Only for a brand that owns a drawn palette; every other preset stays derived.
|
|
919
|
+
*/
|
|
920
|
+
export interface PresetTokenOverrides {
|
|
921
|
+
light?: PresetTokens;
|
|
922
|
+
dark?: PresetTokens;
|
|
923
|
+
}
|
|
924
|
+
|
|
860
925
|
const namesGatedBy = (gate: ColorPresetGate | undefined): readonly AppColorName[] =>
|
|
861
926
|
COLOR_PRESET_REGISTRY.filter((preset) => preset.gate === gate).map(({ name }) => name);
|
|
862
927
|
|
package/src/theme/preset-vars.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { APP_COLOR_PRESETS, type AppColorName, type PresetTokens } from './color-presets';
|
|
2
|
-
import { generateRoleColors, type RoleColors } from './color-engine';
|
|
2
|
+
import { argbFromHex, generateRoleColors, type RoleColors } from './color-engine';
|
|
3
3
|
import { buildPolicyTokens } from './color-policy';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -112,9 +112,30 @@ export function getPresetVars(
|
|
|
112
112
|
secondary: accents?.secondaryHex ?? preset.secondaryHex,
|
|
113
113
|
tertiary: accents?.tertiaryHex ?? preset.tertiaryHex,
|
|
114
114
|
}),
|
|
115
|
+
...authoredTokens(preset.tokens?.[mode], accents),
|
|
115
116
|
};
|
|
116
117
|
}
|
|
117
118
|
|
|
119
|
+
/**
|
|
120
|
+
* A preset's hand-authored values, as the same `rgb(r g b)` form the engine
|
|
121
|
+
* emits. An app-wide accent override still wins over the authored accent it
|
|
122
|
+
* replaces, so the `secondary*`/`tertiary*` family is dropped when pinned.
|
|
123
|
+
*/
|
|
124
|
+
function authoredTokens(
|
|
125
|
+
authored: PresetTokens | undefined,
|
|
126
|
+
accents: ExplicitAccents | undefined,
|
|
127
|
+
): PresetTokens {
|
|
128
|
+
if (authored === undefined) return {};
|
|
129
|
+
const out: PresetTokens = {};
|
|
130
|
+
for (const [token, hex] of Object.entries(authored)) {
|
|
131
|
+
if (accents?.secondaryHex !== undefined && token.startsWith('--secondary')) continue;
|
|
132
|
+
if (accents?.tertiaryHex !== undefined && token.startsWith('--tertiary')) continue;
|
|
133
|
+
const argb = argbFromHex(hex);
|
|
134
|
+
out[token] = `rgb(${(argb >> 16) & 255} ${(argb >> 8) & 255} ${argb & 255})`;
|
|
135
|
+
}
|
|
136
|
+
return out;
|
|
137
|
+
}
|
|
138
|
+
|
|
118
139
|
/**
|
|
119
140
|
* Apply a preset's extended vars to `document.documentElement`. Web-only no-op
|
|
120
141
|
* on native. `BloomThemeProvider` already writes the base preset vars on web;
|