@shival99/z-ui 2.1.32 → 2.2.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.
- package/fesm2022/shival99-z-ui-components-z-accordion.mjs +41 -25
- package/fesm2022/shival99-z-ui-components-z-accordion.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +176 -97
- package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-avatar.mjs +71 -40
- package/fesm2022/shival99-z-ui-components-z-avatar.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs +26 -15
- package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-button-group.mjs +33 -21
- package/fesm2022/shival99-z-ui-components-z-button-group.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-button.mjs +32 -19
- package/fesm2022/shival99-z-ui-components-z-button.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-calendar.mjs +289 -172
- package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-card.mjs +34 -24
- package/fesm2022/shival99-z-ui-components-z-card.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-chat.mjs +85 -47
- package/fesm2022/shival99-z-ui-components-z-chat.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-checkbox.mjs +56 -31
- package/fesm2022/shival99-z-ui-components-z-checkbox.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-code.mjs +29 -16
- package/fesm2022/shival99-z-ui-components-z-code.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-command.mjs +34 -19
- package/fesm2022/shival99-z-ui-components-z-command.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs +310 -88
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs +32 -18
- package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-editor.mjs +118 -62
- package/fesm2022/shival99-z-ui-components-z-editor.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-empty.mjs +31 -17
- package/fesm2022/shival99-z-ui-components-z-empty.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-filter.mjs +81 -54
- package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-gallery.mjs +240 -132
- package/fesm2022/shival99-z-ui-components-z-gallery.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-icon.mjs +39 -21
- package/fesm2022/shival99-z-ui-components-z-icon.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-input.mjs +173 -95
- package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-kanban.mjs +88 -47
- package/fesm2022/shival99-z-ui-components-z-kanban.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-loading.mjs +31 -19
- package/fesm2022/shival99-z-ui-components-z-loading.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-marquee.mjs +42 -23
- package/fesm2022/shival99-z-ui-components-z-marquee.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-media-player.mjs +87 -45
- package/fesm2022/shival99-z-ui-components-z-media-player.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-menu.mjs +126 -67
- package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-metric-card.mjs +42 -23
- package/fesm2022/shival99-z-ui-components-z-metric-card.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-modal.mjs +144 -80
- package/fesm2022/shival99-z-ui-components-z-modal.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-pagination.mjs +45 -24
- package/fesm2022/shival99-z-ui-components-z-pagination.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-popover.mjs +90 -57
- package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-qrcode.mjs +51 -29
- package/fesm2022/shival99-z-ui-components-z-qrcode.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-radio.mjs +36 -20
- package/fesm2022/shival99-z-ui-components-z-radio.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-scrollarea.mjs +27 -15
- package/fesm2022/shival99-z-ui-components-z-scrollarea.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-select.mjs +239 -138
- package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-show-more.mjs +38 -21
- package/fesm2022/shival99-z-ui-components-z-show-more.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs +42 -23
- package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-skeleton.mjs +35 -19
- package/fesm2022/shival99-z-ui-components-z-skeleton.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-steps.mjs +55 -31
- package/fesm2022/shival99-z-ui-components-z-steps.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-switch.mjs +60 -33
- package/fesm2022/shival99-z-ui-components-z-switch.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-table.mjs +10875 -0
- package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-tabs.mjs +534 -0
- package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-tags.mjs +72 -46
- package/fesm2022/shival99-z-ui-components-z-tags.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-timeline.mjs +254 -0
- package/fesm2022/shival99-z-ui-components-z-timeline.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-toast.mjs +53 -31
- package/fesm2022/shival99-z-ui-components-z-toast.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-tooltip.mjs +133 -56
- package/fesm2022/shival99-z-ui-components-z-tooltip.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-upload.mjs +63 -36
- package/fesm2022/shival99-z-ui-components-z-upload.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-i18n.mjs +2 -0
- package/fesm2022/shival99-z-ui-i18n.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-pipes.mjs +18 -18
- package/fesm2022/shival99-z-ui-services.mjs +35 -31
- package/fesm2022/shival99-z-ui-services.mjs.map +1 -1
- package/package.json +16 -16
- package/types/shival99-z-ui-components-z-autocomplete.d.ts +2 -2
- package/types/shival99-z-ui-components-z-card.d.ts +1 -2
- package/types/shival99-z-ui-components-z-drawer.d.ts +20 -2
- package/types/shival99-z-ui-components-z-gallery.d.ts +1 -2
- package/types/shival99-z-ui-components-z-select.d.ts +2 -2
- package/types/shival99-z-ui-components-z-table.d.ts +2293 -0
- package/types/shival99-z-ui-components-z-tabs.d.ts +92 -0
- package/types/shival99-z-ui-components-z-timeline.d.ts +71 -0
|
@@ -68,24 +68,41 @@ const zMetricCardTrendVariants = cva('inline-flex items-center gap-1 rounded-ful
|
|
|
68
68
|
|
|
69
69
|
class ZMetricCardComponent {
|
|
70
70
|
zActionClick = output();
|
|
71
|
-
class = input('',
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
71
|
+
class = input('', /* @ts-ignore */
|
|
72
|
+
...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
73
|
+
zTitle = input('', /* @ts-ignore */
|
|
74
|
+
...(ngDevMode ? [{ debugName: "zTitle" }] : /* istanbul ignore next */ []));
|
|
75
|
+
zValue = input('', /* @ts-ignore */
|
|
76
|
+
...(ngDevMode ? [{ debugName: "zValue" }] : /* istanbul ignore next */ []));
|
|
77
|
+
zDescription = input('', /* @ts-ignore */
|
|
78
|
+
...(ngDevMode ? [{ debugName: "zDescription" }] : /* istanbul ignore next */ []));
|
|
79
|
+
zIcon = input(/* @ts-ignore */
|
|
80
|
+
...(ngDevMode ? [undefined, { debugName: "zIcon" }] : /* istanbul ignore next */ []));
|
|
81
|
+
zTrend = input(/* @ts-ignore */
|
|
82
|
+
...(ngDevMode ? [undefined, { debugName: "zTrend" }] : /* istanbul ignore next */ []));
|
|
83
|
+
zProgress = input(/* @ts-ignore */
|
|
84
|
+
...(ngDevMode ? [undefined, { debugName: "zProgress" }] : /* istanbul ignore next */ []));
|
|
85
|
+
zAction = input(/* @ts-ignore */
|
|
86
|
+
...(ngDevMode ? [undefined, { debugName: "zAction" }] : /* istanbul ignore next */ []));
|
|
87
|
+
zSize = input('default', /* @ts-ignore */
|
|
88
|
+
...(ngDevMode ? [{ debugName: "zSize" }] : /* istanbul ignore next */ []));
|
|
89
|
+
zVariant = input('default', /* @ts-ignore */
|
|
90
|
+
...(ngDevMode ? [{ debugName: "zVariant" }] : /* istanbul ignore next */ []));
|
|
91
|
+
zDecor = input('wave', /* @ts-ignore */
|
|
92
|
+
...(ngDevMode ? [{ debugName: "zDecor" }] : /* istanbul ignore next */ []));
|
|
93
|
+
zLoading = input(false, { ...(ngDevMode ? { debugName: "zLoading" } : /* istanbul ignore next */ {}), transform: zTransform });
|
|
94
|
+
hostClasses = computed(() => zMergeClasses(zMetricCardVariants({ zSize: this.zSize(), zVariant: this.zVariant() }), this.class()), /* @ts-ignore */
|
|
95
|
+
...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
|
|
96
|
+
iconClasses = computed(() => zMetricCardIconVariants({ zSize: this.zSize(), zVariant: this.zVariant() }), /* @ts-ignore */
|
|
97
|
+
...(ngDevMode ? [{ debugName: "iconClasses" }] : /* istanbul ignore next */ []));
|
|
98
|
+
valueClasses = computed(() => zMetricCardValueVariants({ zSize: this.zSize() }), /* @ts-ignore */
|
|
99
|
+
...(ngDevMode ? [{ debugName: "valueClasses" }] : /* istanbul ignore next */ []));
|
|
100
|
+
decorClasses = computed(() => zMergeClasses('pointer-events-none absolute right-0 top-0 text-primary/10 transition-opacity duration-200', this.zVariant() === 'bordered' ? 'text-muted-foreground/10' : '', this.zVariant() === 'soft' ? 'text-primary/15' : ''), /* @ts-ignore */
|
|
101
|
+
...(ngDevMode ? [{ debugName: "decorClasses" }] : /* istanbul ignore next */ []));
|
|
102
|
+
trendDirection = computed(() => this.zTrend()?.direction ?? 'neutral', /* @ts-ignore */
|
|
103
|
+
...(ngDevMode ? [{ debugName: "trendDirection" }] : /* istanbul ignore next */ []));
|
|
104
|
+
trendClasses = computed(() => zMetricCardTrendVariants({ zTrendDirection: this.trendDirection() }), /* @ts-ignore */
|
|
105
|
+
...(ngDevMode ? [{ debugName: "trendClasses" }] : /* istanbul ignore next */ []));
|
|
89
106
|
trendIcon = computed(() => {
|
|
90
107
|
const direction = this.trendDirection();
|
|
91
108
|
if (direction === 'up') {
|
|
@@ -95,14 +112,16 @@ class ZMetricCardComponent {
|
|
|
95
112
|
return 'lucideTrendingDown';
|
|
96
113
|
}
|
|
97
114
|
return 'lucideMinus';
|
|
98
|
-
},
|
|
115
|
+
}, /* @ts-ignore */
|
|
116
|
+
...(ngDevMode ? [{ debugName: "trendIcon" }] : /* istanbul ignore next */ []));
|
|
99
117
|
normalizedProgress = computed(() => {
|
|
100
118
|
const progress = this.zProgress();
|
|
101
119
|
if (progress === null || progress === undefined || Number.isNaN(progress)) {
|
|
102
120
|
return null;
|
|
103
121
|
}
|
|
104
122
|
return Math.min(100, Math.max(0, progress));
|
|
105
|
-
},
|
|
123
|
+
}, /* @ts-ignore */
|
|
124
|
+
...(ngDevMode ? [{ debugName: "normalizedProgress" }] : /* istanbul ignore next */ []));
|
|
106
125
|
onActionClick() {
|
|
107
126
|
const action = this.zAction();
|
|
108
127
|
if (!action) {
|
|
@@ -110,10 +129,10 @@ class ZMetricCardComponent {
|
|
|
110
129
|
}
|
|
111
130
|
this.zActionClick.emit(action);
|
|
112
131
|
}
|
|
113
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
114
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
132
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: ZMetricCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
133
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", type: ZMetricCardComponent, isStandalone: true, selector: "z-metric-card", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zTitle: { classPropertyName: "zTitle", publicName: "zTitle", isSignal: true, isRequired: false, transformFunction: null }, zValue: { classPropertyName: "zValue", publicName: "zValue", isSignal: true, isRequired: false, transformFunction: null }, zDescription: { classPropertyName: "zDescription", publicName: "zDescription", isSignal: true, isRequired: false, transformFunction: null }, zIcon: { classPropertyName: "zIcon", publicName: "zIcon", isSignal: true, isRequired: false, transformFunction: null }, zTrend: { classPropertyName: "zTrend", publicName: "zTrend", isSignal: true, isRequired: false, transformFunction: null }, zProgress: { classPropertyName: "zProgress", publicName: "zProgress", isSignal: true, isRequired: false, transformFunction: null }, zAction: { classPropertyName: "zAction", publicName: "zAction", isSignal: true, isRequired: false, transformFunction: null }, zSize: { classPropertyName: "zSize", publicName: "zSize", isSignal: true, isRequired: false, transformFunction: null }, zVariant: { classPropertyName: "zVariant", publicName: "zVariant", isSignal: true, isRequired: false, transformFunction: null }, zDecor: { classPropertyName: "zDecor", publicName: "zDecor", isSignal: true, isRequired: false, transformFunction: null }, zLoading: { classPropertyName: "zLoading", publicName: "zLoading", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { zActionClick: "zActionClick" }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: "@if (zLoading()) {\n @if (zDecor() !== 'none') {\n <ng-container [ngTemplateOutlet]=\"metricDecor\" />\n }\n <div class=\"space-y-4\">\n <div class=\"flex items-center justify-between\">\n <div class=\"bg-muted h-9 w-9 animate-pulse rounded-md\"></div>\n <div class=\"bg-muted h-5 w-16 animate-pulse rounded-full\"></div>\n </div>\n <div class=\"space-y-2\">\n <div class=\"bg-muted h-4 w-24 animate-pulse rounded\"></div>\n <div class=\"bg-muted h-8 w-32 animate-pulse rounded\"></div>\n <div class=\"bg-muted h-3 w-40 animate-pulse rounded\"></div>\n </div>\n </div>\n} @else {\n @if (zDecor() !== 'none') {\n <ng-container [ngTemplateOutlet]=\"metricDecor\" />\n }\n\n <div class=\"relative z-10 flex items-start justify-between gap-4\">\n <div class=\"min-w-0 space-y-3\">\n @if (zIcon()) {\n <span [class]=\"iconClasses()\">\n <z-icon [zType]=\"zIcon()\" zSize=\"18\" />\n </span>\n }\n\n <div class=\"min-w-0\">\n @if (zTitle()) {\n <p class=\"text-muted-foreground overflow-hidden text-sm font-medium text-ellipsis whitespace-nowrap\">\n {{ zTitle() }}\n </p>\n }\n <p [class]=\"valueClasses()\">{{ zValue() }}</p>\n @if (zDescription()) {\n <p class=\"text-muted-foreground mt-1 overflow-hidden text-sm text-ellipsis whitespace-nowrap\">\n {{ zDescription() }}\n </p>\n }\n </div>\n </div>\n\n <div class=\"flex shrink-0 flex-col items-end gap-2\">\n @if (zTrend(); as trend) {\n <span [class]=\"trendClasses()\">\n <z-icon [zType]=\"trendIcon()\" zSize=\"12\" />\n <span>{{ trend.value }}</span>\n @if (trend.label) {\n <span>{{ trend.label }}</span>\n }\n </span>\n }\n\n @if (zAction(); as action) {\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground inline-flex size-8 items-center justify-center rounded-md transition-colors\"\n [attr.aria-label]=\"action.label\"\n (click)=\"onActionClick()\">\n <z-icon [zType]=\"action.icon ?? 'lucideMoreHorizontal'\" zSize=\"16\" />\n </button>\n }\n </div>\n </div>\n\n @if (normalizedProgress() !== null) {\n <div class=\"bg-muted mt-4 h-1.5 overflow-hidden rounded-full\">\n <div\n class=\"bg-primary h-full rounded-full transition-[width] duration-300\"\n [style.width.%]=\"normalizedProgress()\"></div>\n </div>\n }\n\n <ng-content />\n}\n\n<ng-template #metricDecor>\n @switch (zDecor()) {\n @case ('bars') {\n <svg [class]=\"decorClasses()\" width=\"122\" height=\"98\" viewBox=\"0 0 122 98\" fill=\"none\" aria-hidden=\"true\">\n <rect x=\"54\" y=\"50\" width=\"10\" height=\"34\" rx=\"5\" fill=\"currentColor\" />\n <rect x=\"72\" y=\"30\" width=\"10\" height=\"54\" rx=\"5\" fill=\"currentColor\" />\n <rect x=\"90\" y=\"14\" width=\"10\" height=\"70\" rx=\"5\" fill=\"currentColor\" />\n <path d=\"M43 84H112\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </svg>\n }\n @case ('dots') {\n <svg [class]=\"decorClasses()\" width=\"124\" height=\"96\" viewBox=\"0 0 124 96\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"66\" cy=\"22\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"88\" cy=\"22\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"110\" cy=\"22\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"55\" cy=\"44\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"77\" cy=\"44\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"99\" cy=\"44\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"66\" cy=\"66\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"88\" cy=\"66\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"110\" cy=\"66\" r=\"4\" fill=\"currentColor\" />\n </svg>\n }\n @case ('grid') {\n <svg [class]=\"decorClasses()\" width=\"116\" height=\"94\" viewBox=\"0 0 116 94\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M18 10H106V74H18V10Z\" stroke=\"currentColor\" stroke-width=\"1\" />\n <path d=\"M18 26H106M18 42H106M18 58H106M34 10V74M50 10V74M66 10V74M82 10V74M98 10V74\" stroke=\"currentColor\" />\n <circle cx=\"34\" cy=\"58\" r=\"3\" fill=\"currentColor\" />\n <circle cx=\"58\" cy=\"34\" r=\"3\" fill=\"currentColor\" />\n <circle cx=\"82\" cy=\"46\" r=\"3\" fill=\"currentColor\" />\n </svg>\n }\n @case ('rings') {\n <svg [class]=\"decorClasses()\" width=\"126\" height=\"96\" viewBox=\"0 0 126 96\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"96\" cy=\"28\" r=\"26\" stroke=\"currentColor\" stroke-width=\"8\" />\n <circle cx=\"96\" cy=\"28\" r=\"12\" stroke=\"currentColor\" stroke-width=\"4\" />\n <circle cx=\"64\" cy=\"58\" r=\"20\" stroke=\"currentColor\" stroke-width=\"6\" />\n <path d=\"M42 78C56 64 72 51 91 35\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" />\n </svg>\n }\n @case ('spark') {\n <svg [class]=\"decorClasses()\" width=\"126\" height=\"96\" viewBox=\"0 0 126 96\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M35 70L50 53L63 61L77 34L90 42L108 18\"\n stroke=\"currentColor\"\n stroke-width=\"7\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M36 82H112\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\n <circle cx=\"108\" cy=\"18\" r=\"6\" fill=\"currentColor\" />\n </svg>\n }\n @default {\n <svg [class]=\"decorClasses()\" width=\"128\" height=\"96\" viewBox=\"0 0 128 96\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M21 70C34 49 47 39 62 42C82 46 85 20 107 18\"\n stroke=\"currentColor\"\n stroke-width=\"10\"\n stroke-linecap=\"round\" />\n <path\n d=\"M30 82C45 64 58 56 72 58C91 61 96 41 112 38\"\n stroke=\"currentColor\"\n stroke-width=\"5\"\n stroke-linecap=\"round\" />\n <circle cx=\"108\" cy=\"18\" r=\"7\" fill=\"currentColor\" />\n <circle cx=\"112\" cy=\"38\" r=\"4\" fill=\"currentColor\" />\n </svg>\n }\n }\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ZIconComponent, selector: "z-icon, [z-icon]", inputs: ["class", "zType", "zAnimatedType", "zAnimate", "zAnimationTrigger", "zSize", "zStrokeWidth", "zSvg"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
115
134
|
}
|
|
116
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: ZMetricCardComponent, decorators: [{
|
|
117
136
|
type: Component,
|
|
118
137
|
args: [{ selector: 'z-metric-card', imports: [NgTemplateOutlet, ZIconComponent], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
119
138
|
'[class]': 'hostClasses()',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shival99-z-ui-components-z-metric-card.mjs","sources":["../../../../libs/core-ui/components/z-metric-card/z-metric-card.variants.ts","../../../../libs/core-ui/components/z-metric-card/z-metric-card.component.ts","../../../../libs/core-ui/components/z-metric-card/z-metric-card.component.html","../../../../libs/core-ui/components/z-metric-card/shival99-z-ui-components-z-metric-card.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zMetricCardVariants = cva('relative overflow-hidden rounded-lg transition-colors', {\n variants: {\n zSize: {\n sm: 'p-4',\n default: 'p-5',\n lg: 'p-6',\n },\n zVariant: {\n default: 'bg-card text-card-foreground border border-border shadow-sm',\n bordered: 'bg-background text-foreground border border-border',\n soft: 'bg-muted/45 text-foreground border border-transparent',\n },\n },\n defaultVariants: {\n zSize: 'default',\n zVariant: 'default',\n },\n});\n\nexport const zMetricCardIconVariants = cva('inline-flex shrink-0 items-center justify-center rounded-md', {\n variants: {\n zSize: {\n sm: 'size-8',\n default: 'size-9',\n lg: 'size-10',\n },\n zVariant: {\n default: 'bg-primary/10 text-primary',\n bordered: 'bg-muted text-muted-foreground',\n soft: 'bg-background text-primary shadow-xs',\n },\n },\n defaultVariants: {\n zSize: 'default',\n zVariant: 'default',\n },\n});\n\nexport const zMetricCardValueVariants = cva('font-bold tracking-normal text-foreground', {\n variants: {\n zSize: {\n sm: 'text-xl',\n default: 'text-2xl',\n lg: 'text-3xl',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n});\n\nexport const zMetricCardTrendVariants = cva(\n 'inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium',\n {\n variants: {\n zTrendDirection: {\n up: 'bg-emerald-500/10 text-emerald-600 dark:text-emerald-400',\n down: 'bg-destructive/10 text-destructive',\n neutral: 'bg-muted text-muted-foreground',\n },\n },\n defaultVariants: {\n zTrendDirection: 'neutral',\n },\n }\n);\n\nexport type ZMetricCardVariants = VariantProps<typeof zMetricCardVariants>;\nexport type ZMetricCardIconVariants = VariantProps<typeof zMetricCardIconVariants>;\nexport type ZMetricCardTrendVariants = VariantProps<typeof zMetricCardTrendVariants>;\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, output, ViewEncapsulation } from '@angular/core';\nimport { ZIconComponent, type ZIcon } from '@shival99/z-ui/components/z-icon';\nimport { zMergeClasses, zTransform } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport type {\n ZMetricCardAction,\n ZMetricCardDecor,\n ZMetricCardSize,\n ZMetricCardTrend,\n ZMetricCardTrendDirection,\n ZMetricCardVariant,\n} from './z-metric-card.types';\nimport {\n zMetricCardIconVariants,\n zMetricCardTrendVariants,\n zMetricCardValueVariants,\n zMetricCardVariants,\n} from './z-metric-card.variants';\n\n@Component({\n selector: 'z-metric-card',\n imports: [NgTemplateOutlet, ZIconComponent],\n standalone: true,\n templateUrl: './z-metric-card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class ZMetricCardComponent {\n public readonly zActionClick = output<ZMetricCardAction>();\n\n public readonly class = input<ClassValue>('');\n public readonly zTitle = input<string>('');\n public readonly zValue = input<string | number>('');\n public readonly zDescription = input<string>('');\n public readonly zIcon = input<ZIcon>();\n public readonly zTrend = input<ZMetricCardTrend>();\n public readonly zProgress = input<number>();\n public readonly zAction = input<ZMetricCardAction>();\n public readonly zSize = input<ZMetricCardSize>('default');\n public readonly zVariant = input<ZMetricCardVariant>('default');\n public readonly zDecor = input<ZMetricCardDecor>('wave');\n public readonly zLoading = input(false, { transform: zTransform });\n\n protected readonly hostClasses = computed(() =>\n zMergeClasses(zMetricCardVariants({ zSize: this.zSize(), zVariant: this.zVariant() }), this.class())\n );\n\n protected readonly iconClasses = computed(() =>\n zMetricCardIconVariants({ zSize: this.zSize(), zVariant: this.zVariant() })\n );\n\n protected readonly valueClasses = computed(() => zMetricCardValueVariants({ zSize: this.zSize() }));\n protected readonly decorClasses = computed(() =>\n zMergeClasses(\n 'pointer-events-none absolute right-0 top-0 text-primary/10 transition-opacity duration-200',\n this.zVariant() === 'bordered' ? 'text-muted-foreground/10' : '',\n this.zVariant() === 'soft' ? 'text-primary/15' : ''\n )\n );\n\n protected readonly trendDirection = computed<ZMetricCardTrendDirection>(() => this.zTrend()?.direction ?? 'neutral');\n protected readonly trendClasses = computed(() =>\n zMetricCardTrendVariants({ zTrendDirection: this.trendDirection() })\n );\n\n protected readonly trendIcon = computed<ZIcon>(() => {\n const direction = this.trendDirection();\n if (direction === 'up') {\n return 'lucideTrendingUp';\n }\n\n if (direction === 'down') {\n return 'lucideTrendingDown';\n }\n\n return 'lucideMinus';\n });\n\n protected readonly normalizedProgress = computed(() => {\n const progress = this.zProgress();\n if (progress === null || progress === undefined || Number.isNaN(progress)) {\n return null;\n }\n\n return Math.min(100, Math.max(0, progress));\n });\n\n protected onActionClick(): void {\n const action = this.zAction();\n if (!action) {\n return;\n }\n\n this.zActionClick.emit(action);\n }\n}\n","@if (zLoading()) {\n @if (zDecor() !== 'none') {\n <ng-container [ngTemplateOutlet]=\"metricDecor\" />\n }\n <div class=\"space-y-4\">\n <div class=\"flex items-center justify-between\">\n <div class=\"bg-muted h-9 w-9 animate-pulse rounded-md\"></div>\n <div class=\"bg-muted h-5 w-16 animate-pulse rounded-full\"></div>\n </div>\n <div class=\"space-y-2\">\n <div class=\"bg-muted h-4 w-24 animate-pulse rounded\"></div>\n <div class=\"bg-muted h-8 w-32 animate-pulse rounded\"></div>\n <div class=\"bg-muted h-3 w-40 animate-pulse rounded\"></div>\n </div>\n </div>\n} @else {\n @if (zDecor() !== 'none') {\n <ng-container [ngTemplateOutlet]=\"metricDecor\" />\n }\n\n <div class=\"relative z-10 flex items-start justify-between gap-4\">\n <div class=\"min-w-0 space-y-3\">\n @if (zIcon()) {\n <span [class]=\"iconClasses()\">\n <z-icon [zType]=\"zIcon()\" zSize=\"18\" />\n </span>\n }\n\n <div class=\"min-w-0\">\n @if (zTitle()) {\n <p class=\"text-muted-foreground overflow-hidden text-sm font-medium text-ellipsis whitespace-nowrap\">\n {{ zTitle() }}\n </p>\n }\n <p [class]=\"valueClasses()\">{{ zValue() }}</p>\n @if (zDescription()) {\n <p class=\"text-muted-foreground mt-1 overflow-hidden text-sm text-ellipsis whitespace-nowrap\">\n {{ zDescription() }}\n </p>\n }\n </div>\n </div>\n\n <div class=\"flex shrink-0 flex-col items-end gap-2\">\n @if (zTrend(); as trend) {\n <span [class]=\"trendClasses()\">\n <z-icon [zType]=\"trendIcon()\" zSize=\"12\" />\n <span>{{ trend.value }}</span>\n @if (trend.label) {\n <span>{{ trend.label }}</span>\n }\n </span>\n }\n\n @if (zAction(); as action) {\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground inline-flex size-8 items-center justify-center rounded-md transition-colors\"\n [attr.aria-label]=\"action.label\"\n (click)=\"onActionClick()\">\n <z-icon [zType]=\"action.icon ?? 'lucideMoreHorizontal'\" zSize=\"16\" />\n </button>\n }\n </div>\n </div>\n\n @if (normalizedProgress() !== null) {\n <div class=\"bg-muted mt-4 h-1.5 overflow-hidden rounded-full\">\n <div\n class=\"bg-primary h-full rounded-full transition-[width] duration-300\"\n [style.width.%]=\"normalizedProgress()\"></div>\n </div>\n }\n\n <ng-content />\n}\n\n<ng-template #metricDecor>\n @switch (zDecor()) {\n @case ('bars') {\n <svg [class]=\"decorClasses()\" width=\"122\" height=\"98\" viewBox=\"0 0 122 98\" fill=\"none\" aria-hidden=\"true\">\n <rect x=\"54\" y=\"50\" width=\"10\" height=\"34\" rx=\"5\" fill=\"currentColor\" />\n <rect x=\"72\" y=\"30\" width=\"10\" height=\"54\" rx=\"5\" fill=\"currentColor\" />\n <rect x=\"90\" y=\"14\" width=\"10\" height=\"70\" rx=\"5\" fill=\"currentColor\" />\n <path d=\"M43 84H112\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </svg>\n }\n @case ('dots') {\n <svg [class]=\"decorClasses()\" width=\"124\" height=\"96\" viewBox=\"0 0 124 96\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"66\" cy=\"22\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"88\" cy=\"22\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"110\" cy=\"22\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"55\" cy=\"44\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"77\" cy=\"44\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"99\" cy=\"44\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"66\" cy=\"66\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"88\" cy=\"66\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"110\" cy=\"66\" r=\"4\" fill=\"currentColor\" />\n </svg>\n }\n @case ('grid') {\n <svg [class]=\"decorClasses()\" width=\"116\" height=\"94\" viewBox=\"0 0 116 94\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M18 10H106V74H18V10Z\" stroke=\"currentColor\" stroke-width=\"1\" />\n <path d=\"M18 26H106M18 42H106M18 58H106M34 10V74M50 10V74M66 10V74M82 10V74M98 10V74\" stroke=\"currentColor\" />\n <circle cx=\"34\" cy=\"58\" r=\"3\" fill=\"currentColor\" />\n <circle cx=\"58\" cy=\"34\" r=\"3\" fill=\"currentColor\" />\n <circle cx=\"82\" cy=\"46\" r=\"3\" fill=\"currentColor\" />\n </svg>\n }\n @case ('rings') {\n <svg [class]=\"decorClasses()\" width=\"126\" height=\"96\" viewBox=\"0 0 126 96\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"96\" cy=\"28\" r=\"26\" stroke=\"currentColor\" stroke-width=\"8\" />\n <circle cx=\"96\" cy=\"28\" r=\"12\" stroke=\"currentColor\" stroke-width=\"4\" />\n <circle cx=\"64\" cy=\"58\" r=\"20\" stroke=\"currentColor\" stroke-width=\"6\" />\n <path d=\"M42 78C56 64 72 51 91 35\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" />\n </svg>\n }\n @case ('spark') {\n <svg [class]=\"decorClasses()\" width=\"126\" height=\"96\" viewBox=\"0 0 126 96\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M35 70L50 53L63 61L77 34L90 42L108 18\"\n stroke=\"currentColor\"\n stroke-width=\"7\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M36 82H112\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\n <circle cx=\"108\" cy=\"18\" r=\"6\" fill=\"currentColor\" />\n </svg>\n }\n @default {\n <svg [class]=\"decorClasses()\" width=\"128\" height=\"96\" viewBox=\"0 0 128 96\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M21 70C34 49 47 39 62 42C82 46 85 20 107 18\"\n stroke=\"currentColor\"\n stroke-width=\"10\"\n stroke-linecap=\"round\" />\n <path\n d=\"M30 82C45 64 58 56 72 58C91 61 96 41 112 38\"\n stroke=\"currentColor\"\n stroke-width=\"5\"\n stroke-linecap=\"round\" />\n <circle cx=\"108\" cy=\"18\" r=\"7\" fill=\"currentColor\" />\n <circle cx=\"112\" cy=\"38\" r=\"4\" fill=\"currentColor\" />\n </svg>\n }\n }\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shival99-z-ui-components-z-metric-card.mjs","sources":["../../../../libs/core-ui/components/z-metric-card/z-metric-card.variants.ts","../../../../libs/core-ui/components/z-metric-card/z-metric-card.component.ts","../../../../libs/core-ui/components/z-metric-card/z-metric-card.component.html","../../../../libs/core-ui/components/z-metric-card/shival99-z-ui-components-z-metric-card.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zMetricCardVariants = cva('relative overflow-hidden rounded-lg transition-colors', {\n variants: {\n zSize: {\n sm: 'p-4',\n default: 'p-5',\n lg: 'p-6',\n },\n zVariant: {\n default: 'bg-card text-card-foreground border border-border shadow-sm',\n bordered: 'bg-background text-foreground border border-border',\n soft: 'bg-muted/45 text-foreground border border-transparent',\n },\n },\n defaultVariants: {\n zSize: 'default',\n zVariant: 'default',\n },\n});\n\nexport const zMetricCardIconVariants = cva('inline-flex shrink-0 items-center justify-center rounded-md', {\n variants: {\n zSize: {\n sm: 'size-8',\n default: 'size-9',\n lg: 'size-10',\n },\n zVariant: {\n default: 'bg-primary/10 text-primary',\n bordered: 'bg-muted text-muted-foreground',\n soft: 'bg-background text-primary shadow-xs',\n },\n },\n defaultVariants: {\n zSize: 'default',\n zVariant: 'default',\n },\n});\n\nexport const zMetricCardValueVariants = cva('font-bold tracking-normal text-foreground', {\n variants: {\n zSize: {\n sm: 'text-xl',\n default: 'text-2xl',\n lg: 'text-3xl',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n});\n\nexport const zMetricCardTrendVariants = cva(\n 'inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium',\n {\n variants: {\n zTrendDirection: {\n up: 'bg-emerald-500/10 text-emerald-600 dark:text-emerald-400',\n down: 'bg-destructive/10 text-destructive',\n neutral: 'bg-muted text-muted-foreground',\n },\n },\n defaultVariants: {\n zTrendDirection: 'neutral',\n },\n }\n);\n\nexport type ZMetricCardVariants = VariantProps<typeof zMetricCardVariants>;\nexport type ZMetricCardIconVariants = VariantProps<typeof zMetricCardIconVariants>;\nexport type ZMetricCardTrendVariants = VariantProps<typeof zMetricCardTrendVariants>;\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, output, ViewEncapsulation } from '@angular/core';\nimport { ZIconComponent, type ZIcon } from '@shival99/z-ui/components/z-icon';\nimport { zMergeClasses, zTransform } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport type {\n ZMetricCardAction,\n ZMetricCardDecor,\n ZMetricCardSize,\n ZMetricCardTrend,\n ZMetricCardTrendDirection,\n ZMetricCardVariant,\n} from './z-metric-card.types';\nimport {\n zMetricCardIconVariants,\n zMetricCardTrendVariants,\n zMetricCardValueVariants,\n zMetricCardVariants,\n} from './z-metric-card.variants';\n\n@Component({\n selector: 'z-metric-card',\n imports: [NgTemplateOutlet, ZIconComponent],\n standalone: true,\n templateUrl: './z-metric-card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class ZMetricCardComponent {\n public readonly zActionClick = output<ZMetricCardAction>();\n\n public readonly class = input<ClassValue>('');\n public readonly zTitle = input<string>('');\n public readonly zValue = input<string | number>('');\n public readonly zDescription = input<string>('');\n public readonly zIcon = input<ZIcon>();\n public readonly zTrend = input<ZMetricCardTrend>();\n public readonly zProgress = input<number>();\n public readonly zAction = input<ZMetricCardAction>();\n public readonly zSize = input<ZMetricCardSize>('default');\n public readonly zVariant = input<ZMetricCardVariant>('default');\n public readonly zDecor = input<ZMetricCardDecor>('wave');\n public readonly zLoading = input(false, { transform: zTransform });\n\n protected readonly hostClasses = computed(() =>\n zMergeClasses(zMetricCardVariants({ zSize: this.zSize(), zVariant: this.zVariant() }), this.class())\n );\n\n protected readonly iconClasses = computed(() =>\n zMetricCardIconVariants({ zSize: this.zSize(), zVariant: this.zVariant() })\n );\n\n protected readonly valueClasses = computed(() => zMetricCardValueVariants({ zSize: this.zSize() }));\n protected readonly decorClasses = computed(() =>\n zMergeClasses(\n 'pointer-events-none absolute right-0 top-0 text-primary/10 transition-opacity duration-200',\n this.zVariant() === 'bordered' ? 'text-muted-foreground/10' : '',\n this.zVariant() === 'soft' ? 'text-primary/15' : ''\n )\n );\n\n protected readonly trendDirection = computed<ZMetricCardTrendDirection>(() => this.zTrend()?.direction ?? 'neutral');\n protected readonly trendClasses = computed(() =>\n zMetricCardTrendVariants({ zTrendDirection: this.trendDirection() })\n );\n\n protected readonly trendIcon = computed<ZIcon>(() => {\n const direction = this.trendDirection();\n if (direction === 'up') {\n return 'lucideTrendingUp';\n }\n\n if (direction === 'down') {\n return 'lucideTrendingDown';\n }\n\n return 'lucideMinus';\n });\n\n protected readonly normalizedProgress = computed(() => {\n const progress = this.zProgress();\n if (progress === null || progress === undefined || Number.isNaN(progress)) {\n return null;\n }\n\n return Math.min(100, Math.max(0, progress));\n });\n\n protected onActionClick(): void {\n const action = this.zAction();\n if (!action) {\n return;\n }\n\n this.zActionClick.emit(action);\n }\n}\n","@if (zLoading()) {\n @if (zDecor() !== 'none') {\n <ng-container [ngTemplateOutlet]=\"metricDecor\" />\n }\n <div class=\"space-y-4\">\n <div class=\"flex items-center justify-between\">\n <div class=\"bg-muted h-9 w-9 animate-pulse rounded-md\"></div>\n <div class=\"bg-muted h-5 w-16 animate-pulse rounded-full\"></div>\n </div>\n <div class=\"space-y-2\">\n <div class=\"bg-muted h-4 w-24 animate-pulse rounded\"></div>\n <div class=\"bg-muted h-8 w-32 animate-pulse rounded\"></div>\n <div class=\"bg-muted h-3 w-40 animate-pulse rounded\"></div>\n </div>\n </div>\n} @else {\n @if (zDecor() !== 'none') {\n <ng-container [ngTemplateOutlet]=\"metricDecor\" />\n }\n\n <div class=\"relative z-10 flex items-start justify-between gap-4\">\n <div class=\"min-w-0 space-y-3\">\n @if (zIcon()) {\n <span [class]=\"iconClasses()\">\n <z-icon [zType]=\"zIcon()\" zSize=\"18\" />\n </span>\n }\n\n <div class=\"min-w-0\">\n @if (zTitle()) {\n <p class=\"text-muted-foreground overflow-hidden text-sm font-medium text-ellipsis whitespace-nowrap\">\n {{ zTitle() }}\n </p>\n }\n <p [class]=\"valueClasses()\">{{ zValue() }}</p>\n @if (zDescription()) {\n <p class=\"text-muted-foreground mt-1 overflow-hidden text-sm text-ellipsis whitespace-nowrap\">\n {{ zDescription() }}\n </p>\n }\n </div>\n </div>\n\n <div class=\"flex shrink-0 flex-col items-end gap-2\">\n @if (zTrend(); as trend) {\n <span [class]=\"trendClasses()\">\n <z-icon [zType]=\"trendIcon()\" zSize=\"12\" />\n <span>{{ trend.value }}</span>\n @if (trend.label) {\n <span>{{ trend.label }}</span>\n }\n </span>\n }\n\n @if (zAction(); as action) {\n <button\n type=\"button\"\n class=\"text-muted-foreground hover:bg-muted hover:text-foreground inline-flex size-8 items-center justify-center rounded-md transition-colors\"\n [attr.aria-label]=\"action.label\"\n (click)=\"onActionClick()\">\n <z-icon [zType]=\"action.icon ?? 'lucideMoreHorizontal'\" zSize=\"16\" />\n </button>\n }\n </div>\n </div>\n\n @if (normalizedProgress() !== null) {\n <div class=\"bg-muted mt-4 h-1.5 overflow-hidden rounded-full\">\n <div\n class=\"bg-primary h-full rounded-full transition-[width] duration-300\"\n [style.width.%]=\"normalizedProgress()\"></div>\n </div>\n }\n\n <ng-content />\n}\n\n<ng-template #metricDecor>\n @switch (zDecor()) {\n @case ('bars') {\n <svg [class]=\"decorClasses()\" width=\"122\" height=\"98\" viewBox=\"0 0 122 98\" fill=\"none\" aria-hidden=\"true\">\n <rect x=\"54\" y=\"50\" width=\"10\" height=\"34\" rx=\"5\" fill=\"currentColor\" />\n <rect x=\"72\" y=\"30\" width=\"10\" height=\"54\" rx=\"5\" fill=\"currentColor\" />\n <rect x=\"90\" y=\"14\" width=\"10\" height=\"70\" rx=\"5\" fill=\"currentColor\" />\n <path d=\"M43 84H112\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </svg>\n }\n @case ('dots') {\n <svg [class]=\"decorClasses()\" width=\"124\" height=\"96\" viewBox=\"0 0 124 96\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"66\" cy=\"22\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"88\" cy=\"22\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"110\" cy=\"22\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"55\" cy=\"44\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"77\" cy=\"44\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"99\" cy=\"44\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"66\" cy=\"66\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"88\" cy=\"66\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"110\" cy=\"66\" r=\"4\" fill=\"currentColor\" />\n </svg>\n }\n @case ('grid') {\n <svg [class]=\"decorClasses()\" width=\"116\" height=\"94\" viewBox=\"0 0 116 94\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M18 10H106V74H18V10Z\" stroke=\"currentColor\" stroke-width=\"1\" />\n <path d=\"M18 26H106M18 42H106M18 58H106M34 10V74M50 10V74M66 10V74M82 10V74M98 10V74\" stroke=\"currentColor\" />\n <circle cx=\"34\" cy=\"58\" r=\"3\" fill=\"currentColor\" />\n <circle cx=\"58\" cy=\"34\" r=\"3\" fill=\"currentColor\" />\n <circle cx=\"82\" cy=\"46\" r=\"3\" fill=\"currentColor\" />\n </svg>\n }\n @case ('rings') {\n <svg [class]=\"decorClasses()\" width=\"126\" height=\"96\" viewBox=\"0 0 126 96\" fill=\"none\" aria-hidden=\"true\">\n <circle cx=\"96\" cy=\"28\" r=\"26\" stroke=\"currentColor\" stroke-width=\"8\" />\n <circle cx=\"96\" cy=\"28\" r=\"12\" stroke=\"currentColor\" stroke-width=\"4\" />\n <circle cx=\"64\" cy=\"58\" r=\"20\" stroke=\"currentColor\" stroke-width=\"6\" />\n <path d=\"M42 78C56 64 72 51 91 35\" stroke=\"currentColor\" stroke-width=\"4\" stroke-linecap=\"round\" />\n </svg>\n }\n @case ('spark') {\n <svg [class]=\"decorClasses()\" width=\"126\" height=\"96\" viewBox=\"0 0 126 96\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M35 70L50 53L63 61L77 34L90 42L108 18\"\n stroke=\"currentColor\"\n stroke-width=\"7\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M36 82H112\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\n <circle cx=\"108\" cy=\"18\" r=\"6\" fill=\"currentColor\" />\n </svg>\n }\n @default {\n <svg [class]=\"decorClasses()\" width=\"128\" height=\"96\" viewBox=\"0 0 128 96\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M21 70C34 49 47 39 62 42C82 46 85 20 107 18\"\n stroke=\"currentColor\"\n stroke-width=\"10\"\n stroke-linecap=\"round\" />\n <path\n d=\"M30 82C45 64 58 56 72 58C91 61 96 41 112 38\"\n stroke=\"currentColor\"\n stroke-width=\"5\"\n stroke-linecap=\"round\" />\n <circle cx=\"108\" cy=\"18\" r=\"7\" fill=\"currentColor\" />\n <circle cx=\"112\" cy=\"38\" r=\"4\" fill=\"currentColor\" />\n </svg>\n }\n }\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|