@retray-dev/ui-kit 13.0.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 (344) hide show
  1. package/CHANGELOG.md +680 -0
  2. package/CONSUMER.md +26 -9
  3. package/README.md +11 -12
  4. package/{COMPONENTS.md → SKILL.md} +515 -815
  5. package/dist/Accordion.d.mts +8 -6
  6. package/dist/Accordion.d.ts +8 -6
  7. package/dist/Accordion.js +40 -40
  8. package/dist/Accordion.mjs +4 -5
  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 -5
  13. package/dist/AppHeader.d.mts +8 -5
  14. package/dist/AppHeader.d.ts +8 -5
  15. package/dist/AppHeader.js +44 -31
  16. package/dist/AppHeader.mjs +6 -7
  17. package/dist/Avatar.d.mts +4 -4
  18. package/dist/Avatar.d.ts +4 -4
  19. package/dist/Avatar.mjs +2 -3
  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 -4
  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 -6
  28. package/dist/ButtonGroup.d.mts +3 -3
  29. package/dist/ButtonGroup.d.ts +3 -3
  30. package/dist/ButtonGroup.mjs +0 -1
  31. package/dist/Card.d.mts +13 -13
  32. package/dist/Card.d.ts +13 -13
  33. package/dist/Card.js +23 -14
  34. package/dist/Card.mjs +4 -5
  35. package/dist/CategoryStrip.d.mts +3 -3
  36. package/dist/CategoryStrip.d.ts +3 -3
  37. package/dist/CategoryStrip.js +30 -27
  38. package/dist/CategoryStrip.mjs +5 -6
  39. package/dist/Checkbox.d.mts +3 -2
  40. package/dist/Checkbox.d.ts +3 -2
  41. package/dist/Checkbox.js +26 -15
  42. package/dist/Checkbox.mjs +3 -4
  43. package/dist/Chip.d.mts +5 -5
  44. package/dist/Chip.d.ts +5 -5
  45. package/dist/Chip.js +30 -27
  46. package/dist/Chip.mjs +5 -6
  47. package/dist/ConfirmDialog.d.mts +3 -2
  48. package/dist/ConfirmDialog.d.ts +3 -2
  49. package/dist/ConfirmDialog.js +67 -49
  50. package/dist/ConfirmDialog.mjs +7 -7
  51. package/dist/CurrencyDisplay.d.mts +3 -3
  52. package/dist/CurrencyDisplay.d.ts +3 -3
  53. package/dist/CurrencyDisplay.mjs +2 -3
  54. package/dist/CurrencyInput.d.mts +2 -2
  55. package/dist/CurrencyInput.d.ts +2 -2
  56. package/dist/CurrencyInput.js +7 -13
  57. package/dist/CurrencyInput.mjs +4 -5
  58. package/dist/DetailRow.d.mts +6 -6
  59. package/dist/DetailRow.d.ts +6 -6
  60. package/dist/DetailRow.js +7 -13
  61. package/dist/DetailRow.mjs +3 -4
  62. package/dist/EmptyState.d.mts +4 -4
  63. package/dist/EmptyState.d.ts +4 -4
  64. package/dist/EmptyState.js +31 -29
  65. package/dist/EmptyState.mjs +6 -7
  66. package/dist/ErrorBoundary.d.mts +9 -7
  67. package/dist/ErrorBoundary.d.ts +9 -7
  68. package/dist/ErrorBoundary.js +33 -29
  69. package/dist/ErrorBoundary.mjs +5 -6
  70. package/dist/Form.d.mts +9 -9
  71. package/dist/Form.d.ts +9 -9
  72. package/dist/Form.mjs +2 -3
  73. package/dist/HolographicCard.d.mts +2 -2
  74. package/dist/HolographicCard.d.ts +2 -2
  75. package/dist/HolographicCard.js +23 -14
  76. package/dist/HolographicCard.mjs +2 -3
  77. package/dist/IconButton.d.mts +4 -4
  78. package/dist/IconButton.d.ts +4 -4
  79. package/dist/IconButton.js +30 -27
  80. package/dist/IconButton.mjs +4 -5
  81. package/dist/IconPicker.d.mts +2 -2
  82. package/dist/IconPicker.d.ts +2 -2
  83. package/dist/IconPicker.js +40 -45
  84. package/dist/IconPicker.mjs +6 -7
  85. package/dist/Image.d.mts +18 -0
  86. package/dist/Image.d.ts +18 -0
  87. package/dist/Image.js +53 -0
  88. package/dist/Image.mjs +2 -0
  89. package/dist/ImageUpload.d.mts +2 -4
  90. package/dist/ImageUpload.d.ts +2 -4
  91. package/dist/ImageUpload.js +50 -40
  92. package/dist/ImageUpload.mjs +5 -6
  93. package/dist/ImageViewer.d.mts +2 -2
  94. package/dist/ImageViewer.d.ts +2 -2
  95. package/dist/ImageViewer.js +31 -28
  96. package/dist/ImageViewer.mjs +6 -7
  97. package/dist/Input.d.mts +4 -4
  98. package/dist/Input.d.ts +4 -4
  99. package/dist/Input.js +7 -13
  100. package/dist/Input.mjs +3 -4
  101. package/dist/ItemGroup.d.mts +23 -0
  102. package/dist/ItemGroup.d.ts +23 -0
  103. package/dist/{ListGroup.js → ItemGroup.js} +11 -13
  104. package/dist/ItemGroup.mjs +4 -0
  105. package/dist/LabelValue.d.mts +4 -4
  106. package/dist/LabelValue.d.ts +4 -4
  107. package/dist/LabelValue.js +7 -13
  108. package/dist/LabelValue.mjs +3 -4
  109. package/dist/ListItem.d.mts +7 -6
  110. package/dist/ListItem.d.ts +7 -6
  111. package/dist/ListItem.js +33 -28
  112. package/dist/ListItem.mjs +5 -6
  113. package/dist/MediaCard.d.mts +6 -6
  114. package/dist/MediaCard.d.ts +6 -6
  115. package/dist/MediaCard.js +30 -27
  116. package/dist/MediaCard.mjs +5 -6
  117. package/dist/MenuItem.d.mts +6 -5
  118. package/dist/MenuItem.d.ts +6 -5
  119. package/dist/MenuItem.js +33 -28
  120. package/dist/MenuItem.mjs +5 -6
  121. package/dist/MonthPicker.d.mts +2 -2
  122. package/dist/MonthPicker.d.ts +2 -2
  123. package/dist/MonthPicker.js +23 -14
  124. package/dist/MonthPicker.mjs +3 -4
  125. package/dist/NumberStepper.d.mts +4 -3
  126. package/dist/NumberStepper.d.ts +4 -3
  127. package/dist/NumberStepper.js +34 -28
  128. package/dist/NumberStepper.mjs +5 -6
  129. package/dist/PagerDots.d.mts +2 -2
  130. package/dist/PagerDots.d.ts +2 -2
  131. package/dist/PagerDots.js +30 -27
  132. package/dist/PagerDots.mjs +4 -5
  133. package/dist/Pressable.d.mts +3 -27
  134. package/dist/Pressable.d.ts +3 -27
  135. package/dist/Pressable.js +23 -14
  136. package/dist/Pressable.mjs +2 -3
  137. package/dist/PricingCard.d.mts +2 -2
  138. package/dist/PricingCard.d.ts +2 -2
  139. package/dist/PricingCard.js +31 -29
  140. package/dist/PricingCard.mjs +7 -8
  141. package/dist/Progress.d.mts +2 -2
  142. package/dist/Progress.d.ts +2 -2
  143. package/dist/Progress.mjs +2 -3
  144. package/dist/RadioGroup.d.mts +2 -2
  145. package/dist/RadioGroup.d.ts +2 -2
  146. package/dist/RadioGroup.js +23 -14
  147. package/dist/RadioGroup.mjs +3 -4
  148. package/dist/RetrayProvider.d.mts +1 -1
  149. package/dist/RetrayProvider.d.ts +1 -1
  150. package/dist/RetrayProvider.js +14 -34
  151. package/dist/RetrayProvider.mjs +3 -4
  152. package/dist/ScreenContainer.d.mts +24 -0
  153. package/dist/ScreenContainer.d.ts +24 -0
  154. package/dist/ScreenContainer.js +85 -0
  155. package/dist/ScreenContainer.mjs +3 -0
  156. package/dist/Select.d.mts +3 -2
  157. package/dist/Select.d.ts +3 -2
  158. package/dist/Select.js +41 -46
  159. package/dist/Select.mjs +3 -4
  160. package/dist/SelectableCard.d.mts +5 -5
  161. package/dist/SelectableCard.d.ts +5 -5
  162. package/dist/SelectableCard.js +30 -27
  163. package/dist/SelectableCard.mjs +5 -6
  164. package/dist/SelectableGrid.d.mts +5 -4
  165. package/dist/SelectableGrid.d.ts +5 -4
  166. package/dist/SelectableGrid.js +80 -45
  167. package/dist/SelectableGrid.mjs +5 -6
  168. package/dist/Separator.d.mts +4 -2
  169. package/dist/Separator.d.ts +4 -2
  170. package/dist/Separator.js +29 -1
  171. package/dist/Separator.mjs +3 -3
  172. package/dist/Sheet.d.mts +11 -11
  173. package/dist/Sheet.d.ts +11 -11
  174. package/dist/Sheet.js +62 -34
  175. package/dist/Sheet.mjs +4 -4
  176. package/dist/SheetSelect.d.mts +2 -2
  177. package/dist/SheetSelect.d.ts +2 -2
  178. package/dist/SheetSelect.js +30 -27
  179. package/dist/SheetSelect.mjs +5 -6
  180. package/dist/Skeleton.d.mts +5 -5
  181. package/dist/Skeleton.d.ts +5 -5
  182. package/dist/Skeleton.mjs +3 -4
  183. package/dist/Slider.d.mts +3 -2
  184. package/dist/Slider.d.ts +3 -2
  185. package/dist/Slider.js +25 -14
  186. package/dist/Slider.mjs +3 -4
  187. package/dist/Spinner.d.mts +2 -2
  188. package/dist/Spinner.d.ts +2 -2
  189. package/dist/Spinner.mjs +2 -3
  190. package/dist/Stats.d.mts +6 -6
  191. package/dist/Stats.d.ts +6 -6
  192. package/dist/Stats.js +30 -27
  193. package/dist/Stats.mjs +5 -6
  194. package/dist/Switch.d.mts +3 -2
  195. package/dist/Switch.d.ts +3 -2
  196. package/dist/Switch.js +25 -15
  197. package/dist/Switch.mjs +3 -4
  198. package/dist/TabBar.d.mts +3 -3
  199. package/dist/TabBar.d.ts +3 -3
  200. package/dist/TabBar.js +30 -27
  201. package/dist/TabBar.mjs +4 -5
  202. package/dist/Tabs.d.mts +13 -13
  203. package/dist/Tabs.d.ts +13 -13
  204. package/dist/Tabs.js +23 -14
  205. package/dist/Tabs.mjs +3 -4
  206. package/dist/Text.d.mts +4 -4
  207. package/dist/Text.d.ts +4 -4
  208. package/dist/Text.js +20 -2
  209. package/dist/Text.mjs +3 -4
  210. package/dist/Textarea.d.mts +3 -3
  211. package/dist/Textarea.d.ts +3 -3
  212. package/dist/Textarea.js +7 -13
  213. package/dist/Textarea.mjs +3 -4
  214. package/dist/Toast.d.mts +15 -13
  215. package/dist/Toast.d.ts +15 -13
  216. package/dist/Toast.mjs +2 -3
  217. package/dist/Toggle.d.mts +4 -4
  218. package/dist/Toggle.d.ts +4 -4
  219. package/dist/Toggle.js +30 -27
  220. package/dist/Toggle.mjs +4 -5
  221. package/dist/VirtualizedList.d.mts +28 -0
  222. package/dist/VirtualizedList.d.ts +28 -0
  223. package/dist/VirtualizedList.js +130 -0
  224. package/dist/VirtualizedList.mjs +3 -0
  225. package/dist/{chunk-MZ6WRTD2.mjs → chunk-24JTXQ2M.mjs} +7 -13
  226. package/dist/{chunk-OBV72JD4.mjs → chunk-2DDJ53DK.mjs} +9 -11
  227. package/dist/{chunk-6CR4S6W2.mjs → chunk-2J5OZOMX.mjs} +19 -8
  228. package/dist/{chunk-4NQFTHN3.mjs → chunk-3GE4UFV5.mjs} +2 -2
  229. package/dist/{chunk-KAGADD2O.mjs → chunk-3RIZCKRM.mjs} +2 -2
  230. package/dist/{chunk-DE25XTVQ.mjs → chunk-3VHFOSZR.mjs} +2 -2
  231. package/dist/{chunk-UOKFSFNJ.mjs → chunk-4PF4LKNT.mjs} +4 -2
  232. package/dist/{chunk-5MYNAAFE.mjs → chunk-5J7VKFSZ.mjs} +4 -4
  233. package/dist/{chunk-BTUW5LSG.mjs → chunk-5TNQ573V.mjs} +4 -3
  234. package/dist/{chunk-6QLBHUEG.mjs → chunk-6T2DVIQT.mjs} +7 -5
  235. package/dist/{chunk-L3YKPTJQ.mjs → chunk-7CE6PDCQ.mjs} +2 -2
  236. package/dist/{chunk-Y6YS33GM.mjs → chunk-AHFEAY6M.mjs} +4 -4
  237. package/dist/{chunk-4ZO5PTKF.mjs → chunk-AZRATPNP.mjs} +5 -3
  238. package/dist/{chunk-V2ZB2XNS.mjs → chunk-BGXOEFDM.mjs} +9 -22
  239. package/dist/{chunk-KC5QDYGZ.mjs → chunk-BMAAAJWN.mjs} +2 -2
  240. package/dist/{chunk-IJCMPVW5.mjs → chunk-BQMJQMWY.mjs} +2 -2
  241. package/dist/{chunk-E4EQSCKR.mjs → chunk-BTPCY4C7.mjs} +7 -5
  242. package/dist/chunk-BVJAYPAD.mjs +55 -0
  243. package/dist/{chunk-RA6SAAFE.mjs → chunk-BWLVX2SQ.mjs} +4 -4
  244. package/dist/{chunk-EROPDCB5.mjs → chunk-CCEM3HIJ.mjs} +30 -25
  245. package/dist/chunk-CTUFFKGS.mjs +30 -0
  246. package/dist/{chunk-EHGBHFMH.mjs → chunk-CYGYC7XT.mjs} +8 -4
  247. package/dist/{chunk-ESQDPO5E.mjs → chunk-DLAOTHHS.mjs} +7 -6
  248. package/dist/{chunk-QY3X2UYR.mjs → chunk-DYYPDQA2.mjs} +21 -7
  249. package/dist/{chunk-S44XWTTC.mjs → chunk-E4BJ5WXG.mjs} +3 -3
  250. package/dist/{chunk-HUSSF6TF.mjs → chunk-EQNCMDZC.mjs} +1 -1
  251. package/dist/{chunk-PI6RULJX.mjs → chunk-EQYTDFDD.mjs} +1 -1
  252. package/dist/{chunk-BULKGOIZ.mjs → chunk-FE26TPCI.mjs} +4 -4
  253. package/dist/{chunk-DBHSUUKU.mjs → chunk-FOUSI6JD.mjs} +1 -1
  254. package/dist/{chunk-KPTY7UYQ.mjs → chunk-GR7PKEKD.mjs} +1 -1
  255. package/dist/{chunk-RRKM4MKB.mjs → chunk-HLWGFBIF.mjs} +3 -3
  256. package/dist/chunk-HMKJGVXA.mjs +35 -0
  257. package/dist/{chunk-U6DEBYU5.mjs → chunk-IFGZUJFH.mjs} +3 -3
  258. package/dist/{chunk-2VIDP72N.mjs → chunk-K3V6OTVB.mjs} +1 -1
  259. package/dist/{chunk-K7TKID3V.mjs → chunk-K4YFTUMC.mjs} +3 -3
  260. package/dist/{chunk-NGEN2EES.mjs → chunk-MQAK2W6L.mjs} +14 -22
  261. package/dist/{chunk-CM2DG4MR.mjs → chunk-MSS3CD6F.mjs} +4 -4
  262. package/dist/{chunk-TETMEKZE.mjs → chunk-NQYS6RPX.mjs} +8 -5
  263. package/dist/{chunk-62BBSSUF.mjs → chunk-P5KC3RTG.mjs} +1 -1
  264. package/dist/{chunk-K3QX2M26.mjs → chunk-PPKCGCZ3.mjs} +5 -5
  265. package/dist/{chunk-ITG4JQM3.mjs → chunk-QEE3EQ3N.mjs} +2 -2
  266. package/dist/{chunk-URIH43IJ.mjs → chunk-RLPPRIJ7.mjs} +20 -34
  267. package/dist/{chunk-XCIG6HT2.mjs → chunk-S433IOQE.mjs} +2 -2
  268. package/dist/{chunk-IGU223UM.mjs → chunk-SWUZKVYO.mjs} +1 -1
  269. package/dist/{chunk-MP7GLMIR.mjs → chunk-T4KMKHTI.mjs} +55 -23
  270. package/dist/{chunk-2QOHHBJC.mjs → chunk-UBTP4NPP.mjs} +5 -21
  271. package/dist/{chunk-TMH263OK.mjs → chunk-UEA2VYGW.mjs} +3 -3
  272. package/dist/chunk-VISIOH33.mjs +37 -0
  273. package/dist/{chunk-SZEKQAOY.mjs → chunk-VSKBODEY.mjs} +1 -1
  274. package/dist/{chunk-FTTI6T5Q.mjs → chunk-W422TEH2.mjs} +3 -3
  275. package/dist/{chunk-WIPEDNSD.mjs → chunk-WD5LBXPR.mjs} +4 -4
  276. package/dist/chunk-WFNGSYS4.mjs +111 -0
  277. package/dist/chunk-WR6DCNAE.mjs +65 -0
  278. package/dist/{chunk-ERWJPVX7.mjs → chunk-XKBB2UZU.mjs} +2 -2
  279. package/dist/{chunk-CBIZLRYH.mjs → chunk-Y5TPAKOS.mjs} +14 -17
  280. package/dist/{chunk-AZV7KNJI.mjs → chunk-YKWIMVGU.mjs} +2 -2
  281. package/dist/{chunk-ZKDKKQCE.mjs → chunk-YOXSXHDE.mjs} +4 -4
  282. package/dist/{chunk-PGQ6FMXS.mjs → chunk-ZO5BRTCW.mjs} +2 -2
  283. package/dist/{chunk-KSSVIFYR.mjs → chunk-ZQGCQ7SA.mjs} +14 -34
  284. package/dist/{chunk-ZTPYUU5C.mjs → chunk-ZRUUUVOO.mjs} +3 -3
  285. package/dist/fonts.mjs +0 -2
  286. package/dist/{index-CY34hxPN.d.ts → index-CinAt5Uo.d.mts} +3 -3
  287. package/dist/{index-CY34hxPN.d.mts → index-CinAt5Uo.d.ts} +3 -3
  288. package/dist/index.d.mts +69 -19
  289. package/dist/index.d.ts +69 -19
  290. package/dist/index.js +1023 -839
  291. package/dist/index.mjs +76 -70
  292. package/package.json +15 -12
  293. package/src/components/Accordion/Accordion.tsx +12 -18
  294. package/src/components/AppHeader/AppHeader.tsx +33 -10
  295. package/src/components/Checkbox/Checkbox.tsx +3 -0
  296. package/src/components/ConfirmDialog/ConfirmDialog.tsx +7 -21
  297. package/src/components/ErrorBoundary/ErrorBoundary.tsx +5 -2
  298. package/src/components/Image/Image.tsx +50 -0
  299. package/src/components/Image/index.ts +2 -0
  300. package/src/components/ImageUpload/ImageUpload.tsx +34 -26
  301. package/src/components/{ListGroup/ListGroup.tsx → ItemGroup/ItemGroup.tsx} +15 -29
  302. package/src/components/ItemGroup/index.ts +2 -0
  303. package/src/components/ListGroup/index.tsx +20 -0
  304. package/src/components/ListItem/ListItem.tsx +3 -0
  305. package/src/components/MenuGroup/index.tsx +20 -0
  306. package/src/components/MenuItem/MenuItem.tsx +3 -0
  307. package/src/components/NumberStepper/NumberStepper.tsx +4 -0
  308. package/src/components/Pressable/Pressable.tsx +0 -24
  309. package/src/components/ScreenContainer/ScreenContainer.tsx +94 -0
  310. package/src/components/ScreenContainer/index.ts +2 -0
  311. package/src/components/Select/Select.tsx +25 -30
  312. package/src/components/SelectableGrid/SelectableGrid.tsx +51 -20
  313. package/src/components/Separator/Separator.tsx +35 -2
  314. package/src/components/Sheet/Sheet.tsx +3 -21
  315. package/src/components/Sheet/index.ts +2 -2
  316. package/src/components/Slider/Slider.tsx +3 -0
  317. package/src/components/Switch/Switch.tsx +3 -1
  318. package/src/components/Tabs/Tabs.tsx +9 -9
  319. package/src/components/Tabs/index.ts +1 -1
  320. package/src/components/Text/Text.tsx +7 -0
  321. package/src/components/VirtualizedList/VirtualizedList.tsx +154 -0
  322. package/src/components/VirtualizedList/index.ts +2 -0
  323. package/src/hooks/useConfirmDialog.ts +2 -11
  324. package/src/hooks/useSheetModal.ts +40 -0
  325. package/src/index.ts +5 -1
  326. package/src/theme/colors.ts +19 -57
  327. package/src/tokens.ts +21 -7
  328. package/src/utils/curatedIcons.ts +9 -18
  329. package/src/utils/haptics.ts +10 -21
  330. package/src/utils/icons.ts +7 -14
  331. package/dist/ListGroup.d.mts +0 -34
  332. package/dist/ListGroup.d.ts +0 -34
  333. package/dist/ListGroup.mjs +0 -5
  334. package/dist/MenuGroup.d.mts +0 -34
  335. package/dist/MenuGroup.d.ts +0 -34
  336. package/dist/MenuGroup.js +0 -106
  337. package/dist/MenuGroup.mjs +0 -5
  338. package/dist/chunk-ARONDO7M.mjs +0 -40
  339. package/dist/chunk-EW2FIDSM.mjs +0 -29
  340. package/dist/chunk-S2VGME7X.mjs +0 -82
  341. package/dist/chunk-Y6FXYEAI.mjs +0 -8
  342. package/src/components/ListGroup/index.ts +0 -1
  343. package/src/components/MenuGroup/MenuGroup.tsx +0 -145
  344. package/src/components/MenuGroup/index.ts +0 -1
@@ -1,11 +1,12 @@
1
- import React from 'react';
2
- import { ViewStyle } from 'react-native';
1
+ import React__default from 'react';
2
+ import { ImageSourcePropType, ViewStyle } from 'react-native';
3
3
 
4
4
  interface SelectableGridItem<T extends string | number = string> {
5
5
  value: T;
6
6
  label?: string;
7
7
  iconName?: string;
8
- icon?: React.ReactNode;
8
+ icon?: React__default.ReactNode;
9
+ imageUrl?: ImageSourcePropType;
9
10
  disabled?: boolean;
10
11
  }
11
12
  interface SelectableGridProps<T extends string | number = string> {
@@ -18,6 +19,6 @@ interface SelectableGridProps<T extends string | number = string> {
18
19
  orientation?: 'grid' | 'horizontal';
19
20
  style?: ViewStyle;
20
21
  }
21
- declare function SelectableGrid<T extends string | number = string>({ items, value, onChange, multiple, numColumns, gap, orientation, style, }: SelectableGridProps<T>): React.JSX.Element;
22
+ declare function SelectableGrid<T extends string | number = string>({ items, value, onChange, multiple, numColumns, gap, orientation, style, }: SelectableGridProps<T>): React__default.JSX.Element;
22
23
 
23
24
  export { SelectableGrid, type SelectableGridItem, type SelectableGridProps };
@@ -1,11 +1,12 @@
1
- import React from 'react';
2
- import { ViewStyle } from 'react-native';
1
+ import React__default from 'react';
2
+ import { ImageSourcePropType, ViewStyle } from 'react-native';
3
3
 
4
4
  interface SelectableGridItem<T extends string | number = string> {
5
5
  value: T;
6
6
  label?: string;
7
7
  iconName?: string;
8
- icon?: React.ReactNode;
8
+ icon?: React__default.ReactNode;
9
+ imageUrl?: ImageSourcePropType;
9
10
  disabled?: boolean;
10
11
  }
11
12
  interface SelectableGridProps<T extends string | number = string> {
@@ -18,6 +19,6 @@ interface SelectableGridProps<T extends string | number = string> {
18
19
  orientation?: 'grid' | 'horizontal';
19
20
  style?: ViewStyle;
20
21
  }
21
- declare function SelectableGrid<T extends string | number = string>({ items, value, onChange, multiple, numColumns, gap, orientation, style, }: SelectableGridProps<T>): React.JSX.Element;
22
+ declare function SelectableGrid<T extends string | number = string>({ items, value, onChange, multiple, numColumns, gap, orientation, style, }: SelectableGridProps<T>): React__default.JSX.Element;
22
23
 
23
24
  export { SelectableGrid, type SelectableGridItem, type SelectableGridProps };
@@ -2,6 +2,7 @@
2
2
 
3
3
  var React3 = require('react');
4
4
  var reactNative = require('react-native');
5
+ var expoImage = require('expo-image');
5
6
  var AntDesign = require('@expo/vector-icons/AntDesign');
6
7
  var Entypo = require('@expo/vector-icons/Entypo');
7
8
  var Feather = require('@expo/vector-icons/Feather');
@@ -9,10 +10,29 @@ var FontAwesome5 = require('@expo/vector-icons/FontAwesome5');
9
10
  var MaterialIcons = require('@expo/vector-icons/MaterialIcons');
10
11
  var Ionicons = require('@expo/vector-icons/Ionicons');
11
12
  var pressto = require('pressto');
13
+ var Haptics = require('expo-haptics');
12
14
  var reactNativeSizeMatters = require('react-native-size-matters');
13
15
 
14
16
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
17
 
18
+ function _interopNamespace(e) {
19
+ if (e && e.__esModule) return e;
20
+ var n = Object.create(null);
21
+ if (e) {
22
+ Object.keys(e).forEach(function (k) {
23
+ if (k !== 'default') {
24
+ var d = Object.getOwnPropertyDescriptor(e, k);
25
+ Object.defineProperty(n, k, d.get ? d : {
26
+ enumerable: true,
27
+ get: function () { return e[k]; }
28
+ });
29
+ }
30
+ });
31
+ }
32
+ n.default = e;
33
+ return Object.freeze(n);
34
+ }
35
+
16
36
  var React3__default = /*#__PURE__*/_interopDefault(React3);
17
37
  var AntDesign__default = /*#__PURE__*/_interopDefault(AntDesign);
18
38
  var Entypo__default = /*#__PURE__*/_interopDefault(Entypo);
@@ -20,6 +40,7 @@ var Feather__default = /*#__PURE__*/_interopDefault(Feather);
20
40
  var FontAwesome5__default = /*#__PURE__*/_interopDefault(FontAwesome5);
21
41
  var MaterialIcons__default = /*#__PURE__*/_interopDefault(MaterialIcons);
22
42
  var Ionicons__default = /*#__PURE__*/_interopDefault(Ionicons);
43
+ var Haptics__namespace = /*#__PURE__*/_interopNamespace(Haptics);
23
44
 
24
45
  // src/components/SelectableGrid/SelectableGrid.tsx
25
46
  var ThemeContext = React3.createContext(void 0);
@@ -38,23 +59,17 @@ var ALL_FAMILIES = [
38
59
  { name: "MaterialIcons", component: MaterialIcons__default.default },
39
60
  { name: "Ionicons", component: Ionicons__default.default }
40
61
  ];
41
- var glyphCacheInitialized = false;
42
- function ensureGlyphCache() {
43
- if (glyphCacheInitialized) return;
44
- glyphCacheInitialized = true;
45
- for (const entry of ALL_FAMILIES) {
46
- try {
47
- entry.glyphMap = entry.component.glyphMap;
48
- } catch {
49
- entry.glyphMap = {};
50
- }
62
+ function getGlyphMap(component) {
63
+ try {
64
+ return component.glyphMap ?? {};
65
+ } catch {
66
+ return {};
51
67
  }
52
68
  }
53
69
  function Icon({ name, size, color, family }) {
54
- ensureGlyphCache();
55
70
  const entry = family ? ALL_FAMILIES.find((f) => f.name === family) : ALL_FAMILIES.find((f) => {
56
- const glyphMap = f.glyphMap;
57
- return glyphMap ? name in glyphMap : false;
71
+ const glyphMap = getGlyphMap(f.component);
72
+ return name in glyphMap;
58
73
  });
59
74
  if (!entry) return null;
60
75
  return React3__default.default.createElement(entry.component, { name, size, color });
@@ -68,22 +83,11 @@ makePressable(0.98);
68
83
  makePressable(0.97);
69
84
  var PressableChip = makePressable(0.94);
70
85
  makePressable(0.95);
71
- var _haptics = null;
72
- var _loaded = false;
73
- async function getHaptics() {
74
- if (reactNative.Platform.OS === "web") return null;
75
- if (!_loaded) {
76
- _loaded = true;
77
- try {
78
- _haptics = await import('expo-haptics');
79
- } catch {
80
- _haptics = null;
81
- }
82
- }
83
- return _haptics;
86
+ function maybeHaptics() {
87
+ return reactNative.Platform.OS === "web" ? null : Haptics__namespace;
84
88
  }
85
89
  function selectionAsync() {
86
- getHaptics().then((h) => h?.selectionAsync());
90
+ maybeHaptics()?.selectionAsync();
87
91
  }
88
92
  var isWeb = reactNative.Platform.OS === "web";
89
93
  var s = isWeb ? (n) => n : reactNativeSizeMatters.scale;
@@ -102,8 +106,10 @@ function isSelected(value, candidate) {
102
106
  }
103
107
  function Cell({ item, selected, width, onPress }) {
104
108
  const { colors } = useTheme();
109
+ const hasImage = !!item.imageUrl;
105
110
  const iconColor = selected ? colors.primary : colors.foregroundSubtle;
106
111
  const iconNode = item.icon ?? (item.iconName ? /* @__PURE__ */ React3__default.default.createElement(Icon, { name: item.iconName, size: ms(24), color: iconColor }) : null);
112
+ const imageSize = width - 4;
107
113
  return /* @__PURE__ */ React3__default.default.createElement(
108
114
  PressableChip,
109
115
  {
@@ -114,27 +120,44 @@ function Cell({ item, selected, width, onPress }) {
114
120
  activateOnHover: true,
115
121
  accessibilityRole: "button",
116
122
  accessibilityState: { selected, disabled: item.disabled },
117
- accessibilityLabel: item.label ?? String(item.value),
118
- style: [
119
- { width },
120
- styles.cell,
121
- {
122
- backgroundColor: selected ? colors.primary + "14" : colors.surface,
123
- borderColor: selected ? colors.primary : "transparent"
124
- },
125
- item.disabled && styles.cellDisabled
126
- ]
123
+ accessibilityLabel: item.label ?? String(item.value)
127
124
  },
128
- iconNode,
129
- item.label ? /* @__PURE__ */ React3__default.default.createElement(
130
- reactNative.Text,
125
+ /* @__PURE__ */ React3__default.default.createElement(
126
+ reactNative.View,
131
127
  {
132
- style: [styles.label, { color: selected ? colors.primary : colors.foreground }],
133
- numberOfLines: 1,
134
- allowFontScaling: true
128
+ style: [
129
+ { width },
130
+ styles.cell,
131
+ hasImage && styles.cellImage,
132
+ {
133
+ borderColor: selected ? colors.primary : "transparent"
134
+ },
135
+ item.disabled && styles.cellDisabled
136
+ ]
135
137
  },
136
- item.label
137
- ) : null
138
+ hasImage ? /* @__PURE__ */ React3__default.default.createElement(
139
+ expoImage.Image,
140
+ {
141
+ source: item.imageUrl,
142
+ style: { width: imageSize, height: imageSize },
143
+ contentFit: "cover"
144
+ }
145
+ ) : null,
146
+ iconNode && !hasImage ? iconNode : null,
147
+ item.label ? /* @__PURE__ */ React3__default.default.createElement(
148
+ reactNative.Text,
149
+ {
150
+ style: [
151
+ styles.label,
152
+ hasImage && styles.labelImage,
153
+ { color: selected ? colors.primary : colors.foreground }
154
+ ],
155
+ numberOfLines: 2,
156
+ allowFontScaling: true
157
+ },
158
+ item.label
159
+ ) : null
160
+ )
138
161
  );
139
162
  }
140
163
  function SelectableGrid({
@@ -214,6 +237,13 @@ var styles = reactNative.StyleSheet.create({
214
237
  paddingHorizontal: s(8),
215
238
  paddingVertical: vs(10)
216
239
  },
240
+ cellImage: {
241
+ padding: 0,
242
+ gap: 0,
243
+ overflow: "hidden",
244
+ alignItems: "stretch",
245
+ justifyContent: "flex-start"
246
+ },
217
247
  cellDisabled: {
218
248
  opacity: 0.4
219
249
  },
@@ -222,6 +252,11 @@ var styles = reactNative.StyleSheet.create({
222
252
  fontSize: ms(11),
223
253
  lineHeight: mvs(14),
224
254
  textAlign: "center"
255
+ },
256
+ labelImage: {
257
+ paddingHorizontal: s(6),
258
+ paddingBottom: vs(6),
259
+ paddingTop: vs(3)
225
260
  }
226
261
  });
227
262
 
@@ -1,8 +1,7 @@
1
- export { SelectableGrid } from './chunk-MP7GLMIR.mjs';
1
+ export { SelectableGrid } from './chunk-T4KMKHTI.mjs';
2
2
  import './chunk-IFYMBOEN.mjs';
3
- import './chunk-ARONDO7M.mjs';
4
- import './chunk-QY3X2UYR.mjs';
5
- import './chunk-MZ6WRTD2.mjs';
6
- import './chunk-KSSVIFYR.mjs';
3
+ import './chunk-CTUFFKGS.mjs';
4
+ import './chunk-DYYPDQA2.mjs';
5
+ import './chunk-24JTXQ2M.mjs';
6
+ import './chunk-ZQGCQ7SA.mjs';
7
7
  import './chunk-2CE3TQVY.mjs';
8
- import './chunk-Y6FXYEAI.mjs';
@@ -1,10 +1,12 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
  import { ViewStyle } from 'react-native';
3
3
 
4
4
  interface SeparatorProps {
5
5
  orientation?: 'horizontal' | 'vertical';
6
+ /** Label shown in the center of a horizontal separator — renders as "── label ──". */
7
+ label?: string;
6
8
  style?: ViewStyle;
7
9
  }
8
- declare function Separator({ orientation, style }: SeparatorProps): React.JSX.Element;
10
+ declare function Separator({ orientation, label, style }: SeparatorProps): React__default.JSX.Element;
9
11
 
10
12
  export { Separator, type SeparatorProps };
@@ -1,10 +1,12 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
  import { ViewStyle } from 'react-native';
3
3
 
4
4
  interface SeparatorProps {
5
5
  orientation?: 'horizontal' | 'vertical';
6
+ /** Label shown in the center of a horizontal separator — renders as "── label ──". */
7
+ label?: string;
6
8
  style?: ViewStyle;
7
9
  }
8
- declare function Separator({ orientation, style }: SeparatorProps): React.JSX.Element;
10
+ declare function Separator({ orientation, label, style }: SeparatorProps): React__default.JSX.Element;
9
11
 
10
12
  export { Separator, type SeparatorProps };
package/dist/Separator.js CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  var React2 = require('react');
4
4
  var reactNative = require('react-native');
5
+ var reactNativeSizeMatters = require('react-native-size-matters');
5
6
 
6
7
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
8
 
@@ -16,10 +17,22 @@ function useTheme() {
16
17
  }
17
18
  return context;
18
19
  }
20
+ var isWeb = reactNative.Platform.OS === "web";
21
+ var s = isWeb ? (n) => n : reactNativeSizeMatters.scale;
19
22
 
20
23
  // src/components/Separator/Separator.tsx
21
- function Separator({ orientation = "horizontal", style }) {
24
+ function Separator({ orientation = "horizontal", label, style }) {
22
25
  const { colors } = useTheme();
26
+ if (label && orientation !== "vertical") {
27
+ return /* @__PURE__ */ React2__default.default.createElement(reactNative.View, { style: [styles.row, style], accessibilityRole: "none" }, /* @__PURE__ */ React2__default.default.createElement(reactNative.View, { style: [styles.line, { backgroundColor: colors.separator }] }), /* @__PURE__ */ React2__default.default.createElement(
28
+ reactNative.Text,
29
+ {
30
+ style: [styles.label, { color: colors.foregroundMuted }],
31
+ allowFontScaling: true
32
+ },
33
+ label
34
+ ), /* @__PURE__ */ React2__default.default.createElement(reactNative.View, { style: [styles.line, { backgroundColor: colors.separator }] }));
35
+ }
23
36
  return /* @__PURE__ */ React2__default.default.createElement(
24
37
  reactNative.View,
25
38
  {
@@ -39,6 +52,21 @@ var styles = reactNative.StyleSheet.create({
39
52
  vertical: {
40
53
  width: 1,
41
54
  height: "100%"
55
+ },
56
+ row: {
57
+ flexDirection: "row",
58
+ alignItems: "center",
59
+ gap: s(12)
60
+ },
61
+ line: {
62
+ flex: 1,
63
+ height: 1
64
+ },
65
+ label: {
66
+ fontFamily: "Sohne-Medium",
67
+ fontSize: 13,
68
+ letterSpacing: 0.32,
69
+ textTransform: "uppercase"
42
70
  }
43
71
  });
44
72
 
@@ -1,3 +1,3 @@
1
- export { Separator } from './chunk-EW2FIDSM.mjs';
2
- import './chunk-KSSVIFYR.mjs';
3
- import './chunk-Y6FXYEAI.mjs';
1
+ export { Separator } from './chunk-BVJAYPAD.mjs';
2
+ import './chunk-ZQGCQ7SA.mjs';
3
+ import './chunk-2CE3TQVY.mjs';
package/dist/Sheet.d.mts CHANGED
@@ -1,17 +1,17 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
  import { ViewStyle } from 'react-native';
3
3
  export { BottomSheetModalProvider, BottomSheetTextInput as SheetTextInput } from '@gorhom/bottom-sheet';
4
4
 
5
5
  interface SheetHeaderProps {
6
- children: React.ReactNode;
6
+ children: React__default.ReactNode;
7
7
  style?: ViewStyle;
8
8
  }
9
9
  interface SheetContentProps {
10
- children: React.ReactNode;
10
+ children: React__default.ReactNode;
11
11
  style?: ViewStyle;
12
12
  }
13
13
  interface SheetFooterProps {
14
- children: React.ReactNode;
14
+ children: React__default.ReactNode;
15
15
  style?: ViewStyle;
16
16
  }
17
17
  interface SheetProps {
@@ -20,7 +20,7 @@ interface SheetProps {
20
20
  title?: string;
21
21
  subtitle?: string;
22
22
  showCloseButton?: boolean;
23
- children?: React.ReactNode;
23
+ children?: React__default.ReactNode;
24
24
  style?: ViewStyle;
25
25
  contentStyle?: ViewStyle;
26
26
  /** Render children inside BottomSheetScrollView instead of BottomSheetView. */
@@ -31,21 +31,21 @@ interface SheetProps {
31
31
  keyboardBlurBehavior?: 'none' | 'restore';
32
32
  enableBlurKeyboardOnGesture?: boolean;
33
33
  android_keyboardInputMode?: 'adjustPan' | 'adjustResize';
34
- footer?: React.ReactNode;
34
+ footer?: React__default.ReactNode;
35
35
  /**
36
36
  * Array of snap points (e.g., ['50%', '85%'] or [200, 500]).
37
37
  * When provided, disables enableDynamicSizing.
38
38
  */
39
39
  snapPoints?: (string | number)[];
40
40
  }
41
- declare function SheetHeader({ children, style }: SheetHeaderProps): React.JSX.Element;
42
- declare function SheetContent({ children, style }: SheetContentProps): React.JSX.Element;
43
- declare function SheetFooter({ children, style }: SheetFooterProps): React.JSX.Element;
44
- declare function Sheet({ open, onClose, title, subtitle, showCloseButton, children, style, contentStyle, scrollable, maxHeight, keyboardBehavior, keyboardBlurBehavior, enableBlurKeyboardOnGesture, android_keyboardInputMode, footer, snapPoints, }: SheetProps): React.JSX.Element;
41
+ declare function SheetHeader({ children, style }: SheetHeaderProps): React__default.JSX.Element;
42
+ declare function SheetContent({ children, style }: SheetContentProps): React__default.JSX.Element;
43
+ declare function SheetFooter({ children, style }: SheetFooterProps): React__default.JSX.Element;
44
+ declare function Sheet({ open, onClose, title, subtitle, showCloseButton, children, style, contentStyle, scrollable, maxHeight, keyboardBehavior, keyboardBlurBehavior, enableBlurKeyboardOnGesture, android_keyboardInputMode, footer, snapPoints, }: SheetProps): React__default.JSX.Element;
45
45
  declare namespace Sheet {
46
46
  var Header: typeof SheetHeader;
47
47
  var Content: typeof SheetContent;
48
48
  var Footer: typeof SheetFooter;
49
49
  }
50
50
 
51
- export { Sheet, type SheetProps };
51
+ export { Sheet, SheetContent, type SheetContentProps, SheetFooter, type SheetFooterProps, SheetHeader, type SheetHeaderProps, type SheetProps };
package/dist/Sheet.d.ts CHANGED
@@ -1,17 +1,17 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
  import { ViewStyle } from 'react-native';
3
3
  export { BottomSheetModalProvider, BottomSheetTextInput as SheetTextInput } from '@gorhom/bottom-sheet';
4
4
 
5
5
  interface SheetHeaderProps {
6
- children: React.ReactNode;
6
+ children: React__default.ReactNode;
7
7
  style?: ViewStyle;
8
8
  }
9
9
  interface SheetContentProps {
10
- children: React.ReactNode;
10
+ children: React__default.ReactNode;
11
11
  style?: ViewStyle;
12
12
  }
13
13
  interface SheetFooterProps {
14
- children: React.ReactNode;
14
+ children: React__default.ReactNode;
15
15
  style?: ViewStyle;
16
16
  }
17
17
  interface SheetProps {
@@ -20,7 +20,7 @@ interface SheetProps {
20
20
  title?: string;
21
21
  subtitle?: string;
22
22
  showCloseButton?: boolean;
23
- children?: React.ReactNode;
23
+ children?: React__default.ReactNode;
24
24
  style?: ViewStyle;
25
25
  contentStyle?: ViewStyle;
26
26
  /** Render children inside BottomSheetScrollView instead of BottomSheetView. */
@@ -31,21 +31,21 @@ interface SheetProps {
31
31
  keyboardBlurBehavior?: 'none' | 'restore';
32
32
  enableBlurKeyboardOnGesture?: boolean;
33
33
  android_keyboardInputMode?: 'adjustPan' | 'adjustResize';
34
- footer?: React.ReactNode;
34
+ footer?: React__default.ReactNode;
35
35
  /**
36
36
  * Array of snap points (e.g., ['50%', '85%'] or [200, 500]).
37
37
  * When provided, disables enableDynamicSizing.
38
38
  */
39
39
  snapPoints?: (string | number)[];
40
40
  }
41
- declare function SheetHeader({ children, style }: SheetHeaderProps): React.JSX.Element;
42
- declare function SheetContent({ children, style }: SheetContentProps): React.JSX.Element;
43
- declare function SheetFooter({ children, style }: SheetFooterProps): React.JSX.Element;
44
- declare function Sheet({ open, onClose, title, subtitle, showCloseButton, children, style, contentStyle, scrollable, maxHeight, keyboardBehavior, keyboardBlurBehavior, enableBlurKeyboardOnGesture, android_keyboardInputMode, footer, snapPoints, }: SheetProps): React.JSX.Element;
41
+ declare function SheetHeader({ children, style }: SheetHeaderProps): React__default.JSX.Element;
42
+ declare function SheetContent({ children, style }: SheetContentProps): React__default.JSX.Element;
43
+ declare function SheetFooter({ children, style }: SheetFooterProps): React__default.JSX.Element;
44
+ declare function Sheet({ open, onClose, title, subtitle, showCloseButton, children, style, contentStyle, scrollable, maxHeight, keyboardBehavior, keyboardBlurBehavior, enableBlurKeyboardOnGesture, android_keyboardInputMode, footer, snapPoints, }: SheetProps): React__default.JSX.Element;
45
45
  declare namespace Sheet {
46
46
  var Header: typeof SheetHeader;
47
47
  var Content: typeof SheetContent;
48
48
  var Footer: typeof SheetFooter;
49
49
  }
50
50
 
51
- export { Sheet, type SheetProps };
51
+ export { Sheet, SheetContent, type SheetContentProps, SheetFooter, type SheetFooterProps, SheetHeader, type SheetHeaderProps, type SheetProps };
package/dist/Sheet.js CHANGED
@@ -5,30 +5,33 @@ var reactNative = require('react-native');
5
5
  var bottomSheet = require('@gorhom/bottom-sheet');
6
6
  var reactNativeSafeAreaContext = require('react-native-safe-area-context');
7
7
  var vectorIcons = require('@expo/vector-icons');
8
+ var Haptics = require('expo-haptics');
8
9
  var reactNativeSizeMatters = require('react-native-size-matters');
9
10
 
10
11
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
12
 
13
+ function _interopNamespace(e) {
14
+ if (e && e.__esModule) return e;
15
+ var n = Object.create(null);
16
+ if (e) {
17
+ Object.keys(e).forEach(function (k) {
18
+ if (k !== 'default') {
19
+ var d = Object.getOwnPropertyDescriptor(e, k);
20
+ Object.defineProperty(n, k, d.get ? d : {
21
+ enumerable: true,
22
+ get: function () { return e[k]; }
23
+ });
24
+ }
25
+ });
26
+ }
27
+ n.default = e;
28
+ return Object.freeze(n);
29
+ }
30
+
12
31
  var React2__default = /*#__PURE__*/_interopDefault(React2);
32
+ var Haptics__namespace = /*#__PURE__*/_interopNamespace(Haptics);
13
33
 
14
34
  // src/components/Sheet/Sheet.tsx
15
- var _haptics = null;
16
- var _loaded = false;
17
- async function getHaptics() {
18
- if (reactNative.Platform.OS === "web") return null;
19
- if (!_loaded) {
20
- _loaded = true;
21
- try {
22
- _haptics = await import('expo-haptics');
23
- } catch {
24
- _haptics = null;
25
- }
26
- }
27
- return _haptics;
28
- }
29
- function impactMedium() {
30
- getHaptics().then((h) => h?.impactAsync(h.ImpactFeedbackStyle.Medium));
31
- }
32
35
  var ThemeContext = React2.createContext(void 0);
33
36
  function useTheme() {
34
37
  const context = React2.useContext(ThemeContext);
@@ -37,6 +40,44 @@ function useTheme() {
37
40
  }
38
41
  return context;
39
42
  }
43
+ function maybeHaptics() {
44
+ return reactNative.Platform.OS === "web" ? null : Haptics__namespace;
45
+ }
46
+ function impactMedium() {
47
+ maybeHaptics()?.impactAsync(Haptics__namespace.ImpactFeedbackStyle.Medium);
48
+ }
49
+
50
+ // src/hooks/useSheetModal.ts
51
+ function useSheetModal(visible, onDismiss) {
52
+ const ref = React2.useRef(null);
53
+ const state = React2.useRef("idle");
54
+ const onDismissRef = React2.useRef(onDismiss);
55
+ const [tick, setTick] = React2.useState(0);
56
+ React2.useEffect(() => {
57
+ onDismissRef.current = onDismiss;
58
+ });
59
+ React2.useEffect(() => {
60
+ if (visible) {
61
+ if (state.current === "idle") {
62
+ state.current = "presenting";
63
+ impactMedium();
64
+ ref.current?.present();
65
+ state.current = "presented";
66
+ }
67
+ } else {
68
+ if (state.current === "presented" || state.current === "presenting") {
69
+ state.current = "dismissing";
70
+ ref.current?.dismiss();
71
+ }
72
+ }
73
+ }, [visible, tick]);
74
+ const handleDismiss = React2.useCallback(() => {
75
+ state.current = "idle";
76
+ onDismissRef.current?.();
77
+ setTick((t) => t + 1);
78
+ }, []);
79
+ return { ref, handleDismiss };
80
+ }
40
81
  var isWeb = reactNative.Platform.OS === "web";
41
82
  var s = isWeb ? (n) => n : reactNativeSizeMatters.scale;
42
83
  var vs = isWeb ? (n) => n : reactNativeSizeMatters.verticalScale;
@@ -74,24 +115,8 @@ function Sheet({
74
115
  }) {
75
116
  const { colors } = useTheme();
76
117
  const insets = reactNativeSafeAreaContext.useSafeAreaInsets();
77
- const ref = React2.useRef(null);
78
- const wasOpened = React2.useRef(false);
79
- const isPresentedRef = React2.useRef(false);
118
+ const { ref, handleDismiss } = useSheetModal(open, onClose);
80
119
  const name = React2.useId();
81
- const handleDismiss = React2.useCallback(() => {
82
- isPresentedRef.current = false;
83
- onClose?.();
84
- }, [onClose]);
85
- React2.useEffect(() => {
86
- if (open && !isPresentedRef.current) {
87
- impactMedium();
88
- ref.current?.present();
89
- wasOpened.current = true;
90
- isPresentedRef.current = true;
91
- } else if (!open && wasOpened.current && isPresentedRef.current) {
92
- ref.current?.dismiss();
93
- }
94
- }, [open]);
95
120
  const renderBackdrop = React2.useCallback(
96
121
  (props) => /* @__PURE__ */ React2__default.default.createElement(
97
122
  bottomSheet.BottomSheetBackdrop,
@@ -236,3 +261,6 @@ Object.defineProperty(exports, "SheetTextInput", {
236
261
  get: function () { return bottomSheet.BottomSheetTextInput; }
237
262
  });
238
263
  exports.Sheet = Sheet;
264
+ exports.SheetContent = SheetContent;
265
+ exports.SheetFooter = SheetFooter;
266
+ exports.SheetHeader = SheetHeader;
package/dist/Sheet.mjs CHANGED
@@ -1,5 +1,5 @@
1
- export { BottomSheetModalProvider, Sheet, BottomSheetTextInput as SheetTextInput } from './chunk-2QOHHBJC.mjs';
2
- import './chunk-ARONDO7M.mjs';
3
- import './chunk-KSSVIFYR.mjs';
1
+ export { BottomSheetModalProvider, Sheet, SheetContent, SheetFooter, SheetHeader, BottomSheetTextInput as SheetTextInput } from './chunk-UBTP4NPP.mjs';
2
+ import './chunk-HMKJGVXA.mjs';
3
+ import './chunk-CTUFFKGS.mjs';
4
+ import './chunk-ZQGCQ7SA.mjs';
4
5
  import './chunk-2CE3TQVY.mjs';
5
- import './chunk-Y6FXYEAI.mjs';
@@ -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
  interface SheetSelectOption {
@@ -20,6 +20,6 @@ interface SheetSelectProps {
20
20
  style?: ViewStyle;
21
21
  accessibilityLabel?: string;
22
22
  }
23
- declare function SheetSelect({ options, value, onValueChange, multiSelect, label, error, wrap, style, accessibilityLabel, }: SheetSelectProps): React.JSX.Element;
23
+ declare function SheetSelect({ options, value, onValueChange, multiSelect, label, error, wrap, style, accessibilityLabel, }: SheetSelectProps): React__default.JSX.Element;
24
24
 
25
25
  export { SheetSelect, type SheetSelectOption, type SheetSelectProps };
@@ -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
  interface SheetSelectOption {
@@ -20,6 +20,6 @@ interface SheetSelectProps {
20
20
  style?: ViewStyle;
21
21
  accessibilityLabel?: string;
22
22
  }
23
- declare function SheetSelect({ options, value, onValueChange, multiSelect, label, error, wrap, style, accessibilityLabel, }: SheetSelectProps): React.JSX.Element;
23
+ declare function SheetSelect({ options, value, onValueChange, multiSelect, label, error, wrap, style, accessibilityLabel, }: SheetSelectProps): React__default.JSX.Element;
24
24
 
25
25
  export { SheetSelect, type SheetSelectOption, type SheetSelectProps };