@retray-dev/ui-kit 13.2.0 → 13.4.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 (334) hide show
  1. package/CHANGELOG.md +680 -0
  2. package/CONSUMER.md +2 -0
  3. package/README.md +4 -4
  4. package/SKILL.md +276 -12
  5. package/dist/Accordion.d.mts +6 -6
  6. package/dist/Accordion.d.ts +6 -6
  7. package/dist/Accordion.js +39 -40
  8. package/dist/Accordion.mjs +4 -4
  9. package/dist/AlertBanner.d.mts +3 -3
  10. package/dist/AlertBanner.d.ts +3 -3
  11. package/dist/AlertBanner.js +7 -13
  12. package/dist/AlertBanner.mjs +4 -4
  13. package/dist/AppHeader.d.mts +4 -4
  14. package/dist/AppHeader.d.ts +4 -4
  15. package/dist/AppHeader.js +37 -28
  16. package/dist/AppHeader.mjs +6 -6
  17. package/dist/Avatar.d.mts +4 -4
  18. package/dist/Avatar.d.ts +4 -4
  19. package/dist/Avatar.mjs +2 -2
  20. package/dist/Badge.d.mts +5 -5
  21. package/dist/Badge.d.ts +5 -5
  22. package/dist/Badge.js +7 -13
  23. package/dist/Badge.mjs +3 -3
  24. package/dist/Button.d.mts +5 -5
  25. package/dist/Button.d.ts +5 -5
  26. package/dist/Button.js +31 -29
  27. package/dist/Button.mjs +5 -5
  28. package/dist/ButtonGroup.d.mts +3 -3
  29. package/dist/ButtonGroup.d.ts +3 -3
  30. package/dist/Card.d.mts +13 -13
  31. package/dist/Card.d.ts +13 -13
  32. package/dist/Card.js +23 -14
  33. package/dist/Card.mjs +4 -4
  34. package/dist/CategoryStrip.d.mts +3 -3
  35. package/dist/CategoryStrip.d.ts +3 -3
  36. package/dist/CategoryStrip.js +30 -27
  37. package/dist/CategoryStrip.mjs +5 -5
  38. package/dist/Checkbox.d.mts +2 -2
  39. package/dist/Checkbox.d.ts +2 -2
  40. package/dist/Checkbox.js +23 -14
  41. package/dist/Checkbox.mjs +3 -3
  42. package/dist/Chip.d.mts +5 -5
  43. package/dist/Chip.d.ts +5 -5
  44. package/dist/Chip.js +30 -27
  45. package/dist/Chip.mjs +5 -5
  46. package/dist/ConfirmDialog.d.mts +2 -2
  47. package/dist/ConfirmDialog.d.ts +2 -2
  48. package/dist/ConfirmDialog.js +64 -58
  49. package/dist/ConfirmDialog.mjs +7 -6
  50. package/dist/CurrencyDisplay.d.mts +3 -3
  51. package/dist/CurrencyDisplay.d.ts +3 -3
  52. package/dist/CurrencyDisplay.mjs +2 -2
  53. package/dist/CurrencyInput.d.mts +2 -2
  54. package/dist/CurrencyInput.d.ts +2 -2
  55. package/dist/CurrencyInput.js +7 -13
  56. package/dist/CurrencyInput.mjs +4 -4
  57. package/dist/DetailRow.d.mts +6 -6
  58. package/dist/DetailRow.d.ts +6 -6
  59. package/dist/DetailRow.js +7 -13
  60. package/dist/DetailRow.mjs +3 -3
  61. package/dist/EmptyState.d.mts +4 -4
  62. package/dist/EmptyState.d.ts +4 -4
  63. package/dist/EmptyState.js +31 -29
  64. package/dist/EmptyState.mjs +6 -6
  65. package/dist/ErrorBoundary.d.mts +9 -7
  66. package/dist/ErrorBoundary.d.ts +9 -7
  67. package/dist/ErrorBoundary.js +33 -29
  68. package/dist/ErrorBoundary.mjs +5 -5
  69. package/dist/Form.d.mts +9 -9
  70. package/dist/Form.d.ts +9 -9
  71. package/dist/Form.mjs +2 -2
  72. package/dist/HolographicCard.d.mts +2 -2
  73. package/dist/HolographicCard.d.ts +2 -2
  74. package/dist/HolographicCard.js +23 -14
  75. package/dist/HolographicCard.mjs +2 -2
  76. package/dist/IconButton.d.mts +4 -4
  77. package/dist/IconButton.d.ts +4 -4
  78. package/dist/IconButton.js +30 -27
  79. package/dist/IconButton.mjs +4 -4
  80. package/dist/IconPicker.d.mts +2 -2
  81. package/dist/IconPicker.d.ts +2 -2
  82. package/dist/IconPicker.js +40 -45
  83. package/dist/IconPicker.mjs +6 -6
  84. package/dist/Image.d.mts +18 -0
  85. package/dist/Image.d.ts +18 -0
  86. package/dist/Image.js +53 -0
  87. package/dist/Image.mjs +2 -0
  88. package/dist/ImageUpload.d.mts +2 -2
  89. package/dist/ImageUpload.d.ts +2 -2
  90. package/dist/ImageUpload.js +24 -15
  91. package/dist/ImageUpload.mjs +5 -5
  92. package/dist/ImageViewer.d.mts +2 -2
  93. package/dist/ImageViewer.d.ts +2 -2
  94. package/dist/ImageViewer.js +31 -28
  95. package/dist/ImageViewer.mjs +6 -6
  96. package/dist/Input.d.mts +4 -4
  97. package/dist/Input.d.ts +4 -4
  98. package/dist/Input.js +7 -13
  99. package/dist/Input.mjs +3 -3
  100. package/dist/ItemGroup.d.mts +23 -0
  101. package/dist/ItemGroup.d.ts +23 -0
  102. package/dist/{ListGroup.js → ItemGroup.js} +11 -13
  103. package/dist/ItemGroup.mjs +4 -0
  104. package/dist/LabelValue.d.mts +4 -4
  105. package/dist/LabelValue.d.ts +4 -4
  106. package/dist/LabelValue.js +7 -13
  107. package/dist/LabelValue.mjs +3 -3
  108. package/dist/ListItem.d.mts +6 -6
  109. package/dist/ListItem.d.ts +6 -6
  110. package/dist/ListItem.js +30 -27
  111. package/dist/ListItem.mjs +5 -5
  112. package/dist/MediaCard.d.mts +6 -6
  113. package/dist/MediaCard.d.ts +6 -6
  114. package/dist/MediaCard.js +30 -27
  115. package/dist/MediaCard.mjs +5 -5
  116. package/dist/MenuItem.d.mts +5 -5
  117. package/dist/MenuItem.d.ts +5 -5
  118. package/dist/MenuItem.js +30 -27
  119. package/dist/MenuItem.mjs +5 -5
  120. package/dist/MonthPicker.d.mts +2 -2
  121. package/dist/MonthPicker.d.ts +2 -2
  122. package/dist/MonthPicker.js +23 -14
  123. package/dist/MonthPicker.mjs +3 -3
  124. package/dist/NumberStepper.d.mts +3 -3
  125. package/dist/NumberStepper.d.ts +3 -3
  126. package/dist/NumberStepper.js +30 -27
  127. package/dist/NumberStepper.mjs +5 -5
  128. package/dist/PagerDots.d.mts +2 -2
  129. package/dist/PagerDots.d.ts +2 -2
  130. package/dist/PagerDots.js +30 -27
  131. package/dist/PagerDots.mjs +4 -4
  132. package/dist/Pressable.d.mts +3 -27
  133. package/dist/Pressable.d.ts +3 -27
  134. package/dist/Pressable.js +23 -14
  135. package/dist/Pressable.mjs +2 -2
  136. package/dist/PricingCard.d.mts +2 -2
  137. package/dist/PricingCard.d.ts +2 -2
  138. package/dist/PricingCard.js +31 -29
  139. package/dist/PricingCard.mjs +7 -7
  140. package/dist/Progress.d.mts +2 -2
  141. package/dist/Progress.d.ts +2 -2
  142. package/dist/Progress.mjs +2 -2
  143. package/dist/RadioGroup.d.mts +2 -2
  144. package/dist/RadioGroup.d.ts +2 -2
  145. package/dist/RadioGroup.js +23 -14
  146. package/dist/RadioGroup.mjs +3 -3
  147. package/dist/RetrayProvider.d.mts +1 -1
  148. package/dist/RetrayProvider.d.ts +1 -1
  149. package/dist/RetrayProvider.js +14 -34
  150. package/dist/RetrayProvider.mjs +3 -3
  151. package/dist/ScreenContainer.d.mts +24 -0
  152. package/dist/ScreenContainer.d.ts +24 -0
  153. package/dist/ScreenContainer.js +85 -0
  154. package/dist/ScreenContainer.mjs +3 -0
  155. package/dist/Select.d.mts +2 -2
  156. package/dist/Select.d.ts +2 -2
  157. package/dist/Select.js +38 -45
  158. package/dist/Select.mjs +3 -3
  159. package/dist/SelectableCard.d.mts +5 -5
  160. package/dist/SelectableCard.d.ts +5 -5
  161. package/dist/SelectableCard.js +30 -27
  162. package/dist/SelectableCard.mjs +5 -5
  163. package/dist/SelectableGrid.d.mts +5 -4
  164. package/dist/SelectableGrid.d.ts +5 -4
  165. package/dist/SelectableGrid.js +80 -44
  166. package/dist/SelectableGrid.mjs +5 -5
  167. package/dist/Separator.d.mts +4 -2
  168. package/dist/Separator.d.ts +4 -2
  169. package/dist/Separator.js +29 -1
  170. package/dist/Separator.mjs +3 -2
  171. package/dist/Sheet.d.mts +10 -10
  172. package/dist/Sheet.d.ts +10 -10
  173. package/dist/Sheet.js +59 -44
  174. package/dist/Sheet.mjs +4 -3
  175. package/dist/SheetSelect.d.mts +2 -2
  176. package/dist/SheetSelect.d.ts +2 -2
  177. package/dist/SheetSelect.js +30 -27
  178. package/dist/SheetSelect.mjs +5 -5
  179. package/dist/Skeleton.d.mts +5 -5
  180. package/dist/Skeleton.d.ts +5 -5
  181. package/dist/Skeleton.mjs +3 -3
  182. package/dist/Slider.d.mts +2 -2
  183. package/dist/Slider.d.ts +2 -2
  184. package/dist/Slider.js +23 -14
  185. package/dist/Slider.mjs +3 -3
  186. package/dist/Spinner.d.mts +2 -2
  187. package/dist/Spinner.d.ts +2 -2
  188. package/dist/Spinner.mjs +2 -2
  189. package/dist/Stats.d.mts +6 -6
  190. package/dist/Stats.d.ts +6 -6
  191. package/dist/Stats.js +30 -27
  192. package/dist/Stats.mjs +5 -5
  193. package/dist/Switch.d.mts +2 -2
  194. package/dist/Switch.d.ts +2 -2
  195. package/dist/Switch.js +23 -14
  196. package/dist/Switch.mjs +3 -3
  197. package/dist/TabBar.d.mts +3 -3
  198. package/dist/TabBar.d.ts +3 -3
  199. package/dist/TabBar.js +30 -27
  200. package/dist/TabBar.mjs +4 -4
  201. package/dist/Tabs.d.mts +13 -13
  202. package/dist/Tabs.d.ts +13 -13
  203. package/dist/Tabs.js +23 -14
  204. package/dist/Tabs.mjs +3 -3
  205. package/dist/Text.d.mts +4 -4
  206. package/dist/Text.d.ts +4 -4
  207. package/dist/Text.js +20 -2
  208. package/dist/Text.mjs +3 -3
  209. package/dist/Textarea.d.mts +3 -3
  210. package/dist/Textarea.d.ts +3 -3
  211. package/dist/Textarea.js +7 -13
  212. package/dist/Textarea.mjs +3 -3
  213. package/dist/Toast.d.mts +4 -4
  214. package/dist/Toast.d.ts +4 -4
  215. package/dist/Toast.mjs +2 -2
  216. package/dist/Toggle.d.mts +4 -4
  217. package/dist/Toggle.d.ts +4 -4
  218. package/dist/Toggle.js +30 -27
  219. package/dist/Toggle.mjs +4 -4
  220. package/dist/VirtualizedList.d.mts +28 -0
  221. package/dist/VirtualizedList.d.ts +28 -0
  222. package/dist/VirtualizedList.js +130 -0
  223. package/dist/VirtualizedList.mjs +3 -0
  224. package/dist/{chunk-MZ6WRTD2.mjs → chunk-24JTXQ2M.mjs} +7 -13
  225. package/dist/{chunk-OBV72JD4.mjs → chunk-2DDJ53DK.mjs} +9 -11
  226. package/dist/{chunk-H6MQL7PS.mjs → chunk-2J5OZOMX.mjs} +12 -6
  227. package/dist/{chunk-4NQFTHN3.mjs → chunk-3GE4UFV5.mjs} +2 -2
  228. package/dist/{chunk-KAGADD2O.mjs → chunk-3RIZCKRM.mjs} +2 -2
  229. package/dist/{chunk-DE25XTVQ.mjs → chunk-3VHFOSZR.mjs} +2 -2
  230. package/dist/{chunk-C5ZRMR2E.mjs → chunk-4PF4LKNT.mjs} +2 -2
  231. package/dist/{chunk-5MYNAAFE.mjs → chunk-5J7VKFSZ.mjs} +4 -4
  232. package/dist/{chunk-E2PONRJG.mjs → chunk-5TNQ573V.mjs} +2 -2
  233. package/dist/{chunk-CZN6L2QU.mjs → chunk-6T2DVIQT.mjs} +4 -4
  234. package/dist/{chunk-L3YKPTJQ.mjs → chunk-7CE6PDCQ.mjs} +2 -2
  235. package/dist/{chunk-Y6YS33GM.mjs → chunk-AHFEAY6M.mjs} +4 -4
  236. package/dist/{chunk-77UOVFIS.mjs → chunk-AZRATPNP.mjs} +2 -2
  237. package/dist/{chunk-UMZTPUB3.mjs → chunk-BGXOEFDM.mjs} +6 -31
  238. package/dist/{chunk-KC5QDYGZ.mjs → chunk-BMAAAJWN.mjs} +2 -2
  239. package/dist/{chunk-IJCMPVW5.mjs → chunk-BQMJQMWY.mjs} +2 -2
  240. package/dist/{chunk-COA2YZOX.mjs → chunk-BTPCY4C7.mjs} +4 -4
  241. package/dist/chunk-BVJAYPAD.mjs +55 -0
  242. package/dist/{chunk-RA6SAAFE.mjs → chunk-BWLVX2SQ.mjs} +4 -4
  243. package/dist/{chunk-HHOOFDBA.mjs → chunk-CCEM3HIJ.mjs} +5 -5
  244. package/dist/chunk-CTUFFKGS.mjs +30 -0
  245. package/dist/{chunk-EHGBHFMH.mjs → chunk-CYGYC7XT.mjs} +8 -4
  246. package/dist/{chunk-ESQDPO5E.mjs → chunk-DLAOTHHS.mjs} +7 -6
  247. package/dist/{chunk-QY3X2UYR.mjs → chunk-DYYPDQA2.mjs} +21 -7
  248. package/dist/{chunk-S44XWTTC.mjs → chunk-E4BJ5WXG.mjs} +3 -3
  249. package/dist/{chunk-HUSSF6TF.mjs → chunk-EQNCMDZC.mjs} +1 -1
  250. package/dist/{chunk-PI6RULJX.mjs → chunk-EQYTDFDD.mjs} +1 -1
  251. package/dist/{chunk-BULKGOIZ.mjs → chunk-FE26TPCI.mjs} +4 -4
  252. package/dist/{chunk-DBHSUUKU.mjs → chunk-FOUSI6JD.mjs} +1 -1
  253. package/dist/{chunk-KPTY7UYQ.mjs → chunk-GR7PKEKD.mjs} +1 -1
  254. package/dist/{chunk-RRKM4MKB.mjs → chunk-HLWGFBIF.mjs} +3 -3
  255. package/dist/chunk-HMKJGVXA.mjs +35 -0
  256. package/dist/{chunk-U6DEBYU5.mjs → chunk-IFGZUJFH.mjs} +3 -3
  257. package/dist/{chunk-2VIDP72N.mjs → chunk-K3V6OTVB.mjs} +1 -1
  258. package/dist/{chunk-K7TKID3V.mjs → chunk-K4YFTUMC.mjs} +3 -3
  259. package/dist/{chunk-NGEN2EES.mjs → chunk-MQAK2W6L.mjs} +14 -22
  260. package/dist/{chunk-CM2DG4MR.mjs → chunk-MSS3CD6F.mjs} +4 -4
  261. package/dist/{chunk-2QXJDRVU.mjs → chunk-NQYS6RPX.mjs} +4 -4
  262. package/dist/{chunk-62BBSSUF.mjs → chunk-P5KC3RTG.mjs} +1 -1
  263. package/dist/{chunk-K3QX2M26.mjs → chunk-PPKCGCZ3.mjs} +5 -5
  264. package/dist/{chunk-ITG4JQM3.mjs → chunk-QEE3EQ3N.mjs} +2 -2
  265. package/dist/{chunk-IDVUZIVY.mjs → chunk-RLPPRIJ7.mjs} +17 -33
  266. package/dist/{chunk-XCIG6HT2.mjs → chunk-S433IOQE.mjs} +2 -2
  267. package/dist/{chunk-IGU223UM.mjs → chunk-SWUZKVYO.mjs} +1 -1
  268. package/dist/{chunk-NPCBNGNE.mjs → chunk-T4KMKHTI.mjs} +55 -22
  269. package/dist/{chunk-7BZJRB77.mjs → chunk-UBTP4NPP.mjs} +4 -30
  270. package/dist/{chunk-TMH263OK.mjs → chunk-UEA2VYGW.mjs} +3 -3
  271. package/dist/chunk-VISIOH33.mjs +37 -0
  272. package/dist/{chunk-SZEKQAOY.mjs → chunk-VSKBODEY.mjs} +1 -1
  273. package/dist/{chunk-FTTI6T5Q.mjs → chunk-W422TEH2.mjs} +3 -3
  274. package/dist/{chunk-WIPEDNSD.mjs → chunk-WD5LBXPR.mjs} +4 -4
  275. package/dist/chunk-WFNGSYS4.mjs +111 -0
  276. package/dist/chunk-WR6DCNAE.mjs +65 -0
  277. package/dist/{chunk-ERWJPVX7.mjs → chunk-XKBB2UZU.mjs} +2 -2
  278. package/dist/{chunk-422IVD3H.mjs → chunk-Y5TPAKOS.mjs} +13 -17
  279. package/dist/{chunk-AZV7KNJI.mjs → chunk-YKWIMVGU.mjs} +2 -2
  280. package/dist/{chunk-ZKDKKQCE.mjs → chunk-YOXSXHDE.mjs} +4 -4
  281. package/dist/{chunk-PGQ6FMXS.mjs → chunk-ZO5BRTCW.mjs} +2 -2
  282. package/dist/{chunk-KSSVIFYR.mjs → chunk-ZQGCQ7SA.mjs} +14 -34
  283. package/dist/{chunk-ZTPYUU5C.mjs → chunk-ZRUUUVOO.mjs} +3 -3
  284. package/dist/{index-CY34hxPN.d.mts → index-CinAt5Uo.d.mts} +3 -3
  285. package/dist/{index-CY34hxPN.d.ts → index-CinAt5Uo.d.ts} +3 -3
  286. package/dist/index.d.mts +68 -18
  287. package/dist/index.d.ts +68 -18
  288. package/dist/index.js +965 -825
  289. package/dist/index.mjs +76 -69
  290. package/package.json +3 -2
  291. package/src/components/Accordion/Accordion.tsx +9 -18
  292. package/src/components/AppHeader/AppHeader.tsx +9 -1
  293. package/src/components/ConfirmDialog/ConfirmDialog.tsx +4 -34
  294. package/src/components/ErrorBoundary/ErrorBoundary.tsx +5 -2
  295. package/src/components/Image/Image.tsx +50 -0
  296. package/src/components/Image/index.ts +2 -0
  297. package/src/components/ImageUpload/ImageUpload.tsx +1 -1
  298. package/src/components/{ListGroup/ListGroup.tsx → ItemGroup/ItemGroup.tsx} +15 -29
  299. package/src/components/ItemGroup/index.ts +2 -0
  300. package/src/components/ListGroup/index.tsx +20 -0
  301. package/src/components/MenuGroup/index.tsx +20 -0
  302. package/src/components/Pressable/Pressable.tsx +0 -24
  303. package/src/components/ScreenContainer/ScreenContainer.tsx +94 -0
  304. package/src/components/ScreenContainer/index.ts +2 -0
  305. package/src/components/Select/Select.tsx +22 -30
  306. package/src/components/SelectableGrid/SelectableGrid.tsx +51 -19
  307. package/src/components/Separator/Separator.tsx +35 -2
  308. package/src/components/Sheet/Sheet.tsx +3 -34
  309. package/src/components/Tabs/Tabs.tsx +9 -9
  310. package/src/components/Tabs/index.ts +1 -1
  311. package/src/components/Text/Text.tsx +6 -0
  312. package/src/components/VirtualizedList/VirtualizedList.tsx +154 -0
  313. package/src/components/VirtualizedList/index.ts +2 -0
  314. package/src/hooks/useConfirmDialog.ts +2 -11
  315. package/src/hooks/useSheetModal.ts +40 -0
  316. package/src/index.ts +5 -1
  317. package/src/theme/colors.ts +19 -57
  318. package/src/tokens.ts +21 -7
  319. package/src/utils/curatedIcons.ts +9 -18
  320. package/src/utils/haptics.ts +10 -21
  321. package/src/utils/icons.ts +7 -14
  322. package/dist/ListGroup.d.mts +0 -34
  323. package/dist/ListGroup.d.ts +0 -34
  324. package/dist/ListGroup.mjs +0 -4
  325. package/dist/MenuGroup.d.mts +0 -34
  326. package/dist/MenuGroup.d.ts +0 -34
  327. package/dist/MenuGroup.js +0 -106
  328. package/dist/MenuGroup.mjs +0 -4
  329. package/dist/chunk-ARONDO7M.mjs +0 -40
  330. package/dist/chunk-EW2FIDSM.mjs +0 -29
  331. package/dist/chunk-S2VGME7X.mjs +0 -82
  332. package/src/components/ListGroup/index.ts +0 -1
  333. package/src/components/MenuGroup/MenuGroup.tsx +0 -145
  334. package/src/components/MenuGroup/index.ts +0 -1
package/dist/Toggle.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
  import { ViewStyle } from 'react-native';
3
3
 
4
4
  type ToggleVariant = 'default' | 'outline';
@@ -10,9 +10,9 @@ interface ToggleProps {
10
10
  size?: ToggleSize;
11
11
  label?: string;
12
12
  /** Icon to show when not pressed */
13
- icon?: React.ReactNode | ((pressed: boolean) => React.ReactNode);
13
+ icon?: React__default.ReactNode | ((pressed: boolean) => React__default.ReactNode);
14
14
  /** Icon to show when pressed/active. If omitted, a default check mark is used. */
15
- activeIcon?: React.ReactNode | ((pressed: boolean) => React.ReactNode);
15
+ activeIcon?: React__default.ReactNode | ((pressed: boolean) => React__default.ReactNode);
16
16
  /**
17
17
  * Icon name from `@expo/vector-icons` shown when not pressed.
18
18
  * See https://icons.expo.fyi. Takes precedence over `icon`.
@@ -31,6 +31,6 @@ interface ToggleProps {
31
31
  style?: ViewStyle;
32
32
  accessibilityLabel?: string;
33
33
  }
34
- declare function Toggle({ pressed, onPressedChange, variant, size, label, icon, activeIcon, iconName, activeIconName, iconColor, activeIconColor, disabled, style, accessibilityLabel, }: ToggleProps): React.JSX.Element;
34
+ declare function Toggle({ pressed, onPressedChange, variant, size, label, icon, activeIcon, iconName, activeIconName, iconColor, activeIconColor, disabled, style, accessibilityLabel, }: ToggleProps): React__default.JSX.Element;
35
35
 
36
36
  export { Toggle, type ToggleProps, type ToggleSize, type ToggleVariant };
package/dist/Toggle.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
  import { ViewStyle } from 'react-native';
3
3
 
4
4
  type ToggleVariant = 'default' | 'outline';
@@ -10,9 +10,9 @@ interface ToggleProps {
10
10
  size?: ToggleSize;
11
11
  label?: string;
12
12
  /** Icon to show when not pressed */
13
- icon?: React.ReactNode | ((pressed: boolean) => React.ReactNode);
13
+ icon?: React__default.ReactNode | ((pressed: boolean) => React__default.ReactNode);
14
14
  /** Icon to show when pressed/active. If omitted, a default check mark is used. */
15
- activeIcon?: React.ReactNode | ((pressed: boolean) => React.ReactNode);
15
+ activeIcon?: React__default.ReactNode | ((pressed: boolean) => React__default.ReactNode);
16
16
  /**
17
17
  * Icon name from `@expo/vector-icons` shown when not pressed.
18
18
  * See https://icons.expo.fyi. Takes precedence over `icon`.
@@ -31,6 +31,6 @@ interface ToggleProps {
31
31
  style?: ViewStyle;
32
32
  accessibilityLabel?: string;
33
33
  }
34
- declare function Toggle({ pressed, onPressedChange, variant, size, label, icon, activeIcon, iconName, activeIconName, iconColor, activeIconColor, disabled, style, accessibilityLabel, }: ToggleProps): React.JSX.Element;
34
+ declare function Toggle({ pressed, onPressedChange, variant, size, label, icon, activeIcon, iconName, activeIconName, iconColor, activeIconColor, disabled, style, accessibilityLabel, }: ToggleProps): React__default.JSX.Element;
35
35
 
36
36
  export { Toggle, type ToggleProps, type ToggleSize, type ToggleVariant };
package/dist/Toggle.js CHANGED
@@ -4,6 +4,7 @@ var React3 = require('react');
4
4
  var reactNative = require('react-native');
5
5
  var reactNativeEase = require('react-native-ease');
6
6
  var vectorIcons = require('@expo/vector-icons');
7
+ var Haptics = require('expo-haptics');
7
8
  var reactNativeSizeMatters = require('react-native-size-matters');
8
9
  var AntDesign = require('@expo/vector-icons/AntDesign');
9
10
  var Entypo = require('@expo/vector-icons/Entypo');
@@ -15,7 +16,26 @@ var pressto = require('pressto');
15
16
 
16
17
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
17
18
 
19
+ function _interopNamespace(e) {
20
+ if (e && e.__esModule) return e;
21
+ var n = Object.create(null);
22
+ if (e) {
23
+ Object.keys(e).forEach(function (k) {
24
+ if (k !== 'default') {
25
+ var d = Object.getOwnPropertyDescriptor(e, k);
26
+ Object.defineProperty(n, k, d.get ? d : {
27
+ enumerable: true,
28
+ get: function () { return e[k]; }
29
+ });
30
+ }
31
+ });
32
+ }
33
+ n.default = e;
34
+ return Object.freeze(n);
35
+ }
36
+
18
37
  var React3__default = /*#__PURE__*/_interopDefault(React3);
38
+ var Haptics__namespace = /*#__PURE__*/_interopNamespace(Haptics);
19
39
  var AntDesign__default = /*#__PURE__*/_interopDefault(AntDesign);
20
40
  var Entypo__default = /*#__PURE__*/_interopDefault(Entypo);
21
41
  var Feather__default = /*#__PURE__*/_interopDefault(Feather);
@@ -24,22 +44,11 @@ var MaterialIcons__default = /*#__PURE__*/_interopDefault(MaterialIcons);
24
44
  var Ionicons__default = /*#__PURE__*/_interopDefault(Ionicons);
25
45
 
26
46
  // src/components/Toggle/Toggle.tsx
27
- var _haptics = null;
28
- var _loaded = false;
29
- async function getHaptics() {
30
- if (reactNative.Platform.OS === "web") return null;
31
- if (!_loaded) {
32
- _loaded = true;
33
- try {
34
- _haptics = await import('expo-haptics');
35
- } catch {
36
- _haptics = null;
37
- }
38
- }
39
- return _haptics;
47
+ function maybeHaptics() {
48
+ return reactNative.Platform.OS === "web" ? null : Haptics__namespace;
40
49
  }
41
50
  function selectionAsync() {
42
- getHaptics().then((h) => h?.selectionAsync());
51
+ maybeHaptics()?.selectionAsync();
43
52
  }
44
53
  var ThemeContext = React3.createContext(void 0);
45
54
  function useTheme() {
@@ -61,23 +70,17 @@ var ALL_FAMILIES = [
61
70
  { name: "MaterialIcons", component: MaterialIcons__default.default },
62
71
  { name: "Ionicons", component: Ionicons__default.default }
63
72
  ];
64
- var glyphCacheInitialized = false;
65
- function ensureGlyphCache() {
66
- if (glyphCacheInitialized) return;
67
- glyphCacheInitialized = true;
68
- for (const entry of ALL_FAMILIES) {
69
- try {
70
- entry.glyphMap = entry.component.glyphMap;
71
- } catch {
72
- entry.glyphMap = {};
73
- }
73
+ function getGlyphMap(component) {
74
+ try {
75
+ return component.glyphMap ?? {};
76
+ } catch {
77
+ return {};
74
78
  }
75
79
  }
76
80
  function Icon({ name, size, color, family }) {
77
- ensureGlyphCache();
78
81
  const entry = family ? ALL_FAMILIES.find((f) => f.name === family) : ALL_FAMILIES.find((f) => {
79
- const glyphMap = f.glyphMap;
80
- return glyphMap ? name in glyphMap : false;
82
+ const glyphMap = getGlyphMap(f.component);
83
+ return name in glyphMap;
81
84
  });
82
85
  if (!entry) return null;
83
86
  return React3__default.default.createElement(entry.component, { name, size, color });
package/dist/Toggle.mjs CHANGED
@@ -1,7 +1,7 @@
1
- export { Toggle } from './chunk-RRKM4MKB.mjs';
1
+ export { Toggle } from './chunk-HLWGFBIF.mjs';
2
2
  import './chunk-M53LC4Q7.mjs';
3
3
  import './chunk-IFYMBOEN.mjs';
4
- import './chunk-ARONDO7M.mjs';
5
- import './chunk-MZ6WRTD2.mjs';
6
- import './chunk-KSSVIFYR.mjs';
4
+ import './chunk-CTUFFKGS.mjs';
5
+ import './chunk-24JTXQ2M.mjs';
6
+ import './chunk-ZQGCQ7SA.mjs';
7
7
  import './chunk-2CE3TQVY.mjs';
@@ -0,0 +1,28 @@
1
+ import React__default from 'react';
2
+ import { SectionListProps, SectionListRenderItemInfo, ViewStyle } from 'react-native';
3
+
4
+ interface VirtualizedListSection<T> {
5
+ title?: string;
6
+ data: readonly T[];
7
+ }
8
+ interface VirtualizedListProps<T> extends Omit<SectionListProps<T>, 'sections' | 'renderItem' | 'ListEmptyComponent'> {
9
+ sections: VirtualizedListSection<T>[];
10
+ renderItem: (info: SectionListRenderItemInfo<T>) => React__default.ReactElement | null;
11
+ /** Empty state shown when no data. */
12
+ emptyTitle?: string;
13
+ /** Empty state description. */
14
+ emptyDescription?: string;
15
+ /** Custom empty state component. Overrides emptyTitle/emptyDescription. */
16
+ emptyComponent?: React__default.ReactNode;
17
+ /** Enable pull-to-refresh. */
18
+ refreshing?: boolean;
19
+ onRefresh?: () => void;
20
+ /** Sticky section headers. Default true. */
21
+ stickyHeaders?: boolean;
22
+ /** Override section header color. Defaults to foregroundMuted. */
23
+ headerColor?: string;
24
+ style?: ViewStyle;
25
+ }
26
+ declare function VirtualizedList<T>({ sections, renderItem, emptyTitle, emptyDescription, emptyComponent, refreshing, onRefresh, stickyHeaders, headerColor, style, ...props }: VirtualizedListProps<T>): React__default.JSX.Element;
27
+
28
+ export { VirtualizedList, type VirtualizedListProps, type VirtualizedListSection };
@@ -0,0 +1,28 @@
1
+ import React__default from 'react';
2
+ import { SectionListProps, SectionListRenderItemInfo, ViewStyle } from 'react-native';
3
+
4
+ interface VirtualizedListSection<T> {
5
+ title?: string;
6
+ data: readonly T[];
7
+ }
8
+ interface VirtualizedListProps<T> extends Omit<SectionListProps<T>, 'sections' | 'renderItem' | 'ListEmptyComponent'> {
9
+ sections: VirtualizedListSection<T>[];
10
+ renderItem: (info: SectionListRenderItemInfo<T>) => React__default.ReactElement | null;
11
+ /** Empty state shown when no data. */
12
+ emptyTitle?: string;
13
+ /** Empty state description. */
14
+ emptyDescription?: string;
15
+ /** Custom empty state component. Overrides emptyTitle/emptyDescription. */
16
+ emptyComponent?: React__default.ReactNode;
17
+ /** Enable pull-to-refresh. */
18
+ refreshing?: boolean;
19
+ onRefresh?: () => void;
20
+ /** Sticky section headers. Default true. */
21
+ stickyHeaders?: boolean;
22
+ /** Override section header color. Defaults to foregroundMuted. */
23
+ headerColor?: string;
24
+ style?: ViewStyle;
25
+ }
26
+ declare function VirtualizedList<T>({ sections, renderItem, emptyTitle, emptyDescription, emptyComponent, refreshing, onRefresh, stickyHeaders, headerColor, style, ...props }: VirtualizedListProps<T>): React__default.JSX.Element;
27
+
28
+ export { VirtualizedList, type VirtualizedListProps, type VirtualizedListSection };
@@ -0,0 +1,130 @@
1
+ 'use strict';
2
+
3
+ var React2 = require('react');
4
+ var reactNative = require('react-native');
5
+ var reactNativeSizeMatters = require('react-native-size-matters');
6
+
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var React2__default = /*#__PURE__*/_interopDefault(React2);
10
+
11
+ // src/components/VirtualizedList/VirtualizedList.tsx
12
+ var ThemeContext = React2.createContext(void 0);
13
+ function useTheme() {
14
+ const context = React2.useContext(ThemeContext);
15
+ if (!context) {
16
+ throw new Error("useTheme must be used within a ThemeProvider");
17
+ }
18
+ return context;
19
+ }
20
+ var isWeb = reactNative.Platform.OS === "web";
21
+ var s = isWeb ? (n) => n : reactNativeSizeMatters.scale;
22
+ var vs = isWeb ? (n) => n : reactNativeSizeMatters.verticalScale;
23
+
24
+ // src/components/VirtualizedList/VirtualizedList.tsx
25
+ function VirtualizedList({
26
+ sections,
27
+ renderItem,
28
+ emptyTitle = "Sin contenido",
29
+ emptyDescription,
30
+ emptyComponent,
31
+ refreshing = false,
32
+ onRefresh,
33
+ stickyHeaders = true,
34
+ headerColor,
35
+ style,
36
+ ...props
37
+ }) {
38
+ const { colors } = useTheme();
39
+ const renderSectionHeader = React2.useCallback(
40
+ ({ section }) => {
41
+ if (!section.title) return null;
42
+ return /* @__PURE__ */ React2__default.default.createElement(reactNative.View, { style: [styles.sectionHeader, { backgroundColor: colors.background }] }, /* @__PURE__ */ React2__default.default.createElement(
43
+ reactNative.Text,
44
+ {
45
+ style: [styles.sectionHeaderText, { color: headerColor ?? colors.foregroundMuted }],
46
+ allowFontScaling: true
47
+ },
48
+ section.title
49
+ ));
50
+ },
51
+ [colors.background, colors.foregroundMuted, headerColor]
52
+ );
53
+ const keyExtractor = React2.useCallback(
54
+ (_item, index) => String(index),
55
+ []
56
+ );
57
+ const flatSections = sections.filter((s2) => s2.data.length > 0);
58
+ const hasData = flatSections.length > 0;
59
+ if (!hasData) {
60
+ if (emptyComponent) return /* @__PURE__ */ React2__default.default.createElement(reactNative.View, { style }, emptyComponent);
61
+ return /* @__PURE__ */ React2__default.default.createElement(reactNative.View, { style: [styles.empty, style] }, /* @__PURE__ */ React2__default.default.createElement(
62
+ reactNative.Text,
63
+ {
64
+ style: [styles.emptyTitle, { color: colors.foregroundMuted }],
65
+ allowFontScaling: true
66
+ },
67
+ emptyTitle
68
+ ), emptyDescription ? /* @__PURE__ */ React2__default.default.createElement(
69
+ reactNative.Text,
70
+ {
71
+ style: [styles.emptyDescription, { color: colors.foregroundMuted }],
72
+ allowFontScaling: true
73
+ },
74
+ emptyDescription
75
+ ) : null);
76
+ }
77
+ return /* @__PURE__ */ React2__default.default.createElement(
78
+ reactNative.SectionList,
79
+ {
80
+ sections: flatSections,
81
+ renderItem,
82
+ renderSectionHeader,
83
+ keyExtractor,
84
+ stickySectionHeadersEnabled: stickyHeaders,
85
+ refreshControl: onRefresh ? /* @__PURE__ */ React2__default.default.createElement(
86
+ reactNative.RefreshControl,
87
+ {
88
+ refreshing,
89
+ onRefresh,
90
+ tintColor: colors.primary
91
+ }
92
+ ) : void 0,
93
+ style,
94
+ showsVerticalScrollIndicator: false,
95
+ ...props
96
+ }
97
+ );
98
+ }
99
+ var styles = reactNative.StyleSheet.create({
100
+ sectionHeader: {
101
+ paddingHorizontal: s(16),
102
+ paddingTop: vs(16),
103
+ paddingBottom: vs(6)
104
+ },
105
+ sectionHeaderText: {
106
+ fontFamily: "Sohne-SemiBold",
107
+ fontSize: 13,
108
+ letterSpacing: 0.32,
109
+ textTransform: "uppercase"
110
+ },
111
+ empty: {
112
+ flex: 1,
113
+ alignItems: "center",
114
+ justifyContent: "center",
115
+ paddingHorizontal: s(32),
116
+ gap: vs(8)
117
+ },
118
+ emptyTitle: {
119
+ fontFamily: "Sohne-Medium",
120
+ fontSize: 16,
121
+ textAlign: "center"
122
+ },
123
+ emptyDescription: {
124
+ fontFamily: "Sohne-Regular",
125
+ fontSize: 14,
126
+ textAlign: "center"
127
+ }
128
+ });
129
+
130
+ exports.VirtualizedList = VirtualizedList;
@@ -0,0 +1,3 @@
1
+ export { VirtualizedList } from './chunk-WFNGSYS4.mjs';
2
+ import './chunk-ZQGCQ7SA.mjs';
3
+ import './chunk-2CE3TQVY.mjs';
@@ -15,23 +15,17 @@ var ALL_FAMILIES = [
15
15
  { name: "MaterialIcons", component: MaterialIcons },
16
16
  { name: "Ionicons", component: Ionicons }
17
17
  ];
18
- var glyphCacheInitialized = false;
19
- function ensureGlyphCache() {
20
- if (glyphCacheInitialized) return;
21
- glyphCacheInitialized = true;
22
- for (const entry of ALL_FAMILIES) {
23
- try {
24
- entry.glyphMap = entry.component.glyphMap;
25
- } catch {
26
- entry.glyphMap = {};
27
- }
18
+ function getGlyphMap(component) {
19
+ try {
20
+ return component.glyphMap ?? {};
21
+ } catch {
22
+ return {};
28
23
  }
29
24
  }
30
25
  function Icon({ name, size, color, family }) {
31
- ensureGlyphCache();
32
26
  const entry = family ? ALL_FAMILIES.find((f) => f.name === family) : ALL_FAMILIES.find((f) => {
33
- const glyphMap = f.glyphMap;
34
- return glyphMap ? name in glyphMap : false;
27
+ const glyphMap = getGlyphMap(f.component);
28
+ return name in glyphMap;
35
29
  });
36
30
  if (!entry) return null;
37
31
  return React.createElement(entry.component, { name, size, color });
@@ -1,19 +1,19 @@
1
- import { RADIUS } from './chunk-QY3X2UYR.mjs';
2
- import { useTheme } from './chunk-KSSVIFYR.mjs';
1
+ import { RADIUS } from './chunk-DYYPDQA2.mjs';
2
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
3
3
  import { vs, s } from './chunk-2CE3TQVY.mjs';
4
4
  import React from 'react';
5
5
  import { StyleSheet, View, Text } from 'react-native';
6
6
 
7
- function ListGroup({ children, variant = "plain", style }) {
7
+ function ItemGroup({ children, variant = "plain", childPropKey, style }) {
8
8
  const { colors } = useTheme();
9
9
  const processedChildren = React.Children.map(children, (child, index) => {
10
10
  if (!React.isValidElement(child)) return child;
11
- if (child.type === ListGroupHeader || child.type === ListGroupFooter) {
11
+ if (child.type === ItemGroupHeader || child.type === ItemGroupFooter) {
12
12
  return child;
13
13
  }
14
14
  const childProps = child.props;
15
- const isListItem = "title" in childProps;
16
- if (!isListItem) return child;
15
+ const isTargetChild = childPropKey in childProps;
16
+ if (!isTargetChild) return child;
17
17
  const isLast = index === React.Children.count(children) - 1;
18
18
  if (childProps["showSeparator"] === void 0 && !isLast) {
19
19
  return React.cloneElement(child, {
@@ -36,22 +36,20 @@ function ListGroup({ children, variant = "plain", style }) {
36
36
  } : {};
37
37
  return /* @__PURE__ */ React.createElement(View, { style: [styles.container, cardStyle, style] }, processedChildren);
38
38
  }
39
- function ListGroupHeader({ children, style }) {
39
+ function ItemGroupHeader({ children, style }) {
40
40
  const { colors } = useTheme();
41
41
  if (typeof children === "string") {
42
42
  return /* @__PURE__ */ React.createElement(View, { style: [styles.header, { borderBottomColor: colors.separator }, style] }, /* @__PURE__ */ React.createElement(Text, { style: [styles.headerText, { color: colors.foregroundMuted }], allowFontScaling: true }, children));
43
43
  }
44
44
  return /* @__PURE__ */ React.createElement(View, { style: [styles.header, { borderBottomColor: colors.separator }, style] }, children);
45
45
  }
46
- function ListGroupFooter({ children, style }) {
46
+ function ItemGroupFooter({ children, style }) {
47
47
  const { colors } = useTheme();
48
48
  if (typeof children === "string") {
49
49
  return /* @__PURE__ */ React.createElement(View, { style: [styles.footer, style] }, /* @__PURE__ */ React.createElement(Text, { style: [styles.footerText, { color: colors.foregroundMuted }], allowFontScaling: true }, children));
50
50
  }
51
51
  return /* @__PURE__ */ React.createElement(View, { style: [styles.footer, style] }, children);
52
52
  }
53
- ListGroup.Header = ListGroupHeader;
54
- ListGroup.Footer = ListGroupFooter;
55
53
  var styles = StyleSheet.create({
56
54
  container: {
57
55
  overflow: "hidden"
@@ -79,4 +77,4 @@ var styles = StyleSheet.create({
79
77
  }
80
78
  });
81
79
 
82
- export { ListGroup, ListGroupFooter, ListGroupHeader };
80
+ export { ItemGroup, ItemGroupFooter, ItemGroupHeader };
@@ -1,8 +1,8 @@
1
- import { IconButton } from './chunk-ZTPYUU5C.mjs';
2
- import { BREAKPOINTS } from './chunk-QY3X2UYR.mjs';
3
- import { Icon } from './chunk-MZ6WRTD2.mjs';
4
- import { useTheme } from './chunk-KSSVIFYR.mjs';
5
- import { mvs, ms, vs, s } from './chunk-2CE3TQVY.mjs';
1
+ import { IconButton } from './chunk-ZRUUUVOO.mjs';
2
+ import { BREAKPOINTS } from './chunk-DYYPDQA2.mjs';
3
+ import { Icon } from './chunk-24JTXQ2M.mjs';
4
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
5
+ import { s, mvs, ms, vs } from './chunk-2CE3TQVY.mjs';
6
6
  import React from 'react';
7
7
  import { StyleSheet, useWindowDimensions, View, Text } from 'react-native';
8
8
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
@@ -35,7 +35,7 @@ function AppHeader({
35
35
  onPress: onBack,
36
36
  accessibilityLabel: "Atr\xE1s"
37
37
  }
38
- ) : null, iconName && !left ? /* @__PURE__ */ React.createElement(Icon, { name: iconName, size: 20, color: colors.foreground }) : null);
38
+ ) : null, iconName && !left ? /* @__PURE__ */ React.createElement(View, { style: styles.iconSlot }, /* @__PURE__ */ React.createElement(Icon, { name: iconName, size: 20, color: colors.foreground })) : null);
39
39
  const titleBlock = /* @__PURE__ */ React.createElement(View, { style: [styles.titleBlock, centered && styles.titleBlockCentered], pointerEvents: "none" }, title ? /* @__PURE__ */ React.createElement(
40
40
  Text,
41
41
  {
@@ -112,6 +112,12 @@ var styles = StyleSheet.create({
112
112
  fontSize: ms(13),
113
113
  lineHeight: mvs(16)
114
114
  },
115
+ iconSlot: {
116
+ width: s(44),
117
+ height: s(44),
118
+ alignItems: "center",
119
+ justifyContent: "center"
120
+ },
115
121
  textCentered: {
116
122
  textAlign: "center"
117
123
  }
@@ -1,6 +1,6 @@
1
1
  import { COLOR_TRANSITION } from './chunk-M53LC4Q7.mjs';
2
- import { Icon } from './chunk-MZ6WRTD2.mjs';
3
- import { useTheme } from './chunk-KSSVIFYR.mjs';
2
+ import { Icon } from './chunk-24JTXQ2M.mjs';
3
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
4
4
  import { ms, s, vs } from './chunk-2CE3TQVY.mjs';
5
5
  import React, { useState } from 'react';
6
6
  import { Platform, StyleSheet, TouchableOpacity, View, Text, TextInput } from 'react-native';
@@ -1,5 +1,5 @@
1
- import { Icon } from './chunk-MZ6WRTD2.mjs';
2
- import { useTheme } from './chunk-KSSVIFYR.mjs';
1
+ import { Icon } from './chunk-24JTXQ2M.mjs';
2
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
3
3
  import { mvs, ms, s } from './chunk-2CE3TQVY.mjs';
4
4
  import React from 'react';
5
5
  import { StyleSheet, View, Text } from 'react-native';
@@ -1,5 +1,5 @@
1
- import { Icon } from './chunk-MZ6WRTD2.mjs';
2
- import { useTheme } from './chunk-KSSVIFYR.mjs';
1
+ import { Icon } from './chunk-24JTXQ2M.mjs';
2
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
3
3
  import { mvs, ms, s } from './chunk-2CE3TQVY.mjs';
4
4
  import React from 'react';
5
5
  import { StyleSheet, View, Text } from 'react-native';
@@ -1,5 +1,5 @@
1
- import { selectionAsync } from './chunk-ARONDO7M.mjs';
2
- import { useTheme } from './chunk-KSSVIFYR.mjs';
1
+ import { selectionAsync } from './chunk-CTUFFKGS.mjs';
2
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
3
3
  import { vs, ms } from './chunk-2CE3TQVY.mjs';
4
4
  import React, { useRef } from 'react';
5
5
  import { StyleSheet, View, Text } from 'react-native';
@@ -1,9 +1,9 @@
1
1
  import { COLOR_TRANSITION } from './chunk-M53LC4Q7.mjs';
2
2
  import { PressableChip } from './chunk-IFYMBOEN.mjs';
3
- import { selectionAsync } from './chunk-ARONDO7M.mjs';
4
- import { RADIUS } from './chunk-QY3X2UYR.mjs';
5
- import { Icon } from './chunk-MZ6WRTD2.mjs';
6
- import { useTheme } from './chunk-KSSVIFYR.mjs';
3
+ import { selectionAsync } from './chunk-CTUFFKGS.mjs';
4
+ import { RADIUS } from './chunk-DYYPDQA2.mjs';
5
+ import { Icon } from './chunk-24JTXQ2M.mjs';
6
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
7
7
  import { ms, s, vs } from './chunk-2CE3TQVY.mjs';
8
8
  import React, { useCallback } from 'react';
9
9
  import { View, Text, StyleSheet, ScrollView } from 'react-native';
@@ -1,7 +1,7 @@
1
1
  import { COLOR_TRANSITION, SPRING_ELASTIC, OPACITY_TRANSITION } from './chunk-M53LC4Q7.mjs';
2
2
  import { PressableButton } from './chunk-IFYMBOEN.mjs';
3
- import { selectionAsync } from './chunk-ARONDO7M.mjs';
4
- import { useTheme } from './chunk-KSSVIFYR.mjs';
3
+ import { selectionAsync } from './chunk-CTUFFKGS.mjs';
4
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
5
5
  import { s } from './chunk-2CE3TQVY.mjs';
6
6
  import React from 'react';
7
7
  import { StyleSheet, View } from 'react-native';
@@ -1,8 +1,8 @@
1
1
  import { PressableRow } from './chunk-IFYMBOEN.mjs';
2
- import { selectionAsync } from './chunk-ARONDO7M.mjs';
3
- import { RADIUS } from './chunk-QY3X2UYR.mjs';
4
- import { Icon } from './chunk-MZ6WRTD2.mjs';
5
- import { useTheme } from './chunk-KSSVIFYR.mjs';
2
+ import { selectionAsync } from './chunk-CTUFFKGS.mjs';
3
+ import { RADIUS } from './chunk-DYYPDQA2.mjs';
4
+ import { Icon } from './chunk-24JTXQ2M.mjs';
5
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
6
6
  import { ms, s, mvs, vs } from './chunk-2CE3TQVY.mjs';
7
7
  import React from 'react';
8
8
  import { Image } from 'expo-image';
@@ -1,6 +1,6 @@
1
1
  import { COLOR_TRANSITION } from './chunk-M53LC4Q7.mjs';
2
- import { Icon } from './chunk-MZ6WRTD2.mjs';
3
- import { useTheme } from './chunk-KSSVIFYR.mjs';
2
+ import { Icon } from './chunk-24JTXQ2M.mjs';
3
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
4
4
  import { vs, ms, s } from './chunk-2CE3TQVY.mjs';
5
5
  import React, { useState } from 'react';
6
6
  import { Platform, StyleSheet, View, Text, TextInput } from 'react-native';
@@ -1,9 +1,9 @@
1
1
  import { COLOR_TRANSITION } from './chunk-M53LC4Q7.mjs';
2
2
  import { PressableButton } from './chunk-IFYMBOEN.mjs';
3
- import { impactMedium } from './chunk-ARONDO7M.mjs';
4
- import { TYPOGRAPHY, RADIUS } from './chunk-QY3X2UYR.mjs';
5
- import { Icon } from './chunk-MZ6WRTD2.mjs';
6
- import { useTheme } from './chunk-KSSVIFYR.mjs';
3
+ import { impactMedium } from './chunk-CTUFFKGS.mjs';
4
+ import { TYPOGRAPHY, RADIUS } from './chunk-DYYPDQA2.mjs';
5
+ import { Icon } from './chunk-24JTXQ2M.mjs';
6
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
7
7
  import { vs, s, mvs, ms } from './chunk-2CE3TQVY.mjs';
8
8
  import React from 'react';
9
9
  import { StyleSheet, View, ActivityIndicator, Text } from 'react-native';
@@ -1,7 +1,7 @@
1
1
  import { COLOR_TRANSITION, OPACITY_TRANSITION } from './chunk-M53LC4Q7.mjs';
2
2
  import { PressableButton } from './chunk-IFYMBOEN.mjs';
3
- import { selectionAsync } from './chunk-ARONDO7M.mjs';
4
- import { useTheme } from './chunk-KSSVIFYR.mjs';
3
+ import { selectionAsync } from './chunk-CTUFFKGS.mjs';
4
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
5
5
  import { mvs, ms, vs, s } from './chunk-2CE3TQVY.mjs';
6
6
  import React from 'react';
7
7
  import { StyleSheet, View, Text } from 'react-native';
@@ -1,8 +1,9 @@
1
- import { Button } from './chunk-Y6YS33GM.mjs';
2
- import { impactMedium, notificationSuccess, selectionAsync } from './chunk-ARONDO7M.mjs';
3
- import { useTheme } from './chunk-KSSVIFYR.mjs';
1
+ import { useSheetModal } from './chunk-HMKJGVXA.mjs';
2
+ import { Button } from './chunk-AHFEAY6M.mjs';
3
+ import { notificationSuccess, selectionAsync } from './chunk-CTUFFKGS.mjs';
4
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
4
5
  import { vs, mvs, ms, s } from './chunk-2CE3TQVY.mjs';
5
- import React, { useRef, useId, useState, useEffect, useCallback } from 'react';
6
+ import React, { useId, useCallback } from 'react';
6
7
  import { StyleSheet, View, Text, TouchableOpacity } from 'react-native';
7
8
  import { BottomSheetBackdrop, BottomSheetModal, BottomSheetView } from '@gorhom/bottom-sheet';
8
9
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
@@ -23,34 +24,8 @@ function ConfirmDialog({
23
24
  }) {
24
25
  const { colors } = useTheme();
25
26
  const insets = useSafeAreaInsets();
26
- const ref = useRef(null);
27
- const dialogState = useRef("idle");
28
- const onCancelRef = useRef(onCancel);
27
+ const { ref, handleDismiss } = useSheetModal(visible, onCancel);
29
28
  const name = useId();
30
- const [tick, setTick] = useState(0);
31
- useEffect(() => {
32
- onCancelRef.current = onCancel;
33
- }, [onCancel]);
34
- const handleDismiss = useCallback(() => {
35
- dialogState.current = "idle";
36
- onCancelRef.current?.();
37
- setTick((t) => t + 1);
38
- }, []);
39
- useEffect(() => {
40
- if (visible) {
41
- if (dialogState.current === "idle") {
42
- dialogState.current = "presenting";
43
- impactMedium();
44
- ref.current?.present();
45
- dialogState.current = "presented";
46
- }
47
- } else {
48
- if (dialogState.current === "presented" || dialogState.current === "presenting") {
49
- dialogState.current = "dismissing";
50
- ref.current?.dismiss();
51
- }
52
- }
53
- }, [visible, tick]);
54
29
  const renderBackdrop = useCallback(
55
30
  (props) => /* @__PURE__ */ React.createElement(
56
31
  BottomSheetBackdrop,
@@ -1,7 +1,7 @@
1
1
  import { SPRINGS } from './chunk-M53LC4Q7.mjs';
2
2
  import { PressableTab } from './chunk-IFYMBOEN.mjs';
3
- import { selectionAsync } from './chunk-ARONDO7M.mjs';
4
- import { useTheme } from './chunk-KSSVIFYR.mjs';
3
+ import { selectionAsync } from './chunk-CTUFFKGS.mjs';
4
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
5
5
  import { ms, s, vs } from './chunk-2CE3TQVY.mjs';
6
6
  import React, { useState, useRef, useCallback, useEffect } from 'react';
7
7
  import { StyleSheet, View, Text } from 'react-native';