@c80/ui 2.0.1 → 3.1.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 (33) hide show
  1. package/README.md +14 -4
  2. package/esm2022/index.js +2 -0
  3. package/esm2022/index.js.map +1 -1
  4. package/esm2022/lib/bar-chart/bar-chart.component.js +101 -0
  5. package/esm2022/lib/bar-chart/bar-chart.component.js.map +1 -0
  6. package/esm2022/lib/bar-chart/bar-chart.types.js +1 -0
  7. package/esm2022/lib/bar-chart/bar-chart.types.js.map +1 -0
  8. package/esm2022/lib/bar-chart/index.js +2 -0
  9. package/esm2022/lib/bar-chart/index.js.map +1 -0
  10. package/esm2022/lib/icon/icon.definitions.js +27 -0
  11. package/esm2022/lib/icon/icon.definitions.js.map +1 -1
  12. package/esm2022/lib/input-field/input-field.component.js +16 -14
  13. package/esm2022/lib/input-field/input-field.component.js.map +1 -1
  14. package/esm2022/lib/stat-card/stat-card.component.js +16 -3
  15. package/esm2022/lib/stat-card/stat-card.component.js.map +1 -1
  16. package/esm2022/lib/stat-card/stat-card.types.js.map +1 -1
  17. package/esm2022/lib/status-badge/index.js +2 -0
  18. package/esm2022/lib/status-badge/index.js.map +1 -0
  19. package/esm2022/lib/status-badge/status-badge.component.js +16 -0
  20. package/esm2022/lib/status-badge/status-badge.component.js.map +1 -0
  21. package/esm2022/lib/status-badge/status-badge.types.js +1 -0
  22. package/esm2022/lib/status-badge/status-badge.types.js.map +1 -0
  23. package/index.d.ts +2 -0
  24. package/lib/bar-chart/bar-chart.component.d.ts +40 -0
  25. package/lib/bar-chart/bar-chart.types.d.ts +4 -0
  26. package/lib/bar-chart/index.d.ts +2 -0
  27. package/lib/input-field/input-field.component.d.ts +14 -10
  28. package/lib/stat-card/stat-card.component.d.ts +10 -0
  29. package/lib/stat-card/stat-card.types.d.ts +6 -1
  30. package/lib/status-badge/index.d.ts +2 -0
  31. package/lib/status-badge/status-badge.component.d.ts +11 -0
  32. package/lib/status-badge/status-badge.types.d.ts +1 -0
  33. package/package.json +1 -1
package/README.md CHANGED
@@ -93,15 +93,25 @@ interface ActionItem {
93
93
  ```
94
94
 
95
95
  ### `c80-input-field`
96
- Campo de entrada (`text` | `email` | `password`) que mantiene la estética de `c80-info-list`, pensado para edición inline con consistencia visual. Maneja estados de focus/readonly y eventos de teclado.
96
+ Campo de entrada (`text` | `email` | `password` | `number`) que mantiene la estética de `c80-info-list`, pensado para edición inline con consistencia visual. Maneja estados de focus/readonly y eventos de teclado.
97
+
98
+ **Inputs:**
99
+ - `label`: `string` (etiqueta del campo)
100
+ - `value`: `model<string>` (two-way binding `[(value)]`; el output `valueChange` lo genera el model)
101
+ - `placeholder`: `string`
102
+ - `type`: `'text' | 'email' | 'password' | 'number'` (default `'text'`)
103
+ - `maxLength`: `number | undefined`
104
+ - `readonly`: `boolean` (default `false`)
105
+ - `required`: `boolean` (default `false`)
97
106
 
98
107
  **Outputs:**
99
- - `valueChange`: `EventEmitter<string>` (emite cuando cambia el valor)
100
- - `enterPressed`: `EventEmitter<void>` (emite al presionar Enter)
108
+ - `valueChange`: emitido por el model `value` en cada cambio (`string`)
109
+ - `enterPressed`: `void` (emite al presionar Enter)
101
110
 
102
111
  ```html
103
112
  <c80-input-field
104
- (valueChange)="onValueChange($event)"
113
+ label="Nombre"
114
+ [(value)]="name"
105
115
  (enterPressed)="onSubmit()"></c80-input-field>
106
116
  ```
107
117
 
package/esm2022/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './lib/action-list';
2
+ export * from './lib/bar-chart';
2
3
  export * from './lib/card-level';
3
4
  export * from './lib/header';
4
5
  export * from './lib/icon';
@@ -16,6 +17,7 @@ export * from './lib/select';
16
17
  export * from './lib/snackbar';
17
18
  export * from './lib/spinner';
18
19
  export * from './lib/stat-card';
20
+ export * from './lib/status-badge';
19
21
  export * from './lib/tab';
20
22
  export * from './lib/table';
21
23
  export * from './lib/error-notification';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/ui/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC","sourcesContent":["export * from './lib/action-list';\nexport * from './lib/card-level';\nexport * from './lib/header';\nexport * from './lib/icon';\nexport * from './lib/info-list';\nexport * from './lib/info-message';\nexport * from './lib/input-field';\nexport * from './lib/input-search';\nexport * from './lib/legal-disclaimer';\nexport * from './lib/modal';\nexport * from './lib/navigation-card';\nexport * from './lib/profile-stats';\nexport * from './lib/rating-display';\nexport * from './lib/rating-stars';\nexport * from './lib/select';\nexport * from './lib/snackbar';\nexport * from './lib/spinner';\nexport * from './lib/stat-card';\nexport * from './lib/tab';\nexport * from './lib/table';\nexport * from './lib/error-notification';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/ui/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC","sourcesContent":["export * from './lib/action-list';\nexport * from './lib/bar-chart';\nexport * from './lib/card-level';\nexport * from './lib/header';\nexport * from './lib/icon';\nexport * from './lib/info-list';\nexport * from './lib/info-message';\nexport * from './lib/input-field';\nexport * from './lib/input-search';\nexport * from './lib/legal-disclaimer';\nexport * from './lib/modal';\nexport * from './lib/navigation-card';\nexport * from './lib/profile-stats';\nexport * from './lib/rating-display';\nexport * from './lib/rating-stars';\nexport * from './lib/select';\nexport * from './lib/snackbar';\nexport * from './lib/spinner';\nexport * from './lib/stat-card';\nexport * from './lib/status-badge';\nexport * from './lib/tab';\nexport * from './lib/table';\nexport * from './lib/error-notification';\n"]}
@@ -0,0 +1,101 @@
1
+ import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ // Geometria del viewBox (el SVG escala a lo ancho del contenedor)
4
+ const VIEW_WIDTH = 600;
5
+ const VIEW_HEIGHT = 260;
6
+ const PADDING_TOP = 12;
7
+ const PADDING_RIGHT = 8;
8
+ const PADDING_BOTTOM = 32;
9
+ const PADDING_LEFT = 46;
10
+ const PLOT_WIDTH = VIEW_WIDTH - PADDING_LEFT - PADDING_RIGHT;
11
+ const PLOT_HEIGHT = VIEW_HEIGHT - PADDING_TOP - PADDING_BOTTOM;
12
+ const BASELINE_Y = VIEW_HEIGHT - PADDING_BOTTOM;
13
+ const LABEL_Y = VIEW_HEIGHT - 12;
14
+ const TICK_INTERVALS = 4;
15
+ const BAR_MAX_WIDTH = 64;
16
+ const BAR_BAND_RATIO = 0.65;
17
+ const LABEL_CHAR_WIDTH = 6.5; // ancho aproximado por caracter a font-size 11
18
+ const LABEL_MIN_BAND = 26; // banda minima para mostrar todas las labels; debajo se saltean
19
+ const COMPACT_FORMAT = new Intl.NumberFormat('es-AR', { maximumFractionDigits: 1 });
20
+ const formatCompact = (value) => {
21
+ const abs = Math.abs(value);
22
+ if (abs >= 1_000_000)
23
+ return `${COMPACT_FORMAT.format(value / 1_000_000)} M`;
24
+ if (abs >= 1_000)
25
+ return `${COMPACT_FORMAT.format(value / 1_000)} k`;
26
+ return COMPACT_FORMAT.format(value);
27
+ };
28
+ /** Redondea hacia arriba a un tope "lindo" (1/2/2.5/5 x 10^n) para el eje Y. */
29
+ const niceCeil = (value) => {
30
+ if (value <= 0)
31
+ return 1;
32
+ const pow = Math.pow(10, Math.floor(Math.log10(value)));
33
+ const fraction = value / pow;
34
+ const nice = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 2.5 ? 2.5 : fraction <= 5 ? 5 : 10;
35
+ return nice * pow;
36
+ };
37
+ const truncate = (label, maxChars) => label.length <= maxChars ? label : `${label.slice(0, Math.max(1, maxChars - 1))}…`;
38
+ /**
39
+ * Grafico de barras verticales en SVG puro, sin dependencias externas.
40
+ * Pensado para dashboards simples (ej. ventas por dia/producto); no pretende
41
+ * reemplazar una libreria de charts. Solo valores >= 0 (los negativos se muestran en 0).
42
+ */
43
+ export class BarChartComponent {
44
+ series = input([], ...(ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []));
45
+ /** Color de relleno de las barras (cualquier color CSS, admite var()). */
46
+ color = input('var(--color-bg-interactive, var(--color-primary, #3b82f6))', ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
47
+ /** Tooltip nativo (title SVG) con label y valor por barra. */
48
+ tooltip = input(true, ...(ngDevMode ? [{ debugName: "tooltip" }] : /* istanbul ignore next */ []));
49
+ /** Formateo de valores para ticks y tooltip (default: notacion compacta es-AR). */
50
+ valueFormatter = input(formatCompact, ...(ngDevMode ? [{ debugName: "valueFormatter" }] : /* istanbul ignore next */ []));
51
+ viewBox = `0 0 ${VIEW_WIDTH} ${VIEW_HEIGHT}`;
52
+ plotLeft = PADDING_LEFT;
53
+ plotRight = VIEW_WIDTH - PADDING_RIGHT;
54
+ labelY = LABEL_Y;
55
+ maxValue = computed(() => {
56
+ const points = this.series();
57
+ if (points.length === 0)
58
+ return 1;
59
+ return niceCeil(Math.max(...points.map((point) => point.value)));
60
+ }, ...(ngDevMode ? [{ debugName: "maxValue" }] : /* istanbul ignore next */ []));
61
+ ticks = computed(() => {
62
+ const max = this.maxValue();
63
+ const format = this.valueFormatter();
64
+ return Array.from({ length: TICK_INTERVALS + 1 }, (_, i) => {
65
+ const value = (max / TICK_INTERVALS) * i;
66
+ return { y: BASELINE_Y - (value / max) * PLOT_HEIGHT, text: format(value) };
67
+ });
68
+ }, ...(ngDevMode ? [{ debugName: "ticks" }] : /* istanbul ignore next */ []));
69
+ bars = computed(() => {
70
+ const points = this.series();
71
+ if (points.length === 0)
72
+ return [];
73
+ const max = this.maxValue();
74
+ const format = this.valueFormatter();
75
+ const band = PLOT_WIDTH / points.length;
76
+ const width = Math.min(band * BAR_BAND_RATIO, BAR_MAX_WIDTH);
77
+ const labelStep = band >= LABEL_MIN_BAND ? 1 : Math.ceil(LABEL_MIN_BAND / band);
78
+ const maxChars = Math.max(3, Math.floor((band * labelStep) / LABEL_CHAR_WIDTH));
79
+ return points.map((point, i) => {
80
+ const height = (Math.max(0, point.value) / max) * PLOT_HEIGHT;
81
+ const centerX = PADDING_LEFT + band * i + band / 2;
82
+ return {
83
+ x: centerX - width / 2,
84
+ y: BASELINE_Y - height,
85
+ width,
86
+ height,
87
+ centerX,
88
+ labelText: truncate(point.label, maxChars),
89
+ showLabel: i % labelStep === 0,
90
+ title: `${point.label}: ${format(point.value)}`
91
+ };
92
+ });
93
+ }, ...(ngDevMode ? [{ debugName: "bars" }] : /* istanbul ignore next */ []));
94
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: BarChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
95
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: BarChartComponent, isStandalone: true, selector: "c80-bar-chart", inputs: { series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, valueFormatter: { classPropertyName: "valueFormatter", publicName: "valueFormatter", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (bars().length === 0) {\n<div class=\"bar-chart-empty\">Sin datos</div>\n} @else {\n<svg class=\"bar-chart\" [attr.viewBox]=\"viewBox\" preserveAspectRatio=\"xMidYMid meet\" role=\"img\">\n @for (tick of ticks(); track $index) {\n <line class=\"grid-line\" [attr.x1]=\"plotLeft\" [attr.x2]=\"plotRight\" [attr.y1]=\"tick.y\" [attr.y2]=\"tick.y\" />\n <text class=\"tick-label\" [attr.x]=\"plotLeft - 6\" [attr.y]=\"tick.y + 3\" text-anchor=\"end\">{{ tick.text }}</text>\n }\n @for (bar of bars(); track $index) {\n <g class=\"bar-group\">\n <rect class=\"bar\" [attr.x]=\"bar.x\" [attr.y]=\"bar.y\" [attr.width]=\"bar.width\" [attr.height]=\"bar.height\" rx=\"2\" [style.fill]=\"color()\" />\n @if (bar.showLabel) {\n <text class=\"axis-label\" [attr.x]=\"bar.centerX\" [attr.y]=\"labelY\" text-anchor=\"middle\">{{ bar.labelText }}</text>\n }\n @if (tooltip()) {\n <title>{{ bar.title }}</title>\n }\n </g>\n }\n</svg>\n}\n", styles: [":host{display:block;width:100%}.bar-chart{display:block;width:100%;height:auto}.bar-chart .grid-line{stroke:var(--color-border-light, #e5e7eb);stroke-width:1}.bar-chart .tick-label,.bar-chart .axis-label{fill:var(--color-text-tertiary, #9ca3af);font-size:11px;-webkit-user-select:none;user-select:none}.bar-chart .bar-group .bar{transition:opacity .15s}.bar-chart .bar-group:hover .bar{opacity:.8}.bar-chart-empty{display:flex;align-items:center;justify-content:center;min-height:120px;color:var(--color-text-tertiary, #9ca3af);font-size:.8125rem;-webkit-user-select:none;user-select:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
96
+ }
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: BarChartComponent, decorators: [{
98
+ type: Component,
99
+ args: [{ selector: 'c80-bar-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (bars().length === 0) {\n<div class=\"bar-chart-empty\">Sin datos</div>\n} @else {\n<svg class=\"bar-chart\" [attr.viewBox]=\"viewBox\" preserveAspectRatio=\"xMidYMid meet\" role=\"img\">\n @for (tick of ticks(); track $index) {\n <line class=\"grid-line\" [attr.x1]=\"plotLeft\" [attr.x2]=\"plotRight\" [attr.y1]=\"tick.y\" [attr.y2]=\"tick.y\" />\n <text class=\"tick-label\" [attr.x]=\"plotLeft - 6\" [attr.y]=\"tick.y + 3\" text-anchor=\"end\">{{ tick.text }}</text>\n }\n @for (bar of bars(); track $index) {\n <g class=\"bar-group\">\n <rect class=\"bar\" [attr.x]=\"bar.x\" [attr.y]=\"bar.y\" [attr.width]=\"bar.width\" [attr.height]=\"bar.height\" rx=\"2\" [style.fill]=\"color()\" />\n @if (bar.showLabel) {\n <text class=\"axis-label\" [attr.x]=\"bar.centerX\" [attr.y]=\"labelY\" text-anchor=\"middle\">{{ bar.labelText }}</text>\n }\n @if (tooltip()) {\n <title>{{ bar.title }}</title>\n }\n </g>\n }\n</svg>\n}\n", styles: [":host{display:block;width:100%}.bar-chart{display:block;width:100%;height:auto}.bar-chart .grid-line{stroke:var(--color-border-light, #e5e7eb);stroke-width:1}.bar-chart .tick-label,.bar-chart .axis-label{fill:var(--color-text-tertiary, #9ca3af);font-size:11px;-webkit-user-select:none;user-select:none}.bar-chart .bar-group .bar{transition:opacity .15s}.bar-chart .bar-group:hover .bar{opacity:.8}.bar-chart-empty{display:flex;align-items:center;justify-content:center;min-height:120px;color:var(--color-text-tertiary, #9ca3af);font-size:.8125rem;-webkit-user-select:none;user-select:none}\n"] }]
100
+ }], propDecorators: { series: [{ type: i0.Input, args: [{ isSignal: true, alias: "series", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], tooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltip", required: false }] }], valueFormatter: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueFormatter", required: false }] }] } });
101
+ //# sourceMappingURL=bar-chart.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bar-chart.component.js","sourceRoot":"","sources":["../../../../../libs/ui/src/lib/bar-chart/bar-chart.component.ts","../../../../../libs/ui/src/lib/bar-chart/bar-chart.component.html"],"names":[],"mappings":"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","sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport type { BarChartPoint } from './bar-chart.types';\n\n// Geometria del viewBox (el SVG escala a lo ancho del contenedor)\nconst VIEW_WIDTH = 600;\nconst VIEW_HEIGHT = 260;\nconst PADDING_TOP = 12;\nconst PADDING_RIGHT = 8;\nconst PADDING_BOTTOM = 32;\nconst PADDING_LEFT = 46;\nconst PLOT_WIDTH = VIEW_WIDTH - PADDING_LEFT - PADDING_RIGHT;\nconst PLOT_HEIGHT = VIEW_HEIGHT - PADDING_TOP - PADDING_BOTTOM;\nconst BASELINE_Y = VIEW_HEIGHT - PADDING_BOTTOM;\nconst LABEL_Y = VIEW_HEIGHT - 12;\n\nconst TICK_INTERVALS = 4;\nconst BAR_MAX_WIDTH = 64;\nconst BAR_BAND_RATIO = 0.65;\nconst LABEL_CHAR_WIDTH = 6.5; // ancho aproximado por caracter a font-size 11\nconst LABEL_MIN_BAND = 26; // banda minima para mostrar todas las labels; debajo se saltean\n\nconst COMPACT_FORMAT = new Intl.NumberFormat('es-AR', { maximumFractionDigits: 1 });\n\nconst formatCompact = (value: number): string => {\n const abs = Math.abs(value);\n if (abs >= 1_000_000) return `${COMPACT_FORMAT.format(value / 1_000_000)} M`;\n if (abs >= 1_000) return `${COMPACT_FORMAT.format(value / 1_000)} k`;\n return COMPACT_FORMAT.format(value);\n};\n\n/** Redondea hacia arriba a un tope \"lindo\" (1/2/2.5/5 x 10^n) para el eje Y. */\nconst niceCeil = (value: number): number => {\n if (value <= 0) return 1;\n const pow = Math.pow(10, Math.floor(Math.log10(value)));\n const fraction = value / pow;\n const nice = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 2.5 ? 2.5 : fraction <= 5 ? 5 : 10;\n return nice * pow;\n};\n\nconst truncate = (label: string, maxChars: number): string =>\n label.length <= maxChars ? label : `${label.slice(0, Math.max(1, maxChars - 1))}…`;\n\ninterface BarView {\n x: number;\n y: number;\n width: number;\n height: number;\n centerX: number;\n labelText: string;\n showLabel: boolean;\n title: string;\n}\n\ninterface TickView {\n y: number;\n text: string;\n}\n\n/**\n * Grafico de barras verticales en SVG puro, sin dependencias externas.\n * Pensado para dashboards simples (ej. ventas por dia/producto); no pretende\n * reemplazar una libreria de charts. Solo valores >= 0 (los negativos se muestran en 0).\n */\n@Component({\n selector: 'c80-bar-chart',\n templateUrl: './bar-chart.component.html',\n styleUrl: './bar-chart.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BarChartComponent {\n readonly series = input<BarChartPoint[]>([]);\n /** Color de relleno de las barras (cualquier color CSS, admite var()). */\n readonly color = input('var(--color-bg-interactive, var(--color-primary, #3b82f6))');\n /** Tooltip nativo (title SVG) con label y valor por barra. */\n readonly tooltip = input(true);\n /** Formateo de valores para ticks y tooltip (default: notacion compacta es-AR). */\n readonly valueFormatter = input<(value: number) => string>(formatCompact);\n\n protected readonly viewBox = `0 0 ${VIEW_WIDTH} ${VIEW_HEIGHT}`;\n protected readonly plotLeft = PADDING_LEFT;\n protected readonly plotRight = VIEW_WIDTH - PADDING_RIGHT;\n protected readonly labelY = LABEL_Y;\n\n private readonly maxValue = computed(() => {\n const points = this.series();\n if (points.length === 0) return 1;\n return niceCeil(Math.max(...points.map((point) => point.value)));\n });\n\n protected readonly ticks = computed<TickView[]>(() => {\n const max = this.maxValue();\n const format = this.valueFormatter();\n return Array.from({ length: TICK_INTERVALS + 1 }, (_, i) => {\n const value = (max / TICK_INTERVALS) * i;\n return { y: BASELINE_Y - (value / max) * PLOT_HEIGHT, text: format(value) };\n });\n });\n\n protected readonly bars = computed<BarView[]>(() => {\n const points = this.series();\n if (points.length === 0) return [];\n const max = this.maxValue();\n const format = this.valueFormatter();\n const band = PLOT_WIDTH / points.length;\n const width = Math.min(band * BAR_BAND_RATIO, BAR_MAX_WIDTH);\n const labelStep = band >= LABEL_MIN_BAND ? 1 : Math.ceil(LABEL_MIN_BAND / band);\n const maxChars = Math.max(3, Math.floor((band * labelStep) / LABEL_CHAR_WIDTH));\n return points.map((point, i) => {\n const height = (Math.max(0, point.value) / max) * PLOT_HEIGHT;\n const centerX = PADDING_LEFT + band * i + band / 2;\n return {\n x: centerX - width / 2,\n y: BASELINE_Y - height,\n width,\n height,\n centerX,\n labelText: truncate(point.label, maxChars),\n showLabel: i % labelStep === 0,\n title: `${point.label}: ${format(point.value)}`\n };\n });\n });\n}\n","@if (bars().length === 0) {\n<div class=\"bar-chart-empty\">Sin datos</div>\n} @else {\n<svg class=\"bar-chart\" [attr.viewBox]=\"viewBox\" preserveAspectRatio=\"xMidYMid meet\" role=\"img\">\n @for (tick of ticks(); track $index) {\n <line class=\"grid-line\" [attr.x1]=\"plotLeft\" [attr.x2]=\"plotRight\" [attr.y1]=\"tick.y\" [attr.y2]=\"tick.y\" />\n <text class=\"tick-label\" [attr.x]=\"plotLeft - 6\" [attr.y]=\"tick.y + 3\" text-anchor=\"end\">{{ tick.text }}</text>\n }\n @for (bar of bars(); track $index) {\n <g class=\"bar-group\">\n <rect class=\"bar\" [attr.x]=\"bar.x\" [attr.y]=\"bar.y\" [attr.width]=\"bar.width\" [attr.height]=\"bar.height\" rx=\"2\" [style.fill]=\"color()\" />\n @if (bar.showLabel) {\n <text class=\"axis-label\" [attr.x]=\"bar.centerX\" [attr.y]=\"labelY\" text-anchor=\"middle\">{{ bar.labelText }}</text>\n }\n @if (tooltip()) {\n <title>{{ bar.title }}</title>\n }\n </g>\n }\n</svg>\n}\n"]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=bar-chart.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bar-chart.types.js","sourceRoot":"","sources":["../../../../../libs/ui/src/lib/bar-chart/bar-chart.types.ts"],"names":[],"mappings":"","sourcesContent":["export interface BarChartPoint {\n label: string;\n value: number;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export * from './bar-chart.component';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/ui/src/lib/bar-chart/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC","sourcesContent":["export * from './bar-chart.component';\nexport type { BarChartPoint } from './bar-chart.types';\n"]}
@@ -494,6 +494,33 @@ export const ICON_DEFINITIONS = {
494
494
  addBox: {
495
495
  path: 'M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10h-4v4h-2v-4H7v-2h4V7h2v4h4v2z'
496
496
  },
497
+ wallet: {
498
+ path: 'M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1',
499
+ additionalShapes: [{ type: 'path', d: 'M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4' }]
500
+ },
501
+ cash: {
502
+ path: 'M6 12h.01M18 12h.01',
503
+ additionalShapes: [
504
+ { type: 'rect', x: '2', y: '6', width: '20', height: '12', rx: '2' },
505
+ { type: 'circle', cx: '12', cy: '12', r: '2' }
506
+ ]
507
+ },
508
+ coin: {
509
+ path: 'M18.09 10.37A6 6 0 1 1 10.34 18',
510
+ additionalShapes: [
511
+ { type: 'circle', cx: '8', cy: '8', r: '6' },
512
+ { type: 'path', d: 'M7 6h1v4' },
513
+ { type: 'path', d: 'm16.71 13.88.7.71-2.82 2.82' }
514
+ ]
515
+ },
516
+ trendingUp: {
517
+ path: 'M22 7l-8.5 8.5-5-5L2 17',
518
+ additionalShapes: [{ type: 'path', d: 'M16 7h6v6' }]
519
+ },
520
+ trendingDown: {
521
+ path: 'M22 17l-8.5-8.5-5 5L2 7',
522
+ additionalShapes: [{ type: 'path', d: 'M16 17h6v-6' }]
523
+ },
497
524
  default: {
498
525
  path: '',
499
526
  additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]
@@ -1 +1 @@
1
- {"version":3,"file":"icon.definitions.js","sourceRoot":"","sources":["../../../../../libs/ui/src/lib/icon/icon.definitions.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable max-len */\r\nimport type { IconDefinition } from './icon.types';\r\n\r\nconst HEART_PATH = 'M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z';\r\n\r\n/**\r\n * ICON DEFINITIONS - Estructura unificada que combina paths, shapes y multi-color\r\n * \r\n * NUEVA ARQUITECTURA: Una sola fuente de verdad para cada icono\r\n * - path: Path principal del SVG\r\n * - additionalShapes: Formas complementarias (círculos, rectángulos) \r\n * - multiColor: Configuración para iconos con múltiples colores específicos\r\n * \r\n * BENEFICIOS:\r\n * - Una búsqueda en lugar de 3 lookups separados (mejor performance)\r\n * - Garantiza consistencia (no hay iconos \"a medias\")\r\n * - Fácil mantenimiento y escalabilidad\r\n * - TypeScript más robusto\r\n */\r\nexport const ICON_DEFINITIONS: Readonly<Record<string, IconDefinition>> = {\r\n check: {\r\n path: 'M5 13l4 4L19 7'\r\n },\r\n cancel: {\r\n path: 'M6 6l12 12M6 18L18 6'\r\n },\r\n edit: {\r\n path: 'M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z',\r\n additionalShapes: [{ type: 'rect', x: '5', y: '19', width: '14', height: '2', rx: '1' }]\r\n },\r\n delete: {\r\n path: 'M6 19a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z'\r\n },\r\n add: {\r\n path: 'M12 5v14M5 12h14'\r\n },\r\n remove: {\r\n path: 'M5 12h14'\r\n },\r\n view: {\r\n path: 'M12 5C7 5 2.73 8.11 1 12c1.73 3.89 6 7 11 7s9.27-3.11 11-7c-1.73-3.89-6-7-11-7z',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '3' }]\r\n },\r\n get: {\r\n path: 'm8.5 8.5 7 7',\r\n additionalShapes: [\r\n { type: 'circle', cx: '6', cy: '6', r: '3' },\r\n { type: 'circle', cx: '18', cy: '18', r: '3' },\r\n { type: 'path', d: 'm13 11 2 2-2 2' }\r\n ]\r\n },\r\n settings: {\r\n path: 'M12 1v6m0 6v10M3.34 7l5.2 3M15.46 14l5.2 3M3.34 17l5.2-3M15.46 10l5.2-3',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '3' }]\r\n },\r\n schedule: {\r\n path: 'M12 6v6l4 2',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n refresh: {\r\n path: 'M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8M21 3v5h-5M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16M3 21v-5h5'\r\n },\r\n casino: {\r\n path: 'M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM7.5 18c-.83 0-1.5-.67-1.5-1.5S6.67 15 7.5 15s1.5.67 1.5 1.5S8.33 18 7.5 18zm0-9C6.67 9 6 8.33 6 7.5S6.67 6 7.5 6 9 6.67 9 7.5 8.33 9 7.5 9zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm0-9c-.83 0-1.5-.67-1.5-1.5S15.67 6 16.5 6s1.5.67 1.5 1.5S17.33 9 16.5 9z'\r\n },\r\n checkCircle: {\r\n path: 'm9 12 2 2 4-4',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n cancelCircle: {\r\n path: 'm15 9-6 6m0-6 6 6',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n error: {\r\n path: 'M15 9L9 15M9 9l6 6',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n queue: {\r\n path: 'M3 12h18m-9-9v18',\r\n additionalShapes: [\r\n { type: 'rect', x: '2', y: '3', width: '20', height: '6', rx: '1' },\r\n { type: 'rect', x: '2', y: '15', width: '20', height: '6', rx: '1' }\r\n ]\r\n },\r\n arrowUp: {\r\n path: 'm18 15-6-6-6 6'\r\n },\r\n arrowDown: {\r\n path: 'm6 9 6 6 6-6'\r\n },\r\n toggleOn: {\r\n path: '',\r\n additionalShapes: [\r\n { type: 'rect', x: '2', y: '7', width: '20', height: '10', rx: '5' },\r\n { type: 'circle', cx: '18', cy: '12', r: '4', fill: 'color' }\r\n ]\r\n },\r\n toggleOff: {\r\n path: '',\r\n additionalShapes: [\r\n { type: 'rect', x: '2', y: '7', width: '20', height: '10', rx: '5' },\r\n { type: 'circle', cx: '6', cy: '12', r: '4', fill: 'color' }\r\n ]\r\n },\r\n search: {\r\n path: 'm21 21-6-6m2-5a7 7 0 1 1-14 0 7 7 0 0 1 14 0z'\r\n },\r\n upload: {\r\n path: 'M12 15V3m0 0l-4 4m4-4l4 4M2 17l.621 2.485A2 2 0 0 0 4.561 21h14.878a2 2 0 0 0 1.94-1.515L22 17'\r\n },\r\n image: {\r\n path: 'm21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21',\r\n additionalShapes: [\r\n { type: 'rect', x: '3', y: '3', width: '18', height: '18', rx: '2' },\r\n { type: 'circle', cx: '9', cy: '9', r: '2' }\r\n ]\r\n },\r\n pendingActions: {\r\n path: 'M12 8v4l3 3m6-3a9 9 0 1 1-18 0 9 9 0 0 1 18 0z'\r\n },\r\n playCircle: {\r\n path: 'M14.752 11.168l-3.197-2.132A1 1 0 0 0 10 9.87v4.263a1 1 0 0 0 1.555.832l3.197-2.132a1 1 0 0 0 0-1.664z',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n play: {\r\n path: 'M8 5v14l11-7z'\r\n },\r\n stop: {\r\n path: 'M6 6h12v12H6z'\r\n },\r\n tune: {\r\n path: 'M3 17v2h6v-2H3zM3 5v2h10V5H3zm10 16v-2h8v-2h-8v-2h-2v6h2zM7 9v2H3v2h4v2h2V9H7zm14 4v-2H11v2h10zm-6-4h2V7h4V5h-4V3h-2v6z'\r\n },\r\n visibility: {\r\n path: 'M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5z',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '3' }]\r\n },\r\n visibilityOff: {\r\n path: 'M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7z' +\r\n 'M2 4.27l2.28 2.28.46.46A11.804 11.804 0 0 0 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27z' +\r\n 'M7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2z' +\r\n 'm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z'\r\n },\r\n close: {\r\n path: 'M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z'\r\n },\r\n record: {\r\n path: '',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '5', fill: 'color' }]\r\n },\r\n star: {\r\n path: 'M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z',\r\n fill: true\r\n },\r\n starFilled: {\r\n path: 'M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z',\r\n fill: true\r\n },\r\n xCircle: {\r\n path: 'M15 9l-6 6m0-6l6 6',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n key: {\r\n path: 'M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4'\r\n },\r\n exclamationTriangle: {\r\n path: 'M12 9v4m0 4h.01',\r\n additionalShapes: [{ type: 'path', d: 'M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z' }]\r\n },\r\n clipboard: {\r\n path: 'M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'\r\n },\r\n download: {\r\n path: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4m4-5l5 5m0 0l5-5m-5 5V3'\r\n },\r\n shield: {\r\n path: 'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z',\r\n fill: true\r\n },\r\n person: {\r\n path: 'M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z',\r\n fill: true\r\n },\r\n envelope: {\r\n path: 'M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z',\r\n additionalShapes: [{ type: 'path', d: 'm22 6-10 7L2 6' }]\r\n },\r\n infoCircle: {\r\n path: 'M12 16v-4m0-4h.01',\r\n strokeWidth: '3',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n info: {\r\n path: 'M12 11v5m0-9h.01',\r\n strokeWidth: '2.5'\r\n },\r\n checkSquare: {\r\n path: 'm9 11 3 3L22 4',\r\n additionalShapes: [{ type: 'rect', x: '3', y: '3', width: '18', height: '18', rx: '2' }]\r\n },\r\n square: {\r\n path: '',\r\n additionalShapes: [{ type: 'rect', x: '3', y: '3', width: '18', height: '18', rx: '2' }]\r\n },\r\n dashSquare: {\r\n path: 'M8 12h8',\r\n additionalShapes: [{ type: 'rect', x: '3', y: '3', width: '18', height: '18', rx: '2' }]\r\n },\r\n people: {\r\n path: 'M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3z' +\r\n 'm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z',\r\n fill: true\r\n },\r\n boxSeam: {\r\n path: 'M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z',\r\n additionalShapes: [\r\n { type: 'path', d: 'M21 8.5v7c0 .6-.2 1.2-.6 1.7l-7 4c-.3.2-.6.3-1 .3-.3 0-.7-.1-1-.3l-7-4c-.4-.5-.6-1.1-.6-1.7v-7c0-.6.2-1.2.6-1.7l7-4c.6-.4 1.4-.4 2 0l7 4c.4.5.6 1.1.6 1.7z' },\r\n { type: 'path', d: 'M3.3 7L12 12l8.7-5M12 22.5V12' }\r\n ]\r\n },\r\n personBadge: {\r\n path: 'M12 2L4 6v5c0 5.55 3.84 10.74 8 12 4.16-1.26 8-6.45 8-12V6l-8-4z',\r\n additionalShapes: [\r\n { type: 'circle', cx: '12', cy: '12', r: '1.5' },\r\n { type: 'path', d: 'M12 9.5v1m0 3v1m2.5-2.5h-1m-3 0h-1' }\r\n ]\r\n },\r\n listTask: {\r\n path: 'M9 6h12M9 12h12M9 18h12',\r\n additionalShapes: [\r\n { type: 'path', d: 'M3 5l1.5 1.5L7 4' },\r\n { type: 'path', d: 'M3 11l1.5 1.5L7 10' },\r\n { type: 'path', d: 'M3 17l1.5 1.5L7 16' }\r\n ]\r\n },\r\n shuffle: {\r\n path: 'M16 3h5v5M4 20L21 3M21 16v5h-5M15 15l6 6M4 4l5 5'\r\n },\r\n motor: {\r\n path: 'M9 3v3m6-3v3M9 18v3m6-3v3M3 9h3M3 15h3m12-6h3m-3 6h3',\r\n additionalShapes: [\r\n { type: 'circle', cx: '12', cy: '12', r: '8' },\r\n { type: 'circle', cx: '12', cy: '12', r: '3', fill: 'color' },\r\n { type: 'path', d: 'M12 4v2m0 12v2M4 12h2m12 0h2M7.05 7.05l1.42 1.42m7.07 7.07l1.41 1.41M7.05 16.95l1.42-1.42m7.07-7.07l1.41-1.41' }\r\n ]\r\n },\r\n box: {\r\n path: 'M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8z',\r\n additionalShapes: [\r\n { type: 'path', d: 'M12 2.7L3.3 7v9.3l8.7 5 8.7-5V7L12 2.7z' },\r\n { type: 'path', d: 'M12 22V12M3.3 7L12 12l8.7-5' }\r\n ]\r\n },\r\n bell: {\r\n path: 'M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9M13.73 21a2 2 0 0 1-3.46 0'\r\n },\r\n message: {\r\n path: 'M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z'\r\n },\r\n send: {\r\n path: 'M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z'\r\n },\r\n file: {\r\n path: 'M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z',\r\n additionalShapes: [{ type: 'path', d: 'M13 2v7h7' }]\r\n },\r\n folder: {\r\n path: 'M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z'\r\n },\r\n save: {\r\n path: 'M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z',\r\n additionalShapes: [\r\n { type: 'path', d: 'M15 3v6h4M9 21v-8h6v8' }\r\n ]\r\n },\r\n print: {\r\n path: 'M6 9V2h12v7M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2',\r\n additionalShapes: [{ type: 'rect', x: '6', y: '14', width: '12', height: '8', rx: '1' }]\r\n },\r\n clock: {\r\n path: 'M12 6v6l4 2',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n calendar: {\r\n path: 'M8 2v4m8-4v4M3 10h18',\r\n additionalShapes: [{ type: 'rect', x: '3', y: '4', width: '18', height: '18', rx: '2' }]\r\n },\r\n timer: {\r\n path: 'M12 8v4l2 2',\r\n additionalShapes: [\r\n { type: 'circle', cx: '12', cy: '13', r: '9' },\r\n { type: 'path', d: 'M9 2h6' }\r\n ]\r\n },\r\n lock: {\r\n path: 'M19 11H5a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7a2 2 0 0 0-2-2zM7 11V7a5 5 0 0 1 10 0v4'\r\n },\r\n unlock: {\r\n path: 'M19 11H5a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7a2 2 0 0 0-2-2zM7 11V7a5 5 0 0 1 9.9-1'\r\n },\r\n chart: {\r\n path: 'M3 3v18h18M7 16l4-4 4 4 6-6'\r\n },\r\n table: {\r\n path: 'M3 3h18v18H3zM3 9h18M3 15h18M9 3v18'\r\n },\r\n database: {\r\n path: 'M12 8c-4.97 0-9-1.34-9-3s4.03-3 9-3 9 1.34 9 3-4.03 3-9 3zM3 5v5c0 1.66 4.03 3 9 3s9-1.34 9-3V5M3 10v5c0 1.66 4.03 3 9 3s9-1.34 9-3v-5'\r\n },\r\n home: {\r\n path: 'm3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z',\r\n additionalShapes: [{ type: 'path', d: 'M9 22V12h6v10' }]\r\n },\r\n menu: {\r\n path: 'M3 12h18M3 6h18M3 18h18'\r\n },\r\n moreVert: {\r\n path: 'M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z'\r\n },\r\n arrowLeft: {\r\n path: 'm15 18-6-6 6-6'\r\n },\r\n arrowRight: {\r\n path: 'm9 18 6-6-6-6'\r\n },\r\n arrowBack: {\r\n path: 'm12 19-7-7 7-7M19 12H5'\r\n },\r\n history: {\r\n path: 'M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8',\r\n additionalShapes: [\r\n { type: 'path', d: 'M3 3v5h5' },\r\n { type: 'path', d: 'M12 7v5l4 2' }\r\n ]\r\n },\r\n copy: {\r\n path: 'M8 4v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7.242a2 2 0 0 0-.602-1.43L16.083 2.57A2 2 0 0 0 14.685 2H10a2 2 0 0 0-2 2z',\r\n additionalShapes: [{ type: 'rect', x: '4', y: '8', width: '12', height: '12', rx: '2' }]\r\n },\r\n filter: {\r\n path: 'M22 3H2l8 9.46V19l4 2v-8.54L22 3z'\r\n },\r\n sort: {\r\n path: 'M11 5h10M11 9h7M11 13h4M3 17l3 3m0 0l3-3m-3 3V4'\r\n },\r\n help: {\r\n path: 'M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3m.08 4h.01',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n warning: {\r\n path: 'M12 9v4',\r\n additionalShapes: [\r\n { type: 'circle', cx: '12', cy: '12', r: '10' },\r\n { type: 'circle', cx: '12', cy: '17', r: '0.5', fill: 'color' }\r\n ]\r\n },\r\n dashboard: {\r\n path: 'M3 13h8V3H3zm0 8h8v-6H3zm10 0h8V11h-8zm0-18v6h8V3z'\r\n },\r\n settingsApplications: {\r\n path: 'M12 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm7-7H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2z' +\r\n 'm-1.75 9c0 .23-.02.46-.05.68l1.48 1.16c.13.11.17.3.08.45l-1.4 2.42c-.09.15-.27.21-.43.15l-1.74-.7c-.36.28-.76.51-1.18.69l-.26 1.85c-.03.17-.18.3-.35.3h-2.8' +\r\n 'c-.17 0-.32-.13-.35-.29l-.26-1.85c-.43-.18-.82-.41-1.18-.69l-1.74.7c-.16.06-.34 0-.43-.15l-1.4-2.42c-.09-.15-.05-.34.08-.45l1.48-1.16c-.03-.23-.05-.46-.05-.69 0-.23.02-.46.05-.68' +\r\n 'l-1.48-1.16c-.13-.11-.17-.3-.08-.45l1.4-2.42c.09-.15.27-.21.43-.15l1.74.7c.36-.28.76-.51 1.18-.69l.26-1.85c.03-.17.18-.3.35-.3h2.8' +\r\n 'c.17 0 .32.13.35.29l.26 1.85c.43.18.82.41 1.18.69l1.74-.7c.16-.06.34 0 .43.15l1.4 2.42c.09.15.05.34-.08.45l-1.48 1.16c.03.23.05.46.05.69z'\r\n },\r\n route: {\r\n path: 'M19 15.18V7c0-2.21-1.79-4-4-4s-4 1.79-4 4v10c0 1.1-.9 2-2 2s-2-.9-2-2V8.82C8.16 8.4 9 7.3 9 6c0-1.66-1.34-3-3-3S3 4.34 3 6c0 1.3.84 2.4 2 2.82V17c0 2.21 1.79 4 4 4s4-1.79 4-4V7c0-1.1.9-2 2-2s2 .9 2 2v8.18A2.996 2.996 0 0 0 15 18c0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.3-.84-2.4-2-2.82z'\r\n },\r\n developerBoard: {\r\n path: 'M9 2v4m6-4v4M9 18v4m6-18v4M2 9h4M2 15h4m16-6h4m-4 6h4',\r\n additionalShapes: [\r\n { type: 'rect', x: '5', y: '5', width: '14', height: '14', rx: '2' },\r\n { type: 'rect', x: '9', y: '9', width: '6', height: '6', rx: '0.5' },\r\n { type: 'circle', cx: '12', cy: '12', r: '1.5', fill: 'color' }\r\n ]\r\n },\r\n directions: {\r\n path: 'm21.41 10.59-7.99-8c-.78-.78-2.05-.78-2.83 0l-8.01 8c-.78.78-.78 2.05 0 2.83l8.01 8c.78.78 2.05.78 2.83 0l7.99-8c.79-.79.79-2.05 0-2.83zM13.5 14.5V12H10v3H8v-4c0-.55.45-1 1-1h4.5V7.5L17 11l-3.5 3.5z'\r\n },\r\n category: {\r\n path: 'M12 2 6.5 11h11z',\r\n additionalShapes: [\r\n { type: 'circle', cx: '17.5', cy: '17.5', r: '3.5' },\r\n { type: 'rect', x: '3', y: '14', width: '7', height: '7', rx: '1' }\r\n ]\r\n },\r\n logout: {\r\n path: 'M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4m7 14 5-5m0 0-5-5m5 5H9'\r\n },\r\n heart: {\r\n path: HEART_PATH\r\n },\r\n heartFilled: {\r\n path: HEART_PATH,\r\n fill: true\r\n },\r\n heartBroken: {\r\n path: HEART_PATH,\r\n additionalShapes: [\r\n { type: 'path', d: 'M12 5.5l-1 2.5h2l-1.5 3h1.5l-1 3.5V21' }\r\n ]\r\n },\r\n user: {\r\n path: 'M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '7', r: '4' }]\r\n },\r\n sun: {\r\n path: 'M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zM2 13h2c.55 0 1-.45 1-1s-.45-1-1-1H2c-.55 0-1 .45-1 1s.45 1 1 1zm18 0h2c.55 0 1-.45 1-1s-.45-1-1-1h-2c-.55 0-1 .45-1 1s.45 1 1 1z' +\r\n 'M11 2v2c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1s-1 .45-1 1zm0 18v2c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1s-1 .45-1 1z' +\r\n 'M5.99 4.58c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0s.39-1.03 0-1.41L5.99 4.58zm12.37 12.37c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0 .39-.39.39-1.03 0-1.41l-1.06-1.06z' +\r\n 'm1.06-10.96c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0l1.06-1.06zM7.05 18.36c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0l1.06-1.06z'\r\n },\r\n moon: {\r\n path: 'M9.37 5.51C9.19 6.15 9.1 6.82 9.1 7.5c0 4.08 3.32 7.4 7.4 7.4.68 0 1.35-.09 1.99-.27C17.45 17.19 14.93 19 12 19c-3.86 0-7-3.14-7-7 0-2.93 1.81-5.45 4.37-6.49z' +\r\n 'M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9 9-4.03 9-9c0-.46-.04-.92-.1-1.36-.98 1.37-2.58 2.26-4.4 2.26-2.98 0-5.4-2.42-5.4-5.4 0-1.81.89-3.42 2.26-4.4-.44-.06-.9-.1-1.36-.1z'\r\n },\r\n google: {\r\n path: '',\r\n multiColor: {\r\n colors: [\r\n '#4285F4', // Azul - parte superior\r\n '#34A853', // Verde - parte inferior derecha\r\n '#FBBC05', // Amarillo - parte inferior izquierda\r\n '#EA4335', // Rojo - parte izquierda\r\n ],\r\n paths: [\r\n 'M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z',\r\n 'M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z',\r\n 'M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z',\r\n 'M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z'\r\n ]\r\n }\r\n },\r\n local_drink: {\r\n path: 'M3 2l2.01 18.23C5.13 21.23 5.97 22 7 22h10c1.03 0 1.87-.77 1.99-1.77L21 2H3zm9 17c-1.66 0-3-1.34-3-3 0-2 3-5.4 3-5.4s3 3.4 3 5.4c0 1.66-1.34 3-3 3zm6.33-11H5.67l-.44-4h13.53l-.43 4z'\r\n },\r\n list: {\r\n path: 'M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z'\r\n },\r\n gpsFixed: {\r\n path: 'M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm8.94 3A8.994 8.994 0 0 0 13 3.06V1h-2v2.06A8.994 8.994 0 0 0 3.06 11H1v2h2.06A8.994 8.994 0 0 0 11 20.94V23h2v-2.06A8.994 8.994 0 0 0 20.94 13H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z'\r\n },\r\n locationPin: {\r\n path: 'M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z'\r\n },\r\n controlPoint: {\r\n path: 'M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7z',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n photo: {\r\n path: 'M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z'\r\n },\r\n restaurant: {\r\n path: 'M11 9H9V2H7v7H5V2H3v7c0 2.12 1.66 3.84 3.75 3.97V22h2.5v-9.03C11.34 12.84 13 11.12 13 9V2h-2v7zm5-3v8h2.5v8H21V2c-2.76 0-5 2.24-5 4z'\r\n },\r\n iceCream: {\r\n path: 'M8.79 12.4 12 20.94l3.21-8.54C16.26 12.15 17 11.2 17 10c0-1.66-1.34-3-3-3 0-.55-.45-1-1-1s-1 .45-1 1c-1.66 0-3 1.34-3 3 0 1.2.74 2.15 1.79 2.4z',\r\n additionalShapes: [\r\n { type: 'path', d: 'M14 2a3 3 0 0 1 3 3h-2a1 1 0 0 0-1-1z' },\r\n { type: 'path', d: 'M10 2a3 3 0 0 0-3 3h2a1 1 0 0 1 1-1z' }\r\n ]\r\n },\r\n barChart: {\r\n path: 'M5 9.2h3V19H5V9.2zM10.6 5h2.8v14h-2.8V5zm5.6 8H19v6h-2.8v-6z'\r\n },\r\n waterDrop: {\r\n path: 'M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z'\r\n },\r\n cocktailGlass: {\r\n path: 'M21 5V3H3v2l8 9v5H6v2h12v-2h-5v-5l8-9zM7.43 7 5.66 5h12.69l-1.78 2H7.43z'\r\n },\r\n acUnit: {\r\n path: 'M22 11h-4.17l3.24-3.24-1.41-1.42L15 11h-2V9l4.66-4.66-1.42-1.41L13 6.17V2h-2v4.17L7.76 2.93 6.34 4.34 11 9v2H9L4.34 6.34 2.93 7.76 6.17 11H2v2h4.17l-3.24 3.24 1.41 1.42L9 13h2v2l-4.66 4.66 1.42 1.41L11 17.83V22h2v-4.17l3.24 3.24 1.42-1.41L13 15v-2h2l4.66 4.66 1.41-1.42L17.83 13H22v-2z'\r\n },\r\n formatListNumbered: {\r\n path: 'M2 17h2v.5H3v1h1v.5H2v1h3v-4H2v1zm1-9h1V4H2v1h1v3zm-1 3h1.8L2 13.1v.9h3v-1H3.2L5 10.9V10H2v1zm5-6v2h14V5H7zm0 14h14v-2H7v2zm0-6h14v-2H7v2z'\r\n },\r\n widgets: {\r\n path: 'M13 13v8h8v-8h-8zM3 21h8v-8H3v8zM3 3v8h8V3H3zm13.66-1.31L11 7.34 16.66 13l5.66-5.66-5.66-5.65z'\r\n },\r\n contrast: {\r\n path: 'M12 22c5.52 0 10-4.48 10-10S17.52 2 12 2 2 6.48 2 12s4.48 10 10 10zm0-18c4.42 0 8 3.58 8 8s-3.58 8-8 8z',\r\n additionalShapes: [{ type: 'path', d: 'M12 4v16' }]\r\n },\r\n grid3x3: {\r\n path: 'M20 3H4c-.55 0-1 .45-1 1v16c0 .55.45 1 1 1h16c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zM8 19H5v-3h3v3zm0-5H5v-3h3v3zm0-5H5V6h3v3zm5 10h-3v-3h3v3zm0-5h-3v-3h3v3zm0-5h-3V6h3v3zm5 10h-3v-3h3v3zm0-5h-3v-3h3v3zm0-5h-3V6h3v3z'\r\n },\r\n monetizationOn: {\r\n path: 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1.41 16.09V20h-2.67v-1.93c-1.71-.36-3.16-1.46-3.27-3.4h1.96c.1 1.05.82 1.87 2.65 1.87 1.96 0 2.4-.98 2.4-1.59 0-.83-.44-1.61-2.67-2.14-2.48-.6-4.18-1.62-4.18-3.67 0-1.72 1.39-2.84 3.11-3.21V4h2.67v1.95c1.86.45 2.79 1.86 2.85 3.39H14.3c-.05-1.11-.64-1.87-2.22-1.87-1.5 0-2.4.68-2.4 1.64 0 .84.65 1.39 2.67 1.91s4.18 1.39 4.18 3.91c-.01 1.83-1.38 2.83-3.12 3.16z'\r\n },\r\n calculate: {\r\n path: 'M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM13.03 7.06 14.09 6l1.41 1.41L16.91 6l1.06 1.06-1.41 1.41 1.41 1.41-1.06 1.06-1.41-1.4-1.41 1.41-1.06-1.06 1.41-1.41-1.41-1.42zM6.25 7.72h5v1.5h-5v-1.5zM11.5 16h-2v2H8v-2H6v-1.5h2v-2h1.5v2h2V16zm5.13.02-1.41-1.41-1.46 1.41-1.05-1.05 1.41-1.41-1.41-1.41L13.76 11l1.41 1.41 1.41-1.41 1.06 1.06-1.41 1.41 1.41 1.41-1.01 1.05z'\r\n },\r\n buildCircle: {\r\n path: 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5.78 14.61-1.14 1.14-1.71-1.71-2.28 2.27-1.14-1.14 2.27-2.27-1.71-1.71 1.14-1.14 1.71 1.71 1.71-1.71 1.14 1.14-1.71 1.71 1.72 1.71zM15.5 7.5c0 .83-.67 1.5-1.5 1.5H8.75v3.68A2.99 2.99 0 0 0 10 9.5c1.65 0 3 1.35 3 3s-1.35 3-3 3c-1.3 0-2.4-.84-2.82-2H5.5c-.28 0-.5-.22-.5-.5s.22-.5.5-.5h1.68c.15-.62.51-1.16 1-1.55V7.5c0-.28.22-.5.5-.5H14c.28 0 .5.22.5.5z'\r\n },\r\n addBox: {\r\n path: 'M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10h-4v4h-2v-4H7v-2h4V7h2v4h4v2z'\r\n },\r\n default: {\r\n path: '',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n }\r\n} as const;"]}
1
+ {"version":3,"file":"icon.definitions.js","sourceRoot":"","sources":["../../../../../libs/ui/src/lib/icon/icon.definitions.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable max-len */\r\nimport type { IconDefinition } from './icon.types';\r\n\r\nconst HEART_PATH = 'M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z';\r\n\r\n/**\r\n * ICON DEFINITIONS - Estructura unificada que combina paths, shapes y multi-color\r\n * \r\n * NUEVA ARQUITECTURA: Una sola fuente de verdad para cada icono\r\n * - path: Path principal del SVG\r\n * - additionalShapes: Formas complementarias (círculos, rectángulos) \r\n * - multiColor: Configuración para iconos con múltiples colores específicos\r\n * \r\n * BENEFICIOS:\r\n * - Una búsqueda en lugar de 3 lookups separados (mejor performance)\r\n * - Garantiza consistencia (no hay iconos \"a medias\")\r\n * - Fácil mantenimiento y escalabilidad\r\n * - TypeScript más robusto\r\n */\r\nexport const ICON_DEFINITIONS: Readonly<Record<string, IconDefinition>> = {\r\n check: {\r\n path: 'M5 13l4 4L19 7'\r\n },\r\n cancel: {\r\n path: 'M6 6l12 12M6 18L18 6'\r\n },\r\n edit: {\r\n path: 'M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z',\r\n additionalShapes: [{ type: 'rect', x: '5', y: '19', width: '14', height: '2', rx: '1' }]\r\n },\r\n delete: {\r\n path: 'M6 19a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z'\r\n },\r\n add: {\r\n path: 'M12 5v14M5 12h14'\r\n },\r\n remove: {\r\n path: 'M5 12h14'\r\n },\r\n view: {\r\n path: 'M12 5C7 5 2.73 8.11 1 12c1.73 3.89 6 7 11 7s9.27-3.11 11-7c-1.73-3.89-6-7-11-7z',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '3' }]\r\n },\r\n get: {\r\n path: 'm8.5 8.5 7 7',\r\n additionalShapes: [\r\n { type: 'circle', cx: '6', cy: '6', r: '3' },\r\n { type: 'circle', cx: '18', cy: '18', r: '3' },\r\n { type: 'path', d: 'm13 11 2 2-2 2' }\r\n ]\r\n },\r\n settings: {\r\n path: 'M12 1v6m0 6v10M3.34 7l5.2 3M15.46 14l5.2 3M3.34 17l5.2-3M15.46 10l5.2-3',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '3' }]\r\n },\r\n schedule: {\r\n path: 'M12 6v6l4 2',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n refresh: {\r\n path: 'M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8M21 3v5h-5M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16M3 21v-5h5'\r\n },\r\n casino: {\r\n path: 'M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM7.5 18c-.83 0-1.5-.67-1.5-1.5S6.67 15 7.5 15s1.5.67 1.5 1.5S8.33 18 7.5 18zm0-9C6.67 9 6 8.33 6 7.5S6.67 6 7.5 6 9 6.67 9 7.5 8.33 9 7.5 9zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm4.5 4.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5zm0-9c-.83 0-1.5-.67-1.5-1.5S15.67 6 16.5 6s1.5.67 1.5 1.5S17.33 9 16.5 9z'\r\n },\r\n checkCircle: {\r\n path: 'm9 12 2 2 4-4',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n cancelCircle: {\r\n path: 'm15 9-6 6m0-6 6 6',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n error: {\r\n path: 'M15 9L9 15M9 9l6 6',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n queue: {\r\n path: 'M3 12h18m-9-9v18',\r\n additionalShapes: [\r\n { type: 'rect', x: '2', y: '3', width: '20', height: '6', rx: '1' },\r\n { type: 'rect', x: '2', y: '15', width: '20', height: '6', rx: '1' }\r\n ]\r\n },\r\n arrowUp: {\r\n path: 'm18 15-6-6-6 6'\r\n },\r\n arrowDown: {\r\n path: 'm6 9 6 6 6-6'\r\n },\r\n toggleOn: {\r\n path: '',\r\n additionalShapes: [\r\n { type: 'rect', x: '2', y: '7', width: '20', height: '10', rx: '5' },\r\n { type: 'circle', cx: '18', cy: '12', r: '4', fill: 'color' }\r\n ]\r\n },\r\n toggleOff: {\r\n path: '',\r\n additionalShapes: [\r\n { type: 'rect', x: '2', y: '7', width: '20', height: '10', rx: '5' },\r\n { type: 'circle', cx: '6', cy: '12', r: '4', fill: 'color' }\r\n ]\r\n },\r\n search: {\r\n path: 'm21 21-6-6m2-5a7 7 0 1 1-14 0 7 7 0 0 1 14 0z'\r\n },\r\n upload: {\r\n path: 'M12 15V3m0 0l-4 4m4-4l4 4M2 17l.621 2.485A2 2 0 0 0 4.561 21h14.878a2 2 0 0 0 1.94-1.515L22 17'\r\n },\r\n image: {\r\n path: 'm21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21',\r\n additionalShapes: [\r\n { type: 'rect', x: '3', y: '3', width: '18', height: '18', rx: '2' },\r\n { type: 'circle', cx: '9', cy: '9', r: '2' }\r\n ]\r\n },\r\n pendingActions: {\r\n path: 'M12 8v4l3 3m6-3a9 9 0 1 1-18 0 9 9 0 0 1 18 0z'\r\n },\r\n playCircle: {\r\n path: 'M14.752 11.168l-3.197-2.132A1 1 0 0 0 10 9.87v4.263a1 1 0 0 0 1.555.832l3.197-2.132a1 1 0 0 0 0-1.664z',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n play: {\r\n path: 'M8 5v14l11-7z'\r\n },\r\n stop: {\r\n path: 'M6 6h12v12H6z'\r\n },\r\n tune: {\r\n path: 'M3 17v2h6v-2H3zM3 5v2h10V5H3zm10 16v-2h8v-2h-8v-2h-2v6h2zM7 9v2H3v2h4v2h2V9H7zm14 4v-2H11v2h10zm-6-4h2V7h4V5h-4V3h-2v6z'\r\n },\r\n visibility: {\r\n path: 'M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5z',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '3' }]\r\n },\r\n visibilityOff: {\r\n path: 'M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7z' +\r\n 'M2 4.27l2.28 2.28.46.46A11.804 11.804 0 0 0 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27z' +\r\n 'M7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2z' +\r\n 'm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z'\r\n },\r\n close: {\r\n path: 'M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z'\r\n },\r\n record: {\r\n path: '',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '5', fill: 'color' }]\r\n },\r\n star: {\r\n path: 'M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z',\r\n fill: true\r\n },\r\n starFilled: {\r\n path: 'M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z',\r\n fill: true\r\n },\r\n xCircle: {\r\n path: 'M15 9l-6 6m0-6l6 6',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n key: {\r\n path: 'M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4'\r\n },\r\n exclamationTriangle: {\r\n path: 'M12 9v4m0 4h.01',\r\n additionalShapes: [{ type: 'path', d: 'M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z' }]\r\n },\r\n clipboard: {\r\n path: 'M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'\r\n },\r\n download: {\r\n path: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4m4-5l5 5m0 0l5-5m-5 5V3'\r\n },\r\n shield: {\r\n path: 'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z',\r\n fill: true\r\n },\r\n person: {\r\n path: 'M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z',\r\n fill: true\r\n },\r\n envelope: {\r\n path: 'M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z',\r\n additionalShapes: [{ type: 'path', d: 'm22 6-10 7L2 6' }]\r\n },\r\n infoCircle: {\r\n path: 'M12 16v-4m0-4h.01',\r\n strokeWidth: '3',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n info: {\r\n path: 'M12 11v5m0-9h.01',\r\n strokeWidth: '2.5'\r\n },\r\n checkSquare: {\r\n path: 'm9 11 3 3L22 4',\r\n additionalShapes: [{ type: 'rect', x: '3', y: '3', width: '18', height: '18', rx: '2' }]\r\n },\r\n square: {\r\n path: '',\r\n additionalShapes: [{ type: 'rect', x: '3', y: '3', width: '18', height: '18', rx: '2' }]\r\n },\r\n dashSquare: {\r\n path: 'M8 12h8',\r\n additionalShapes: [{ type: 'rect', x: '3', y: '3', width: '18', height: '18', rx: '2' }]\r\n },\r\n people: {\r\n path: 'M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3z' +\r\n 'm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z',\r\n fill: true\r\n },\r\n boxSeam: {\r\n path: 'M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z',\r\n additionalShapes: [\r\n { type: 'path', d: 'M21 8.5v7c0 .6-.2 1.2-.6 1.7l-7 4c-.3.2-.6.3-1 .3-.3 0-.7-.1-1-.3l-7-4c-.4-.5-.6-1.1-.6-1.7v-7c0-.6.2-1.2.6-1.7l7-4c.6-.4 1.4-.4 2 0l7 4c.4.5.6 1.1.6 1.7z' },\r\n { type: 'path', d: 'M3.3 7L12 12l8.7-5M12 22.5V12' }\r\n ]\r\n },\r\n personBadge: {\r\n path: 'M12 2L4 6v5c0 5.55 3.84 10.74 8 12 4.16-1.26 8-6.45 8-12V6l-8-4z',\r\n additionalShapes: [\r\n { type: 'circle', cx: '12', cy: '12', r: '1.5' },\r\n { type: 'path', d: 'M12 9.5v1m0 3v1m2.5-2.5h-1m-3 0h-1' }\r\n ]\r\n },\r\n listTask: {\r\n path: 'M9 6h12M9 12h12M9 18h12',\r\n additionalShapes: [\r\n { type: 'path', d: 'M3 5l1.5 1.5L7 4' },\r\n { type: 'path', d: 'M3 11l1.5 1.5L7 10' },\r\n { type: 'path', d: 'M3 17l1.5 1.5L7 16' }\r\n ]\r\n },\r\n shuffle: {\r\n path: 'M16 3h5v5M4 20L21 3M21 16v5h-5M15 15l6 6M4 4l5 5'\r\n },\r\n motor: {\r\n path: 'M9 3v3m6-3v3M9 18v3m6-3v3M3 9h3M3 15h3m12-6h3m-3 6h3',\r\n additionalShapes: [\r\n { type: 'circle', cx: '12', cy: '12', r: '8' },\r\n { type: 'circle', cx: '12', cy: '12', r: '3', fill: 'color' },\r\n { type: 'path', d: 'M12 4v2m0 12v2M4 12h2m12 0h2M7.05 7.05l1.42 1.42m7.07 7.07l1.41 1.41M7.05 16.95l1.42-1.42m7.07-7.07l1.41-1.41' }\r\n ]\r\n },\r\n box: {\r\n path: 'M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8z',\r\n additionalShapes: [\r\n { type: 'path', d: 'M12 2.7L3.3 7v9.3l8.7 5 8.7-5V7L12 2.7z' },\r\n { type: 'path', d: 'M12 22V12M3.3 7L12 12l8.7-5' }\r\n ]\r\n },\r\n bell: {\r\n path: 'M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9M13.73 21a2 2 0 0 1-3.46 0'\r\n },\r\n message: {\r\n path: 'M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z'\r\n },\r\n send: {\r\n path: 'M22 2L11 13M22 2l-7 20-4-9-9-4 20-7z'\r\n },\r\n file: {\r\n path: 'M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z',\r\n additionalShapes: [{ type: 'path', d: 'M13 2v7h7' }]\r\n },\r\n folder: {\r\n path: 'M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z'\r\n },\r\n save: {\r\n path: 'M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z',\r\n additionalShapes: [\r\n { type: 'path', d: 'M15 3v6h4M9 21v-8h6v8' }\r\n ]\r\n },\r\n print: {\r\n path: 'M6 9V2h12v7M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2',\r\n additionalShapes: [{ type: 'rect', x: '6', y: '14', width: '12', height: '8', rx: '1' }]\r\n },\r\n clock: {\r\n path: 'M12 6v6l4 2',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n calendar: {\r\n path: 'M8 2v4m8-4v4M3 10h18',\r\n additionalShapes: [{ type: 'rect', x: '3', y: '4', width: '18', height: '18', rx: '2' }]\r\n },\r\n timer: {\r\n path: 'M12 8v4l2 2',\r\n additionalShapes: [\r\n { type: 'circle', cx: '12', cy: '13', r: '9' },\r\n { type: 'path', d: 'M9 2h6' }\r\n ]\r\n },\r\n lock: {\r\n path: 'M19 11H5a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7a2 2 0 0 0-2-2zM7 11V7a5 5 0 0 1 10 0v4'\r\n },\r\n unlock: {\r\n path: 'M19 11H5a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7a2 2 0 0 0-2-2zM7 11V7a5 5 0 0 1 9.9-1'\r\n },\r\n chart: {\r\n path: 'M3 3v18h18M7 16l4-4 4 4 6-6'\r\n },\r\n table: {\r\n path: 'M3 3h18v18H3zM3 9h18M3 15h18M9 3v18'\r\n },\r\n database: {\r\n path: 'M12 8c-4.97 0-9-1.34-9-3s4.03-3 9-3 9 1.34 9 3-4.03 3-9 3zM3 5v5c0 1.66 4.03 3 9 3s9-1.34 9-3V5M3 10v5c0 1.66 4.03 3 9 3s9-1.34 9-3v-5'\r\n },\r\n home: {\r\n path: 'm3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z',\r\n additionalShapes: [{ type: 'path', d: 'M9 22V12h6v10' }]\r\n },\r\n menu: {\r\n path: 'M3 12h18M3 6h18M3 18h18'\r\n },\r\n moreVert: {\r\n path: 'M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z'\r\n },\r\n arrowLeft: {\r\n path: 'm15 18-6-6 6-6'\r\n },\r\n arrowRight: {\r\n path: 'm9 18 6-6-6-6'\r\n },\r\n arrowBack: {\r\n path: 'm12 19-7-7 7-7M19 12H5'\r\n },\r\n history: {\r\n path: 'M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8',\r\n additionalShapes: [\r\n { type: 'path', d: 'M3 3v5h5' },\r\n { type: 'path', d: 'M12 7v5l4 2' }\r\n ]\r\n },\r\n copy: {\r\n path: 'M8 4v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7.242a2 2 0 0 0-.602-1.43L16.083 2.57A2 2 0 0 0 14.685 2H10a2 2 0 0 0-2 2z',\r\n additionalShapes: [{ type: 'rect', x: '4', y: '8', width: '12', height: '12', rx: '2' }]\r\n },\r\n filter: {\r\n path: 'M22 3H2l8 9.46V19l4 2v-8.54L22 3z'\r\n },\r\n sort: {\r\n path: 'M11 5h10M11 9h7M11 13h4M3 17l3 3m0 0l3-3m-3 3V4'\r\n },\r\n help: {\r\n path: 'M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3m.08 4h.01',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n warning: {\r\n path: 'M12 9v4',\r\n additionalShapes: [\r\n { type: 'circle', cx: '12', cy: '12', r: '10' },\r\n { type: 'circle', cx: '12', cy: '17', r: '0.5', fill: 'color' }\r\n ]\r\n },\r\n dashboard: {\r\n path: 'M3 13h8V3H3zm0 8h8v-6H3zm10 0h8V11h-8zm0-18v6h8V3z'\r\n },\r\n settingsApplications: {\r\n path: 'M12 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm7-7H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2z' +\r\n 'm-1.75 9c0 .23-.02.46-.05.68l1.48 1.16c.13.11.17.3.08.45l-1.4 2.42c-.09.15-.27.21-.43.15l-1.74-.7c-.36.28-.76.51-1.18.69l-.26 1.85c-.03.17-.18.3-.35.3h-2.8' +\r\n 'c-.17 0-.32-.13-.35-.29l-.26-1.85c-.43-.18-.82-.41-1.18-.69l-1.74.7c-.16.06-.34 0-.43-.15l-1.4-2.42c-.09-.15-.05-.34.08-.45l1.48-1.16c-.03-.23-.05-.46-.05-.69 0-.23.02-.46.05-.68' +\r\n 'l-1.48-1.16c-.13-.11-.17-.3-.08-.45l1.4-2.42c.09-.15.27-.21.43-.15l1.74.7c.36-.28.76-.51 1.18-.69l.26-1.85c.03-.17.18-.3.35-.3h2.8' +\r\n 'c.17 0 .32.13.35.29l.26 1.85c.43.18.82.41 1.18.69l1.74-.7c.16-.06.34 0 .43.15l1.4 2.42c.09.15.05.34-.08.45l-1.48 1.16c.03.23.05.46.05.69z'\r\n },\r\n route: {\r\n path: 'M19 15.18V7c0-2.21-1.79-4-4-4s-4 1.79-4 4v10c0 1.1-.9 2-2 2s-2-.9-2-2V8.82C8.16 8.4 9 7.3 9 6c0-1.66-1.34-3-3-3S3 4.34 3 6c0 1.3.84 2.4 2 2.82V17c0 2.21 1.79 4 4 4s4-1.79 4-4V7c0-1.1.9-2 2-2s2 .9 2 2v8.18A2.996 2.996 0 0 0 15 18c0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.3-.84-2.4-2-2.82z'\r\n },\r\n developerBoard: {\r\n path: 'M9 2v4m6-4v4M9 18v4m6-18v4M2 9h4M2 15h4m16-6h4m-4 6h4',\r\n additionalShapes: [\r\n { type: 'rect', x: '5', y: '5', width: '14', height: '14', rx: '2' },\r\n { type: 'rect', x: '9', y: '9', width: '6', height: '6', rx: '0.5' },\r\n { type: 'circle', cx: '12', cy: '12', r: '1.5', fill: 'color' }\r\n ]\r\n },\r\n directions: {\r\n path: 'm21.41 10.59-7.99-8c-.78-.78-2.05-.78-2.83 0l-8.01 8c-.78.78-.78 2.05 0 2.83l8.01 8c.78.78 2.05.78 2.83 0l7.99-8c.79-.79.79-2.05 0-2.83zM13.5 14.5V12H10v3H8v-4c0-.55.45-1 1-1h4.5V7.5L17 11l-3.5 3.5z'\r\n },\r\n category: {\r\n path: 'M12 2 6.5 11h11z',\r\n additionalShapes: [\r\n { type: 'circle', cx: '17.5', cy: '17.5', r: '3.5' },\r\n { type: 'rect', x: '3', y: '14', width: '7', height: '7', rx: '1' }\r\n ]\r\n },\r\n logout: {\r\n path: 'M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4m7 14 5-5m0 0-5-5m5 5H9'\r\n },\r\n heart: {\r\n path: HEART_PATH\r\n },\r\n heartFilled: {\r\n path: HEART_PATH,\r\n fill: true\r\n },\r\n heartBroken: {\r\n path: HEART_PATH,\r\n additionalShapes: [\r\n { type: 'path', d: 'M12 5.5l-1 2.5h2l-1.5 3h1.5l-1 3.5V21' }\r\n ]\r\n },\r\n user: {\r\n path: 'M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '7', r: '4' }]\r\n },\r\n sun: {\r\n path: 'M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zM2 13h2c.55 0 1-.45 1-1s-.45-1-1-1H2c-.55 0-1 .45-1 1s.45 1 1 1zm18 0h2c.55 0 1-.45 1-1s-.45-1-1-1h-2c-.55 0-1 .45-1 1s.45 1 1 1z' +\r\n 'M11 2v2c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1s-1 .45-1 1zm0 18v2c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1s-1 .45-1 1z' +\r\n 'M5.99 4.58c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0s.39-1.03 0-1.41L5.99 4.58zm12.37 12.37c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0 .39-.39.39-1.03 0-1.41l-1.06-1.06z' +\r\n 'm1.06-10.96c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0l1.06-1.06zM7.05 18.36c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0l1.06-1.06z'\r\n },\r\n moon: {\r\n path: 'M9.37 5.51C9.19 6.15 9.1 6.82 9.1 7.5c0 4.08 3.32 7.4 7.4 7.4.68 0 1.35-.09 1.99-.27C17.45 17.19 14.93 19 12 19c-3.86 0-7-3.14-7-7 0-2.93 1.81-5.45 4.37-6.49z' +\r\n 'M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9 9-4.03 9-9c0-.46-.04-.92-.1-1.36-.98 1.37-2.58 2.26-4.4 2.26-2.98 0-5.4-2.42-5.4-5.4 0-1.81.89-3.42 2.26-4.4-.44-.06-.9-.1-1.36-.1z'\r\n },\r\n google: {\r\n path: '',\r\n multiColor: {\r\n colors: [\r\n '#4285F4', // Azul - parte superior\r\n '#34A853', // Verde - parte inferior derecha\r\n '#FBBC05', // Amarillo - parte inferior izquierda\r\n '#EA4335', // Rojo - parte izquierda\r\n ],\r\n paths: [\r\n 'M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z',\r\n 'M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z',\r\n 'M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z',\r\n 'M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z'\r\n ]\r\n }\r\n },\r\n local_drink: {\r\n path: 'M3 2l2.01 18.23C5.13 21.23 5.97 22 7 22h10c1.03 0 1.87-.77 1.99-1.77L21 2H3zm9 17c-1.66 0-3-1.34-3-3 0-2 3-5.4 3-5.4s3 3.4 3 5.4c0 1.66-1.34 3-3 3zm6.33-11H5.67l-.44-4h13.53l-.43 4z'\r\n },\r\n list: {\r\n path: 'M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z'\r\n },\r\n gpsFixed: {\r\n path: 'M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm8.94 3A8.994 8.994 0 0 0 13 3.06V1h-2v2.06A8.994 8.994 0 0 0 3.06 11H1v2h2.06A8.994 8.994 0 0 0 11 20.94V23h2v-2.06A8.994 8.994 0 0 0 20.94 13H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z'\r\n },\r\n locationPin: {\r\n path: 'M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z'\r\n },\r\n controlPoint: {\r\n path: 'M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7z',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n },\r\n photo: {\r\n path: 'M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z'\r\n },\r\n restaurant: {\r\n path: 'M11 9H9V2H7v7H5V2H3v7c0 2.12 1.66 3.84 3.75 3.97V22h2.5v-9.03C11.34 12.84 13 11.12 13 9V2h-2v7zm5-3v8h2.5v8H21V2c-2.76 0-5 2.24-5 4z'\r\n },\r\n iceCream: {\r\n path: 'M8.79 12.4 12 20.94l3.21-8.54C16.26 12.15 17 11.2 17 10c0-1.66-1.34-3-3-3 0-.55-.45-1-1-1s-1 .45-1 1c-1.66 0-3 1.34-3 3 0 1.2.74 2.15 1.79 2.4z',\r\n additionalShapes: [\r\n { type: 'path', d: 'M14 2a3 3 0 0 1 3 3h-2a1 1 0 0 0-1-1z' },\r\n { type: 'path', d: 'M10 2a3 3 0 0 0-3 3h2a1 1 0 0 1 1-1z' }\r\n ]\r\n },\r\n barChart: {\r\n path: 'M5 9.2h3V19H5V9.2zM10.6 5h2.8v14h-2.8V5zm5.6 8H19v6h-2.8v-6z'\r\n },\r\n waterDrop: {\r\n path: 'M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z'\r\n },\r\n cocktailGlass: {\r\n path: 'M21 5V3H3v2l8 9v5H6v2h12v-2h-5v-5l8-9zM7.43 7 5.66 5h12.69l-1.78 2H7.43z'\r\n },\r\n acUnit: {\r\n path: 'M22 11h-4.17l3.24-3.24-1.41-1.42L15 11h-2V9l4.66-4.66-1.42-1.41L13 6.17V2h-2v4.17L7.76 2.93 6.34 4.34 11 9v2H9L4.34 6.34 2.93 7.76 6.17 11H2v2h4.17l-3.24 3.24 1.41 1.42L9 13h2v2l-4.66 4.66 1.42 1.41L11 17.83V22h2v-4.17l3.24 3.24 1.42-1.41L13 15v-2h2l4.66 4.66 1.41-1.42L17.83 13H22v-2z'\r\n },\r\n formatListNumbered: {\r\n path: 'M2 17h2v.5H3v1h1v.5H2v1h3v-4H2v1zm1-9h1V4H2v1h1v3zm-1 3h1.8L2 13.1v.9h3v-1H3.2L5 10.9V10H2v1zm5-6v2h14V5H7zm0 14h14v-2H7v2zm0-6h14v-2H7v2z'\r\n },\r\n widgets: {\r\n path: 'M13 13v8h8v-8h-8zM3 21h8v-8H3v8zM3 3v8h8V3H3zm13.66-1.31L11 7.34 16.66 13l5.66-5.66-5.66-5.65z'\r\n },\r\n contrast: {\r\n path: 'M12 22c5.52 0 10-4.48 10-10S17.52 2 12 2 2 6.48 2 12s4.48 10 10 10zm0-18c4.42 0 8 3.58 8 8s-3.58 8-8 8z',\r\n additionalShapes: [{ type: 'path', d: 'M12 4v16' }]\r\n },\r\n grid3x3: {\r\n path: 'M20 3H4c-.55 0-1 .45-1 1v16c0 .55.45 1 1 1h16c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zM8 19H5v-3h3v3zm0-5H5v-3h3v3zm0-5H5V6h3v3zm5 10h-3v-3h3v3zm0-5h-3v-3h3v3zm0-5h-3V6h3v3zm5 10h-3v-3h3v3zm0-5h-3v-3h3v3zm0-5h-3V6h3v3z'\r\n },\r\n monetizationOn: {\r\n path: 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1.41 16.09V20h-2.67v-1.93c-1.71-.36-3.16-1.46-3.27-3.4h1.96c.1 1.05.82 1.87 2.65 1.87 1.96 0 2.4-.98 2.4-1.59 0-.83-.44-1.61-2.67-2.14-2.48-.6-4.18-1.62-4.18-3.67 0-1.72 1.39-2.84 3.11-3.21V4h2.67v1.95c1.86.45 2.79 1.86 2.85 3.39H14.3c-.05-1.11-.64-1.87-2.22-1.87-1.5 0-2.4.68-2.4 1.64 0 .84.65 1.39 2.67 1.91s4.18 1.39 4.18 3.91c-.01 1.83-1.38 2.83-3.12 3.16z'\r\n },\r\n calculate: {\r\n path: 'M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM13.03 7.06 14.09 6l1.41 1.41L16.91 6l1.06 1.06-1.41 1.41 1.41 1.41-1.06 1.06-1.41-1.4-1.41 1.41-1.06-1.06 1.41-1.41-1.41-1.42zM6.25 7.72h5v1.5h-5v-1.5zM11.5 16h-2v2H8v-2H6v-1.5h2v-2h1.5v2h2V16zm5.13.02-1.41-1.41-1.46 1.41-1.05-1.05 1.41-1.41-1.41-1.41L13.76 11l1.41 1.41 1.41-1.41 1.06 1.06-1.41 1.41 1.41 1.41-1.01 1.05z'\r\n },\r\n buildCircle: {\r\n path: 'M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5.78 14.61-1.14 1.14-1.71-1.71-2.28 2.27-1.14-1.14 2.27-2.27-1.71-1.71 1.14-1.14 1.71 1.71 1.71-1.71 1.14 1.14-1.71 1.71 1.72 1.71zM15.5 7.5c0 .83-.67 1.5-1.5 1.5H8.75v3.68A2.99 2.99 0 0 0 10 9.5c1.65 0 3 1.35 3 3s-1.35 3-3 3c-1.3 0-2.4-.84-2.82-2H5.5c-.28 0-.5-.22-.5-.5s.22-.5.5-.5h1.68c.15-.62.51-1.16 1-1.55V7.5c0-.28.22-.5.5-.5H14c.28 0 .5.22.5.5z'\r\n },\r\n addBox: {\r\n path: 'M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10h-4v4h-2v-4H7v-2h4V7h2v4h4v2z'\r\n },\r\n wallet: {\r\n path: 'M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1',\r\n additionalShapes: [{ type: 'path', d: 'M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4' }]\r\n },\r\n cash: {\r\n path: 'M6 12h.01M18 12h.01',\r\n additionalShapes: [\r\n { type: 'rect', x: '2', y: '6', width: '20', height: '12', rx: '2' },\r\n { type: 'circle', cx: '12', cy: '12', r: '2' }\r\n ]\r\n },\r\n coin: {\r\n path: 'M18.09 10.37A6 6 0 1 1 10.34 18',\r\n additionalShapes: [\r\n { type: 'circle', cx: '8', cy: '8', r: '6' },\r\n { type: 'path', d: 'M7 6h1v4' },\r\n { type: 'path', d: 'm16.71 13.88.7.71-2.82 2.82' }\r\n ]\r\n },\r\n trendingUp: {\r\n path: 'M22 7l-8.5 8.5-5-5L2 17',\r\n additionalShapes: [{ type: 'path', d: 'M16 7h6v6' }]\r\n },\r\n trendingDown: {\r\n path: 'M22 17l-8.5-8.5-5 5L2 7',\r\n additionalShapes: [{ type: 'path', d: 'M16 17h6v-6' }]\r\n },\r\n default: {\r\n path: '',\r\n additionalShapes: [{ type: 'circle', cx: '12', cy: '12', r: '10' }]\r\n }\r\n} as const;"]}
@@ -1,17 +1,21 @@
1
- import { ChangeDetectionStrategy, Component, output, signal } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, input, model, output, signal } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  /**
4
+ * Campo de entrada inline configurable desde el padre (label, type, readonly, etc.).
4
5
  *
6
+ * `value` es un `model()`: soporta two-way binding `[(value)]` y conserva `.set()`.
7
+ * El output `valueChange` lo genera implicitamente el model (misma firma `string`
8
+ * que el output explicito que existia en 2.x); NO se redeclara para evitar la
9
+ * colision de nombres y la doble emision por cada tecla.
5
10
  */
6
11
  export class InputFieldComponent {
7
- label = signal('', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
8
- value = signal('', ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
9
- placeholder = signal('', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
10
- type = signal('text', ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
11
- maxLength = signal(undefined, ...(ngDevMode ? [{ debugName: "maxLength" }] : /* istanbul ignore next */ []));
12
- readonly = signal(false, ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
13
- required = signal(false, ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
14
- valueChange = output();
12
+ label = input('', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
13
+ value = model('', ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
14
+ placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
15
+ type = input('text', ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
16
+ maxLength = input(undefined, ...(ngDevMode ? [{ debugName: "maxLength" }] : /* istanbul ignore next */ []));
17
+ readonly = input(false, ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
18
+ required = input(false, ...(ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []));
15
19
  enterPressed = output();
16
20
  isFocused = signal(false, ...(ngDevMode ? [{ debugName: "isFocused" }] : /* istanbul ignore next */ []));
17
21
  /**
@@ -19,9 +23,7 @@ export class InputFieldComponent {
19
23
  * @param event
20
24
  */
21
25
  onValueChange(event) {
22
- const newValue = event.target.value;
23
- this.value.set(newValue);
24
- this.valueChange.emit(newValue);
26
+ this.value.set(event.target.value);
25
27
  }
26
28
  /**
27
29
  *
@@ -45,10 +47,10 @@ export class InputFieldComponent {
45
47
  }
46
48
  }
47
49
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: InputFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
48
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: InputFieldComponent, isStandalone: true, selector: "c80-input-field", outputs: { valueChange: "valueChange", enterPressed: "enterPressed" }, ngImport: i0, template: "<div class=\"input-field\">\n <div class=\"input-field__item\">\n <span class=\"input-field__label\">{{ label() }}</span>\n <input class=\"input-field__input\" [class.input-field__input--focused]=\"isFocused()\" [type]=\"type()\" [value]=\"value()\" [placeholder]=\"placeholder()\" [attr.maxlength]=\"maxLength()\" [readonly]=\"readonly()\" [required]=\"required()\"\n (input)=\"onValueChange($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" (keydown)=\"onKeyDown($event)\" />\n </div>\n</div>", styles: [".input-field{width:100%}.input-field__item{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--color-surface);border-radius:.5rem;gap:1rem;transition:all var(--transition-base)}.input-field__item:hover{background:var(--color-bg-dark)}.input-field__label{color:var(--color-text-primary);min-width:fit-content;font-size:.875rem;font-weight:500}.input-field__input{flex:1;background:transparent;border:none;outline:none;color:var(--color-text-primary);text-align:right;padding:.5rem 0;min-width:0}.input-field__input::placeholder{color:var(--color-text-tertiary);font-style:italic}.input-field__input:focus{color:var(--color-primary)}.input-field__input[readonly]{cursor:default;color:var(--color-text-secondary)}.input-field__input--focused{color:var(--color-primary)}@media(max-width:768px){.input-field__item{padding:.75rem;gap:.75rem}.input-field__label,.input-field__input{font-size:.875rem}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
50
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.17", type: InputFieldComponent, isStandalone: true, selector: "c80-input-field", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", enterPressed: "enterPressed" }, ngImport: i0, template: "<div class=\"input-field\">\n <div class=\"input-field__item\">\n <span class=\"input-field__label\">{{ label() }}</span>\n <input class=\"input-field__input\" [class.input-field__input--focused]=\"isFocused()\" [type]=\"type()\" [value]=\"value()\" [placeholder]=\"placeholder()\" [attr.maxlength]=\"maxLength()\" [readonly]=\"readonly()\" [required]=\"required()\"\n (input)=\"onValueChange($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" (keydown)=\"onKeyDown($event)\" />\n </div>\n</div>", styles: [".input-field{width:100%}.input-field__item{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--color-surface);border-radius:.5rem;gap:1rem;transition:all var(--transition-base)}.input-field__item:hover{background:var(--color-bg-dark)}.input-field__label{color:var(--color-text-primary);min-width:fit-content;font-size:.875rem;font-weight:500}.input-field__input{flex:1;background:transparent;border:none;outline:none;color:var(--color-text-primary);text-align:right;padding:.5rem 0;min-width:0}.input-field__input::placeholder{color:var(--color-text-tertiary);font-style:italic}.input-field__input:focus{color:var(--color-primary)}.input-field__input[readonly]{cursor:default;color:var(--color-text-secondary)}.input-field__input--focused{color:var(--color-primary)}@media(max-width:768px){.input-field__item{padding:.75rem;gap:.75rem}.input-field__label,.input-field__input{font-size:.875rem}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
49
51
  }
50
52
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: InputFieldComponent, decorators: [{
51
53
  type: Component,
52
54
  args: [{ selector: 'c80-input-field', imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"input-field\">\n <div class=\"input-field__item\">\n <span class=\"input-field__label\">{{ label() }}</span>\n <input class=\"input-field__input\" [class.input-field__input--focused]=\"isFocused()\" [type]=\"type()\" [value]=\"value()\" [placeholder]=\"placeholder()\" [attr.maxlength]=\"maxLength()\" [readonly]=\"readonly()\" [required]=\"required()\"\n (input)=\"onValueChange($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" (keydown)=\"onKeyDown($event)\" />\n </div>\n</div>", styles: [".input-field{width:100%}.input-field__item{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--color-surface);border-radius:.5rem;gap:1rem;transition:all var(--transition-base)}.input-field__item:hover{background:var(--color-bg-dark)}.input-field__label{color:var(--color-text-primary);min-width:fit-content;font-size:.875rem;font-weight:500}.input-field__input{flex:1;background:transparent;border:none;outline:none;color:var(--color-text-primary);text-align:right;padding:.5rem 0;min-width:0}.input-field__input::placeholder{color:var(--color-text-tertiary);font-style:italic}.input-field__input:focus{color:var(--color-primary)}.input-field__input[readonly]{cursor:default;color:var(--color-text-secondary)}.input-field__input--focused{color:var(--color-primary)}@media(max-width:768px){.input-field__item{padding:.75rem;gap:.75rem}.input-field__label,.input-field__input{font-size:.875rem}}\n"] }]
53
- }], propDecorators: { valueChange: [{ type: i0.Output, args: ["valueChange"] }], enterPressed: [{ type: i0.Output, args: ["enterPressed"] }] } });
55
+ }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], maxLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxLength", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], enterPressed: [{ type: i0.Output, args: ["enterPressed"] }] } });
54
56
  //# sourceMappingURL=input-field.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-field.component.js","sourceRoot":"","sources":["../../../../../libs/ui/src/lib/input-field/input-field.component.ts","../../../../../libs/ui/src/lib/input-field/input-field.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;;AAEnF;;GAEG;AAQH,MAAM,OAAO,mBAAmB;IACnB,KAAK,GAAG,MAAM,CAAS,EAAE,4EAAC,CAAC;IAC3B,KAAK,GAAG,MAAM,CAAS,EAAE,4EAAC,CAAC;IAC3B,WAAW,GAAG,MAAM,CAAS,EAAE,kFAAC,CAAC;IACjC,IAAI,GAAG,MAAM,CAAgC,MAAM,2EAAC,CAAC;IACrD,SAAS,GAAG,MAAM,CAAqB,SAAS,gFAAC,CAAC;IAClD,QAAQ,GAAG,MAAM,CAAU,KAAK,+EAAC,CAAC;IAClC,QAAQ,GAAG,MAAM,CAAU,KAAK,+EAAC,CAAC;IAE3C,WAAW,GAAG,MAAM,EAAU,CAAC;IAC/B,YAAY,GAAG,MAAM,EAAQ,CAAC;IAEX,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC,CAAC;IAE7C;;;OAGG;IACO,aAAa,CAAC,KAAY;QAChC,MAAM,QAAQ,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACO,OAAO;QACb,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACO,MAAM;QACZ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACO,SAAS,CAAC,KAAoB;QACpC,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;IACL,CAAC;wGA9CQ,mBAAmB;4FAAnB,mBAAmB,kJCZhC,ihBAMM;;4FDMO,mBAAmB;kBAP/B,SAAS;+BACI,iBAAiB,WAClB,EAAE,mBAGM,uBAAuB,CAAC,MAAM","sourcesContent":["import { ChangeDetectionStrategy, Component, output, signal } from '@angular/core';\r\n\r\n/**\r\n *\r\n */\r\n@Component({\r\n selector: 'c80-input-field',\r\n imports: [],\r\n templateUrl: './input-field.component.html',\r\n styleUrl: './input-field.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class InputFieldComponent {\r\n readonly label = signal<string>('');\r\n readonly value = signal<string>('');\r\n readonly placeholder = signal<string>('');\r\n readonly type = signal<'text' | 'email' | 'password'>('text');\r\n readonly maxLength = signal<number | undefined>(undefined);\r\n readonly readonly = signal<boolean>(false);\r\n readonly required = signal<boolean>(false);\r\n\r\n valueChange = output<string>();\r\n enterPressed = output<void>();\r\n\r\n protected readonly isFocused = signal(false);\r\n\r\n /**\r\n *\r\n * @param event\r\n */\r\n protected onValueChange(event: Event): void {\r\n const newValue = (event.target as HTMLInputElement).value;\r\n this.value.set(newValue);\r\n this.valueChange.emit(newValue);\r\n }\r\n\r\n /**\r\n *\r\n */\r\n protected onFocus(): void {\r\n this.isFocused.set(true);\r\n }\r\n\r\n /**\r\n *\r\n */\r\n protected onBlur(): void {\r\n this.isFocused.set(false);\r\n }\r\n\r\n /**\r\n *\r\n * @param event\r\n */\r\n protected onKeyDown(event: KeyboardEvent): void {\r\n if (event.key === 'Enter') {\r\n this.enterPressed.emit();\r\n }\r\n }\r\n}","<div class=\"input-field\">\n <div class=\"input-field__item\">\n <span class=\"input-field__label\">{{ label() }}</span>\n <input class=\"input-field__input\" [class.input-field__input--focused]=\"isFocused()\" [type]=\"type()\" [value]=\"value()\" [placeholder]=\"placeholder()\" [attr.maxlength]=\"maxLength()\" [readonly]=\"readonly()\" [required]=\"required()\"\n (input)=\"onValueChange($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" (keydown)=\"onKeyDown($event)\" />\n </div>\n</div>"]}
1
+ {"version":3,"file":"input-field.component.js","sourceRoot":"","sources":["../../../../../libs/ui/src/lib/input-field/input-field.component.ts","../../../../../libs/ui/src/lib/input-field/input-field.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;;AAEjG;;;;;;;GAOG;AAQH,MAAM,OAAO,mBAAmB;IACnB,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC,CAAC;IAC1B,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC,CAAC;IAC1B,WAAW,GAAG,KAAK,CAAS,EAAE,kFAAC,CAAC;IAChC,IAAI,GAAG,KAAK,CAA2C,MAAM,2EAAC,CAAC;IAC/D,SAAS,GAAG,KAAK,CAAqB,SAAS,gFAAC,CAAC;IACjD,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC,CAAC;IACjC,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC,CAAC;IAEjC,YAAY,GAAG,MAAM,EAAQ,CAAC;IAEpB,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC,CAAC;IAE7C;;;OAGG;IACO,aAAa,CAAC,KAAY;QAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACO,OAAO;QACb,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACO,MAAM;QACZ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACO,SAAS,CAAC,KAAoB;QACpC,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;IACL,CAAC;wGA3CQ,mBAAmB;4FAAnB,mBAAmB,6gCCjBhC,ihBAMM;;4FDWO,mBAAmB;kBAP/B,SAAS;+BACI,iBAAiB,WAClB,EAAE,mBAGM,uBAAuB,CAAC,MAAM","sourcesContent":["import { ChangeDetectionStrategy, Component, input, model, output, signal } from '@angular/core';\n\n/**\n * Campo de entrada inline configurable desde el padre (label, type, readonly, etc.).\n *\n * `value` es un `model()`: soporta two-way binding `[(value)]` y conserva `.set()`.\n * El output `valueChange` lo genera implicitamente el model (misma firma `string`\n * que el output explicito que existia en 2.x); NO se redeclara para evitar la\n * colision de nombres y la doble emision por cada tecla.\n */\n@Component({\n selector: 'c80-input-field',\n imports: [],\n templateUrl: './input-field.component.html',\n styleUrl: './input-field.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InputFieldComponent {\n readonly label = input<string>('');\n readonly value = model<string>('');\n readonly placeholder = input<string>('');\n readonly type = input<'text' | 'email' | 'password' | 'number'>('text');\n readonly maxLength = input<number | undefined>(undefined);\n readonly readonly = input<boolean>(false);\n readonly required = input<boolean>(false);\n\n readonly enterPressed = output<void>();\n\n protected readonly isFocused = signal(false);\n\n /**\n *\n * @param event\n */\n protected onValueChange(event: Event): void {\n this.value.set((event.target as HTMLInputElement).value);\n }\n\n /**\n *\n */\n protected onFocus(): void {\n this.isFocused.set(true);\n }\n\n /**\n *\n */\n protected onBlur(): void {\n this.isFocused.set(false);\n }\n\n /**\n *\n * @param event\n */\n protected onKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n this.enterPressed.emit();\n }\n }\n}\n","<div class=\"input-field\">\n <div class=\"input-field__item\">\n <span class=\"input-field__label\">{{ label() }}</span>\n <input class=\"input-field__input\" [class.input-field__input--focused]=\"isFocused()\" [type]=\"type()\" [value]=\"value()\" [placeholder]=\"placeholder()\" [attr.maxlength]=\"maxLength()\" [readonly]=\"readonly()\" [required]=\"required()\"\n (input)=\"onValueChange($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" (keydown)=\"onKeyDown($event)\" />\n </div>\n</div>"]}
@@ -1,16 +1,29 @@
1
- import { Component, input, ChangeDetectionStrategy } from '@angular/core';
1
+ import { Component, computed, input, ChangeDetectionStrategy } from '@angular/core';
2
2
  import { IconComponent } from '../icon';
3
3
  import * as i0 from "@angular/core";
4
+ const DELTA_FORMAT = new Intl.NumberFormat('es-AR', { maximumFractionDigits: 1, signDisplay: 'exceptZero' });
4
5
  /**
5
6
  *
6
7
  */
7
8
  export class StatCardComponent {
8
9
  cards = input([], ...(ngDevMode ? [{ debugName: "cards" }] : /* istanbul ignore next */ []));
10
+ items = computed(() => this.cards().map((card) => ({
11
+ color: card.color,
12
+ icon: card.icon,
13
+ text: card.text,
14
+ display: card.value ?? (card.count !== undefined ? String(card.count) : ''),
15
+ delta: card.delta === undefined
16
+ ? undefined
17
+ : {
18
+ text: `${DELTA_FORMAT.format(card.delta)}%`,
19
+ direction: card.delta > 0 ? 'up' : card.delta < 0 ? 'down' : 'flat'
20
+ }
21
+ })), ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
9
22
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: StatCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: StatCardComponent, isStandalone: true, selector: "c80-stat-card", inputs: { cards: { classPropertyName: "cards", publicName: "cards", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"stats-section py-4\">\r\n @for (card of cards(); track card.text) {\r\n <div class=\"stat-card\" [style.border-left-color]=\"card.color\">\r\n <div class=\"stat-card-content\">\r\n <div class=\"stat-content\">\r\n <c80-icon [icon]=\"card.icon\" [color]=\"'secondary'\" [size]=\"1.1\" />\r\n <div class=\"stat-info\">\r\n <div class=\"stat-number\">{{ card.count }}</div>\r\n <div class=\"stat-label\">{{ card.text }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>", styles: [".stats-section{display:flex;flex-direction:row;flex-wrap:wrap;gap:16px}.stats-section .stat-card{flex:1;min-width:200px;box-shadow:var(--shadow-sm);transition:box-shadow .3s ease;border-left:4px solid transparent;background:var(--color-bg-primary);color:var(--color-text-primary);border-radius:4px;display:block;position:relative;padding:0;overflow:hidden}.stats-section .stat-card:hover{box-shadow:var(--shadow-md)}.stats-section .stat-card-content{display:block;padding:16px}.stat-content{display:flex;align-items:center;gap:12px}.stat-info .stat-number{font-size:24px;font-weight:700;line-height:1;margin-bottom:4px;color:var(--color-text-secondary)}.stat-info .stat-label{font-size:12px;color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.5px}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "c80-icon", inputs: ["icon", "color", "customColor", "disabled", "size", "button", "border", "type", "textLeft", "textRight", "dark"], outputs: ["iconClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
23
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: StatCardComponent, isStandalone: true, selector: "c80-stat-card", inputs: { cards: { classPropertyName: "cards", publicName: "cards", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"stats-section py-4\">\n @for (item of items(); track item.text) {\n <div class=\"stat-card\" [style.border-left-color]=\"item.color\">\n <div class=\"stat-card-content\">\n <div class=\"stat-content\">\n <c80-icon [icon]=\"item.icon\" [color]=\"'secondary'\" [size]=\"1.1\" />\n <div class=\"stat-info\">\n <div class=\"stat-number-row\">\n <div class=\"stat-number\">{{ item.display }}</div>\n @if (item.delta) {\n <span class=\"stat-delta\" [attr.data-direction]=\"item.delta.direction\">\n @if (item.delta.direction !== 'flat') {\n <c80-icon [icon]=\"item.delta.direction === 'down' ? 'trendingDown' : 'trendingUp'\" customColor=\"currentColor\" [size]=\"0.55\" />\n }\n {{ item.delta.text }}\n </span>\n }\n </div>\n <div class=\"stat-label\">{{ item.text }}</div>\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [".stats-section{display:flex;flex-direction:row;flex-wrap:wrap;gap:16px}.stats-section .stat-card{flex:1;min-width:200px;box-shadow:var(--shadow-sm);transition:box-shadow .3s ease;border-left:4px solid transparent;background:var(--color-bg-primary);color:var(--color-text-primary);border-radius:4px;display:block;position:relative;padding:0;overflow:hidden}.stats-section .stat-card:hover{box-shadow:var(--shadow-md)}.stats-section .stat-card-content{display:block;padding:16px}.stat-content{display:flex;align-items:center;gap:12px}.stat-info .stat-number-row{display:flex;align-items:baseline;gap:6px}.stat-info .stat-delta{display:inline-flex;align-items:center;font-size:12px;font-weight:600;white-space:nowrap}.stat-info .stat-delta[data-direction=up]{color:var(--color-text-success, #059669)}.stat-info .stat-delta[data-direction=down]{color:var(--color-text-danger, #dc2626)}.stat-info .stat-delta[data-direction=flat]{color:var(--color-text-tertiary, #9ca3af)}.stat-info .stat-number{font-size:24px;font-weight:700;line-height:1;margin-bottom:4px;color:var(--color-text-secondary)}.stat-info .stat-label{font-size:12px;color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.5px}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "c80-icon", inputs: ["icon", "color", "customColor", "disabled", "size", "button", "border", "type", "textLeft", "textRight", "dark"], outputs: ["iconClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11
24
  }
12
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: StatCardComponent, decorators: [{
13
26
  type: Component,
14
- args: [{ selector: 'c80-stat-card', imports: [IconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"stats-section py-4\">\r\n @for (card of cards(); track card.text) {\r\n <div class=\"stat-card\" [style.border-left-color]=\"card.color\">\r\n <div class=\"stat-card-content\">\r\n <div class=\"stat-content\">\r\n <c80-icon [icon]=\"card.icon\" [color]=\"'secondary'\" [size]=\"1.1\" />\r\n <div class=\"stat-info\">\r\n <div class=\"stat-number\">{{ card.count }}</div>\r\n <div class=\"stat-label\">{{ card.text }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>", styles: [".stats-section{display:flex;flex-direction:row;flex-wrap:wrap;gap:16px}.stats-section .stat-card{flex:1;min-width:200px;box-shadow:var(--shadow-sm);transition:box-shadow .3s ease;border-left:4px solid transparent;background:var(--color-bg-primary);color:var(--color-text-primary);border-radius:4px;display:block;position:relative;padding:0;overflow:hidden}.stats-section .stat-card:hover{box-shadow:var(--shadow-md)}.stats-section .stat-card-content{display:block;padding:16px}.stat-content{display:flex;align-items:center;gap:12px}.stat-info .stat-number{font-size:24px;font-weight:700;line-height:1;margin-bottom:4px;color:var(--color-text-secondary)}.stat-info .stat-label{font-size:12px;color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.5px}\n"] }]
27
+ args: [{ selector: 'c80-stat-card', imports: [IconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"stats-section py-4\">\n @for (item of items(); track item.text) {\n <div class=\"stat-card\" [style.border-left-color]=\"item.color\">\n <div class=\"stat-card-content\">\n <div class=\"stat-content\">\n <c80-icon [icon]=\"item.icon\" [color]=\"'secondary'\" [size]=\"1.1\" />\n <div class=\"stat-info\">\n <div class=\"stat-number-row\">\n <div class=\"stat-number\">{{ item.display }}</div>\n @if (item.delta) {\n <span class=\"stat-delta\" [attr.data-direction]=\"item.delta.direction\">\n @if (item.delta.direction !== 'flat') {\n <c80-icon [icon]=\"item.delta.direction === 'down' ? 'trendingDown' : 'trendingUp'\" customColor=\"currentColor\" [size]=\"0.55\" />\n }\n {{ item.delta.text }}\n </span>\n }\n </div>\n <div class=\"stat-label\">{{ item.text }}</div>\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [".stats-section{display:flex;flex-direction:row;flex-wrap:wrap;gap:16px}.stats-section .stat-card{flex:1;min-width:200px;box-shadow:var(--shadow-sm);transition:box-shadow .3s ease;border-left:4px solid transparent;background:var(--color-bg-primary);color:var(--color-text-primary);border-radius:4px;display:block;position:relative;padding:0;overflow:hidden}.stats-section .stat-card:hover{box-shadow:var(--shadow-md)}.stats-section .stat-card-content{display:block;padding:16px}.stat-content{display:flex;align-items:center;gap:12px}.stat-info .stat-number-row{display:flex;align-items:baseline;gap:6px}.stat-info .stat-delta{display:inline-flex;align-items:center;font-size:12px;font-weight:600;white-space:nowrap}.stat-info .stat-delta[data-direction=up]{color:var(--color-text-success, #059669)}.stat-info .stat-delta[data-direction=down]{color:var(--color-text-danger, #dc2626)}.stat-info .stat-delta[data-direction=flat]{color:var(--color-text-tertiary, #9ca3af)}.stat-info .stat-number{font-size:24px;font-weight:700;line-height:1;margin-bottom:4px;color:var(--color-text-secondary)}.stat-info .stat-label{font-size:12px;color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.5px}\n"] }]
15
28
  }], propDecorators: { cards: [{ type: i0.Input, args: [{ isSignal: true, alias: "cards", required: false }] }] } });
16
29
  //# sourceMappingURL=stat-card.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stat-card.component.js","sourceRoot":"","sources":["../../../../../libs/ui/src/lib/stat-card/stat-card.component.ts","../../../../../libs/ui/src/lib/stat-card/stat-card.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;;AAGxC;;GAEG;AAQH,MAAM,OAAO,iBAAiB;IACnB,KAAK,GAAG,KAAK,CAAY,EAAE,4EAAC,CAAC;wGAD3B,iBAAiB;4FAAjB,iBAAiB,6MCd9B,4iBAcM,6zBDLM,aAAa;;4FAKZ,iBAAiB;kBAP7B,SAAS;+BACE,eAAe,WAChB,CAAC,aAAa,CAAC,mBAGP,uBAAuB,CAAC,MAAM","sourcesContent":["import { Component, input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { IconComponent } from '../icon';\r\nimport type { CardDef } from './stat-card.types';\r\n\r\n/**\r\n *\r\n */\r\n@Component({\r\n selector: 'c80-stat-card',\r\n imports: [IconComponent],\r\n templateUrl: './stat-card.component.html',\r\n styleUrls: ['./stat-card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class StatCardComponent {\r\n readonly cards = input<CardDef[]>([]);\r\n}\r\n","<div class=\"stats-section py-4\">\r\n @for (card of cards(); track card.text) {\r\n <div class=\"stat-card\" [style.border-left-color]=\"card.color\">\r\n <div class=\"stat-card-content\">\r\n <div class=\"stat-content\">\r\n <c80-icon [icon]=\"card.icon\" [color]=\"'secondary'\" [size]=\"1.1\" />\r\n <div class=\"stat-info\">\r\n <div class=\"stat-number\">{{ card.count }}</div>\r\n <div class=\"stat-label\">{{ card.text }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>"]}
1
+ {"version":3,"file":"stat-card.component.js","sourceRoot":"","sources":["../../../../../libs/ui/src/lib/stat-card/stat-card.component.ts","../../../../../libs/ui/src/lib/stat-card/stat-card.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;;AAGxC,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC;AAE7G;;GAEG;AAQH,MAAM,OAAO,iBAAiB;IACnB,KAAK,GAAG,KAAK,CAAY,EAAE,4EAAC,CAAC;IAEnB,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CACvC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,SAAS;YAC7B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC;gBACE,IAAI,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;gBAC3C,SAAS,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAE,IAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAE,MAAgB,CAAC,CAAC,CAAE,MAAgB;aACrG;KACN,CAAC,CAAC,4EACJ,CAAC;wGAhBS,iBAAiB;4FAAjB,iBAAiB,6MChB9B,g/BAyBA,gvCDdY,aAAa;;4FAKZ,iBAAiB;kBAP7B,SAAS;+BACE,eAAe,WAChB,CAAC,aAAa,CAAC,mBAGP,uBAAuB,CAAC,MAAM","sourcesContent":["import { Component, computed, input, ChangeDetectionStrategy } from '@angular/core';\nimport { IconComponent } from '../icon';\nimport type { CardDef } from './stat-card.types';\n\nconst DELTA_FORMAT = new Intl.NumberFormat('es-AR', { maximumFractionDigits: 1, signDisplay: 'exceptZero' });\n\n/**\n *\n */\n@Component({\n selector: 'c80-stat-card',\n imports: [IconComponent],\n templateUrl: './stat-card.component.html',\n styleUrls: ['./stat-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class StatCardComponent {\n readonly cards = input<CardDef[]>([]);\n\n protected readonly items = computed(() =>\n this.cards().map((card) => ({\n color: card.color,\n icon: card.icon,\n text: card.text,\n display: card.value ?? (card.count !== undefined ? String(card.count) : ''),\n delta: card.delta === undefined\n ? undefined\n : {\n text: `${DELTA_FORMAT.format(card.delta)}%`,\n direction: card.delta > 0 ? ('up' as const) : card.delta < 0 ? ('down' as const) : ('flat' as const)\n }\n }))\n );\n}\n","<div class=\"stats-section py-4\">\n @for (item of items(); track item.text) {\n <div class=\"stat-card\" [style.border-left-color]=\"item.color\">\n <div class=\"stat-card-content\">\n <div class=\"stat-content\">\n <c80-icon [icon]=\"item.icon\" [color]=\"'secondary'\" [size]=\"1.1\" />\n <div class=\"stat-info\">\n <div class=\"stat-number-row\">\n <div class=\"stat-number\">{{ item.display }}</div>\n @if (item.delta) {\n <span class=\"stat-delta\" [attr.data-direction]=\"item.delta.direction\">\n @if (item.delta.direction !== 'flat') {\n <c80-icon [icon]=\"item.delta.direction === 'down' ? 'trendingDown' : 'trendingUp'\" customColor=\"currentColor\" [size]=\"0.55\" />\n }\n {{ item.delta.text }}\n </span>\n }\n </div>\n <div class=\"stat-label\">{{ item.text }}</div>\n </div>\n </div>\n </div>\n </div>\n }\n</div>\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"stat-card.types.js","sourceRoot":"","sources":["../../../../../libs/ui/src/lib/stat-card/stat-card.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { IconType } from '../icon/icon.types';\n\nexport interface CardDef {\n color: string; // Acepta cualquier color CSS\n icon: IconType;\n text: string;\n count: number;\n}\n"]}
1
+ {"version":3,"file":"stat-card.types.js","sourceRoot":"","sources":["../../../../../libs/ui/src/lib/stat-card/stat-card.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { IconType } from '../icon/icon.types';\n\nexport interface CardDef {\n color: string; // Acepta cualquier color CSS\n icon: IconType;\n text: string;\n /** Valor numerico crudo (se muestra tal cual) */\n count?: number;\n /** Valor ya formateado (ej. moneda); tiene prioridad sobre count */\n value?: string;\n /** Variacion porcentual: se muestra como +x% / -x% con color segun signo */\n delta?: number;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export * from './status-badge.component';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/ui/src/lib/status-badge/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC","sourcesContent":["export * from './status-badge.component';\nexport type { StatusBadgeVariant } from './status-badge.types';\n"]}
@@ -0,0 +1,16 @@
1
+ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Chip generico de estado: texto + variante de color (success/warning/danger/info/neutral).
5
+ */
6
+ export class StatusBadgeComponent {
7
+ text = input.required(...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
8
+ variant = input('neutral', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: StatusBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.17", type: StatusBadgeComponent, isStandalone: true, selector: "c80-status-badge", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<span class=\"status-badge\" [attr.data-variant]=\"variant()\">{{ text() }}</span>\n", styles: [".status-badge{display:inline-flex;align-items:center;padding:2px 10px;border:1px solid transparent;border-radius:999px;font-size:.75rem;font-weight:600;letter-spacing:.3px;line-height:1.4;white-space:nowrap;-webkit-user-select:none;user-select:none}.status-badge[data-variant=success]{background:#10b9811f;border-color:#10b9814d;color:var(--color-text-success, #047857)}.status-badge[data-variant=warning]{background:#f59e0b1f;border-color:#f59e0b4d;color:var(--color-text-warning, #b45309)}.status-badge[data-variant=danger]{background:#ef44441f;border-color:#ef44444d;color:var(--color-text-danger, #b91c1c)}.status-badge[data-variant=info]{background:#3b82f61f;border-color:#3b82f64d;color:var(--color-text-info, #1d4ed8)}.status-badge[data-variant=neutral]{background:#6b72801f;border-color:#6b72804d;color:var(--color-text-secondary, #6b7280)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: StatusBadgeComponent, decorators: [{
13
+ type: Component,
14
+ args: [{ selector: 'c80-status-badge', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span class=\"status-badge\" [attr.data-variant]=\"variant()\">{{ text() }}</span>\n", styles: [".status-badge{display:inline-flex;align-items:center;padding:2px 10px;border:1px solid transparent;border-radius:999px;font-size:.75rem;font-weight:600;letter-spacing:.3px;line-height:1.4;white-space:nowrap;-webkit-user-select:none;user-select:none}.status-badge[data-variant=success]{background:#10b9811f;border-color:#10b9814d;color:var(--color-text-success, #047857)}.status-badge[data-variant=warning]{background:#f59e0b1f;border-color:#f59e0b4d;color:var(--color-text-warning, #b45309)}.status-badge[data-variant=danger]{background:#ef44441f;border-color:#ef44444d;color:var(--color-text-danger, #b91c1c)}.status-badge[data-variant=info]{background:#3b82f61f;border-color:#3b82f64d;color:var(--color-text-info, #1d4ed8)}.status-badge[data-variant=neutral]{background:#6b72801f;border-color:#6b72804d;color:var(--color-text-secondary, #6b7280)}\n"] }]
15
+ }], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: true }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
16
+ //# sourceMappingURL=status-badge.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-badge.component.js","sourceRoot":"","sources":["../../../../../libs/ui/src/lib/status-badge/status-badge.component.ts","../../../../../libs/ui/src/lib/status-badge/status-badge.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;AAG1E;;GAEG;AAOH,MAAM,OAAO,oBAAoB;IACtB,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAU,CAAC;IAChC,OAAO,GAAG,KAAK,CAAqB,SAAS,8EAAC,CAAC;wGAF7C,oBAAoB;4FAApB,oBAAoB,0UCZjC,sFACA;;4FDWa,oBAAoB;kBANhC,SAAS;+BACE,kBAAkB,mBAGX,uBAAuB,CAAC,MAAM","sourcesContent":["import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport type { StatusBadgeVariant } from './status-badge.types';\n\n/**\n * Chip generico de estado: texto + variante de color (success/warning/danger/info/neutral).\n */\n@Component({\n selector: 'c80-status-badge',\n templateUrl: './status-badge.component.html',\n styleUrl: './status-badge.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class StatusBadgeComponent {\n readonly text = input.required<string>();\n readonly variant = input<StatusBadgeVariant>('neutral');\n}\n","<span class=\"status-badge\" [attr.data-variant]=\"variant()\">{{ text() }}</span>\n"]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=status-badge.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-badge.types.js","sourceRoot":"","sources":["../../../../../libs/ui/src/lib/status-badge/status-badge.types.ts"],"names":[],"mappings":"","sourcesContent":["export type StatusBadgeVariant = 'success' | 'warning' | 'danger' | 'info' | 'neutral';\n"]}
package/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './lib/action-list';
2
+ export * from './lib/bar-chart';
2
3
  export * from './lib/card-level';
3
4
  export * from './lib/header';
4
5
  export * from './lib/icon';
@@ -16,6 +17,7 @@ export * from './lib/select';
16
17
  export * from './lib/snackbar';
17
18
  export * from './lib/spinner';
18
19
  export * from './lib/stat-card';
20
+ export * from './lib/status-badge';
19
21
  export * from './lib/tab';
20
22
  export * from './lib/table';
21
23
  export * from './lib/error-notification';
@@ -0,0 +1,40 @@
1
+ import type { BarChartPoint } from './bar-chart.types';
2
+ import * as i0 from "@angular/core";
3
+ interface BarView {
4
+ x: number;
5
+ y: number;
6
+ width: number;
7
+ height: number;
8
+ centerX: number;
9
+ labelText: string;
10
+ showLabel: boolean;
11
+ title: string;
12
+ }
13
+ interface TickView {
14
+ y: number;
15
+ text: string;
16
+ }
17
+ /**
18
+ * Grafico de barras verticales en SVG puro, sin dependencias externas.
19
+ * Pensado para dashboards simples (ej. ventas por dia/producto); no pretende
20
+ * reemplazar una libreria de charts. Solo valores >= 0 (los negativos se muestran en 0).
21
+ */
22
+ export declare class BarChartComponent {
23
+ readonly series: import("@angular/core").InputSignal<BarChartPoint[]>;
24
+ /** Color de relleno de las barras (cualquier color CSS, admite var()). */
25
+ readonly color: import("@angular/core").InputSignal<string>;
26
+ /** Tooltip nativo (title SVG) con label y valor por barra. */
27
+ readonly tooltip: import("@angular/core").InputSignal<boolean>;
28
+ /** Formateo de valores para ticks y tooltip (default: notacion compacta es-AR). */
29
+ readonly valueFormatter: import("@angular/core").InputSignal<(value: number) => string>;
30
+ protected readonly viewBox = "0 0 600 260";
31
+ protected readonly plotLeft = 46;
32
+ protected readonly plotRight: number;
33
+ protected readonly labelY: number;
34
+ private readonly maxValue;
35
+ protected readonly ticks: import("@angular/core").Signal<TickView[]>;
36
+ protected readonly bars: import("@angular/core").Signal<BarView[]>;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<BarChartComponent, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<BarChartComponent, "c80-bar-chart", never, { "series": { "alias": "series"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "valueFormatter": { "alias": "valueFormatter"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
39
+ }
40
+ export {};
@@ -0,0 +1,4 @@
1
+ export interface BarChartPoint {
2
+ label: string;
3
+ value: number;
4
+ }
@@ -0,0 +1,2 @@
1
+ export * from './bar-chart.component';
2
+ export type { BarChartPoint } from './bar-chart.types';
@@ -1,17 +1,21 @@
1
1
  import * as i0 from "@angular/core";
2
2
  /**
3
+ * Campo de entrada inline configurable desde el padre (label, type, readonly, etc.).
3
4
  *
5
+ * `value` es un `model()`: soporta two-way binding `[(value)]` y conserva `.set()`.
6
+ * El output `valueChange` lo genera implicitamente el model (misma firma `string`
7
+ * que el output explicito que existia en 2.x); NO se redeclara para evitar la
8
+ * colision de nombres y la doble emision por cada tecla.
4
9
  */
5
10
  export declare class InputFieldComponent {
6
- readonly label: import("@angular/core").WritableSignal<string>;
7
- readonly value: import("@angular/core").WritableSignal<string>;
8
- readonly placeholder: import("@angular/core").WritableSignal<string>;
9
- readonly type: import("@angular/core").WritableSignal<"text" | "email" | "password">;
10
- readonly maxLength: import("@angular/core").WritableSignal<number | undefined>;
11
- readonly readonly: import("@angular/core").WritableSignal<boolean>;
12
- readonly required: import("@angular/core").WritableSignal<boolean>;
13
- valueChange: import("@angular/core").OutputEmitterRef<string>;
14
- enterPressed: import("@angular/core").OutputEmitterRef<void>;
11
+ readonly label: import("@angular/core").InputSignal<string>;
12
+ readonly value: import("@angular/core").ModelSignal<string>;
13
+ readonly placeholder: import("@angular/core").InputSignal<string>;
14
+ readonly type: import("@angular/core").InputSignal<"number" | "text" | "email" | "password">;
15
+ readonly maxLength: import("@angular/core").InputSignal<number | undefined>;
16
+ readonly readonly: import("@angular/core").InputSignal<boolean>;
17
+ readonly required: import("@angular/core").InputSignal<boolean>;
18
+ readonly enterPressed: import("@angular/core").OutputEmitterRef<void>;
15
19
  protected readonly isFocused: import("@angular/core").WritableSignal<boolean>;
16
20
  /**
17
21
  *
@@ -32,5 +36,5 @@ export declare class InputFieldComponent {
32
36
  */
33
37
  protected onKeyDown(event: KeyboardEvent): void;
34
38
  static ɵfac: i0.ɵɵFactoryDeclaration<InputFieldComponent, never>;
35
- static ɵcmp: i0.ɵɵComponentDeclaration<InputFieldComponent, "c80-input-field", never, {}, { "valueChange": "valueChange"; "enterPressed": "enterPressed"; }, never, never, true, never>;
39
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputFieldComponent, "c80-input-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "enterPressed": "enterPressed"; }, never, never, true, never>;
36
40
  }
@@ -5,6 +5,16 @@ import * as i0 from "@angular/core";
5
5
  */
6
6
  export declare class StatCardComponent {
7
7
  readonly cards: import("@angular/core").InputSignal<CardDef[]>;
8
+ protected readonly items: import("@angular/core").Signal<{
9
+ color: string;
10
+ icon: string;
11
+ text: string;
12
+ display: string;
13
+ delta: {
14
+ text: string;
15
+ direction: "flat" | "up" | "down";
16
+ } | undefined;
17
+ }[]>;
8
18
  static ɵfac: i0.ɵɵFactoryDeclaration<StatCardComponent, never>;
9
19
  static ɵcmp: i0.ɵɵComponentDeclaration<StatCardComponent, "c80-stat-card", never, { "cards": { "alias": "cards"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
10
20
  }
@@ -3,5 +3,10 @@ export interface CardDef {
3
3
  color: string;
4
4
  icon: IconType;
5
5
  text: string;
6
- count: number;
6
+ /** Valor numerico crudo (se muestra tal cual) */
7
+ count?: number;
8
+ /** Valor ya formateado (ej. moneda); tiene prioridad sobre count */
9
+ value?: string;
10
+ /** Variacion porcentual: se muestra como +x% / -x% con color segun signo */
11
+ delta?: number;
7
12
  }
@@ -0,0 +1,2 @@
1
+ export * from './status-badge.component';
2
+ export type { StatusBadgeVariant } from './status-badge.types';
@@ -0,0 +1,11 @@
1
+ import type { StatusBadgeVariant } from './status-badge.types';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Chip generico de estado: texto + variante de color (success/warning/danger/info/neutral).
5
+ */
6
+ export declare class StatusBadgeComponent {
7
+ readonly text: import("@angular/core").InputSignal<string>;
8
+ readonly variant: import("@angular/core").InputSignal<StatusBadgeVariant>;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<StatusBadgeComponent, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<StatusBadgeComponent, "c80-status-badge", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
11
+ }
@@ -0,0 +1 @@
1
+ export type StatusBadgeVariant = 'success' | 'warning' | 'danger' | 'info' | 'neutral';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c80/ui",
3
- "version": "2.0.1",
3
+ "version": "3.1.0",
4
4
  "peerDependencies": {
5
5
  "@angular/core": "^21.0.0",
6
6
  "rxjs": "~7.8.0",