@webority-technologies/mobile 0.0.23 → 0.0.25

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 (171) hide show
  1. package/lib/commonjs/components/Accordion/Accordion.js +5 -5
  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/Autocomplete/Autocomplete.js +204 -0
  6. package/lib/commonjs/components/Autocomplete/index.js +13 -0
  7. package/lib/commonjs/components/Banner/Banner.js +12 -2
  8. package/lib/commonjs/components/BottomNavigation/BottomNavigation.js +1 -1
  9. package/lib/commonjs/components/Card/Card.js +3 -3
  10. package/lib/commonjs/components/Checkbox/Checkbox.js +3 -2
  11. package/lib/commonjs/components/Chip/Chip.js +4 -2
  12. package/lib/commonjs/components/Confetti/Confetti.js +170 -0
  13. package/lib/commonjs/components/Confetti/index.js +13 -0
  14. package/lib/commonjs/components/DatePicker/DatePicker.js +23 -18
  15. package/lib/commonjs/components/DateRangePicker/DateRangePicker.js +11 -9
  16. package/lib/commonjs/components/Dialog/Dialog.js +4 -2
  17. package/lib/commonjs/components/Drawer/Drawer.js +4 -2
  18. package/lib/commonjs/components/FieldBase/FieldBase.js +0 -2
  19. package/lib/commonjs/components/FloatingActionButton/FloatingActionButton.js +10 -8
  20. package/lib/commonjs/components/IconButton/IconButton.js +176 -0
  21. package/lib/commonjs/components/IconButton/index.js +13 -0
  22. package/lib/commonjs/components/ImageGallery/ImageGallery.js +17 -15
  23. package/lib/commonjs/components/ListItem/ListItem.js +4 -3
  24. package/lib/commonjs/components/Modal/Modal.js +4 -4
  25. package/lib/commonjs/components/NumberInput/NumberInput.js +7 -5
  26. package/lib/commonjs/components/OTPInput/OTPInput.js +7 -7
  27. package/lib/commonjs/components/ProgressBar/ProgressBar.js +32 -4
  28. package/lib/commonjs/components/Radio/Radio.js +2 -3
  29. package/lib/commonjs/components/Rating/Rating.js +4 -3
  30. package/lib/commonjs/components/SearchBar/SearchBar.js +7 -4
  31. package/lib/commonjs/components/SegmentedControl/SegmentedControl.js +4 -3
  32. package/lib/commonjs/components/Select/Select.js +7 -4
  33. package/lib/commonjs/components/SlideToConfirm/SlideToConfirm.js +224 -0
  34. package/lib/commonjs/components/SlideToConfirm/index.js +13 -0
  35. package/lib/commonjs/components/Slider/Slider.js +228 -228
  36. package/lib/commonjs/components/Stepper/Stepper.js +6 -5
  37. package/lib/commonjs/components/Swipeable/Swipeable.js +8 -9
  38. package/lib/commonjs/components/Tabs/Tabs.js +4 -3
  39. package/lib/commonjs/components/TimePicker/TimePicker.js +14 -9
  40. package/lib/commonjs/components/index.js +149 -114
  41. package/lib/commonjs/hooks/usePressAnimation.js +0 -1
  42. package/lib/commonjs/utils/hapticUtils.js +11 -1
  43. package/lib/commonjs/utils/index.js +6 -0
  44. package/lib/module/components/Accordion/Accordion.js +6 -6
  45. package/lib/module/components/AnimatePresence/AnimatePresence.js +63 -0
  46. package/lib/module/components/AnimatePresence/index.js +4 -0
  47. package/lib/module/components/AppBar/AppBar.js +10 -7
  48. package/lib/module/components/Autocomplete/Autocomplete.js +199 -0
  49. package/lib/module/components/Autocomplete/index.js +4 -0
  50. package/lib/module/components/Banner/Banner.js +12 -2
  51. package/lib/module/components/BottomNavigation/BottomNavigation.js +1 -1
  52. package/lib/module/components/Card/Card.js +4 -4
  53. package/lib/module/components/Checkbox/Checkbox.js +4 -3
  54. package/lib/module/components/Chip/Chip.js +5 -3
  55. package/lib/module/components/Confetti/Confetti.js +166 -0
  56. package/lib/module/components/Confetti/index.js +4 -0
  57. package/lib/module/components/DatePicker/DatePicker.js +24 -19
  58. package/lib/module/components/DateRangePicker/DateRangePicker.js +12 -10
  59. package/lib/module/components/Dialog/Dialog.js +5 -3
  60. package/lib/module/components/Drawer/Drawer.js +5 -3
  61. package/lib/module/components/FieldBase/FieldBase.js +0 -2
  62. package/lib/module/components/FloatingActionButton/FloatingActionButton.js +11 -9
  63. package/lib/module/components/IconButton/IconButton.js +172 -0
  64. package/lib/module/components/IconButton/index.js +4 -0
  65. package/lib/module/components/ImageGallery/ImageGallery.js +18 -16
  66. package/lib/module/components/ListItem/ListItem.js +5 -4
  67. package/lib/module/components/Modal/Modal.js +5 -5
  68. package/lib/module/components/NumberInput/NumberInput.js +8 -6
  69. package/lib/module/components/OTPInput/OTPInput.js +8 -8
  70. package/lib/module/components/ProgressBar/ProgressBar.js +33 -5
  71. package/lib/module/components/Radio/Radio.js +3 -4
  72. package/lib/module/components/Rating/Rating.js +5 -4
  73. package/lib/module/components/SearchBar/SearchBar.js +8 -5
  74. package/lib/module/components/SegmentedControl/SegmentedControl.js +5 -4
  75. package/lib/module/components/Select/Select.js +8 -5
  76. package/lib/module/components/SlideToConfirm/SlideToConfirm.js +220 -0
  77. package/lib/module/components/SlideToConfirm/index.js +4 -0
  78. package/lib/module/components/Slider/Slider.js +231 -231
  79. package/lib/module/components/Stepper/Stepper.js +7 -6
  80. package/lib/module/components/Swipeable/Swipeable.js +9 -10
  81. package/lib/module/components/Tabs/Tabs.js +5 -4
  82. package/lib/module/components/TimePicker/TimePicker.js +15 -10
  83. package/lib/module/components/index.js +5 -0
  84. package/lib/module/hooks/usePressAnimation.js +0 -1
  85. package/lib/module/utils/hapticUtils.js +9 -0
  86. package/lib/module/utils/index.js +1 -1
  87. package/lib/typescript/commonjs/components/Accordion/Accordion.d.ts +3 -0
  88. package/lib/typescript/commonjs/components/AnimatePresence/AnimatePresence.d.ts +30 -0
  89. package/lib/typescript/commonjs/components/AnimatePresence/index.d.ts +3 -0
  90. package/lib/typescript/commonjs/components/AppBar/AppBar.d.ts +6 -0
  91. package/lib/typescript/commonjs/components/Autocomplete/Autocomplete.d.ts +53 -0
  92. package/lib/typescript/commonjs/components/Autocomplete/index.d.ts +3 -0
  93. package/lib/typescript/commonjs/components/Banner/Banner.d.ts +3 -0
  94. package/lib/typescript/commonjs/components/Card/Card.d.ts +3 -0
  95. package/lib/typescript/commonjs/components/Checkbox/Checkbox.d.ts +1 -0
  96. package/lib/typescript/commonjs/components/Chip/Chip.d.ts +3 -0
  97. package/lib/typescript/commonjs/components/Confetti/Confetti.d.ts +41 -0
  98. package/lib/typescript/commonjs/components/Confetti/index.d.ts +3 -0
  99. package/lib/typescript/commonjs/components/DatePicker/DatePicker.d.ts +3 -0
  100. package/lib/typescript/commonjs/components/DateRangePicker/DateRangePicker.d.ts +6 -0
  101. package/lib/typescript/commonjs/components/Dialog/Dialog.d.ts +3 -0
  102. package/lib/typescript/commonjs/components/Drawer/Drawer.d.ts +3 -0
  103. package/lib/typescript/commonjs/components/FloatingActionButton/FloatingActionButton.d.ts +5 -0
  104. package/lib/typescript/commonjs/components/IconButton/IconButton.d.ts +34 -0
  105. package/lib/typescript/commonjs/components/IconButton/index.d.ts +3 -0
  106. package/lib/typescript/commonjs/components/ImageGallery/ImageGallery.d.ts +6 -0
  107. package/lib/typescript/commonjs/components/ListItem/ListItem.d.ts +3 -0
  108. package/lib/typescript/commonjs/components/Modal/Modal.d.ts +6 -0
  109. package/lib/typescript/commonjs/components/NumberInput/NumberInput.d.ts +3 -0
  110. package/lib/typescript/commonjs/components/OTPInput/OTPInput.d.ts +6 -0
  111. package/lib/typescript/commonjs/components/ProgressBar/ProgressBar.d.ts +12 -0
  112. package/lib/typescript/commonjs/components/ProgressBar/index.d.ts +1 -1
  113. package/lib/typescript/commonjs/components/Rating/Rating.d.ts +6 -0
  114. package/lib/typescript/commonjs/components/SearchBar/SearchBar.d.ts +3 -0
  115. package/lib/typescript/commonjs/components/SegmentedControl/SegmentedControl.d.ts +3 -0
  116. package/lib/typescript/commonjs/components/Select/Select.d.ts +6 -0
  117. package/lib/typescript/commonjs/components/SlideToConfirm/SlideToConfirm.d.ts +34 -0
  118. package/lib/typescript/commonjs/components/SlideToConfirm/index.d.ts +3 -0
  119. package/lib/typescript/commonjs/components/Slider/Slider.d.ts +3 -0
  120. package/lib/typescript/commonjs/components/Stepper/Stepper.d.ts +6 -0
  121. package/lib/typescript/commonjs/components/Swipeable/Swipeable.d.ts +3 -0
  122. package/lib/typescript/commonjs/components/Tabs/Tabs.d.ts +3 -0
  123. package/lib/typescript/commonjs/components/TimePicker/TimePicker.d.ts +3 -0
  124. package/lib/typescript/commonjs/components/index.d.ts +11 -1
  125. package/lib/typescript/commonjs/hooks/usePressAnimation.d.ts +1 -2
  126. package/lib/typescript/commonjs/theme/types.d.ts +2 -67
  127. package/lib/typescript/commonjs/utils/hapticUtils.d.ts +8 -0
  128. package/lib/typescript/commonjs/utils/index.d.ts +1 -1
  129. package/lib/typescript/module/components/Accordion/Accordion.d.ts +3 -0
  130. package/lib/typescript/module/components/AnimatePresence/AnimatePresence.d.ts +30 -0
  131. package/lib/typescript/module/components/AnimatePresence/index.d.ts +3 -0
  132. package/lib/typescript/module/components/AppBar/AppBar.d.ts +6 -0
  133. package/lib/typescript/module/components/Autocomplete/Autocomplete.d.ts +53 -0
  134. package/lib/typescript/module/components/Autocomplete/index.d.ts +3 -0
  135. package/lib/typescript/module/components/Banner/Banner.d.ts +3 -0
  136. package/lib/typescript/module/components/Card/Card.d.ts +3 -0
  137. package/lib/typescript/module/components/Checkbox/Checkbox.d.ts +1 -0
  138. package/lib/typescript/module/components/Chip/Chip.d.ts +3 -0
  139. package/lib/typescript/module/components/Confetti/Confetti.d.ts +41 -0
  140. package/lib/typescript/module/components/Confetti/index.d.ts +3 -0
  141. package/lib/typescript/module/components/DatePicker/DatePicker.d.ts +3 -0
  142. package/lib/typescript/module/components/DateRangePicker/DateRangePicker.d.ts +6 -0
  143. package/lib/typescript/module/components/Dialog/Dialog.d.ts +3 -0
  144. package/lib/typescript/module/components/Drawer/Drawer.d.ts +3 -0
  145. package/lib/typescript/module/components/FloatingActionButton/FloatingActionButton.d.ts +5 -0
  146. package/lib/typescript/module/components/IconButton/IconButton.d.ts +34 -0
  147. package/lib/typescript/module/components/IconButton/index.d.ts +3 -0
  148. package/lib/typescript/module/components/ImageGallery/ImageGallery.d.ts +6 -0
  149. package/lib/typescript/module/components/ListItem/ListItem.d.ts +3 -0
  150. package/lib/typescript/module/components/Modal/Modal.d.ts +6 -0
  151. package/lib/typescript/module/components/NumberInput/NumberInput.d.ts +3 -0
  152. package/lib/typescript/module/components/OTPInput/OTPInput.d.ts +6 -0
  153. package/lib/typescript/module/components/ProgressBar/ProgressBar.d.ts +12 -0
  154. package/lib/typescript/module/components/ProgressBar/index.d.ts +1 -1
  155. package/lib/typescript/module/components/Rating/Rating.d.ts +6 -0
  156. package/lib/typescript/module/components/SearchBar/SearchBar.d.ts +3 -0
  157. package/lib/typescript/module/components/SegmentedControl/SegmentedControl.d.ts +3 -0
  158. package/lib/typescript/module/components/Select/Select.d.ts +6 -0
  159. package/lib/typescript/module/components/SlideToConfirm/SlideToConfirm.d.ts +34 -0
  160. package/lib/typescript/module/components/SlideToConfirm/index.d.ts +3 -0
  161. package/lib/typescript/module/components/Slider/Slider.d.ts +3 -0
  162. package/lib/typescript/module/components/Stepper/Stepper.d.ts +6 -0
  163. package/lib/typescript/module/components/Swipeable/Swipeable.d.ts +3 -0
  164. package/lib/typescript/module/components/Tabs/Tabs.d.ts +3 -0
  165. package/lib/typescript/module/components/TimePicker/TimePicker.d.ts +3 -0
  166. package/lib/typescript/module/components/index.d.ts +11 -1
  167. package/lib/typescript/module/hooks/usePressAnimation.d.ts +1 -2
  168. package/lib/typescript/module/theme/types.d.ts +2 -67
  169. package/lib/typescript/module/utils/hapticUtils.d.ts +8 -0
  170. package/lib/typescript/module/utils/index.d.ts +1 -1
  171. package/package.json +1 -1
@@ -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>>;
@@ -0,0 +1,53 @@
1
+ import React from 'react';
2
+ import type { StyleProp, TextStyle, ViewStyle } from 'react-native';
3
+ import type { HapticType } from '../../utils';
4
+ import type { InputSize, InputVariant } from '../Input';
5
+ export interface AutocompleteProps<T = string> {
6
+ /** Candidate options to filter. */
7
+ options: ReadonlyArray<T>;
8
+ /** Controlled input text. */
9
+ value?: string;
10
+ /** Uncontrolled initial text. */
11
+ defaultValue?: string;
12
+ onChangeText?: (text: string) => void;
13
+ /** Fired when a suggestion is chosen. */
14
+ onSelect: (option: T) => void;
15
+ /** Read a display label from an option. Defaults to the option itself for strings. */
16
+ getOptionLabel?: (option: T) => string;
17
+ /** Stable React key per option. Defaults to label + index. */
18
+ getOptionKey?: (option: T) => string;
19
+ /** Custom match predicate. Defaults to a case-insensitive substring match on the label. */
20
+ filter?: (option: T, query: string) => boolean;
21
+ /** Minimum characters before suggestions appear. Default 1. */
22
+ minChars?: number;
23
+ /** Cap the number of suggestions shown. Default 8. */
24
+ maxResults?: number;
25
+ /** Text shown when nothing matches. Default "No matches". */
26
+ emptyText?: string;
27
+ /** Show a loading spinner in the dropdown — e.g. while fetching remote results. */
28
+ loading?: boolean;
29
+ /** `'client'` filters `options` locally; `'none'` shows them as-is (for server-side search). Default `'client'`. */
30
+ filterMode?: 'client' | 'none';
31
+ /** Text beside the loading spinner. Default "Searching…". */
32
+ loadingText?: string;
33
+ placeholder?: string;
34
+ label?: string;
35
+ error?: string;
36
+ helperText?: string;
37
+ disabled?: boolean;
38
+ size?: InputSize;
39
+ variant?: InputVariant;
40
+ /** Haptic on select. Default `'selection'`. */
41
+ haptic?: HapticType | false;
42
+ style?: StyleProp<ViewStyle>;
43
+ listStyle?: StyleProp<ViewStyle>;
44
+ optionTextStyle?: StyleProp<TextStyle>;
45
+ testID?: string;
46
+ }
47
+ declare function Autocomplete<T = string>(props: AutocompleteProps<T>): React.JSX.Element;
48
+ declare namespace Autocomplete {
49
+ var displayName: string;
50
+ }
51
+ export { Autocomplete };
52
+ export default Autocomplete;
53
+ //# sourceMappingURL=Autocomplete.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { Autocomplete } from './Autocomplete';
2
+ export type { AutocompleteProps } from './Autocomplete';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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
  /**
@@ -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. */
@@ -14,6 +14,7 @@ export interface CheckboxProps extends Omit<PressableProps, 'style' | 'children'
14
14
  size?: CheckboxSize;
15
15
  tone?: CheckboxTone;
16
16
  accessibilityLabel?: string;
17
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
17
18
  haptic?: HapticType | false;
18
19
  style?: StyleProp<ViewStyle>;
19
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). */
@@ -0,0 +1,41 @@
1
+ import React from 'react';
2
+ import type { StyleProp, ViewStyle } from 'react-native';
3
+ export type ConfettiMode = 'rain' | 'cannon';
4
+ export interface ConfettiOrigin {
5
+ x: number;
6
+ y: number;
7
+ }
8
+ export interface ConfettiHandle {
9
+ /** Fire a burst. Re-seeds the pieces so each call looks different. */
10
+ start: () => void;
11
+ /** Stop and clear immediately. */
12
+ stop: () => void;
13
+ }
14
+ export interface ConfettiProps {
15
+ /** Number of pieces. Default 80. */
16
+ count?: number;
17
+ /** Piece colours. Defaults to a vibrant set drawn from the theme palette. */
18
+ colors?: string[];
19
+ /** `'rain'` falls from the top edge; `'cannon'` bursts up/out from `origin`. Default `'rain'`. */
20
+ mode?: ConfettiMode;
21
+ /** Burst origin for `'cannon'` (defaults to the bottom-centre of the container). */
22
+ origin?: ConfettiOrigin;
23
+ /** Full animation duration in ms. Default 2800. */
24
+ duration?: number;
25
+ /** Fade pieces out near the end. Default true. */
26
+ fadeOut?: boolean;
27
+ /** Fire automatically on mount. Default false. */
28
+ autoStart?: boolean;
29
+ /** Loop continuously (ongoing celebration). Default false. */
30
+ recycle?: boolean;
31
+ /** Base piece size in px (varied ±40% per piece). Default 10. */
32
+ size?: number;
33
+ /** Called once when a non-recycling burst finishes (or immediately if reduce-motion is on). */
34
+ onComplete?: () => void;
35
+ style?: StyleProp<ViewStyle>;
36
+ testID?: string;
37
+ }
38
+ declare const Confetti: React.ForwardRefExoticComponent<ConfettiProps & React.RefAttributes<ConfettiHandle>>;
39
+ export { Confetti };
40
+ export default Confetti;
41
+ //# sourceMappingURL=Confetti.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { Confetti } from './Confetti';
2
+ export type { ConfettiProps, ConfettiHandle, ConfettiMode, ConfettiOrigin } from './Confetti';
3
+ //# sourceMappingURL=index.d.ts.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';
3
4
  import type { PickerTriggerSize, PickerTriggerVariant } from '../PickerTrigger';
4
5
  export type DatePickerMode = 'modal' | 'inline';
5
6
  export type WeekStart = 0 | 1 | 6;
@@ -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,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { StyleProp, TextStyle, ViewStyle } from 'react-native';
3
+ import type { HapticType } from '../../utils/hapticUtils';
3
4
  export type DialogVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
4
5
  export type DialogActionTone = 'primary' | 'neutral' | 'error';
5
6
  export interface DialogAction {
@@ -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>;
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ import type { GestureResponderEvent, StyleProp, View as RNView, ViewStyle } from 'react-native';
3
+ import type { HapticType } from '../../utils';
4
+ export type IconButtonTone = 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'neutral';
5
+ export type IconButtonVariant = 'solid' | 'soft' | 'outline' | 'ghost';
6
+ export type IconButtonSize = 'sm' | 'md' | 'lg';
7
+ export type IconButtonShape = 'circle' | 'rounded';
8
+ interface IconRenderProps {
9
+ color: string;
10
+ size: number;
11
+ }
12
+ export interface IconButtonProps {
13
+ /** Icon node, or a render fn `({ color, size }) => node` so IconButton can theme + size it. */
14
+ icon: React.ReactNode | ((props: IconRenderProps) => React.ReactNode);
15
+ onPress?: (e: GestureResponderEvent) => void;
16
+ /** Required — icon-only controls need an accessible name. */
17
+ accessibilityLabel: string;
18
+ tone?: IconButtonTone;
19
+ variant?: IconButtonVariant;
20
+ size?: IconButtonSize;
21
+ shape?: IconButtonShape;
22
+ /** Selected/active — renders filled (solid) regardless of `variant` (e.g. an active nav tile). */
23
+ active?: boolean;
24
+ disabled?: boolean;
25
+ loading?: boolean;
26
+ /** Press haptic. Default `'selection'`. */
27
+ haptic?: HapticType | false;
28
+ style?: StyleProp<ViewStyle>;
29
+ testID?: string;
30
+ }
31
+ declare const IconButton: React.ForwardRefExoticComponent<IconButtonProps & React.RefAttributes<RNView>>;
32
+ export { IconButton };
33
+ export default IconButton;
34
+ //# sourceMappingURL=IconButton.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { IconButton } from './IconButton';
2
+ export type { IconButtonProps, IconButtonTone, IconButtonVariant, IconButtonSize, IconButtonShape } from './IconButton';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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
@@ -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 {
@@ -23,6 +24,8 @@ export interface NumberInputProps {
23
24
  size?: NumberInputSize;
24
25
  variant?: NumberInputVariant;
25
26
  unit?: string;
27
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
28
+ haptic?: HapticType | false;
26
29
  accessibilityLabel?: string;
27
30
  style?: StyleProp<ViewStyle>;
28
31
  containerStyle?: StyleProp<ViewStyle>;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { StyleProp, TextStyle, ViewStyle } from 'react-native';
3
+ import type { HapticType } from '../../utils';
3
4
  export type OTPInputSize = 'sm' | 'md' | 'lg';
4
5
  export interface OTPInputRef {
5
6
  focus: () => void;
@@ -18,6 +19,11 @@ export interface OTPInputProps {
18
19
  error?: boolean | string;
19
20
  size?: OTPInputSize;
20
21
  secure?: boolean;
22
+ /**
23
+ * Haptic feedback for interactions. Pass false to disable; pass a HapticType
24
+ * to override the default.
25
+ */
26
+ haptic?: HapticType | false;
21
27
  accessibilityLabel?: string;
22
28
  style?: StyleProp<ViewStyle>;
23
29
  cellStyle?: StyleProp<ViewStyle>;
@@ -1,7 +1,15 @@
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 { GradientDefinition } from '../../theme/types';
4
5
  export type ProgressBarTone = 'primary' | 'success' | 'warning' | 'error';
6
+ export interface ProgressBarSegment {
7
+ /** Fraction of the full track (0–1). */
8
+ value: number;
9
+ /** Explicit colour; falls back to `tone`. */
10
+ color?: string;
11
+ tone?: ProgressBarTone;
12
+ }
5
13
  export interface ProgressBarProps {
6
14
  progress?: number;
7
15
  indeterminate?: boolean;
@@ -10,6 +18,10 @@ export interface ProgressBarProps {
10
18
  tone?: ProgressBarTone;
11
19
  trackColor?: string;
12
20
  barColor?: string;
21
+ /** Gradient fill for the determinate bar — a `GradientDefinition` or a theme gradient token name. */
22
+ gradient?: GradientDefinition | string;
23
+ /** Render a multi-colour breakdown bar (usage split) instead of a single progress fill. */
24
+ segments?: ProgressBarSegment[];
13
25
  animated?: boolean;
14
26
  style?: StyleProp<ViewStyle>;
15
27
  containerStyle?: StyleProp<ViewStyle>;
@@ -1,3 +1,3 @@
1
1
  export { ProgressBar, default } from './ProgressBar';
2
- export type { ProgressBarProps, ProgressBarTone } from './ProgressBar';
2
+ export type { ProgressBarProps, ProgressBarTone, ProgressBarSegment } from './ProgressBar';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -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 RatingTone = 'primary' | 'warning';
4
5
  export type RatingSize = 'sm' | 'md' | 'lg' | number;
5
6
  export interface RatingProps {
@@ -17,6 +18,11 @@ export interface RatingProps {
17
18
  * when data arrives. Use this while the data driving the component is being fetched.
18
19
  */
19
20
  loading?: boolean;
21
+ /**
22
+ * Haptic feedback for interactions. Pass false to disable; pass a HapticType
23
+ * to override the default.
24
+ */
25
+ haptic?: HapticType | false;
20
26
  accessibilityLabel?: string;
21
27
  style?: StyleProp<ViewStyle>;
22
28
  containerStyle?: StyleProp<ViewStyle>;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { TextInput } from 'react-native';
3
3
  import type { StyleProp, TextInputProps, ViewStyle } from 'react-native';
4
+ import type { HapticType } from '../../utils/hapticUtils';
4
5
  export type SearchBarSize = 'sm' | 'md' | 'lg';
5
6
  export type SearchBarVariant = 'filled' | 'outlined';
6
7
  export interface SearchBarProps extends Omit<TextInputProps, 'style' | 'value' | 'onChangeText'> {
@@ -19,6 +20,8 @@ export interface SearchBarProps extends Omit<TextInputProps, 'style' | 'value' |
19
20
  size?: SearchBarSize;
20
21
  variant?: SearchBarVariant;
21
22
  cancelLabel?: string;
23
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
24
+ haptic?: HapticType | false;
22
25
  style?: StyleProp<ViewStyle>;
23
26
  accessibilityLabel?: string;
24
27
  testID?: string;
@@ -8,6 +8,7 @@
8
8
  import React from 'react';
9
9
  import { View } from 'react-native';
10
10
  import type { StyleProp, TextStyle, ViewStyle } from 'react-native';
11
+ import type { HapticType } from '../../utils';
11
12
  export type SegmentedControlSize = 'sm' | 'md';
12
13
  export type SegmentedControlTone = 'primary' | 'neutral';
13
14
  export type SegmentValue = string | number;
@@ -25,6 +26,8 @@ export interface SegmentedControlProps {
25
26
  fullWidth?: boolean;
26
27
  disabled?: boolean;
27
28
  tone?: SegmentedControlTone;
29
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
30
+ haptic?: HapticType | false;
28
31
  accessibilityLabel?: string;
29
32
  style?: StyleProp<ViewStyle>;
30
33
  containerStyle?: StyleProp<ViewStyle>;
@@ -8,6 +8,7 @@
8
8
  import React from 'react';
9
9
  import { View } from 'react-native';
10
10
  import type { StyleProp, TextStyle, ViewStyle } from 'react-native';
11
+ import type { HapticType } from '../../utils';
11
12
  export type SelectSize = 'sm' | 'md' | 'lg';
12
13
  export type SelectValue = string | number;
13
14
  export interface SelectOption {
@@ -38,6 +39,11 @@ interface BaseSelectProps<T = SelectOption> {
38
39
  getOptionIcon?: (option: T) => React.ReactNode;
39
40
  placeholder?: string;
40
41
  searchable?: boolean;
42
+ /**
43
+ * Haptic feedback for interactions. Pass false to disable; pass a HapticType
44
+ * to override the default.
45
+ */
46
+ haptic?: HapticType | false;
41
47
  label?: string;
42
48
  error?: string;
43
49
  disabled?: boolean;
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+ import type { StyleProp, TextStyle, ViewStyle } from 'react-native';
4
+ import type { HapticType } from '../../utils';
5
+ export type SlideToConfirmTone = 'primary' | 'success' | 'warning' | 'error';
6
+ export type SlideToConfirmSize = 'sm' | 'md' | 'lg';
7
+ export interface SlideToConfirmProps {
8
+ /** Fired once the handle is dragged past the threshold. */
9
+ onConfirm: () => void;
10
+ /** Resting label (centred). Default "Slide to confirm". */
11
+ label?: string;
12
+ /** Label shown after confirming. Default "Confirmed". */
13
+ confirmedLabel?: string;
14
+ tone?: SlideToConfirmTone;
15
+ size?: SlideToConfirmSize;
16
+ disabled?: boolean;
17
+ /** Fraction of the track (0–1) the handle must cross to confirm. Default 0.9. */
18
+ threshold?: number;
19
+ /** Auto-reset this many ms after confirm, or `false` to stay confirmed. Default `false`. */
20
+ resetAfter?: number | false;
21
+ /** Haptic on confirm. Pass `false` to disable or a `HapticType` to override. Default `'notificationSuccess'`. */
22
+ haptic?: HapticType | false;
23
+ /** Handle glyph. Defaults to a right-chevron. */
24
+ icon?: React.ReactNode;
25
+ style?: StyleProp<ViewStyle>;
26
+ trackStyle?: StyleProp<ViewStyle>;
27
+ handleStyle?: StyleProp<ViewStyle>;
28
+ labelStyle?: StyleProp<TextStyle>;
29
+ testID?: string;
30
+ }
31
+ declare const SlideToConfirm: React.ForwardRefExoticComponent<SlideToConfirmProps & React.RefAttributes<View>>;
32
+ export { SlideToConfirm };
33
+ export default SlideToConfirm;
34
+ //# sourceMappingURL=SlideToConfirm.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { SlideToConfirm } from './SlideToConfirm';
2
+ export type { SlideToConfirmProps, SlideToConfirmTone, SlideToConfirmSize } from './SlideToConfirm';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,7 @@
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 { HapticType } from '../../utils';
4
5
  export type SliderTone = 'primary' | 'success' | 'warning' | 'error';
5
6
  export type SliderSize = 'sm' | 'md' | 'lg';
6
7
  interface SliderCommonProps {
@@ -13,6 +14,8 @@ interface SliderCommonProps {
13
14
  showLabel?: boolean;
14
15
  formatLabel?: (value: number) => string;
15
16
  accessibilityLabel?: string;
17
+ /** Haptic feedback for drag/step/tap. Pass false to disable; pass a HapticType to override. */
18
+ haptic?: HapticType | false;
16
19
  style?: StyleProp<ViewStyle>;
17
20
  containerStyle?: StyleProp<ViewStyle>;
18
21
  trackStyle?: 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 StepperVariant = 'horizontal' | 'vertical';
4
5
  export type StepperTone = 'primary' | 'success';
5
6
  export interface StepperStep {
@@ -33,6 +34,11 @@ export interface StepperProps {
33
34
  circleStyle?: StyleProp<ViewStyle>;
34
35
  labelStyle?: StyleProp<TextStyle>;
35
36
  connectorStyle?: StyleProp<ViewStyle>;
37
+ /**
38
+ * Haptic feedback for interactions. Pass false to disable; pass a HapticType
39
+ * to override the default.
40
+ */
41
+ haptic?: HapticType | false;
36
42
  testID?: string;
37
43
  }
38
44
  declare const Stepper: React.ForwardRefExoticComponent<StepperProps & React.RefAttributes<RNView>> & {