react-native-terra-ui 0.10.2 → 0.11.1
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/CHANGELOG.md +28 -0
- package/README.md +8 -4
- package/lib/module/components/badge/Badge.js +174 -0
- package/lib/module/components/badge/Badge.js.map +1 -0
- package/lib/module/components/badge/index.js +4 -0
- package/lib/module/components/badge/index.js.map +1 -0
- package/lib/module/components/badge/parts/BadgeIndicator.js +191 -0
- package/lib/module/components/badge/parts/BadgeIndicator.js.map +1 -0
- package/lib/module/components/badge/types.js +4 -0
- package/lib/module/components/badge/types.js.map +1 -0
- package/lib/module/components/badge/utils.js +25 -0
- package/lib/module/components/badge/utils.js.map +1 -0
- package/lib/module/components/index.js +1 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/context/ThemeProvider.js +5 -5
- package/lib/module/context/ThemeProvider.js.map +1 -1
- package/lib/module/theme/define-config.js +5 -5
- package/lib/module/theme/define-config.js.map +1 -1
- package/lib/module/theme/errors.js +1 -1
- package/lib/module/theme/index.js +2 -2
- package/lib/module/theme/index.js.map +1 -1
- package/lib/module/theme/registry.js +15 -21
- package/lib/module/theme/registry.js.map +1 -1
- package/lib/module/theme/resolve-config.js +68 -68
- package/lib/module/theme/resolve-config.js.map +1 -1
- package/lib/module/theme/runtime.js +11 -11
- package/lib/module/theme/runtime.js.map +1 -1
- package/lib/module/theme/selection-store.js +7 -7
- package/lib/module/theme/selection-store.js.map +1 -1
- package/lib/module/theme/unistyles-adapter.js +1 -1
- package/lib/module/utils/accent-utils.js +24 -24
- package/lib/module/utils/accent-utils.js.map +1 -1
- package/lib/typescript/src/components/badge/Badge.d.ts +16 -0
- package/lib/typescript/src/components/badge/Badge.d.ts.map +1 -0
- package/lib/typescript/src/components/badge/index.d.ts +3 -0
- package/lib/typescript/src/components/badge/index.d.ts.map +1 -0
- package/lib/typescript/src/components/badge/parts/BadgeIndicator.d.ts +19 -0
- package/lib/typescript/src/components/badge/parts/BadgeIndicator.d.ts.map +1 -0
- package/lib/typescript/src/components/badge/types.d.ts +48 -0
- package/lib/typescript/src/components/badge/types.d.ts.map +1 -0
- package/lib/typescript/src/components/badge/utils.d.ts +13 -0
- package/lib/typescript/src/components/badge/utils.d.ts.map +1 -0
- package/lib/typescript/src/components/index.d.ts +1 -0
- package/lib/typescript/src/components/index.d.ts.map +1 -1
- package/lib/typescript/src/context/ThemeProvider.d.ts +7 -7
- package/lib/typescript/src/context/ThemeProvider.d.ts.map +1 -1
- package/lib/typescript/src/theme/define-config.d.ts +11 -8
- package/lib/typescript/src/theme/define-config.d.ts.map +1 -1
- package/lib/typescript/src/theme/errors.d.ts +1 -1
- package/lib/typescript/src/theme/index.d.ts +3 -3
- package/lib/typescript/src/theme/index.d.ts.map +1 -1
- package/lib/typescript/src/theme/registry.d.ts +5 -5
- package/lib/typescript/src/theme/registry.d.ts.map +1 -1
- package/lib/typescript/src/theme/resolve-config.d.ts +25 -25
- package/lib/typescript/src/theme/resolve-config.d.ts.map +1 -1
- package/lib/typescript/src/theme/runtime.d.ts +5 -5
- package/lib/typescript/src/theme/runtime.d.ts.map +1 -1
- package/lib/typescript/src/theme/selection-store.d.ts +5 -5
- package/lib/typescript/src/theme/selection-store.d.ts.map +1 -1
- package/lib/typescript/src/theme/types.d.ts +20 -47
- package/lib/typescript/src/theme/types.d.ts.map +1 -1
- package/lib/typescript/src/theme/unistyles-adapter.d.ts +1 -1
- package/lib/typescript/src/utils/accent-utils.d.ts +6 -7
- package/lib/typescript/src/utils/accent-utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/badge/Badge.tsx +111 -0
- package/src/components/badge/index.ts +2 -0
- package/src/components/badge/parts/BadgeIndicator.tsx +166 -0
- package/src/components/badge/types.ts +58 -0
- package/src/components/badge/utils.ts +24 -0
- package/src/components/index.ts +1 -0
- package/src/context/ThemeProvider.tsx +10 -10
- package/src/theme/define-config.ts +12 -7
- package/src/theme/errors.ts +1 -1
- package/src/theme/index.ts +6 -8
- package/src/theme/registry.ts +15 -23
- package/src/theme/resolve-config.ts +88 -95
- package/src/theme/runtime.ts +11 -11
- package/src/theme/selection-store.ts +9 -9
- package/src/theme/types.ts +21 -47
- package/src/theme/unistyles-adapter.ts +1 -1
- package/src/utils/accent-utils.ts +25 -25
|
@@ -55,8 +55,8 @@ let installation = "unconfigured";
|
|
|
55
55
|
|
|
56
56
|
export const getIsConfigured = () => installation !== "unconfigured";
|
|
57
57
|
|
|
58
|
-
/** Names of the registered
|
|
59
|
-
export const
|
|
58
|
+
/** Names of the registered themes, in declaration order. Returns a fresh array. */
|
|
59
|
+
export const getThemeNames = () => [...getInstalledConfig().themeNames];
|
|
60
60
|
export const getImageComponent = () => settings.imageComponent;
|
|
61
61
|
export const getIcon = name => settings.icons[name] ?? defaultIcons[name];
|
|
62
62
|
export const getRequiredIcon = name => settings.icons[name] ?? defaultIcons[name];
|
|
@@ -75,22 +75,22 @@ export const getSurfaceElevation = () => settings.surfaceElevation;
|
|
|
75
75
|
|
|
76
76
|
/**
|
|
77
77
|
* Resolves one scheme's theme from the installed configuration with the named
|
|
78
|
-
*
|
|
79
|
-
* not the configured `
|
|
78
|
+
* theme selected. Omitting `name` selects the base theme (defaults + shared —
|
|
79
|
+
* not the configured `defaultTheme`). An unknown name warns in development
|
|
80
80
|
* and falls back to the base theme. Pure with respect to runtime state: it
|
|
81
81
|
* never changes the applied selection.
|
|
82
82
|
*/
|
|
83
|
-
export function resolveTheme(scheme,
|
|
83
|
+
export function resolveTheme(scheme, name) {
|
|
84
84
|
const config = getInstalledConfig();
|
|
85
|
-
let
|
|
86
|
-
if (
|
|
87
|
-
if (config.
|
|
88
|
-
|
|
85
|
+
let themeName = null;
|
|
86
|
+
if (name !== undefined) {
|
|
87
|
+
if (config.themeNames.includes(name)) {
|
|
88
|
+
themeName = name;
|
|
89
89
|
} else if (__DEV__) {
|
|
90
|
-
console.warn(`[react-native-terra-ui] Unknown
|
|
90
|
+
console.warn(`[react-native-terra-ui] Unknown theme "${name}"; resolving the base theme.`);
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
|
-
return resolveThemeScheme(config, scheme,
|
|
93
|
+
return resolveThemeScheme(config, scheme, themeName).theme;
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
// ─── Configuration ───────────────────────────────────────────────────────────
|
|
@@ -150,24 +150,18 @@ function deriveMode(config) {
|
|
|
150
150
|
if (config.adaptiveThemes === false) return "light";
|
|
151
151
|
return "system";
|
|
152
152
|
}
|
|
153
|
-
const pickThemeInput = config => ({
|
|
154
|
-
shared: config.shared,
|
|
155
|
-
schemes: config.schemes,
|
|
156
|
-
accents: config.accents,
|
|
157
|
-
defaultAccent: config.defaultAccent
|
|
158
|
-
});
|
|
159
153
|
function applyConfig(config, kind) {
|
|
160
154
|
// (a) Pure: validate and build everything. Throws leave ALL state untouched.
|
|
161
|
-
const themeConfig = normalizeThemeInput(
|
|
155
|
+
const themeConfig = normalizeThemeInput(config);
|
|
162
156
|
const mode = deriveMode(config);
|
|
163
157
|
const {
|
|
164
158
|
themes,
|
|
165
159
|
diagnostics
|
|
166
|
-
} = resolveThemes(themeConfig, themeConfig.
|
|
160
|
+
} = resolveThemes(themeConfig, themeConfig.defaultTheme);
|
|
167
161
|
const nextSettings = buildSettings(config);
|
|
168
162
|
|
|
169
163
|
// (b) Native. `StyleSheet.configure` runs once per app; after that the
|
|
170
|
-
// rebuilt themes reach the runtime the same way
|
|
164
|
+
// rebuilt themes reach the runtime the same way a theme change does, so an
|
|
171
165
|
// app's config is never stranded behind the fallback's defaults.
|
|
172
166
|
if (hasConfiguredUnistyles()) {
|
|
173
167
|
updateThemes(themes);
|
|
@@ -184,7 +178,7 @@ function applyConfig(config, kind) {
|
|
|
184
178
|
settings = nextSettings;
|
|
185
179
|
setInstalledConfig(themeConfig);
|
|
186
180
|
publishThemeSelection({
|
|
187
|
-
|
|
181
|
+
themeName: themeConfig.defaultTheme ?? undefined,
|
|
188
182
|
mode
|
|
189
183
|
});
|
|
190
184
|
warnContrastDiagnostics(diagnostics);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["defaultIcons","defaultImage","warnContrastDiagnostics","normalizeThemeInput","resolveThemeScheme","resolveThemes","getInstalledConfig","publishThemeSelection","setInstalledConfig","applyMode","configureUnistyles","hasConfiguredUnistyles","updateThemes","DEFAULT_RADIUS","DEFAULT_ELEVATION","resolveDefaultRadius","components","button","radius","surface","buildSettings","config","defaultRadius","surfaceElevation","elevation","icons","imageComponent","image","settings","installation","getIsConfigured","
|
|
1
|
+
{"version":3,"names":["defaultIcons","defaultImage","warnContrastDiagnostics","normalizeThemeInput","resolveThemeScheme","resolveThemes","getInstalledConfig","publishThemeSelection","setInstalledConfig","applyMode","configureUnistyles","hasConfiguredUnistyles","updateThemes","DEFAULT_RADIUS","DEFAULT_ELEVATION","resolveDefaultRadius","components","button","radius","surface","buildSettings","config","defaultRadius","surfaceElevation","elevation","icons","imageComponent","image","settings","installation","getIsConfigured","getThemeNames","themeNames","getImageComponent","getIcon","name","getRequiredIcon","getDefaultRadius","component","getSurfaceElevation","resolveTheme","scheme","themeName","undefined","includes","__DEV__","console","warn","theme","configureTerraUI","Object","keys","length","applyConfig","bootstrapTerraUI","deriveMode","hasLegacy","initialScheme","adaptiveThemes","mode","kind","themeConfig","themes","diagnostics","defaultTheme","nextSettings"],"sourceRoot":"../../../src","sources":["theme/registry.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Pure theme resolution — normalization, layer processing, derived values and
|
|
5
|
-
* theme creation. Shared by startup configuration, runtime
|
|
5
|
+
* theme creation. Shared by startup configuration, runtime theme changes and
|
|
6
6
|
* previews so every consumer sees the same colors for the same input.
|
|
7
7
|
*
|
|
8
8
|
* Precedence, identical for both schemes:
|
|
9
9
|
*
|
|
10
|
-
* default tokens → shared →
|
|
11
|
-
*
|
|
10
|
+
* default tokens → shared → generated accent → selected theme tokens
|
|
11
|
+
* Generation uses the selected theme's resolved surfaces and pressed opacity.
|
|
12
12
|
*
|
|
13
13
|
* This module must stay free of registry, provider, Unistyles and renderer
|
|
14
14
|
* imports so `createTerraThemes` works without any native configuration.
|
|
@@ -52,8 +52,8 @@ function sanitizeOverride(value) {
|
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
54
|
* Applies one override layer onto `state` and returns the next state. Every
|
|
55
|
-
* layer — shared,
|
|
56
|
-
*
|
|
55
|
+
* layer — shared, generated accent, or selected theme tokens — goes through
|
|
56
|
+
* here, so they all follow the same rules:
|
|
57
57
|
* - deprecated names are normalized within the layer (canonical wins);
|
|
58
58
|
* - `undefined`/`null` leaves are no override; arrays replace; objects merge;
|
|
59
59
|
* - `spacing.base` / `radius.base` regenerate their scale, then that layer's
|
|
@@ -133,11 +133,11 @@ export function applyThemeLayer(state, override) {
|
|
|
133
133
|
|
|
134
134
|
/**
|
|
135
135
|
* A validated, immutable theme configuration. `base` is the fully layered
|
|
136
|
-
* `defaults → shared
|
|
137
|
-
* re-resolved from it rather than from a previously resolved
|
|
136
|
+
* `defaults → shared` state per scheme; every theme selection is
|
|
137
|
+
* re-resolved from it rather than from a previously resolved theme.
|
|
138
138
|
*/
|
|
139
139
|
|
|
140
|
-
export function
|
|
140
|
+
export function normalizeThemeScheme(input, path) {
|
|
141
141
|
if (input === undefined || input === null) return {
|
|
142
142
|
kind: "none"
|
|
143
143
|
};
|
|
@@ -151,44 +151,46 @@ export function normalizeAccentScheme(input, path) {
|
|
|
151
151
|
};
|
|
152
152
|
}
|
|
153
153
|
if (!isPlainObject(input)) {
|
|
154
|
-
throw new TerraConfigError(path, "Expected a color string, `{ seed,
|
|
154
|
+
throw new TerraConfigError(path, "Expected a color string, `{ seed, color }`, or a theme override object.");
|
|
155
155
|
}
|
|
156
|
+
if ("overrides" in input) {
|
|
157
|
+
throw new TerraConfigError(`${path}.overrides`, "Use `color` for explicit colors alongside `seed`.");
|
|
158
|
+
}
|
|
159
|
+
const {
|
|
160
|
+
seed,
|
|
161
|
+
...patch
|
|
162
|
+
} = input;
|
|
163
|
+
assertOverrideObject(patch.color, `${path}.color`);
|
|
156
164
|
if (!("seed" in input)) {
|
|
157
165
|
return {
|
|
158
166
|
kind: "patch",
|
|
159
|
-
patch: sanitizeOverride(
|
|
167
|
+
patch: sanitizeOverride(patch)
|
|
160
168
|
};
|
|
161
169
|
}
|
|
162
|
-
const extra = Object.keys(input).filter(key => key !== "seed" && key !== "overrides");
|
|
163
|
-
if (extra.length > 0) {
|
|
164
|
-
throw new TerraConfigError(path, `A seeded accent accepts only \`seed\` and \`overrides\`; found ${extra.map(key => `\`${key}\``).join(", ")}. Use \`{ seed, overrides: { ... } }\` for color exceptions, or drop \`seed\` for a full theme override.`);
|
|
165
|
-
}
|
|
166
|
-
const {
|
|
167
|
-
seed,
|
|
168
|
-
overrides
|
|
169
|
-
} = input;
|
|
170
170
|
if (!isSupportedAccentSeed(seed)) {
|
|
171
171
|
throw new TerraConfigError(`${path}.seed`, `Unsupported accent seed ${JSON.stringify(seed)}; expected an opaque six-digit hex color (#rrggbb).`);
|
|
172
172
|
}
|
|
173
|
-
if (overrides !== undefined && !isPlainObject(overrides)) {
|
|
174
|
-
throw new TerraConfigError(`${path}.overrides`, "Expected a flat semantic color patch object.");
|
|
175
|
-
}
|
|
176
173
|
return {
|
|
177
174
|
kind: "seed",
|
|
178
175
|
seed: seed.trim(),
|
|
179
|
-
|
|
180
|
-
overrides: sanitizeOverride(overrides)
|
|
181
|
-
} : {})
|
|
176
|
+
patch: sanitizeOverride(patch)
|
|
182
177
|
};
|
|
183
178
|
}
|
|
184
|
-
function
|
|
185
|
-
const path = `
|
|
186
|
-
if (!isPlainObject(
|
|
179
|
+
function normalizeThemeEntry(name, theme) {
|
|
180
|
+
const path = `themes.${name}`;
|
|
181
|
+
if (!isPlainObject(theme)) {
|
|
187
182
|
throw new TerraConfigError(path, "Expected an object with `light` and/or `dark` scheme inputs.");
|
|
188
183
|
}
|
|
184
|
+
// An empty entry is a valid theme that adds nothing, but tokens sitting
|
|
185
|
+
// outside a scheme — `{ seed, color }` lifted straight out of the old
|
|
186
|
+
// `accents` shape — would otherwise be accepted and silently render defaults.
|
|
187
|
+
const keys = Object.keys(theme);
|
|
188
|
+
if (keys.length > 0 && !("light" in theme) && !("dark" in theme)) {
|
|
189
|
+
throw new TerraConfigError(path, `Unexpected ${keys.map(key => `\`${key}\``).join(", ")} outside a scheme; ` + "put `seed` and token overrides under `light` and/or `dark`.");
|
|
190
|
+
}
|
|
189
191
|
return {
|
|
190
|
-
light:
|
|
191
|
-
dark:
|
|
192
|
+
light: normalizeThemeScheme(theme.light, `${path}.light`),
|
|
193
|
+
dark: normalizeThemeScheme(theme.dark, `${path}.dark`)
|
|
192
194
|
};
|
|
193
195
|
}
|
|
194
196
|
function assertOverrideObject(value, path) {
|
|
@@ -199,7 +201,7 @@ function assertOverrideObject(value, path) {
|
|
|
199
201
|
|
|
200
202
|
/**
|
|
201
203
|
* Validates a theme input and pre-computes the immutable per-scheme base
|
|
202
|
-
* (`defaults → shared
|
|
204
|
+
* (`defaults → shared`). Throws {@link TerraConfigError} for invalid
|
|
203
205
|
* input — before any state exists to mutate. Never mutates `input` or the
|
|
204
206
|
* exported defaults.
|
|
205
207
|
*/
|
|
@@ -208,23 +210,25 @@ export function normalizeThemeInput(input = {}) {
|
|
|
208
210
|
throw new TerraConfigError("", "Expected a configuration object.");
|
|
209
211
|
}
|
|
210
212
|
assertOverrideObject(input.shared, "shared");
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
throw new TerraConfigError("accents", "Expected a record of named accents.");
|
|
213
|
+
for (const removed of ["schemes", "accents", "defaultAccent"]) {
|
|
214
|
+
if (removed in input) {
|
|
215
|
+
throw new TerraConfigError(removed, "Use `themes.<name>.light/dark` and `defaultTheme` instead.");
|
|
216
|
+
}
|
|
216
217
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
accents[name] = normalizeAccentEntry(name, accent);
|
|
218
|
+
if (input.themes !== undefined && !isPlainObject(input.themes)) {
|
|
219
|
+
throw new TerraConfigError("themes", "Expected a record of named themes.");
|
|
220
220
|
}
|
|
221
|
-
const
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
221
|
+
const themes = Object.create(null);
|
|
222
|
+
for (const [name, theme] of Object.entries(input.themes ?? {})) {
|
|
223
|
+
themes[name] = normalizeThemeEntry(name, theme);
|
|
224
|
+
}
|
|
225
|
+
const themeNames = Object.keys(themes);
|
|
226
|
+
let defaultTheme = null;
|
|
227
|
+
if (input.defaultTheme !== undefined && input.defaultTheme !== null) {
|
|
228
|
+
if (typeof input.defaultTheme !== "string" || !Object.hasOwn(themes, input.defaultTheme)) {
|
|
229
|
+
throw new TerraConfigError("defaultTheme", `Unknown theme ${JSON.stringify(input.defaultTheme)}; declared themes: ${themeNames.length > 0 ? themeNames.map(n => `"${n}"`).join(", ") : "(none)"}.`);
|
|
226
230
|
}
|
|
227
|
-
|
|
231
|
+
defaultTheme = input.defaultTheme;
|
|
228
232
|
}
|
|
229
233
|
const base = {};
|
|
230
234
|
for (const scheme of SCHEMES) {
|
|
@@ -233,24 +237,23 @@ export function normalizeThemeInput(input = {}) {
|
|
|
233
237
|
pinnedShadowColors: {}
|
|
234
238
|
};
|
|
235
239
|
state = applyThemeLayer(state, input.shared);
|
|
236
|
-
state = applyThemeLayer(state, input.schemes?.[scheme]);
|
|
237
240
|
base[scheme] = state;
|
|
238
241
|
}
|
|
239
242
|
return {
|
|
240
|
-
|
|
241
|
-
|
|
243
|
+
themeNames,
|
|
244
|
+
defaultTheme,
|
|
242
245
|
base,
|
|
243
|
-
|
|
246
|
+
themes
|
|
244
247
|
};
|
|
245
248
|
}
|
|
246
249
|
|
|
247
250
|
// ─── Resolution ──────────────────────────────────────────────────────────────
|
|
248
251
|
|
|
249
|
-
function
|
|
250
|
-
if (
|
|
251
|
-
const entry = config.
|
|
252
|
-
if (
|
|
253
|
-
throw new TerraConfigError("
|
|
252
|
+
function getThemeEntry(config, themeName) {
|
|
253
|
+
if (themeName === null) return undefined;
|
|
254
|
+
const entry = config.themes[themeName];
|
|
255
|
+
if (Object.hasOwn(config.themes, themeName)) return entry;
|
|
256
|
+
throw new TerraConfigError("theme", `Unknown theme ${JSON.stringify(themeName)}; declared themes: ${config.themeNames.length > 0 ? config.themeNames.map(name => `"${name}"`).join(", ") : "(none)"}.`);
|
|
254
257
|
}
|
|
255
258
|
function accentContext(scheme, source) {
|
|
256
259
|
const surfaces = {};
|
|
@@ -276,16 +279,13 @@ function resolveScheme(scheme, base, accent) {
|
|
|
276
279
|
if (accent.kind === "patch") {
|
|
277
280
|
state = applyThemeLayer(state, accent.patch);
|
|
278
281
|
} else if (accent.kind === "seed") {
|
|
279
|
-
|
|
282
|
+
// Generate against the final ordinary surfaces, then let explicit tokens win.
|
|
283
|
+
const context = accentContext(scheme, applyThemeLayer(base, accent.patch).source);
|
|
280
284
|
const generated = generateAccentColors(accent.seed, context);
|
|
281
285
|
state = applyThemeLayer(state, {
|
|
282
286
|
color: generated.colors
|
|
283
287
|
});
|
|
284
|
-
|
|
285
|
-
state = applyThemeLayer(state, {
|
|
286
|
-
color: accent.overrides
|
|
287
|
-
});
|
|
288
|
-
}
|
|
288
|
+
state = applyThemeLayer(state, accent.patch);
|
|
289
289
|
// The post-override check is authoritative: it evaluates the colours that
|
|
290
290
|
// actually ship, so an override that fixes a pair leaves no stale report.
|
|
291
291
|
diagnostics = checkAccentContrast(pickGeneratedRoles(state.source.color), accentContext(scheme, state.source));
|
|
@@ -297,12 +297,12 @@ function resolveScheme(scheme, base, accent) {
|
|
|
297
297
|
}
|
|
298
298
|
|
|
299
299
|
/**
|
|
300
|
-
* Resolves both schemes for `
|
|
300
|
+
* Resolves both schemes for `themeName` from the config's immutable base. `null`
|
|
301
301
|
* selects the base themes; an unknown name throws {@link TerraConfigError}.
|
|
302
302
|
* Returned themes are freshly built and independently owned.
|
|
303
303
|
*/
|
|
304
|
-
export function resolveThemes(config,
|
|
305
|
-
const entry =
|
|
304
|
+
export function resolveThemes(config, themeName) {
|
|
305
|
+
const entry = getThemeEntry(config, themeName);
|
|
306
306
|
const themes = {};
|
|
307
307
|
const diagnostics = [];
|
|
308
308
|
for (const scheme of SCHEMES) {
|
|
@@ -319,8 +319,8 @@ export function resolveThemes(config, accent) {
|
|
|
319
319
|
}
|
|
320
320
|
|
|
321
321
|
/** Resolves one scheme without generating and finalizing the other. */
|
|
322
|
-
export function resolveThemeScheme(config, scheme,
|
|
323
|
-
const entry =
|
|
322
|
+
export function resolveThemeScheme(config, scheme, themeName) {
|
|
323
|
+
const entry = getThemeEntry(config, themeName);
|
|
324
324
|
return resolveScheme(scheme, config.base[scheme], entry?.[scheme] ?? {
|
|
325
325
|
kind: "none"
|
|
326
326
|
});
|
|
@@ -328,18 +328,18 @@ export function resolveThemeScheme(config, scheme, accent) {
|
|
|
328
328
|
|
|
329
329
|
/**
|
|
330
330
|
* Pure theme creation — no Unistyles configuration or registry involved.
|
|
331
|
-
* `options.
|
|
332
|
-
* themes. Invalid input and unknown
|
|
331
|
+
* `options.theme` omitted → the input's `defaultTheme`; `null` → the base
|
|
332
|
+
* themes. Invalid input and unknown themes throw {@link TerraConfigError}.
|
|
333
333
|
* In development, contrast diagnostics are reported once each via
|
|
334
334
|
* `console.warn`; requested colors are never altered.
|
|
335
335
|
*/
|
|
336
336
|
export function createTerraThemes(input, options) {
|
|
337
337
|
const config = normalizeThemeInput(input);
|
|
338
|
-
const
|
|
338
|
+
const themeName = options?.theme === undefined ? config.defaultTheme : options.theme;
|
|
339
339
|
const {
|
|
340
340
|
themes,
|
|
341
341
|
diagnostics
|
|
342
|
-
} = resolveThemes(config,
|
|
342
|
+
} = resolveThemes(config, themeName);
|
|
343
343
|
warnContrastDiagnostics(diagnostics);
|
|
344
344
|
return themes;
|
|
345
345
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["checkAccentContrast","GENERATED_ACCENT_ROLES","generateAccentColors","isSupportedAccentSeed","deepMerge","isPlainObject","warnContrastDiagnostics","TerraConfigError","normalizeTokenOverride","buildRadiusScale","buildSpacingScale","createDefaultThemeSource","finalizeThemeSource","SCHEMES","SURFACE_ROLES","sanitizeOverride","value","Array","isArray","map","item","out","key","Object","entries","undefined","applyThemeLayer","state","override","normalized","radius","spacing","elevation","rest","source","pinnedShadowColors","base","steps","levels","level","shadowColor","fields","normalizeAccentScheme","input","path","kind","JSON","stringify","seed","trim","patch","extra","keys","filter","length","join","overrides","normalizeAccentEntry","name","accent","light","dark","assertOverrideObject","normalizeThemeInput","shared","schemes","accents","accentNames","defaultAccent","hasOwn","n","scheme","getAccentEntry","config","entry","accentContext","surfaces","role","color","pressedOpacity","opacity","pressed","pickGeneratedRoles","resolveScheme","diagnostics","context","generated","colors","theme","resolveThemes","themes","resolved","push","flat","resolveThemeScheme","createTerraThemes","options"],"sourceRoot":"../../../src","sources":["theme/resolve-config.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["checkAccentContrast","GENERATED_ACCENT_ROLES","generateAccentColors","isSupportedAccentSeed","deepMerge","isPlainObject","warnContrastDiagnostics","TerraConfigError","normalizeTokenOverride","buildRadiusScale","buildSpacingScale","createDefaultThemeSource","finalizeThemeSource","SCHEMES","SURFACE_ROLES","sanitizeOverride","value","Array","isArray","map","item","out","key","Object","entries","undefined","applyThemeLayer","state","override","normalized","radius","spacing","elevation","rest","source","pinnedShadowColors","base","steps","levels","level","shadowColor","fields","normalizeThemeScheme","input","path","kind","JSON","stringify","seed","trim","patch","assertOverrideObject","color","normalizeThemeEntry","name","theme","keys","length","join","light","dark","normalizeThemeInput","shared","removed","themes","create","themeNames","defaultTheme","hasOwn","n","scheme","getThemeEntry","config","themeName","entry","accentContext","surfaces","role","pressedOpacity","opacity","pressed","pickGeneratedRoles","resolveScheme","accent","diagnostics","context","generated","colors","resolveThemes","resolved","push","flat","resolveThemeScheme","createTerraThemes","options"],"sourceRoot":"../../../src","sources":["theme/resolve-config.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Runtime selection commands —
|
|
4
|
+
* Runtime selection commands — theme and theme mode — plus the subscribed
|
|
5
5
|
* selection snapshot consumed by `useTheme()`.
|
|
6
6
|
*
|
|
7
|
-
* Every
|
|
8
|
-
* configuration (never from the previously resolved
|
|
7
|
+
* Every theme change re-resolves both schemes from the installed, immutable
|
|
8
|
+
* configuration (never from the previously resolved theme), hands them to
|
|
9
9
|
* Unistyles, and only then publishes the new selection. A rejected or failed
|
|
10
10
|
* change leaves both the native themes and the published selection untouched.
|
|
11
11
|
*/
|
|
@@ -16,18 +16,18 @@ import { applyMode, updateThemes } from "./unistyles-adapter.js";
|
|
|
16
16
|
export { getThemeSelection, subscribeThemeSelection } from "./selection-store.js";
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
-
* Apply a registered
|
|
19
|
+
* Apply a registered theme (`null` restores the base themes) by updating both
|
|
20
20
|
* registered themes. An unknown name warns in development and changes nothing.
|
|
21
21
|
*
|
|
22
22
|
* If the native update fails part-way (see `updateThemes` in the adapter), the
|
|
23
23
|
* error propagates and the previous selection stays published; calling
|
|
24
|
-
* `
|
|
24
|
+
* `setTheme(getCurrentTheme() ?? null)` rewrites both themes.
|
|
25
25
|
*/
|
|
26
|
-
export function
|
|
26
|
+
export function setTheme(name) {
|
|
27
27
|
const config = getInstalledConfig();
|
|
28
|
-
if (name !== null && !config.
|
|
28
|
+
if (name !== null && !config.themeNames.includes(name)) {
|
|
29
29
|
if (__DEV__) {
|
|
30
|
-
console.warn(`[react-native-terra-ui] Unknown
|
|
30
|
+
console.warn(`[react-native-terra-ui] Unknown theme "${name}".`);
|
|
31
31
|
}
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
@@ -37,13 +37,13 @@ export function applyAccent(name) {
|
|
|
37
37
|
} = resolveThemes(config, name);
|
|
38
38
|
updateThemes(themes);
|
|
39
39
|
publishThemeSelection({
|
|
40
|
-
|
|
40
|
+
themeName: name ?? undefined
|
|
41
41
|
});
|
|
42
42
|
warnContrastDiagnostics(diagnostics);
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
/** The applied
|
|
46
|
-
export const
|
|
45
|
+
/** The applied theme name, or `undefined` for the base themes. */
|
|
46
|
+
export const getCurrentTheme = () => getThemeSelection().themeName;
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
49
|
* Choose how the active scheme is selected: `system` follows the OS appearance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["warnContrastDiagnostics","resolveThemes","getInstalledConfig","getThemeSelection","publishThemeSelection","applyMode","updateThemes","subscribeThemeSelection","
|
|
1
|
+
{"version":3,"names":["warnContrastDiagnostics","resolveThemes","getInstalledConfig","getThemeSelection","publishThemeSelection","applyMode","updateThemes","subscribeThemeSelection","setTheme","name","config","themeNames","includes","__DEV__","console","warn","themes","diagnostics","themeName","undefined","getCurrentTheme","setThemeMode","mode","getThemeMode","applyScheme","scheme"],"sourceRoot":"../../../src","sources":["theme/runtime.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,uBAAuB;AAChC,SAASC,aAAa;AACtB,SAASC,kBAAkB,EAAEC,iBAAiB,EAAEC,qBAAqB;AAErE,SAASC,SAAS,EAAEC,YAAY;AAGhC,SAASH,iBAAiB,EAAEI,uBAAuB;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CAACC,IAAmB,EAAQ;EAClD,MAAMC,MAAM,GAAGR,kBAAkB,CAAC,CAAC;EACnC,IAAIO,IAAI,KAAK,IAAI,IAAI,CAACC,MAAM,CAACC,UAAU,CAACC,QAAQ,CAACH,IAAI,CAAC,EAAE;IACtD,IAAII,OAAO,EAAE;MACXC,OAAO,CAACC,IAAI,CAAC,0CAA0CN,IAAI,IAAI,CAAC;IAClE;IACA;EACF;EAEA,MAAM;IAAEO,MAAM;IAAEC;EAAY,CAAC,GAAGhB,aAAa,CAACS,MAAM,EAAED,IAAI,CAAC;EAC3DH,YAAY,CAACU,MAAM,CAAC;EACpBZ,qBAAqB,CAAC;IAAEc,SAAS,EAAET,IAAI,IAAIU;EAAU,CAAC,CAAC;EACvDnB,uBAAuB,CAACiB,WAAW,CAAC;AACtC;;AAEA;AACA,OAAO,MAAMG,eAAe,GAAGA,CAAA,KAA0BjB,iBAAiB,CAAC,CAAC,CAACe,SAAS;;AAEtF;AACA;AACA;AACA;AACA,OAAO,SAASG,YAAYA,CAACC,IAAe,EAAQ;EAClDjB,SAAS,CAACiB,IAAI,CAAC;EACflB,qBAAqB,CAAC;IAAEkB;EAAK,CAAC,CAAC;AACjC;;AAEA;AACA,OAAO,MAAMC,YAAY,GAAGA,CAAA,KAAiBpB,iBAAiB,CAAC,CAAC,CAACmB,IAAI;;AAErE;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,WAAWA,CAACC,MAAc,EAAQ;EAChDJ,YAAY,CAACI,MAAM,CAAC;AACtB","ignoreList":[]}
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* those has to import the other.
|
|
7
7
|
*
|
|
8
8
|
* Holds two things, both private to `theme/`:
|
|
9
|
-
* - the installed {@link NormalizedThemeConfig} — immutable; every
|
|
9
|
+
* - the installed {@link NormalizedThemeConfig} — immutable; every theme
|
|
10
10
|
* selection is re-resolved from it, never layered on a previous result;
|
|
11
|
-
* - the selection snapshot (`
|
|
11
|
+
* - the selection snapshot (`themeName`, `mode`) behind a `useSyncExternalStore`
|
|
12
12
|
* compatible subscribe/get pair. The snapshot object keeps its identity until
|
|
13
13
|
* a value actually changes, so subscribers only re-render on real changes.
|
|
14
14
|
*
|
|
@@ -33,10 +33,10 @@ export function setInstalledConfig(config) {
|
|
|
33
33
|
|
|
34
34
|
// ─── Selection snapshot ──────────────────────────────────────────────────────
|
|
35
35
|
|
|
36
|
-
/** The current runtime selection: which
|
|
36
|
+
/** The current runtime selection: which theme is applied and how the scheme is chosen. */
|
|
37
37
|
|
|
38
38
|
let selection = Object.freeze({
|
|
39
|
-
|
|
39
|
+
themeName: undefined,
|
|
40
40
|
mode: "system"
|
|
41
41
|
});
|
|
42
42
|
const listeners = new Set();
|
|
@@ -61,11 +61,11 @@ export function subscribeThemeSelection(listener) {
|
|
|
61
61
|
* A no-op — same snapshot identity, no notification — when nothing changed.
|
|
62
62
|
*/
|
|
63
63
|
export function publishThemeSelection(next) {
|
|
64
|
-
const
|
|
64
|
+
const themeName = "themeName" in next ? next.themeName : selection.themeName;
|
|
65
65
|
const mode = next.mode ?? selection.mode;
|
|
66
|
-
if (
|
|
66
|
+
if (themeName === selection.themeName && mode === selection.mode) return;
|
|
67
67
|
selection = Object.freeze({
|
|
68
|
-
|
|
68
|
+
themeName,
|
|
69
69
|
mode
|
|
70
70
|
});
|
|
71
71
|
for (const listener of listeners) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["normalizeThemeInput","installedConfig","getInstalledConfig","setInstalledConfig","config","selection","Object","freeze","
|
|
1
|
+
{"version":3,"names":["normalizeThemeInput","installedConfig","getInstalledConfig","setInstalledConfig","config","selection","Object","freeze","themeName","undefined","mode","listeners","Set","getThemeSelection","subscribeThemeSelection","listener","add","delete","publishThemeSelection","next"],"sourceRoot":"../../../src","sources":["theme/selection-store.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAqCA,mBAAmB;AAGxD;;AAEA;AACA;AACA;AACA;AACA,IAAIC,eAAsC,GAAGD,mBAAmB,CAAC,CAAC,CAAC,CAAC;;AAEpE;AACA,OAAO,MAAME,kBAAkB,GAAGA,CAAA,KAA6BD,eAAe;;AAE9E;AACA,OAAO,SAASE,kBAAkBA,CAACC,MAA6B,EAAQ;EACtEH,eAAe,GAAGG,MAAM;AAC1B;;AAEA;;AAEA;;AAQA,IAAIC,SAAyB,GAAGC,MAAM,CAACC,MAAM,CAAC;EAAEC,SAAS,EAAEC,SAAS;EAAEC,IAAI,EAAE;AAAsB,CAAC,CAAC;AAEpG,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAa,CAAC;;AAEvC;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,iBAAiB,GAAGA,CAAA,KAAsBR,SAAS;;AAEhE;AACA,OAAO,SAASS,uBAAuBA,CAACC,QAAoB,EAAc;EACxEJ,SAAS,CAACK,GAAG,CAACD,QAAQ,CAAC;EACvB,OAAO,MAAM;IACXJ,SAAS,CAACM,MAAM,CAACF,QAAQ,CAAC;EAC5B,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASG,qBAAqBA,CAACC,IAA6B,EAAQ;EACzE,MAAMX,SAAS,GAAG,WAAW,IAAIW,IAAI,GAAGA,IAAI,CAACX,SAAS,GAAGH,SAAS,CAACG,SAAS;EAC5E,MAAME,IAAI,GAAGS,IAAI,CAACT,IAAI,IAAIL,SAAS,CAACK,IAAI;EACxC,IAAIF,SAAS,KAAKH,SAAS,CAACG,SAAS,IAAIE,IAAI,KAAKL,SAAS,CAACK,IAAI,EAAE;EAElEL,SAAS,GAAGC,MAAM,CAACC,MAAM,CAAC;IAAEC,SAAS;IAAEE;EAAK,CAAC,CAAC;EAC9C,KAAK,MAAMK,QAAQ,IAAIJ,SAAS,EAAE;IAChCI,QAAQ,CAAC,CAAC;EACZ;AACF","ignoreList":[]}
|
|
@@ -53,7 +53,7 @@ export function configureUnistyles({
|
|
|
53
53
|
* runtime holds the new `light` theme and the previous `dark` theme. Callers
|
|
54
54
|
* publish registry/selection state only after this returns, so on a throw Terra
|
|
55
55
|
* still reports the previous selection; calling the same command again with the
|
|
56
|
-
* previous selection (e.g. `
|
|
56
|
+
* previous selection (e.g. `setTheme(getCurrentTheme() ?? null)`) rewrites
|
|
57
57
|
* both themes and restores consistency. No automatic rollback is attempted.
|
|
58
58
|
*/
|
|
59
59
|
export function updateThemes(themes) {
|