@genarou/blazir-icons 1.3.5 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/LICENSE +34 -33
  2. package/NOTICE +14 -0
  3. package/README.md +153 -213
  4. package/dist/effects.js +16 -29
  5. package/dist/icons/Ai.svelte +2 -2
  6. package/dist/icons/Alternate.svelte +2 -2
  7. package/dist/icons/AnimatedArrowLeft.svelte +1 -1
  8. package/dist/icons/ArrowDown.svelte +1 -1
  9. package/dist/icons/ArrowLeft.svelte +1 -1
  10. package/dist/icons/Attachment.svelte +1 -1
  11. package/dist/icons/Bag.svelte +1 -1
  12. package/dist/icons/Bank.svelte +1 -1
  13. package/dist/icons/Bell.svelte +1 -1
  14. package/dist/icons/Blaze.svelte +1 -1
  15. package/dist/icons/Box.svelte +1 -1
  16. package/dist/icons/BoxAdd.svelte +1 -1
  17. package/dist/icons/Buy.svelte +1 -1
  18. package/dist/icons/Calendar.svelte +1 -1
  19. package/dist/icons/CalendarEdit.svelte +1 -1
  20. package/dist/icons/CalendarPlus.svelte +1 -1
  21. package/dist/icons/Camera.svelte +1 -1
  22. package/dist/icons/Cart.svelte +1 -1
  23. package/dist/icons/CategoryAdd.svelte +1 -1
  24. package/dist/icons/CategorySearch.svelte +1 -1
  25. package/dist/icons/Chart.svelte +1 -1
  26. package/dist/icons/ChartDoc.svelte +1 -1
  27. package/dist/icons/Check.svelte +1 -1
  28. package/dist/icons/CheckList.svelte +2 -2
  29. package/dist/icons/CheckO.svelte +1 -1
  30. package/dist/icons/CircleCheck.svelte +2 -2
  31. package/dist/icons/CircleExclamation.svelte +2 -2
  32. package/dist/icons/CircleExclamationOutlined.svelte +2 -2
  33. package/dist/icons/CircleInfo.svelte +2 -2
  34. package/dist/icons/CircleInfoOutlined.svelte +2 -2
  35. package/dist/icons/CircleQuestion.svelte +1 -1
  36. package/dist/icons/CircleQuestionOutlined.svelte +2 -2
  37. package/dist/icons/Close.svelte +2 -2
  38. package/dist/icons/CloudCheck.svelte +1 -1
  39. package/dist/icons/CloudUpload.svelte +1 -1
  40. package/dist/icons/Code.svelte +1 -1
  41. package/dist/icons/Colors.svelte +1 -1
  42. package/dist/icons/Contact.svelte +1 -1
  43. package/dist/icons/Csv.svelte +1 -1
  44. package/dist/icons/Dashboard.svelte +1 -1
  45. package/dist/icons/Db.svelte +1 -1
  46. package/dist/icons/DoughnutChart.svelte +1 -1
  47. package/dist/icons/DownloadAnimated.svelte +1 -1
  48. package/dist/icons/Earth.svelte +1 -1
  49. package/dist/icons/Edit.svelte +2 -2
  50. package/dist/icons/EditOutline.svelte +2 -2
  51. package/dist/icons/EmailAnimated.svelte +3 -3
  52. package/dist/icons/Error.svelte +1 -1
  53. package/dist/icons/ErrorO.svelte +2 -2
  54. package/dist/icons/Excel.svelte +1 -1
  55. package/dist/icons/ExcelAnimated.svelte +3 -3
  56. package/dist/icons/Exchange.svelte +1 -1
  57. package/dist/icons/ExternalLink.svelte +1 -1
  58. package/dist/icons/Eye.svelte +1 -1
  59. package/dist/icons/EyeOff.svelte +2 -2
  60. package/dist/icons/Favorites.svelte +1 -1
  61. package/dist/icons/FileUploadAnimated.svelte +2 -2
  62. package/dist/icons/Filter.svelte +1 -1
  63. package/dist/icons/Fingerprint.svelte +1 -1
  64. package/dist/icons/FormatListGroup.svelte +1 -1
  65. package/dist/icons/Globe.svelte +1 -1
  66. package/dist/icons/Grid.svelte +1 -1
  67. package/dist/icons/GripVertical.svelte +1 -1
  68. package/dist/icons/Group.svelte +3 -3
  69. package/dist/icons/HardDrive.svelte +1 -1
  70. package/dist/icons/Heart.svelte +1 -1
  71. package/dist/icons/Height.svelte +1 -1
  72. package/dist/icons/Historic.svelte +1 -1
  73. package/dist/icons/Home.svelte +1 -1
  74. package/dist/icons/Image.svelte +1 -1
  75. package/dist/icons/ImageAnimated.svelte +2 -2
  76. package/dist/icons/Layers.svelte +1 -1
  77. package/dist/icons/Link.svelte +1 -1
  78. package/dist/icons/ListDots.svelte +1 -1
  79. package/dist/icons/Location.svelte +1 -1
  80. package/dist/icons/LocationAnimated.svelte +1 -1
  81. package/dist/icons/Lock.svelte +1 -1
  82. package/dist/icons/LockOpen.svelte +1 -1
  83. package/dist/icons/Logout.svelte +1 -1
  84. package/dist/icons/Lose.svelte +1 -1
  85. package/dist/icons/MagnifiyingGlass.svelte +1 -1
  86. package/dist/icons/Maximize.svelte +1 -1
  87. package/dist/icons/MicOff.svelte +1 -1
  88. package/dist/icons/Microphone.svelte +1 -1
  89. package/dist/icons/Minimize.svelte +1 -1
  90. package/dist/icons/Money.svelte +1 -1
  91. package/dist/icons/Moon.svelte +1 -1
  92. package/dist/icons/More.svelte +1 -1
  93. package/dist/icons/Notes.svelte +1 -1
  94. package/dist/icons/ObjectGroup.svelte +1 -12
  95. package/dist/icons/Pay.svelte +1 -1
  96. package/dist/icons/Pdf.svelte +1 -1
  97. package/dist/icons/Percentage.svelte +1 -1
  98. package/dist/icons/Play.svelte +1 -1
  99. package/dist/icons/Plus.svelte +1 -1
  100. package/dist/icons/PointSale.svelte +2 -42
  101. package/dist/icons/Power.svelte +1 -1
  102. package/dist/icons/Product.svelte +1 -1
  103. package/dist/icons/Profit.svelte +2 -2
  104. package/dist/icons/Project.svelte +1 -1
  105. package/dist/icons/Redo.svelte +1 -1
  106. package/dist/icons/RegularSpinner.svelte +2 -2
  107. package/dist/icons/RightArrow.svelte +1 -1
  108. package/dist/icons/Rocket.svelte +1 -1
  109. package/dist/icons/SafeSolid.svelte +2 -2
  110. package/dist/icons/Security.svelte +2 -2
  111. package/dist/icons/Send.svelte +1 -1
  112. package/dist/icons/Server.svelte +1 -1
  113. package/dist/icons/Settings.svelte +1 -1
  114. package/dist/icons/Share.svelte +1 -1
  115. package/dist/icons/Shield.svelte +2 -2
  116. package/dist/icons/Sliders.svelte +1 -1
  117. package/dist/icons/Sun.svelte +1 -1
  118. package/dist/icons/Supervisor.svelte +1 -1
  119. package/dist/icons/Swap.svelte +1 -1
  120. package/dist/icons/SyncPhoto.svelte +1 -1
  121. package/dist/icons/Table.svelte +1 -3
  122. package/dist/icons/Tags.svelte +1 -1
  123. package/dist/icons/Team.svelte +2 -2
  124. package/dist/icons/Terminal.svelte +1 -1
  125. package/dist/icons/Timer.svelte +1 -1
  126. package/dist/icons/Tools.svelte +2 -2
  127. package/dist/icons/Truck.svelte +1 -1
  128. package/dist/icons/TruckReturn.svelte +2 -2
  129. package/dist/icons/Undo.svelte +1 -1
  130. package/dist/icons/UpDownArrow.svelte +1 -1
  131. package/dist/icons/Upload.svelte +1 -1
  132. package/dist/icons/UploadAnimated.svelte +1 -1
  133. package/dist/icons/UploadLoader.svelte +4 -4
  134. package/dist/icons/User.svelte +1 -1
  135. package/dist/icons/UserMinus.svelte +1 -1
  136. package/dist/icons/UserPlus.svelte +1 -1
  137. package/dist/icons/UserShield.svelte +1 -1
  138. package/dist/icons/UserTie.svelte +1 -1
  139. package/dist/icons/Video.svelte +1 -1
  140. package/dist/icons/Volume.svelte +1 -1
  141. package/dist/icons/VolumeOff.svelte +1 -1
  142. package/dist/icons/Wallet.svelte +2 -2
  143. package/dist/icons/Word.svelte +1 -1
  144. package/dist/icons/World.svelte +1 -1
  145. package/dist/icons/Xml.svelte +1 -1
  146. package/dist/icons/Zip.svelte +1 -1
  147. package/dist/icons/components.js +1 -4
  148. package/dist/icons/lazy-registry.js +31 -61
  149. package/dist/icons/registry.js +26 -27
  150. package/dist/icons-api.js +25 -28
  151. package/dist/index.js +7 -24
  152. package/dist/presets.js +4 -5
  153. package/dist/smart-cache.js +17 -82
  154. package/package.json +5 -2
package/dist/icons-api.js CHANGED
@@ -1,8 +1,5 @@
1
- // -------------------------------------------------------------------
2
- // 🎯 Mantener TU nombre original: bzIcons (alias -> icon name del registry)
3
- // -------------------------------------------------------------------
4
1
  export const bzIcons = {
5
- // — Navegación y layout —
2
+
6
3
  Home: "home",
7
4
  Dashboard: "dashboard",
8
5
  DashboardOutline: "dashboardOutline",
@@ -16,7 +13,7 @@ export const bzIcons = {
16
13
  Rocket: "rocket",
17
14
  Sidebar: "sidebar",
18
15
  More: "more",
19
- // — Usuarios y autenticación —
16
+
20
17
  User: "user",
21
18
  UserShield: "userShield",
22
19
  UserTie: "userTie",
@@ -34,7 +31,7 @@ export const bzIcons = {
34
31
  Fingerprint: "fingerprint",
35
32
  Contact: "contact",
36
33
  Security: "security",
37
- // — Comunicación —
34
+
38
35
  Email: "email",
39
36
  EmailAnimated: "emailAnimated",
40
37
  Phone: "phone",
@@ -44,7 +41,7 @@ export const bzIcons = {
44
41
  World: "world",
45
42
  Chat: "chat",
46
43
  Link: "link",
47
- // — Negocio y finanzas —
44
+
48
45
  Building: "building",
49
46
  Handshake: "handshake",
50
47
  Money: "money",
@@ -59,7 +56,7 @@ export const bzIcons = {
59
56
  CreditCard: "creditCard",
60
57
  Receipt: "receipt",
61
58
  Buy: "buy",
62
- // — Gráficas y datos —
59
+
63
60
  Chart: "chart",
64
61
  ChartDocument: "chartDocument",
65
62
  ChartSquare: "chartSquare",
@@ -71,7 +68,7 @@ export const bzIcons = {
71
68
  TrendingDown: "trendingDown",
72
69
  Database: "database",
73
70
  Server: "server",
74
- // — Archivos y documentos —
71
+
75
72
  File: "file",
76
73
  Pdf: "pdf",
77
74
  Excel: "excel",
@@ -101,19 +98,19 @@ export const bzIcons = {
101
98
  HardDrive: "hardDrive",
102
99
  Connect: "connect",
103
100
  Archive: "archive",
104
- // — Calendario y tiempo —
101
+
105
102
  Calendar: "calendar",
106
103
  CalendarPlus: "calendarPlus",
107
104
  CalendarEdit: "calendarEdit",
108
105
  Timer: "timer",
109
- // — Flechas y navegación —
106
+
110
107
  ArrowRight: "arrowRight",
111
108
  ArrowUp: "arrowUp",
112
109
  ArrowUpDown: "arrowUpDown",
113
110
  ArrowLeftAnimated: "arrowLeftAnimated",
114
111
  ChevronDown: "chevronDown",
115
112
  ChevronUpDown: "chevronUpDown",
116
- // — Acciones de archivo —
113
+
117
114
  Download: "download",
118
115
  DownloadAnimated: "downloadAnimated",
119
116
  Upload: "upload",
@@ -121,7 +118,7 @@ export const bzIcons = {
121
118
  UploadProgress: "uploadProgress",
122
119
  FileUploadAnimated: "fileUploadAnimated",
123
120
  Refresh: "refresh",
124
- // — Estados y feedback —
121
+
125
122
  Check: "check",
126
123
  CheckOutline: "checkOutline",
127
124
  CheckList: "checkList",
@@ -144,10 +141,10 @@ export const bzIcons = {
144
141
  Moon: "moon",
145
142
  Sun: "sun",
146
143
  Colors: "colors",
147
- // — Loading y progreso —
144
+
148
145
  SpinnerDots: "spinnerDots",
149
146
  Spinner: "spinner",
150
- // — Comercio y ventas —
147
+
151
148
  Product: "product",
152
149
  Bag: "bag",
153
150
  POS: "pos",
@@ -160,13 +157,13 @@ export const bzIcons = {
160
157
  Scan: "scan",
161
158
  Cart: "cart",
162
159
  Cards: "cards",
163
- // — Logística y transporte —
160
+
164
161
  Truck: "truck",
165
162
  TruckReturn: "truckReturn",
166
163
  Warehouse: "warehouse",
167
164
  Location: "location",
168
165
  LocationAnimated: "locationAnimated",
169
- // — Herramientas y utilidades —
166
+
170
167
  AI: "ai",
171
168
  Edit: "edit",
172
169
  EditOutline: "editOutline",
@@ -176,54 +173,54 @@ export const bzIcons = {
176
173
  Tools: "tools",
177
174
  ObjectGroup: "objectGroup",
178
175
  Project: "project",
179
- // — Media y dispositivos —
176
+
180
177
  Camera: "camera",
181
178
  Desktop: "desktop",
182
179
  Wifi: "wifi",
183
180
  Power: "power",
184
- // — Nube —
181
+
185
182
  CloudAlert: "cloudAlert",
186
183
  CloudCheck: "cloudCheck",
187
184
  CloudDownload: "cloudDownload",
188
- // — Otros —
185
+
189
186
  Blaze: "blaze",
190
187
  Earth: "earth",
191
188
  Globe: "globe",
192
189
  LightHub: "lightHub",
193
190
  Qr: "qr",
194
191
  Sync: "sync",
195
- // — Navegación arrows —
192
+
196
193
  ArrowLeft: "arrowLeft",
197
194
  ArrowDown: "arrowDown",
198
195
  ChevronLeft: "chevronLeft",
199
196
  ChevronRight: "chevronRight",
200
197
  ChevronUp: "chevronUp",
201
- // — Acciones comunes —
198
+
202
199
  ExternalLink: "externalLink",
203
200
  Maximize: "maximize",
204
201
  Minimize: "minimize",
205
202
  Undo: "undo",
206
203
  Redo: "redo",
207
204
  Grip: "grip",
208
- // — Usuarios —
205
+
209
206
  UserPlus: "userPlus",
210
207
  UserMinus: "userMinus",
211
- // — Nube —
208
+
212
209
  CloudUpload: "cloudUpload",
213
- // — Layout —
210
+
214
211
  Grid: "grid",
215
212
  Layers: "layers",
216
213
  Sliders: "sliders",
217
- // — Dev —
214
+
218
215
  Code: "code",
219
216
  Terminal: "terminal",
220
- // — Media —
217
+
221
218
  Video: "video",
222
219
  Microphone: "microphone",
223
220
  MicOff: "micOff",
224
221
  Volume: "volume",
225
222
  VolumeOff: "volumeOff",
226
- // — Comercio —
223
+
227
224
  Percentage: "percentage",
228
225
  Gift: "gift",
229
226
  };
package/dist/index.js CHANGED
@@ -1,36 +1,19 @@
1
- // ✅ CSS de animaciones — único side-effect intencional
2
1
  import "./icon-animation.css";
3
- // ==============================
4
- // 🧩 Componentes principales
5
- // ==============================
2
+
6
3
  export { default as Icon } from "./Icon.svelte";
7
4
  export { default as IconLazy } from "./IconLazy.svelte";
8
5
  export { default as IconBase } from "./IconBase.svelte";
9
6
  export { default as CustomIcon } from "./CustomIcon.svelte";
10
7
  export { default as IconBadge } from "./IconBadge.svelte";
11
- // ==============================
12
- // ⚙️ Efectos declarativos (hover, click, etc.)
13
- // ==============================
8
+
14
9
  export { iconEffects } from "./effects.js";
15
- // ==============================
16
- // 🛡️ Sanitización SVG
17
- // ==============================
10
+
18
11
  export { sanitizeSvg } from "./utils/sanitize.js";
19
- // ==============================
20
- // 🧠 API de descubrimiento de íconos
21
- // ==============================
12
+
22
13
  export { bzIcons, } from "./icons-api.js";
23
- // ==============================
24
- // 🧱 Registry (componente dinámico <Icon name="x" />)
25
- // ==============================
14
+
26
15
  export { iconRegistry, } from "./icons/registry.js";
27
- // ==============================
28
- // 🎯 Iconos directos — tree-shakeable
29
- // Cada export es un re-export transparente: los bundlers eliminan
30
- // los iconos no usados sin ejecutar código del barrel.
31
- // ==============================
16
+
32
17
  export * from "./icons/components.js";
33
- // ==============================
34
- // ⚡ Lazy loading por ícono
35
- // ==============================
18
+
36
19
  export { getLoadedIcon, lazyIconNames, loadIcon, preloadIcons, } from "./icons/lazy-registry.js";
package/dist/presets.js CHANGED
@@ -1,6 +1,5 @@
1
- // Presets que usan tus variables CSS
2
1
  export const iconPresets = {
3
- // Basados en tu sistema de colores
2
+
4
3
  primary: {
5
4
  color: "var(--primary)",
6
5
  hoverColor: "var(--primary-hover)",
@@ -25,12 +24,12 @@ export const iconPresets = {
25
24
  color: "var(--danger-color)",
26
25
  hoverColor: "var(--danger-hover)",
27
26
  },
28
- // 🔁 Alineado al token de iconos
27
+
29
28
  muted: {
30
29
  color: "var(--icon-fg, var(--ui-muted-fg))",
31
30
  hoverColor: "var(--foreground)",
32
31
  },
33
- // Presets contextuales
32
+
34
33
  nav: {
35
34
  size: 24,
36
35
  color: "var(--nav-fg)",
@@ -64,7 +63,7 @@ export const iconPresets = {
64
63
  color: "var(--primary)",
65
64
  },
66
65
  };
67
- // Variantes que mapean a tu sistema de colores
66
+
68
67
  export const iconVariants = {
69
68
  primary: { color: "var(--primary)", hoverColor: "var(--primary-hover)" },
70
69
  secondary: {
@@ -1,11 +1,5 @@
1
- // src/lib/smart-cache.ts
2
- // Cache adaptativo inteligente para blazir-icons
3
- // Diseñado para máxima estabilidad referencial y rendimiento en listas grandes
4
1
  import { iconPresets, iconVariants } from './presets.js';
5
- // ============================================================================
6
- // MICRO-LRU — O(1) get/set con Map de inserción-orden como cola
7
- // Map en V8 mantiene orden de inserción; delete + re-insert = mover al final
8
- // ============================================================================
2
+
9
3
  export class LRU {
10
4
  constructor(max) {
11
5
  this.max = max;
@@ -14,7 +8,7 @@ export class LRU {
14
8
  get(key) {
15
9
  if (!this.map.has(key))
16
10
  return undefined;
17
- // Promover a "más reciente": delete + re-insert
11
+
18
12
  const val = this.map.get(key);
19
13
  this.map.delete(key);
20
14
  this.map.set(key, val);
@@ -25,7 +19,7 @@ export class LRU {
25
19
  this.map.delete(key);
26
20
  }
27
21
  else if (this.map.size >= this.max) {
28
- // Evictar el LRU (primer elemento = menos reciente)
22
+
29
23
  this.map.delete(this.map.keys().next().value);
30
24
  }
31
25
  this.map.set(key, val);
@@ -40,27 +34,11 @@ export class LRU {
40
34
  this.map.clear();
41
35
  }
42
36
  }
43
- // ============================================================================
44
- // CACHE PRESET × VARIANT
45
- //
46
- // Propósito: devolver EXACTAMENTE la misma referencia de objeto para la misma
47
- // combinación (preset, variant). Esto permite que $derived en Icon.svelte NO
48
- // cree nuevos objetos si preset/variant no cambiaron.
49
- //
50
- // Bounds: len(presets) × len(variants) ≈ 12 × 8 = 96 entradas máximo.
51
- // → No necesita evicción. Plain Map, determinista.
52
- // ============================================================================
37
+
53
38
  const _pvCache = new Map();
54
- /**
55
- * Devuelve un objeto FROZEN y ESTABLE para la combinación (preset, variant).
56
- *
57
- * Garantías:
58
- * - Mismos argumentos → EXACTAMENTE la misma referencia (Object.is === true)
59
- * - El objeto es inmutable (Object.freeze)
60
- * - Sin TTL: la validez es estructural (los presets son constantes de módulo)
61
- */
39
+
62
40
  export function getPresetVariantMerge(preset, variant) {
63
- // Usar \x01 como separador para evitar colisiones "ab|c" vs "a|bc"
41
+
64
42
  const key = `${preset ?? '\x00'}\x01${variant ?? '\x00'}`;
65
43
  const hit = _pvCache.get(key);
66
44
  if (hit)
@@ -71,23 +49,12 @@ export function getPresetVariantMerge(preset, variant) {
71
49
  const vp = variant
72
50
  ? (iconVariants[variant] ?? {})
73
51
  : {};
74
- // Orden: variant gana sobre preset (igual que el merge original)
52
+
75
53
  const merged = Object.freeze({ ...pp, ...vp });
76
54
  _pvCache.set(key, merged);
77
55
  return merged;
78
56
  }
79
- // ============================================================================
80
- // DETECCIÓN DE ESTABILIDAD DE PROPS
81
- //
82
- // Props "estables": todos sus valores son primitivos (string, number, boolean)
83
- // Props "inestables": contienen objetos, funciones o arrays
84
- //
85
- // Solo las props estables son candidatas al cache estructural completo.
86
- // ============================================================================
87
- /**
88
- * Props que SIEMPRE son inestables (objetos, funciones, arrays).
89
- * Si aparecen en los props del usuario → no cachear el resultado completo.
90
- */
57
+
91
58
  const UNSTABLE_KEYS = new Set([
92
59
  'actions',
93
60
  'effects',
@@ -95,10 +62,7 @@ const UNSTABLE_KEYS = new Set([
95
62
  'parentHoverContext',
96
63
  'children',
97
64
  ]);
98
- /**
99
- * Props excluidas del cache key (se pasan al hijo pero no afectan
100
- * a la merge de base, o son strings que varían libremente).
101
- */
65
+
102
66
  const SKIP_IN_KEY = new Set([
103
67
  'style',
104
68
  'class',
@@ -108,16 +72,13 @@ const SKIP_IN_KEY = new Set([
108
72
  'attrs',
109
73
  'parentHoverContext',
110
74
  'children',
111
- // preset/variant se resuelven por separado (ya están en baseProps)
75
+
112
76
  'preset',
113
77
  'variant',
114
- // lazy es meta-prop de Icon.svelte, no llega al hijo
78
+
115
79
  'lazy',
116
80
  ]);
117
- /**
118
- * Retorna true si todos los valores de props son primitivos seguros para cache.
119
- * Complejidad: O(n) donde n = número de props.
120
- */
81
+
121
82
  export function arePropsStable(props) {
122
83
  for (const k in props) {
123
84
  if (UNSTABLE_KEYS.has(k))
@@ -130,22 +91,10 @@ export function arePropsStable(props) {
130
91
  }
131
92
  return true;
132
93
  }
133
- // ============================================================================
134
- // CLAVE ESTRUCTURAL
135
- //
136
- // Clave determinista derivada de las props primitivas (excluye las inestables
137
- // y las meta-props). Las claves se ordenan alfabéticamente para asegurar
138
- // que dos objetos con las mismas props en distinto orden generen la misma clave.
139
- // ============================================================================
140
- /**
141
- * Construye una clave estructural para el cache completo de props.
142
- * Solo incluye props primitivas y estables.
143
- *
144
- * ⚠️ Solo llamar cuando arePropsStable() === true.
145
- */
94
+
146
95
  export function buildStructuralKey(props) {
147
96
  const parts = [];
148
- // Ordenar para determinismo (orden de props puede variar)
97
+
149
98
  const keys = Object.keys(props).sort();
150
99
  for (const k of keys) {
151
100
  if (SKIP_IN_KEY.has(k))
@@ -153,21 +102,12 @@ export function buildStructuralKey(props) {
153
102
  const v = props[k];
154
103
  if (v === undefined)
155
104
  continue;
156
- // Separador: \x02 es poco probable en valores reales
105
+
157
106
  parts.push(`${k}\x02${v}`);
158
107
  }
159
108
  return parts.join('\x03');
160
109
  }
161
- // ============================================================================
162
- // CACHE COMPLETO DE MERGED PROPS (LRU, solo props estables)
163
- //
164
- // Scope: global (compartido entre instancias del mismo componente).
165
- // Esto es correcto porque la función de merge es pura cuando los inputs
166
- // son solo primitivos.
167
- //
168
- // Tamaño: 128 entradas. Para listas con M iconos distintos: hasta 128 configs
169
- // únicas se cachean. Más allá, el LRU evicta las menos usadas.
170
- // ============================================================================
110
+
171
111
  const _mergedPropsCache = new LRU(128);
172
112
  export function getCachedMergedProps(key) {
173
113
  return _mergedPropsCache.get(key);
@@ -175,12 +115,7 @@ export function getCachedMergedProps(key) {
175
115
  export function setCachedMergedProps(key, props) {
176
116
  _mergedPropsCache.set(key, props);
177
117
  }
178
- // ============================================================================
179
- // ESTABILIDAD REFERENCIAL PARA SIZE
180
- //
181
- // El tamaño de la caja se deriva de (p.size ?? preset.size ?? variant.size).
182
- // Cacheamos el string resultado para evitar crear nuevos strings en cada render.
183
- // ============================================================================
118
+
184
119
  const _sizeStringCache = new Map();
185
120
  export function toSizePx(s) {
186
121
  const hit = _sizeStringCache.get(s);
package/package.json CHANGED
@@ -10,6 +10,7 @@
10
10
  "@types/node": "^25.5.0",
11
11
  "svelte": "^5.38.6",
12
12
  "svelte-check": "^4.3.3",
13
+ "svgo": "^4.0.1",
13
14
  "typescript": "^5.9.2",
14
15
  "unplugin": "^3.0.0",
15
16
  "vite": "^5.4.19"
@@ -38,7 +39,8 @@
38
39
  "files": [
39
40
  "dist/**/*",
40
41
  "README.md",
41
- "LICENSE"
42
+ "LICENSE",
43
+ "NOTICE"
42
44
  ],
43
45
  "homepage": "https://github.com/GenaroUG/blazir-icons#readme",
44
46
  "keywords": [
@@ -69,6 +71,7 @@
69
71
  "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
70
72
  "clean": "rm -rf dist",
71
73
  "dev": "vite",
74
+ "postbuild": "node scripts/optimize-dist.mjs",
72
75
  "prebuild": "npm run clean",
73
76
  "prepublishOnly": "npm run build",
74
77
  "preview": "vite preview",
@@ -80,5 +83,5 @@
80
83
  "svelte": "./dist/index.js",
81
84
  "type": "module",
82
85
  "types": "./dist/index.d.ts",
83
- "version": "1.3.5"
86
+ "version": "1.4.0"
84
87
  }