@genarou/blazir-icons 1.2.16 → 1.3.2

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 (81) hide show
  1. package/LICENSE +121 -0
  2. package/README.md +1206 -0
  3. package/dist/CustomIcon.svelte +30 -0
  4. package/dist/CustomIcon.svelte.d.ts +14 -0
  5. package/dist/Icon.svelte +282 -102
  6. package/dist/Icon.svelte.d.ts +12 -5
  7. package/dist/IconBadge.svelte +75 -0
  8. package/dist/IconBadge.svelte.d.ts +16 -0
  9. package/dist/IconBase.svelte +89 -57
  10. package/dist/effects.js +1 -3
  11. package/dist/icons/Camera.svelte +19 -0
  12. package/dist/icons/Camera.svelte.d.ts +4 -0
  13. package/dist/icons/Cards.svelte +19 -0
  14. package/dist/icons/Cards.svelte.d.ts +4 -0
  15. package/dist/icons/CloudAlert.svelte +19 -0
  16. package/dist/icons/CloudAlert.svelte.d.ts +4 -0
  17. package/dist/icons/CloudCheck.svelte +19 -0
  18. package/dist/icons/CloudCheck.svelte.d.ts +4 -0
  19. package/dist/icons/CloudDownload.svelte +19 -0
  20. package/dist/icons/CloudDownload.svelte.d.ts +4 -0
  21. package/dist/icons/Colors.svelte +13 -0
  22. package/dist/icons/Colors.svelte.d.ts +4 -0
  23. package/dist/icons/CreditCard.svelte +19 -0
  24. package/dist/icons/CreditCard.svelte.d.ts +4 -0
  25. package/dist/icons/Desktop.svelte +19 -0
  26. package/dist/icons/Desktop.svelte.d.ts +4 -0
  27. package/dist/icons/DoughnutChart.svelte +19 -0
  28. package/dist/icons/DoughnutChart.svelte.d.ts +4 -0
  29. package/dist/icons/Earth.svelte +19 -0
  30. package/dist/icons/Earth.svelte.d.ts +4 -0
  31. package/dist/icons/Globe.svelte +19 -0
  32. package/dist/icons/Globe.svelte.d.ts +4 -0
  33. package/dist/icons/LightHub.svelte +19 -0
  34. package/dist/icons/LightHub.svelte.d.ts +4 -0
  35. package/dist/icons/Link.svelte +19 -0
  36. package/dist/icons/Link.svelte.d.ts +4 -0
  37. package/dist/icons/More.svelte +13 -0
  38. package/dist/icons/More.svelte.d.ts +4 -0
  39. package/dist/icons/Power.svelte +19 -0
  40. package/dist/icons/Power.svelte.d.ts +4 -0
  41. package/dist/icons/Receipt.svelte +19 -0
  42. package/dist/icons/Receipt.svelte.d.ts +4 -0
  43. package/dist/icons/SharedFolder.svelte +13 -0
  44. package/dist/icons/SharedFolder.svelte.d.ts +4 -0
  45. package/dist/icons/Sidebar.svelte +13 -0
  46. package/dist/icons/Sidebar.svelte.d.ts +4 -0
  47. package/dist/icons/Sync.svelte +19 -0
  48. package/dist/icons/Sync.svelte.d.ts +4 -0
  49. package/dist/icons/Tags.svelte +13 -0
  50. package/dist/icons/Tags.svelte.d.ts +4 -0
  51. package/dist/icons/Tools.svelte +20 -0
  52. package/dist/icons/Tools.svelte.d.ts +4 -0
  53. package/dist/icons/Upload.svelte +12 -57
  54. package/dist/icons/Wifi.svelte +19 -0
  55. package/dist/icons/Wifi.svelte.d.ts +4 -0
  56. package/dist/icons/lazy-registry.d.ts +21 -0
  57. package/dist/icons/lazy-registry.js +251 -0
  58. package/dist/icons/registry.d.ts +146 -129
  59. package/dist/icons/registry.js +184 -132
  60. package/dist/icons-api.d.ts +67 -257
  61. package/dist/icons-api.js +84 -453
  62. package/dist/index.d.ts +5 -5
  63. package/dist/index.js +14 -11
  64. package/dist/plugin/index.d.ts +46 -0
  65. package/dist/plugin/index.js +327 -0
  66. package/dist/smart-cache.d.ts +35 -0
  67. package/dist/smart-cache.js +192 -0
  68. package/dist/types.d.ts +19 -2
  69. package/dist/utils/sanitize.d.ts +25 -0
  70. package/dist/utils/sanitize.js +109 -0
  71. package/package.json +23 -13
  72. package/dist/icons/Aws.svelte +0 -19
  73. package/dist/icons/Aws.svelte.d.ts +0 -4
  74. package/dist/icons/Facebook.svelte +0 -18
  75. package/dist/icons/Facebook.svelte.d.ts +0 -4
  76. package/dist/icons/Golang.svelte +0 -17
  77. package/dist/icons/Golang.svelte.d.ts +0 -4
  78. package/dist/icons/Google.svelte +0 -18
  79. package/dist/icons/Google.svelte.d.ts +0 -4
  80. package/dist/icons/Paypal.svelte +0 -21
  81. package/dist/icons/Paypal.svelte.d.ts +0 -4
@@ -0,0 +1,16 @@
1
+ import type { DynamicIconProps } from "./types";
2
+ interface BadgeProps extends DynamicIconProps {
3
+ /** true = punto rojo | number = conteo | string = texto */
4
+ badge?: boolean | number | string;
5
+ /** Color de fondo del badge. Default: rojo */
6
+ badgeColor?: string;
7
+ /** Color del texto del badge. Default: blanco */
8
+ badgeTextColor?: string;
9
+ /** Tamaño del badge en px. Default: 8 (dot) o 16 (con texto) */
10
+ badgeSize?: number;
11
+ /** Posición del badge. Default: top-right */
12
+ badgePosition?: "top-right" | "top-left" | "bottom-right" | "bottom-left";
13
+ }
14
+ declare const IconBadge: import("svelte").Component<BadgeProps, {}, "">;
15
+ type IconBadge = ReturnType<typeof IconBadge>;
16
+ export default IconBadge;
@@ -10,77 +10,102 @@
10
10
  } from "./utils/defaults.js";
11
11
 
12
12
  // Constantes
13
- const DEFAULT_MS = 180;
14
- const DEFAULT_EASING = "cubic-bezier(.2,.8,.2,1)";
13
+ const DEFAULT_MS = 250;
14
+ const DEFAULT_EASING = "ease";
15
15
  const DEFAULT_ICON_COLOR = "var(--icon-fg, var(--ui-muted-fg, currentColor))";
16
16
 
17
17
  const MS_REGEX = /ms$/;
18
18
  const S_REGEX = /s$/;
19
19
 
20
+ // Presets semánticos de velocidad hover
21
+ const HOVER_SPEED_MAP: Record<string, number> = {
22
+ instant: 0,
23
+ fast: 120,
24
+ normal: 250,
25
+ slow: 400,
26
+ sluggish: 600,
27
+ };
28
+
20
29
  function normalizeMs(v?: number | string): number {
21
30
  if (v == null) return DEFAULT_MS;
22
31
  if (typeof v === "number") return v;
23
32
  const s = String(v).trim();
33
+ if (s in HOVER_SPEED_MAP) return HOVER_SPEED_MAP[s];
24
34
  if (MS_REGEX.test(s)) return parseFloat(s);
25
35
  if (S_REGEX.test(s)) return parseFloat(s) * 1000;
26
36
  const n = parseFloat(s);
27
37
  return Number.isFinite(n) ? n : DEFAULT_MS;
28
38
  }
29
39
 
30
- let uidCounter = 0;
31
- function uid(): string {
32
- return `bz-${Date.now().toString(36)}-${(uidCounter++).toString(36)}`;
33
- }
40
+ // UID por instancia — generado UNA SOLA VEZ por componente, nunca en $derived.
41
+ // Antes se generaba dentro de $derived, lo que causaba un UID nuevo cada vez
42
+ // que props.title cambiaba, produciendo IDs inconsistentes en aria-labelledby.
43
+ let _uidCounter = 0;
44
+ const _instanceUid = `bz-${Date.now().toString(36)}-${(_uidCounter++).toString(36)}`;
34
45
 
35
46
  // Props
36
47
  const props: IconProps & { mode?: IconMode } = $props();
37
48
 
38
49
  // Hover (nativo + heredado)
39
50
  let internalHovered = $state(false);
51
+ let internalPressed = $state(false);
40
52
  const isHovered = $derived(
41
- internalHovered || (props.parentHoverContext?.hovered ?? false)
53
+ !props.disabled &&
54
+ !props.loading &&
55
+ (internalHovered || (props.parentHoverContext?.hovered ?? false))
42
56
  );
57
+ const isPressed = $derived(!props.disabled && internalPressed);
43
58
 
44
- // Color
59
+ // Color — prioridad: activeColor (pressed) > hoverColor (hover) > color > default
45
60
  const effectiveColor = $derived(
46
- (isHovered && props.hoverColor ? props.hoverColor : props.color) ??
47
- DEFAULT_ICON_COLOR
61
+ (isPressed && props.activeColor
62
+ ? props.activeColor
63
+ : isHovered && props.hoverColor
64
+ ? props.hoverColor
65
+ : props.color) ?? DEFAULT_ICON_COLOR
48
66
  );
49
67
 
50
68
  // Mode
51
69
  const mode = $derived(props.mode ?? "solid");
52
70
 
53
- // Derivados base
71
+ // Derivados base — usando $derived.by donde el cuerpo es complejo
54
72
  const klass = $derived(normalizeClass(props));
55
73
  const common = $derived(commonDefaults(props));
56
- const propsWithEffectiveColor = $derived({ ...props, color: effectiveColor });
74
+
75
+ // propsWithEffectiveColor: evitar reconstruir si color no cambió.
76
+ // $derived.by garantiza que solo re-ejecuta cuando sus deps cambian.
77
+ const propsWithEffectiveColor = $derived.by(() => ({
78
+ ...props,
79
+ color: effectiveColor,
80
+ }));
81
+
57
82
  const visual = $derived(modeDefaults(mode, propsWithEffectiveColor));
58
83
  const timingStyle = $derived(getAnimationStyle(props));
59
84
 
60
- // Transiciones
85
+ // Transiciones — hoverSpeed > transitionMs > default
61
86
  const hoverMs = $derived(
62
- normalizeMs(props.transitionMs ?? props.animationDuration)
63
- );
64
- const hoverEase = $derived(
65
- props.transitionEasing ?? props.animationEasing ?? DEFAULT_EASING
87
+ normalizeMs(props.transitionMs ?? props.hoverSpeed)
66
88
  );
89
+ const hoverEase = $derived(props.transitionEasing ?? DEFAULT_EASING);
67
90
 
68
- // Animaciones continuas
69
- const spinDuration = $derived(() => {
91
+ // Animaciones continuas — $derived.by idiomático (Svelte 5)
92
+ const spinDuration = $derived.by(() => {
93
+ if (props.loading) return "0.75s"; // loading siempre gira
70
94
  if (!props.spin) return null;
71
95
  if (props.spin === true) return "1s";
72
96
  return typeof props.spin === "number"
73
97
  ? `${props.spin}ms`
74
98
  : String(props.spin);
75
99
  });
100
+
76
101
  const wantsPulse = $derived(!!props.pulse);
77
102
  const wantsBounce = $derived(!!props.bounce);
78
103
  const wantsWiggle = $derived(!!props.wiggle);
79
104
  const wantsHeartbeat = $derived(!!props.heartbeat);
80
105
  const wantsElastic = $derived(!!props.elastic);
81
106
 
82
- // ===== Chevron state ⇒ grados (se animará por CSS) =====
83
- const effectiveChevronState = $derived(() => {
107
+ // ===== Chevron state ⇒ grados =====
108
+ const effectiveChevronState = $derived.by(() => {
84
109
  if (props.chevronState) return props.chevronState;
85
110
  if (props.chevronOpen !== undefined) {
86
111
  return props.chevronOpen ? "open" : "closed";
@@ -88,8 +113,8 @@
88
113
  return undefined;
89
114
  });
90
115
 
91
- const chevronDeg = $derived((): number | null => {
92
- switch (effectiveChevronState()) {
116
+ const chevronDeg = $derived.by((): number | null => {
117
+ switch (effectiveChevronState) {
93
118
  case "open":
94
119
  case "down":
95
120
  return 90;
@@ -107,11 +132,10 @@
107
132
 
108
133
  // Clase final
109
134
  const finalClass = $derived(
110
- `bz-icon ${klass}${effectiveChevronState() ? " bz-icon-chevron" : ""}`.trim()
135
+ `bz-icon ${klass}${effectiveChevronState ? " bz-icon-chevron" : ""}`.trim()
111
136
  );
112
137
 
113
138
  // ===== SVG transform (solo rotate/flip declarativos) =====
114
- // Rot/flip en <g> para no interferir con la transición del <svg>
115
139
  function getViewBoxCenter(vb: string) {
116
140
  const parts = vb.trim().split(/\s+/);
117
141
  const minX = Number(parts[0]);
@@ -120,12 +144,12 @@
120
144
  const h = Number(parts[3]);
121
145
  return { cx: minX + w / 2, cy: minY + h / 2 };
122
146
  }
147
+
123
148
  const center = $derived(getViewBoxCenter(common.viewBox));
124
149
 
125
- const svgTransform = $derived(() => {
150
+ const svgTransform = $derived.by(() => {
126
151
  const cmds: string[] = [];
127
152
 
128
- // Rotate (prop)
129
153
  if (props.rotate != null) {
130
154
  const r =
131
155
  typeof props.rotate === "number"
@@ -134,7 +158,6 @@
134
158
  if (!isNaN(r)) cmds.push(`rotate(${r} ${center.cx} ${center.cy})`);
135
159
  }
136
160
 
137
- // Flip (prop)
138
161
  if (props.flipH || props.flipV) {
139
162
  const sx = props.flipH ? -1 : 1;
140
163
  const sy = props.flipV ? -1 : 1;
@@ -143,48 +166,39 @@
143
166
  );
144
167
  }
145
168
 
146
- // ⛔️ OJO: chevron NO va aquí (aquí no hay transición CSS)
147
169
  return cmds.length ? cmds.join(" ") : "";
148
170
  });
149
171
 
150
- // ===== Style inline del <svg> (incluye transición y chevron por CSS) =====
151
- const style = $derived(() => {
172
+ // ===== Style inline del <svg> =====
173
+ const style = $derived.by(() => {
152
174
  const parts: string[] = [];
153
175
 
154
- // estilo previo del usuario
155
176
  if (props.style) {
156
177
  parts.push(props.style.endsWith(";") ? props.style : `${props.style};`);
157
178
  }
158
179
 
159
- // color
180
+ if (props.disabled) parts.push("opacity:0.4;pointer-events:none;");
160
181
  parts.push(`color:${effectiveColor};`);
161
182
 
162
- // Vars de timing (si las hay)
163
183
  const tstyle = timingStyle;
164
184
  if (tstyle) parts.push(tstyle);
165
185
 
166
- // transición para transform/opacidad/stroke/fill
167
186
  parts.push(
168
187
  `transition:color ${hoverMs}ms ${hoverEase},fill ${hoverMs}ms ${hoverEase},` +
169
188
  `stroke ${hoverMs}ms ${hoverEase},transform ${hoverMs}ms ${hoverEase},opacity ${hoverMs}ms ${hoverEase};`
170
189
  );
171
190
 
172
- // Var CSS para chevron (si hay estado). Usamos rotate(Xdeg)
173
- const deg = chevronDeg();
191
+ const deg = chevronDeg;
174
192
  if (deg != null) {
175
193
  parts.push(`--bz-chevron-rot: rotate(${deg}deg);`);
176
194
  } else {
177
- // mantener consistente
178
195
  parts.push(`--bz-chevron-rot: rotate(0deg);`);
179
196
  }
180
197
 
181
- // Transform del SVG: incluir SIEMPRE la var del chevron al final
182
- // (puedes añadir más términos aquí si usas CSS-only transforms)
183
198
  parts.push(`transform-origin:center;`);
184
199
  parts.push(`transform: var(--bz-chevron-rot);`);
185
200
 
186
- // Animaciones declarativas (spin/pulse/etc) se apilan con transform
187
- const spin = spinDuration();
201
+ const spin = spinDuration;
188
202
  if (
189
203
  spin ||
190
204
  wantsPulse ||
@@ -212,10 +226,10 @@
212
226
  return parts.join(" ");
213
227
  });
214
228
 
215
- // A11y
229
+ // A11y — computedTitleId usa el UID de instancia (estable durante todo el ciclo de vida)
216
230
  const ariaHidden = $derived(props.decorative ? "true" : undefined);
217
231
  const computedTitleId = $derived(
218
- props.title ? (props.titleId ?? `bz-icon-title-${uid()}`) : undefined
232
+ props.title ? (props.titleId ?? `bz-icon-title-${_instanceUid}`) : undefined
219
233
  );
220
234
  const ariaLabel = $derived(
221
235
  props.decorative ? undefined : props.ariaLabel || undefined
@@ -228,7 +242,8 @@
228
242
  const finalSize = $derived(
229
243
  typeof common.size === "number" ? `${common.size}px` : common.size
230
244
  );
231
- const safeAttrs = $derived(() => {
245
+
246
+ const safeAttrs = $derived.by(() => {
232
247
  if (!props.attrs) return {};
233
248
  const { width, height, ...rest } = props.attrs as any;
234
249
  return rest;
@@ -238,9 +253,11 @@
238
253
  let svgRef: SVGSVGElement | null = $state(null);
239
254
  let fxLayer: SVGGElement | null = $state(null);
240
255
 
241
- // Efectos (incluye heartbeatOnHover si viene en attrs/effects)
256
+ // Efectos el $effect solo se re-ejecuta cuando fxLayer o las opciones de
257
+ // efectos cambian. Devuelve la función de cleanup para destroy automático.
242
258
  $effect(() => {
243
259
  if (!fxLayer) return;
260
+
244
261
  const effectsOpts: IconEffectOptions = { ...(props.effects ?? {}) };
245
262
  const a = props.attrs;
246
263
  if (a) {
@@ -255,22 +272,22 @@
255
272
  if (a.hoverScale) effectsOpts.hoverScale = a.hoverScale;
256
273
  if (a.pressScale) effectsOpts.pressScale = a.pressScale;
257
274
  }
275
+
276
+ if (props.tooltip) effectsOpts.tooltip = props.tooltip;
258
277
  const controller = iconEffects(fxLayer, effectsOpts);
259
278
  return () => controller.destroy();
260
279
  });
261
280
 
262
- function handleMouseEnter() {
263
- internalHovered = true;
264
- }
265
- function handleMouseLeave() {
266
- internalHovered = false;
267
- }
281
+ function handleMouseEnter() { internalHovered = true; }
282
+ function handleMouseLeave() { internalHovered = false; internalPressed = false; }
283
+ function handleMouseDown() { internalPressed = true; }
284
+ function handleMouseUp() { internalPressed = false; }
268
285
  </script>
269
286
 
270
287
  <svg
271
288
  bind:this={svgRef}
272
289
  xmlns="http://www.w3.org/2000/svg"
273
- {...safeAttrs()}
290
+ {...safeAttrs}
274
291
  width={finalSize}
275
292
  height={finalSize}
276
293
  viewBox={common.viewBox}
@@ -281,7 +298,7 @@
281
298
  aria-label={ariaLabel}
282
299
  aria-labelledby={ariaLabelledby}
283
300
  focusable="false"
284
- style={style()}
301
+ style={style}
285
302
  fill={visual.fill}
286
303
  stroke={visual.stroke}
287
304
  stroke-width={visual.strokeWidth}
@@ -291,10 +308,20 @@
291
308
  data-testid={props.testId}
292
309
  onmouseenter={handleMouseEnter}
293
310
  onmouseleave={handleMouseLeave}
311
+ onmousedown={handleMouseDown}
312
+ onmouseup={handleMouseUp}
294
313
  >
295
- {#if props.title}<title id={computedTitleId}>{props.title}</title>{/if}
296
- <g bind:this={fxLayer} transform={svgTransform()}>
297
- {@render props.children?.()}
314
+ {#if props.title}
315
+ <title id={computedTitleId}>{props.title}</title>
316
+ {:else if props.tooltip}
317
+ <title>{props.tooltip}</title>
318
+ {/if}
319
+ <g bind:this={fxLayer} transform={svgTransform}>
320
+ {#if props.loading}
321
+ <circle cx="12" cy="12" r="9" fill="none" stroke="currentColor" stroke-width="2.5" stroke-dasharray="42 15" stroke-linecap="round" />
322
+ {:else}
323
+ {@render props.children?.()}
324
+ {/if}
298
325
  </g>
299
326
  </svg>
300
327
 
@@ -321,6 +348,7 @@
321
348
  transform: rotate(360deg);
322
349
  }
323
350
  }
351
+
324
352
  @keyframes bz-icon-bounce {
325
353
  0% {
326
354
  transform: translateY(0);
@@ -332,6 +360,7 @@
332
360
  transform: translateY(0);
333
361
  }
334
362
  }
363
+
335
364
  @keyframes bz-icon-pulse {
336
365
  0%,
337
366
  100% {
@@ -343,6 +372,7 @@
343
372
  opacity: 0.92;
344
373
  }
345
374
  }
375
+
346
376
  @keyframes bz-icon-wiggle {
347
377
  0% {
348
378
  transform: rotate(0deg);
@@ -357,6 +387,7 @@
357
387
  transform: rotate(0deg);
358
388
  }
359
389
  }
390
+
360
391
  @keyframes bz-icon-elastic {
361
392
  0% {
362
393
  transform: scale(1);
@@ -371,6 +402,7 @@
371
402
  transform: scale(1);
372
403
  }
373
404
  }
405
+
374
406
  @keyframes bz-icon-heartbeat {
375
407
  0%,
376
408
  100% {
package/dist/effects.js CHANGED
@@ -62,9 +62,7 @@ export function iconEffects(node, opts = {}) {
62
62
  if (target instanceof SVGSVGElement) {
63
63
  target.style.pointerEvents = "bounding-box";
64
64
  }
65
- // Setup inicial
66
- if (opts.tooltip)
67
- target.setAttribute("title", opts.tooltip);
65
+ // Setup inicial — tooltip lo maneja Icon.svelte via data-bz-tooltip + CSS
68
66
  if (opts.cursor && isHTML)
69
67
  node.style.cursor = opts.cursor;
70
68
  const ms = opts.transitionMs ?? DEFAULTS.transitionMs;
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import IconBase from "../IconBase.svelte";
3
+ import type { IconProps } from "../types";
4
+
5
+ const props: IconProps = $props();
6
+ </script>
7
+
8
+ <IconBase
9
+ {...props}
10
+ mode="solid"
11
+ viewBox="0 0 24 24"
12
+ ariaLabel={props.ariaLabel ?? "Globe grid icon"}
13
+ title={props.title ?? ""}
14
+ >
15
+ <path
16
+ fill="currentColor"
17
+ d="M11.4 9h8q-.675-1.725-2.062-2.963T14.15 4.3zm-2.3 2l4-6.9q-.275-.05-.55-.075T12 4q-1.65 0-3.075.625T6.4 6.3zm-4.85 3H9.7l-4-6.9q-.8 1.025-1.25 2.263T4 12q0 .525.063 1.013T4.25 14m5.6 5.7l2.7-4.7H4.6q.675 1.725 2.063 2.963T9.85 19.7M12 20q1.65 0 3.075-.625T17.6 17.7L14.9 13l-4 6.9q.275.05.538.075T12 20m6.3-3.1q.8-1.025 1.25-2.262T20 12q0-.525-.062-1.012T19.75 10H14.3zM12 22q-2.05 0-3.875-.788t-3.187-2.15t-2.15-3.187T2 12q0-2.075.788-3.887t2.15-3.175t3.187-2.15T12 2q2.075 0 3.888.788t3.174 2.15t2.15 3.175T22 12q0 2.05-.788 3.875t-2.15 3.188t-3.175 2.15T12 22"
18
+ />
19
+ </IconBase>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from "../types";
2
+ declare const Camera: import("svelte").Component<IconProps, {}, "">;
3
+ type Camera = ReturnType<typeof Camera>;
4
+ export default Camera;
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import IconBase from "../IconBase.svelte";
3
+ import type { IconProps } from "../types";
4
+
5
+ const props: IconProps = $props();
6
+ </script>
7
+
8
+ <IconBase
9
+ {...props}
10
+ mode="solid"
11
+ viewBox="0 0 24 24"
12
+ ariaLabel={props.ariaLabel ?? "Article icon"}
13
+ title={props.title ?? ""}
14
+ >
15
+ <path
16
+ fill="currentColor"
17
+ d="M11 9h6q.425 0 .713-.288T18 8t-.288-.712T17 7h-6.025q-.425 0-.7.288T10 8t.288.713T11 9m0 3h3q.425 0 .713-.288T15 11t-.288-.712T14 10h-3.025q-.425 0-.7.288T10 11t.288.713T11 12m-5.55 8.975Q4.625 21.1 4 20.6t-.75-1.325L2.025 10.35q-.125-.8.388-1.45t1.312-.775H4V14q0 1.65 1.175 2.825T8 18h11q-.2.525-.612.888t-1.013.437zM8 16.1q-.825 0-1.412-.587T6 14.1V5q0-.825.588-1.412T8 3h12q.825 0 1.413.588T22 5v9.1q0 .825-.587 1.413T20 16.1z"
18
+ />
19
+ </IconBase>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from "../types";
2
+ declare const Cards: import("svelte").Component<IconProps, {}, "">;
3
+ type Cards = ReturnType<typeof Cards>;
4
+ export default Cards;
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import IconBase from "../IconBase.svelte";
3
+ import type { IconProps } from "../types";
4
+
5
+ const props: IconProps = $props();
6
+ </script>
7
+
8
+ <IconBase
9
+ {...props}
10
+ mode="solid"
11
+ viewBox="0 0 24 24"
12
+ ariaLabel={props.ariaLabel ?? "Cloud warning icon"}
13
+ title={props.title ?? ""}
14
+ >
15
+ <path
16
+ fill="currentColor"
17
+ d="M6.5 20q-2.275 0-3.887-1.575T1 14.575q0-1.95 1.175-3.475T5.25 9.15q.625-2.3 2.5-3.725T12 4q2.925 0 4.963 2.038T19 11q1.725.2 2.863 1.488T23 15.5q0 1.875-1.312 3.188T18.5 20zm6.213-4.288Q13 15.425 13 15t-.288-.712T12 14t-.712.288T11 15t.288.713T12 16t.713-.288m0-3.5Q13 11.926 13 11.5V9q0-.425-.288-.712T12 8t-.712.288T11 9v2.5q0 .425.288.713T12 12.5t.713-.288"
18
+ />
19
+ </IconBase>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from "../types";
2
+ declare const CloudAlert: import("svelte").Component<IconProps, {}, "">;
3
+ type CloudAlert = ReturnType<typeof CloudAlert>;
4
+ export default CloudAlert;
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import IconBase from "../IconBase.svelte";
3
+ import type { IconProps } from "../types";
4
+
5
+ const props: IconProps = $props();
6
+ </script>
7
+
8
+ <IconBase
9
+ {...props}
10
+ mode="solid"
11
+ viewBox="0 0 24 24"
12
+ ariaLabel={props.ariaLabel ?? "Cloud check icon"}
13
+ title={props.title ?? ""}
14
+ >
15
+ <path
16
+ fill="currentColor"
17
+ d="m10.325 14.125l-1.4-1.4q-.3-.3-.7-.3t-.7.3t-.3.713t.3.712L9.65 16.3q.3.3.7.3t.7-.3l4.225-4.225q.3-.3.3-.725t-.3-.725t-.725-.3t-.725.3zM6.5 20q-2.275 0-3.887-1.575T1 14.575q0-1.95 1.175-3.475T5.25 9.15q.625-2.3 2.5-3.725T12 4q2.925 0 4.963 2.038T19 11q1.725.2 2.863 1.488T23 15.5q0 1.875-1.312 3.188T18.5 20z"
18
+ />
19
+ </IconBase>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from "../types";
2
+ declare const CloudCheck: import("svelte").Component<IconProps, {}, "">;
3
+ type CloudCheck = ReturnType<typeof CloudCheck>;
4
+ export default CloudCheck;
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import IconBase from "../IconBase.svelte";
3
+ import type { IconProps } from "../types";
4
+
5
+ const props: IconProps = $props();
6
+ </script>
7
+
8
+ <IconBase
9
+ {...props}
10
+ mode="solid"
11
+ viewBox="0 0 24 24"
12
+ ariaLabel={props.ariaLabel ?? "Cloud download icon"}
13
+ title={props.title ?? ""}
14
+ >
15
+ <path
16
+ fill="currentColor"
17
+ d="M6.5 20q-2.275 0-3.887-1.575T1 14.575q0-1.95 1.175-3.475T5.25 9.15q.575-2.025 2.138-3.4T11 4.075v8.075l-.9-.875Q9.825 11 9.413 11t-.713.3q-.275.275-.275.7t.275.7l2.6 2.6q.3.3.7.3t.7-.3l2.6-2.6q.275-.275.287-.687T15.3 11.3q-.275-.275-.687-.288t-.713.263l-.9.875V4.075q2.575.35 4.288 2.313T19 11q1.725.2 2.863 1.488T23 15.5q0 1.875-1.312 3.188T18.5 20z"
18
+ />
19
+ </IconBase>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from "../types";
2
+ declare const CloudDownload: import("svelte").Component<IconProps, {}, "">;
3
+ type CloudDownload = ReturnType<typeof CloudDownload>;
4
+ export default CloudDownload;
@@ -0,0 +1,13 @@
1
+ <!-- src/lib/icons/Palette.svelte -->
2
+ <script lang="ts">
3
+ import IconBase from "../IconBase.svelte";
4
+ import type { IconProps } from "../types";
5
+ const props: IconProps = $props();
6
+ </script>
7
+
8
+ <IconBase {...props} mode="solid" viewBox="0 0 24 24">
9
+ <path
10
+ fill="currentColor"
11
+ d="M12 22q-2.05 0-3.875-.788t-3.187-2.15t-2.15-3.187T2 12q0-2.075.813-3.9t2.2-3.175T8.25 2.788T12.2 2q2 0 3.775.688t3.113 1.9t2.125 2.875T22 11.05q0 2.875-1.75 4.413T16 17h-1.85q-.225 0-.312.125t-.088.275q0 .3.375.863t.375 1.287q0 1.25-.687 1.85T12 22m-4.425-9.425Q8 12.15 8 11.5t-.425-1.075T6.5 10t-1.075.425T5 11.5t.425 1.075T6.5 13t1.075-.425m3-4Q11 8.15 11 7.5t-.425-1.075T9.5 6t-1.075.425T8 7.5t.425 1.075T9.5 9t1.075-.425m5 0Q16 8.15 16 7.5t-.425-1.075T14.5 6t-1.075.425T13 7.5t.425 1.075T14.5 9t1.075-.425m3 4Q19 12.15 19 11.5t-.425-1.075T17.5 10t-1.075.425T16 11.5t.425 1.075T17.5 13t1.075-.425"
12
+ />
13
+ </IconBase>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from "../types";
2
+ declare const Colors: import("svelte").Component<IconProps, {}, "">;
3
+ type Colors = ReturnType<typeof Colors>;
4
+ export default Colors;
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import IconBase from "../IconBase.svelte";
3
+ import type { IconProps } from "../types";
4
+
5
+ const props: IconProps = $props();
6
+ </script>
7
+
8
+ <IconBase
9
+ {...props}
10
+ mode="solid"
11
+ viewBox="0 0 24 24"
12
+ ariaLabel={props.ariaLabel ?? "Email icon"}
13
+ title={props.title ?? ""}
14
+ >
15
+ <path
16
+ fill="currentColor"
17
+ d="M4 20q-.825 0-1.412-.587T2 18V6q0-.825.588-1.412T4 4h16q.825 0 1.413.588T22 6v12q0 .825-.587 1.413T20 20zm1-3h10L10 7H5zm8-8h6V7h-6z"
18
+ />
19
+ </IconBase>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from "../types";
2
+ declare const CreditCard: import("svelte").Component<IconProps, {}, "">;
3
+ type CreditCard = ReturnType<typeof CreditCard>;
4
+ export default CreditCard;
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import IconBase from "../IconBase.svelte";
3
+ import type { IconProps } from "../types";
4
+
5
+ const props: IconProps = $props();
6
+ </script>
7
+
8
+ <IconBase
9
+ {...props}
10
+ mode="solid"
11
+ viewBox="0 0 24 24"
12
+ ariaLabel={props.ariaLabel ?? "Monitor icon"}
13
+ title={props.title ?? ""}
14
+ >
15
+ <path
16
+ fill="currentColor"
17
+ d="M1 21v-2h22v2zm3-3q-.825 0-1.412-.587T2 16V5q0-.825.588-1.412T4 3h16q.825 0 1.413.588T22 5v11q0 .825-.587 1.413T20 18zm0-2h16V5H4zm0 0V5z"
18
+ />
19
+ </IconBase>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from "../types";
2
+ declare const Desktop: import("svelte").Component<IconProps, {}, "">;
3
+ type Desktop = ReturnType<typeof Desktop>;
4
+ export default Desktop;
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import IconBase from "../IconBase.svelte";
3
+ import type { IconProps } from "../types";
4
+
5
+ const props: IconProps = $props();
6
+ </script>
7
+
8
+ <IconBase
9
+ {...props}
10
+ mode="solid"
11
+ viewBox="0 0 24 24"
12
+ ariaLabel={props.ariaLabel ?? "Signal icon"}
13
+ title={props.title ?? ""}
14
+ >
15
+ <path
16
+ fill="currentColor"
17
+ d="M11.025 21.95q-3.85-.375-6.425-3.225T2.025 12T4.6 5.275t6.425-3.225v3q-2.6.35-4.3 2.325T5.025 12t1.7 4.625t4.3 2.325zm2 0v-3q2.35-.3 3.975-1.95t1.975-4h3q-.35 3.575-2.863 6.088t-6.087 2.862M18.975 11Q18.625 8.65 17 7t-3.975-1.95v-3q3.575.35 6.088 2.863T21.975 11z"
18
+ />
19
+ </IconBase>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from "../types";
2
+ declare const DoughnutChart: import("svelte").Component<IconProps, {}, "">;
3
+ type DoughnutChart = ReturnType<typeof DoughnutChart>;
4
+ export default DoughnutChart;
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import IconBase from "../IconBase.svelte";
3
+ import type { IconProps } from "../types";
4
+
5
+ const props: IconProps = $props();
6
+ </script>
7
+
8
+ <IconBase
9
+ {...props}
10
+ mode="solid"
11
+ viewBox="0 0 24 24"
12
+ ariaLabel={props.ariaLabel ?? "Globe settings icon"}
13
+ title={props.title ?? ""}
14
+ >
15
+ <path
16
+ fill="currentColor"
17
+ d="M12 20q.45 0 .863-.05t.837-.15L12.5 18H9v-1q0-.825.588-1.412T11 15h2v-3h-2q-.425 0-.712-.288T10 11V9h-.45q-.65 0-1.1-.437T8 7.475q0-.225.063-.45T8.25 6.6L9.8 4.325Q7.275 5.05 5.637 7.15T4 12h1v-1q0-.425.288-.712T6 10h2q.425 0 .713.288T9 11v1q0 .425-.288.713T8 13v1q0 .825-.587 1.413T6 16h-.925q1.05 1.8 2.875 2.9T12 20m7.6-5.55q.2-.575.3-1.187T20 12q0-2.8-1.7-4.937T14 4.25V7q.825 0 1.413.588T16 9v2q.475 0 .85.113t.725.462zM12 22q-2.075 0-3.9-.788t-3.175-2.137T2.788 15.9T2 12t.788-3.9t2.137-3.175T8.1 2.788T12 2t3.9.788t3.175 2.137T21.213 8.1T22 12t-.788 3.9t-2.137 3.175t-3.175 2.138T12 22"
18
+ />
19
+ </IconBase>
@@ -0,0 +1,4 @@
1
+ import type { IconProps } from "../types";
2
+ declare const Earth: import("svelte").Component<IconProps, {}, "">;
3
+ type Earth = ReturnType<typeof Earth>;
4
+ export default Earth;
@@ -0,0 +1,19 @@
1
+ <script lang="ts">
2
+ import IconBase from "../IconBase.svelte";
3
+ import type { IconProps } from "../types";
4
+
5
+ const props: IconProps = $props();
6
+ </script>
7
+
8
+ <IconBase
9
+ {...props}
10
+ mode="solid"
11
+ viewBox="0 0 24 24"
12
+ ariaLabel={props.ariaLabel ?? "Radar icon"}
13
+ title={props.title ?? ""}
14
+ >
15
+ <path
16
+ fill="currentColor"
17
+ d="M13 21h5v2H6v-2h5v-1.05a10 10 0 0 1-7.684-4.988l1.737-.992A8 8 0 1 0 15.97 3.053l.993-1.737A10 10 0 0 1 22 10c0 5.185-3.946 9.449-9 9.95zm-1-4a7 7 0 1 1 0-14a7 7 0 0 1 0 14"
18
+ />
19
+ </IconBase>