@oxyhq/bloom 0.7.0 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/react-native-css.d.js +2 -0
- package/lib/commonjs/react-native-css.d.js.map +1 -0
- package/lib/commonjs/theme/BloomThemeProvider.js +39 -7
- package/lib/commonjs/theme/BloomThemeProvider.js.map +1 -1
- package/lib/commonjs/theme/apply-dark-class.js +6 -3
- package/lib/commonjs/theme/apply-dark-class.js.map +1 -1
- package/lib/commonjs/theme/color-presets.js +118 -118
- package/lib/commonjs/theme/color-presets.js.map +1 -1
- package/lib/commonjs/theme/color-scope/index.js +28 -6
- package/lib/commonjs/theme/color-scope/index.js.map +1 -1
- package/lib/commonjs/theme/color-scope/style-builder.js +35 -0
- package/lib/commonjs/theme/color-scope/style-builder.js.map +1 -1
- package/lib/commonjs/theme/native-root-vars.js +110 -0
- package/lib/commonjs/theme/native-root-vars.js.map +1 -0
- package/lib/commonjs/theme/native-root-vars.web.js +27 -0
- package/lib/commonjs/theme/native-root-vars.web.js.map +1 -0
- package/lib/commonjs/theme/preset-vars.js +71 -2
- package/lib/commonjs/theme/preset-vars.js.map +1 -1
- package/lib/module/react-native-css.d.js +2 -0
- package/lib/module/react-native-css.d.js.map +1 -0
- package/lib/module/theme/BloomThemeProvider.js +40 -8
- package/lib/module/theme/BloomThemeProvider.js.map +1 -1
- package/lib/module/theme/apply-dark-class.js +6 -3
- package/lib/module/theme/apply-dark-class.js.map +1 -1
- package/lib/module/theme/color-presets.js +118 -118
- package/lib/module/theme/color-presets.js.map +1 -1
- package/lib/module/theme/color-scope/index.js +29 -7
- package/lib/module/theme/color-scope/index.js.map +1 -1
- package/lib/module/theme/color-scope/style-builder.js +35 -0
- package/lib/module/theme/color-scope/style-builder.js.map +1 -1
- package/lib/module/theme/native-root-vars.js +106 -0
- package/lib/module/theme/native-root-vars.js.map +1 -0
- package/lib/module/theme/native-root-vars.web.js +23 -0
- package/lib/module/theme/native-root-vars.web.js.map +1 -0
- package/lib/module/theme/preset-vars.js +70 -2
- package/lib/module/theme/preset-vars.js.map +1 -1
- package/lib/typescript/commonjs/icons/common.d.ts +8 -8
- package/lib/typescript/commonjs/theme/BloomThemeProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/apply-dark-class.d.ts +6 -3
- package/lib/typescript/commonjs/theme/apply-dark-class.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/color-scope/index.d.ts +9 -2
- package/lib/typescript/commonjs/theme/color-scope/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/color-scope/style-builder.d.ts +32 -0
- package/lib/typescript/commonjs/theme/color-scope/style-builder.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/native-root-vars.d.ts +94 -0
- package/lib/typescript/commonjs/theme/native-root-vars.d.ts.map +1 -0
- package/lib/typescript/commonjs/theme/native-root-vars.web.d.ts +20 -0
- package/lib/typescript/commonjs/theme/native-root-vars.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/theme/preset-vars.d.ts +35 -2
- package/lib/typescript/commonjs/theme/preset-vars.d.ts.map +1 -1
- package/lib/typescript/module/icons/common.d.ts +8 -8
- package/lib/typescript/module/theme/BloomThemeProvider.d.ts.map +1 -1
- package/lib/typescript/module/theme/apply-dark-class.d.ts +6 -3
- package/lib/typescript/module/theme/apply-dark-class.d.ts.map +1 -1
- package/lib/typescript/module/theme/color-scope/index.d.ts +9 -2
- package/lib/typescript/module/theme/color-scope/index.d.ts.map +1 -1
- package/lib/typescript/module/theme/color-scope/style-builder.d.ts +32 -0
- package/lib/typescript/module/theme/color-scope/style-builder.d.ts.map +1 -1
- package/lib/typescript/module/theme/native-root-vars.d.ts +94 -0
- package/lib/typescript/module/theme/native-root-vars.d.ts.map +1 -0
- package/lib/typescript/module/theme/native-root-vars.web.d.ts +20 -0
- package/lib/typescript/module/theme/native-root-vars.web.d.ts.map +1 -0
- package/lib/typescript/module/theme/preset-vars.d.ts +35 -2
- package/lib/typescript/module/theme/preset-vars.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/native-root-vars.test.ts +127 -0
- package/src/__tests__/preset-vars.test.ts +45 -4
- package/src/react-native-css.d.ts +70 -0
- package/src/theme/BloomThemeProvider.tsx +32 -6
- package/src/theme/apply-dark-class.ts +6 -3
- package/src/theme/color-presets.ts +118 -118
- package/src/theme/color-scope/index.tsx +30 -8
- package/src/theme/color-scope/style-builder.ts +40 -0
- package/src/theme/native-root-vars.ts +107 -0
- package/src/theme/native-root-vars.web.ts +22 -0
- package/src/theme/preset-vars.ts +88 -4
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ambient declaration for `react-native-css/native-internal`.
|
|
3
|
+
*
|
|
4
|
+
* react-native-css is NOT a Bloom dependency — it arrives transitively via the
|
|
5
|
+
* host app's NativeWind install (NativeWind 5 is built on react-native-css@3).
|
|
6
|
+
* Bloom's `native-root-vars.native.ts` statically imports `rootVariables` from
|
|
7
|
+
* this subpath so Metro resolves the `import` export condition to the package's
|
|
8
|
+
* `module` build — the SAME family instance the react-native-css renderer
|
|
9
|
+
* (`varResolver`) subscribes to. A runtime `require()` would resolve the
|
|
10
|
+
* `require` condition to the separate `commonjs` build, whose `rootVariables`
|
|
11
|
+
* is a distinct, un-observed family instance (see the file-level comment in
|
|
12
|
+
* `native-root-vars.native.ts`).
|
|
13
|
+
*
|
|
14
|
+
* Because the package isn't installed in Bloom, `tsc` can't see its published
|
|
15
|
+
* types, so we declare the slice we use here — typed to match react-native-css
|
|
16
|
+
* @3.0.7's `dist/typescript/.../native-internal/root.d.ts` exactly (no `any`,
|
|
17
|
+
* no shims). This file is `.native`-only in spirit; the web fork never imports
|
|
18
|
+
* the subpath, so on web bundlers the static import is never reached.
|
|
19
|
+
*/
|
|
20
|
+
declare module 'react-native-css/native-internal' {
|
|
21
|
+
/**
|
|
22
|
+
* A leaf style value. Mirrors react-native-css's `compiler.types`
|
|
23
|
+
* `StyleDescriptor`. Bloom only ever writes string color values (raw HSL
|
|
24
|
+
* triples for the `--*` vars, sRGB `rgb(...)` for the resolved `--color-*`
|
|
25
|
+
* vars), but the family is typed against the full descriptor union.
|
|
26
|
+
*/
|
|
27
|
+
type StyleDescriptor =
|
|
28
|
+
| string
|
|
29
|
+
| number
|
|
30
|
+
| boolean
|
|
31
|
+
| undefined
|
|
32
|
+
| StyleDescriptor[];
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* A media-conditioned predicate guarding a variable value. Bloom never emits
|
|
36
|
+
* conditioned values (its preset vars are unconditional), so the inner shape
|
|
37
|
+
* is intentionally opaque here — declaring the full recursive union would
|
|
38
|
+
* duplicate a large compiler type we never construct.
|
|
39
|
+
*/
|
|
40
|
+
type MediaCondition = readonly unknown[];
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* A single variable value: a `[value]` tuple, optionally guarded by media
|
|
44
|
+
* conditions. Mirrors react-native-css's `VariableValue`. `rootVariables(...).set`
|
|
45
|
+
* takes a `VariableValue[]` (the variable's full ordered value list).
|
|
46
|
+
*/
|
|
47
|
+
type VariableValue =
|
|
48
|
+
| readonly [StyleDescriptor]
|
|
49
|
+
| readonly [StyleDescriptor, readonly MediaCondition[]];
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* The reactive cell react-native-css renders from. `rootVariables(name)`
|
|
53
|
+
* returns one of these; `.set` replaces its value list and notifies the
|
|
54
|
+
* renderer's subscribed effects. Mirrors `Observable<StyleDescriptor, VariableValue[]>`.
|
|
55
|
+
*/
|
|
56
|
+
interface Observable {
|
|
57
|
+
set: (value: readonly VariableValue[]) => void;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* The GLOBAL root-variable family — `rootVariables(name)` returns the
|
|
62
|
+
* observable for the bare variable `name` (no leading `--`). This is the
|
|
63
|
+
* exact callable react-native-css's compiled `:root {}` / `@theme` vars are
|
|
64
|
+
* written through (`StyleCollection.inject` → `rootVariables(name).set(...)`).
|
|
65
|
+
*/
|
|
66
|
+
export const rootVariables: ((name: string) => Observable) & {
|
|
67
|
+
delete(name: string): boolean;
|
|
68
|
+
clear(): void;
|
|
69
|
+
};
|
|
70
|
+
}
|
|
@@ -27,7 +27,8 @@ import { FontLoader } from '../fonts/FontLoader';
|
|
|
27
27
|
import { applyDarkClass, applyColorPresetVars } from './apply-dark-class';
|
|
28
28
|
import { buildTheme } from './build-theme';
|
|
29
29
|
import { type AppColorName } from './color-presets';
|
|
30
|
-
import {
|
|
30
|
+
import { buildScopeVars, getVariableContextProvider } from './color-scope/style-builder';
|
|
31
|
+
import { applyNativeRootVars } from './native-root-vars';
|
|
31
32
|
import {
|
|
32
33
|
readPersistedTheme,
|
|
33
34
|
readPersistedThemeSync,
|
|
@@ -295,6 +296,17 @@ export function BloomThemeProvider({
|
|
|
295
296
|
applyColorPresetVars(colorPreset, resolved);
|
|
296
297
|
}, [effectiveMode, resolved, colorPreset]);
|
|
297
298
|
|
|
299
|
+
// Native only: publish the preset vars into react-native-css's GLOBAL root
|
|
300
|
+
// variable family so they reach the ENTIRE app tree — navigator screens and
|
|
301
|
+
// every portal/modal/bottom-sheet that paints outside the provider's React
|
|
302
|
+
// subtree (and therefore never sees the `VariableContextProvider` vars below).
|
|
303
|
+
// Web writes the same vars to `document.documentElement` above, so this no-ops
|
|
304
|
+
// there. Runs before paint via `useIsomorphicLayoutEffect`, matching the
|
|
305
|
+
// sibling `applyColorPresetVars` side effect.
|
|
306
|
+
useIsomorphicLayoutEffect(() => {
|
|
307
|
+
applyNativeRootVars(colorPreset, resolved);
|
|
308
|
+
}, [colorPreset, resolved]);
|
|
309
|
+
|
|
298
310
|
const contextValue = useMemo<BloomThemeContextValue>(
|
|
299
311
|
() => ({
|
|
300
312
|
theme: buildTheme(colorPreset, resolved, isAdaptive),
|
|
@@ -310,10 +322,15 @@ export function BloomThemeProvider({
|
|
|
310
322
|
const shouldAwait = awaitHydration ?? Boolean(persistKey && storage);
|
|
311
323
|
const isGated = shouldAwait && !hydrated;
|
|
312
324
|
|
|
313
|
-
|
|
314
|
-
|
|
325
|
+
// The full `--name -> value` record for the active preset. On native this is
|
|
326
|
+
// handed to `VariableContextProvider` so descendants resolve `var(--primary)`
|
|
327
|
+
// etc. through react-native-css's real VariableContext. Web writes these to
|
|
328
|
+
// `document.documentElement` via `applyColorPresetVars`, so it's unused there.
|
|
329
|
+
const nativeVars = useMemo(
|
|
330
|
+
() => (Platform.OS === 'web' ? null : buildScopeVars(colorPreset, resolved)),
|
|
315
331
|
[colorPreset, resolved],
|
|
316
332
|
);
|
|
333
|
+
const VariableProvider = getVariableContextProvider();
|
|
317
334
|
|
|
318
335
|
const content = (
|
|
319
336
|
<FontLoader enabled={fonts} fallback={onFontsLoading}>
|
|
@@ -321,12 +338,21 @@ export function BloomThemeProvider({
|
|
|
321
338
|
</FontLoader>
|
|
322
339
|
);
|
|
323
340
|
|
|
341
|
+
if (Platform.OS === 'web') {
|
|
342
|
+
return <BloomThemeContext.Provider value={contextValue}>{content}</BloomThemeContext.Provider>;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
// The flex wrapper is still needed for layout; the preset vars now flow
|
|
346
|
+
// through `VariableContextProvider` rather than an (inert) inline-vars style.
|
|
347
|
+
// If NativeWind isn't installed the wrapper still renders so we never crash.
|
|
348
|
+
const nativeTree = <View style={[{ flex: 1 }, nativeWrapperStyle]}>{content}</View>;
|
|
349
|
+
|
|
324
350
|
return (
|
|
325
351
|
<BloomThemeContext.Provider value={contextValue}>
|
|
326
|
-
{
|
|
327
|
-
|
|
352
|
+
{VariableProvider && nativeVars ? (
|
|
353
|
+
<VariableProvider value={nativeVars}>{nativeTree}</VariableProvider>
|
|
328
354
|
) : (
|
|
329
|
-
|
|
355
|
+
nativeTree
|
|
330
356
|
)}
|
|
331
357
|
</BloomThemeContext.Provider>
|
|
332
358
|
);
|
|
@@ -13,10 +13,13 @@ export function applyDarkClass(resolved: 'light' | 'dark') {
|
|
|
13
13
|
* No-op on native — only affects web.
|
|
14
14
|
*
|
|
15
15
|
* Writes both the raw HSL triples (e.g. `--primary: 185 100% 20%`) and the
|
|
16
|
-
* resolved `--color-*` vars (`--color-primary:
|
|
16
|
+
* resolved `--color-*` vars (`--color-primary: rgb(0 94 102)`) so both
|
|
17
17
|
* shadcn-style `hsl(var(--primary))` plumbing and Tailwind v4 `@theme`
|
|
18
|
-
* utilities resolve consistently.
|
|
19
|
-
*
|
|
18
|
+
* utilities resolve consistently. The resolved vars are emitted as `rgb(...)`
|
|
19
|
+
* (not `hsl(...)`) so the alpha utilities (`bg-primary/10`) resolve on native —
|
|
20
|
+
* see `getPresetVars` / `hslTripletToRgb`. Includes extended tokens (card,
|
|
21
|
+
* chart-*, content-area, sidebar-*) so consumer apps don't need to synthesize
|
|
22
|
+
* them.
|
|
20
23
|
*/
|
|
21
24
|
export function applyColorPresetVars(preset: AppColorName, resolved: 'light' | 'dark') {
|
|
22
25
|
if (Platform.OS !== 'web' || typeof document === 'undefined') return;
|
|
@@ -53,25 +53,25 @@ export const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset> = {
|
|
|
53
53
|
name: 'teal',
|
|
54
54
|
hex: '#005c67',
|
|
55
55
|
light: {
|
|
56
|
-
'--background': '
|
|
56
|
+
'--background': '185 8% 99%',
|
|
57
57
|
'--foreground': '0 0% 12%',
|
|
58
|
-
'--surface': '185
|
|
58
|
+
'--surface': '185 14% 97%',
|
|
59
59
|
'--surface-foreground': '0 0% 12%',
|
|
60
|
-
'--popover': '
|
|
60
|
+
'--popover': '185 12% 99%',
|
|
61
61
|
'--popover-foreground': '0 0% 12%',
|
|
62
62
|
'--primary': '185 100% 20%',
|
|
63
63
|
'--primary-foreground': '0 0% 100%',
|
|
64
|
-
'--secondary': '185
|
|
64
|
+
'--secondary': '185 12% 95%',
|
|
65
65
|
'--secondary-foreground': '0 0% 12%',
|
|
66
|
-
'--muted': '185
|
|
66
|
+
'--muted': '185 12% 95%',
|
|
67
67
|
'--muted-foreground': '185 5% 42%',
|
|
68
|
-
'--accent': '185
|
|
68
|
+
'--accent': '185 12% 95%',
|
|
69
69
|
'--accent-foreground': '0 0% 12%',
|
|
70
70
|
'--destructive': '0 84% 60%',
|
|
71
|
-
'--border': '185
|
|
72
|
-
'--input': '185
|
|
71
|
+
'--border': '185 14% 88%',
|
|
72
|
+
'--input': '185 14% 88%',
|
|
73
73
|
'--ring': '185 100% 20%',
|
|
74
|
-
'--sidebar': '185
|
|
74
|
+
'--sidebar': '185 14% 97%',
|
|
75
75
|
},
|
|
76
76
|
dark: {
|
|
77
77
|
'--background': '185 50% 5%',
|
|
@@ -100,25 +100,25 @@ export const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset> = {
|
|
|
100
100
|
name: 'blue',
|
|
101
101
|
hex: '#1D9BF0',
|
|
102
102
|
light: {
|
|
103
|
-
'--background': '
|
|
103
|
+
'--background': '205 8% 99%',
|
|
104
104
|
'--foreground': '0 0% 12%',
|
|
105
|
-
'--surface': '205
|
|
105
|
+
'--surface': '205 14% 97%',
|
|
106
106
|
'--surface-foreground': '0 0% 12%',
|
|
107
|
-
'--popover': '
|
|
107
|
+
'--popover': '205 12% 99%',
|
|
108
108
|
'--popover-foreground': '0 0% 12%',
|
|
109
109
|
'--primary': '205 87% 53%',
|
|
110
110
|
'--primary-foreground': '0 0% 100%',
|
|
111
|
-
'--secondary': '205
|
|
111
|
+
'--secondary': '205 12% 95%',
|
|
112
112
|
'--secondary-foreground': '0 0% 12%',
|
|
113
|
-
'--muted': '205
|
|
113
|
+
'--muted': '205 12% 95%',
|
|
114
114
|
'--muted-foreground': '205 5% 42%',
|
|
115
|
-
'--accent': '205
|
|
115
|
+
'--accent': '205 12% 95%',
|
|
116
116
|
'--accent-foreground': '0 0% 12%',
|
|
117
117
|
'--destructive': '0 84% 60%',
|
|
118
|
-
'--border': '205
|
|
119
|
-
'--input': '205
|
|
118
|
+
'--border': '205 14% 88%',
|
|
119
|
+
'--input': '205 14% 88%',
|
|
120
120
|
'--ring': '205 87% 53%',
|
|
121
|
-
'--sidebar': '205
|
|
121
|
+
'--sidebar': '205 14% 97%',
|
|
122
122
|
},
|
|
123
123
|
dark: {
|
|
124
124
|
'--background': '205 50% 5%',
|
|
@@ -147,25 +147,25 @@ export const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset> = {
|
|
|
147
147
|
name: 'green',
|
|
148
148
|
hex: '#10B981',
|
|
149
149
|
light: {
|
|
150
|
-
'--background': '
|
|
150
|
+
'--background': '160 8% 99%',
|
|
151
151
|
'--foreground': '0 0% 12%',
|
|
152
|
-
'--surface': '160
|
|
152
|
+
'--surface': '160 14% 97%',
|
|
153
153
|
'--surface-foreground': '0 0% 12%',
|
|
154
|
-
'--popover': '
|
|
154
|
+
'--popover': '160 12% 99%',
|
|
155
155
|
'--popover-foreground': '0 0% 12%',
|
|
156
156
|
'--primary': '160 84% 39%',
|
|
157
157
|
'--primary-foreground': '0 0% 100%',
|
|
158
|
-
'--secondary': '160
|
|
158
|
+
'--secondary': '160 12% 95%',
|
|
159
159
|
'--secondary-foreground': '0 0% 12%',
|
|
160
|
-
'--muted': '160
|
|
160
|
+
'--muted': '160 12% 95%',
|
|
161
161
|
'--muted-foreground': '160 5% 42%',
|
|
162
|
-
'--accent': '160
|
|
162
|
+
'--accent': '160 12% 95%',
|
|
163
163
|
'--accent-foreground': '0 0% 12%',
|
|
164
164
|
'--destructive': '0 84% 60%',
|
|
165
|
-
'--border': '160
|
|
166
|
-
'--input': '160
|
|
165
|
+
'--border': '160 14% 88%',
|
|
166
|
+
'--input': '160 14% 88%',
|
|
167
167
|
'--ring': '160 84% 39%',
|
|
168
|
-
'--sidebar': '160
|
|
168
|
+
'--sidebar': '160 14% 97%',
|
|
169
169
|
},
|
|
170
170
|
dark: {
|
|
171
171
|
'--background': '160 50% 5%',
|
|
@@ -194,25 +194,25 @@ export const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset> = {
|
|
|
194
194
|
name: 'amber',
|
|
195
195
|
hex: '#F59E0B',
|
|
196
196
|
light: {
|
|
197
|
-
'--background': '
|
|
197
|
+
'--background': '38 8% 99%',
|
|
198
198
|
'--foreground': '0 0% 12%',
|
|
199
|
-
'--surface': '38
|
|
199
|
+
'--surface': '38 14% 97%',
|
|
200
200
|
'--surface-foreground': '0 0% 12%',
|
|
201
|
-
'--popover': '
|
|
201
|
+
'--popover': '38 12% 99%',
|
|
202
202
|
'--popover-foreground': '0 0% 12%',
|
|
203
203
|
'--primary': '38 92% 50%',
|
|
204
204
|
'--primary-foreground': '0 0% 0%',
|
|
205
|
-
'--secondary': '38
|
|
205
|
+
'--secondary': '38 12% 95%',
|
|
206
206
|
'--secondary-foreground': '0 0% 12%',
|
|
207
|
-
'--muted': '38
|
|
207
|
+
'--muted': '38 12% 95%',
|
|
208
208
|
'--muted-foreground': '38 5% 42%',
|
|
209
|
-
'--accent': '38
|
|
209
|
+
'--accent': '38 12% 95%',
|
|
210
210
|
'--accent-foreground': '0 0% 12%',
|
|
211
211
|
'--destructive': '0 84% 60%',
|
|
212
|
-
'--border': '38
|
|
213
|
-
'--input': '38
|
|
212
|
+
'--border': '38 14% 88%',
|
|
213
|
+
'--input': '38 14% 88%',
|
|
214
214
|
'--ring': '38 92% 50%',
|
|
215
|
-
'--sidebar': '38
|
|
215
|
+
'--sidebar': '38 14% 97%',
|
|
216
216
|
},
|
|
217
217
|
dark: {
|
|
218
218
|
'--background': '38 50% 5%',
|
|
@@ -241,25 +241,25 @@ export const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset> = {
|
|
|
241
241
|
name: 'yellow',
|
|
242
242
|
hex: '#ffc300',
|
|
243
243
|
light: {
|
|
244
|
-
'--background': '
|
|
244
|
+
'--background': '46 8% 99%',
|
|
245
245
|
'--foreground': '0 0% 12%',
|
|
246
|
-
'--surface': '46
|
|
246
|
+
'--surface': '46 14% 97%',
|
|
247
247
|
'--surface-foreground': '0 0% 12%',
|
|
248
|
-
'--popover': '
|
|
248
|
+
'--popover': '46 12% 99%',
|
|
249
249
|
'--popover-foreground': '0 0% 12%',
|
|
250
250
|
'--primary': '46 100% 50%',
|
|
251
251
|
'--primary-foreground': '0 0% 0%',
|
|
252
|
-
'--secondary': '46
|
|
252
|
+
'--secondary': '46 12% 95%',
|
|
253
253
|
'--secondary-foreground': '0 0% 12%',
|
|
254
|
-
'--muted': '46
|
|
254
|
+
'--muted': '46 12% 95%',
|
|
255
255
|
'--muted-foreground': '46 5% 42%',
|
|
256
|
-
'--accent': '46
|
|
256
|
+
'--accent': '46 12% 95%',
|
|
257
257
|
'--accent-foreground': '0 0% 12%',
|
|
258
258
|
'--destructive': '0 84% 60%',
|
|
259
|
-
'--border': '46
|
|
260
|
-
'--input': '46
|
|
259
|
+
'--border': '46 14% 88%',
|
|
260
|
+
'--input': '46 14% 88%',
|
|
261
261
|
'--ring': '46 100% 50%',
|
|
262
|
-
'--sidebar': '46
|
|
262
|
+
'--sidebar': '46 14% 97%',
|
|
263
263
|
},
|
|
264
264
|
dark: {
|
|
265
265
|
'--background': '46 50% 5%',
|
|
@@ -288,25 +288,25 @@ export const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset> = {
|
|
|
288
288
|
name: 'red',
|
|
289
289
|
hex: '#EF4444',
|
|
290
290
|
light: {
|
|
291
|
-
'--background': '0
|
|
291
|
+
'--background': '0 8% 99%',
|
|
292
292
|
'--foreground': '0 0% 12%',
|
|
293
|
-
'--surface': '0
|
|
293
|
+
'--surface': '0 14% 97%',
|
|
294
294
|
'--surface-foreground': '0 0% 12%',
|
|
295
|
-
'--popover': '0
|
|
295
|
+
'--popover': '0 12% 99%',
|
|
296
296
|
'--popover-foreground': '0 0% 12%',
|
|
297
297
|
'--primary': '0 84% 60%',
|
|
298
298
|
'--primary-foreground': '0 0% 100%',
|
|
299
|
-
'--secondary': '0
|
|
299
|
+
'--secondary': '0 12% 95%',
|
|
300
300
|
'--secondary-foreground': '0 0% 12%',
|
|
301
|
-
'--muted': '0
|
|
301
|
+
'--muted': '0 12% 95%',
|
|
302
302
|
'--muted-foreground': '0 5% 42%',
|
|
303
|
-
'--accent': '0
|
|
303
|
+
'--accent': '0 12% 95%',
|
|
304
304
|
'--accent-foreground': '0 0% 12%',
|
|
305
305
|
'--destructive': '0 84% 60%',
|
|
306
|
-
'--border': '0
|
|
307
|
-
'--input': '0
|
|
306
|
+
'--border': '0 14% 88%',
|
|
307
|
+
'--input': '0 14% 88%',
|
|
308
308
|
'--ring': '0 84% 60%',
|
|
309
|
-
'--sidebar': '0
|
|
309
|
+
'--sidebar': '0 14% 97%',
|
|
310
310
|
},
|
|
311
311
|
dark: {
|
|
312
312
|
'--background': '0 50% 5%',
|
|
@@ -335,25 +335,25 @@ export const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset> = {
|
|
|
335
335
|
name: 'purple',
|
|
336
336
|
hex: '#8B5CF6',
|
|
337
337
|
light: {
|
|
338
|
-
'--background': '
|
|
338
|
+
'--background': '258 8% 99%',
|
|
339
339
|
'--foreground': '0 0% 12%',
|
|
340
|
-
'--surface': '258
|
|
340
|
+
'--surface': '258 14% 97%',
|
|
341
341
|
'--surface-foreground': '0 0% 12%',
|
|
342
|
-
'--popover': '
|
|
342
|
+
'--popover': '258 12% 99%',
|
|
343
343
|
'--popover-foreground': '0 0% 12%',
|
|
344
344
|
'--primary': '258 90% 66%',
|
|
345
345
|
'--primary-foreground': '0 0% 100%',
|
|
346
|
-
'--secondary': '258
|
|
346
|
+
'--secondary': '258 12% 95%',
|
|
347
347
|
'--secondary-foreground': '0 0% 12%',
|
|
348
|
-
'--muted': '258
|
|
348
|
+
'--muted': '258 12% 95%',
|
|
349
349
|
'--muted-foreground': '258 5% 42%',
|
|
350
|
-
'--accent': '258
|
|
350
|
+
'--accent': '258 12% 95%',
|
|
351
351
|
'--accent-foreground': '0 0% 12%',
|
|
352
352
|
'--destructive': '0 84% 60%',
|
|
353
|
-
'--border': '258
|
|
354
|
-
'--input': '258
|
|
353
|
+
'--border': '258 14% 88%',
|
|
354
|
+
'--input': '258 14% 88%',
|
|
355
355
|
'--ring': '258 90% 66%',
|
|
356
|
-
'--sidebar': '258
|
|
356
|
+
'--sidebar': '258 14% 97%',
|
|
357
357
|
},
|
|
358
358
|
dark: {
|
|
359
359
|
'--background': '258 50% 5%',
|
|
@@ -382,25 +382,25 @@ export const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset> = {
|
|
|
382
382
|
name: 'pink',
|
|
383
383
|
hex: '#EC4899',
|
|
384
384
|
light: {
|
|
385
|
-
'--background': '
|
|
385
|
+
'--background': '330 8% 99%',
|
|
386
386
|
'--foreground': '0 0% 12%',
|
|
387
|
-
'--surface': '330
|
|
387
|
+
'--surface': '330 14% 97%',
|
|
388
388
|
'--surface-foreground': '0 0% 12%',
|
|
389
|
-
'--popover': '
|
|
389
|
+
'--popover': '330 12% 99%',
|
|
390
390
|
'--popover-foreground': '0 0% 12%',
|
|
391
391
|
'--primary': '330 81% 60%',
|
|
392
392
|
'--primary-foreground': '0 0% 100%',
|
|
393
|
-
'--secondary': '330
|
|
393
|
+
'--secondary': '330 12% 95%',
|
|
394
394
|
'--secondary-foreground': '0 0% 12%',
|
|
395
|
-
'--muted': '330
|
|
395
|
+
'--muted': '330 12% 95%',
|
|
396
396
|
'--muted-foreground': '330 5% 42%',
|
|
397
|
-
'--accent': '330
|
|
397
|
+
'--accent': '330 12% 95%',
|
|
398
398
|
'--accent-foreground': '0 0% 12%',
|
|
399
399
|
'--destructive': '0 84% 60%',
|
|
400
|
-
'--border': '330
|
|
401
|
-
'--input': '330
|
|
400
|
+
'--border': '330 14% 88%',
|
|
401
|
+
'--input': '330 14% 88%',
|
|
402
402
|
'--ring': '330 81% 60%',
|
|
403
|
-
'--sidebar': '330
|
|
403
|
+
'--sidebar': '330 14% 97%',
|
|
404
404
|
},
|
|
405
405
|
dark: {
|
|
406
406
|
'--background': '330 50% 5%',
|
|
@@ -429,25 +429,25 @@ export const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset> = {
|
|
|
429
429
|
name: 'sky',
|
|
430
430
|
hex: '#0EA5E9',
|
|
431
431
|
light: {
|
|
432
|
-
'--background': '
|
|
432
|
+
'--background': '199 8% 99%',
|
|
433
433
|
'--foreground': '0 0% 12%',
|
|
434
|
-
'--surface': '199
|
|
434
|
+
'--surface': '199 14% 97%',
|
|
435
435
|
'--surface-foreground': '0 0% 12%',
|
|
436
|
-
'--popover': '
|
|
436
|
+
'--popover': '199 12% 99%',
|
|
437
437
|
'--popover-foreground': '0 0% 12%',
|
|
438
438
|
'--primary': '199 89% 48%',
|
|
439
439
|
'--primary-foreground': '0 0% 100%',
|
|
440
|
-
'--secondary': '199
|
|
440
|
+
'--secondary': '199 12% 95%',
|
|
441
441
|
'--secondary-foreground': '0 0% 12%',
|
|
442
|
-
'--muted': '199
|
|
442
|
+
'--muted': '199 12% 95%',
|
|
443
443
|
'--muted-foreground': '199 5% 42%',
|
|
444
|
-
'--accent': '199
|
|
444
|
+
'--accent': '199 12% 95%',
|
|
445
445
|
'--accent-foreground': '0 0% 12%',
|
|
446
446
|
'--destructive': '0 84% 60%',
|
|
447
|
-
'--border': '199
|
|
448
|
-
'--input': '199
|
|
447
|
+
'--border': '199 14% 88%',
|
|
448
|
+
'--input': '199 14% 88%',
|
|
449
449
|
'--ring': '199 89% 48%',
|
|
450
|
-
'--sidebar': '199
|
|
450
|
+
'--sidebar': '199 14% 97%',
|
|
451
451
|
},
|
|
452
452
|
dark: {
|
|
453
453
|
'--background': '199 50% 5%',
|
|
@@ -476,25 +476,25 @@ export const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset> = {
|
|
|
476
476
|
name: 'orange',
|
|
477
477
|
hex: '#F97316',
|
|
478
478
|
light: {
|
|
479
|
-
'--background': '
|
|
479
|
+
'--background': '25 8% 99%',
|
|
480
480
|
'--foreground': '0 0% 12%',
|
|
481
|
-
'--surface': '25
|
|
481
|
+
'--surface': '25 14% 97%',
|
|
482
482
|
'--surface-foreground': '0 0% 12%',
|
|
483
|
-
'--popover': '
|
|
483
|
+
'--popover': '25 12% 99%',
|
|
484
484
|
'--popover-foreground': '0 0% 12%',
|
|
485
485
|
'--primary': '25 95% 53%',
|
|
486
486
|
'--primary-foreground': '0 0% 100%',
|
|
487
|
-
'--secondary': '25
|
|
487
|
+
'--secondary': '25 12% 95%',
|
|
488
488
|
'--secondary-foreground': '0 0% 12%',
|
|
489
|
-
'--muted': '25
|
|
489
|
+
'--muted': '25 12% 95%',
|
|
490
490
|
'--muted-foreground': '25 5% 42%',
|
|
491
|
-
'--accent': '25
|
|
491
|
+
'--accent': '25 12% 95%',
|
|
492
492
|
'--accent-foreground': '0 0% 12%',
|
|
493
493
|
'--destructive': '0 84% 60%',
|
|
494
|
-
'--border': '25
|
|
495
|
-
'--input': '25
|
|
494
|
+
'--border': '25 14% 88%',
|
|
495
|
+
'--input': '25 14% 88%',
|
|
496
496
|
'--ring': '25 95% 53%',
|
|
497
|
-
'--sidebar': '25
|
|
497
|
+
'--sidebar': '25 14% 97%',
|
|
498
498
|
},
|
|
499
499
|
dark: {
|
|
500
500
|
'--background': '25 50% 5%',
|
|
@@ -523,25 +523,25 @@ export const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset> = {
|
|
|
523
523
|
name: 'mint',
|
|
524
524
|
hex: '#14B8A6',
|
|
525
525
|
light: {
|
|
526
|
-
'--background': '
|
|
526
|
+
'--background': '173 8% 99%',
|
|
527
527
|
'--foreground': '0 0% 12%',
|
|
528
|
-
'--surface': '173
|
|
528
|
+
'--surface': '173 14% 97%',
|
|
529
529
|
'--surface-foreground': '0 0% 12%',
|
|
530
|
-
'--popover': '
|
|
530
|
+
'--popover': '173 12% 99%',
|
|
531
531
|
'--popover-foreground': '0 0% 12%',
|
|
532
532
|
'--primary': '173 80% 40%',
|
|
533
533
|
'--primary-foreground': '0 0% 100%',
|
|
534
|
-
'--secondary': '173
|
|
534
|
+
'--secondary': '173 12% 95%',
|
|
535
535
|
'--secondary-foreground': '0 0% 12%',
|
|
536
|
-
'--muted': '173
|
|
536
|
+
'--muted': '173 12% 95%',
|
|
537
537
|
'--muted-foreground': '173 5% 42%',
|
|
538
|
-
'--accent': '173
|
|
538
|
+
'--accent': '173 12% 95%',
|
|
539
539
|
'--accent-foreground': '0 0% 12%',
|
|
540
540
|
'--destructive': '0 84% 60%',
|
|
541
|
-
'--border': '173
|
|
542
|
-
'--input': '173
|
|
541
|
+
'--border': '173 14% 88%',
|
|
542
|
+
'--input': '173 14% 88%',
|
|
543
543
|
'--ring': '173 80% 40%',
|
|
544
|
-
'--sidebar': '173
|
|
544
|
+
'--sidebar': '173 14% 97%',
|
|
545
545
|
},
|
|
546
546
|
dark: {
|
|
547
547
|
'--background': '173 50% 5%',
|
|
@@ -570,25 +570,25 @@ export const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset> = {
|
|
|
570
570
|
name: 'oxy',
|
|
571
571
|
hex: '#c46ede',
|
|
572
572
|
light: {
|
|
573
|
-
'--background': '
|
|
573
|
+
'--background': '277 8% 99%',
|
|
574
574
|
'--foreground': '0 0% 12%',
|
|
575
|
-
'--surface': '277
|
|
575
|
+
'--surface': '277 14% 97%',
|
|
576
576
|
'--surface-foreground': '0 0% 12%',
|
|
577
|
-
'--popover': '
|
|
577
|
+
'--popover': '277 12% 99%',
|
|
578
578
|
'--popover-foreground': '0 0% 12%',
|
|
579
579
|
'--primary': '277 66% 56%',
|
|
580
580
|
'--primary-foreground': '0 0% 100%',
|
|
581
|
-
'--secondary': '277
|
|
581
|
+
'--secondary': '277 12% 95%',
|
|
582
582
|
'--secondary-foreground': '0 0% 12%',
|
|
583
|
-
'--muted': '277
|
|
583
|
+
'--muted': '277 12% 95%',
|
|
584
584
|
'--muted-foreground': '277 5% 42%',
|
|
585
|
-
'--accent': '277
|
|
585
|
+
'--accent': '277 12% 95%',
|
|
586
586
|
'--accent-foreground': '0 0% 12%',
|
|
587
587
|
'--destructive': '0 84% 60%',
|
|
588
|
-
'--border': '277
|
|
589
|
-
'--input': '277
|
|
588
|
+
'--border': '277 14% 88%',
|
|
589
|
+
'--input': '277 14% 88%',
|
|
590
590
|
'--ring': '277 66% 56%',
|
|
591
|
-
'--sidebar': '277
|
|
591
|
+
'--sidebar': '277 14% 97%',
|
|
592
592
|
},
|
|
593
593
|
dark: {
|
|
594
594
|
'--background': '277 50% 5%',
|
|
@@ -616,25 +616,25 @@ export const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset> = {
|
|
|
616
616
|
name: 'faircoin',
|
|
617
617
|
hex: '#9ffb50',
|
|
618
618
|
light: {
|
|
619
|
-
'--background': '
|
|
619
|
+
'--background': '92 8% 99%',
|
|
620
620
|
'--foreground': '0 0% 12%',
|
|
621
|
-
'--surface': '92
|
|
621
|
+
'--surface': '92 16% 95%',
|
|
622
622
|
'--surface-foreground': '0 0% 12%',
|
|
623
|
-
'--popover': '
|
|
623
|
+
'--popover': '92 12% 99%',
|
|
624
624
|
'--popover-foreground': '0 0% 12%',
|
|
625
625
|
'--primary': '92 90% 25%',
|
|
626
626
|
'--primary-foreground': '0 0% 100%',
|
|
627
|
-
'--secondary': '92
|
|
627
|
+
'--secondary': '92 14% 92%',
|
|
628
628
|
'--secondary-foreground': '0 0% 12%',
|
|
629
|
-
'--muted': '92
|
|
630
|
-
'--muted-foreground': '
|
|
631
|
-
'--accent': '92
|
|
629
|
+
'--muted': '92 12% 93%',
|
|
630
|
+
'--muted-foreground': '92 5% 40%',
|
|
631
|
+
'--accent': '92 14% 92%',
|
|
632
632
|
'--accent-foreground': '0 0% 12%',
|
|
633
633
|
'--destructive': '0 84% 60%',
|
|
634
|
-
'--border': '92
|
|
635
|
-
'--input': '92
|
|
634
|
+
'--border': '92 12% 85%',
|
|
635
|
+
'--input': '92 12% 85%',
|
|
636
636
|
'--ring': '92 90% 25%',
|
|
637
|
-
'--sidebar': '92
|
|
637
|
+
'--sidebar': '92 16% 95%',
|
|
638
638
|
},
|
|
639
639
|
dark: {
|
|
640
640
|
'--background': '69 54% 8%',
|