@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
@@ -22,7 +22,7 @@ import { Dimensions, Pressable, StyleSheet, Text, View } from 'react-native';
22
22
  import { Gesture, GestureDetector } from 'react-native-gesture-handler';
23
23
  import Animated, { cancelAnimation, runOnJS, useAnimatedStyle, useSharedValue, withSpring } from 'react-native-reanimated';
24
24
  import { useTheme } from "../../theme/index.js";
25
- import { triggerHaptic } from "../../utils/index.js";
25
+ import { resolveHaptic, triggerHaptic } from "../../utils/index.js";
26
26
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
27
27
  const SPRING_CONFIG = {
28
28
  damping: 22,
@@ -57,6 +57,7 @@ const Swipeable = props => {
57
57
  onSwipeOpen,
58
58
  onSwipeClose,
59
59
  disabled = false,
60
+ haptic,
60
61
  containerStyle,
61
62
  contentStyle: contentSlotStyle,
62
63
  actionStyle,
@@ -75,9 +76,6 @@ const Swipeable = props => {
75
76
  stiffness: swipeTheme?.springStiffness ?? SPRING_CONFIG.stiffness,
76
77
  mass: swipeTheme?.springMass ?? SPRING_CONFIG.mass
77
78
  };
78
- const fullSwipeHapticEnabled = swipeTheme?.fullSwipeHaptic ?? true;
79
- const actionPressHapticEnabled = swipeTheme?.actionPressHaptic ?? true;
80
- const a11yActionHapticEnabled = swipeTheme?.a11yActionHaptic ?? true;
81
79
  const styles = useMemo(() => buildStyles(theme), [theme]);
82
80
  const hasLeft = !!leftActions && leftActions.length > 0;
83
81
  const hasRight = !!rightActions && rightActions.length > 0;
@@ -117,22 +115,23 @@ const Swipeable = props => {
117
115
  const list = side === 'left' ? leftActions : rightActions;
118
116
  const first = list?.[0];
119
117
  if (!first) return;
120
- if (fullSwipeHapticEnabled) triggerHaptic('notificationSuccess');
118
+ if (haptic !== false) triggerHaptic('notificationSuccess');
121
119
  first.onPress();
122
120
  // After the off-screen slide, snap back to 0 silently.
123
121
  translateX.value = withSpring(0, springConfig);
124
122
  openSideRef.current = null;
125
123
  onSwipeClose?.();
126
- }, [leftActions, rightActions, translateX, onSwipeClose, springConfig, fullSwipeHapticEnabled]);
124
+ }, [leftActions, rightActions, translateX, onSwipeClose, springConfig, haptic]);
127
125
  const close = useCallback(() => {
128
126
  translateX.value = withSpring(0, springConfig);
129
127
  notifyClose();
130
128
  }, [translateX, notifyClose, springConfig]);
131
129
  const handleActionPress = useCallback(action => {
132
- if (actionPressHapticEnabled) triggerHaptic('selection');
130
+ const h = resolveHaptic(haptic, 'selection');
131
+ if (h) triggerHaptic(h);
133
132
  action.onPress();
134
133
  close();
135
- }, [close, actionPressHapticEnabled]);
134
+ }, [close, haptic]);
136
135
 
137
136
  // ───────── Pan gesture (UI thread) ─────────
138
137
  const panGesture = useMemo(() => {
@@ -238,10 +237,10 @@ const Swipeable = props => {
238
237
  const all = [...(leftActions ?? []), ...(rightActions ?? [])];
239
238
  const match = all.find(a => a.key === name);
240
239
  if (match) {
241
- if (a11yActionHapticEnabled) triggerHaptic('selection');
240
+ if (haptic !== false) triggerHaptic('selection');
242
241
  match.onPress();
243
242
  }
244
- }, [leftActions, rightActions, a11yActionHapticEnabled]);
243
+ }, [leftActions, rightActions, haptic]);
245
244
 
246
245
  // ───────── Render ─────────
247
246
  // No actions configured → render children directly; zero gesture overhead.
@@ -14,7 +14,7 @@
14
14
  import React, { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';
15
15
  import { Animated, Pressable, ScrollView, StyleSheet, Text, View } from 'react-native';
16
16
  import { useTheme, createAnimatedValue } from "../../theme/index.js";
17
- import { triggerHaptic } from "../../utils/index.js";
17
+ import { triggerHaptic, resolveHaptic } from "../../utils/index.js";
18
18
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
19
19
  const Tabs = /*#__PURE__*/forwardRef((props, ref) => {
20
20
  const {
@@ -33,6 +33,7 @@ const Tabs = /*#__PURE__*/forwardRef((props, ref) => {
33
33
  dividerStyle,
34
34
  indicatorStyle,
35
35
  progress,
36
+ haptic,
36
37
  accessibilityLabel,
37
38
  testID
38
39
  } = props;
@@ -46,7 +47,6 @@ const Tabs = /*#__PURE__*/forwardRef((props, ref) => {
46
47
  const pillInset = tabsTokens?.pillInset ?? 4;
47
48
  const disabledOpacity = tabsTokens?.disabledOpacity ?? 0.45;
48
49
  const badgeGap = tabsTokens?.badgeGap ?? 6;
49
- const hapticOnPress = tabsTokens?.hapticOnPress ?? false;
50
50
 
51
51
  // Per-tab measured layouts (key → {x, width}).
52
52
  const [layouts, setLayouts] = useState({});
@@ -122,9 +122,10 @@ const Tabs = /*#__PURE__*/forwardRef((props, ref) => {
122
122
  const handlePress = useCallback(tab => {
123
123
  if (tab.disabled) return;
124
124
  if (tab.key === activeKey) return;
125
- if (hapticOnPress) triggerHaptic('selection');
125
+ const h = resolveHaptic(haptic, 'selection');
126
+ if (h) triggerHaptic(h);
126
127
  onChange(tab.key);
127
- }, [activeKey, onChange, hapticOnPress]);
128
+ }, [activeKey, onChange, haptic]);
128
129
  const indicatorIsPill = variant === 'pills';
129
130
 
130
131
  // Indicator visual.
@@ -4,7 +4,7 @@ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
4
4
  import { AccessibilityInfo, Animated, Easing, FlatList, Modal, Platform, Pressable, StyleSheet, Text, View } from 'react-native';
5
5
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
6
6
  import { useTheme, createAnimatedValue, setNativeValue } from "../../theme/index.js";
7
- import { triggerHaptic } from "../../utils/hapticUtils.js";
7
+ import { resolveHaptic, triggerHaptic } from "../../utils/hapticUtils.js";
8
8
  import Button from "../Button/Button.js";
9
9
  import { PickerTrigger } from "../PickerTrigger/PickerTrigger.js";
10
10
 
@@ -70,6 +70,7 @@ const Wheel = ({
70
70
  onIndexChange,
71
71
  formatItem,
72
72
  theme,
73
+ haptic,
73
74
  testID
74
75
  }) => {
75
76
  const listRef = useRef(null);
@@ -92,7 +93,6 @@ const Wheel = ({
92
93
  });
93
94
  }
94
95
  }, [selectedIndex, scrollY]);
95
- const hapticEnabled = theme.components.timePicker?.haptic ?? false;
96
96
  const hapticDebounceMs = theme.components.timePicker?.hapticDebounceMs ?? HAPTIC_DEBOUNCE_MS;
97
97
  const onScroll = useMemo(() => Animated.event([{
98
98
  nativeEvent: {
@@ -107,14 +107,15 @@ const Wheel = ({
107
107
  const idx = Math.round(y / ITEM_HEIGHT);
108
108
  if (idx !== lastIndexRef.current && idx >= 0 && idx < data.length) {
109
109
  const now = Date.now();
110
- if (hapticEnabled && now - lastHapticAtRef.current >= hapticDebounceMs) {
111
- triggerHaptic('selection');
110
+ if (now - lastHapticAtRef.current >= hapticDebounceMs) {
111
+ const h = resolveHaptic(haptic, 'selection');
112
+ if (h) triggerHaptic(h);
112
113
  lastHapticAtRef.current = now;
113
114
  }
114
115
  lastIndexRef.current = idx;
115
116
  }
116
117
  }
117
- }), [scrollY, data.length, hapticEnabled, hapticDebounceMs]);
118
+ }), [scrollY, data.length, haptic, hapticDebounceMs]);
118
119
  const onMomentumScrollEnd = useCallback(event => {
119
120
  const y = event.nativeEvent.contentOffset.y;
120
121
  const idx = Math.max(0, Math.min(data.length - 1, Math.round(y / ITEM_HEIGHT)));
@@ -240,7 +241,8 @@ const TimePicker = props => {
240
241
  clearable,
241
242
  onClear,
242
243
  formatValue,
243
- triggerStyle
244
+ triggerStyle,
245
+ haptic
244
246
  } = props;
245
247
  const isControlled = props.visible !== undefined;
246
248
  const [internalOpen, setInternalOpen] = useState(false);
@@ -345,21 +347,21 @@ const TimePicker = props => {
345
347
  announce(periods[idx] ?? '');
346
348
  }, [periods, announce]);
347
349
  const handleCancel = useCallback(() => {
348
- if (theme.components.timePicker?.haptic) triggerHaptic('selection');
350
+ if (haptic !== false) triggerHaptic('selection');
349
351
  handleCloseModal();
350
- }, [handleCloseModal, theme.components.timePicker]);
352
+ }, [handleCloseModal, haptic]);
351
353
  const handleConfirm = useCallback(() => {
352
354
  const displayHour = hours[hourIndex] ?? 0;
353
355
  const period = periods[periodIndex] ?? 'AM';
354
356
  const hour24 = to24h(displayHour, period, format);
355
357
  const minute = minutes[minuteIndex] ?? 0;
356
- if (theme.components.timePicker?.haptic) triggerHaptic('notificationSuccess');
358
+ if (haptic !== false) triggerHaptic('notificationSuccess');
357
359
  onChange?.({
358
360
  hour: hour24,
359
361
  minute
360
362
  });
361
363
  handleCloseModal();
362
- }, [hours, hourIndex, periods, periodIndex, minutes, minuteIndex, format, onChange, handleCloseModal, theme.components.timePicker]);
364
+ }, [hours, hourIndex, periods, periodIndex, minutes, minuteIndex, format, onChange, handleCloseModal, haptic]);
363
365
  const summary = useMemo(() => {
364
366
  const displayHour = hours[hourIndex] ?? 0;
365
367
  const minute = minutes[minuteIndex] ?? 0;
@@ -443,6 +445,7 @@ const TimePicker = props => {
443
445
  onIndexChange: handleHourIndex,
444
446
  formatItem: formatHourItem,
445
447
  theme: theme,
448
+ haptic: haptic,
446
449
  testID: "time-picker-hour"
447
450
  }), /*#__PURE__*/_jsx(Text, {
448
451
  style: styles.separator,
@@ -455,6 +458,7 @@ const TimePicker = props => {
455
458
  onIndexChange: handleMinuteIndex,
456
459
  formatItem: formatMinuteItem,
457
460
  theme: theme,
461
+ haptic: haptic,
458
462
  testID: "time-picker-minute"
459
463
  }), format === '12h' ? /*#__PURE__*/_jsxs(_Fragment, {
460
464
  children: [/*#__PURE__*/_jsx(View, {
@@ -467,6 +471,7 @@ const TimePicker = props => {
467
471
  onIndexChange: handlePeriodIndex,
468
472
  formatItem: formatPeriodItem,
469
473
  theme: theme,
474
+ haptic: haptic,
470
475
  testID: "time-picker-period"
471
476
  })]
472
477
  }) : null]
@@ -1,12 +1,15 @@
1
1
  "use strict";
2
2
 
3
3
  export { Accordion, AccordionGroup } from "./Accordion/index.js";
4
+ export { AnimatePresence } from "./AnimatePresence/index.js";
5
+ export { Autocomplete } from "./Autocomplete/index.js";
4
6
  export { Avatar, AvatarGroup } from "./Avatar/index.js";
5
7
  export { Badge } from "./Badge/index.js";
6
8
  export { Banner } from "./Banner/index.js";
7
9
  export { BottomNavigation } from "./BottomNavigation/index.js";
8
10
  export { BottomSheet, useBottomSheet } from "./BottomSheet/index.js";
9
11
  export { Button } from "./Button/index.js";
12
+ export { IconButton } from "./IconButton/index.js";
10
13
  export { Box, Stack, Row, Spacer } from "./Box/index.js";
11
14
  export { Text } from "./Text/index.js";
12
15
  export { KeyboardAwareScrollView } from "./KeyboardAwareScrollView/index.js";
@@ -15,6 +18,7 @@ export { Card } from "./Card/index.js";
15
18
  export { Carousel } from "./Carousel/index.js";
16
19
  export { Checkbox } from "./Checkbox/index.js";
17
20
  export { Chip } from "./Chip/index.js";
21
+ export { Confetti } from "./Confetti/index.js";
18
22
  export { DatePicker } from "./DatePicker/index.js";
19
23
  export { DateRangePicker } from "./DateRangePicker/index.js";
20
24
  export { Dialog } from "./Dialog/index.js";
@@ -41,6 +45,7 @@ export { SegmentedControl } from "./SegmentedControl/index.js";
41
45
  export { Select } from "./Select/index.js";
42
46
  export { Stepper } from "./Stepper/index.js";
43
47
  export { Skeleton, SkeletonCircle, SkeletonClockProvider, SkeletonContent, SkeletonList, SkeletonProvider, SkeletonSkip, SkeletonText, useReduceMotion, useSkeletonClock, useSkeletonDefaults } from "./Skeleton/index.js";
48
+ export { SlideToConfirm } from "./SlideToConfirm/index.js";
44
49
  export { Slider } from "./Slider/index.js";
45
50
  export { Swipeable } from "./Swipeable/index.js";
46
51
  export { Switch } from "./Switch/index.js";
@@ -6,7 +6,6 @@ import { useTheme } from "../theme/index.js";
6
6
  export const usePressAnimation = ({
7
7
  scaleTo = 0.97,
8
8
  pressDuration,
9
- releaseDuration,
10
9
  enabled = true
11
10
  } = {}) => {
12
11
  const theme = useTheme();
@@ -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>>;
@@ -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