b2b-tools 0.1.4 → 0.1.6

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.
@@ -5,14 +5,14 @@ import { DomSanitizer } from '@angular/platform-browser';
5
5
 
6
6
  class AdvancedCardTemplateDirective {
7
7
  templateRef;
8
- templateId = input.required({ ...(ngDevMode ? { debugName: "templateId" } : {}), alias: 'advancedCardTemplate' });
8
+ templateId = input.required({ ...(ngDevMode ? { debugName: "templateId" } : /* istanbul ignore next */ {}), alias: 'advancedCardTemplate' });
9
9
  constructor(templateRef) {
10
10
  this.templateRef = templateRef;
11
11
  }
12
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AdvancedCardTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
13
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.4", type: AdvancedCardTemplateDirective, isStandalone: true, selector: "[advancedCardTemplate]", inputs: { templateId: { classPropertyName: "templateId", publicName: "advancedCardTemplate", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
12
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: AdvancedCardTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
13
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.4", type: AdvancedCardTemplateDirective, isStandalone: true, selector: "[advancedCardTemplate]", inputs: { templateId: { classPropertyName: "templateId", publicName: "advancedCardTemplate", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AdvancedCardTemplateDirective, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: AdvancedCardTemplateDirective, decorators: [{
16
16
  type: Directive,
17
17
  args: [{
18
18
  selector: '[advancedCardTemplate]',
@@ -21,29 +21,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImpor
21
21
  }], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { templateId: [{ type: i0.Input, args: [{ isSignal: true, alias: "advancedCardTemplate", required: true }] }] } });
22
22
 
23
23
  class CardCompactComponent {
24
- configuration = input.required(...(ngDevMode ? [{ debugName: "configuration" }] : []));
25
- expanded = input.required(...(ngDevMode ? [{ debugName: "expanded" }] : []));
26
- badgeClass = input.required(...(ngDevMode ? [{ debugName: "badgeClass" }] : []));
24
+ configuration = input.required(...(ngDevMode ? [{ debugName: "configuration" }] : /* istanbul ignore next */ []));
25
+ expanded = input.required(...(ngDevMode ? [{ debugName: "expanded" }] : /* istanbul ignore next */ []));
26
+ badgeClass = input.required(...(ngDevMode ? [{ debugName: "badgeClass" }] : /* istanbul ignore next */ []));
27
27
  expand = output();
28
- hasHighlights = computed(() => (this.configuration().highlights?.length ?? 0) > 0, ...(ngDevMode ? [{ debugName: "hasHighlights" }] : []));
28
+ hasHighlights = computed(() => (this.configuration().highlights?.length ?? 0) > 0, ...(ngDevMode ? [{ debugName: "hasHighlights" }] : /* istanbul ignore next */ []));
29
29
  onExpand() {
30
30
  this.expand.emit();
31
31
  }
32
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CardCompactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
33
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: CardCompactComponent, isStandalone: true, selector: "lib-card-compact", inputs: { configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: true, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: true, transformFunction: null }, badgeClass: { classPropertyName: "badgeClass", publicName: "badgeClass", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { expand: "expand" }, ngImport: i0, template: "@let config = configuration();\r\n\r\n<section\r\n class=\"ac ac--compact\"\r\n [class.ac--hidden]=\"expanded()\"\r\n tabindex=\"0\"\r\n role=\"button\"\r\n (click)=\"onExpand()\"\r\n (keydown.enter)=\"onExpand()\"\r\n>\r\n <header class=\"ac__header\">\r\n <div class=\"ac__title-wrap\">\r\n <h3 class=\"ac__title\">{{ config.title }}</h3>\r\n\r\n @if (config.subtitle) {\r\n <p class=\"ac__subtitle\">{{ config.subtitle }}</p>\r\n }\r\n </div>\r\n\r\n @if (config.badge) {\r\n <span [class]=\"badgeClass()(config.badge.tone)\">\r\n {{ config.badge.label }}\r\n </span>\r\n }\r\n </header>\r\n\r\n @if (hasHighlights()) {\r\n @let highlightList = config.highlights;\r\n\r\n <div class=\"ac__highlights\">\r\n @for (highlight of highlightList; track highlight.label) {\r\n <div class=\"ac__hl\">\r\n <div class=\"ac__hl-value\">{{ highlight.value }}</div>\r\n <div class=\"ac__hl-label\">\r\n {{ highlight.label }}\r\n @if (highlight.hint) {\r\n <span class=\"ac__hl-hint\">\u00B7 {{ highlight.hint }}</span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <footer class=\"ac__footer\">\r\n <button type=\"button\" class=\"btn btn--primary\" (click)=\"onExpand(); $event.stopPropagation()\">\r\n {{ config.primaryCta?.label ?? 'Ver detalle' }}\r\n <span class=\"btn__chev\">\u203A</span>\r\n </button>\r\n </footer>\r\n</section>\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.acx__summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-bottom:15px}.block{border:1px solid var(--ac-border-soft);border-radius:5px;padding:12px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{font-weight:800;color:var(--ac-text);margin-bottom:8px;font-size:13px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;gap:6px;padding:8px;background:var(--ac-surface-2);border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;border-radius:5px;border:1px solid transparent;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-badge-neutral-fg);display:inline-flex;align-items:center;gap:8px;height:100%}.tab:hover{background:#f3f4f6}.tab--active{background:var(--ac-surface);border-color:var(--ac-border);color:var(--ac-text);box-shadow:0 6px 18px #11182714}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}\n"] });
32
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CardCompactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
33
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: CardCompactComponent, isStandalone: true, selector: "lib-card-compact", inputs: { configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: true, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: true, transformFunction: null }, badgeClass: { classPropertyName: "badgeClass", publicName: "badgeClass", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { expand: "expand" }, ngImport: i0, template: "@let config = configuration();\r\n\r\n<section\r\n class=\"ac ac--compact\"\r\n [class.ac--hidden]=\"expanded()\"\r\n tabindex=\"0\"\r\n role=\"button\"\r\n (click)=\"onExpand()\"\r\n (keydown.enter)=\"onExpand()\"\r\n>\r\n <header class=\"ac__header\">\r\n <div class=\"ac__title-wrap\">\r\n <h3 class=\"ac__title\">{{ config.title }}</h3>\r\n\r\n @if (config.subtitle) {\r\n <p class=\"ac__subtitle\">{{ config.subtitle }}</p>\r\n }\r\n </div>\r\n\r\n @if (config.badge) {\r\n <span [class]=\"badgeClass()(config.badge.tone)\">\r\n {{ config.badge.label }}\r\n </span>\r\n }\r\n </header>\r\n\r\n @if (hasHighlights()) {\r\n @let highlightList = config.highlights;\r\n\r\n <div class=\"ac__highlights\">\r\n @for (highlight of highlightList; track highlight.label) {\r\n <div class=\"ac__hl\">\r\n <div class=\"ac__hl-value\">{{ highlight.value }}</div>\r\n <div class=\"ac__hl-label\">\r\n {{ highlight.label }}\r\n @if (highlight.hint) {\r\n <span class=\"ac__hl-hint\">\u00B7 {{ highlight.hint }}</span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <footer class=\"ac__footer\">\r\n <button type=\"button\" class=\"btn btn--primary\" (click)=\"onExpand(); $event.stopPropagation()\">\r\n {{ config.primaryCta?.label ?? 'Ver detalle' }}\r\n <span class=\"btn__chev\">\u203A</span>\r\n </button>\r\n </footer>\r\n</section>\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.ac-content{display:flex;flex-direction:column;gap:16px}.ac-content--inline{flex-direction:row;align-items:flex-start}.ac-content__summary{flex:0 0 320px}.ac-content--inline .ac-content__main{flex:1}.acx__summary{display:grid;gap:14px;padding-bottom:15px;width:100%}.summary{flex:1}.block{border:1px solid var(--ac-border-soft);border-radius:5px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{background:var(--ac-surface-2);position:sticky;top:0;z-index:10;font-weight:800;color:var(--ac-text);font-size:13px;padding:12px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 12px;border:1px solid var(--ac-border-block)}.block__row:last-child{border-bottom:0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{flex:2;border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-tab);display:inline-flex;align-items:center;gap:8px;height:100%;border:none;border-bottom:2 solid transparent}.tab--active{color:var(--ac-tab-active);border:none;border-bottom:2px solid var(--ac-tab-active)}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}.scrollbar-y{overflow-y:auto}\n"] });
34
34
  }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CardCompactComponent, decorators: [{
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CardCompactComponent, decorators: [{
36
36
  type: Component,
37
- args: [{ selector: 'lib-card-compact', imports: [], template: "@let config = configuration();\r\n\r\n<section\r\n class=\"ac ac--compact\"\r\n [class.ac--hidden]=\"expanded()\"\r\n tabindex=\"0\"\r\n role=\"button\"\r\n (click)=\"onExpand()\"\r\n (keydown.enter)=\"onExpand()\"\r\n>\r\n <header class=\"ac__header\">\r\n <div class=\"ac__title-wrap\">\r\n <h3 class=\"ac__title\">{{ config.title }}</h3>\r\n\r\n @if (config.subtitle) {\r\n <p class=\"ac__subtitle\">{{ config.subtitle }}</p>\r\n }\r\n </div>\r\n\r\n @if (config.badge) {\r\n <span [class]=\"badgeClass()(config.badge.tone)\">\r\n {{ config.badge.label }}\r\n </span>\r\n }\r\n </header>\r\n\r\n @if (hasHighlights()) {\r\n @let highlightList = config.highlights;\r\n\r\n <div class=\"ac__highlights\">\r\n @for (highlight of highlightList; track highlight.label) {\r\n <div class=\"ac__hl\">\r\n <div class=\"ac__hl-value\">{{ highlight.value }}</div>\r\n <div class=\"ac__hl-label\">\r\n {{ highlight.label }}\r\n @if (highlight.hint) {\r\n <span class=\"ac__hl-hint\">\u00B7 {{ highlight.hint }}</span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <footer class=\"ac__footer\">\r\n <button type=\"button\" class=\"btn btn--primary\" (click)=\"onExpand(); $event.stopPropagation()\">\r\n {{ config.primaryCta?.label ?? 'Ver detalle' }}\r\n <span class=\"btn__chev\">\u203A</span>\r\n </button>\r\n </footer>\r\n</section>\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.acx__summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-bottom:15px}.block{border:1px solid var(--ac-border-soft);border-radius:5px;padding:12px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{font-weight:800;color:var(--ac-text);margin-bottom:8px;font-size:13px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;gap:6px;padding:8px;background:var(--ac-surface-2);border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;border-radius:5px;border:1px solid transparent;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-badge-neutral-fg);display:inline-flex;align-items:center;gap:8px;height:100%}.tab:hover{background:#f3f4f6}.tab--active{background:var(--ac-surface);border-color:var(--ac-border);color:var(--ac-text);box-shadow:0 6px 18px #11182714}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}\n"] }]
37
+ args: [{ selector: 'lib-card-compact', imports: [], template: "@let config = configuration();\r\n\r\n<section\r\n class=\"ac ac--compact\"\r\n [class.ac--hidden]=\"expanded()\"\r\n tabindex=\"0\"\r\n role=\"button\"\r\n (click)=\"onExpand()\"\r\n (keydown.enter)=\"onExpand()\"\r\n>\r\n <header class=\"ac__header\">\r\n <div class=\"ac__title-wrap\">\r\n <h3 class=\"ac__title\">{{ config.title }}</h3>\r\n\r\n @if (config.subtitle) {\r\n <p class=\"ac__subtitle\">{{ config.subtitle }}</p>\r\n }\r\n </div>\r\n\r\n @if (config.badge) {\r\n <span [class]=\"badgeClass()(config.badge.tone)\">\r\n {{ config.badge.label }}\r\n </span>\r\n }\r\n </header>\r\n\r\n @if (hasHighlights()) {\r\n @let highlightList = config.highlights;\r\n\r\n <div class=\"ac__highlights\">\r\n @for (highlight of highlightList; track highlight.label) {\r\n <div class=\"ac__hl\">\r\n <div class=\"ac__hl-value\">{{ highlight.value }}</div>\r\n <div class=\"ac__hl-label\">\r\n {{ highlight.label }}\r\n @if (highlight.hint) {\r\n <span class=\"ac__hl-hint\">\u00B7 {{ highlight.hint }}</span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <footer class=\"ac__footer\">\r\n <button type=\"button\" class=\"btn btn--primary\" (click)=\"onExpand(); $event.stopPropagation()\">\r\n {{ config.primaryCta?.label ?? 'Ver detalle' }}\r\n <span class=\"btn__chev\">\u203A</span>\r\n </button>\r\n </footer>\r\n</section>\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.ac-content{display:flex;flex-direction:column;gap:16px}.ac-content--inline{flex-direction:row;align-items:flex-start}.ac-content__summary{flex:0 0 320px}.ac-content--inline .ac-content__main{flex:1}.acx__summary{display:grid;gap:14px;padding-bottom:15px;width:100%}.summary{flex:1}.block{border:1px solid var(--ac-border-soft);border-radius:5px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{background:var(--ac-surface-2);position:sticky;top:0;z-index:10;font-weight:800;color:var(--ac-text);font-size:13px;padding:12px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 12px;border:1px solid var(--ac-border-block)}.block__row:last-child{border-bottom:0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{flex:2;border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-tab);display:inline-flex;align-items:center;gap:8px;height:100%;border:none;border-bottom:2 solid transparent}.tab--active{color:var(--ac-tab-active);border:none;border-bottom:2px solid var(--ac-tab-active)}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}.scrollbar-y{overflow-y:auto}\n"] }]
38
38
  }], propDecorators: { configuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "configuration", required: true }] }], expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: true }] }], badgeClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "badgeClass", required: true }] }], expand: [{ type: i0.Output, args: ["expand"] }] } });
39
39
 
40
40
  class CardHeaderComponent {
41
- variant = input('inline', ...(ngDevMode ? [{ debugName: "variant" }] : []));
42
- title = input.required(...(ngDevMode ? [{ debugName: "title" }] : []));
43
- badge = input(undefined, ...(ngDevMode ? [{ debugName: "badge" }] : []));
44
- actions = input(undefined, ...(ngDevMode ? [{ debugName: "actions" }] : []));
45
- sticky = input(false, ...(ngDevMode ? [{ debugName: "sticky" }] : []));
46
- badgeClass = input.required(...(ngDevMode ? [{ debugName: "badgeClass" }] : []));
41
+ variant = input('inline', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
42
+ title = input.required(...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
43
+ badge = input(undefined, ...(ngDevMode ? [{ debugName: "badge" }] : /* istanbul ignore next */ []));
44
+ actions = input(undefined, ...(ngDevMode ? [{ debugName: "actions" }] : /* istanbul ignore next */ []));
45
+ sticky = input(false, ...(ngDevMode ? [{ debugName: "sticky" }] : /* istanbul ignore next */ []));
46
+ badgeClass = input.required(...(ngDevMode ? [{ debugName: "badgeClass" }] : /* istanbul ignore next */ []));
47
47
  actionClick = output();
48
48
  close = output();
49
49
  onAction(advancedAction) {
@@ -54,45 +54,53 @@ class CardHeaderComponent {
54
54
  onClose() {
55
55
  this.close.emit();
56
56
  }
57
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
58
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: CardHeaderComponent, isStandalone: true, selector: "ac-card-header", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, badge: { classPropertyName: "badge", publicName: "badge", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, badgeClass: { classPropertyName: "badgeClass", publicName: "badgeClass", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { actionClick: "actionClick", close: "close" }, ngImport: i0, template: "<header\r\n [class.acx__header]=\"variant() === 'inline'\"\r\n [class.acx__header--sticky]=\"variant() === 'inline' && sticky()\"\r\n [class.panel__header]=\"variant() === 'panel'\"\r\n>\r\n <div [class.acx__title]=\"variant() === 'inline'\" [class.panel__title]=\"variant() === 'panel'\">\r\n <h3\r\n [class.acx__title-text]=\"variant() === 'inline'\"\r\n [class.panel__title-text]=\"variant() === 'panel'\"\r\n >\r\n {{ title() }}\r\n </h3>\r\n\r\n @if (badge()) {\r\n <span [class]=\"badgeClass()(badge()?.tone)\">\r\n {{ badge()?.label }}\r\n </span>\r\n }\r\n </div>\r\n\r\n <div [class.acx__actions]=\"variant() === 'inline'\" [class.panel__actions]=\"variant() === 'panel'\">\r\n @let headerActions = actions();\r\n @if (headerActions?.length) {\r\n @for (headerAction of headerActions; track headerAction.id) {\r\n <button\r\n type=\"button\"\r\n class=\"btn\"\r\n [class.btn--primary]=\"headerAction.tone === 'primary'\"\r\n [class.btn--danger]=\"headerAction.tone === 'danger'\"\r\n [class.btn--secondary]=\"!headerAction.tone || headerAction.tone === 'secondary'\"\r\n [disabled]=\"headerAction.disabled\"\r\n (click)=\"onAction(headerAction)\"\r\n >\r\n {{ headerAction.label }}\r\n </button>\r\n }\r\n }\r\n\r\n <button type=\"button\" class=\"icon-btn\" (click)=\"onClose()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <rect width=\"24\" height=\"24\" fill=\"none\" />\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M6.4 19L5 17.6l5.6-5.6L5 6.4L6.4 5l5.6 5.6L17.6 5L19 6.4L13.4 12l5.6 5.6l-1.4 1.4l-5.6-5.6z\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n</header>\r\n", styles: [":host{display:block}.panel__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.acx__summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-bottom:15px}.block{border:1px solid var(--ac-border-soft);border-radius:5px;padding:12px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{font-weight:800;color:var(--ac-text);margin-bottom:8px;font-size:13px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;gap:6px;padding:8px;background:var(--ac-surface-2);border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;border-radius:5px;border:1px solid transparent;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-badge-neutral-fg);display:inline-flex;align-items:center;gap:8px;height:100%}.tab:hover{background:#f3f4f6}.tab--active{background:var(--ac-surface);border-color:var(--ac-border);color:var(--ac-text);box-shadow:0 6px 18px #11182714}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}\n"] });
57
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
58
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: CardHeaderComponent, isStandalone: true, selector: "ac-card-header", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, badge: { classPropertyName: "badge", publicName: "badge", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, badgeClass: { classPropertyName: "badgeClass", publicName: "badgeClass", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { actionClick: "actionClick", close: "close" }, ngImport: i0, template: "<header\r\n [class.acx__header]=\"variant() === 'inline'\"\r\n [class.acx__header--sticky]=\"variant() === 'inline' && sticky()\"\r\n [class.panel__header]=\"variant() === 'panel'\"\r\n>\r\n <div [class.acx__title]=\"variant() === 'inline'\" [class.panel__title]=\"variant() === 'panel'\">\r\n <h3\r\n [class.acx__title-text]=\"variant() === 'inline'\"\r\n [class.panel__title-text]=\"variant() === 'panel'\"\r\n >\r\n {{ title() }}\r\n </h3>\r\n\r\n @if (badge()) {\r\n <span [class]=\"badgeClass()(badge()?.tone)\">\r\n {{ badge()?.label }}\r\n </span>\r\n }\r\n </div>\r\n\r\n <div [class.acx__actions]=\"variant() === 'inline'\" [class.panel__actions]=\"variant() === 'panel'\">\r\n @let headerActions = actions();\r\n @if (headerActions?.length) {\r\n @for (headerAction of headerActions; track headerAction.id) {\r\n <button\r\n type=\"button\"\r\n class=\"btn\"\r\n [class.btn--primary]=\"headerAction.tone === 'primary'\"\r\n [class.btn--danger]=\"headerAction.tone === 'danger'\"\r\n [class.btn--secondary]=\"!headerAction.tone || headerAction.tone === 'secondary'\"\r\n [disabled]=\"headerAction.disabled\"\r\n (click)=\"onAction(headerAction)\"\r\n >\r\n {{ headerAction.label }}\r\n </button>\r\n }\r\n }\r\n\r\n <button type=\"button\" class=\"icon-btn\" (click)=\"onClose()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <rect width=\"24\" height=\"24\" fill=\"none\" />\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M6.4 19L5 17.6l5.6-5.6L5 6.4L6.4 5l5.6 5.6L17.6 5L19 6.4L13.4 12l5.6 5.6l-1.4 1.4l-5.6-5.6z\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n</header>\r\n", styles: [":host{display:block}.panel__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.ac-content{display:flex;flex-direction:column;gap:16px}.ac-content--inline{flex-direction:row;align-items:flex-start}.ac-content__summary{flex:0 0 320px}.ac-content--inline .ac-content__main{flex:1}.acx__summary{display:grid;gap:14px;padding-bottom:15px;width:100%}.summary{flex:1}.block{border:1px solid var(--ac-border-soft);border-radius:5px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{background:var(--ac-surface-2);position:sticky;top:0;z-index:10;font-weight:800;color:var(--ac-text);font-size:13px;padding:12px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 12px;border:1px solid var(--ac-border-block)}.block__row:last-child{border-bottom:0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{flex:2;border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-tab);display:inline-flex;align-items:center;gap:8px;height:100%;border:none;border-bottom:2 solid transparent}.tab--active{color:var(--ac-tab-active);border:none;border-bottom:2px solid var(--ac-tab-active)}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}.scrollbar-y{overflow-y:auto}\n"] });
59
59
  }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CardHeaderComponent, decorators: [{
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CardHeaderComponent, decorators: [{
61
61
  type: Component,
62
- args: [{ selector: 'ac-card-header', imports: [], template: "<header\r\n [class.acx__header]=\"variant() === 'inline'\"\r\n [class.acx__header--sticky]=\"variant() === 'inline' && sticky()\"\r\n [class.panel__header]=\"variant() === 'panel'\"\r\n>\r\n <div [class.acx__title]=\"variant() === 'inline'\" [class.panel__title]=\"variant() === 'panel'\">\r\n <h3\r\n [class.acx__title-text]=\"variant() === 'inline'\"\r\n [class.panel__title-text]=\"variant() === 'panel'\"\r\n >\r\n {{ title() }}\r\n </h3>\r\n\r\n @if (badge()) {\r\n <span [class]=\"badgeClass()(badge()?.tone)\">\r\n {{ badge()?.label }}\r\n </span>\r\n }\r\n </div>\r\n\r\n <div [class.acx__actions]=\"variant() === 'inline'\" [class.panel__actions]=\"variant() === 'panel'\">\r\n @let headerActions = actions();\r\n @if (headerActions?.length) {\r\n @for (headerAction of headerActions; track headerAction.id) {\r\n <button\r\n type=\"button\"\r\n class=\"btn\"\r\n [class.btn--primary]=\"headerAction.tone === 'primary'\"\r\n [class.btn--danger]=\"headerAction.tone === 'danger'\"\r\n [class.btn--secondary]=\"!headerAction.tone || headerAction.tone === 'secondary'\"\r\n [disabled]=\"headerAction.disabled\"\r\n (click)=\"onAction(headerAction)\"\r\n >\r\n {{ headerAction.label }}\r\n </button>\r\n }\r\n }\r\n\r\n <button type=\"button\" class=\"icon-btn\" (click)=\"onClose()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <rect width=\"24\" height=\"24\" fill=\"none\" />\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M6.4 19L5 17.6l5.6-5.6L5 6.4L6.4 5l5.6 5.6L17.6 5L19 6.4L13.4 12l5.6 5.6l-1.4 1.4l-5.6-5.6z\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n</header>\r\n", styles: [":host{display:block}.panel__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.acx__summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-bottom:15px}.block{border:1px solid var(--ac-border-soft);border-radius:5px;padding:12px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{font-weight:800;color:var(--ac-text);margin-bottom:8px;font-size:13px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;gap:6px;padding:8px;background:var(--ac-surface-2);border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;border-radius:5px;border:1px solid transparent;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-badge-neutral-fg);display:inline-flex;align-items:center;gap:8px;height:100%}.tab:hover{background:#f3f4f6}.tab--active{background:var(--ac-surface);border-color:var(--ac-border);color:var(--ac-text);box-shadow:0 6px 18px #11182714}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}\n"] }]
62
+ args: [{ selector: 'ac-card-header', imports: [], template: "<header\r\n [class.acx__header]=\"variant() === 'inline'\"\r\n [class.acx__header--sticky]=\"variant() === 'inline' && sticky()\"\r\n [class.panel__header]=\"variant() === 'panel'\"\r\n>\r\n <div [class.acx__title]=\"variant() === 'inline'\" [class.panel__title]=\"variant() === 'panel'\">\r\n <h3\r\n [class.acx__title-text]=\"variant() === 'inline'\"\r\n [class.panel__title-text]=\"variant() === 'panel'\"\r\n >\r\n {{ title() }}\r\n </h3>\r\n\r\n @if (badge()) {\r\n <span [class]=\"badgeClass()(badge()?.tone)\">\r\n {{ badge()?.label }}\r\n </span>\r\n }\r\n </div>\r\n\r\n <div [class.acx__actions]=\"variant() === 'inline'\" [class.panel__actions]=\"variant() === 'panel'\">\r\n @let headerActions = actions();\r\n @if (headerActions?.length) {\r\n @for (headerAction of headerActions; track headerAction.id) {\r\n <button\r\n type=\"button\"\r\n class=\"btn\"\r\n [class.btn--primary]=\"headerAction.tone === 'primary'\"\r\n [class.btn--danger]=\"headerAction.tone === 'danger'\"\r\n [class.btn--secondary]=\"!headerAction.tone || headerAction.tone === 'secondary'\"\r\n [disabled]=\"headerAction.disabled\"\r\n (click)=\"onAction(headerAction)\"\r\n >\r\n {{ headerAction.label }}\r\n </button>\r\n }\r\n }\r\n\r\n <button type=\"button\" class=\"icon-btn\" (click)=\"onClose()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <rect width=\"24\" height=\"24\" fill=\"none\" />\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M6.4 19L5 17.6l5.6-5.6L5 6.4L6.4 5l5.6 5.6L17.6 5L19 6.4L13.4 12l5.6 5.6l-1.4 1.4l-5.6-5.6z\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n</header>\r\n", styles: [":host{display:block}.panel__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.ac-content{display:flex;flex-direction:column;gap:16px}.ac-content--inline{flex-direction:row;align-items:flex-start}.ac-content__summary{flex:0 0 320px}.ac-content--inline .ac-content__main{flex:1}.acx__summary{display:grid;gap:14px;padding-bottom:15px;width:100%}.summary{flex:1}.block{border:1px solid var(--ac-border-soft);border-radius:5px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{background:var(--ac-surface-2);position:sticky;top:0;z-index:10;font-weight:800;color:var(--ac-text);font-size:13px;padding:12px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 12px;border:1px solid var(--ac-border-block)}.block__row:last-child{border-bottom:0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{flex:2;border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-tab);display:inline-flex;align-items:center;gap:8px;height:100%;border:none;border-bottom:2 solid transparent}.tab--active{color:var(--ac-tab-active);border:none;border-bottom:2px solid var(--ac-tab-active)}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}.scrollbar-y{overflow-y:auto}\n"] }]
63
63
  }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], badge: [{ type: i0.Input, args: [{ isSignal: true, alias: "badge", required: false }] }], actions: [{ type: i0.Input, args: [{ isSignal: true, alias: "actions", required: false }] }], sticky: [{ type: i0.Input, args: [{ isSignal: true, alias: "sticky", required: false }] }], badgeClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "badgeClass", required: true }] }], actionClick: [{ type: i0.Output, args: ["actionClick"] }], close: [{ type: i0.Output, args: ["close"] }] } });
64
64
 
65
65
  class CardSummaryComponent {
66
- blocks = input(undefined, ...(ngDevMode ? [{ debugName: "blocks" }] : []));
67
- hasBlocks = computed(() => (this.blocks()?.length ?? 0) > 0, ...(ngDevMode ? [{ debugName: "hasBlocks" }] : []));
68
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CardSummaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
69
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: CardSummaryComponent, isStandalone: true, selector: "ac-card-summary", inputs: { blocks: { classPropertyName: "blocks", publicName: "blocks", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (hasBlocks()) {\r\n @let list = blocks();\r\n\r\n <div class=\"acx__summary\">\r\n @for (block of list; track block.title) {\r\n <div class=\"block\">\r\n <div class=\"block__title\">{{ block.title }}</div>\r\n\r\n @for (row of block.rows; track row.label) {\r\n <div class=\"block__row\">\r\n <span class=\"block__label\">{{ row.label }}</span>\r\n <span class=\"block__value\">{{ row.value }}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.acx__summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-bottom:15px}.block{border:1px solid var(--ac-border-soft);border-radius:5px;padding:12px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{font-weight:800;color:var(--ac-text);margin-bottom:8px;font-size:13px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;gap:6px;padding:8px;background:var(--ac-surface-2);border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;border-radius:5px;border:1px solid transparent;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-badge-neutral-fg);display:inline-flex;align-items:center;gap:8px;height:100%}.tab:hover{background:#f3f4f6}.tab--active{background:var(--ac-surface);border-color:var(--ac-border);color:var(--ac-text);box-shadow:0 6px 18px #11182714}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}\n"] });
66
+ blocks = input(undefined, ...(ngDevMode ? [{ debugName: "blocks" }] : /* istanbul ignore next */ []));
67
+ layout = input('stacked', ...(ngDevMode ? [{ debugName: "layout" }] : /* istanbul ignore next */ []));
68
+ columnMax = 4;
69
+ numBlocks = computed(() => this.blocks()?.length ?? 0, ...(ngDevMode ? [{ debugName: "numBlocks" }] : /* istanbul ignore next */ []));
70
+ templateStyle = computed(() => {
71
+ if (this.layout() === 'inline') {
72
+ return 'repeat(1, 1fr)';
73
+ }
74
+ return `repeat(${Math.min(this.numBlocks(), this.columnMax)}, 1fr)`;
75
+ }, ...(ngDevMode ? [{ debugName: "templateStyle" }] : /* istanbul ignore next */ []));
76
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CardSummaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
77
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: CardSummaryComponent, isStandalone: true, selector: "ac-card-summary", inputs: { blocks: { classPropertyName: "blocks", publicName: "blocks", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (numBlocks() > 0) {\r\n @let list = blocks();\r\n\r\n <div\r\n class=\"acx__summary\"\r\n [class.scrollbar-y]=\"this.layout() === 'inline'\"\r\n [style.grid-template-columns]=\"templateStyle()\"\r\n >\r\n @for (block of list; track block.title) {\r\n <div class=\"block\">\r\n <div class=\"block__title\">{{ block.title }}</div>\r\n\r\n @for (row of block.rows; track row.label) {\r\n <div class=\"block__row\">\r\n <span class=\"block__label\">{{ row.label }}</span>\r\n <span class=\"block__value\">{{ row.value }}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.ac-content{display:flex;flex-direction:column;gap:16px}.ac-content--inline{flex-direction:row;align-items:flex-start}.ac-content__summary{flex:0 0 320px}.ac-content--inline .ac-content__main{flex:1}.acx__summary{display:grid;gap:14px;padding-bottom:15px;width:100%}.summary{flex:1}.block{border:1px solid var(--ac-border-soft);border-radius:5px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{background:var(--ac-surface-2);position:sticky;top:0;z-index:10;font-weight:800;color:var(--ac-text);font-size:13px;padding:12px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 12px;border:1px solid var(--ac-border-block)}.block__row:last-child{border-bottom:0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{flex:2;border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-tab);display:inline-flex;align-items:center;gap:8px;height:100%;border:none;border-bottom:2 solid transparent}.tab--active{color:var(--ac-tab-active);border:none;border-bottom:2px solid var(--ac-tab-active)}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}.scrollbar-y{overflow-y:auto}\n"] });
70
78
  }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CardSummaryComponent, decorators: [{
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CardSummaryComponent, decorators: [{
72
80
  type: Component,
73
- args: [{ selector: 'ac-card-summary', imports: [], template: "@if (hasBlocks()) {\r\n @let list = blocks();\r\n\r\n <div class=\"acx__summary\">\r\n @for (block of list; track block.title) {\r\n <div class=\"block\">\r\n <div class=\"block__title\">{{ block.title }}</div>\r\n\r\n @for (row of block.rows; track row.label) {\r\n <div class=\"block__row\">\r\n <span class=\"block__label\">{{ row.label }}</span>\r\n <span class=\"block__value\">{{ row.value }}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.acx__summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-bottom:15px}.block{border:1px solid var(--ac-border-soft);border-radius:5px;padding:12px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{font-weight:800;color:var(--ac-text);margin-bottom:8px;font-size:13px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;gap:6px;padding:8px;background:var(--ac-surface-2);border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;border-radius:5px;border:1px solid transparent;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-badge-neutral-fg);display:inline-flex;align-items:center;gap:8px;height:100%}.tab:hover{background:#f3f4f6}.tab--active{background:var(--ac-surface);border-color:var(--ac-border);color:var(--ac-text);box-shadow:0 6px 18px #11182714}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}\n"] }]
74
- }], propDecorators: { blocks: [{ type: i0.Input, args: [{ isSignal: true, alias: "blocks", required: false }] }] } });
81
+ args: [{ selector: 'ac-card-summary', imports: [], template: "@if (numBlocks() > 0) {\r\n @let list = blocks();\r\n\r\n <div\r\n class=\"acx__summary\"\r\n [class.scrollbar-y]=\"this.layout() === 'inline'\"\r\n [style.grid-template-columns]=\"templateStyle()\"\r\n >\r\n @for (block of list; track block.title) {\r\n <div class=\"block\">\r\n <div class=\"block__title\">{{ block.title }}</div>\r\n\r\n @for (row of block.rows; track row.label) {\r\n <div class=\"block__row\">\r\n <span class=\"block__label\">{{ row.label }}</span>\r\n <span class=\"block__value\">{{ row.value }}</span>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.ac-content{display:flex;flex-direction:column;gap:16px}.ac-content--inline{flex-direction:row;align-items:flex-start}.ac-content__summary{flex:0 0 320px}.ac-content--inline .ac-content__main{flex:1}.acx__summary{display:grid;gap:14px;padding-bottom:15px;width:100%}.summary{flex:1}.block{border:1px solid var(--ac-border-soft);border-radius:5px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{background:var(--ac-surface-2);position:sticky;top:0;z-index:10;font-weight:800;color:var(--ac-text);font-size:13px;padding:12px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 12px;border:1px solid var(--ac-border-block)}.block__row:last-child{border-bottom:0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{flex:2;border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-tab);display:inline-flex;align-items:center;gap:8px;height:100%;border:none;border-bottom:2 solid transparent}.tab--active{color:var(--ac-tab-active);border:none;border-bottom:2px solid var(--ac-tab-active)}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}.scrollbar-y{overflow-y:auto}\n"] }]
82
+ }], propDecorators: { blocks: [{ type: i0.Input, args: [{ isSignal: true, alias: "blocks", required: false }] }], layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }] } });
75
83
 
76
84
  class CardTabContentComponent {
77
- activeTab = input.required(...(ngDevMode ? [{ debugName: "activeTab" }] : []));
78
- cardId = input.required(...(ngDevMode ? [{ debugName: "cardId" }] : []));
85
+ activeTab = input.required(...(ngDevMode ? [{ debugName: "activeTab" }] : /* istanbul ignore next */ []));
86
+ cardId = input.required(...(ngDevMode ? [{ debugName: "cardId" }] : /* istanbul ignore next */ []));
79
87
  /**
80
88
  * Función que resuelve el TemplateRef para el tab actual.
81
89
  * (La lógica real sigue en el root: getActiveTemplate())
82
90
  */
83
- templateRef = input(null, ...(ngDevMode ? [{ debugName: "templateRef" }] : []));
84
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CardTabContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
85
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: CardTabContentComponent, isStandalone: true, selector: "ac-card-tab-content", inputs: { activeTab: { classPropertyName: "activeTab", publicName: "activeTab", isSignal: true, isRequired: true, transformFunction: null }, cardId: { classPropertyName: "cardId", publicName: "cardId", isSignal: true, isRequired: true, transformFunction: null }, templateRef: { classPropertyName: "templateRef", publicName: "templateRef", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let tab = activeTab();\r\n@let template = templateRef();\r\n\r\n<div class=\"tabs__content\">\r\n @if (tab) {\r\n @switch (tab.kind) {\r\n @case ('text') {\r\n <div class=\"tab-text\">\r\n {{ tab.text ?? '' }}\r\n </div>\r\n }\r\n\r\n @case ('empty') {\r\n <div class=\"empty\">Sin contenido.</div>\r\n }\r\n\r\n @case ('template') {\r\n @if (template) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"template\"\r\n [ngTemplateOutletContext]=\"{\r\n cardId: cardId(),\r\n tabId: tab.id,\r\n }\"\r\n />\r\n } @else {\r\n <div class=\"empty\">Template no encontrado para \"{{ tab.templateId }}\"</div>\r\n }\r\n }\r\n }\r\n } @else {\r\n <div class=\"empty\">Sin tabs configurados.</div>\r\n }\r\n</div>\r\n", styles: ["", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.acx__summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-bottom:15px}.block{border:1px solid var(--ac-border-soft);border-radius:5px;padding:12px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{font-weight:800;color:var(--ac-text);margin-bottom:8px;font-size:13px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;gap:6px;padding:8px;background:var(--ac-surface-2);border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;border-radius:5px;border:1px solid transparent;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-badge-neutral-fg);display:inline-flex;align-items:center;gap:8px;height:100%}.tab:hover{background:#f3f4f6}.tab--active{background:var(--ac-surface);border-color:var(--ac-border);color:var(--ac-text);box-shadow:0 6px 18px #11182714}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
91
+ templateRef = input(null, ...(ngDevMode ? [{ debugName: "templateRef" }] : /* istanbul ignore next */ []));
92
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CardTabContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
93
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: CardTabContentComponent, isStandalone: true, selector: "ac-card-tab-content", inputs: { activeTab: { classPropertyName: "activeTab", publicName: "activeTab", isSignal: true, isRequired: true, transformFunction: null }, cardId: { classPropertyName: "cardId", publicName: "cardId", isSignal: true, isRequired: true, transformFunction: null }, templateRef: { classPropertyName: "templateRef", publicName: "templateRef", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@let tab = activeTab();\r\n@let template = templateRef();\r\n\r\n<div class=\"tabs__content\">\r\n @if (tab) {\r\n @switch (tab.kind) {\r\n @case ('text') {\r\n <div class=\"tab-text\">\r\n {{ tab.text ?? '' }}\r\n </div>\r\n }\r\n\r\n @case ('empty') {\r\n <div class=\"empty\">Sin contenido.</div>\r\n }\r\n\r\n @case ('template') {\r\n @if (template) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"template\"\r\n [ngTemplateOutletContext]=\"{\r\n cardId: cardId(),\r\n tabId: tab.id,\r\n }\"\r\n />\r\n } @else {\r\n <div class=\"empty\">Template no encontrado para \"{{ tab.templateId }}\"</div>\r\n }\r\n }\r\n }\r\n } @else {\r\n <div class=\"empty\">Sin tabs configurados.</div>\r\n }\r\n</div>\r\n", styles: ["", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.ac-content{display:flex;flex-direction:column;gap:16px}.ac-content--inline{flex-direction:row;align-items:flex-start}.ac-content__summary{flex:0 0 320px}.ac-content--inline .ac-content__main{flex:1}.acx__summary{display:grid;gap:14px;padding-bottom:15px;width:100%}.summary{flex:1}.block{border:1px solid var(--ac-border-soft);border-radius:5px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{background:var(--ac-surface-2);position:sticky;top:0;z-index:10;font-weight:800;color:var(--ac-text);font-size:13px;padding:12px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 12px;border:1px solid var(--ac-border-block)}.block__row:last-child{border-bottom:0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{flex:2;border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-tab);display:inline-flex;align-items:center;gap:8px;height:100%;border:none;border-bottom:2 solid transparent}.tab--active{color:var(--ac-tab-active);border:none;border-bottom:2px solid var(--ac-tab-active)}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}.scrollbar-y{overflow-y:auto}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
86
94
  }
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CardTabContentComponent, decorators: [{
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CardTabContentComponent, decorators: [{
88
96
  type: Component,
89
- args: [{ selector: 'ac-card-tab-content', imports: [NgTemplateOutlet], template: "@let tab = activeTab();\r\n@let template = templateRef();\r\n\r\n<div class=\"tabs__content\">\r\n @if (tab) {\r\n @switch (tab.kind) {\r\n @case ('text') {\r\n <div class=\"tab-text\">\r\n {{ tab.text ?? '' }}\r\n </div>\r\n }\r\n\r\n @case ('empty') {\r\n <div class=\"empty\">Sin contenido.</div>\r\n }\r\n\r\n @case ('template') {\r\n @if (template) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"template\"\r\n [ngTemplateOutletContext]=\"{\r\n cardId: cardId(),\r\n tabId: tab.id,\r\n }\"\r\n />\r\n } @else {\r\n <div class=\"empty\">Template no encontrado para \"{{ tab.templateId }}\"</div>\r\n }\r\n }\r\n }\r\n } @else {\r\n <div class=\"empty\">Sin tabs configurados.</div>\r\n }\r\n</div>\r\n", styles: [":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.acx__summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-bottom:15px}.block{border:1px solid var(--ac-border-soft);border-radius:5px;padding:12px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{font-weight:800;color:var(--ac-text);margin-bottom:8px;font-size:13px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;gap:6px;padding:8px;background:var(--ac-surface-2);border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;border-radius:5px;border:1px solid transparent;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-badge-neutral-fg);display:inline-flex;align-items:center;gap:8px;height:100%}.tab:hover{background:#f3f4f6}.tab--active{background:var(--ac-surface);border-color:var(--ac-border);color:var(--ac-text);box-shadow:0 6px 18px #11182714}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}\n"] }]
97
+ args: [{ selector: 'ac-card-tab-content', imports: [NgTemplateOutlet], template: "@let tab = activeTab();\r\n@let template = templateRef();\r\n\r\n<div class=\"tabs__content\">\r\n @if (tab) {\r\n @switch (tab.kind) {\r\n @case ('text') {\r\n <div class=\"tab-text\">\r\n {{ tab.text ?? '' }}\r\n </div>\r\n }\r\n\r\n @case ('empty') {\r\n <div class=\"empty\">Sin contenido.</div>\r\n }\r\n\r\n @case ('template') {\r\n @if (template) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"template\"\r\n [ngTemplateOutletContext]=\"{\r\n cardId: cardId(),\r\n tabId: tab.id,\r\n }\"\r\n />\r\n } @else {\r\n <div class=\"empty\">Template no encontrado para \"{{ tab.templateId }}\"</div>\r\n }\r\n }\r\n }\r\n } @else {\r\n <div class=\"empty\">Sin tabs configurados.</div>\r\n }\r\n</div>\r\n", styles: [":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.ac-content{display:flex;flex-direction:column;gap:16px}.ac-content--inline{flex-direction:row;align-items:flex-start}.ac-content__summary{flex:0 0 320px}.ac-content--inline .ac-content__main{flex:1}.acx__summary{display:grid;gap:14px;padding-bottom:15px;width:100%}.summary{flex:1}.block{border:1px solid var(--ac-border-soft);border-radius:5px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{background:var(--ac-surface-2);position:sticky;top:0;z-index:10;font-weight:800;color:var(--ac-text);font-size:13px;padding:12px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 12px;border:1px solid var(--ac-border-block)}.block__row:last-child{border-bottom:0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{flex:2;border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-tab);display:inline-flex;align-items:center;gap:8px;height:100%;border:none;border-bottom:2 solid transparent}.tab--active{color:var(--ac-tab-active);border:none;border-bottom:2px solid var(--ac-tab-active)}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}.scrollbar-y{overflow-y:auto}\n"] }]
90
98
  }], propDecorators: { activeTab: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeTab", required: true }] }], cardId: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardId", required: true }] }], templateRef: [{ type: i0.Input, args: [{ isSignal: true, alias: "templateRef", required: false }] }] } });
91
99
 
92
100
  class CardTabsBarComponent {
93
- tabs = input.required(...(ngDevMode ? [{ debugName: "tabs" }] : []));
94
- activeTabId = input.required(...(ngDevMode ? [{ debugName: "activeTabId" }] : []));
95
- badgeClass = input.required(...(ngDevMode ? [{ debugName: "badgeClass" }] : []));
101
+ tabs = input.required(...(ngDevMode ? [{ debugName: "tabs" }] : /* istanbul ignore next */ []));
102
+ activeTabId = input.required(...(ngDevMode ? [{ debugName: "activeTabId" }] : /* istanbul ignore next */ []));
103
+ badgeClass = input.required(...(ngDevMode ? [{ debugName: "badgeClass" }] : /* istanbul ignore next */ []));
96
104
  tabSelected = output();
97
105
  tabAction = output();
98
106
  activeTab = computed(() => {
@@ -100,7 +108,7 @@ class CardTabsBarComponent {
100
108
  if (!id)
101
109
  return null;
102
110
  return this.tabs().find((tab) => tab.id === id) ?? null;
103
- }, ...(ngDevMode ? [{ debugName: "activeTab" }] : []));
111
+ }, ...(ngDevMode ? [{ debugName: "activeTab" }] : /* istanbul ignore next */ []));
104
112
  selectTab(id) {
105
113
  this.tabSelected.emit(id);
106
114
  }
@@ -109,17 +117,17 @@ class CardTabsBarComponent {
109
117
  return;
110
118
  this.tabAction.emit(advancedTabAction);
111
119
  }
112
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CardTabsBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
113
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: CardTabsBarComponent, isStandalone: true, selector: "ac-card-tabs-bar", inputs: { tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: true, transformFunction: null }, activeTabId: { classPropertyName: "activeTabId", publicName: "activeTabId", isSignal: true, isRequired: true, transformFunction: null }, badgeClass: { classPropertyName: "badgeClass", publicName: "badgeClass", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { tabSelected: "tabSelected", tabAction: "tabAction" }, ngImport: i0, template: "@let tabList = tabs();\r\n@let currentId = activeTabId();\r\n@let current = activeTab();\r\n\r\n<div class=\"tabs__bar\">\r\n @for (tab of tabList; track tab.id) {\r\n <button\r\n type=\"button\"\r\n class=\"tab\"\r\n [class.tab--active]=\"currentId === tab.id\"\r\n (click)=\"selectTab(tab.id)\"\r\n >\r\n <span>{{ tab.label }}</span>\r\n @if (tab.pill) {\r\n <span class=\"pill\" [class]=\"badgeClass()(tab.pill.tone)\">\r\n {{ tab.pill.label }}\r\n </span>\r\n }\r\n </button>\r\n }\r\n\r\n <div class=\"tabs__spacer\"></div>\r\n\r\n @if (current?.actions?.length) {\r\n <div class=\"tabs__actions\">\r\n @for (actions of current?.actions ?? []; track actions.id) {\r\n <button\r\n type=\"button\"\r\n class=\"btn btn--sm\"\r\n [class.btn--primary]=\"actions.tone === 'primary'\"\r\n [class.btn--danger]=\"actions.tone === 'danger'\"\r\n [class.btn--secondary]=\"!actions.tone || actions.tone === 'secondary'\"\r\n [disabled]=\"actions.disabled\"\r\n (click)=\"clickAction(actions)\"\r\n >\r\n {{ actions.label }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.acx__summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-bottom:15px}.block{border:1px solid var(--ac-border-soft);border-radius:5px;padding:12px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{font-weight:800;color:var(--ac-text);margin-bottom:8px;font-size:13px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;gap:6px;padding:8px;background:var(--ac-surface-2);border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;border-radius:5px;border:1px solid transparent;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-badge-neutral-fg);display:inline-flex;align-items:center;gap:8px;height:100%}.tab:hover{background:#f3f4f6}.tab--active{background:var(--ac-surface);border-color:var(--ac-border);color:var(--ac-text);box-shadow:0 6px 18px #11182714}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}\n"] });
120
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CardTabsBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
121
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: CardTabsBarComponent, isStandalone: true, selector: "ac-card-tabs-bar", inputs: { tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: true, transformFunction: null }, activeTabId: { classPropertyName: "activeTabId", publicName: "activeTabId", isSignal: true, isRequired: true, transformFunction: null }, badgeClass: { classPropertyName: "badgeClass", publicName: "badgeClass", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { tabSelected: "tabSelected", tabAction: "tabAction" }, ngImport: i0, template: "@let tabList = tabs();\r\n@let currentId = activeTabId();\r\n@let current = activeTab();\r\n\r\n<div class=\"tabs__bar\">\r\n @for (tab of tabList; track tab.id) {\r\n <div class=\"tab\" [class.tab--active]=\"currentId === tab.id\" (click)=\"selectTab(tab.id)\">\r\n <span>{{ tab.label }}</span>\r\n @if (tab.pill) {\r\n <span class=\"pill\" [class]=\"badgeClass()(tab.pill.tone)\">\r\n {{ tab.pill.label }}\r\n </span>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"tabs__spacer\"></div>\r\n\r\n @if (current?.actions?.length) {\r\n <div class=\"tabs__actions\">\r\n @for (actions of current?.actions ?? []; track actions.id) {\r\n <button\r\n type=\"button\"\r\n class=\"btn btn--sm\"\r\n [class.btn--primary]=\"actions.tone === 'primary'\"\r\n [class.btn--danger]=\"actions.tone === 'danger'\"\r\n [class.btn--secondary]=\"!actions.tone || actions.tone === 'secondary'\"\r\n [disabled]=\"actions.disabled\"\r\n (click)=\"clickAction(actions)\"\r\n >\r\n {{ actions.label }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.ac-content{display:flex;flex-direction:column;gap:16px}.ac-content--inline{flex-direction:row;align-items:flex-start}.ac-content__summary{flex:0 0 320px}.ac-content--inline .ac-content__main{flex:1}.acx__summary{display:grid;gap:14px;padding-bottom:15px;width:100%}.summary{flex:1}.block{border:1px solid var(--ac-border-soft);border-radius:5px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{background:var(--ac-surface-2);position:sticky;top:0;z-index:10;font-weight:800;color:var(--ac-text);font-size:13px;padding:12px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 12px;border:1px solid var(--ac-border-block)}.block__row:last-child{border-bottom:0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{flex:2;border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-tab);display:inline-flex;align-items:center;gap:8px;height:100%;border:none;border-bottom:2 solid transparent}.tab--active{color:var(--ac-tab-active);border:none;border-bottom:2px solid var(--ac-tab-active)}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}.scrollbar-y{overflow-y:auto}\n"] });
114
122
  }
115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CardTabsBarComponent, decorators: [{
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CardTabsBarComponent, decorators: [{
116
124
  type: Component,
117
- args: [{ selector: 'ac-card-tabs-bar', imports: [], template: "@let tabList = tabs();\r\n@let currentId = activeTabId();\r\n@let current = activeTab();\r\n\r\n<div class=\"tabs__bar\">\r\n @for (tab of tabList; track tab.id) {\r\n <button\r\n type=\"button\"\r\n class=\"tab\"\r\n [class.tab--active]=\"currentId === tab.id\"\r\n (click)=\"selectTab(tab.id)\"\r\n >\r\n <span>{{ tab.label }}</span>\r\n @if (tab.pill) {\r\n <span class=\"pill\" [class]=\"badgeClass()(tab.pill.tone)\">\r\n {{ tab.pill.label }}\r\n </span>\r\n }\r\n </button>\r\n }\r\n\r\n <div class=\"tabs__spacer\"></div>\r\n\r\n @if (current?.actions?.length) {\r\n <div class=\"tabs__actions\">\r\n @for (actions of current?.actions ?? []; track actions.id) {\r\n <button\r\n type=\"button\"\r\n class=\"btn btn--sm\"\r\n [class.btn--primary]=\"actions.tone === 'primary'\"\r\n [class.btn--danger]=\"actions.tone === 'danger'\"\r\n [class.btn--secondary]=\"!actions.tone || actions.tone === 'secondary'\"\r\n [disabled]=\"actions.disabled\"\r\n (click)=\"clickAction(actions)\"\r\n >\r\n {{ actions.label }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.acx__summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-bottom:15px}.block{border:1px solid var(--ac-border-soft);border-radius:5px;padding:12px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{font-weight:800;color:var(--ac-text);margin-bottom:8px;font-size:13px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;gap:6px;padding:8px;background:var(--ac-surface-2);border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;border-radius:5px;border:1px solid transparent;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-badge-neutral-fg);display:inline-flex;align-items:center;gap:8px;height:100%}.tab:hover{background:#f3f4f6}.tab--active{background:var(--ac-surface);border-color:var(--ac-border);color:var(--ac-text);box-shadow:0 6px 18px #11182714}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}\n"] }]
125
+ args: [{ selector: 'ac-card-tabs-bar', imports: [], template: "@let tabList = tabs();\r\n@let currentId = activeTabId();\r\n@let current = activeTab();\r\n\r\n<div class=\"tabs__bar\">\r\n @for (tab of tabList; track tab.id) {\r\n <div class=\"tab\" [class.tab--active]=\"currentId === tab.id\" (click)=\"selectTab(tab.id)\">\r\n <span>{{ tab.label }}</span>\r\n @if (tab.pill) {\r\n <span class=\"pill\" [class]=\"badgeClass()(tab.pill.tone)\">\r\n {{ tab.pill.label }}\r\n </span>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"tabs__spacer\"></div>\r\n\r\n @if (current?.actions?.length) {\r\n <div class=\"tabs__actions\">\r\n @for (actions of current?.actions ?? []; track actions.id) {\r\n <button\r\n type=\"button\"\r\n class=\"btn btn--sm\"\r\n [class.btn--primary]=\"actions.tone === 'primary'\"\r\n [class.btn--danger]=\"actions.tone === 'danger'\"\r\n [class.btn--secondary]=\"!actions.tone || actions.tone === 'secondary'\"\r\n [disabled]=\"actions.disabled\"\r\n (click)=\"clickAction(actions)\"\r\n >\r\n {{ actions.label }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.ac-content{display:flex;flex-direction:column;gap:16px}.ac-content--inline{flex-direction:row;align-items:flex-start}.ac-content__summary{flex:0 0 320px}.ac-content--inline .ac-content__main{flex:1}.acx__summary{display:grid;gap:14px;padding-bottom:15px;width:100%}.summary{flex:1}.block{border:1px solid var(--ac-border-soft);border-radius:5px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{background:var(--ac-surface-2);position:sticky;top:0;z-index:10;font-weight:800;color:var(--ac-text);font-size:13px;padding:12px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 12px;border:1px solid var(--ac-border-block)}.block__row:last-child{border-bottom:0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{flex:2;border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-tab);display:inline-flex;align-items:center;gap:8px;height:100%;border:none;border-bottom:2 solid transparent}.tab--active{color:var(--ac-tab-active);border:none;border-bottom:2px solid var(--ac-tab-active)}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}.scrollbar-y{overflow-y:auto}\n"] }]
118
126
  }], propDecorators: { tabs: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabs", required: true }] }], activeTabId: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeTabId", required: true }] }], badgeClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "badgeClass", required: true }] }], tabSelected: [{ type: i0.Output, args: ["tabSelected"] }], tabAction: [{ type: i0.Output, args: ["tabAction"] }] } });
119
127
 
120
128
  class AdvancedCardContentComponent {
121
- viewModel = input.required(...(ngDevMode ? [{ debugName: "viewModel" }] : []));
122
- badgeClass = input.required(...(ngDevMode ? [{ debugName: "badgeClass" }] : []));
129
+ viewModel = input.required(...(ngDevMode ? [{ debugName: "viewModel" }] : /* istanbul ignore next */ []));
130
+ badgeClass = input.required(...(ngDevMode ? [{ debugName: "badgeClass" }] : /* istanbul ignore next */ []));
123
131
  tabSelected = output();
124
132
  tabAction = output();
125
133
  onSelect(id) {
@@ -128,20 +136,20 @@ class AdvancedCardContentComponent {
128
136
  onAction(a) {
129
137
  this.tabAction.emit(a);
130
138
  }
131
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AdvancedCardContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
132
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: AdvancedCardContentComponent, isStandalone: true, selector: "ac-advanced-card-content", inputs: { viewModel: { classPropertyName: "viewModel", publicName: "viewModel", isSignal: true, isRequired: true, transformFunction: null }, badgeClass: { classPropertyName: "badgeClass", publicName: "badgeClass", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { tabSelected: "tabSelected", tabAction: "tabAction" }, ngImport: i0, template: "@let vm = viewModel();\r\n\r\n<ac-card-summary [blocks]=\"vm.summaryBlocks\" />\r\n\r\n@if (vm.tabs.length) {\r\n <div class=\"tabs\">\r\n <ac-card-tabs-bar\r\n [tabs]=\"vm.tabs\"\r\n [activeTabId]=\"vm.activeTabId\"\r\n [badgeClass]=\"badgeClass()\"\r\n (tabSelected)=\"onSelect($event)\"\r\n (tabAction)=\"onAction($event)\"\r\n />\r\n\r\n <ac-card-tab-content\r\n [activeTab]=\"vm.activeTab\"\r\n [cardId]=\"vm.cardId\"\r\n [templateRef]=\"vm.templateRef\"\r\n />\r\n </div>\r\n} @else {\r\n <div class=\"acx__content\">\r\n <ng-content></ng-content>\r\n </div>\r\n}\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.acx__summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-bottom:15px}.block{border:1px solid var(--ac-border-soft);border-radius:5px;padding:12px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{font-weight:800;color:var(--ac-text);margin-bottom:8px;font-size:13px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;gap:6px;padding:8px;background:var(--ac-surface-2);border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;border-radius:5px;border:1px solid transparent;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-badge-neutral-fg);display:inline-flex;align-items:center;gap:8px;height:100%}.tab:hover{background:#f3f4f6}.tab--active{background:var(--ac-surface);border-color:var(--ac-border);color:var(--ac-text);box-shadow:0 6px 18px #11182714}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}\n"], dependencies: [{ kind: "component", type: CardSummaryComponent, selector: "ac-card-summary", inputs: ["blocks"] }, { kind: "component", type: CardTabsBarComponent, selector: "ac-card-tabs-bar", inputs: ["tabs", "activeTabId", "badgeClass"], outputs: ["tabSelected", "tabAction"] }, { kind: "component", type: CardTabContentComponent, selector: "ac-card-tab-content", inputs: ["activeTab", "cardId", "templateRef"] }] });
139
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: AdvancedCardContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
140
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: AdvancedCardContentComponent, isStandalone: true, selector: "ac-advanced-card-content", inputs: { viewModel: { classPropertyName: "viewModel", publicName: "viewModel", isSignal: true, isRequired: true, transformFunction: null }, badgeClass: { classPropertyName: "badgeClass", publicName: "badgeClass", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { tabSelected: "tabSelected", tabAction: "tabAction" }, ngImport: i0, template: "@let vm = viewModel();\r\n\r\n<div class=\"ac-content\" [class.ac-content--inline]=\"vm.layout === 'inline'\">\r\n <div class=\"summary\">\r\n <ac-card-summary [blocks]=\"vm.summaryBlocks\" [layout]=\"vm.layout\" />\r\n </div>\r\n\r\n @if (vm.tabs.length) {\r\n <div class=\"tabs\">\r\n <ac-card-tabs-bar\r\n [tabs]=\"vm.tabs\"\r\n [activeTabId]=\"vm.activeTabId\"\r\n [badgeClass]=\"badgeClass()\"\r\n (tabSelected)=\"onSelect($event)\"\r\n (tabAction)=\"onAction($event)\"\r\n />\r\n\r\n <ac-card-tab-content\r\n [activeTab]=\"vm.activeTab\"\r\n [cardId]=\"vm.cardId\"\r\n [templateRef]=\"vm.templateRef\"\r\n />\r\n </div>\r\n } @else {\r\n <div class=\"acx__content\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.ac-content{display:flex;flex-direction:column;gap:16px}.ac-content--inline{flex-direction:row;align-items:flex-start}.ac-content__summary{flex:0 0 320px}.ac-content--inline .ac-content__main{flex:1}.acx__summary{display:grid;gap:14px;padding-bottom:15px;width:100%}.summary{flex:1}.block{border:1px solid var(--ac-border-soft);border-radius:5px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{background:var(--ac-surface-2);position:sticky;top:0;z-index:10;font-weight:800;color:var(--ac-text);font-size:13px;padding:12px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 12px;border:1px solid var(--ac-border-block)}.block__row:last-child{border-bottom:0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{flex:2;border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-tab);display:inline-flex;align-items:center;gap:8px;height:100%;border:none;border-bottom:2 solid transparent}.tab--active{color:var(--ac-tab-active);border:none;border-bottom:2px solid var(--ac-tab-active)}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}.scrollbar-y{overflow-y:auto}\n"], dependencies: [{ kind: "component", type: CardSummaryComponent, selector: "ac-card-summary", inputs: ["blocks", "layout"] }, { kind: "component", type: CardTabsBarComponent, selector: "ac-card-tabs-bar", inputs: ["tabs", "activeTabId", "badgeClass"], outputs: ["tabSelected", "tabAction"] }, { kind: "component", type: CardTabContentComponent, selector: "ac-card-tab-content", inputs: ["activeTab", "cardId", "templateRef"] }] });
133
141
  }
134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AdvancedCardContentComponent, decorators: [{
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: AdvancedCardContentComponent, decorators: [{
135
143
  type: Component,
136
- args: [{ selector: 'ac-advanced-card-content', imports: [CardSummaryComponent, CardTabsBarComponent, CardTabContentComponent], template: "@let vm = viewModel();\r\n\r\n<ac-card-summary [blocks]=\"vm.summaryBlocks\" />\r\n\r\n@if (vm.tabs.length) {\r\n <div class=\"tabs\">\r\n <ac-card-tabs-bar\r\n [tabs]=\"vm.tabs\"\r\n [activeTabId]=\"vm.activeTabId\"\r\n [badgeClass]=\"badgeClass()\"\r\n (tabSelected)=\"onSelect($event)\"\r\n (tabAction)=\"onAction($event)\"\r\n />\r\n\r\n <ac-card-tab-content\r\n [activeTab]=\"vm.activeTab\"\r\n [cardId]=\"vm.cardId\"\r\n [templateRef]=\"vm.templateRef\"\r\n />\r\n </div>\r\n} @else {\r\n <div class=\"acx__content\">\r\n <ng-content></ng-content>\r\n </div>\r\n}\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.acx__summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-bottom:15px}.block{border:1px solid var(--ac-border-soft);border-radius:5px;padding:12px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{font-weight:800;color:var(--ac-text);margin-bottom:8px;font-size:13px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;gap:6px;padding:8px;background:var(--ac-surface-2);border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;border-radius:5px;border:1px solid transparent;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-badge-neutral-fg);display:inline-flex;align-items:center;gap:8px;height:100%}.tab:hover{background:#f3f4f6}.tab--active{background:var(--ac-surface);border-color:var(--ac-border);color:var(--ac-text);box-shadow:0 6px 18px #11182714}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}\n"] }]
144
+ args: [{ selector: 'ac-advanced-card-content', imports: [CardSummaryComponent, CardTabsBarComponent, CardTabContentComponent], template: "@let vm = viewModel();\r\n\r\n<div class=\"ac-content\" [class.ac-content--inline]=\"vm.layout === 'inline'\">\r\n <div class=\"summary\">\r\n <ac-card-summary [blocks]=\"vm.summaryBlocks\" [layout]=\"vm.layout\" />\r\n </div>\r\n\r\n @if (vm.tabs.length) {\r\n <div class=\"tabs\">\r\n <ac-card-tabs-bar\r\n [tabs]=\"vm.tabs\"\r\n [activeTabId]=\"vm.activeTabId\"\r\n [badgeClass]=\"badgeClass()\"\r\n (tabSelected)=\"onSelect($event)\"\r\n (tabAction)=\"onAction($event)\"\r\n />\r\n\r\n <ac-card-tab-content\r\n [activeTab]=\"vm.activeTab\"\r\n [cardId]=\"vm.cardId\"\r\n [templateRef]=\"vm.templateRef\"\r\n />\r\n </div>\r\n } @else {\r\n <div class=\"acx__content\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n</div>\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.ac-content{display:flex;flex-direction:column;gap:16px}.ac-content--inline{flex-direction:row;align-items:flex-start}.ac-content__summary{flex:0 0 320px}.ac-content--inline .ac-content__main{flex:1}.acx__summary{display:grid;gap:14px;padding-bottom:15px;width:100%}.summary{flex:1}.block{border:1px solid var(--ac-border-soft);border-radius:5px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{background:var(--ac-surface-2);position:sticky;top:0;z-index:10;font-weight:800;color:var(--ac-text);font-size:13px;padding:12px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 12px;border:1px solid var(--ac-border-block)}.block__row:last-child{border-bottom:0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{flex:2;border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-tab);display:inline-flex;align-items:center;gap:8px;height:100%;border:none;border-bottom:2 solid transparent}.tab--active{color:var(--ac-tab-active);border:none;border-bottom:2px solid var(--ac-tab-active)}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}.scrollbar-y{overflow-y:auto}\n"] }]
137
145
  }], propDecorators: { viewModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewModel", required: true }] }], badgeClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "badgeClass", required: true }] }], tabSelected: [{ type: i0.Output, args: ["tabSelected"] }], tabAction: [{ type: i0.Output, args: ["tabAction"] }] } });
138
146
 
139
147
  class AdvancedCardOverlayComponent {
140
- config = input.required(...(ngDevMode ? [{ debugName: "config" }] : []));
141
- mode = input.required(...(ngDevMode ? [{ debugName: "mode" }] : []));
142
- closeOnBackdrop = input(true, ...(ngDevMode ? [{ debugName: "closeOnBackdrop" }] : []));
143
- badgeClass = input.required(...(ngDevMode ? [{ debugName: "badgeClass" }] : []));
144
- viewModel = input.required(...(ngDevMode ? [{ debugName: "viewModel" }] : []));
148
+ config = input.required(...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
149
+ mode = input.required(...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
150
+ closeOnBackdrop = input(true, ...(ngDevMode ? [{ debugName: "closeOnBackdrop" }] : /* istanbul ignore next */ []));
151
+ badgeClass = input.required(...(ngDevMode ? [{ debugName: "badgeClass" }] : /* istanbul ignore next */ []));
152
+ viewModel = input.required(...(ngDevMode ? [{ debugName: "viewModel" }] : /* istanbul ignore next */ []));
145
153
  actionClick = output();
146
154
  close = output();
147
155
  tabSelected = output();
@@ -153,20 +161,20 @@ class AdvancedCardOverlayComponent {
153
161
  onAction(a) {
154
162
  this.actionClick.emit(a);
155
163
  }
156
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AdvancedCardOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
157
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.4", type: AdvancedCardOverlayComponent, isStandalone: true, selector: "ac-advanced-card-overlay", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, closeOnBackdrop: { classPropertyName: "closeOnBackdrop", publicName: "closeOnBackdrop", isSignal: true, isRequired: false, transformFunction: null }, badgeClass: { classPropertyName: "badgeClass", publicName: "badgeClass", isSignal: true, isRequired: true, transformFunction: null }, viewModel: { classPropertyName: "viewModel", publicName: "viewModel", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { actionClick: "actionClick", close: "close", tabSelected: "tabSelected", tabAction: "tabAction" }, ngImport: i0, template: "@let isModal = mode() === 'modal';\r\n\r\n<div class=\"overlay\" [class.modal-center]=\"isModal\" (click)=\"onBackdrop()\">\r\n <section\r\n class=\"panel\"\r\n [class.panel--drawer]=\"!isModal\"\r\n [class.panel--modal]=\"isModal\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <ac-card-header\r\n variant=\"panel\"\r\n [title]=\"config().title\"\r\n [badge]=\"config().badge\"\r\n [actions]=\"config().actions\"\r\n [badgeClass]=\"badgeClass()\"\r\n (actionClick)=\"onAction($event)\"\r\n (close)=\"close.emit()\"\r\n />\r\n\r\n <div class=\"panel__body min-croll\">\r\n <ac-advanced-card-content\r\n [viewModel]=\"viewModel()\"\r\n [badgeClass]=\"badgeClass()\"\r\n (tabSelected)=\"tabSelected.emit($event)\"\r\n (tabAction)=\"tabAction.emit($event)\"\r\n >\r\n <ng-content></ng-content>\r\n </ac-advanced-card-content>\r\n </div>\r\n </section>\r\n</div>\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.acx__summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-bottom:15px}.block{border:1px solid var(--ac-border-soft);border-radius:5px;padding:12px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{font-weight:800;color:var(--ac-text);margin-bottom:8px;font-size:13px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;gap:6px;padding:8px;background:var(--ac-surface-2);border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;border-radius:5px;border:1px solid transparent;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-badge-neutral-fg);display:inline-flex;align-items:center;gap:8px;height:100%}.tab:hover{background:#f3f4f6}.tab--active{background:var(--ac-surface);border-color:var(--ac-border);color:var(--ac-text);box-shadow:0 6px 18px #11182714}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}\n"], dependencies: [{ kind: "component", type: CardHeaderComponent, selector: "ac-card-header", inputs: ["variant", "title", "badge", "actions", "sticky", "badgeClass"], outputs: ["actionClick", "close"] }, { kind: "component", type: AdvancedCardContentComponent, selector: "ac-advanced-card-content", inputs: ["viewModel", "badgeClass"], outputs: ["tabSelected", "tabAction"] }] });
164
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: AdvancedCardOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
165
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: AdvancedCardOverlayComponent, isStandalone: true, selector: "ac-advanced-card-overlay", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, closeOnBackdrop: { classPropertyName: "closeOnBackdrop", publicName: "closeOnBackdrop", isSignal: true, isRequired: false, transformFunction: null }, badgeClass: { classPropertyName: "badgeClass", publicName: "badgeClass", isSignal: true, isRequired: true, transformFunction: null }, viewModel: { classPropertyName: "viewModel", publicName: "viewModel", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { actionClick: "actionClick", close: "close", tabSelected: "tabSelected", tabAction: "tabAction" }, ngImport: i0, template: "@let isModal = mode() === 'modal';\r\n\r\n<div class=\"overlay\" [class.modal-center]=\"isModal\" (click)=\"onBackdrop()\">\r\n <section\r\n class=\"panel\"\r\n [class.panel--drawer]=\"!isModal\"\r\n [class.panel--modal]=\"isModal\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <ac-card-header\r\n variant=\"panel\"\r\n [title]=\"config().title\"\r\n [badge]=\"config().badge\"\r\n [actions]=\"config().actions\"\r\n [badgeClass]=\"badgeClass()\"\r\n (actionClick)=\"onAction($event)\"\r\n (close)=\"close.emit()\"\r\n />\r\n\r\n <div class=\"panel__body min-croll\">\r\n <ac-advanced-card-content\r\n [viewModel]=\"viewModel()\"\r\n [badgeClass]=\"badgeClass()\"\r\n (tabSelected)=\"tabSelected.emit($event)\"\r\n (tabAction)=\"tabAction.emit($event)\"\r\n >\r\n <ng-content></ng-content>\r\n </ac-advanced-card-content>\r\n </div>\r\n </section>\r\n</div>\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.ac-content{display:flex;flex-direction:column;gap:16px}.ac-content--inline{flex-direction:row;align-items:flex-start}.ac-content__summary{flex:0 0 320px}.ac-content--inline .ac-content__main{flex:1}.acx__summary{display:grid;gap:14px;padding-bottom:15px;width:100%}.summary{flex:1}.block{border:1px solid var(--ac-border-soft);border-radius:5px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{background:var(--ac-surface-2);position:sticky;top:0;z-index:10;font-weight:800;color:var(--ac-text);font-size:13px;padding:12px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 12px;border:1px solid var(--ac-border-block)}.block__row:last-child{border-bottom:0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{flex:2;border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-tab);display:inline-flex;align-items:center;gap:8px;height:100%;border:none;border-bottom:2 solid transparent}.tab--active{color:var(--ac-tab-active);border:none;border-bottom:2px solid var(--ac-tab-active)}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}.scrollbar-y{overflow-y:auto}\n"], dependencies: [{ kind: "component", type: CardHeaderComponent, selector: "ac-card-header", inputs: ["variant", "title", "badge", "actions", "sticky", "badgeClass"], outputs: ["actionClick", "close"] }, { kind: "component", type: AdvancedCardContentComponent, selector: "ac-advanced-card-content", inputs: ["viewModel", "badgeClass"], outputs: ["tabSelected", "tabAction"] }] });
158
166
  }
159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AdvancedCardOverlayComponent, decorators: [{
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: AdvancedCardOverlayComponent, decorators: [{
160
168
  type: Component,
161
- args: [{ selector: 'ac-advanced-card-overlay', imports: [CardHeaderComponent, AdvancedCardContentComponent], template: "@let isModal = mode() === 'modal';\r\n\r\n<div class=\"overlay\" [class.modal-center]=\"isModal\" (click)=\"onBackdrop()\">\r\n <section\r\n class=\"panel\"\r\n [class.panel--drawer]=\"!isModal\"\r\n [class.panel--modal]=\"isModal\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <ac-card-header\r\n variant=\"panel\"\r\n [title]=\"config().title\"\r\n [badge]=\"config().badge\"\r\n [actions]=\"config().actions\"\r\n [badgeClass]=\"badgeClass()\"\r\n (actionClick)=\"onAction($event)\"\r\n (close)=\"close.emit()\"\r\n />\r\n\r\n <div class=\"panel__body min-croll\">\r\n <ac-advanced-card-content\r\n [viewModel]=\"viewModel()\"\r\n [badgeClass]=\"badgeClass()\"\r\n (tabSelected)=\"tabSelected.emit($event)\"\r\n (tabAction)=\"tabAction.emit($event)\"\r\n >\r\n <ng-content></ng-content>\r\n </ac-advanced-card-content>\r\n </div>\r\n </section>\r\n</div>\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.acx__summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-bottom:15px}.block{border:1px solid var(--ac-border-soft);border-radius:5px;padding:12px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{font-weight:800;color:var(--ac-text);margin-bottom:8px;font-size:13px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;gap:6px;padding:8px;background:var(--ac-surface-2);border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;border-radius:5px;border:1px solid transparent;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-badge-neutral-fg);display:inline-flex;align-items:center;gap:8px;height:100%}.tab:hover{background:#f3f4f6}.tab--active{background:var(--ac-surface);border-color:var(--ac-border);color:var(--ac-text);box-shadow:0 6px 18px #11182714}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}\n"] }]
169
+ args: [{ selector: 'ac-advanced-card-overlay', imports: [CardHeaderComponent, AdvancedCardContentComponent], template: "@let isModal = mode() === 'modal';\r\n\r\n<div class=\"overlay\" [class.modal-center]=\"isModal\" (click)=\"onBackdrop()\">\r\n <section\r\n class=\"panel\"\r\n [class.panel--drawer]=\"!isModal\"\r\n [class.panel--modal]=\"isModal\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n <ac-card-header\r\n variant=\"panel\"\r\n [title]=\"config().title\"\r\n [badge]=\"config().badge\"\r\n [actions]=\"config().actions\"\r\n [badgeClass]=\"badgeClass()\"\r\n (actionClick)=\"onAction($event)\"\r\n (close)=\"close.emit()\"\r\n />\r\n\r\n <div class=\"panel__body min-croll\">\r\n <ac-advanced-card-content\r\n [viewModel]=\"viewModel()\"\r\n [badgeClass]=\"badgeClass()\"\r\n (tabSelected)=\"tabSelected.emit($event)\"\r\n (tabAction)=\"tabAction.emit($event)\"\r\n >\r\n <ng-content></ng-content>\r\n </ac-advanced-card-content>\r\n </div>\r\n </section>\r\n</div>\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.ac-content{display:flex;flex-direction:column;gap:16px}.ac-content--inline{flex-direction:row;align-items:flex-start}.ac-content__summary{flex:0 0 320px}.ac-content--inline .ac-content__main{flex:1}.acx__summary{display:grid;gap:14px;padding-bottom:15px;width:100%}.summary{flex:1}.block{border:1px solid var(--ac-border-soft);border-radius:5px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{background:var(--ac-surface-2);position:sticky;top:0;z-index:10;font-weight:800;color:var(--ac-text);font-size:13px;padding:12px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 12px;border:1px solid var(--ac-border-block)}.block__row:last-child{border-bottom:0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{flex:2;border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-tab);display:inline-flex;align-items:center;gap:8px;height:100%;border:none;border-bottom:2 solid transparent}.tab--active{color:var(--ac-tab-active);border:none;border-bottom:2px solid var(--ac-tab-active)}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}.scrollbar-y{overflow-y:auto}\n"] }]
162
170
  }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: true }] }], closeOnBackdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnBackdrop", required: false }] }], badgeClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "badgeClass", required: true }] }], viewModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewModel", required: true }] }], actionClick: [{ type: i0.Output, args: ["actionClick"] }], close: [{ type: i0.Output, args: ["close"] }], tabSelected: [{ type: i0.Output, args: ["tabSelected"] }], tabAction: [{ type: i0.Output, args: ["tabAction"] }] } });
163
171
 
164
172
  class AdvancedCardInlineComponent {
165
- config = input.required(...(ngDevMode ? [{ debugName: "config" }] : []));
166
- stickyHeader = input(false, ...(ngDevMode ? [{ debugName: "stickyHeader" }] : []));
167
- fullWidth = input(false, ...(ngDevMode ? [{ debugName: "fullWidth" }] : []));
168
- badgeClass = input.required(...(ngDevMode ? [{ debugName: "badgeClass" }] : []));
169
- viewModel = input.required(...(ngDevMode ? [{ debugName: "viewModel" }] : []));
173
+ config = input.required(...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
174
+ stickyHeader = input(false, ...(ngDevMode ? [{ debugName: "stickyHeader" }] : /* istanbul ignore next */ []));
175
+ fullWidth = input(false, ...(ngDevMode ? [{ debugName: "fullWidth" }] : /* istanbul ignore next */ []));
176
+ badgeClass = input.required(...(ngDevMode ? [{ debugName: "badgeClass" }] : /* istanbul ignore next */ []));
177
+ viewModel = input.required(...(ngDevMode ? [{ debugName: "viewModel" }] : /* istanbul ignore next */ []));
170
178
  actionClick = output();
171
179
  close = output();
172
180
  onAction(a) {
@@ -174,62 +182,62 @@ class AdvancedCardInlineComponent {
174
182
  }
175
183
  tabSelected = output();
176
184
  tabAction = output();
177
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AdvancedCardInlineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
178
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.4", type: AdvancedCardInlineComponent, isStandalone: true, selector: "ac-advanced-card-inline", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, stickyHeader: { classPropertyName: "stickyHeader", publicName: "stickyHeader", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null }, badgeClass: { classPropertyName: "badgeClass", publicName: "badgeClass", isSignal: true, isRequired: true, transformFunction: null }, viewModel: { classPropertyName: "viewModel", publicName: "viewModel", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { actionClick: "actionClick", close: "close", tabSelected: "tabSelected", tabAction: "tabAction" }, ngImport: i0, template: "<section class=\"ac ac--expanded\" [class.ac--full]=\"fullWidth()\">\r\n <ac-card-header\r\n variant=\"inline\"\r\n [title]=\"config().title\"\r\n [badge]=\"config().badge\"\r\n [actions]=\"config().actions\"\r\n [sticky]=\"stickyHeader()\"\r\n [badgeClass]=\"badgeClass()\"\r\n (actionClick)=\"onAction($event)\"\r\n (close)=\"close.emit()\"\r\n />\r\n\r\n <div class=\"acx__body\">\r\n <ac-advanced-card-content\r\n [viewModel]=\"viewModel()\"\r\n [badgeClass]=\"badgeClass()\"\r\n (tabSelected)=\"tabSelected.emit($event)\"\r\n (tabAction)=\"tabAction.emit($event)\"\r\n >\r\n <ng-content></ng-content>\r\n </ac-advanced-card-content>\r\n </div>\r\n</section>\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.acx__summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-bottom:15px}.block{border:1px solid var(--ac-border-soft);border-radius:5px;padding:12px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{font-weight:800;color:var(--ac-text);margin-bottom:8px;font-size:13px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;gap:6px;padding:8px;background:var(--ac-surface-2);border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;border-radius:5px;border:1px solid transparent;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-badge-neutral-fg);display:inline-flex;align-items:center;gap:8px;height:100%}.tab:hover{background:#f3f4f6}.tab--active{background:var(--ac-surface);border-color:var(--ac-border);color:var(--ac-text);box-shadow:0 6px 18px #11182714}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}\n"], dependencies: [{ kind: "component", type: AdvancedCardContentComponent, selector: "ac-advanced-card-content", inputs: ["viewModel", "badgeClass"], outputs: ["tabSelected", "tabAction"] }, { kind: "component", type: CardHeaderComponent, selector: "ac-card-header", inputs: ["variant", "title", "badge", "actions", "sticky", "badgeClass"], outputs: ["actionClick", "close"] }] });
185
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: AdvancedCardInlineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
186
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: AdvancedCardInlineComponent, isStandalone: true, selector: "ac-advanced-card-inline", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, stickyHeader: { classPropertyName: "stickyHeader", publicName: "stickyHeader", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null }, badgeClass: { classPropertyName: "badgeClass", publicName: "badgeClass", isSignal: true, isRequired: true, transformFunction: null }, viewModel: { classPropertyName: "viewModel", publicName: "viewModel", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { actionClick: "actionClick", close: "close", tabSelected: "tabSelected", tabAction: "tabAction" }, ngImport: i0, template: "<section class=\"ac ac--expanded\" [class.ac--full]=\"fullWidth()\">\r\n <ac-card-header\r\n variant=\"inline\"\r\n [title]=\"config().title\"\r\n [badge]=\"config().badge\"\r\n [actions]=\"config().actions\"\r\n [sticky]=\"stickyHeader()\"\r\n [badgeClass]=\"badgeClass()\"\r\n (actionClick)=\"onAction($event)\"\r\n (close)=\"close.emit()\"\r\n />\r\n\r\n <div class=\"acx__body\">\r\n <ac-advanced-card-content\r\n [viewModel]=\"viewModel()\"\r\n [badgeClass]=\"badgeClass()\"\r\n (tabSelected)=\"tabSelected.emit($event)\"\r\n (tabAction)=\"tabAction.emit($event)\"\r\n >\r\n <ng-content></ng-content>\r\n </ac-advanced-card-content>\r\n </div>\r\n</section>\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.ac-content{display:flex;flex-direction:column;gap:16px}.ac-content--inline{flex-direction:row;align-items:flex-start}.ac-content__summary{flex:0 0 320px}.ac-content--inline .ac-content__main{flex:1}.acx__summary{display:grid;gap:14px;padding-bottom:15px;width:100%}.summary{flex:1}.block{border:1px solid var(--ac-border-soft);border-radius:5px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{background:var(--ac-surface-2);position:sticky;top:0;z-index:10;font-weight:800;color:var(--ac-text);font-size:13px;padding:12px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 12px;border:1px solid var(--ac-border-block)}.block__row:last-child{border-bottom:0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{flex:2;border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-tab);display:inline-flex;align-items:center;gap:8px;height:100%;border:none;border-bottom:2 solid transparent}.tab--active{color:var(--ac-tab-active);border:none;border-bottom:2px solid var(--ac-tab-active)}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}.scrollbar-y{overflow-y:auto}\n"], dependencies: [{ kind: "component", type: AdvancedCardContentComponent, selector: "ac-advanced-card-content", inputs: ["viewModel", "badgeClass"], outputs: ["tabSelected", "tabAction"] }, { kind: "component", type: CardHeaderComponent, selector: "ac-card-header", inputs: ["variant", "title", "badge", "actions", "sticky", "badgeClass"], outputs: ["actionClick", "close"] }] });
179
187
  }
180
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AdvancedCardInlineComponent, decorators: [{
188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: AdvancedCardInlineComponent, decorators: [{
181
189
  type: Component,
182
- args: [{ selector: 'ac-advanced-card-inline', imports: [AdvancedCardContentComponent, CardHeaderComponent], template: "<section class=\"ac ac--expanded\" [class.ac--full]=\"fullWidth()\">\r\n <ac-card-header\r\n variant=\"inline\"\r\n [title]=\"config().title\"\r\n [badge]=\"config().badge\"\r\n [actions]=\"config().actions\"\r\n [sticky]=\"stickyHeader()\"\r\n [badgeClass]=\"badgeClass()\"\r\n (actionClick)=\"onAction($event)\"\r\n (close)=\"close.emit()\"\r\n />\r\n\r\n <div class=\"acx__body\">\r\n <ac-advanced-card-content\r\n [viewModel]=\"viewModel()\"\r\n [badgeClass]=\"badgeClass()\"\r\n (tabSelected)=\"tabSelected.emit($event)\"\r\n (tabAction)=\"tabAction.emit($event)\"\r\n >\r\n <ng-content></ng-content>\r\n </ac-advanced-card-content>\r\n </div>\r\n</section>\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.acx__summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-bottom:15px}.block{border:1px solid var(--ac-border-soft);border-radius:5px;padding:12px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{font-weight:800;color:var(--ac-text);margin-bottom:8px;font-size:13px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;gap:6px;padding:8px;background:var(--ac-surface-2);border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;border-radius:5px;border:1px solid transparent;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-badge-neutral-fg);display:inline-flex;align-items:center;gap:8px;height:100%}.tab:hover{background:#f3f4f6}.tab--active{background:var(--ac-surface);border-color:var(--ac-border);color:var(--ac-text);box-shadow:0 6px 18px #11182714}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}\n"] }]
190
+ args: [{ selector: 'ac-advanced-card-inline', imports: [AdvancedCardContentComponent, CardHeaderComponent], template: "<section class=\"ac ac--expanded\" [class.ac--full]=\"fullWidth()\">\r\n <ac-card-header\r\n variant=\"inline\"\r\n [title]=\"config().title\"\r\n [badge]=\"config().badge\"\r\n [actions]=\"config().actions\"\r\n [sticky]=\"stickyHeader()\"\r\n [badgeClass]=\"badgeClass()\"\r\n (actionClick)=\"onAction($event)\"\r\n (close)=\"close.emit()\"\r\n />\r\n\r\n <div class=\"acx__body\">\r\n <ac-advanced-card-content\r\n [viewModel]=\"viewModel()\"\r\n [badgeClass]=\"badgeClass()\"\r\n (tabSelected)=\"tabSelected.emit($event)\"\r\n (tabAction)=\"tabAction.emit($event)\"\r\n >\r\n <ng-content></ng-content>\r\n </ac-advanced-card-content>\r\n </div>\r\n</section>\r\n", styles: [":host{display:block}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.ac-content{display:flex;flex-direction:column;gap:16px}.ac-content--inline{flex-direction:row;align-items:flex-start}.ac-content__summary{flex:0 0 320px}.ac-content--inline .ac-content__main{flex:1}.acx__summary{display:grid;gap:14px;padding-bottom:15px;width:100%}.summary{flex:1}.block{border:1px solid var(--ac-border-soft);border-radius:5px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{background:var(--ac-surface-2);position:sticky;top:0;z-index:10;font-weight:800;color:var(--ac-text);font-size:13px;padding:12px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 12px;border:1px solid var(--ac-border-block)}.block__row:last-child{border-bottom:0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{flex:2;border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-tab);display:inline-flex;align-items:center;gap:8px;height:100%;border:none;border-bottom:2 solid transparent}.tab--active{color:var(--ac-tab-active);border:none;border-bottom:2px solid var(--ac-tab-active)}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}.scrollbar-y{overflow-y:auto}\n"] }]
183
191
  }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], stickyHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "stickyHeader", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], badgeClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "badgeClass", required: true }] }], viewModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewModel", required: true }] }], actionClick: [{ type: i0.Output, args: ["actionClick"] }], close: [{ type: i0.Output, args: ["close"] }], tabSelected: [{ type: i0.Output, args: ["tabSelected"] }], tabAction: [{ type: i0.Output, args: ["tabAction"] }] } });
184
192
 
185
193
  class AdvancedCard {
186
- config = input.required(...(ngDevMode ? [{ debugName: "config" }] : []));
187
- fullWidthOnExpand = input(true, ...(ngDevMode ? [{ debugName: "fullWidthOnExpand" }] : []));
188
- stickyHeader = input(true, ...(ngDevMode ? [{ debugName: "stickyHeader" }] : []));
189
- closeOnEsc = input(true, ...(ngDevMode ? [{ debugName: "closeOnEsc" }] : []));
194
+ config = input.required(...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
195
+ fullWidthOnExpand = input(true, ...(ngDevMode ? [{ debugName: "fullWidthOnExpand" }] : /* istanbul ignore next */ []));
196
+ stickyHeader = input(true, ...(ngDevMode ? [{ debugName: "stickyHeader" }] : /* istanbul ignore next */ []));
197
+ closeOnEsc = input(true, ...(ngDevMode ? [{ debugName: "closeOnEsc" }] : /* istanbul ignore next */ []));
190
198
  // ===== Outputs
191
199
  expandedChange = output();
192
200
  action = output();
193
201
  tabChanged = output();
194
202
  tabAction = output();
195
203
  // ===== Projected templates (via directive)
196
- projectedTemplates = contentChildren(AdvancedCardTemplateDirective, { ...(ngDevMode ? { debugName: "projectedTemplates" } : {}), descendants: true });
204
+ projectedTemplates = contentChildren(AdvancedCardTemplateDirective, { ...(ngDevMode ? { debugName: "projectedTemplates" } : /* istanbul ignore next */ {}), descendants: true });
197
205
  // ===== State
198
- expanded = signal(false, ...(ngDevMode ? [{ debugName: "expanded" }] : []));
199
- activeTabId = signal(null, ...(ngDevMode ? [{ debugName: "activeTabId" }] : []));
206
+ expanded = signal(false, ...(ngDevMode ? [{ debugName: "expanded" }] : /* istanbul ignore next */ []));
207
+ activeTabId = signal(null, ...(ngDevMode ? [{ debugName: "activeTabId" }] : /* istanbul ignore next */ []));
200
208
  // ===== Computeds
201
- cardId = computed(() => this.config().id, ...(ngDevMode ? [{ debugName: "cardId" }] : []));
202
- expandMode = computed(() => this.config().expandMode ?? 'inline', ...(ngDevMode ? [{ debugName: "expandMode" }] : []));
203
- closeOnBackdrop = computed(() => this.config().closeOnBackdrop ?? true, ...(ngDevMode ? [{ debugName: "closeOnBackdrop" }] : []));
204
- isInline = computed(() => this.expandMode() === 'inline', ...(ngDevMode ? [{ debugName: "isInline" }] : []));
205
- isDrawer = computed(() => this.expandMode() === 'drawer', ...(ngDevMode ? [{ debugName: "isDrawer" }] : []));
206
- isModal = computed(() => this.expandMode() === 'modal', ...(ngDevMode ? [{ debugName: "isModal" }] : []));
207
- hasHighlights = computed(() => (this.config().highlights?.length ?? 0) > 0, ...(ngDevMode ? [{ debugName: "hasHighlights" }] : []));
208
- hasSummaryBlocks = computed(() => (this.config().summaryBlocks?.length ?? 0) > 0, ...(ngDevMode ? [{ debugName: "hasSummaryBlocks" }] : []));
209
- tabs = computed(() => this.config().tabs ?? [], ...(ngDevMode ? [{ debugName: "tabs" }] : []));
209
+ cardId = computed(() => this.config().id, ...(ngDevMode ? [{ debugName: "cardId" }] : /* istanbul ignore next */ []));
210
+ expandMode = computed(() => this.config().expandMode ?? 'inline', ...(ngDevMode ? [{ debugName: "expandMode" }] : /* istanbul ignore next */ []));
211
+ closeOnBackdrop = computed(() => this.config().closeOnBackdrop ?? true, ...(ngDevMode ? [{ debugName: "closeOnBackdrop" }] : /* istanbul ignore next */ []));
212
+ isInline = computed(() => this.expandMode() === 'inline', ...(ngDevMode ? [{ debugName: "isInline" }] : /* istanbul ignore next */ []));
213
+ isDrawer = computed(() => this.expandMode() === 'drawer', ...(ngDevMode ? [{ debugName: "isDrawer" }] : /* istanbul ignore next */ []));
214
+ isModal = computed(() => this.expandMode() === 'modal', ...(ngDevMode ? [{ debugName: "isModal" }] : /* istanbul ignore next */ []));
215
+ hasHighlights = computed(() => (this.config().highlights?.length ?? 0) > 0, ...(ngDevMode ? [{ debugName: "hasHighlights" }] : /* istanbul ignore next */ []));
216
+ hasSummaryBlocks = computed(() => (this.config().summaryBlocks?.length ?? 0) > 0, ...(ngDevMode ? [{ debugName: "hasSummaryBlocks" }] : /* istanbul ignore next */ []));
217
+ tabs = computed(() => this.config().tabs ?? [], ...(ngDevMode ? [{ debugName: "tabs" }] : /* istanbul ignore next */ []));
210
218
  activeTab = computed(() => {
211
219
  const id = this.activeTabId();
212
220
  if (!id)
213
221
  return null;
214
222
  return this.tabs().find((t) => t.id === id) ?? null;
215
- }, ...(ngDevMode ? [{ debugName: "activeTab" }] : []));
223
+ }, ...(ngDevMode ? [{ debugName: "activeTab" }] : /* istanbul ignore next */ []));
216
224
  templateMap = computed(() => {
217
225
  const map = new Map();
218
226
  for (const dir of this.projectedTemplates()) {
219
227
  map.set(dir.templateId(), dir);
220
228
  }
221
229
  return map;
222
- }, ...(ngDevMode ? [{ debugName: "templateMap" }] : []));
223
- density = computed(() => this.config().density ?? 'comfortable', ...(ngDevMode ? [{ debugName: "density" }] : []));
224
- size = computed(() => this.config().size ?? 'md', ...(ngDevMode ? [{ debugName: "size" }] : []));
230
+ }, ...(ngDevMode ? [{ debugName: "templateMap" }] : /* istanbul ignore next */ []));
231
+ density = computed(() => this.config().density ?? 'comfortable', ...(ngDevMode ? [{ debugName: "density" }] : /* istanbul ignore next */ []));
232
+ size = computed(() => this.config().size ?? 'md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
225
233
  hostClass = computed(() => {
226
234
  return `ac-host ac-density--${this.density()} ac-size--${this.size()}`;
227
- }, ...(ngDevMode ? [{ debugName: "hostClass" }] : []));
235
+ }, ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
228
236
  activeTemplateRef = computed(() => {
229
237
  const template = this.getActiveTemplate();
230
238
  // tip: puede ser TemplateRef<any>; lo normalizamos
231
239
  return (template?.templateRef ?? null);
232
- }, ...(ngDevMode ? [{ debugName: "activeTemplateRef" }] : []));
240
+ }, ...(ngDevMode ? [{ debugName: "activeTemplateRef" }] : /* istanbul ignore next */ []));
233
241
  contentVm = computed(() => ({
234
242
  cardId: this.cardId(),
235
243
  summaryBlocks: this.config().summaryBlocks,
@@ -237,11 +245,12 @@ class AdvancedCard {
237
245
  activeTabId: this.activeTabId(),
238
246
  activeTab: this.activeTab(),
239
247
  templateRef: this.activeTemplateRef(),
240
- }), ...(ngDevMode ? [{ debugName: "contentVm" }] : []));
248
+ layout: this.config().contentLayout ?? 'stacked',
249
+ }), ...(ngDevMode ? [{ debugName: "contentVm" }] : /* istanbul ignore next */ []));
241
250
  // Effects
242
251
  notifyExpandenChangesEffect = effect(() => {
243
252
  this.expandedChange.emit(this.expanded());
244
- }, ...(ngDevMode ? [{ debugName: "notifyExpandenChangesEffect" }] : []));
253
+ }, ...(ngDevMode ? [{ debugName: "notifyExpandenChangesEffect" }] : /* istanbul ignore next */ []));
245
254
  initiActiveTabEffect = effect(() => {
246
255
  const tabs = this.tabs();
247
256
  if (!tabs.length) {
@@ -255,7 +264,7 @@ class AdvancedCard {
255
264
  const next = preferred && tabs.some((t) => t.id === preferred) ? preferred : (tabs[0]?.id ?? null);
256
265
  this.activeTabId.set(next);
257
266
  }
258
- }, ...(ngDevMode ? [{ debugName: "initiActiveTabEffect" }] : []));
267
+ }, ...(ngDevMode ? [{ debugName: "initiActiveTabEffect" }] : /* istanbul ignore next */ []));
259
268
  // ===== Actions
260
269
  toggleExpand() {
261
270
  this.expanded.update((v) => !v);
@@ -318,14 +327,14 @@ class AdvancedCard {
318
327
  return;
319
328
  this.collapse();
320
329
  }
321
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AdvancedCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
322
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: AdvancedCard, isStandalone: true, selector: "advanced-card", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, fullWidthOnExpand: { classPropertyName: "fullWidthOnExpand", publicName: "fullWidthOnExpand", isSignal: true, isRequired: false, transformFunction: null }, stickyHeader: { classPropertyName: "stickyHeader", publicName: "stickyHeader", isSignal: true, isRequired: false, transformFunction: null }, closeOnEsc: { classPropertyName: "closeOnEsc", publicName: "closeOnEsc", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expandedChange: "expandedChange", action: "action", tabChanged: "tabChanged", tabAction: "tabAction" }, host: { listeners: { "document:keydown": "onKeydown($event)" }, properties: { "class": "hostClass()" } }, queries: [{ propertyName: "projectedTemplates", predicate: AdvancedCardTemplateDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ac__card\">\r\n <lib-card-compact\r\n [configuration]=\"config()\"\r\n [expanded]=\"expanded()\"\r\n [badgeClass]=\"badgeClass.bind(this)\"\r\n (expand)=\"expand()\"\r\n />\r\n\r\n @let mode = expandMode();\r\n\r\n @if (expanded()) {\r\n @if (mode === 'inline') {\r\n <ac-advanced-card-inline\r\n [config]=\"config()\"\r\n [stickyHeader]=\"stickyHeader()\"\r\n [fullWidth]=\"fullWidthOnExpand()\"\r\n [badgeClass]=\"badgeClass.bind(this)\"\r\n [viewModel]=\"contentVm()\"\r\n (actionClick)=\"onActionClick($event)\"\r\n (close)=\"collapse()\"\r\n (tabSelected)=\"selectTab($event)\"\r\n (tabAction)=\"onTabActionClick(activeTab()!, $event)\"\r\n >\r\n <ng-content></ng-content>\r\n </ac-advanced-card-inline>\r\n } @else {\r\n <ac-advanced-card-overlay\r\n [config]=\"config()\"\r\n [mode]=\"mode === 'modal' ? 'modal' : 'drawer'\"\r\n [closeOnBackdrop]=\"closeOnBackdrop()\"\r\n [badgeClass]=\"badgeClass.bind(this)\"\r\n [viewModel]=\"contentVm()\"\r\n (actionClick)=\"onActionClick($event)\"\r\n (close)=\"collapse()\"\r\n (tabSelected)=\"selectTab($event)\"\r\n (tabAction)=\"onTabActionClick(activeTab()!, $event)\"\r\n >\r\n <ng-content></ng-content>\r\n </ac-advanced-card-overlay>\r\n }\r\n }\r\n</div>\r\n\r\n<div class=\"ac__projected-templates\" aria-hidden=\"true\">\r\n <ng-content select=\"ng-template[advancedCardTemplate]\"></ng-content>\r\n</div>\r\n", styles: [":host.ac-host{--ac-surface: #ffffff;--ac-surface-2: #fafafa;--ac-border: #e5e7eb;--ac-border-soft: #eef2f7;--ac-shadow: 0 8px 22px rgba(17, 24, 39, .06);--ac-text: #111827;--ac-muted: #6b7280;--ac-radius: 14px;--ac-radius-sm: 10px;--ac-gap: 16px;--ac-title-size: 18px;--ac-subtitle-size: 13px;--ac-pad-card: 16px;--ac-pad-header: 14px 18px;--ac-pad-body: 18px;--ac-btn-radius: 10px;--ac-btn-pad: 8px 12px;--ac-btn-font: 700;--ac-primary: #1d4ed8;--ac-danger: #dc2626;--ac-badge-success-bg: #e6f9f1;--ac-badge-success-fg: #0f766e;--ac-badge-warning-bg: #fff7ed;--ac-badge-warning-fg: #b45309;--ac-badge-danger-bg: #fef2f2;--ac-badge-danger-fg: #b91c1c;--ac-badge-primary-bg: #eff6ff;--ac-badge-primary-fg: #1d4ed8;--ac-badge-neutral-bg: #f3f4f6;--ac-badge-neutral-fg: #374151;--ac-overlay: rgba(17, 24, 39, .45);--ac-overlay-blur: 2px;--ac-modal-max: 1200px;--ac-drawer-height: min(85vh, 900px);--ac-modal-height: min(80vh, 880px)}:host.ac-density--compact{--ac-gap: 12px;--ac-pad-card: 12px;--ac-pad-header: 12px 14px;--ac-pad-body: 14px;--ac-subtitle-size: 12px;--ac-btn-pad: 7px 10px}:host.ac-size--sm{--ac-title-size: 16px;--ac-radius: 12px;--ac-modal-max: 1000px}:host.ac-size--lg{--ac-title-size: 20px;--ac-radius: 16px;--ac-modal-max: 1400px}.ac__card{padding:10px;gap:10px}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.acx__summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-bottom:15px}.block{border:1px solid var(--ac-border-soft);border-radius:5px;padding:12px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{font-weight:800;color:var(--ac-text);margin-bottom:8px;font-size:13px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;gap:6px;padding:8px;background:var(--ac-surface-2);border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;border-radius:5px;border:1px solid transparent;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-badge-neutral-fg);display:inline-flex;align-items:center;gap:8px;height:100%}.tab:hover{background:#f3f4f6}.tab--active{background:var(--ac-surface);border-color:var(--ac-border);color:var(--ac-text);box-shadow:0 6px 18px #11182714}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}\n"], dependencies: [{ kind: "component", type: CardCompactComponent, selector: "lib-card-compact", inputs: ["configuration", "expanded", "badgeClass"], outputs: ["expand"] }, { kind: "component", type: AdvancedCardOverlayComponent, selector: "ac-advanced-card-overlay", inputs: ["config", "mode", "closeOnBackdrop", "badgeClass", "viewModel"], outputs: ["actionClick", "close", "tabSelected", "tabAction"] }, { kind: "component", type: AdvancedCardInlineComponent, selector: "ac-advanced-card-inline", inputs: ["config", "stickyHeader", "fullWidth", "badgeClass", "viewModel"], outputs: ["actionClick", "close", "tabSelected", "tabAction"] }] });
330
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: AdvancedCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
331
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: AdvancedCard, isStandalone: true, selector: "advanced-card", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, fullWidthOnExpand: { classPropertyName: "fullWidthOnExpand", publicName: "fullWidthOnExpand", isSignal: true, isRequired: false, transformFunction: null }, stickyHeader: { classPropertyName: "stickyHeader", publicName: "stickyHeader", isSignal: true, isRequired: false, transformFunction: null }, closeOnEsc: { classPropertyName: "closeOnEsc", publicName: "closeOnEsc", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expandedChange: "expandedChange", action: "action", tabChanged: "tabChanged", tabAction: "tabAction" }, host: { listeners: { "document:keydown": "onKeydown($event)" }, properties: { "class": "hostClass()" } }, queries: [{ propertyName: "projectedTemplates", predicate: AdvancedCardTemplateDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"ac__card\">\r\n <lib-card-compact\r\n [configuration]=\"config()\"\r\n [expanded]=\"expanded()\"\r\n [badgeClass]=\"badgeClass.bind(this)\"\r\n (expand)=\"expand()\"\r\n />\r\n\r\n @let mode = expandMode();\r\n\r\n @if (expanded()) {\r\n @if (mode === 'inline') {\r\n <ac-advanced-card-inline\r\n [config]=\"config()\"\r\n [stickyHeader]=\"stickyHeader()\"\r\n [fullWidth]=\"fullWidthOnExpand()\"\r\n [badgeClass]=\"badgeClass.bind(this)\"\r\n [viewModel]=\"contentVm()\"\r\n (actionClick)=\"onActionClick($event)\"\r\n (close)=\"collapse()\"\r\n (tabSelected)=\"selectTab($event)\"\r\n (tabAction)=\"onTabActionClick(activeTab()!, $event)\"\r\n >\r\n <ng-content></ng-content>\r\n </ac-advanced-card-inline>\r\n } @else {\r\n <ac-advanced-card-overlay\r\n [config]=\"config()\"\r\n [mode]=\"mode === 'modal' ? 'modal' : 'drawer'\"\r\n [closeOnBackdrop]=\"closeOnBackdrop()\"\r\n [badgeClass]=\"badgeClass.bind(this)\"\r\n [viewModel]=\"contentVm()\"\r\n (actionClick)=\"onActionClick($event)\"\r\n (close)=\"collapse()\"\r\n (tabSelected)=\"selectTab($event)\"\r\n (tabAction)=\"onTabActionClick(activeTab()!, $event)\"\r\n >\r\n <ng-content></ng-content>\r\n </ac-advanced-card-overlay>\r\n }\r\n }\r\n</div>\r\n\r\n<div class=\"ac__projected-templates\" aria-hidden=\"true\">\r\n <ng-content select=\"ng-template[advancedCardTemplate]\"></ng-content>\r\n</div>\r\n", styles: [":host.ac-host{--ac-surface: #ffffff;--ac-surface-2: #fafafa;--ac-border: #e5e7eb;--ac-border-soft: #eef2f7;--ac-border-block: #f6f6f6;--ac-shadow: 0 8px 22px rgba(17, 24, 39, .06);--ac-text: #111827;--ac-muted: #6b7280;--ac-radius: 14px;--ac-radius-sm: 10px;--ac-gap: 16px;--ac-title-size: 18px;--ac-subtitle-size: 13px;--ac-pad-card: 16px;--ac-pad-header: 14px 18px;--ac-pad-body: 18px;--ac-btn-radius: 10px;--ac-btn-pad: 8px 12px;--ac-btn-font: 700;--ac-primary: #1d4ed8;--ac-danger: #dc2626;--ac-badge-success-bg: #e6f9f1;--ac-badge-success-fg: #0f766e;--ac-badge-warning-bg: #fff7ed;--ac-badge-warning-fg: #b45309;--ac-badge-danger-bg: #fef2f2;--ac-badge-danger-fg: #b91c1c;--ac-badge-primary-bg: #eff6ff;--ac-badge-primary-fg: #1d4ed8;--ac-badge-neutral-bg: #f3f4f6;--ac-badge-neutral-fg: #374151;--ac-tab: #a0a0a8;--ac-tab-active: #0a0a0a;--ac-overlay: rgba(17, 24, 39, .45);--ac-overlay-blur: 2px;--ac-modal-max: 1200px;--ac-drawer-height: min(85vh, 900px);--ac-modal-height: min(80vh, 880px)}:host.ac-density--compact{--ac-gap: 12px;--ac-pad-card: 12px;--ac-pad-header: 12px 14px;--ac-pad-body: 14px;--ac-subtitle-size: 12px;--ac-btn-pad: 7px 10px}:host.ac-size--sm{--ac-title-size: 16px;--ac-radius: 12px;--ac-modal-max: 1000px}:host.ac-size--lg{--ac-title-size: 20px;--ac-radius: 16px;--ac-modal-max: 1400px}.ac__card{padding:10px;gap:10px}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.ac-content{display:flex;flex-direction:column;gap:16px}.ac-content--inline{flex-direction:row;align-items:flex-start}.ac-content__summary{flex:0 0 320px}.ac-content--inline .ac-content__main{flex:1}.acx__summary{display:grid;gap:14px;padding-bottom:15px;width:100%}.summary{flex:1}.block{border:1px solid var(--ac-border-soft);border-radius:5px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{background:var(--ac-surface-2);position:sticky;top:0;z-index:10;font-weight:800;color:var(--ac-text);font-size:13px;padding:12px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 12px;border:1px solid var(--ac-border-block)}.block__row:last-child{border-bottom:0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{flex:2;border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-tab);display:inline-flex;align-items:center;gap:8px;height:100%;border:none;border-bottom:2 solid transparent}.tab--active{color:var(--ac-tab-active);border:none;border-bottom:2px solid var(--ac-tab-active)}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}.scrollbar-y{overflow-y:auto}\n"], dependencies: [{ kind: "component", type: CardCompactComponent, selector: "lib-card-compact", inputs: ["configuration", "expanded", "badgeClass"], outputs: ["expand"] }, { kind: "component", type: AdvancedCardOverlayComponent, selector: "ac-advanced-card-overlay", inputs: ["config", "mode", "closeOnBackdrop", "badgeClass", "viewModel"], outputs: ["actionClick", "close", "tabSelected", "tabAction"] }, { kind: "component", type: AdvancedCardInlineComponent, selector: "ac-advanced-card-inline", inputs: ["config", "stickyHeader", "fullWidth", "badgeClass", "viewModel"], outputs: ["actionClick", "close", "tabSelected", "tabAction"] }] });
323
332
  }
324
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AdvancedCard, decorators: [{
333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: AdvancedCard, decorators: [{
325
334
  type: Component,
326
335
  args: [{ selector: 'advanced-card', imports: [CardCompactComponent, AdvancedCardOverlayComponent, AdvancedCardInlineComponent], host: {
327
336
  '[class]': 'hostClass()',
328
- }, template: "<div class=\"ac__card\">\r\n <lib-card-compact\r\n [configuration]=\"config()\"\r\n [expanded]=\"expanded()\"\r\n [badgeClass]=\"badgeClass.bind(this)\"\r\n (expand)=\"expand()\"\r\n />\r\n\r\n @let mode = expandMode();\r\n\r\n @if (expanded()) {\r\n @if (mode === 'inline') {\r\n <ac-advanced-card-inline\r\n [config]=\"config()\"\r\n [stickyHeader]=\"stickyHeader()\"\r\n [fullWidth]=\"fullWidthOnExpand()\"\r\n [badgeClass]=\"badgeClass.bind(this)\"\r\n [viewModel]=\"contentVm()\"\r\n (actionClick)=\"onActionClick($event)\"\r\n (close)=\"collapse()\"\r\n (tabSelected)=\"selectTab($event)\"\r\n (tabAction)=\"onTabActionClick(activeTab()!, $event)\"\r\n >\r\n <ng-content></ng-content>\r\n </ac-advanced-card-inline>\r\n } @else {\r\n <ac-advanced-card-overlay\r\n [config]=\"config()\"\r\n [mode]=\"mode === 'modal' ? 'modal' : 'drawer'\"\r\n [closeOnBackdrop]=\"closeOnBackdrop()\"\r\n [badgeClass]=\"badgeClass.bind(this)\"\r\n [viewModel]=\"contentVm()\"\r\n (actionClick)=\"onActionClick($event)\"\r\n (close)=\"collapse()\"\r\n (tabSelected)=\"selectTab($event)\"\r\n (tabAction)=\"onTabActionClick(activeTab()!, $event)\"\r\n >\r\n <ng-content></ng-content>\r\n </ac-advanced-card-overlay>\r\n }\r\n }\r\n</div>\r\n\r\n<div class=\"ac__projected-templates\" aria-hidden=\"true\">\r\n <ng-content select=\"ng-template[advancedCardTemplate]\"></ng-content>\r\n</div>\r\n", styles: [":host.ac-host{--ac-surface: #ffffff;--ac-surface-2: #fafafa;--ac-border: #e5e7eb;--ac-border-soft: #eef2f7;--ac-shadow: 0 8px 22px rgba(17, 24, 39, .06);--ac-text: #111827;--ac-muted: #6b7280;--ac-radius: 14px;--ac-radius-sm: 10px;--ac-gap: 16px;--ac-title-size: 18px;--ac-subtitle-size: 13px;--ac-pad-card: 16px;--ac-pad-header: 14px 18px;--ac-pad-body: 18px;--ac-btn-radius: 10px;--ac-btn-pad: 8px 12px;--ac-btn-font: 700;--ac-primary: #1d4ed8;--ac-danger: #dc2626;--ac-badge-success-bg: #e6f9f1;--ac-badge-success-fg: #0f766e;--ac-badge-warning-bg: #fff7ed;--ac-badge-warning-fg: #b45309;--ac-badge-danger-bg: #fef2f2;--ac-badge-danger-fg: #b91c1c;--ac-badge-primary-bg: #eff6ff;--ac-badge-primary-fg: #1d4ed8;--ac-badge-neutral-bg: #f3f4f6;--ac-badge-neutral-fg: #374151;--ac-overlay: rgba(17, 24, 39, .45);--ac-overlay-blur: 2px;--ac-modal-max: 1200px;--ac-drawer-height: min(85vh, 900px);--ac-modal-height: min(80vh, 880px)}:host.ac-density--compact{--ac-gap: 12px;--ac-pad-card: 12px;--ac-pad-header: 12px 14px;--ac-pad-body: 14px;--ac-subtitle-size: 12px;--ac-btn-pad: 7px 10px}:host.ac-size--sm{--ac-title-size: 16px;--ac-radius: 12px;--ac-modal-max: 1000px}:host.ac-size--lg{--ac-title-size: 20px;--ac-radius: 16px;--ac-modal-max: 1400px}.ac__card{padding:10px;gap:10px}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.acx__summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding-bottom:15px}.block{border:1px solid var(--ac-border-soft);border-radius:5px;padding:12px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{font-weight:800;color:var(--ac-text);margin-bottom:8px;font-size:13px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;gap:6px;padding:8px;background:var(--ac-surface-2);border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;border-radius:5px;border:1px solid transparent;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-badge-neutral-fg);display:inline-flex;align-items:center;gap:8px;height:100%}.tab:hover{background:#f3f4f6}.tab--active{background:var(--ac-surface);border-color:var(--ac-border);color:var(--ac-text);box-shadow:0 6px 18px #11182714}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}\n"] }]
337
+ }, template: "<div class=\"ac__card\">\r\n <lib-card-compact\r\n [configuration]=\"config()\"\r\n [expanded]=\"expanded()\"\r\n [badgeClass]=\"badgeClass.bind(this)\"\r\n (expand)=\"expand()\"\r\n />\r\n\r\n @let mode = expandMode();\r\n\r\n @if (expanded()) {\r\n @if (mode === 'inline') {\r\n <ac-advanced-card-inline\r\n [config]=\"config()\"\r\n [stickyHeader]=\"stickyHeader()\"\r\n [fullWidth]=\"fullWidthOnExpand()\"\r\n [badgeClass]=\"badgeClass.bind(this)\"\r\n [viewModel]=\"contentVm()\"\r\n (actionClick)=\"onActionClick($event)\"\r\n (close)=\"collapse()\"\r\n (tabSelected)=\"selectTab($event)\"\r\n (tabAction)=\"onTabActionClick(activeTab()!, $event)\"\r\n >\r\n <ng-content></ng-content>\r\n </ac-advanced-card-inline>\r\n } @else {\r\n <ac-advanced-card-overlay\r\n [config]=\"config()\"\r\n [mode]=\"mode === 'modal' ? 'modal' : 'drawer'\"\r\n [closeOnBackdrop]=\"closeOnBackdrop()\"\r\n [badgeClass]=\"badgeClass.bind(this)\"\r\n [viewModel]=\"contentVm()\"\r\n (actionClick)=\"onActionClick($event)\"\r\n (close)=\"collapse()\"\r\n (tabSelected)=\"selectTab($event)\"\r\n (tabAction)=\"onTabActionClick(activeTab()!, $event)\"\r\n >\r\n <ng-content></ng-content>\r\n </ac-advanced-card-overlay>\r\n }\r\n }\r\n</div>\r\n\r\n<div class=\"ac__projected-templates\" aria-hidden=\"true\">\r\n <ng-content select=\"ng-template[advancedCardTemplate]\"></ng-content>\r\n</div>\r\n", styles: [":host.ac-host{--ac-surface: #ffffff;--ac-surface-2: #fafafa;--ac-border: #e5e7eb;--ac-border-soft: #eef2f7;--ac-border-block: #f6f6f6;--ac-shadow: 0 8px 22px rgba(17, 24, 39, .06);--ac-text: #111827;--ac-muted: #6b7280;--ac-radius: 14px;--ac-radius-sm: 10px;--ac-gap: 16px;--ac-title-size: 18px;--ac-subtitle-size: 13px;--ac-pad-card: 16px;--ac-pad-header: 14px 18px;--ac-pad-body: 18px;--ac-btn-radius: 10px;--ac-btn-pad: 8px 12px;--ac-btn-font: 700;--ac-primary: #1d4ed8;--ac-danger: #dc2626;--ac-badge-success-bg: #e6f9f1;--ac-badge-success-fg: #0f766e;--ac-badge-warning-bg: #fff7ed;--ac-badge-warning-fg: #b45309;--ac-badge-danger-bg: #fef2f2;--ac-badge-danger-fg: #b91c1c;--ac-badge-primary-bg: #eff6ff;--ac-badge-primary-fg: #1d4ed8;--ac-badge-neutral-bg: #f3f4f6;--ac-badge-neutral-fg: #374151;--ac-tab: #a0a0a8;--ac-tab-active: #0a0a0a;--ac-overlay: rgba(17, 24, 39, .45);--ac-overlay-blur: 2px;--ac-modal-max: 1200px;--ac-drawer-height: min(85vh, 900px);--ac-modal-height: min(80vh, 880px)}:host.ac-density--compact{--ac-gap: 12px;--ac-pad-card: 12px;--ac-pad-header: 12px 14px;--ac-pad-body: 14px;--ac-subtitle-size: 12px;--ac-btn-pad: 7px 10px}:host.ac-size--sm{--ac-title-size: 16px;--ac-radius: 12px;--ac-modal-max: 1000px}:host.ac-size--lg{--ac-title-size: 20px;--ac-radius: 16px;--ac-modal-max: 1400px}.ac__card{padding:10px;gap:10px}\n", ":host{display:block}.ac{border:1px solid var(--ac-border);border-radius:var(--ac-radius-sm);background:var(--ac-surface);box-shadow:var(--ac-shadow)}.ac--hidden{display:none}.ac--compact{padding:var(--ac-pad-card);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;border-right:1px solid var(--ac-primary)}.ac--compact:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1118271f;border-right:2px solid var(--ac-primary)}.ac__header{display:flex;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid #eaeaea}.ac__title{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.ac__subtitle{margin:4px 0 0;font-size:var(--ac-subtitle-size);color:var(--ac-muted)}.ac__highlights{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.ac__hl{border-right:1px solid #eaeaea;padding:0 10px;box-sizing:border-box}.ac__hl:nth-child(3n){border-right:none}.ac__hl-value{font-weight:900;font-size:calc(var(--ac-title-size) - 0px);color:var(--ac-text)}.ac__hl-label{font-size:12px;color:var(--ac-muted)}.ac__hl-hint{color:#9ca3af}.ac__footer{margin-top:14px;display:flex;justify-content:flex-end}.ac--expanded{margin-top:16px}.ac--full{width:100%}.acx__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface)}.acx__header--sticky{position:sticky;top:0;z-index:10}.acx__title{display:flex;align-items:center;gap:10px}.acx__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.acx__actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acx__body{padding:var(--ac-pad-body);display:grid;gap:var(--ac-gap)}.ac-content{display:flex;flex-direction:column;gap:16px}.ac-content--inline{flex-direction:row;align-items:flex-start}.ac-content__summary{flex:0 0 320px}.ac-content--inline .ac-content__main{flex:1}.acx__summary{display:grid;gap:14px;padding-bottom:15px;width:100%}.summary{flex:1}.block{border:1px solid var(--ac-border-soft);border-radius:5px;background:var(--ac-surface-2);overflow:auto;scrollbar-width:thin;max-height:250px}.block__title{background:var(--ac-surface-2);position:sticky;top:0;z-index:10;font-weight:800;color:var(--ac-text);font-size:13px;padding:12px}.block__row{display:flex;justify-content:space-between;gap:10px;padding:4px 12px;border:1px solid var(--ac-border-block)}.block__row:last-child{border-bottom:0}.block__label{color:var(--ac-muted);font-size:12px}.block__value{color:var(--ac-text);font-size:12px;font-weight:800}.tabs{flex:2;border:1px solid var(--ac-border-soft);border-radius:5px;overflow:hidden;background:var(--ac-surface)}.tabs__bar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--ac-border-soft)}.tab{padding:10px 14px;background:transparent;font-weight:800;cursor:pointer;color:var(--ac-tab);display:inline-flex;align-items:center;gap:8px;height:100%;border:none;border-bottom:2 solid transparent}.tab--active{color:var(--ac-tab-active);border:none;border-bottom:2px solid var(--ac-tab-active)}.tabs__spacer{flex:1}.tabs__actions{display:flex;gap:8px;flex-wrap:wrap}.tabs__content{padding:16px}.tab-text{color:var(--ac-text);line-height:1.5}.empty{border:1px dashed #d1d5db;border-radius:var(--ac-radius);padding:16px;color:var(--ac-muted);text-align:center;background:#fcfcfc}.btn{border-radius:var(--ac-btn-radius);padding:var(--ac-btn-pad);font-weight:var(--ac-btn-font);cursor:pointer;border:1px solid var(--ac-border);background:var(--ac-surface);color:var(--ac-text)}.btn:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn--primary{background:var(--ac-primary);color:#fff;border-color:var(--ac-primary)}.btn--secondary{background:var(--ac-surface);border-color:#d1d5db}.btn--danger{background:var(--ac-danger);color:#fff;border-color:var(--ac-danger)}.btn--sm{padding:6px 10px;font-size:13px}.icon-btn{width:36px;height:36px;border-radius:var(--ac-btn-radius);border:1px solid var(--ac-border);background:var(--ac-surface);cursor:pointer;font-weight:900;padding:6px 4px;color:#000}.icon-btn>svg{fill:currentColor}.icon-btn:hover{transform:translateY(-1px)}.badge{font-size:12px;padding:4px 10px;border-radius:5px;font-weight:800;margin:auto 0}.badge--success{background:var(--ac-badge-success-bg);color:var(--ac-badge-success-fg)}.badge--warning{background:var(--ac-badge-warning-bg);color:var(--ac-badge-warning-fg)}.badge--danger{background:var(--ac-badge-danger-bg);color:var(--ac-badge-danger-fg)}.badge--primary{background:var(--ac-badge-primary-bg);color:var(--ac-badge-primary-fg)}.badge--neutral{background:var(--ac-badge-neutral-bg);color:var(--ac-badge-neutral-fg)}.overlay{position:fixed;inset:0;background:var(--ac-overlay);-webkit-backdrop-filter:blur(var(--ac-overlay-blur));backdrop-filter:blur(var(--ac-overlay-blur));z-index:999;display:flex;align-items:flex-end;justify-content:center;padding:16px}.panel{width:100%;max-width:var(--ac-modal-max);background:var(--ac-surface);border-radius:var(--ac-radius);border:1px solid var(--ac-border);box-shadow:0 20px 60px #00000040;overflow:hidden}.panel--drawer{border-bottom-left-radius:0;border-bottom-right-radius:0;height:var(--ac-drawer-height)}.panel--modal{height:var(--ac-modal-height)}.overlay.modal-center{align-items:center}.panel__header{display:flex;justify-content:space-between;gap:12px;padding:var(--ac-pad-header);border-bottom:1px solid var(--ac-border-soft);background:var(--ac-surface);position:sticky;top:0;z-index:10}.panel__title{display:flex;align-items:center;gap:10px}.panel__title-text{margin:0;font-size:var(--ac-title-size);font-weight:900;color:var(--ac-text)}.panel__body{padding:var(--ac-pad-body);overflow:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.35) transparent;height:calc(100% - 64px)}.ac__projected-templates{display:none}@media(max-width:1100px){.acx__summary,.ac__highlights{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.ac__highlights{grid-template-columns:1fr}}.panel__body::-webkit-scrollbar{width:8px;height:8px}.panel__body::-webkit-scrollbar-track{background:transparent}.panel__body::-webkit-scrollbar-thumb{background-color:#00000059;border-radius:999px;border:2px solid transparent;background-clip:padding-box}.panel__body::-webkit-scrollbar-thumb:hover{background-color:#00000080}.panel__body::-webkit-scrollbar-corner{background:transparent}.scrollbar-y{overflow-y:auto}\n"] }]
329
338
  }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], fullWidthOnExpand: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidthOnExpand", required: false }] }], stickyHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "stickyHeader", required: false }] }], closeOnEsc: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnEsc", required: false }] }], expandedChange: [{ type: i0.Output, args: ["expandedChange"] }], action: [{ type: i0.Output, args: ["action"] }], tabChanged: [{ type: i0.Output, args: ["tabChanged"] }], tabAction: [{ type: i0.Output, args: ["tabAction"] }], projectedTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => AdvancedCardTemplateDirective), { ...{
330
339
  descendants: true,
331
340
  }, isSignal: true }] }], onKeydown: [{
@@ -334,12 +343,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImpor
334
343
  }] } });
335
344
 
336
345
  class SimpleTable {
337
- headers = input.required(...(ngDevMode ? [{ debugName: "headers" }] : []));
338
- data = input([], ...(ngDevMode ? [{ debugName: "data" }] : []));
346
+ headers = input.required(...(ngDevMode ? [{ debugName: "headers" }] : /* istanbul ignore next */ []));
347
+ data = input([], ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
339
348
  sortState = signal({
340
349
  key: null,
341
350
  direction: 'none',
342
- }, ...(ngDevMode ? [{ debugName: "sortState" }] : []));
351
+ }, ...(ngDevMode ? [{ debugName: "sortState" }] : /* istanbul ignore next */ []));
343
352
  sortedData = computed(() => {
344
353
  const { key, direction } = this.sortState();
345
354
  const currentData = [...this.data()];
@@ -368,7 +377,7 @@ class SimpleTable {
368
377
  const bStr = String(valueB);
369
378
  return direction === 'asc' ? aStr.localeCompare(bStr) : bStr.localeCompare(aStr);
370
379
  });
371
- }, ...(ngDevMode ? [{ debugName: "sortedData" }] : []));
380
+ }, ...(ngDevMode ? [{ debugName: "sortedData" }] : /* istanbul ignore next */ []));
372
381
  sortBy(key) {
373
382
  const current = this.sortState();
374
383
  if (current.key !== key) {
@@ -382,26 +391,26 @@ class SimpleTable {
382
391
  };
383
392
  this.sortState.set({ key, direction: next[current.direction] });
384
393
  }
385
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: SimpleTable, deps: [], target: i0.ɵɵFactoryTarget.Component });
386
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: SimpleTable, isStandalone: true, selector: "simple-table", inputs: { headers: { classPropertyName: "headers", publicName: "headers", isSignal: true, isRequired: true, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"table-item\">\n <table class=\"simple-table\">\n <thead>\n <tr>\n @for (header of headers(); track header.key) {\n <th\n scope=\"col\"\n class=\"sortable\"\n [class.active]=\"sortState().key === header.key && sortState().direction !== 'none'\"\n (click)=\"sortBy(header.key)\"\n >\n <span class=\"th-content\">\n <span class=\"th-label\">{{ header.label }}</span>\n\n <!-- icono -->\n <span class=\"sort-icon\" aria-hidden=\"true\">\n @if (sortState().key !== header.key || sortState().direction === 'none') {\n <!-- doble flecha (neutral) -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <rect width=\"24\" height=\"24\" fill=\"none\" />\n <path\n fill=\"currentColor\"\n d=\"M12.53 3.47a.75.75 0 0 0-1.06 0l-4 4a.75.75 0 0 0 0 1.06h9.06a.75.75 0 0 0 0-1.06zm4 13.06a.75.75 0 0 0 0-1.06H7.47a.75.75 0 0 0 0 1.06l4 4a.75.75 0 0 0 1.06 0z\"\n />\n </svg>\n } @else if (sortState().direction === 'asc') {\n <!-- flecha arriba -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <rect width=\"24\" height=\"24\" fill=\"none\" />\n <path\n fill=\"currentColor\"\n d=\"M8.2 14q-.225 0-.362-.15T7.7 13.5q0-.05.15-.35l3.625-3.625q.125-.125.25-.175T12 9.3t.275.05t.25.175l3.625 3.625q.075.075.113.163t.037.187q0 .2-.137.35T15.8 14z\"\n />\n </svg>\n } @else {\n <!-- flecha abajo -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <rect width=\"24\" height=\"24\" fill=\"none\" />\n <path\n fill=\"currentColor\"\n d=\"M11.475 14.475L7.85 10.85q-.075-.075-.112-.162T7.7 10.5q0-.2.138-.35T8.2 10h7.6q.225 0 .363.15t.137.35q0 .05-.15.35l-3.625 3.625q-.125.125-.25.175T12 14.7t-.275-.05t-.25-.175\"\n />\n </svg>\n }\n </span>\n </span>\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @for (row of sortedData(); track row) {\n <tr>\n @for (header of headers(); track header.key) {\n <td [attr.data-label]=\"header.label\">\n {{ row[header.key] }}\n </td>\n }\n </tr>\n } @empty {\n <tr>\n <td class=\"empty\" [attr.colspan]=\"headers().length\">Datos no localizados.</td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n", styles: [".table-item{background:#fff;overflow:hidden}.simple-table{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}.simple-table thead th{text-align:left;padding:12px 10px;border-bottom:1px solid #e5e7eb;background:#f9fafb;font-weight:600;color:#111827;position:sticky;top:0;vertical-align:middle}.th-content{display:flex;align-items:center;justify-content:space-between;gap:8px}.th-label{line-height:1.2}.sort-icon{display:inline-flex;align-items:center;justify-content:center;height:1em;opacity:.85}.sort-icon svg{width:1em;height:1em;display:block}.simple-table tbody td{padding:12px 10px;border-bottom:1px solid #f3f4f6;color:#374151}.simple-table tbody tr:hover td{background:#fcfcfd}.simple-table tbody tr:last-child td{border-bottom:0}.simple-table th.sortable .sort-icon{color:#9ca3af}.simple-table th.sortable.active .sort-icon{color:#111827}.empty{text-align:center;padding:18px 10px;color:#6b7280}.simple-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .2s ease}.simple-table th.sortable:hover{background:#f3f4f6}.simple-table th.active{color:#111827}@media(max-width:640px){.table-item{padding:10px}.simple-table thead{display:none}.simple-table,.simple-table tbody,.simple-table tr,.simple-table td{display:block;width:100%}.simple-table tbody tr{border:1px solid #e5e7eb;padding:8px 10px;margin-bottom:10px;background:#fff}.simple-table tbody td{border:0;border-bottom:1px dashed #eef2f7;padding:10px 0;display:grid;grid-template-columns:140px 1fr;gap:10px;align-items:start}.simple-table tbody td:last-child{border-bottom:0}.simple-table tbody td:before{content:attr(data-label);font-weight:600;color:#111827;opacity:.9}.simple-table tbody tr:has(.empty){border:0;padding:0;margin:0}.simple-table tbody td.empty{display:block;border:1px dashed #e5e7eb;border-radius:12px;padding:14px 12px;text-align:center;background:#fafafa}}\n"] });
394
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SimpleTable, deps: [], target: i0.ɵɵFactoryTarget.Component });
395
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: SimpleTable, isStandalone: true, selector: "simple-table", inputs: { headers: { classPropertyName: "headers", publicName: "headers", isSignal: true, isRequired: true, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"table-item\">\n <table class=\"simple-table\">\n <thead>\n <tr>\n @for (header of headers(); track header.key) {\n <th\n scope=\"col\"\n class=\"sortable\"\n [class.active]=\"sortState().key === header.key && sortState().direction !== 'none'\"\n (click)=\"sortBy(header.key)\"\n >\n <span class=\"th-content\">\n <span class=\"th-label\">{{ header.label }}</span>\n\n <!-- icono -->\n <span class=\"sort-icon\" aria-hidden=\"true\">\n @if (sortState().key !== header.key || sortState().direction === 'none') {\n <!-- doble flecha (neutral) -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <rect width=\"24\" height=\"24\" fill=\"none\" />\n <path\n fill=\"currentColor\"\n d=\"M12.53 3.47a.75.75 0 0 0-1.06 0l-4 4a.75.75 0 0 0 0 1.06h9.06a.75.75 0 0 0 0-1.06zm4 13.06a.75.75 0 0 0 0-1.06H7.47a.75.75 0 0 0 0 1.06l4 4a.75.75 0 0 0 1.06 0z\"\n />\n </svg>\n } @else if (sortState().direction === 'asc') {\n <!-- flecha arriba -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <rect width=\"24\" height=\"24\" fill=\"none\" />\n <path\n fill=\"currentColor\"\n d=\"M8.2 14q-.225 0-.362-.15T7.7 13.5q0-.05.15-.35l3.625-3.625q.125-.125.25-.175T12 9.3t.275.05t.25.175l3.625 3.625q.075.075.113.163t.037.187q0 .2-.137.35T15.8 14z\"\n />\n </svg>\n } @else {\n <!-- flecha abajo -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <rect width=\"24\" height=\"24\" fill=\"none\" />\n <path\n fill=\"currentColor\"\n d=\"M11.475 14.475L7.85 10.85q-.075-.075-.112-.162T7.7 10.5q0-.2.138-.35T8.2 10h7.6q.225 0 .363.15t.137.35q0 .05-.15.35l-3.625 3.625q-.125.125-.25.175T12 14.7t-.275-.05t-.25-.175\"\n />\n </svg>\n }\n </span>\n </span>\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @for (row of sortedData(); track row) {\n <tr>\n @for (header of headers(); track header.key) {\n <td [attr.data-label]=\"header.label\">\n {{ row[header.key] }}\n </td>\n }\n </tr>\n } @empty {\n <tr>\n <td class=\"empty\" [attr.colspan]=\"headers().length\">Datos no localizados.</td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n", styles: [".table-item{background:#fff;overflow:hidden}.simple-table{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}.simple-table thead th{text-align:left;padding:12px 10px;border-bottom:1px solid #e5e7eb;background:#f9fafb;font-weight:600;color:#111827;position:sticky;top:0;vertical-align:middle}.th-content{display:flex;align-items:center;justify-content:space-between;gap:8px}.th-label{line-height:1.2}.sort-icon{display:inline-flex;align-items:center;justify-content:center;height:1em;opacity:.85}.sort-icon svg{width:1em;height:1em;display:block}.simple-table tbody td{padding:12px 10px;border-bottom:1px solid #f3f4f6;color:#374151}.simple-table tbody tr:hover td{background:#fcfcfd}.simple-table tbody tr:last-child td{border-bottom:0}.simple-table th.sortable .sort-icon{color:#9ca3af}.simple-table th.sortable.active .sort-icon{color:#111827}.empty{text-align:center;padding:18px 10px;color:#6b7280}.simple-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .2s ease}.simple-table th.sortable:hover{background:#f3f4f6}.simple-table th.active{color:#111827}@media(max-width:640px){.table-item{padding:10px}.simple-table thead{display:none}.simple-table,.simple-table tbody,.simple-table tr,.simple-table td{display:block;width:100%}.simple-table tbody tr{border:1px solid #e5e7eb;padding:8px 10px;margin-bottom:10px;background:#fff}.simple-table tbody td{border:0;border-bottom:1px dashed #eef2f7;padding:10px 0;display:grid;grid-template-columns:140px 1fr;gap:10px;align-items:start}.simple-table tbody td:last-child{border-bottom:0}.simple-table tbody td:before{content:attr(data-label);font-weight:600;color:#111827;opacity:.9}.simple-table tbody tr:has(.empty){border:0;padding:0;margin:0}.simple-table tbody td.empty{display:block;border:1px dashed #e5e7eb;border-radius:12px;padding:14px 12px;text-align:center;background:#fafafa}}\n"] });
387
396
  }
388
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: SimpleTable, decorators: [{
397
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: SimpleTable, decorators: [{
389
398
  type: Component,
390
399
  args: [{ selector: 'simple-table', imports: [], template: "<div class=\"table-item\">\n <table class=\"simple-table\">\n <thead>\n <tr>\n @for (header of headers(); track header.key) {\n <th\n scope=\"col\"\n class=\"sortable\"\n [class.active]=\"sortState().key === header.key && sortState().direction !== 'none'\"\n (click)=\"sortBy(header.key)\"\n >\n <span class=\"th-content\">\n <span class=\"th-label\">{{ header.label }}</span>\n\n <!-- icono -->\n <span class=\"sort-icon\" aria-hidden=\"true\">\n @if (sortState().key !== header.key || sortState().direction === 'none') {\n <!-- doble flecha (neutral) -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <rect width=\"24\" height=\"24\" fill=\"none\" />\n <path\n fill=\"currentColor\"\n d=\"M12.53 3.47a.75.75 0 0 0-1.06 0l-4 4a.75.75 0 0 0 0 1.06h9.06a.75.75 0 0 0 0-1.06zm4 13.06a.75.75 0 0 0 0-1.06H7.47a.75.75 0 0 0 0 1.06l4 4a.75.75 0 0 0 1.06 0z\"\n />\n </svg>\n } @else if (sortState().direction === 'asc') {\n <!-- flecha arriba -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <rect width=\"24\" height=\"24\" fill=\"none\" />\n <path\n fill=\"currentColor\"\n d=\"M8.2 14q-.225 0-.362-.15T7.7 13.5q0-.05.15-.35l3.625-3.625q.125-.125.25-.175T12 9.3t.275.05t.25.175l3.625 3.625q.075.075.113.163t.037.187q0 .2-.137.35T15.8 14z\"\n />\n </svg>\n } @else {\n <!-- flecha abajo -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <rect width=\"24\" height=\"24\" fill=\"none\" />\n <path\n fill=\"currentColor\"\n d=\"M11.475 14.475L7.85 10.85q-.075-.075-.112-.162T7.7 10.5q0-.2.138-.35T8.2 10h7.6q.225 0 .363.15t.137.35q0 .05-.15.35l-3.625 3.625q-.125.125-.25.175T12 14.7t-.275-.05t-.25-.175\"\n />\n </svg>\n }\n </span>\n </span>\n </th>\n }\n </tr>\n </thead>\n\n <tbody>\n @for (row of sortedData(); track row) {\n <tr>\n @for (header of headers(); track header.key) {\n <td [attr.data-label]=\"header.label\">\n {{ row[header.key] }}\n </td>\n }\n </tr>\n } @empty {\n <tr>\n <td class=\"empty\" [attr.colspan]=\"headers().length\">Datos no localizados.</td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n", styles: [".table-item{background:#fff;overflow:hidden}.simple-table{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}.simple-table thead th{text-align:left;padding:12px 10px;border-bottom:1px solid #e5e7eb;background:#f9fafb;font-weight:600;color:#111827;position:sticky;top:0;vertical-align:middle}.th-content{display:flex;align-items:center;justify-content:space-between;gap:8px}.th-label{line-height:1.2}.sort-icon{display:inline-flex;align-items:center;justify-content:center;height:1em;opacity:.85}.sort-icon svg{width:1em;height:1em;display:block}.simple-table tbody td{padding:12px 10px;border-bottom:1px solid #f3f4f6;color:#374151}.simple-table tbody tr:hover td{background:#fcfcfd}.simple-table tbody tr:last-child td{border-bottom:0}.simple-table th.sortable .sort-icon{color:#9ca3af}.simple-table th.sortable.active .sort-icon{color:#111827}.empty{text-align:center;padding:18px 10px;color:#6b7280}.simple-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .2s ease}.simple-table th.sortable:hover{background:#f3f4f6}.simple-table th.active{color:#111827}@media(max-width:640px){.table-item{padding:10px}.simple-table thead{display:none}.simple-table,.simple-table tbody,.simple-table tr,.simple-table td{display:block;width:100%}.simple-table tbody tr{border:1px solid #e5e7eb;padding:8px 10px;margin-bottom:10px;background:#fff}.simple-table tbody td{border:0;border-bottom:1px dashed #eef2f7;padding:10px 0;display:grid;grid-template-columns:140px 1fr;gap:10px;align-items:start}.simple-table tbody td:last-child{border-bottom:0}.simple-table tbody td:before{content:attr(data-label);font-weight:600;color:#111827;opacity:.9}.simple-table tbody tr:has(.empty){border:0;padding:0;margin:0}.simple-table tbody td.empty{display:block;border:1px dashed #e5e7eb;border-radius:12px;padding:14px 12px;text-align:center;background:#fafafa}}\n"] }]
391
400
  }], propDecorators: { headers: [{ type: i0.Input, args: [{ isSignal: true, alias: "headers", required: true }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }] } });
392
401
 
393
402
  class TableModalImageComponent {
394
- open = input(false, ...(ngDevMode ? [{ debugName: "open" }] : []));
395
- src = input('', ...(ngDevMode ? [{ debugName: "src" }] : []));
396
- alt = input('', ...(ngDevMode ? [{ debugName: "alt" }] : []));
403
+ open = input(false, ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
404
+ src = input('', ...(ngDevMode ? [{ debugName: "src" }] : /* istanbul ignore next */ []));
405
+ alt = input('', ...(ngDevMode ? [{ debugName: "alt" }] : /* istanbul ignore next */ []));
397
406
  close = output();
398
407
  onClose() {
399
408
  this.close.emit();
400
409
  }
401
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TableModalImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
402
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: TableModalImageComponent, isStandalone: true, selector: "table-modal-image", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { close: "close" }, ngImport: i0, template: "@if (open()) {\r\n <div class=\"dt-modal-backdrop\" (click)=\"onClose()\">\r\n <div class=\"dt-modal\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"dt-modal-header\">\r\n <span class=\"dt-modal-title\">{{ alt() }}</span>\r\n <button type=\"button\" class=\"dt-btn\" (click)=\"onClose()\">Cerrar</button>\r\n </div>\r\n\r\n <div class=\"dt-modal-body\">\r\n <img class=\"dt-modal-img\" [src]=\"src()\" [alt]=\"alt()\" />\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n", styles: [".dt-modal-backdrop{position:fixed;inset:0;background:#0000008c;display:flex;justify-content:center;align-items:center;padding:18px;z-index:9999}.dt-modal{width:min(900px,95vw);max-height:90vh;background:var(--white);border-radius:var(--radius-md);border:var(--border);overflow:hidden;display:flex;flex-direction:column}.dt-modal-header{padding:12px;border-bottom:var(--border);display:flex;justify-content:space-between;align-items:center;background:var(--gray-white)}.dt-modal-title{font-weight:600;color:var(--black);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dt-modal-body{padding:12px;overflow:auto}.dt-modal-img{width:100%;height:auto;border-radius:var(--radius-sm)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
410
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: TableModalImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
411
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: TableModalImageComponent, isStandalone: true, selector: "table-modal-image", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, src: { classPropertyName: "src", publicName: "src", isSignal: true, isRequired: false, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { close: "close" }, ngImport: i0, template: "@if (open()) {\r\n <div class=\"dt-modal-backdrop\" (click)=\"onClose()\">\r\n <div class=\"dt-modal\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"dt-modal-header\">\r\n <span class=\"dt-modal-title\">{{ alt() }}</span>\r\n <button type=\"button\" class=\"dt-btn\" (click)=\"onClose()\">Cerrar</button>\r\n </div>\r\n\r\n <div class=\"dt-modal-body\">\r\n <img class=\"dt-modal-img\" [src]=\"src()\" [alt]=\"alt()\" />\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n", styles: [".dt-modal-backdrop{position:fixed;inset:0;background:#0000008c;display:flex;justify-content:center;align-items:center;padding:18px;z-index:9999}.dt-modal{width:min(900px,95vw);max-height:90vh;background:var(--white);border-radius:var(--radius-md);border:var(--border);overflow:hidden;display:flex;flex-direction:column}.dt-modal-header{padding:12px;border-bottom:var(--border);display:flex;justify-content:space-between;align-items:center;background:var(--gray-white)}.dt-modal-title{font-weight:600;color:var(--black);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dt-modal-body{padding:12px;overflow:auto}.dt-modal-img{width:100%;height:auto;border-radius:var(--radius-sm)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
403
412
  }
404
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TableModalImageComponent, decorators: [{
413
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: TableModalImageComponent, decorators: [{
405
414
  type: Component,
406
415
  args: [{ selector: 'table-modal-image', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (open()) {\r\n <div class=\"dt-modal-backdrop\" (click)=\"onClose()\">\r\n <div class=\"dt-modal\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"dt-modal-header\">\r\n <span class=\"dt-modal-title\">{{ alt() }}</span>\r\n <button type=\"button\" class=\"dt-btn\" (click)=\"onClose()\">Cerrar</button>\r\n </div>\r\n\r\n <div class=\"dt-modal-body\">\r\n <img class=\"dt-modal-img\" [src]=\"src()\" [alt]=\"alt()\" />\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n", styles: [".dt-modal-backdrop{position:fixed;inset:0;background:#0000008c;display:flex;justify-content:center;align-items:center;padding:18px;z-index:9999}.dt-modal{width:min(900px,95vw);max-height:90vh;background:var(--white);border-radius:var(--radius-md);border:var(--border);overflow:hidden;display:flex;flex-direction:column}.dt-modal-header{padding:12px;border-bottom:var(--border);display:flex;justify-content:space-between;align-items:center;background:var(--gray-white)}.dt-modal-title{font-weight:600;color:var(--black);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dt-modal-body{padding:12px;overflow:auto}.dt-modal-img{width:100%;height:auto;border-radius:var(--radius-sm)}\n"] }]
407
416
  }], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], src: [{ type: i0.Input, args: [{ isSignal: true, alias: "src", required: false }] }], alt: [{ type: i0.Input, args: [{ isSignal: true, alias: "alt", required: false }] }], close: [{ type: i0.Output, args: ["close"] }] } });
@@ -487,15 +496,15 @@ const TABLE_I18N_DEFAULT = TABLE_I18N_EN;
487
496
  class TableGridComponent {
488
497
  sanitizer = inject(DomSanitizer);
489
498
  // Inputs
490
- config = input({}, ...(ngDevMode ? [{ debugName: "config" }] : []));
491
- columns = input([], ...(ngDevMode ? [{ debugName: "columns" }] : []));
492
- rows = input([], ...(ngDevMode ? [{ debugName: "rows" }] : []));
493
- gridTemplateColumns = input('', ...(ngDevMode ? [{ debugName: "gridTemplateColumns" }] : []));
494
- columnQueries = input({}, ...(ngDevMode ? [{ debugName: "columnQueries" }] : []));
495
- sortState = input(null, ...(ngDevMode ? [{ debugName: "sortState" }] : []));
496
- selectedIdsSet = input(new Set(), ...(ngDevMode ? [{ debugName: "selectedIdsSet" }] : []));
497
- timeZone = input(TIME_ZONES.MEXICO_CITY, ...(ngDevMode ? [{ debugName: "timeZone" }] : []));
498
- i18n = input(TABLE_I18N_DEFAULT, ...(ngDevMode ? [{ debugName: "i18n" }] : []));
499
+ config = input({}, ...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
500
+ columns = input([], ...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
501
+ rows = input([], ...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
502
+ gridTemplateColumns = input('', ...(ngDevMode ? [{ debugName: "gridTemplateColumns" }] : /* istanbul ignore next */ []));
503
+ columnQueries = input({}, ...(ngDevMode ? [{ debugName: "columnQueries" }] : /* istanbul ignore next */ []));
504
+ sortState = input(null, ...(ngDevMode ? [{ debugName: "sortState" }] : /* istanbul ignore next */ []));
505
+ selectedIdsSet = input(new Set(), ...(ngDevMode ? [{ debugName: "selectedIdsSet" }] : /* istanbul ignore next */ []));
506
+ timeZone = input(TIME_ZONES.MEXICO_CITY, ...(ngDevMode ? [{ debugName: "timeZone" }] : /* istanbul ignore next */ []));
507
+ i18n = input(TABLE_I18N_DEFAULT, ...(ngDevMode ? [{ debugName: "i18n" }] : /* istanbul ignore next */ []));
499
508
  // Outputs
500
509
  headerSort = output();
501
510
  columnQueryChange = output();
@@ -506,7 +515,7 @@ class TableGridComponent {
506
515
  actionClick = output();
507
516
  bodyScroll = output();
508
517
  // Derived
509
- showSelectionColumn = computed(() => !!this.config().selectable, ...(ngDevMode ? [{ debugName: "showSelectionColumn" }] : []));
518
+ showSelectionColumn = computed(() => !!this.config().selectable, ...(ngDevMode ? [{ debugName: "showSelectionColumn" }] : /* istanbul ignore next */ []));
510
519
  // Helpers
511
520
  getRowIdKey() {
512
521
  return this.config().rowIdKey ?? 'id';
@@ -661,10 +670,10 @@ class TableGridComponent {
661
670
  const value = this.getCellValue(row, col);
662
671
  return value == null ? '' : String(value);
663
672
  }
664
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TableGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
665
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: TableGridComponent, isStandalone: true, selector: "table-grid", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, gridTemplateColumns: { classPropertyName: "gridTemplateColumns", publicName: "gridTemplateColumns", isSignal: true, isRequired: false, transformFunction: null }, columnQueries: { classPropertyName: "columnQueries", publicName: "columnQueries", isSignal: true, isRequired: false, transformFunction: null }, sortState: { classPropertyName: "sortState", publicName: "sortState", isSignal: true, isRequired: false, transformFunction: null }, selectedIdsSet: { classPropertyName: "selectedIdsSet", publicName: "selectedIdsSet", isSignal: true, isRequired: false, transformFunction: null }, timeZone: { classPropertyName: "timeZone", publicName: "timeZone", isSignal: true, isRequired: false, transformFunction: null }, i18n: { classPropertyName: "i18n", publicName: "i18n", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { headerSort: "headerSort", columnQueryChange: "columnQueryChange", rowClick: "rowClick", toggleRow: "toggleRow", toggleAllOnPage: "toggleAllOnPage", openImage: "openImage", actionClick: "actionClick", bodyScroll: "bodyScroll" }, ngImport: i0, template: "<div class=\"dt-grid\">\r\n <div class=\"dt-xscroll\">\r\n <!-- Header -->\r\n <div class=\"dt-row dt-header\" [style.gridTemplateColumns]=\"gridTemplateColumns()\">\r\n @if (showSelectionColumn()) {\r\n <div class=\"dt-cell dt-cell--header dt-cell--center dt-select-col\">\r\n @if ((config().selectionMode ?? 'multiple') === 'multiple') {\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"isAllSelectedOnPage()\"\r\n (change)=\"onToggleAllOnPage()\"\r\n aria-label=\"Select all\"\r\n />\r\n }\r\n </div>\r\n }\r\n\r\n @for (col of columns(); track col.key) {\r\n <div\r\n class=\"dt-cell dt-cell--header\"\r\n [class.dt-cell--sortable]=\"!!col.sortable\"\r\n [attr.data-align]=\"col.align ?? 'left'\"\r\n (click)=\"onHeaderClickSort(col)\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n >\r\n <span class=\"dt-header-label\">{{ col.label }}</span>\r\n @if (col.sortable) {\r\n <span class=\"dt-sort\">{{ getSortIcon(col.key) }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Filters row (under header) -->\r\n @if (config().columnFilters) {\r\n <div class=\"dt-row dt-filters\" [style.gridTemplateColumns]=\"gridTemplateColumns()\">\r\n @if (showSelectionColumn()) {\r\n <div class=\"dt-cell dt-cell--filter dt-select-col\"></div>\r\n }\r\n\r\n @for (col of columns(); track col.key) {\r\n <div class=\"dt-cell dt-cell--filter\" [attr.data-align]=\"col.align ?? 'left'\">\r\n @if (col.filterable) {\r\n <input\r\n type=\"text\"\r\n [value]=\"columnQueries()[col.key] ?? null\"\r\n (input)=\"onColumnQueryInput(col.key, $any($event.target).value)\"\r\n [placeholder]=\"i18n().filter + ' ' + col.label\"\r\n />\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Body -->\r\n <div\r\n class=\"dt-body\"\r\n [style.maxHeight.px]=\"config().scroll?.heightPx ?? null\"\r\n (scroll)=\"onBodyScroll($event)\"\r\n >\r\n @if (rows().length === 0) {\r\n <div class=\"dt-empty\">\r\n {{ config().emptyText ?? i18n().empty }}\r\n </div>\r\n } @else {\r\n @for (row of rows(); track getRowId(row)) {\r\n <div class=\"dt-row dt-data\" [style.gridTemplateColumns]=\"gridTemplateColumns()\">\r\n @if (showSelectionColumn()) {\r\n <div class=\"dt-cell dt-cell--center dt-select-col\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"isSelected(row)\"\r\n (change)=\"onToggleRow(row)\"\r\n aria-label=\"Seleccionar fila\"\r\n />\r\n </div>\r\n }\r\n\r\n @for (col of columns(); track col.key) {\r\n <div\r\n class=\"dt-cell\"\r\n [attr.data-align]=\"col.align ?? 'left'\"\r\n (click)=\"onRowClick(row)\"\r\n >\r\n @switch (col.type) {\r\n @case ('image') {\r\n @if ((col.options?.image?.hidden ?? false) === true) {\r\n <button\r\n type=\"button\"\r\n class=\"dt-link\"\r\n (click)=\"onOpenImage(getImageSrc(row, col), getImageAlt(row, col), $event)\"\r\n >\r\n {{ i18n().seeImage }}\r\n </button>\r\n } @else {\r\n <img\r\n class=\"dt-img\"\r\n [class.dt-img--full]=\"!!col.options?.image?.showFull\"\r\n [src]=\"getImageSrc(row, col)\"\r\n [alt]=\"getImageAlt(row, col)\"\r\n (click)=\"\r\n (col.options?.image?.openInModal ?? true) &&\r\n onOpenImage(getImageSrc(row, col), getImageAlt(row, col), $event)\r\n \"\r\n />\r\n }\r\n }\r\n\r\n @case ('status') {\r\n <span class=\"dt-badge\" [attr.data-variant]=\"getStatusClass(row, col)\">\r\n {{ getDisplayText(row, col) }}\r\n </span>\r\n }\r\n\r\n @case ('link') {\r\n <a\r\n class=\"dt-link\"\r\n [href]=\"getLinkHref(row, col)\"\r\n [target]=\"col.options?.link?.target ?? '_blank'\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n {{ getLinkLabel(row, col) }}\r\n </a>\r\n }\r\n\r\n @case ('actions') {\r\n <div class=\"dt-actions\">\r\n @for (action of getColumnActions(col); track action.id) {\r\n @if (isActionVisible(action, row)) {\r\n <button\r\n type=\"button\"\r\n class=\"dt-action-btn\"\r\n [class.dt-action--edit]=\"action.id === 'edit'\"\r\n [class.dt-action--delete]=\"action.id === 'delete'\"\r\n [class.dt-action--open]=\"action.id === 'open'\"\r\n [class.dt-action--copy]=\"action.id === 'copy'\"\r\n [disabled]=\"isActionDisabled(action, row)\"\r\n [title]=\"action.tooltip ?? action.label\"\r\n (click)=\"emitAction(action, row, $event)\"\r\n >\r\n @if ((action.render ?? 'icon') === 'text') {\r\n <span class=\"dt-action-text\">{{ action.label }}</span>\r\n } @else {\r\n <span class=\"dt-action-svg\" [innerHTML]=\"getActionSvg(action)\"></span>\r\n }\r\n </button>\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n @default {\r\n <span class=\"dt-text\">{{ getDisplayText(row, col) }}</span>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".dt-grid{width:100%}.dt-row{display:grid;align-items:stretch;min-width:max-content}.dt-xscroll{overflow-x:auto;overflow-y:hidden}.dt-header{background:var(--gray-white);border-bottom:var(--border);font-weight:600;color:var(--black)}.dt-cell--header{-webkit-user-select:none;user-select:none}.dt-cell--sortable{cursor:pointer}.dt-filters{background:var(--xxs-light-gray);border-bottom:var(--border)}.dt-cell--filter{padding:8px 12px;font-size:10px}input{width:100%;padding:7px 8px;border:1px solid var(--light-gray);border-radius:var(--radius-sm);background:var(--white);color:var(--black);outline:none}input::placeholder{color:var(--xs-dark-gray);font-size:11px}input:focus{border-color:var(--blue);box-shadow:var(--focus-ring)}.dt-body{overflow-y:auto;overflow-x:hidden;min-width:max-content}@media(max-heicg:900px){.dt-body{max-height:none!important;overflow-y:visible!important;overflow-x:auto!important}}.dt-cell{padding:10px 12px;min-height:30px;border-bottom:1px solid var(--xxs-light-gray);display:flex;align-items:center;gap:8px;color:var(--black)}.dt-cell[data-align=left]{justify-content:flex-start;text-align:left}.dt-cell[data-align=center]{justify-content:center;text-align:center}.dt-cell[data-align=right]{justify-content:flex-end;text-align:right}.dt-cell--center,.dt-select-col{justify-content:center}.dt-header-label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dt-sort{margin-left:auto;font-size:12px;opacity:.7;color:var(--xs-dark-gray)}.dt-data:hover{background:var(--gray)}.dt-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dt-img{width:40px;height:40px;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--xs-light-gray);cursor:pointer}.dt-img--full{width:100%;height:auto}.dt-link{color:var(--blue);text-decoration:none;background:transparent;border:none;cursor:pointer;padding:0;font:inherit}.dt-link:hover{text-decoration:underline}.dt-badge{padding:4px 10px;border-radius:999px;border:1px solid var(--xs-light-gray);font-size:12px;background:var(--xxs-light-gray)}.dt-badge[data-variant=success]{background:#208b6a1f;border-color:#208b6a59}.dt-badge[data-variant=warn]{background:#ffbc5733;border-color:#ffbc5773}.dt-badge[data-variant=error]{background:#e600181f;border-color:#e6001859}.dt-badge[data-variant=info]{background:#7390ec24;border-color:#7390ec59}.dt-empty{padding:18px 12px;color:var(--xs-dark-gray)}.dt-actions{display:inline-flex;align-items:center;gap:6px}.dt-action-svg{width:24px;height:24px;display:inline-flex}.dt-action-svg svg{width:24px;height:24px;color:inherit}.dt-action-btn{width:32px;height:32px;border:1px solid var(--xs-light-gray);border-radius:var(--radius-sm);background:var(--white);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--xs-dark-gray)}.dt-action-btn:hover:not(:disabled){background:var(--gray-white);border-color:var(--dark-gray)}.dt-action-btn.dt-action--edit{color:var(--blue)}.dt-action-btn.dt-action--edit:hover:not(:disabled){color:var(--white);background-color:var(--blue)}.dt-action-btn.dt-action--open{color:var(--blue-medium)}.dt-action-btn.dt-action--open:hover:not(:disabled){color:var(--blue-dark)}.dt-action-btn.dt-action--copy{color:var(--xs-dark-gray)}.dt-action-btn.dt-action--copy:hover:not(:disabled){color:var(--white);background-color:var(--xs-dark-gray)}.dt-action-btn.dt-action--delete{color:var(--red)}.dt-action-btn.dt-action--delete:hover:not(:disabled){color:var(--white);background-color:var(--red)}.dt-action-btn:disabled{color:var(--disabled-text);background:var(--soft-white);cursor:not-allowed}.dt-action-text{font-size:24px;padding:0 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
673
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: TableGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
674
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: TableGridComponent, isStandalone: true, selector: "table-grid", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, gridTemplateColumns: { classPropertyName: "gridTemplateColumns", publicName: "gridTemplateColumns", isSignal: true, isRequired: false, transformFunction: null }, columnQueries: { classPropertyName: "columnQueries", publicName: "columnQueries", isSignal: true, isRequired: false, transformFunction: null }, sortState: { classPropertyName: "sortState", publicName: "sortState", isSignal: true, isRequired: false, transformFunction: null }, selectedIdsSet: { classPropertyName: "selectedIdsSet", publicName: "selectedIdsSet", isSignal: true, isRequired: false, transformFunction: null }, timeZone: { classPropertyName: "timeZone", publicName: "timeZone", isSignal: true, isRequired: false, transformFunction: null }, i18n: { classPropertyName: "i18n", publicName: "i18n", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { headerSort: "headerSort", columnQueryChange: "columnQueryChange", rowClick: "rowClick", toggleRow: "toggleRow", toggleAllOnPage: "toggleAllOnPage", openImage: "openImage", actionClick: "actionClick", bodyScroll: "bodyScroll" }, ngImport: i0, template: "<div class=\"dt-grid\">\r\n <div class=\"dt-xscroll\">\r\n <!-- Header -->\r\n <div class=\"dt-row dt-header\" [style.gridTemplateColumns]=\"gridTemplateColumns()\">\r\n @if (showSelectionColumn()) {\r\n <div class=\"dt-cell dt-cell--header dt-cell--center dt-select-col\">\r\n @if ((config().selectionMode ?? 'multiple') === 'multiple') {\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"isAllSelectedOnPage()\"\r\n (change)=\"onToggleAllOnPage()\"\r\n aria-label=\"Select all\"\r\n />\r\n }\r\n </div>\r\n }\r\n\r\n @for (col of columns(); track col.key) {\r\n <div\r\n class=\"dt-cell dt-cell--header\"\r\n [class.dt-cell--sortable]=\"!!col.sortable\"\r\n [attr.data-align]=\"col.align ?? 'left'\"\r\n (click)=\"onHeaderClickSort(col)\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n >\r\n <span class=\"dt-header-label\">{{ col.label }}</span>\r\n @if (col.sortable) {\r\n <span class=\"dt-sort\">{{ getSortIcon(col.key) }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Filters row (under header) -->\r\n @if (config().columnFilters) {\r\n <div class=\"dt-row dt-filters\" [style.gridTemplateColumns]=\"gridTemplateColumns()\">\r\n @if (showSelectionColumn()) {\r\n <div class=\"dt-cell dt-cell--filter dt-select-col\"></div>\r\n }\r\n\r\n @for (col of columns(); track col.key) {\r\n <div class=\"dt-cell dt-cell--filter\" [attr.data-align]=\"col.align ?? 'left'\">\r\n @if (col.filterable) {\r\n <input\r\n type=\"text\"\r\n [value]=\"columnQueries()[col.key] ?? null\"\r\n (input)=\"onColumnQueryInput(col.key, $any($event.target).value)\"\r\n [placeholder]=\"i18n().filter + ' ' + col.label\"\r\n />\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Body -->\r\n <div\r\n class=\"dt-body\"\r\n [style.maxHeight.px]=\"config().scroll?.heightPx ?? null\"\r\n (scroll)=\"onBodyScroll($event)\"\r\n >\r\n @if (rows().length === 0) {\r\n <div class=\"dt-empty\">\r\n {{ config().emptyText ?? i18n().empty }}\r\n </div>\r\n } @else {\r\n @for (row of rows(); track getRowId(row)) {\r\n <div class=\"dt-row dt-data\" [style.gridTemplateColumns]=\"gridTemplateColumns()\">\r\n @if (showSelectionColumn()) {\r\n <div class=\"dt-cell dt-cell--center dt-select-col\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"isSelected(row)\"\r\n (change)=\"onToggleRow(row)\"\r\n aria-label=\"Seleccionar fila\"\r\n />\r\n </div>\r\n }\r\n\r\n @for (col of columns(); track col.key) {\r\n <div\r\n class=\"dt-cell\"\r\n [attr.data-align]=\"col.align ?? 'left'\"\r\n (click)=\"onRowClick(row)\"\r\n >\r\n @switch (col.type) {\r\n @case ('image') {\r\n @if ((col.options?.image?.hidden ?? false) === true) {\r\n <button\r\n type=\"button\"\r\n class=\"dt-link\"\r\n (click)=\"onOpenImage(getImageSrc(row, col), getImageAlt(row, col), $event)\"\r\n >\r\n {{ i18n().seeImage }}\r\n </button>\r\n } @else {\r\n <img\r\n class=\"dt-img\"\r\n [class.dt-img--full]=\"!!col.options?.image?.showFull\"\r\n [src]=\"getImageSrc(row, col)\"\r\n [alt]=\"getImageAlt(row, col)\"\r\n (click)=\"\r\n (col.options?.image?.openInModal ?? true) &&\r\n onOpenImage(getImageSrc(row, col), getImageAlt(row, col), $event)\r\n \"\r\n />\r\n }\r\n }\r\n\r\n @case ('status') {\r\n <span class=\"dt-badge\" [attr.data-variant]=\"getStatusClass(row, col)\">\r\n {{ getDisplayText(row, col) }}\r\n </span>\r\n }\r\n\r\n @case ('link') {\r\n <a\r\n class=\"dt-link\"\r\n [href]=\"getLinkHref(row, col)\"\r\n [target]=\"col.options?.link?.target ?? '_blank'\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n {{ getLinkLabel(row, col) }}\r\n </a>\r\n }\r\n\r\n @case ('actions') {\r\n <div class=\"dt-actions\">\r\n @for (action of getColumnActions(col); track action.id) {\r\n @if (isActionVisible(action, row)) {\r\n <button\r\n type=\"button\"\r\n class=\"dt-action-btn\"\r\n [class.dt-action--edit]=\"action.id === 'edit'\"\r\n [class.dt-action--delete]=\"action.id === 'delete'\"\r\n [class.dt-action--open]=\"action.id === 'open'\"\r\n [class.dt-action--copy]=\"action.id === 'copy'\"\r\n [disabled]=\"isActionDisabled(action, row)\"\r\n [title]=\"action.tooltip ?? action.label\"\r\n (click)=\"emitAction(action, row, $event)\"\r\n >\r\n @if ((action.render ?? 'icon') === 'text') {\r\n <span class=\"dt-action-text\">{{ action.label }}</span>\r\n } @else {\r\n <span class=\"dt-action-svg\" [innerHTML]=\"getActionSvg(action)\"></span>\r\n }\r\n </button>\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n @default {\r\n <span class=\"dt-text\">{{ getDisplayText(row, col) }}</span>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".dt-grid{width:100%}.dt-row{display:grid;align-items:stretch;min-width:max-content}.dt-xscroll{overflow-x:auto;overflow-y:hidden}.dt-header{background:var(--gray-white);border-bottom:var(--border);font-weight:600;color:var(--black)}.dt-cell--header{-webkit-user-select:none;user-select:none}.dt-cell--sortable{cursor:pointer}.dt-filters{background:var(--xxs-light-gray);border-bottom:var(--border)}.dt-cell--filter{padding:8px 12px;font-size:10px}input{width:100%;padding:7px 8px;border:1px solid var(--light-gray);border-radius:var(--radius-sm);background:var(--white);color:var(--black);outline:none}input::placeholder{color:var(--xs-dark-gray);font-size:11px}input:focus{border-color:var(--blue);box-shadow:var(--focus-ring)}.dt-body{overflow-y:auto;overflow-x:hidden;min-width:max-content}@media(max-heicg:900px){.dt-body{max-height:none!important;overflow-y:visible!important;overflow-x:auto!important}}.dt-cell{padding:10px 12px;min-height:30px;border-bottom:1px solid var(--xxs-light-gray);display:flex;align-items:center;gap:8px;color:var(--black)}.dt-cell[data-align=left]{justify-content:flex-start;text-align:left}.dt-cell[data-align=center]{justify-content:center;text-align:center}.dt-cell[data-align=right]{justify-content:flex-end;text-align:right}.dt-cell--center,.dt-select-col{justify-content:center}.dt-header-label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dt-sort{margin-left:auto;font-size:12px;opacity:.7;color:var(--xs-dark-gray)}.dt-data:hover{background:var(--gray)}.dt-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dt-img{width:40px;height:40px;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--xs-light-gray);cursor:pointer}.dt-img--full{width:100%;height:auto}.dt-link{color:var(--blue);text-decoration:none;background:transparent;border:none;cursor:pointer;padding:0;font:inherit}.dt-link:hover{text-decoration:underline}.dt-badge{padding:4px 10px;border-radius:999px;border:1px solid var(--xs-light-gray);font-size:12px;background:var(--xxs-light-gray)}.dt-badge[data-variant=success]{background:#208b6a1f;border-color:#208b6a59}.dt-badge[data-variant=warn]{background:#ffbc5733;border-color:#ffbc5773}.dt-badge[data-variant=error]{background:#e600181f;border-color:#e6001859}.dt-badge[data-variant=info]{background:#7390ec24;border-color:#7390ec59}.dt-empty{padding:18px 12px;color:var(--xs-dark-gray)}.dt-actions{display:inline-flex;align-items:center;gap:6px}.dt-action-svg{width:24px;height:24px;display:inline-flex}.dt-action-svg svg{width:24px;height:24px;color:inherit}.dt-action-btn{width:32px;height:32px;border:1px solid var(--xs-light-gray);border-radius:var(--radius-sm);background:var(--white);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--xs-dark-gray)}.dt-action-btn:hover:not(:disabled){background:var(--gray-white);border-color:var(--dark-gray)}.dt-action-btn.dt-action--edit{color:var(--blue)}.dt-action-btn.dt-action--edit:hover:not(:disabled){color:var(--white);background-color:var(--blue)}.dt-action-btn.dt-action--open{color:var(--blue-medium)}.dt-action-btn.dt-action--open:hover:not(:disabled){color:var(--blue-dark)}.dt-action-btn.dt-action--copy{color:var(--xs-dark-gray)}.dt-action-btn.dt-action--copy:hover:not(:disabled){color:var(--white);background-color:var(--xs-dark-gray)}.dt-action-btn.dt-action--delete{color:var(--red)}.dt-action-btn.dt-action--delete:hover:not(:disabled){color:var(--white);background-color:var(--red)}.dt-action-btn:disabled{color:var(--disabled-text);background:var(--soft-white);cursor:not-allowed}.dt-action-text{font-size:24px;padding:0 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
666
675
  }
667
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TableGridComponent, decorators: [{
676
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: TableGridComponent, decorators: [{
668
677
  type: Component,
669
678
  args: [{ selector: 'table-grid', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"dt-grid\">\r\n <div class=\"dt-xscroll\">\r\n <!-- Header -->\r\n <div class=\"dt-row dt-header\" [style.gridTemplateColumns]=\"gridTemplateColumns()\">\r\n @if (showSelectionColumn()) {\r\n <div class=\"dt-cell dt-cell--header dt-cell--center dt-select-col\">\r\n @if ((config().selectionMode ?? 'multiple') === 'multiple') {\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"isAllSelectedOnPage()\"\r\n (change)=\"onToggleAllOnPage()\"\r\n aria-label=\"Select all\"\r\n />\r\n }\r\n </div>\r\n }\r\n\r\n @for (col of columns(); track col.key) {\r\n <div\r\n class=\"dt-cell dt-cell--header\"\r\n [class.dt-cell--sortable]=\"!!col.sortable\"\r\n [attr.data-align]=\"col.align ?? 'left'\"\r\n (click)=\"onHeaderClickSort(col)\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n >\r\n <span class=\"dt-header-label\">{{ col.label }}</span>\r\n @if (col.sortable) {\r\n <span class=\"dt-sort\">{{ getSortIcon(col.key) }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Filters row (under header) -->\r\n @if (config().columnFilters) {\r\n <div class=\"dt-row dt-filters\" [style.gridTemplateColumns]=\"gridTemplateColumns()\">\r\n @if (showSelectionColumn()) {\r\n <div class=\"dt-cell dt-cell--filter dt-select-col\"></div>\r\n }\r\n\r\n @for (col of columns(); track col.key) {\r\n <div class=\"dt-cell dt-cell--filter\" [attr.data-align]=\"col.align ?? 'left'\">\r\n @if (col.filterable) {\r\n <input\r\n type=\"text\"\r\n [value]=\"columnQueries()[col.key] ?? null\"\r\n (input)=\"onColumnQueryInput(col.key, $any($event.target).value)\"\r\n [placeholder]=\"i18n().filter + ' ' + col.label\"\r\n />\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Body -->\r\n <div\r\n class=\"dt-body\"\r\n [style.maxHeight.px]=\"config().scroll?.heightPx ?? null\"\r\n (scroll)=\"onBodyScroll($event)\"\r\n >\r\n @if (rows().length === 0) {\r\n <div class=\"dt-empty\">\r\n {{ config().emptyText ?? i18n().empty }}\r\n </div>\r\n } @else {\r\n @for (row of rows(); track getRowId(row)) {\r\n <div class=\"dt-row dt-data\" [style.gridTemplateColumns]=\"gridTemplateColumns()\">\r\n @if (showSelectionColumn()) {\r\n <div class=\"dt-cell dt-cell--center dt-select-col\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"isSelected(row)\"\r\n (change)=\"onToggleRow(row)\"\r\n aria-label=\"Seleccionar fila\"\r\n />\r\n </div>\r\n }\r\n\r\n @for (col of columns(); track col.key) {\r\n <div\r\n class=\"dt-cell\"\r\n [attr.data-align]=\"col.align ?? 'left'\"\r\n (click)=\"onRowClick(row)\"\r\n >\r\n @switch (col.type) {\r\n @case ('image') {\r\n @if ((col.options?.image?.hidden ?? false) === true) {\r\n <button\r\n type=\"button\"\r\n class=\"dt-link\"\r\n (click)=\"onOpenImage(getImageSrc(row, col), getImageAlt(row, col), $event)\"\r\n >\r\n {{ i18n().seeImage }}\r\n </button>\r\n } @else {\r\n <img\r\n class=\"dt-img\"\r\n [class.dt-img--full]=\"!!col.options?.image?.showFull\"\r\n [src]=\"getImageSrc(row, col)\"\r\n [alt]=\"getImageAlt(row, col)\"\r\n (click)=\"\r\n (col.options?.image?.openInModal ?? true) &&\r\n onOpenImage(getImageSrc(row, col), getImageAlt(row, col), $event)\r\n \"\r\n />\r\n }\r\n }\r\n\r\n @case ('status') {\r\n <span class=\"dt-badge\" [attr.data-variant]=\"getStatusClass(row, col)\">\r\n {{ getDisplayText(row, col) }}\r\n </span>\r\n }\r\n\r\n @case ('link') {\r\n <a\r\n class=\"dt-link\"\r\n [href]=\"getLinkHref(row, col)\"\r\n [target]=\"col.options?.link?.target ?? '_blank'\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n {{ getLinkLabel(row, col) }}\r\n </a>\r\n }\r\n\r\n @case ('actions') {\r\n <div class=\"dt-actions\">\r\n @for (action of getColumnActions(col); track action.id) {\r\n @if (isActionVisible(action, row)) {\r\n <button\r\n type=\"button\"\r\n class=\"dt-action-btn\"\r\n [class.dt-action--edit]=\"action.id === 'edit'\"\r\n [class.dt-action--delete]=\"action.id === 'delete'\"\r\n [class.dt-action--open]=\"action.id === 'open'\"\r\n [class.dt-action--copy]=\"action.id === 'copy'\"\r\n [disabled]=\"isActionDisabled(action, row)\"\r\n [title]=\"action.tooltip ?? action.label\"\r\n (click)=\"emitAction(action, row, $event)\"\r\n >\r\n @if ((action.render ?? 'icon') === 'text') {\r\n <span class=\"dt-action-text\">{{ action.label }}</span>\r\n } @else {\r\n <span class=\"dt-action-svg\" [innerHTML]=\"getActionSvg(action)\"></span>\r\n }\r\n </button>\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n @default {\r\n <span class=\"dt-text\">{{ getDisplayText(row, col) }}</span>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".dt-grid{width:100%}.dt-row{display:grid;align-items:stretch;min-width:max-content}.dt-xscroll{overflow-x:auto;overflow-y:hidden}.dt-header{background:var(--gray-white);border-bottom:var(--border);font-weight:600;color:var(--black)}.dt-cell--header{-webkit-user-select:none;user-select:none}.dt-cell--sortable{cursor:pointer}.dt-filters{background:var(--xxs-light-gray);border-bottom:var(--border)}.dt-cell--filter{padding:8px 12px;font-size:10px}input{width:100%;padding:7px 8px;border:1px solid var(--light-gray);border-radius:var(--radius-sm);background:var(--white);color:var(--black);outline:none}input::placeholder{color:var(--xs-dark-gray);font-size:11px}input:focus{border-color:var(--blue);box-shadow:var(--focus-ring)}.dt-body{overflow-y:auto;overflow-x:hidden;min-width:max-content}@media(max-heicg:900px){.dt-body{max-height:none!important;overflow-y:visible!important;overflow-x:auto!important}}.dt-cell{padding:10px 12px;min-height:30px;border-bottom:1px solid var(--xxs-light-gray);display:flex;align-items:center;gap:8px;color:var(--black)}.dt-cell[data-align=left]{justify-content:flex-start;text-align:left}.dt-cell[data-align=center]{justify-content:center;text-align:center}.dt-cell[data-align=right]{justify-content:flex-end;text-align:right}.dt-cell--center,.dt-select-col{justify-content:center}.dt-header-label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dt-sort{margin-left:auto;font-size:12px;opacity:.7;color:var(--xs-dark-gray)}.dt-data:hover{background:var(--gray)}.dt-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dt-img{width:40px;height:40px;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--xs-light-gray);cursor:pointer}.dt-img--full{width:100%;height:auto}.dt-link{color:var(--blue);text-decoration:none;background:transparent;border:none;cursor:pointer;padding:0;font:inherit}.dt-link:hover{text-decoration:underline}.dt-badge{padding:4px 10px;border-radius:999px;border:1px solid var(--xs-light-gray);font-size:12px;background:var(--xxs-light-gray)}.dt-badge[data-variant=success]{background:#208b6a1f;border-color:#208b6a59}.dt-badge[data-variant=warn]{background:#ffbc5733;border-color:#ffbc5773}.dt-badge[data-variant=error]{background:#e600181f;border-color:#e6001859}.dt-badge[data-variant=info]{background:#7390ec24;border-color:#7390ec59}.dt-empty{padding:18px 12px;color:var(--xs-dark-gray)}.dt-actions{display:inline-flex;align-items:center;gap:6px}.dt-action-svg{width:24px;height:24px;display:inline-flex}.dt-action-svg svg{width:24px;height:24px;color:inherit}.dt-action-btn{width:32px;height:32px;border:1px solid var(--xs-light-gray);border-radius:var(--radius-sm);background:var(--white);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:var(--xs-dark-gray)}.dt-action-btn:hover:not(:disabled){background:var(--gray-white);border-color:var(--dark-gray)}.dt-action-btn.dt-action--edit{color:var(--blue)}.dt-action-btn.dt-action--edit:hover:not(:disabled){color:var(--white);background-color:var(--blue)}.dt-action-btn.dt-action--open{color:var(--blue-medium)}.dt-action-btn.dt-action--open:hover:not(:disabled){color:var(--blue-dark)}.dt-action-btn.dt-action--copy{color:var(--xs-dark-gray)}.dt-action-btn.dt-action--copy:hover:not(:disabled){color:var(--white);background-color:var(--xs-dark-gray)}.dt-action-btn.dt-action--delete{color:var(--red)}.dt-action-btn.dt-action--delete:hover:not(:disabled){color:var(--white);background-color:var(--red)}.dt-action-btn:disabled{color:var(--disabled-text);background:var(--soft-white);cursor:not-allowed}.dt-action-text{font-size:24px;padding:0 8px}\n"] }]
670
679
  }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: false }] }], gridTemplateColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "gridTemplateColumns", required: false }] }], columnQueries: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnQueries", required: false }] }], sortState: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortState", required: false }] }], selectedIdsSet: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedIdsSet", required: false }] }], timeZone: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeZone", required: false }] }], i18n: [{ type: i0.Input, args: [{ isSignal: true, alias: "i18n", required: false }] }], headerSort: [{ type: i0.Output, args: ["headerSort"] }], columnQueryChange: [{ type: i0.Output, args: ["columnQueryChange"] }], rowClick: [{ type: i0.Output, args: ["rowClick"] }], toggleRow: [{ type: i0.Output, args: ["toggleRow"] }], toggleAllOnPage: [{ type: i0.Output, args: ["toggleAllOnPage"] }], openImage: [{ type: i0.Output, args: ["openImage"] }], actionClick: [{ type: i0.Output, args: ["actionClick"] }], bodyScroll: [{ type: i0.Output, args: ["bodyScroll"] }] } });
@@ -672,13 +681,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImpor
672
681
  class TablePaginationComponent {
673
682
  Math = Math;
674
683
  // Inputs
675
- page = input(1, ...(ngDevMode ? [{ debugName: "page" }] : []));
676
- pageSize = input(10, ...(ngDevMode ? [{ debugName: "pageSize" }] : []));
677
- pageCount = input(1, ...(ngDevMode ? [{ debugName: "pageCount" }] : []));
678
- totalCount = input(0, ...(ngDevMode ? [{ debugName: "totalCount" }] : []));
679
- pageSizeOptions = input([10, 25, 50], ...(ngDevMode ? [{ debugName: "pageSizeOptions" }] : []));
680
- pagerItems = input([], ...(ngDevMode ? [{ debugName: "pagerItems" }] : []));
681
- i18n = input(TABLE_I18N_DEFAULT, ...(ngDevMode ? [{ debugName: "i18n" }] : []));
684
+ page = input(1, ...(ngDevMode ? [{ debugName: "page" }] : /* istanbul ignore next */ []));
685
+ pageSize = input(10, ...(ngDevMode ? [{ debugName: "pageSize" }] : /* istanbul ignore next */ []));
686
+ pageCount = input(1, ...(ngDevMode ? [{ debugName: "pageCount" }] : /* istanbul ignore next */ []));
687
+ totalCount = input(0, ...(ngDevMode ? [{ debugName: "totalCount" }] : /* istanbul ignore next */ []));
688
+ pageSizeOptions = input([10, 25, 50], ...(ngDevMode ? [{ debugName: "pageSizeOptions" }] : /* istanbul ignore next */ []));
689
+ pagerItems = input([], ...(ngDevMode ? [{ debugName: "pagerItems" }] : /* istanbul ignore next */ []));
690
+ i18n = input(TABLE_I18N_DEFAULT, ...(ngDevMode ? [{ debugName: "i18n" }] : /* istanbul ignore next */ []));
682
691
  // Outputs
683
692
  pageChange = output();
684
693
  pageSizeChange = output();
@@ -686,12 +695,12 @@ class TablePaginationComponent {
686
695
  if (this.totalCount() <= 0)
687
696
  return 0;
688
697
  return (this.page() - 1) * this.pageSize() + 1;
689
- }, ...(ngDevMode ? [{ debugName: "startItem" }] : []));
698
+ }, ...(ngDevMode ? [{ debugName: "startItem" }] : /* istanbul ignore next */ []));
690
699
  endItem = computed(() => {
691
700
  if (this.totalCount() <= 0)
692
701
  return 0;
693
702
  return Math.min(this.page() * this.pageSize(), this.totalCount());
694
- }, ...(ngDevMode ? [{ debugName: "endItem" }] : []));
703
+ }, ...(ngDevMode ? [{ debugName: "endItem" }] : /* istanbul ignore next */ []));
695
704
  goToPage(page) {
696
705
  const clamped = Math.max(1, Math.min(this.pageCount(), page));
697
706
  this.pageChange.emit(clamped);
@@ -707,20 +716,20 @@ class TablePaginationComponent {
707
716
  return;
708
717
  this.pageSizeChange.emit(size);
709
718
  }
710
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TablePaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
711
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: TablePaginationComponent, isStandalone: true, selector: "table-pagination", inputs: { page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pageCount: { classPropertyName: "pageCount", publicName: "pageCount", isSignal: true, isRequired: false, transformFunction: null }, totalCount: { classPropertyName: "totalCount", publicName: "totalCount", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, pagerItems: { classPropertyName: "pagerItems", publicName: "pagerItems", isSignal: true, isRequired: false, transformFunction: null }, i18n: { classPropertyName: "i18n", publicName: "i18n", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange" }, ngImport: i0, template: "<div class=\"dt-pagination dt-pagination--classic\">\r\n <!-- Info -->\r\n <span class=\"dt-page-info dt-hide-sm\">\r\n {{ i18n().showing(startItem(), endItem(), totalCount()) }}\r\n </span>\r\n\r\n <!-- Compact info (mobile) -->\r\n <span class=\"dt-page-compact dt-show-xs\"> {{ page() }} / {{ pageCount() }} </span>\r\n\r\n <!-- Rows per page -->\r\n <div class=\"dt-rows dt-hide-md\">\r\n <span>{{ i18n().rowsPerPage }}</span>\r\n <select [value]=\"pageSize()\" (change)=\"onPageSizeSelect(+$any($event.target).value)\">\r\n @for (size of pageSizeOptions(); track size) {\r\n <option [value]=\"size\">{{ size }}</option>\r\n }\r\n </select>\r\n </div>\r\n\r\n <!-- Pager -->\r\n <div class=\"dt-pager\">\r\n <button\r\n type=\"button\"\r\n class=\"dt-pager-btn dt-hide-sm\"\r\n (click)=\"goToPage(1)\"\r\n [disabled]=\"page() === 1\"\r\n aria-label=\"First page\"\r\n >\r\n <!-- svg -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"m11 18l-6-6l6-6l1.4 1.4L7.825 12l4.575 4.6zm6.6 0l-6-6l6-6L19 7.4L14.425 12L19 16.6z\"\r\n />\r\n </svg>\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"dt-pager-btn\"\r\n (click)=\"prevPage()\"\r\n [disabled]=\"page() === 1\"\r\n aria-label=\"Prev page\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"m14 18l-6-6l6-6l1.4 1.4l-4.6 4.6l4.6 4.6z\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- n\u00FAmeros/ellipsis: se ocultar\u00E1n en XS por CSS -->\r\n @for (item of pagerItems(); track $index) {\r\n @if (item === '\u2026') {\r\n <span class=\"dt-pager-ellipsis dt-hide-xs\">\u2026</span>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n class=\"dt-pager-chip dt-hide-xs\"\r\n [class.dt-pager-chip--active]=\"item === page()\"\r\n (click)=\"goToPage(item)\"\r\n >\r\n {{ item }}\r\n </button>\r\n }\r\n }\r\n\r\n <button\r\n type=\"button\"\r\n class=\"dt-pager-btn\"\r\n (click)=\"nextPage()\"\r\n [disabled]=\"page() === pageCount()\"\r\n aria-label=\"Next page\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M12.6 12L8 7.4L9.4 6l6 6l-6 6L8 16.6z\" />\r\n </svg>\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"dt-pager-btn dt-hide-sm\"\r\n (click)=\"goToPage(pageCount())\"\r\n [disabled]=\"page() === pageCount()\"\r\n aria-label=\"Last page\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M9.575 12L5 7.4L6.4 6l6 6l-6 6L5 16.6zm6.6 0L11.6 7.4L13 6l6 6l-6 6l-1.4-1.4z\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".dt-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;font-size:13px}.dt-page-info{white-space:nowrap;color:var(--xs-dark-gray)}.dt-rows{display:flex;align-items:center;gap:6px;color:var(--xs-dark-gray)}.dt-rows select{padding:6px 28px 6px 8px;border-radius:var(--radius-sm);border:1px solid var(--light-gray);background:var(--white);font-size:13px;color:var(--black)}.dt-pager{display:flex;align-items:center;gap:4px}.dt-pager-btn,.dt-pager-chip{min-width:28px;height:28px;border-radius:var(--radius-sm);border:1px solid var(--xs-light-gray);background:var(--white);cursor:pointer;font-size:13px;display:inline-flex;align-items:center;justify-content:center;line-height:1;padding:0}.dt-pager-btn:hover:not(:disabled),.dt-pager-chip:hover:not(:disabled){border-color:var(--dark-gray);background:var(--gray-white);color:var(--xs-dark-gray)}.dt-pager-chip--active{background:#3361fa;color:var(--white);border-color:var(--blue);font-weight:600}.dt-pager-chip--active:hover:not(:disabled){background:#3361fa;color:var(--white);border-color:var(--blue)}.dt-pager-btn:disabled,.dt-pager-chip:disabled{opacity:1;color:var(--disabled-text);background:var(--soft-white);border-color:var(--disabled);cursor:not-allowed}.dt-pager-ellipsis{padding:0 6px;color:var(--xs-dark-gray)}.dt-hide-xs,.dt-hide-sm,.dt-hide-md{display:inline-flex}.dt-show-xs{display:none}.dt-page-compact{white-space:nowrap;color:var(--xs-dark-gray)}@media(max-width:1200px){.dt-hide-md{display:none!important}}@media(max-width:900px){.dt-hide-sm{display:none!important}.dt-pagination{justify-content:center}}@media(max-width:640px){.dt-hide-xs{display:none!important}.dt-show-xs{display:inline-flex!important}.dt-pagination{gap:10px}.dt-pager{gap:8px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
719
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: TablePaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
720
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: TablePaginationComponent, isStandalone: true, selector: "table-pagination", inputs: { page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pageCount: { classPropertyName: "pageCount", publicName: "pageCount", isSignal: true, isRequired: false, transformFunction: null }, totalCount: { classPropertyName: "totalCount", publicName: "totalCount", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, pagerItems: { classPropertyName: "pagerItems", publicName: "pagerItems", isSignal: true, isRequired: false, transformFunction: null }, i18n: { classPropertyName: "i18n", publicName: "i18n", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageChange: "pageChange", pageSizeChange: "pageSizeChange" }, ngImport: i0, template: "<div class=\"dt-pagination dt-pagination--classic\">\r\n <!-- Info -->\r\n <span class=\"dt-page-info dt-hide-sm\">\r\n {{ i18n().showing(startItem(), endItem(), totalCount()) }}\r\n </span>\r\n\r\n <!-- Compact info (mobile) -->\r\n <span class=\"dt-page-compact dt-show-xs\"> {{ page() }} / {{ pageCount() }} </span>\r\n\r\n <!-- Rows per page -->\r\n <div class=\"dt-rows dt-hide-md\">\r\n <span>{{ i18n().rowsPerPage }}</span>\r\n <select [value]=\"pageSize()\" (change)=\"onPageSizeSelect(+$any($event.target).value)\">\r\n @for (size of pageSizeOptions(); track size) {\r\n <option [value]=\"size\">{{ size }}</option>\r\n }\r\n </select>\r\n </div>\r\n\r\n <!-- Pager -->\r\n <div class=\"dt-pager\">\r\n <button\r\n type=\"button\"\r\n class=\"dt-pager-btn dt-hide-sm\"\r\n (click)=\"goToPage(1)\"\r\n [disabled]=\"page() === 1\"\r\n aria-label=\"First page\"\r\n >\r\n <!-- svg -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"m11 18l-6-6l6-6l1.4 1.4L7.825 12l4.575 4.6zm6.6 0l-6-6l6-6L19 7.4L14.425 12L19 16.6z\"\r\n />\r\n </svg>\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"dt-pager-btn\"\r\n (click)=\"prevPage()\"\r\n [disabled]=\"page() === 1\"\r\n aria-label=\"Prev page\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"m14 18l-6-6l6-6l1.4 1.4l-4.6 4.6l4.6 4.6z\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- n\u00FAmeros/ellipsis: se ocultar\u00E1n en XS por CSS -->\r\n @for (item of pagerItems(); track $index) {\r\n @if (item === '\u2026') {\r\n <span class=\"dt-pager-ellipsis dt-hide-xs\">\u2026</span>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n class=\"dt-pager-chip dt-hide-xs\"\r\n [class.dt-pager-chip--active]=\"item === page()\"\r\n (click)=\"goToPage(item)\"\r\n >\r\n {{ item }}\r\n </button>\r\n }\r\n }\r\n\r\n <button\r\n type=\"button\"\r\n class=\"dt-pager-btn\"\r\n (click)=\"nextPage()\"\r\n [disabled]=\"page() === pageCount()\"\r\n aria-label=\"Next page\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M12.6 12L8 7.4L9.4 6l6 6l-6 6L8 16.6z\" />\r\n </svg>\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"dt-pager-btn dt-hide-sm\"\r\n (click)=\"goToPage(pageCount())\"\r\n [disabled]=\"page() === pageCount()\"\r\n aria-label=\"Last page\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M9.575 12L5 7.4L6.4 6l6 6l-6 6L5 16.6zm6.6 0L11.6 7.4L13 6l6 6l-6 6l-1.4-1.4z\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".dt-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;font-size:13px}.dt-page-info{white-space:nowrap;color:var(--xs-dark-gray)}.dt-rows{display:flex;align-items:center;gap:6px;color:var(--xs-dark-gray)}.dt-rows select{padding:6px 28px 6px 8px;border-radius:var(--radius-sm);border:1px solid var(--light-gray);background:var(--white);font-size:13px;color:var(--black)}.dt-pager{display:flex;align-items:center;gap:4px}.dt-pager-btn,.dt-pager-chip{min-width:28px;height:28px;border-radius:var(--radius-sm);border:1px solid var(--xs-light-gray);background:var(--white);cursor:pointer;font-size:13px;display:inline-flex;align-items:center;justify-content:center;line-height:1;padding:0}.dt-pager-btn:hover:not(:disabled),.dt-pager-chip:hover:not(:disabled){border-color:var(--dark-gray);background:var(--gray-white);color:var(--xs-dark-gray)}.dt-pager-chip--active{background:#3361fa;color:var(--white);border-color:var(--blue);font-weight:600}.dt-pager-chip--active:hover:not(:disabled){background:#3361fa;color:var(--white);border-color:var(--blue)}.dt-pager-btn:disabled,.dt-pager-chip:disabled{opacity:1;color:var(--disabled-text);background:var(--soft-white);border-color:var(--disabled);cursor:not-allowed}.dt-pager-ellipsis{padding:0 6px;color:var(--xs-dark-gray)}.dt-hide-xs,.dt-hide-sm,.dt-hide-md{display:inline-flex}.dt-show-xs{display:none}.dt-page-compact{white-space:nowrap;color:var(--xs-dark-gray)}@media(max-width:1200px){.dt-hide-md{display:none!important}}@media(max-width:900px){.dt-hide-sm{display:none!important}.dt-pagination{justify-content:center}}@media(max-width:640px){.dt-hide-xs{display:none!important}.dt-show-xs{display:inline-flex!important}.dt-pagination{gap:10px}.dt-pager{gap:8px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
712
721
  }
713
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TablePaginationComponent, decorators: [{
722
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: TablePaginationComponent, decorators: [{
714
723
  type: Component,
715
724
  args: [{ selector: 'table-pagination', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"dt-pagination dt-pagination--classic\">\r\n <!-- Info -->\r\n <span class=\"dt-page-info dt-hide-sm\">\r\n {{ i18n().showing(startItem(), endItem(), totalCount()) }}\r\n </span>\r\n\r\n <!-- Compact info (mobile) -->\r\n <span class=\"dt-page-compact dt-show-xs\"> {{ page() }} / {{ pageCount() }} </span>\r\n\r\n <!-- Rows per page -->\r\n <div class=\"dt-rows dt-hide-md\">\r\n <span>{{ i18n().rowsPerPage }}</span>\r\n <select [value]=\"pageSize()\" (change)=\"onPageSizeSelect(+$any($event.target).value)\">\r\n @for (size of pageSizeOptions(); track size) {\r\n <option [value]=\"size\">{{ size }}</option>\r\n }\r\n </select>\r\n </div>\r\n\r\n <!-- Pager -->\r\n <div class=\"dt-pager\">\r\n <button\r\n type=\"button\"\r\n class=\"dt-pager-btn dt-hide-sm\"\r\n (click)=\"goToPage(1)\"\r\n [disabled]=\"page() === 1\"\r\n aria-label=\"First page\"\r\n >\r\n <!-- svg -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"m11 18l-6-6l6-6l1.4 1.4L7.825 12l4.575 4.6zm6.6 0l-6-6l6-6L19 7.4L14.425 12L19 16.6z\"\r\n />\r\n </svg>\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"dt-pager-btn\"\r\n (click)=\"prevPage()\"\r\n [disabled]=\"page() === 1\"\r\n aria-label=\"Prev page\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"m14 18l-6-6l6-6l1.4 1.4l-4.6 4.6l4.6 4.6z\" />\r\n </svg>\r\n </button>\r\n\r\n <!-- n\u00FAmeros/ellipsis: se ocultar\u00E1n en XS por CSS -->\r\n @for (item of pagerItems(); track $index) {\r\n @if (item === '\u2026') {\r\n <span class=\"dt-pager-ellipsis dt-hide-xs\">\u2026</span>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n class=\"dt-pager-chip dt-hide-xs\"\r\n [class.dt-pager-chip--active]=\"item === page()\"\r\n (click)=\"goToPage(item)\"\r\n >\r\n {{ item }}\r\n </button>\r\n }\r\n }\r\n\r\n <button\r\n type=\"button\"\r\n class=\"dt-pager-btn\"\r\n (click)=\"nextPage()\"\r\n [disabled]=\"page() === pageCount()\"\r\n aria-label=\"Next page\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <path fill=\"currentColor\" d=\"M12.6 12L8 7.4L9.4 6l6 6l-6 6L8 16.6z\" />\r\n </svg>\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"dt-pager-btn dt-hide-sm\"\r\n (click)=\"goToPage(pageCount())\"\r\n [disabled]=\"page() === pageCount()\"\r\n aria-label=\"Last page\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n <path\r\n fill=\"currentColor\"\r\n d=\"M9.575 12L5 7.4L6.4 6l6 6l-6 6L5 16.6zm6.6 0L11.6 7.4L13 6l6 6l-6 6l-1.4-1.4z\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".dt-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;font-size:13px}.dt-page-info{white-space:nowrap;color:var(--xs-dark-gray)}.dt-rows{display:flex;align-items:center;gap:6px;color:var(--xs-dark-gray)}.dt-rows select{padding:6px 28px 6px 8px;border-radius:var(--radius-sm);border:1px solid var(--light-gray);background:var(--white);font-size:13px;color:var(--black)}.dt-pager{display:flex;align-items:center;gap:4px}.dt-pager-btn,.dt-pager-chip{min-width:28px;height:28px;border-radius:var(--radius-sm);border:1px solid var(--xs-light-gray);background:var(--white);cursor:pointer;font-size:13px;display:inline-flex;align-items:center;justify-content:center;line-height:1;padding:0}.dt-pager-btn:hover:not(:disabled),.dt-pager-chip:hover:not(:disabled){border-color:var(--dark-gray);background:var(--gray-white);color:var(--xs-dark-gray)}.dt-pager-chip--active{background:#3361fa;color:var(--white);border-color:var(--blue);font-weight:600}.dt-pager-chip--active:hover:not(:disabled){background:#3361fa;color:var(--white);border-color:var(--blue)}.dt-pager-btn:disabled,.dt-pager-chip:disabled{opacity:1;color:var(--disabled-text);background:var(--soft-white);border-color:var(--disabled);cursor:not-allowed}.dt-pager-ellipsis{padding:0 6px;color:var(--xs-dark-gray)}.dt-hide-xs,.dt-hide-sm,.dt-hide-md{display:inline-flex}.dt-show-xs{display:none}.dt-page-compact{white-space:nowrap;color:var(--xs-dark-gray)}@media(max-width:1200px){.dt-hide-md{display:none!important}}@media(max-width:900px){.dt-hide-sm{display:none!important}.dt-pagination{justify-content:center}}@media(max-width:640px){.dt-hide-xs{display:none!important}.dt-show-xs{display:inline-flex!important}.dt-pagination{gap:10px}.dt-pager{gap:8px}}\n"] }]
716
725
  }], propDecorators: { page: [{ type: i0.Input, args: [{ isSignal: true, alias: "page", required: false }] }], pageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSize", required: false }] }], pageCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageCount", required: false }] }], totalCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalCount", required: false }] }], pageSizeOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSizeOptions", required: false }] }], pagerItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "pagerItems", required: false }] }], i18n: [{ type: i0.Input, args: [{ isSignal: true, alias: "i18n", required: false }] }], pageChange: [{ type: i0.Output, args: ["pageChange"] }], pageSizeChange: [{ type: i0.Output, args: ["pageSizeChange"] }] } });
717
726
 
718
727
  class TableToolbarComponent {
719
728
  // Inputs
720
- enabled = input(true, ...(ngDevMode ? [{ debugName: "enabled" }] : []));
721
- query = input('', ...(ngDevMode ? [{ debugName: "query" }] : []));
722
- showClear = input(true, ...(ngDevMode ? [{ debugName: "showClear" }] : []));
723
- i18n = input(TABLE_I18N_DEFAULT, ...(ngDevMode ? [{ debugName: "i18n" }] : []));
729
+ enabled = input(true, ...(ngDevMode ? [{ debugName: "enabled" }] : /* istanbul ignore next */ []));
730
+ query = input('', ...(ngDevMode ? [{ debugName: "query" }] : /* istanbul ignore next */ []));
731
+ showClear = input(true, ...(ngDevMode ? [{ debugName: "showClear" }] : /* istanbul ignore next */ []));
732
+ i18n = input(TABLE_I18N_DEFAULT, ...(ngDevMode ? [{ debugName: "i18n" }] : /* istanbul ignore next */ []));
724
733
  // Outputs
725
734
  queryChange = output();
726
735
  clear = output();
@@ -730,18 +739,18 @@ class TableToolbarComponent {
730
739
  onClear() {
731
740
  this.clear.emit();
732
741
  }
733
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TableToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
734
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: TableToolbarComponent, isStandalone: true, selector: "table-toolbar", inputs: { enabled: { classPropertyName: "enabled", publicName: "enabled", isSignal: true, isRequired: false, transformFunction: null }, query: { classPropertyName: "query", publicName: "query", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, i18n: { classPropertyName: "i18n", publicName: "i18n", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { queryChange: "queryChange", clear: "clear" }, ngImport: i0, template: "@if (enabled()) {\r\n <div class=\"dt-toolbar\">\r\n <input\r\n class=\"dt-input\"\r\n type=\"text\"\r\n [placeholder]=\"i18n().search\"\r\n [value]=\"query()\"\r\n (input)=\"onInput($any($event.target).value)\"\r\n />\r\n\r\n @if (showClear()) {\r\n <button type=\"button\" class=\"dt-btn\" (click)=\"onClear()\">{{ i18n().clear }}</button>\r\n }\r\n </div>\r\n}\r\n", styles: [".dt-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px}.dt-input{width:100%;max-width:360px;padding:8px 10px;border-radius:var(--radius-sm);border:var(--border);outline:none}.dt-input:focus{box-shadow:0 0 0 3px #2563eb26}.dt-btn{padding:8px 10px;border-radius:var(--radius-sm);border:var(--border);background:var(--white);cursor:pointer}.dt-btn:hover{filter:brightness(.98)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
742
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: TableToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
743
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: TableToolbarComponent, isStandalone: true, selector: "table-toolbar", inputs: { enabled: { classPropertyName: "enabled", publicName: "enabled", isSignal: true, isRequired: false, transformFunction: null }, query: { classPropertyName: "query", publicName: "query", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, i18n: { classPropertyName: "i18n", publicName: "i18n", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { queryChange: "queryChange", clear: "clear" }, ngImport: i0, template: "@if (enabled()) {\r\n <div class=\"dt-toolbar\">\r\n <input\r\n class=\"dt-input\"\r\n type=\"text\"\r\n [placeholder]=\"i18n().search\"\r\n [value]=\"query()\"\r\n (input)=\"onInput($any($event.target).value)\"\r\n />\r\n\r\n @if (showClear()) {\r\n <button type=\"button\" class=\"dt-btn\" (click)=\"onClear()\">{{ i18n().clear }}</button>\r\n }\r\n </div>\r\n}\r\n", styles: [".dt-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px}.dt-input{width:100%;max-width:360px;padding:8px 10px;border-radius:var(--radius-sm);border:var(--border);outline:none}.dt-input:focus{box-shadow:0 0 0 3px #2563eb26}.dt-btn{padding:8px 10px;border-radius:var(--radius-sm);border:var(--border);background:var(--white);cursor:pointer}.dt-btn:hover{filter:brightness(.98)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
735
744
  }
736
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: TableToolbarComponent, decorators: [{
745
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: TableToolbarComponent, decorators: [{
737
746
  type: Component,
738
747
  args: [{ selector: 'table-toolbar', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (enabled()) {\r\n <div class=\"dt-toolbar\">\r\n <input\r\n class=\"dt-input\"\r\n type=\"text\"\r\n [placeholder]=\"i18n().search\"\r\n [value]=\"query()\"\r\n (input)=\"onInput($any($event.target).value)\"\r\n />\r\n\r\n @if (showClear()) {\r\n <button type=\"button\" class=\"dt-btn\" (click)=\"onClear()\">{{ i18n().clear }}</button>\r\n }\r\n </div>\r\n}\r\n", styles: [".dt-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px}.dt-input{width:100%;max-width:360px;padding:8px 10px;border-radius:var(--radius-sm);border:var(--border);outline:none}.dt-input:focus{box-shadow:0 0 0 3px #2563eb26}.dt-btn{padding:8px 10px;border-radius:var(--radius-sm);border:var(--border);background:var(--white);cursor:pointer}.dt-btn:hover{filter:brightness(.98)}\n"] }]
739
748
  }], propDecorators: { enabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "enabled", required: false }] }], query: [{ type: i0.Input, args: [{ isSignal: true, alias: "query", required: false }] }], showClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClear", required: false }] }], i18n: [{ type: i0.Input, args: [{ isSignal: true, alias: "i18n", required: false }] }], queryChange: [{ type: i0.Output, args: ["queryChange"] }], clear: [{ type: i0.Output, args: ["clear"] }] } });
740
749
 
741
750
  class AdvancedTable {
742
751
  // Inputs
743
- columns = input([], ...(ngDevMode ? [{ debugName: "columns" }] : []));
744
- data = input([], ...(ngDevMode ? [{ debugName: "data" }] : []));
752
+ columns = input([], ...(ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []));
753
+ data = input([], ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
745
754
  config = input({
746
755
  globalSearch: true,
747
756
  columnFilters: false,
@@ -752,7 +761,7 @@ class AdvancedTable {
752
761
  emptyText: 'Sin resultados',
753
762
  rowIdKey: 'id',
754
763
  globalSearchVisibleOnly: true,
755
- }, ...(ngDevMode ? [{ debugName: "config" }] : []));
764
+ }, ...(ngDevMode ? [{ debugName: "config" }] : /* istanbul ignore next */ []));
756
765
  set lang(value) {
757
766
  this._lang.set(value ?? TABLE_LANG_DEFAULT);
758
767
  }
@@ -764,22 +773,22 @@ class AdvancedTable {
764
773
  selectionChange = output();
765
774
  actionClick = output();
766
775
  // Signals
767
- globalQuery = signal('', ...(ngDevMode ? [{ debugName: "globalQuery" }] : []));
768
- columnQueries = signal({}, ...(ngDevMode ? [{ debugName: "columnQueries" }] : []));
769
- sortState = signal(null, ...(ngDevMode ? [{ debugName: "sortState" }] : []));
770
- page = signal(1, ...(ngDevMode ? [{ debugName: "page" }] : []));
771
- visibleCount = signal(0, ...(ngDevMode ? [{ debugName: "visibleCount" }] : []));
772
- modalOpen = signal(false, ...(ngDevMode ? [{ debugName: "modalOpen" }] : []));
773
- modalImageSrc = signal('', ...(ngDevMode ? [{ debugName: "modalImageSrc" }] : []));
774
- modalImageAlt = signal('', ...(ngDevMode ? [{ debugName: "modalImageAlt" }] : []));
775
- selectedIdsSet = signal(new Set(), ...(ngDevMode ? [{ debugName: "selectedIdsSet" }] : []));
776
- pageSize = signal(this.config().pagination?.pageSize ?? 10, ...(ngDevMode ? [{ debugName: "pageSize" }] : []));
777
- _lang = signal(TABLE_LANG_DEFAULT, ...(ngDevMode ? [{ debugName: "_lang" }] : []));
778
- _override = signal({}, ...(ngDevMode ? [{ debugName: "_override" }] : []));
776
+ globalQuery = signal('', ...(ngDevMode ? [{ debugName: "globalQuery" }] : /* istanbul ignore next */ []));
777
+ columnQueries = signal({}, ...(ngDevMode ? [{ debugName: "columnQueries" }] : /* istanbul ignore next */ []));
778
+ sortState = signal(null, ...(ngDevMode ? [{ debugName: "sortState" }] : /* istanbul ignore next */ []));
779
+ page = signal(1, ...(ngDevMode ? [{ debugName: "page" }] : /* istanbul ignore next */ []));
780
+ visibleCount = signal(0, ...(ngDevMode ? [{ debugName: "visibleCount" }] : /* istanbul ignore next */ []));
781
+ modalOpen = signal(false, ...(ngDevMode ? [{ debugName: "modalOpen" }] : /* istanbul ignore next */ []));
782
+ modalImageSrc = signal('', ...(ngDevMode ? [{ debugName: "modalImageSrc" }] : /* istanbul ignore next */ []));
783
+ modalImageAlt = signal('', ...(ngDevMode ? [{ debugName: "modalImageAlt" }] : /* istanbul ignore next */ []));
784
+ selectedIdsSet = signal(new Set(), ...(ngDevMode ? [{ debugName: "selectedIdsSet" }] : /* istanbul ignore next */ []));
785
+ pageSize = signal(this.config().pagination?.pageSize ?? 10, ...(ngDevMode ? [{ debugName: "pageSize" }] : /* istanbul ignore next */ []));
786
+ _lang = signal(TABLE_LANG_DEFAULT, ...(ngDevMode ? [{ debugName: "_lang" }] : /* istanbul ignore next */ []));
787
+ _override = signal({}, ...(ngDevMode ? [{ debugName: "_override" }] : /* istanbul ignore next */ []));
779
788
  // Computed Data
780
- selectedIds = computed(() => Array.from(this.selectedIdsSet()), ...(ngDevMode ? [{ debugName: "selectedIds" }] : []));
781
- visibleColumns = computed(() => (this.columns() ?? []).filter((c) => !c.hidden), ...(ngDevMode ? [{ debugName: "visibleColumns" }] : []));
782
- showSelectionColumn = computed(() => !!this.config().selectable, ...(ngDevMode ? [{ debugName: "showSelectionColumn" }] : []));
789
+ selectedIds = computed(() => Array.from(this.selectedIdsSet()), ...(ngDevMode ? [{ debugName: "selectedIds" }] : /* istanbul ignore next */ []));
790
+ visibleColumns = computed(() => (this.columns() ?? []).filter((c) => !c.hidden), ...(ngDevMode ? [{ debugName: "visibleColumns" }] : /* istanbul ignore next */ []));
791
+ showSelectionColumn = computed(() => !!this.config().selectable, ...(ngDevMode ? [{ debugName: "showSelectionColumn" }] : /* istanbul ignore next */ []));
783
792
  gridTemplateColumns = computed(() => {
784
793
  const cols = [];
785
794
  if (this.showSelectionColumn())
@@ -788,7 +797,7 @@ class AdvancedTable {
788
797
  cols.push(this.sizeToCss(c.size));
789
798
  }
790
799
  return cols.join(' ');
791
- }, ...(ngDevMode ? [{ debugName: "gridTemplateColumns" }] : []));
800
+ }, ...(ngDevMode ? [{ debugName: "gridTemplateColumns" }] : /* istanbul ignore next */ []));
792
801
  filteredData = computed(() => {
793
802
  const rows = this.data() ?? [];
794
803
  const colsAll = this.columns() ?? [];
@@ -827,7 +836,7 @@ class AdvancedTable {
827
836
  }
828
837
  return true;
829
838
  });
830
- }, ...(ngDevMode ? [{ debugName: "filteredData" }] : []));
839
+ }, ...(ngDevMode ? [{ debugName: "filteredData" }] : /* istanbul ignore next */ []));
831
840
  sortedData = computed(() => {
832
841
  const data = [...this.filteredData()];
833
842
  const sort = this.sortState();
@@ -843,7 +852,7 @@ class AdvancedTable {
843
852
  return dir * this.compareValues(va, vb, col.type);
844
853
  });
845
854
  return data;
846
- }, ...(ngDevMode ? [{ debugName: "sortedData" }] : []));
855
+ }, ...(ngDevMode ? [{ debugName: "sortedData" }] : /* istanbul ignore next */ []));
847
856
  pagedData = computed(() => {
848
857
  const config = this.config();
849
858
  const rows = this.sortedData();
@@ -861,7 +870,7 @@ class AdvancedTable {
861
870
  return cappedRows.slice(start, start + size);
862
871
  }
863
872
  return cappedRows;
864
- }, ...(ngDevMode ? [{ debugName: "pagedData" }] : []));
873
+ }, ...(ngDevMode ? [{ debugName: "pagedData" }] : /* istanbul ignore next */ []));
865
874
  pagerItems = computed(() => {
866
875
  const config = this.config();
867
876
  if (!config.pagination?.enabled)
@@ -889,14 +898,14 @@ class AdvancedTable {
889
898
  items.push('…');
890
899
  items.push(last);
891
900
  return items;
892
- }, ...(ngDevMode ? [{ debugName: "pagerItems" }] : []));
893
- totalCount = computed(() => this.sortedData().length, ...(ngDevMode ? [{ debugName: "totalCount" }] : []));
901
+ }, ...(ngDevMode ? [{ debugName: "pagerItems" }] : /* istanbul ignore next */ []));
902
+ totalCount = computed(() => this.sortedData().length, ...(ngDevMode ? [{ debugName: "totalCount" }] : /* istanbul ignore next */ []));
894
903
  pageCount = computed(() => {
895
904
  const config = this.config();
896
905
  if (!config.pagination?.enabled)
897
906
  return 1;
898
907
  return Math.max(1, Math.ceil(this.totalCount() / this.pageSize()));
899
- }, ...(ngDevMode ? [{ debugName: "pageCount" }] : []));
908
+ }, ...(ngDevMode ? [{ debugName: "pageCount" }] : /* istanbul ignore next */ []));
900
909
  isAllSelectedOnPage = computed(() => {
901
910
  if (!this.showSelectionColumn())
902
911
  return false;
@@ -905,12 +914,12 @@ class AdvancedTable {
905
914
  return false;
906
915
  const set = this.selectedIdsSet();
907
916
  return ids.every((id) => set.has(id));
908
- }, ...(ngDevMode ? [{ debugName: "isAllSelectedOnPage" }] : []));
917
+ }, ...(ngDevMode ? [{ debugName: "isAllSelectedOnPage" }] : /* istanbul ignore next */ []));
909
918
  i18nCom = computed(() => {
910
919
  const base = TABLE_I18N_BY_LANG[this._lang()];
911
920
  const override = this._override();
912
921
  return { ...base, ...override };
913
- }, ...(ngDevMode ? [{ debugName: "i18nCom" }] : []));
922
+ }, ...(ngDevMode ? [{ debugName: "i18nCom" }] : /* istanbul ignore next */ []));
914
923
  // Effects
915
924
  infiniteScrollEffect = effect(() => {
916
925
  const config = this.config();
@@ -922,16 +931,16 @@ class AdvancedTable {
922
931
  else {
923
932
  this.visibleCount.set(Number.MAX_SAFE_INTEGER);
924
933
  }
925
- }, ...(ngDevMode ? [{ debugName: "infiniteScrollEffect" }] : []));
934
+ }, ...(ngDevMode ? [{ debugName: "infiniteScrollEffect" }] : /* istanbul ignore next */ []));
926
935
  selectionDataEffect = effect(() => {
927
936
  this.selectionChange.emit(this.selectedIds());
928
- }, ...(ngDevMode ? [{ debugName: "selectionDataEffect" }] : []));
937
+ }, ...(ngDevMode ? [{ debugName: "selectionDataEffect" }] : /* istanbul ignore next */ []));
929
938
  pagesCountEffect = effect(() => {
930
939
  const totalPages = this.pageCount();
931
940
  if (this.page() > totalPages) {
932
941
  this.page.set(totalPages);
933
942
  }
934
- }, ...(ngDevMode ? [{ debugName: "pagesCountEffect" }] : []));
943
+ }, ...(ngDevMode ? [{ debugName: "pagesCountEffect" }] : /* istanbul ignore next */ []));
935
944
  // UI Actions
936
945
  onHeaderClickSort(col) {
937
946
  if (!col.sortable)
@@ -1173,10 +1182,10 @@ class AdvancedTable {
1173
1182
  return value === true ? 'si true yes 1' : 'no false 0';
1174
1183
  return String(value);
1175
1184
  }
1176
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AdvancedTable, deps: [], target: i0.ɵɵFactoryTarget.Component });
1177
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: AdvancedTable, isStandalone: true, selector: "advanced-table", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, lang: { classPropertyName: "lang", publicName: "lang", isSignal: false, isRequired: false, transformFunction: null }, i18n: { classPropertyName: "i18n", publicName: "i18n", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { rowClick: "rowClick", selectionChange: "selectionChange", actionClick: "actionClick" }, ngImport: i0, template: "<div class=\"dt-container\">\r\n <div class=\"dt-toolbar\">\r\n <!-- Search and Clean -->\r\n <table-toolbar\r\n [enabled]=\"config().globalSearch ?? true\"\r\n [query]=\"globalQuery()\"\r\n [i18n]=\"i18nCom()\"\r\n [showClear]=\"true\"\r\n (queryChange)=\"setGlobalQuery($event)\"\r\n (clear)=\"clearFilters()\"\r\n />\r\n\r\n <!-- Pagination -->\r\n @if (config().pagination?.enabled) {\r\n <table-pagination\r\n [page]=\"page()\"\r\n [pageSize]=\"pageSize()\"\r\n [pageCount]=\"pageCount()\"\r\n [totalCount]=\"totalCount()\"\r\n [pagerItems]=\"pagerItems()\"\r\n [pageSizeOptions]=\"config().pagination!.pageSizeOptions ?? [10, 25, 50]\"\r\n [i18n]=\"i18nCom()\"\r\n (pageChange)=\"goToPage($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"\r\n />\r\n }\r\n </div>\r\n\r\n <div class=\"dt-grid\">\r\n <!-- Data Table -->\r\n <table-grid\r\n [config]=\"config()\"\r\n [columns]=\"visibleColumns()\"\r\n [rows]=\"pagedData()\"\r\n [gridTemplateColumns]=\"gridTemplateColumns()\"\r\n [columnQueries]=\"columnQueries()\"\r\n [sortState]=\"sortState()\"\r\n [selectedIdsSet]=\"selectedIdsSet()\"\r\n (headerSort)=\"onHeaderClickSort($event)\"\r\n (columnQueryChange)=\"setColumnQuery($event.key, $event.value)\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (toggleRow)=\"toggleRowSelection($event)\"\r\n (toggleAllOnPage)=\"toggleSelectAllOnPage()\"\r\n (openImage)=\"openImageModal($event.src, $event.alt)\"\r\n (actionClick)=\"actionClick.emit($event)\"\r\n (bodyScroll)=\"onBodyScroll($event)\"\r\n />\r\n </div>\r\n\r\n <!-- Image Modal -->\r\n <table-modal-image\r\n [open]=\"modalOpen()\"\r\n [src]=\"modalImageSrc()\"\r\n [alt]=\"modalImageAlt()\"\r\n (close)=\"closeModal()\"\r\n />\r\n</div>\r\n", styles: [":host{display:block;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;--black: #171717;--black-light: #343434;--black-dark: #000000;--black-navy: #191a21;--xs-dark-gray: #5A5A5A;--dark-gray: #9E9E9E;--medium-gray: #D5D5D5;--gray: #F8F8F8;--light-gray: #C6C6C6;--xs-light-gray: #DFDFDF;--gray-white: #F5F4F4;--xxs-light-gray: #F2F2F2;--soft-white: #EEEEEE;--green-success: #208B6A;--blue: #3360fa;--blue-info: #7390EC;--orange: #F77C00;--yellow-warning: #FFBC57;--red: #E60018;--white: #FFFFFF;--disabled: #C6C6C6;--disabled-text: #9E9E9E;--radius-sm: 4px;--radius-md: 6px;--border: 1px solid var(--xs-light-gray);--focus-ring: 0 0 0 3px rgba(51, 96, 250, .18)}.dt-container{border:var(--border);border-radius:var(--radius-md);background:var(--white);overflow:hidden}.dt-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:var(--border);background:var(--xxs-light-gray)}.dt-empty{padding:18px 12px;color:var(--xs-dark-gray)}@media(max-width:900px){.dt-toolbar{flex-wrap:wrap;align-items:flex-start;row-gap:10px;padding:10px 12px}.dt-toolbar>b2b-table-toolbar{flex:1 1 100%}.dt-toolbar>b2b-table-pagination{flex:1 1 100%;display:flex;justify-content:center}}\n"], dependencies: [{ kind: "component", type: TableModalImageComponent, selector: "table-modal-image", inputs: ["open", "src", "alt"], outputs: ["close"] }, { kind: "component", type: TableGridComponent, selector: "table-grid", inputs: ["config", "columns", "rows", "gridTemplateColumns", "columnQueries", "sortState", "selectedIdsSet", "timeZone", "i18n"], outputs: ["headerSort", "columnQueryChange", "rowClick", "toggleRow", "toggleAllOnPage", "openImage", "actionClick", "bodyScroll"] }, { kind: "component", type: TablePaginationComponent, selector: "table-pagination", inputs: ["page", "pageSize", "pageCount", "totalCount", "pageSizeOptions", "pagerItems", "i18n"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: TableToolbarComponent, selector: "table-toolbar", inputs: ["enabled", "query", "showClear", "i18n"], outputs: ["queryChange", "clear"] }] });
1185
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: AdvancedTable, deps: [], target: i0.ɵɵFactoryTarget.Component });
1186
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: AdvancedTable, isStandalone: true, selector: "advanced-table", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, lang: { classPropertyName: "lang", publicName: "lang", isSignal: false, isRequired: false, transformFunction: null }, i18n: { classPropertyName: "i18n", publicName: "i18n", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { rowClick: "rowClick", selectionChange: "selectionChange", actionClick: "actionClick" }, ngImport: i0, template: "<div class=\"dt-container\">\r\n <div class=\"dt-toolbar\">\r\n <!-- Search and Clean -->\r\n <table-toolbar\r\n [enabled]=\"config().globalSearch ?? true\"\r\n [query]=\"globalQuery()\"\r\n [i18n]=\"i18nCom()\"\r\n [showClear]=\"true\"\r\n (queryChange)=\"setGlobalQuery($event)\"\r\n (clear)=\"clearFilters()\"\r\n />\r\n\r\n <!-- Pagination -->\r\n @if (config().pagination?.enabled) {\r\n <table-pagination\r\n [page]=\"page()\"\r\n [pageSize]=\"pageSize()\"\r\n [pageCount]=\"pageCount()\"\r\n [totalCount]=\"totalCount()\"\r\n [pagerItems]=\"pagerItems()\"\r\n [pageSizeOptions]=\"config().pagination!.pageSizeOptions ?? [10, 25, 50]\"\r\n [i18n]=\"i18nCom()\"\r\n (pageChange)=\"goToPage($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"\r\n />\r\n }\r\n </div>\r\n\r\n <div class=\"dt-grid\">\r\n <!-- Data Table -->\r\n <table-grid\r\n [config]=\"config()\"\r\n [columns]=\"visibleColumns()\"\r\n [rows]=\"pagedData()\"\r\n [gridTemplateColumns]=\"gridTemplateColumns()\"\r\n [columnQueries]=\"columnQueries()\"\r\n [sortState]=\"sortState()\"\r\n [selectedIdsSet]=\"selectedIdsSet()\"\r\n (headerSort)=\"onHeaderClickSort($event)\"\r\n (columnQueryChange)=\"setColumnQuery($event.key, $event.value)\"\r\n (rowClick)=\"onRowClick($event)\"\r\n (toggleRow)=\"toggleRowSelection($event)\"\r\n (toggleAllOnPage)=\"toggleSelectAllOnPage()\"\r\n (openImage)=\"openImageModal($event.src, $event.alt)\"\r\n (actionClick)=\"actionClick.emit($event)\"\r\n (bodyScroll)=\"onBodyScroll($event)\"\r\n />\r\n </div>\r\n\r\n <!-- Image Modal -->\r\n <table-modal-image\r\n [open]=\"modalOpen()\"\r\n [src]=\"modalImageSrc()\"\r\n [alt]=\"modalImageAlt()\"\r\n (close)=\"closeModal()\"\r\n />\r\n</div>\r\n", styles: [":host{display:block;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;--black: #171717;--black-light: #343434;--black-dark: #000000;--black-navy: #191a21;--xs-dark-gray: #5A5A5A;--dark-gray: #9E9E9E;--medium-gray: #D5D5D5;--gray: #F8F8F8;--light-gray: #C6C6C6;--xs-light-gray: #DFDFDF;--gray-white: #F5F4F4;--xxs-light-gray: #F2F2F2;--soft-white: #EEEEEE;--green-success: #208B6A;--blue: #3360fa;--blue-info: #7390EC;--orange: #F77C00;--yellow-warning: #FFBC57;--red: #E60018;--white: #FFFFFF;--disabled: #C6C6C6;--disabled-text: #9E9E9E;--radius-sm: 4px;--radius-md: 6px;--border: 1px solid var(--xs-light-gray);--focus-ring: 0 0 0 3px rgba(51, 96, 250, .18)}.dt-container{border:var(--border);border-radius:var(--radius-md);background:var(--white);overflow:hidden}.dt-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:var(--border);background:var(--xxs-light-gray)}.dt-empty{padding:18px 12px;color:var(--xs-dark-gray)}@media(max-width:900px){.dt-toolbar{flex-wrap:wrap;align-items:flex-start;row-gap:10px;padding:10px 12px}.dt-toolbar>b2b-table-toolbar{flex:1 1 100%}.dt-toolbar>b2b-table-pagination{flex:1 1 100%;display:flex;justify-content:center}}\n"], dependencies: [{ kind: "component", type: TableModalImageComponent, selector: "table-modal-image", inputs: ["open", "src", "alt"], outputs: ["close"] }, { kind: "component", type: TableGridComponent, selector: "table-grid", inputs: ["config", "columns", "rows", "gridTemplateColumns", "columnQueries", "sortState", "selectedIdsSet", "timeZone", "i18n"], outputs: ["headerSort", "columnQueryChange", "rowClick", "toggleRow", "toggleAllOnPage", "openImage", "actionClick", "bodyScroll"] }, { kind: "component", type: TablePaginationComponent, selector: "table-pagination", inputs: ["page", "pageSize", "pageCount", "totalCount", "pageSizeOptions", "pagerItems", "i18n"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: TableToolbarComponent, selector: "table-toolbar", inputs: ["enabled", "query", "showClear", "i18n"], outputs: ["queryChange", "clear"] }] });
1178
1187
  }
1179
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AdvancedTable, decorators: [{
1188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: AdvancedTable, decorators: [{
1180
1189
  type: Component,
1181
1190
  args: [{ selector: 'advanced-table', imports: [
1182
1191
  TableModalImageComponent,