@retray-dev/ui-kit 10.1.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 (112) hide show
  1. package/COMPONENTS.md +136 -5
  2. package/README.md +4 -4
  3. package/dist/Accordion.js +1 -1
  4. package/dist/Accordion.mjs +2 -2
  5. package/dist/AlertBanner.js +1 -1
  6. package/dist/AlertBanner.mjs +2 -2
  7. package/dist/AppHeader.js +1 -1
  8. package/dist/AppHeader.mjs +3 -3
  9. package/dist/Badge.js +1 -1
  10. package/dist/Badge.mjs +2 -2
  11. package/dist/Button.js +1 -1
  12. package/dist/Button.mjs +2 -2
  13. package/dist/CategoryStrip.js +1 -1
  14. package/dist/CategoryStrip.mjs +2 -2
  15. package/dist/Chip.js +1 -1
  16. package/dist/Chip.mjs +2 -2
  17. package/dist/ConfirmDialog.js +1 -1
  18. package/dist/ConfirmDialog.mjs +3 -3
  19. package/dist/CurrencyInput.js +1 -1
  20. package/dist/CurrencyInput.mjs +3 -3
  21. package/dist/DetailRow.d.mts +1 -1
  22. package/dist/DetailRow.d.ts +1 -1
  23. package/dist/DetailRow.js +1 -1
  24. package/dist/DetailRow.mjs +2 -2
  25. package/dist/EmptyState.js +1 -1
  26. package/dist/EmptyState.mjs +3 -3
  27. package/dist/ErrorBoundary.js +1 -1
  28. package/dist/ErrorBoundary.mjs +2 -2
  29. package/dist/IconButton.js +1 -1
  30. package/dist/IconButton.mjs +2 -2
  31. package/dist/IconPicker.d.mts +17 -0
  32. package/dist/IconPicker.d.ts +17 -0
  33. package/dist/IconPicker.js +997 -0
  34. package/dist/IconPicker.mjs +7 -0
  35. package/dist/ImageUpload.d.mts +3 -1
  36. package/dist/ImageUpload.d.ts +3 -1
  37. package/dist/ImageUpload.js +28 -10
  38. package/dist/ImageUpload.mjs +1 -1
  39. package/dist/ImageViewer.js +1 -1
  40. package/dist/ImageViewer.mjs +4 -4
  41. package/dist/Input.js +1 -1
  42. package/dist/Input.mjs +2 -2
  43. package/dist/LabelValue.js +1 -1
  44. package/dist/LabelValue.mjs +2 -2
  45. package/dist/ListItem.js +1 -1
  46. package/dist/ListItem.mjs +2 -2
  47. package/dist/MediaCard.js +1 -1
  48. package/dist/MediaCard.mjs +2 -2
  49. package/dist/MenuItem.js +1 -1
  50. package/dist/MenuItem.mjs +2 -2
  51. package/dist/NumberStepper.d.mts +19 -0
  52. package/dist/NumberStepper.d.ts +19 -0
  53. package/dist/NumberStepper.js +410 -0
  54. package/dist/NumberStepper.mjs +9 -0
  55. package/dist/PagerDots.js +1 -1
  56. package/dist/PagerDots.mjs +2 -2
  57. package/dist/PricingCard.js +1 -1
  58. package/dist/PricingCard.mjs +4 -4
  59. package/dist/SelectableGrid.js +1 -1
  60. package/dist/SelectableGrid.mjs +2 -2
  61. package/dist/SheetSelect.js +1 -1
  62. package/dist/SheetSelect.mjs +2 -2
  63. package/dist/TabBar.js +1 -1
  64. package/dist/TabBar.mjs +2 -2
  65. package/dist/Textarea.js +1 -1
  66. package/dist/Textarea.mjs +2 -2
  67. package/dist/Toggle.js +1 -1
  68. package/dist/Toggle.mjs +2 -2
  69. package/dist/chunk-53Z3NYGE.mjs +742 -0
  70. package/dist/{chunk-VQ57HWPL.mjs → chunk-6L4G6PBT.mjs} +1 -1
  71. package/dist/{chunk-6OAZJ577.mjs → chunk-6SECQ2ZF.mjs} +2 -2
  72. package/dist/{chunk-KIHCWCWL.mjs → chunk-7LWRKMF5.mjs} +1 -1
  73. package/dist/{chunk-4I7D47FH.mjs → chunk-AJRVDP2H.mjs} +3 -3
  74. package/dist/{chunk-6MKGPAR2.mjs → chunk-BEMIQXXU.mjs} +1 -1
  75. package/dist/chunk-BUMAMSTZ.mjs +126 -0
  76. package/dist/{chunk-UREA2GYY.mjs → chunk-DYT7BG5I.mjs} +1 -1
  77. package/dist/{chunk-WOEYDUJZ.mjs → chunk-ELXBDILQ.mjs} +2 -2
  78. package/dist/{chunk-A4MDAP7G.mjs → chunk-FCSSQK3L.mjs} +1 -1
  79. package/dist/{chunk-2TFTAWVJ.mjs → chunk-HTHGSXFG.mjs} +1 -1
  80. package/dist/{chunk-VGTDN7SW.mjs → chunk-IX3NYLYQ.mjs} +1 -1
  81. package/dist/{chunk-T7XZ7H7Y.mjs → chunk-KA7LTET3.mjs} +17 -3
  82. package/dist/{chunk-URI2WBIV.mjs → chunk-KOO4WITD.mjs} +1 -1
  83. package/dist/{chunk-JUXSWN54.mjs → chunk-NMU5FMQJ.mjs} +1 -1
  84. package/dist/{chunk-LXJIIOYQ.mjs → chunk-RYZC432S.mjs} +1 -1
  85. package/dist/{chunk-JB67UOB5.mjs → chunk-S2R7UVOE.mjs} +1 -1
  86. package/dist/{chunk-ZUR7AU5R.mjs → chunk-SXLKNTA4.mjs} +1 -1
  87. package/dist/{chunk-3U4SSNWP.mjs → chunk-T2KCAHOS.mjs} +1 -1
  88. package/dist/{chunk-ZJKGQMYH.mjs → chunk-TB6SD2FT.mjs} +1 -1
  89. package/dist/{chunk-AZJF2BLK.mjs → chunk-TBNZHU6C.mjs} +1 -1
  90. package/dist/{chunk-Y4GL2MHX.mjs → chunk-TZDGAP5N.mjs} +28 -10
  91. package/dist/{chunk-CZCQZHG6.mjs → chunk-U2XJFYED.mjs} +1 -1
  92. package/dist/{chunk-TERDKCLE.mjs → chunk-VF2ATYN3.mjs} +1 -1
  93. package/dist/{chunk-OHBNABL5.mjs → chunk-VKID2D2I.mjs} +1 -1
  94. package/dist/{chunk-KZL5VTYK.mjs → chunk-WYEUNUTP.mjs} +1 -1
  95. package/dist/{chunk-DJ7RN37L.mjs → chunk-YJ7I257J.mjs} +1 -1
  96. package/dist/{chunk-NA7PARID.mjs → chunk-Z4VHZ7B5.mjs} +1 -1
  97. package/dist/{chunk-MLF3EZFW.mjs → chunk-Z6SFHN6T.mjs} +1 -1
  98. package/dist/{chunk-4K625MVM.mjs → chunk-ZZ2R6KZ3.mjs} +1 -1
  99. package/dist/index.d.mts +4 -1
  100. package/dist/index.d.ts +4 -1
  101. package/dist/index.js +892 -12
  102. package/dist/index.mjs +33 -31
  103. package/package.json +1 -1
  104. package/src/components/DetailRow/DetailRow.tsx +1 -1
  105. package/src/components/IconPicker/IconPicker.tsx +383 -0
  106. package/src/components/IconPicker/index.ts +1 -0
  107. package/src/components/ImageUpload/ImageUpload.tsx +34 -12
  108. package/src/components/NumberStepper/NumberStepper.tsx +147 -0
  109. package/src/components/NumberStepper/index.ts +1 -0
  110. package/src/index.ts +3 -1
  111. package/src/utils/curatedIcons.ts +286 -0
  112. package/src/utils/icons.ts +20 -2
@@ -0,0 +1,7 @@
1
+ export { IconPicker } from './chunk-53Z3NYGE.mjs';
2
+ import './chunk-EJ7ZPXOH.mjs';
3
+ import './chunk-QY3X2UYR.mjs';
4
+ import './chunk-KA7LTET3.mjs';
5
+ import './chunk-SOYNZDVY.mjs';
6
+ import './chunk-2CE3TQVY.mjs';
7
+ import './chunk-Y6FXYEAI.mjs';
@@ -10,6 +10,8 @@ interface ImageUploadProps {
10
10
  loading?: boolean;
11
11
  /** Text shown when no image is selected. */
12
12
  placeholder?: string;
13
+ /** Whether to show the placeholder text. Use false for compact/avatar variants. */
14
+ showPlaceholderText?: boolean;
13
15
  /** Width of the upload area. Defaults to full width (undefined). */
14
16
  width?: number;
15
17
  /** Height of the upload area. Defaults to 200. */
@@ -22,6 +24,6 @@ interface ImageUploadProps {
22
24
  style?: ViewStyle;
23
25
  accessibilityLabel?: string;
24
26
  }
25
- declare function ImageUpload({ value, onChange, loading, placeholder, width, height, borderRadius, resizeMode, disabled, style, accessibilityLabel, }: ImageUploadProps): React.JSX.Element;
27
+ declare function ImageUpload({ value, onChange, loading, placeholder, showPlaceholderText, width, height, borderRadius, resizeMode, disabled, style, accessibilityLabel, }: ImageUploadProps): React.JSX.Element;
26
28
 
27
29
  export { ImageUpload, type ImageUploadProps };
@@ -10,6 +10,8 @@ interface ImageUploadProps {
10
10
  loading?: boolean;
11
11
  /** Text shown when no image is selected. */
12
12
  placeholder?: string;
13
+ /** Whether to show the placeholder text. Use false for compact/avatar variants. */
14
+ showPlaceholderText?: boolean;
13
15
  /** Width of the upload area. Defaults to full width (undefined). */
14
16
  width?: number;
15
17
  /** Height of the upload area. Defaults to 200. */
@@ -22,6 +24,6 @@ interface ImageUploadProps {
22
24
  style?: ViewStyle;
23
25
  accessibilityLabel?: string;
24
26
  }
25
- declare function ImageUpload({ value, onChange, loading, placeholder, width, height, borderRadius, resizeMode, disabled, style, accessibilityLabel, }: ImageUploadProps): React.JSX.Element;
27
+ declare function ImageUpload({ value, onChange, loading, placeholder, showPlaceholderText, width, height, borderRadius, resizeMode, disabled, style, accessibilityLabel, }: ImageUploadProps): React.JSX.Element;
26
28
 
27
29
  export { ImageUpload, type ImageUploadProps };
@@ -300,6 +300,7 @@ function ImageUpload({
300
300
  onChange,
301
301
  loading = false,
302
302
  placeholder = "Tap to add image",
303
+ showPlaceholderText = true,
303
304
  width,
304
305
  height = 200,
305
306
  borderRadius = RADIUS.lg,
@@ -312,23 +313,31 @@ function ImageUpload({
312
313
  const handlePress = async () => {
313
314
  if (disabled || loading) return;
314
315
  impactLight();
315
- let ImagePicker;
316
+ let picker;
316
317
  try {
317
- ImagePicker = await import('expo-image-picker');
318
+ const mod = await import('expo-image-picker/build/ExponentImagePicker');
319
+ picker = mod.default;
318
320
  } catch {
319
- if (__DEV__) console.warn("[ImageUpload] expo-image-picker not installed. Add it as a dependency.");
320
- return;
321
+ try {
322
+ picker = await import('expo-image-picker');
323
+ } catch {
324
+ if (__DEV__) console.warn("[ImageUpload] expo-image-picker not installed.");
325
+ return;
326
+ }
321
327
  }
322
328
  if (reactNative.Platform.OS !== "web") {
323
- const { status } = await ImagePicker.requestMediaLibraryPermissionsAsync();
324
- if (status !== "granted") return;
329
+ try {
330
+ const { status } = await picker.requestMediaLibraryPermissionsAsync();
331
+ if (status !== "granted") return;
332
+ } catch {
333
+ }
325
334
  }
326
- const result = await ImagePicker.launchImageLibraryAsync({
335
+ const result = await picker.launchImageLibraryAsync({
327
336
  mediaTypes: ["images"],
328
337
  allowsEditing: true,
329
338
  quality: 0.8
330
339
  });
331
- if (!result.canceled && result.assets[0]) {
340
+ if (!result.canceled && result.assets?.[0]) {
332
341
  onChange?.(result.assets[0].uri);
333
342
  }
334
343
  };
@@ -361,7 +370,15 @@ function ImageUpload({
361
370
  style: [reactNative.StyleSheet.absoluteFillObject, { borderRadius }],
362
371
  resizeMode
363
372
  }
364
- ) : /* @__PURE__ */ React3__default.default.createElement(reactNative.View, { style: styles2.placeholder }, /* @__PURE__ */ React3__default.default.createElement(vectorIcons.Feather, { name: "image", size: ms(28), color: colors.foregroundMuted }), /* @__PURE__ */ React3__default.default.createElement(reactNative.Text, { style: [styles2.placeholderText, { color: colors.foregroundMuted }], allowFontScaling: true }, placeholder)),
373
+ ) : /* @__PURE__ */ React3__default.default.createElement(reactNative.View, { style: styles2.placeholder }, /* @__PURE__ */ React3__default.default.createElement(vectorIcons.Feather, { name: "image", size: ms(28), color: colors.foregroundMuted }), showPlaceholderText ? /* @__PURE__ */ React3__default.default.createElement(
374
+ reactNative.Text,
375
+ {
376
+ style: [styles2.placeholderText, { color: colors.foregroundMuted }],
377
+ numberOfLines: 1,
378
+ allowFontScaling: true
379
+ },
380
+ placeholder
381
+ ) : null),
365
382
  loading ? /* @__PURE__ */ React3__default.default.createElement(reactNative.View, { style: [styles2.loadingOverlay, { backgroundColor: colors.overlay }] }, /* @__PURE__ */ React3__default.default.createElement(Spinner, { size: "md" })) : null,
366
383
  value && !loading ? /* @__PURE__ */ React3__default.default.createElement(reactNative.View, { style: styles2.editBadge, pointerEvents: "none" }, /* @__PURE__ */ React3__default.default.createElement(reactNative.View, { style: [styles2.editBadgeInner, { backgroundColor: colors.overlay }] }, /* @__PURE__ */ React3__default.default.createElement(vectorIcons.Feather, { name: "edit-2", size: ms(12), color: "#fff" }))) : null
367
384
  );
@@ -375,7 +392,8 @@ var styles2 = reactNative.StyleSheet.create({
375
392
  },
376
393
  placeholderText: {
377
394
  fontFamily: "Sohne-Regular",
378
- fontSize: ms(13)
395
+ fontSize: ms(13),
396
+ textAlign: "center"
379
397
  },
380
398
  loadingOverlay: {
381
399
  ...reactNative.StyleSheet.absoluteFillObject,
@@ -1,4 +1,4 @@
1
- export { ImageUpload } from './chunk-Y4GL2MHX.mjs';
1
+ export { ImageUpload } from './chunk-TZDGAP5N.mjs';
2
2
  import './chunk-WBOOUHSS.mjs';
3
3
  import './chunk-3DKJ2GIC.mjs';
4
4
  import './chunk-EJ7ZPXOH.mjs';
@@ -229,7 +229,7 @@ var ALL_FAMILIES = [
229
229
  ];
230
230
  var activeFamilies = ALL_FAMILIES;
231
231
  var resolvedCache = null;
232
- function buildCache() {
232
+ function buildCache(families) {
233
233
  const cache = /* @__PURE__ */ new Map();
234
234
  for (const family of activeFamilies) {
235
235
  const glyphMap = family.getGlyphMap();
@@ -1,10 +1,10 @@
1
- export { ImageViewer } from './chunk-WOEYDUJZ.mjs';
2
- import './chunk-4K625MVM.mjs';
3
- import './chunk-3U4SSNWP.mjs';
1
+ export { ImageViewer } from './chunk-ELXBDILQ.mjs';
2
+ import './chunk-ZZ2R6KZ3.mjs';
3
+ import './chunk-T2KCAHOS.mjs';
4
4
  import './chunk-3DKJ2GIC.mjs';
5
5
  import './chunk-EJ7ZPXOH.mjs';
6
6
  import './chunk-DVK4G2GT.mjs';
7
- import './chunk-T7XZ7H7Y.mjs';
7
+ import './chunk-KA7LTET3.mjs';
8
8
  import './chunk-SOYNZDVY.mjs';
9
9
  import './chunk-2CE3TQVY.mjs';
10
10
  import './chunk-Y6FXYEAI.mjs';
package/dist/Input.js CHANGED
@@ -159,7 +159,7 @@ var ALL_FAMILIES = [
159
159
  ];
160
160
  var activeFamilies = ALL_FAMILIES;
161
161
  var resolvedCache = null;
162
- function buildCache() {
162
+ function buildCache(families) {
163
163
  const cache = /* @__PURE__ */ new Map();
164
164
  for (const family of activeFamilies) {
165
165
  const glyphMap = family.getGlyphMap();
package/dist/Input.mjs CHANGED
@@ -1,6 +1,6 @@
1
- export { Input } from './chunk-ZUR7AU5R.mjs';
1
+ export { Input } from './chunk-SXLKNTA4.mjs';
2
2
  import './chunk-DVK4G2GT.mjs';
3
- import './chunk-T7XZ7H7Y.mjs';
3
+ import './chunk-KA7LTET3.mjs';
4
4
  import './chunk-SOYNZDVY.mjs';
5
5
  import './chunk-2CE3TQVY.mjs';
6
6
  import './chunk-Y6FXYEAI.mjs';
@@ -155,7 +155,7 @@ var ALL_FAMILIES = [
155
155
  ];
156
156
  var activeFamilies = ALL_FAMILIES;
157
157
  var resolvedCache = null;
158
- function buildCache() {
158
+ function buildCache(families) {
159
159
  const cache = /* @__PURE__ */ new Map();
160
160
  for (const family of activeFamilies) {
161
161
  const glyphMap = family.getGlyphMap();
@@ -1,5 +1,5 @@
1
- export { LabelValue } from './chunk-A4MDAP7G.mjs';
2
- import './chunk-T7XZ7H7Y.mjs';
1
+ export { LabelValue } from './chunk-FCSSQK3L.mjs';
2
+ import './chunk-KA7LTET3.mjs';
3
3
  import './chunk-SOYNZDVY.mjs';
4
4
  import './chunk-2CE3TQVY.mjs';
5
5
  import './chunk-Y6FXYEAI.mjs';
package/dist/ListItem.js CHANGED
@@ -218,7 +218,7 @@ var ALL_FAMILIES = [
218
218
  ];
219
219
  var activeFamilies = ALL_FAMILIES;
220
220
  var resolvedCache = null;
221
- function buildCache() {
221
+ function buildCache(families) {
222
222
  const cache = /* @__PURE__ */ new Map();
223
223
  for (const family of activeFamilies) {
224
224
  const glyphMap = family.getGlyphMap();
package/dist/ListItem.mjs CHANGED
@@ -1,9 +1,9 @@
1
- export { ListItem } from './chunk-OHBNABL5.mjs';
1
+ export { ListItem } from './chunk-VKID2D2I.mjs';
2
2
  import './chunk-3DKJ2GIC.mjs';
3
3
  import './chunk-EJ7ZPXOH.mjs';
4
4
  import './chunk-DVK4G2GT.mjs';
5
5
  import './chunk-QY3X2UYR.mjs';
6
- import './chunk-T7XZ7H7Y.mjs';
6
+ import './chunk-KA7LTET3.mjs';
7
7
  import './chunk-SOYNZDVY.mjs';
8
8
  import './chunk-2CE3TQVY.mjs';
9
9
  import './chunk-Y6FXYEAI.mjs';
package/dist/MediaCard.js CHANGED
@@ -217,7 +217,7 @@ var ALL_FAMILIES = [
217
217
  ];
218
218
  var activeFamilies = ALL_FAMILIES;
219
219
  var resolvedCache = null;
220
- function buildCache() {
220
+ function buildCache(families) {
221
221
  const cache = /* @__PURE__ */ new Map();
222
222
  for (const family of activeFamilies) {
223
223
  const glyphMap = family.getGlyphMap();
@@ -1,9 +1,9 @@
1
- export { MediaCard } from './chunk-VGTDN7SW.mjs';
1
+ export { MediaCard } from './chunk-IX3NYLYQ.mjs';
2
2
  import './chunk-YNROWHQJ.mjs';
3
3
  import './chunk-EJ7ZPXOH.mjs';
4
4
  import './chunk-DVK4G2GT.mjs';
5
5
  import './chunk-QY3X2UYR.mjs';
6
- import './chunk-T7XZ7H7Y.mjs';
6
+ import './chunk-KA7LTET3.mjs';
7
7
  import './chunk-SOYNZDVY.mjs';
8
8
  import './chunk-2CE3TQVY.mjs';
9
9
  import './chunk-Y6FXYEAI.mjs';
package/dist/MenuItem.js CHANGED
@@ -217,7 +217,7 @@ var ALL_FAMILIES = [
217
217
  ];
218
218
  var activeFamilies = ALL_FAMILIES;
219
219
  var resolvedCache = null;
220
- function buildCache() {
220
+ function buildCache(families) {
221
221
  const cache = /* @__PURE__ */ new Map();
222
222
  for (const family of activeFamilies) {
223
223
  const glyphMap = family.getGlyphMap();
package/dist/MenuItem.mjs CHANGED
@@ -1,9 +1,9 @@
1
- export { MenuItem } from './chunk-ZJKGQMYH.mjs';
1
+ export { MenuItem } from './chunk-TB6SD2FT.mjs';
2
2
  import './chunk-3DKJ2GIC.mjs';
3
3
  import './chunk-EJ7ZPXOH.mjs';
4
4
  import './chunk-DVK4G2GT.mjs';
5
5
  import './chunk-QY3X2UYR.mjs';
6
- import './chunk-T7XZ7H7Y.mjs';
6
+ import './chunk-KA7LTET3.mjs';
7
7
  import './chunk-SOYNZDVY.mjs';
8
8
  import './chunk-2CE3TQVY.mjs';
9
9
  import './chunk-Y6FXYEAI.mjs';
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import { ViewStyle } from 'react-native';
3
+
4
+ type NumberStepperSize = 'sm' | 'md' | 'lg';
5
+ interface NumberStepperProps {
6
+ value: number;
7
+ onValueChange: (value: number) => void;
8
+ min?: number;
9
+ max?: number;
10
+ step?: number;
11
+ size?: NumberStepperSize;
12
+ disabled?: boolean;
13
+ style?: ViewStyle;
14
+ accessibilityLabel?: string;
15
+ }
16
+ declare function NumberStepperBase({ value, onValueChange, min, max, step, size, disabled, style, accessibilityLabel, }: NumberStepperProps): React.JSX.Element;
17
+ declare const NumberStepper: React.MemoExoticComponent<typeof NumberStepperBase>;
18
+
19
+ export { NumberStepper, type NumberStepperProps, type NumberStepperSize };
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import { ViewStyle } from 'react-native';
3
+
4
+ type NumberStepperSize = 'sm' | 'md' | 'lg';
5
+ interface NumberStepperProps {
6
+ value: number;
7
+ onValueChange: (value: number) => void;
8
+ min?: number;
9
+ max?: number;
10
+ step?: number;
11
+ size?: NumberStepperSize;
12
+ disabled?: boolean;
13
+ style?: ViewStyle;
14
+ accessibilityLabel?: string;
15
+ }
16
+ declare function NumberStepperBase({ value, onValueChange, min, max, step, size, disabled, style, accessibilityLabel, }: NumberStepperProps): React.JSX.Element;
17
+ declare const NumberStepper: React.MemoExoticComponent<typeof NumberStepperBase>;
18
+
19
+ export { NumberStepper, type NumberStepperProps, type NumberStepperSize };