@retray-dev/ui-kit 12.2.0 → 13.0.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 (268) hide show
  1. package/COMPONENTS.md +85 -143
  2. package/CONSUMER.md +2 -2
  3. package/DESIGN.md +2 -2
  4. package/README.md +11 -6
  5. package/dist/Accordion.js +48 -210
  6. package/dist/Accordion.mjs +6 -5
  7. package/dist/AlertBanner.js +29 -153
  8. package/dist/AlertBanner.mjs +3 -3
  9. package/dist/AppHeader.js +37 -235
  10. package/dist/AppHeader.mjs +6 -7
  11. package/dist/Avatar.d.mts +17 -1
  12. package/dist/Avatar.d.ts +17 -1
  13. package/dist/Avatar.js +80 -115
  14. package/dist/Avatar.mjs +2 -2
  15. package/dist/Badge.js +24 -149
  16. package/dist/Badge.mjs +3 -3
  17. package/dist/Button.js +79 -267
  18. package/dist/Button.mjs +6 -6
  19. package/dist/Card.js +15 -200
  20. package/dist/Card.mjs +4 -5
  21. package/dist/CategoryStrip.d.mts +0 -5
  22. package/dist/CategoryStrip.d.ts +0 -5
  23. package/dist/CategoryStrip.js +47 -265
  24. package/dist/CategoryStrip.mjs +6 -6
  25. package/dist/Checkbox.js +15 -200
  26. package/dist/Checkbox.mjs +5 -5
  27. package/dist/Chip.js +44 -236
  28. package/dist/Chip.mjs +7 -6
  29. package/dist/ConfirmDialog.js +84 -286
  30. package/dist/ConfirmDialog.mjs +7 -7
  31. package/dist/CurrencyDisplay.js +1 -114
  32. package/dist/CurrencyDisplay.mjs +2 -2
  33. package/dist/CurrencyInput.js +35 -162
  34. package/dist/CurrencyInput.mjs +5 -5
  35. package/dist/DetailRow.js +25 -150
  36. package/dist/DetailRow.mjs +3 -3
  37. package/dist/EmptyState.js +80 -268
  38. package/dist/EmptyState.mjs +7 -7
  39. package/dist/ErrorBoundary.js +32 -199
  40. package/dist/ErrorBoundary.mjs +4 -4
  41. package/dist/Form.js +1 -114
  42. package/dist/Form.mjs +2 -2
  43. package/dist/HolographicCard.d.mts +0 -28
  44. package/dist/HolographicCard.d.ts +0 -28
  45. package/dist/HolographicCard.js +20 -130
  46. package/dist/HolographicCard.mjs +9 -32
  47. package/dist/IconButton.js +36 -234
  48. package/dist/IconButton.mjs +5 -6
  49. package/dist/IconPicker.js +222 -929
  50. package/dist/IconPicker.mjs +5 -5
  51. package/dist/ImageUpload.d.mts +3 -1
  52. package/dist/ImageUpload.d.ts +3 -1
  53. package/dist/ImageUpload.js +25 -215
  54. package/dist/ImageUpload.mjs +5 -6
  55. package/dist/ImageViewer.js +75 -266
  56. package/dist/ImageViewer.mjs +8 -8
  57. package/dist/Input.d.mts +1 -1
  58. package/dist/Input.d.ts +1 -1
  59. package/dist/Input.js +35 -162
  60. package/dist/Input.mjs +4 -4
  61. package/dist/LabelValue.js +24 -149
  62. package/dist/LabelValue.mjs +3 -3
  63. package/dist/ListGroup.js +1 -114
  64. package/dist/ListGroup.mjs +2 -2
  65. package/dist/ListItem.js +38 -235
  66. package/dist/ListItem.mjs +5 -6
  67. package/dist/MediaCard.d.mts +0 -14
  68. package/dist/MediaCard.d.ts +0 -14
  69. package/dist/MediaCard.js +69 -315
  70. package/dist/MediaCard.mjs +5 -6
  71. package/dist/MenuGroup.js +1 -114
  72. package/dist/MenuGroup.mjs +2 -2
  73. package/dist/MenuItem.js +36 -234
  74. package/dist/MenuItem.mjs +5 -6
  75. package/dist/MonthPicker.js +8 -163
  76. package/dist/MonthPicker.mjs +3 -3
  77. package/dist/NumberStepper.js +40 -238
  78. package/dist/NumberStepper.mjs +5 -6
  79. package/dist/PagerDots.d.mts +1 -1
  80. package/dist/PagerDots.d.ts +1 -1
  81. package/dist/PagerDots.js +69 -224
  82. package/dist/PagerDots.mjs +6 -5
  83. package/dist/Pressable.js +14 -85
  84. package/dist/Pressable.mjs +4 -4
  85. package/dist/PricingCard.js +87 -272
  86. package/dist/PricingCard.mjs +8 -8
  87. package/dist/Progress.js +3 -123
  88. package/dist/Progress.mjs +3 -3
  89. package/dist/RadioGroup.js +52 -265
  90. package/dist/RadioGroup.mjs +5 -5
  91. package/dist/RetrayProvider.js +3 -6
  92. package/dist/RetrayProvider.mjs +3 -3
  93. package/dist/Select.d.mts +2 -1
  94. package/dist/Select.d.ts +2 -1
  95. package/dist/Select.js +24 -232
  96. package/dist/Select.mjs +4 -5
  97. package/dist/SelectableCard.js +33 -209
  98. package/dist/SelectableCard.mjs +5 -5
  99. package/dist/SelectableGrid.d.mts +0 -21
  100. package/dist/SelectableGrid.d.ts +0 -21
  101. package/dist/SelectableGrid.js +49 -271
  102. package/dist/SelectableGrid.mjs +5 -6
  103. package/dist/Separator.js +1 -114
  104. package/dist/Separator.mjs +2 -2
  105. package/dist/Sheet.js +7 -162
  106. package/dist/Sheet.mjs +3 -3
  107. package/dist/SheetSelect.js +39 -236
  108. package/dist/SheetSelect.mjs +6 -6
  109. package/dist/Skeleton.js +4 -124
  110. package/dist/Skeleton.mjs +3 -3
  111. package/dist/Slider.js +6 -161
  112. package/dist/Slider.mjs +3 -3
  113. package/dist/Spinner.js +3 -116
  114. package/dist/Spinner.mjs +2 -2
  115. package/dist/Stats.js +36 -234
  116. package/dist/Stats.mjs +5 -6
  117. package/dist/Switch.js +24 -175
  118. package/dist/Switch.mjs +5 -4
  119. package/dist/TabBar.js +43 -200
  120. package/dist/TabBar.mjs +5 -4
  121. package/dist/Tabs.js +15 -199
  122. package/dist/Tabs.mjs +5 -5
  123. package/dist/Text.js +9 -130
  124. package/dist/Text.mjs +2 -2
  125. package/dist/Textarea.d.mts +2 -1
  126. package/dist/Textarea.d.ts +2 -1
  127. package/dist/Textarea.js +71 -219
  128. package/dist/Textarea.mjs +4 -4
  129. package/dist/Toast.js +1 -114
  130. package/dist/Toast.mjs +2 -2
  131. package/dist/Toggle.js +39 -236
  132. package/dist/Toggle.mjs +6 -6
  133. package/dist/{chunk-M3C7XM2M.mjs → chunk-2QOHHBJC.mjs} +3 -3
  134. package/dist/{chunk-LIS6I5UP.mjs → chunk-2VIDP72N.mjs} +3 -3
  135. package/dist/{chunk-DF7JA72E.mjs → chunk-4NQFTHN3.mjs} +13 -7
  136. package/dist/{chunk-UBUXUMER.mjs → chunk-4ZO5PTKF.mjs} +4 -4
  137. package/dist/{chunk-3XCFYSX4.mjs → chunk-5MYNAAFE.mjs} +13 -17
  138. package/dist/{chunk-E7NEHHXV.mjs → chunk-62BBSSUF.mjs} +3 -3
  139. package/dist/{chunk-MVMGPZN6.mjs → chunk-6CR4S6W2.mjs} +3 -3
  140. package/dist/{chunk-EDLCGYIO.mjs → chunk-6QLBHUEG.mjs} +8 -7
  141. package/dist/chunk-ARONDO7M.mjs +40 -0
  142. package/dist/{chunk-GH67YXG6.mjs → chunk-AZV7KNJI.mjs} +3 -3
  143. package/dist/{chunk-RMRS44MQ.mjs → chunk-BTUW5LSG.mjs} +11 -8
  144. package/dist/{chunk-2P2CB235.mjs → chunk-BULKGOIZ.mjs} +7 -8
  145. package/dist/{chunk-NHDI3VQB.mjs → chunk-CBIZLRYH.mjs} +15 -12
  146. package/dist/chunk-CM2DG4MR.mjs +142 -0
  147. package/dist/{chunk-TS7DGUIR.mjs → chunk-DBHSUUKU.mjs} +2 -2
  148. package/dist/{chunk-57V2LXCK.mjs → chunk-DE25XTVQ.mjs} +3 -3
  149. package/dist/{chunk-UQ4742ET.mjs → chunk-E4EQSCKR.mjs} +5 -5
  150. package/dist/{chunk-GUTDFUNF.mjs → chunk-EHGBHFMH.mjs} +9 -17
  151. package/dist/{chunk-CF27NBXO.mjs → chunk-EROPDCB5.mjs} +16 -24
  152. package/dist/{chunk-ZIMY2QUM.mjs → chunk-ERWJPVX7.mjs} +2 -2
  153. package/dist/{chunk-NLZY4TXU.mjs → chunk-ESQDPO5E.mjs} +7 -7
  154. package/dist/{chunk-VJBUCITV.mjs → chunk-EW2FIDSM.mjs} +1 -1
  155. package/dist/{chunk-HC4VVCWY.mjs → chunk-FTTI6T5Q.mjs} +4 -4
  156. package/dist/{chunk-2HFD4IHU.mjs → chunk-HUSSF6TF.mjs} +1 -1
  157. package/dist/chunk-IFYMBOEN.mjs +14 -0
  158. package/dist/{chunk-QOLWA2PW.mjs → chunk-IGU223UM.mjs} +80 -4
  159. package/dist/chunk-IJCMPVW5.mjs +121 -0
  160. package/dist/{chunk-AENAVIKT.mjs → chunk-ITG4JQM3.mjs} +4 -4
  161. package/dist/{chunk-E5UKLSJZ.mjs → chunk-K3QX2M26.mjs} +11 -8
  162. package/dist/{chunk-4OORJ2DY.mjs → chunk-K7TKID3V.mjs} +8 -7
  163. package/dist/{chunk-2LG326TT.mjs → chunk-KAGADD2O.mjs} +4 -4
  164. package/dist/{chunk-IVSRW4HS.mjs → chunk-KC5QDYGZ.mjs} +4 -4
  165. package/dist/{chunk-7AFZWSCI.mjs → chunk-KPTY7UYQ.mjs} +1 -1
  166. package/dist/{chunk-YTXRIXNZ.mjs → chunk-KSSVIFYR.mjs} +9 -12
  167. package/dist/chunk-L3YKPTJQ.mjs +119 -0
  168. package/dist/chunk-M53LC4Q7.mjs +35 -0
  169. package/dist/{chunk-ZR6HSEAB.mjs → chunk-MP7GLMIR.mjs} +17 -25
  170. package/dist/chunk-MZ6WRTD2.mjs +40 -0
  171. package/dist/chunk-NGEN2EES.mjs +581 -0
  172. package/dist/{chunk-C43HRKXH.mjs → chunk-OBV72JD4.mjs} +1 -1
  173. package/dist/{chunk-LPV4NJJK.mjs → chunk-PGQ6FMXS.mjs} +6 -5
  174. package/dist/{chunk-MEPSKGBO.mjs → chunk-PI6RULJX.mjs} +1 -1
  175. package/dist/{chunk-F3YTWO3T.mjs → chunk-RA6SAAFE.mjs} +9 -8
  176. package/dist/{chunk-UNNRUJTM.mjs → chunk-RRKM4MKB.mjs} +7 -7
  177. package/dist/{chunk-ULGNQPNE.mjs → chunk-S2VGME7X.mjs} +1 -1
  178. package/dist/{chunk-OLVJFKXS.mjs → chunk-S44XWTTC.mjs} +35 -25
  179. package/dist/{chunk-YMYIEVZP.mjs → chunk-SZEKQAOY.mjs} +1 -1
  180. package/dist/{chunk-ELGEOM7I.mjs → chunk-TETMEKZE.mjs} +9 -9
  181. package/dist/{chunk-BXF4AMHY.mjs → chunk-TMH263OK.mjs} +5 -4
  182. package/dist/{chunk-NJG7DHVF.mjs → chunk-U6DEBYU5.mjs} +10 -9
  183. package/dist/{chunk-RJNLAH76.mjs → chunk-UOKFSFNJ.mjs} +2 -2
  184. package/dist/{chunk-HEDQPK4I.mjs → chunk-URIH43IJ.mjs} +13 -21
  185. package/dist/{chunk-QXDGGOLC.mjs → chunk-V2ZB2XNS.mjs} +6 -6
  186. package/dist/{chunk-KSUWPU2F.mjs → chunk-WIPEDNSD.mjs} +7 -7
  187. package/dist/{chunk-QDAZGZUF.mjs → chunk-XCIG6HT2.mjs} +3 -3
  188. package/dist/{chunk-4J2PXL36.mjs → chunk-Y6YS33GM.mjs} +40 -38
  189. package/dist/{chunk-4XOB5TTD.mjs → chunk-ZKDKKQCE.mjs} +5 -5
  190. package/dist/{chunk-LOBLCFMN.mjs → chunk-ZTPYUU5C.mjs} +5 -5
  191. package/dist/index.d.mts +12 -72
  192. package/dist/index.d.ts +12 -72
  193. package/dist/index.js +1051 -1838
  194. package/dist/index.mjs +81 -85
  195. package/package.json +8 -10
  196. package/src/components/Accordion/Accordion.tsx +12 -9
  197. package/src/components/AlertBanner/AlertBanner.tsx +7 -6
  198. package/src/components/AppHeader/AppHeader.tsx +1 -1
  199. package/src/components/Avatar/Avatar.tsx +92 -1
  200. package/src/components/Avatar/index.ts +2 -2
  201. package/src/components/Badge/Badge.tsx +2 -2
  202. package/src/components/Button/Button.tsx +50 -46
  203. package/src/components/Card/Card.tsx +1 -0
  204. package/src/components/CategoryStrip/CategoryStrip.tsx +36 -49
  205. package/src/components/Chip/Chip.tsx +5 -4
  206. package/src/components/ConfirmDialog/ConfirmDialog.tsx +3 -3
  207. package/src/components/DetailRow/DetailRow.tsx +3 -3
  208. package/src/components/EmptyState/EmptyState.tsx +2 -2
  209. package/src/components/ErrorBoundary/ErrorBoundary.tsx +6 -6
  210. package/src/components/HolographicCard/HolographicCard.tsx +14 -95
  211. package/src/components/IconButton/IconButton.tsx +2 -2
  212. package/src/components/IconPicker/IconPicker.tsx +13 -12
  213. package/src/components/ImageUpload/ImageUpload.tsx +14 -25
  214. package/src/components/ImageViewer/ImageViewer.tsx +3 -3
  215. package/src/components/Input/Input.tsx +11 -5
  216. package/src/components/LabelValue/LabelValue.tsx +2 -2
  217. package/src/components/ListItem/ListItem.tsx +4 -4
  218. package/src/components/MediaCard/MediaCard.tsx +21 -59
  219. package/src/components/MenuItem/MenuItem.tsx +2 -2
  220. package/src/components/MonthPicker/MonthPicker.tsx +2 -2
  221. package/src/components/NumberStepper/NumberStepper.tsx +6 -6
  222. package/src/components/PagerDots/PagerDots.tsx +38 -28
  223. package/src/components/PricingCard/PricingCard.tsx +6 -6
  224. package/src/components/RadioGroup/RadioGroup.tsx +18 -31
  225. package/src/components/Select/Select.tsx +32 -39
  226. package/src/components/SelectableCard/SelectableCard.tsx +4 -6
  227. package/src/components/SelectableGrid/SelectableGrid.tsx +38 -72
  228. package/src/components/Sheet/Sheet.tsx +1 -1
  229. package/src/components/SheetSelect/SheetSelect.tsx +3 -3
  230. package/src/components/Skeleton/Skeleton.tsx +1 -1
  231. package/src/components/Spinner/Spinner.tsx +2 -2
  232. package/src/components/Stats/Stats.tsx +2 -2
  233. package/src/components/Switch/Switch.tsx +9 -6
  234. package/src/components/TabBar/TabBar.tsx +9 -8
  235. package/src/components/Text/Text.tsx +12 -1
  236. package/src/components/Textarea/Textarea.tsx +18 -32
  237. package/src/components/Toggle/Toggle.tsx +3 -3
  238. package/src/hooks/useConfirmDialog.ts +31 -42
  239. package/src/index.ts +3 -4
  240. package/src/theme/ThemeProvider.tsx +1 -4
  241. package/src/theme/colorUtils.ts +1 -72
  242. package/src/theme/colors.ts +40 -1
  243. package/src/theme/types.ts +2 -2
  244. package/src/utils/animations.ts +0 -47
  245. package/src/utils/curatedIcons.ts +93 -801
  246. package/src/utils/haptics.ts +13 -208
  247. package/src/utils/icons.ts +27 -91
  248. package/src/utils/pressable.ts +10 -61
  249. package/dist/VirtualList.d.mts +0 -19
  250. package/dist/VirtualList.d.ts +0 -19
  251. package/dist/VirtualList.js +0 -38
  252. package/dist/VirtualList.mjs +0 -2
  253. package/dist/chunk-2BA3JMKK.mjs +0 -136
  254. package/dist/chunk-3DKJ2GIC.mjs +0 -30
  255. package/dist/chunk-7ELGZ66G.mjs +0 -164
  256. package/dist/chunk-DVK4G2GT.mjs +0 -59
  257. package/dist/chunk-EJ7ZPXOH.mjs +0 -163
  258. package/dist/chunk-KA7LTET3.mjs +0 -71
  259. package/dist/chunk-LNPKGWBG.mjs +0 -134
  260. package/dist/chunk-NC5ZTR2Y.mjs +0 -32
  261. package/dist/chunk-SAWUXP3A.mjs +0 -1114
  262. package/dist/chunk-YNROWHQJ.mjs +0 -46
  263. package/src/components/VirtualList/VirtualList.tsx +0 -60
  264. package/src/components/VirtualList/index.ts +0 -1
  265. package/src/utils/fontGuard.ts +0 -35
  266. package/src/utils/hover.ts +0 -25
  267. package/src/utils/useColorTransition.ts +0 -40
  268. package/src/utils/usePressScale.ts +0 -75
@@ -1,40 +1,4 @@
1
- /**
2
- * Curated icon set — 12 categories, themed icons, all outlined style.
3
- * Ordered by usage probability: most-common categories first, niche last.
4
- *
5
- * All names resolve across 6 @expo/vector-icons families via renderIcon().
6
- * Priority (lowest→highest): Ionicons → MaterialIcons → FontAwesome5 → Entypo → AntDesign → Feather.
7
- * Feather is the highest priority — any name it has wins over all other families.
8
- *
9
- * ICON FAMILY RULES (strict):
10
- * - Feather (stroke-outlined, always safe) — first choice for utility icons. ✅
11
- * - Ionicons `-outline` suffix for domain-specific icons (food, sports, nature). ✅
12
- * These names don't exist in any higher-priority family, so they resolve
13
- * cleanly to Ionicons outline style — no collisions, no filled rendering.
14
- * - FontAwesome5 brand glyphs (github, twitter, etc.) — consistent flat brand
15
- * logos in the Brands category. They render as the official brand silhouette
16
- * and are visually consistent across all brands.
17
- * - AntDesign (filled) ❌ NEVER — renders filled.
18
- * - Entypo (filled) ❌ NEVER — renders filled.
19
- * - MaterialIcons (filled) ❌ NEVER — renders filled.
20
- * - Ionicons base (filled) ❌ NEVER — always use the `-outline` variant.
21
- * - FA5 regular/solid substyles (filled) ❌ NEVER.
22
- *
23
- * THEMATIC RULE (strict):
24
- * - Every icon must be directly relevant to its category. No generic
25
- * filler. Contextual relevance is allowed (e.g. truck/map-pin in Food
26
- * for delivery/location), but icons that fit in any category (phone,
27
- * mail, bell, search, etc.) are NOT used as filler — they belong in
28
- * the appropriate category (Communication / Status / Actions).
29
- * - No duplicate concepts per category (don't list both `arrow-up` and
30
- * `arrow-up-outline` — pick the best outlined version once).
31
- *
32
- * Verify: check glyphMaps in node_modules/@expo/vector-icons/build/vendor/
33
- * react-native-vector-icons/glyphmaps/
34
- * - Feather.json, Ionicons.json, FA5Free.json, FA5Free_meta.json
35
- */
36
-
37
- export interface IconCategory {
1
+ export interface CuratedCategoryDef {
38
2
  name: string
39
3
  label: string
40
4
  labelEs: string
@@ -42,808 +6,136 @@ export interface IconCategory {
42
6
  icons: string[]
43
7
  }
44
8
 
45
- export const CURATED_ICONS: IconCategory[] = [
46
- // ─── Food ────────────────────────────────────────────────────────────────────
9
+ const CATEGORIES: CuratedCategoryDef[] = [
47
10
  {
48
- name: 'food',
49
- label: 'Food',
50
- labelEs: 'Comida',
51
- categoryIcon: 'coffee',
52
- icons: [
53
- // Bebidas
54
- 'beer-outline',
55
- 'wine-outline',
56
- 'cafe-outline',
57
- 'water-outline',
58
- 'coffee',
59
- // Comida
60
- 'pizza-outline',
61
- 'fast-food-outline',
62
- 'fish-outline',
63
- 'ice-cream-outline',
64
- 'egg-outline',
65
- 'nutrition-outline',
66
- // Servicio y operación
67
- 'restaurant-outline',
68
- 'server-outline',
69
- 'menu-outline',
70
- 'basket-outline',
71
- 'receipt-outline',
72
- 'pricetag-outline',
73
- 'pricetags-outline',
74
- 'reorder-four-outline',
75
- 'reorder-three-outline',
76
- 'cart-outline',
77
- 'cash-outline',
78
- 'wallet-outline',
79
- 'storefront-outline',
80
- // Delivery / pedidos
81
- 'truck',
82
- 'package',
83
- 'shopping-bag',
84
- 'shopping-cart',
85
- // Ubicación y reserva
86
- 'map-pin',
87
- 'home',
88
- 'calendar',
89
- 'clock',
90
- // Experiencia
91
- 'star',
92
- 'heart',
93
- 'bookmark',
94
- 'thumbs-up',
95
- 'check',
96
- 'gift',
97
- ],
98
- },
99
-
100
- // ─── Sports ──────────────────────────────────────────────────────────────────
101
- {
102
- name: 'sports',
103
- label: 'Sports',
104
- labelEs: 'Deportes',
105
- categoryIcon: 'trophy-outline',
106
- icons: [
107
- // Deportes
108
- 'american-football-outline',
109
- 'baseball-outline',
110
- 'basketball-outline',
111
- 'bicycle-outline',
112
- 'football-outline',
113
- 'tennisball-outline',
114
- 'golf-outline',
115
- 'fitness-outline',
116
- 'car-sport-outline',
117
- 'game-controller-outline',
118
- // Competición y logros
119
- 'trophy-outline',
120
- 'medal-outline',
121
- 'award',
122
- 'target',
123
- 'flag',
124
- 'crosshair',
125
- // Outdoor
126
- 'compass-outline',
127
- 'map-outline',
128
- 'trail-sign-outline',
129
- 'bonfire-outline',
130
- 'snow-outline',
131
- 'flame-outline',
132
- 'sun',
133
- 'droplet',
134
- 'wind',
135
- 'map',
136
- 'map-pin',
137
- 'navigation',
138
- 'navigation-2',
139
- // Rendimiento y métricas
140
- 'stats-chart-outline',
141
- 'trending-up-outline',
142
- 'trending-down-outline',
143
- 'bar-chart-outline',
144
- 'pie-chart-outline',
145
- 'analytics-outline',
146
- 'activity',
147
- 'zap',
148
- 'watch',
149
- 'trending-up',
150
- 'trending-down',
151
- 'bar-chart-2',
152
- 'clock',
153
- 'calendar',
154
- ],
155
- },
156
-
157
- // ─── Business ────────────────────────────────────────────────────────────────
158
- {
159
- name: 'business',
160
- label: 'Business',
161
- labelEs: 'Negocios',
162
- categoryIcon: 'briefcase',
163
- icons: [
164
- // Empresa
165
- 'briefcase',
166
- 'users',
167
- 'user',
168
- 'user-plus',
169
- 'user-check',
170
- 'user-x',
171
- 'briefcase-outline',
172
- 'business-outline',
173
- 'id-card-outline',
174
- // Comercio y operación
175
- 'shopping-cart',
176
- 'shopping-bag',
177
- 'credit-card',
178
- 'dollar-sign',
179
- 'percent',
180
- 'tag',
181
- 'gift',
182
- 'cart-outline',
183
- 'cash-outline',
184
- 'wallet-outline',
185
- 'storefront-outline',
186
- 'pricetag-outline',
187
- 'pricetags-outline',
188
- 'receipt-outline',
189
- 'card-outline',
190
- // Logística
191
- 'truck',
192
- 'package',
193
- // Documentos
194
- 'file',
195
- 'file-text',
196
- 'file-plus',
197
- 'folder',
198
- 'paperclip',
199
- 'document-outline',
200
- 'document-text-outline',
201
- 'documents-outline',
202
- 'folder-outline',
203
- // Comunicación de negocio
204
- 'mail',
205
- 'phone',
206
- 'phone-call',
207
- 'send',
208
- 'message-square',
209
- 'mail-outline',
210
- // Análisis
211
- 'bar-chart',
212
- 'bar-chart-2',
213
- 'pie-chart',
214
- 'trending-up',
215
- 'trending-down',
216
- 'activity',
217
- 'globe',
218
- ],
219
- },
220
-
221
- // ─── Objects ─────────────────────────────────────────────────────────────────
222
- {
223
- name: 'objects',
224
- label: 'Objects',
225
- labelEs: 'Objetos',
226
- categoryIcon: 'package',
227
- icons: [
228
- // Archivos y carpetas
229
- 'file',
230
- 'file-text',
231
- 'file-plus',
232
- 'file-minus',
233
- 'folder',
234
- 'folder-plus',
235
- 'folder-minus',
236
- 'archive',
237
- 'save',
238
- 'paperclip',
239
- 'document-outline',
240
- 'document-text-outline',
241
- 'documents-outline',
242
- 'folder-outline',
243
- 'folder-open-outline',
244
- 'file-tray-outline',
245
- 'file-tray-full-outline',
246
- 'file-tray-stacked-outline',
247
- 'archive-outline',
248
- 'save-outline',
249
- // Seguridad
250
- 'lock',
251
- 'unlock',
252
- 'key',
253
- 'shield',
254
- 'shield-off',
255
- 'lock-closed-outline',
256
- 'lock-open-outline',
257
- 'key-outline',
258
- 'shield-outline',
259
- 'shield-checkmark-outline',
260
- // Dispositivos
261
- 'monitor',
262
- 'tablet',
263
- 'smartphone',
264
- 'tv',
265
- 'server',
266
- 'database',
267
- 'hard-drive',
268
- 'cpu',
269
- 'radio',
270
- 'laptop-outline',
271
- 'phone-portrait-outline',
272
- 'phone-landscape-outline',
273
- 'tablet-landscape-outline',
274
- 'tablet-portrait-outline',
275
- 'tv-outline',
276
- 'server-outline',
277
- 'hardware-chip-outline',
278
- 'watch-outline',
279
- ],
280
- },
281
-
282
- // ─── Status ──────────────────────────────────────────────────────────────────
283
- {
284
- name: 'status',
285
- label: 'Status',
286
- labelEs: 'Estado',
287
- categoryIcon: 'alert-circle',
288
- icons: [
289
- // Alertas
290
- 'alert-circle',
291
- 'alert-triangle',
292
- 'alert-octagon',
293
- 'info',
294
- 'help-circle',
295
- 'alert-circle-outline',
296
- 'alert-outline',
297
- 'information-circle-outline',
298
- 'help-circle-outline',
299
- // Notificaciones
300
- 'bell',
301
- 'bell-off',
302
- 'notifications-outline',
303
- 'notifications-off-outline',
304
- 'notifications-circle-outline',
305
- // Visibilidad
306
- 'eye',
307
- 'eye-off',
308
- 'eye-outline',
309
- 'eye-off-outline',
310
- // Indicadores
311
- 'flag',
312
- 'zap',
313
- 'zap-off',
314
- 'loader',
315
- 'activity',
316
- 'flash-outline',
317
- 'bulb-outline',
318
- // Éxito / error / advertencia
319
- 'check',
320
- 'check-circle',
321
- 'x',
322
- 'x-circle',
323
- 'x-octagon',
324
- 'slash',
325
- 'plus-circle',
326
- 'minus-circle',
327
- 'checkmark-circle-outline',
328
- 'checkmark-done-circle-outline',
329
- 'close-circle-outline',
330
- 'add-circle-outline',
331
- 'remove-circle-outline',
332
- // Estados de proceso
333
- 'play-circle',
334
- 'pause-circle',
335
- 'stop-circle',
336
- 'play-circle-outline',
337
- 'pause-circle-outline',
338
- 'stop-circle-outline',
339
- ],
340
- },
341
-
342
- // ─── Actions ─────────────────────────────────────────────────────────────────
343
- {
344
- name: 'actions',
11
+ name: 'acciones',
345
12
  label: 'Actions',
346
13
  labelEs: 'Acciones',
347
- categoryIcon: 'edit-3',
14
+ categoryIcon: 'zap',
348
15
  icons: [
349
- // Crear / añadir
350
- 'plus',
351
- 'plus-circle',
352
- 'plus-square',
353
- 'add-outline',
354
- 'add-circle-outline',
355
- // Eliminar / quitar
356
- 'minus',
357
- 'minus-circle',
358
- 'minus-square',
359
- 'trash',
360
- 'trash-2',
361
- 'x',
362
- 'x-circle',
363
- 'x-square',
364
- 'x-octagon',
365
- 'slash',
366
- 'trash-outline',
367
- 'trash-bin-outline',
368
- 'remove-outline',
369
- 'remove-circle-outline',
370
- 'close-circle-outline',
371
- 'backspace-outline',
372
- 'cut-outline',
373
- // Confirmar
374
- 'check',
375
- 'check-circle',
376
- 'check-square',
377
- 'checkmark-circle-outline',
378
- // Editar
379
- 'edit',
380
- 'edit-2',
381
- 'edit-3',
382
- 'copy',
383
- 'clipboard',
384
- 'scissors',
385
- 'create-outline',
386
- 'pencil-outline',
387
- 'duplicate-outline',
388
- 'copy-outline',
389
- 'clipboard-outline',
390
- // Mover datos
391
- 'download',
392
- 'download-cloud',
393
- 'upload',
394
- 'upload-cloud',
395
- 'download-outline',
396
- 'cloud-download-outline',
397
- 'cloud-upload-outline',
16
+ 'plus', 'x', 'check', 'edit-2', 'search',
17
+ 'settings', 'filter', 'trash-2', 'copy', 'save',
18
+ 'share-2', 'download', 'upload', 'refresh-cw', 'lock',
19
+ 'bookmark', 'heart', 'star', 'flag', 'link-2',
398
20
  ],
399
21
  },
400
-
401
- // ─── Communication ───────────────────────────────────────────────────────────
402
22
  {
403
- name: 'communication',
23
+ name: 'comunicacion',
404
24
  label: 'Communication',
405
25
  labelEs: 'Comunicación',
406
- categoryIcon: 'message-circle',
26
+ categoryIcon: 'mail',
407
27
  icons: [
408
- // Mensajería
409
- 'message-circle',
410
- 'message-square',
411
- 'send',
412
- 'mail',
413
- 'inbox',
414
- 'at-sign',
415
- 'mail-outline',
416
- 'mail-open-outline',
417
- 'mail-unread-outline',
418
- 'chatbubble-outline',
419
- 'chatbubble-ellipses-outline',
420
- 'chatbubbles-outline',
421
- 'send-outline',
422
- 'attach-outline',
423
- 'at-outline',
424
- 'at-circle-outline',
425
- // Llamadas
426
- 'phone',
427
- 'phone-call',
428
- 'phone-incoming',
429
- 'phone-outgoing',
430
- 'phone-missed',
431
- 'phone-off',
432
- 'phone-forwarded',
433
- 'voicemail',
434
- 'call-outline',
435
- 'phone-portrait-outline',
436
- 'phone-landscape-outline',
437
- // Personas
438
- 'user',
439
- 'user-plus',
440
- 'user-minus',
441
- 'user-check',
442
- 'user-x',
443
- 'users',
444
- 'person-outline',
445
- 'person-circle-outline',
446
- 'person-add-outline',
447
- 'person-remove-outline',
448
- 'people-outline',
449
- 'people-circle-outline',
450
- // Reacciones
451
- 'smile',
452
- 'frown',
453
- 'meh',
454
- 'heart',
455
- 'thumbs-up',
456
- 'thumbs-down',
457
- 'happy-outline',
458
- 'sad-outline',
459
- 'heart-outline',
460
- 'thumbs-up-outline',
461
- 'thumbs-down-outline',
28
+ 'mail', 'message-circle', 'message-square', 'phone', 'phone-call',
29
+ 'phone-forwarded', 'phone-incoming', 'phone-missed', 'phone-off', 'phone-outgoing',
30
+ 'send', 'at-sign', 'paperclip', 'inbox', 'volume',
31
+ 'volume-1', 'volume-2', 'volume-x', 'mic', 'mic-off',
462
32
  ],
463
33
  },
464
-
465
- // ─── Navigation ──────────────────────────────────────────────────────────────
466
34
  {
467
- name: 'navigation',
35
+ name: 'navegacion',
468
36
  label: 'Navigation',
469
37
  labelEs: 'Navegación',
470
- categoryIcon: 'compass',
38
+ categoryIcon: 'map-pin',
471
39
  icons: [
472
- // Flechas cardinales
473
- 'arrow-up',
474
- 'arrow-down',
475
- 'arrow-left',
476
- 'arrow-right',
477
- 'arrow-up-left',
478
- 'arrow-up-right',
479
- 'arrow-down-left',
480
- 'arrow-down-right',
481
- 'arrow-up-outline',
482
- 'arrow-down-outline',
483
- 'arrow-back-outline',
484
- 'arrow-forward-outline',
485
- 'arrow-undo-outline',
486
- 'arrow-redo-outline',
487
- // Chevrones
488
- 'chevron-up',
489
- 'chevron-down',
490
- 'chevron-left',
491
- 'chevron-right',
492
- 'chevrons-up',
493
- 'chevrons-down',
494
- 'chevrons-left',
495
- 'chevrons-right',
496
- 'chevron-up-outline',
497
- 'chevron-down-outline',
498
- 'chevron-back-outline',
499
- 'chevron-forward-outline',
500
- 'chevron-collapse-outline',
501
- 'chevron-expand-outline',
502
- // Esquinas
503
- 'corner-up-left',
504
- 'corner-up-right',
505
- 'corner-down-left',
506
- 'corner-down-right',
507
- 'corner-left-up',
508
- 'corner-left-down',
509
- 'corner-right-up',
510
- 'corner-right-down',
511
- // Giro / refrescar
512
- 'refresh-cw',
513
- 'refresh-ccw',
514
- 'rotate-cw',
515
- 'rotate-ccw',
516
- 'refresh-outline',
517
- 'reload-outline',
518
- // Orientación y mapa
519
- 'navigation',
520
- 'navigation-2',
521
- 'compass',
522
- 'map',
523
- 'map-pin',
524
- 'target',
525
- 'crosshair',
526
- 'home',
527
- 'anchor',
528
- 'compass-outline',
529
- 'map-outline',
530
- 'location-outline',
531
- 'navigate-outline',
532
- 'pin-outline',
533
- 'home-outline',
40
+ 'arrow-up', 'arrow-down', 'arrow-left', 'arrow-right',
41
+ 'chevron-up', 'chevron-down', 'chevron-left', 'chevron-right',
42
+ 'chevrons-up', 'chevrons-down', 'chevrons-left', 'chevrons-right',
43
+ 'arrow-up-circle', 'arrow-down-circle', 'arrow-left-circle', 'arrow-right-circle',
44
+ 'corner-up-left', 'corner-up-right', 'corner-down-left', 'corner-down-right',
534
45
  ],
535
46
  },
536
-
537
- // ─── Media ───────────────────────────────────────────────────────────────────
538
47
  {
539
- name: 'media',
540
- label: 'Media',
541
- labelEs: 'Medios',
542
- categoryIcon: 'image',
48
+ name: 'comida',
49
+ label: 'Food',
50
+ labelEs: 'Comida',
51
+ categoryIcon: 'coffee',
543
52
  icons: [
544
- // Visual
545
- 'image',
546
- 'film',
547
- 'video',
548
- 'video-off',
549
- 'camera',
550
- 'camera-off',
551
- 'image-outline',
552
- 'images-outline',
553
- 'film-outline',
554
- 'videocam-outline',
555
- 'videocam-off-outline',
556
- 'camera-outline',
557
- 'camera-reverse-outline',
558
- // Reproducción
559
- 'play',
560
- 'play-circle',
561
- 'pause',
562
- 'pause-circle',
563
- 'square',
564
- 'stop-circle',
565
- 'fast-forward',
566
- 'rewind',
567
- 'skip-forward',
568
- 'skip-back',
569
- 'repeat',
570
- 'shuffle',
571
- 'play-outline',
572
- 'pause-outline',
573
- 'play-circle-outline',
574
- 'pause-circle-outline',
575
- 'stop-circle-outline',
576
- 'play-back-outline',
577
- 'play-forward-outline',
578
- 'play-skip-back-outline',
579
- 'play-skip-forward-outline',
580
- 'repeat-outline',
581
- 'shuffle-outline',
582
- // Audio
583
- 'music',
584
- 'headphones',
585
- 'speaker',
586
- 'volume',
587
- 'volume-1',
588
- 'volume-2',
589
- 'volume-x',
590
- 'mic',
591
- 'mic-off',
592
- 'mic-outline',
593
- 'mic-off-outline',
594
- 'mic-circle-outline',
595
- 'musical-note-outline',
596
- 'musical-notes-outline',
597
- 'volume-high-outline',
598
- 'volume-low-outline',
599
- 'volume-medium-outline',
600
- 'volume-mute-outline',
601
- 'volume-off-outline',
53
+ 'coffee', 'shopping-bag', 'shopping-cart', 'package', 'box',
54
+ 'tag', 'truck', 'gift', 'award', 'star',
55
+ 'heart', 'zap', 'sun', 'moon', 'cloud',
56
+ 'droplet', 'thermometer', 'wind', 'map-pin', 'home',
57
+ ],
58
+ },
59
+ {
60
+ name: 'negocios',
61
+ label: 'Business',
62
+ labelEs: 'Negocios',
63
+ categoryIcon: 'briefcase',
64
+ icons: [
65
+ 'briefcase', 'dollar-sign', 'credit-card', 'bar-chart', 'bar-chart-2',
66
+ 'pie-chart', 'trending-up', 'trending-down', 'activity', 'target',
67
+ 'hash', 'percent', 'file-text', 'folder', 'clipboard',
68
+ 'calendar', 'clock', 'database', 'archive', 'terminal',
602
69
  ],
603
70
  },
604
-
605
- // ─── Layout ──────────────────────────────────────────────────────────────────
606
71
  {
607
- name: 'layout',
608
- label: 'Layout',
609
- labelEs: 'Diseño',
610
- categoryIcon: 'grid',
72
+ name: 'perfil',
73
+ label: 'Profile',
74
+ labelEs: 'Perfil',
75
+ categoryIcon: 'user',
611
76
  icons: [
612
- // Estructura
613
- 'grid',
614
- 'columns',
615
- 'sidebar',
616
- 'layout',
617
- 'list',
618
- 'menu',
619
- 'table',
620
- 'trello',
621
- 'grid-outline',
622
- 'list-outline',
623
- 'menu-outline',
624
- 'layers-outline',
625
- // Alineación
626
- 'align-left',
627
- 'align-center',
628
- 'align-right',
629
- 'align-justify',
630
- // Tipografía
631
- 'bold',
632
- 'italic',
633
- 'underline',
634
- 'type',
635
- 'hash',
636
- // Formas
637
- 'circle',
638
- 'square',
639
- 'triangle',
640
- 'hexagon',
641
- 'octagon',
642
- 'square-outline',
643
- 'triangle-outline',
644
- 'diamond-outline',
645
- 'shapes-outline',
646
- // Herramientas de diseño
647
- 'pen-tool',
648
- 'crop',
649
- 'layers',
650
- 'filter',
651
- 'sliders',
652
- 'aperture',
653
- 'crop-outline',
654
- 'filter-outline',
655
- 'color-fill-outline',
656
- 'color-filter-outline',
657
- 'color-palette-outline',
658
- 'color-wand-outline',
659
- 'brush-outline',
660
- // Edición
661
- 'edit',
662
- 'edit-2',
663
- 'edit-3',
664
- 'copy',
665
- 'trash',
666
- 'move',
667
- 'create-outline',
668
- 'pencil-outline',
669
- 'move-outline',
670
- 'resize-outline',
671
- 'duplicate-outline',
672
- // Navegación UI
673
- 'more-horizontal',
674
- 'more-vertical',
675
- 'maximize',
676
- 'minimize',
677
- 'zoom-in',
678
- 'zoom-out',
679
- 'eye',
680
- 'eye-off',
681
- 'eye-outline',
682
- 'eye-off-outline',
683
- 'ellipsis-horizontal-circle-outline',
684
- 'ellipsis-vertical-circle-outline',
77
+ 'user', 'users', 'user-check', 'user-x', 'user-plus',
78
+ 'user-minus', 'key', 'shield', 'shield-off', 'lock',
79
+ 'unlock', 'log-in', 'log-out', 'eye', 'eye-off',
80
+ 'bell', 'bell-off', 'settings', 'tool', 'sliders',
685
81
  ],
686
82
  },
687
-
688
- // ─── Nature ──────────────────────────────────────────────────────────────────
689
83
  {
690
- name: 'nature',
691
- label: 'Nature',
692
- labelEs: 'Naturaleza',
693
- categoryIcon: 'sunny-outline',
84
+ name: 'multimedia',
85
+ label: 'Media',
86
+ labelEs: 'Multimedia',
87
+ categoryIcon: 'camera',
694
88
  icons: [
695
- // Sol, luna y estrellas
696
- 'sunny-outline',
697
- 'moon-outline',
698
- 'star-outline',
699
- 'star-half-outline',
700
- 'partly-sunny-outline',
701
- 'sun',
702
- 'moon',
703
- 'sunrise',
704
- 'sunset',
705
- // Clima
706
- 'rainy-outline',
707
- 'thunderstorm-outline',
708
- 'snow-outline',
709
- 'cloudy-outline',
710
- 'cloudy-night-outline',
711
- 'cloud-outline',
712
- 'cloud-done-outline',
713
- 'cloud-download-outline',
714
- 'cloud-upload-outline',
715
- 'cloud-offline-outline',
716
- 'cloud-circle-outline',
717
- 'cloud',
718
- 'cloud-drizzle',
719
- 'cloud-lightning',
720
- 'cloud-rain',
721
- 'cloud-snow',
722
- 'cloud-off',
723
- 'umbrella-outline',
724
- 'thermometer-outline',
725
- 'droplet',
726
- 'wind',
727
- // Agua y fuego
728
- 'water-outline',
729
- 'flame-outline',
730
- 'bonfire-outline',
731
- 'eyedrop-outline',
732
- // Flora y fauna
733
- 'leaf-outline',
734
- 'flower-outline',
735
- 'bug-outline',
736
- 'fish-outline',
737
- 'paw-outline',
738
- // Outdoor
739
- 'binoculars-outline',
740
- 'telescope-outline',
741
- 'compass-outline',
742
- 'map-outline',
743
- 'location-outline',
744
- 'flag-outline',
745
- 'trail-sign-outline',
746
- 'earth-outline',
747
- 'globe-outline',
748
- 'planet-outline',
749
- 'compass',
750
- 'map',
751
- 'map-pin',
752
- 'flag',
753
- 'navigation',
754
- 'navigation-2',
755
- 'target',
756
- 'crosshair',
757
- 'life-buoy',
89
+ 'camera', 'camera-off', 'video', 'video-off', 'film',
90
+ 'music', 'music-off', 'headphones', 'speaker', 'radio',
91
+ 'image', 'images', 'play', 'pause', 'stop',
92
+ 'skip-back', 'skip-forward', 'monitor', 'smart-phone', 'tablet',
758
93
  ],
759
94
  },
760
-
761
- // ─── Brands ──────────────────────────────────────────────────────────────────
762
95
  {
763
- name: 'brands',
764
- label: 'Brands',
765
- labelEs: 'Marcas',
766
- categoryIcon: 'globe',
96
+ name: 'texto',
97
+ label: 'Text',
98
+ labelEs: 'Texto',
99
+ categoryIcon: 'type',
767
100
  icons: [
768
- // Feather brand icons — outlined, consistent with the rest of the library
769
- 'github',
770
- 'gitlab',
771
- 'codepen',
772
- 'codesandbox',
773
- 'twitter',
774
- 'facebook',
775
- 'instagram',
776
- 'linkedin',
777
- 'youtube',
778
- 'dribbble',
779
- 'twitch',
780
- 'slack',
781
- 'figma',
782
- 'framer',
783
- 'chrome',
784
- 'rss',
785
- // Filled / flat brand logos (FA5 brands) — kept in a second
786
- // visual tier. Rendered as the brand's official silhouette.
787
- // Visually consistent (all flat single-color) but heavier than the
788
- // Feather outlined set above. Use these only when an outlined Feather
789
- // version of the brand doesn't exist.
790
- 'reddit',
791
- 'tiktok',
792
- 'pinterest',
793
- 'whatsapp',
794
- 'discord',
795
- 'snapchat',
796
- 'telegram',
797
- 'viber',
798
- 'line',
799
- 'vimeo',
800
- 'tumblr',
801
- 'behance',
802
- 'medium',
803
- 'soundcloud',
804
- 'google',
805
- 'apple',
806
- 'android',
807
- 'windows',
808
- 'linux',
809
- 'amazon',
810
- 'paypal',
811
- 'stripe',
812
- 'shopify',
813
- 'dropbox',
814
- 'spotify',
815
- 'steam',
816
- 'atlassian',
817
- 'jira',
818
- 'confluence',
819
- 'bitbucket',
820
- 'jenkins',
821
- 'docker',
822
- 'aws',
823
- 'node',
824
- 'react',
825
- 'angular',
826
- 'wordpress',
827
- 'drupal',
828
- 'joomla',
829
- 'squarespace',
830
- 'wix',
831
- 'magento',
832
- 'terminal',
833
- 'pen-tool',
101
+ 'type', 'bold', 'italic', 'underline', 'align-left',
102
+ 'align-center', 'align-right', 'align-justify', 'list', 'columns',
103
+ 'sidebar', 'minimize-2', 'maximize-2', 'edit-3', 'feather',
104
+ 'circle', 'square', 'plus-circle', 'minus-circle', 'x-circle',
834
105
  ],
835
106
  },
836
107
  ]
837
108
 
838
- /** Flat deduplicated array of all curated icon names (for "Todos" / search). */
839
- export const ALL_CURATED_ICONS: string[] = [
840
- ...new Set(CURATED_ICONS.flatMap((c) => c.icons)),
841
- ]
109
+ let _allIcons: string[] | null = null
110
+ let _categorized: CuratedCategoryDef[] | null = null
111
+
112
+ export function getAllCuratedIcons(): string[] {
113
+ if (!_allIcons) {
114
+ const seen = new Set<string>()
115
+ const result: string[] = []
116
+ for (const cat of CATEGORIES) {
117
+ for (const name of cat.icons) {
118
+ if (!seen.has(name)) {
119
+ seen.add(name)
120
+ result.push(name)
121
+ }
122
+ }
123
+ }
124
+ _allIcons = result
125
+ }
126
+ return _allIcons!
127
+ }
128
+
129
+ export function getCuratedCategories(): CuratedCategoryDef[] {
130
+ if (!_categorized) {
131
+ _categorized = CATEGORIES.map((cat) => ({ ...cat, icons: [...cat.icons] }))
132
+ }
133
+ return _categorized!
134
+ }
842
135
 
843
- /** Resolve icon to its category label, or undefined if not found. */
844
136
  export function getIconCategory(name: string): string | undefined {
845
- for (const cat of CURATED_ICONS) {
846
- if (cat.icons.includes(name)) return cat.label
137
+ for (const cat of CATEGORIES) {
138
+ if (cat.icons.includes(name)) return cat.labelEs
847
139
  }
848
140
  return undefined
849
141
  }