@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/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,34 +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 sheetState = React2.useRef("idle");
79
- const onCloseRef = React2.useRef(onClose);
118
+ const { ref, handleDismiss } = useSheetModal(open, onClose);
80
119
  const name = React2.useId();
81
- const [tick, setTick] = React2.useState(0);
82
- React2.useEffect(() => {
83
- onCloseRef.current = onClose;
84
- }, [onClose]);
85
- const handleDismiss = React2.useCallback(() => {
86
- sheetState.current = "idle";
87
- onCloseRef.current?.();
88
- setTick((t) => t + 1);
89
- }, []);
90
- React2.useEffect(() => {
91
- if (open) {
92
- if (sheetState.current === "idle") {
93
- sheetState.current = "presenting";
94
- impactMedium();
95
- ref.current?.present();
96
- sheetState.current = "presented";
97
- }
98
- } else {
99
- if (sheetState.current === "presented" || sheetState.current === "presenting") {
100
- sheetState.current = "dismissing";
101
- ref.current?.dismiss();
102
- }
103
- }
104
- }, [open, tick]);
105
120
  const renderBackdrop = React2.useCallback(
106
121
  (props) => /* @__PURE__ */ React2__default.default.createElement(
107
122
  bottomSheet.BottomSheetBackdrop,
package/dist/Sheet.mjs CHANGED
@@ -1,4 +1,5 @@
1
- export { BottomSheetModalProvider, Sheet, SheetContent, SheetFooter, SheetHeader, BottomSheetTextInput as SheetTextInput } from './chunk-7BZJRB77.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';
@@ -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 };
@@ -3,6 +3,7 @@
3
3
  var React3 = require('react');
4
4
  var reactNative = require('react-native');
5
5
  var reactNativeEase = require('react-native-ease');
6
+ var Haptics = require('expo-haptics');
6
7
  var reactNativeSizeMatters = require('react-native-size-matters');
7
8
  var AntDesign = require('@expo/vector-icons/AntDesign');
8
9
  var Entypo = require('@expo/vector-icons/Entypo');
@@ -14,7 +15,26 @@ var pressto = require('pressto');
14
15
 
15
16
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
16
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
+
17
36
  var React3__default = /*#__PURE__*/_interopDefault(React3);
37
+ var Haptics__namespace = /*#__PURE__*/_interopNamespace(Haptics);
18
38
  var AntDesign__default = /*#__PURE__*/_interopDefault(AntDesign);
19
39
  var Entypo__default = /*#__PURE__*/_interopDefault(Entypo);
20
40
  var Feather__default = /*#__PURE__*/_interopDefault(Feather);
@@ -23,22 +43,11 @@ var MaterialIcons__default = /*#__PURE__*/_interopDefault(MaterialIcons);
23
43
  var Ionicons__default = /*#__PURE__*/_interopDefault(Ionicons);
24
44
 
25
45
  // src/components/SheetSelect/SheetSelect.tsx
26
- var _haptics = null;
27
- var _loaded = false;
28
- async function getHaptics() {
29
- if (reactNative.Platform.OS === "web") return null;
30
- if (!_loaded) {
31
- _loaded = true;
32
- try {
33
- _haptics = await import('expo-haptics');
34
- } catch {
35
- _haptics = null;
36
- }
37
- }
38
- return _haptics;
46
+ function maybeHaptics() {
47
+ return reactNative.Platform.OS === "web" ? null : Haptics__namespace;
39
48
  }
40
49
  function selectionAsync() {
41
- getHaptics().then((h) => h?.selectionAsync());
50
+ maybeHaptics()?.selectionAsync();
42
51
  }
43
52
  var ThemeContext = React3.createContext(void 0);
44
53
  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 });
@@ -1,8 +1,8 @@
1
- export { SheetSelect } from './chunk-WIPEDNSD.mjs';
1
+ export { SheetSelect } from './chunk-WD5LBXPR.mjs';
2
2
  import './chunk-M53LC4Q7.mjs';
3
3
  import './chunk-IFYMBOEN.mjs';
4
- import './chunk-ARONDO7M.mjs';
5
- import './chunk-QY3X2UYR.mjs';
6
- import './chunk-MZ6WRTD2.mjs';
7
- import './chunk-KSSVIFYR.mjs';
4
+ import './chunk-CTUFFKGS.mjs';
5
+ import './chunk-DYYPDQA2.mjs';
6
+ import './chunk-24JTXQ2M.mjs';
7
+ import './chunk-ZQGCQ7SA.mjs';
8
8
  import './chunk-2CE3TQVY.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
  type SkeletonPreset = 'base' | 'circle' | 'text';
@@ -14,7 +14,7 @@ interface SkeletonProps {
14
14
  backgroundColor?: string;
15
15
  style?: ViewStyle;
16
16
  }
17
- declare function Skeleton({ width, height, borderRadius, preset, diameter, backgroundColor, style, }: SkeletonProps): React.JSX.Element;
17
+ declare function Skeleton({ width, height, borderRadius, preset, diameter, backgroundColor, style, }: SkeletonProps): React__default.JSX.Element;
18
18
  declare namespace Skeleton {
19
19
  var MediaCard: typeof MediaCardSkeleton;
20
20
  var ListItem: typeof ListItemSkeleton;
@@ -36,7 +36,7 @@ interface MediaCardSkeletonProps {
36
36
  style?: ViewStyle;
37
37
  }
38
38
  /** Loading placeholder matching `<MediaCard>` — image block + title/subtitle lines. */
39
- declare function MediaCardSkeleton({ aspectRatio, showSubtitle, style }: MediaCardSkeletonProps): React.JSX.Element;
39
+ declare function MediaCardSkeleton({ aspectRatio, showSubtitle, style }: MediaCardSkeletonProps): React__default.JSX.Element;
40
40
  interface ListItemSkeletonProps {
41
41
  /** Render a circular leading avatar placeholder. Defaults to true. */
42
42
  showAvatar?: boolean;
@@ -45,7 +45,7 @@ interface ListItemSkeletonProps {
45
45
  style?: ViewStyle;
46
46
  }
47
47
  /** Loading placeholder matching `<ListItem>` — leading circle + title/subtitle lines. */
48
- declare function ListItemSkeleton({ showAvatar, showSubtitle, style }: ListItemSkeletonProps): React.JSX.Element;
48
+ declare function ListItemSkeleton({ showAvatar, showSubtitle, style }: ListItemSkeletonProps): React__default.JSX.Element;
49
49
  interface ListSkeletonProps {
50
50
  /** Number of placeholder rows/cells. Defaults to 6. */
51
51
  count?: number;
@@ -64,6 +64,6 @@ interface ListSkeletonProps {
64
64
  * renders stacked `ListItemSkeleton`s; `columns>1` renders a wrapping grid of
65
65
  * `MediaCardSkeleton`s. Render this as the list's content while `data` is empty.
66
66
  */
67
- declare function ListSkeleton({ count, columns, gap, aspectRatio, showAvatar, style, }: ListSkeletonProps): React.JSX.Element;
67
+ declare function ListSkeleton({ count, columns, gap, aspectRatio, showAvatar, style, }: ListSkeletonProps): React__default.JSX.Element;
68
68
 
69
69
  export { Skeleton, type SkeletonProps };
@@ -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 SkeletonPreset = 'base' | 'circle' | 'text';
@@ -14,7 +14,7 @@ interface SkeletonProps {
14
14
  backgroundColor?: string;
15
15
  style?: ViewStyle;
16
16
  }
17
- declare function Skeleton({ width, height, borderRadius, preset, diameter, backgroundColor, style, }: SkeletonProps): React.JSX.Element;
17
+ declare function Skeleton({ width, height, borderRadius, preset, diameter, backgroundColor, style, }: SkeletonProps): React__default.JSX.Element;
18
18
  declare namespace Skeleton {
19
19
  var MediaCard: typeof MediaCardSkeleton;
20
20
  var ListItem: typeof ListItemSkeleton;
@@ -36,7 +36,7 @@ interface MediaCardSkeletonProps {
36
36
  style?: ViewStyle;
37
37
  }
38
38
  /** Loading placeholder matching `<MediaCard>` — image block + title/subtitle lines. */
39
- declare function MediaCardSkeleton({ aspectRatio, showSubtitle, style }: MediaCardSkeletonProps): React.JSX.Element;
39
+ declare function MediaCardSkeleton({ aspectRatio, showSubtitle, style }: MediaCardSkeletonProps): React__default.JSX.Element;
40
40
  interface ListItemSkeletonProps {
41
41
  /** Render a circular leading avatar placeholder. Defaults to true. */
42
42
  showAvatar?: boolean;
@@ -45,7 +45,7 @@ interface ListItemSkeletonProps {
45
45
  style?: ViewStyle;
46
46
  }
47
47
  /** Loading placeholder matching `<ListItem>` — leading circle + title/subtitle lines. */
48
- declare function ListItemSkeleton({ showAvatar, showSubtitle, style }: ListItemSkeletonProps): React.JSX.Element;
48
+ declare function ListItemSkeleton({ showAvatar, showSubtitle, style }: ListItemSkeletonProps): React__default.JSX.Element;
49
49
  interface ListSkeletonProps {
50
50
  /** Number of placeholder rows/cells. Defaults to 6. */
51
51
  count?: number;
@@ -64,6 +64,6 @@ interface ListSkeletonProps {
64
64
  * renders stacked `ListItemSkeleton`s; `columns>1` renders a wrapping grid of
65
65
  * `MediaCardSkeleton`s. Render this as the list's content while `data` is empty.
66
66
  */
67
- declare function ListSkeleton({ count, columns, gap, aspectRatio, showAvatar, style, }: ListSkeletonProps): React.JSX.Element;
67
+ declare function ListSkeleton({ count, columns, gap, aspectRatio, showAvatar, style, }: ListSkeletonProps): React__default.JSX.Element;
68
68
 
69
69
  export { Skeleton, type SkeletonProps };
package/dist/Skeleton.mjs CHANGED
@@ -1,5 +1,5 @@
1
- export { Skeleton } from './chunk-XCIG6HT2.mjs';
1
+ export { Skeleton } from './chunk-S433IOQE.mjs';
2
2
  import './chunk-M53LC4Q7.mjs';
3
- import './chunk-QY3X2UYR.mjs';
4
- import './chunk-KSSVIFYR.mjs';
3
+ import './chunk-DYYPDQA2.mjs';
4
+ import './chunk-ZQGCQ7SA.mjs';
5
5
  import './chunk-2CE3TQVY.mjs';
package/dist/Slider.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
  interface SliderProps {
@@ -16,6 +16,6 @@ interface SliderProps {
16
16
  disabled?: boolean;
17
17
  style?: ViewStyle;
18
18
  }
19
- declare function Slider({ value, minimumValue, maximumValue, step, onValueChange, onSlidingComplete, label, showValue, formatValue, accessibilityLabel, accessibilityHint, disabled, style, }: SliderProps): React.JSX.Element;
19
+ declare function Slider({ value, minimumValue, maximumValue, step, onValueChange, onSlidingComplete, label, showValue, formatValue, accessibilityLabel, accessibilityHint, disabled, style, }: SliderProps): React__default.JSX.Element;
20
20
 
21
21
  export { Slider, type SliderProps };
package/dist/Slider.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
  interface SliderProps {
@@ -16,6 +16,6 @@ interface SliderProps {
16
16
  disabled?: boolean;
17
17
  style?: ViewStyle;
18
18
  }
19
- declare function Slider({ value, minimumValue, maximumValue, step, onValueChange, onSlidingComplete, label, showValue, formatValue, accessibilityLabel, accessibilityHint, disabled, style, }: SliderProps): React.JSX.Element;
19
+ declare function Slider({ value, minimumValue, maximumValue, step, onValueChange, onSlidingComplete, label, showValue, formatValue, accessibilityLabel, accessibilityHint, disabled, style, }: SliderProps): React__default.JSX.Element;
20
20
 
21
21
  export { Slider, type SliderProps };
package/dist/Slider.js CHANGED
@@ -3,30 +3,39 @@
3
3
  var React2 = require('react');
4
4
  var reactNative = require('react-native');
5
5
  var RNSlider = require('@react-native-community/slider');
6
+ var Haptics = require('expo-haptics');
6
7
  var reactNativeSizeMatters = require('react-native-size-matters');
7
8
 
8
9
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
10
 
11
+ function _interopNamespace(e) {
12
+ if (e && e.__esModule) return e;
13
+ var n = Object.create(null);
14
+ if (e) {
15
+ Object.keys(e).forEach(function (k) {
16
+ if (k !== 'default') {
17
+ var d = Object.getOwnPropertyDescriptor(e, k);
18
+ Object.defineProperty(n, k, d.get ? d : {
19
+ enumerable: true,
20
+ get: function () { return e[k]; }
21
+ });
22
+ }
23
+ });
24
+ }
25
+ n.default = e;
26
+ return Object.freeze(n);
27
+ }
28
+
10
29
  var React2__default = /*#__PURE__*/_interopDefault(React2);
11
30
  var RNSlider__default = /*#__PURE__*/_interopDefault(RNSlider);
31
+ var Haptics__namespace = /*#__PURE__*/_interopNamespace(Haptics);
12
32
 
13
33
  // src/components/Slider/Slider.tsx
14
- var _haptics = null;
15
- var _loaded = false;
16
- async function getHaptics() {
17
- if (reactNative.Platform.OS === "web") return null;
18
- if (!_loaded) {
19
- _loaded = true;
20
- try {
21
- _haptics = await import('expo-haptics');
22
- } catch {
23
- _haptics = null;
24
- }
25
- }
26
- return _haptics;
34
+ function maybeHaptics() {
35
+ return reactNative.Platform.OS === "web" ? null : Haptics__namespace;
27
36
  }
28
37
  function selectionAsync() {
29
- getHaptics().then((h) => h?.selectionAsync());
38
+ maybeHaptics()?.selectionAsync();
30
39
  }
31
40
  var ThemeContext = React2.createContext(void 0);
32
41
  function useTheme() {
package/dist/Slider.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { Slider } from './chunk-C5ZRMR2E.mjs';
2
- import './chunk-ARONDO7M.mjs';
3
- import './chunk-KSSVIFYR.mjs';
1
+ export { Slider } from './chunk-4PF4LKNT.mjs';
2
+ import './chunk-CTUFFKGS.mjs';
3
+ import './chunk-ZQGCQ7SA.mjs';
4
4
  import './chunk-2CE3TQVY.mjs';
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
  import { ActivityIndicatorProps } from 'react-native';
3
3
 
4
4
  type SpinnerSize = 'sm' | 'md' | 'lg';
@@ -7,6 +7,6 @@ interface SpinnerProps extends Omit<ActivityIndicatorProps, 'size'> {
7
7
  color?: string;
8
8
  label?: string;
9
9
  }
10
- declare function Spinner({ size, color, label, ...props }: SpinnerProps): React.JSX.Element;
10
+ declare function Spinner({ size, color, label, ...props }: SpinnerProps): React__default.JSX.Element;
11
11
 
12
12
  export { Spinner, type SpinnerProps, type SpinnerSize };
package/dist/Spinner.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
  import { ActivityIndicatorProps } from 'react-native';
3
3
 
4
4
  type SpinnerSize = 'sm' | 'md' | 'lg';
@@ -7,6 +7,6 @@ interface SpinnerProps extends Omit<ActivityIndicatorProps, 'size'> {
7
7
  color?: string;
8
8
  label?: string;
9
9
  }
10
- declare function Spinner({ size, color, label, ...props }: SpinnerProps): React.JSX.Element;
10
+ declare function Spinner({ size, color, label, ...props }: SpinnerProps): React__default.JSX.Element;
11
11
 
12
12
  export { Spinner, type SpinnerProps, type SpinnerSize };
package/dist/Spinner.mjs CHANGED
@@ -1,3 +1,3 @@
1
- export { Spinner } from './chunk-2VIDP72N.mjs';
2
- import './chunk-KSSVIFYR.mjs';
1
+ export { Spinner } from './chunk-K3V6OTVB.mjs';
2
+ import './chunk-ZQGCQ7SA.mjs';
3
3
  import './chunk-2CE3TQVY.mjs';
package/dist/Stats.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 StatsVariant = 'elevated' | 'outlined' | 'filled';
@@ -7,7 +7,7 @@ interface StatsProps {
7
7
  value: string;
8
8
  label: string;
9
9
  description?: string;
10
- icon?: React.ReactNode;
10
+ icon?: React__default.ReactNode;
11
11
  iconName?: string;
12
12
  iconColor?: string;
13
13
  variant?: StatsVariant;
@@ -18,13 +18,13 @@ interface StatsProps {
18
18
  accessibilityLabel?: string;
19
19
  }
20
20
  interface StatsGroupProps {
21
- children: React.ReactNode;
21
+ children: React__default.ReactNode;
22
22
  gap?: number;
23
23
  style?: ViewStyle;
24
24
  }
25
- declare function StatsComponent({ value, label, description, icon, iconName, iconColor, variant, size, onPress, style, accessibilityLabel, }: StatsProps): React.JSX.Element;
26
- declare function StatsGroup({ children, gap, style }: StatsGroupProps): React.JSX.Element;
27
- declare const Stats: React.NamedExoticComponent<StatsProps> & {
25
+ declare function StatsComponent({ value, label, description, icon, iconName, iconColor, variant, size, onPress, style, accessibilityLabel, }: StatsProps): React__default.JSX.Element;
26
+ declare function StatsGroup({ children, gap, style }: StatsGroupProps): React__default.JSX.Element;
27
+ declare const Stats: React__default.NamedExoticComponent<StatsProps> & {
28
28
  readonly type: typeof StatsComponent;
29
29
  } & {
30
30
  Group: typeof StatsGroup;
package/dist/Stats.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 StatsVariant = 'elevated' | 'outlined' | 'filled';
@@ -7,7 +7,7 @@ interface StatsProps {
7
7
  value: string;
8
8
  label: string;
9
9
  description?: string;
10
- icon?: React.ReactNode;
10
+ icon?: React__default.ReactNode;
11
11
  iconName?: string;
12
12
  iconColor?: string;
13
13
  variant?: StatsVariant;
@@ -18,13 +18,13 @@ interface StatsProps {
18
18
  accessibilityLabel?: string;
19
19
  }
20
20
  interface StatsGroupProps {
21
- children: React.ReactNode;
21
+ children: React__default.ReactNode;
22
22
  gap?: number;
23
23
  style?: ViewStyle;
24
24
  }
25
- declare function StatsComponent({ value, label, description, icon, iconName, iconColor, variant, size, onPress, style, accessibilityLabel, }: StatsProps): React.JSX.Element;
26
- declare function StatsGroup({ children, gap, style }: StatsGroupProps): React.JSX.Element;
27
- declare const Stats: React.NamedExoticComponent<StatsProps> & {
25
+ declare function StatsComponent({ value, label, description, icon, iconName, iconColor, variant, size, onPress, style, accessibilityLabel, }: StatsProps): React__default.JSX.Element;
26
+ declare function StatsGroup({ children, gap, style }: StatsGroupProps): React__default.JSX.Element;
27
+ declare const Stats: React__default.NamedExoticComponent<StatsProps> & {
28
28
  readonly type: typeof StatsComponent;
29
29
  } & {
30
30
  Group: typeof StatsGroup;
package/dist/Stats.js CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  var React3 = require('react');
4
4
  var reactNative = require('react-native');
5
+ var Haptics = require('expo-haptics');
5
6
  var reactNativeSizeMatters = require('react-native-size-matters');
6
7
  var AntDesign = require('@expo/vector-icons/AntDesign');
7
8
  var Entypo = require('@expo/vector-icons/Entypo');
@@ -13,7 +14,26 @@ var pressto = require('pressto');
13
14
 
14
15
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
16
 
17
+ function _interopNamespace(e) {
18
+ if (e && e.__esModule) return e;
19
+ var n = Object.create(null);
20
+ if (e) {
21
+ Object.keys(e).forEach(function (k) {
22
+ if (k !== 'default') {
23
+ var d = Object.getOwnPropertyDescriptor(e, k);
24
+ Object.defineProperty(n, k, d.get ? d : {
25
+ enumerable: true,
26
+ get: function () { return e[k]; }
27
+ });
28
+ }
29
+ });
30
+ }
31
+ n.default = e;
32
+ return Object.freeze(n);
33
+ }
34
+
16
35
  var React3__default = /*#__PURE__*/_interopDefault(React3);
36
+ var Haptics__namespace = /*#__PURE__*/_interopNamespace(Haptics);
17
37
  var AntDesign__default = /*#__PURE__*/_interopDefault(AntDesign);
18
38
  var Entypo__default = /*#__PURE__*/_interopDefault(Entypo);
19
39
  var Feather__default = /*#__PURE__*/_interopDefault(Feather);
@@ -22,22 +42,11 @@ var MaterialIcons__default = /*#__PURE__*/_interopDefault(MaterialIcons);
22
42
  var Ionicons__default = /*#__PURE__*/_interopDefault(Ionicons);
23
43
 
24
44
  // src/components/Stats/Stats.tsx
25
- var _haptics = null;
26
- var _loaded = false;
27
- async function getHaptics() {
28
- if (reactNative.Platform.OS === "web") return null;
29
- if (!_loaded) {
30
- _loaded = true;
31
- try {
32
- _haptics = await import('expo-haptics');
33
- } catch {
34
- _haptics = null;
35
- }
36
- }
37
- return _haptics;
45
+ function maybeHaptics() {
46
+ return reactNative.Platform.OS === "web" ? null : Haptics__namespace;
38
47
  }
39
48
  function impactLight() {
40
- getHaptics().then((h) => h?.impactAsync(h.ImpactFeedbackStyle.Light));
49
+ maybeHaptics()?.impactAsync(Haptics__namespace.ImpactFeedbackStyle.Light);
41
50
  }
42
51
  var ThemeContext = React3.createContext(void 0);
43
52
  function useTheme() {
@@ -64,23 +73,17 @@ var ALL_FAMILIES = [
64
73
  { name: "MaterialIcons", component: MaterialIcons__default.default },
65
74
  { name: "Ionicons", component: Ionicons__default.default }
66
75
  ];
67
- var glyphCacheInitialized = false;
68
- function ensureGlyphCache() {
69
- if (glyphCacheInitialized) return;
70
- glyphCacheInitialized = true;
71
- for (const entry of ALL_FAMILIES) {
72
- try {
73
- entry.glyphMap = entry.component.glyphMap;
74
- } catch {
75
- entry.glyphMap = {};
76
- }
76
+ function getGlyphMap(component) {
77
+ try {
78
+ return component.glyphMap ?? {};
79
+ } catch {
80
+ return {};
77
81
  }
78
82
  }
79
83
  function Icon({ name, size, color, family }) {
80
- ensureGlyphCache();
81
84
  const entry = family ? ALL_FAMILIES.find((f) => f.name === family) : ALL_FAMILIES.find((f) => {
82
- const glyphMap = f.glyphMap;
83
- return glyphMap ? name in glyphMap : false;
85
+ const glyphMap = getGlyphMap(f.component);
86
+ return name in glyphMap;
84
87
  });
85
88
  if (!entry) return null;
86
89
  return React3__default.default.createElement(entry.component, { name, size, color });