@webority-technologies/mobile 0.0.23 → 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 (125) 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/Banner/Banner.js +12 -2
  6. package/lib/commonjs/components/Card/Card.js +3 -3
  7. package/lib/commonjs/components/Checkbox/Checkbox.js +3 -2
  8. package/lib/commonjs/components/Chip/Chip.js +4 -2
  9. package/lib/commonjs/components/DatePicker/DatePicker.js +23 -18
  10. package/lib/commonjs/components/DateRangePicker/DateRangePicker.js +11 -9
  11. package/lib/commonjs/components/Dialog/Dialog.js +4 -2
  12. package/lib/commonjs/components/Drawer/Drawer.js +4 -2
  13. package/lib/commonjs/components/FloatingActionButton/FloatingActionButton.js +10 -8
  14. package/lib/commonjs/components/ImageGallery/ImageGallery.js +17 -15
  15. package/lib/commonjs/components/ListItem/ListItem.js +4 -3
  16. package/lib/commonjs/components/Modal/Modal.js +4 -3
  17. package/lib/commonjs/components/NumberInput/NumberInput.js +7 -5
  18. package/lib/commonjs/components/OTPInput/OTPInput.js +7 -7
  19. package/lib/commonjs/components/Radio/Radio.js +2 -3
  20. package/lib/commonjs/components/Rating/Rating.js +4 -3
  21. package/lib/commonjs/components/SearchBar/SearchBar.js +7 -4
  22. package/lib/commonjs/components/SegmentedControl/SegmentedControl.js +4 -3
  23. package/lib/commonjs/components/Select/Select.js +7 -4
  24. package/lib/commonjs/components/Slider/Slider.js +228 -228
  25. package/lib/commonjs/components/Stepper/Stepper.js +6 -5
  26. package/lib/commonjs/components/Swipeable/Swipeable.js +8 -9
  27. package/lib/commonjs/components/Tabs/Tabs.js +4 -3
  28. package/lib/commonjs/components/TimePicker/TimePicker.js +14 -9
  29. package/lib/commonjs/components/index.js +121 -114
  30. package/lib/commonjs/utils/hapticUtils.js +11 -1
  31. package/lib/commonjs/utils/index.js +6 -0
  32. package/lib/module/components/Accordion/Accordion.js +6 -6
  33. package/lib/module/components/AnimatePresence/AnimatePresence.js +63 -0
  34. package/lib/module/components/AnimatePresence/index.js +4 -0
  35. package/lib/module/components/AppBar/AppBar.js +10 -7
  36. package/lib/module/components/Banner/Banner.js +12 -2
  37. package/lib/module/components/Card/Card.js +4 -4
  38. package/lib/module/components/Checkbox/Checkbox.js +4 -3
  39. package/lib/module/components/Chip/Chip.js +5 -3
  40. package/lib/module/components/DatePicker/DatePicker.js +24 -19
  41. package/lib/module/components/DateRangePicker/DateRangePicker.js +12 -10
  42. package/lib/module/components/Dialog/Dialog.js +5 -3
  43. package/lib/module/components/Drawer/Drawer.js +5 -3
  44. package/lib/module/components/FloatingActionButton/FloatingActionButton.js +11 -9
  45. package/lib/module/components/ImageGallery/ImageGallery.js +18 -16
  46. package/lib/module/components/ListItem/ListItem.js +5 -4
  47. package/lib/module/components/Modal/Modal.js +5 -4
  48. package/lib/module/components/NumberInput/NumberInput.js +8 -6
  49. package/lib/module/components/OTPInput/OTPInput.js +8 -8
  50. package/lib/module/components/Radio/Radio.js +3 -4
  51. package/lib/module/components/Rating/Rating.js +5 -4
  52. package/lib/module/components/SearchBar/SearchBar.js +8 -5
  53. package/lib/module/components/SegmentedControl/SegmentedControl.js +5 -4
  54. package/lib/module/components/Select/Select.js +8 -5
  55. package/lib/module/components/Slider/Slider.js +231 -231
  56. package/lib/module/components/Stepper/Stepper.js +7 -6
  57. package/lib/module/components/Swipeable/Swipeable.js +9 -10
  58. package/lib/module/components/Tabs/Tabs.js +5 -4
  59. package/lib/module/components/TimePicker/TimePicker.js +15 -10
  60. package/lib/module/components/index.js +1 -0
  61. package/lib/module/utils/hapticUtils.js +9 -0
  62. package/lib/module/utils/index.js +1 -1
  63. package/lib/typescript/commonjs/components/Accordion/Accordion.d.ts +3 -0
  64. package/lib/typescript/commonjs/components/AnimatePresence/AnimatePresence.d.ts +30 -0
  65. package/lib/typescript/commonjs/components/AnimatePresence/index.d.ts +3 -0
  66. package/lib/typescript/commonjs/components/AppBar/AppBar.d.ts +6 -0
  67. package/lib/typescript/commonjs/components/Banner/Banner.d.ts +3 -0
  68. package/lib/typescript/commonjs/components/Card/Card.d.ts +3 -0
  69. package/lib/typescript/commonjs/components/Checkbox/Checkbox.d.ts +1 -0
  70. package/lib/typescript/commonjs/components/Chip/Chip.d.ts +3 -0
  71. package/lib/typescript/commonjs/components/DatePicker/DatePicker.d.ts +3 -0
  72. package/lib/typescript/commonjs/components/DateRangePicker/DateRangePicker.d.ts +6 -0
  73. package/lib/typescript/commonjs/components/Dialog/Dialog.d.ts +3 -0
  74. package/lib/typescript/commonjs/components/Drawer/Drawer.d.ts +3 -0
  75. package/lib/typescript/commonjs/components/FloatingActionButton/FloatingActionButton.d.ts +5 -0
  76. package/lib/typescript/commonjs/components/ImageGallery/ImageGallery.d.ts +6 -0
  77. package/lib/typescript/commonjs/components/ListItem/ListItem.d.ts +3 -0
  78. package/lib/typescript/commonjs/components/Modal/Modal.d.ts +6 -0
  79. package/lib/typescript/commonjs/components/NumberInput/NumberInput.d.ts +3 -0
  80. package/lib/typescript/commonjs/components/OTPInput/OTPInput.d.ts +6 -0
  81. package/lib/typescript/commonjs/components/Rating/Rating.d.ts +6 -0
  82. package/lib/typescript/commonjs/components/SearchBar/SearchBar.d.ts +3 -0
  83. package/lib/typescript/commonjs/components/SegmentedControl/SegmentedControl.d.ts +3 -0
  84. package/lib/typescript/commonjs/components/Select/Select.d.ts +6 -0
  85. package/lib/typescript/commonjs/components/Slider/Slider.d.ts +3 -0
  86. package/lib/typescript/commonjs/components/Stepper/Stepper.d.ts +6 -0
  87. package/lib/typescript/commonjs/components/Swipeable/Swipeable.d.ts +3 -0
  88. package/lib/typescript/commonjs/components/Tabs/Tabs.d.ts +3 -0
  89. package/lib/typescript/commonjs/components/TimePicker/TimePicker.d.ts +3 -0
  90. package/lib/typescript/commonjs/components/index.d.ts +2 -0
  91. package/lib/typescript/commonjs/theme/types.d.ts +2 -67
  92. package/lib/typescript/commonjs/utils/hapticUtils.d.ts +8 -0
  93. package/lib/typescript/commonjs/utils/index.d.ts +1 -1
  94. package/lib/typescript/module/components/Accordion/Accordion.d.ts +3 -0
  95. package/lib/typescript/module/components/AnimatePresence/AnimatePresence.d.ts +30 -0
  96. package/lib/typescript/module/components/AnimatePresence/index.d.ts +3 -0
  97. package/lib/typescript/module/components/AppBar/AppBar.d.ts +6 -0
  98. package/lib/typescript/module/components/Banner/Banner.d.ts +3 -0
  99. package/lib/typescript/module/components/Card/Card.d.ts +3 -0
  100. package/lib/typescript/module/components/Checkbox/Checkbox.d.ts +1 -0
  101. package/lib/typescript/module/components/Chip/Chip.d.ts +3 -0
  102. package/lib/typescript/module/components/DatePicker/DatePicker.d.ts +3 -0
  103. package/lib/typescript/module/components/DateRangePicker/DateRangePicker.d.ts +6 -0
  104. package/lib/typescript/module/components/Dialog/Dialog.d.ts +3 -0
  105. package/lib/typescript/module/components/Drawer/Drawer.d.ts +3 -0
  106. package/lib/typescript/module/components/FloatingActionButton/FloatingActionButton.d.ts +5 -0
  107. package/lib/typescript/module/components/ImageGallery/ImageGallery.d.ts +6 -0
  108. package/lib/typescript/module/components/ListItem/ListItem.d.ts +3 -0
  109. package/lib/typescript/module/components/Modal/Modal.d.ts +6 -0
  110. package/lib/typescript/module/components/NumberInput/NumberInput.d.ts +3 -0
  111. package/lib/typescript/module/components/OTPInput/OTPInput.d.ts +6 -0
  112. package/lib/typescript/module/components/Rating/Rating.d.ts +6 -0
  113. package/lib/typescript/module/components/SearchBar/SearchBar.d.ts +3 -0
  114. package/lib/typescript/module/components/SegmentedControl/SegmentedControl.d.ts +3 -0
  115. package/lib/typescript/module/components/Select/Select.d.ts +6 -0
  116. package/lib/typescript/module/components/Slider/Slider.d.ts +3 -0
  117. package/lib/typescript/module/components/Stepper/Stepper.d.ts +6 -0
  118. package/lib/typescript/module/components/Swipeable/Swipeable.d.ts +3 -0
  119. package/lib/typescript/module/components/Tabs/Tabs.d.ts +3 -0
  120. package/lib/typescript/module/components/TimePicker/TimePicker.d.ts +3 -0
  121. package/lib/typescript/module/components/index.d.ts +2 -0
  122. package/lib/typescript/module/theme/types.d.ts +2 -67
  123. package/lib/typescript/module/utils/hapticUtils.d.ts +8 -0
  124. package/lib/typescript/module/utils/index.d.ts +1 -1
  125. package/package.json +1 -1
@@ -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>> & {
@@ -16,6 +16,7 @@
16
16
  */
17
17
  import React from 'react';
18
18
  import type { StyleProp, ViewStyle } from 'react-native';
19
+ import type { HapticType } from '../../utils';
19
20
  export type SwipeableTone = 'primary' | 'success' | 'warning' | 'error' | 'neutral';
20
21
  export interface SwipeableAction {
21
22
  key: string;
@@ -35,6 +36,8 @@ export interface SwipeableProps {
35
36
  onSwipeOpen?: (side: 'left' | 'right') => void;
36
37
  onSwipeClose?: () => void;
37
38
  disabled?: boolean;
39
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
40
+ haptic?: HapticType | false;
38
41
  containerStyle?: StyleProp<ViewStyle>;
39
42
  contentStyle?: StyleProp<ViewStyle>;
40
43
  actionStyle?: StyleProp<ViewStyle>;
@@ -11,6 +11,7 @@
11
11
  import React from 'react';
12
12
  import { Animated, View } from 'react-native';
13
13
  import type { StyleProp, TextStyle, ViewStyle } from 'react-native';
14
+ import type { HapticType } from '../../utils';
14
15
  export type TabsVariant = 'underline' | 'pills';
15
16
  export type TabsAlign = 'left' | 'center';
16
17
  export interface TabItem {
@@ -52,6 +53,8 @@ export interface TabsProps {
52
53
  * progress value catches up.
53
54
  */
54
55
  progress?: Animated.AnimatedInterpolation<number> | Animated.Value;
56
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
57
+ haptic?: HapticType | false;
55
58
  accessibilityLabel?: string;
56
59
  testID?: string;
57
60
  }
@@ -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
  import type { FieldBaseSize, FieldBaseVariant } from '../FieldBase';
4
5
  export type TimeFormat = '12h' | '24h';
5
6
  export type Period = 'AM' | 'PM';
@@ -52,6 +53,8 @@ export interface TimePickerProps {
52
53
  formatValue?: (time: TimeValue) => string;
53
54
  /** Style passed through to the PickerTrigger field row. */
54
55
  triggerStyle?: StyleProp<ViewStyle>;
56
+ /** Haptic feedback for interactions. Pass false to disable; pass a HapticType to override the default. */
57
+ haptic?: HapticType | false;
55
58
  }
56
59
  declare const TimePicker: React.FC<TimePickerProps>;
57
60
  export { TimePicker };
@@ -1,5 +1,7 @@
1
1
  export { Accordion, AccordionGroup } from './Accordion';
2
2
  export type { AccordionProps, AccordionGroupProps, AccordionVariant } from './Accordion';
3
+ export { AnimatePresence } from './AnimatePresence';
4
+ export type { AnimatePresenceProps, PresencePreset } from './AnimatePresence';
3
5
  export { Avatar, AvatarGroup } from './Avatar';
4
6
  export type { AvatarProps, AvatarShape, AvatarSize, AvatarStatus, AvatarGroupProps, AvatarGroupSpacing, AvatarGroupOverflowVariant } from './Avatar';
5
7
  export { Badge } from './Badge';
@@ -295,8 +295,6 @@ export interface DialogTokens {
295
295
  iconWrapperSize: number;
296
296
  iconWrapperBorderRadius: number;
297
297
  actionButtonMinHeight: number;
298
- /** When true, fires a selection haptic on action-button press. Library default: false. */
299
- actionHaptic?: boolean;
300
298
  }
301
299
  export interface ToastTokens {
302
300
  iconCircleSize: number;
@@ -337,43 +335,25 @@ export interface CheckboxSizeTokens {
337
335
  }
338
336
  export interface CheckboxTokens extends Partial<Record<ComponentSizeKey, CheckboxSizeTokens>> {
339
337
  labelGap?: number;
340
- /** When true, fires a selection haptic on press by default. Library default: false. */
341
- pressHaptic?: boolean;
342
- }
343
- export interface ChipTokens extends Partial<Record<ComponentSizeKey, ChipSizeTokens>> {
344
- /** When true, fires a selection haptic when the chip itself is pressed. Library default: false. */
345
- pressHaptic?: boolean;
346
- /** When true, fires a selection haptic when the close (×) button is pressed. Library default: false. */
347
- closeHaptic?: boolean;
348
- }
349
- export interface ListItemTokens extends Partial<Record<ComponentSizeKey, ListItemSizeTokens>> {
350
- /** When true, fires a selection haptic on press. Library default: false. */
351
- pressHaptic?: boolean;
352
338
  }
339
+ export type ChipTokens = Partial<Record<ComponentSizeKey, ChipSizeTokens>>;
340
+ export type ListItemTokens = Partial<Record<ComponentSizeKey, ListItemSizeTokens>>;
353
341
  export interface RadioSizeTokens {
354
342
  outer: number;
355
343
  inner: number;
356
344
  }
357
345
  export interface RadioTokens extends Partial<Record<ComponentSizeKey, RadioSizeTokens>> {
358
346
  labelGap?: number;
359
- /** When true, fires a selection haptic on press by default. Library default: false. */
360
- pressHaptic?: boolean;
361
347
  }
362
348
  export interface NumberInputTokens {
363
349
  /** Milliseconds before long-press auto-repeat kicks in. Library default: 500. */
364
350
  longPressDelayMs?: number;
365
351
  /** Milliseconds between auto-repeated step ticks while long-pressed. Library default: 80. */
366
352
  longPressIntervalMs?: number;
367
- /** When true, fires a light impact haptic on every +/- press. Library default: false. */
368
- pressHaptic?: boolean;
369
353
  }
370
354
  export interface OTPInputTokens extends Partial<Record<ComponentSizeKey, OTPInputSizeTokens>> {
371
355
  /** When true, the row shakes horizontally on first error transition. Library default: false. */
372
356
  shakeOnError?: boolean;
373
- /** When true, fires an error haptic on first error transition. Library default: false. */
374
- errorHaptic?: boolean;
375
- /** When true, fires a selection haptic on each value change. Library default: false. */
376
- selectionHaptic?: boolean;
377
357
  }
378
358
  export interface ProgressBarTokens {
379
359
  /** Duration in ms of the indeterminate-loop animation cycle. Library default: 1500. */
@@ -388,8 +368,6 @@ export interface RatingTokens {
388
368
  pulseOnPress?: boolean;
389
369
  /** Peak scale of the pulse animation. Library default: 1.2. */
390
370
  pulseScale?: number;
391
- /** When true, fires a selection haptic on each rating change. Library default: false. */
392
- pressHaptic?: boolean;
393
371
  }
394
372
  /**
395
373
  * Per-size dimensions for the unified field box (FieldBase). Every
@@ -530,8 +508,6 @@ export interface BottomNavigationTokens {
530
508
  underlineHeight?: number;
531
509
  }
532
510
  export interface DatePickerTokens {
533
- /** Opt-in haptic feedback on month/year navigation and selection. Default: false. */
534
- haptic?: boolean;
535
511
  /** Pixel offset for the month-slide animation. Default: 32. */
536
512
  monthSlideDistance?: number;
537
513
  /** Outgoing month-slide animation duration (ms). Default: theme.motion.duration.fast or 140. */
@@ -564,8 +540,6 @@ export interface DatePickerTokens {
564
540
  footerButtonMinHeight?: number;
565
541
  }
566
542
  export interface DateRangePickerTokens {
567
- /** Opt-in haptic feedback on month navigation and selection. Default: false. */
568
- haptic?: boolean;
569
543
  /** Pixel offset for the month-slide animation. Default: 32. */
570
544
  monthSlideDistance?: number;
571
545
  /** Outgoing month-slide animation duration (ms). Default: theme.motion.duration.fast or 140. */
@@ -582,8 +556,6 @@ export interface DateRangePickerTokens {
582
556
  footerButtonMinHeight?: number;
583
557
  }
584
558
  export interface TimePickerTokens {
585
- /** Opt-in haptic feedback on wheel scroll and confirm/cancel. Default: false. */
586
- haptic?: boolean;
587
559
  /** Debounce window between scroll-haptic ticks (ms). Default: 35. */
588
560
  hapticDebounceMs?: number;
589
561
  /** Width of the bottom-sheet drag handle. Default: 36. */
@@ -616,14 +588,10 @@ export interface AvatarTokens {
616
588
  fontWeight?: keyof TypographyScale['fontWeight'];
617
589
  }
618
590
  export interface AccordionTokens {
619
- /** When true, fires a selection haptic on header press. Library default: false. */
620
- pressHaptic?: boolean;
621
591
  /** Vertical padding inside the `card` variant container. Library default: 4. */
622
592
  cardPaddingVertical?: number;
623
593
  }
624
594
  export interface AppBarTokens {
625
- /** When true, fires a selection haptic on action-button press. Library default: false. */
626
- pressHaptic?: boolean;
627
595
  /** Min-width of the left/right side action slots. Library default: 48. */
628
596
  sideSlotMinWidth?: number;
629
597
  /** Translate-Y distance (px, negative) the large title travels when collapsing. Library default: -20. */
@@ -664,17 +632,11 @@ export interface BannerTokens {
664
632
  actionButtonPaddingVertical?: number;
665
633
  actionButtonRadius?: number;
666
634
  }
667
- export interface CardTokens {
668
- /** When true, fires a selection haptic on interactive card press. Library default: false. */
669
- pressHaptic?: boolean;
670
- }
671
635
  export interface DrawerTokens {
672
636
  /** Pixel velocity above which a fling closes the drawer. Library default: 1000. */
673
637
  closeVelocityThreshold?: number;
674
638
  /** Pixel drag distance before the gesture is recognised. Library default: 10. */
675
639
  dragActivationOffset?: number;
676
- /** When true, fires a selection haptic on backdrop press. Library default: false. */
677
- backdropPressHaptic?: boolean;
678
640
  }
679
641
  export interface FloatingActionButtonTokens {
680
642
  /** Horizontal inset from screen edge for bottomLeft/bottomRight positions. Library default: 24. */
@@ -685,8 +647,6 @@ export interface FloatingActionButtonTokens {
685
647
  secondaryGap?: number;
686
648
  /** Per-item stagger delay in ms when opening/closing the group. Library default: 50. */
687
649
  staggerMs?: number;
688
- /** When true, fires impactLight on press / open / action. Library default: false. */
689
- pressHaptic?: boolean;
690
650
  }
691
651
  export interface ImageGalleryTokens {
692
652
  /** Maximum pinch-zoom scale. Library default: 4. */
@@ -695,14 +655,10 @@ export interface ImageGalleryTokens {
695
655
  minScale?: number;
696
656
  /** Scale applied on double-tap at rest. Library default: 2. */
697
657
  doubleTapScale?: number;
698
- /** When true, fires haptics on open/close/swipe/double-tap. Library default: false. */
699
- pressHaptic?: boolean;
700
658
  }
701
659
  export interface ModalTokens {
702
660
  /** Initial scale value for the centred presentation enter animation. Library default: 0.9. */
703
661
  scaleStartValue?: number;
704
- /** When true, fires a selection haptic on backdrop dismiss. Library default: false. */
705
- backdropHaptic?: boolean;
706
662
  }
707
663
  export interface SegmentedControlSizeTokens {
708
664
  height?: number;
@@ -712,8 +668,6 @@ export interface SegmentedControlSizeTokens {
712
668
  export interface SegmentedControlTokens extends Partial<Record<'sm' | 'md', SegmentedControlSizeTokens>> {
713
669
  /** Padding between the track edge and the selected indicator. Library default: 2. */
714
670
  trackPadding?: number;
715
- /** When true, fires a selection haptic on segment change. Library default: false. */
716
- changeHaptic?: boolean;
717
671
  }
718
672
  export interface SliderSizeTokens {
719
673
  trackHeight?: number;
@@ -728,14 +682,6 @@ export interface SliderTokens extends Partial<Record<ComponentSizeKey, SliderSiz
728
682
  labelShowDuration?: number;
729
683
  /** Final opacity of the bubble label when visible. Library default: 1. */
730
684
  labelOpacity?: number;
731
- /** When true, fires a selection haptic while dragging. Library default: false. */
732
- dragHaptic?: boolean;
733
- /** When true, fires a selection haptic each time the value crosses a step boundary. Library default: false. */
734
- stepHaptic?: boolean;
735
- /** When true, fires a selection haptic on track tap. Library default: false. */
736
- tapHaptic?: boolean;
737
- /** When true, fires a selection haptic on accessibility increment/decrement. Library default: false. */
738
- a11yHaptic?: boolean;
739
685
  }
740
686
  export interface StepperTokens {
741
687
  /** Diameter of each step circle. Library default: 24. */
@@ -746,8 +692,6 @@ export interface StepperTokens {
746
692
  pulseDuration?: number;
747
693
  /** When true, the active step animates a continuous pulse ring. Library default: false. */
748
694
  pulseAnimation?: boolean;
749
- /** When true, fires a selection haptic on step press. Library default: false. */
750
- pressHaptic?: boolean;
751
695
  }
752
696
  export interface SwipeableTokens {
753
697
  /** Pixel distance after which a partial-swipe action commits on release. Library default: 64. */
@@ -766,12 +710,6 @@ export interface SwipeableTokens {
766
710
  springStiffness?: number;
767
711
  /** Spring mass for snap-back animation. */
768
712
  springMass?: number;
769
- /** When true, fires a notification haptic on full-swipe commit. Library default: true. */
770
- fullSwipeHaptic?: boolean;
771
- /** When true, fires a selection haptic on action button press. Library default: true. */
772
- actionPressHaptic?: boolean;
773
- /** When true, fires a selection haptic on accessibility action. Library default: true. */
774
- a11yActionHaptic?: boolean;
775
713
  }
776
714
  export interface TabsTokens {
777
715
  /** Horizontal padding of each tab. Library default: theme.spacing.lg. */
@@ -788,8 +726,6 @@ export interface TabsTokens {
788
726
  disabledOpacity?: number;
789
727
  /** Gap between label and inline badge. Library default: 6. */
790
728
  badgeGap?: number;
791
- /** When true, fires a selection haptic on tab press. Library default: false. */
792
- hapticOnPress?: boolean;
793
729
  }
794
730
  export interface TooltipTokens {
795
731
  /** Gap between trigger and tooltip card. Library default: 8. */
@@ -822,7 +758,6 @@ export interface ComponentTokens {
822
758
  badge?: BadgeTokens;
823
759
  bottomNavigation?: BottomNavigationTokens;
824
760
  bottomSheet?: BottomSheetTokens;
825
- card?: CardTokens;
826
761
  checkbox?: CheckboxTokens;
827
762
  chip?: ChipTokens;
828
763
  datePicker?: DatePickerTokens;
@@ -1,4 +1,12 @@
1
1
  export type HapticType = 'selection' | 'impactLight' | 'impactMedium' | 'impactHeavy' | 'notificationSuccess' | 'notificationWarning' | 'notificationError';
2
2
  export declare const triggerHaptic: (type?: HapticType) => void;
3
3
  export declare const setHapticImplementation: (impl: ((type: HapticType) => void) | null) => void;
4
+ /**
5
+ * Resolves a component's `haptic` prop to the type that should fire, or null
6
+ * when haptics are off. `false` disables; a `HapticType` overrides; `undefined`
7
+ * falls back to the component's sensible default. Pair with `triggerHaptic`:
8
+ * const h = resolveHaptic(haptic, 'selection');
9
+ * if (h) triggerHaptic(h);
10
+ */
11
+ export declare const resolveHaptic: (haptic: HapticType | false | undefined, fallbackType: HapticType) => HapticType | null;
4
12
  //# sourceMappingURL=hapticUtils.d.ts.map
@@ -2,7 +2,7 @@ export { ScreenDimensions, Breakpoints, Responsive, isScreenSize, isTablet } fro
2
2
  export type { BreakpointKey } from './responsive';
3
3
  export { Spacing, Padding, Margin } from './spacing';
4
4
  export type { SpacingToken } from './spacing';
5
- export { triggerHaptic, setHapticImplementation } from './hapticUtils';
5
+ export { triggerHaptic, setHapticImplementation, resolveHaptic } from './hapticUtils';
6
6
  export type { HapticType } from './hapticUtils';
7
7
  export { shadowStyle } from './shadows';
8
8
  export { compressImage } from './imageCompression';
@@ -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
  /**
@@ -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). */
@@ -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>;
@@ -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>;