@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
@@ -1,11 +1,12 @@
1
1
  import { PressableChip } 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';
6
- import { mvs, ms, vs, s } from './chunk-2CE3TQVY.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
+ import { vs, s, mvs, ms } from './chunk-2CE3TQVY.mjs';
7
7
  import React, { useState } from 'react';
8
8
  import { StyleSheet, ScrollView, View, Text } from 'react-native';
9
+ import { Image } from 'expo-image';
9
10
 
10
11
  function isSelected(value, candidate) {
11
12
  if (value == null) return false;
@@ -13,8 +14,10 @@ function isSelected(value, candidate) {
13
14
  }
14
15
  function Cell({ item, selected, width, onPress }) {
15
16
  const { colors } = useTheme();
17
+ const hasImage = !!item.imageUrl;
16
18
  const iconColor = selected ? colors.primary : colors.foregroundSubtle;
17
19
  const iconNode = item.icon ?? (item.iconName ? /* @__PURE__ */ React.createElement(Icon, { name: item.iconName, size: ms(24), color: iconColor }) : null);
20
+ const imageSize = width - 4;
18
21
  return /* @__PURE__ */ React.createElement(
19
22
  PressableChip,
20
23
  {
@@ -25,26 +28,44 @@ function Cell({ item, selected, width, onPress }) {
25
28
  activateOnHover: true,
26
29
  accessibilityRole: "button",
27
30
  accessibilityState: { selected, disabled: item.disabled },
28
- accessibilityLabel: item.label ?? String(item.value),
29
- style: [
30
- { width },
31
- styles.cell,
32
- {
33
- borderColor: selected ? colors.primary : "transparent"
34
- },
35
- item.disabled && styles.cellDisabled
36
- ]
31
+ accessibilityLabel: item.label ?? String(item.value)
37
32
  },
38
- iconNode,
39
- item.label ? /* @__PURE__ */ React.createElement(
40
- Text,
33
+ /* @__PURE__ */ React.createElement(
34
+ View,
41
35
  {
42
- style: [styles.label, { color: selected ? colors.primary : colors.foreground }],
43
- numberOfLines: 1,
44
- allowFontScaling: true
36
+ style: [
37
+ { width },
38
+ styles.cell,
39
+ hasImage && styles.cellImage,
40
+ {
41
+ borderColor: selected ? colors.primary : "transparent"
42
+ },
43
+ item.disabled && styles.cellDisabled
44
+ ]
45
45
  },
46
- item.label
47
- ) : null
46
+ hasImage ? /* @__PURE__ */ React.createElement(
47
+ Image,
48
+ {
49
+ source: item.imageUrl,
50
+ style: { width: imageSize, height: imageSize },
51
+ contentFit: "cover"
52
+ }
53
+ ) : null,
54
+ iconNode && !hasImage ? iconNode : null,
55
+ item.label ? /* @__PURE__ */ React.createElement(
56
+ Text,
57
+ {
58
+ style: [
59
+ styles.label,
60
+ hasImage && styles.labelImage,
61
+ { color: selected ? colors.primary : colors.foreground }
62
+ ],
63
+ numberOfLines: 2,
64
+ allowFontScaling: true
65
+ },
66
+ item.label
67
+ ) : null
68
+ )
48
69
  );
49
70
  }
50
71
  function SelectableGrid({
@@ -124,6 +145,13 @@ var styles = StyleSheet.create({
124
145
  paddingHorizontal: s(8),
125
146
  paddingVertical: vs(10)
126
147
  },
148
+ cellImage: {
149
+ padding: 0,
150
+ gap: 0,
151
+ overflow: "hidden",
152
+ alignItems: "stretch",
153
+ justifyContent: "flex-start"
154
+ },
127
155
  cellDisabled: {
128
156
  opacity: 0.4
129
157
  },
@@ -132,6 +160,11 @@ var styles = StyleSheet.create({
132
160
  fontSize: ms(11),
133
161
  lineHeight: mvs(14),
134
162
  textAlign: "center"
163
+ },
164
+ labelImage: {
165
+ paddingHorizontal: s(6),
166
+ paddingBottom: vs(6),
167
+ paddingTop: vs(3)
135
168
  }
136
169
  });
137
170
 
@@ -1,7 +1,7 @@
1
- import { impactMedium } from './chunk-ARONDO7M.mjs';
2
- import { useTheme } from './chunk-KSSVIFYR.mjs';
1
+ import { useSheetModal } from './chunk-HMKJGVXA.mjs';
2
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
3
3
  import { s, vs, mvs, ms } from './chunk-2CE3TQVY.mjs';
4
- import React, { useRef, useId, useState, useEffect, useCallback } from 'react';
4
+ import React, { useId, useCallback } from 'react';
5
5
  import { StyleSheet, View, Text, TouchableOpacity } from 'react-native';
6
6
  import { BottomSheetBackdrop, BottomSheetFooter, BottomSheetModal, BottomSheetScrollView, BottomSheetView } from '@gorhom/bottom-sheet';
7
7
  export { BottomSheetModalProvider, BottomSheetTextInput } from '@gorhom/bottom-sheet';
@@ -38,34 +38,8 @@ function Sheet({
38
38
  }) {
39
39
  const { colors } = useTheme();
40
40
  const insets = useSafeAreaInsets();
41
- const ref = useRef(null);
42
- const sheetState = useRef("idle");
43
- const onCloseRef = useRef(onClose);
41
+ const { ref, handleDismiss } = useSheetModal(open, onClose);
44
42
  const name = useId();
45
- const [tick, setTick] = useState(0);
46
- useEffect(() => {
47
- onCloseRef.current = onClose;
48
- }, [onClose]);
49
- const handleDismiss = useCallback(() => {
50
- sheetState.current = "idle";
51
- onCloseRef.current?.();
52
- setTick((t) => t + 1);
53
- }, []);
54
- useEffect(() => {
55
- if (open) {
56
- if (sheetState.current === "idle") {
57
- sheetState.current = "presenting";
58
- impactMedium();
59
- ref.current?.present();
60
- sheetState.current = "presented";
61
- }
62
- } else {
63
- if (sheetState.current === "presented" || sheetState.current === "presenting") {
64
- sheetState.current = "dismissing";
65
- ref.current?.dismiss();
66
- }
67
- }
68
- }, [open, tick]);
69
43
  const renderBackdrop = useCallback(
70
44
  (props) => /* @__PURE__ */ React.createElement(
71
45
  BottomSheetBackdrop,
@@ -1,7 +1,7 @@
1
1
  import { PressableCard } from './chunk-IFYMBOEN.mjs';
2
- import { impactLight } from './chunk-ARONDO7M.mjs';
3
- import { RADIUS } from './chunk-QY3X2UYR.mjs';
4
- import { useTheme } from './chunk-KSSVIFYR.mjs';
2
+ import { impactLight } from './chunk-CTUFFKGS.mjs';
3
+ import { RADIUS } from './chunk-DYYPDQA2.mjs';
4
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
5
5
  import { vs, s, mvs, ms } from './chunk-2CE3TQVY.mjs';
6
6
  import React from 'react';
7
7
  import { StyleSheet, View, Text } from 'react-native';
@@ -0,0 +1,37 @@
1
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
2
+ import React, { useState } from 'react';
3
+ import { View } from 'react-native';
4
+ import { Image as Image$1 } from 'expo-image';
5
+
6
+ function Image({ src, fallback, aspectRatio, borderRadius = 0, style, ...props }) {
7
+ const { colors } = useTheme();
8
+ const [failed, setFailed] = useState(false);
9
+ if (!src || failed) {
10
+ return fallback ? /* @__PURE__ */ React.createElement(View, { style: [style, { overflow: "hidden" }] }, fallback) : /* @__PURE__ */ React.createElement(
11
+ View,
12
+ {
13
+ style: [
14
+ { backgroundColor: colors.skeleton, overflow: "hidden" },
15
+ borderRadius ? { borderRadius } : void 0,
16
+ aspectRatio ? { aspectRatio } : void 0,
17
+ style
18
+ ]
19
+ }
20
+ );
21
+ }
22
+ const imageStyle = {
23
+ ...aspectRatio ? { aspectRatio, width: "100%" } : {},
24
+ ...borderRadius ? { borderRadius } : {}
25
+ };
26
+ return /* @__PURE__ */ React.createElement(
27
+ Image$1,
28
+ {
29
+ source: { uri: src },
30
+ style: [imageStyle, style],
31
+ onError: () => setFailed(true),
32
+ ...props
33
+ }
34
+ );
35
+ }
36
+
37
+ export { Image };
@@ -1,4 +1,4 @@
1
- import { useTheme } from './chunk-KSSVIFYR.mjs';
1
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
2
2
  import { ms, vs, s } from './chunk-2CE3TQVY.mjs';
3
3
  import React from 'react';
4
4
  import { toast, Toaster } from 'sonner-native';
@@ -1,6 +1,6 @@
1
- import { Button } from './chunk-Y6YS33GM.mjs';
2
- import { Icon } from './chunk-MZ6WRTD2.mjs';
3
- import { useTheme } from './chunk-KSSVIFYR.mjs';
1
+ import { Button } from './chunk-AHFEAY6M.mjs';
2
+ import { Icon } from './chunk-24JTXQ2M.mjs';
3
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
4
4
  import { s, vs, mvs, ms } from './chunk-2CE3TQVY.mjs';
5
5
  import React from 'react';
6
6
  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, mvs, s, vs } from './chunk-2CE3TQVY.mjs';
8
8
  import React from 'react';
9
9
  import { StyleSheet, View, Text, ScrollView } from 'react-native';
@@ -0,0 +1,111 @@
1
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
2
+ import { vs, s } from './chunk-2CE3TQVY.mjs';
3
+ import React, { useCallback } from 'react';
4
+ import { StyleSheet, View, Text, SectionList, RefreshControl } from 'react-native';
5
+
6
+ function VirtualizedList({
7
+ sections,
8
+ renderItem,
9
+ emptyTitle = "Sin contenido",
10
+ emptyDescription,
11
+ emptyComponent,
12
+ refreshing = false,
13
+ onRefresh,
14
+ stickyHeaders = true,
15
+ headerColor,
16
+ style,
17
+ ...props
18
+ }) {
19
+ const { colors } = useTheme();
20
+ const renderSectionHeader = useCallback(
21
+ ({ section }) => {
22
+ if (!section.title) return null;
23
+ return /* @__PURE__ */ React.createElement(View, { style: [styles.sectionHeader, { backgroundColor: colors.background }] }, /* @__PURE__ */ React.createElement(
24
+ Text,
25
+ {
26
+ style: [styles.sectionHeaderText, { color: headerColor ?? colors.foregroundMuted }],
27
+ allowFontScaling: true
28
+ },
29
+ section.title
30
+ ));
31
+ },
32
+ [colors.background, colors.foregroundMuted, headerColor]
33
+ );
34
+ const keyExtractor = useCallback(
35
+ (_item, index) => String(index),
36
+ []
37
+ );
38
+ const flatSections = sections.filter((s2) => s2.data.length > 0);
39
+ const hasData = flatSections.length > 0;
40
+ if (!hasData) {
41
+ if (emptyComponent) return /* @__PURE__ */ React.createElement(View, { style }, emptyComponent);
42
+ return /* @__PURE__ */ React.createElement(View, { style: [styles.empty, style] }, /* @__PURE__ */ React.createElement(
43
+ Text,
44
+ {
45
+ style: [styles.emptyTitle, { color: colors.foregroundMuted }],
46
+ allowFontScaling: true
47
+ },
48
+ emptyTitle
49
+ ), emptyDescription ? /* @__PURE__ */ React.createElement(
50
+ Text,
51
+ {
52
+ style: [styles.emptyDescription, { color: colors.foregroundMuted }],
53
+ allowFontScaling: true
54
+ },
55
+ emptyDescription
56
+ ) : null);
57
+ }
58
+ return /* @__PURE__ */ React.createElement(
59
+ SectionList,
60
+ {
61
+ sections: flatSections,
62
+ renderItem,
63
+ renderSectionHeader,
64
+ keyExtractor,
65
+ stickySectionHeadersEnabled: stickyHeaders,
66
+ refreshControl: onRefresh ? /* @__PURE__ */ React.createElement(
67
+ RefreshControl,
68
+ {
69
+ refreshing,
70
+ onRefresh,
71
+ tintColor: colors.primary
72
+ }
73
+ ) : void 0,
74
+ style,
75
+ showsVerticalScrollIndicator: false,
76
+ ...props
77
+ }
78
+ );
79
+ }
80
+ var styles = StyleSheet.create({
81
+ sectionHeader: {
82
+ paddingHorizontal: s(16),
83
+ paddingTop: vs(16),
84
+ paddingBottom: vs(6)
85
+ },
86
+ sectionHeaderText: {
87
+ fontFamily: "Sohne-SemiBold",
88
+ fontSize: 13,
89
+ letterSpacing: 0.32,
90
+ textTransform: "uppercase"
91
+ },
92
+ empty: {
93
+ flex: 1,
94
+ alignItems: "center",
95
+ justifyContent: "center",
96
+ paddingHorizontal: s(32),
97
+ gap: vs(8)
98
+ },
99
+ emptyTitle: {
100
+ fontFamily: "Sohne-Medium",
101
+ fontSize: 16,
102
+ textAlign: "center"
103
+ },
104
+ emptyDescription: {
105
+ fontFamily: "Sohne-Regular",
106
+ fontSize: 14,
107
+ textAlign: "center"
108
+ }
109
+ });
110
+
111
+ export { VirtualizedList };
@@ -0,0 +1,65 @@
1
+ import { BREAKPOINTS } from './chunk-DYYPDQA2.mjs';
2
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
3
+ import React from 'react';
4
+ import { StyleSheet, View, ScrollView, KeyboardAvoidingView, Platform } from 'react-native';
5
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
6
+
7
+ function ScreenContainer({
8
+ children,
9
+ maxWidth = BREAKPOINTS.wide,
10
+ scroll = false,
11
+ backgroundColor,
12
+ paddingTop,
13
+ paddingBottom,
14
+ paddingHorizontal,
15
+ keyboard = false,
16
+ style: _style
17
+ }) {
18
+ const insets = useSafeAreaInsets();
19
+ const { colors } = useTheme();
20
+ const wrapperStyle = {
21
+ flex: 1,
22
+ backgroundColor: backgroundColor ?? colors.background,
23
+ paddingTop: paddingTop ?? insets.top,
24
+ paddingBottom: paddingBottom ?? insets.bottom,
25
+ paddingHorizontal: paddingHorizontal ?? 0,
26
+ ..._style
27
+ };
28
+ const inner = /* @__PURE__ */ React.createElement(View, { style: [styles.inner, { maxWidth: maxWidth || void 0 }] }, children);
29
+ const content = scroll ? /* @__PURE__ */ React.createElement(
30
+ ScrollView,
31
+ {
32
+ style: styles.scroll,
33
+ contentContainerStyle: styles.scrollContent,
34
+ keyboardShouldPersistTaps: "handled"
35
+ },
36
+ inner
37
+ ) : inner;
38
+ if (keyboard) {
39
+ return /* @__PURE__ */ React.createElement(
40
+ KeyboardAvoidingView,
41
+ {
42
+ style: wrapperStyle,
43
+ behavior: Platform.OS === "ios" ? "padding" : void 0,
44
+ keyboardVerticalOffset: Platform.OS === "ios" ? 0 : 0
45
+ },
46
+ content
47
+ );
48
+ }
49
+ return /* @__PURE__ */ React.createElement(View, { style: wrapperStyle }, content);
50
+ }
51
+ var styles = StyleSheet.create({
52
+ scroll: {
53
+ flex: 1
54
+ },
55
+ scrollContent: {
56
+ flexGrow: 1
57
+ },
58
+ inner: {
59
+ flex: 1,
60
+ alignSelf: "center",
61
+ width: "100%"
62
+ }
63
+ });
64
+
65
+ export { ScreenContainer };
@@ -1,5 +1,5 @@
1
- import { ToastProvider } from './chunk-SZEKQAOY.mjs';
2
- import { ThemeProvider } from './chunk-KSSVIFYR.mjs';
1
+ import { ToastProvider } from './chunk-VSKBODEY.mjs';
2
+ import { ThemeProvider } from './chunk-ZQGCQ7SA.mjs';
3
3
  import React from 'react';
4
4
  import { StyleSheet } from 'react-native';
5
5
  import { SafeAreaProvider, initialWindowMetrics } from 'react-native-safe-area-context';
@@ -1,12 +1,12 @@
1
1
  import { TIMINGS } from './chunk-M53LC4Q7.mjs';
2
2
  import { PressableRow } from './chunk-IFYMBOEN.mjs';
3
- import { selectionAsync } from './chunk-ARONDO7M.mjs';
4
- import { Icon } from './chunk-MZ6WRTD2.mjs';
5
- import { useTheme } from './chunk-KSSVIFYR.mjs';
3
+ import { selectionAsync } from './chunk-CTUFFKGS.mjs';
4
+ import { Icon } from './chunk-24JTXQ2M.mjs';
5
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
6
6
  import { ms, vs, s } from './chunk-2CE3TQVY.mjs';
7
7
  import React, { useState } from 'react';
8
8
  import { StyleSheet, View, Text } from 'react-native';
9
- import Animated, { useSharedValue, useDerivedValue, withTiming, Easing, useAnimatedStyle } from 'react-native-reanimated';
9
+ import Animated, { useSharedValue, useAnimatedStyle, withTiming, Easing } from 'react-native-reanimated';
10
10
  import { Entypo } from '@expo/vector-icons';
11
11
 
12
12
  function AccordionItemComponent({
@@ -21,24 +21,20 @@ function AccordionItemComponent({
21
21
  React.useEffect(() => {
22
22
  isExpanded.value = isOpen;
23
23
  }, [isOpen, isExpanded]);
24
- const derivedHeight = useDerivedValue(
25
- () => withTiming(height.value * Number(isExpanded.value), {
26
- duration: isExpanded.value ? TIMINGS.expand.duration : TIMINGS.collapse.duration,
27
- easing: isExpanded.value ? Easing.bezier(0.23, 1, 0.32, 1) : Easing.in(Easing.ease)
28
- })
29
- );
30
- const derivedRotation = useDerivedValue(
31
- () => withTiming(isExpanded.value ? 1 : 0, {
24
+ const bodyStyle = useAnimatedStyle(() => ({
25
+ height: withTiming(height.value * Number(isExpanded.value), {
32
26
  duration: isExpanded.value ? TIMINGS.expand.duration : TIMINGS.collapse.duration,
33
27
  easing: isExpanded.value ? Easing.bezier(0.23, 1, 0.32, 1) : Easing.in(Easing.ease)
34
- })
35
- );
36
- const bodyStyle = useAnimatedStyle(() => ({
37
- height: derivedHeight.value,
28
+ }),
38
29
  overflow: "hidden"
39
30
  }));
40
31
  const rotationStyle = useAnimatedStyle(() => ({
41
- transform: [{ rotate: `${derivedRotation.value * 180}deg` }]
32
+ transform: [{
33
+ rotate: `${withTiming(isExpanded.value ? 1 : 0, {
34
+ duration: isExpanded.value ? TIMINGS.expand.duration : TIMINGS.collapse.duration,
35
+ easing: isExpanded.value ? Easing.bezier(0.23, 1, 0.32, 1) : Easing.in(Easing.ease)
36
+ }) * 180}deg`
37
+ }]
42
38
  }));
43
39
  return /* @__PURE__ */ React.createElement(View, { style: [styles.item, { backgroundColor: colors.card, borderColor: colors.border }] }, /* @__PURE__ */ React.createElement(
44
40
  PressableRow,
@@ -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 { vs, s, ms } from './chunk-2CE3TQVY.mjs';
4
4
  import React from 'react';
5
5
  import { StyleSheet, View, Text } from 'react-native';
@@ -1,8 +1,8 @@
1
1
  import { PressableCard } from './chunk-IFYMBOEN.mjs';
2
- import { impactLight } 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 { impactLight } 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 { s, vs, mvs, ms } from './chunk-2CE3TQVY.mjs';
7
7
  import React, { useState, useCallback } from 'react';
8
8
  import { StyleSheet, View, Text } from 'react-native';
@@ -1,5 +1,5 @@
1
- import { PagerDots } from './chunk-S44XWTTC.mjs';
2
- import { IconButton } from './chunk-ZTPYUU5C.mjs';
1
+ import { PagerDots } from './chunk-E4BJ5WXG.mjs';
2
+ import { IconButton } from './chunk-ZRUUUVOO.mjs';
3
3
  import { s, vs } from './chunk-2CE3TQVY.mjs';
4
4
  import React, { useState, useCallback } from 'react';
5
5
  import { Image } from 'expo-image';
@@ -25,23 +25,6 @@ function componentToHex(c) {
25
25
  function rgbToHex(r, g, b) {
26
26
  return `#${componentToHex(r)}${componentToHex(g)}${componentToHex(b)}`;
27
27
  }
28
- function withAlphaOnWhite(hex, alpha) {
29
- const rgb = hexToRgb(hex);
30
- if (!rgb) return hex;
31
- const r = rgb.r * alpha + 255 * (1 - alpha);
32
- const g = rgb.g * alpha + 255 * (1 - alpha);
33
- const b = rgb.b * alpha + 255 * (1 - alpha);
34
- return rgbToHex(r, g, b);
35
- }
36
- function withAlphaOnDark(hex, alpha, bgHex = "#0f0f0f") {
37
- const rgb = hexToRgb(hex);
38
- const bg = hexToRgb(bgHex);
39
- if (!rgb || !bg) return hex;
40
- const r = rgb.r * alpha + bg.r * (1 - alpha);
41
- const g = rgb.g * alpha + bg.g * (1 - alpha);
42
- const b = rgb.b * alpha + bg.b * (1 - alpha);
43
- return rgbToHex(r, g, b);
44
- }
45
28
  function mixWithBackground(fgHex, bgHex, opacity) {
46
29
  const fg = hexToRgb(fgHex);
47
30
  const bg = hexToRgb(bgHex);
@@ -51,13 +34,11 @@ function mixWithBackground(fgHex, bgHex, opacity) {
51
34
  const b = fg.b * opacity + bg.b * (1 - opacity);
52
35
  return rgbToHex(r, g, b);
53
36
  }
54
- function lighten(hex, amount) {
55
- return withAlphaOnWhite(hex, 1 - amount);
56
- }
57
- function darken(hex, amount) {
58
- const rgb = hexToRgb(hex);
59
- if (!rgb) return hex;
60
- return rgbToHex(rgb.r * (1 - amount), rgb.g * (1 - amount), rgb.b * (1 - amount));
37
+ function createColorPair(fg, bg, dark) {
38
+ return {
39
+ tint: mixWithBackground(fg, dark ? bg : "#ffffff", dark ? 0.15 : 0.08),
40
+ border: mixWithBackground(fg, dark ? bg : "#ffffff", dark ? 0.45 : 0.3)
41
+ };
61
42
  }
62
43
  var defaultLight = {
63
44
  background: "#ffffff",
@@ -100,17 +81,16 @@ var defaultDark = {
100
81
  function deriveColors(t, scheme) {
101
82
  const dark = scheme === "dark";
102
83
  const bg = t.background;
84
+ const WHITE = "#ffffff";
85
+ const BLACK = "#000000";
103
86
  const foregroundSubtle = mixWithBackground(t.foreground, bg, 0.7);
104
87
  const foregroundMuted = mixWithBackground(t.foreground, bg, 0.62);
105
- const surface = dark ? lighten(bg, -0.06) : darken(bg, 0.04);
106
- const surfaceStrong = dark ? lighten(bg, -0.12) : darken(bg, 0.08);
107
- const skeleton = dark ? lighten(bg, -0.1) : darken(bg, 0.1);
108
- const destructiveTint = dark ? withAlphaOnDark(t.destructive, 0.15, bg) : withAlphaOnWhite(t.destructive, 0.08);
109
- const destructiveBorder = dark ? withAlphaOnDark(t.destructive, 0.45, bg) : withAlphaOnWhite(t.destructive, 0.3);
110
- const successTint = dark ? withAlphaOnDark(t.success, 0.15, bg) : withAlphaOnWhite(t.success, 0.08);
111
- const successBorder = dark ? withAlphaOnDark(t.success, 0.45, bg) : withAlphaOnWhite(t.success, 0.3);
112
- const warningTint = dark ? withAlphaOnDark(t.warning, 0.15, bg) : withAlphaOnWhite(t.warning, 0.08);
113
- const warningBorder = dark ? withAlphaOnDark(t.warning, 0.45, bg) : withAlphaOnWhite(t.warning, 0.3);
88
+ const surface = dark ? mixWithBackground(bg, BLACK, 0.94) : mixWithBackground(bg, BLACK, 0.96);
89
+ const surfaceStrong = dark ? mixWithBackground(bg, BLACK, 0.88) : mixWithBackground(bg, BLACK, 0.92);
90
+ const skeleton = dark ? mixWithBackground(bg, BLACK, 0.9) : mixWithBackground(bg, BLACK, 0.9);
91
+ const { tint: destructiveTint, border: destructiveBorder } = createColorPair(t.destructive, bg, dark);
92
+ const { tint: successTint, border: successBorder } = createColorPair(t.success, bg, dark);
93
+ const { tint: warningTint, border: warningBorder } = createColorPair(t.warning, bg, dark);
114
94
  return {
115
95
  ...t,
116
96
  foregroundSubtle,
@@ -129,7 +109,7 @@ function deriveColors(t, scheme) {
129
109
  accentForegroundResolved: t.accentForeground ?? t.primaryForeground,
130
110
  ring: t.accent ?? t.primary,
131
111
  input: t.border,
132
- separator: dark ? lighten(t.border, 0.22) : darken(t.border, 0.16)
112
+ separator: dark ? mixWithBackground(t.border, WHITE, 0.78) : mixWithBackground(t.border, BLACK, 0.84)
133
113
  };
134
114
  }
135
115
  var ThemeContext = createContext(void 0);
@@ -1,7 +1,7 @@
1
1
  import { PressableButton } from './chunk-IFYMBOEN.mjs';
2
- import { impactLight } from './chunk-ARONDO7M.mjs';
3
- import { Icon } from './chunk-MZ6WRTD2.mjs';
4
- import { useTheme } from './chunk-KSSVIFYR.mjs';
2
+ import { impactLight } from './chunk-CTUFFKGS.mjs';
3
+ import { Icon } from './chunk-24JTXQ2M.mjs';
4
+ import { useTheme } from './chunk-ZQGCQ7SA.mjs';
5
5
  import { s, ms } from './chunk-2CE3TQVY.mjs';
6
6
  import React from 'react';
7
7
  import { StyleSheet, View, ActivityIndicator, Text } from 'react-native';
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
 
3
3
  type ThemeColors = {
4
4
  background: string;
@@ -50,7 +50,7 @@ type ThemeContextValue = {
50
50
  };
51
51
 
52
52
  interface RetrayProviderProps {
53
- children: React.ReactNode;
53
+ children: React__default.ReactNode;
54
54
  /** Optional per-scheme token overrides — forwarded to `ThemeProvider`. */
55
55
  theme?: Theme;
56
56
  /**
@@ -81,6 +81,6 @@ interface RetrayProviderProps {
81
81
  * )
82
82
  * }
83
83
  */
84
- declare function RetrayProvider({ children, theme, colorScheme }: RetrayProviderProps): React.JSX.Element;
84
+ declare function RetrayProvider({ children, theme, colorScheme }: RetrayProviderProps): React__default.JSX.Element;
85
85
 
86
86
  export { type ColorScheme as C, type ResolvedColors as R, type Theme as T, type ThemeContextValue as a, type ThemeColors as b, RetrayProvider as c, type RetrayProviderProps as d };
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React__default from 'react';
2
2
 
3
3
  type ThemeColors = {
4
4
  background: string;
@@ -50,7 +50,7 @@ type ThemeContextValue = {
50
50
  };
51
51
 
52
52
  interface RetrayProviderProps {
53
- children: React.ReactNode;
53
+ children: React__default.ReactNode;
54
54
  /** Optional per-scheme token overrides — forwarded to `ThemeProvider`. */
55
55
  theme?: Theme;
56
56
  /**
@@ -81,6 +81,6 @@ interface RetrayProviderProps {
81
81
  * )
82
82
  * }
83
83
  */
84
- declare function RetrayProvider({ children, theme, colorScheme }: RetrayProviderProps): React.JSX.Element;
84
+ declare function RetrayProvider({ children, theme, colorScheme }: RetrayProviderProps): React__default.JSX.Element;
85
85
 
86
86
  export { type ColorScheme as C, type ResolvedColors as R, type Theme as T, type ThemeContextValue as a, type ThemeColors as b, RetrayProvider as c, type RetrayProviderProps as d };