@xosue-utils/helpers 0.2.0 → 0.2.3
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/xosue-utils-helpers.mjs +691 -33
- package/fesm2022/xosue-utils-helpers.mjs.map +1 -1
- package/lib/accordion/accordion-item.component.d.ts +11 -0
- package/lib/accordion/accordion.component.d.ts +9 -0
- package/lib/avatar/avatar.component.d.ts +12 -0
- package/lib/breadcrumbs/breadcrumbs.component.d.ts +13 -0
- package/lib/data-table/data-table.component.d.ts +19 -0
- package/lib/index.d.ts +17 -0
- package/lib/list-row/list-row.component.d.ts +13 -0
- package/lib/notice/notice.component.d.ts +11 -0
- package/lib/skeleton/skeleton.component.d.ts +13 -0
- package/lib/stepper/stepper.component.d.ts +14 -0
- package/lib/surface-card/surface-card.component.d.ts +8 -0
- package/lib/tabs/tabs.component.d.ts +16 -0
- package/package.json +4 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Injector, signal, computed, effect, Input, Component, input, output } from '@angular/core';
|
|
3
|
-
import { Router, ActivatedRoute } from '@angular/router';
|
|
2
|
+
import { inject, Injector, signal, computed, effect, Input, Component, input, output, booleanAttribute, model, forwardRef, contentChildren } from '@angular/core';
|
|
3
|
+
import { Router, ActivatedRoute, RouterLink } from '@angular/router';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import { Subscription } from 'rxjs';
|
|
6
6
|
import { LucideIconComponent, TextBtnComponent } from '@xosue-utils/actions';
|
|
@@ -136,12 +136,12 @@ class SmartPaginationComponent {
|
|
|
136
136
|
ngOnDestroy() {
|
|
137
137
|
this.queryParamsSub.unsubscribe();
|
|
138
138
|
}
|
|
139
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
140
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
139
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SmartPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
140
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: SmartPaginationComponent, isStandalone: true, selector: "smart-pagination", inputs: { resetOnChanges: "resetOnChanges", paramName: "paramName", emptyLabel: "emptyLabel", singlePageLabel: "singlePageLabel", data: "data" }, ngImport: i0, template: "@if (paginationData() && paginationData().total === 0) {\r\n <p class=\"NonResults\">{{ emptyLabel }}</p>\r\n} @else if (paginationData() && paginationData().last_page > 1) {\r\n <nav class=\"pagination\" aria-label=\"Paginaci\u00F3n\">\r\n @if (currentPage() > 1) {\r\n <button type=\"button\" (click)=\"goToPage(currentPage() - 1)\" aria-label=\"Anterior\">\r\n <lucide-icon name=\"chevron-left\" [size]=\"14\"></lucide-icon>\r\n </button>\r\n }\r\n\r\n @for (p of pagesToDisplay(); track $index) {\r\n @if (isPage(p)) {\r\n <a\r\n [class.active]=\"p === currentPage()\"\r\n [href]=\"generateHref(p)\"\r\n (click)=\"goToPage(p); $event.preventDefault()\"\r\n >\r\n {{ p }}\r\n </a>\r\n } @else {\r\n <span class=\"ellipsis\">\u2026</span>\r\n }\r\n }\r\n\r\n @if (currentPage() < lastPage()) {\r\n <button type=\"button\" (click)=\"goToPage(currentPage() + 1)\" aria-label=\"Siguiente\">\r\n <lucide-icon name=\"chevron-right\" [size]=\"14\"></lucide-icon>\r\n </button>\r\n }\r\n </nav>\r\n} @else {\r\n <p class=\"UniquePage\">{{ singlePageLabel }}</p>\r\n}\r\n", styles: [":host{width:max-content;height:32px;display:flex;user-select:none;-webkit-user-select:none}.pagination{width:max-content;max-width:280px;height:32px;display:flex;align-items:center;gap:4px;background-color:var(--color-surface-muted, var(--color-surface));border-radius:var(--radius-lg, 12px);padding:2px;border:1px solid var(--color-border, #e5e5e5)}.pagination a,.pagination button{min-width:28px;height:28px;padding:2px 8px;font-size:14px;font-weight:400;cursor:pointer;border:none;background-color:transparent;color:var(--color-fg-muted, #a3a3a3);border-radius:var(--radius-md, 8px);display:flex;justify-content:center;align-items:center;text-decoration:none;transition:background-color .15s ease,color .15s ease,transform .1s ease}.pagination a:hover,.pagination button:hover{background-color:color-mix(in srgb,var(--color-surface, #ffffff) 80%,var(--color-border, #e5e5e5));color:var(--color-fg, #171717)}.pagination a:active,.pagination button:active{transform:scale(.98)}.pagination a.active,.pagination button.active{background-color:var(--color-surface, #ffffff);color:var(--color-fg, #171717);font-weight:400;box-shadow:0 1px 2px color-mix(in srgb,var(--color-fg, #171717) 12%,transparent)}.pagination .ellipsis{display:flex;align-items:center;justify-content:center;width:max-content;padding:0 2px;color:var(--color-fg-muted, #a3a3a3)}.NonResults,.UniquePage{width:max-content;max-width:280px;height:32px;display:flex;align-items:center;gap:4px;background-color:var(--color-surface-muted, var(--color-surface));border-radius:var(--radius-lg, 12px);padding:4px 8px;border:1px solid var(--color-border, #e5e5e5);color:var(--color-fg-muted, #a3a3a3);margin:0;font-size:14px}\n"], dependencies: [{ kind: "component", type: LucideIconComponent, selector: "lucide-icon", inputs: ["name", "size", "spin", "filled"] }, { kind: "ngmodule", type: CommonModule }] });
|
|
141
141
|
}
|
|
142
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
142
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SmartPaginationComponent, decorators: [{
|
|
143
143
|
type: Component,
|
|
144
|
-
args: [{ selector: 'smart-pagination', standalone: true, imports: [LucideIconComponent, CommonModule], template: "@if (paginationData() && paginationData().total === 0) {\r\n <p class=\"NonResults\">{{ emptyLabel }}</p>\r\n} @else if (paginationData() && paginationData().last_page > 1) {\r\n <nav class=\"pagination\" aria-label=\"Paginaci\u00F3n\">\r\n @if (currentPage() > 1) {\r\n <button type=\"button\" (click)=\"goToPage(currentPage() - 1)\" aria-label=\"Anterior\">\r\n <lucide-icon name=\"chevron-left\" [size]=\"
|
|
144
|
+
args: [{ selector: 'smart-pagination', standalone: true, imports: [LucideIconComponent, CommonModule], template: "@if (paginationData() && paginationData().total === 0) {\r\n <p class=\"NonResults\">{{ emptyLabel }}</p>\r\n} @else if (paginationData() && paginationData().last_page > 1) {\r\n <nav class=\"pagination\" aria-label=\"Paginaci\u00F3n\">\r\n @if (currentPage() > 1) {\r\n <button type=\"button\" (click)=\"goToPage(currentPage() - 1)\" aria-label=\"Anterior\">\r\n <lucide-icon name=\"chevron-left\" [size]=\"14\"></lucide-icon>\r\n </button>\r\n }\r\n\r\n @for (p of pagesToDisplay(); track $index) {\r\n @if (isPage(p)) {\r\n <a\r\n [class.active]=\"p === currentPage()\"\r\n [href]=\"generateHref(p)\"\r\n (click)=\"goToPage(p); $event.preventDefault()\"\r\n >\r\n {{ p }}\r\n </a>\r\n } @else {\r\n <span class=\"ellipsis\">\u2026</span>\r\n }\r\n }\r\n\r\n @if (currentPage() < lastPage()) {\r\n <button type=\"button\" (click)=\"goToPage(currentPage() + 1)\" aria-label=\"Siguiente\">\r\n <lucide-icon name=\"chevron-right\" [size]=\"14\"></lucide-icon>\r\n </button>\r\n }\r\n </nav>\r\n} @else {\r\n <p class=\"UniquePage\">{{ singlePageLabel }}</p>\r\n}\r\n", styles: [":host{width:max-content;height:32px;display:flex;user-select:none;-webkit-user-select:none}.pagination{width:max-content;max-width:280px;height:32px;display:flex;align-items:center;gap:4px;background-color:var(--color-surface-muted, var(--color-surface));border-radius:var(--radius-lg, 12px);padding:2px;border:1px solid var(--color-border, #e5e5e5)}.pagination a,.pagination button{min-width:28px;height:28px;padding:2px 8px;font-size:14px;font-weight:400;cursor:pointer;border:none;background-color:transparent;color:var(--color-fg-muted, #a3a3a3);border-radius:var(--radius-md, 8px);display:flex;justify-content:center;align-items:center;text-decoration:none;transition:background-color .15s ease,color .15s ease,transform .1s ease}.pagination a:hover,.pagination button:hover{background-color:color-mix(in srgb,var(--color-surface, #ffffff) 80%,var(--color-border, #e5e5e5));color:var(--color-fg, #171717)}.pagination a:active,.pagination button:active{transform:scale(.98)}.pagination a.active,.pagination button.active{background-color:var(--color-surface, #ffffff);color:var(--color-fg, #171717);font-weight:400;box-shadow:0 1px 2px color-mix(in srgb,var(--color-fg, #171717) 12%,transparent)}.pagination .ellipsis{display:flex;align-items:center;justify-content:center;width:max-content;padding:0 2px;color:var(--color-fg-muted, #a3a3a3)}.NonResults,.UniquePage{width:max-content;max-width:280px;height:32px;display:flex;align-items:center;gap:4px;background-color:var(--color-surface-muted, var(--color-surface));border-radius:var(--radius-lg, 12px);padding:4px 8px;border:1px solid var(--color-border, #e5e5e5);color:var(--color-fg-muted, #a3a3a3);margin:0;font-size:14px}\n"] }]
|
|
145
145
|
}], propDecorators: { resetOnChanges: [{
|
|
146
146
|
type: Input
|
|
147
147
|
}], paramName: [{
|
|
@@ -163,12 +163,12 @@ class EmptyStateComponent {
|
|
|
163
163
|
secondaryLabel = input(null);
|
|
164
164
|
primary = output();
|
|
165
165
|
secondary = output();
|
|
166
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
167
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
166
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: EmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
167
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: EmptyStateComponent, isStandalone: true, selector: "empty-state", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, primaryLabel: { classPropertyName: "primaryLabel", publicName: "primaryLabel", isSignal: true, isRequired: false, transformFunction: null }, primaryIcon: { classPropertyName: "primaryIcon", publicName: "primaryIcon", isSignal: true, isRequired: false, transformFunction: null }, secondaryLabel: { classPropertyName: "secondaryLabel", publicName: "secondaryLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { primary: "primary", secondary: "secondary" }, ngImport: i0, template: `
|
|
168
168
|
<div class="EmptyState">
|
|
169
169
|
@if (icon()) {
|
|
170
170
|
<div class="EmptyState__Icon">
|
|
171
|
-
<lucide-icon [name]="icon()!" [size]="
|
|
171
|
+
<lucide-icon [name]="icon()!" [size]="24"></lucide-icon>
|
|
172
172
|
</div>
|
|
173
173
|
}
|
|
174
174
|
<h3 class="EmptyState__Title">{{ title() }}</h3>
|
|
@@ -188,7 +188,7 @@ class EmptyStateComponent {
|
|
|
188
188
|
@if (primaryLabel()) {
|
|
189
189
|
<text-btn
|
|
190
190
|
[label]="primaryLabel()!"
|
|
191
|
-
[icon]="primaryIcon()"
|
|
191
|
+
[icon]="primaryIcon() ?? ''"
|
|
192
192
|
color="primary"
|
|
193
193
|
(clicked)="primary.emit($event)"
|
|
194
194
|
></text-btn>
|
|
@@ -197,15 +197,15 @@ class EmptyStateComponent {
|
|
|
197
197
|
}
|
|
198
198
|
<ng-content></ng-content>
|
|
199
199
|
</div>
|
|
200
|
-
`, isInline: true, styles: [":host{display:block;width:100
|
|
200
|
+
`, isInline: true, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.EmptyState{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:28px 16px 20px;text-align:center;border-radius:var(--radius-xl, 16px);background:var(--color-surface-muted, var(--color-surface));border:1px solid var(--color-border, #e5e5e5)}.EmptyState__Icon{display:flex;color:var(--color-fg-muted, #a3a3a3)}.EmptyState__Icon lucide-icon{--lucide-stroke: var(--color-fg-muted, #a3a3a3)}.EmptyState__Title{margin:0;font-size:14px;font-weight:400;color:var(--color-fg, #171717)}.EmptyState__Message{margin:0;max-width:28rem;font-size:14px;line-height:1.45;color:var(--color-fg-muted, #a3a3a3)}.EmptyState__Actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px;margin-top:4px}\n"], dependencies: [{ kind: "component", type: LucideIconComponent, selector: "lucide-icon", inputs: ["name", "size", "spin", "filled"] }, { kind: "component", type: TextBtnComponent, selector: "text-btn", inputs: ["label", "icon", "iconPosition", "iconSpin", "layout", "variant", "color", "rounded", "size", "ripple", "disabled", "buttonType", "href", "routerLink", "fit", "width", "textColor", "bgColor", "borderColor", "title"], outputs: ["clicked"] }] });
|
|
201
201
|
}
|
|
202
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
202
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: EmptyStateComponent, decorators: [{
|
|
203
203
|
type: Component,
|
|
204
204
|
args: [{ selector: 'empty-state', standalone: true, imports: [LucideIconComponent, TextBtnComponent], template: `
|
|
205
205
|
<div class="EmptyState">
|
|
206
206
|
@if (icon()) {
|
|
207
207
|
<div class="EmptyState__Icon">
|
|
208
|
-
<lucide-icon [name]="icon()!" [size]="
|
|
208
|
+
<lucide-icon [name]="icon()!" [size]="24"></lucide-icon>
|
|
209
209
|
</div>
|
|
210
210
|
}
|
|
211
211
|
<h3 class="EmptyState__Title">{{ title() }}</h3>
|
|
@@ -225,7 +225,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
|
|
|
225
225
|
@if (primaryLabel()) {
|
|
226
226
|
<text-btn
|
|
227
227
|
[label]="primaryLabel()!"
|
|
228
|
-
[icon]="primaryIcon()"
|
|
228
|
+
[icon]="primaryIcon() ?? ''"
|
|
229
229
|
color="primary"
|
|
230
230
|
(clicked)="primary.emit($event)"
|
|
231
231
|
></text-btn>
|
|
@@ -234,7 +234,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
|
|
|
234
234
|
}
|
|
235
235
|
<ng-content></ng-content>
|
|
236
236
|
</div>
|
|
237
|
-
`, styles: [":host{display:block;width:100
|
|
237
|
+
`, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.EmptyState{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:28px 16px 20px;text-align:center;border-radius:var(--radius-xl, 16px);background:var(--color-surface-muted, var(--color-surface));border:1px solid var(--color-border, #e5e5e5)}.EmptyState__Icon{display:flex;color:var(--color-fg-muted, #a3a3a3)}.EmptyState__Icon lucide-icon{--lucide-stroke: var(--color-fg-muted, #a3a3a3)}.EmptyState__Title{margin:0;font-size:14px;font-weight:400;color:var(--color-fg, #171717)}.EmptyState__Message{margin:0;max-width:28rem;font-size:14px;line-height:1.45;color:var(--color-fg-muted, #a3a3a3)}.EmptyState__Actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px;margin-top:4px}\n"] }]
|
|
238
238
|
}] });
|
|
239
239
|
|
|
240
240
|
class LoadErrorComponent {
|
|
@@ -243,11 +243,11 @@ class LoadErrorComponent {
|
|
|
243
243
|
icon = input('triangle-alert');
|
|
244
244
|
retryLabel = input('Reintentar');
|
|
245
245
|
retry = output();
|
|
246
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
247
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
246
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LoadErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
247
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: LoadErrorComponent, isStandalone: true, selector: "load-error", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, retryLabel: { classPropertyName: "retryLabel", publicName: "retryLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { retry: "retry" }, ngImport: i0, template: `
|
|
248
248
|
<div class="LoadError">
|
|
249
249
|
<div class="LoadError__Icon">
|
|
250
|
-
<lucide-icon [name]="icon()" [size]="
|
|
250
|
+
<lucide-icon [name]="icon()" [size]="24"></lucide-icon>
|
|
251
251
|
</div>
|
|
252
252
|
<h3 class="LoadError__Title">{{ title() }}</h3>
|
|
253
253
|
@if (message()) {
|
|
@@ -263,14 +263,14 @@ class LoadErrorComponent {
|
|
|
263
263
|
</div>
|
|
264
264
|
<ng-content></ng-content>
|
|
265
265
|
</div>
|
|
266
|
-
`, isInline: true, styles: [":host{display:block;width:100
|
|
266
|
+
`, isInline: true, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.LoadError{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:28px 16px 20px;text-align:center;border-radius:var(--radius-xl, 16px);background:var(--color-danger-bg, var(--color-surface, #fef2f2));border:1px solid var(--color-danger-border, var(--color-border, #fca5a5))}.LoadError__Icon{display:flex;color:var(--color-danger-fg, var(--color-fg, #dc2626))}.LoadError__Icon lucide-icon{--lucide-stroke: var(--color-danger-fg, var(--color-fg, #dc2626))}.LoadError__Title{margin:0;font-size:14px;font-weight:400;color:var(--color-fg, #171717)}.LoadError__Message{margin:0;max-width:28rem;font-size:14px;line-height:1.45;color:var(--color-fg-muted, #a3a3a3)}.LoadError__Actions{display:flex;margin-top:4px}\n"], dependencies: [{ kind: "component", type: LucideIconComponent, selector: "lucide-icon", inputs: ["name", "size", "spin", "filled"] }, { kind: "component", type: TextBtnComponent, selector: "text-btn", inputs: ["label", "icon", "iconPosition", "iconSpin", "layout", "variant", "color", "rounded", "size", "ripple", "disabled", "buttonType", "href", "routerLink", "fit", "width", "textColor", "bgColor", "borderColor", "title"], outputs: ["clicked"] }] });
|
|
267
267
|
}
|
|
268
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
268
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: LoadErrorComponent, decorators: [{
|
|
269
269
|
type: Component,
|
|
270
270
|
args: [{ selector: 'load-error', standalone: true, imports: [LucideIconComponent, TextBtnComponent], template: `
|
|
271
271
|
<div class="LoadError">
|
|
272
272
|
<div class="LoadError__Icon">
|
|
273
|
-
<lucide-icon [name]="icon()" [size]="
|
|
273
|
+
<lucide-icon [name]="icon()" [size]="24"></lucide-icon>
|
|
274
274
|
</div>
|
|
275
275
|
<h3 class="LoadError__Title">{{ title() }}</h3>
|
|
276
276
|
@if (message()) {
|
|
@@ -286,15 +286,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
|
|
|
286
286
|
</div>
|
|
287
287
|
<ng-content></ng-content>
|
|
288
288
|
</div>
|
|
289
|
-
`, styles: [":host{display:block;width:100
|
|
289
|
+
`, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.LoadError{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:28px 16px 20px;text-align:center;border-radius:var(--radius-xl, 16px);background:var(--color-danger-bg, var(--color-surface, #fef2f2));border:1px solid var(--color-danger-border, var(--color-border, #fca5a5))}.LoadError__Icon{display:flex;color:var(--color-danger-fg, var(--color-fg, #dc2626))}.LoadError__Icon lucide-icon{--lucide-stroke: var(--color-danger-fg, var(--color-fg, #dc2626))}.LoadError__Title{margin:0;font-size:14px;font-weight:400;color:var(--color-fg, #171717)}.LoadError__Message{margin:0;max-width:28rem;font-size:14px;line-height:1.45;color:var(--color-fg-muted, #a3a3a3)}.LoadError__Actions{display:flex;margin-top:4px}\n"] }]
|
|
290
290
|
}] });
|
|
291
291
|
|
|
292
292
|
class SectionHeaderComponent {
|
|
293
293
|
title = input.required();
|
|
294
294
|
subtitle = input(null);
|
|
295
295
|
eyebrow = input(null);
|
|
296
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
297
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
296
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SectionHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
297
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: SectionHeaderComponent, isStandalone: true, selector: "section-header", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, eyebrow: { classPropertyName: "eyebrow", publicName: "eyebrow", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
298
298
|
<header class="SectionHeader">
|
|
299
299
|
<div class="SectionHeader__Text">
|
|
300
300
|
@if (eyebrow()) {
|
|
@@ -309,9 +309,9 @@ class SectionHeaderComponent {
|
|
|
309
309
|
<ng-content></ng-content>
|
|
310
310
|
</div>
|
|
311
311
|
</header>
|
|
312
|
-
`, isInline: true, styles: [":host{display:block;width:100
|
|
312
|
+
`, isInline: true, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.SectionHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;width:100%}.SectionHeader__Text{display:flex;flex-direction:column;gap:4px;min-width:0}.SectionHeader__Eyebrow{margin:0;font-size:14px;font-weight:400;letter-spacing:.04em;text-transform:uppercase;color:var(--color-fg-muted, #a3a3a3)}.SectionHeader__Title{margin:0;font-size:14px;font-weight:400;color:var(--color-fg, #171717);line-height:1.25}.SectionHeader__Subtitle{margin:0;font-size:14px;color:var(--color-fg-muted, #a3a3a3);line-height:1.4}.SectionHeader__Actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:4px;flex-shrink:0}\n"] });
|
|
313
313
|
}
|
|
314
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
314
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SectionHeaderComponent, decorators: [{
|
|
315
315
|
type: Component,
|
|
316
316
|
args: [{ selector: 'section-header', standalone: true, template: `
|
|
317
317
|
<header class="SectionHeader">
|
|
@@ -328,14 +328,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
|
|
|
328
328
|
<ng-content></ng-content>
|
|
329
329
|
</div>
|
|
330
330
|
</header>
|
|
331
|
-
`, styles: [":host{display:block;width:100
|
|
331
|
+
`, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.SectionHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;width:100%}.SectionHeader__Text{display:flex;flex-direction:column;gap:4px;min-width:0}.SectionHeader__Eyebrow{margin:0;font-size:14px;font-weight:400;letter-spacing:.04em;text-transform:uppercase;color:var(--color-fg-muted, #a3a3a3)}.SectionHeader__Title{margin:0;font-size:14px;font-weight:400;color:var(--color-fg, #171717);line-height:1.25}.SectionHeader__Subtitle{margin:0;font-size:14px;color:var(--color-fg-muted, #a3a3a3);line-height:1.4}.SectionHeader__Actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:4px;flex-shrink:0}\n"] }]
|
|
332
332
|
}] });
|
|
333
333
|
|
|
334
334
|
class KeyValueListComponent {
|
|
335
335
|
items = input([]);
|
|
336
336
|
emptyValue = input('—');
|
|
337
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
338
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
337
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: KeyValueListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
338
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: KeyValueListComponent, isStandalone: true, selector: "key-value-list", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, emptyValue: { classPropertyName: "emptyValue", publicName: "emptyValue", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
339
339
|
<dl class="KvList">
|
|
340
340
|
@for (item of items(); track item.label + '-' + $index) {
|
|
341
341
|
<div class="KvList__Row">
|
|
@@ -344,9 +344,9 @@ class KeyValueListComponent {
|
|
|
344
344
|
</div>
|
|
345
345
|
}
|
|
346
346
|
</dl>
|
|
347
|
-
`, isInline: true, styles: [":host{display:block;width:100
|
|
347
|
+
`, isInline: true, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.KvList{margin:0;display:flex;flex-direction:column;gap:0;border:1px solid var(--color-border, #e5e5e5);border-radius:var(--radius-lg, 12px);overflow:hidden;background:var(--color-surface, #ffffff)}.KvList__Row{display:grid;grid-template-columns:minmax(6rem,40%) 1fr;gap:8px;padding:8px 12px;border-bottom:1px solid var(--color-border, #e5e5e5)}.KvList__Row:last-child{border-bottom:none}.KvList__Label{margin:0;font-size:14px;color:var(--color-fg-muted, #a3a3a3);font-weight:400}.KvList__Value{margin:0;font-size:14px;color:var(--color-fg, #171717);word-break:break-word}\n"] });
|
|
348
348
|
}
|
|
349
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
349
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: KeyValueListComponent, decorators: [{
|
|
350
350
|
type: Component,
|
|
351
351
|
args: [{ selector: 'key-value-list', standalone: true, template: `
|
|
352
352
|
<dl class="KvList">
|
|
@@ -357,7 +357,665 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
|
|
|
357
357
|
</div>
|
|
358
358
|
}
|
|
359
359
|
</dl>
|
|
360
|
-
`, styles: [":host{display:block;width:100
|
|
360
|
+
`, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.KvList{margin:0;display:flex;flex-direction:column;gap:0;border:1px solid var(--color-border, #e5e5e5);border-radius:var(--radius-lg, 12px);overflow:hidden;background:var(--color-surface, #ffffff)}.KvList__Row{display:grid;grid-template-columns:minmax(6rem,40%) 1fr;gap:8px;padding:8px 12px;border-bottom:1px solid var(--color-border, #e5e5e5)}.KvList__Row:last-child{border-bottom:none}.KvList__Label{margin:0;font-size:14px;color:var(--color-fg-muted, #a3a3a3);font-weight:400}.KvList__Value{margin:0;font-size:14px;color:var(--color-fg, #171717);word-break:break-word}\n"] }]
|
|
361
|
+
}] });
|
|
362
|
+
|
|
363
|
+
class SkeletonComponent {
|
|
364
|
+
variant = input('line');
|
|
365
|
+
lines = input(3);
|
|
366
|
+
width = input('100%');
|
|
367
|
+
height = input('14px');
|
|
368
|
+
pulse = input(true, { transform: booleanAttribute });
|
|
369
|
+
get lineIndexes() {
|
|
370
|
+
return Array.from({ length: Math.max(1, this.lines()) }, (_, i) => i);
|
|
371
|
+
}
|
|
372
|
+
lineWidth(index) {
|
|
373
|
+
if (this.lines() <= 1)
|
|
374
|
+
return this.width();
|
|
375
|
+
return index === this.lines() - 1 ? '62%' : '100%';
|
|
376
|
+
}
|
|
377
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
378
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: SkeletonComponent, isStandalone: true, selector: "skeleton", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, lines: { classPropertyName: "lines", publicName: "lines", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, pulse: { classPropertyName: "pulse", publicName: "pulse", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
379
|
+
<div
|
|
380
|
+
class="Skeleton"
|
|
381
|
+
[class.Skeleton--circle]="variant() === 'circle'"
|
|
382
|
+
[class.Skeleton--rect]="variant() === 'rect'"
|
|
383
|
+
[class.Skeleton--static]="!pulse()"
|
|
384
|
+
[attr.aria-hidden]="true"
|
|
385
|
+
>
|
|
386
|
+
@if (variant() === 'line') {
|
|
387
|
+
@for (line of lineIndexes; track line) {
|
|
388
|
+
<span class="Skeleton__Line" [style.width]="lineWidth(line)"></span>
|
|
389
|
+
}
|
|
390
|
+
} @else {
|
|
391
|
+
<span class="Skeleton__Block" [style.width]="width()" [style.height]="height()"></span>
|
|
392
|
+
}
|
|
393
|
+
</div>
|
|
394
|
+
`, isInline: true, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.Skeleton{display:flex;flex-direction:column;gap:4px;width:100%}.Skeleton--circle,.Skeleton--rect{width:auto}.Skeleton__Line,.Skeleton__Block{display:block;border-radius:8px;background:var(--color-surface-emphasis, #e5e5e5);animation:skeletonPulse 1.2s ease-in-out infinite alternate}.Skeleton__Line{height:14px}.Skeleton__Block{min-width:14px;min-height:14px}.Skeleton--circle .Skeleton__Block{border-radius:50%}.Skeleton--static .Skeleton__Line,.Skeleton--static .Skeleton__Block{animation:none}@keyframes skeletonPulse{0%{opacity:.55}to{opacity:1}}\n"] });
|
|
395
|
+
}
|
|
396
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SkeletonComponent, decorators: [{
|
|
397
|
+
type: Component,
|
|
398
|
+
args: [{ selector: 'skeleton', standalone: true, template: `
|
|
399
|
+
<div
|
|
400
|
+
class="Skeleton"
|
|
401
|
+
[class.Skeleton--circle]="variant() === 'circle'"
|
|
402
|
+
[class.Skeleton--rect]="variant() === 'rect'"
|
|
403
|
+
[class.Skeleton--static]="!pulse()"
|
|
404
|
+
[attr.aria-hidden]="true"
|
|
405
|
+
>
|
|
406
|
+
@if (variant() === 'line') {
|
|
407
|
+
@for (line of lineIndexes; track line) {
|
|
408
|
+
<span class="Skeleton__Line" [style.width]="lineWidth(line)"></span>
|
|
409
|
+
}
|
|
410
|
+
} @else {
|
|
411
|
+
<span class="Skeleton__Block" [style.width]="width()" [style.height]="height()"></span>
|
|
412
|
+
}
|
|
413
|
+
</div>
|
|
414
|
+
`, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.Skeleton{display:flex;flex-direction:column;gap:4px;width:100%}.Skeleton--circle,.Skeleton--rect{width:auto}.Skeleton__Line,.Skeleton__Block{display:block;border-radius:8px;background:var(--color-surface-emphasis, #e5e5e5);animation:skeletonPulse 1.2s ease-in-out infinite alternate}.Skeleton__Line{height:14px}.Skeleton__Block{min-width:14px;min-height:14px}.Skeleton--circle .Skeleton__Block{border-radius:50%}.Skeleton--static .Skeleton__Line,.Skeleton--static .Skeleton__Block{animation:none}@keyframes skeletonPulse{0%{opacity:.55}to{opacity:1}}\n"] }]
|
|
415
|
+
}] });
|
|
416
|
+
|
|
417
|
+
class SurfaceCardComponent {
|
|
418
|
+
title = input(null);
|
|
419
|
+
subtitle = input(null);
|
|
420
|
+
compact = input(false, { transform: booleanAttribute });
|
|
421
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SurfaceCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
422
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: SurfaceCardComponent, isStandalone: true, selector: "surface-card", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
423
|
+
<div class="SurfaceCard" [class.SurfaceCard--compact]="compact()">
|
|
424
|
+
@if (title() || subtitle()) {
|
|
425
|
+
<div class="SurfaceCard__Head">
|
|
426
|
+
@if (title()) {
|
|
427
|
+
<p class="SurfaceCard__Title">{{ title() }}</p>
|
|
428
|
+
}
|
|
429
|
+
@if (subtitle()) {
|
|
430
|
+
<p class="SurfaceCard__Subtitle">{{ subtitle() }}</p>
|
|
431
|
+
}
|
|
432
|
+
</div>
|
|
433
|
+
}
|
|
434
|
+
<div class="SurfaceCard__Body">
|
|
435
|
+
<ng-content></ng-content>
|
|
436
|
+
</div>
|
|
437
|
+
</div>
|
|
438
|
+
`, isInline: true, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.SurfaceCard{display:flex;flex-direction:column;gap:4px;width:100%;padding:16px;border-radius:var(--radius-xl, 16px);background:var(--color-surface-muted, #f5f5f5)}.SurfaceCard--compact{padding:8px}.SurfaceCard__Head{display:flex;flex-direction:column;gap:4px}.SurfaceCard__Title{margin:0;font-size:14px;font-weight:400;color:var(--color-fg, #171717)}.SurfaceCard__Subtitle{margin:0;font-size:14px;font-weight:400;color:var(--color-fg-muted, #a3a3a3)}.SurfaceCard__Body{display:flex;flex-direction:column;gap:4px;min-width:0}\n"] });
|
|
439
|
+
}
|
|
440
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: SurfaceCardComponent, decorators: [{
|
|
441
|
+
type: Component,
|
|
442
|
+
args: [{ selector: 'surface-card', standalone: true, template: `
|
|
443
|
+
<div class="SurfaceCard" [class.SurfaceCard--compact]="compact()">
|
|
444
|
+
@if (title() || subtitle()) {
|
|
445
|
+
<div class="SurfaceCard__Head">
|
|
446
|
+
@if (title()) {
|
|
447
|
+
<p class="SurfaceCard__Title">{{ title() }}</p>
|
|
448
|
+
}
|
|
449
|
+
@if (subtitle()) {
|
|
450
|
+
<p class="SurfaceCard__Subtitle">{{ subtitle() }}</p>
|
|
451
|
+
}
|
|
452
|
+
</div>
|
|
453
|
+
}
|
|
454
|
+
<div class="SurfaceCard__Body">
|
|
455
|
+
<ng-content></ng-content>
|
|
456
|
+
</div>
|
|
457
|
+
</div>
|
|
458
|
+
`, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.SurfaceCard{display:flex;flex-direction:column;gap:4px;width:100%;padding:16px;border-radius:var(--radius-xl, 16px);background:var(--color-surface-muted, #f5f5f5)}.SurfaceCard--compact{padding:8px}.SurfaceCard__Head{display:flex;flex-direction:column;gap:4px}.SurfaceCard__Title{margin:0;font-size:14px;font-weight:400;color:var(--color-fg, #171717)}.SurfaceCard__Subtitle{margin:0;font-size:14px;font-weight:400;color:var(--color-fg-muted, #a3a3a3)}.SurfaceCard__Body{display:flex;flex-direction:column;gap:4px;min-width:0}\n"] }]
|
|
459
|
+
}] });
|
|
460
|
+
|
|
461
|
+
class AvatarComponent {
|
|
462
|
+
src = input(null);
|
|
463
|
+
name = input(null);
|
|
464
|
+
icon = input('user');
|
|
465
|
+
size = input(32);
|
|
466
|
+
broken = false;
|
|
467
|
+
initials = computed(() => {
|
|
468
|
+
const parts = (this.name() ?? '').trim().split(/\s+/).filter(Boolean);
|
|
469
|
+
if (!parts.length)
|
|
470
|
+
return '';
|
|
471
|
+
const first = parts[0][0] ?? '';
|
|
472
|
+
const second = parts.length > 1 ? parts[parts.length - 1][0] ?? '' : '';
|
|
473
|
+
return (first + second).toUpperCase();
|
|
474
|
+
});
|
|
475
|
+
iconSize() {
|
|
476
|
+
return Math.max(12, Math.round(this.size() * 0.44));
|
|
477
|
+
}
|
|
478
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
479
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: AvatarComponent, isStandalone: true, selector: "avatar", inputs: { src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
480
|
+
<span
|
|
481
|
+
class="Avatar"
|
|
482
|
+
[style.width.px]="size()"
|
|
483
|
+
[style.height.px]="size()"
|
|
484
|
+
[attr.aria-label]="name() || 'Avatar'"
|
|
485
|
+
>
|
|
486
|
+
@if (src() && !broken) {
|
|
487
|
+
<img class="Avatar__Img" [src]="src()!" alt="" (error)="broken = true" />
|
|
488
|
+
} @else if (initials()) {
|
|
489
|
+
<span class="Avatar__Initials">{{ initials() }}</span>
|
|
490
|
+
} @else {
|
|
491
|
+
<lucide-icon [name]="icon()" [size]="iconSize()"></lucide-icon>
|
|
492
|
+
}
|
|
493
|
+
</span>
|
|
494
|
+
`, isInline: true, styles: [":host{display:inline-flex;flex-shrink:0;user-select:none;-webkit-user-select:none}.Avatar{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;border-radius:50%;background:var(--color-surface-emphasis, #e5e5e5);color:var(--color-fg-secondary, #525252);font-size:14px;font-weight:400;line-height:1}.Avatar lucide-icon{--lucide-stroke: currentColor}.Avatar__Img{width:100%;height:100%;object-fit:cover}.Avatar__Initials{letter-spacing:.02em}\n"], dependencies: [{ kind: "component", type: LucideIconComponent, selector: "lucide-icon", inputs: ["name", "size", "spin", "filled"] }] });
|
|
495
|
+
}
|
|
496
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AvatarComponent, decorators: [{
|
|
497
|
+
type: Component,
|
|
498
|
+
args: [{ selector: 'avatar', standalone: true, imports: [LucideIconComponent], template: `
|
|
499
|
+
<span
|
|
500
|
+
class="Avatar"
|
|
501
|
+
[style.width.px]="size()"
|
|
502
|
+
[style.height.px]="size()"
|
|
503
|
+
[attr.aria-label]="name() || 'Avatar'"
|
|
504
|
+
>
|
|
505
|
+
@if (src() && !broken) {
|
|
506
|
+
<img class="Avatar__Img" [src]="src()!" alt="" (error)="broken = true" />
|
|
507
|
+
} @else if (initials()) {
|
|
508
|
+
<span class="Avatar__Initials">{{ initials() }}</span>
|
|
509
|
+
} @else {
|
|
510
|
+
<lucide-icon [name]="icon()" [size]="iconSize()"></lucide-icon>
|
|
511
|
+
}
|
|
512
|
+
</span>
|
|
513
|
+
`, styles: [":host{display:inline-flex;flex-shrink:0;user-select:none;-webkit-user-select:none}.Avatar{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;border-radius:50%;background:var(--color-surface-emphasis, #e5e5e5);color:var(--color-fg-secondary, #525252);font-size:14px;font-weight:400;line-height:1}.Avatar lucide-icon{--lucide-stroke: currentColor}.Avatar__Img{width:100%;height:100%;object-fit:cover}.Avatar__Initials{letter-spacing:.02em}\n"] }]
|
|
514
|
+
}] });
|
|
515
|
+
|
|
516
|
+
class ListRowComponent {
|
|
517
|
+
title = input.required();
|
|
518
|
+
subtitle = input(null);
|
|
519
|
+
icon = input(null);
|
|
520
|
+
avatarSrc = input(null);
|
|
521
|
+
avatarName = input(null);
|
|
522
|
+
chevron = input(false, { transform: booleanAttribute });
|
|
523
|
+
disabled = input(false, { transform: booleanAttribute });
|
|
524
|
+
clicked = output();
|
|
525
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ListRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
526
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: ListRowComponent, isStandalone: true, selector: "list-row", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, avatarSrc: { classPropertyName: "avatarSrc", publicName: "avatarSrc", isSignal: true, isRequired: false, transformFunction: null }, avatarName: { classPropertyName: "avatarName", publicName: "avatarName", isSignal: true, isRequired: false, transformFunction: null }, chevron: { classPropertyName: "chevron", publicName: "chevron", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, ngImport: i0, template: `
|
|
527
|
+
<div class="ListRow" [class.ListRow--disabled]="disabled()">
|
|
528
|
+
<button
|
|
529
|
+
type="button"
|
|
530
|
+
class="ListRow__Main"
|
|
531
|
+
[disabled]="disabled()"
|
|
532
|
+
(click)="clicked.emit($event)"
|
|
533
|
+
>
|
|
534
|
+
@if (avatarSrc() || avatarName()) {
|
|
535
|
+
<avatar [src]="avatarSrc()" [name]="avatarName()" [size]="32"></avatar>
|
|
536
|
+
} @else if (icon()) {
|
|
537
|
+
<span class="ListRow__Icon">
|
|
538
|
+
<lucide-icon [name]="icon()!" [size]="14"></lucide-icon>
|
|
539
|
+
</span>
|
|
540
|
+
}
|
|
541
|
+
<span class="ListRow__Text">
|
|
542
|
+
<span class="ListRow__Title">{{ title() }}</span>
|
|
543
|
+
@if (subtitle()) {
|
|
544
|
+
<span class="ListRow__Subtitle">{{ subtitle() }}</span>
|
|
545
|
+
}
|
|
546
|
+
</span>
|
|
547
|
+
</button>
|
|
548
|
+
<span class="ListRow__Trail">
|
|
549
|
+
<ng-content></ng-content>
|
|
550
|
+
@if (chevron()) {
|
|
551
|
+
<lucide-icon name="chevron-right" [size]="14"></lucide-icon>
|
|
552
|
+
}
|
|
553
|
+
</span>
|
|
554
|
+
</div>
|
|
555
|
+
`, isInline: true, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.ListRow{display:flex;align-items:center;gap:4px;width:100%;border-radius:12px}.ListRow--disabled{opacity:.45}.ListRow__Main{display:flex;align-items:center;gap:8px;flex:1;min-width:0;padding:8px;border:none;border-radius:12px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.ListRow__Main:hover:not(:disabled){background:var(--color-surface-muted, #f5f5f5)}.ListRow__Main:active:not(:disabled){transform:scale(.98)}.ListRow__Main:disabled{cursor:not-allowed}.ListRow__Icon{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border-radius:50%;background:var(--color-surface-muted, #f5f5f5);color:var(--color-fg-secondary, #525252)}.ListRow__Icon lucide-icon{--lucide-stroke: currentColor}.ListRow__Text{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.ListRow__Title,.ListRow__Subtitle{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:400}.ListRow__Title{color:var(--color-fg, #171717)}.ListRow__Subtitle{color:var(--color-fg-muted, #a3a3a3)}.ListRow__Trail{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;color:var(--color-fg-muted, #a3a3a3)}.ListRow__Trail lucide-icon{--lucide-stroke: currentColor}\n"], dependencies: [{ kind: "component", type: LucideIconComponent, selector: "lucide-icon", inputs: ["name", "size", "spin", "filled"] }, { kind: "component", type: AvatarComponent, selector: "avatar", inputs: ["src", "name", "icon", "size"] }] });
|
|
556
|
+
}
|
|
557
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: ListRowComponent, decorators: [{
|
|
558
|
+
type: Component,
|
|
559
|
+
args: [{ selector: 'list-row', standalone: true, imports: [LucideIconComponent, AvatarComponent], template: `
|
|
560
|
+
<div class="ListRow" [class.ListRow--disabled]="disabled()">
|
|
561
|
+
<button
|
|
562
|
+
type="button"
|
|
563
|
+
class="ListRow__Main"
|
|
564
|
+
[disabled]="disabled()"
|
|
565
|
+
(click)="clicked.emit($event)"
|
|
566
|
+
>
|
|
567
|
+
@if (avatarSrc() || avatarName()) {
|
|
568
|
+
<avatar [src]="avatarSrc()" [name]="avatarName()" [size]="32"></avatar>
|
|
569
|
+
} @else if (icon()) {
|
|
570
|
+
<span class="ListRow__Icon">
|
|
571
|
+
<lucide-icon [name]="icon()!" [size]="14"></lucide-icon>
|
|
572
|
+
</span>
|
|
573
|
+
}
|
|
574
|
+
<span class="ListRow__Text">
|
|
575
|
+
<span class="ListRow__Title">{{ title() }}</span>
|
|
576
|
+
@if (subtitle()) {
|
|
577
|
+
<span class="ListRow__Subtitle">{{ subtitle() }}</span>
|
|
578
|
+
}
|
|
579
|
+
</span>
|
|
580
|
+
</button>
|
|
581
|
+
<span class="ListRow__Trail">
|
|
582
|
+
<ng-content></ng-content>
|
|
583
|
+
@if (chevron()) {
|
|
584
|
+
<lucide-icon name="chevron-right" [size]="14"></lucide-icon>
|
|
585
|
+
}
|
|
586
|
+
</span>
|
|
587
|
+
</div>
|
|
588
|
+
`, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.ListRow{display:flex;align-items:center;gap:4px;width:100%;border-radius:12px}.ListRow--disabled{opacity:.45}.ListRow__Main{display:flex;align-items:center;gap:8px;flex:1;min-width:0;padding:8px;border:none;border-radius:12px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.ListRow__Main:hover:not(:disabled){background:var(--color-surface-muted, #f5f5f5)}.ListRow__Main:active:not(:disabled){transform:scale(.98)}.ListRow__Main:disabled{cursor:not-allowed}.ListRow__Icon{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border-radius:50%;background:var(--color-surface-muted, #f5f5f5);color:var(--color-fg-secondary, #525252)}.ListRow__Icon lucide-icon{--lucide-stroke: currentColor}.ListRow__Text{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.ListRow__Title,.ListRow__Subtitle{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:400}.ListRow__Title{color:var(--color-fg, #171717)}.ListRow__Subtitle{color:var(--color-fg-muted, #a3a3a3)}.ListRow__Trail{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;color:var(--color-fg-muted, #a3a3a3)}.ListRow__Trail lucide-icon{--lucide-stroke: currentColor}\n"] }]
|
|
589
|
+
}] });
|
|
590
|
+
|
|
591
|
+
class DataTableComponent {
|
|
592
|
+
columns = input([]);
|
|
593
|
+
rows = input([]);
|
|
594
|
+
loading = input(false);
|
|
595
|
+
emptyTitle = input('Sin filas');
|
|
596
|
+
emptyMessage = input('No hay datos para mostrar.');
|
|
597
|
+
emptyIcon = input('table');
|
|
598
|
+
rowClick = output();
|
|
599
|
+
gridCols() {
|
|
600
|
+
return `repeat(${Math.max(1, this.columns().length)}, minmax(0, 1fr))`;
|
|
601
|
+
}
|
|
602
|
+
cell(row, key) {
|
|
603
|
+
const value = row[key];
|
|
604
|
+
if (value == null || value === '')
|
|
605
|
+
return '—';
|
|
606
|
+
return String(value);
|
|
607
|
+
}
|
|
608
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: DataTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
609
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: DataTableComponent, isStandalone: true, selector: "data-table", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, emptyTitle: { classPropertyName: "emptyTitle", publicName: "emptyTitle", isSignal: true, isRequired: false, transformFunction: null }, emptyMessage: { classPropertyName: "emptyMessage", publicName: "emptyMessage", isSignal: true, isRequired: false, transformFunction: null }, emptyIcon: { classPropertyName: "emptyIcon", publicName: "emptyIcon", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rowClick: "rowClick" }, ngImport: i0, template: `
|
|
610
|
+
<div class="DataTable" role="table">
|
|
611
|
+
<div class="DataTable__Head" role="row" [style.grid-template-columns]="gridCols()">
|
|
612
|
+
@for (col of columns(); track col.key) {
|
|
613
|
+
<span class="DataTable__Cell DataTable__Cell--head" role="columnheader" [style.width]="col.width || null">
|
|
614
|
+
{{ col.label }}
|
|
615
|
+
</span>
|
|
616
|
+
}
|
|
617
|
+
</div>
|
|
618
|
+
|
|
619
|
+
@if (loading()) {
|
|
620
|
+
<div class="DataTable__Body">
|
|
621
|
+
@for (row of [0, 1, 2]; track row) {
|
|
622
|
+
<skeleton [lines]="1"></skeleton>
|
|
623
|
+
}
|
|
624
|
+
</div>
|
|
625
|
+
} @else if (!rows().length) {
|
|
626
|
+
<empty-state [title]="emptyTitle()" [message]="emptyMessage()" [icon]="emptyIcon()"></empty-state>
|
|
627
|
+
} @else {
|
|
628
|
+
<div class="DataTable__Body">
|
|
629
|
+
@for (row of rows(); track $index) {
|
|
630
|
+
<button type="button" class="DataTable__Row" role="row" [style.grid-template-columns]="gridCols()" (click)="rowClick.emit(row)">
|
|
631
|
+
@for (col of columns(); track col.key) {
|
|
632
|
+
<span class="DataTable__Cell" role="cell" [style.width]="col.width || null">
|
|
633
|
+
{{ cell(row, col.key) }}
|
|
634
|
+
</span>
|
|
635
|
+
}
|
|
636
|
+
</button>
|
|
637
|
+
}
|
|
638
|
+
</div>
|
|
639
|
+
}
|
|
640
|
+
</div>
|
|
641
|
+
`, isInline: true, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.DataTable{display:flex;flex-direction:column;gap:4px;width:100%;overflow:auto}.DataTable__Head,.DataTable__Row{display:grid;grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:8px;align-items:center;width:100%;min-width:0}.DataTable__Head{padding:8px;color:var(--color-fg-muted, #a3a3a3)}.DataTable__Body{display:flex;flex-direction:column;gap:4px}.DataTable__Row{padding:8px;border:none;border-radius:12px;background:var(--color-surface-muted, #f5f5f5);color:inherit;font:inherit;text-align:left;cursor:pointer}.DataTable__Row:hover{background:var(--color-surface-emphasis, #e5e5e5)}.DataTable__Row:active{transform:scale(.98)}.DataTable__Cell{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:400;color:var(--color-fg, #171717)}.DataTable__Cell--head{color:var(--color-fg-muted, #a3a3a3)}\n"], dependencies: [{ kind: "component", type: EmptyStateComponent, selector: "empty-state", inputs: ["title", "message", "icon", "primaryLabel", "primaryIcon", "secondaryLabel"], outputs: ["primary", "secondary"] }, { kind: "component", type: SkeletonComponent, selector: "skeleton", inputs: ["variant", "lines", "width", "height", "pulse"] }] });
|
|
642
|
+
}
|
|
643
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: DataTableComponent, decorators: [{
|
|
644
|
+
type: Component,
|
|
645
|
+
args: [{ selector: 'data-table', standalone: true, imports: [EmptyStateComponent, SkeletonComponent], template: `
|
|
646
|
+
<div class="DataTable" role="table">
|
|
647
|
+
<div class="DataTable__Head" role="row" [style.grid-template-columns]="gridCols()">
|
|
648
|
+
@for (col of columns(); track col.key) {
|
|
649
|
+
<span class="DataTable__Cell DataTable__Cell--head" role="columnheader" [style.width]="col.width || null">
|
|
650
|
+
{{ col.label }}
|
|
651
|
+
</span>
|
|
652
|
+
}
|
|
653
|
+
</div>
|
|
654
|
+
|
|
655
|
+
@if (loading()) {
|
|
656
|
+
<div class="DataTable__Body">
|
|
657
|
+
@for (row of [0, 1, 2]; track row) {
|
|
658
|
+
<skeleton [lines]="1"></skeleton>
|
|
659
|
+
}
|
|
660
|
+
</div>
|
|
661
|
+
} @else if (!rows().length) {
|
|
662
|
+
<empty-state [title]="emptyTitle()" [message]="emptyMessage()" [icon]="emptyIcon()"></empty-state>
|
|
663
|
+
} @else {
|
|
664
|
+
<div class="DataTable__Body">
|
|
665
|
+
@for (row of rows(); track $index) {
|
|
666
|
+
<button type="button" class="DataTable__Row" role="row" [style.grid-template-columns]="gridCols()" (click)="rowClick.emit(row)">
|
|
667
|
+
@for (col of columns(); track col.key) {
|
|
668
|
+
<span class="DataTable__Cell" role="cell" [style.width]="col.width || null">
|
|
669
|
+
{{ cell(row, col.key) }}
|
|
670
|
+
</span>
|
|
671
|
+
}
|
|
672
|
+
</button>
|
|
673
|
+
}
|
|
674
|
+
</div>
|
|
675
|
+
}
|
|
676
|
+
</div>
|
|
677
|
+
`, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.DataTable{display:flex;flex-direction:column;gap:4px;width:100%;overflow:auto}.DataTable__Head,.DataTable__Row{display:grid;grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:8px;align-items:center;width:100%;min-width:0}.DataTable__Head{padding:8px;color:var(--color-fg-muted, #a3a3a3)}.DataTable__Body{display:flex;flex-direction:column;gap:4px}.DataTable__Row{padding:8px;border:none;border-radius:12px;background:var(--color-surface-muted, #f5f5f5);color:inherit;font:inherit;text-align:left;cursor:pointer}.DataTable__Row:hover{background:var(--color-surface-emphasis, #e5e5e5)}.DataTable__Row:active{transform:scale(.98)}.DataTable__Cell{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:400;color:var(--color-fg, #171717)}.DataTable__Cell--head{color:var(--color-fg-muted, #a3a3a3)}\n"] }]
|
|
678
|
+
}] });
|
|
679
|
+
|
|
680
|
+
class AccordionItemComponent {
|
|
681
|
+
title = input.required();
|
|
682
|
+
icon = input(null);
|
|
683
|
+
disabled = input(false, { transform: booleanAttribute });
|
|
684
|
+
open = model(false);
|
|
685
|
+
group = inject(forwardRef(() => AccordionComponent), { optional: true, skipSelf: true });
|
|
686
|
+
toggle() {
|
|
687
|
+
if (this.disabled())
|
|
688
|
+
return;
|
|
689
|
+
this.open.set(!this.open());
|
|
690
|
+
if (this.open())
|
|
691
|
+
this.group?.itemOpened(this);
|
|
692
|
+
}
|
|
693
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AccordionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
694
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: AccordionItemComponent, isStandalone: true, selector: "accordion-item", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange" }, ngImport: i0, template: `
|
|
695
|
+
<div class="AccordionItem" [class.AccordionItem--open]="open()">
|
|
696
|
+
<button type="button" class="AccordionItem__Head" [disabled]="disabled()" (click)="toggle()">
|
|
697
|
+
@if (icon()) {
|
|
698
|
+
<lucide-icon [name]="icon()!" [size]="14"></lucide-icon>
|
|
699
|
+
}
|
|
700
|
+
<span class="AccordionItem__Title">{{ title() }}</span>
|
|
701
|
+
<lucide-icon name="chevron-down" [size]="14" class="AccordionItem__Chevron"></lucide-icon>
|
|
702
|
+
</button>
|
|
703
|
+
@if (open()) {
|
|
704
|
+
<div class="AccordionItem__Body">
|
|
705
|
+
<ng-content></ng-content>
|
|
706
|
+
</div>
|
|
707
|
+
}
|
|
708
|
+
</div>
|
|
709
|
+
`, isInline: true, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.AccordionItem{display:flex;flex-direction:column;gap:4px;width:100%}.AccordionItem__Head{display:flex;align-items:center;gap:8px;width:100%;padding:8px;border:none;border-radius:12px;background:var(--color-surface-muted, #f5f5f5);color:var(--color-fg, #171717);font:inherit;font-size:14px;font-weight:400;text-align:left;cursor:pointer}.AccordionItem__Head lucide-icon{--lucide-stroke: currentColor}.AccordionItem__Head:hover:not(:disabled){background:var(--color-surface-emphasis, #e5e5e5)}.AccordionItem__Head:disabled{opacity:.45;cursor:not-allowed}.AccordionItem__Title{flex:1;min-width:0}.AccordionItem__Chevron{flex-shrink:0;color:var(--color-fg-muted, #a3a3a3);transition:transform .18s ease}.AccordionItem--open .AccordionItem__Chevron{transform:rotate(180deg)}.AccordionItem__Body{display:flex;flex-direction:column;gap:4px;padding:4px 8px 8px;font-size:14px;color:var(--color-fg-secondary, #525252)}\n"], dependencies: [{ kind: "component", type: LucideIconComponent, selector: "lucide-icon", inputs: ["name", "size", "spin", "filled"] }] });
|
|
710
|
+
}
|
|
711
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AccordionItemComponent, decorators: [{
|
|
712
|
+
type: Component,
|
|
713
|
+
args: [{ selector: 'accordion-item', standalone: true, imports: [LucideIconComponent], template: `
|
|
714
|
+
<div class="AccordionItem" [class.AccordionItem--open]="open()">
|
|
715
|
+
<button type="button" class="AccordionItem__Head" [disabled]="disabled()" (click)="toggle()">
|
|
716
|
+
@if (icon()) {
|
|
717
|
+
<lucide-icon [name]="icon()!" [size]="14"></lucide-icon>
|
|
718
|
+
}
|
|
719
|
+
<span class="AccordionItem__Title">{{ title() }}</span>
|
|
720
|
+
<lucide-icon name="chevron-down" [size]="14" class="AccordionItem__Chevron"></lucide-icon>
|
|
721
|
+
</button>
|
|
722
|
+
@if (open()) {
|
|
723
|
+
<div class="AccordionItem__Body">
|
|
724
|
+
<ng-content></ng-content>
|
|
725
|
+
</div>
|
|
726
|
+
}
|
|
727
|
+
</div>
|
|
728
|
+
`, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.AccordionItem{display:flex;flex-direction:column;gap:4px;width:100%}.AccordionItem__Head{display:flex;align-items:center;gap:8px;width:100%;padding:8px;border:none;border-radius:12px;background:var(--color-surface-muted, #f5f5f5);color:var(--color-fg, #171717);font:inherit;font-size:14px;font-weight:400;text-align:left;cursor:pointer}.AccordionItem__Head lucide-icon{--lucide-stroke: currentColor}.AccordionItem__Head:hover:not(:disabled){background:var(--color-surface-emphasis, #e5e5e5)}.AccordionItem__Head:disabled{opacity:.45;cursor:not-allowed}.AccordionItem__Title{flex:1;min-width:0}.AccordionItem__Chevron{flex-shrink:0;color:var(--color-fg-muted, #a3a3a3);transition:transform .18s ease}.AccordionItem--open .AccordionItem__Chevron{transform:rotate(180deg)}.AccordionItem__Body{display:flex;flex-direction:column;gap:4px;padding:4px 8px 8px;font-size:14px;color:var(--color-fg-secondary, #525252)}\n"] }]
|
|
729
|
+
}] });
|
|
730
|
+
|
|
731
|
+
class AccordionComponent {
|
|
732
|
+
multiple = input(false, { transform: booleanAttribute });
|
|
733
|
+
items = contentChildren(AccordionItemComponent);
|
|
734
|
+
itemOpened(opened) {
|
|
735
|
+
if (this.multiple())
|
|
736
|
+
return;
|
|
737
|
+
for (const item of this.items()) {
|
|
738
|
+
if (item !== opened)
|
|
739
|
+
item.open.set(false);
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
743
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.25", type: AccordionComponent, isStandalone: true, selector: "accordion", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "items", predicate: AccordionItemComponent, isSignal: true }], ngImport: i0, template: `
|
|
744
|
+
<div class="Accordion">
|
|
745
|
+
<ng-content></ng-content>
|
|
746
|
+
</div>
|
|
747
|
+
`, isInline: true, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.Accordion{display:flex;flex-direction:column;gap:4px;width:100%}\n"] });
|
|
748
|
+
}
|
|
749
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: AccordionComponent, decorators: [{
|
|
750
|
+
type: Component,
|
|
751
|
+
args: [{ selector: 'accordion', standalone: true, template: `
|
|
752
|
+
<div class="Accordion">
|
|
753
|
+
<ng-content></ng-content>
|
|
754
|
+
</div>
|
|
755
|
+
`, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.Accordion{display:flex;flex-direction:column;gap:4px;width:100%}\n"] }]
|
|
756
|
+
}] });
|
|
757
|
+
|
|
758
|
+
class StepperComponent {
|
|
759
|
+
steps = input([]);
|
|
760
|
+
index = model(0);
|
|
761
|
+
clickable = input(false, { transform: booleanAttribute });
|
|
762
|
+
label = input('Pasos');
|
|
763
|
+
select(next) {
|
|
764
|
+
if (!this.clickable() || next === this.index())
|
|
765
|
+
return;
|
|
766
|
+
this.index.set(next);
|
|
767
|
+
}
|
|
768
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: StepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
769
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: StepperComponent, isStandalone: true, selector: "stepper", inputs: { steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { index: "indexChange" }, ngImport: i0, template: `
|
|
770
|
+
<ol class="Stepper" [attr.aria-label]="label()">
|
|
771
|
+
@for (step of steps(); track $index) {
|
|
772
|
+
<li
|
|
773
|
+
class="Stepper__Item"
|
|
774
|
+
[class.Stepper__Item--done]="$index < index()"
|
|
775
|
+
[class.Stepper__Item--current]="$index === index()"
|
|
776
|
+
>
|
|
777
|
+
<button
|
|
778
|
+
type="button"
|
|
779
|
+
class="Stepper__Btn"
|
|
780
|
+
[disabled]="!clickable() || $index === index()"
|
|
781
|
+
(click)="select($index)"
|
|
782
|
+
>
|
|
783
|
+
<span class="Stepper__Index">{{ $index + 1 }}</span>
|
|
784
|
+
<span class="Stepper__Text">
|
|
785
|
+
<span class="Stepper__Label">{{ step.label }}</span>
|
|
786
|
+
@if (step.description) {
|
|
787
|
+
<span class="Stepper__Desc">{{ step.description }}</span>
|
|
788
|
+
}
|
|
789
|
+
</span>
|
|
790
|
+
</button>
|
|
791
|
+
</li>
|
|
792
|
+
}
|
|
793
|
+
</ol>
|
|
794
|
+
`, isInline: true, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.Stepper{display:flex;flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none}.Stepper__Item{flex:1;min-width:120px}.Stepper__Btn{display:flex;align-items:center;gap:8px;width:100%;padding:8px;border:none;border-radius:12px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:default}.Stepper__Btn:not(:disabled){cursor:pointer}.Stepper__Btn:not(:disabled):hover{background:var(--color-surface-muted, #f5f5f5)}.Stepper__Index{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0;border-radius:50%;background:var(--color-surface-emphasis, #e5e5e5);color:var(--color-fg-muted, #a3a3a3);font-size:14px;font-weight:400}.Stepper__Item--done .Stepper__Index{background:color-mix(in srgb,var(--color-brand, #22c55e) 18%,var(--color-surface-muted, #f5f5f5));color:var(--color-fg-brand, #16a34a)}.Stepper__Item--current .Stepper__Index{background:var(--color-brand, #22c55e);color:var(--color-fg-inverse, #fafafa)}.Stepper__Text{display:flex;flex-direction:column;gap:4px;min-width:0}.Stepper__Label,.Stepper__Desc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:400}.Stepper__Label{color:var(--color-fg-muted, #a3a3a3)}.Stepper__Item--done .Stepper__Label,.Stepper__Item--current .Stepper__Label{color:var(--color-fg, #171717)}.Stepper__Desc{color:var(--color-fg-muted, #a3a3a3)}\n"] });
|
|
795
|
+
}
|
|
796
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: StepperComponent, decorators: [{
|
|
797
|
+
type: Component,
|
|
798
|
+
args: [{ selector: 'stepper', standalone: true, template: `
|
|
799
|
+
<ol class="Stepper" [attr.aria-label]="label()">
|
|
800
|
+
@for (step of steps(); track $index) {
|
|
801
|
+
<li
|
|
802
|
+
class="Stepper__Item"
|
|
803
|
+
[class.Stepper__Item--done]="$index < index()"
|
|
804
|
+
[class.Stepper__Item--current]="$index === index()"
|
|
805
|
+
>
|
|
806
|
+
<button
|
|
807
|
+
type="button"
|
|
808
|
+
class="Stepper__Btn"
|
|
809
|
+
[disabled]="!clickable() || $index === index()"
|
|
810
|
+
(click)="select($index)"
|
|
811
|
+
>
|
|
812
|
+
<span class="Stepper__Index">{{ $index + 1 }}</span>
|
|
813
|
+
<span class="Stepper__Text">
|
|
814
|
+
<span class="Stepper__Label">{{ step.label }}</span>
|
|
815
|
+
@if (step.description) {
|
|
816
|
+
<span class="Stepper__Desc">{{ step.description }}</span>
|
|
817
|
+
}
|
|
818
|
+
</span>
|
|
819
|
+
</button>
|
|
820
|
+
</li>
|
|
821
|
+
}
|
|
822
|
+
</ol>
|
|
823
|
+
`, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.Stepper{display:flex;flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none}.Stepper__Item{flex:1;min-width:120px}.Stepper__Btn{display:flex;align-items:center;gap:8px;width:100%;padding:8px;border:none;border-radius:12px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:default}.Stepper__Btn:not(:disabled){cursor:pointer}.Stepper__Btn:not(:disabled):hover{background:var(--color-surface-muted, #f5f5f5)}.Stepper__Index{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0;border-radius:50%;background:var(--color-surface-emphasis, #e5e5e5);color:var(--color-fg-muted, #a3a3a3);font-size:14px;font-weight:400}.Stepper__Item--done .Stepper__Index{background:color-mix(in srgb,var(--color-brand, #22c55e) 18%,var(--color-surface-muted, #f5f5f5));color:var(--color-fg-brand, #16a34a)}.Stepper__Item--current .Stepper__Index{background:var(--color-brand, #22c55e);color:var(--color-fg-inverse, #fafafa)}.Stepper__Text{display:flex;flex-direction:column;gap:4px;min-width:0}.Stepper__Label,.Stepper__Desc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:400}.Stepper__Label{color:var(--color-fg-muted, #a3a3a3)}.Stepper__Item--done .Stepper__Label,.Stepper__Item--current .Stepper__Label{color:var(--color-fg, #171717)}.Stepper__Desc{color:var(--color-fg-muted, #a3a3a3)}\n"] }]
|
|
824
|
+
}] });
|
|
825
|
+
|
|
826
|
+
class BreadcrumbsComponent {
|
|
827
|
+
items = input([]);
|
|
828
|
+
label = input('Ruta');
|
|
829
|
+
itemClick = output();
|
|
830
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: BreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
831
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: BreadcrumbsComponent, isStandalone: true, selector: "breadcrumbs", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick" }, ngImport: i0, template: `
|
|
832
|
+
<nav class="Breadcrumbs" [attr.aria-label]="label()">
|
|
833
|
+
<ol class="Breadcrumbs__List">
|
|
834
|
+
@for (item of items(); track $index) {
|
|
835
|
+
@if ($index > 0) {
|
|
836
|
+
<li class="Breadcrumbs__Sep" aria-hidden="true">
|
|
837
|
+
<lucide-icon name="chevron-right" [size]="14"></lucide-icon>
|
|
838
|
+
</li>
|
|
839
|
+
}
|
|
840
|
+
<li class="Breadcrumbs__Item">
|
|
841
|
+
@if ($last) {
|
|
842
|
+
<span class="Breadcrumbs__Current">{{ item.label }}</span>
|
|
843
|
+
} @else if (item.routerLink) {
|
|
844
|
+
<a class="Breadcrumbs__Link" [routerLink]="item.routerLink" (click)="itemClick.emit(item)">{{ item.label }}</a>
|
|
845
|
+
} @else if (item.href) {
|
|
846
|
+
<a class="Breadcrumbs__Link" [href]="item.href" (click)="itemClick.emit(item)">{{ item.label }}</a>
|
|
847
|
+
} @else {
|
|
848
|
+
<button type="button" class="Breadcrumbs__Link" (click)="itemClick.emit(item)">{{ item.label }}</button>
|
|
849
|
+
}
|
|
850
|
+
</li>
|
|
851
|
+
}
|
|
852
|
+
</ol>
|
|
853
|
+
</nav>
|
|
854
|
+
`, isInline: true, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.Breadcrumbs__List{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin:0;padding:0;list-style:none}.Breadcrumbs__Sep{display:inline-flex;color:var(--color-fg-muted, #a3a3a3)}.Breadcrumbs__Sep lucide-icon{--lucide-stroke: currentColor}.Breadcrumbs__Link,.Breadcrumbs__Current{display:inline-flex;align-items:center;padding:2px 4px;border:none;border-radius:8px;background:transparent;font:inherit;font-size:14px;font-weight:400;text-decoration:none}.Breadcrumbs__Link{color:var(--color-fg-muted, #a3a3a3);cursor:pointer}.Breadcrumbs__Link:hover{color:var(--color-fg-brand, #16a34a)}.Breadcrumbs__Current{color:var(--color-fg, #171717)}\n"], dependencies: [{ kind: "component", type: LucideIconComponent, selector: "lucide-icon", inputs: ["name", "size", "spin", "filled"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] });
|
|
855
|
+
}
|
|
856
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: BreadcrumbsComponent, decorators: [{
|
|
857
|
+
type: Component,
|
|
858
|
+
args: [{ selector: 'breadcrumbs', standalone: true, imports: [LucideIconComponent, RouterLink], template: `
|
|
859
|
+
<nav class="Breadcrumbs" [attr.aria-label]="label()">
|
|
860
|
+
<ol class="Breadcrumbs__List">
|
|
861
|
+
@for (item of items(); track $index) {
|
|
862
|
+
@if ($index > 0) {
|
|
863
|
+
<li class="Breadcrumbs__Sep" aria-hidden="true">
|
|
864
|
+
<lucide-icon name="chevron-right" [size]="14"></lucide-icon>
|
|
865
|
+
</li>
|
|
866
|
+
}
|
|
867
|
+
<li class="Breadcrumbs__Item">
|
|
868
|
+
@if ($last) {
|
|
869
|
+
<span class="Breadcrumbs__Current">{{ item.label }}</span>
|
|
870
|
+
} @else if (item.routerLink) {
|
|
871
|
+
<a class="Breadcrumbs__Link" [routerLink]="item.routerLink" (click)="itemClick.emit(item)">{{ item.label }}</a>
|
|
872
|
+
} @else if (item.href) {
|
|
873
|
+
<a class="Breadcrumbs__Link" [href]="item.href" (click)="itemClick.emit(item)">{{ item.label }}</a>
|
|
874
|
+
} @else {
|
|
875
|
+
<button type="button" class="Breadcrumbs__Link" (click)="itemClick.emit(item)">{{ item.label }}</button>
|
|
876
|
+
}
|
|
877
|
+
</li>
|
|
878
|
+
}
|
|
879
|
+
</ol>
|
|
880
|
+
</nav>
|
|
881
|
+
`, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.Breadcrumbs__List{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin:0;padding:0;list-style:none}.Breadcrumbs__Sep{display:inline-flex;color:var(--color-fg-muted, #a3a3a3)}.Breadcrumbs__Sep lucide-icon{--lucide-stroke: currentColor}.Breadcrumbs__Link,.Breadcrumbs__Current{display:inline-flex;align-items:center;padding:2px 4px;border:none;border-radius:8px;background:transparent;font:inherit;font-size:14px;font-weight:400;text-decoration:none}.Breadcrumbs__Link{color:var(--color-fg-muted, #a3a3a3);cursor:pointer}.Breadcrumbs__Link:hover{color:var(--color-fg-brand, #16a34a)}.Breadcrumbs__Current{color:var(--color-fg, #171717)}\n"] }]
|
|
882
|
+
}] });
|
|
883
|
+
|
|
884
|
+
class TabsComponent {
|
|
885
|
+
items = input([]);
|
|
886
|
+
value = model('');
|
|
887
|
+
label = input('Secciones');
|
|
888
|
+
disabled = input(false, { transform: booleanAttribute });
|
|
889
|
+
select(item) {
|
|
890
|
+
if (item.disabled || this.disabled() || item.value === this.value())
|
|
891
|
+
return;
|
|
892
|
+
this.value.set(item.value);
|
|
893
|
+
}
|
|
894
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
895
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TabsComponent, isStandalone: true, selector: "tabs", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, ngImport: i0, template: `
|
|
896
|
+
<div class="Tabs">
|
|
897
|
+
<div class="Tabs__Bar" role="tablist" [attr.aria-label]="label()">
|
|
898
|
+
@for (item of items(); track item.value) {
|
|
899
|
+
<button
|
|
900
|
+
type="button"
|
|
901
|
+
class="Tabs__Tab"
|
|
902
|
+
role="tab"
|
|
903
|
+
[class.Tabs__Tab--on]="item.value === value()"
|
|
904
|
+
[disabled]="item.disabled === true || disabled()"
|
|
905
|
+
[attr.aria-selected]="item.value === value()"
|
|
906
|
+
(click)="select(item)"
|
|
907
|
+
>
|
|
908
|
+
@if (item.icon) {
|
|
909
|
+
<lucide-icon [name]="item.icon" [size]="14"></lucide-icon>
|
|
910
|
+
}
|
|
911
|
+
<span>{{ item.label }}</span>
|
|
912
|
+
</button>
|
|
913
|
+
}
|
|
914
|
+
</div>
|
|
915
|
+
<div class="Tabs__Panel" role="tabpanel">
|
|
916
|
+
<ng-content></ng-content>
|
|
917
|
+
</div>
|
|
918
|
+
</div>
|
|
919
|
+
`, isInline: true, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.Tabs{display:flex;flex-direction:column;gap:8px;width:100%}.Tabs__Bar{display:flex;flex-wrap:wrap;gap:4px}.Tabs__Tab{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border:none;border-radius:12px;background:transparent;color:var(--color-fg-muted, #a3a3a3);font:inherit;font-size:14px;font-weight:400;cursor:pointer}.Tabs__Tab lucide-icon{--lucide-stroke: currentColor}.Tabs__Tab:hover:not(:disabled):not(.Tabs__Tab--on){background:var(--color-surface-muted, #f5f5f5);color:var(--color-fg, #171717)}.Tabs__Tab--on{background:var(--color-surface-muted, #f5f5f5);color:var(--color-fg-brand, #16a34a)}.Tabs__Tab:disabled{opacity:.45;cursor:not-allowed}.Tabs__Panel{display:flex;flex-direction:column;gap:4px;min-width:0;font-size:14px;color:var(--color-fg-secondary, #525252)}\n"], dependencies: [{ kind: "component", type: LucideIconComponent, selector: "lucide-icon", inputs: ["name", "size", "spin", "filled"] }] });
|
|
920
|
+
}
|
|
921
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TabsComponent, decorators: [{
|
|
922
|
+
type: Component,
|
|
923
|
+
args: [{ selector: 'tabs', standalone: true, imports: [LucideIconComponent], template: `
|
|
924
|
+
<div class="Tabs">
|
|
925
|
+
<div class="Tabs__Bar" role="tablist" [attr.aria-label]="label()">
|
|
926
|
+
@for (item of items(); track item.value) {
|
|
927
|
+
<button
|
|
928
|
+
type="button"
|
|
929
|
+
class="Tabs__Tab"
|
|
930
|
+
role="tab"
|
|
931
|
+
[class.Tabs__Tab--on]="item.value === value()"
|
|
932
|
+
[disabled]="item.disabled === true || disabled()"
|
|
933
|
+
[attr.aria-selected]="item.value === value()"
|
|
934
|
+
(click)="select(item)"
|
|
935
|
+
>
|
|
936
|
+
@if (item.icon) {
|
|
937
|
+
<lucide-icon [name]="item.icon" [size]="14"></lucide-icon>
|
|
938
|
+
}
|
|
939
|
+
<span>{{ item.label }}</span>
|
|
940
|
+
</button>
|
|
941
|
+
}
|
|
942
|
+
</div>
|
|
943
|
+
<div class="Tabs__Panel" role="tabpanel">
|
|
944
|
+
<ng-content></ng-content>
|
|
945
|
+
</div>
|
|
946
|
+
</div>
|
|
947
|
+
`, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.Tabs{display:flex;flex-direction:column;gap:8px;width:100%}.Tabs__Bar{display:flex;flex-wrap:wrap;gap:4px}.Tabs__Tab{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border:none;border-radius:12px;background:transparent;color:var(--color-fg-muted, #a3a3a3);font:inherit;font-size:14px;font-weight:400;cursor:pointer}.Tabs__Tab lucide-icon{--lucide-stroke: currentColor}.Tabs__Tab:hover:not(:disabled):not(.Tabs__Tab--on){background:var(--color-surface-muted, #f5f5f5);color:var(--color-fg, #171717)}.Tabs__Tab--on{background:var(--color-surface-muted, #f5f5f5);color:var(--color-fg-brand, #16a34a)}.Tabs__Tab:disabled{opacity:.45;cursor:not-allowed}.Tabs__Panel{display:flex;flex-direction:column;gap:4px;min-width:0;font-size:14px;color:var(--color-fg-secondary, #525252)}\n"] }]
|
|
948
|
+
}] });
|
|
949
|
+
|
|
950
|
+
class NoticeComponent {
|
|
951
|
+
tone = input('info');
|
|
952
|
+
title = input(null);
|
|
953
|
+
message = input(null);
|
|
954
|
+
icon = input(null);
|
|
955
|
+
resolvedIcon() {
|
|
956
|
+
if (this.icon())
|
|
957
|
+
return this.icon();
|
|
958
|
+
switch (this.tone()) {
|
|
959
|
+
case 'success':
|
|
960
|
+
return 'check-circle';
|
|
961
|
+
case 'warning':
|
|
962
|
+
return 'triangle-alert';
|
|
963
|
+
case 'danger':
|
|
964
|
+
return 'circle-alert';
|
|
965
|
+
default:
|
|
966
|
+
return 'info';
|
|
967
|
+
}
|
|
968
|
+
}
|
|
969
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: NoticeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
970
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: NoticeComponent, isStandalone: true, selector: "notice", inputs: { tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
971
|
+
<div
|
|
972
|
+
class="Notice"
|
|
973
|
+
[class.Notice--info]="tone() === 'info'"
|
|
974
|
+
[class.Notice--success]="tone() === 'success'"
|
|
975
|
+
[class.Notice--warning]="tone() === 'warning'"
|
|
976
|
+
[class.Notice--danger]="tone() === 'danger'"
|
|
977
|
+
role="status"
|
|
978
|
+
>
|
|
979
|
+
<span class="Notice__Icon">
|
|
980
|
+
<lucide-icon [name]="resolvedIcon()" [size]="14"></lucide-icon>
|
|
981
|
+
</span>
|
|
982
|
+
<div class="Notice__Body">
|
|
983
|
+
@if (title()) {
|
|
984
|
+
<p class="Notice__Title">{{ title() }}</p>
|
|
985
|
+
}
|
|
986
|
+
@if (message()) {
|
|
987
|
+
<p class="Notice__Message">{{ message() }}</p>
|
|
988
|
+
}
|
|
989
|
+
<ng-content></ng-content>
|
|
990
|
+
</div>
|
|
991
|
+
</div>
|
|
992
|
+
`, isInline: true, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.Notice{display:flex;align-items:flex-start;gap:8px;width:100%;padding:8px;border-radius:12px;font-size:14px;font-weight:400}.Notice lucide-icon{--lucide-stroke: currentColor}.Notice--info{background:color-mix(in srgb,var(--color-info-bg, #eff6ff) 88%,var(--color-surface, #ffffff));color:var(--color-info-fg, #2563eb)}.Notice--success{background:color-mix(in srgb,var(--color-success-bg, #f0fdf4) 88%,var(--color-surface, #ffffff));color:var(--color-success-fg, #16a34a)}.Notice--warning{background:color-mix(in srgb,var(--color-warning-bg, #fffbeb) 88%,var(--color-surface, #ffffff));color:var(--color-warning-fg, #d97706)}.Notice--danger{background:color-mix(in srgb,var(--color-danger-bg, #fef2f2) 88%,var(--color-surface, #ffffff));color:var(--color-danger-fg, #dc2626)}.Notice__Icon{display:inline-flex;flex-shrink:0;margin-top:2px}.Notice__Body{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.Notice__Title,.Notice__Message{margin:0;font-size:14px;font-weight:400}.Notice__Title{color:inherit}.Notice__Message{color:var(--color-fg-secondary, #525252)}\n"], dependencies: [{ kind: "component", type: LucideIconComponent, selector: "lucide-icon", inputs: ["name", "size", "spin", "filled"] }] });
|
|
993
|
+
}
|
|
994
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: NoticeComponent, decorators: [{
|
|
995
|
+
type: Component,
|
|
996
|
+
args: [{ selector: 'notice', standalone: true, imports: [LucideIconComponent], template: `
|
|
997
|
+
<div
|
|
998
|
+
class="Notice"
|
|
999
|
+
[class.Notice--info]="tone() === 'info'"
|
|
1000
|
+
[class.Notice--success]="tone() === 'success'"
|
|
1001
|
+
[class.Notice--warning]="tone() === 'warning'"
|
|
1002
|
+
[class.Notice--danger]="tone() === 'danger'"
|
|
1003
|
+
role="status"
|
|
1004
|
+
>
|
|
1005
|
+
<span class="Notice__Icon">
|
|
1006
|
+
<lucide-icon [name]="resolvedIcon()" [size]="14"></lucide-icon>
|
|
1007
|
+
</span>
|
|
1008
|
+
<div class="Notice__Body">
|
|
1009
|
+
@if (title()) {
|
|
1010
|
+
<p class="Notice__Title">{{ title() }}</p>
|
|
1011
|
+
}
|
|
1012
|
+
@if (message()) {
|
|
1013
|
+
<p class="Notice__Message">{{ message() }}</p>
|
|
1014
|
+
}
|
|
1015
|
+
<ng-content></ng-content>
|
|
1016
|
+
</div>
|
|
1017
|
+
</div>
|
|
1018
|
+
`, styles: [":host{display:block;width:100%;user-select:none;-webkit-user-select:none}.Notice{display:flex;align-items:flex-start;gap:8px;width:100%;padding:8px;border-radius:12px;font-size:14px;font-weight:400}.Notice lucide-icon{--lucide-stroke: currentColor}.Notice--info{background:color-mix(in srgb,var(--color-info-bg, #eff6ff) 88%,var(--color-surface, #ffffff));color:var(--color-info-fg, #2563eb)}.Notice--success{background:color-mix(in srgb,var(--color-success-bg, #f0fdf4) 88%,var(--color-surface, #ffffff));color:var(--color-success-fg, #16a34a)}.Notice--warning{background:color-mix(in srgb,var(--color-warning-bg, #fffbeb) 88%,var(--color-surface, #ffffff));color:var(--color-warning-fg, #d97706)}.Notice--danger{background:color-mix(in srgb,var(--color-danger-bg, #fef2f2) 88%,var(--color-surface, #ffffff));color:var(--color-danger-fg, #dc2626)}.Notice__Icon{display:inline-flex;flex-shrink:0;margin-top:2px}.Notice__Body{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.Notice__Title,.Notice__Message{margin:0;font-size:14px;font-weight:400}.Notice__Title{color:inherit}.Notice__Message{color:var(--color-fg-secondary, #525252)}\n"] }]
|
|
361
1019
|
}] });
|
|
362
1020
|
|
|
363
1021
|
/*
|
|
@@ -368,5 +1026,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
|
|
|
368
1026
|
* Generated bundle index. Do not edit.
|
|
369
1027
|
*/
|
|
370
1028
|
|
|
371
|
-
export { EmptyStateComponent, KeyValueListComponent, LoadErrorComponent, SectionHeaderComponent, SmartPaginationComponent };
|
|
1029
|
+
export { AccordionComponent, AccordionItemComponent, AvatarComponent, BreadcrumbsComponent, DataTableComponent, EmptyStateComponent, KeyValueListComponent, ListRowComponent, LoadErrorComponent, NoticeComponent, SectionHeaderComponent, SkeletonComponent, SmartPaginationComponent, StepperComponent, SurfaceCardComponent, TabsComponent };
|
|
372
1030
|
//# sourceMappingURL=xosue-utils-helpers.mjs.map
|