@oxyhq/bloom 0.6.16 → 0.6.18
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/theme/BloomThemeProvider.js +13 -32
- package/lib/commonjs/theme/BloomThemeProvider.js.map +1 -1
- package/lib/commonjs/theme/apply-dark-class.js +10 -7
- package/lib/commonjs/theme/apply-dark-class.js.map +1 -1
- package/lib/commonjs/theme/color-scope/index.js +59 -0
- package/lib/commonjs/theme/color-scope/index.js.map +1 -0
- package/lib/commonjs/theme/color-scope/index.web.js +58 -0
- package/lib/commonjs/theme/color-scope/index.web.js.map +1 -0
- package/lib/commonjs/theme/color-scope/style-builder.js +36 -0
- package/lib/commonjs/theme/color-scope/style-builder.js.map +1 -0
- package/lib/commonjs/theme/index.js +8 -1
- package/lib/commonjs/theme/index.js.map +1 -1
- package/lib/module/theme/BloomThemeProvider.js +15 -33
- package/lib/module/theme/BloomThemeProvider.js.map +1 -1
- package/lib/module/theme/apply-dark-class.js +10 -7
- package/lib/module/theme/apply-dark-class.js.map +1 -1
- package/lib/module/theme/color-scope/index.js +53 -0
- package/lib/module/theme/color-scope/index.js.map +1 -0
- package/lib/module/theme/color-scope/index.web.js +52 -0
- package/lib/module/theme/color-scope/index.web.js.map +1 -0
- package/lib/module/theme/color-scope/style-builder.js +31 -0
- package/lib/module/theme/color-scope/style-builder.js.map +1 -0
- package/lib/module/theme/index.js +2 -1
- package/lib/module/theme/index.js.map +1 -1
- package/lib/typescript/commonjs/icons/common.d.ts +4 -4
- package/lib/typescript/commonjs/theme/BloomThemeProvider.d.ts +8 -10
- package/lib/typescript/commonjs/theme/BloomThemeProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/apply-dark-class.d.ts +5 -4
- package/lib/typescript/commonjs/theme/apply-dark-class.d.ts.map +1 -1
- package/lib/typescript/commonjs/theme/color-scope/index.d.ts +23 -0
- package/lib/typescript/commonjs/theme/color-scope/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/theme/color-scope/index.web.d.ts +21 -0
- package/lib/typescript/commonjs/theme/color-scope/index.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/theme/color-scope/style-builder.d.ts +16 -0
- package/lib/typescript/commonjs/theme/color-scope/style-builder.d.ts.map +1 -0
- package/lib/typescript/commonjs/theme/index.d.ts +4 -2
- package/lib/typescript/commonjs/theme/index.d.ts.map +1 -1
- package/lib/typescript/module/icons/common.d.ts +4 -4
- package/lib/typescript/module/theme/BloomThemeProvider.d.ts +8 -10
- package/lib/typescript/module/theme/BloomThemeProvider.d.ts.map +1 -1
- package/lib/typescript/module/theme/apply-dark-class.d.ts +5 -4
- package/lib/typescript/module/theme/apply-dark-class.d.ts.map +1 -1
- package/lib/typescript/module/theme/color-scope/index.d.ts +23 -0
- package/lib/typescript/module/theme/color-scope/index.d.ts.map +1 -0
- package/lib/typescript/module/theme/color-scope/index.web.d.ts +21 -0
- package/lib/typescript/module/theme/color-scope/index.web.d.ts.map +1 -0
- package/lib/typescript/module/theme/color-scope/style-builder.d.ts +16 -0
- package/lib/typescript/module/theme/color-scope/style-builder.d.ts.map +1 -0
- package/lib/typescript/module/theme/index.d.ts +4 -2
- package/lib/typescript/module/theme/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/BloomColorScope.test.tsx +53 -0
- package/src/theme/BloomThemeProvider.tsx +32 -27
- package/src/theme/apply-dark-class.ts +8 -8
- package/src/theme/color-scope/index.tsx +67 -0
- package/src/theme/color-scope/index.web.tsx +65 -0
- package/src/theme/color-scope/style-builder.ts +39 -0
- package/src/theme/index.ts +3 -2
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.BloomColorScope = BloomColorScope;
|
|
7
6
|
exports.BloomThemeContext = void 0;
|
|
8
7
|
exports.BloomThemeProvider = BloomThemeProvider;
|
|
9
8
|
require("./init-css-interop.js");
|
|
@@ -13,6 +12,7 @@ var _useControllableState = require("../hooks/useControllableState.js");
|
|
|
13
12
|
var _FontLoader = require("../fonts/FontLoader");
|
|
14
13
|
var _applyDarkClass = require("./apply-dark-class.js");
|
|
15
14
|
var _buildTheme = require("./build-theme.js");
|
|
15
|
+
var _styleBuilder = require("./color-scope/style-builder.js");
|
|
16
16
|
var _persistence = require("./persistence.js");
|
|
17
17
|
var _setColorSchemeSafe = require("./set-color-scheme-safe.js");
|
|
18
18
|
var _useIsomorphicLayoutEffect = require("./use-isomorphic-layout-effect.js");
|
|
@@ -142,6 +142,7 @@ function BloomThemeProvider({
|
|
|
142
142
|
onHydrating,
|
|
143
143
|
fonts = true,
|
|
144
144
|
onFontsLoading,
|
|
145
|
+
nativeWrapperStyle,
|
|
145
146
|
children
|
|
146
147
|
}) {
|
|
147
148
|
const rnScheme = (0, _reactNative.useColorScheme)();
|
|
@@ -184,40 +185,20 @@ function BloomThemeProvider({
|
|
|
184
185
|
}), [colorPreset, resolved, isAdaptive, mode, setMode, setColorPreset, resetTheme]);
|
|
185
186
|
const shouldAwait = awaitHydration ?? Boolean(persistKey && storage);
|
|
186
187
|
const isGated = shouldAwait && !hydrated;
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
children: isGated ? onHydrating ?? null : children
|
|
193
|
-
})
|
|
188
|
+
const nativeVarsStyle = (0, _react.useMemo)(() => _reactNative.Platform.OS === 'web' ? undefined : (0, _styleBuilder.buildNativePresetStyle)(colorPreset, resolved), [colorPreset, resolved]);
|
|
189
|
+
const content = /*#__PURE__*/(0, _jsxRuntime.jsx)(_FontLoader.FontLoader, {
|
|
190
|
+
enabled: fonts,
|
|
191
|
+
fallback: onFontsLoading,
|
|
192
|
+
children: isGated ? onHydrating ?? null : children
|
|
194
193
|
});
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* Scoped color override for a subtree. Inherits the resolved mode from the
|
|
199
|
-
* parent `BloomThemeProvider` but renders descendants with a different preset.
|
|
200
|
-
*/
|
|
201
|
-
|
|
202
|
-
function BloomColorScope({
|
|
203
|
-
colorPreset,
|
|
204
|
-
children
|
|
205
|
-
}) {
|
|
206
|
-
const parent = (0, _react.useContext)(BloomThemeContext);
|
|
207
|
-
if (!parent) {
|
|
208
|
-
throw new Error('BloomColorScope must be used within a <BloomThemeProvider>');
|
|
209
|
-
}
|
|
210
|
-
const contextValue = (0, _react.useMemo)(() => {
|
|
211
|
-
const theme = (0, _buildTheme.buildTheme)(colorPreset, parent.theme.mode);
|
|
212
|
-
return {
|
|
213
|
-
...parent,
|
|
214
|
-
theme,
|
|
215
|
-
colorPreset
|
|
216
|
-
};
|
|
217
|
-
}, [colorPreset, parent]);
|
|
218
194
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(BloomThemeContext.Provider, {
|
|
219
195
|
value: contextValue,
|
|
220
|
-
children:
|
|
196
|
+
children: _reactNative.Platform.OS === 'web' ? content : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
197
|
+
style: [{
|
|
198
|
+
flex: 1
|
|
199
|
+
}, nativeVarsStyle, nativeWrapperStyle],
|
|
200
|
+
children: content
|
|
201
|
+
})
|
|
221
202
|
});
|
|
222
203
|
}
|
|
223
204
|
//# sourceMappingURL=BloomThemeProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["require","_react","_interopRequireWildcard","_reactNative","_useControllableState","_FontLoader","_applyDarkClass","_buildTheme","_persistence","_setColorSchemeSafe","_useIsomorphicLayoutEffect","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEFAULT_PRESET","DEFAULT_MODE","BloomThemeContext","exports","createContext","useThemeState","controlledMode","controlledPreset","defaultMode","defaultPreset","persistKey","storage","onModeChange","onColorPresetChange","syncResult","useState","readPersistedThemeSync","syncState","kind","state","initialMode","mode","initialPreset","colorPreset","hydrated","setHydrated","setModeInternal","useControllableState","value","defaultValue","setPresetInternal","modeRef","useRef","current","presetRef","useEffect","cancelled","readPersistedTheme","then","undefined","setMode","useCallback","next","writePersistedTheme","setColorPreset","resetTheme","removePersistedTheme","BloomThemeProvider","defaultColorPreset","awaitHydration","onHydrating","fonts","onFontsLoading","children","rnScheme","useRNColorScheme","isAdaptive","effectiveMode","resolved","useIsomorphicLayoutEffect","setColorSchemeSafe","applyDarkClass","applyColorPresetVars","contextValue","useMemo","theme","buildTheme","shouldAwait","Boolean","isGated","
|
|
1
|
+
{"version":3,"names":["require","_react","_interopRequireWildcard","_reactNative","_useControllableState","_FontLoader","_applyDarkClass","_buildTheme","_styleBuilder","_persistence","_setColorSchemeSafe","_useIsomorphicLayoutEffect","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEFAULT_PRESET","DEFAULT_MODE","BloomThemeContext","exports","createContext","useThemeState","controlledMode","controlledPreset","defaultMode","defaultPreset","persistKey","storage","onModeChange","onColorPresetChange","syncResult","useState","readPersistedThemeSync","syncState","kind","state","initialMode","mode","initialPreset","colorPreset","hydrated","setHydrated","setModeInternal","useControllableState","value","defaultValue","setPresetInternal","modeRef","useRef","current","presetRef","useEffect","cancelled","readPersistedTheme","then","undefined","setMode","useCallback","next","writePersistedTheme","setColorPreset","resetTheme","removePersistedTheme","BloomThemeProvider","defaultColorPreset","awaitHydration","onHydrating","fonts","onFontsLoading","nativeWrapperStyle","children","rnScheme","useRNColorScheme","isAdaptive","effectiveMode","resolved","useIsomorphicLayoutEffect","setColorSchemeSafe","applyDarkClass","applyColorPresetVars","contextValue","useMemo","theme","buildTheme","shouldAwait","Boolean","isGated","nativeVarsStyle","Platform","OS","buildNativePresetStyle","content","jsx","FontLoader","enabled","fallback","Provider","View","style","flex"],"sourceRoot":"../../../src","sources":["theme/BloomThemeProvider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ exports.applyColorPresetVars = applyColorPresetVars;
|
|
|
7
7
|
exports.applyDarkClass = applyDarkClass;
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _colorPresets = require("./color-presets.js");
|
|
10
|
+
var _presetVars = require("./preset-vars.js");
|
|
10
11
|
function applyDarkClass(resolved) {
|
|
11
12
|
if (_reactNative.Platform.OS === 'web' && typeof document !== 'undefined') {
|
|
12
13
|
document.documentElement.classList.toggle('dark', resolved === 'dark');
|
|
@@ -17,16 +18,18 @@ function applyDarkClass(resolved) {
|
|
|
17
18
|
* Apply a color preset's CSS custom properties to the document root.
|
|
18
19
|
* No-op on native — only affects web.
|
|
19
20
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* `hsl(var(--primary))
|
|
23
|
-
*
|
|
21
|
+
* Writes both the raw HSL triples (e.g. `--primary: 185 100% 20%`) and the
|
|
22
|
+
* resolved `--color-*` vars (`--color-primary: hsl(185 100% 20%)`) so both
|
|
23
|
+
* shadcn-style `hsl(var(--primary))` plumbing and Tailwind v4 `@theme`
|
|
24
|
+
* utilities resolve consistently. Includes extended tokens (card, chart-*,
|
|
25
|
+
* content-area, sidebar-*) so consumer apps don't need to synthesize them.
|
|
24
26
|
*/
|
|
25
27
|
function applyColorPresetVars(preset, resolved) {
|
|
26
28
|
if (_reactNative.Platform.OS !== 'web' || typeof document === 'undefined') return;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
if (!_colorPresets.APP_COLOR_PRESETS[preset]) return;
|
|
30
|
+
const vars = (0, _presetVars.getPresetVars)(preset, resolved, {
|
|
31
|
+
includeResolvedColorVars: true
|
|
32
|
+
});
|
|
30
33
|
const root = document.documentElement.style;
|
|
31
34
|
for (const [key, value] of Object.entries(vars)) {
|
|
32
35
|
root.setProperty(key, value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_colorPresets","applyDarkClass","resolved","Platform","OS","document","documentElement","classList","toggle","applyColorPresetVars","preset","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_colorPresets","_presetVars","applyDarkClass","resolved","Platform","OS","document","documentElement","classList","toggle","applyColorPresetVars","preset","APP_COLOR_PRESETS","vars","getPresetVars","includeResolvedColorVars","root","style","key","value","Object","entries","setProperty"],"sourceRoot":"../../../src","sources":["theme/apply-dark-class.ts"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAEO,SAASG,cAAcA,CAACC,QAA0B,EAAE;EACzD,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;IAC5DA,QAAQ,CAACC,eAAe,CAACC,SAAS,CAACC,MAAM,CAAC,MAAM,EAAEN,QAAQ,KAAK,MAAM,CAAC;EACxE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASO,oBAAoBA,CAACC,MAAoB,EAAER,QAA0B,EAAE;EACrF,IAAIC,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;EAC9D,IAAI,CAACM,+BAAiB,CAACD,MAAM,CAAC,EAAE;EAEhC,MAAME,IAAI,GAAG,IAAAC,yBAAa,EAACH,MAAM,EAAER,QAAQ,EAAE;IAAEY,wBAAwB,EAAE;EAAK,CAAC,CAAC;EAChF,MAAMC,IAAI,GAAGV,QAAQ,CAACC,eAAe,CAACU,KAAK;EAE3C,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACR,IAAI,CAAC,EAAE;IAC/CG,IAAI,CAACM,WAAW,CAACJ,GAAG,EAAEC,KAAK,CAAC;EAC9B;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.BloomColorScope = BloomColorScope;
|
|
7
|
+
exports.useColorScopeStyle = useColorScopeStyle;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _reactNative = require("react-native");
|
|
10
|
+
var _BloomThemeProvider = require("../BloomThemeProvider.js");
|
|
11
|
+
var _buildTheme = require("../build-theme.js");
|
|
12
|
+
var _styleBuilder = require("./style-builder.js");
|
|
13
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
15
|
+
function BloomColorScope({
|
|
16
|
+
colorPreset,
|
|
17
|
+
asChild = false,
|
|
18
|
+
style,
|
|
19
|
+
children
|
|
20
|
+
}) {
|
|
21
|
+
const parent = (0, _react.useContext)(_BloomThemeProvider.BloomThemeContext);
|
|
22
|
+
if (!parent) {
|
|
23
|
+
throw new Error('BloomColorScope must be used within a <BloomThemeProvider>');
|
|
24
|
+
}
|
|
25
|
+
const resolvedMode = parent.theme.mode;
|
|
26
|
+
const contextValue = (0, _react.useMemo)(() => {
|
|
27
|
+
const theme = (0, _buildTheme.buildTheme)(colorPreset, resolvedMode);
|
|
28
|
+
return {
|
|
29
|
+
...parent,
|
|
30
|
+
theme,
|
|
31
|
+
colorPreset
|
|
32
|
+
};
|
|
33
|
+
}, [colorPreset, resolvedMode, parent]);
|
|
34
|
+
const varsStyle = (0, _react.useMemo)(() => (0, _styleBuilder.buildNativePresetStyle)(colorPreset, resolvedMode), [colorPreset, resolvedMode]);
|
|
35
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_BloomThemeProvider.BloomThemeContext.Provider, {
|
|
36
|
+
value: contextValue,
|
|
37
|
+
children: asChild ? children : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
38
|
+
style: [{
|
|
39
|
+
flex: 1
|
|
40
|
+
}, varsStyle, style],
|
|
41
|
+
children: children
|
|
42
|
+
})
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Escape hatch for advanced cases where the wrapping element is owned by the
|
|
48
|
+
* caller. Returns a stable native style object carrying the preset's CSS vars.
|
|
49
|
+
* Returns `undefined` on web or when `nativewind` is not installed.
|
|
50
|
+
*/
|
|
51
|
+
function useColorScopeStyle(colorPreset) {
|
|
52
|
+
const parent = (0, _react.useContext)(_BloomThemeProvider.BloomThemeContext);
|
|
53
|
+
if (!parent) {
|
|
54
|
+
throw new Error('useColorScopeStyle must be used within a <BloomThemeProvider>');
|
|
55
|
+
}
|
|
56
|
+
const resolvedMode = parent.theme.mode;
|
|
57
|
+
return (0, _react.useMemo)(() => (0, _styleBuilder.buildNativePresetStyle)(colorPreset, resolvedMode), [colorPreset, resolvedMode]);
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_BloomThemeProvider","_buildTheme","_styleBuilder","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","BloomColorScope","colorPreset","asChild","style","children","parent","useContext","BloomThemeContext","Error","resolvedMode","theme","mode","contextValue","useMemo","buildTheme","varsStyle","buildNativePresetStyle","jsx","Provider","value","View","flex","useColorScopeStyle"],"sourceRoot":"../../../../src","sources":["theme/color-scope/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.BloomColorScope = BloomColorScope;
|
|
7
|
+
exports.useColorScopeStyle = useColorScopeStyle;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _BloomThemeProvider = require("../BloomThemeProvider.js");
|
|
10
|
+
var _buildTheme = require("../build-theme.js");
|
|
11
|
+
var _styleBuilder = require("./style-builder.js");
|
|
12
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
|
+
function BloomColorScope({
|
|
15
|
+
colorPreset,
|
|
16
|
+
asChild = false,
|
|
17
|
+
style,
|
|
18
|
+
children
|
|
19
|
+
}) {
|
|
20
|
+
const parent = (0, _react.useContext)(_BloomThemeProvider.BloomThemeContext);
|
|
21
|
+
if (!parent) {
|
|
22
|
+
throw new Error('BloomColorScope must be used within a <BloomThemeProvider>');
|
|
23
|
+
}
|
|
24
|
+
const resolvedMode = parent.theme.mode;
|
|
25
|
+
const contextValue = (0, _react.useMemo)(() => {
|
|
26
|
+
const theme = (0, _buildTheme.buildTheme)(colorPreset, resolvedMode);
|
|
27
|
+
return {
|
|
28
|
+
...parent,
|
|
29
|
+
theme,
|
|
30
|
+
colorPreset
|
|
31
|
+
};
|
|
32
|
+
}, [colorPreset, resolvedMode, parent]);
|
|
33
|
+
const varsStyle = (0, _react.useMemo)(() => ({
|
|
34
|
+
...(0, _styleBuilder.buildScopeVars)(colorPreset, resolvedMode),
|
|
35
|
+
...style
|
|
36
|
+
}), [colorPreset, resolvedMode, style]);
|
|
37
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_BloomThemeProvider.BloomThemeContext.Provider, {
|
|
38
|
+
value: contextValue,
|
|
39
|
+
children: asChild ? children : /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
40
|
+
style: varsStyle,
|
|
41
|
+
children: children
|
|
42
|
+
})
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Escape hatch for advanced cases where the wrapping element is owned by the
|
|
48
|
+
* caller. Returns a stable React style object carrying the preset's CSS vars.
|
|
49
|
+
*/
|
|
50
|
+
function useColorScopeStyle(colorPreset) {
|
|
51
|
+
const parent = (0, _react.useContext)(_BloomThemeProvider.BloomThemeContext);
|
|
52
|
+
if (!parent) {
|
|
53
|
+
throw new Error('useColorScopeStyle must be used within a <BloomThemeProvider>');
|
|
54
|
+
}
|
|
55
|
+
const resolvedMode = parent.theme.mode;
|
|
56
|
+
return (0, _react.useMemo)(() => (0, _styleBuilder.buildScopeVars)(colorPreset, resolvedMode), [colorPreset, resolvedMode]);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=index.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_BloomThemeProvider","_buildTheme","_styleBuilder","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","BloomColorScope","colorPreset","asChild","style","children","parent","useContext","BloomThemeContext","Error","resolvedMode","theme","mode","contextValue","useMemo","buildTheme","varsStyle","buildScopeVars","jsx","Provider","value","useColorScopeStyle"],"sourceRoot":"../../../../src","sources":["theme/color-scope/index.web.tsx"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAEA,IAAAG,aAAA,GAAAH,OAAA;AAAiD,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAD,wBAAAM,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAR,uBAAA,YAAAA,CAAAM,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAe1C,SAASkB,eAAeA,CAAC;EAC9BC,WAAW;EACXC,OAAO,GAAG,KAAK;EACfC,KAAK;EACLC;AACoB,CAAC,EAAE;EACvB,MAAMC,MAAM,GAAG,IAAAC,iBAAU,EAACC,qCAAiB,CAAC;EAC5C,IAAI,CAACF,MAAM,EAAE;IACX,MAAM,IAAIG,KAAK,CAAC,4DAA4D,CAAC;EAC/E;EAEA,MAAMC,YAAY,GAAGJ,MAAM,CAACK,KAAK,CAACC,IAAI;EAEtC,MAAMC,YAAY,GAAG,IAAAC,cAAO,EAAyB,MAAM;IACzD,MAAMH,KAAK,GAAG,IAAAI,sBAAU,EAACb,WAAW,EAAEQ,YAAY,CAAC;IACnD,OAAO;MAAE,GAAGJ,MAAM;MAAEK,KAAK;MAAET;IAAY,CAAC;EAC1C,CAAC,EAAE,CAACA,WAAW,EAAEQ,YAAY,EAAEJ,MAAM,CAAC,CAAC;EAEvC,MAAMU,SAAS,GAAG,IAAAF,cAAO,EACvB,OAAO;IAAE,GAAI,IAAAG,4BAAc,EAACf,WAAW,EAAEQ,YAAY,CAAyB;IAAE,GAAGN;EAAM,CAAC,CAAC,EAC3F,CAACF,WAAW,EAAEQ,YAAY,EAAEN,KAAK,CACnC,CAAC;EAED,oBACE,IAAAvB,WAAA,CAAAqC,GAAA,EAACxC,mBAAA,CAAA8B,iBAAiB,CAACW,QAAQ;IAACC,KAAK,EAAEP,YAAa;IAAAR,QAAA,EAC7CF,OAAO,GAAGE,QAAQ,gBAAG,IAAAxB,WAAA,CAAAqC,GAAA;MAAKd,KAAK,EAAEY,SAAU;MAAAX,QAAA,EAAEA;IAAQ,CAAM;EAAC,CACnC,CAAC;AAEjC;;AAEA;AACA;AACA;AACA;AACO,SAASgB,kBAAkBA,CAACnB,WAAyB,EAAuB;EACjF,MAAMI,MAAM,GAAG,IAAAC,iBAAU,EAACC,qCAAiB,CAAC;EAC5C,IAAI,CAACF,MAAM,EAAE;IACX,MAAM,IAAIG,KAAK,CAAC,+DAA+D,CAAC;EAClF;EACA,MAAMC,YAAY,GAAGJ,MAAM,CAACK,KAAK,CAACC,IAAI;EACtC,OAAO,IAAAE,cAAO,EACZ,MAAM,IAAAG,4BAAc,EAACf,WAAW,EAAEQ,YAAY,CAAwB,EACtE,CAACR,WAAW,EAAEQ,YAAY,CAC5B,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.buildNativePresetStyle = buildNativePresetStyle;
|
|
7
|
+
exports.buildScopeVars = buildScopeVars;
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _presetVars = require("../preset-vars.js");
|
|
10
|
+
var _lazyRequire = require("../../utils/lazy-require.js");
|
|
11
|
+
const getNativeWindVars = (0, _lazyRequire.lazyRequire)('nativewind');
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Build the CSS custom-property map for a preset, ready to be applied to a
|
|
15
|
+
* subtree. Always includes the resolved `--color-*` vars so Tailwind v4
|
|
16
|
+
* `@theme` utilities (e.g. `bg-background`) honour the scope.
|
|
17
|
+
*/
|
|
18
|
+
function buildScopeVars(colorPreset, mode) {
|
|
19
|
+
return (0, _presetVars.getPresetVars)(colorPreset, mode, {
|
|
20
|
+
includeResolvedColorVars: true
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Build a native style object carrying every CSS var of the preset, using
|
|
26
|
+
* NativeWind's `vars()` when available. Returns `undefined` on web (where the
|
|
27
|
+
* provider writes vars to `documentElement` instead) or when `nativewind` is
|
|
28
|
+
* not installed.
|
|
29
|
+
*/
|
|
30
|
+
function buildNativePresetStyle(colorPreset, mode) {
|
|
31
|
+
if (_reactNative.Platform.OS === 'web') return undefined;
|
|
32
|
+
const module = getNativeWindVars();
|
|
33
|
+
if (!module || typeof module.vars !== 'function') return undefined;
|
|
34
|
+
return module.vars(buildScopeVars(colorPreset, mode));
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=style-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_presetVars","_lazyRequire","getNativeWindVars","lazyRequire","buildScopeVars","colorPreset","mode","getPresetVars","includeResolvedColorVars","buildNativePresetStyle","Platform","OS","undefined","module","vars"],"sourceRoot":"../../../../src","sources":["theme/color-scope/style-builder.ts"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,YAAA,GAAAF,OAAA;AAMA,MAAMG,iBAAiB,GAAG,IAAAC,wBAAW,EAAuB,YAAY,CAAC;;AAEzE;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAC5BC,WAAyB,EACzBC,IAAsB,EACE;EACxB,OAAO,IAAAC,yBAAa,EAACF,WAAW,EAAEC,IAAI,EAAE;IAAEE,wBAAwB,EAAE;EAAK,CAAC,CAAC;AAC7E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,sBAAsBA,CACpCJ,WAAyB,EACzBC,IAAsB,EACA;EACtB,IAAII,qBAAQ,CAACC,EAAE,KAAK,KAAK,EAAE,OAAOC,SAAS;EAC3C,MAAMC,MAAM,GAAGX,iBAAiB,CAAC,CAAC;EAClC,IAAI,CAACW,MAAM,IAAI,OAAOA,MAAM,CAACC,IAAI,KAAK,UAAU,EAAE,OAAOF,SAAS;EAClE,OAAOC,MAAM,CAACC,IAAI,CAACV,cAAc,CAACC,WAAW,EAAEC,IAAI,CAAC,CAAC;AACvD","ignoreList":[]}
|
|
@@ -18,7 +18,7 @@ Object.defineProperty(exports, "APP_COLOR_PRESETS", {
|
|
|
18
18
|
Object.defineProperty(exports, "BloomColorScope", {
|
|
19
19
|
enumerable: true,
|
|
20
20
|
get: function () {
|
|
21
|
-
return
|
|
21
|
+
return _colorScope.BloomColorScope;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "BloomThemeProvider", {
|
|
@@ -93,6 +93,12 @@ Object.defineProperty(exports, "useBloomTheme", {
|
|
|
93
93
|
return _useTheme.useBloomTheme;
|
|
94
94
|
}
|
|
95
95
|
});
|
|
96
|
+
Object.defineProperty(exports, "useColorScopeStyle", {
|
|
97
|
+
enumerable: true,
|
|
98
|
+
get: function () {
|
|
99
|
+
return _colorScope.useColorScopeStyle;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
96
102
|
Object.defineProperty(exports, "useTheme", {
|
|
97
103
|
enumerable: true,
|
|
98
104
|
get: function () {
|
|
@@ -112,6 +118,7 @@ Object.defineProperty(exports, "webLocalStorage", {
|
|
|
112
118
|
}
|
|
113
119
|
});
|
|
114
120
|
var _BloomThemeProvider = require("./BloomThemeProvider.js");
|
|
121
|
+
var _colorScope = require("./color-scope");
|
|
115
122
|
var _buildTheme = require("./build-theme.js");
|
|
116
123
|
var _useTheme = require("./use-theme.js");
|
|
117
124
|
var _colorPresets = require("./color-presets.js");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_BloomThemeProvider","require","_buildTheme","_useTheme","_colorPresets","_presetVars","_applyDarkClass","_setColorSchemeSafe","_initCssInterop","_persistence"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_BloomThemeProvider","require","_colorScope","_buildTheme","_useTheme","_colorPresets","_presetVars","_applyDarkClass","_setColorSchemeSafe","_initCssInterop","_persistence"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AAKA,IAAAC,WAAA,GAAAD,OAAA;AAEA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AAGA,IAAAI,aAAA,GAAAJ,OAAA;AAOA,IAAAK,WAAA,GAAAL,OAAA;AAKA,IAAAM,eAAA,GAAAN,OAAA;AACA,IAAAO,mBAAA,GAAAP,OAAA;AACA,IAAAQ,eAAA,GAAAR,OAAA;AAEA,IAAAS,YAAA,GAAAT,OAAA","ignoreList":[]}
|
|
@@ -5,12 +5,13 @@
|
|
|
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,
|
|
9
|
-
import { useColorScheme as useRNColorScheme } from 'react-native';
|
|
8
|
+
import React, { createContext, useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
9
|
+
import { Platform, View, useColorScheme as useRNColorScheme } from 'react-native';
|
|
10
10
|
import { useControllableState } from "../hooks/useControllableState.js";
|
|
11
11
|
import { FontLoader } from '../fonts/FontLoader';
|
|
12
12
|
import { applyDarkClass, applyColorPresetVars } from "./apply-dark-class.js";
|
|
13
13
|
import { buildTheme } from "./build-theme.js";
|
|
14
|
+
import { buildNativePresetStyle } from "./color-scope/style-builder.js";
|
|
14
15
|
import { readPersistedTheme, readPersistedThemeSync, removePersistedTheme, writePersistedTheme } from "./persistence.js";
|
|
15
16
|
import { setColorSchemeSafe } from "./set-color-scheme-safe.js";
|
|
16
17
|
import { useIsomorphicLayoutEffect } from "./use-isomorphic-layout-effect.js";
|
|
@@ -134,6 +135,7 @@ export function BloomThemeProvider({
|
|
|
134
135
|
onHydrating,
|
|
135
136
|
fonts = true,
|
|
136
137
|
onFontsLoading,
|
|
138
|
+
nativeWrapperStyle,
|
|
137
139
|
children
|
|
138
140
|
}) {
|
|
139
141
|
const rnScheme = useRNColorScheme();
|
|
@@ -176,40 +178,20 @@ export function BloomThemeProvider({
|
|
|
176
178
|
}), [colorPreset, resolved, isAdaptive, mode, setMode, setColorPreset, resetTheme]);
|
|
177
179
|
const shouldAwait = awaitHydration ?? Boolean(persistKey && storage);
|
|
178
180
|
const isGated = shouldAwait && !hydrated;
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
children: isGated ? onHydrating ?? null : children
|
|
185
|
-
})
|
|
181
|
+
const nativeVarsStyle = useMemo(() => Platform.OS === 'web' ? undefined : buildNativePresetStyle(colorPreset, resolved), [colorPreset, resolved]);
|
|
182
|
+
const content = /*#__PURE__*/_jsx(FontLoader, {
|
|
183
|
+
enabled: fonts,
|
|
184
|
+
fallback: onFontsLoading,
|
|
185
|
+
children: isGated ? onHydrating ?? null : children
|
|
186
186
|
});
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* Scoped color override for a subtree. Inherits the resolved mode from the
|
|
191
|
-
* parent `BloomThemeProvider` but renders descendants with a different preset.
|
|
192
|
-
*/
|
|
193
|
-
|
|
194
|
-
export function BloomColorScope({
|
|
195
|
-
colorPreset,
|
|
196
|
-
children
|
|
197
|
-
}) {
|
|
198
|
-
const parent = useContext(BloomThemeContext);
|
|
199
|
-
if (!parent) {
|
|
200
|
-
throw new Error('BloomColorScope must be used within a <BloomThemeProvider>');
|
|
201
|
-
}
|
|
202
|
-
const contextValue = useMemo(() => {
|
|
203
|
-
const theme = buildTheme(colorPreset, parent.theme.mode);
|
|
204
|
-
return {
|
|
205
|
-
...parent,
|
|
206
|
-
theme,
|
|
207
|
-
colorPreset
|
|
208
|
-
};
|
|
209
|
-
}, [colorPreset, parent]);
|
|
210
187
|
return /*#__PURE__*/_jsx(BloomThemeContext.Provider, {
|
|
211
188
|
value: contextValue,
|
|
212
|
-
children:
|
|
189
|
+
children: Platform.OS === 'web' ? content : /*#__PURE__*/_jsx(View, {
|
|
190
|
+
style: [{
|
|
191
|
+
flex: 1
|
|
192
|
+
}, nativeVarsStyle, nativeWrapperStyle],
|
|
193
|
+
children: content
|
|
194
|
+
})
|
|
213
195
|
});
|
|
214
196
|
}
|
|
215
197
|
//# sourceMappingURL=BloomThemeProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","createContext","useCallback","
|
|
1
|
+
{"version":3,"names":["React","createContext","useCallback","useEffect","useMemo","useRef","useState","Platform","View","useColorScheme","useRNColorScheme","useControllableState","FontLoader","applyDarkClass","applyColorPresetVars","buildTheme","buildNativePresetStyle","readPersistedTheme","readPersistedThemeSync","removePersistedTheme","writePersistedTheme","setColorSchemeSafe","useIsomorphicLayoutEffect","jsx","_jsx","DEFAULT_PRESET","DEFAULT_MODE","BloomThemeContext","useThemeState","controlledMode","controlledPreset","defaultMode","defaultPreset","persistKey","storage","onModeChange","onColorPresetChange","syncResult","syncState","kind","state","initialMode","mode","initialPreset","colorPreset","hydrated","setHydrated","setModeInternal","value","defaultValue","setPresetInternal","modeRef","current","presetRef","cancelled","then","undefined","setMode","next","setColorPreset","resetTheme","BloomThemeProvider","defaultColorPreset","awaitHydration","onHydrating","fonts","onFontsLoading","nativeWrapperStyle","children","rnScheme","isAdaptive","effectiveMode","resolved","contextValue","theme","shouldAwait","Boolean","isGated","nativeVarsStyle","OS","content","enabled","fallback","Provider","style","flex"],"sourceRoot":"../../../src","sources":["theme/BloomThemeProvider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { Platform } from 'react-native';
|
|
4
4
|
import { APP_COLOR_PRESETS } from "./color-presets.js";
|
|
5
|
+
import { getPresetVars } from "./preset-vars.js";
|
|
5
6
|
export function applyDarkClass(resolved) {
|
|
6
7
|
if (Platform.OS === 'web' && typeof document !== 'undefined') {
|
|
7
8
|
document.documentElement.classList.toggle('dark', resolved === 'dark');
|
|
@@ -12,16 +13,18 @@ export function applyDarkClass(resolved) {
|
|
|
12
13
|
* Apply a color preset's CSS custom properties to the document root.
|
|
13
14
|
* No-op on native — only affects web.
|
|
14
15
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* `hsl(var(--primary))
|
|
18
|
-
*
|
|
16
|
+
* Writes both the raw HSL triples (e.g. `--primary: 185 100% 20%`) and the
|
|
17
|
+
* resolved `--color-*` vars (`--color-primary: hsl(185 100% 20%)`) so both
|
|
18
|
+
* shadcn-style `hsl(var(--primary))` plumbing and Tailwind v4 `@theme`
|
|
19
|
+
* utilities resolve consistently. Includes extended tokens (card, chart-*,
|
|
20
|
+
* content-area, sidebar-*) so consumer apps don't need to synthesize them.
|
|
19
21
|
*/
|
|
20
22
|
export function applyColorPresetVars(preset, resolved) {
|
|
21
23
|
if (Platform.OS !== 'web' || typeof document === 'undefined') return;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
if (!APP_COLOR_PRESETS[preset]) return;
|
|
25
|
+
const vars = getPresetVars(preset, resolved, {
|
|
26
|
+
includeResolvedColorVars: true
|
|
27
|
+
});
|
|
25
28
|
const root = document.documentElement.style;
|
|
26
29
|
for (const [key, value] of Object.entries(vars)) {
|
|
27
30
|
root.setProperty(key, value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","APP_COLOR_PRESETS","applyDarkClass","resolved","OS","document","documentElement","classList","toggle","applyColorPresetVars","preset","
|
|
1
|
+
{"version":3,"names":["Platform","APP_COLOR_PRESETS","getPresetVars","applyDarkClass","resolved","OS","document","documentElement","classList","toggle","applyColorPresetVars","preset","vars","includeResolvedColorVars","root","style","key","value","Object","entries","setProperty"],"sourceRoot":"../../../src","sources":["theme/apply-dark-class.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,iBAAiB,QAA2B,oBAAiB;AACtE,SAASC,aAAa,QAAQ,kBAAe;AAE7C,OAAO,SAASC,cAAcA,CAACC,QAA0B,EAAE;EACzD,IAAIJ,QAAQ,CAACK,EAAE,KAAK,KAAK,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;IAC5DA,QAAQ,CAACC,eAAe,CAACC,SAAS,CAACC,MAAM,CAAC,MAAM,EAAEL,QAAQ,KAAK,MAAM,CAAC;EACxE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASM,oBAAoBA,CAACC,MAAoB,EAAEP,QAA0B,EAAE;EACrF,IAAIJ,QAAQ,CAACK,EAAE,KAAK,KAAK,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;EAC9D,IAAI,CAACL,iBAAiB,CAACU,MAAM,CAAC,EAAE;EAEhC,MAAMC,IAAI,GAAGV,aAAa,CAACS,MAAM,EAAEP,QAAQ,EAAE;IAAES,wBAAwB,EAAE;EAAK,CAAC,CAAC;EAChF,MAAMC,IAAI,GAAGR,QAAQ,CAACC,eAAe,CAACQ,KAAK;EAE3C,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACP,IAAI,CAAC,EAAE;IAC/CE,IAAI,CAACM,WAAW,CAACJ,GAAG,EAAEC,KAAK,CAAC;EAC9B;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useContext, useMemo } from 'react';
|
|
4
|
+
import { View } from 'react-native';
|
|
5
|
+
import { BloomThemeContext } from "../BloomThemeProvider.js";
|
|
6
|
+
import { buildTheme } from "../build-theme.js";
|
|
7
|
+
import { buildNativePresetStyle } from "./style-builder.js";
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
export function BloomColorScope({
|
|
10
|
+
colorPreset,
|
|
11
|
+
asChild = false,
|
|
12
|
+
style,
|
|
13
|
+
children
|
|
14
|
+
}) {
|
|
15
|
+
const parent = useContext(BloomThemeContext);
|
|
16
|
+
if (!parent) {
|
|
17
|
+
throw new Error('BloomColorScope must be used within a <BloomThemeProvider>');
|
|
18
|
+
}
|
|
19
|
+
const resolvedMode = parent.theme.mode;
|
|
20
|
+
const contextValue = useMemo(() => {
|
|
21
|
+
const theme = buildTheme(colorPreset, resolvedMode);
|
|
22
|
+
return {
|
|
23
|
+
...parent,
|
|
24
|
+
theme,
|
|
25
|
+
colorPreset
|
|
26
|
+
};
|
|
27
|
+
}, [colorPreset, resolvedMode, parent]);
|
|
28
|
+
const varsStyle = useMemo(() => buildNativePresetStyle(colorPreset, resolvedMode), [colorPreset, resolvedMode]);
|
|
29
|
+
return /*#__PURE__*/_jsx(BloomThemeContext.Provider, {
|
|
30
|
+
value: contextValue,
|
|
31
|
+
children: asChild ? children : /*#__PURE__*/_jsx(View, {
|
|
32
|
+
style: [{
|
|
33
|
+
flex: 1
|
|
34
|
+
}, varsStyle, style],
|
|
35
|
+
children: children
|
|
36
|
+
})
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Escape hatch for advanced cases where the wrapping element is owned by the
|
|
42
|
+
* caller. Returns a stable native style object carrying the preset's CSS vars.
|
|
43
|
+
* Returns `undefined` on web or when `nativewind` is not installed.
|
|
44
|
+
*/
|
|
45
|
+
export function useColorScopeStyle(colorPreset) {
|
|
46
|
+
const parent = useContext(BloomThemeContext);
|
|
47
|
+
if (!parent) {
|
|
48
|
+
throw new Error('useColorScopeStyle must be used within a <BloomThemeProvider>');
|
|
49
|
+
}
|
|
50
|
+
const resolvedMode = parent.theme.mode;
|
|
51
|
+
return useMemo(() => buildNativePresetStyle(colorPreset, resolvedMode), [colorPreset, resolvedMode]);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useContext","useMemo","View","BloomThemeContext","buildTheme","buildNativePresetStyle","jsx","_jsx","BloomColorScope","colorPreset","asChild","style","children","parent","Error","resolvedMode","theme","mode","contextValue","varsStyle","Provider","value","flex","useColorScopeStyle"],"sourceRoot":"../../../../src","sources":["theme/color-scope/index.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAClD,SAASC,IAAI,QAAwC,cAAc;AAEnE,SAASC,iBAAiB,QAAqC,0BAAuB;AACtF,SAASC,UAAU,QAAQ,mBAAgB;AAE3C,SAASC,sBAAsB,QAAQ,oBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAezD,OAAO,SAASC,eAAeA,CAAC;EAC9BC,WAAW;EACXC,OAAO,GAAG,KAAK;EACfC,KAAK;EACLC;AACoB,CAAC,EAAE;EACvB,MAAMC,MAAM,GAAGb,UAAU,CAACG,iBAAiB,CAAC;EAC5C,IAAI,CAACU,MAAM,EAAE;IACX,MAAM,IAAIC,KAAK,CAAC,4DAA4D,CAAC;EAC/E;EAEA,MAAMC,YAAY,GAAGF,MAAM,CAACG,KAAK,CAACC,IAAI;EAEtC,MAAMC,YAAY,GAAGjB,OAAO,CAAyB,MAAM;IACzD,MAAMe,KAAK,GAAGZ,UAAU,CAACK,WAAW,EAAEM,YAAY,CAAC;IACnD,OAAO;MAAE,GAAGF,MAAM;MAAEG,KAAK;MAAEP;IAAY,CAAC;EAC1C,CAAC,EAAE,CAACA,WAAW,EAAEM,YAAY,EAAEF,MAAM,CAAC,CAAC;EAEvC,MAAMM,SAAS,GAAGlB,OAAO,CACvB,MAAMI,sBAAsB,CAACI,WAAW,EAAEM,YAAY,CAAC,EACvD,CAACN,WAAW,EAAEM,YAAY,CAC5B,CAAC;EAED,oBACER,IAAA,CAACJ,iBAAiB,CAACiB,QAAQ;IAACC,KAAK,EAAEH,YAAa;IAAAN,QAAA,EAC7CF,OAAO,GAAGE,QAAQ,gBAAGL,IAAA,CAACL,IAAI;MAACS,KAAK,EAAE,CAAC;QAAEW,IAAI,EAAE;MAAE,CAAC,EAAEH,SAAS,EAAER,KAAK,CAAE;MAAAC,QAAA,EAAEA;IAAQ,CAAO;EAAC,CAC3D,CAAC;AAEjC;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASW,kBAAkBA,CAACd,WAAyB,EAAwB;EAClF,MAAMI,MAAM,GAAGb,UAAU,CAACG,iBAAiB,CAAC;EAC5C,IAAI,CAACU,MAAM,EAAE;IACX,MAAM,IAAIC,KAAK,CAAC,+DAA+D,CAAC;EAClF;EACA,MAAMC,YAAY,GAAGF,MAAM,CAACG,KAAK,CAACC,IAAI;EACtC,OAAOhB,OAAO,CACZ,MAAMI,sBAAsB,CAACI,WAAW,EAAEM,YAAY,CAAC,EACvD,CAACN,WAAW,EAAEM,YAAY,CAC5B,CAAC;AACH","ignoreList":[]}
|