react-native-terra-ui 0.10.2 → 0.11.0

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 (52) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +8 -4
  3. package/lib/module/context/ThemeProvider.js +5 -5
  4. package/lib/module/context/ThemeProvider.js.map +1 -1
  5. package/lib/module/theme/define-config.js +5 -5
  6. package/lib/module/theme/define-config.js.map +1 -1
  7. package/lib/module/theme/errors.js +1 -1
  8. package/lib/module/theme/index.js +2 -2
  9. package/lib/module/theme/index.js.map +1 -1
  10. package/lib/module/theme/registry.js +15 -21
  11. package/lib/module/theme/registry.js.map +1 -1
  12. package/lib/module/theme/resolve-config.js +68 -68
  13. package/lib/module/theme/resolve-config.js.map +1 -1
  14. package/lib/module/theme/runtime.js +11 -11
  15. package/lib/module/theme/runtime.js.map +1 -1
  16. package/lib/module/theme/selection-store.js +7 -7
  17. package/lib/module/theme/selection-store.js.map +1 -1
  18. package/lib/module/theme/unistyles-adapter.js +1 -1
  19. package/lib/module/utils/accent-utils.js +24 -24
  20. package/lib/module/utils/accent-utils.js.map +1 -1
  21. package/lib/typescript/src/context/ThemeProvider.d.ts +7 -7
  22. package/lib/typescript/src/context/ThemeProvider.d.ts.map +1 -1
  23. package/lib/typescript/src/theme/define-config.d.ts +11 -8
  24. package/lib/typescript/src/theme/define-config.d.ts.map +1 -1
  25. package/lib/typescript/src/theme/errors.d.ts +1 -1
  26. package/lib/typescript/src/theme/index.d.ts +3 -3
  27. package/lib/typescript/src/theme/index.d.ts.map +1 -1
  28. package/lib/typescript/src/theme/registry.d.ts +5 -5
  29. package/lib/typescript/src/theme/registry.d.ts.map +1 -1
  30. package/lib/typescript/src/theme/resolve-config.d.ts +25 -25
  31. package/lib/typescript/src/theme/resolve-config.d.ts.map +1 -1
  32. package/lib/typescript/src/theme/runtime.d.ts +5 -5
  33. package/lib/typescript/src/theme/runtime.d.ts.map +1 -1
  34. package/lib/typescript/src/theme/selection-store.d.ts +5 -5
  35. package/lib/typescript/src/theme/selection-store.d.ts.map +1 -1
  36. package/lib/typescript/src/theme/types.d.ts +20 -47
  37. package/lib/typescript/src/theme/types.d.ts.map +1 -1
  38. package/lib/typescript/src/theme/unistyles-adapter.d.ts +1 -1
  39. package/lib/typescript/src/utils/accent-utils.d.ts +6 -7
  40. package/lib/typescript/src/utils/accent-utils.d.ts.map +1 -1
  41. package/package.json +1 -1
  42. package/src/context/ThemeProvider.tsx +10 -10
  43. package/src/theme/define-config.ts +12 -7
  44. package/src/theme/errors.ts +1 -1
  45. package/src/theme/index.ts +6 -8
  46. package/src/theme/registry.ts +15 -23
  47. package/src/theme/resolve-config.ts +88 -95
  48. package/src/theme/runtime.ts +11 -11
  49. package/src/theme/selection-store.ts +9 -9
  50. package/src/theme/types.ts +21 -47
  51. package/src/theme/unistyles-adapter.ts +1 -1
  52. package/src/utils/accent-utils.ts +25 -25
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.11.0](https://github.com/earthlin9/react-native-terra-ui/compare/v0.10.2...v0.11.0) (2026-09-12)
4
+
5
+ ### ⚠ BREAKING CHANGES
6
+
7
+ * **theme:** `accents` is now `themes`, `defaultAccent` is now
8
+ `defaultTheme`, and `schemes.light/dark` is removed — move those tokens
9
+ into each named theme's `light`/`dark` entry. The `{ seed, overrides }`
10
+ form is now `{ seed, color }`. `applyAccent`/`getCurrentAccent`/
11
+ `getAccentNames` become `setTheme`/`getCurrentTheme`/`getThemeNames`,
12
+ `useTheme().accent`/`setAccent` become `themeName`/`setTheme`,
13
+ `createTerraThemes(config, { accent })` takes `{ theme }`, and
14
+ `ThemeSelection.accent` is `ThemeSelection.themeName`.
15
+ See docs/named-theme-migration.md.
16
+
17
+ ### Features
18
+
19
+ * **theme:** replace schemes and accents with named themes ([#25](https://github.com/earthlin9/react-native-terra-ui/issues/25))
20
+
21
+ ### Documentation
22
+
23
+ * scaffold the component API reference ([#24](https://github.com/earthlin9/react-native-terra-ui/issues/24)) ([3204657](https://github.com/earthlin9/react-native-terra-ui/commit/3204657868ec2c008d628ec9a06307227d0587cc))
24
+
3
25
  ## [0.10.2](https://github.com/earthlin9/react-native-terra-ui/compare/v0.10.1...v0.10.2) (2026-09-11)
4
26
 
5
27
  ### Features
package/README.md CHANGED
@@ -9,7 +9,7 @@ Themeable React Native UI components built on react-native-unistyles.
9
9
  | `react-native-terra-ui` | Components, `TerraUIProvider`, `useTheme` |
10
10
  | `react-native-terra-ui/theme` | `configureTerraUI`, theme types, color utilities (no import-time side effects) |
11
11
 
12
- Use the `/theme` entry for `configureTerraUI()` in your app entry file. See [docs/getting-started.md](../../docs/getting-started.md); upgrading an existing configuration is covered in [docs/theme-configuration-migration.md](../../docs/theme-configuration-migration.md).
12
+ Use the `/theme` entry for `configureTerraUI()` in your app entry file. See [docs/getting-started.md](../../docs/getting-started.md); upgrading an existing configuration is covered in [docs/named-theme-migration.md](../../docs/named-theme-migration.md).
13
13
 
14
14
  ## Components
15
15
 
@@ -51,15 +51,19 @@ toast.show({ label: 'Saved', variant: 'success' });
51
51
  | Export | Description |
52
52
  |--------|-------------|
53
53
  | `TerraUIProvider` | Root provider — wrap your app once |
54
- | `useTheme` | Runtime accent/scheme switching |
54
+ | `useTheme` | Resolved tokens, named theme selection, and appearance mode |
55
55
  | `ToastProvider`, `useToast` | Toast stack provider and manager hook |
56
56
 
57
57
  ## Theme API (`react-native-terra-ui/theme`)
58
58
 
59
- - `configureTerraUI` — register themes, accents, icons, component defaults
59
+ - `configureTerraUI` — register named light/dark themes, icons, and component defaults
60
+ - `defineTerraConfig` — author config with typed `defaultTheme` names
61
+ - `createTerraThemes` — resolve named themes for previews and tests
62
+ - `setTheme`, `getCurrentTheme`, `getThemeNames` — select and inspect named themes
63
+ - `setThemeMode`, `getThemeMode` — control system/light/dark appearance
60
64
  - `defaultLightTheme`, `defaultDarkTheme` — built-in theme objects
61
65
  - `resolveThemeColor`, `deepMerge`, `shade`, `withAlpha`, `readableOn` — color utilities
62
- - Types: `TerraTheme`, `TerraConfig`, `Accent`, `Scheme`, `ColorToken`, etc.
66
+ - Types: `TerraTheme`, `TerraConfig`, `NamedTheme`, `ThemeSchemeInput`, `ThemeSeed`, `ThemeMode`, `Scheme`, `ColorToken`, etc.
63
67
 
64
68
  ## Showcase
65
69
 
@@ -4,7 +4,7 @@ import { useSyncExternalStore } from "react";
4
4
  import { SafeAreaProvider } from "react-native-safe-area-context";
5
5
  import { useUnistyles } from "react-native-unistyles";
6
6
  import { bootstrapTerraUI } from "../theme/registry.js";
7
- import { applyAccent, applyScheme, getThemeSelection, setThemeMode, subscribeThemeSelection } from "../theme/runtime.js";
7
+ import { applyScheme, getThemeSelection, setTheme, setThemeMode, subscribeThemeSelection } from "../theme/runtime.js";
8
8
  import { resolveScreenPadding } from "../theme/screen-padding.js";
9
9
  import { jsx as _jsx } from "react/jsx-runtime";
10
10
  // Ensure the default theme is registered on first import. An app that calls
@@ -26,8 +26,8 @@ export const TerraUIProvider = ({
26
26
  children: children
27
27
  });
28
28
  /**
29
- * Access the active theme and switch scheme / mode / accent. Selection state
30
- * comes from the runtime store, so changes made imperatively (`applyAccent`,
29
+ * Access the active theme and switch scheme / mode / theme. Selection state
30
+ * comes from the runtime store, so changes made imperatively (`setTheme`,
31
31
  * `setThemeMode`) and through this hook are observed by every consumer.
32
32
  */
33
33
  export function useTheme() {
@@ -40,8 +40,8 @@ export function useTheme() {
40
40
  theme,
41
41
  scheme: rt.themeName ?? "light",
42
42
  setScheme: applyScheme,
43
- accent: selection.accent,
44
- setAccent: applyAccent,
43
+ themeName: selection.themeName,
44
+ setTheme,
45
45
  mode: selection.mode,
46
46
  setMode: setThemeMode
47
47
  };
@@ -1 +1 @@
1
- {"version":3,"names":["useSyncExternalStore","SafeAreaProvider","useUnistyles","bootstrapTerraUI","applyAccent","applyScheme","getThemeSelection","setThemeMode","subscribeThemeSelection","resolveScreenPadding","jsx","_jsx","TerraUIProvider","children","useTheme","theme","rt","selection","scheme","themeName","setScheme","accent","setAccent","mode","setMode","useScreenPadding","breakpoint","useScreenMargin"],"sourceRoot":"../../../src","sources":["context/ThemeProvider.tsx"],"mappings":";;AAAA,SAAiCA,oBAAoB,QAAQ,OAAO;AAEpE,SAASC,gBAAgB,QAAQ,gCAAgC;AACjE,SAASC,YAAY,QAAQ,wBAAwB;AAErD,SAASC,gBAAgB;AACzB,SACEC,WAAW,EACXC,WAAW,EACXC,iBAAiB,EACjBC,YAAY,EACZC,uBAAuB;AAEzB,SAAqCC,oBAAoB;AAAkC,SAAAC,GAAA,IAAAC,IAAA;AAG3F;AACA;AACA;AACAR,gBAAgB,CAAC,CAAC;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMS,eAAe,GAAGA,CAAC;EAAEC;AAA4B,CAAC,kBAC7DF,IAAA,CAACV,gBAAgB;EAAAY,QAAA,EAAEA;AAAQ,CAAmB,CAC/C;AA6BD;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CAAA,EAAmB;EACzC,MAAM;IAAEC,KAAK;IAAEC;EAAG,CAAC,GAAGd,YAAY,CAAC,CAAC;EACpC,MAAMe,SAAS,GAAGjB,oBAAoB,CAACQ,uBAAuB,EAAEF,iBAAiB,EAAEA,iBAAiB,CAAC;EAErG,OAAO;IACLS,KAAK;IACLG,MAAM,EAAGF,EAAE,CAACG,SAAS,IAAI,OAAkB;IAC3CC,SAAS,EAAEf,WAAW;IACtBgB,MAAM,EAAEJ,SAAS,CAACI,MAAM;IACxBC,SAAS,EAAElB,WAAW;IACtBmB,IAAI,EAAEN,SAAS,CAACM,IAAI;IACpBC,OAAO,EAAEjB;EACX,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASkB,gBAAgBA,CAAA,EAA0B;EACxD,MAAM;IAAEV,KAAK;IAAEC;EAAG,CAAC,GAAGd,YAAY,CAAC,CAAC;EACpC,OAAOO,oBAAoB,CAACM,KAAK,EAAEC,EAAE,CAACU,UAAU,CAAC;AACnD;;AAEA;AACA,OAAO,MAAMC,eAAe,GAAGF,gBAAgB","ignoreList":[]}
1
+ {"version":3,"names":["useSyncExternalStore","SafeAreaProvider","useUnistyles","bootstrapTerraUI","applyScheme","getThemeSelection","setTheme","setThemeMode","subscribeThemeSelection","resolveScreenPadding","jsx","_jsx","TerraUIProvider","children","useTheme","theme","rt","selection","scheme","themeName","setScheme","mode","setMode","useScreenPadding","breakpoint","useScreenMargin"],"sourceRoot":"../../../src","sources":["context/ThemeProvider.tsx"],"mappings":";;AAAA,SAAiCA,oBAAoB,QAAQ,OAAO;AAEpE,SAASC,gBAAgB,QAAQ,gCAAgC;AACjE,SAASC,YAAY,QAAQ,wBAAwB;AAErD,SAASC,gBAAgB;AACzB,SACEC,WAAW,EACXC,iBAAiB,EACjBC,QAAQ,EACRC,YAAY,EACZC,uBAAuB;AAEzB,SAAqCC,oBAAoB;AAAkC,SAAAC,GAAA,IAAAC,IAAA;AAG3F;AACA;AACA;AACAR,gBAAgB,CAAC,CAAC;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMS,eAAe,GAAGA,CAAC;EAAEC;AAA4B,CAAC,kBAC7DF,IAAA,CAACV,gBAAgB;EAAAY,QAAA,EAAEA;AAAQ,CAAmB,CAC/C;AA6BD;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CAAA,EAAmB;EACzC,MAAM;IAAEC,KAAK;IAAEC;EAAG,CAAC,GAAGd,YAAY,CAAC,CAAC;EACpC,MAAMe,SAAS,GAAGjB,oBAAoB,CAACQ,uBAAuB,EAAEH,iBAAiB,EAAEA,iBAAiB,CAAC;EAErG,OAAO;IACLU,KAAK;IACLG,MAAM,EAAGF,EAAE,CAACG,SAAS,IAAI,OAAkB;IAC3CC,SAAS,EAAEhB,WAAW;IACtBe,SAAS,EAAEF,SAAS,CAACE,SAAS;IAC9Bb,QAAQ;IACRe,IAAI,EAAEJ,SAAS,CAACI,IAAI;IACpBC,OAAO,EAAEf;EACX,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASgB,gBAAgBA,CAAA,EAA0B;EACxD,MAAM;IAAER,KAAK;IAAEC;EAAG,CAAC,GAAGd,YAAY,CAAC,CAAC;EACpC,OAAOO,oBAAoB,CAACM,KAAK,EAAEC,EAAE,CAACQ,UAAU,CAAC;AACnD;;AAEA;AACA,OAAO,MAAMC,eAAe,GAAGF,gBAAgB","ignoreList":[]}
@@ -1,17 +1,17 @@
1
1
  "use strict";
2
2
 
3
- /** The literal accent names declared in `T.accents`, or `never` when none are declared. */
3
+ /** The literal theme names declared in `T.themes`, or `never` when none are declared. */
4
4
 
5
5
  /**
6
6
  * Identity helper for authoring a {@link TerraConfig} with contextual typing.
7
- * Has no side effects. With literal `accents`, `defaultAccent` must name one of
8
- * them; a dynamic `Record<string, Accent>` keeps `defaultAccent` as `string`
7
+ * Has no side effects. With literal `themes`, `defaultTheme` must name one of
8
+ * them; a dynamic `Record<string, NamedTheme>` keeps `defaultTheme` as `string`
9
9
  * and defers to runtime validation.
10
10
  *
11
11
  * @example
12
12
  * const config = defineTerraConfig({
13
- * accents: { indigo: { light: "#4f46e5", dark: "#818cf8" } },
14
- * defaultAccent: "indigo",
13
+ * themes: { indigo: { light: "#4f46e5", dark: "#818cf8" } },
14
+ * defaultTheme: "indigo",
15
15
  * });
16
16
  * configureTerraUI(config);
17
17
  */
@@ -1 +1 @@
1
- {"version":3,"names":["defineTerraConfig","config"],"sourceRoot":"../../../src","sources":["theme/define-config.ts"],"mappings":";;AAEA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,iBAAiBA,CAC/BC,MAAsD,EACnD;EACH,OAAOA,MAAM;AACf","ignoreList":[]}
1
+ {"version":3,"names":["defineTerraConfig","config"],"sourceRoot":"../../../src","sources":["theme/define-config.ts"],"mappings":";;AAEA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,iBAAiBA,CAC/BC,MAKC,EACE;EACH,OAAOA,MAAM;AACf","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * Thrown for invalid pure configuration input — before any registry, selection,
5
5
  * or native state is touched. `path` points at the offending config entry, e.g.
6
- * `accents.indigo.dark.seed` or `defaultAccent`.
6
+ * `themes.indigo.dark.seed` or `defaultTheme`.
7
7
  */
8
8
  export class TerraConfigError extends Error {
9
9
  constructor(path, message) {
@@ -21,9 +21,9 @@ export { breakpoints, resolveBreakpointValue } from "./breakpoints.js";
21
21
  // ─── Config + runtime ───────────────────────────────────────────────────────
22
22
  export { defineTerraConfig } from "./define-config.js";
23
23
  export { TerraConfigError } from "./errors.js";
24
- export { configureTerraUI, getAccentNames, getDefaultRadius, getIcon, getImageComponent, getIsConfigured, getRequiredIcon, getSurfaceElevation, resolveTheme } from "./registry.js";
24
+ export { configureTerraUI, getDefaultRadius, getIcon, getImageComponent, getIsConfigured, getRequiredIcon, getSurfaceElevation, getThemeNames, resolveTheme } from "./registry.js";
25
25
  export { createTerraThemes } from "./resolve-config.js";
26
- export { applyAccent, applyScheme, getCurrentAccent, getThemeMode, getThemeSelection, setThemeMode } from "./runtime.js";
26
+ export { applyScheme, getCurrentTheme, getThemeMode, getThemeSelection, setTheme, setThemeMode } from "./runtime.js";
27
27
  export { resolveScreenMargin } from "./screen-margin.js";
28
28
  export { resolveScreenPadding } from "./screen-padding.js";
29
29
  // ─── Default themes ───────────────────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"names":["checkAccentContrast","generateAccentColors","isSupportedAccentSeed","normalizeAccent","readableOn","shade","withAlpha","deepMerge","resolveThemeColor","FONT_WEIGHT_VALUE","SYSTEM_FONT","breakpoints","resolveBreakpointValue","defineTerraConfig","TerraConfigError","configureTerraUI","getAccentNames","getDefaultRadius","getIcon","getImageComponent","getIsConfigured","getRequiredIcon","getSurfaceElevation","resolveTheme","createTerraThemes","applyAccent","applyScheme","getCurrentAccent","getThemeMode","getThemeSelection","setThemeMode","resolveScreenMargin","resolveScreenPadding","defaultDarkTheme","defaultLightTheme"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AASA,SACEA,mBAAmB,EACnBC,oBAAoB,EACpBC,qBAAqB;AAEvB,SAASC,eAAe;AACxB,SAASC,UAAU,EAAEC,KAAK,EAAEC,SAAS;AAErC,SAASC,SAAS;AAClB,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB,EAAEC,WAAW;AACvC;;AAEA,SAASC,WAAW,EAAEC,sBAAsB;AAC5C;AACA,SAASC,iBAAiB;AAC1B,SAASC,gBAAgB;AACzB,SACEC,gBAAgB,EAChBC,cAAc,EACdC,gBAAgB,EAChBC,OAAO,EACPC,iBAAiB,EACjBC,eAAe,EACfC,eAAe,EACfC,mBAAmB,EACnBC,YAAY;AAEd,SAASC,iBAAiB;AAE1B,SACEC,WAAW,EACXC,WAAW,EACXC,gBAAgB,EAChBC,YAAY,EACZC,iBAAiB,EACjBC,YAAY;AAGd,SAASC,mBAAmB;AAE5B,SAASC,oBAAoB;AAC7B;AACA,SAASC,gBAAgB,EAAEC,iBAAiB;AAC5C","ignoreList":[]}
1
+ {"version":3,"names":["checkAccentContrast","generateAccentColors","isSupportedAccentSeed","normalizeAccent","readableOn","shade","withAlpha","deepMerge","resolveThemeColor","FONT_WEIGHT_VALUE","SYSTEM_FONT","breakpoints","resolveBreakpointValue","defineTerraConfig","TerraConfigError","configureTerraUI","getDefaultRadius","getIcon","getImageComponent","getIsConfigured","getRequiredIcon","getSurfaceElevation","getThemeNames","resolveTheme","createTerraThemes","applyScheme","getCurrentTheme","getThemeMode","getThemeSelection","setTheme","setThemeMode","resolveScreenMargin","resolveScreenPadding","defaultDarkTheme","defaultLightTheme"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AASA,SACEA,mBAAmB,EACnBC,oBAAoB,EACpBC,qBAAqB;AAEvB,SAASC,eAAe;AACxB,SAASC,UAAU,EAAEC,KAAK,EAAEC,SAAS;AAErC,SAASC,SAAS;AAClB,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB,EAAEC,WAAW;AACvC;;AAEA,SAASC,WAAW,EAAEC,sBAAsB;AAC5C;AACA,SAASC,iBAAiB;AAC1B,SAASC,gBAAgB;AACzB,SACEC,gBAAgB,EAChBC,gBAAgB,EAChBC,OAAO,EACPC,iBAAiB,EACjBC,eAAe,EACfC,eAAe,EACfC,mBAAmB,EACnBC,aAAa,EACbC,YAAY;AAEd,SAASC,iBAAiB;AAE1B,SACEC,WAAW,EACXC,eAAe,EACfC,YAAY,EACZC,iBAAiB,EACjBC,QAAQ,EACRC,YAAY;AAGd,SAASC,mBAAmB;AAE5B,SAASC,oBAAoB;AAC7B;AACA,SAASC,gBAAgB,EAAEC,iBAAiB;AAC5C","ignoreList":[]}
@@ -55,8 +55,8 @@ let installation = "unconfigured";
55
55
 
56
56
  export const getIsConfigured = () => installation !== "unconfigured";
57
57
 
58
- /** Names of the registered accents, in declaration order. Returns a fresh array. */
59
- export const getAccentNames = () => [...getInstalledConfig().accentNames];
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
- * accent overlaid. Omitting `accentName` selects the base theme (no accent
79
- * not the configured `defaultAccent`). An unknown name warns in development
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, accentName) {
83
+ export function resolveTheme(scheme, name) {
84
84
  const config = getInstalledConfig();
85
- let accent = null;
86
- if (accentName !== undefined) {
87
- if (config.accentNames.includes(accentName)) {
88
- accent = accentName;
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 accent "${accentName}"; resolving the base theme.`);
90
+ console.warn(`[react-native-terra-ui] Unknown theme "${name}"; resolving the base theme.`);
91
91
  }
92
92
  }
93
- return resolveThemeScheme(config, scheme, accent).theme;
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(pickThemeInput(config));
155
+ const themeConfig = normalizeThemeInput(config);
162
156
  const mode = deriveMode(config);
163
157
  const {
164
158
  themes,
165
159
  diagnostics
166
- } = resolveThemes(themeConfig, themeConfig.defaultAccent);
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 an accent change does, so an
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
- accent: themeConfig.defaultAccent ?? undefined,
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","getAccentNames","accentNames","getImageComponent","getIcon","name","getRequiredIcon","getDefaultRadius","component","getSurfaceElevation","resolveTheme","scheme","accentName","accent","undefined","includes","__DEV__","console","warn","theme","configureTerraUI","Object","keys","length","applyConfig","bootstrapTerraUI","deriveMode","hasLegacy","initialScheme","adaptiveThemes","mode","pickThemeInput","shared","schemes","accents","defaultAccent","kind","themeConfig","themes","diagnostics","nextSettings"],"sourceRoot":"../../../src","sources":["theme/registry.ts"],"mappings":"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","ignoreList":[]}
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":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,YAAY;AACrB,SAASC,YAAY;AACrB,SAASC,uBAAuB;AAChC,SAASC,mBAAmB,EAAEC,kBAAkB,EAAEC,aAAa;AAC/D,SAASC,kBAAkB,EAAEC,qBAAqB,EAAEC,kBAAkB;AActE,SAASC,SAAS,EAAEC,kBAAkB,EAAEC,sBAAsB,EAAEC,YAAY;;AAE5E;;AAEA;AACA,MAAMC,cAAkC,GAAG,IAAI;AAC/C;AACA,MAAMC,iBAA+B,GAAG,MAAM;AAI9C;AACA,MAAMC,oBAAoB,GAAIC,UAA8B,KAAsB;EAChFC,MAAM,EAAED,UAAU,EAAEC,MAAM,EAAEC,MAAM,IAAIL,cAAc;EACpDM,OAAO,EAAEH,UAAU,EAAEG,OAAO,EAAED,MAAM,IAAIL;AAC1C,CAAC,CAAC;;AAEF;;AAQA;;AAEA;;AAQA,MAAMO,aAAa,GAAIC,MAAmB,KAAwB;EAChEC,aAAa,EAAEP,oBAAoB,CAACM,MAAM,CAACL,UAAU,CAAC;EACtDO,gBAAgB,EAAEF,MAAM,CAACL,UAAU,EAAEG,OAAO,EAAEK,SAAS,IAAIV,iBAAiB;EAC5EW,KAAK,EAAE;IAAE,IAAIJ,MAAM,CAACI,KAAK,IAAI,CAAC,CAAC;EAAE,CAAC;EAClCC,cAAc,EAAEL,MAAM,CAACM,KAAK,IAAI1B;AAClC,CAAC,CAAC;AAEF,IAAI2B,QAA0B,GAAGR,aAAa,CAAC,CAAC,CAAC,CAAC;;AAElD;AACA;AACA;AACA;AACA;AACA,IAAIS,YAAiD,GAAG,cAAc;;AAEtE;;AAEA,OAAO,MAAMC,eAAe,GAAGA,CAAA,KAAeD,YAAY,KAAK,cAAc;;AAE7E;AACA,OAAO,MAAME,aAAa,GAAGA,CAAA,KAAgB,CAAC,GAAGzB,kBAAkB,CAAC,CAAC,CAAC0B,UAAU,CAAC;AAEjF,OAAO,MAAMC,iBAAiB,GAAGA,CAAA,KAA2BL,QAAQ,CAACF,cAAc;AAEnF,OAAO,MAAMQ,OAAO,GAAIC,IAAY,IAClCP,QAAQ,CAACH,KAAK,CAACU,IAAI,CAAC,IAAInC,YAAY,CAACmC,IAAI,CAA0B;AAErE,OAAO,MAAMC,eAAe,GAAID,IAA2B,IACzDP,QAAQ,CAACH,KAAK,CAACU,IAAI,CAAC,IAAInC,YAAY,CAACmC,IAAI,CAAC;;AAE5C;AACA;AACA;AACA;AACA,OAAO,MAAME,gBAAgB,GAAIC,SAA0B,IACzDV,QAAQ,CAACN,aAAa,CAACgB,SAAS,CAAC;;AAEnC;AACA;AACA;AACA;AACA,OAAO,MAAMC,mBAAmB,GAAGA,CAAA,KAAoBX,QAAQ,CAACL,gBAAgB;;AAEhF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASiB,YAAYA,CAACC,MAAc,EAAEN,IAAa,EAAc;EACtE,MAAMd,MAAM,GAAGf,kBAAkB,CAAC,CAAC;EACnC,IAAIoC,SAAwB,GAAG,IAAI;EACnC,IAAIP,IAAI,KAAKQ,SAAS,EAAE;IACtB,IAAItB,MAAM,CAACW,UAAU,CAACY,QAAQ,CAACT,IAAI,CAAC,EAAE;MACpCO,SAAS,GAAGP,IAAI;IAClB,CAAC,MAAM,IAAIU,OAAO,EAAE;MAClBC,OAAO,CAACC,IAAI,CAAC,0CAA0CZ,IAAI,8BAA8B,CAAC;IAC5F;EACF;EACA,OAAO/B,kBAAkB,CAACiB,MAAM,EAAEoB,MAAM,EAAEC,SAAS,CAAC,CAACM,KAAK;AAC5D;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAAC5B,MAAmB,GAAG,CAAC,CAAC,EAAQ;EAC/D,IAAIQ,YAAY,KAAK,KAAK,EAAE;IAC1B,IAAIgB,OAAO,IAAIK,MAAM,CAACC,IAAI,CAAC9B,MAAM,CAAC,CAAC+B,MAAM,GAAG,CAAC,EAAE;MAC7CN,OAAO,CAACC,IAAI,CACV,mGACF,CAAC;IACH;IACA;EACF;EAEAM,WAAW,CAAChC,MAAM,EAAE,KAAK,CAAC;AAC5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASiC,gBAAgBA,CAAA,EAAS;EACvC,IAAIzB,YAAY,KAAK,cAAc,EAAE;IACnC;EACF;EAEAwB,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASE,UAAUA,CAAClC,MAAmB,EAAa;EAClD,MAAMmC,SAAS,GAAGnC,MAAM,CAACoC,aAAa,KAAKd,SAAS,IAAItB,MAAM,CAACqC,cAAc,KAAKf,SAAS;EAC3F,IAAItB,MAAM,CAACsC,IAAI,KAAKhB,SAAS,EAAE;IAC7B,IAAIE,OAAO,IAAIW,SAAS,EAAE;MACxBV,OAAO,CAACC,IAAI,CACV,uLACF,CAAC;IACH;IACA,OAAO1B,MAAM,CAACsC,IAAI;EACpB;EACA,IAAItC,MAAM,CAACoC,aAAa,KAAKd,SAAS,EAAE,OAAOtB,MAAM,CAACoC,aAAa;EACnE,IAAIpC,MAAM,CAACqC,cAAc,KAAK,KAAK,EAAE,OAAO,OAAO;EACnD,OAAO,QAAQ;AACjB;AAEA,SAASL,WAAWA,CAAChC,MAAmB,EAAEuC,IAAwB,EAAQ;EACxE;EACA,MAAMC,WAAW,GAAG1D,mBAAmB,CAACkB,MAAM,CAAC;EAC/C,MAAMsC,IAAI,GAAGJ,UAAU,CAAClC,MAAM,CAAC;EAC/B,MAAM;IAAEyC,MAAM;IAAEC;EAAY,CAAC,GAAG1D,aAAa,CAACwD,WAAW,EAAEA,WAAW,CAACG,YAAY,CAAC;EACpF,MAAMC,YAAY,GAAG7C,aAAa,CAACC,MAAM,CAAC;;EAE1C;EACA;EACA;EACA,IAAIV,sBAAsB,CAAC,CAAC,EAAE;IAC5BC,YAAY,CAACkD,MAAM,CAAC;IACpBrD,SAAS,CAACkD,IAAI,CAAC;EACjB,CAAC,MAAM;IACLjD,kBAAkB,CAAC;MAAEoD,MAAM;MAAEH;IAAK,CAAC,CAAC;EACtC;;EAEA;EACA9B,YAAY,GAAG+B,IAAI;EACnBhC,QAAQ,GAAGqC,YAAY;EACvBzD,kBAAkB,CAACqD,WAAW,CAAC;EAC/BtD,qBAAqB,CAAC;IAAEmC,SAAS,EAAEmB,WAAW,CAACG,YAAY,IAAIrB,SAAS;IAAEgB;EAAK,CAAC,CAAC;EAEjFzD,uBAAuB,CAAC6D,WAAW,CAAC;AACtC","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 accent changes and
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 → schemes[scheme]
11
- * generated selected accent selected accent explicit overrides
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, scheme, generated accent, accent overrides, or a full accent
56
- * patch — goes through here, so they all follow the same rules:
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 → scheme` state per scheme; every accent selection is
137
- * re-resolved from it rather than from a previously resolved accent.
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 normalizeAccentScheme(input, path) {
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, overrides }`, or a theme override object.");
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(input)
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
- ...(overrides ? {
180
- overrides: sanitizeOverride(overrides)
181
- } : {})
176
+ patch: sanitizeOverride(patch)
182
177
  };
183
178
  }
184
- function normalizeAccentEntry(name, accent) {
185
- const path = `accents.${name}`;
186
- if (!isPlainObject(accent)) {
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: normalizeAccentScheme(accent.light, `${path}.light`),
191
- dark: normalizeAccentScheme(accent.dark, `${path}.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 → scheme`). Throws {@link TerraConfigError} for invalid
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
- assertOverrideObject(input.schemes, "schemes");
212
- assertOverrideObject(input.schemes?.light, "schemes.light");
213
- assertOverrideObject(input.schemes?.dark, "schemes.dark");
214
- if (input.accents !== undefined && !isPlainObject(input.accents)) {
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
- const accents = {};
218
- for (const [name, accent] of Object.entries(input.accents ?? {})) {
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 accentNames = Object.keys(accents);
222
- let defaultAccent = null;
223
- if (input.defaultAccent !== undefined && input.defaultAccent !== null) {
224
- if (typeof input.defaultAccent !== "string" || !Object.hasOwn(accents, input.defaultAccent)) {
225
- throw new TerraConfigError("defaultAccent", `Unknown accent ${JSON.stringify(input.defaultAccent)}; declared accents: ${accentNames.length > 0 ? accentNames.map(n => `"${n}"`).join(", ") : "(none)"}.`);
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
- defaultAccent = input.defaultAccent;
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
- accentNames,
241
- defaultAccent,
243
+ themeNames,
244
+ defaultTheme,
242
245
  base,
243
- accents
246
+ themes
244
247
  };
245
248
  }
246
249
 
247
250
  // ─── Resolution ──────────────────────────────────────────────────────────────
248
251
 
249
- function getAccentEntry(config, accent) {
250
- if (accent === null) return undefined;
251
- const entry = config.accents[accent];
252
- if (entry) return entry;
253
- throw new TerraConfigError("accent", `Unknown accent ${JSON.stringify(accent)}; declared accents: ${config.accentNames.length > 0 ? config.accentNames.map(name => `"${name}"`).join(", ") : "(none)"}.`);
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
- const context = accentContext(scheme, state.source);
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
- if (accent.overrides) {
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 `accent` from the config's immutable base. `null`
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, accent) {
305
- const entry = getAccentEntry(config, accent);
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, accent) {
323
- const entry = getAccentEntry(config, accent);
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.accent` omitted → the input's `defaultAccent`; `null` → the base
332
- * themes. Invalid input and unknown accents throw {@link TerraConfigError}.
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 accent = options?.accent === undefined ? config.defaultAccent : options.accent;
338
+ const themeName = options?.theme === undefined ? config.defaultTheme : options.theme;
339
339
  const {
340
340
  themes,
341
341
  diagnostics
342
- } = resolveThemes(config, accent);
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":[]}