@kbach/react 0.2.3 → 0.2.5
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/dist/index.d.mts +17 -3
- package/dist/index.d.ts +17 -3
- package/dist/index.js +2 -7
- package/dist/index.mjs +2 -7
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -142,14 +142,28 @@ declare function useTheme(): ThemeContextValue;
|
|
|
142
142
|
|
|
143
143
|
interface ThemeProviderProps {
|
|
144
144
|
children: ReactNode;
|
|
145
|
-
/**
|
|
145
|
+
/** Initial mode. Falls back to persisted value, then 'system'. */
|
|
146
146
|
defaultMode?: ThemeMode;
|
|
147
|
+
/**
|
|
148
|
+
* System color scheme for native `defaultMode="system"`.
|
|
149
|
+
*
|
|
150
|
+
* Pass the value of `useColorScheme()` from `react-native`. When importing
|
|
151
|
+
* `ThemeProvider` from `@kbach/native` this is handled automatically.
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```tsx
|
|
155
|
+
* import { useColorScheme } from 'react-native';
|
|
156
|
+
* const colorScheme = useColorScheme();
|
|
157
|
+
* <ThemeProvider defaultMode="system" colorScheme={colorScheme}>…</ThemeProvider>
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
colorScheme?: 'light' | 'dark' | null;
|
|
147
161
|
/** Override the config (useful for per-tree config). Defaults to global getConfig(). */
|
|
148
162
|
config?: FrameworkConfig;
|
|
149
|
-
/** Disable persistence to localStorage
|
|
163
|
+
/** Disable persistence to localStorage */
|
|
150
164
|
disablePersistence?: boolean;
|
|
151
165
|
}
|
|
152
|
-
declare function ThemeProvider({ children, defaultMode, config: configOverride, disablePersistence, }: ThemeProviderProps): React__default.JSX.Element;
|
|
166
|
+
declare function ThemeProvider({ children, defaultMode, colorScheme, config: configOverride, disablePersistence, }: ThemeProviderProps): React__default.JSX.Element;
|
|
153
167
|
|
|
154
168
|
type ToggleVariant = 'button' | 'switch' | 'icon-button';
|
|
155
169
|
interface ThemeToggleProps {
|
package/dist/index.d.ts
CHANGED
|
@@ -142,14 +142,28 @@ declare function useTheme(): ThemeContextValue;
|
|
|
142
142
|
|
|
143
143
|
interface ThemeProviderProps {
|
|
144
144
|
children: ReactNode;
|
|
145
|
-
/**
|
|
145
|
+
/** Initial mode. Falls back to persisted value, then 'system'. */
|
|
146
146
|
defaultMode?: ThemeMode;
|
|
147
|
+
/**
|
|
148
|
+
* System color scheme for native `defaultMode="system"`.
|
|
149
|
+
*
|
|
150
|
+
* Pass the value of `useColorScheme()` from `react-native`. When importing
|
|
151
|
+
* `ThemeProvider` from `@kbach/native` this is handled automatically.
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```tsx
|
|
155
|
+
* import { useColorScheme } from 'react-native';
|
|
156
|
+
* const colorScheme = useColorScheme();
|
|
157
|
+
* <ThemeProvider defaultMode="system" colorScheme={colorScheme}>…</ThemeProvider>
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
colorScheme?: 'light' | 'dark' | null;
|
|
147
161
|
/** Override the config (useful for per-tree config). Defaults to global getConfig(). */
|
|
148
162
|
config?: FrameworkConfig;
|
|
149
|
-
/** Disable persistence to localStorage
|
|
163
|
+
/** Disable persistence to localStorage */
|
|
150
164
|
disablePersistence?: boolean;
|
|
151
165
|
}
|
|
152
|
-
declare function ThemeProvider({ children, defaultMode, config: configOverride, disablePersistence, }: ThemeProviderProps): React__default.JSX.Element;
|
|
166
|
+
declare function ThemeProvider({ children, defaultMode, colorScheme, config: configOverride, disablePersistence, }: ThemeProviderProps): React__default.JSX.Element;
|
|
153
167
|
|
|
154
168
|
type ToggleVariant = 'button' | 'switch' | 'icon-button';
|
|
155
169
|
interface ThemeToggleProps {
|
package/dist/index.js
CHANGED
|
@@ -2065,11 +2065,6 @@ function subscribeGlobalDarkMode(callback) {
|
|
|
2065
2065
|
|
|
2066
2066
|
// src/ThemeProvider.tsx
|
|
2067
2067
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
2068
|
-
var _useColorScheme;
|
|
2069
|
-
try {
|
|
2070
|
-
({ useColorScheme: _useColorScheme } = require("react-native"));
|
|
2071
|
-
} catch {
|
|
2072
|
-
}
|
|
2073
2068
|
var STORAGE_KEY = "kbach-theme";
|
|
2074
2069
|
function loadPersistedMode() {
|
|
2075
2070
|
try {
|
|
@@ -2098,20 +2093,20 @@ function applyWebTheme(resolvedMode, strategy) {
|
|
|
2098
2093
|
function ThemeProvider({
|
|
2099
2094
|
children,
|
|
2100
2095
|
defaultMode = "system",
|
|
2096
|
+
colorScheme,
|
|
2101
2097
|
config: configOverride,
|
|
2102
2098
|
disablePersistence = false
|
|
2103
2099
|
}) {
|
|
2104
2100
|
const [resolvedConfig, setResolvedConfig] = (0, import_react2.useState)(
|
|
2105
2101
|
() => configOverride ? buildConfig(configOverride) : getConfig()
|
|
2106
2102
|
);
|
|
2107
|
-
const nativeScheme = _useColorScheme?.();
|
|
2108
2103
|
const [webScheme, setWebScheme] = (0, import_react2.useState)(() => {
|
|
2109
2104
|
if (isWeb && typeof window !== "undefined") {
|
|
2110
2105
|
return window.matchMedia?.("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
2111
2106
|
}
|
|
2112
2107
|
return "light";
|
|
2113
2108
|
});
|
|
2114
|
-
const systemScheme = isWeb ? webScheme :
|
|
2109
|
+
const systemScheme = isWeb ? webScheme : colorScheme === "dark" ? "dark" : "light";
|
|
2115
2110
|
const [mode, _setMode] = (0, import_react2.useState)(() => {
|
|
2116
2111
|
if (!disablePersistence) {
|
|
2117
2112
|
const persisted = loadPersistedMode();
|
package/dist/index.mjs
CHANGED
|
@@ -39,11 +39,6 @@ import {
|
|
|
39
39
|
useState
|
|
40
40
|
} from "react";
|
|
41
41
|
import { jsx } from "react/jsx-runtime";
|
|
42
|
-
var _useColorScheme;
|
|
43
|
-
try {
|
|
44
|
-
({ useColorScheme: _useColorScheme } = __require("react-native"));
|
|
45
|
-
} catch {
|
|
46
|
-
}
|
|
47
42
|
var STORAGE_KEY = "kbach-theme";
|
|
48
43
|
function loadPersistedMode() {
|
|
49
44
|
try {
|
|
@@ -72,20 +67,20 @@ function applyWebTheme(resolvedMode, strategy) {
|
|
|
72
67
|
function ThemeProvider({
|
|
73
68
|
children,
|
|
74
69
|
defaultMode = "system",
|
|
70
|
+
colorScheme,
|
|
75
71
|
config: configOverride,
|
|
76
72
|
disablePersistence = false
|
|
77
73
|
}) {
|
|
78
74
|
const [resolvedConfig, setResolvedConfig] = useState(
|
|
79
75
|
() => configOverride ? buildConfig(configOverride) : getConfig()
|
|
80
76
|
);
|
|
81
|
-
const nativeScheme = _useColorScheme?.();
|
|
82
77
|
const [webScheme, setWebScheme] = useState(() => {
|
|
83
78
|
if (isWeb && typeof window !== "undefined") {
|
|
84
79
|
return window.matchMedia?.("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
85
80
|
}
|
|
86
81
|
return "light";
|
|
87
82
|
});
|
|
88
|
-
const systemScheme = isWeb ? webScheme :
|
|
83
|
+
const systemScheme = isWeb ? webScheme : colorScheme === "dark" ? "dark" : "light";
|
|
89
84
|
const [mode, _setMode] = useState(() => {
|
|
90
85
|
if (!disablePersistence) {
|
|
91
86
|
const persisted = loadPersistedMode();
|