@retray-dev/ui-kit 10.0.0 → 10.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/COMPONENTS.md +150 -17
  2. package/CONSUMER.md +1 -1
  3. package/README.md +4 -4
  4. package/dist/Accordion.d.mts +1 -1
  5. package/dist/Accordion.d.ts +1 -1
  6. package/dist/Accordion.js +3 -3
  7. package/dist/Accordion.mjs +2 -2
  8. package/dist/AlertBanner.js +1 -1
  9. package/dist/AlertBanner.mjs +2 -2
  10. package/dist/AppHeader.js +1 -1
  11. package/dist/AppHeader.mjs +3 -3
  12. package/dist/Badge.js +1 -1
  13. package/dist/Badge.mjs +2 -2
  14. package/dist/Button.js +1 -1
  15. package/dist/Button.mjs +2 -2
  16. package/dist/CategoryStrip.js +1 -1
  17. package/dist/CategoryStrip.mjs +2 -2
  18. package/dist/Chip.js +1 -1
  19. package/dist/Chip.mjs +2 -2
  20. package/dist/ConfirmDialog.d.mts +6 -1
  21. package/dist/ConfirmDialog.d.ts +6 -1
  22. package/dist/ConfirmDialog.js +45 -15
  23. package/dist/ConfirmDialog.mjs +3 -3
  24. package/dist/CurrencyInput.js +1 -1
  25. package/dist/CurrencyInput.mjs +3 -3
  26. package/dist/DetailRow.d.mts +1 -1
  27. package/dist/DetailRow.d.ts +1 -1
  28. package/dist/DetailRow.js +1 -1
  29. package/dist/DetailRow.mjs +2 -2
  30. package/dist/EmptyState.js +1 -1
  31. package/dist/EmptyState.mjs +3 -3
  32. package/dist/ErrorBoundary.js +1 -1
  33. package/dist/ErrorBoundary.mjs +2 -2
  34. package/dist/IconButton.js +1 -1
  35. package/dist/IconButton.mjs +2 -2
  36. package/dist/IconPicker.d.mts +17 -0
  37. package/dist/IconPicker.d.ts +17 -0
  38. package/dist/IconPicker.js +997 -0
  39. package/dist/IconPicker.mjs +7 -0
  40. package/dist/ImageUpload.d.mts +3 -1
  41. package/dist/ImageUpload.d.ts +3 -1
  42. package/dist/ImageUpload.js +28 -10
  43. package/dist/ImageUpload.mjs +1 -1
  44. package/dist/ImageViewer.js +282 -141
  45. package/dist/ImageViewer.mjs +5 -3
  46. package/dist/Input.js +1 -1
  47. package/dist/Input.mjs +2 -2
  48. package/dist/LabelValue.js +1 -1
  49. package/dist/LabelValue.mjs +2 -2
  50. package/dist/ListItem.js +1 -1
  51. package/dist/ListItem.mjs +2 -2
  52. package/dist/MediaCard.js +1 -1
  53. package/dist/MediaCard.mjs +2 -2
  54. package/dist/MenuItem.js +1 -1
  55. package/dist/MenuItem.mjs +2 -2
  56. package/dist/NumberStepper.d.mts +19 -0
  57. package/dist/NumberStepper.d.ts +19 -0
  58. package/dist/NumberStepper.js +410 -0
  59. package/dist/NumberStepper.mjs +9 -0
  60. package/dist/PagerDots.js +1 -1
  61. package/dist/PagerDots.mjs +2 -2
  62. package/dist/PricingCard.js +1 -1
  63. package/dist/PricingCard.mjs +4 -4
  64. package/dist/SelectableGrid.js +1 -1
  65. package/dist/SelectableGrid.mjs +2 -2
  66. package/dist/Sheet.js +16 -13
  67. package/dist/Sheet.mjs +1 -1
  68. package/dist/SheetSelect.js +1 -1
  69. package/dist/SheetSelect.mjs +2 -2
  70. package/dist/Switch.js +40 -17
  71. package/dist/Switch.mjs +1 -1
  72. package/dist/TabBar.js +1 -1
  73. package/dist/TabBar.mjs +2 -2
  74. package/dist/Textarea.js +1 -1
  75. package/dist/Textarea.mjs +2 -2
  76. package/dist/Toggle.js +1 -1
  77. package/dist/Toggle.mjs +2 -2
  78. package/dist/chunk-53Z3NYGE.mjs +742 -0
  79. package/dist/{chunk-VQ57HWPL.mjs → chunk-6L4G6PBT.mjs} +1 -1
  80. package/dist/{chunk-6OAZJ577.mjs → chunk-6SECQ2ZF.mjs} +2 -2
  81. package/dist/{chunk-KIHCWCWL.mjs → chunk-7LWRKMF5.mjs} +1 -1
  82. package/dist/{chunk-4I7D47FH.mjs → chunk-AJRVDP2H.mjs} +3 -3
  83. package/dist/{chunk-6MKGPAR2.mjs → chunk-BEMIQXXU.mjs} +1 -1
  84. package/dist/chunk-BUMAMSTZ.mjs +126 -0
  85. package/dist/{chunk-UREA2GYY.mjs → chunk-DYT7BG5I.mjs} +1 -1
  86. package/dist/{chunk-Z4BVUWW6.mjs → chunk-ELXBDILQ.mjs} +20 -32
  87. package/dist/{chunk-A4MDAP7G.mjs → chunk-FCSSQK3L.mjs} +1 -1
  88. package/dist/{chunk-2TFTAWVJ.mjs → chunk-HTHGSXFG.mjs} +1 -1
  89. package/dist/{chunk-VGTDN7SW.mjs → chunk-IX3NYLYQ.mjs} +1 -1
  90. package/dist/{chunk-T7XZ7H7Y.mjs → chunk-KA7LTET3.mjs} +17 -3
  91. package/dist/{chunk-URI2WBIV.mjs → chunk-KOO4WITD.mjs} +1 -1
  92. package/dist/{chunk-JUXSWN54.mjs → chunk-NMU5FMQJ.mjs} +1 -1
  93. package/dist/{chunk-LXJIIOYQ.mjs → chunk-RYZC432S.mjs} +1 -1
  94. package/dist/{chunk-JB67UOB5.mjs → chunk-S2R7UVOE.mjs} +1 -1
  95. package/dist/{chunk-ZUR7AU5R.mjs → chunk-SXLKNTA4.mjs} +1 -1
  96. package/dist/{chunk-3U4SSNWP.mjs → chunk-T2KCAHOS.mjs} +1 -1
  97. package/dist/{chunk-ZJKGQMYH.mjs → chunk-TB6SD2FT.mjs} +1 -1
  98. package/dist/{chunk-AZJF2BLK.mjs → chunk-TBNZHU6C.mjs} +1 -1
  99. package/dist/{chunk-Y4GL2MHX.mjs → chunk-TZDGAP5N.mjs} +28 -10
  100. package/dist/{chunk-CZCQZHG6.mjs → chunk-U2XJFYED.mjs} +1 -1
  101. package/dist/{chunk-TERDKCLE.mjs → chunk-VF2ATYN3.mjs} +1 -1
  102. package/dist/{chunk-OHBNABL5.mjs → chunk-VKID2D2I.mjs} +1 -1
  103. package/dist/{chunk-QKH5ZOD5.mjs → chunk-WF2XDFRK.mjs} +40 -17
  104. package/dist/{chunk-FZZLPJ6B.mjs → chunk-WYEUNUTP.mjs} +44 -15
  105. package/dist/{chunk-PFZTM6D5.mjs → chunk-Y2NS74WS.mjs} +9 -7
  106. package/dist/{chunk-O3HA6TYM.mjs → chunk-YJ7I257J.mjs} +3 -3
  107. package/dist/{chunk-NA7PARID.mjs → chunk-Z4VHZ7B5.mjs} +1 -1
  108. package/dist/{chunk-MLF3EZFW.mjs → chunk-Z6SFHN6T.mjs} +1 -1
  109. package/dist/{chunk-4K625MVM.mjs → chunk-ZZ2R6KZ3.mjs} +1 -1
  110. package/dist/index.d.mts +4 -1
  111. package/dist/index.d.ts +4 -1
  112. package/dist/index.js +1011 -88
  113. package/dist/index.mjs +34 -32
  114. package/package.json +1 -1
  115. package/src/components/Accordion/Accordion.tsx +7 -3
  116. package/src/components/ConfirmDialog/ConfirmDialog.tsx +61 -23
  117. package/src/components/DetailRow/DetailRow.tsx +1 -1
  118. package/src/components/IconPicker/IconPicker.tsx +383 -0
  119. package/src/components/IconPicker/index.ts +1 -0
  120. package/src/components/ImageUpload/ImageUpload.tsx +34 -12
  121. package/src/components/ImageViewer/ImageViewer.tsx +25 -30
  122. package/src/components/NumberStepper/NumberStepper.tsx +147 -0
  123. package/src/components/NumberStepper/index.ts +1 -0
  124. package/src/components/Sheet/Sheet.tsx +10 -9
  125. package/src/components/Switch/Switch.tsx +30 -17
  126. package/src/index.ts +3 -1
  127. package/src/utils/curatedIcons.ts +286 -0
  128. package/src/utils/icons.ts +20 -2
@@ -1,31 +1,34 @@
1
- import { Button } from './chunk-2TFTAWVJ.mjs';
1
+ import { Button } from './chunk-HTHGSXFG.mjs';
2
2
  import { impactMedium, notificationSuccess, selectionAsync } from './chunk-EJ7ZPXOH.mjs';
3
3
  import { useTheme } from './chunk-SOYNZDVY.mjs';
4
4
  import { vs, mvs, ms, s } from './chunk-2CE3TQVY.mjs';
5
5
  import React, { useRef, useEffect } from 'react';
6
- import { StyleSheet, Text, View } from 'react-native';
7
- import { BottomSheetModal, BottomSheetView, BottomSheetBackdrop } from '@gorhom/bottom-sheet';
6
+ import { StyleSheet, View, Text, TouchableOpacity } from 'react-native';
7
+ import BottomSheet, { BottomSheetView, BottomSheetBackdrop } from '@gorhom/bottom-sheet';
8
8
  import { Feather } from '@expo/vector-icons';
9
9
 
10
10
  function ConfirmDialog({
11
11
  visible,
12
12
  title,
13
+ subtitle,
13
14
  description,
14
15
  confirmLabel = "Confirm",
15
16
  cancelLabel = "Cancel",
16
17
  confirmVariant = "primary",
17
18
  loading = false,
19
+ showCloseButton = false,
18
20
  onConfirm,
19
21
  onCancel
20
22
  }) {
21
23
  const { colors } = useTheme();
22
24
  const ref = useRef(null);
25
+ const effectiveSubtitle = subtitle ?? description;
23
26
  useEffect(() => {
24
27
  if (visible) {
25
28
  impactMedium();
26
- ref.current?.present();
29
+ ref.current?.snapToIndex(0);
27
30
  } else {
28
- ref.current?.dismiss();
31
+ ref.current?.close();
29
32
  }
30
33
  }, [visible]);
31
34
  const renderBackdrop = (props) => /* @__PURE__ */ React.createElement(
@@ -38,17 +41,30 @@ function ConfirmDialog({
38
41
  }
39
42
  );
40
43
  return /* @__PURE__ */ React.createElement(
41
- BottomSheetModal,
44
+ BottomSheet,
42
45
  {
43
46
  ref,
47
+ index: -1,
48
+ onClose: onCancel,
44
49
  enableDynamicSizing: true,
45
- onDismiss: onCancel,
46
50
  backdropComponent: renderBackdrop,
47
51
  backgroundStyle: [styles.background, { backgroundColor: colors.card }],
48
52
  handleIndicatorStyle: [styles.handle, { backgroundColor: colors.border }],
49
53
  enablePanDownToClose: true
50
54
  },
51
- /* @__PURE__ */ React.createElement(BottomSheetView, { style: styles.content }, /* @__PURE__ */ React.createElement(Text, { style: [styles.title, { color: colors.foreground }], allowFontScaling: true }, title), description ? /* @__PURE__ */ React.createElement(Text, { style: [styles.description, { color: colors.foregroundMuted }], allowFontScaling: true }, description) : null, /* @__PURE__ */ React.createElement(View, { style: styles.actions }, /* @__PURE__ */ React.createElement(
55
+ /* @__PURE__ */ React.createElement(BottomSheetView, { style: styles.content }, /* @__PURE__ */ React.createElement(View, { style: styles.header, accessibilityRole: "header" }, /* @__PURE__ */ React.createElement(View, { style: styles.headerRow }, /* @__PURE__ */ React.createElement(Text, { style: [styles.title, { color: colors.foreground }], allowFontScaling: true }, title), showCloseButton ? /* @__PURE__ */ React.createElement(
56
+ TouchableOpacity,
57
+ {
58
+ onPress: onCancel,
59
+ style: styles.closeButton,
60
+ activeOpacity: 0.6,
61
+ touchSoundDisabled: true,
62
+ accessibilityRole: "button",
63
+ accessibilityLabel: "Close",
64
+ hitSlop: { top: 12, bottom: 12, left: 12, right: 12 }
65
+ },
66
+ /* @__PURE__ */ React.createElement(Feather, { name: "x", size: ms(18), color: colors.foregroundMuted })
67
+ ) : null), effectiveSubtitle ? /* @__PURE__ */ React.createElement(Text, { style: [styles.subtitle, { color: colors.foregroundMuted }], allowFontScaling: true }, effectiveSubtitle) : null), /* @__PURE__ */ React.createElement(View, { style: styles.actions }, /* @__PURE__ */ React.createElement(
52
68
  Button,
53
69
  {
54
70
  label: confirmLabel,
@@ -95,19 +111,32 @@ var styles = StyleSheet.create({
95
111
  borderRadius: ms(2)
96
112
  },
97
113
  content: {
98
- paddingHorizontal: s(24),
99
- paddingBottom: vs(32),
100
- gap: vs(12)
114
+ paddingHorizontal: s(16),
115
+ paddingBottom: vs(32)
116
+ },
117
+ header: {
118
+ paddingTop: vs(4),
119
+ paddingBottom: vs(12),
120
+ gap: vs(4)
121
+ },
122
+ headerRow: {
123
+ flexDirection: "row",
124
+ alignItems: "center",
125
+ justifyContent: "space-between"
101
126
  },
102
127
  title: {
103
128
  fontFamily: "Sohne-SemiBold",
104
129
  fontSize: ms(18),
105
- lineHeight: mvs(26)
130
+ flex: 1
131
+ },
132
+ closeButton: {
133
+ padding: s(4),
134
+ marginLeft: s(8)
106
135
  },
107
- description: {
136
+ subtitle: {
108
137
  fontFamily: "Sohne-Regular",
109
- fontSize: ms(15),
110
- lineHeight: mvs(22)
138
+ fontSize: ms(14),
139
+ lineHeight: mvs(20)
111
140
  },
112
141
  actions: {
113
142
  gap: vs(10),
@@ -4,7 +4,7 @@ import { useTheme } from './chunk-SOYNZDVY.mjs';
4
4
  import { vs, s, mvs, ms } from './chunk-2CE3TQVY.mjs';
5
5
  import React, { useRef, useEffect, useCallback } from 'react';
6
6
  import { Dimensions, Platform, StyleSheet, useWindowDimensions, View, Text, TouchableOpacity, Modal, Pressable, ScrollView } from 'react-native';
7
- import { BottomSheetBackdrop, BottomSheetFooter, BottomSheetModal, BottomSheetScrollView, BottomSheetView } from '@gorhom/bottom-sheet';
7
+ import BottomSheet, { BottomSheetBackdrop, BottomSheetFooter, BottomSheetScrollView, BottomSheetView } from '@gorhom/bottom-sheet';
8
8
  export { BottomSheetModalProvider, BottomSheetTextInput } from '@gorhom/bottom-sheet';
9
9
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
10
10
  import { AntDesign } from '@expo/vector-icons';
@@ -52,9 +52,9 @@ function Sheet({
52
52
  useEffect(() => {
53
53
  if (open) {
54
54
  impactMedium();
55
- ref.current?.present();
55
+ ref.current?.snapToIndex(0);
56
56
  } else {
57
- ref.current?.dismiss();
57
+ ref.current?.close();
58
58
  }
59
59
  }, [open]);
60
60
  const renderBackdrop = useCallback((props) => /* @__PURE__ */ React.createElement(
@@ -75,7 +75,7 @@ function Sheet({
75
75
  ) : children;
76
76
  const effectiveSubtitle = subtitle ?? description;
77
77
  const showHeader = !!(title || effectiveSubtitle || showCloseButton) && !customHeader;
78
- const headerNode = customHeader ? customHeader : showHeader ? /* @__PURE__ */ React.createElement(View, { style: styles.header, accessibilityRole: "header" }, /* @__PURE__ */ React.createElement(View, { style: styles.headerRow }, title ? /* @__PURE__ */ React.createElement(Text, { style: [styles.title, { color: colors.foreground }], allowFontScaling: true }, title) : /* @__PURE__ */ React.createElement(View, { style: { flex: 1 } }), showCloseButton ? /* @__PURE__ */ React.createElement(
78
+ const headerNode = customHeader ? customHeader : showHeader ? /* @__PURE__ */ React.createElement(View, { style: [styles.header, { backgroundColor: colors.card }], accessibilityRole: "header" }, /* @__PURE__ */ React.createElement(View, { style: styles.headerRow }, title ? /* @__PURE__ */ React.createElement(Text, { style: [styles.title, { color: colors.foreground }], allowFontScaling: true }, title) : /* @__PURE__ */ React.createElement(View, { style: { flex: 1 } }), showCloseButton ? /* @__PURE__ */ React.createElement(
79
79
  TouchableOpacity,
80
80
  {
81
81
  onPress: onClose,
@@ -123,13 +123,14 @@ function Sheet({
123
123
  const effectiveMaxHeight = maxHeight ?? DEFAULT_MAX_HEIGHT;
124
124
  const useDynamicSizing = !snapPoints;
125
125
  return /* @__PURE__ */ React.createElement(
126
- BottomSheetModal,
126
+ BottomSheet,
127
127
  {
128
128
  ref,
129
+ index: -1,
130
+ onClose,
129
131
  enableDynamicSizing: useDynamicSizing,
130
132
  snapPoints,
131
133
  maxDynamicContentSize: useDynamicSizing ? effectiveMaxHeight : void 0,
132
- onDismiss: onClose,
133
134
  backdropComponent: renderBackdrop,
134
135
  footerComponent: effectiveFooter ? renderFooter : void 0,
135
136
  backgroundStyle: [styles.background, { backgroundColor: colors.card }],
@@ -151,7 +152,8 @@ function Sheet({
151
152
  style: contentStyle,
152
153
  showsVerticalScrollIndicator: true,
153
154
  indicatorStyle: "black",
154
- persistentScrollbar: isAndroid
155
+ persistentScrollbar: isAndroid,
156
+ stickyHeaderIndices: headerNode ? [0] : void 0
155
157
  },
156
158
  headerNode,
157
159
  contentNode
@@ -1,6 +1,6 @@
1
1
  import { selectionAsync } from './chunk-EJ7ZPXOH.mjs';
2
2
  import { EASINGS, TIMINGS } from './chunk-DVK4G2GT.mjs';
3
- import { renderIcon } from './chunk-T7XZ7H7Y.mjs';
3
+ import { renderIcon } from './chunk-KA7LTET3.mjs';
4
4
  import { useTheme } from './chunk-SOYNZDVY.mjs';
5
5
  import { ms, vs, s } from './chunk-2CE3TQVY.mjs';
6
6
  import React, { useState } from 'react';
@@ -49,9 +49,9 @@ function AccordionItemComponent({
49
49
  },
50
50
  accessibilityRole: "button",
51
51
  accessibilityState: { expanded: isOpen },
52
- accessibilityLabel: item.trigger
52
+ accessibilityLabel: typeof item.trigger === "string" ? item.trigger : void 0
53
53
  },
54
- /* @__PURE__ */ React.createElement(View, { style: styles.triggerContent }, resolvedIcon ? /* @__PURE__ */ React.createElement(View, { style: styles.icon }, resolvedIcon) : null, /* @__PURE__ */ React.createElement(Text, { style: [styles.triggerText, { color: colors.foreground }], allowFontScaling: true }, item.trigger)),
54
+ /* @__PURE__ */ React.createElement(View, { style: styles.triggerContent }, resolvedIcon ? /* @__PURE__ */ React.createElement(View, { style: styles.icon }, resolvedIcon) : null, typeof item.trigger === "string" ? /* @__PURE__ */ React.createElement(Text, { style: [styles.triggerText, { color: colors.foreground }], allowFontScaling: true }, item.trigger) : item.trigger),
55
55
  /* @__PURE__ */ React.createElement(Animated.View, { style: [styles.chevron, rotationStyle] }, /* @__PURE__ */ React.createElement(Entypo, { name: "chevron-down", size: 18, color: colors.foregroundMuted }))
56
56
  ), /* @__PURE__ */ React.createElement(Animated.View, { style: bodyStyle }, /* @__PURE__ */ React.createElement(
57
57
  View,
@@ -2,7 +2,7 @@ import { usePressScale } from './chunk-YNROWHQJ.mjs';
2
2
  import { selectionAsync } from './chunk-EJ7ZPXOH.mjs';
3
3
  import { PRESS_SCALE } from './chunk-DVK4G2GT.mjs';
4
4
  import { RADIUS } from './chunk-QY3X2UYR.mjs';
5
- import { renderIcon } from './chunk-T7XZ7H7Y.mjs';
5
+ import { renderIcon } from './chunk-KA7LTET3.mjs';
6
6
  import { useTheme } from './chunk-SOYNZDVY.mjs';
7
7
  import { mvs, ms, vs, s } from './chunk-2CE3TQVY.mjs';
8
8
  import React, { useState } from 'react';
@@ -1,5 +1,5 @@
1
1
  import { selectionAsync } from './chunk-EJ7ZPXOH.mjs';
2
- import { renderIcon } from './chunk-T7XZ7H7Y.mjs';
2
+ import { renderIcon } from './chunk-KA7LTET3.mjs';
3
3
  import { useTheme } from './chunk-SOYNZDVY.mjs';
4
4
  import { ms, s, vs, mvs } from './chunk-2CE3TQVY.mjs';
5
5
  import React from 'react';
@@ -1,6 +1,6 @@
1
1
  import { selectionAsync } from './chunk-EJ7ZPXOH.mjs';
2
2
  import { SPRINGS } from './chunk-DVK4G2GT.mjs';
3
- import { renderIcon } from './chunk-T7XZ7H7Y.mjs';
3
+ import { renderIcon } from './chunk-KA7LTET3.mjs';
4
4
  import { useTheme } from './chunk-SOYNZDVY.mjs';
5
5
  import { s } from './chunk-2CE3TQVY.mjs';
6
6
  import React, { useEffect } from 'react';
package/dist/index.d.mts CHANGED
@@ -51,6 +51,8 @@ export { TabBar, TabBarItem, TabBarProps } from './TabBar.mjs';
51
51
  export { ImageViewer, ImageViewerProps } from './ImageViewer.mjs';
52
52
  export { SheetSelect, SheetSelectOption, SheetSelectProps } from './SheetSelect.mjs';
53
53
  export { ImageUpload, ImageUploadProps } from './ImageUpload.mjs';
54
+ export { IconPicker, IconPickerProps } from './IconPicker.mjs';
55
+ export { NumberStepper, NumberStepperProps, NumberStepperSize } from './NumberStepper.mjs';
54
56
  export { BottomSheetModalProvider, BottomSheetTextInput as SheetTextInput } from '@gorhom/bottom-sheet';
55
57
  export { toast } from 'sonner-native';
56
58
  import 'react-native';
@@ -97,6 +99,7 @@ interface IconProps {
97
99
  * @example configureIconFamilies(['Feather', 'MaterialIcons'])
98
100
  */
99
101
  declare function configureIconFamilies(families: IconFamily[]): void;
102
+ declare function getValidIconNames(families?: IconFamily[]): string[];
100
103
  declare function Icon({ name, size, color, family }: IconProps): React.ReactElement | null;
101
104
  declare function renderIcon(name: string, size: number, color: string): React.ReactElement | null;
102
105
 
@@ -386,4 +389,4 @@ type RadiusKey = keyof Radius;
386
389
  type Typography = typeof TYPOGRAPHY;
387
390
  type TypographyKey = keyof Typography;
388
391
 
389
- export { BREAKPOINTS, ColorScheme, ICON_SIZES, Icon, type IconFamily, type IconProps, type IconSize, type IconSizeKey, RADIUS, type Radius, type RadiusKey, ResolvedColors, SHADOWS, SPACING, type Spacing, type SpacingKey, TYPOGRAPHY, Theme, ThemeColors, ThemeProvider, type ThemeProviderProps, type Typography, type TypographyKey, type UseConfirmDialogOptions, type UseConfirmDialogResult, configureIconFamilies, defaultDark, defaultLight, deriveColors, getResponsiveFontSize, impactHeavy, impactLight, impactMedium, notificationError, notificationSuccess, notificationWarning, renderIcon, richHaptics, selectionAsync, useConfirmDialog, useTheme };
392
+ export { BREAKPOINTS, ColorScheme, ICON_SIZES, Icon, type IconFamily, type IconProps, type IconSize, type IconSizeKey, RADIUS, type Radius, type RadiusKey, ResolvedColors, SHADOWS, SPACING, type Spacing, type SpacingKey, TYPOGRAPHY, Theme, ThemeColors, ThemeProvider, type ThemeProviderProps, type Typography, type TypographyKey, type UseConfirmDialogOptions, type UseConfirmDialogResult, configureIconFamilies, defaultDark, defaultLight, deriveColors, getResponsiveFontSize, getValidIconNames, impactHeavy, impactLight, impactMedium, notificationError, notificationSuccess, notificationWarning, renderIcon, richHaptics, selectionAsync, useConfirmDialog, useTheme };
package/dist/index.d.ts CHANGED
@@ -51,6 +51,8 @@ export { TabBar, TabBarItem, TabBarProps } from './TabBar.js';
51
51
  export { ImageViewer, ImageViewerProps } from './ImageViewer.js';
52
52
  export { SheetSelect, SheetSelectOption, SheetSelectProps } from './SheetSelect.js';
53
53
  export { ImageUpload, ImageUploadProps } from './ImageUpload.js';
54
+ export { IconPicker, IconPickerProps } from './IconPicker.js';
55
+ export { NumberStepper, NumberStepperProps, NumberStepperSize } from './NumberStepper.js';
54
56
  export { BottomSheetModalProvider, BottomSheetTextInput as SheetTextInput } from '@gorhom/bottom-sheet';
55
57
  export { toast } from 'sonner-native';
56
58
  import 'react-native';
@@ -97,6 +99,7 @@ interface IconProps {
97
99
  * @example configureIconFamilies(['Feather', 'MaterialIcons'])
98
100
  */
99
101
  declare function configureIconFamilies(families: IconFamily[]): void;
102
+ declare function getValidIconNames(families?: IconFamily[]): string[];
100
103
  declare function Icon({ name, size, color, family }: IconProps): React.ReactElement | null;
101
104
  declare function renderIcon(name: string, size: number, color: string): React.ReactElement | null;
102
105
 
@@ -386,4 +389,4 @@ type RadiusKey = keyof Radius;
386
389
  type Typography = typeof TYPOGRAPHY;
387
390
  type TypographyKey = keyof Typography;
388
391
 
389
- export { BREAKPOINTS, ColorScheme, ICON_SIZES, Icon, type IconFamily, type IconProps, type IconSize, type IconSizeKey, RADIUS, type Radius, type RadiusKey, ResolvedColors, SHADOWS, SPACING, type Spacing, type SpacingKey, TYPOGRAPHY, Theme, ThemeColors, ThemeProvider, type ThemeProviderProps, type Typography, type TypographyKey, type UseConfirmDialogOptions, type UseConfirmDialogResult, configureIconFamilies, defaultDark, defaultLight, deriveColors, getResponsiveFontSize, impactHeavy, impactLight, impactMedium, notificationError, notificationSuccess, notificationWarning, renderIcon, richHaptics, selectionAsync, useConfirmDialog, useTheme };
392
+ export { BREAKPOINTS, ColorScheme, ICON_SIZES, Icon, type IconFamily, type IconProps, type IconSize, type IconSizeKey, RADIUS, type Radius, type RadiusKey, ResolvedColors, SHADOWS, SPACING, type Spacing, type SpacingKey, TYPOGRAPHY, Theme, ThemeColors, ThemeProvider, type ThemeProviderProps, type Typography, type TypographyKey, type UseConfirmDialogOptions, type UseConfirmDialogResult, configureIconFamilies, defaultDark, defaultLight, deriveColors, getResponsiveFontSize, getValidIconNames, impactHeavy, impactLight, impactMedium, notificationError, notificationSuccess, notificationWarning, renderIcon, richHaptics, selectionAsync, useConfirmDialog, useTheme };