@retray-dev/ui-kit 12.1.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 (282) hide show
  1. package/COMPONENTS.md +183 -147
  2. package/CONSUMER.md +2 -2
  3. package/DESIGN.md +2 -2
  4. package/README.md +13 -8
  5. package/dist/Accordion.d.mts +6 -0
  6. package/dist/Accordion.d.ts +6 -0
  7. package/dist/Accordion.js +62 -208
  8. package/dist/Accordion.mjs +6 -5
  9. package/dist/AlertBanner.js +29 -151
  10. package/dist/AlertBanner.mjs +3 -3
  11. package/dist/AppHeader.js +37 -233
  12. package/dist/AppHeader.mjs +6 -7
  13. package/dist/Avatar.d.mts +17 -1
  14. package/dist/Avatar.d.ts +17 -1
  15. package/dist/Avatar.js +80 -113
  16. package/dist/Avatar.mjs +2 -2
  17. package/dist/Badge.js +24 -147
  18. package/dist/Badge.mjs +3 -3
  19. package/dist/Button.js +86 -274
  20. package/dist/Button.mjs +6 -6
  21. package/dist/Card.js +15 -198
  22. package/dist/Card.mjs +4 -5
  23. package/dist/CategoryStrip.d.mts +0 -5
  24. package/dist/CategoryStrip.d.ts +0 -5
  25. package/dist/CategoryStrip.js +47 -263
  26. package/dist/CategoryStrip.mjs +6 -6
  27. package/dist/Checkbox.js +15 -198
  28. package/dist/Checkbox.mjs +5 -5
  29. package/dist/Chip.js +44 -234
  30. package/dist/Chip.mjs +7 -6
  31. package/dist/ConfirmDialog.js +100 -296
  32. package/dist/ConfirmDialog.mjs +7 -7
  33. package/dist/CurrencyDisplay.js +1 -112
  34. package/dist/CurrencyDisplay.mjs +2 -2
  35. package/dist/CurrencyInput.js +35 -160
  36. package/dist/CurrencyInput.mjs +5 -5
  37. package/dist/DetailRow.js +25 -148
  38. package/dist/DetailRow.mjs +3 -3
  39. package/dist/EmptyState.js +87 -275
  40. package/dist/EmptyState.mjs +7 -7
  41. package/dist/ErrorBoundary.js +32 -197
  42. package/dist/ErrorBoundary.mjs +4 -4
  43. package/dist/Form.js +1 -112
  44. package/dist/Form.mjs +2 -2
  45. package/dist/HolographicCard.d.mts +0 -28
  46. package/dist/HolographicCard.d.ts +0 -28
  47. package/dist/HolographicCard.js +20 -130
  48. package/dist/HolographicCard.mjs +9 -32
  49. package/dist/IconButton.js +36 -232
  50. package/dist/IconButton.mjs +5 -6
  51. package/dist/IconPicker.js +222 -927
  52. package/dist/IconPicker.mjs +5 -5
  53. package/dist/ImageUpload.d.mts +5 -1
  54. package/dist/ImageUpload.d.ts +5 -1
  55. package/dist/ImageUpload.js +32 -215
  56. package/dist/ImageUpload.mjs +5 -6
  57. package/dist/ImageViewer.js +75 -264
  58. package/dist/ImageViewer.mjs +8 -8
  59. package/dist/Input.d.mts +1 -1
  60. package/dist/Input.d.ts +1 -1
  61. package/dist/Input.js +35 -160
  62. package/dist/Input.mjs +4 -4
  63. package/dist/LabelValue.js +24 -147
  64. package/dist/LabelValue.mjs +3 -3
  65. package/dist/ListGroup.js +1 -112
  66. package/dist/ListGroup.mjs +2 -2
  67. package/dist/ListItem.js +38 -233
  68. package/dist/ListItem.mjs +5 -6
  69. package/dist/MediaCard.d.mts +0 -14
  70. package/dist/MediaCard.d.ts +0 -14
  71. package/dist/MediaCard.js +69 -313
  72. package/dist/MediaCard.mjs +5 -6
  73. package/dist/MenuGroup.js +1 -112
  74. package/dist/MenuGroup.mjs +2 -2
  75. package/dist/MenuItem.js +36 -232
  76. package/dist/MenuItem.mjs +5 -6
  77. package/dist/MonthPicker.js +8 -161
  78. package/dist/MonthPicker.mjs +3 -3
  79. package/dist/NumberStepper.js +40 -236
  80. package/dist/NumberStepper.mjs +5 -6
  81. package/dist/PagerDots.d.mts +1 -1
  82. package/dist/PagerDots.d.ts +1 -1
  83. package/dist/PagerDots.js +69 -222
  84. package/dist/PagerDots.mjs +6 -5
  85. package/dist/Pressable.js +14 -85
  86. package/dist/Pressable.mjs +4 -4
  87. package/dist/PricingCard.js +94 -279
  88. package/dist/PricingCard.mjs +8 -8
  89. package/dist/Progress.js +3 -121
  90. package/dist/Progress.mjs +3 -3
  91. package/dist/RadioGroup.js +52 -263
  92. package/dist/RadioGroup.mjs +5 -5
  93. package/dist/RetrayProvider.d.mts +1 -1
  94. package/dist/RetrayProvider.d.ts +1 -1
  95. package/dist/RetrayProvider.js +5 -6
  96. package/dist/RetrayProvider.mjs +3 -3
  97. package/dist/Select.d.mts +2 -1
  98. package/dist/Select.d.ts +2 -1
  99. package/dist/Select.js +24 -230
  100. package/dist/Select.mjs +4 -5
  101. package/dist/SelectableCard.d.mts +27 -0
  102. package/dist/SelectableCard.d.ts +27 -0
  103. package/dist/SelectableCard.js +335 -0
  104. package/dist/SelectableCard.mjs +8 -0
  105. package/dist/SelectableGrid.d.mts +0 -21
  106. package/dist/SelectableGrid.d.ts +0 -21
  107. package/dist/SelectableGrid.js +49 -269
  108. package/dist/SelectableGrid.mjs +5 -6
  109. package/dist/Separator.js +1 -112
  110. package/dist/Separator.mjs +2 -2
  111. package/dist/Sheet.js +16 -163
  112. package/dist/Sheet.mjs +3 -3
  113. package/dist/SheetSelect.js +39 -234
  114. package/dist/SheetSelect.mjs +6 -6
  115. package/dist/Skeleton.d.mts +3 -1
  116. package/dist/Skeleton.d.ts +3 -1
  117. package/dist/Skeleton.js +7 -124
  118. package/dist/Skeleton.mjs +3 -3
  119. package/dist/Slider.js +6 -159
  120. package/dist/Slider.mjs +3 -3
  121. package/dist/Spinner.js +3 -114
  122. package/dist/Spinner.mjs +2 -2
  123. package/dist/Stats.d.mts +4 -1
  124. package/dist/Stats.d.ts +4 -1
  125. package/dist/Stats.js +60 -234
  126. package/dist/Stats.mjs +5 -6
  127. package/dist/Switch.js +24 -173
  128. package/dist/Switch.mjs +5 -4
  129. package/dist/TabBar.js +43 -198
  130. package/dist/TabBar.mjs +5 -4
  131. package/dist/Tabs.js +15 -197
  132. package/dist/Tabs.mjs +5 -5
  133. package/dist/Text.js +9 -128
  134. package/dist/Text.mjs +2 -2
  135. package/dist/Textarea.d.mts +2 -1
  136. package/dist/Textarea.d.ts +2 -1
  137. package/dist/Textarea.js +71 -217
  138. package/dist/Textarea.mjs +4 -4
  139. package/dist/Toast.js +1 -112
  140. package/dist/Toast.mjs +2 -2
  141. package/dist/Toggle.js +39 -234
  142. package/dist/Toggle.mjs +6 -6
  143. package/dist/{chunk-FFTYLPSB.mjs → chunk-2QOHHBJC.mjs} +13 -7
  144. package/dist/{chunk-BCWEHE34.mjs → chunk-2VIDP72N.mjs} +3 -3
  145. package/dist/{chunk-PGERH3P7.mjs → chunk-4NQFTHN3.mjs} +13 -7
  146. package/dist/{chunk-3N2M3WZL.mjs → chunk-4ZO5PTKF.mjs} +4 -4
  147. package/dist/{chunk-MYZ2EDYU.mjs → chunk-5MYNAAFE.mjs} +13 -17
  148. package/dist/{chunk-E7NEHHXV.mjs → chunk-62BBSSUF.mjs} +3 -3
  149. package/dist/{chunk-ISY26JQJ.mjs → chunk-6CR4S6W2.mjs} +3 -3
  150. package/dist/{chunk-FUVYSVGR.mjs → chunk-6QLBHUEG.mjs} +8 -7
  151. package/dist/chunk-ARONDO7M.mjs +40 -0
  152. package/dist/{chunk-3UYAZ7I4.mjs → chunk-AZV7KNJI.mjs} +3 -3
  153. package/dist/{chunk-HLMPMUK2.mjs → chunk-BTUW5LSG.mjs} +11 -8
  154. package/dist/chunk-BULKGOIZ.mjs +235 -0
  155. package/dist/{chunk-265G6A46.mjs → chunk-CBIZLRYH.mjs} +29 -12
  156. package/dist/chunk-CM2DG4MR.mjs +142 -0
  157. package/dist/{chunk-2I2AYECM.mjs → chunk-DBHSUUKU.mjs} +2 -2
  158. package/dist/{chunk-P64WHW4A.mjs → chunk-DE25XTVQ.mjs} +3 -3
  159. package/dist/{chunk-DI7CBDL6.mjs → chunk-E4EQSCKR.mjs} +5 -5
  160. package/dist/{chunk-357YO24D.mjs → chunk-EHGBHFMH.mjs} +9 -17
  161. package/dist/{chunk-GK4VRMNE.mjs → chunk-EROPDCB5.mjs} +24 -27
  162. package/dist/{chunk-XBAGGKLW.mjs → chunk-ERWJPVX7.mjs} +2 -2
  163. package/dist/{chunk-LRM4AVYY.mjs → chunk-ESQDPO5E.mjs} +7 -7
  164. package/dist/{chunk-EFLFRAHD.mjs → chunk-EW2FIDSM.mjs} +1 -1
  165. package/dist/{chunk-7HSILTC4.mjs → chunk-FTTI6T5Q.mjs} +4 -4
  166. package/dist/{chunk-X26S5EVZ.mjs → chunk-HUSSF6TF.mjs} +1 -1
  167. package/dist/chunk-IFYMBOEN.mjs +14 -0
  168. package/dist/{chunk-S3KJCPEJ.mjs → chunk-IGU223UM.mjs} +80 -4
  169. package/dist/chunk-IJCMPVW5.mjs +121 -0
  170. package/dist/{chunk-I4V5XZPS.mjs → chunk-ITG4JQM3.mjs} +4 -4
  171. package/dist/{chunk-F4V6XLP4.mjs → chunk-K3QX2M26.mjs} +11 -8
  172. package/dist/{chunk-V6NFJXKO.mjs → chunk-K7TKID3V.mjs} +8 -7
  173. package/dist/{chunk-ZHMSAYLT.mjs → chunk-KAGADD2O.mjs} +4 -4
  174. package/dist/{chunk-3GEYJ7I5.mjs → chunk-KC5QDYGZ.mjs} +4 -4
  175. package/dist/{chunk-HJ46DTJE.mjs → chunk-KPTY7UYQ.mjs} +1 -1
  176. package/dist/{chunk-EMUWGDWC.mjs → chunk-KSSVIFYR.mjs} +11 -12
  177. package/dist/chunk-L3YKPTJQ.mjs +119 -0
  178. package/dist/chunk-M53LC4Q7.mjs +35 -0
  179. package/dist/{chunk-NXI4YDZ2.mjs → chunk-MP7GLMIR.mjs} +17 -25
  180. package/dist/chunk-MZ6WRTD2.mjs +40 -0
  181. package/dist/chunk-NGEN2EES.mjs +581 -0
  182. package/dist/{chunk-JULSIZDM.mjs → chunk-OBV72JD4.mjs} +1 -1
  183. package/dist/{chunk-2A2LEFZG.mjs → chunk-PGQ6FMXS.mjs} +6 -5
  184. package/dist/{chunk-BQZE3HAW.mjs → chunk-PI6RULJX.mjs} +1 -1
  185. package/dist/{chunk-FA2KMTH5.mjs → chunk-RA6SAAFE.mjs} +9 -8
  186. package/dist/{chunk-FVTVCJAH.mjs → chunk-RRKM4MKB.mjs} +7 -7
  187. package/dist/{chunk-AKM4EPOT.mjs → chunk-S2VGME7X.mjs} +1 -1
  188. package/dist/{chunk-OULVKTWL.mjs → chunk-S44XWTTC.mjs} +35 -25
  189. package/dist/{chunk-QSFV2P7O.mjs → chunk-SZEKQAOY.mjs} +1 -1
  190. package/dist/{chunk-N4ZPVCJH.mjs → chunk-TETMEKZE.mjs} +9 -9
  191. package/dist/{chunk-2CBQKU7H.mjs → chunk-TMH263OK.mjs} +5 -4
  192. package/dist/{chunk-D3Y2T42P.mjs → chunk-U6DEBYU5.mjs} +10 -9
  193. package/dist/{chunk-4WFMPFZB.mjs → chunk-UOKFSFNJ.mjs} +2 -2
  194. package/dist/{chunk-WOEWGSTU.mjs → chunk-URIH43IJ.mjs} +13 -21
  195. package/dist/{chunk-JCZQOY4O.mjs → chunk-V2ZB2XNS.mjs} +16 -10
  196. package/dist/{chunk-P73V2EKS.mjs → chunk-WIPEDNSD.mjs} +7 -7
  197. package/dist/{chunk-BOVUP27T.mjs → chunk-XCIG6HT2.mjs} +6 -5
  198. package/dist/chunk-Y6YS33GM.mjs +131 -0
  199. package/dist/{chunk-5OLNXP3S.mjs → chunk-ZKDKKQCE.mjs} +29 -7
  200. package/dist/{chunk-DF6DU42P.mjs → chunk-ZTPYUU5C.mjs} +5 -5
  201. package/dist/{index-wt-orHUi.d.ts → index-CY34hxPN.d.mts} +1 -0
  202. package/dist/{index-wt-orHUi.d.mts → index-CY34hxPN.d.ts} +1 -0
  203. package/dist/index.d.mts +15 -74
  204. package/dist/index.d.ts +15 -74
  205. package/dist/index.js +1055 -1562
  206. package/dist/index.mjs +81 -84
  207. package/package.json +8 -10
  208. package/src/components/Accordion/Accordion.tsx +32 -9
  209. package/src/components/AlertBanner/AlertBanner.tsx +7 -6
  210. package/src/components/AppHeader/AppHeader.tsx +1 -1
  211. package/src/components/Avatar/Avatar.tsx +92 -1
  212. package/src/components/Avatar/index.ts +2 -2
  213. package/src/components/Badge/Badge.tsx +2 -2
  214. package/src/components/Button/Button.tsx +64 -57
  215. package/src/components/Card/Card.tsx +1 -0
  216. package/src/components/CategoryStrip/CategoryStrip.tsx +36 -49
  217. package/src/components/Chip/Chip.tsx +5 -4
  218. package/src/components/ConfirmDialog/ConfirmDialog.tsx +13 -6
  219. package/src/components/DetailRow/DetailRow.tsx +3 -3
  220. package/src/components/EmptyState/EmptyState.tsx +2 -2
  221. package/src/components/ErrorBoundary/ErrorBoundary.tsx +6 -6
  222. package/src/components/HolographicCard/HolographicCard.tsx +14 -95
  223. package/src/components/IconButton/IconButton.tsx +2 -2
  224. package/src/components/IconPicker/IconPicker.tsx +13 -12
  225. package/src/components/ImageUpload/ImageUpload.tsx +24 -28
  226. package/src/components/ImageViewer/ImageViewer.tsx +3 -3
  227. package/src/components/Input/Input.tsx +11 -5
  228. package/src/components/LabelValue/LabelValue.tsx +2 -2
  229. package/src/components/ListItem/ListItem.tsx +4 -4
  230. package/src/components/MediaCard/MediaCard.tsx +21 -59
  231. package/src/components/MenuItem/MenuItem.tsx +2 -2
  232. package/src/components/MonthPicker/MonthPicker.tsx +2 -2
  233. package/src/components/NumberStepper/NumberStepper.tsx +6 -6
  234. package/src/components/PagerDots/PagerDots.tsx +38 -28
  235. package/src/components/PricingCard/PricingCard.tsx +6 -6
  236. package/src/components/RadioGroup/RadioGroup.tsx +18 -31
  237. package/src/components/Select/Select.tsx +32 -39
  238. package/src/components/SelectableCard/SelectableCard.tsx +302 -0
  239. package/src/components/SelectableCard/index.ts +1 -0
  240. package/src/components/SelectableGrid/SelectableGrid.tsx +38 -72
  241. package/src/components/Sheet/Sheet.tsx +11 -4
  242. package/src/components/SheetSelect/SheetSelect.tsx +3 -3
  243. package/src/components/Skeleton/Skeleton.tsx +6 -3
  244. package/src/components/Spinner/Spinner.tsx +2 -2
  245. package/src/components/Stats/Stats.tsx +36 -8
  246. package/src/components/Switch/Switch.tsx +9 -6
  247. package/src/components/TabBar/TabBar.tsx +9 -8
  248. package/src/components/Text/Text.tsx +12 -1
  249. package/src/components/Textarea/Textarea.tsx +18 -32
  250. package/src/components/Toggle/Toggle.tsx +3 -3
  251. package/src/hooks/useConfirmDialog.ts +31 -42
  252. package/src/index.ts +4 -4
  253. package/src/theme/ThemeProvider.tsx +1 -4
  254. package/src/theme/colorUtils.ts +1 -72
  255. package/src/theme/colors.ts +47 -1
  256. package/src/theme/types.ts +6 -3
  257. package/src/utils/animations.ts +0 -47
  258. package/src/utils/curatedIcons.ts +93 -801
  259. package/src/utils/haptics.ts +13 -208
  260. package/src/utils/icons.ts +27 -91
  261. package/src/utils/pressable.ts +10 -61
  262. package/dist/VirtualList.d.mts +0 -19
  263. package/dist/VirtualList.d.ts +0 -19
  264. package/dist/VirtualList.js +0 -38
  265. package/dist/VirtualList.mjs +0 -2
  266. package/dist/chunk-3DKJ2GIC.mjs +0 -30
  267. package/dist/chunk-AQEVCEXV.mjs +0 -164
  268. package/dist/chunk-DOGIPOF5.mjs +0 -131
  269. package/dist/chunk-DVK4G2GT.mjs +0 -59
  270. package/dist/chunk-EJ7ZPXOH.mjs +0 -163
  271. package/dist/chunk-J6Q2YJEV.mjs +0 -134
  272. package/dist/chunk-JNVAIDLK.mjs +0 -136
  273. package/dist/chunk-KA7LTET3.mjs +0 -71
  274. package/dist/chunk-KHYX4IOM.mjs +0 -1114
  275. package/dist/chunk-NC5ZTR2Y.mjs +0 -32
  276. package/dist/chunk-YNROWHQJ.mjs +0 -46
  277. package/src/components/VirtualList/VirtualList.tsx +0 -60
  278. package/src/components/VirtualList/index.ts +0 -1
  279. package/src/utils/fontGuard.ts +0 -35
  280. package/src/utils/hover.ts +0 -25
  281. package/src/utils/useColorTransition.ts +0 -40
  282. 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
  }