@retray-dev/ui-kit 12.2.0 → 13.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. package/CONSUMER.md +26 -11
  2. package/DESIGN.md +2 -2
  3. package/README.md +15 -11
  4. package/{COMPONENTS.md → SKILL.md} +374 -996
  5. package/dist/Accordion.d.mts +2 -0
  6. package/dist/Accordion.d.ts +2 -0
  7. package/dist/Accordion.js +49 -210
  8. package/dist/Accordion.mjs +6 -6
  9. package/dist/AlertBanner.js +29 -153
  10. package/dist/AlertBanner.mjs +3 -4
  11. package/dist/AppHeader.d.mts +5 -2
  12. package/dist/AppHeader.d.ts +5 -2
  13. package/dist/AppHeader.js +45 -239
  14. package/dist/AppHeader.mjs +6 -8
  15. package/dist/Avatar.d.mts +17 -1
  16. package/dist/Avatar.d.ts +17 -1
  17. package/dist/Avatar.js +80 -115
  18. package/dist/Avatar.mjs +2 -3
  19. package/dist/Badge.js +24 -149
  20. package/dist/Badge.mjs +3 -4
  21. package/dist/Button.js +79 -267
  22. package/dist/Button.mjs +6 -7
  23. package/dist/ButtonGroup.mjs +0 -1
  24. package/dist/Card.js +15 -200
  25. package/dist/Card.mjs +4 -6
  26. package/dist/CategoryStrip.d.mts +0 -5
  27. package/dist/CategoryStrip.d.ts +0 -5
  28. package/dist/CategoryStrip.js +47 -265
  29. package/dist/CategoryStrip.mjs +6 -7
  30. package/dist/Checkbox.d.mts +2 -1
  31. package/dist/Checkbox.d.ts +2 -1
  32. package/dist/Checkbox.js +18 -201
  33. package/dist/Checkbox.mjs +5 -6
  34. package/dist/Chip.js +44 -236
  35. package/dist/Chip.mjs +7 -7
  36. package/dist/ConfirmDialog.d.mts +2 -1
  37. package/dist/ConfirmDialog.d.ts +2 -1
  38. package/dist/ConfirmDialog.js +110 -300
  39. package/dist/ConfirmDialog.mjs +7 -8
  40. package/dist/CurrencyDisplay.js +1 -114
  41. package/dist/CurrencyDisplay.mjs +2 -3
  42. package/dist/CurrencyInput.js +35 -162
  43. package/dist/CurrencyInput.mjs +5 -6
  44. package/dist/DetailRow.js +25 -150
  45. package/dist/DetailRow.mjs +3 -4
  46. package/dist/EmptyState.js +80 -268
  47. package/dist/EmptyState.mjs +7 -8
  48. package/dist/ErrorBoundary.js +32 -199
  49. package/dist/ErrorBoundary.mjs +4 -5
  50. package/dist/Form.js +1 -114
  51. package/dist/Form.mjs +2 -3
  52. package/dist/HolographicCard.d.mts +0 -28
  53. package/dist/HolographicCard.d.ts +0 -28
  54. package/dist/HolographicCard.js +20 -130
  55. package/dist/HolographicCard.mjs +9 -33
  56. package/dist/IconButton.js +36 -234
  57. package/dist/IconButton.mjs +5 -7
  58. package/dist/IconPicker.js +222 -929
  59. package/dist/IconPicker.mjs +5 -6
  60. package/dist/ImageUpload.d.mts +3 -3
  61. package/dist/ImageUpload.d.ts +3 -3
  62. package/dist/ImageUpload.js +49 -238
  63. package/dist/ImageUpload.mjs +5 -7
  64. package/dist/ImageViewer.js +75 -266
  65. package/dist/ImageViewer.mjs +8 -9
  66. package/dist/Input.d.mts +1 -1
  67. package/dist/Input.d.ts +1 -1
  68. package/dist/Input.js +35 -162
  69. package/dist/Input.mjs +4 -5
  70. package/dist/LabelValue.js +24 -149
  71. package/dist/LabelValue.mjs +3 -4
  72. package/dist/ListGroup.js +1 -114
  73. package/dist/ListGroup.mjs +2 -3
  74. package/dist/ListItem.d.mts +2 -1
  75. package/dist/ListItem.d.ts +2 -1
  76. package/dist/ListItem.js +41 -236
  77. package/dist/ListItem.mjs +5 -7
  78. package/dist/MediaCard.d.mts +0 -14
  79. package/dist/MediaCard.d.ts +0 -14
  80. package/dist/MediaCard.js +69 -315
  81. package/dist/MediaCard.mjs +5 -7
  82. package/dist/MenuGroup.js +1 -114
  83. package/dist/MenuGroup.mjs +2 -3
  84. package/dist/MenuItem.d.mts +2 -1
  85. package/dist/MenuItem.d.ts +2 -1
  86. package/dist/MenuItem.js +39 -235
  87. package/dist/MenuItem.mjs +5 -7
  88. package/dist/MonthPicker.js +8 -163
  89. package/dist/MonthPicker.mjs +3 -4
  90. package/dist/NumberStepper.d.mts +2 -1
  91. package/dist/NumberStepper.d.ts +2 -1
  92. package/dist/NumberStepper.js +44 -239
  93. package/dist/NumberStepper.mjs +5 -7
  94. package/dist/PagerDots.d.mts +1 -1
  95. package/dist/PagerDots.d.ts +1 -1
  96. package/dist/PagerDots.js +69 -224
  97. package/dist/PagerDots.mjs +6 -6
  98. package/dist/Pressable.js +14 -85
  99. package/dist/Pressable.mjs +4 -5
  100. package/dist/PricingCard.js +87 -272
  101. package/dist/PricingCard.mjs +8 -9
  102. package/dist/Progress.js +3 -123
  103. package/dist/Progress.mjs +3 -4
  104. package/dist/RadioGroup.js +52 -265
  105. package/dist/RadioGroup.mjs +5 -6
  106. package/dist/RetrayProvider.js +3 -6
  107. package/dist/RetrayProvider.mjs +3 -4
  108. package/dist/Select.d.mts +3 -1
  109. package/dist/Select.d.ts +3 -1
  110. package/dist/Select.js +27 -233
  111. package/dist/Select.mjs +4 -6
  112. package/dist/SelectableCard.js +33 -209
  113. package/dist/SelectableCard.mjs +5 -6
  114. package/dist/SelectableGrid.d.mts +0 -21
  115. package/dist/SelectableGrid.d.ts +0 -21
  116. package/dist/SelectableGrid.js +49 -272
  117. package/dist/SelectableGrid.mjs +5 -7
  118. package/dist/Separator.js +1 -114
  119. package/dist/Separator.mjs +2 -3
  120. package/dist/Sheet.d.mts +1 -1
  121. package/dist/Sheet.d.ts +1 -1
  122. package/dist/Sheet.js +33 -175
  123. package/dist/Sheet.mjs +3 -4
  124. package/dist/SheetSelect.js +39 -236
  125. package/dist/SheetSelect.mjs +6 -7
  126. package/dist/Skeleton.js +4 -124
  127. package/dist/Skeleton.mjs +3 -4
  128. package/dist/Slider.d.mts +2 -1
  129. package/dist/Slider.d.ts +2 -1
  130. package/dist/Slider.js +8 -161
  131. package/dist/Slider.mjs +3 -4
  132. package/dist/Spinner.js +3 -116
  133. package/dist/Spinner.mjs +2 -3
  134. package/dist/Stats.js +36 -234
  135. package/dist/Stats.mjs +5 -7
  136. package/dist/Switch.d.mts +2 -1
  137. package/dist/Switch.d.ts +2 -1
  138. package/dist/Switch.js +26 -176
  139. package/dist/Switch.mjs +5 -5
  140. package/dist/TabBar.js +43 -200
  141. package/dist/TabBar.mjs +5 -5
  142. package/dist/Tabs.js +15 -199
  143. package/dist/Tabs.mjs +5 -6
  144. package/dist/Text.js +9 -130
  145. package/dist/Text.mjs +2 -3
  146. package/dist/Textarea.d.mts +2 -1
  147. package/dist/Textarea.d.ts +2 -1
  148. package/dist/Textarea.js +71 -219
  149. package/dist/Textarea.mjs +4 -5
  150. package/dist/Toast.d.mts +12 -10
  151. package/dist/Toast.d.ts +12 -10
  152. package/dist/Toast.js +1 -114
  153. package/dist/Toast.mjs +2 -3
  154. package/dist/Toggle.js +39 -236
  155. package/dist/Toggle.mjs +6 -7
  156. package/dist/{chunk-ELGEOM7I.mjs → chunk-2QXJDRVU.mjs} +13 -10
  157. package/dist/{chunk-LIS6I5UP.mjs → chunk-2VIDP72N.mjs} +3 -3
  158. package/dist/{chunk-NHDI3VQB.mjs → chunk-422IVD3H.mjs} +16 -12
  159. package/dist/{chunk-DF7JA72E.mjs → chunk-4NQFTHN3.mjs} +13 -7
  160. package/dist/{chunk-3XCFYSX4.mjs → chunk-5MYNAAFE.mjs} +13 -17
  161. package/dist/{chunk-E7NEHHXV.mjs → chunk-62BBSSUF.mjs} +3 -3
  162. package/dist/{chunk-UBUXUMER.mjs → chunk-77UOVFIS.mjs} +7 -5
  163. package/dist/{chunk-M3C7XM2M.mjs → chunk-7BZJRB77.mjs} +28 -18
  164. package/dist/chunk-ARONDO7M.mjs +40 -0
  165. package/dist/{chunk-GH67YXG6.mjs → chunk-AZV7KNJI.mjs} +3 -3
  166. package/dist/{chunk-2P2CB235.mjs → chunk-BULKGOIZ.mjs} +7 -8
  167. package/dist/{chunk-RJNLAH76.mjs → chunk-C5ZRMR2E.mjs} +4 -2
  168. package/dist/chunk-CM2DG4MR.mjs +142 -0
  169. package/dist/{chunk-UQ4742ET.mjs → chunk-COA2YZOX.mjs} +8 -6
  170. package/dist/{chunk-EDLCGYIO.mjs → chunk-CZN6L2QU.mjs} +11 -8
  171. package/dist/{chunk-TS7DGUIR.mjs → chunk-DBHSUUKU.mjs} +2 -2
  172. package/dist/{chunk-57V2LXCK.mjs → chunk-DE25XTVQ.mjs} +3 -3
  173. package/dist/{chunk-RMRS44MQ.mjs → chunk-E2PONRJG.mjs} +13 -9
  174. package/dist/{chunk-GUTDFUNF.mjs → chunk-EHGBHFMH.mjs} +9 -17
  175. package/dist/{chunk-ZIMY2QUM.mjs → chunk-ERWJPVX7.mjs} +2 -2
  176. package/dist/{chunk-NLZY4TXU.mjs → chunk-ESQDPO5E.mjs} +7 -7
  177. package/dist/{chunk-VJBUCITV.mjs → chunk-EW2FIDSM.mjs} +1 -1
  178. package/dist/{chunk-HC4VVCWY.mjs → chunk-FTTI6T5Q.mjs} +4 -4
  179. package/dist/{chunk-MVMGPZN6.mjs → chunk-H6MQL7PS.mjs} +12 -7
  180. package/dist/{chunk-CF27NBXO.mjs → chunk-HHOOFDBA.mjs} +38 -41
  181. package/dist/{chunk-2HFD4IHU.mjs → chunk-HUSSF6TF.mjs} +1 -1
  182. package/dist/{chunk-HEDQPK4I.mjs → chunk-IDVUZIVY.mjs} +16 -22
  183. package/dist/chunk-IFYMBOEN.mjs +14 -0
  184. package/dist/{chunk-QOLWA2PW.mjs → chunk-IGU223UM.mjs} +80 -4
  185. package/dist/chunk-IJCMPVW5.mjs +121 -0
  186. package/dist/{chunk-AENAVIKT.mjs → chunk-ITG4JQM3.mjs} +4 -4
  187. package/dist/{chunk-E5UKLSJZ.mjs → chunk-K3QX2M26.mjs} +11 -8
  188. package/dist/{chunk-4OORJ2DY.mjs → chunk-K7TKID3V.mjs} +8 -7
  189. package/dist/{chunk-2LG326TT.mjs → chunk-KAGADD2O.mjs} +4 -4
  190. package/dist/{chunk-IVSRW4HS.mjs → chunk-KC5QDYGZ.mjs} +4 -4
  191. package/dist/{chunk-7AFZWSCI.mjs → chunk-KPTY7UYQ.mjs} +1 -1
  192. package/dist/{chunk-YTXRIXNZ.mjs → chunk-KSSVIFYR.mjs} +9 -12
  193. package/dist/chunk-L3YKPTJQ.mjs +119 -0
  194. package/dist/chunk-M53LC4Q7.mjs +35 -0
  195. package/dist/chunk-MZ6WRTD2.mjs +40 -0
  196. package/dist/chunk-NGEN2EES.mjs +581 -0
  197. package/dist/{chunk-ZR6HSEAB.mjs → chunk-NPCBNGNE.mjs} +17 -26
  198. package/dist/{chunk-C43HRKXH.mjs → chunk-OBV72JD4.mjs} +1 -1
  199. package/dist/{chunk-LPV4NJJK.mjs → chunk-PGQ6FMXS.mjs} +6 -5
  200. package/dist/{chunk-MEPSKGBO.mjs → chunk-PI6RULJX.mjs} +1 -1
  201. package/dist/{chunk-F3YTWO3T.mjs → chunk-RA6SAAFE.mjs} +9 -8
  202. package/dist/{chunk-UNNRUJTM.mjs → chunk-RRKM4MKB.mjs} +7 -7
  203. package/dist/{chunk-ULGNQPNE.mjs → chunk-S2VGME7X.mjs} +1 -1
  204. package/dist/{chunk-OLVJFKXS.mjs → chunk-S44XWTTC.mjs} +35 -25
  205. package/dist/{chunk-YMYIEVZP.mjs → chunk-SZEKQAOY.mjs} +1 -1
  206. package/dist/{chunk-BXF4AMHY.mjs → chunk-TMH263OK.mjs} +5 -4
  207. package/dist/{chunk-NJG7DHVF.mjs → chunk-U6DEBYU5.mjs} +10 -9
  208. package/dist/{chunk-QXDGGOLC.mjs → chunk-UMZTPUB3.mjs} +33 -21
  209. package/dist/{chunk-KSUWPU2F.mjs → chunk-WIPEDNSD.mjs} +7 -7
  210. package/dist/{chunk-QDAZGZUF.mjs → chunk-XCIG6HT2.mjs} +3 -3
  211. package/dist/{chunk-4J2PXL36.mjs → chunk-Y6YS33GM.mjs} +40 -38
  212. package/dist/{chunk-4XOB5TTD.mjs → chunk-ZKDKKQCE.mjs} +5 -5
  213. package/dist/{chunk-LOBLCFMN.mjs → chunk-ZTPYUU5C.mjs} +5 -5
  214. package/dist/fonts.mjs +0 -2
  215. package/dist/index.d.mts +13 -73
  216. package/dist/index.d.ts +13 -73
  217. package/dist/index.js +1149 -1892
  218. package/dist/index.mjs +81 -86
  219. package/package.json +20 -20
  220. package/src/components/Accordion/Accordion.tsx +15 -9
  221. package/src/components/AlertBanner/AlertBanner.tsx +7 -6
  222. package/src/components/AppHeader/AppHeader.tsx +25 -10
  223. package/src/components/Avatar/Avatar.tsx +92 -1
  224. package/src/components/Avatar/index.ts +2 -2
  225. package/src/components/Badge/Badge.tsx +2 -2
  226. package/src/components/Button/Button.tsx +50 -46
  227. package/src/components/Card/Card.tsx +1 -0
  228. package/src/components/CategoryStrip/CategoryStrip.tsx +36 -49
  229. package/src/components/Checkbox/Checkbox.tsx +3 -0
  230. package/src/components/Chip/Chip.tsx +5 -4
  231. package/src/components/ConfirmDialog/ConfirmDialog.tsx +33 -17
  232. package/src/components/DetailRow/DetailRow.tsx +3 -3
  233. package/src/components/EmptyState/EmptyState.tsx +2 -2
  234. package/src/components/ErrorBoundary/ErrorBoundary.tsx +6 -6
  235. package/src/components/HolographicCard/HolographicCard.tsx +14 -95
  236. package/src/components/IconButton/IconButton.tsx +2 -2
  237. package/src/components/IconPicker/IconPicker.tsx +13 -12
  238. package/src/components/ImageUpload/ImageUpload.tsx +43 -46
  239. package/src/components/ImageViewer/ImageViewer.tsx +3 -3
  240. package/src/components/Input/Input.tsx +11 -5
  241. package/src/components/LabelValue/LabelValue.tsx +2 -2
  242. package/src/components/ListItem/ListItem.tsx +7 -4
  243. package/src/components/MediaCard/MediaCard.tsx +21 -59
  244. package/src/components/MenuItem/MenuItem.tsx +5 -2
  245. package/src/components/MonthPicker/MonthPicker.tsx +2 -2
  246. package/src/components/NumberStepper/NumberStepper.tsx +10 -6
  247. package/src/components/PagerDots/PagerDots.tsx +38 -28
  248. package/src/components/PricingCard/PricingCard.tsx +6 -6
  249. package/src/components/RadioGroup/RadioGroup.tsx +18 -31
  250. package/src/components/Select/Select.tsx +35 -39
  251. package/src/components/SelectableCard/SelectableCard.tsx +4 -6
  252. package/src/components/SelectableGrid/SelectableGrid.tsx +37 -72
  253. package/src/components/Sheet/Sheet.tsx +28 -15
  254. package/src/components/Sheet/index.ts +2 -2
  255. package/src/components/SheetSelect/SheetSelect.tsx +3 -3
  256. package/src/components/Skeleton/Skeleton.tsx +1 -1
  257. package/src/components/Slider/Slider.tsx +3 -0
  258. package/src/components/Spinner/Spinner.tsx +2 -2
  259. package/src/components/Stats/Stats.tsx +2 -2
  260. package/src/components/Switch/Switch.tsx +12 -7
  261. package/src/components/TabBar/TabBar.tsx +9 -8
  262. package/src/components/Text/Text.tsx +13 -1
  263. package/src/components/Textarea/Textarea.tsx +18 -32
  264. package/src/components/Toggle/Toggle.tsx +3 -3
  265. package/src/hooks/useConfirmDialog.ts +31 -42
  266. package/src/index.ts +3 -4
  267. package/src/theme/ThemeProvider.tsx +1 -4
  268. package/src/theme/colorUtils.ts +1 -72
  269. package/src/theme/colors.ts +40 -1
  270. package/src/theme/types.ts +2 -2
  271. package/src/utils/animations.ts +0 -47
  272. package/src/utils/curatedIcons.ts +93 -801
  273. package/src/utils/haptics.ts +13 -208
  274. package/src/utils/icons.ts +27 -91
  275. package/src/utils/pressable.ts +10 -61
  276. package/dist/VirtualList.d.mts +0 -19
  277. package/dist/VirtualList.d.ts +0 -19
  278. package/dist/VirtualList.js +0 -38
  279. package/dist/VirtualList.mjs +0 -2
  280. package/dist/chunk-2BA3JMKK.mjs +0 -136
  281. package/dist/chunk-3DKJ2GIC.mjs +0 -30
  282. package/dist/chunk-7ELGZ66G.mjs +0 -164
  283. package/dist/chunk-DVK4G2GT.mjs +0 -59
  284. package/dist/chunk-EJ7ZPXOH.mjs +0 -163
  285. package/dist/chunk-KA7LTET3.mjs +0 -71
  286. package/dist/chunk-LNPKGWBG.mjs +0 -134
  287. package/dist/chunk-NC5ZTR2Y.mjs +0 -32
  288. package/dist/chunk-SAWUXP3A.mjs +0 -1114
  289. package/dist/chunk-Y6FXYEAI.mjs +0 -8
  290. package/dist/chunk-YNROWHQJ.mjs +0 -46
  291. package/src/components/VirtualList/VirtualList.tsx +0 -60
  292. package/src/components/VirtualList/index.ts +0 -1
  293. package/src/utils/fontGuard.ts +0 -35
  294. package/src/utils/hover.ts +0 -25
  295. package/src/utils/useColorTransition.ts +0 -40
  296. package/src/utils/usePressScale.ts +0 -75
@@ -1,1114 +0,0 @@
1
- import { Spinner } from './chunk-LIS6I5UP.mjs';
2
- import { selectionAsync, impactMedium } from './chunk-EJ7ZPXOH.mjs';
3
- import { RADIUS } from './chunk-QY3X2UYR.mjs';
4
- import { renderIcon } from './chunk-KA7LTET3.mjs';
5
- import { useTheme } from './chunk-YTXRIXNZ.mjs';
6
- import { s, vs, ms } from './chunk-2CE3TQVY.mjs';
7
- import React, { useRef, useState, useId, useMemo, useCallback } from 'react';
8
- import { Dimensions, StyleSheet, TouchableOpacity, View, Text } from 'react-native';
9
- import { ScrollView } from 'react-native-gesture-handler';
10
- import { BottomSheetBackdrop, BottomSheetModal, BottomSheetScrollView } from '@gorhom/bottom-sheet';
11
- import { useSafeAreaInsets } from 'react-native-safe-area-context';
12
-
13
- // src/utils/curatedIcons.ts
14
- var CURATED_ICONS = [
15
- // ─── Food ────────────────────────────────────────────────────────────────────
16
- {
17
- name: "food",
18
- label: "Food",
19
- labelEs: "Comida",
20
- categoryIcon: "coffee",
21
- icons: [
22
- // Bebidas
23
- "beer-outline",
24
- "wine-outline",
25
- "cafe-outline",
26
- "water-outline",
27
- "coffee",
28
- // Comida
29
- "pizza-outline",
30
- "fast-food-outline",
31
- "fish-outline",
32
- "ice-cream-outline",
33
- "egg-outline",
34
- "nutrition-outline",
35
- // Servicio y operación
36
- "restaurant-outline",
37
- "server-outline",
38
- "menu-outline",
39
- "basket-outline",
40
- "receipt-outline",
41
- "pricetag-outline",
42
- "pricetags-outline",
43
- "reorder-four-outline",
44
- "reorder-three-outline",
45
- "cart-outline",
46
- "cash-outline",
47
- "wallet-outline",
48
- "storefront-outline",
49
- // Delivery / pedidos
50
- "truck",
51
- "package",
52
- "shopping-bag",
53
- "shopping-cart",
54
- // Ubicación y reserva
55
- "map-pin",
56
- "home",
57
- "calendar",
58
- "clock",
59
- // Experiencia
60
- "star",
61
- "heart",
62
- "bookmark",
63
- "thumbs-up",
64
- "check",
65
- "gift"
66
- ]
67
- },
68
- // ─── Sports ──────────────────────────────────────────────────────────────────
69
- {
70
- name: "sports",
71
- label: "Sports",
72
- labelEs: "Deportes",
73
- categoryIcon: "trophy-outline",
74
- icons: [
75
- // Deportes
76
- "american-football-outline",
77
- "baseball-outline",
78
- "basketball-outline",
79
- "bicycle-outline",
80
- "football-outline",
81
- "tennisball-outline",
82
- "golf-outline",
83
- "fitness-outline",
84
- "car-sport-outline",
85
- "game-controller-outline",
86
- // Competición y logros
87
- "trophy-outline",
88
- "medal-outline",
89
- "award",
90
- "target",
91
- "flag",
92
- "crosshair",
93
- // Outdoor
94
- "compass-outline",
95
- "map-outline",
96
- "trail-sign-outline",
97
- "bonfire-outline",
98
- "snow-outline",
99
- "flame-outline",
100
- "sun",
101
- "droplet",
102
- "wind",
103
- "map",
104
- "map-pin",
105
- "navigation",
106
- "navigation-2",
107
- // Rendimiento y métricas
108
- "stats-chart-outline",
109
- "trending-up-outline",
110
- "trending-down-outline",
111
- "bar-chart-outline",
112
- "pie-chart-outline",
113
- "analytics-outline",
114
- "activity",
115
- "zap",
116
- "watch",
117
- "trending-up",
118
- "trending-down",
119
- "bar-chart-2",
120
- "clock",
121
- "calendar"
122
- ]
123
- },
124
- // ─── Business ────────────────────────────────────────────────────────────────
125
- {
126
- name: "business",
127
- label: "Business",
128
- labelEs: "Negocios",
129
- categoryIcon: "briefcase",
130
- icons: [
131
- // Empresa
132
- "briefcase",
133
- "users",
134
- "user",
135
- "user-plus",
136
- "user-check",
137
- "user-x",
138
- "briefcase-outline",
139
- "business-outline",
140
- "id-card-outline",
141
- // Comercio y operación
142
- "shopping-cart",
143
- "shopping-bag",
144
- "credit-card",
145
- "dollar-sign",
146
- "percent",
147
- "tag",
148
- "gift",
149
- "cart-outline",
150
- "cash-outline",
151
- "wallet-outline",
152
- "storefront-outline",
153
- "pricetag-outline",
154
- "pricetags-outline",
155
- "receipt-outline",
156
- "card-outline",
157
- // Logística
158
- "truck",
159
- "package",
160
- // Documentos
161
- "file",
162
- "file-text",
163
- "file-plus",
164
- "folder",
165
- "paperclip",
166
- "document-outline",
167
- "document-text-outline",
168
- "documents-outline",
169
- "folder-outline",
170
- // Comunicación de negocio
171
- "mail",
172
- "phone",
173
- "phone-call",
174
- "send",
175
- "message-square",
176
- "mail-outline",
177
- // Análisis
178
- "bar-chart",
179
- "bar-chart-2",
180
- "pie-chart",
181
- "trending-up",
182
- "trending-down",
183
- "activity",
184
- "globe"
185
- ]
186
- },
187
- // ─── Objects ─────────────────────────────────────────────────────────────────
188
- {
189
- name: "objects",
190
- label: "Objects",
191
- labelEs: "Objetos",
192
- categoryIcon: "package",
193
- icons: [
194
- // Archivos y carpetas
195
- "file",
196
- "file-text",
197
- "file-plus",
198
- "file-minus",
199
- "folder",
200
- "folder-plus",
201
- "folder-minus",
202
- "archive",
203
- "save",
204
- "paperclip",
205
- "document-outline",
206
- "document-text-outline",
207
- "documents-outline",
208
- "folder-outline",
209
- "folder-open-outline",
210
- "file-tray-outline",
211
- "file-tray-full-outline",
212
- "file-tray-stacked-outline",
213
- "archive-outline",
214
- "save-outline",
215
- // Seguridad
216
- "lock",
217
- "unlock",
218
- "key",
219
- "shield",
220
- "shield-off",
221
- "lock-closed-outline",
222
- "lock-open-outline",
223
- "key-outline",
224
- "shield-outline",
225
- "shield-checkmark-outline",
226
- // Dispositivos
227
- "monitor",
228
- "tablet",
229
- "smartphone",
230
- "tv",
231
- "server",
232
- "database",
233
- "hard-drive",
234
- "cpu",
235
- "radio",
236
- "laptop-outline",
237
- "phone-portrait-outline",
238
- "phone-landscape-outline",
239
- "tablet-landscape-outline",
240
- "tablet-portrait-outline",
241
- "tv-outline",
242
- "server-outline",
243
- "hardware-chip-outline",
244
- "watch-outline"
245
- ]
246
- },
247
- // ─── Status ──────────────────────────────────────────────────────────────────
248
- {
249
- name: "status",
250
- label: "Status",
251
- labelEs: "Estado",
252
- categoryIcon: "alert-circle",
253
- icons: [
254
- // Alertas
255
- "alert-circle",
256
- "alert-triangle",
257
- "alert-octagon",
258
- "info",
259
- "help-circle",
260
- "alert-circle-outline",
261
- "alert-outline",
262
- "information-circle-outline",
263
- "help-circle-outline",
264
- // Notificaciones
265
- "bell",
266
- "bell-off",
267
- "notifications-outline",
268
- "notifications-off-outline",
269
- "notifications-circle-outline",
270
- // Visibilidad
271
- "eye",
272
- "eye-off",
273
- "eye-outline",
274
- "eye-off-outline",
275
- // Indicadores
276
- "flag",
277
- "zap",
278
- "zap-off",
279
- "loader",
280
- "activity",
281
- "flash-outline",
282
- "bulb-outline",
283
- // Éxito / error / advertencia
284
- "check",
285
- "check-circle",
286
- "x",
287
- "x-circle",
288
- "x-octagon",
289
- "slash",
290
- "plus-circle",
291
- "minus-circle",
292
- "checkmark-circle-outline",
293
- "checkmark-done-circle-outline",
294
- "close-circle-outline",
295
- "add-circle-outline",
296
- "remove-circle-outline",
297
- // Estados de proceso
298
- "play-circle",
299
- "pause-circle",
300
- "stop-circle",
301
- "play-circle-outline",
302
- "pause-circle-outline",
303
- "stop-circle-outline"
304
- ]
305
- },
306
- // ─── Actions ─────────────────────────────────────────────────────────────────
307
- {
308
- name: "actions",
309
- label: "Actions",
310
- labelEs: "Acciones",
311
- categoryIcon: "edit-3",
312
- icons: [
313
- // Crear / añadir
314
- "plus",
315
- "plus-circle",
316
- "plus-square",
317
- "add-outline",
318
- "add-circle-outline",
319
- // Eliminar / quitar
320
- "minus",
321
- "minus-circle",
322
- "minus-square",
323
- "trash",
324
- "trash-2",
325
- "x",
326
- "x-circle",
327
- "x-square",
328
- "x-octagon",
329
- "slash",
330
- "trash-outline",
331
- "trash-bin-outline",
332
- "remove-outline",
333
- "remove-circle-outline",
334
- "close-circle-outline",
335
- "backspace-outline",
336
- "cut-outline",
337
- // Confirmar
338
- "check",
339
- "check-circle",
340
- "check-square",
341
- "checkmark-circle-outline",
342
- // Editar
343
- "edit",
344
- "edit-2",
345
- "edit-3",
346
- "copy",
347
- "clipboard",
348
- "scissors",
349
- "create-outline",
350
- "pencil-outline",
351
- "duplicate-outline",
352
- "copy-outline",
353
- "clipboard-outline",
354
- // Mover datos
355
- "download",
356
- "download-cloud",
357
- "upload",
358
- "upload-cloud",
359
- "download-outline",
360
- "cloud-download-outline",
361
- "cloud-upload-outline"
362
- ]
363
- },
364
- // ─── Communication ───────────────────────────────────────────────────────────
365
- {
366
- name: "communication",
367
- label: "Communication",
368
- labelEs: "Comunicaci\xF3n",
369
- categoryIcon: "message-circle",
370
- icons: [
371
- // Mensajería
372
- "message-circle",
373
- "message-square",
374
- "send",
375
- "mail",
376
- "inbox",
377
- "at-sign",
378
- "mail-outline",
379
- "mail-open-outline",
380
- "mail-unread-outline",
381
- "chatbubble-outline",
382
- "chatbubble-ellipses-outline",
383
- "chatbubbles-outline",
384
- "send-outline",
385
- "attach-outline",
386
- "at-outline",
387
- "at-circle-outline",
388
- // Llamadas
389
- "phone",
390
- "phone-call",
391
- "phone-incoming",
392
- "phone-outgoing",
393
- "phone-missed",
394
- "phone-off",
395
- "phone-forwarded",
396
- "voicemail",
397
- "call-outline",
398
- "phone-portrait-outline",
399
- "phone-landscape-outline",
400
- // Personas
401
- "user",
402
- "user-plus",
403
- "user-minus",
404
- "user-check",
405
- "user-x",
406
- "users",
407
- "person-outline",
408
- "person-circle-outline",
409
- "person-add-outline",
410
- "person-remove-outline",
411
- "people-outline",
412
- "people-circle-outline",
413
- // Reacciones
414
- "smile",
415
- "frown",
416
- "meh",
417
- "heart",
418
- "thumbs-up",
419
- "thumbs-down",
420
- "happy-outline",
421
- "sad-outline",
422
- "heart-outline",
423
- "thumbs-up-outline",
424
- "thumbs-down-outline"
425
- ]
426
- },
427
- // ─── Navigation ──────────────────────────────────────────────────────────────
428
- {
429
- name: "navigation",
430
- label: "Navigation",
431
- labelEs: "Navegaci\xF3n",
432
- categoryIcon: "compass",
433
- icons: [
434
- // Flechas cardinales
435
- "arrow-up",
436
- "arrow-down",
437
- "arrow-left",
438
- "arrow-right",
439
- "arrow-up-left",
440
- "arrow-up-right",
441
- "arrow-down-left",
442
- "arrow-down-right",
443
- "arrow-up-outline",
444
- "arrow-down-outline",
445
- "arrow-back-outline",
446
- "arrow-forward-outline",
447
- "arrow-undo-outline",
448
- "arrow-redo-outline",
449
- // Chevrones
450
- "chevron-up",
451
- "chevron-down",
452
- "chevron-left",
453
- "chevron-right",
454
- "chevrons-up",
455
- "chevrons-down",
456
- "chevrons-left",
457
- "chevrons-right",
458
- "chevron-up-outline",
459
- "chevron-down-outline",
460
- "chevron-back-outline",
461
- "chevron-forward-outline",
462
- "chevron-collapse-outline",
463
- "chevron-expand-outline",
464
- // Esquinas
465
- "corner-up-left",
466
- "corner-up-right",
467
- "corner-down-left",
468
- "corner-down-right",
469
- "corner-left-up",
470
- "corner-left-down",
471
- "corner-right-up",
472
- "corner-right-down",
473
- // Giro / refrescar
474
- "refresh-cw",
475
- "refresh-ccw",
476
- "rotate-cw",
477
- "rotate-ccw",
478
- "refresh-outline",
479
- "reload-outline",
480
- // Orientación y mapa
481
- "navigation",
482
- "navigation-2",
483
- "compass",
484
- "map",
485
- "map-pin",
486
- "target",
487
- "crosshair",
488
- "home",
489
- "anchor",
490
- "compass-outline",
491
- "map-outline",
492
- "location-outline",
493
- "navigate-outline",
494
- "pin-outline",
495
- "home-outline"
496
- ]
497
- },
498
- // ─── Media ───────────────────────────────────────────────────────────────────
499
- {
500
- name: "media",
501
- label: "Media",
502
- labelEs: "Medios",
503
- categoryIcon: "image",
504
- icons: [
505
- // Visual
506
- "image",
507
- "film",
508
- "video",
509
- "video-off",
510
- "camera",
511
- "camera-off",
512
- "image-outline",
513
- "images-outline",
514
- "film-outline",
515
- "videocam-outline",
516
- "videocam-off-outline",
517
- "camera-outline",
518
- "camera-reverse-outline",
519
- // Reproducción
520
- "play",
521
- "play-circle",
522
- "pause",
523
- "pause-circle",
524
- "square",
525
- "stop-circle",
526
- "fast-forward",
527
- "rewind",
528
- "skip-forward",
529
- "skip-back",
530
- "repeat",
531
- "shuffle",
532
- "play-outline",
533
- "pause-outline",
534
- "play-circle-outline",
535
- "pause-circle-outline",
536
- "stop-circle-outline",
537
- "play-back-outline",
538
- "play-forward-outline",
539
- "play-skip-back-outline",
540
- "play-skip-forward-outline",
541
- "repeat-outline",
542
- "shuffle-outline",
543
- // Audio
544
- "music",
545
- "headphones",
546
- "speaker",
547
- "volume",
548
- "volume-1",
549
- "volume-2",
550
- "volume-x",
551
- "mic",
552
- "mic-off",
553
- "mic-outline",
554
- "mic-off-outline",
555
- "mic-circle-outline",
556
- "musical-note-outline",
557
- "musical-notes-outline",
558
- "volume-high-outline",
559
- "volume-low-outline",
560
- "volume-medium-outline",
561
- "volume-mute-outline",
562
- "volume-off-outline"
563
- ]
564
- },
565
- // ─── Layout ──────────────────────────────────────────────────────────────────
566
- {
567
- name: "layout",
568
- label: "Layout",
569
- labelEs: "Dise\xF1o",
570
- categoryIcon: "grid",
571
- icons: [
572
- // Estructura
573
- "grid",
574
- "columns",
575
- "sidebar",
576
- "layout",
577
- "list",
578
- "menu",
579
- "table",
580
- "trello",
581
- "grid-outline",
582
- "list-outline",
583
- "menu-outline",
584
- "layers-outline",
585
- // Alineación
586
- "align-left",
587
- "align-center",
588
- "align-right",
589
- "align-justify",
590
- // Tipografía
591
- "bold",
592
- "italic",
593
- "underline",
594
- "type",
595
- "hash",
596
- // Formas
597
- "circle",
598
- "square",
599
- "triangle",
600
- "hexagon",
601
- "octagon",
602
- "square-outline",
603
- "triangle-outline",
604
- "diamond-outline",
605
- "shapes-outline",
606
- // Herramientas de diseño
607
- "pen-tool",
608
- "crop",
609
- "layers",
610
- "filter",
611
- "sliders",
612
- "aperture",
613
- "crop-outline",
614
- "filter-outline",
615
- "color-fill-outline",
616
- "color-filter-outline",
617
- "color-palette-outline",
618
- "color-wand-outline",
619
- "brush-outline",
620
- // Edición
621
- "edit",
622
- "edit-2",
623
- "edit-3",
624
- "copy",
625
- "trash",
626
- "move",
627
- "create-outline",
628
- "pencil-outline",
629
- "move-outline",
630
- "resize-outline",
631
- "duplicate-outline",
632
- // Navegación UI
633
- "more-horizontal",
634
- "more-vertical",
635
- "maximize",
636
- "minimize",
637
- "zoom-in",
638
- "zoom-out",
639
- "eye",
640
- "eye-off",
641
- "eye-outline",
642
- "eye-off-outline",
643
- "ellipsis-horizontal-circle-outline",
644
- "ellipsis-vertical-circle-outline"
645
- ]
646
- },
647
- // ─── Nature ──────────────────────────────────────────────────────────────────
648
- {
649
- name: "nature",
650
- label: "Nature",
651
- labelEs: "Naturaleza",
652
- categoryIcon: "sunny-outline",
653
- icons: [
654
- // Sol, luna y estrellas
655
- "sunny-outline",
656
- "moon-outline",
657
- "star-outline",
658
- "star-half-outline",
659
- "partly-sunny-outline",
660
- "sun",
661
- "moon",
662
- "sunrise",
663
- "sunset",
664
- // Clima
665
- "rainy-outline",
666
- "thunderstorm-outline",
667
- "snow-outline",
668
- "cloudy-outline",
669
- "cloudy-night-outline",
670
- "cloud-outline",
671
- "cloud-done-outline",
672
- "cloud-download-outline",
673
- "cloud-upload-outline",
674
- "cloud-offline-outline",
675
- "cloud-circle-outline",
676
- "cloud",
677
- "cloud-drizzle",
678
- "cloud-lightning",
679
- "cloud-rain",
680
- "cloud-snow",
681
- "cloud-off",
682
- "umbrella-outline",
683
- "thermometer-outline",
684
- "droplet",
685
- "wind",
686
- // Agua y fuego
687
- "water-outline",
688
- "flame-outline",
689
- "bonfire-outline",
690
- "eyedrop-outline",
691
- // Flora y fauna
692
- "leaf-outline",
693
- "flower-outline",
694
- "bug-outline",
695
- "fish-outline",
696
- "paw-outline",
697
- // Outdoor
698
- "binoculars-outline",
699
- "telescope-outline",
700
- "compass-outline",
701
- "map-outline",
702
- "location-outline",
703
- "flag-outline",
704
- "trail-sign-outline",
705
- "earth-outline",
706
- "globe-outline",
707
- "planet-outline",
708
- "compass",
709
- "map",
710
- "map-pin",
711
- "flag",
712
- "navigation",
713
- "navigation-2",
714
- "target",
715
- "crosshair",
716
- "life-buoy"
717
- ]
718
- },
719
- // ─── Brands ──────────────────────────────────────────────────────────────────
720
- {
721
- name: "brands",
722
- label: "Brands",
723
- labelEs: "Marcas",
724
- categoryIcon: "globe",
725
- icons: [
726
- // Feather brand icons — outlined, consistent with the rest of the library
727
- "github",
728
- "gitlab",
729
- "codepen",
730
- "codesandbox",
731
- "twitter",
732
- "facebook",
733
- "instagram",
734
- "linkedin",
735
- "youtube",
736
- "dribbble",
737
- "twitch",
738
- "slack",
739
- "figma",
740
- "framer",
741
- "chrome",
742
- "rss",
743
- // Filled / flat brand logos (FA5 brands) — kept in a second
744
- // visual tier. Rendered as the brand's official silhouette.
745
- // Visually consistent (all flat single-color) but heavier than the
746
- // Feather outlined set above. Use these only when an outlined Feather
747
- // version of the brand doesn't exist.
748
- "reddit",
749
- "tiktok",
750
- "pinterest",
751
- "whatsapp",
752
- "discord",
753
- "snapchat",
754
- "telegram",
755
- "viber",
756
- "line",
757
- "vimeo",
758
- "tumblr",
759
- "behance",
760
- "medium",
761
- "soundcloud",
762
- "google",
763
- "apple",
764
- "android",
765
- "windows",
766
- "linux",
767
- "amazon",
768
- "paypal",
769
- "stripe",
770
- "shopify",
771
- "dropbox",
772
- "spotify",
773
- "steam",
774
- "atlassian",
775
- "jira",
776
- "confluence",
777
- "bitbucket",
778
- "jenkins",
779
- "docker",
780
- "aws",
781
- "node",
782
- "react",
783
- "angular",
784
- "wordpress",
785
- "drupal",
786
- "joomla",
787
- "squarespace",
788
- "wix",
789
- "magento",
790
- "terminal",
791
- "pen-tool"
792
- ]
793
- }
794
- ];
795
- var ALL_CURATED_ICONS = [
796
- ...new Set(CURATED_ICONS.flatMap((c) => c.icons))
797
- ];
798
-
799
- // src/components/IconPicker/IconPicker.tsx
800
- var NUM_COLUMNS = 6;
801
- var GAP = 6;
802
- var TRIGGER_SIZE = s(56);
803
- var SCREEN_HEIGHT = Dimensions.get("window").height;
804
- function IconCell({ name, selected, size, onPress }) {
805
- const { colors } = useTheme();
806
- const handlePress = () => {
807
- selectionAsync();
808
- onPress();
809
- };
810
- const iconColor = selected ? colors.primaryForeground : colors.foreground;
811
- const bg = selected ? colors.primary : "transparent";
812
- return /* @__PURE__ */ React.createElement(
813
- TouchableOpacity,
814
- {
815
- onPress: handlePress,
816
- activeOpacity: 0.6,
817
- touchSoundDisabled: true,
818
- accessibilityRole: "button",
819
- accessibilityState: { selected },
820
- accessibilityLabel: name,
821
- style: [styles.cell, { width: size, height: size, backgroundColor: bg }]
822
- },
823
- renderIcon(name, ms(20), iconColor)
824
- );
825
- }
826
- var IconCellMemo = React.memo(IconCell);
827
- function IconPicker({
828
- value,
829
- onChange,
830
- label,
831
- error,
832
- hint,
833
- disabled = false,
834
- numColumns = NUM_COLUMNS,
835
- gap = GAP,
836
- style
837
- }) {
838
- const { colors } = useTheme();
839
- const insets = useSafeAreaInsets();
840
- const sheetRef = useRef(null);
841
- const catScrollRef = useRef(null);
842
- const [activeCategory, setActiveCategory] = useState(null);
843
- const [containerWidth, setContainerWidth] = useState(() => Dimensions.get("window").width - s(16) * 2);
844
- const [ready, setReady] = useState(false);
845
- const sheetName = useId();
846
- const activeIcons = useMemo(() => {
847
- if (activeCategory) {
848
- return CURATED_ICONS.find((c) => c.name === activeCategory)?.icons ?? ALL_CURATED_ICONS;
849
- }
850
- return ALL_CURATED_ICONS;
851
- }, [activeCategory]);
852
- const gapPx = s(gap);
853
- const cellSize = containerWidth > 0 ? Math.floor((containerWidth - gapPx * (numColumns - 1)) / numColumns) : 0;
854
- const rows = useMemo(() => {
855
- const result = [];
856
- for (let i = 0; i < activeIcons.length; i += numColumns) {
857
- result.push(activeIcons.slice(i, i + numColumns));
858
- }
859
- return result;
860
- }, [activeIcons, numColumns]);
861
- const handleDismiss = useCallback(() => {
862
- setActiveCategory(null);
863
- setReady(false);
864
- }, []);
865
- const handleSelect = useCallback(
866
- (iconName) => {
867
- onChange(iconName);
868
- },
869
- [onChange]
870
- );
871
- const handleOpen = useCallback(() => {
872
- if (disabled) return;
873
- impactMedium();
874
- setActiveCategory(null);
875
- setReady(false);
876
- sheetRef.current?.present();
877
- }, [disabled]);
878
- const renderBackdrop = useCallback(
879
- (props) => /* @__PURE__ */ React.createElement(BottomSheetBackdrop, { ...props, disappearsOnIndex: -1, appearsOnIndex: 0, pressBehavior: "close" }),
880
- []
881
- );
882
- const selectedIcon = value ? renderIcon(value, ms(28), colors.foreground) : null;
883
- return /* @__PURE__ */ React.createElement(View, { style: [styles.triggerContainer, style] }, label ? /* @__PURE__ */ React.createElement(Text, { style: [styles.triggerLabel, { color: colors.foreground }], allowFontScaling: true }, label) : null, /* @__PURE__ */ React.createElement(
884
- TouchableOpacity,
885
- {
886
- onPress: handleOpen,
887
- disabled,
888
- activeOpacity: 0.7,
889
- touchSoundDisabled: true,
890
- accessibilityRole: "button",
891
- accessibilityLabel: label ?? "Seleccionar icono",
892
- accessibilityState: { disabled },
893
- style: [
894
- styles.trigger,
895
- {
896
- backgroundColor: disabled ? colors.surface : colors.background,
897
- width: TRIGGER_SIZE,
898
- height: TRIGGER_SIZE,
899
- borderColor: error ? colors.destructive : value ? colors.primary : colors.border
900
- },
901
- disabled && styles.triggerDisabled
902
- ]
903
- },
904
- selectedIcon ?? renderIcon("plus", ms(24), colors.foregroundMuted)
905
- ), error ? /* @__PURE__ */ React.createElement(
906
- Text,
907
- {
908
- style: [styles.helperText, { color: colors.destructive }],
909
- allowFontScaling: true,
910
- accessibilityLiveRegion: "polite"
911
- },
912
- error
913
- ) : null, !error && hint ? /* @__PURE__ */ React.createElement(Text, { style: [styles.helperText, { color: colors.foregroundMuted }], allowFontScaling: true }, hint) : null, /* @__PURE__ */ React.createElement(
914
- BottomSheetModal,
915
- {
916
- ref: sheetRef,
917
- name: sheetName,
918
- onDismiss: handleDismiss,
919
- enableDynamicSizing: true,
920
- maxDynamicContentSize: SCREEN_HEIGHT * 0.7,
921
- backdropComponent: renderBackdrop,
922
- backgroundStyle: { ...styles.sheetBackground, backgroundColor: colors.card },
923
- handleIndicatorStyle: { ...styles.handle, backgroundColor: colors.border },
924
- enablePanDownToClose: true,
925
- topInset: insets.top,
926
- android_keyboardInputMode: "adjustPan"
927
- },
928
- /* @__PURE__ */ React.createElement(
929
- BottomSheetScrollView,
930
- {
931
- contentContainerStyle: styles.sheetContent,
932
- showsVerticalScrollIndicator: true
933
- },
934
- /* @__PURE__ */ React.createElement(
935
- View,
936
- {
937
- style: styles.gridContainer,
938
- onLayout: (e) => {
939
- setContainerWidth(e.nativeEvent.layout.width);
940
- setReady(true);
941
- }
942
- },
943
- !ready ? /* @__PURE__ */ React.createElement(View, { style: styles.loader }, /* @__PURE__ */ React.createElement(Spinner, { size: "md", color: colors.primary, label: "Cargando iconos..." })) : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Text, { style: [styles.sectionLabel, { color: colors.foregroundSubtle }], allowFontScaling: true }, "Categor\xEDas"), /* @__PURE__ */ React.createElement(
944
- ScrollView,
945
- {
946
- ref: catScrollRef,
947
- horizontal: true,
948
- showsHorizontalScrollIndicator: false,
949
- contentContainerStyle: styles.categoryStrip,
950
- style: styles.categoryScroll
951
- },
952
- /* @__PURE__ */ React.createElement(
953
- TouchableOpacity,
954
- {
955
- onPress: () => setActiveCategory(null),
956
- activeOpacity: 0.7,
957
- touchSoundDisabled: true,
958
- accessibilityRole: "button",
959
- accessibilityLabel: "Todos",
960
- accessibilityState: { selected: activeCategory === null },
961
- style: [
962
- styles.categoryChip,
963
- {
964
- backgroundColor: activeCategory === null ? colors.primary : colors.surface,
965
- borderColor: activeCategory === null ? colors.primary : colors.border
966
- }
967
- ]
968
- },
969
- /* @__PURE__ */ React.createElement(View, { style: styles.categoryChipInner }, renderIcon("grid", ms(14), activeCategory === null ? colors.primaryForeground : colors.foregroundSubtle), /* @__PURE__ */ React.createElement(
970
- Text,
971
- {
972
- style: [
973
- styles.categoryChipText,
974
- { color: activeCategory === null ? colors.primaryForeground : colors.foreground }
975
- ],
976
- allowFontScaling: true,
977
- numberOfLines: 1
978
- },
979
- "Todos"
980
- ))
981
- ),
982
- CURATED_ICONS.map((cat) => /* @__PURE__ */ React.createElement(
983
- TouchableOpacity,
984
- {
985
- key: cat.name,
986
- onPress: () => setActiveCategory(cat.name),
987
- activeOpacity: 0.7,
988
- touchSoundDisabled: true,
989
- accessibilityRole: "button",
990
- accessibilityLabel: cat.labelEs,
991
- accessibilityState: { selected: activeCategory === cat.name },
992
- style: [
993
- styles.categoryChip,
994
- {
995
- backgroundColor: activeCategory === cat.name ? colors.primary : colors.surface,
996
- borderColor: activeCategory === cat.name ? colors.primary : colors.border
997
- }
998
- ]
999
- },
1000
- /* @__PURE__ */ React.createElement(View, { style: styles.categoryChipInner }, renderIcon(cat.categoryIcon, ms(14), activeCategory === cat.name ? colors.primaryForeground : colors.foregroundSubtle), /* @__PURE__ */ React.createElement(
1001
- Text,
1002
- {
1003
- style: [
1004
- styles.categoryChipText,
1005
- { color: activeCategory === cat.name ? colors.primaryForeground : colors.foreground }
1006
- ],
1007
- allowFontScaling: true,
1008
- numberOfLines: 1
1009
- },
1010
- cat.labelEs
1011
- ))
1012
- ))
1013
- ), /* @__PURE__ */ React.createElement(View, { style: [styles.separator, { backgroundColor: colors.border }] }), cellSize > 0 ? rows.map((row, i) => /* @__PURE__ */ React.createElement(View, { key: row[0] ?? `row-${i}`, style: [styles.row, { marginBottom: gapPx }] }, row.map((name) => /* @__PURE__ */ React.createElement(
1014
- IconCellMemo,
1015
- {
1016
- key: name,
1017
- name,
1018
- selected: value === name,
1019
- size: cellSize,
1020
- onPress: () => {
1021
- handleSelect(name);
1022
- sheetRef.current?.dismiss();
1023
- }
1024
- }
1025
- )), Array.from({ length: numColumns - row.length }).map((_, j) => /* @__PURE__ */ React.createElement(View, { key: `spacer-${j}`, style: { width: cellSize, height: cellSize } })))) : null)
1026
- )
1027
- )
1028
- ));
1029
- }
1030
- var styles = StyleSheet.create({
1031
- triggerContainer: {
1032
- gap: vs(8)
1033
- },
1034
- triggerLabel: {
1035
- fontFamily: "Sohne-Medium",
1036
- fontSize: ms(14)
1037
- },
1038
- trigger: {
1039
- borderRadius: RADIUS.md,
1040
- borderWidth: 1,
1041
- alignItems: "center",
1042
- justifyContent: "center"
1043
- },
1044
- triggerDisabled: {
1045
- opacity: 0.6
1046
- },
1047
- helperText: {
1048
- fontFamily: "Sohne-Regular",
1049
- fontSize: ms(13)
1050
- },
1051
- sheetBackground: {
1052
- borderTopLeftRadius: ms(16),
1053
- borderTopRightRadius: ms(16)
1054
- },
1055
- handle: {
1056
- width: s(36),
1057
- height: vs(4),
1058
- borderRadius: ms(2)
1059
- },
1060
- sheetContent: {
1061
- paddingHorizontal: s(16),
1062
- paddingBottom: vs(24)
1063
- },
1064
- sectionLabel: {
1065
- fontFamily: "Sohne-Medium",
1066
- fontSize: ms(12),
1067
- marginBottom: vs(8),
1068
- textTransform: "uppercase",
1069
- letterSpacing: 0.5
1070
- },
1071
- categoryScroll: {
1072
- flexGrow: 0,
1073
- flexShrink: 0
1074
- },
1075
- categoryStrip: {
1076
- gap: s(8)
1077
- },
1078
- categoryChip: {
1079
- borderRadius: RADIUS.full,
1080
- borderWidth: 1,
1081
- paddingVertical: vs(6),
1082
- paddingHorizontal: s(12)
1083
- },
1084
- categoryChipInner: {
1085
- flexDirection: "row",
1086
- alignItems: "center",
1087
- gap: s(6)
1088
- },
1089
- categoryChipText: {
1090
- fontFamily: "Sohne-Medium",
1091
- fontSize: ms(12)
1092
- },
1093
- separator: {
1094
- height: StyleSheet.hairlineWidth,
1095
- marginVertical: vs(12)
1096
- },
1097
- gridContainer: {},
1098
- row: {
1099
- flexDirection: "row",
1100
- gap: GAP
1101
- },
1102
- cell: {
1103
- borderRadius: RADIUS.md,
1104
- alignItems: "center",
1105
- justifyContent: "center"
1106
- },
1107
- loader: {
1108
- minHeight: vs(200),
1109
- alignItems: "center",
1110
- justifyContent: "center"
1111
- }
1112
- });
1113
-
1114
- export { IconPicker };