react-native-terra-ui 0.10.1 → 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 (86) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +8 -4
  3. package/lib/module/components/button/Button.js +21 -13
  4. package/lib/module/components/button/Button.js.map +1 -1
  5. package/lib/module/components/button/index.js.map +1 -1
  6. package/lib/module/components/divider/Divider.js +127 -0
  7. package/lib/module/components/divider/Divider.js.map +1 -0
  8. package/lib/module/components/divider/index.js +4 -0
  9. package/lib/module/components/divider/index.js.map +1 -0
  10. package/lib/module/components/index.js +2 -0
  11. package/lib/module/components/index.js.map +1 -1
  12. package/lib/module/components/pressable/index.js +4 -0
  13. package/lib/module/components/pressable/index.js.map +1 -0
  14. package/lib/module/components/pressable/variants/PressableScale/index.js +110 -0
  15. package/lib/module/components/pressable/variants/PressableScale/index.js.map +1 -0
  16. package/lib/module/context/ThemeProvider.js +5 -5
  17. package/lib/module/context/ThemeProvider.js.map +1 -1
  18. package/lib/module/theme/define-config.js +5 -5
  19. package/lib/module/theme/define-config.js.map +1 -1
  20. package/lib/module/theme/errors.js +1 -1
  21. package/lib/module/theme/index.js +2 -2
  22. package/lib/module/theme/index.js.map +1 -1
  23. package/lib/module/theme/registry.js +15 -21
  24. package/lib/module/theme/registry.js.map +1 -1
  25. package/lib/module/theme/resolve-config.js +68 -68
  26. package/lib/module/theme/resolve-config.js.map +1 -1
  27. package/lib/module/theme/runtime.js +11 -11
  28. package/lib/module/theme/runtime.js.map +1 -1
  29. package/lib/module/theme/selection-store.js +7 -7
  30. package/lib/module/theme/selection-store.js.map +1 -1
  31. package/lib/module/theme/unistyles-adapter.js +1 -1
  32. package/lib/module/utils/accent-utils.js +24 -24
  33. package/lib/module/utils/accent-utils.js.map +1 -1
  34. package/lib/typescript/src/components/button/Button.d.ts +7 -0
  35. package/lib/typescript/src/components/button/Button.d.ts.map +1 -1
  36. package/lib/typescript/src/components/button/index.d.ts +1 -1
  37. package/lib/typescript/src/components/button/index.d.ts.map +1 -1
  38. package/lib/typescript/src/components/divider/Divider.d.ts +49 -0
  39. package/lib/typescript/src/components/divider/Divider.d.ts.map +1 -0
  40. package/lib/typescript/src/components/divider/index.d.ts +3 -0
  41. package/lib/typescript/src/components/divider/index.d.ts.map +1 -0
  42. package/lib/typescript/src/components/index.d.ts +2 -0
  43. package/lib/typescript/src/components/index.d.ts.map +1 -1
  44. package/lib/typescript/src/components/pressable/index.d.ts +3 -0
  45. package/lib/typescript/src/components/pressable/index.d.ts.map +1 -0
  46. package/lib/typescript/src/components/pressable/variants/PressableScale/index.d.ts +47 -0
  47. package/lib/typescript/src/components/pressable/variants/PressableScale/index.d.ts.map +1 -0
  48. package/lib/typescript/src/context/ThemeProvider.d.ts +7 -7
  49. package/lib/typescript/src/context/ThemeProvider.d.ts.map +1 -1
  50. package/lib/typescript/src/theme/define-config.d.ts +11 -8
  51. package/lib/typescript/src/theme/define-config.d.ts.map +1 -1
  52. package/lib/typescript/src/theme/errors.d.ts +1 -1
  53. package/lib/typescript/src/theme/index.d.ts +3 -3
  54. package/lib/typescript/src/theme/index.d.ts.map +1 -1
  55. package/lib/typescript/src/theme/registry.d.ts +5 -5
  56. package/lib/typescript/src/theme/registry.d.ts.map +1 -1
  57. package/lib/typescript/src/theme/resolve-config.d.ts +25 -25
  58. package/lib/typescript/src/theme/resolve-config.d.ts.map +1 -1
  59. package/lib/typescript/src/theme/runtime.d.ts +5 -5
  60. package/lib/typescript/src/theme/runtime.d.ts.map +1 -1
  61. package/lib/typescript/src/theme/selection-store.d.ts +5 -5
  62. package/lib/typescript/src/theme/selection-store.d.ts.map +1 -1
  63. package/lib/typescript/src/theme/types.d.ts +20 -47
  64. package/lib/typescript/src/theme/types.d.ts.map +1 -1
  65. package/lib/typescript/src/theme/unistyles-adapter.d.ts +1 -1
  66. package/lib/typescript/src/utils/accent-utils.d.ts +6 -7
  67. package/lib/typescript/src/utils/accent-utils.d.ts.map +1 -1
  68. package/package.json +1 -1
  69. package/src/components/button/Button.tsx +32 -13
  70. package/src/components/button/index.ts +1 -0
  71. package/src/components/divider/Divider.tsx +164 -0
  72. package/src/components/divider/index.ts +7 -0
  73. package/src/components/index.ts +2 -0
  74. package/src/components/pressable/index.ts +5 -0
  75. package/src/components/pressable/variants/PressableScale/index.tsx +166 -0
  76. package/src/context/ThemeProvider.tsx +10 -10
  77. package/src/theme/define-config.ts +12 -7
  78. package/src/theme/errors.ts +1 -1
  79. package/src/theme/index.ts +6 -8
  80. package/src/theme/registry.ts +15 -23
  81. package/src/theme/resolve-config.ts +88 -95
  82. package/src/theme/runtime.ts +11 -11
  83. package/src/theme/selection-store.ts +9 -9
  84. package/src/theme/types.ts +21 -47
  85. package/src/theme/unistyles-adapter.ts +1 -1
  86. package/src/utils/accent-utils.ts +25 -25
@@ -1,13 +1,13 @@
1
1
  import { normalizeTokenOverride } from "#theme/legacy-tokens";
2
- import { normalizeAccentScheme } from "#theme/resolve-config";
2
+ import { normalizeThemeScheme } from "#theme/resolve-config";
3
3
  import { defaultDarkTheme, defaultLightTheme } from "#theme/theme";
4
4
  import type {
5
- Accent,
6
- AccentSchemeInput,
5
+ NamedTheme,
7
6
  NormalizedAccent,
8
7
  Scheme,
9
8
  TerraTheme,
10
- ThemeColor,
9
+ TerraThemeOverride,
10
+ ThemeSchemeInput,
11
11
  } from "#theme/types";
12
12
  import {
13
13
  ACCENT_SURFACE_ROLES,
@@ -30,31 +30,32 @@ export function defaultAccentContext(scheme: Scheme): AccentGenerationContext {
30
30
  }
31
31
 
32
32
  /**
33
- * Generated accent colours for `seed` with `overrides` applied last. Within
34
- * the override patch canonical names beat their legacy aliases, while an
35
- * alias-only key still beats the generated canonical value.
33
+ * Generate a palette using the named theme's ordinary surface overrides. The
34
+ * rest of the patch passes through as authored, matching the unseeded branch —
35
+ * so `spacing.base` / `radius.base` stay pseudo-tokens here; only
36
+ * `applyThemeLayer` expands them into a scale.
36
37
  */
37
38
  function seedToColorPatch(
38
39
  seed: string,
39
- overrides: Partial<ThemeColor> | undefined,
40
+ patch: TerraThemeOverride | undefined,
40
41
  scheme: Scheme
41
42
  ): DeepPartial<TerraTheme> {
42
- const generated = generateAccentColors(seed, defaultAccentContext(scheme)).colors;
43
- const color: Record<string, string> = { ...generated };
44
- const normalized = normalizeTokenOverride({ color: overrides })?.color;
45
- if (normalized) {
46
- for (const [key, value] of Object.entries(normalized)) {
47
- if (value !== undefined) color[key] = value as string;
48
- }
43
+ const normalized = normalizeTokenOverride(patch);
44
+ const context = defaultAccentContext(scheme);
45
+ for (const role of ACCENT_SURFACE_ROLES) {
46
+ const value = normalized?.color?.[role];
47
+ if (value !== undefined) context.surfaces[role] = value;
49
48
  }
50
- return { color } as unknown as DeepPartial<TerraTheme>;
49
+ context.pressedOpacity = normalized?.opacity?.pressed ?? context.pressedOpacity;
50
+ const generated = generateAccentColors(seed, context).colors;
51
+ return { ...normalized, color: { ...generated, ...normalized?.color } } as DeepPartial<TerraTheme>;
51
52
  }
52
53
 
53
- function normalizeSchemeInput(input: AccentSchemeInput | undefined, scheme: Scheme): DeepPartial<TerraTheme> {
54
- const normalized = normalizeAccentScheme(input, `accents.<accent>.${scheme}`);
54
+ function normalizeSchemeInput(input: ThemeSchemeInput | undefined, scheme: Scheme): DeepPartial<TerraTheme> {
55
+ const normalized = normalizeThemeScheme(input, `themes.<name>.${scheme}`);
55
56
  if (normalized.kind === "none") return {};
56
57
  if (normalized.kind === "seed") {
57
- return seedToColorPatch(normalized.seed, normalized.overrides, scheme);
58
+ return seedToColorPatch(normalized.seed, normalized.patch, scheme);
58
59
  }
59
60
  // Preserve the compatibility helper's identity contract for full patches;
60
61
  // the resolver itself uses the sanitized copy in `normalized.patch`.
@@ -62,13 +63,12 @@ function normalizeSchemeInput(input: AccentSchemeInput | undefined, scheme: Sche
62
63
  }
63
64
 
64
65
  /**
65
- * Compatibility wrapper: normalizes any accent input into per-scheme
66
- * partial-theme overrides. Strings and `{ seed, overrides }` are generated
67
- * against the DEFAULT themes' surfaces and pressed opacity (the resolver
68
- * pipeline uses the actual resolved surfaces instead); full theme patches
69
- * pass through unchanged. Pure and independent of the registry.
66
+ * @deprecated Prefer createTerraThemes for complete theme resolution.
67
+ * Generates per-scheme patches without shared config. Explicit unseeded patches
68
+ * pass through unchanged; seeded entries generate against their own surface and
69
+ * color tokens and carry the remainder of the patch through unresolved.
70
70
  */
71
- export function normalizeAccent(accent: Accent): NormalizedAccent {
71
+ export function normalizeAccent(accent: NamedTheme): NormalizedAccent {
72
72
  return {
73
73
  light: normalizeSchemeInput(accent.light, "light"),
74
74
  dark: normalizeSchemeInput(accent.dark, "dark"),