@webority-technologies/mobile 0.0.22 → 0.0.24

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 (249) hide show
  1. package/lib/commonjs/components/Accordion/Accordion.js +9 -7
  2. package/lib/commonjs/components/AnimatePresence/AnimatePresence.js +69 -0
  3. package/lib/commonjs/components/AnimatePresence/index.js +13 -0
  4. package/lib/commonjs/components/AppBar/AppBar.js +9 -6
  5. package/lib/commonjs/components/Avatar/Avatar.js +4 -2
  6. package/lib/commonjs/components/Badge/Badge.js +5 -5
  7. package/lib/commonjs/components/Banner/Banner.js +20 -6
  8. package/lib/commonjs/components/BottomNavigation/BottomNavigation.js +6 -4
  9. package/lib/commonjs/components/BottomSheet/BottomSheet.js +8 -9
  10. package/lib/commonjs/components/Box/Box.js +162 -0
  11. package/lib/commonjs/components/Box/index.js +37 -0
  12. package/lib/commonjs/components/Button/Button.js +7 -7
  13. package/lib/commonjs/components/Card/Card.js +3 -3
  14. package/lib/commonjs/components/Carousel/Carousel.js +4 -2
  15. package/lib/commonjs/components/Checkbox/Checkbox.js +17 -7
  16. package/lib/commonjs/components/Chip/Chip.js +4 -2
  17. package/lib/commonjs/components/DatePicker/DatePicker.js +31 -24
  18. package/lib/commonjs/components/DateRangePicker/DateRangePicker.js +16 -11
  19. package/lib/commonjs/components/Dialog/Dialog.js +6 -4
  20. package/lib/commonjs/components/Drawer/Drawer.js +4 -2
  21. package/lib/commonjs/components/FieldBase/FieldBase.js +8 -4
  22. package/lib/commonjs/components/FloatingActionButton/FloatingActionButton.js +23 -13
  23. package/lib/commonjs/components/FormField/FormField.js +61 -25
  24. package/lib/commonjs/components/ImageGallery/ImageGallery.js +17 -15
  25. package/lib/commonjs/components/Input/Input.js +41 -29
  26. package/lib/commonjs/components/KeyboardAwareScrollView/KeyboardAwareScrollView.js +102 -0
  27. package/lib/commonjs/components/KeyboardAwareScrollView/index.js +13 -0
  28. package/lib/commonjs/components/KeyboardToolbar/KeyboardToolbar.js +130 -0
  29. package/lib/commonjs/components/KeyboardToolbar/index.js +13 -0
  30. package/lib/commonjs/components/ListItem/ListItem.js +4 -3
  31. package/lib/commonjs/components/Modal/Modal.js +21 -9
  32. package/lib/commonjs/components/NumberInput/NumberInput.js +38 -29
  33. package/lib/commonjs/components/OTPInput/OTPInput.js +37 -22
  34. package/lib/commonjs/components/Radio/Radio.js +9 -8
  35. package/lib/commonjs/components/Radio/RadioGroup.js +10 -3
  36. package/lib/commonjs/components/Rating/Rating.js +4 -3
  37. package/lib/commonjs/components/SearchBar/SearchBar.js +11 -6
  38. package/lib/commonjs/components/SegmentedControl/SegmentedControl.js +23 -12
  39. package/lib/commonjs/components/Select/Select.js +40 -36
  40. package/lib/commonjs/components/Skeleton/SkeletonContent.js +5 -2
  41. package/lib/commonjs/components/Slider/Slider.js +241 -225
  42. package/lib/commonjs/components/Spinner/Spinner.js +5 -5
  43. package/lib/commonjs/components/Stepper/Stepper.js +6 -5
  44. package/lib/commonjs/components/Swipeable/Swipeable.js +8 -9
  45. package/lib/commonjs/components/Switch/Switch.js +29 -16
  46. package/lib/commonjs/components/Tabs/Tabs.js +8 -5
  47. package/lib/commonjs/components/Text/Text.js +142 -0
  48. package/lib/commonjs/components/Text/index.js +13 -0
  49. package/lib/commonjs/components/TimePicker/TimePicker.js +23 -15
  50. package/lib/commonjs/components/Toast/Toast.js +22 -10
  51. package/lib/commonjs/components/Tooltip/Tooltip.js +6 -2
  52. package/lib/commonjs/components/index.js +156 -103
  53. package/lib/commonjs/form/FormContext.js +40 -0
  54. package/lib/commonjs/form/index.js +68 -0
  55. package/lib/commonjs/form/path.js +79 -0
  56. package/lib/commonjs/form/rules.js +67 -0
  57. package/lib/commonjs/form/types.js +2 -0
  58. package/lib/commonjs/form/useField.js +54 -0
  59. package/lib/commonjs/form/useForm.js +316 -0
  60. package/lib/commonjs/hooks/index.js +14 -0
  61. package/lib/commonjs/hooks/useControllableState.js +30 -0
  62. package/lib/commonjs/hooks/useReducedMotion.js +31 -0
  63. package/lib/commonjs/index.js +96 -11
  64. package/lib/commonjs/theme/ThemeContext.js +30 -2
  65. package/lib/commonjs/theme/tokens.js +12 -0
  66. package/lib/commonjs/utils/hapticUtils.js +11 -1
  67. package/lib/commonjs/utils/index.js +6 -0
  68. package/lib/module/components/Accordion/Accordion.js +10 -8
  69. package/lib/module/components/AnimatePresence/AnimatePresence.js +63 -0
  70. package/lib/module/components/AnimatePresence/index.js +4 -0
  71. package/lib/module/components/AppBar/AppBar.js +10 -7
  72. package/lib/module/components/Avatar/Avatar.js +4 -2
  73. package/lib/module/components/Badge/Badge.js +5 -5
  74. package/lib/module/components/Banner/Banner.js +20 -6
  75. package/lib/module/components/BottomNavigation/BottomNavigation.js +6 -4
  76. package/lib/module/components/BottomSheet/BottomSheet.js +8 -9
  77. package/lib/module/components/Box/Box.js +156 -0
  78. package/lib/module/components/Box/index.js +4 -0
  79. package/lib/module/components/Button/Button.js +7 -7
  80. package/lib/module/components/Card/Card.js +4 -4
  81. package/lib/module/components/Carousel/Carousel.js +4 -2
  82. package/lib/module/components/Checkbox/Checkbox.js +18 -8
  83. package/lib/module/components/Chip/Chip.js +5 -3
  84. package/lib/module/components/DatePicker/DatePicker.js +32 -25
  85. package/lib/module/components/DateRangePicker/DateRangePicker.js +17 -12
  86. package/lib/module/components/Dialog/Dialog.js +7 -5
  87. package/lib/module/components/Drawer/Drawer.js +5 -3
  88. package/lib/module/components/FieldBase/FieldBase.js +8 -4
  89. package/lib/module/components/FloatingActionButton/FloatingActionButton.js +24 -14
  90. package/lib/module/components/FormField/FormField.js +62 -26
  91. package/lib/module/components/ImageGallery/ImageGallery.js +18 -16
  92. package/lib/module/components/Input/Input.js +41 -29
  93. package/lib/module/components/KeyboardAwareScrollView/KeyboardAwareScrollView.js +98 -0
  94. package/lib/module/components/KeyboardAwareScrollView/index.js +4 -0
  95. package/lib/module/components/KeyboardToolbar/KeyboardToolbar.js +125 -0
  96. package/lib/module/components/KeyboardToolbar/index.js +4 -0
  97. package/lib/module/components/ListItem/ListItem.js +5 -4
  98. package/lib/module/components/Modal/Modal.js +22 -10
  99. package/lib/module/components/NumberInput/NumberInput.js +36 -27
  100. package/lib/module/components/OTPInput/OTPInput.js +37 -22
  101. package/lib/module/components/Radio/Radio.js +10 -9
  102. package/lib/module/components/Radio/RadioGroup.js +10 -3
  103. package/lib/module/components/Rating/Rating.js +5 -4
  104. package/lib/module/components/SearchBar/SearchBar.js +12 -7
  105. package/lib/module/components/SegmentedControl/SegmentedControl.js +24 -13
  106. package/lib/module/components/Select/Select.js +41 -37
  107. package/lib/module/components/Skeleton/SkeletonContent.js +5 -2
  108. package/lib/module/components/Slider/Slider.js +244 -228
  109. package/lib/module/components/Spinner/Spinner.js +5 -5
  110. package/lib/module/components/Stepper/Stepper.js +7 -6
  111. package/lib/module/components/Swipeable/Swipeable.js +9 -10
  112. package/lib/module/components/Switch/Switch.js +29 -16
  113. package/lib/module/components/Tabs/Tabs.js +9 -6
  114. package/lib/module/components/Text/Text.js +138 -0
  115. package/lib/module/components/Text/index.js +4 -0
  116. package/lib/module/components/TimePicker/TimePicker.js +24 -16
  117. package/lib/module/components/Toast/Toast.js +22 -10
  118. package/lib/module/components/Tooltip/Tooltip.js +6 -2
  119. package/lib/module/components/index.js +5 -0
  120. package/lib/module/form/FormContext.js +32 -0
  121. package/lib/module/form/index.js +12 -0
  122. package/lib/module/form/path.js +72 -0
  123. package/lib/module/form/rules.js +52 -0
  124. package/lib/module/form/types.js +2 -0
  125. package/lib/module/form/useField.js +49 -0
  126. package/lib/module/form/useForm.js +312 -0
  127. package/lib/module/hooks/index.js +2 -0
  128. package/lib/module/hooks/useControllableState.js +26 -0
  129. package/lib/module/hooks/useReducedMotion.js +27 -0
  130. package/lib/module/index.js +3 -1
  131. package/lib/module/theme/ThemeContext.js +30 -2
  132. package/lib/module/theme/tokens.js +12 -0
  133. package/lib/module/utils/hapticUtils.js +9 -0
  134. package/lib/module/utils/index.js +1 -1
  135. package/lib/typescript/commonjs/components/Accordion/Accordion.d.ts +3 -0
  136. package/lib/typescript/commonjs/components/AnimatePresence/AnimatePresence.d.ts +30 -0
  137. package/lib/typescript/commonjs/components/AnimatePresence/index.d.ts +3 -0
  138. package/lib/typescript/commonjs/components/AppBar/AppBar.d.ts +6 -0
  139. package/lib/typescript/commonjs/components/Banner/Banner.d.ts +3 -0
  140. package/lib/typescript/commonjs/components/BottomNavigation/BottomNavigation.d.ts +1 -1
  141. package/lib/typescript/commonjs/components/Box/Box.d.ts +60 -0
  142. package/lib/typescript/commonjs/components/Box/index.d.ts +3 -0
  143. package/lib/typescript/commonjs/components/Button/Button.d.ts +1 -1
  144. package/lib/typescript/commonjs/components/Card/Card.d.ts +3 -0
  145. package/lib/typescript/commonjs/components/Checkbox/Checkbox.d.ts +4 -2
  146. package/lib/typescript/commonjs/components/Chip/Chip.d.ts +3 -0
  147. package/lib/typescript/commonjs/components/DatePicker/DatePicker.d.ts +6 -3
  148. package/lib/typescript/commonjs/components/DateRangePicker/DateRangePicker.d.ts +6 -0
  149. package/lib/typescript/commonjs/components/Dialog/Dialog.d.ts +5 -2
  150. package/lib/typescript/commonjs/components/Drawer/Drawer.d.ts +3 -0
  151. package/lib/typescript/commonjs/components/FloatingActionButton/FloatingActionButton.d.ts +5 -0
  152. package/lib/typescript/commonjs/components/FormField/FormField.d.ts +13 -2
  153. package/lib/typescript/commonjs/components/ImageGallery/ImageGallery.d.ts +6 -0
  154. package/lib/typescript/commonjs/components/KeyboardAwareScrollView/KeyboardAwareScrollView.d.ts +20 -0
  155. package/lib/typescript/commonjs/components/KeyboardAwareScrollView/index.d.ts +3 -0
  156. package/lib/typescript/commonjs/components/KeyboardToolbar/KeyboardToolbar.d.ts +29 -0
  157. package/lib/typescript/commonjs/components/KeyboardToolbar/index.d.ts +3 -0
  158. package/lib/typescript/commonjs/components/ListItem/ListItem.d.ts +3 -0
  159. package/lib/typescript/commonjs/components/Modal/Modal.d.ts +6 -0
  160. package/lib/typescript/commonjs/components/NumberInput/NumberInput.d.ts +6 -2
  161. package/lib/typescript/commonjs/components/OTPInput/OTPInput.d.ts +9 -2
  162. package/lib/typescript/commonjs/components/Radio/Radio.d.ts +2 -2
  163. package/lib/typescript/commonjs/components/Radio/RadioGroup.d.ts +3 -2
  164. package/lib/typescript/commonjs/components/Rating/Rating.d.ts +6 -0
  165. package/lib/typescript/commonjs/components/SearchBar/SearchBar.d.ts +3 -0
  166. package/lib/typescript/commonjs/components/SegmentedControl/SegmentedControl.d.ts +6 -2
  167. package/lib/typescript/commonjs/components/Select/Select.d.ts +6 -0
  168. package/lib/typescript/commonjs/components/Slider/Slider.d.ts +9 -4
  169. package/lib/typescript/commonjs/components/Spinner/Spinner.d.ts +1 -1
  170. package/lib/typescript/commonjs/components/Stepper/Stepper.d.ts +6 -0
  171. package/lib/typescript/commonjs/components/Swipeable/Swipeable.d.ts +3 -0
  172. package/lib/typescript/commonjs/components/Switch/Switch.d.ts +3 -2
  173. package/lib/typescript/commonjs/components/Tabs/Tabs.d.ts +3 -0
  174. package/lib/typescript/commonjs/components/Text/Text.d.ts +25 -0
  175. package/lib/typescript/commonjs/components/Text/index.d.ts +3 -0
  176. package/lib/typescript/commonjs/components/TimePicker/TimePicker.d.ts +6 -3
  177. package/lib/typescript/commonjs/components/index.d.ts +10 -0
  178. package/lib/typescript/commonjs/form/FormContext.d.ts +17 -0
  179. package/lib/typescript/commonjs/form/index.d.ts +9 -0
  180. package/lib/typescript/commonjs/form/path.d.ts +10 -0
  181. package/lib/typescript/commonjs/form/rules.d.ts +31 -0
  182. package/lib/typescript/commonjs/form/types.d.ts +94 -0
  183. package/lib/typescript/commonjs/form/useField.d.ts +27 -0
  184. package/lib/typescript/commonjs/form/useForm.d.ts +10 -0
  185. package/lib/typescript/commonjs/hooks/index.d.ts +3 -0
  186. package/lib/typescript/commonjs/hooks/useControllableState.d.ts +17 -0
  187. package/lib/typescript/commonjs/hooks/useReducedMotion.d.ts +8 -0
  188. package/lib/typescript/commonjs/index.d.ts +4 -2
  189. package/lib/typescript/commonjs/theme/types.d.ts +17 -67
  190. package/lib/typescript/commonjs/utils/hapticUtils.d.ts +8 -0
  191. package/lib/typescript/commonjs/utils/index.d.ts +1 -1
  192. package/lib/typescript/module/components/Accordion/Accordion.d.ts +3 -0
  193. package/lib/typescript/module/components/AnimatePresence/AnimatePresence.d.ts +30 -0
  194. package/lib/typescript/module/components/AnimatePresence/index.d.ts +3 -0
  195. package/lib/typescript/module/components/AppBar/AppBar.d.ts +6 -0
  196. package/lib/typescript/module/components/Banner/Banner.d.ts +3 -0
  197. package/lib/typescript/module/components/BottomNavigation/BottomNavigation.d.ts +1 -1
  198. package/lib/typescript/module/components/Box/Box.d.ts +60 -0
  199. package/lib/typescript/module/components/Box/index.d.ts +3 -0
  200. package/lib/typescript/module/components/Button/Button.d.ts +1 -1
  201. package/lib/typescript/module/components/Card/Card.d.ts +3 -0
  202. package/lib/typescript/module/components/Checkbox/Checkbox.d.ts +4 -2
  203. package/lib/typescript/module/components/Chip/Chip.d.ts +3 -0
  204. package/lib/typescript/module/components/DatePicker/DatePicker.d.ts +6 -3
  205. package/lib/typescript/module/components/DateRangePicker/DateRangePicker.d.ts +6 -0
  206. package/lib/typescript/module/components/Dialog/Dialog.d.ts +5 -2
  207. package/lib/typescript/module/components/Drawer/Drawer.d.ts +3 -0
  208. package/lib/typescript/module/components/FloatingActionButton/FloatingActionButton.d.ts +5 -0
  209. package/lib/typescript/module/components/FormField/FormField.d.ts +13 -2
  210. package/lib/typescript/module/components/ImageGallery/ImageGallery.d.ts +6 -0
  211. package/lib/typescript/module/components/KeyboardAwareScrollView/KeyboardAwareScrollView.d.ts +20 -0
  212. package/lib/typescript/module/components/KeyboardAwareScrollView/index.d.ts +3 -0
  213. package/lib/typescript/module/components/KeyboardToolbar/KeyboardToolbar.d.ts +29 -0
  214. package/lib/typescript/module/components/KeyboardToolbar/index.d.ts +3 -0
  215. package/lib/typescript/module/components/ListItem/ListItem.d.ts +3 -0
  216. package/lib/typescript/module/components/Modal/Modal.d.ts +6 -0
  217. package/lib/typescript/module/components/NumberInput/NumberInput.d.ts +6 -2
  218. package/lib/typescript/module/components/OTPInput/OTPInput.d.ts +9 -2
  219. package/lib/typescript/module/components/Radio/Radio.d.ts +2 -2
  220. package/lib/typescript/module/components/Radio/RadioGroup.d.ts +3 -2
  221. package/lib/typescript/module/components/Rating/Rating.d.ts +6 -0
  222. package/lib/typescript/module/components/SearchBar/SearchBar.d.ts +3 -0
  223. package/lib/typescript/module/components/SegmentedControl/SegmentedControl.d.ts +6 -2
  224. package/lib/typescript/module/components/Select/Select.d.ts +6 -0
  225. package/lib/typescript/module/components/Slider/Slider.d.ts +9 -4
  226. package/lib/typescript/module/components/Spinner/Spinner.d.ts +1 -1
  227. package/lib/typescript/module/components/Stepper/Stepper.d.ts +6 -0
  228. package/lib/typescript/module/components/Swipeable/Swipeable.d.ts +3 -0
  229. package/lib/typescript/module/components/Switch/Switch.d.ts +3 -2
  230. package/lib/typescript/module/components/Tabs/Tabs.d.ts +3 -0
  231. package/lib/typescript/module/components/Text/Text.d.ts +25 -0
  232. package/lib/typescript/module/components/Text/index.d.ts +3 -0
  233. package/lib/typescript/module/components/TimePicker/TimePicker.d.ts +6 -3
  234. package/lib/typescript/module/components/index.d.ts +10 -0
  235. package/lib/typescript/module/form/FormContext.d.ts +17 -0
  236. package/lib/typescript/module/form/index.d.ts +9 -0
  237. package/lib/typescript/module/form/path.d.ts +10 -0
  238. package/lib/typescript/module/form/rules.d.ts +31 -0
  239. package/lib/typescript/module/form/types.d.ts +94 -0
  240. package/lib/typescript/module/form/useField.d.ts +27 -0
  241. package/lib/typescript/module/form/useForm.d.ts +10 -0
  242. package/lib/typescript/module/hooks/index.d.ts +3 -0
  243. package/lib/typescript/module/hooks/useControllableState.d.ts +17 -0
  244. package/lib/typescript/module/hooks/useReducedMotion.d.ts +8 -0
  245. package/lib/typescript/module/index.d.ts +4 -2
  246. package/lib/typescript/module/theme/types.d.ts +17 -67
  247. package/lib/typescript/module/utils/hapticUtils.d.ts +8 -0
  248. package/lib/typescript/module/utils/index.d.ts +1 -1
  249. package/package.json +1 -1
@@ -4,7 +4,30 @@ import React, { createContext, useContext, useEffect, useMemo, useState } from '
4
4
  import { Appearance } from 'react-native';
5
5
  import { darkTheme, lightTheme } from "./tokens.js";
6
6
  import { mergeTheme } from "./merge.js";
7
+ import { useReducedMotion } from "../hooks/useReducedMotion.js";
7
8
  import { jsx as _jsx } from "react/jsx-runtime";
9
+ const REDUCED_SPRING = {
10
+ damping: 100,
11
+ stiffness: 1000,
12
+ mass: 1
13
+ };
14
+ // Reduce Motion: collapse timed animations to instant and make springs settle in
15
+ // ~1 frame, so vestibular-sensitive users aren't subjected to slides/scales/bounces.
16
+ const collapseMotion = motion => ({
17
+ ...motion,
18
+ duration: {
19
+ instant: 0,
20
+ fast: 0,
21
+ normal: 0,
22
+ slow: 0,
23
+ slower: 0
24
+ },
25
+ spring: {
26
+ gentle: REDUCED_SPRING,
27
+ bouncy: REDUCED_SPRING,
28
+ snappy: REDUCED_SPRING
29
+ }
30
+ });
8
31
  const defaultValue = {
9
32
  theme: lightTheme,
10
33
  mode: 'light',
@@ -30,11 +53,16 @@ export const ThemeProvider = ({
30
53
  return () => sub.remove();
31
54
  }, []);
32
55
  const mode = preference === 'system' ? systemMode : preference;
56
+ const reduceMotion = useReducedMotion();
33
57
  const theme = useMemo(() => {
34
58
  const base = mode === 'dark' ? darkTheme : lightTheme;
35
59
  const overrides = mode === 'dark' ? darkOverrides : lightOverrides;
36
- return overrides ? mergeTheme(base, overrides) : base;
37
- }, [mode, lightOverrides, darkOverrides]);
60
+ const merged = overrides ? mergeTheme(base, overrides) : base;
61
+ return reduceMotion ? {
62
+ ...merged,
63
+ motion: collapseMotion(merged.motion)
64
+ } : merged;
65
+ }, [mode, lightOverrides, darkOverrides, reduceMotion]);
38
66
  const value = useMemo(() => ({
39
67
  theme,
40
68
  mode,
@@ -521,6 +521,12 @@ export const lightTheme = {
521
521
  warning: '#F59E0B',
522
522
  error: '#E5484D',
523
523
  info: '#3B82F6',
524
+ onPrimary: '#FFFFFF',
525
+ onSecondary: '#0F0F1A',
526
+ onSuccess: '#FFFFFF',
527
+ onWarning: '#0F0F1A',
528
+ onError: '#FFFFFF',
529
+ onInfo: '#FFFFFF',
524
530
  text: {
525
531
  primary: '#0F0F1A',
526
532
  secondary: '#52525B',
@@ -576,6 +582,12 @@ export const darkTheme = {
576
582
  warning: '#FBBF24',
577
583
  error: '#F87171',
578
584
  info: '#60A5FA',
585
+ onPrimary: '#0F0F1A',
586
+ onSecondary: '#FAFAFA',
587
+ onSuccess: '#0F0F1A',
588
+ onWarning: '#0F0F1A',
589
+ onError: '#0F0F1A',
590
+ onInfo: '#0F0F1A',
579
591
  text: {
580
592
  primary: '#FAFAFA',
581
593
  secondary: '#B4B4BB',
@@ -48,4 +48,13 @@ export const triggerHaptic = (type = 'selection') => {
48
48
  export const setHapticImplementation = impl => {
49
49
  hapticImpl = impl;
50
50
  };
51
+
52
+ /**
53
+ * Resolves a component's `haptic` prop to the type that should fire, or null
54
+ * when haptics are off. `false` disables; a `HapticType` overrides; `undefined`
55
+ * falls back to the component's sensible default. Pair with `triggerHaptic`:
56
+ * const h = resolveHaptic(haptic, 'selection');
57
+ * if (h) triggerHaptic(h);
58
+ */
59
+ export const resolveHaptic = (haptic, fallbackType) => haptic === false ? null : haptic ?? fallbackType;
51
60
  //# sourceMappingURL=hapticUtils.js.map
@@ -2,7 +2,7 @@
2
2
 
3
3
  export { ScreenDimensions, Breakpoints, Responsive, isScreenSize, isTablet } from "./responsive.js";
4
4
  export { Spacing, Padding, Margin } from "./spacing.js";
5
- export { triggerHaptic, setHapticImplementation } from "./hapticUtils.js";
5
+ export { triggerHaptic, setHapticImplementation, resolveHaptic } from "./hapticUtils.js";
6
6
  export { shadowStyle } from "./shadows.js";
7
7
  export { compressImage } from "./imageCompression.js";
8
8
  //# sourceMappingURL=index.js.map
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { StyleProp, ViewStyle } from 'react-native';
3
+ import type { HapticType } from '../../utils/hapticUtils';
3
4
  export type AccordionVariant = 'plain' | 'card';
4
5
  export interface AccordionProps {
5
6
  title: string;
@@ -26,6 +27,8 @@ export interface AccordionProps {
26
27
  * accordion so the layout doesn't shift when data arrives.
27
28
  */
28
29
  loading?: boolean;
30
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
31
+ haptic?: HapticType | false;
29
32
  }
30
33
  export interface AccordionGroupProps {
31
34
  children: React.ReactNode;
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import type { StyleProp, ViewStyle } from 'react-native';
3
+ export type PresencePreset = 'fade' | 'scale' | 'slide-up' | 'slide-down';
4
+ export interface AnimatePresenceProps {
5
+ /**
6
+ * Render conditionally. When this goes null / undefined / false the exit
7
+ * animation plays before the content unmounts; when it returns the enter
8
+ * animation plays. Drive it like `{visible ? <Panel /> : null}`.
9
+ */
10
+ children?: React.ReactNode;
11
+ /** Enter/exit preset. Default `'fade'`. */
12
+ preset?: PresencePreset;
13
+ /** Animation duration (ms). Defaults to `theme.motion.duration.base`. */
14
+ duration?: number;
15
+ style?: StyleProp<ViewStyle>;
16
+ testID?: string;
17
+ }
18
+ /**
19
+ * Animates a single child in on mount and out on unmount. Thin, theme-aware
20
+ * wrapper over Reanimated's `entering`/`exiting` — Reanimated keeps the view
21
+ * alive to play the exit, so the parent only toggles a condition. Honors the OS
22
+ * Reduce Motion setting (renders instantly when reduced).
23
+ *
24
+ * For animating items inside a list, use Reanimated's `itemLayoutAnimation`
25
+ * on `Animated.FlatList` instead — this wrapper targets single conditional nodes.
26
+ */
27
+ declare const AnimatePresence: React.FC<AnimatePresenceProps>;
28
+ export { AnimatePresence };
29
+ export default AnimatePresence;
30
+ //# sourceMappingURL=AnimatePresence.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { AnimatePresence } from './AnimatePresence';
2
+ export type { AnimatePresenceProps, PresencePreset } from './AnimatePresence';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Animated, View } from 'react-native';
3
3
  import type { StyleProp, ViewStyle } from 'react-native';
4
+ import type { HapticType } from '../../utils/hapticUtils';
4
5
  export type AppBarVariant = 'default' | 'large' | 'compact';
5
6
  export type AppBarTitleAlignment = 'left' | 'center';
6
7
  export interface AppBarAction {
@@ -36,6 +37,11 @@ export interface AppBarProps {
36
37
  subtitleStyle?: StyleProp<ViewStyle>;
37
38
  /** Style applied to the right-action badge bubble. */
38
39
  badgeStyle?: StyleProp<ViewStyle>;
40
+ /**
41
+ * Haptic feedback for interactions. Pass false to disable; pass a HapticType
42
+ * to override the default.
43
+ */
44
+ haptic?: HapticType | false;
39
45
  testID?: string;
40
46
  }
41
47
  declare const AppBar: React.ForwardRefExoticComponent<AppBarProps & React.RefAttributes<View>>;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { StyleProp, View as RNView, ViewStyle } from 'react-native';
3
+ import type { HapticType } from '../../utils/hapticUtils';
3
4
  export type BannerVariant = 'info' | 'success' | 'warning' | 'error' | 'neutral';
4
5
  export interface BannerAction {
5
6
  label: string;
@@ -14,6 +15,8 @@ export interface BannerProps {
14
15
  actions?: BannerAction[];
15
16
  dismissible?: boolean;
16
17
  onDismiss?: () => void;
18
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
19
+ haptic?: HapticType | false;
17
20
  visible?: boolean;
18
21
  animateMount?: boolean;
19
22
  /**
@@ -20,7 +20,7 @@ export interface TabConfig {
20
20
  export interface BottomNavigationProps {
21
21
  tabs: TabConfig[];
22
22
  activeTab: string;
23
- onTabPress: (tabKey: string) => void;
23
+ onChange: (tabKey: string) => void;
24
24
  haptic?: HapticType | false;
25
25
  showLabels?: boolean;
26
26
  variant?: BottomNavigationVariant;
@@ -0,0 +1,60 @@
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+ import type { StyleProp, ViewProps, ViewStyle } from 'react-native';
4
+ import type { ColorPalette, RadiusScale, SpacingScale, Theme } from '../../theme/types';
5
+ export type SpacingToken = keyof SpacingScale;
6
+ export type RadiusToken = keyof RadiusScale;
7
+ export type BackgroundToken = keyof ColorPalette['background'];
8
+ export interface BoxProps extends ViewProps {
9
+ /** padding (all sides) */
10
+ p?: SpacingToken;
11
+ /** paddingHorizontal */
12
+ px?: SpacingToken;
13
+ /** paddingVertical */
14
+ py?: SpacingToken;
15
+ pt?: SpacingToken;
16
+ pr?: SpacingToken;
17
+ pb?: SpacingToken;
18
+ pl?: SpacingToken;
19
+ /** margin (all sides) */
20
+ m?: SpacingToken;
21
+ mx?: SpacingToken;
22
+ my?: SpacingToken;
23
+ mt?: SpacingToken;
24
+ mr?: SpacingToken;
25
+ mb?: SpacingToken;
26
+ ml?: SpacingToken;
27
+ /** Flexbox gap between children (spacing token). */
28
+ gap?: SpacingToken;
29
+ /** Background — a `colors.background.*` token or a raw colour string. */
30
+ bg?: BackgroundToken | (string & {});
31
+ radius?: RadiusToken;
32
+ /** Draw a hairline border in `colors.border.primary`. */
33
+ border?: boolean;
34
+ flex?: number;
35
+ align?: ViewStyle['alignItems'];
36
+ justify?: ViewStyle['justifyContent'];
37
+ direction?: ViewStyle['flexDirection'];
38
+ wrap?: boolean;
39
+ style?: StyleProp<ViewStyle>;
40
+ }
41
+ type LayoutProps = Omit<BoxProps, 'style' | 'children'>;
42
+ export declare const resolveBoxStyle: (theme: Theme, p: LayoutProps) => ViewStyle;
43
+ declare const Box: React.ForwardRefExoticComponent<BoxProps & React.RefAttributes<View>>;
44
+ export type StackProps = Omit<BoxProps, 'direction'>;
45
+ /** Vertical flex container with token spacing between children (default gap `md`). */
46
+ declare const Stack: React.ForwardRefExoticComponent<StackProps & React.RefAttributes<View>>;
47
+ export type RowProps = Omit<BoxProps, 'direction'>;
48
+ /** Horizontal flex container (default `align="center"`, gap `sm`). */
49
+ declare const Row: React.ForwardRefExoticComponent<RowProps & React.RefAttributes<View>>;
50
+ export interface SpacerProps {
51
+ /** Fixed spacer of this spacing token. Omit for a flexible spacer (`flex: 1`). */
52
+ size?: SpacingToken;
53
+ style?: StyleProp<ViewStyle>;
54
+ testID?: string;
55
+ }
56
+ /** Fixed gap (`size`) or a flexible push (`flex: 1`) between siblings. */
57
+ declare const Spacer: React.FC<SpacerProps>;
58
+ export { Box, Stack, Row, Spacer };
59
+ export default Box;
60
+ //# sourceMappingURL=Box.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { Box, Stack, Row, Spacer, resolveBoxStyle } from './Box';
2
+ export type { BoxProps, StackProps, RowProps, SpacerProps } from './Box';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -4,7 +4,7 @@ import type { PressableProps, StyleProp, TextStyle, ViewStyle } from 'react-nati
4
4
  import type { GradientDefinition } from '../../theme/types';
5
5
  import type { HapticType } from '../../utils/hapticUtils';
6
6
  export type ButtonVariant = 'solid' | 'outline' | 'ghost' | 'link';
7
- export type ButtonTone = 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'neutral';
7
+ export type ButtonTone = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'neutral';
8
8
  export type ButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
9
9
  export interface ButtonProps extends Omit<PressableProps, 'style' | 'children'> {
10
10
  title?: string;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { GestureResponderEvent, ImageSourcePropType, PressableProps, StyleProp, View as RNView, ViewStyle } from 'react-native';
3
3
  import type { GradientDefinition } from '../../theme/types';
4
+ import type { HapticType } from '../../utils/hapticUtils';
4
5
  export type CardVariant = 'elevated' | 'outlined' | 'filled';
5
6
  export type CardElevation = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
6
7
  export type CardRadius = 'sm' | 'md' | 'lg' | 'xl' | '2xl';
@@ -32,6 +33,8 @@ export interface CardProps extends Omit<PressableProps, 'style' | 'children'> {
32
33
  */
33
34
  gradient?: string | GradientDefinition;
34
35
  onPress?: (event: GestureResponderEvent) => void;
36
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
37
+ haptic?: HapticType | false;
35
38
  accessibilityLabel?: string;
36
39
  style?: StyleProp<ViewStyle>;
37
40
  /** Alias for `style` — applied to the outer card element. */
@@ -5,14 +5,16 @@ import type { HapticType } from '../../utils/hapticUtils';
5
5
  export type CheckboxSize = 'sm' | 'md' | 'lg';
6
6
  export type CheckboxTone = 'primary' | 'success' | 'warning' | 'error';
7
7
  export interface CheckboxProps extends Omit<PressableProps, 'style' | 'children' | 'onPress'> {
8
- checked: boolean;
9
- onChange: (checked: boolean) => void;
8
+ checked?: boolean;
9
+ defaultChecked?: boolean;
10
+ onChange?: (checked: boolean) => void;
10
11
  indeterminate?: boolean;
11
12
  disabled?: boolean;
12
13
  label?: string;
13
14
  size?: CheckboxSize;
14
15
  tone?: CheckboxTone;
15
16
  accessibilityLabel?: string;
17
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
16
18
  haptic?: HapticType | false;
17
19
  style?: StyleProp<ViewStyle>;
18
20
  boxStyle?: StyleProp<ViewStyle>;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { StyleProp, TextStyle, View as RNView, ViewStyle } from 'react-native';
3
+ import type { HapticType } from '../../utils/hapticUtils';
3
4
  export type ChipVariant = 'filled' | 'outlined';
4
5
  export type ChipTone = 'primary' | 'neutral' | 'success' | 'warning' | 'error' | 'info';
5
6
  export type ChipSize = 'sm' | 'md';
@@ -20,6 +21,8 @@ export interface ChipProps {
20
21
  */
21
22
  loading?: boolean;
22
23
  accessibilityLabel?: string;
24
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
25
+ haptic?: HapticType | false;
23
26
  style?: StyleProp<ViewStyle>;
24
27
  textStyle?: StyleProp<TextStyle>;
25
28
  /** Style override for the chip outer container (alias to style, applied after). */
@@ -1,26 +1,27 @@
1
1
  import React from 'react';
2
2
  import type { StyleProp, ViewStyle } from 'react-native';
3
+ import type { HapticType } from '../../utils';
3
4
  import type { PickerTriggerSize, PickerTriggerVariant } from '../PickerTrigger';
4
5
  export type DatePickerMode = 'modal' | 'inline';
5
6
  export type WeekStart = 0 | 1 | 6;
6
7
  /**
7
8
  * DatePicker operates in two modes:
8
9
  *
9
- * 1. **Controlled-modal mode** — pass `visible` (plus `onSelect` / `onClose`)
10
+ * 1. **Controlled-modal mode** — pass `visible` (plus `onChange` / `onClose`)
10
11
  * and own the open state externally. The component renders only the modal.
11
12
  * 2. **Trigger mode** — omit `visible`. The component renders a built-in
12
13
  * PickerTrigger field (label / value / placeholder / chevron / clear /
13
14
  * helper / error / size / variant) and manages its own open state. The
14
15
  * field opens the modal on press and closes it on confirm/cancel.
15
16
  *
16
- * `onSelect` / `onClose` are typed optional to support trigger-only usage
17
+ * `onChange` / `onClose` are typed optional to support trigger-only usage
17
18
  * where the consumer may not need either callback. In controlled-modal mode
18
19
  * they remain semantically required.
19
20
  */
20
21
  export interface DatePickerProps {
21
22
  visible?: boolean;
22
23
  value?: Date | null;
23
- onSelect?: (date: Date) => void;
24
+ onChange?: (date: Date) => void;
24
25
  onClose?: () => void;
25
26
  minDate?: Date;
26
27
  maxDate?: Date;
@@ -40,6 +41,8 @@ export interface DatePickerProps {
40
41
  navButtonStyle?: StyleProp<ViewStyle>;
41
42
  /** Style override for the cancel/confirm footer buttons. */
42
43
  footerButtonStyle?: StyleProp<ViewStyle>;
44
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
45
+ haptic?: HapticType | false;
43
46
  testID?: string;
44
47
  label?: string;
45
48
  placeholder?: string;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { View } from 'react-native';
3
3
  import type { StyleProp, ViewStyle } from 'react-native';
4
+ import type { HapticType } from '../../utils';
4
5
  import type { PickerTriggerSize, PickerTriggerVariant } from '../PickerTrigger';
5
6
  export type WeekStart = 0 | 1 | 6;
6
7
  export interface DateRange {
@@ -48,6 +49,11 @@ export interface DateRangePickerProps {
48
49
  confirmLabel?: string;
49
50
  cancelLabel?: string;
50
51
  maxRange?: number;
52
+ /**
53
+ * Haptic feedback for interactions. Pass false to disable; pass a HapticType
54
+ * to override the default.
55
+ */
56
+ haptic?: HapticType | false;
51
57
  style?: StyleProp<ViewStyle>;
52
58
  /** Outer container style applied to the calendar card. */
53
59
  containerStyle?: StyleProp<ViewStyle>;
@@ -1,7 +1,8 @@
1
1
  import React from 'react';
2
2
  import type { StyleProp, TextStyle, ViewStyle } from 'react-native';
3
- export type DialogVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';
4
- export type DialogActionTone = 'primary' | 'neutral' | 'danger';
3
+ import type { HapticType } from '../../utils/hapticUtils';
4
+ export type DialogVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
5
+ export type DialogActionTone = 'primary' | 'neutral' | 'error';
5
6
  export interface DialogAction {
6
7
  label: string;
7
8
  onPress: () => void;
@@ -34,6 +35,8 @@ export interface DialogProps {
34
35
  actionButtonStyle?: StyleProp<ViewStyle>;
35
36
  /** Style override applied to every action button label text. */
36
37
  actionTextStyle?: StyleProp<TextStyle>;
38
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
39
+ haptic?: HapticType | false;
37
40
  testID?: string;
38
41
  }
39
42
  declare const Dialog: React.FC<DialogProps>;
@@ -19,6 +19,7 @@
19
19
  */
20
20
  import React from 'react';
21
21
  import type { StyleProp, ViewStyle } from 'react-native';
22
+ import type { HapticType } from '../../utils';
22
23
  export type DrawerSide = 'left' | 'right' | 'top' | 'bottom';
23
24
  export interface DrawerProps {
24
25
  /** Controlled visibility. Omit to use internal state. */
@@ -37,6 +38,8 @@ export interface DrawerProps {
37
38
  enableBackdropPress?: boolean;
38
39
  /** Backdrop opacity at fully-open state (0..1). */
39
40
  backdropOpacity?: number;
41
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
42
+ haptic?: HapticType | false;
40
43
  containerStyle?: StyleProp<ViewStyle>;
41
44
  children?: React.ReactNode;
42
45
  accessibilityLabel?: string;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { View } from 'react-native';
3
3
  import type { StyleProp, ViewStyle } from 'react-native';
4
+ import type { HapticType } from '../../utils/hapticUtils';
4
5
  export type FloatingActionButtonSize = 'sm' | 'md' | 'lg';
5
6
  export type FloatingActionButtonTone = 'primary' | 'success' | 'warning' | 'error' | 'neutral';
6
7
  export type FloatingActionButtonPosition = 'bottomRight' | 'bottomLeft' | 'bottomCenter';
@@ -18,6 +19,8 @@ export interface FloatingActionButtonProps {
18
19
  isScrolling?: boolean;
19
20
  accessibilityLabel: string;
20
21
  accessibilityHint?: string;
22
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
23
+ haptic?: HapticType | false;
21
24
  style?: StyleProp<ViewStyle>;
22
25
  containerStyle?: StyleProp<ViewStyle>;
23
26
  labelStyle?: StyleProp<ViewStyle>;
@@ -43,6 +46,8 @@ export interface FloatingActionButtonGroupProps {
43
46
  bottomOffset?: number;
44
47
  size?: FloatingActionButtonSize;
45
48
  accessibilityLabel?: string;
49
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
50
+ haptic?: HapticType | false;
46
51
  containerStyle?: StyleProp<ViewStyle>;
47
52
  secondaryActionStyle?: StyleProp<ViewStyle>;
48
53
  labelPillStyle?: StyleProp<ViewStyle>;
@@ -1,18 +1,29 @@
1
1
  import React from 'react';
2
2
  import { View } from 'react-native';
3
3
  import type { StyleProp, TextStyle, ViewStyle } from 'react-native';
4
+ import type { FieldInputProps } from '../../form/types';
4
5
  export type FormFieldLayout = 'stacked' | 'inline';
5
6
  export interface FormFieldProps {
6
7
  label?: string;
7
8
  helperText?: string;
8
9
  /**
9
10
  * When truthy: helperText is hidden, error is shown in the error colour,
10
- * and the container reports `accessibilityState.invalid = true`.
11
+ * and the container reports the invalid state to assistive tech.
12
+ * Ignored when `name` connects to a <Form> with an element child (the child
13
+ * renders its own error then).
11
14
  */
12
15
  error?: string;
13
16
  /** Appends ' *' (in theme.colors.error) to the label. */
14
17
  required?: boolean;
15
- children: React.ReactNode;
18
+ /**
19
+ * Connect this field to the surrounding `<Form>` by name. With an element
20
+ * child (e.g. `<Input/>`) the field's value/onChangeText/onBlur/error are
21
+ * injected automatically — best for text inputs. For non-text controls
22
+ * (Select, Switch, DatePicker…) use the render-prop form:
23
+ * `<FormField name="x">{(f) => <Select value={f.value} onChange={f.onChange} />}</FormField>`.
24
+ */
25
+ name?: string;
26
+ children: React.ReactNode | ((field: FieldInputProps) => React.ReactNode);
16
27
  /** 'stacked' (default): label above input. 'inline': label left, input right. */
17
28
  layout?: FormFieldLayout;
18
29
  labelStyle?: StyleProp<TextStyle>;
@@ -18,6 +18,7 @@
18
18
  */
19
19
  import React from 'react';
20
20
  import type { ImageSourcePropType, StyleProp, ViewStyle } from 'react-native';
21
+ import type { HapticType } from '../../utils';
21
22
  export interface GalleryImage {
22
23
  source: ImageSourcePropType;
23
24
  caption?: string;
@@ -31,6 +32,11 @@ export interface ImageGalleryProps {
31
32
  enableLightbox?: boolean;
32
33
  enablePinchZoom?: boolean;
33
34
  onIndexChange?: (idx: number) => void;
35
+ /**
36
+ * Haptic feedback for interactions. Pass false to disable; pass a HapticType
37
+ * to override the default.
38
+ */
39
+ haptic?: HapticType | false;
34
40
  /**
35
41
  * When true, renders the component as its authored skeleton placeholder shape.
36
42
  * The placeholder mirrors the real layout's footprint so the UI doesn't reflow
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import { ScrollView } from 'react-native';
3
+ import type { ScrollViewProps } from 'react-native';
4
+ export interface KeyboardAwareScrollViewProps extends ScrollViewProps {
5
+ /** Gap kept between the focused field and the top of the keyboard. Default 24. */
6
+ extraScrollHeight?: number;
7
+ /** Disable the keyboard-following behaviour (still a normal ScrollView). Default false. */
8
+ disabled?: boolean;
9
+ }
10
+ /**
11
+ * A ScrollView that keeps the focused input visible above the keyboard — no
12
+ * native dependency. On keyboard show it pads the content by the keyboard
13
+ * height and scrolls the focused TextInput so its bottom sits `extraScrollHeight`
14
+ * above the keyboard, but only when it would otherwise be covered (so already-
15
+ * visible fields don't jump). The classic measure-and-scroll approach, in pure RN.
16
+ */
17
+ declare const KeyboardAwareScrollView: React.ForwardRefExoticComponent<KeyboardAwareScrollViewProps & React.RefAttributes<ScrollView>>;
18
+ export { KeyboardAwareScrollView };
19
+ export default KeyboardAwareScrollView;
20
+ //# sourceMappingURL=KeyboardAwareScrollView.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { KeyboardAwareScrollView } from './KeyboardAwareScrollView';
2
+ export type { KeyboardAwareScrollViewProps } from './KeyboardAwareScrollView';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import type { StyleProp, ViewStyle } from 'react-native';
3
+ export interface KeyboardToolbarProps {
4
+ /** Label for the dismiss button. Default 'Done'. */
5
+ doneLabel?: string;
6
+ /** Show the prev/next chevrons. Default: true when prev/next handlers resolve. */
7
+ showNavigation?: boolean;
8
+ /** Override the dismiss action. Default: `Keyboard.dismiss()`. */
9
+ onDone?: () => void;
10
+ /** Override "next field". Default: the surrounding `<Form>`'s `focusNext`. */
11
+ onNext?: () => void;
12
+ /** Override "previous field". Default: the surrounding `<Form>`'s `focusPrev`. */
13
+ onPrev?: () => void;
14
+ /** Custom content rendered between the nav chevrons and the Done button. */
15
+ leading?: React.ReactNode;
16
+ style?: StyleProp<ViewStyle>;
17
+ testID?: string;
18
+ }
19
+ /**
20
+ * An accessory bar pinned just above the keyboard — pure RN, no native
21
+ * dependency. Shows a Done (dismiss) button and optional prev/next chevrons
22
+ * that, inside a `<Form>`, walk the registered field order. Render it at the
23
+ * screen root (a `flex: 1` ancestor) so its `bottom: keyboardHeight` offset
24
+ * lands it on top of the keyboard. Renders nothing while the keyboard is hidden.
25
+ */
26
+ declare const KeyboardToolbar: React.FC<KeyboardToolbarProps>;
27
+ export { KeyboardToolbar };
28
+ export default KeyboardToolbar;
29
+ //# sourceMappingURL=KeyboardToolbar.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { KeyboardToolbar } from './KeyboardToolbar';
2
+ export type { KeyboardToolbarProps } from './KeyboardToolbar';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { GestureResponderEvent, StyleProp, TextStyle, View as RNView, ViewStyle } from 'react-native';
3
+ import type { HapticType } from '../../utils/hapticUtils';
3
4
  import type { SwipeableAction } from '../Swipeable';
4
5
  export type ListItemSize = 'sm' | 'md' | 'lg';
5
6
  export interface ListItemProps {
@@ -15,6 +16,8 @@ export interface ListItemProps {
15
16
  left?: React.ReactNode;
16
17
  right?: React.ReactNode;
17
18
  onPress?: (event: GestureResponderEvent) => void;
19
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
20
+ haptic?: HapticType | false;
18
21
  selected?: boolean;
19
22
  disabled?: boolean;
20
23
  size?: ListItemSize;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { View } from 'react-native';
3
3
  import type { StyleProp, View as RNView, ViewStyle } from 'react-native';
4
+ import type { HapticType } from '../../utils/hapticUtils';
4
5
  export type ModalPresentation = 'centered' | 'bottom' | 'fullScreen';
5
6
  export interface ModalProps {
6
7
  visible: boolean;
@@ -21,6 +22,11 @@ export interface ModalProps {
21
22
  * Opt-in: when undefined, focus behaviour is unchanged.
22
23
  */
23
24
  restoreFocusRef?: React.RefObject<RNView | null>;
25
+ /**
26
+ * Haptic feedback for interactions. Pass false to disable; pass a HapticType
27
+ * to override the default.
28
+ */
29
+ haptic?: HapticType | false;
24
30
  testID?: string;
25
31
  }
26
32
  declare const Modal: React.ForwardRefExoticComponent<ModalProps & React.RefAttributes<View>>;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { StyleProp, TextInputProps, TextStyle, ViewStyle } from 'react-native';
3
+ import type { HapticType } from '../../utils';
3
4
  export type NumberInputSize = 'sm' | 'md' | 'lg';
4
5
  export type NumberInputVariant = 'inline' | 'horizontal' | 'stacked';
5
6
  export interface NumberInputRef {
@@ -8,8 +9,9 @@ export interface NumberInputRef {
8
9
  clear: () => void;
9
10
  }
10
11
  export interface NumberInputProps {
11
- value: number;
12
- onChange: (value: number) => void;
12
+ value?: number;
13
+ defaultValue?: number;
14
+ onChange?: (value: number) => void;
13
15
  min?: number;
14
16
  max?: number;
15
17
  step?: number;
@@ -22,6 +24,8 @@ export interface NumberInputProps {
22
24
  size?: NumberInputSize;
23
25
  variant?: NumberInputVariant;
24
26
  unit?: string;
27
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
28
+ haptic?: HapticType | false;
25
29
  accessibilityLabel?: string;
26
30
  style?: StyleProp<ViewStyle>;
27
31
  containerStyle?: StyleProp<ViewStyle>;