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
package/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
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
+
25
+ ## [0.10.2](https://github.com/earthlin9/react-native-terra-ui/compare/v0.10.1...v0.10.2) (2026-09-11)
26
+
27
+ ### Features
28
+
29
+ * **ui:** [button] add PressableScale and a Button animation prop ([#22](https://github.com/earthlin9/react-native-terra-ui/issues/22)) ([ff91d4f](https://github.com/earthlin9/react-native-terra-ui/commit/ff91d4f9f1d68ea68c779b647f2320dab49516fe))
30
+ * **ui:** [divider] add Divider ([#23](https://github.com/earthlin9/react-native-terra-ui/issues/23)) ([132c83b](https://github.com/earthlin9/react-native-terra-ui/commit/132c83bcb134bdfb552f4f0070805ab7efdf7e45))
31
+
3
32
  ## [0.10.1](https://github.com/earthlin9/react-native-terra-ui/compare/v0.10.0...v0.10.1) (2026-09-10)
4
33
 
5
34
  ### Bug Fixes
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
 
@@ -1,17 +1,20 @@
1
1
  "use strict";
2
2
 
3
- import { Pressable } from "react-native-unistyles/components/native/Pressable";
4
3
  import { Children, createContext, forwardRef, useContext } from "react";
5
4
  import { StyleSheet, useUnistyles } from "react-native-unistyles";
6
5
  import { getDefaultRadius } from "../../theme/registry.js";
7
6
  import { readableOn } from "../../utils/color-utils.js";
8
7
  import { resolveThemeColor } from "../../utils/resolve-theme-color.js";
9
8
  import { Icon } from "../icon/index.js";
9
+ import { PressableScale } from "../pressable/index.js";
10
10
  import { Spinner } from "../spinner/index.js";
11
11
  import { Text } from "../text/index.js";
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ /** Matches pressto's `minScale` default — enough to feel, not enough to distract. */
14
+ const PRESSED_SCALE = 0.96;
12
15
 
13
16
  // ─── Context (lets icons/labels read the resolved foreground + size) ───────────
14
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
+
15
18
  const ButtonContext = /*#__PURE__*/createContext({
16
19
  color: "",
17
20
  size: "md"
@@ -147,6 +150,7 @@ const ButtonRoot = /*#__PURE__*/forwardRef(function Button({
147
150
  isIconOnly = false,
148
151
  fullWidth = true,
149
152
  compact = false,
153
+ animation = "scale",
150
154
  background,
151
155
  children,
152
156
  onPress,
@@ -177,30 +181,34 @@ const ButtonRoot = /*#__PURE__*/forwardRef(function Button({
177
181
  style: externalStyle,
178
182
  ...pressableRest
179
183
  } = rest;
184
+ const ownStyles = [styles.base, {
185
+ backgroundColor: bg,
186
+ borderColor: border,
187
+ borderWidth
188
+ }, compact ? styles.compact : null, isDisabled ? {
189
+ opacity: theme.opacity.disabled
190
+ } : null];
191
+ // Only the function form forces a re-render per touch, so keep the array form
192
+ // whenever the caller's style doesn't need the pressed state.
193
+ const style = typeof externalStyle === "function" ? state => [...ownStyles, externalStyle(state)] : [...ownStyles, externalStyle];
180
194
  return /*#__PURE__*/_jsx(ButtonContext.Provider, {
181
195
  value: {
182
196
  color: fg,
183
197
  size
184
198
  },
185
- children: /*#__PURE__*/_jsxs(Pressable, {
199
+ children: /*#__PURE__*/_jsxs(PressableScale, {
186
200
  ref: ref,
187
201
  onPress: blocked ? undefined : onPress,
188
- disabled: blocked,
202
+ isDisabled: blocked,
203
+ minScale: animation === "scale" ? PRESSED_SCALE : 1,
204
+ pressedOpacity: animation === "opacity" ? theme.opacity.pressed : undefined,
189
205
  accessibilityRole: "button",
190
206
  accessibilityState: {
191
207
  disabled: blocked,
192
208
  busy: isLoading
193
209
  },
194
210
  ...pressableRest,
195
- style: state => [styles.base, {
196
- backgroundColor: bg,
197
- borderColor: border,
198
- borderWidth
199
- }, compact ? styles.compact : null, state.pressed && !blocked ? {
200
- opacity: theme.opacity.pressed
201
- } : null, isDisabled ? {
202
- opacity: theme.opacity.disabled
203
- } : null, typeof externalStyle === "function" ? externalStyle(state) : externalStyle],
211
+ style: style,
204
212
  children: [isLoading && /*#__PURE__*/_jsx(Spinner, {
205
213
  size: "sm",
206
214
  color: fg
@@ -1 +1 @@
1
- {"version":3,"names":["Children","createContext","forwardRef","useContext","StyleSheet","useUnistyles","getDefaultRadius","readableOn","resolveThemeColor","Icon","Spinner","Text","jsx","_jsx","jsxs","_jsxs","ButtonContext","color","size","useButtonContext","getColors","variant","theme","c","get","key","bg","border","borderWidth","fg","LABEL_TYPOGRAPHY","sm","weight","md","lg","ButtonLabel","children","typography","style","ICON_SIZE","ButtonIcon","name","sizeProp","colorProp","strokeWidth","renderChildren","map","child","trim","length","ButtonRoot","Button","radius","isDisabled","isLoading","isIconOnly","fullWidth","compact","background","onPress","rest","ref","_styles","styles","useVariants","iconOnly","variantBg","variantFg","resolvedBackground","undefined","blocked","externalStyle","pressableRest","Provider","value","Pressable","disabled","accessibilityRole","accessibilityState","busy","state","base","backgroundColor","borderColor","pressed","opacity","Label","create","flexDirection","alignItems","justifyContent","alignSelf","variants","height","paddingHorizontal","gap","none","borderRadius","xl","full","true","false","aspectRatio","uni__dependencies","paddingVertical"],"sourceRoot":"../../../../src","sources":["components/button/Button.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Children","createContext","forwardRef","useContext","StyleSheet","useUnistyles","getDefaultRadius","readableOn","resolveThemeColor","Icon","PressableScale","Spinner","Text","jsx","_jsx","jsxs","_jsxs","PRESSED_SCALE","ButtonContext","color","size","useButtonContext","getColors","variant","theme","c","get","key","bg","border","borderWidth","fg","LABEL_TYPOGRAPHY","sm","weight","md","lg","ButtonLabel","children","typography","style","ICON_SIZE","ButtonIcon","name","sizeProp","colorProp","strokeWidth","renderChildren","map","child","trim","length","ButtonRoot","Button","radius","isDisabled","isLoading","isIconOnly","fullWidth","compact","animation","background","onPress","rest","ref","_styles","styles","useVariants","iconOnly","variantBg","variantFg","resolvedBackground","undefined","blocked","externalStyle","pressableRest","ownStyles","base","backgroundColor","borderColor","opacity","disabled","state","Provider","value","minScale","pressedOpacity","pressed","accessibilityRole","accessibilityState","busy","Label","create","flexDirection","alignItems","justifyContent","alignSelf","variants","height","paddingHorizontal","gap","none","borderRadius","xl","full","true","false","aspectRatio","uni__dependencies","paddingVertical"],"sourceRoot":"../../../../src","sources":["components/button/Button.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["Button","useButtonContext"],"sourceRoot":"../../../../src","sources":["components/button/index.ts"],"mappings":";;AAOA,SAASA,MAAM,EAAEC,gBAAgB","ignoreList":[]}
1
+ {"version":3,"names":["Button","useButtonContext"],"sourceRoot":"../../../../src","sources":["components/button/index.ts"],"mappings":";;AAQA,SAASA,MAAM,EAAEC,gBAAgB","ignoreList":[]}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+
3
+ import { View } from "react-native-unistyles/components/native/View";
4
+ import { Children, forwardRef } from "react";
5
+ import { StyleSheet as RNStyleSheet } from "react-native";
6
+ import { StyleSheet, useUnistyles } from "react-native-unistyles";
7
+ import { resolveThemeColor } from "../../utils/resolve-theme-color.js";
8
+ import { Text } from "../text/index.js";
9
+
10
+ /** `number | 'hairline'`, mirroring `Box`'s `borderWidth`. */
11
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
+ function resolveThickness(thickness) {
13
+ return thickness === "hairline" ? RNStyleSheet.hairlineWidth : thickness;
14
+ }
15
+ function renderLabel(children) {
16
+ return Children.map(children, child => {
17
+ if (typeof child === "string") {
18
+ return child.trim().length > 0 ? /*#__PURE__*/_jsx(Text, {
19
+ variant: "label-sm",
20
+ color: "text.secondary",
21
+ children: child
22
+ }) : null;
23
+ }
24
+ if (typeof child === "number") {
25
+ return /*#__PURE__*/_jsx(Text, {
26
+ variant: "label-sm",
27
+ color: "text.secondary",
28
+ children: child
29
+ });
30
+ }
31
+ return child;
32
+ });
33
+ }
34
+
35
+ /**
36
+ * A rule that separates content.
37
+ *
38
+ * Decorative by default — screen readers skip it, because the separation it
39
+ * expresses is already carried by the content either side. A labelled divider
40
+ * keeps its label readable.
41
+ *
42
+ * @example
43
+ * <Divider />
44
+ * <Divider spacing="4" />
45
+ * <Divider orientation="vertical" />
46
+ * <Divider>OR</Divider>
47
+ */
48
+ export const Divider = /*#__PURE__*/forwardRef(function Divider({
49
+ orientation = "horizontal",
50
+ color = "border.default",
51
+ thickness = "hairline",
52
+ spacing,
53
+ labelAlign = "center",
54
+ children,
55
+ style,
56
+ ...rest
57
+ }, ref) {
58
+ const {
59
+ theme
60
+ } = useUnistyles();
61
+ const isVertical = orientation === "vertical";
62
+ // A vertical rule has no room to run either side of a label, so children are
63
+ // dropped rather than silently laid out in a direction they were not written for.
64
+ const label = isVertical ? null : renderLabel(children);
65
+ const hasLabel = Children.count(label) > 0;
66
+ const lineColor = resolveThemeColor(color, theme);
67
+ const weight = resolveThickness(thickness);
68
+ const margin = spacing !== undefined ? theme.spacing[spacing] : undefined;
69
+ const line = {
70
+ backgroundColor: lineColor,
71
+ ...(isVertical ? {
72
+ width: weight
73
+ } : {
74
+ height: weight
75
+ })
76
+ };
77
+ if (!hasLabel) {
78
+ return /*#__PURE__*/_jsx(View, {
79
+ ref: ref,
80
+ accessibilityElementsHidden: true,
81
+ importantForAccessibility: "no-hide-descendants",
82
+ "aria-hidden": true,
83
+ ...rest,
84
+ style: [styles.rule, line, margin !== undefined ? isVertical ? {
85
+ marginHorizontal: margin
86
+ } : {
87
+ marginVertical: margin
88
+ } : null, style]
89
+ });
90
+ }
91
+
92
+ // The label stays readable, so the wrapper is not hidden from accessibility —
93
+ // only the two rule segments are, and each is a bare decorative View.
94
+ return /*#__PURE__*/_jsxs(View, {
95
+ ref: ref,
96
+ ...rest,
97
+ style: [styles.labelledRoot, margin !== undefined ? {
98
+ marginVertical: margin
99
+ } : null, style],
100
+ children: [labelAlign !== "start" && /*#__PURE__*/_jsx(View, {
101
+ style: [styles.labelledSegment, line]
102
+ }), label, labelAlign !== "end" && /*#__PURE__*/_jsx(View, {
103
+ style: [styles.labelledSegment, line]
104
+ })]
105
+ });
106
+ });
107
+
108
+ // ─── Styles ───────────────────────────────────────────────────────────────────
109
+
110
+ const styles = StyleSheet.create(theme => ({
111
+ // Stretches across its parent's cross axis: full width in a column, full
112
+ // height in a row. The `line` style supplies the other dimension.
113
+ rule: {
114
+ alignSelf: "stretch"
115
+ },
116
+ labelledRoot: {
117
+ alignSelf: "stretch",
118
+ flexDirection: "row",
119
+ alignItems: "center",
120
+ gap: theme.spacing["3"],
121
+ uni__dependencies: [0]
122
+ },
123
+ labelledSegment: {
124
+ flex: 1
125
+ }
126
+ }));
127
+ //# sourceMappingURL=Divider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Children","forwardRef","StyleSheet","RNStyleSheet","useUnistyles","resolveThemeColor","Text","jsx","_jsx","jsxs","_jsxs","resolveThickness","thickness","hairlineWidth","renderLabel","children","map","child","trim","length","variant","color","Divider","orientation","spacing","labelAlign","style","rest","ref","theme","isVertical","label","hasLabel","count","lineColor","weight","margin","undefined","line","backgroundColor","width","height","View","accessibilityElementsHidden","importantForAccessibility","styles","rule","marginHorizontal","marginVertical","labelledRoot","labelledSegment","create","alignSelf","flexDirection","alignItems","gap","uni__dependencies","flex"],"sourceRoot":"../../../../src","sources":["components/divider/Divider.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { Divider } from "./Divider.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Divider"],"sourceRoot":"../../../../src","sources":["components/divider/index.ts"],"mappings":";;AAMA,SAASA,OAAO","ignoreList":[]}
@@ -4,12 +4,14 @@ export * from "./avatar/index.js";
4
4
  export * from "./box/index.js";
5
5
  export * from "./button/index.js";
6
6
  export * from "./chip/index.js";
7
+ export * from "./divider/index.js";
7
8
  export * from "./empty-state/index.js";
8
9
  export * from "./header/index.js";
9
10
  export * from "./icon/index.js";
10
11
  export * from "./image/index.js";
11
12
  export * from "./page-indicator/index.js";
12
13
  export * from "./portal/index.js";
14
+ export * from "./pressable/index.js";
13
15
  export * from "./screen/index.js";
14
16
  export * from "./slot/index.js";
15
17
  export * from "./spinner/index.js";
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../../src","sources":["components/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["components/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { PressableScale } from "./variants/PressableScale/index.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PressableScale"],"sourceRoot":"../../../../src","sources":["components/pressable/index.ts"],"mappings":";;AAIA,SAASA,cAAc","ignoreList":[]}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ import { Pressable } from "react-native-unistyles/components/native/Pressable";
4
+ import { forwardRef, useCallback, useEffect, useState } from "react";
5
+ import Animated, { Easing, interpolate, useAnimatedStyle, useSharedValue, withSpring, withTiming } from "react-native-reanimated";
6
+ import { StyleSheet } from "react-native-unistyles";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ const AnimatedPressable = Animated.createAnimatedComponent(Pressable);
9
+
10
+ /** A 250ms ease that reads as instant on press-in but never snaps back on release. */
11
+ const DEFAULT_TIMING = {
12
+ duration: 250,
13
+ easing: Easing.bezier(0.25, 0.1, 0.25, 1)
14
+ };
15
+ /**
16
+ * A `Pressable` that animates a scale (and optionally an opacity) between its
17
+ * resting and pressed states, driven by a single shared `progress` value on the
18
+ * UI thread.
19
+ *
20
+ * Use it anywhere a press deserves physical feedback — cards, list rows, custom
21
+ * controls. `Button` renders one internally via its `animation` prop.
22
+ */
23
+ export const PressableScale = /*#__PURE__*/forwardRef(function PressableScale({
24
+ baseScale = 1,
25
+ minScale = 0.96,
26
+ pressedOpacity,
27
+ animationConfig,
28
+ isDisabled = false,
29
+ style,
30
+ onPressIn,
31
+ onPressOut,
32
+ ...rest
33
+ }, ref) {
34
+ const progress = useSharedValue(0);
35
+
36
+ // Only the function form of `style` needs a re-render to resolve; tracking
37
+ // `pressed` unconditionally would re-render every consumer on every touch.
38
+ const isStyleFunction = typeof style === "function";
39
+ const [pressed, setPressed] = useState(false);
40
+ const animateTo = useCallback(to => {
41
+ if (animationConfig?.type === "spring") {
42
+ progress.value = withSpring(to, animationConfig.config);
43
+ return;
44
+ }
45
+ progress.value = withTiming(to, {
46
+ ...DEFAULT_TIMING,
47
+ ...animationConfig?.config
48
+ });
49
+ }, [animationConfig, progress]);
50
+ const handlePressIn = useCallback(event => {
51
+ animateTo(1);
52
+ if (isStyleFunction) setPressed(true);
53
+ onPressIn?.(event);
54
+ }, [animateTo, isStyleFunction, onPressIn]);
55
+ const handlePressOut = useCallback(event => {
56
+ animateTo(0);
57
+ if (isStyleFunction) setPressed(false);
58
+ onPressOut?.(event);
59
+ }, [animateTo, isStyleFunction, onPressOut]);
60
+
61
+ // A press that disables its own pressable — `onPress` flipping a button into
62
+ // a loading state — never gets an `onPressOut`, so release it here instead
63
+ // of leaving it stuck at the pressed scale.
64
+ useEffect(() => {
65
+ if (!isDisabled) return;
66
+ animateTo(0);
67
+ setPressed(false);
68
+ }, [isDisabled, animateTo]);
69
+ const animatedStyle = useAnimatedStyle(() => {
70
+ const scale = interpolate(progress.value, [0, 1], [baseScale, minScale]);
71
+ if (pressedOpacity === undefined) {
72
+ return {
73
+ transform: [{
74
+ scale
75
+ }]
76
+ };
77
+ }
78
+ return {
79
+ transform: [{
80
+ scale
81
+ }],
82
+ opacity: interpolate(progress.value, [0, 1], [1, pressedOpacity])
83
+ };
84
+ });
85
+ const pressableState = {
86
+ pressed
87
+ };
88
+ return /*#__PURE__*/_jsx(AnimatedPressable, {
89
+ ref: ref,
90
+ disabled: isDisabled,
91
+ ...rest,
92
+ onPressIn: handlePressIn,
93
+ onPressOut: handlePressOut
94
+ // The animated style goes first so anything the caller sets — a disabled
95
+ // opacity, say — still wins.
96
+ ,
97
+ style: [styles.root, animatedStyle, isStyleFunction ? style(pressableState) : style]
98
+ });
99
+ });
100
+
101
+ // ─── Styles ───────────────────────────────────────────────────────────────────
102
+ //
103
+ // PressableScale has no style of its own — this stylesheet exists so the
104
+ // Unistyles Babel plugin swaps the `Pressable` imported above for its
105
+ // Unistyles-aware counterpart. Without it a themed style handed in through
106
+ // `style` freezes at whichever theme was active when it was created.
107
+ const styles = StyleSheet.create(() => ({
108
+ root: {}
109
+ }));
110
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","useCallback","useEffect","useState","Animated","Easing","interpolate","useAnimatedStyle","useSharedValue","withSpring","withTiming","StyleSheet","jsx","_jsx","AnimatedPressable","createAnimatedComponent","Pressable","DEFAULT_TIMING","duration","easing","bezier","PressableScale","baseScale","minScale","pressedOpacity","animationConfig","isDisabled","style","onPressIn","onPressOut","rest","ref","progress","isStyleFunction","pressed","setPressed","animateTo","to","type","value","config","handlePressIn","event","handlePressOut","animatedStyle","scale","undefined","transform","opacity","pressableState","disabled","styles","root","create"],"sourceRoot":"../../../../../../src","sources":["components/pressable/variants/PressableScale/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -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":[]}