@oxyhq/bloom 0.6.13 → 0.6.15

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 (68) hide show
  1. package/lib/commonjs/hooks/useControllableState.js +35 -0
  2. package/lib/commonjs/hooks/useControllableState.js.map +1 -0
  3. package/lib/commonjs/theme/BloomThemeProvider.js +148 -112
  4. package/lib/commonjs/theme/BloomThemeProvider.js.map +1 -1
  5. package/lib/commonjs/theme/build-theme.js +110 -0
  6. package/lib/commonjs/theme/build-theme.js.map +1 -0
  7. package/lib/commonjs/theme/color-presets.js +15 -0
  8. package/lib/commonjs/theme/color-presets.js.map +1 -1
  9. package/lib/commonjs/theme/index.js +15 -1
  10. package/lib/commonjs/theme/index.js.map +1 -1
  11. package/lib/commonjs/theme/persistence.js +147 -0
  12. package/lib/commonjs/theme/persistence.js.map +1 -0
  13. package/lib/commonjs/theme/use-isomorphic-layout-effect.js +15 -0
  14. package/lib/commonjs/theme/use-isomorphic-layout-effect.js.map +1 -0
  15. package/lib/module/hooks/useControllableState.js +31 -0
  16. package/lib/module/hooks/useControllableState.js.map +1 -0
  17. package/lib/module/theme/BloomThemeProvider.js +149 -112
  18. package/lib/module/theme/BloomThemeProvider.js.map +1 -1
  19. package/lib/module/theme/build-theme.js +105 -0
  20. package/lib/module/theme/build-theme.js.map +1 -0
  21. package/lib/module/theme/color-presets.js +15 -0
  22. package/lib/module/theme/color-presets.js.map +1 -1
  23. package/lib/module/theme/index.js +3 -1
  24. package/lib/module/theme/index.js.map +1 -1
  25. package/lib/module/theme/persistence.js +139 -0
  26. package/lib/module/theme/persistence.js.map +1 -0
  27. package/lib/module/theme/use-isomorphic-layout-effect.js +12 -0
  28. package/lib/module/theme/use-isomorphic-layout-effect.js.map +1 -0
  29. package/lib/typescript/commonjs/hooks/useControllableState.d.ts +19 -0
  30. package/lib/typescript/commonjs/hooks/useControllableState.d.ts.map +1 -0
  31. package/lib/typescript/commonjs/theme/BloomThemeProvider.d.ts +35 -12
  32. package/lib/typescript/commonjs/theme/BloomThemeProvider.d.ts.map +1 -1
  33. package/lib/typescript/commonjs/theme/build-theme.d.ts +20 -0
  34. package/lib/typescript/commonjs/theme/build-theme.d.ts.map +1 -0
  35. package/lib/typescript/commonjs/theme/color-presets.d.ts +18 -3
  36. package/lib/typescript/commonjs/theme/color-presets.d.ts.map +1 -1
  37. package/lib/typescript/commonjs/theme/index.d.ts +7 -4
  38. package/lib/typescript/commonjs/theme/index.d.ts.map +1 -1
  39. package/lib/typescript/commonjs/theme/persistence.d.ts +50 -0
  40. package/lib/typescript/commonjs/theme/persistence.d.ts.map +1 -0
  41. package/lib/typescript/commonjs/theme/use-isomorphic-layout-effect.d.ts +8 -0
  42. package/lib/typescript/commonjs/theme/use-isomorphic-layout-effect.d.ts.map +1 -0
  43. package/lib/typescript/module/hooks/useControllableState.d.ts +19 -0
  44. package/lib/typescript/module/hooks/useControllableState.d.ts.map +1 -0
  45. package/lib/typescript/module/theme/BloomThemeProvider.d.ts +35 -12
  46. package/lib/typescript/module/theme/BloomThemeProvider.d.ts.map +1 -1
  47. package/lib/typescript/module/theme/build-theme.d.ts +20 -0
  48. package/lib/typescript/module/theme/build-theme.d.ts.map +1 -0
  49. package/lib/typescript/module/theme/color-presets.d.ts +18 -3
  50. package/lib/typescript/module/theme/color-presets.d.ts.map +1 -1
  51. package/lib/typescript/module/theme/index.d.ts +7 -4
  52. package/lib/typescript/module/theme/index.d.ts.map +1 -1
  53. package/lib/typescript/module/theme/persistence.d.ts +50 -0
  54. package/lib/typescript/module/theme/persistence.d.ts.map +1 -0
  55. package/lib/typescript/module/theme/use-isomorphic-layout-effect.d.ts +8 -0
  56. package/lib/typescript/module/theme/use-isomorphic-layout-effect.d.ts.map +1 -0
  57. package/package.json +1 -1
  58. package/src/__tests__/BloomThemeProvider.modes.test.tsx +159 -0
  59. package/src/__tests__/BloomThemeProvider.persistence.test.tsx +321 -0
  60. package/src/__tests__/persistence.test.ts +155 -0
  61. package/src/__tests__/theme.test.ts +1 -1
  62. package/src/hooks/useControllableState.ts +44 -0
  63. package/src/theme/BloomThemeProvider.tsx +251 -157
  64. package/src/theme/build-theme.ts +128 -0
  65. package/src/theme/color-presets.ts +19 -3
  66. package/src/theme/index.ts +16 -4
  67. package/src/theme/persistence.ts +174 -0
  68. package/src/theme/use-isomorphic-layout-effect.ts +10 -0
@@ -1 +1 @@
1
- {"version":3,"names":["APP_COLOR_NAMES","exports","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","exports","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":[]}
@@ -33,6 +33,12 @@ Object.defineProperty(exports, "HEX_TO_APP_COLOR", {
33
33
  return _colorPresets.HEX_TO_APP_COLOR;
34
34
  }
35
35
  });
36
+ Object.defineProperty(exports, "STATUS_COLORS", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _buildTheme.STATUS_COLORS;
40
+ }
41
+ });
36
42
  Object.defineProperty(exports, "applyDarkClass", {
37
43
  enumerable: true,
38
44
  get: function () {
@@ -42,7 +48,7 @@ Object.defineProperty(exports, "applyDarkClass", {
42
48
  Object.defineProperty(exports, "buildTheme", {
43
49
  enumerable: true,
44
50
  get: function () {
45
- return _BloomThemeProvider.buildTheme;
51
+ return _buildTheme.buildTheme;
46
52
  }
47
53
  });
48
54
  Object.defineProperty(exports, "hexToAppColorName", {
@@ -81,10 +87,18 @@ Object.defineProperty(exports, "useThemeColor", {
81
87
  return _useTheme.useThemeColor;
82
88
  }
83
89
  });
90
+ Object.defineProperty(exports, "webLocalStorage", {
91
+ enumerable: true,
92
+ get: function () {
93
+ return _persistence.webLocalStorage;
94
+ }
95
+ });
84
96
  var _BloomThemeProvider = require("./BloomThemeProvider.js");
97
+ var _buildTheme = require("./build-theme.js");
85
98
  var _useTheme = require("./use-theme.js");
86
99
  var _colorPresets = require("./color-presets.js");
87
100
  var _applyDarkClass = require("./apply-dark-class.js");
88
101
  var _setColorSchemeSafe = require("./set-color-scheme-safe.js");
89
102
  var _initCssInterop = require("./init-css-interop.js");
103
+ var _persistence = require("./persistence.js");
90
104
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_BloomThemeProvider","require","_useTheme","_colorPresets","_applyDarkClass","_setColorSchemeSafe","_initCssInterop"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AAEA,IAAAC,SAAA,GAAAD,OAAA;AAGA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAJ,OAAA;AACA,IAAAK,eAAA,GAAAL,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_BloomThemeProvider","require","_buildTheme","_useTheme","_colorPresets","_applyDarkClass","_setColorSchemeSafe","_initCssInterop","_persistence"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AAMA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAGA,IAAAG,aAAA,GAAAH,OAAA;AAMA,IAAAI,eAAA,GAAAJ,OAAA;AACA,IAAAK,mBAAA,GAAAL,OAAA;AACA,IAAAM,eAAA,GAAAN,OAAA;AAEA,IAAAO,YAAA,GAAAP,OAAA","ignoreList":[]}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.readPersistedTheme = readPersistedTheme;
7
+ exports.readPersistedThemeSync = readPersistedThemeSync;
8
+ exports.removePersistedTheme = removePersistedTheme;
9
+ exports.webLocalStorage = void 0;
10
+ exports.writePersistedTheme = writePersistedTheme;
11
+ var _reactNative = require("react-native");
12
+ var _colorPresets = require("./color-presets.js");
13
+ const VALID_PRESETS = new Set(_colorPresets.APP_COLOR_NAMES);
14
+ const VALID_MODES = new Set(['light', 'dark', 'system', 'adaptive']);
15
+
16
+ /**
17
+ * Storage adapter for persisting Bloom theme state.
18
+ *
19
+ * Methods may be synchronous or asynchronous. The provider awaits both, so
20
+ * `AsyncStorage`-compatible adapters on native and `localStorage`-backed
21
+ * adapters on web both work without consumer-side branching.
22
+ *
23
+ * On web, a synchronous adapter lets Bloom hydrate before the first paint —
24
+ * preventing a flash of the default palette. On native, the provider can
25
+ * gate `children` rendering until hydration completes (see
26
+ * `awaitHydration` on `BloomThemeProvider`).
27
+ */
28
+
29
+ const isValidMode = value => typeof value === 'string' && VALID_MODES.has(value);
30
+ const isValidPreset = value => typeof value === 'string' && VALID_PRESETS.has(value);
31
+ function parsePersistedTheme(raw) {
32
+ if (typeof raw !== 'string') return null;
33
+ let parsed;
34
+ try {
35
+ parsed = JSON.parse(raw);
36
+ } catch {
37
+ return null;
38
+ }
39
+ if (!parsed || typeof parsed !== 'object') return null;
40
+ const obj = parsed;
41
+ const mode = isValidMode(obj.mode) ? obj.mode : undefined;
42
+ const colorPreset = isValidPreset(obj.colorPreset) ? obj.colorPreset : undefined;
43
+ if (!mode && !colorPreset) return null;
44
+ return {
45
+ mode,
46
+ colorPreset
47
+ };
48
+ }
49
+ const isThenable = value => !!value && typeof value.then === 'function';
50
+
51
+ /**
52
+ * Read persisted state during the first render. Returns a discriminated union
53
+ * so the provider can tell apart:
54
+ * - `none`: persistence not configured.
55
+ * - `sync`: adapter returned a value synchronously (web `localStorage`).
56
+ * Provider can render immediately with the resolved state.
57
+ * - `async`: adapter returned a Promise (native `AsyncStorage`). Provider
58
+ * must await `readPersistedTheme` before painting if gating is enabled.
59
+ */
60
+ function readPersistedThemeSync(persistKey, storage) {
61
+ if (!persistKey || !storage) return {
62
+ kind: 'none'
63
+ };
64
+ let raw;
65
+ try {
66
+ raw = storage.getItem(persistKey);
67
+ } catch {
68
+ return {
69
+ kind: 'sync',
70
+ state: null
71
+ };
72
+ }
73
+ if (isThenable(raw)) return {
74
+ kind: 'async'
75
+ };
76
+ return {
77
+ kind: 'sync',
78
+ state: parsePersistedTheme(raw)
79
+ };
80
+ }
81
+ async function readPersistedTheme(persistKey, storage) {
82
+ if (!persistKey || !storage) return null;
83
+ try {
84
+ const raw = await storage.getItem(persistKey);
85
+ return parsePersistedTheme(raw);
86
+ } catch {
87
+ return null;
88
+ }
89
+ }
90
+ async function writePersistedTheme(persistKey, storage, state) {
91
+ if (!persistKey || !storage) return;
92
+ const payload = {};
93
+ if (state.mode !== undefined) payload.mode = state.mode;
94
+ if (state.colorPreset !== undefined) payload.colorPreset = state.colorPreset;
95
+ try {
96
+ await storage.setItem(persistKey, JSON.stringify(payload));
97
+ } catch {
98
+ // Persistence is best-effort: ignore quota and privacy-mode errors.
99
+ }
100
+ }
101
+ async function removePersistedTheme(persistKey, storage) {
102
+ if (!persistKey || !storage) return;
103
+ try {
104
+ if (typeof storage.removeItem === 'function') {
105
+ await storage.removeItem(persistKey);
106
+ return;
107
+ }
108
+ await storage.setItem(persistKey, '');
109
+ } catch {
110
+ // Best-effort cleanup.
111
+ }
112
+ }
113
+
114
+ /**
115
+ * `localStorage`-backed storage adapter. Only defined on web; on native the
116
+ * export is `undefined` so consumers pass an `AsyncStorage` adapter explicitly.
117
+ */
118
+ const webLocalStorage = exports.webLocalStorage = (() => {
119
+ if (_reactNative.Platform.OS !== 'web') return undefined;
120
+ if (typeof globalThis === 'undefined') return undefined;
121
+ if (!('localStorage' in globalThis)) return undefined;
122
+ const ls = globalThis.localStorage;
123
+ return {
124
+ getItem: key => {
125
+ try {
126
+ return ls.getItem(key);
127
+ } catch {
128
+ return null;
129
+ }
130
+ },
131
+ setItem: (key, value) => {
132
+ try {
133
+ ls.setItem(key, value);
134
+ } catch {
135
+ // Swallow quota / privacy-mode errors.
136
+ }
137
+ },
138
+ removeItem: key => {
139
+ try {
140
+ ls.removeItem(key);
141
+ } catch {
142
+ // Swallow privacy-mode errors.
143
+ }
144
+ }
145
+ };
146
+ })();
147
+ //# sourceMappingURL=persistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_colorPresets","VALID_PRESETS","Set","APP_COLOR_NAMES","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","removePersistedTheme","removeItem","webLocalStorage","exports","Platform","OS","globalThis","ls","localStorage","key"],"sourceRoot":"../../../src","sources":["theme/persistence.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useIsomorphicLayoutEffect = void 0;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ /**
10
+ * `useLayoutEffect` on web (and native — react-native polyfills it) but falls
11
+ * back to `useEffect` during SSR to avoid the React warning. Bloom apps are
12
+ * primarily Expo (no SSR), but Next.js consumers of the web bundle need this.
13
+ */
14
+ const useIsomorphicLayoutEffect = exports.useIsomorphicLayoutEffect = _reactNative.Platform.OS === 'web' && typeof document === 'undefined' ? _react.useEffect : _react.useLayoutEffect;
15
+ //# sourceMappingURL=use-isomorphic-layout-effect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","useIsomorphicLayoutEffect","exports","Platform","OS","document","useEffect","useLayoutEffect"],"sourceRoot":"../../../src","sources":["theme/use-isomorphic-layout-effect.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AACO,MAAME,yBAAyB,GAAAC,OAAA,CAAAD,yBAAA,GACpCE,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAI,OAAOC,QAAQ,KAAK,WAAW,GAAGC,gBAAS,GAAGC,sBAAe","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useRef, useState } from 'react';
4
+ /**
5
+ * Canonical Radix/shadcn-style controllable state hook. Returns a tuple of the
6
+ * current value and a setter that:
7
+ * - updates internal state when uncontrolled, and
8
+ * - always calls `onChange` (so controlled parents stay in sync).
9
+ *
10
+ * Switching between controlled and uncontrolled at runtime is supported but
11
+ * discouraged; the hook keeps the latest `value` for reads either way.
12
+ */
13
+ export function useControllableState({
14
+ value,
15
+ defaultValue,
16
+ onChange
17
+ }) {
18
+ const [internal, setInternal] = useState(defaultValue);
19
+ const isControlled = value !== undefined;
20
+ const current = isControlled ? value : internal;
21
+ const onChangeRef = useRef(onChange);
22
+ onChangeRef.current = onChange;
23
+ const setValue = useCallback(next => {
24
+ if (!isControlled) {
25
+ setInternal(next);
26
+ }
27
+ onChangeRef.current?.(next);
28
+ }, [isControlled]);
29
+ return [current, setValue];
30
+ }
31
+ //# sourceMappingURL=useControllableState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useRef","useState","useControllableState","value","defaultValue","onChange","internal","setInternal","isControlled","undefined","current","onChangeRef","setValue","next"],"sourceRoot":"../../../src","sources":["hooks/useControllableState.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAWrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,oBAAoBA,CAAI;EACtCC,KAAK;EACLC,YAAY;EACZC;AAC8B,CAAC,EAA0B;EACzD,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGN,QAAQ,CAAIG,YAAY,CAAC;EACzD,MAAMI,YAAY,GAAGL,KAAK,KAAKM,SAAS;EACxC,MAAMC,OAAO,GAAGF,YAAY,GAAIL,KAAK,GAASG,QAAQ;EAEtD,MAAMK,WAAW,GAAGX,MAAM,CAACK,QAAQ,CAAC;EACpCM,WAAW,CAACD,OAAO,GAAGL,QAAQ;EAE9B,MAAMO,QAAQ,GAAGb,WAAW,CACzBc,IAAO,IAAK;IACX,IAAI,CAACL,YAAY,EAAE;MACjBD,WAAW,CAACM,IAAI,CAAC;IACnB;IACAF,WAAW,CAACD,OAAO,GAAGG,IAAI,CAAC;EAC7B,CAAC,EACD,CAACL,YAAY,CACf,CAAC;EAED,OAAO,CAACE,OAAO,EAAEE,QAAQ,CAAC;AAC5B","ignoreList":[]}
@@ -5,153 +5,190 @@
5
5
  // throw "Cannot manually set color scheme, as dark mode is type 'media'" the
6
6
  // first time Bloom toggles the dark class on <html>. See ./init-css-interop.
7
7
  import "./init-css-interop.js";
8
- import React, { createContext, useCallback, useContext, useMemo, useRef, useState } from 'react';
9
- import { useColorScheme as useRNColorScheme, Platform } from 'react-native';
10
- import { APP_COLOR_PRESETS } from "./color-presets.js";
11
- import { getAdaptiveColors } from "./adaptive-colors.js";
8
+ import React, { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
9
+ import { useColorScheme as useRNColorScheme } from 'react-native';
10
+ import { useControllableState } from "../hooks/useControllableState.js";
11
+ import { FontLoader } from '../fonts/FontLoader';
12
12
  import { applyDarkClass, applyColorPresetVars } from "./apply-dark-class.js";
13
+ import { buildTheme } from "./build-theme.js";
14
+ import { readPersistedTheme, readPersistedThemeSync, removePersistedTheme, writePersistedTheme } from "./persistence.js";
13
15
  import { setColorSchemeSafe } from "./set-color-scheme-safe.js";
14
- import { FontLoader } from '../fonts/FontLoader';
16
+ import { useIsomorphicLayoutEffect } from "./use-isomorphic-layout-effect.js";
15
17
  import { jsx as _jsx } from "react/jsx-runtime";
16
- function hslVarToCSS(value) {
17
- const parts = value.split('/').map(s => s.trim());
18
- if (parts.length === 2) {
19
- const alpha = parseFloat(parts[1] ?? '100') / 100;
20
- return `hsla(${(parts[0] ?? '').replace(/ /g, ', ')}, ${alpha})`;
21
- }
22
- return `hsl(${value.replace(/ /g, ', ')})`;
23
- }
24
- function extractHue(hslVar) {
25
- return parseInt(hslVar.split(' ')[0] ?? '0', 10);
26
- }
27
- function hsl(h, s, l) {
28
- return `hsl(${h}, ${s}%, ${l}%)`;
29
- }
18
+ const DEFAULT_PRESET = 'oxy';
19
+ const DEFAULT_MODE = 'system';
20
+ export const BloomThemeContext = /*#__PURE__*/createContext(null);
21
+ function useThemeState({
22
+ controlledMode,
23
+ controlledPreset,
24
+ defaultMode,
25
+ defaultPreset,
26
+ persistKey,
27
+ storage,
28
+ onModeChange,
29
+ onColorPresetChange
30
+ }) {
31
+ // Synchronous read happens once on first render. Succeeds on web with
32
+ // localStorage-backed adapters; async adapters rehydrate via the effect
33
+ // below. Lazy-initialized via `useState` so it runs exactly once per mount.
34
+ const [syncResult] = useState(() => readPersistedThemeSync(persistKey, storage));
35
+ const syncState = syncResult.kind === 'sync' ? syncResult.state : null;
36
+ const initialMode = syncState?.mode ?? defaultMode;
37
+ const initialPreset = syncState?.colorPreset ?? defaultPreset;
38
+
39
+ // Hydrated immediately when persistence is off or the adapter resolved
40
+ // synchronously (including a null hit — that's a valid "no value" answer).
41
+ const [hydrated, setHydrated] = useState(syncResult.kind !== 'async');
42
+ const [mode, setModeInternal] = useControllableState({
43
+ value: controlledMode,
44
+ defaultValue: initialMode
45
+ });
46
+ const [colorPreset, setPresetInternal] = useControllableState({
47
+ value: controlledPreset,
48
+ defaultValue: initialPreset
49
+ });
50
+
51
+ // Refs let setMode/setColorPreset stay referentially stable. Callbacks
52
+ // memoized only by setters and storage identity won't churn the context
53
+ // value on every theme change.
54
+ const modeRef = useRef(mode);
55
+ modeRef.current = mode;
56
+ const presetRef = useRef(colorPreset);
57
+ presetRef.current = colorPreset;
30
58
 
31
- /** Build a Theme object from a color preset name and resolved light/dark mode. */
32
- export function buildTheme(appColor, resolved, isAdaptive = false) {
33
- const isDark = resolved === 'dark';
34
- let themeColors;
35
- if (isAdaptive && Platform.OS !== 'web') {
36
- const adaptive = getAdaptiveColors();
37
- if (adaptive) {
38
- themeColors = adaptive;
59
+ // Async hydration for adapters that can't be read synchronously
60
+ // (AsyncStorage, MMKV via JSI fallback, etc).
61
+ useEffect(() => {
62
+ if (hydrated) return;
63
+ if (!persistKey || !storage) {
64
+ setHydrated(true);
65
+ return;
39
66
  }
40
- }
41
- if (!themeColors) {
42
- const preset = APP_COLOR_PRESETS[appColor];
43
- const vars = resolved === 'light' ? preset.light : preset.dark;
44
- const primaryHue = extractHue(vars['--primary'] ?? '0 0% 0%');
45
- const destructiveHue = extractHue(vars['--destructive'] ?? '0 0% 0%');
46
- const surface = hslVarToCSS(vars['--surface'] ?? '0 0% 0%');
47
- const background = hslVarToCSS(vars['--background'] ?? '0 0% 0%');
48
- const mutedForeground = hslVarToCSS(vars['--muted-foreground'] ?? '0 0% 50%');
49
- const primaryColor = hslVarToCSS(vars['--primary'] ?? '0 0% 50%');
50
- const primaryForeground = hslVarToCSS(vars['--primary-foreground'] ?? '0 0% 100%');
51
- themeColors = {
52
- background,
53
- backgroundSecondary: surface,
54
- backgroundTertiary: hslVarToCSS(vars['--muted'] ?? '0 0% 0%'),
55
- text: hslVarToCSS(vars['--foreground'] ?? '0 0% 100%'),
56
- textSecondary: mutedForeground,
57
- textTertiary: mutedForeground,
58
- border: hslVarToCSS(vars['--border'] ?? '0 0% 20%'),
59
- borderLight: hslVarToCSS(vars['--input'] ?? '0 0% 20%'),
60
- primary: primaryColor,
61
- primaryForeground,
62
- primaryLight: surface,
63
- primaryDark: background,
64
- secondary: primaryColor,
65
- tint: primaryColor,
66
- icon: mutedForeground,
67
- iconActive: primaryColor,
68
- success: '#10B981',
69
- error: '#EF4444',
70
- warning: '#F59E0B',
71
- info: '#3B82F6',
72
- primarySubtle: isDark ? hsl(primaryHue, 50, 10) : hsl(primaryHue, 70, 93),
73
- primarySubtleForeground: isDark ? hsl(primaryHue, 70, 65) : hsl(primaryHue, 90, 25),
74
- negative: hsl(destructiveHue, 84, 45),
75
- negativeForeground: '#FFFFFF',
76
- negativeSubtle: isDark ? hsl(destructiveHue, 50, 10) : hsl(destructiveHue, 90, 95),
77
- negativeSubtleForeground: isDark ? hsl(destructiveHue, 70, 65) : hsl(destructiveHue, 80, 40),
78
- contrast50: isDark ? hsl(primaryHue, 15, 12) : hsl(primaryHue, 10, 93),
79
- card: surface,
80
- shadow: isDark ? 'rgba(0, 0, 0, 0.3)' : 'rgba(0, 0, 0, 0.1)',
81
- overlay: 'rgba(0, 0, 0, 0.5)'
67
+ let cancelled = false;
68
+ readPersistedTheme(persistKey, storage).then(state => {
69
+ if (cancelled) return;
70
+ if (state?.mode && controlledMode === undefined) {
71
+ setModeInternal(state.mode);
72
+ onModeChange?.(state.mode);
73
+ }
74
+ if (state?.colorPreset && controlledPreset === undefined) {
75
+ setPresetInternal(state.colorPreset);
76
+ onColorPresetChange?.(state.colorPreset);
77
+ }
78
+ setHydrated(true);
79
+ });
80
+ return () => {
81
+ cancelled = true;
82
82
  };
83
- }
83
+ // Hydration runs once per storage instance. controlledMode/Preset are
84
+ // captured by closure intentionally — switching controlled-ness mid-flight
85
+ // is unsupported and would invalidate the in-flight hydration anyway.
86
+ // eslint-disable-next-line react-hooks/exhaustive-deps
87
+ }, [persistKey, storage]);
88
+ const setMode = useCallback(next => {
89
+ setModeInternal(next);
90
+ onModeChange?.(next);
91
+ void writePersistedTheme(persistKey, storage, {
92
+ mode: next,
93
+ colorPreset: presetRef.current
94
+ });
95
+ }, [setModeInternal, onModeChange, persistKey, storage]);
96
+ const setColorPreset = useCallback(next => {
97
+ setPresetInternal(next);
98
+ onColorPresetChange?.(next);
99
+ void writePersistedTheme(persistKey, storage, {
100
+ mode: modeRef.current,
101
+ colorPreset: next
102
+ });
103
+ }, [setPresetInternal, onColorPresetChange, persistKey, storage]);
104
+ const resetTheme = useCallback(() => {
105
+ if (controlledMode === undefined) {
106
+ setModeInternal(defaultMode);
107
+ onModeChange?.(defaultMode);
108
+ }
109
+ if (controlledPreset === undefined) {
110
+ setPresetInternal(defaultPreset);
111
+ onColorPresetChange?.(defaultPreset);
112
+ }
113
+ void removePersistedTheme(persistKey, storage);
114
+ }, [controlledMode, controlledPreset, defaultMode, defaultPreset, setModeInternal, setPresetInternal, onModeChange, onColorPresetChange, persistKey, storage]);
84
115
  return {
85
- mode: resolved,
86
- colors: themeColors,
87
- isDark,
88
- isLight: !isDark
116
+ mode,
117
+ colorPreset,
118
+ setMode,
119
+ setColorPreset,
120
+ resetTheme,
121
+ hydrated
89
122
  };
90
123
  }
91
- export const BloomThemeContext = /*#__PURE__*/createContext(null);
92
124
  export function BloomThemeProvider({
93
125
  mode: controlledMode,
94
126
  colorPreset: controlledPreset,
127
+ defaultMode = DEFAULT_MODE,
128
+ defaultColorPreset = DEFAULT_PRESET,
95
129
  onModeChange,
96
130
  onColorPresetChange,
131
+ persistKey,
132
+ storage,
133
+ awaitHydration,
134
+ onHydrating,
97
135
  fonts = true,
98
136
  onFontsLoading,
99
137
  children
100
138
  }) {
101
139
  const rnScheme = useRNColorScheme();
102
- const [internalPreset, setInternalPreset] = useState(controlledPreset ?? 'oxy');
103
- if (controlledPreset !== undefined && controlledPreset !== internalPreset) {
104
- setInternalPreset(controlledPreset);
105
- }
106
- const appColor = internalPreset;
107
- const mode = controlledMode ?? 'system';
140
+ const {
141
+ mode,
142
+ colorPreset,
143
+ setMode,
144
+ setColorPreset,
145
+ resetTheme,
146
+ hydrated
147
+ } = useThemeState({
148
+ controlledMode,
149
+ controlledPreset,
150
+ defaultMode,
151
+ defaultPreset: defaultColorPreset,
152
+ persistKey,
153
+ storage,
154
+ onModeChange,
155
+ onColorPresetChange
156
+ });
108
157
  const isAdaptive = mode === 'adaptive';
109
158
  const effectiveMode = isAdaptive ? 'system' : mode;
110
159
  const resolved = effectiveMode === 'system' ? rnScheme === 'dark' ? 'dark' : 'light' : effectiveMode;
111
160
 
112
- // Apply native color scheme and CSS vars synchronously on first render
113
- // and whenever the resolved mode or preset changes. Using a ref to track
114
- // the last-applied values avoids calling side effects on every render
115
- // while still applying them before the first paint.
116
- const lastApplied = useRef('');
117
- const applyKey = `${resolved}:${appColor}`;
118
- if (lastApplied.current !== applyKey) {
119
- lastApplied.current = applyKey;
161
+ // Apply native color scheme, dark class, and CSS vars whenever the resolved
162
+ // mode or preset changes. `useIsomorphicLayoutEffect` runs before paint on
163
+ // both native and web, eliminating the previous render-time side effect.
164
+ useIsomorphicLayoutEffect(() => {
120
165
  setColorSchemeSafe(effectiveMode);
121
166
  applyDarkClass(resolved);
122
- applyColorPresetVars(appColor, resolved);
123
- }
124
- const setMode = useCallback(newMode => {
125
- setColorSchemeSafe(newMode);
126
- onModeChange?.(newMode);
127
- }, [onModeChange]);
128
- const setColorPreset = useCallback(preset => {
129
- setInternalPreset(preset);
130
- onColorPresetChange?.(preset);
131
- }, [onColorPresetChange]);
132
- const contextValue = useMemo(() => {
133
- const theme = buildTheme(appColor, resolved, isAdaptive);
134
- return {
135
- theme,
136
- mode,
137
- colorPreset: appColor,
138
- setMode,
139
- setColorPreset
140
- };
141
- }, [resolved, appColor, isAdaptive, mode, setMode, setColorPreset]);
167
+ applyColorPresetVars(colorPreset, resolved);
168
+ }, [effectiveMode, resolved, colorPreset]);
169
+ const contextValue = useMemo(() => ({
170
+ theme: buildTheme(colorPreset, resolved, isAdaptive),
171
+ mode,
172
+ colorPreset,
173
+ setMode,
174
+ setColorPreset,
175
+ resetTheme
176
+ }), [colorPreset, resolved, isAdaptive, mode, setMode, setColorPreset, resetTheme]);
177
+ const shouldAwait = awaitHydration ?? Boolean(persistKey && storage);
178
+ const isGated = shouldAwait && !hydrated;
142
179
  return /*#__PURE__*/_jsx(BloomThemeContext.Provider, {
143
180
  value: contextValue,
144
181
  children: /*#__PURE__*/_jsx(FontLoader, {
145
182
  enabled: fonts,
146
183
  fallback: onFontsLoading,
147
- children: children
184
+ children: isGated ? onHydrating ?? null : children
148
185
  })
149
186
  });
150
187
  }
151
188
 
152
189
  /**
153
- * Scoped color override for a subtree.
154
- * Inherits mode/dark from the parent BloomThemeProvider but overrides the color preset.
190
+ * Scoped color override for a subtree. Inherits the resolved mode from the
191
+ * parent `BloomThemeProvider` but renders descendants with a different preset.
155
192
  */
156
193
 
157
194
  export function BloomColorScope({