@oxyhq/bloom 0.6.13 → 0.6.14
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/hooks/useControllableState.js +35 -0
- package/lib/commonjs/hooks/useControllableState.js.map +1 -0
- package/lib/commonjs/theme/BloomThemeProvider.js +134 -112
- package/lib/commonjs/theme/BloomThemeProvider.js.map +1 -1
- package/lib/commonjs/theme/build-theme.js +110 -0
- package/lib/commonjs/theme/build-theme.js.map +1 -0
- package/lib/commonjs/theme/color-presets.js +15 -0
- package/lib/commonjs/theme/color-presets.js.map +1 -1
- package/lib/commonjs/theme/index.js +15 -1
- package/lib/commonjs/theme/index.js.map +1 -1
- package/lib/commonjs/theme/persistence.js +127 -0
- package/lib/commonjs/theme/persistence.js.map +1 -0
- package/lib/commonjs/theme/use-isomorphic-layout-effect.js +15 -0
- package/lib/commonjs/theme/use-isomorphic-layout-effect.js.map +1 -0
- package/lib/module/hooks/useControllableState.js +31 -0
- package/lib/module/hooks/useControllableState.js.map +1 -0
- package/lib/module/theme/BloomThemeProvider.js +135 -112
- package/lib/module/theme/BloomThemeProvider.js.map +1 -1
- package/lib/module/theme/build-theme.js +105 -0
- package/lib/module/theme/build-theme.js.map +1 -0
- package/lib/module/theme/color-presets.js +15 -0
- package/lib/module/theme/color-presets.js.map +1 -1
- package/lib/module/theme/index.js +3 -1
- package/lib/module/theme/index.js.map +1 -1
- package/lib/module/theme/persistence.js +120 -0
- package/lib/module/theme/persistence.js.map +1 -0
- package/lib/module/theme/use-isomorphic-layout-effect.js +12 -0
- package/lib/module/theme/use-isomorphic-layout-effect.js.map +1 -0
- package/lib/typescript/commonjs/hooks/useControllableState.d.ts +19 -0
- package/lib/typescript/commonjs/hooks/useControllableState.d.ts.map +1 -0
- package/lib/typescript/commonjs/theme/BloomThemeProvider.d.ts +29 -12
- package/lib/typescript/commonjs/theme/BloomThemeProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/build-theme.d.ts +20 -0
- package/lib/typescript/commonjs/theme/build-theme.d.ts.map +1 -0
- package/lib/typescript/commonjs/theme/color-presets.d.ts +18 -3
- package/lib/typescript/commonjs/theme/color-presets.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/index.d.ts +7 -4
- package/lib/typescript/commonjs/theme/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/persistence.d.ts +48 -0
- package/lib/typescript/commonjs/theme/persistence.d.ts.map +1 -0
- package/lib/typescript/commonjs/theme/use-isomorphic-layout-effect.d.ts +8 -0
- package/lib/typescript/commonjs/theme/use-isomorphic-layout-effect.d.ts.map +1 -0
- package/lib/typescript/module/hooks/useControllableState.d.ts +19 -0
- package/lib/typescript/module/hooks/useControllableState.d.ts.map +1 -0
- package/lib/typescript/module/theme/BloomThemeProvider.d.ts +29 -12
- package/lib/typescript/module/theme/BloomThemeProvider.d.ts.map +1 -1
- package/lib/typescript/module/theme/build-theme.d.ts +20 -0
- package/lib/typescript/module/theme/build-theme.d.ts.map +1 -0
- package/lib/typescript/module/theme/color-presets.d.ts +18 -3
- package/lib/typescript/module/theme/color-presets.d.ts.map +1 -1
- package/lib/typescript/module/theme/index.d.ts +7 -4
- package/lib/typescript/module/theme/index.d.ts.map +1 -1
- package/lib/typescript/module/theme/persistence.d.ts +48 -0
- package/lib/typescript/module/theme/persistence.d.ts.map +1 -0
- package/lib/typescript/module/theme/use-isomorphic-layout-effect.d.ts +8 -0
- package/lib/typescript/module/theme/use-isomorphic-layout-effect.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/__tests__/BloomThemeProvider.modes.test.tsx +159 -0
- package/src/__tests__/BloomThemeProvider.persistence.test.tsx +217 -0
- package/src/__tests__/persistence.test.ts +155 -0
- package/src/__tests__/theme.test.ts +1 -1
- package/src/hooks/useControllableState.ts +44 -0
- package/src/theme/BloomThemeProvider.tsx +219 -157
- package/src/theme/build-theme.ts +128 -0
- package/src/theme/color-presets.ts +19 -3
- package/src/theme/index.ts +16 -4
- package/src/theme/persistence.ts +149 -0
- package/src/theme/use-isomorphic-layout-effect.ts +10 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Platform } from 'react-native';
|
|
4
|
+
import { APP_COLOR_PRESETS } from "./color-presets.js";
|
|
5
|
+
import { getAdaptiveColors } from "./adaptive-colors.js";
|
|
6
|
+
/**
|
|
7
|
+
* Status colors used across the design system. Independent of the accent
|
|
8
|
+
* preset so semantic intent stays stable across themes.
|
|
9
|
+
*/
|
|
10
|
+
export const STATUS_COLORS = {
|
|
11
|
+
success: '#10B981',
|
|
12
|
+
error: '#EF4444',
|
|
13
|
+
warning: '#F59E0B',
|
|
14
|
+
info: '#3B82F6'
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Convert a shadcn-style HSL CSS variable (`'H S% L%'` or `'H S% L% / A'`)
|
|
19
|
+
* into a fully-resolved `hsl()` / `hsla()` color string consumable by both
|
|
20
|
+
* web `style` and React Native.
|
|
21
|
+
*/
|
|
22
|
+
function hslVarToColor(hslVar) {
|
|
23
|
+
const parts = hslVar.split('/').map(p => p.trim());
|
|
24
|
+
const triple = parts[0] ?? '0 0% 0%';
|
|
25
|
+
const components = triple.replace(/\s+/g, ', ');
|
|
26
|
+
if (parts.length === 2) {
|
|
27
|
+
const alpha = parseFloat(parts[1] ?? '100') / 100;
|
|
28
|
+
return `hsla(${components}, ${alpha})`;
|
|
29
|
+
}
|
|
30
|
+
return `hsl(${components})`;
|
|
31
|
+
}
|
|
32
|
+
function extractHue(hslVar) {
|
|
33
|
+
const first = hslVar.split(/\s+/)[0] ?? '0';
|
|
34
|
+
const hue = parseInt(first, 10);
|
|
35
|
+
return Number.isFinite(hue) ? hue : 0;
|
|
36
|
+
}
|
|
37
|
+
function hsl(h, s, l) {
|
|
38
|
+
return `hsl(${h}, ${s}%, ${l}%)`;
|
|
39
|
+
}
|
|
40
|
+
function readToken(tokens, key, fallback = '0 0% 0%') {
|
|
41
|
+
return hslVarToColor(tokens[key] ?? fallback);
|
|
42
|
+
}
|
|
43
|
+
function buildColorsFromPreset(preset, resolved) {
|
|
44
|
+
const config = APP_COLOR_PRESETS[preset];
|
|
45
|
+
const tokens = resolved === 'dark' ? config.dark : config.light;
|
|
46
|
+
const isDark = resolved === 'dark';
|
|
47
|
+
const primaryHue = extractHue(tokens['--primary'] ?? '0 0% 50%');
|
|
48
|
+
const destructiveHue = extractHue(tokens['--destructive'] ?? '0 0% 0%');
|
|
49
|
+
const background = readToken(tokens, '--background');
|
|
50
|
+
const surface = readToken(tokens, '--surface');
|
|
51
|
+
const mutedForeground = readToken(tokens, '--muted-foreground', '0 0% 50%');
|
|
52
|
+
const primaryColor = readToken(tokens, '--primary', '0 0% 50%');
|
|
53
|
+
const primaryForeground = readToken(tokens, '--primary-foreground', '0 0% 100%');
|
|
54
|
+
return {
|
|
55
|
+
background,
|
|
56
|
+
backgroundSecondary: surface,
|
|
57
|
+
backgroundTertiary: readToken(tokens, '--muted'),
|
|
58
|
+
text: readToken(tokens, '--foreground', '0 0% 100%'),
|
|
59
|
+
textSecondary: mutedForeground,
|
|
60
|
+
textTertiary: mutedForeground,
|
|
61
|
+
border: readToken(tokens, '--border', '0 0% 20%'),
|
|
62
|
+
borderLight: readToken(tokens, '--input', '0 0% 20%'),
|
|
63
|
+
primary: primaryColor,
|
|
64
|
+
primaryForeground,
|
|
65
|
+
// Legacy aliases retained for backwards compatibility with downstream
|
|
66
|
+
// consumers. `primaryLight` should be a brand tint, not the surface, but
|
|
67
|
+
// changing this is a breaking change handled in a separate major.
|
|
68
|
+
primaryLight: surface,
|
|
69
|
+
primaryDark: background,
|
|
70
|
+
// `secondary` historically mirrored `primary`. Retained for compatibility.
|
|
71
|
+
secondary: primaryColor,
|
|
72
|
+
tint: primaryColor,
|
|
73
|
+
icon: mutedForeground,
|
|
74
|
+
iconActive: primaryColor,
|
|
75
|
+
...STATUS_COLORS,
|
|
76
|
+
primarySubtle: isDark ? hsl(primaryHue, 50, 10) : hsl(primaryHue, 70, 93),
|
|
77
|
+
primarySubtleForeground: isDark ? hsl(primaryHue, 70, 65) : hsl(primaryHue, 90, 25),
|
|
78
|
+
negative: hsl(destructiveHue, 84, 45),
|
|
79
|
+
negativeForeground: '#FFFFFF',
|
|
80
|
+
negativeSubtle: isDark ? hsl(destructiveHue, 50, 10) : hsl(destructiveHue, 90, 95),
|
|
81
|
+
negativeSubtleForeground: isDark ? hsl(destructiveHue, 70, 65) : hsl(destructiveHue, 80, 40),
|
|
82
|
+
contrast50: isDark ? hsl(primaryHue, 15, 12) : hsl(primaryHue, 10, 93),
|
|
83
|
+
card: surface,
|
|
84
|
+
shadow: isDark ? 'rgba(0, 0, 0, 0.3)' : 'rgba(0, 0, 0, 0.1)',
|
|
85
|
+
overlay: 'rgba(0, 0, 0, 0.5)'
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Build a `Theme` from a color preset and a resolved light/dark mode.
|
|
91
|
+
*
|
|
92
|
+
* When `isAdaptive` is true and the platform exposes adaptive (Material You /
|
|
93
|
+
* iOS dynamic) colors, those override the preset-derived palette.
|
|
94
|
+
*/
|
|
95
|
+
export function buildTheme(preset, resolved, isAdaptive = false) {
|
|
96
|
+
const adaptive = isAdaptive && Platform.OS !== 'web' ? getAdaptiveColors() : undefined;
|
|
97
|
+
const colors = adaptive ?? buildColorsFromPreset(preset, resolved);
|
|
98
|
+
return {
|
|
99
|
+
mode: resolved,
|
|
100
|
+
colors,
|
|
101
|
+
isDark: resolved === 'dark',
|
|
102
|
+
isLight: resolved === 'light'
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=build-theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Platform","APP_COLOR_PRESETS","getAdaptiveColors","STATUS_COLORS","success","error","warning","info","hslVarToColor","hslVar","parts","split","map","p","trim","triple","components","replace","length","alpha","parseFloat","extractHue","first","hue","parseInt","Number","isFinite","hsl","h","s","l","readToken","tokens","key","fallback","buildColorsFromPreset","preset","resolved","config","dark","light","isDark","primaryHue","destructiveHue","background","surface","mutedForeground","primaryColor","primaryForeground","backgroundSecondary","backgroundTertiary","text","textSecondary","textTertiary","border","borderLight","primary","primaryLight","primaryDark","secondary","tint","icon","iconActive","primarySubtle","primarySubtleForeground","negative","negativeForeground","negativeSubtle","negativeSubtleForeground","contrast50","card","shadow","overlay","buildTheme","isAdaptive","adaptive","OS","undefined","colors","mode","isLight"],"sourceRoot":"../../../src","sources":["theme/build-theme.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Palette tokens for a single mode (light or dark) of a color preset.
|
|
5
|
+
*
|
|
6
|
+
* Keys carry a leading `--` for historical reasons (shadcn-style CSS variable
|
|
7
|
+
* names) — keep in mind the values are platform-agnostic **raw HSL triples**
|
|
8
|
+
* (e.g. `'185 100% 20%'` or `'185 100% 20% / 0.5'`), not CSS-resolved colors.
|
|
9
|
+
* The same map drives both:
|
|
10
|
+
* - the web layer (written verbatim into `document.documentElement.style`
|
|
11
|
+
* so Tailwind's `hsl(var(--primary))` plumbing picks them up), and
|
|
12
|
+
* - the native layer (`buildTheme` resolves them into `hsl(...)` strings
|
|
13
|
+
* consumable by React Native styles).
|
|
14
|
+
*
|
|
15
|
+
* The `--` prefix is an implementation detail we will drop in a future major.
|
|
16
|
+
*/
|
|
17
|
+
|
|
3
18
|
export const APP_COLOR_NAMES = ['teal', 'blue', 'green', 'amber', 'yellow', 'red', 'purple', 'pink', 'sky', 'orange', 'mint', 'oxy', 'faircoin'];
|
|
4
19
|
export const HEX_TO_APP_COLOR = {
|
|
5
20
|
'#005c67': 'teal',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["APP_COLOR_NAMES","HEX_TO_APP_COLOR","hexToAppColorName","hex","toLowerCase","APP_COLOR_PRESETS","teal","name","light","dark","blue","green","amber","yellow","red","purple","pink","sky","orange","mint","oxy","faircoin"],"sourceRoot":"../../../src","sources":["theme/color-presets.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["APP_COLOR_NAMES","HEX_TO_APP_COLOR","hexToAppColorName","hex","toLowerCase","APP_COLOR_PRESETS","teal","name","light","dark","blue","green","amber","yellow","red","purple","pink","sky","orange","mint","oxy","faircoin"],"sourceRoot":"../../../src","sources":["theme/color-presets.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
export { BloomThemeProvider, BloomColorScope
|
|
3
|
+
export { BloomThemeProvider, BloomColorScope } from "./BloomThemeProvider.js";
|
|
4
|
+
export { buildTheme, STATUS_COLORS } from "./build-theme.js";
|
|
4
5
|
export { useTheme, useThemeColor, useBloomTheme } from "./use-theme.js";
|
|
5
6
|
export { APP_COLOR_NAMES, APP_COLOR_PRESETS, HEX_TO_APP_COLOR, hexToAppColorName } from "./color-presets.js";
|
|
6
7
|
export { applyDarkClass } from "./apply-dark-class.js";
|
|
7
8
|
export { setColorSchemeSafe } from "./set-color-scheme-safe.js";
|
|
8
9
|
export { initCssInteropDarkMode } from "./init-css-interop.js";
|
|
10
|
+
export { webLocalStorage } from "./persistence.js";
|
|
9
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BloomThemeProvider","BloomColorScope","buildTheme","useTheme","useThemeColor","useBloomTheme","APP_COLOR_NAMES","APP_COLOR_PRESETS","HEX_TO_APP_COLOR","hexToAppColorName","applyDarkClass","setColorSchemeSafe","initCssInteropDarkMode"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;AAAA,SAASA,kBAAkB,EAAEC,eAAe,
|
|
1
|
+
{"version":3,"names":["BloomThemeProvider","BloomColorScope","buildTheme","STATUS_COLORS","useTheme","useThemeColor","useBloomTheme","APP_COLOR_NAMES","APP_COLOR_PRESETS","HEX_TO_APP_COLOR","hexToAppColorName","applyDarkClass","setColorSchemeSafe","initCssInteropDarkMode","webLocalStorage"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;AAAA,SAASA,kBAAkB,EAAEC,eAAe,QAAQ,yBAAsB;AAM1E,SAASC,UAAU,EAAEC,aAAa,QAAQ,kBAAe;AACzD,SAASC,QAAQ,EAAEC,aAAa,EAAEC,aAAa,QAAQ,gBAAa;AAGpE,SACEC,eAAe,EACfC,iBAAiB,EACjBC,gBAAgB,EAChBC,iBAAiB,QACZ,oBAAiB;AACxB,SAASC,cAAc,QAAQ,uBAAoB;AACnD,SAASC,kBAAkB,QAAQ,4BAAyB;AAC5D,SAASC,sBAAsB,QAAQ,uBAAoB;AAE3D,SAASC,eAAe,QAAQ,kBAAe","ignoreList":[]}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Platform } from 'react-native';
|
|
4
|
+
import { APP_COLOR_NAMES } from "./color-presets.js";
|
|
5
|
+
const VALID_PRESETS = new Set(APP_COLOR_NAMES);
|
|
6
|
+
const VALID_MODES = new Set(['light', 'dark', 'system', 'adaptive']);
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Storage adapter for persisting Bloom theme state.
|
|
10
|
+
*
|
|
11
|
+
* Methods may be synchronous or asynchronous. The provider awaits both, so
|
|
12
|
+
* `AsyncStorage`-compatible adapters on native and `localStorage`-backed
|
|
13
|
+
* adapters on web both work without consumer-side branching.
|
|
14
|
+
*
|
|
15
|
+
* On web, a synchronous adapter lets Bloom hydrate before the first paint —
|
|
16
|
+
* preventing a flash of the default palette. On native, the provider can
|
|
17
|
+
* gate `children` rendering until hydration completes (see
|
|
18
|
+
* `awaitHydration` on `BloomThemeProvider`).
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
const isValidMode = value => typeof value === 'string' && VALID_MODES.has(value);
|
|
22
|
+
const isValidPreset = value => typeof value === 'string' && VALID_PRESETS.has(value);
|
|
23
|
+
function parsePersistedTheme(raw) {
|
|
24
|
+
if (typeof raw !== 'string') return null;
|
|
25
|
+
let parsed;
|
|
26
|
+
try {
|
|
27
|
+
parsed = JSON.parse(raw);
|
|
28
|
+
} catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
if (!parsed || typeof parsed !== 'object') return null;
|
|
32
|
+
const obj = parsed;
|
|
33
|
+
const mode = isValidMode(obj.mode) ? obj.mode : undefined;
|
|
34
|
+
const colorPreset = isValidPreset(obj.colorPreset) ? obj.colorPreset : undefined;
|
|
35
|
+
if (!mode && !colorPreset) return null;
|
|
36
|
+
return {
|
|
37
|
+
mode,
|
|
38
|
+
colorPreset
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const isThenable = value => !!value && typeof value.then === 'function';
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Read persisted state during the first render. Returns a discriminated union
|
|
45
|
+
* so the provider can tell apart:
|
|
46
|
+
* - `none`: persistence not configured.
|
|
47
|
+
* - `sync`: adapter returned a value synchronously (web `localStorage`).
|
|
48
|
+
* Provider can render immediately with the resolved state.
|
|
49
|
+
* - `async`: adapter returned a Promise (native `AsyncStorage`). Provider
|
|
50
|
+
* must await `readPersistedTheme` before painting if gating is enabled.
|
|
51
|
+
*/
|
|
52
|
+
export function readPersistedThemeSync(persistKey, storage) {
|
|
53
|
+
if (!persistKey || !storage) return {
|
|
54
|
+
kind: 'none'
|
|
55
|
+
};
|
|
56
|
+
let raw;
|
|
57
|
+
try {
|
|
58
|
+
raw = storage.getItem(persistKey);
|
|
59
|
+
} catch {
|
|
60
|
+
return {
|
|
61
|
+
kind: 'sync',
|
|
62
|
+
state: null
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (isThenable(raw)) return {
|
|
66
|
+
kind: 'async'
|
|
67
|
+
};
|
|
68
|
+
return {
|
|
69
|
+
kind: 'sync',
|
|
70
|
+
state: parsePersistedTheme(raw)
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
export async function readPersistedTheme(persistKey, storage) {
|
|
74
|
+
if (!persistKey || !storage) return null;
|
|
75
|
+
try {
|
|
76
|
+
const raw = await storage.getItem(persistKey);
|
|
77
|
+
return parsePersistedTheme(raw);
|
|
78
|
+
} catch {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
export async function writePersistedTheme(persistKey, storage, state) {
|
|
83
|
+
if (!persistKey || !storage) return;
|
|
84
|
+
const payload = {};
|
|
85
|
+
if (state.mode !== undefined) payload.mode = state.mode;
|
|
86
|
+
if (state.colorPreset !== undefined) payload.colorPreset = state.colorPreset;
|
|
87
|
+
try {
|
|
88
|
+
await storage.setItem(persistKey, JSON.stringify(payload));
|
|
89
|
+
} catch {
|
|
90
|
+
// Persistence is best-effort: ignore quota and privacy-mode errors.
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* `localStorage`-backed storage adapter. Only defined on web; on native the
|
|
96
|
+
* export is `undefined` so consumers pass an `AsyncStorage` adapter explicitly.
|
|
97
|
+
*/
|
|
98
|
+
export const webLocalStorage = (() => {
|
|
99
|
+
if (Platform.OS !== 'web') return undefined;
|
|
100
|
+
if (typeof globalThis === 'undefined') return undefined;
|
|
101
|
+
if (!('localStorage' in globalThis)) return undefined;
|
|
102
|
+
const ls = globalThis.localStorage;
|
|
103
|
+
return {
|
|
104
|
+
getItem: key => {
|
|
105
|
+
try {
|
|
106
|
+
return ls.getItem(key);
|
|
107
|
+
} catch {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
setItem: (key, value) => {
|
|
112
|
+
try {
|
|
113
|
+
ls.setItem(key, value);
|
|
114
|
+
} catch {
|
|
115
|
+
// Swallow quota / privacy-mode errors.
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
})();
|
|
120
|
+
//# sourceMappingURL=persistence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Platform","APP_COLOR_NAMES","VALID_PRESETS","Set","VALID_MODES","isValidMode","value","has","isValidPreset","parsePersistedTheme","raw","parsed","JSON","parse","obj","mode","undefined","colorPreset","isThenable","then","readPersistedThemeSync","persistKey","storage","kind","getItem","state","readPersistedTheme","writePersistedTheme","payload","setItem","stringify","webLocalStorage","OS","globalThis","ls","localStorage","key"],"sourceRoot":"../../../src","sources":["theme/persistence.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,eAAe,QAA2B,oBAAiB;AAGpE,MAAMC,aAAa,GAAG,IAAIC,GAAG,CAASF,eAAe,CAAC;AACtD,MAAMG,WAAW,GAAG,IAAID,GAAG,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;;AAE5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAWA,MAAME,WAAW,GAAIC,KAAc,IACjC,OAAOA,KAAK,KAAK,QAAQ,IAAIF,WAAW,CAACG,GAAG,CAACD,KAAK,CAAC;AAErD,MAAME,aAAa,GAAIF,KAAc,IACnC,OAAOA,KAAK,KAAK,QAAQ,IAAIJ,aAAa,CAACK,GAAG,CAACD,KAAK,CAAC;AAEvD,SAASG,mBAAmBA,CAACC,GAAY,EAA8B;EACrE,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE,OAAO,IAAI;EAExC,IAAIC,MAAe;EACnB,IAAI;IACFA,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACH,GAAG,CAAC;EAC1B,CAAC,CAAC,MAAM;IACN,OAAO,IAAI;EACb;EAEA,IAAI,CAACC,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE,OAAO,IAAI;EACtD,MAAMG,GAAG,GAAGH,MAAmD;EAE/D,MAAMI,IAAI,GAAGV,WAAW,CAACS,GAAG,CAACC,IAAI,CAAC,GAAGD,GAAG,CAACC,IAAI,GAAGC,SAAS;EACzD,MAAMC,WAAW,GAAGT,aAAa,CAACM,GAAG,CAACG,WAAW,CAAC,GAAGH,GAAG,CAACG,WAAW,GAAGD,SAAS;EAEhF,IAAI,CAACD,IAAI,IAAI,CAACE,WAAW,EAAE,OAAO,IAAI;EACtC,OAAO;IAAEF,IAAI;IAAEE;EAAY,CAAC;AAC9B;AAOA,MAAMC,UAAU,GAAIZ,KAAc,IAChC,CAAC,CAACA,KAAK,IAAI,OAAQA,KAAK,CAAwBa,IAAI,KAAK,UAAU;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CACpCC,UAA8B,EAC9BC,OAAsC,EACtB;EAChB,IAAI,CAACD,UAAU,IAAI,CAACC,OAAO,EAAE,OAAO;IAAEC,IAAI,EAAE;EAAO,CAAC;EAEpD,IAAIb,GAA2C;EAC/C,IAAI;IACFA,GAAG,GAAGY,OAAO,CAACE,OAAO,CAACH,UAAU,CAAC;EACnC,CAAC,CAAC,MAAM;IACN,OAAO;MAAEE,IAAI,EAAE,MAAM;MAAEE,KAAK,EAAE;IAAK,CAAC;EACtC;EAEA,IAAIP,UAAU,CAACR,GAAG,CAAC,EAAE,OAAO;IAAEa,IAAI,EAAE;EAAQ,CAAC;EAC7C,OAAO;IAAEA,IAAI,EAAE,MAAM;IAAEE,KAAK,EAAEhB,mBAAmB,CAACC,GAAG;EAAE,CAAC;AAC1D;AAEA,OAAO,eAAegB,kBAAkBA,CACtCL,UAA8B,EAC9BC,OAAsC,EACD;EACrC,IAAI,CAACD,UAAU,IAAI,CAACC,OAAO,EAAE,OAAO,IAAI;EAExC,IAAI;IACF,MAAMZ,GAAG,GAAG,MAAMY,OAAO,CAACE,OAAO,CAACH,UAAU,CAAC;IAC7C,OAAOZ,mBAAmB,CAACC,GAAG,CAAC;EACjC,CAAC,CAAC,MAAM;IACN,OAAO,IAAI;EACb;AACF;AAEA,OAAO,eAAeiB,mBAAmBA,CACvCN,UAA8B,EAC9BC,OAAsC,EACtCG,KAA0B,EACX;EACf,IAAI,CAACJ,UAAU,IAAI,CAACC,OAAO,EAAE;EAE7B,MAAMM,OAA4B,GAAG,CAAC,CAAC;EACvC,IAAIH,KAAK,CAACV,IAAI,KAAKC,SAAS,EAAEY,OAAO,CAACb,IAAI,GAAGU,KAAK,CAACV,IAAI;EACvD,IAAIU,KAAK,CAACR,WAAW,KAAKD,SAAS,EAAEY,OAAO,CAACX,WAAW,GAAGQ,KAAK,CAACR,WAAW;EAE5E,IAAI;IACF,MAAMK,OAAO,CAACO,OAAO,CAACR,UAAU,EAAET,IAAI,CAACkB,SAAS,CAACF,OAAO,CAAC,CAAC;EAC5D,CAAC,CAAC,MAAM;IACN;EAAA;AAEJ;;AAEA;AACA;AACA;AACA;AACA,OAAO,MAAMG,eAA8C,GAAG,CAAC,MAAM;EACnE,IAAI/B,QAAQ,CAACgC,EAAE,KAAK,KAAK,EAAE,OAAOhB,SAAS;EAC3C,IAAI,OAAOiB,UAAU,KAAK,WAAW,EAAE,OAAOjB,SAAS;EACvD,IAAI,EAAE,cAAc,IAAIiB,UAAU,CAAC,EAAE,OAAOjB,SAAS;EAErD,MAAMkB,EAAE,GAAID,UAAU,CAA+BE,YAAY;EAEjE,OAAO;IACLX,OAAO,EAAGY,GAAG,IAAK;MAChB,IAAI;QACF,OAAOF,EAAE,CAACV,OAAO,CAACY,GAAG,CAAC;MACxB,CAAC,CAAC,MAAM;QACN,OAAO,IAAI;MACb;IACF,CAAC;IACDP,OAAO,EAAEA,CAACO,GAAG,EAAE9B,KAAK,KAAK;MACvB,IAAI;QACF4B,EAAE,CAACL,OAAO,CAACO,GAAG,EAAE9B,KAAK,CAAC;MACxB,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;EACF,CAAC;AACH,CAAC,EAAE,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useLayoutEffect } from 'react';
|
|
4
|
+
import { Platform } from 'react-native';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* `useLayoutEffect` on web (and native — react-native polyfills it) but falls
|
|
8
|
+
* back to `useEffect` during SSR to avoid the React warning. Bloom apps are
|
|
9
|
+
* primarily Expo (no SSR), but Next.js consumers of the web bundle need this.
|
|
10
|
+
*/
|
|
11
|
+
export const useIsomorphicLayoutEffect = Platform.OS === 'web' && typeof document === 'undefined' ? useEffect : useLayoutEffect;
|
|
12
|
+
//# sourceMappingURL=use-isomorphic-layout-effect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","useLayoutEffect","Platform","useIsomorphicLayoutEffect","OS","document"],"sourceRoot":"../../../src","sources":["theme/use-isomorphic-layout-effect.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,eAAe,QAAQ,OAAO;AAClD,SAASC,QAAQ,QAAQ,cAAc;;AAEvC;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,yBAAyB,GACpCD,QAAQ,CAACE,EAAE,KAAK,KAAK,IAAI,OAAOC,QAAQ,KAAK,WAAW,GAAGL,SAAS,GAAGC,eAAe","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface UseControllableStateOptions<T> {
|
|
2
|
+
/** Controlled value. When defined, the hook does not own internal state. */
|
|
3
|
+
value?: T;
|
|
4
|
+
/** Initial value used when uncontrolled. */
|
|
5
|
+
defaultValue: T;
|
|
6
|
+
/** Notified whenever the value changes, controlled or not. */
|
|
7
|
+
onChange?: (next: T) => void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Canonical Radix/shadcn-style controllable state hook. Returns a tuple of the
|
|
11
|
+
* current value and a setter that:
|
|
12
|
+
* - updates internal state when uncontrolled, and
|
|
13
|
+
* - always calls `onChange` (so controlled parents stay in sync).
|
|
14
|
+
*
|
|
15
|
+
* Switching between controlled and uncontrolled at runtime is supported but
|
|
16
|
+
* discouraged; the hook keeps the latest `value` for reads either way.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useControllableState<T>({ value, defaultValue, onChange, }: UseControllableStateOptions<T>): [T, (next: T) => void];
|
|
19
|
+
//# sourceMappingURL=useControllableState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useControllableState.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useControllableState.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,2BAA2B,CAAC,CAAC;IAC5C,4EAA4E;IAC5E,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,4CAA4C;IAC5C,YAAY,EAAE,CAAC,CAAC;IAChB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;CAC9B;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,EACtC,KAAK,EACL,YAAY,EACZ,QAAQ,GACT,EAAE,2BAA2B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,CAmBzD"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import './init-css-interop';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { type AppColorName } from './color-presets';
|
|
4
|
+
import { type BloomThemeStorage } from './persistence';
|
|
4
5
|
import type { Theme, ThemeMode } from './types';
|
|
5
|
-
/** Build a Theme object from a color preset name and resolved light/dark mode. */
|
|
6
|
-
export declare function buildTheme(appColor: AppColorName, resolved: 'light' | 'dark', isAdaptive?: boolean): Theme;
|
|
7
6
|
export interface BloomThemeContextValue {
|
|
8
7
|
theme: Theme;
|
|
9
8
|
mode: ThemeMode;
|
|
@@ -13,28 +12,46 @@ export interface BloomThemeContextValue {
|
|
|
13
12
|
}
|
|
14
13
|
export declare const BloomThemeContext: React.Context<BloomThemeContextValue | null>;
|
|
15
14
|
export interface BloomThemeProviderProps {
|
|
15
|
+
/** Controlled mode. Omit to use Bloom's internal state (with optional persistence). */
|
|
16
16
|
mode?: ThemeMode;
|
|
17
|
+
/** Controlled color preset. Omit to use Bloom's internal state. */
|
|
17
18
|
colorPreset?: AppColorName;
|
|
19
|
+
/** Initial mode when uncontrolled and nothing is persisted yet. */
|
|
20
|
+
defaultMode?: ThemeMode;
|
|
21
|
+
/** Initial color preset when uncontrolled and nothing is persisted yet. */
|
|
22
|
+
defaultColorPreset?: AppColorName;
|
|
18
23
|
onModeChange?: (mode: ThemeMode) => void;
|
|
19
24
|
onColorPresetChange?: (preset: AppColorName) => void;
|
|
20
25
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
26
|
+
* Persist mode + preset under this storage key. Bloom becomes the single
|
|
27
|
+
* source of truth — apps don't need their own theme store. Has no effect
|
|
28
|
+
* without `storage`.
|
|
24
29
|
*/
|
|
25
|
-
|
|
30
|
+
persistKey?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Storage adapter paired with `persistKey`. Use `webLocalStorage` on web,
|
|
33
|
+
* or pass an `AsyncStorage`-compatible adapter on native.
|
|
34
|
+
*/
|
|
35
|
+
storage?: BloomThemeStorage;
|
|
26
36
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
37
|
+
* Block rendering until persisted state has been read. Default `true` when
|
|
38
|
+
* both `persistKey` and `storage` are provided, ensuring native apps don't
|
|
39
|
+
* flash the default palette. Web hydrates synchronously so this is a no-op
|
|
40
|
+
* there.
|
|
30
41
|
*/
|
|
42
|
+
awaitHydration?: boolean;
|
|
43
|
+
/** Rendered while async hydration is pending. */
|
|
44
|
+
onHydrating?: React.ReactNode;
|
|
45
|
+
/** Load and inject Bloom's font system. Default `true`. */
|
|
46
|
+
fonts?: boolean;
|
|
47
|
+
/** Rendered while native fonts load. Ignored on web. */
|
|
31
48
|
onFontsLoading?: React.ReactNode;
|
|
32
49
|
children: React.ReactNode;
|
|
33
50
|
}
|
|
34
|
-
export declare function BloomThemeProvider({ mode: controlledMode, colorPreset: controlledPreset, onModeChange, onColorPresetChange, fonts, onFontsLoading, children, }: BloomThemeProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
51
|
+
export declare function BloomThemeProvider({ mode: controlledMode, colorPreset: controlledPreset, defaultMode, defaultColorPreset, onModeChange, onColorPresetChange, persistKey, storage, awaitHydration, onHydrating, fonts, onFontsLoading, children, }: BloomThemeProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
35
52
|
/**
|
|
36
|
-
* Scoped color override for a subtree.
|
|
37
|
-
*
|
|
53
|
+
* Scoped color override for a subtree. Inherits the resolved mode from the
|
|
54
|
+
* parent `BloomThemeProvider` but renders descendants with a different preset.
|
|
38
55
|
*/
|
|
39
56
|
export interface BloomColorScopeProps {
|
|
40
57
|
colorPreset: AppColorName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BloomThemeProvider.d.ts","sourceRoot":"","sources":["../../../../src/theme/BloomThemeProvider.tsx"],"names":[],"mappings":"AAIA,OAAO,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"BloomThemeProvider.d.ts","sourceRoot":"","sources":["../../../../src/theme/BloomThemeProvider.tsx"],"names":[],"mappings":"AAIA,OAAO,oBAAoB,CAAC;AAE5B,OAAO,KAQN,MAAM,OAAO,CAAC;AAQf,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAIL,KAAK,iBAAiB,EAEvB,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAKhD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,YAAY,CAAC;IAC1B,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACnC,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;CAChD;AAED,eAAO,MAAM,iBAAiB,8CAAqD,CAAC;AAEpF,MAAM,WAAW,uBAAuB;IACtC,uFAAuF;IACvF,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,mEAAmE;IACnE,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,mEAAmE;IACnE,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,YAAY,CAAC;IAElC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACzC,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAErD;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iDAAiD;IACjD,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE9B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wDAAwD;IACxD,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AA0HD,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,gBAAgB,EAC7B,WAA0B,EAC1B,kBAAmC,EACnC,YAAY,EACZ,mBAAmB,EACnB,UAAU,EACV,OAAO,EACP,cAAc,EACd,WAAW,EACX,KAAY,EACZ,cAAc,EACd,QAAQ,GACT,EAAE,uBAAuB,2CAiDzB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,YAAY,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,wBAAgB,eAAe,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,oBAAoB,2CAc9E"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type AppColorName } from './color-presets';
|
|
2
|
+
import type { Theme } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Status colors used across the design system. Independent of the accent
|
|
5
|
+
* preset so semantic intent stays stable across themes.
|
|
6
|
+
*/
|
|
7
|
+
export declare const STATUS_COLORS: {
|
|
8
|
+
readonly success: "#10B981";
|
|
9
|
+
readonly error: "#EF4444";
|
|
10
|
+
readonly warning: "#F59E0B";
|
|
11
|
+
readonly info: "#3B82F6";
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Build a `Theme` from a color preset and a resolved light/dark mode.
|
|
15
|
+
*
|
|
16
|
+
* When `isAdaptive` is true and the platform exposes adaptive (Material You /
|
|
17
|
+
* iOS dynamic) colors, those override the preset-derived palette.
|
|
18
|
+
*/
|
|
19
|
+
export declare function buildTheme(preset: AppColorName, resolved: 'light' | 'dark', isAdaptive?: boolean): Theme;
|
|
20
|
+
//# sourceMappingURL=build-theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-theme.d.ts","sourceRoot":"","sources":["../../../../src/theme/build-theme.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,YAAY,EAAqB,MAAM,iBAAiB,CAAC;AAE1F,OAAO,KAAK,EAAE,KAAK,EAAe,MAAM,SAAS,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AA6FX;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,OAAO,GAAG,MAAM,EAC1B,UAAU,GAAE,OAAe,GAC1B,KAAK,CAUP"}
|
|
@@ -1,11 +1,26 @@
|
|
|
1
1
|
export type AppColorName = 'teal' | 'blue' | 'green' | 'amber' | 'yellow' | 'red' | 'purple' | 'pink' | 'sky' | 'orange' | 'mint' | 'oxy' | 'faircoin';
|
|
2
|
+
/**
|
|
3
|
+
* Palette tokens for a single mode (light or dark) of a color preset.
|
|
4
|
+
*
|
|
5
|
+
* Keys carry a leading `--` for historical reasons (shadcn-style CSS variable
|
|
6
|
+
* names) — keep in mind the values are platform-agnostic **raw HSL triples**
|
|
7
|
+
* (e.g. `'185 100% 20%'` or `'185 100% 20% / 0.5'`), not CSS-resolved colors.
|
|
8
|
+
* The same map drives both:
|
|
9
|
+
* - the web layer (written verbatim into `document.documentElement.style`
|
|
10
|
+
* so Tailwind's `hsl(var(--primary))` plumbing picks them up), and
|
|
11
|
+
* - the native layer (`buildTheme` resolves them into `hsl(...)` strings
|
|
12
|
+
* consumable by React Native styles).
|
|
13
|
+
*
|
|
14
|
+
* The `--` prefix is an implementation detail we will drop in a future major.
|
|
15
|
+
*/
|
|
16
|
+
export type PresetTokens = Record<string, string>;
|
|
2
17
|
export interface AppColorPreset {
|
|
3
18
|
name: AppColorName;
|
|
4
19
|
hex: string;
|
|
5
|
-
light:
|
|
6
|
-
dark:
|
|
20
|
+
light: PresetTokens;
|
|
21
|
+
dark: PresetTokens;
|
|
7
22
|
}
|
|
8
|
-
export declare const APP_COLOR_NAMES: AppColorName[];
|
|
23
|
+
export declare const APP_COLOR_NAMES: readonly AppColorName[];
|
|
9
24
|
export declare const HEX_TO_APP_COLOR: Record<string, AppColorName>;
|
|
10
25
|
export declare function hexToAppColorName(hex: string): AppColorName;
|
|
11
26
|
export declare const APP_COLOR_PRESETS: Record<AppColorName, AppColorPreset>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color-presets.d.ts","sourceRoot":"","sources":["../../../../src/theme/color-presets.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;AAEvJ,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"color-presets.d.ts","sourceRoot":"","sources":["../../../../src/theme/color-presets.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;AAEvJ;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,eAAO,MAAM,eAAe,EAAE,SAAS,YAAY,EAAsH,CAAC;AAE1K,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAczD,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAE3D;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,YAAY,EAAE,cAAc,CAkmBlE,CAAC"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
export { BloomThemeProvider, BloomColorScope
|
|
2
|
-
export type { BloomThemeProviderProps, BloomThemeContextValue, BloomColorScopeProps } from './BloomThemeProvider';
|
|
1
|
+
export { BloomThemeProvider, BloomColorScope } from './BloomThemeProvider';
|
|
2
|
+
export type { BloomThemeProviderProps, BloomThemeContextValue, BloomColorScopeProps, } from './BloomThemeProvider';
|
|
3
|
+
export { buildTheme, STATUS_COLORS } from './build-theme';
|
|
3
4
|
export { useTheme, useThemeColor, useBloomTheme } from './use-theme';
|
|
4
5
|
export type { Theme, ThemeColors, ThemeMode } from './types';
|
|
5
|
-
export type { AppColorName, AppColorPreset } from './color-presets';
|
|
6
|
-
export { APP_COLOR_NAMES, APP_COLOR_PRESETS, HEX_TO_APP_COLOR, hexToAppColorName } from './color-presets';
|
|
6
|
+
export type { AppColorName, AppColorPreset, PresetTokens } from './color-presets';
|
|
7
|
+
export { APP_COLOR_NAMES, APP_COLOR_PRESETS, HEX_TO_APP_COLOR, hexToAppColorName, } from './color-presets';
|
|
7
8
|
export { applyDarkClass } from './apply-dark-class';
|
|
8
9
|
export { setColorSchemeSafe } from './set-color-scheme-safe';
|
|
9
10
|
export { initCssInteropDarkMode } from './init-css-interop';
|
|
11
|
+
export type { BloomThemeStorage, PersistedThemeState } from './persistence';
|
|
12
|
+
export { webLocalStorage } from './persistence';
|
|
10
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC3E,YAAY,EACV,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACrE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7D,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type AppColorName } from './color-presets';
|
|
2
|
+
import type { ThemeMode } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Storage adapter for persisting Bloom theme state.
|
|
5
|
+
*
|
|
6
|
+
* Methods may be synchronous or asynchronous. The provider awaits both, so
|
|
7
|
+
* `AsyncStorage`-compatible adapters on native and `localStorage`-backed
|
|
8
|
+
* adapters on web both work without consumer-side branching.
|
|
9
|
+
*
|
|
10
|
+
* On web, a synchronous adapter lets Bloom hydrate before the first paint —
|
|
11
|
+
* preventing a flash of the default palette. On native, the provider can
|
|
12
|
+
* gate `children` rendering until hydration completes (see
|
|
13
|
+
* `awaitHydration` on `BloomThemeProvider`).
|
|
14
|
+
*/
|
|
15
|
+
export interface BloomThemeStorage {
|
|
16
|
+
getItem(key: string): string | null | Promise<string | null>;
|
|
17
|
+
setItem(key: string, value: string): void | Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
export interface PersistedThemeState {
|
|
20
|
+
mode?: ThemeMode;
|
|
21
|
+
colorPreset?: AppColorName;
|
|
22
|
+
}
|
|
23
|
+
export type SyncReadResult = {
|
|
24
|
+
kind: 'sync';
|
|
25
|
+
state: PersistedThemeState | null;
|
|
26
|
+
} | {
|
|
27
|
+
kind: 'async';
|
|
28
|
+
} | {
|
|
29
|
+
kind: 'none';
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Read persisted state during the first render. Returns a discriminated union
|
|
33
|
+
* so the provider can tell apart:
|
|
34
|
+
* - `none`: persistence not configured.
|
|
35
|
+
* - `sync`: adapter returned a value synchronously (web `localStorage`).
|
|
36
|
+
* Provider can render immediately with the resolved state.
|
|
37
|
+
* - `async`: adapter returned a Promise (native `AsyncStorage`). Provider
|
|
38
|
+
* must await `readPersistedTheme` before painting if gating is enabled.
|
|
39
|
+
*/
|
|
40
|
+
export declare function readPersistedThemeSync(persistKey: string | undefined, storage: BloomThemeStorage | undefined): SyncReadResult;
|
|
41
|
+
export declare function readPersistedTheme(persistKey: string | undefined, storage: BloomThemeStorage | undefined): Promise<PersistedThemeState | null>;
|
|
42
|
+
export declare function writePersistedTheme(persistKey: string | undefined, storage: BloomThemeStorage | undefined, state: PersistedThemeState): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* `localStorage`-backed storage adapter. Only defined on web; on native the
|
|
45
|
+
* export is `undefined` so consumers pass an `AsyncStorage` adapter explicitly.
|
|
46
|
+
*/
|
|
47
|
+
export declare const webLocalStorage: BloomThemeStorage | undefined;
|
|
48
|
+
//# sourceMappingURL=persistence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../../src/theme/persistence.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAKzC;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B;AA4BD,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAKrB;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,iBAAiB,GAAG,SAAS,GACrC,cAAc,CAYhB;AAED,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,iBAAiB,GAAG,SAAS,GACrC,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CASrC;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,iBAAiB,GAAG,SAAS,EACtC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,iBAAiB,GAAG,SAuB9C,CAAC"}
|