@litigiovirtual/ius-design-components 2.2.4 → 2.2.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.
@@ -1029,7 +1029,7 @@ class PopoverComponent {
1029
1029
  }
1030
1030
  }
1031
1031
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1032
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: PopoverComponent, isStandalone: true, selector: "ius-popover", inputs: { title: "title", content: "content", placement: "placement", trigger: "trigger", offset: ["offset", "offset", numberAttribute], open: "open", defaultOpen: ["defaultOpen", "defaultOpen", booleanAttribute], showArrow: ["showArrow", "showArrow", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], anchorRect: "anchorRect", padding: "padding", dismissable: ["dismissable", "dismissable", booleanAttribute], panelClass: "panelClass" }, outputs: { openChange: "openChange" }, host: { listeners: { "mouseenter": "onHostMouseEnter()", "mouseleave": "onHostMouseLeave()", "focusin": "onHostFocusIn()", "focusout": "onHostFocusOut()", "click": "onHostClick()" } }, viewQueries: [{ propertyName: "panelTpl", first: true, predicate: ["panelTpl"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!-- Trigger (children del golden). El host es el ancla .ius-popover-anchor. -->\r\n<ng-content />\r\n\r\n<!-- Panel flotante \u2014 se estampa en el overlay del CDK v\u00EDa TemplatePortal. -->\r\n<ng-template #panelTpl>\r\n <div\r\n class=\"ius-popover\"\r\n [class]=\"panelClass ?? ''\"\r\n role=\"tooltip\"\r\n [attr.data-side]=\"side()\"\r\n [attr.data-padding]=\"padding\"\r\n >\r\n @if (title != null) {\r\n <div class=\"ius-popover__title\">{{ title }}</div>\r\n }\r\n <div class=\"ius-popover__content\">\r\n @if (content != null) {\r\n {{ content }}\r\n } @else {\r\n <ng-content select=\"[iusPopoverContent]\" />\r\n }\r\n </div>\r\n @if (showArrow) {\r\n <span\r\n class=\"ius-popover__arrow\"\r\n [style.left]=\"arrowLeft()\"\r\n [style.top]=\"arrowTop()\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center}.ius-popover{width:max-content;max-width:280px;min-width:140px;position:relative;background:var(--ius-neutral-white);color:var(--ius-text-primary);border-radius:var(--ius-radius-lg);padding:var(--ius-space-sm) var(--ius-space-md);font-family:var(--ius-font-body);filter:drop-shadow(0 6px 18px rgba(0,0,0,.12)) drop-shadow(0 2px 6px rgba(0,0,0,.06));animation:ius-popover-in .12s var(--ius-ease-decelerate, cubic-bezier(0, 0, .2, 1));pointer-events:auto}@keyframes ius-popover-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.ius-popover__title{font-weight:var(--ius-fw-bold);font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary);margin-bottom:var(--ius-space-xxs)}.ius-popover__content{font-weight:var(--ius-fw-regular);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:.02em;color:var(--ius-text-primary)}.ius-popover__arrow{position:absolute;width:12px;height:12px;background:var(--ius-neutral-white);transform:rotate(45deg)}.ius-popover[data-side=top] .ius-popover__arrow{bottom:-5px}.ius-popover[data-side=bottom] .ius-popover__arrow{top:-5px}.ius-popover[data-side=left] .ius-popover__arrow{right:-5px}.ius-popover[data-side=right] .ius-popover__arrow{left:-5px}.ius-popover[data-padding=compact]{padding:var(--ius-space-xs)}.ius-popover[data-padding=none]{padding:0}.ius-popover.ius-tooltip{min-width:0;max-width:240px;padding:var(--ius-space-xs) var(--ius-space-sm);background:var(--ius-text-primary)}.ius-popover.ius-tooltip .ius-popover__arrow{background:var(--ius-text-primary)}.ius-popover.ius-tooltip .ius-popover__content{font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:normal;text-wrap:balance;color:var(--ius-neutral-white)}.ius-popover.ius-dropdown-pop{padding:var(--ius-space-xxs)}.ius-popover.ius-querybuilder-pop{max-width:none;width:min(720px,100vw - var(--ius-space-2xl));padding:var(--ius-space-md)}.ius-popover.ius-personpicker-pop{min-width:0;max-width:none;box-sizing:border-box}.ius-popover.ius-datepicker-pop{min-width:0;max-width:none;padding:0;box-sizing:border-box}.ius-popover.ius-autocomplete-pop{min-width:0;max-width:none;box-sizing:border-box;overflow:hidden}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1032
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: PopoverComponent, isStandalone: true, selector: "ius-popover", inputs: { title: "title", content: "content", placement: "placement", trigger: "trigger", offset: ["offset", "offset", numberAttribute], open: "open", defaultOpen: ["defaultOpen", "defaultOpen", booleanAttribute], showArrow: ["showArrow", "showArrow", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], anchorRect: "anchorRect", padding: "padding", dismissable: ["dismissable", "dismissable", booleanAttribute], panelClass: "panelClass" }, outputs: { openChange: "openChange" }, host: { listeners: { "mouseenter": "onHostMouseEnter()", "mouseleave": "onHostMouseLeave()", "focusin": "onHostFocusIn()", "focusout": "onHostFocusOut()", "click": "onHostClick()" } }, viewQueries: [{ propertyName: "panelTpl", first: true, predicate: ["panelTpl"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!-- Trigger (children del golden). El host es el ancla .ius-popover-anchor. -->\r\n<ng-content />\r\n\r\n<!-- Panel flotante \u2014 se estampa en el overlay del CDK v\u00EDa TemplatePortal. -->\r\n<ng-template #panelTpl>\r\n <div\r\n class=\"ius-popover\"\r\n [class]=\"panelClass ?? ''\"\r\n role=\"tooltip\"\r\n [attr.data-side]=\"side()\"\r\n [attr.data-padding]=\"padding\"\r\n >\r\n @if (title != null) {\r\n <div class=\"ius-popover__title\">{{ title }}</div>\r\n }\r\n <div class=\"ius-popover__content\">\r\n @if (content != null) {\r\n {{ content }}\r\n } @else {\r\n <ng-content select=\"[iusPopoverContent]\" />\r\n }\r\n </div>\r\n @if (showArrow) {\r\n <span\r\n class=\"ius-popover__arrow\"\r\n [style.left]=\"arrowLeft()\"\r\n [style.top]=\"arrowTop()\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center}.ius-popover{width:max-content;max-width:280px;min-width:140px;position:relative;background:var(--ius-neutral-white);color:var(--ius-text-primary);border-radius:var(--ius-radius-lg);padding:var(--ius-space-sm) var(--ius-space-md);font-family:var(--ius-font-body);filter:drop-shadow(0 6px 18px rgba(0,0,0,.12)) drop-shadow(0 2px 6px rgba(0,0,0,.06));animation:ius-popover-in .12s var(--ius-ease-decelerate, cubic-bezier(0, 0, .2, 1));pointer-events:auto}@keyframes ius-popover-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.ius-popover__title{font-weight:var(--ius-fw-bold);font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary);margin-bottom:var(--ius-space-xxs)}.ius-popover__content{font-weight:var(--ius-fw-regular);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:.02em;color:var(--ius-text-primary)}.ius-popover__arrow{position:absolute;width:12px;height:12px;background:var(--ius-neutral-white);transform:rotate(45deg)}.ius-popover[data-side=top] .ius-popover__arrow{bottom:-5px}.ius-popover[data-side=bottom] .ius-popover__arrow{top:-5px}.ius-popover[data-side=left] .ius-popover__arrow{right:-5px}.ius-popover[data-side=right] .ius-popover__arrow{left:-5px}.ius-popover[data-padding=compact]{padding:var(--ius-space-xs)}.ius-popover[data-padding=none]{padding:0}.ius-popover.ius-tooltip{min-width:0;max-width:240px;padding:var(--ius-space-xs) var(--ius-space-sm);background:var(--ius-text-primary)}.ius-popover.ius-tooltip .ius-popover__arrow{background:var(--ius-text-primary)}.ius-popover.ius-tooltip .ius-popover__content{font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:normal;text-wrap:balance;color:var(--ius-neutral-white)}.ius-popover.ius-dropdown-pop{padding:var(--ius-space-xxs)}.ius-popover.ius-querybuilder-pop{max-width:none;width:min(720px,100vw - var(--ius-space-2xl));padding:var(--ius-space-md)}.ius-popover.ius-datefilter-pop{max-width:none;padding:var(--ius-space-md)}.ius-popover.ius-personpicker-pop{min-width:0;max-width:none;box-sizing:border-box}.ius-popover.ius-datepicker-pop{min-width:0;max-width:none;padding:0;box-sizing:border-box}.ius-popover.ius-autocomplete-pop{min-width:0;max-width:none;box-sizing:border-box;overflow:hidden}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1033
1033
  }
1034
1034
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PopoverComponent, decorators: [{
1035
1035
  type: Component,
@@ -1039,7 +1039,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
1039
1039
  '(focusin)': 'onHostFocusIn()',
1040
1040
  '(focusout)': 'onHostFocusOut()',
1041
1041
  '(click)': 'onHostClick()',
1042
- }, template: "<!-- Trigger (children del golden). El host es el ancla .ius-popover-anchor. -->\r\n<ng-content />\r\n\r\n<!-- Panel flotante \u2014 se estampa en el overlay del CDK v\u00EDa TemplatePortal. -->\r\n<ng-template #panelTpl>\r\n <div\r\n class=\"ius-popover\"\r\n [class]=\"panelClass ?? ''\"\r\n role=\"tooltip\"\r\n [attr.data-side]=\"side()\"\r\n [attr.data-padding]=\"padding\"\r\n >\r\n @if (title != null) {\r\n <div class=\"ius-popover__title\">{{ title }}</div>\r\n }\r\n <div class=\"ius-popover__content\">\r\n @if (content != null) {\r\n {{ content }}\r\n } @else {\r\n <ng-content select=\"[iusPopoverContent]\" />\r\n }\r\n </div>\r\n @if (showArrow) {\r\n <span\r\n class=\"ius-popover__arrow\"\r\n [style.left]=\"arrowLeft()\"\r\n [style.top]=\"arrowTop()\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center}.ius-popover{width:max-content;max-width:280px;min-width:140px;position:relative;background:var(--ius-neutral-white);color:var(--ius-text-primary);border-radius:var(--ius-radius-lg);padding:var(--ius-space-sm) var(--ius-space-md);font-family:var(--ius-font-body);filter:drop-shadow(0 6px 18px rgba(0,0,0,.12)) drop-shadow(0 2px 6px rgba(0,0,0,.06));animation:ius-popover-in .12s var(--ius-ease-decelerate, cubic-bezier(0, 0, .2, 1));pointer-events:auto}@keyframes ius-popover-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.ius-popover__title{font-weight:var(--ius-fw-bold);font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary);margin-bottom:var(--ius-space-xxs)}.ius-popover__content{font-weight:var(--ius-fw-regular);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:.02em;color:var(--ius-text-primary)}.ius-popover__arrow{position:absolute;width:12px;height:12px;background:var(--ius-neutral-white);transform:rotate(45deg)}.ius-popover[data-side=top] .ius-popover__arrow{bottom:-5px}.ius-popover[data-side=bottom] .ius-popover__arrow{top:-5px}.ius-popover[data-side=left] .ius-popover__arrow{right:-5px}.ius-popover[data-side=right] .ius-popover__arrow{left:-5px}.ius-popover[data-padding=compact]{padding:var(--ius-space-xs)}.ius-popover[data-padding=none]{padding:0}.ius-popover.ius-tooltip{min-width:0;max-width:240px;padding:var(--ius-space-xs) var(--ius-space-sm);background:var(--ius-text-primary)}.ius-popover.ius-tooltip .ius-popover__arrow{background:var(--ius-text-primary)}.ius-popover.ius-tooltip .ius-popover__content{font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:normal;text-wrap:balance;color:var(--ius-neutral-white)}.ius-popover.ius-dropdown-pop{padding:var(--ius-space-xxs)}.ius-popover.ius-querybuilder-pop{max-width:none;width:min(720px,100vw - var(--ius-space-2xl));padding:var(--ius-space-md)}.ius-popover.ius-personpicker-pop{min-width:0;max-width:none;box-sizing:border-box}.ius-popover.ius-datepicker-pop{min-width:0;max-width:none;padding:0;box-sizing:border-box}.ius-popover.ius-autocomplete-pop{min-width:0;max-width:none;box-sizing:border-box;overflow:hidden}\n"] }]
1042
+ }, template: "<!-- Trigger (children del golden). El host es el ancla .ius-popover-anchor. -->\r\n<ng-content />\r\n\r\n<!-- Panel flotante \u2014 se estampa en el overlay del CDK v\u00EDa TemplatePortal. -->\r\n<ng-template #panelTpl>\r\n <div\r\n class=\"ius-popover\"\r\n [class]=\"panelClass ?? ''\"\r\n role=\"tooltip\"\r\n [attr.data-side]=\"side()\"\r\n [attr.data-padding]=\"padding\"\r\n >\r\n @if (title != null) {\r\n <div class=\"ius-popover__title\">{{ title }}</div>\r\n }\r\n <div class=\"ius-popover__content\">\r\n @if (content != null) {\r\n {{ content }}\r\n } @else {\r\n <ng-content select=\"[iusPopoverContent]\" />\r\n }\r\n </div>\r\n @if (showArrow) {\r\n <span\r\n class=\"ius-popover__arrow\"\r\n [style.left]=\"arrowLeft()\"\r\n [style.top]=\"arrowTop()\"\r\n aria-hidden=\"true\"\r\n ></span>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center}.ius-popover{width:max-content;max-width:280px;min-width:140px;position:relative;background:var(--ius-neutral-white);color:var(--ius-text-primary);border-radius:var(--ius-radius-lg);padding:var(--ius-space-sm) var(--ius-space-md);font-family:var(--ius-font-body);filter:drop-shadow(0 6px 18px rgba(0,0,0,.12)) drop-shadow(0 2px 6px rgba(0,0,0,.06));animation:ius-popover-in .12s var(--ius-ease-decelerate, cubic-bezier(0, 0, .2, 1));pointer-events:auto}@keyframes ius-popover-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.ius-popover__title{font-weight:var(--ius-fw-bold);font-size:var(--ius-fs-base);line-height:var(--ius-lh-base);color:var(--ius-text-primary);margin-bottom:var(--ius-space-xxs)}.ius-popover__content{font-weight:var(--ius-fw-regular);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:.02em;color:var(--ius-text-primary)}.ius-popover__arrow{position:absolute;width:12px;height:12px;background:var(--ius-neutral-white);transform:rotate(45deg)}.ius-popover[data-side=top] .ius-popover__arrow{bottom:-5px}.ius-popover[data-side=bottom] .ius-popover__arrow{top:-5px}.ius-popover[data-side=left] .ius-popover__arrow{right:-5px}.ius-popover[data-side=right] .ius-popover__arrow{left:-5px}.ius-popover[data-padding=compact]{padding:var(--ius-space-xs)}.ius-popover[data-padding=none]{padding:0}.ius-popover.ius-tooltip{min-width:0;max-width:240px;padding:var(--ius-space-xs) var(--ius-space-sm);background:var(--ius-text-primary)}.ius-popover.ius-tooltip .ius-popover__arrow{background:var(--ius-text-primary)}.ius-popover.ius-tooltip .ius-popover__content{font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:normal;text-wrap:balance;color:var(--ius-neutral-white)}.ius-popover.ius-dropdown-pop{padding:var(--ius-space-xxs)}.ius-popover.ius-querybuilder-pop{max-width:none;width:min(720px,100vw - var(--ius-space-2xl));padding:var(--ius-space-md)}.ius-popover.ius-datefilter-pop{max-width:none;padding:var(--ius-space-md)}.ius-popover.ius-personpicker-pop{min-width:0;max-width:none;box-sizing:border-box}.ius-popover.ius-datepicker-pop{min-width:0;max-width:none;padding:0;box-sizing:border-box}.ius-popover.ius-autocomplete-pop{min-width:0;max-width:none;box-sizing:border-box;overflow:hidden}\n"] }]
1043
1043
  }], propDecorators: { title: [{
1044
1044
  type: Input
1045
1045
  }], content: [{
@@ -6899,7 +6899,7 @@ class OptionItemComponent {
6899
6899
  event.preventDefault();
6900
6900
  }
6901
6901
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OptionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6902
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: OptionItemComponent, isStandalone: true, selector: "ius-option-item", inputs: { label: "label", overline: "overline", icon: "icon", selected: ["selected", "selected", booleanAttribute], multi: ["multi", "multi", booleanAttribute], active: ["active", "active", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], size: "size", value: "value", state: "state" }, outputs: { selectClicked: "selectClicked" }, host: { attributes: { "role": "option" }, listeners: { "click": "handleClick()", "mousedown": "onMouseDown($event)" }, properties: { "attr.data-size": "size !== 'medium' ? size : null", "attr.aria-selected": "isSelected || null", "attr.aria-disabled": "isDisabled || null", "attr.data-selected": "isSelected || null", "attr.data-variant": "isSelected ? variant : null", "attr.data-active": "active || null", "attr.data-disabled": "isDisabled || null", "attr.data-state": "forced ? state : null", "attr.data-value": "value ?? null" }, classAttribute: "ius-opt" }, ngImport: i0, template: "@if (icon) {\n <span class=\"ius-opt__icon\" aria-hidden=\"true\">\n <span translate=\"no\" class=\"ius-icon\">{{ icon }}</span>\n </span>\n}\n<!-- Un \u00DANICO `ng-content`: el label vive en un template y se estampa en la rama\n que toque. Duplicarlo en las dos ramas dejar\u00EDa el contenido proyectado en\n un solo slot (limitaci\u00F3n de la proyecci\u00F3n de Angular). -->\n<ng-template #labelTpl>\n <span class=\"ius-opt__label\">{{ label }}<ng-content /></span>\n</ng-template>\n@if (overline != null) {\n <span class=\"ius-opt__text\">\n <span class=\"ius-opt__overline\">{{ overline }}</span>\n <ng-container [ngTemplateOutlet]=\"labelTpl\" />\n </span>\n} @else {\n <ng-container [ngTemplateOutlet]=\"labelTpl\" />\n}\n@if (showCheck) {\n <span class=\"ius-opt__check\" aria-hidden=\"true\">\n <span translate=\"no\" class=\"ius-icon\">check</span>\n </span>\n}\n", styles: ["@charset \"UTF-8\";:host{display:flex;align-items:center;gap:var(--ius-space-xs);box-sizing:border-box;width:100%;padding:var(--_opt-py, var(--ius-space-xs)) var(--ius-space-sm);border-radius:var(--ius-radius-md);font-family:var(--ius-font-body);font-size:var(--_opt-fs, var(--ius-fs-base));line-height:var(--ius-lh-base);color:var(--ius-text-primary);background:transparent;text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}:host([data-size=small]){--_opt-py: 6px;--_opt-fs: var(--ius-fs-base)}:host([data-size=large]){--_opt-py: 11px;--_opt-fs: var(--ius-fs-lg)}.ius-opt__icon{display:inline-flex;align-items:center;flex:0 0 auto;color:var(--ius-text-secondary)}.ius-opt__icon .ius-icon{font-size:var(--ius-icon-md);line-height:1}.ius-opt__text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}.ius-opt__overline{font-family:var(--ius-font-display);font-weight:var(--ius-fw-medium);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:var(--ius-ls-emphasis);color:var(--ius-text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ius-opt__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ius-opt__check{flex:0 0 auto;width:22px;height:22px;border-radius:var(--ius-radius-pill);display:inline-flex;align-items:center;justify-content:center;background:var(--ius-primary-900);color:var(--ius-neutral-white)}.ius-opt__check .ius-icon{font-size:var(--ius-icon-sm);line-height:1}:host(:hover),:host([data-active=true]),:host([data-state=hover]),:host([data-state=selectedHovered]){background:var(--ius-info-100)}:host(:active),:host([data-state=pressed]){background:var(--ius-info-200)}:host([data-selected=true][data-variant=check]),:host([data-state=selected]),:host([data-state=selectedHovered]){color:var(--ius-text-primary);font-weight:var(--ius-fw-medium)}:host([data-selected=true][data-variant=fill]),:host([data-state=selectedVar]){background:var(--ius-primary-900);color:var(--ius-neutral-white);font-weight:var(--ius-fw-medium)}:host([data-selected=true][data-variant=fill]) .ius-opt__icon,:host([data-state=selectedVar]) .ius-opt__icon{color:var(--ius-neutral-white)}:host([data-selected=true][data-variant=fill]) .ius-opt__overline,:host([data-state=selectedVar]) .ius-opt__overline{color:var(--ius-neutral-white)}:host([data-selected=true][data-variant=fill]):hover,:host([data-state=selectedVar]):hover{background:var(--ius-primary-900)}:host([data-disabled=true]),:host([data-state=disabled]){color:var(--ius-text-disabled);cursor:not-allowed;background:transparent}:host([data-disabled=true]) .ius-opt__icon,:host([data-state=disabled]) .ius-opt__icon{color:var(--ius-text-disabled)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6902
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: OptionItemComponent, isStandalone: true, selector: "ius-option-item", inputs: { label: "label", overline: "overline", icon: "icon", selected: ["selected", "selected", booleanAttribute], multi: ["multi", "multi", booleanAttribute], active: ["active", "active", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], size: "size", value: "value", state: "state" }, outputs: { selectClicked: "selectClicked" }, host: { attributes: { "role": "option" }, listeners: { "click": "handleClick()", "mousedown": "onMouseDown($event)" }, properties: { "attr.data-size": "size !== 'medium' ? size : null", "attr.aria-selected": "isSelected || null", "attr.aria-disabled": "isDisabled || null", "attr.data-selected": "isSelected || null", "attr.data-variant": "isSelected ? variant : null", "attr.data-active": "active || null", "attr.data-disabled": "isDisabled || null", "attr.data-state": "forced ? state : null", "attr.data-value": "value ?? null" }, classAttribute: "ius-opt" }, ngImport: i0, template: "@if (icon) {\n <span class=\"ius-opt__icon\" aria-hidden=\"true\">\n <span translate=\"no\" class=\"ius-icon\">{{ icon }}</span>\n </span>\n}\n<ng-template #labelTpl>\n <span class=\"ius-opt__label\">{{ label }}<ng-content /></span>\n</ng-template>\n@if (overline != null) {\n <span class=\"ius-opt__text\">\n <span class=\"ius-opt__overline\">{{ overline }}</span>\n <ng-container [ngTemplateOutlet]=\"labelTpl\" />\n </span>\n} @else {\n <ng-container [ngTemplateOutlet]=\"labelTpl\" />\n}\n@if (showCheck) {\n <span class=\"ius-opt__check\" aria-hidden=\"true\">\n <span translate=\"no\" class=\"ius-icon\">check</span>\n </span>\n}\n", styles: ["@charset \"UTF-8\";:host{display:flex;align-items:center;gap:var(--ius-space-xs);box-sizing:border-box;width:100%;padding:var(--_opt-py, var(--ius-space-xs)) var(--ius-space-sm);border-radius:var(--ius-radius-md);font-family:var(--ius-font-body);font-size:var(--_opt-fs, var(--ius-fs-base));line-height:var(--ius-lh-base);color:var(--ius-text-primary);background:transparent;text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}:host([data-size=small]){--_opt-py: 6px;--_opt-fs: var(--ius-fs-base)}:host([data-size=large]){--_opt-py: 11px;--_opt-fs: var(--ius-fs-lg)}.ius-opt__icon{display:inline-flex;align-items:center;flex:0 0 auto;color:var(--ius-text-secondary)}.ius-opt__icon .ius-icon{font-size:var(--ius-icon-md);line-height:1}.ius-opt__text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}.ius-opt__overline{font-family:var(--ius-font-display);font-weight:var(--ius-fw-medium);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:var(--ius-ls-emphasis);color:var(--ius-text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ius-opt__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ius-opt__check{flex:0 0 auto;width:22px;height:22px;border-radius:var(--ius-radius-pill);display:inline-flex;align-items:center;justify-content:center;background:var(--ius-primary-900);color:var(--ius-neutral-white)}.ius-opt__check .ius-icon{font-size:var(--ius-icon-sm);line-height:1}:host(:hover),:host([data-active=true]),:host([data-state=hover]),:host([data-state=selectedHovered]){background:var(--ius-info-100)}:host(:active),:host([data-state=pressed]){background:var(--ius-info-200)}:host([data-selected=true][data-variant=check]),:host([data-state=selected]),:host([data-state=selectedHovered]){color:var(--ius-text-primary);font-weight:var(--ius-fw-medium)}:host([data-selected=true][data-variant=fill]),:host([data-state=selectedVar]){background:var(--ius-primary-900);color:var(--ius-neutral-white);font-weight:var(--ius-fw-medium)}:host([data-selected=true][data-variant=fill]) .ius-opt__icon,:host([data-state=selectedVar]) .ius-opt__icon{color:var(--ius-neutral-white)}:host([data-selected=true][data-variant=fill]) .ius-opt__overline,:host([data-state=selectedVar]) .ius-opt__overline{color:var(--ius-neutral-white)}:host([data-selected=true][data-variant=fill]):hover,:host([data-state=selectedVar]):hover{background:var(--ius-primary-900)}:host([data-disabled=true]),:host([data-state=disabled]){color:var(--ius-text-disabled);cursor:not-allowed;background:transparent}:host([data-disabled=true]) .ius-opt__icon,:host([data-state=disabled]) .ius-opt__icon{color:var(--ius-text-disabled)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6903
6903
  }
6904
6904
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: OptionItemComponent, decorators: [{
6905
6905
  type: Component,
@@ -6917,7 +6917,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
6917
6917
  '[attr.data-value]': 'value ?? null',
6918
6918
  '(click)': 'handleClick()',
6919
6919
  '(mousedown)': 'onMouseDown($event)',
6920
- }, template: "@if (icon) {\n <span class=\"ius-opt__icon\" aria-hidden=\"true\">\n <span translate=\"no\" class=\"ius-icon\">{{ icon }}</span>\n </span>\n}\n<!-- Un \u00DANICO `ng-content`: el label vive en un template y se estampa en la rama\n que toque. Duplicarlo en las dos ramas dejar\u00EDa el contenido proyectado en\n un solo slot (limitaci\u00F3n de la proyecci\u00F3n de Angular). -->\n<ng-template #labelTpl>\n <span class=\"ius-opt__label\">{{ label }}<ng-content /></span>\n</ng-template>\n@if (overline != null) {\n <span class=\"ius-opt__text\">\n <span class=\"ius-opt__overline\">{{ overline }}</span>\n <ng-container [ngTemplateOutlet]=\"labelTpl\" />\n </span>\n} @else {\n <ng-container [ngTemplateOutlet]=\"labelTpl\" />\n}\n@if (showCheck) {\n <span class=\"ius-opt__check\" aria-hidden=\"true\">\n <span translate=\"no\" class=\"ius-icon\">check</span>\n </span>\n}\n", styles: ["@charset \"UTF-8\";:host{display:flex;align-items:center;gap:var(--ius-space-xs);box-sizing:border-box;width:100%;padding:var(--_opt-py, var(--ius-space-xs)) var(--ius-space-sm);border-radius:var(--ius-radius-md);font-family:var(--ius-font-body);font-size:var(--_opt-fs, var(--ius-fs-base));line-height:var(--ius-lh-base);color:var(--ius-text-primary);background:transparent;text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}:host([data-size=small]){--_opt-py: 6px;--_opt-fs: var(--ius-fs-base)}:host([data-size=large]){--_opt-py: 11px;--_opt-fs: var(--ius-fs-lg)}.ius-opt__icon{display:inline-flex;align-items:center;flex:0 0 auto;color:var(--ius-text-secondary)}.ius-opt__icon .ius-icon{font-size:var(--ius-icon-md);line-height:1}.ius-opt__text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}.ius-opt__overline{font-family:var(--ius-font-display);font-weight:var(--ius-fw-medium);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:var(--ius-ls-emphasis);color:var(--ius-text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ius-opt__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ius-opt__check{flex:0 0 auto;width:22px;height:22px;border-radius:var(--ius-radius-pill);display:inline-flex;align-items:center;justify-content:center;background:var(--ius-primary-900);color:var(--ius-neutral-white)}.ius-opt__check .ius-icon{font-size:var(--ius-icon-sm);line-height:1}:host(:hover),:host([data-active=true]),:host([data-state=hover]),:host([data-state=selectedHovered]){background:var(--ius-info-100)}:host(:active),:host([data-state=pressed]){background:var(--ius-info-200)}:host([data-selected=true][data-variant=check]),:host([data-state=selected]),:host([data-state=selectedHovered]){color:var(--ius-text-primary);font-weight:var(--ius-fw-medium)}:host([data-selected=true][data-variant=fill]),:host([data-state=selectedVar]){background:var(--ius-primary-900);color:var(--ius-neutral-white);font-weight:var(--ius-fw-medium)}:host([data-selected=true][data-variant=fill]) .ius-opt__icon,:host([data-state=selectedVar]) .ius-opt__icon{color:var(--ius-neutral-white)}:host([data-selected=true][data-variant=fill]) .ius-opt__overline,:host([data-state=selectedVar]) .ius-opt__overline{color:var(--ius-neutral-white)}:host([data-selected=true][data-variant=fill]):hover,:host([data-state=selectedVar]):hover{background:var(--ius-primary-900)}:host([data-disabled=true]),:host([data-state=disabled]){color:var(--ius-text-disabled);cursor:not-allowed;background:transparent}:host([data-disabled=true]) .ius-opt__icon,:host([data-state=disabled]) .ius-opt__icon{color:var(--ius-text-disabled)}\n"] }]
6920
+ }, template: "@if (icon) {\n <span class=\"ius-opt__icon\" aria-hidden=\"true\">\n <span translate=\"no\" class=\"ius-icon\">{{ icon }}</span>\n </span>\n}\n<ng-template #labelTpl>\n <span class=\"ius-opt__label\">{{ label }}<ng-content /></span>\n</ng-template>\n@if (overline != null) {\n <span class=\"ius-opt__text\">\n <span class=\"ius-opt__overline\">{{ overline }}</span>\n <ng-container [ngTemplateOutlet]=\"labelTpl\" />\n </span>\n} @else {\n <ng-container [ngTemplateOutlet]=\"labelTpl\" />\n}\n@if (showCheck) {\n <span class=\"ius-opt__check\" aria-hidden=\"true\">\n <span translate=\"no\" class=\"ius-icon\">check</span>\n </span>\n}\n", styles: ["@charset \"UTF-8\";:host{display:flex;align-items:center;gap:var(--ius-space-xs);box-sizing:border-box;width:100%;padding:var(--_opt-py, var(--ius-space-xs)) var(--ius-space-sm);border-radius:var(--ius-radius-md);font-family:var(--ius-font-body);font-size:var(--_opt-fs, var(--ius-fs-base));line-height:var(--ius-lh-base);color:var(--ius-text-primary);background:transparent;text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}:host([data-size=small]){--_opt-py: 6px;--_opt-fs: var(--ius-fs-base)}:host([data-size=large]){--_opt-py: 11px;--_opt-fs: var(--ius-fs-lg)}.ius-opt__icon{display:inline-flex;align-items:center;flex:0 0 auto;color:var(--ius-text-secondary)}.ius-opt__icon .ius-icon{font-size:var(--ius-icon-md);line-height:1}.ius-opt__text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}.ius-opt__overline{font-family:var(--ius-font-display);font-weight:var(--ius-fw-medium);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);letter-spacing:var(--ius-ls-emphasis);color:var(--ius-text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ius-opt__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ius-opt__check{flex:0 0 auto;width:22px;height:22px;border-radius:var(--ius-radius-pill);display:inline-flex;align-items:center;justify-content:center;background:var(--ius-primary-900);color:var(--ius-neutral-white)}.ius-opt__check .ius-icon{font-size:var(--ius-icon-sm);line-height:1}:host(:hover),:host([data-active=true]),:host([data-state=hover]),:host([data-state=selectedHovered]){background:var(--ius-info-100)}:host(:active),:host([data-state=pressed]){background:var(--ius-info-200)}:host([data-selected=true][data-variant=check]),:host([data-state=selected]),:host([data-state=selectedHovered]){color:var(--ius-text-primary);font-weight:var(--ius-fw-medium)}:host([data-selected=true][data-variant=fill]),:host([data-state=selectedVar]){background:var(--ius-primary-900);color:var(--ius-neutral-white);font-weight:var(--ius-fw-medium)}:host([data-selected=true][data-variant=fill]) .ius-opt__icon,:host([data-state=selectedVar]) .ius-opt__icon{color:var(--ius-neutral-white)}:host([data-selected=true][data-variant=fill]) .ius-opt__overline,:host([data-state=selectedVar]) .ius-opt__overline{color:var(--ius-neutral-white)}:host([data-selected=true][data-variant=fill]):hover,:host([data-state=selectedVar]):hover{background:var(--ius-primary-900)}:host([data-disabled=true]),:host([data-state=disabled]){color:var(--ius-text-disabled);cursor:not-allowed;background:transparent}:host([data-disabled=true]) .ius-opt__icon,:host([data-state=disabled]) .ius-opt__icon{color:var(--ius-text-disabled)}\n"] }]
6921
6921
  }], propDecorators: { label: [{
6922
6922
  type: Input
6923
6923
  }], overline: [{
@@ -15809,6 +15809,8 @@ const KIND_ICON = {
15809
15809
  expediente: 'folder',
15810
15810
  proceso: 'gavel',
15811
15811
  };
15812
+ /** Etiqueta de estado que `state='archived'` pone cuando no llega `statusTag` (verbatim del golden). */
15813
+ const ARCHIVED_STATUS_TAG = { label: 'Archivado', tone: 'neutral' };
15812
15814
  /**
15813
15815
  * EntityRow — Ius Design v2 (familia navigation).
15814
15816
  *
@@ -15837,6 +15839,16 @@ const KIND_ICON = {
15837
15839
  * - `count` es un conteo NEUTRO de hijos (píldora `count-soft`), nunca una
15838
15840
  * señal de novedad: por eso se ve distinto del contador de no leídos.
15839
15841
  *
15842
+ * Estado y etiquetas (tercera línea, bajo el nombre):
15843
+ * - `tag` (tipo, principal: prospecto, contratante…; tono categórico) y
15844
+ * `statusTag` (estado, tono semántico), hasta DOS `ius-tag` small (default
15845
+ * `variant:'outline'`, `tone:'neutral'`). No recortan el label ni desplazan
15846
+ * al contador/pin; la fila crece de alto solo cuando las lleva.
15847
+ * - `state='archived'` atenúa label (tertiary, peso regular), sublabel
15848
+ * (disabled) e ícono (neutral-6) y rellena `statusTag` con «Archivado» si no
15849
+ * llega uno explícito. La fila sigue navegable; si está `selected`, el label
15850
+ * recupera el acento. `data-state` solo se emite cuando no es `active`.
15851
+ *
15840
15852
  * No usar como fila de menú (MenuItem), de cuenta (AccountItem) ni de acción.
15841
15853
  *
15842
15854
  * DECISIONES DE PORT:
@@ -15894,6 +15906,13 @@ class EntityRowComponent {
15894
15906
  this.actions = [];
15895
15907
  /** aria del disparador del menú ⋮. */
15896
15908
  this.actionsLabel = 'Más acciones';
15909
+ /**
15910
+ * Estado del nodo. `archived` atenúa label/sublabel/ícono y pinta la etiqueta
15911
+ * «Archivado» bajo el nombre (como `statusTag` por defecto); la fila sigue
15912
+ * navegable. Admite `undefined` (= `active`) para reenviar el campo opcional
15913
+ * de un nodo tal cual, como hace EntityNavigator.
15914
+ */
15915
+ this.state = 'active';
15897
15916
  /** Clic en el chevron. NO propaga al `clicked` de la fila. */
15898
15917
  this.toggle = new EventEmitter();
15899
15918
  /** Anclar / desanclar. */
@@ -15944,6 +15963,20 @@ class EntityRowComponent {
15944
15963
  get hasLabelSlot() {
15945
15964
  return !!this.labelRef();
15946
15965
  }
15966
+ /**
15967
+ * Hasta dos etiquetas en la tercera línea: `tag` (tipo) + estado. El estado
15968
+ * es `statusTag` o, con `state='archived'` y sin `statusTag`, «Archivado»
15969
+ * (espejo de `statusTag || (state === 'archived' ? {…} : null)` del golden).
15970
+ */
15971
+ get tagItems() {
15972
+ const status = this.statusTag || (this.state === 'archived' ? ARCHIVED_STATUS_TAG : null);
15973
+ const items = [];
15974
+ if (this.tag)
15975
+ items.push(this.tag);
15976
+ if (status)
15977
+ items.push(status);
15978
+ return items;
15979
+ }
15947
15980
  /**
15948
15981
  * Los contadores se ocultan en hover cuando hay acciones, para que no se
15949
15982
  * solapen con el pin y el ⋮ (`data-dim` del golden).
@@ -15990,7 +16023,7 @@ class EntityRowComponent {
15990
16023
  this.menuOpen.set(open);
15991
16024
  }
15992
16025
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EntityRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15993
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EntityRowComponent, isStandalone: true, selector: "ius-entity-row", inputs: { kind: "kind", icon: "icon", label: "label", sublabel: "sublabel", level: ["level", "level", numberAttribute], accent: "accent", expandable: ["expandable", "expandable", booleanAttribute], expanded: ["expanded", "expanded", booleanAttribute], loading: ["loading", "loading", booleanAttribute], selected: ["selected", "selected", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], count: "count", unread: "unread", hasUnread: ["hasUnread", "hasUnread", booleanAttribute], noveltyTone: "noveltyTone", pinned: ["pinned", "pinned", booleanAttribute], pinnable: ["pinnable", "pinnable", booleanAttribute], actions: "actions", actionsLabel: "actionsLabel", ariaLabel: "ariaLabel" }, outputs: { toggle: "toggle", togglePin: "togglePin", clicked: "clicked" }, host: { attributes: { "role": "button" }, listeners: { "click": "onRowClick($event)", "keydown": "onKeyDown($event)" }, properties: { "attr.tabindex": "disabled ? null : 0", "attr.data-level": "level", "attr.data-accent": "accent", "attr.data-expanded": "expanded ? 'true' : null", "attr.data-selected": "selected ? 'true' : null", "attr.data-unread": "hasNovelty ? 'true' : null", "attr.data-disabled": "disabled ? 'true' : null", "attr.data-menu-open": "menuOpen() ? 'true' : null", "attr.data-loading": "loading ? 'true' : null", "attr.aria-busy": "loading ? 'true' : null", "attr.aria-expanded": "expandable ? (expanded ? 'true' : 'false') : null", "attr.aria-current": "selected ? 'true' : null", "attr.aria-label": "ariaLabel || null", "style.padding-left.px": "padLeft" }, classAttribute: "ius-entityrow" }, queries: [{ propertyName: "labelRef", first: true, predicate: IusEntityRowLabelDirective, descendants: true, isSignal: true }, { propertyName: "sublabelRef", first: true, predicate: IusEntityRowSublabelDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Orden verbatim del golden: twisty \u00B7 \u00EDcono \u00B7 punto de novedad \u00B7 cuerpo \u00B7\r\n contador \u00B7 acciones. La ra\u00EDz es el propio host (ver el .scss). -->\r\n\r\n<!-- Chevron / aro de carga / hueco.\r\n `loading` gana: el aro ocupa la MISMA caja de 18 px, as\u00ED la fila no salta.\r\n El chevron no entra en el orden de tabulaci\u00F3n (igual que el golden): en un\r\n \u00E1rbol grande ser\u00EDa un tab-stop por fila; el estado lo comunica el\r\n `aria-expanded` de la fila. -->\r\n@if (loading) {\r\n <span class=\"ius-entityrow__twisty ius-entityrow__twisty--loading\">\r\n <ius-circular-progress\r\n [indeterminate]=\"true\"\r\n size=\"small\"\r\n tone=\"neutral\"\r\n ariaLabel=\"Cargando contenido\"\r\n />\r\n </span>\r\n} @else if (expandable) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entityrow__twisty\"\r\n tabindex=\"-1\"\r\n aria-hidden=\"true\"\r\n (click)=\"onToggleClick($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">chevron_right</span>\r\n </button>\r\n} @else {\r\n <span class=\"ius-entityrow__twisty ius-entityrow__twisty--spacer\" aria-hidden=\"true\">\r\n <span translate=\"no\" class=\"ius-icon\">chevron_right</span>\r\n </span>\r\n}\r\n\r\n<span class=\"ius-entityrow__icon\">\r\n <span translate=\"no\" class=\"ius-icon\">{{ effIcon }}</span>\r\n</span>\r\n\r\n<!-- Contenedor con novedad: solo el punto, sin n\u00FAmero (la hoja la comunica con\r\n su contador). Si adem\u00E1s llega `unread`, gana `unread` y esto no se pinta. -->\r\n@if (showNoveltyDot) {\r\n <span class=\"ius-entityrow__lead\">\r\n <ius-insignia\r\n variant=\"dot\"\r\n [tone]=\"noveltyTone\"\r\n size=\"small\"\r\n ariaLabel=\"Con novedades sin leer\"\r\n />\r\n </span>\r\n}\r\n\r\n<!-- Los dos slots se instancian SIEMPRE, nunca dentro de un `@if`: un\r\n `<ng-content>` detr\u00E1s de una condici\u00F3n que a\u00FAn no es cierta en el primer\r\n render pierde el contenido proyectado en silencio (el `contentChild` que\r\n alimentaba la condici\u00F3n se resuelve un tick tarde). El subt\u00EDtulo vac\u00EDo se\r\n oculta por CSS con `data-empty`, no quit\u00E1ndolo del \u00E1rbol. -->\r\n<span class=\"ius-entityrow__body\">\r\n <span class=\"ius-entityrow__label\">{{ label }}<ng-content select=\"[iusEntityRowLabel]\" /></span>\r\n <span class=\"ius-entityrow__sub\" [attr.data-empty]=\"hasSublabel ? null : 'true'\">{{ sublabel }}<ng-content select=\"[iusEntityRowSublabel]\" /></span>\r\n</span>\r\n\r\n<!-- Novedad (s\u00F3lido, alto contraste) vs conteo neutro de hijos: nunca ambos. -->\r\n@if (hasNovelty) {\r\n <span class=\"ius-entityrow__trailing\" [attr.data-dim]=\"dim\">\r\n <ius-insignia\r\n variant=\"count\"\r\n [tone]=\"noveltyTone\"\r\n [count]=\"unread\"\r\n [ariaLabel]=\"unread + ' sin leer'\"\r\n />\r\n </span>\r\n} @else if (showCount) {\r\n <span class=\"ius-entityrow__trailing\" [attr.data-dim]=\"dim\">\r\n <ius-insignia variant=\"count-soft\" [tone]=\"selected ? accent : 'neutral'\" [count]=\"count\" />\r\n </span>\r\n}\r\n\r\n<!-- Pin de acceso r\u00E1pido + men\u00FA \u22EE, revelados en hover. Un clic nacido aqu\u00ED\r\n dentro no navega (guarda `closest` en onRowClick). -->\r\n@if (hasRowActions) {\r\n <span class=\"ius-entityrow__actions\">\r\n @if (hasPin) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entityrow__act ius-entityrow__act--pin\"\r\n [attr.data-pinned]=\"pinned ? 'true' : null\"\r\n [attr.aria-label]=\"pinLabel\"\r\n [attr.aria-pressed]=\"pinned\"\r\n (click)=\"onPinClick($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">push_pin</span>\r\n </button>\r\n }\r\n @if (hasActions) {\r\n <!-- ius-dropdown ES la composici\u00F3n Popover+Menu del golden, ya encapsulada:\r\n respeta `group` (divisores) y `danger` (al fondo, en rojo). -->\r\n <ius-dropdown\r\n [items]=\"actions\"\r\n placement=\"bottom-end\"\r\n [ariaLabel]=\"menuLabel\"\r\n (openChange)=\"onMenuOpenChange($event)\"\r\n >\r\n <button iusDropdownTrigger type=\"button\" class=\"ius-entityrow__act\" [attr.aria-label]=\"menuLabel\">\r\n <span translate=\"no\" class=\"ius-icon\">more_vert</span>\r\n </button>\r\n </ius-dropdown>\r\n }\r\n </span>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;width:100%;display:flex;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-xs);background:transparent;border:0;border-radius:var(--ius-radius-md);cursor:pointer;font-family:var(--ius-font-body);color:var(--ius-text-primary);text-align:left;transition:background var(--ius-duration-fast) var(--ius-ease-standard);--_er-accent: var(--ius-info-600);--_er-tint: color-mix(in srgb, var(--ius-info-500) 14%, white)}:host(:hover){background:var(--ius-neutral-2)}:host(:focus-visible){outline:none;box-shadow:var(--ius-focus-ring)}:host([data-disabled=true]){cursor:default;opacity:.5;pointer-events:none}.ius-entityrow__twisty{flex:0 0 auto;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;background:transparent;cursor:pointer;color:var(--ius-text-tertiary);transition:transform var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entityrow__twisty .ius-icon{font-size:var(--ius-icon-md)}:host([data-expanded=true]) .ius-entityrow__twisty{transform:rotate(90deg)}.ius-entityrow__twisty--spacer{visibility:hidden}.ius-entityrow__twisty--loading{--_er-spin-scale: .818;transform:none}:host([data-expanded=true]) .ius-entityrow__twisty--loading{transform:none}.ius-entityrow__twisty--loading ius-circular-progress{transform:scale(var(--_er-spin-scale))}.ius-entityrow__icon{flex:0 0 auto;display:inline-flex;color:var(--ius-neutral-7)}.ius-entityrow__icon .ius-icon{font-size:var(--ius-icon-md)}.ius-entityrow__body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:0}.ius-entityrow__label{font-size:var(--ius-fs-base);line-height:1.3;color:var(--ius-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entityrow__sub{font-size:var(--ius-fs-sm);line-height:1.3;color:var(--ius-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entityrow__sub[data-empty=true]{display:none}:host([data-level=\"0\"]) .ius-entityrow__label{font-weight:var(--ius-fw-semibold)}:host([data-unread=true]) .ius-entityrow__label{font-weight:var(--ius-fw-semibold)}.ius-entityrow__lead{flex:0 0 auto;display:inline-flex;align-items:center}.ius-entityrow__trailing{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-entityrow__actions{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xxs)}.ius-entityrow__act{appearance:none;border:0;background:transparent;cursor:pointer;width:26px;height:26px;border-radius:var(--ius-radius-sm);display:inline-flex;align-items:center;justify-content:center;color:var(--ius-text-tertiary);opacity:0;transition:opacity var(--ius-duration-fast) var(--ius-ease-standard),background var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entityrow__act .ius-icon{font-size:var(--ius-icon-md)}.ius-entityrow__act:hover{background:var(--ius-neutral-3);color:var(--ius-text-primary)}.ius-entityrow__act:focus-visible{outline:none;box-shadow:var(--ius-focus-ring);opacity:1}:host([data-selected=true]) .ius-entityrow__act{color:var(--_er-accent)}:host([data-selected=true]) .ius-entityrow__act:hover{background:color-mix(in srgb,var(--_er-accent) 16%,white);color:var(--_er-accent)}:host(:hover) .ius-entityrow__act,:host([data-menu-open=true]) .ius-entityrow__act{opacity:1}.ius-entityrow__act--pin[data-pinned=true]{opacity:1;color:var(--_er-accent)}.ius-entityrow__act--pin[data-pinned=true] .ius-icon{font-variation-settings:\"FILL\" 1,\"wght\" 500,\"GRAD\" 200,\"opsz\" 24}:host(:hover) .ius-entityrow__trailing[data-dim=true],:host([data-menu-open=true]) .ius-entityrow__trailing[data-dim=true]{display:none}:host([data-accent=primary]){--_er-accent: var(--ius-primary-700);--_er-tint: color-mix(in srgb, var(--ius-primary-500) 14%, white)}:host([data-accent=info]){--_er-accent: var(--ius-info-600);--_er-tint: color-mix(in srgb, var(--ius-info-500) 14%, white)}:host([data-accent=success]){--_er-accent: var(--ius-success-600);--_er-tint: color-mix(in srgb, var(--ius-success-500) 14%, white)}:host([data-accent=warning]){--_er-accent: var(--ius-warning-600);--_er-tint: color-mix(in srgb, var(--ius-warning-500) 14%, white)}:host([data-accent=danger]){--_er-accent: var(--ius-danger-600);--_er-tint: color-mix(in srgb, var(--ius-danger-500) 14%, white)}:host([data-accent=neutral]){--_er-accent: var(--ius-neutral-9);--_er-tint: color-mix(in srgb, var(--ius-neutral-7) 14%, white)}:host([data-accent=durazno]){--_er-accent: var(--ius-durazno-600);--_er-tint: color-mix(in srgb, var(--ius-durazno-500) 14%, white)}:host([data-accent=banano]){--_er-accent: var(--ius-banano-600);--_er-tint: color-mix(in srgb, var(--ius-banano-500) 14%, white)}:host([data-accent=sandia]){--_er-accent: var(--ius-sandia-600);--_er-tint: color-mix(in srgb, var(--ius-sandia-500) 14%, white)}:host([data-accent=arandano]){--_er-accent: var(--ius-arandano-600);--_er-tint: color-mix(in srgb, var(--ius-arandano-500) 14%, white)}:host([data-accent=uva]){--_er-accent: var(--ius-uva-600);--_er-tint: color-mix(in srgb, var(--ius-uva-500) 14%, white)}:host([data-accent=aguacate]){--_er-accent: var(--ius-aguacate-600);--_er-tint: color-mix(in srgb, var(--ius-aguacate-500) 14%, white)}:host([data-selected=true]){background:var(--_er-tint)}:host([data-selected=true]) .ius-entityrow__label{color:var(--_er-accent);font-weight:var(--ius-fw-semibold)}:host([data-selected=true]) .ius-entityrow__icon,:host([data-selected=true]) .ius-entityrow__twisty{color:var(--_er-accent)}:host([data-selected=true]:hover){background:var(--_er-tint)}\n"], dependencies: [{ kind: "component", type: CircularProgressComponent, selector: "ius-circular-progress", inputs: ["value", "max", "indeterminate", "tone", "size", "showValue", "ariaLabel", "duration", "paused"] }, { kind: "component", type: DropdownComponent, selector: "ius-dropdown", inputs: ["items", "selectable", "value", "label", "triggerLabel", "triggerIcon", "tone", "variant", "placement", "open", "defaultOpen", "ariaLabel"], outputs: ["valueChange", "openChange"] }, { kind: "directive", type: IusDropdownTriggerDirective, selector: "[iusDropdownTrigger]" }, { kind: "component", type: InsigniaComponent, selector: "ius-insignia", inputs: ["variant", "tone", "size", "label", "count", "max", "ring", "ariaLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
16026
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EntityRowComponent, isStandalone: true, selector: "ius-entity-row", inputs: { kind: "kind", icon: "icon", label: "label", sublabel: "sublabel", level: ["level", "level", numberAttribute], accent: "accent", expandable: ["expandable", "expandable", booleanAttribute], expanded: ["expanded", "expanded", booleanAttribute], loading: ["loading", "loading", booleanAttribute], selected: ["selected", "selected", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], count: "count", unread: "unread", hasUnread: ["hasUnread", "hasUnread", booleanAttribute], noveltyTone: "noveltyTone", pinned: ["pinned", "pinned", booleanAttribute], pinnable: ["pinnable", "pinnable", booleanAttribute], actions: "actions", actionsLabel: "actionsLabel", state: "state", tag: "tag", statusTag: "statusTag", ariaLabel: "ariaLabel" }, outputs: { toggle: "toggle", togglePin: "togglePin", clicked: "clicked" }, host: { attributes: { "role": "button" }, listeners: { "click": "onRowClick($event)", "keydown": "onKeyDown($event)" }, properties: { "attr.tabindex": "disabled ? null : 0", "attr.data-level": "level", "attr.data-accent": "accent", "attr.data-expanded": "expanded ? 'true' : null", "attr.data-selected": "selected ? 'true' : null", "attr.data-unread": "hasNovelty ? 'true' : null", "attr.data-disabled": "disabled ? 'true' : null", "attr.data-menu-open": "menuOpen() ? 'true' : null", "attr.data-state": "state && state !== 'active' ? state : null", "attr.data-loading": "loading ? 'true' : null", "attr.aria-busy": "loading ? 'true' : null", "attr.aria-expanded": "expandable ? (expanded ? 'true' : 'false') : null", "attr.aria-current": "selected ? 'true' : null", "attr.aria-label": "ariaLabel || null", "style.padding-left.px": "padLeft" }, classAttribute: "ius-entityrow" }, queries: [{ propertyName: "labelRef", first: true, predicate: IusEntityRowLabelDirective, descendants: true, isSignal: true }, { propertyName: "sublabelRef", first: true, predicate: IusEntityRowSublabelDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Orden verbatim del golden: twisty \u00B7 \u00EDcono \u00B7 punto de novedad \u00B7 cuerpo \u00B7\r\n contador \u00B7 acciones. La ra\u00EDz es el propio host (ver el .scss). -->\r\n\r\n<!-- Chevron / aro de carga / hueco.\r\n `loading` gana: el aro ocupa la MISMA caja de 18 px, as\u00ED la fila no salta.\r\n El chevron no entra en el orden de tabulaci\u00F3n (igual que el golden): en un\r\n \u00E1rbol grande ser\u00EDa un tab-stop por fila; el estado lo comunica el\r\n `aria-expanded` de la fila. -->\r\n@if (loading) {\r\n <span class=\"ius-entityrow__twisty ius-entityrow__twisty--loading\">\r\n <ius-circular-progress\r\n [indeterminate]=\"true\"\r\n size=\"small\"\r\n tone=\"neutral\"\r\n ariaLabel=\"Cargando contenido\"\r\n />\r\n </span>\r\n} @else if (expandable) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entityrow__twisty\"\r\n tabindex=\"-1\"\r\n aria-hidden=\"true\"\r\n (click)=\"onToggleClick($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">chevron_right</span>\r\n </button>\r\n} @else {\r\n <span class=\"ius-entityrow__twisty ius-entityrow__twisty--spacer\" aria-hidden=\"true\">\r\n <span translate=\"no\" class=\"ius-icon\">chevron_right</span>\r\n </span>\r\n}\r\n\r\n<span class=\"ius-entityrow__icon\">\r\n <span translate=\"no\" class=\"ius-icon\">{{ effIcon }}</span>\r\n</span>\r\n\r\n<!-- Contenedor con novedad: solo el punto, sin n\u00FAmero (la hoja la comunica con\r\n su contador). Si adem\u00E1s llega `unread`, gana `unread` y esto no se pinta. -->\r\n@if (showNoveltyDot) {\r\n <span class=\"ius-entityrow__lead\">\r\n <ius-insignia\r\n variant=\"dot\"\r\n [tone]=\"noveltyTone\"\r\n size=\"small\"\r\n ariaLabel=\"Con novedades sin leer\"\r\n />\r\n </span>\r\n}\r\n\r\n<!-- Los dos slots se instancian SIEMPRE, nunca dentro de un `@if`: un\r\n `<ng-content>` detr\u00E1s de una condici\u00F3n que a\u00FAn no es cierta en el primer\r\n render pierde el contenido proyectado en silencio (el `contentChild` que\r\n alimentaba la condici\u00F3n se resuelve un tick tarde). El subt\u00EDtulo vac\u00EDo se\r\n oculta por CSS con `data-empty`, no quit\u00E1ndolo del \u00E1rbol. -->\r\n<span class=\"ius-entityrow__body\">\r\n <span class=\"ius-entityrow__label\">{{ label }}<ng-content select=\"[iusEntityRowLabel]\" /></span>\r\n <span class=\"ius-entityrow__sub\" [attr.data-empty]=\"hasSublabel ? null : 'true'\">{{ sublabel }}<ng-content select=\"[iusEntityRowSublabel]\" /></span>\r\n <!-- Tercera l\u00EDnea: `tag` (tipo) + estado (`statusTag`, o \u00ABArchivado\u00BB por\r\n defecto con state='archived'). Aqu\u00ED el `@if` es seguro: no envuelve\r\n ning\u00FAn `<ng-content>`. Solo ocupa alto si hay etiquetas. -->\r\n @if (tagItems.length) {\r\n <span class=\"ius-entityrow__tags\">\r\n @for (t of tagItems; track $index) {\r\n <ius-tag\r\n [label]=\"t.label\"\r\n [tone]=\"t.tone || 'neutral'\"\r\n [variant]=\"t.variant || 'outline'\"\r\n size=\"small\"\r\n [icon]=\"t.icon\"\r\n />\r\n }\r\n </span>\r\n }\r\n</span>\r\n\r\n<!-- Novedad (s\u00F3lido, alto contraste) vs conteo neutro de hijos: nunca ambos. -->\r\n@if (hasNovelty) {\r\n <span class=\"ius-entityrow__trailing\" [attr.data-dim]=\"dim\">\r\n <ius-insignia\r\n variant=\"count\"\r\n [tone]=\"noveltyTone\"\r\n [count]=\"unread\"\r\n [ariaLabel]=\"unread + ' sin leer'\"\r\n />\r\n </span>\r\n} @else if (showCount) {\r\n <span class=\"ius-entityrow__trailing\" [attr.data-dim]=\"dim\">\r\n <ius-insignia variant=\"count-soft\" [tone]=\"selected ? accent : 'neutral'\" [count]=\"count\" />\r\n </span>\r\n}\r\n\r\n<!-- Pin de acceso r\u00E1pido + men\u00FA \u22EE, revelados en hover. Un clic nacido aqu\u00ED\r\n dentro no navega (guarda `closest` en onRowClick). -->\r\n@if (hasRowActions) {\r\n <span class=\"ius-entityrow__actions\">\r\n @if (hasPin) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entityrow__act ius-entityrow__act--pin\"\r\n [attr.data-pinned]=\"pinned ? 'true' : null\"\r\n [attr.aria-label]=\"pinLabel\"\r\n [attr.aria-pressed]=\"pinned\"\r\n (click)=\"onPinClick($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">push_pin</span>\r\n </button>\r\n }\r\n @if (hasActions) {\r\n <!-- ius-dropdown ES la composici\u00F3n Popover+Menu del golden, ya encapsulada:\r\n respeta `group` (divisores) y `danger` (al fondo, en rojo). -->\r\n <ius-dropdown\r\n [items]=\"actions\"\r\n placement=\"bottom-end\"\r\n [ariaLabel]=\"menuLabel\"\r\n (openChange)=\"onMenuOpenChange($event)\"\r\n >\r\n <button iusDropdownTrigger type=\"button\" class=\"ius-entityrow__act\" [attr.aria-label]=\"menuLabel\">\r\n <span translate=\"no\" class=\"ius-icon\">more_vert</span>\r\n </button>\r\n </ius-dropdown>\r\n }\r\n </span>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;width:100%;display:flex;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-xs);background:transparent;border:0;border-radius:var(--ius-radius-md);cursor:pointer;font-family:var(--ius-font-body);color:var(--ius-text-primary);text-align:left;transition:background var(--ius-duration-fast) var(--ius-ease-standard);--_er-accent: var(--ius-info-600);--_er-tint: color-mix(in srgb, var(--ius-info-500) 14%, white)}:host(:hover){background:var(--ius-neutral-2)}:host(:focus-visible){outline:none;box-shadow:var(--ius-focus-ring)}:host([data-disabled=true]){cursor:default;opacity:.5;pointer-events:none}.ius-entityrow__twisty{flex:0 0 auto;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;background:transparent;cursor:pointer;color:var(--ius-text-tertiary);transition:transform var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entityrow__twisty .ius-icon{font-size:var(--ius-icon-md)}:host([data-expanded=true]) .ius-entityrow__twisty{transform:rotate(90deg)}.ius-entityrow__twisty--spacer{visibility:hidden}.ius-entityrow__twisty--loading{--_er-spin-scale: .818;transform:none}:host([data-expanded=true]) .ius-entityrow__twisty--loading{transform:none}.ius-entityrow__twisty--loading ius-circular-progress{transform:scale(var(--_er-spin-scale))}.ius-entityrow__icon{flex:0 0 auto;display:inline-flex;color:var(--ius-neutral-7)}.ius-entityrow__icon .ius-icon{font-size:var(--ius-icon-md)}.ius-entityrow__body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:0}.ius-entityrow__label{font-size:var(--ius-fs-base);line-height:1.3;color:var(--ius-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entityrow__sub{font-size:var(--ius-fs-sm);line-height:1.3;color:var(--ius-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entityrow__sub[data-empty=true]{display:none}.ius-entityrow__tags{display:flex;align-items:center;gap:var(--ius-space-xxs);margin-top:var(--ius-space-xxs);min-width:0;overflow:hidden}:host([data-level=\"0\"]) .ius-entityrow__label{font-weight:var(--ius-fw-semibold)}:host([data-unread=true]) .ius-entityrow__label{font-weight:var(--ius-fw-semibold)}.ius-entityrow__lead{flex:0 0 auto;display:inline-flex;align-items:center}.ius-entityrow__trailing{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-entityrow__actions{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xxs)}.ius-entityrow__act{appearance:none;border:0;background:transparent;cursor:pointer;width:26px;height:26px;border-radius:var(--ius-radius-sm);display:inline-flex;align-items:center;justify-content:center;color:var(--ius-text-tertiary);opacity:0;transition:opacity var(--ius-duration-fast) var(--ius-ease-standard),background var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entityrow__act .ius-icon{font-size:var(--ius-icon-md)}.ius-entityrow__act:hover{background:var(--ius-neutral-3);color:var(--ius-text-primary)}.ius-entityrow__act:focus-visible{outline:none;box-shadow:var(--ius-focus-ring);opacity:1}:host([data-selected=true]) .ius-entityrow__act{color:var(--_er-accent)}:host([data-selected=true]) .ius-entityrow__act:hover{background:color-mix(in srgb,var(--_er-accent) 16%,white);color:var(--_er-accent)}:host(:hover) .ius-entityrow__act,:host([data-menu-open=true]) .ius-entityrow__act{opacity:1}.ius-entityrow__act--pin[data-pinned=true]{opacity:1;color:var(--_er-accent)}.ius-entityrow__act--pin[data-pinned=true] .ius-icon{font-variation-settings:\"FILL\" 1,\"wght\" 500,\"GRAD\" 200,\"opsz\" 24}:host(:hover) .ius-entityrow__trailing[data-dim=true],:host([data-menu-open=true]) .ius-entityrow__trailing[data-dim=true]{display:none}:host([data-accent=primary]){--_er-accent: var(--ius-primary-700);--_er-tint: color-mix(in srgb, var(--ius-primary-500) 14%, white)}:host([data-accent=info]){--_er-accent: var(--ius-info-600);--_er-tint: color-mix(in srgb, var(--ius-info-500) 14%, white)}:host([data-accent=success]){--_er-accent: var(--ius-success-600);--_er-tint: color-mix(in srgb, var(--ius-success-500) 14%, white)}:host([data-accent=warning]){--_er-accent: var(--ius-warning-600);--_er-tint: color-mix(in srgb, var(--ius-warning-500) 14%, white)}:host([data-accent=danger]){--_er-accent: var(--ius-danger-600);--_er-tint: color-mix(in srgb, var(--ius-danger-500) 14%, white)}:host([data-accent=neutral]){--_er-accent: var(--ius-neutral-9);--_er-tint: color-mix(in srgb, var(--ius-neutral-7) 14%, white)}:host([data-accent=durazno]){--_er-accent: var(--ius-durazno-600);--_er-tint: color-mix(in srgb, var(--ius-durazno-500) 14%, white)}:host([data-accent=banano]){--_er-accent: var(--ius-banano-600);--_er-tint: color-mix(in srgb, var(--ius-banano-500) 14%, white)}:host([data-accent=sandia]){--_er-accent: var(--ius-sandia-600);--_er-tint: color-mix(in srgb, var(--ius-sandia-500) 14%, white)}:host([data-accent=arandano]){--_er-accent: var(--ius-arandano-600);--_er-tint: color-mix(in srgb, var(--ius-arandano-500) 14%, white)}:host([data-accent=uva]){--_er-accent: var(--ius-uva-600);--_er-tint: color-mix(in srgb, var(--ius-uva-500) 14%, white)}:host([data-accent=aguacate]){--_er-accent: var(--ius-aguacate-600);--_er-tint: color-mix(in srgb, var(--ius-aguacate-500) 14%, white)}:host([data-selected=true]){background:var(--_er-tint)}:host([data-selected=true]) .ius-entityrow__label{color:var(--_er-accent);font-weight:var(--ius-fw-semibold)}:host([data-selected=true]) .ius-entityrow__icon,:host([data-selected=true]) .ius-entityrow__twisty{color:var(--_er-accent)}:host([data-selected=true]:hover){background:var(--_er-tint)}:host([data-state=archived]) .ius-entityrow__label{color:var(--ius-text-tertiary);font-weight:var(--ius-fw-regular)}:host([data-state=archived]) .ius-entityrow__sub{color:var(--ius-text-disabled)}:host([data-state=archived]) .ius-entityrow__icon{color:var(--ius-neutral-6)}:host([data-state=archived][data-selected=true]) .ius-entityrow__label{color:var(--_er-accent);font-weight:var(--ius-fw-semibold)}\n"], dependencies: [{ kind: "component", type: CircularProgressComponent, selector: "ius-circular-progress", inputs: ["value", "max", "indeterminate", "tone", "size", "showValue", "ariaLabel", "duration", "paused"] }, { kind: "component", type: DropdownComponent, selector: "ius-dropdown", inputs: ["items", "selectable", "value", "label", "triggerLabel", "triggerIcon", "tone", "variant", "placement", "open", "defaultOpen", "ariaLabel"], outputs: ["valueChange", "openChange"] }, { kind: "directive", type: IusDropdownTriggerDirective, selector: "[iusDropdownTrigger]" }, { kind: "component", type: InsigniaComponent, selector: "ius-insignia", inputs: ["variant", "tone", "size", "label", "count", "max", "ring", "ariaLabel"] }, { kind: "component", type: TagComponent, selector: "ius-tag", inputs: ["label", "role", "tone", "variant", "size", "shape", "icon", "dot", "count", "closable", "closeLabel", "selected", "disabled", "interactive", "state"], outputs: ["clicked", "closed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15994
16027
  }
15995
16028
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EntityRowComponent, decorators: [{
15996
16029
  type: Component,
@@ -15999,6 +16032,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
15999
16032
  DropdownComponent,
16000
16033
  IusDropdownTriggerDirective,
16001
16034
  InsigniaComponent,
16035
+ TagComponent,
16002
16036
  ], changeDetection: ChangeDetectionStrategy.OnPush, host: {
16003
16037
  class: 'ius-entityrow',
16004
16038
  role: 'button',
@@ -16010,6 +16044,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
16010
16044
  '[attr.data-unread]': "hasNovelty ? 'true' : null",
16011
16045
  '[attr.data-disabled]': "disabled ? 'true' : null",
16012
16046
  '[attr.data-menu-open]': "menuOpen() ? 'true' : null",
16047
+ '[attr.data-state]': "state && state !== 'active' ? state : null",
16013
16048
  '[attr.data-loading]': "loading ? 'true' : null",
16014
16049
  '[attr.aria-busy]': "loading ? 'true' : null",
16015
16050
  '[attr.aria-expanded]': "expandable ? (expanded ? 'true' : 'false') : null",
@@ -16018,7 +16053,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
16018
16053
  '[style.padding-left.px]': 'padLeft',
16019
16054
  '(click)': 'onRowClick($event)',
16020
16055
  '(keydown)': 'onKeyDown($event)',
16021
- }, template: "<!-- Orden verbatim del golden: twisty \u00B7 \u00EDcono \u00B7 punto de novedad \u00B7 cuerpo \u00B7\r\n contador \u00B7 acciones. La ra\u00EDz es el propio host (ver el .scss). -->\r\n\r\n<!-- Chevron / aro de carga / hueco.\r\n `loading` gana: el aro ocupa la MISMA caja de 18 px, as\u00ED la fila no salta.\r\n El chevron no entra en el orden de tabulaci\u00F3n (igual que el golden): en un\r\n \u00E1rbol grande ser\u00EDa un tab-stop por fila; el estado lo comunica el\r\n `aria-expanded` de la fila. -->\r\n@if (loading) {\r\n <span class=\"ius-entityrow__twisty ius-entityrow__twisty--loading\">\r\n <ius-circular-progress\r\n [indeterminate]=\"true\"\r\n size=\"small\"\r\n tone=\"neutral\"\r\n ariaLabel=\"Cargando contenido\"\r\n />\r\n </span>\r\n} @else if (expandable) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entityrow__twisty\"\r\n tabindex=\"-1\"\r\n aria-hidden=\"true\"\r\n (click)=\"onToggleClick($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">chevron_right</span>\r\n </button>\r\n} @else {\r\n <span class=\"ius-entityrow__twisty ius-entityrow__twisty--spacer\" aria-hidden=\"true\">\r\n <span translate=\"no\" class=\"ius-icon\">chevron_right</span>\r\n </span>\r\n}\r\n\r\n<span class=\"ius-entityrow__icon\">\r\n <span translate=\"no\" class=\"ius-icon\">{{ effIcon }}</span>\r\n</span>\r\n\r\n<!-- Contenedor con novedad: solo el punto, sin n\u00FAmero (la hoja la comunica con\r\n su contador). Si adem\u00E1s llega `unread`, gana `unread` y esto no se pinta. -->\r\n@if (showNoveltyDot) {\r\n <span class=\"ius-entityrow__lead\">\r\n <ius-insignia\r\n variant=\"dot\"\r\n [tone]=\"noveltyTone\"\r\n size=\"small\"\r\n ariaLabel=\"Con novedades sin leer\"\r\n />\r\n </span>\r\n}\r\n\r\n<!-- Los dos slots se instancian SIEMPRE, nunca dentro de un `@if`: un\r\n `<ng-content>` detr\u00E1s de una condici\u00F3n que a\u00FAn no es cierta en el primer\r\n render pierde el contenido proyectado en silencio (el `contentChild` que\r\n alimentaba la condici\u00F3n se resuelve un tick tarde). El subt\u00EDtulo vac\u00EDo se\r\n oculta por CSS con `data-empty`, no quit\u00E1ndolo del \u00E1rbol. -->\r\n<span class=\"ius-entityrow__body\">\r\n <span class=\"ius-entityrow__label\">{{ label }}<ng-content select=\"[iusEntityRowLabel]\" /></span>\r\n <span class=\"ius-entityrow__sub\" [attr.data-empty]=\"hasSublabel ? null : 'true'\">{{ sublabel }}<ng-content select=\"[iusEntityRowSublabel]\" /></span>\r\n</span>\r\n\r\n<!-- Novedad (s\u00F3lido, alto contraste) vs conteo neutro de hijos: nunca ambos. -->\r\n@if (hasNovelty) {\r\n <span class=\"ius-entityrow__trailing\" [attr.data-dim]=\"dim\">\r\n <ius-insignia\r\n variant=\"count\"\r\n [tone]=\"noveltyTone\"\r\n [count]=\"unread\"\r\n [ariaLabel]=\"unread + ' sin leer'\"\r\n />\r\n </span>\r\n} @else if (showCount) {\r\n <span class=\"ius-entityrow__trailing\" [attr.data-dim]=\"dim\">\r\n <ius-insignia variant=\"count-soft\" [tone]=\"selected ? accent : 'neutral'\" [count]=\"count\" />\r\n </span>\r\n}\r\n\r\n<!-- Pin de acceso r\u00E1pido + men\u00FA \u22EE, revelados en hover. Un clic nacido aqu\u00ED\r\n dentro no navega (guarda `closest` en onRowClick). -->\r\n@if (hasRowActions) {\r\n <span class=\"ius-entityrow__actions\">\r\n @if (hasPin) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entityrow__act ius-entityrow__act--pin\"\r\n [attr.data-pinned]=\"pinned ? 'true' : null\"\r\n [attr.aria-label]=\"pinLabel\"\r\n [attr.aria-pressed]=\"pinned\"\r\n (click)=\"onPinClick($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">push_pin</span>\r\n </button>\r\n }\r\n @if (hasActions) {\r\n <!-- ius-dropdown ES la composici\u00F3n Popover+Menu del golden, ya encapsulada:\r\n respeta `group` (divisores) y `danger` (al fondo, en rojo). -->\r\n <ius-dropdown\r\n [items]=\"actions\"\r\n placement=\"bottom-end\"\r\n [ariaLabel]=\"menuLabel\"\r\n (openChange)=\"onMenuOpenChange($event)\"\r\n >\r\n <button iusDropdownTrigger type=\"button\" class=\"ius-entityrow__act\" [attr.aria-label]=\"menuLabel\">\r\n <span translate=\"no\" class=\"ius-icon\">more_vert</span>\r\n </button>\r\n </ius-dropdown>\r\n }\r\n </span>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;width:100%;display:flex;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-xs);background:transparent;border:0;border-radius:var(--ius-radius-md);cursor:pointer;font-family:var(--ius-font-body);color:var(--ius-text-primary);text-align:left;transition:background var(--ius-duration-fast) var(--ius-ease-standard);--_er-accent: var(--ius-info-600);--_er-tint: color-mix(in srgb, var(--ius-info-500) 14%, white)}:host(:hover){background:var(--ius-neutral-2)}:host(:focus-visible){outline:none;box-shadow:var(--ius-focus-ring)}:host([data-disabled=true]){cursor:default;opacity:.5;pointer-events:none}.ius-entityrow__twisty{flex:0 0 auto;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;background:transparent;cursor:pointer;color:var(--ius-text-tertiary);transition:transform var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entityrow__twisty .ius-icon{font-size:var(--ius-icon-md)}:host([data-expanded=true]) .ius-entityrow__twisty{transform:rotate(90deg)}.ius-entityrow__twisty--spacer{visibility:hidden}.ius-entityrow__twisty--loading{--_er-spin-scale: .818;transform:none}:host([data-expanded=true]) .ius-entityrow__twisty--loading{transform:none}.ius-entityrow__twisty--loading ius-circular-progress{transform:scale(var(--_er-spin-scale))}.ius-entityrow__icon{flex:0 0 auto;display:inline-flex;color:var(--ius-neutral-7)}.ius-entityrow__icon .ius-icon{font-size:var(--ius-icon-md)}.ius-entityrow__body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:0}.ius-entityrow__label{font-size:var(--ius-fs-base);line-height:1.3;color:var(--ius-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entityrow__sub{font-size:var(--ius-fs-sm);line-height:1.3;color:var(--ius-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entityrow__sub[data-empty=true]{display:none}:host([data-level=\"0\"]) .ius-entityrow__label{font-weight:var(--ius-fw-semibold)}:host([data-unread=true]) .ius-entityrow__label{font-weight:var(--ius-fw-semibold)}.ius-entityrow__lead{flex:0 0 auto;display:inline-flex;align-items:center}.ius-entityrow__trailing{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-entityrow__actions{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xxs)}.ius-entityrow__act{appearance:none;border:0;background:transparent;cursor:pointer;width:26px;height:26px;border-radius:var(--ius-radius-sm);display:inline-flex;align-items:center;justify-content:center;color:var(--ius-text-tertiary);opacity:0;transition:opacity var(--ius-duration-fast) var(--ius-ease-standard),background var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entityrow__act .ius-icon{font-size:var(--ius-icon-md)}.ius-entityrow__act:hover{background:var(--ius-neutral-3);color:var(--ius-text-primary)}.ius-entityrow__act:focus-visible{outline:none;box-shadow:var(--ius-focus-ring);opacity:1}:host([data-selected=true]) .ius-entityrow__act{color:var(--_er-accent)}:host([data-selected=true]) .ius-entityrow__act:hover{background:color-mix(in srgb,var(--_er-accent) 16%,white);color:var(--_er-accent)}:host(:hover) .ius-entityrow__act,:host([data-menu-open=true]) .ius-entityrow__act{opacity:1}.ius-entityrow__act--pin[data-pinned=true]{opacity:1;color:var(--_er-accent)}.ius-entityrow__act--pin[data-pinned=true] .ius-icon{font-variation-settings:\"FILL\" 1,\"wght\" 500,\"GRAD\" 200,\"opsz\" 24}:host(:hover) .ius-entityrow__trailing[data-dim=true],:host([data-menu-open=true]) .ius-entityrow__trailing[data-dim=true]{display:none}:host([data-accent=primary]){--_er-accent: var(--ius-primary-700);--_er-tint: color-mix(in srgb, var(--ius-primary-500) 14%, white)}:host([data-accent=info]){--_er-accent: var(--ius-info-600);--_er-tint: color-mix(in srgb, var(--ius-info-500) 14%, white)}:host([data-accent=success]){--_er-accent: var(--ius-success-600);--_er-tint: color-mix(in srgb, var(--ius-success-500) 14%, white)}:host([data-accent=warning]){--_er-accent: var(--ius-warning-600);--_er-tint: color-mix(in srgb, var(--ius-warning-500) 14%, white)}:host([data-accent=danger]){--_er-accent: var(--ius-danger-600);--_er-tint: color-mix(in srgb, var(--ius-danger-500) 14%, white)}:host([data-accent=neutral]){--_er-accent: var(--ius-neutral-9);--_er-tint: color-mix(in srgb, var(--ius-neutral-7) 14%, white)}:host([data-accent=durazno]){--_er-accent: var(--ius-durazno-600);--_er-tint: color-mix(in srgb, var(--ius-durazno-500) 14%, white)}:host([data-accent=banano]){--_er-accent: var(--ius-banano-600);--_er-tint: color-mix(in srgb, var(--ius-banano-500) 14%, white)}:host([data-accent=sandia]){--_er-accent: var(--ius-sandia-600);--_er-tint: color-mix(in srgb, var(--ius-sandia-500) 14%, white)}:host([data-accent=arandano]){--_er-accent: var(--ius-arandano-600);--_er-tint: color-mix(in srgb, var(--ius-arandano-500) 14%, white)}:host([data-accent=uva]){--_er-accent: var(--ius-uva-600);--_er-tint: color-mix(in srgb, var(--ius-uva-500) 14%, white)}:host([data-accent=aguacate]){--_er-accent: var(--ius-aguacate-600);--_er-tint: color-mix(in srgb, var(--ius-aguacate-500) 14%, white)}:host([data-selected=true]){background:var(--_er-tint)}:host([data-selected=true]) .ius-entityrow__label{color:var(--_er-accent);font-weight:var(--ius-fw-semibold)}:host([data-selected=true]) .ius-entityrow__icon,:host([data-selected=true]) .ius-entityrow__twisty{color:var(--_er-accent)}:host([data-selected=true]:hover){background:var(--_er-tint)}\n"] }]
16056
+ }, template: "<!-- Orden verbatim del golden: twisty \u00B7 \u00EDcono \u00B7 punto de novedad \u00B7 cuerpo \u00B7\r\n contador \u00B7 acciones. La ra\u00EDz es el propio host (ver el .scss). -->\r\n\r\n<!-- Chevron / aro de carga / hueco.\r\n `loading` gana: el aro ocupa la MISMA caja de 18 px, as\u00ED la fila no salta.\r\n El chevron no entra en el orden de tabulaci\u00F3n (igual que el golden): en un\r\n \u00E1rbol grande ser\u00EDa un tab-stop por fila; el estado lo comunica el\r\n `aria-expanded` de la fila. -->\r\n@if (loading) {\r\n <span class=\"ius-entityrow__twisty ius-entityrow__twisty--loading\">\r\n <ius-circular-progress\r\n [indeterminate]=\"true\"\r\n size=\"small\"\r\n tone=\"neutral\"\r\n ariaLabel=\"Cargando contenido\"\r\n />\r\n </span>\r\n} @else if (expandable) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entityrow__twisty\"\r\n tabindex=\"-1\"\r\n aria-hidden=\"true\"\r\n (click)=\"onToggleClick($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">chevron_right</span>\r\n </button>\r\n} @else {\r\n <span class=\"ius-entityrow__twisty ius-entityrow__twisty--spacer\" aria-hidden=\"true\">\r\n <span translate=\"no\" class=\"ius-icon\">chevron_right</span>\r\n </span>\r\n}\r\n\r\n<span class=\"ius-entityrow__icon\">\r\n <span translate=\"no\" class=\"ius-icon\">{{ effIcon }}</span>\r\n</span>\r\n\r\n<!-- Contenedor con novedad: solo el punto, sin n\u00FAmero (la hoja la comunica con\r\n su contador). Si adem\u00E1s llega `unread`, gana `unread` y esto no se pinta. -->\r\n@if (showNoveltyDot) {\r\n <span class=\"ius-entityrow__lead\">\r\n <ius-insignia\r\n variant=\"dot\"\r\n [tone]=\"noveltyTone\"\r\n size=\"small\"\r\n ariaLabel=\"Con novedades sin leer\"\r\n />\r\n </span>\r\n}\r\n\r\n<!-- Los dos slots se instancian SIEMPRE, nunca dentro de un `@if`: un\r\n `<ng-content>` detr\u00E1s de una condici\u00F3n que a\u00FAn no es cierta en el primer\r\n render pierde el contenido proyectado en silencio (el `contentChild` que\r\n alimentaba la condici\u00F3n se resuelve un tick tarde). El subt\u00EDtulo vac\u00EDo se\r\n oculta por CSS con `data-empty`, no quit\u00E1ndolo del \u00E1rbol. -->\r\n<span class=\"ius-entityrow__body\">\r\n <span class=\"ius-entityrow__label\">{{ label }}<ng-content select=\"[iusEntityRowLabel]\" /></span>\r\n <span class=\"ius-entityrow__sub\" [attr.data-empty]=\"hasSublabel ? null : 'true'\">{{ sublabel }}<ng-content select=\"[iusEntityRowSublabel]\" /></span>\r\n <!-- Tercera l\u00EDnea: `tag` (tipo) + estado (`statusTag`, o \u00ABArchivado\u00BB por\r\n defecto con state='archived'). Aqu\u00ED el `@if` es seguro: no envuelve\r\n ning\u00FAn `<ng-content>`. Solo ocupa alto si hay etiquetas. -->\r\n @if (tagItems.length) {\r\n <span class=\"ius-entityrow__tags\">\r\n @for (t of tagItems; track $index) {\r\n <ius-tag\r\n [label]=\"t.label\"\r\n [tone]=\"t.tone || 'neutral'\"\r\n [variant]=\"t.variant || 'outline'\"\r\n size=\"small\"\r\n [icon]=\"t.icon\"\r\n />\r\n }\r\n </span>\r\n }\r\n</span>\r\n\r\n<!-- Novedad (s\u00F3lido, alto contraste) vs conteo neutro de hijos: nunca ambos. -->\r\n@if (hasNovelty) {\r\n <span class=\"ius-entityrow__trailing\" [attr.data-dim]=\"dim\">\r\n <ius-insignia\r\n variant=\"count\"\r\n [tone]=\"noveltyTone\"\r\n [count]=\"unread\"\r\n [ariaLabel]=\"unread + ' sin leer'\"\r\n />\r\n </span>\r\n} @else if (showCount) {\r\n <span class=\"ius-entityrow__trailing\" [attr.data-dim]=\"dim\">\r\n <ius-insignia variant=\"count-soft\" [tone]=\"selected ? accent : 'neutral'\" [count]=\"count\" />\r\n </span>\r\n}\r\n\r\n<!-- Pin de acceso r\u00E1pido + men\u00FA \u22EE, revelados en hover. Un clic nacido aqu\u00ED\r\n dentro no navega (guarda `closest` en onRowClick). -->\r\n@if (hasRowActions) {\r\n <span class=\"ius-entityrow__actions\">\r\n @if (hasPin) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entityrow__act ius-entityrow__act--pin\"\r\n [attr.data-pinned]=\"pinned ? 'true' : null\"\r\n [attr.aria-label]=\"pinLabel\"\r\n [attr.aria-pressed]=\"pinned\"\r\n (click)=\"onPinClick($event)\"\r\n >\r\n <span translate=\"no\" class=\"ius-icon\">push_pin</span>\r\n </button>\r\n }\r\n @if (hasActions) {\r\n <!-- ius-dropdown ES la composici\u00F3n Popover+Menu del golden, ya encapsulada:\r\n respeta `group` (divisores) y `danger` (al fondo, en rojo). -->\r\n <ius-dropdown\r\n [items]=\"actions\"\r\n placement=\"bottom-end\"\r\n [ariaLabel]=\"menuLabel\"\r\n (openChange)=\"onMenuOpenChange($event)\"\r\n >\r\n <button iusDropdownTrigger type=\"button\" class=\"ius-entityrow__act\" [attr.aria-label]=\"menuLabel\">\r\n <span translate=\"no\" class=\"ius-icon\">more_vert</span>\r\n </button>\r\n </ius-dropdown>\r\n }\r\n </span>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;width:100%;display:flex;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-xs) var(--ius-space-xs);background:transparent;border:0;border-radius:var(--ius-radius-md);cursor:pointer;font-family:var(--ius-font-body);color:var(--ius-text-primary);text-align:left;transition:background var(--ius-duration-fast) var(--ius-ease-standard);--_er-accent: var(--ius-info-600);--_er-tint: color-mix(in srgb, var(--ius-info-500) 14%, white)}:host(:hover){background:var(--ius-neutral-2)}:host(:focus-visible){outline:none;box-shadow:var(--ius-focus-ring)}:host([data-disabled=true]){cursor:default;opacity:.5;pointer-events:none}.ius-entityrow__twisty{flex:0 0 auto;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;background:transparent;cursor:pointer;color:var(--ius-text-tertiary);transition:transform var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entityrow__twisty .ius-icon{font-size:var(--ius-icon-md)}:host([data-expanded=true]) .ius-entityrow__twisty{transform:rotate(90deg)}.ius-entityrow__twisty--spacer{visibility:hidden}.ius-entityrow__twisty--loading{--_er-spin-scale: .818;transform:none}:host([data-expanded=true]) .ius-entityrow__twisty--loading{transform:none}.ius-entityrow__twisty--loading ius-circular-progress{transform:scale(var(--_er-spin-scale))}.ius-entityrow__icon{flex:0 0 auto;display:inline-flex;color:var(--ius-neutral-7)}.ius-entityrow__icon .ius-icon{font-size:var(--ius-icon-md)}.ius-entityrow__body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:0}.ius-entityrow__label{font-size:var(--ius-fs-base);line-height:1.3;color:var(--ius-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entityrow__sub{font-size:var(--ius-fs-sm);line-height:1.3;color:var(--ius-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entityrow__sub[data-empty=true]{display:none}.ius-entityrow__tags{display:flex;align-items:center;gap:var(--ius-space-xxs);margin-top:var(--ius-space-xxs);min-width:0;overflow:hidden}:host([data-level=\"0\"]) .ius-entityrow__label{font-weight:var(--ius-fw-semibold)}:host([data-unread=true]) .ius-entityrow__label{font-weight:var(--ius-fw-semibold)}.ius-entityrow__lead{flex:0 0 auto;display:inline-flex;align-items:center}.ius-entityrow__trailing{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-entityrow__actions{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--ius-space-xxs)}.ius-entityrow__act{appearance:none;border:0;background:transparent;cursor:pointer;width:26px;height:26px;border-radius:var(--ius-radius-sm);display:inline-flex;align-items:center;justify-content:center;color:var(--ius-text-tertiary);opacity:0;transition:opacity var(--ius-duration-fast) var(--ius-ease-standard),background var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entityrow__act .ius-icon{font-size:var(--ius-icon-md)}.ius-entityrow__act:hover{background:var(--ius-neutral-3);color:var(--ius-text-primary)}.ius-entityrow__act:focus-visible{outline:none;box-shadow:var(--ius-focus-ring);opacity:1}:host([data-selected=true]) .ius-entityrow__act{color:var(--_er-accent)}:host([data-selected=true]) .ius-entityrow__act:hover{background:color-mix(in srgb,var(--_er-accent) 16%,white);color:var(--_er-accent)}:host(:hover) .ius-entityrow__act,:host([data-menu-open=true]) .ius-entityrow__act{opacity:1}.ius-entityrow__act--pin[data-pinned=true]{opacity:1;color:var(--_er-accent)}.ius-entityrow__act--pin[data-pinned=true] .ius-icon{font-variation-settings:\"FILL\" 1,\"wght\" 500,\"GRAD\" 200,\"opsz\" 24}:host(:hover) .ius-entityrow__trailing[data-dim=true],:host([data-menu-open=true]) .ius-entityrow__trailing[data-dim=true]{display:none}:host([data-accent=primary]){--_er-accent: var(--ius-primary-700);--_er-tint: color-mix(in srgb, var(--ius-primary-500) 14%, white)}:host([data-accent=info]){--_er-accent: var(--ius-info-600);--_er-tint: color-mix(in srgb, var(--ius-info-500) 14%, white)}:host([data-accent=success]){--_er-accent: var(--ius-success-600);--_er-tint: color-mix(in srgb, var(--ius-success-500) 14%, white)}:host([data-accent=warning]){--_er-accent: var(--ius-warning-600);--_er-tint: color-mix(in srgb, var(--ius-warning-500) 14%, white)}:host([data-accent=danger]){--_er-accent: var(--ius-danger-600);--_er-tint: color-mix(in srgb, var(--ius-danger-500) 14%, white)}:host([data-accent=neutral]){--_er-accent: var(--ius-neutral-9);--_er-tint: color-mix(in srgb, var(--ius-neutral-7) 14%, white)}:host([data-accent=durazno]){--_er-accent: var(--ius-durazno-600);--_er-tint: color-mix(in srgb, var(--ius-durazno-500) 14%, white)}:host([data-accent=banano]){--_er-accent: var(--ius-banano-600);--_er-tint: color-mix(in srgb, var(--ius-banano-500) 14%, white)}:host([data-accent=sandia]){--_er-accent: var(--ius-sandia-600);--_er-tint: color-mix(in srgb, var(--ius-sandia-500) 14%, white)}:host([data-accent=arandano]){--_er-accent: var(--ius-arandano-600);--_er-tint: color-mix(in srgb, var(--ius-arandano-500) 14%, white)}:host([data-accent=uva]){--_er-accent: var(--ius-uva-600);--_er-tint: color-mix(in srgb, var(--ius-uva-500) 14%, white)}:host([data-accent=aguacate]){--_er-accent: var(--ius-aguacate-600);--_er-tint: color-mix(in srgb, var(--ius-aguacate-500) 14%, white)}:host([data-selected=true]){background:var(--_er-tint)}:host([data-selected=true]) .ius-entityrow__label{color:var(--_er-accent);font-weight:var(--ius-fw-semibold)}:host([data-selected=true]) .ius-entityrow__icon,:host([data-selected=true]) .ius-entityrow__twisty{color:var(--_er-accent)}:host([data-selected=true]:hover){background:var(--_er-tint)}:host([data-state=archived]) .ius-entityrow__label{color:var(--ius-text-tertiary);font-weight:var(--ius-fw-regular)}:host([data-state=archived]) .ius-entityrow__sub{color:var(--ius-text-disabled)}:host([data-state=archived]) .ius-entityrow__icon{color:var(--ius-neutral-6)}:host([data-state=archived][data-selected=true]) .ius-entityrow__label{color:var(--_er-accent);font-weight:var(--ius-fw-semibold)}\n"] }]
16022
16057
  }], propDecorators: { kind: [{
16023
16058
  type: Input
16024
16059
  }], icon: [{
@@ -16066,6 +16101,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
16066
16101
  type: Input
16067
16102
  }], actionsLabel: [{
16068
16103
  type: Input
16104
+ }], state: [{
16105
+ type: Input
16106
+ }], tag: [{
16107
+ type: Input
16108
+ }], statusTag: [{
16109
+ type: Input
16069
16110
  }], ariaLabel: [{
16070
16111
  type: Input
16071
16112
  }], toggle: [{
@@ -17495,7 +17536,7 @@ class EntityNavigatorComponent {
17495
17536
  return fijada ? 'Dejar de fijar sección arriba' : 'Fijar sección arriba';
17496
17537
  }
17497
17538
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EntityNavigatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17498
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EntityNavigatorComponent, isStandalone: true, selector: "ius-entity-navigator", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, titleIcon: { classPropertyName: "titleIcon", publicName: "titleIcon", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchThreshold: { classPropertyName: "searchThreshold", publicName: "searchThreshold", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, searchValue: { classPropertyName: "searchValue", publicName: "searchValue", isSignal: true, isRequired: false, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null }, selectedFilters: { classPropertyName: "selectedFilters", publicName: "selectedFilters", isSignal: true, isRequired: false, transformFunction: null }, availableFilters: { classPropertyName: "availableFilters", publicName: "availableFilters", isSignal: true, isRequired: false, transformFunction: null }, activeFacets: { classPropertyName: "activeFacets", publicName: "activeFacets", isSignal: true, isRequired: false, transformFunction: null }, stateSegments: { classPropertyName: "stateSegments", publicName: "stateSegments", isSignal: true, isRequired: false, transformFunction: null }, stateValue: { classPropertyName: "stateValue", publicName: "stateValue", isSignal: true, isRequired: false, transformFunction: null }, sortLabel: { classPropertyName: "sortLabel", publicName: "sortLabel", isSignal: true, isRequired: false, transformFunction: null }, sortOptions: { classPropertyName: "sortOptions", publicName: "sortOptions", isSignal: true, isRequired: false, transformFunction: null }, sortValue: { classPropertyName: "sortValue", publicName: "sortValue", isSignal: true, isRequired: false, transformFunction: null }, metaLabel: { classPropertyName: "metaLabel", publicName: "metaLabel", isSignal: true, isRequired: false, transformFunction: null }, groups: { classPropertyName: "groups", publicName: "groups", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, accent: { classPropertyName: "accent", publicName: "accent", isSignal: true, isRequired: false, transformFunction: null }, defaultExpanded: { classPropertyName: "defaultExpanded", publicName: "defaultExpanded", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, autoExpandOnFilter: { classPropertyName: "autoExpandOnFilter", publicName: "autoExpandOnFilter", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, defaultSelected: { classPropertyName: "defaultSelected", publicName: "defaultSelected", isSignal: true, isRequired: false, transformFunction: null }, emptyStateTemplate: { classPropertyName: "emptyStateTemplate", publicName: "emptyStateTemplate", isSignal: true, isRequired: false, transformFunction: null }, noResultsLabel: { classPropertyName: "noResultsLabel", publicName: "noResultsLabel", isSignal: true, isRequired: false, transformFunction: null }, createLabel: { classPropertyName: "createLabel", publicName: "createLabel", isSignal: true, isRequired: false, transformFunction: null }, createIcon: { classPropertyName: "createIcon", publicName: "createIcon", isSignal: true, isRequired: false, transformFunction: null }, groupLimit: { classPropertyName: "groupLimit", publicName: "groupLimit", isSignal: true, isRequired: false, transformFunction: null }, collapsibleGroups: { classPropertyName: "collapsibleGroups", publicName: "collapsibleGroups", isSignal: true, isRequired: false, transformFunction: null }, collapsedGroups: { classPropertyName: "collapsedGroups", publicName: "collapsedGroups", isSignal: true, isRequired: false, transformFunction: null }, stickyHeaders: { classPropertyName: "stickyHeaders", publicName: "stickyHeaders", isSignal: true, isRequired: false, transformFunction: null }, pinnableGroups: { classPropertyName: "pinnableGroups", publicName: "pinnableGroups", isSignal: true, isRequired: false, transformFunction: null }, defaultPinnedGroup: { classPropertyName: "defaultPinnedGroup", publicName: "defaultPinnedGroup", isSignal: true, isRequired: false, transformFunction: null }, moreLabel: { classPropertyName: "moreLabel", publicName: "moreLabel", isSignal: true, isRequired: false, transformFunction: null }, alphaIndex: { classPropertyName: "alphaIndex", publicName: "alphaIndex", isSignal: true, isRequired: false, transformFunction: null }, alphaIndexLetters: { classPropertyName: "alphaIndexLetters", publicName: "alphaIndexLetters", isSignal: true, isRequired: false, transformFunction: null }, loadMoreLabel: { classPropertyName: "loadMoreLabel", publicName: "loadMoreLabel", isSignal: true, isRequired: false, transformFunction: null }, virtualized: { classPropertyName: "virtualized", publicName: "virtualized", isSignal: true, isRequired: false, transformFunction: null }, virtualizeThreshold: { classPropertyName: "virtualizeThreshold", publicName: "virtualizeThreshold", isSignal: true, isRequired: false, transformFunction: null }, itemHeights: { classPropertyName: "itemHeights", publicName: "itemHeights", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, defaultCollapsed: { classPropertyName: "defaultCollapsed", publicName: "defaultCollapsed", isSignal: true, isRequired: false, transformFunction: null }, fluidWidth: { classPropertyName: "fluidWidth", publicName: "fluidWidth", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { search: "search", searchChange: "searchChange", searchClear: "searchClear", filter: "filter", filterRemove: "filterRemove", addFilter: "addFilter", stateChange: "stateChange", facetAdd: "facetAdd", facetRemove: "facetRemove", sort: "sort", select: "select", selectedChange: "selectedChange", expandedChange: "expandedChange", togglePin: "togglePin", create: "create", pinGroup: "pinGroup", groupCollapse: "groupCollapse", more: "more", collapsedChange: "collapsedChange", jumpToLetter: "jumpToLetter", loadMore: "loadMore", expandLoad: "expandLoad" }, host: { properties: { "attr.data-collapsed": "isCollapsed() ? 'true' : null", "attr.data-fluid": "fluidWidth() ? 'true' : null", "attr.aria-label": "ariaLabel() || title() || null" }, classAttribute: "ius-entnav" }, viewQueries: [{ propertyName: "bodyRef", first: true, predicate: ["body"], descendants: true, isSignal: true }, { propertyName: "alphaRef", first: true, predicate: ["alpha"], descendants: true, isSignal: true }, { propertyName: "searchRef", first: true, predicate: ["searchBox"], descendants: true, isSignal: true }, { propertyName: "sentinels", predicate: ["lmSentinel"], descendants: true, isSignal: true }, { propertyName: "letterAnchors", predicate: ["letterAnchor"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Riel colapsado: solo expandir + CTA. Rama aparte, como el golden. -->\r\n@if (collapsible() && isCollapsed()) {\r\n <div class=\"ius-entnav__rail\">\r\n <ius-icon-button\r\n icon=\"left_panel_open\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Expandir\"\r\n (clicked)=\"alternarColapso()\"\r\n />\r\n @if (hayPie()) {\r\n <ius-icon-button\r\n [icon]=\"createIcon()\"\r\n variant=\"secondary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n [ariaLabel]=\"createLabel()\"\r\n (clicked)=\"create.emit($event)\"\r\n />\r\n }\r\n </div>\r\n} @else {\r\n <!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Cabecera \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"ius-entnav__head\">\r\n @if (hayCabecera()) {\r\n <div class=\"ius-entnav__titlerow\">\r\n @if (title()) {\r\n <div class=\"ius-entnav__title\">\r\n @if (titleIcon()) {\r\n <span translate=\"no\" class=\"ius-icon\">{{ titleIcon() }}</span>\r\n }\r\n {{ title() }}\r\n </div>\r\n } @else {\r\n <span></span>\r\n }\r\n <span class=\"ius-entnav__actions\">\r\n @if (showSearchToggle()) {\r\n <!-- El `state: pressed` del golden no se porta: IconButton omite `state`\r\n de su API p\u00FAblica a prop\u00F3sito (decisi\u00F3n suya, documentada). -->\r\n <ius-icon-button\r\n icon=\"search\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Buscar (\u2318K)\"\r\n (clicked)=\"alternarBusqueda()\"\r\n />\r\n }\r\n @if (collapsible()) {\r\n <ius-icon-button\r\n icon=\"left_panel_close\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Colapsar\"\r\n (clicked)=\"alternarColapso()\"\r\n />\r\n }\r\n </span>\r\n </div>\r\n }\r\n\r\n @if (searchVisible()) {\r\n <div #searchBox>\r\n <ius-search-bar\r\n [placeholder]=\"searchPlaceholder()\"\r\n size=\"medium\"\r\n [value]=\"searchValue()\"\r\n (valueChange)=\"onSearchValueChange($event)\"\r\n (search)=\"search.emit($event)\"\r\n (cleared)=\"searchClear.emit()\"\r\n />\r\n </div>\r\n }\r\n\r\n <!-- Eje de estado: excluyente, ortogonal a facetas y b\u00FAsqueda; no poda datos. -->\r\n @if (stateSegments()?.length) {\r\n <div class=\"ius-entnav__state\">\r\n <ius-segmented-control\r\n [options]=\"segmentos()\"\r\n [value]=\"stateVal()\"\r\n size=\"small\"\r\n variant=\"subtle\"\r\n fullWidth\r\n (valueChange)=\"elegirEstado($event)\"\r\n />\r\n </div>\r\n }\r\n\r\n @if (hayBarraFiltros()) {\r\n <div class=\"ius-entnav__filters\">\r\n @for (f of filters(); track f.key) {\r\n <ius-tag\r\n role=\"filter\"\r\n size=\"small\"\r\n [tone]=\"tonoFiltro(f)\"\r\n [icon]=\"f.icon\"\r\n [dot]=\"f.dot\"\r\n [count]=\"f.count\"\r\n [label]=\"f.label\"\r\n [selected]=\"activeKeys().has(f.key)\"\r\n [closable]=\"!!f.removable\"\r\n (clicked)=\"alternarFiltro(f.key)\"\r\n (closed)=\"quitarFiltro(f.key)\"\r\n />\r\n }\r\n\r\n <!-- Facetas: Tag `soft` con el tono categ\u00F3rico de su categor\u00EDa, NUNCA solid. -->\r\n @for (f of facets(); track f.key) {\r\n <ius-tag\r\n role=\"label\"\r\n variant=\"soft\"\r\n size=\"small\"\r\n [tone]=\"tonoFaceta(f)\"\r\n [icon]=\"f.icon\"\r\n closable\r\n [label]=\"textoFaceta(f)\"\r\n (closed)=\"quitarFaceta(f.key)\"\r\n />\r\n }\r\n\r\n @if (availableFilters().length) {\r\n <ius-popover\r\n trigger=\"manual\"\r\n [open]=\"addOpen()\"\r\n [dismissable]=\"true\"\r\n placement=\"bottom-start\"\r\n [offset]=\"6\"\r\n [showArrow]=\"false\"\r\n padding=\"none\"\r\n (openChange)=\"onAddOpenChange($event)\"\r\n >\r\n <ius-tag\r\n role=\"filter\"\r\n variant=\"outline\"\r\n tone=\"neutral\"\r\n size=\"small\"\r\n icon=\"add\"\r\n label=\"Filtro\"\r\n [selected]=\"addOpen()\"\r\n (clicked)=\"alternarMenuFiltro()\"\r\n />\r\n\r\n <div iusPopoverContent class=\"ius-entnav__addpanel\">\r\n @if (addStep(); as step) {\r\n <div class=\"ius-entnav__addhead\">\r\n <ius-menu-item\r\n icon=\"chevron_left\"\r\n [label]=\"step.label\"\r\n size=\"small\"\r\n (clicked)=\"volverDelPaso()\"\r\n />\r\n @if (step.picker === 'search') {\r\n <ius-search-bar\r\n size=\"small\"\r\n placeholder=\"Buscar\u2026\"\r\n [value]=\"addQuery()\"\r\n (valueChange)=\"addQuery.set($event)\"\r\n (cleared)=\"addQuery.set('')\"\r\n />\r\n }\r\n </div>\r\n <div class=\"ius-entnav__addlist ius-scroll ius-scroll--sm\">\r\n @if (opcionesDelPaso().length === 0) {\r\n <div class=\"ius-entnav__addempty\">Sin resultados</div>\r\n } @else {\r\n @for (o of opcionesDelPaso(); track o.key) {\r\n <!-- El check se proyecta SIEMPRE y se oculta por CSS: un\r\n `<ng-content>` detr\u00E1s de un `@if` que depende de un\r\n contentChild se pierde en el primer render. -->\r\n <ius-menu-item\r\n [label]=\"o.label\"\r\n size=\"small\"\r\n [selected]=\"facetaActiva(step, o)\"\r\n (clicked)=\"elegirValor(step, o)\"\r\n >\r\n <span\r\n iusMenuItemTrailing\r\n translate=\"no\"\r\n class=\"ius-icon\"\r\n [class.ius-entnav__check--off]=\"!facetaActiva(step, o)\"\r\n >check</span\r\n >\r\n </ius-menu-item>\r\n }\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"ius-entnav__addlist ius-scroll ius-scroll--sm\">\r\n @for (a of categoriasDisponibles(); track a.key) {\r\n <ius-menu-item\r\n [icon]=\"a.icon\"\r\n [label]=\"a.label\"\r\n size=\"small\"\r\n (clicked)=\"elegirCategoria(a)\"\r\n >\r\n <span\r\n iusMenuItemTrailing\r\n translate=\"no\"\r\n class=\"ius-icon\"\r\n [class.ius-entnav__check--off]=\"!a.picker\"\r\n >chevron_right</span\r\n >\r\n </ius-menu-item>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </ius-popover>\r\n }\r\n </div>\r\n }\r\n\r\n @if (hayMeta()) {\r\n <div class=\"ius-entnav__meta\">\r\n <span>{{ metaLabel() || '' }}</span>\r\n @if (sortOptions()?.length) {\r\n <ius-dropdown\r\n [selectable]=\"true\"\r\n [value]=\"sortValue()\"\r\n label=\"Ordenar por\"\r\n tone=\"neutral\"\r\n [items]=\"sortOptions() ?? []\"\r\n placement=\"bottom-end\"\r\n (valueChange)=\"onSort($event)\"\r\n />\r\n } @else if (sortLabel()) {\r\n <button type=\"button\" class=\"ius-entnav__sort\" (click)=\"sort.emit({ value: sortValue() })\">\r\n {{ sortLabel() }}\r\n <span translate=\"no\" class=\"ius-icon\">expand_more</span>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Secci\u00F3n fijada: vive FUERA del cuerpo con scroll (no entra en la ventana\r\n de render ni en el cursor aritm\u00E9tico de la virtualizaci\u00F3n). -->\r\n @if (modelo().fijada; as fijada) {\r\n <div class=\"ius-entnav__pinned\">\r\n <ng-container [ngTemplateOutlet]=\"seccionTpl\" [ngTemplateOutletContext]=\"{ $implicit: fijada }\" />\r\n </div>\r\n }\r\n\r\n <div class=\"ius-entnav__scrollwrap\">\r\n <div\r\n class=\"ius-entnav__body ius-scroll ius-scroll--sm\"\r\n #body\r\n [attr.data-scrolled]=\"bodyScrolled() ? 'true' : null\"\r\n >\r\n @if (vacio()) {\r\n <div class=\"ius-entnav__empty\">\r\n @if (emptyStateTemplate(); as tpl) {\r\n <ng-container [ngTemplateOutlet]=\"tpl\" />\r\n } @else {\r\n <ius-empty-state\r\n variant=\"no-results\"\r\n size=\"compact\"\r\n [title]=\"noResultsLabel()\"\r\n [description]=\"descripcionVacio()\"\r\n />\r\n }\r\n </div>\r\n } @else {\r\n @for (s of modelo().secciones; track s.gk) {\r\n <ng-container [ngTemplateOutlet]=\"seccionTpl\" [ngTemplateOutletContext]=\"{ $implicit: s }\" />\r\n }\r\n }\r\n </div>\r\n\r\n <!-- \u00CDndice alfab\u00E9tico: navega, no reordena. Se oculta con b\u00FAsqueda/filtros. -->\r\n @if (alphaVisible()) {\r\n <nav\r\n class=\"ius-entnav__alpha\"\r\n #alpha\r\n role=\"navigation\"\r\n aria-label=\"\u00CDndice alfab\u00E9tico\"\r\n (keydown)=\"onRailKey($event)\"\r\n >\r\n @for (L of displayLetters(); track L) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entnav__alpha-let\"\r\n [disabled]=\"!letraHabilitada(L)\"\r\n [attr.data-active]=\"activeLetter() === L ? 'true' : null\"\r\n [attr.aria-current]=\"activeLetter() === L ? 'true' : null\"\r\n [attr.aria-label]=\"'Ir a ' + L\"\r\n [attr.tabindex]=\"letraHabilitada(L) ? (L === alphaTabStop() ? 0 : -1) : -1\"\r\n (click)=\"saltarALetra(L)\"\r\n >\r\n {{ L }}\r\n </button>\r\n }\r\n </nav>\r\n }\r\n </div>\r\n\r\n @if (hayPie()) {\r\n <div class=\"ius-entnav__footer\">\r\n <ius-button\r\n variant=\"primary\"\r\n [prefixIcon]=\"createIcon()\"\r\n [label]=\"createLabel()\"\r\n fullWidth\r\n class=\"ius-entnav__cta\"\r\n (clicked)=\"create.emit($event)\"\r\n />\r\n </div>\r\n }\r\n}\r\n\r\n<!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Plantilla de secci\u00F3n (cuerpo y secci\u00F3n fijada comparten) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<ng-template #seccionTpl let-s>\r\n <section\r\n class=\"ius-entnav__section\"\r\n [attr.data-group]=\"s.gk\"\r\n [attr.data-pinned]=\"s.isPinned ? 'true' : null\"\r\n >\r\n @if (s.hasHeader) {\r\n <ius-section-header\r\n [icon]=\"s.group.icon\"\r\n [count]=\"s.group.count\"\r\n [accent]=\"accent()\"\r\n [sticky]=\"s.sticky\"\r\n [collapsible]=\"collapsibleGroups()\"\r\n [collapsed]=\"s.isCollapsed\"\r\n (toggle)=\"alternarPlegadoGrupo(s.gk)\"\r\n >\r\n {{ s.group.label }}\r\n @if (pinnableGroups()) {\r\n <ius-icon-button\r\n iusSectionHeaderAction\r\n class=\"ius-entnav__pinbtn\"\r\n [class.ius-entnav__pinbtn--on]=\"s.isPinned\"\r\n icon=\"pinboard\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n [ariaLabel]=\"etiquetaPinGrupo(s.isPinned)\"\r\n (clicked)=\"alternarPinGrupo(s.gk)\"\r\n />\r\n }\r\n </ius-section-header>\r\n }\r\n\r\n @if (s.padTop) {\r\n <div class=\"ius-entnav__vpad\" [style.height.px]=\"s.padTop\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n @for (d of s.visible; track d.key) {\r\n @switch (d.kind) {\r\n @case ('letter') {\r\n <div class=\"ius-entnav__lanchor\" #letterAnchor [attr.data-letter]=\"d.letter\">\r\n <ius-section-header variant=\"letter\" [accent]=\"accent()\">{{ d.letter }}</ius-section-header>\r\n </div>\r\n }\r\n @case ('addChild') {\r\n <div class=\"ius-entnav__addchild\" [style.padding-left.px]=\"padAddChild(d.level)\">\r\n <ius-text-button\r\n size=\"small\"\r\n prefixIcon=\"add\"\r\n [label]=\"d.node.addChildLabel\"\r\n (clicked)=\"onAddChild(d.node, $event)\"\r\n />\r\n </div>\r\n }\r\n @default {\r\n <ius-entity-row\r\n [kind]=\"d.node.kind ?? 'expediente'\"\r\n [icon]=\"d.node.icon\"\r\n [label]=\"d.node.label\"\r\n [sublabel]=\"d.node.sublabel\"\r\n [level]=\"d.level\"\r\n [accent]=\"accent()\"\r\n [expandable]=\"d.expandable\"\r\n [expanded]=\"d.expanded\"\r\n [loading]=\"d.loading\"\r\n [selected]=\"d.selected\"\r\n [count]=\"d.node.count\"\r\n [unread]=\"d.node.unread\"\r\n [hasUnread]=\"!!d.node.hasUnread\"\r\n [noveltyTone]=\"d.node.noveltyTone ?? 'info'\"\r\n [pinned]=\"!!d.node.pinned\"\r\n [pinnable]=\"d.canPin\"\r\n [actions]=\"d.node.actions ?? []\"\r\n (toggle)=\"alternarNodo(d.node)\"\r\n (togglePin)=\"onTogglePinNodo(d.node, $event)\"\r\n (clicked)=\"elegirNodo(d)\"\r\n />\r\n }\r\n }\r\n }\r\n\r\n @if (s.padBot) {\r\n <div class=\"ius-entnav__vpad\" [style.height.px]=\"s.padBot\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n @if (s.showMore) {\r\n <div class=\"ius-entnav__morerow\">\r\n <ius-show-more\r\n [expanded]=\"s.moreExpanded\"\r\n [remaining]=\"s.moreRemaining\"\r\n align=\"end\"\r\n (toggle)=\"alternarShowMore(s.gk)\"\r\n />\r\n </div>\r\n }\r\n\r\n <!-- Carga por lotes: centinela (IntersectionObserver) + \u00ABCargar m\u00E1s\u00BB. -->\r\n @if (s.showLoadMore) {\r\n <div class=\"ius-entnav__loadmore\">\r\n @if (s.loadingMore) {\r\n <ius-loading variant=\"inline\" size=\"small\" [label]=\"textoCargando()\" />\r\n } @else {\r\n <div\r\n class=\"ius-entnav__sentinel\"\r\n #lmSentinel\r\n [attr.data-lm-group]=\"s.gk\"\r\n aria-hidden=\"true\"\r\n ></div>\r\n <ius-text-button size=\"small\" [label]=\"textoCargarMas()\" (clicked)=\"dispararLote(s.gk)\" />\r\n }\r\n </div>\r\n }\r\n </section>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column;width:340px;min-width:0;height:100%;background:var(--ius-surface-card);border-right:1px solid var(--ius-stroke);font-family:var(--ius-font-body)}:host([data-collapsed=true]){width:52px}:host([data-fluid=true]:not([data-collapsed=true])){width:100%}.ius-entnav__rail{display:flex;flex-direction:column;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-sm) var(--ius-space-xs)}.ius-entnav__head{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xs);padding:var(--ius-space-md) var(--ius-space-md) var(--ius-space-sm);border-bottom:1px solid var(--ius-stroke)}.ius-entnav__titlerow{display:flex;align-items:center;justify-content:space-between;gap:var(--ius-space-xs)}.ius-entnav__actions{display:inline-flex;align-items:center;gap:var(--ius-space-xxs);margin-right:-4px}.ius-entnav__title{font-family:var(--ius-font-display);font-weight:var(--ius-fw-semibold);font-size:var(--ius-fs-sm);letter-spacing:.06em;text-transform:uppercase;color:var(--ius-text-tertiary);display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-entnav__title .ius-icon{font-size:var(--ius-icon-sm)}.ius-entnav__filters{display:flex;flex-wrap:wrap;gap:var(--ius-space-xs)}.ius-entnav__state{display:flex}.ius-entnav__state+.ius-entnav__filters{padding-top:var(--ius-space-xs);border-top:1px solid var(--ius-stroke)}.ius-entnav__addpanel{display:flex;flex-direction:column;min-width:224px;max-width:300px;max-height:min(52vh,360px)}.ius-entnav__addhead{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xxs);padding:var(--ius-space-xxs);border-bottom:1px solid var(--ius-stroke)}.ius-entnav__addlist{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:var(--ius-space-xxs);padding:var(--ius-space-xxs);--_sb-track-margin: var(--ius-space-sm)}.ius-entnav__addempty{padding:var(--ius-space-lg) var(--ius-space-sm);text-align:center;font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-entnav__check--off{visibility:hidden}.ius-entnav__meta{display:flex;align-items:center;justify-content:space-between;gap:var(--ius-space-xs);font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-entnav__meta>span:first-child{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entnav__meta>ius-dropdown{flex:0 0 auto}.ius-entnav__sort{appearance:none;border:0;background:transparent;cursor:pointer;display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font-family:var(--ius-font-body);font-weight:var(--ius-fw-semibold);font-size:var(--ius-fs-sm);line-height:1.2;color:var(--ius-primary-700)}.ius-entnav__sort .ius-icon{font-size:var(--ius-icon-sm)}.ius-entnav__sort:focus-visible{outline:none;box-shadow:var(--ius-focus-ring);border-radius:var(--ius-radius-sm)}.ius-entnav__scrollwrap{position:relative;flex:1 1 auto;min-height:0;display:flex}.ius-entnav__body{flex:1 1 auto;min-width:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:0 var(--ius-space-xs) var(--ius-space-xs);position:relative}.ius-entnav__body[data-scrolled=true]{box-shadow:inset 0 7px 6px -6px #26262629}.ius-entnav__body[data-scrolled=true]:before{content:\"\";position:sticky;top:0;z-index:3;display:block;height:0;margin:0 -8px;border-top:1px solid var(--ius-stroke)}.ius-entnav__section{display:contents}.ius-entnav__body ius-section-header[data-variant=group]{margin:0 -8px;padding-left:var(--ius-space-md);padding-right:var(--ius-space-md)}.ius-entnav__morerow{padding:var(--ius-space-xxs) 0}ius-show-more{padding-right:var(--ius-space-xs)}.ius-entnav__loadmore{display:flex;justify-content:center;padding:var(--ius-space-xs) 0 var(--ius-space-sm)}.ius-entnav__sentinel{height:1px;margin:0;padding:0;pointer-events:none}.ius-entnav__pinned{flex:0 0 auto;padding:var(--ius-space-xxs) var(--ius-space-xs) var(--ius-space-xs);border-bottom:1px solid var(--ius-stroke);background:var(--ius-surface-card)}.ius-entnav__pinned ius-section-header[data-variant=group]{margin:0 -8px;padding-left:var(--ius-space-md);padding-right:var(--ius-space-md)}.ius-entnav__pinbtn{opacity:0;transition:opacity var(--ius-duration-fast) var(--ius-ease-standard)}ius-section-header:hover .ius-entnav__pinbtn,.ius-entnav__pinbtn:focus-within,.ius-entnav__pinbtn--on{opacity:1}.ius-entnav__addchild{display:flex;padding:var(--ius-space-xxs) var(--ius-space-xs) var(--ius-space-xs) 0}.ius-entnav__empty{display:flex;align-items:center;justify-content:center;min-height:220px;padding:var(--ius-space-xl) var(--ius-space-md)}.ius-entnav__footer{flex:0 0 auto;padding:var(--ius-space-sm) var(--ius-space-md);border-top:1px solid var(--ius-stroke)}.ius-entnav__cta{width:100%}.ius-entnav__alpha{flex:0 0 auto;display:flex;flex-direction:column;align-items:stretch;gap:var(--ius-space-none);width:var(--ius-space-lg);padding:var(--ius-space-xxs) 0;overflow:hidden;-webkit-user-select:none;user-select:none}.ius-entnav__alpha-let{appearance:none;border:0;background:transparent;cursor:pointer;flex:1 1 0;min-height:0;display:inline-flex;align-items:center;justify-content:center;padding:0;font-family:var(--ius-font-body);font-weight:var(--ius-fw-medium);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);color:var(--ius-text-tertiary);border-radius:var(--ius-radius-sm);transition:color var(--ius-duration-fast) var(--ius-ease-standard),background var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entnav__alpha-let:hover{color:var(--ius-primary-700)}.ius-entnav__alpha-let[data-active=true]{color:var(--ius-primary-900);background:var(--ius-neutral-2);font-weight:var(--ius-fw-bold)}.ius-entnav__alpha-let:disabled{color:var(--ius-text-tertiary);opacity:.35;cursor:default}.ius-entnav__alpha-let:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "ius-button", inputs: ["variant", "label", "prefixIcon", "sufixIcon", "dynamic", "loading", "status", "disabled", "pressed", "fullWidth", "type", "ariaLabel", "action", "size"], outputs: ["clicked"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DropdownComponent, selector: "ius-dropdown", inputs: ["items", "selectable", "value", "label", "triggerLabel", "triggerIcon", "tone", "variant", "placement", "open", "defaultOpen", "ariaLabel"], outputs: ["valueChange", "openChange"] }, { kind: "component", type: EmptyStateComponent, selector: "ius-empty-state", inputs: ["variant", "size", "tone", "icon", "illustration", "illustrationTemplate", "title", "description", "primaryAction", "secondaryAction", "actionsTemplate", "role"], outputs: ["primaryClick", "secondaryClick"] }, { kind: "component", type: EntityRowComponent, selector: "ius-entity-row", inputs: ["kind", "icon", "label", "sublabel", "level", "accent", "expandable", "expanded", "loading", "selected", "disabled", "count", "unread", "hasUnread", "noveltyTone", "pinned", "pinnable", "actions", "actionsLabel", "ariaLabel"], outputs: ["toggle", "togglePin", "clicked"] }, { kind: "component", type: IconButtonComponent, selector: "ius-icon-button", inputs: ["icon", "variant", "size", "shape", "disabled", "type", "ariaLabel", "tooltip", "ariaPressed", "tooltipPlacement"], outputs: ["clicked"] }, { kind: "directive", type: IusMenuItemTrailingDirective, selector: "[iusMenuItemTrailing]" }, { kind: "component", type: LoadingComponent, selector: "ius-loading", inputs: ["variant", "label", "showLabel", "tone", "brand", "size", "active", "ariaLabel"] }, { kind: "component", type: MenuItemComponent, selector: "ius-menu-item", inputs: ["icon", "label", "badge", "variant", "size", "selected", "disabled", "danger", "state", "href", "ariaLabel", "itemRole"], outputs: ["clicked"] }, { kind: "component", type: PopoverComponent, selector: "ius-popover", inputs: ["title", "content", "placement", "trigger", "offset", "open", "defaultOpen", "showArrow", "disabled", "anchorRect", "padding", "dismissable", "panelClass"], outputs: ["openChange"] }, { kind: "component", type: SearchBarComponent, selector: "ius-search-bar", inputs: ["value", "defaultValue", "size", "disabled", "state", "placeholder", "ariaLabel", "name", "id"], outputs: ["valueChange", "search", "cleared"] }, { kind: "component", type: SectionHeaderComponent, selector: "ius-section-header", inputs: ["icon", "count", "variant", "accent", "collapsible", "collapsed", "sticky", "ariaLabel"], outputs: ["toggle"] }, { kind: "component", type: SegmentedControlComponent, selector: "ius-segmented-control", inputs: ["options", "size", "variant", "fullWidth", "iconOnly", "ariaLabel", "name", "value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: ShowMoreComponent, selector: "ius-show-more", inputs: ["expanded", "remaining", "moreLabel", "lessLabel", "collapsible", "size", "align", "ariaControls"], outputs: ["toggle"] }, { kind: "component", type: TagComponent, selector: "ius-tag", inputs: ["label", "role", "tone", "variant", "size", "shape", "icon", "dot", "count", "closable", "closeLabel", "selected", "disabled", "interactive", "state"], outputs: ["clicked", "closed"] }, { kind: "component", type: TextButtonComponent, selector: "ius-text-button", inputs: ["label", "prefixIcon", "sufixIcon", "size", "disabled", "type", "ariaExpanded", "ariaControls"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
17539
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: EntityNavigatorComponent, isStandalone: true, selector: "ius-entity-navigator", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, titleIcon: { classPropertyName: "titleIcon", publicName: "titleIcon", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchThreshold: { classPropertyName: "searchThreshold", publicName: "searchThreshold", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, searchValue: { classPropertyName: "searchValue", publicName: "searchValue", isSignal: true, isRequired: false, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null }, selectedFilters: { classPropertyName: "selectedFilters", publicName: "selectedFilters", isSignal: true, isRequired: false, transformFunction: null }, availableFilters: { classPropertyName: "availableFilters", publicName: "availableFilters", isSignal: true, isRequired: false, transformFunction: null }, activeFacets: { classPropertyName: "activeFacets", publicName: "activeFacets", isSignal: true, isRequired: false, transformFunction: null }, stateSegments: { classPropertyName: "stateSegments", publicName: "stateSegments", isSignal: true, isRequired: false, transformFunction: null }, stateValue: { classPropertyName: "stateValue", publicName: "stateValue", isSignal: true, isRequired: false, transformFunction: null }, sortLabel: { classPropertyName: "sortLabel", publicName: "sortLabel", isSignal: true, isRequired: false, transformFunction: null }, sortOptions: { classPropertyName: "sortOptions", publicName: "sortOptions", isSignal: true, isRequired: false, transformFunction: null }, sortValue: { classPropertyName: "sortValue", publicName: "sortValue", isSignal: true, isRequired: false, transformFunction: null }, metaLabel: { classPropertyName: "metaLabel", publicName: "metaLabel", isSignal: true, isRequired: false, transformFunction: null }, groups: { classPropertyName: "groups", publicName: "groups", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, accent: { classPropertyName: "accent", publicName: "accent", isSignal: true, isRequired: false, transformFunction: null }, defaultExpanded: { classPropertyName: "defaultExpanded", publicName: "defaultExpanded", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, autoExpandOnFilter: { classPropertyName: "autoExpandOnFilter", publicName: "autoExpandOnFilter", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, defaultSelected: { classPropertyName: "defaultSelected", publicName: "defaultSelected", isSignal: true, isRequired: false, transformFunction: null }, emptyStateTemplate: { classPropertyName: "emptyStateTemplate", publicName: "emptyStateTemplate", isSignal: true, isRequired: false, transformFunction: null }, noResultsLabel: { classPropertyName: "noResultsLabel", publicName: "noResultsLabel", isSignal: true, isRequired: false, transformFunction: null }, createLabel: { classPropertyName: "createLabel", publicName: "createLabel", isSignal: true, isRequired: false, transformFunction: null }, createIcon: { classPropertyName: "createIcon", publicName: "createIcon", isSignal: true, isRequired: false, transformFunction: null }, groupLimit: { classPropertyName: "groupLimit", publicName: "groupLimit", isSignal: true, isRequired: false, transformFunction: null }, collapsibleGroups: { classPropertyName: "collapsibleGroups", publicName: "collapsibleGroups", isSignal: true, isRequired: false, transformFunction: null }, collapsedGroups: { classPropertyName: "collapsedGroups", publicName: "collapsedGroups", isSignal: true, isRequired: false, transformFunction: null }, stickyHeaders: { classPropertyName: "stickyHeaders", publicName: "stickyHeaders", isSignal: true, isRequired: false, transformFunction: null }, pinnableGroups: { classPropertyName: "pinnableGroups", publicName: "pinnableGroups", isSignal: true, isRequired: false, transformFunction: null }, defaultPinnedGroup: { classPropertyName: "defaultPinnedGroup", publicName: "defaultPinnedGroup", isSignal: true, isRequired: false, transformFunction: null }, moreLabel: { classPropertyName: "moreLabel", publicName: "moreLabel", isSignal: true, isRequired: false, transformFunction: null }, alphaIndex: { classPropertyName: "alphaIndex", publicName: "alphaIndex", isSignal: true, isRequired: false, transformFunction: null }, alphaIndexLetters: { classPropertyName: "alphaIndexLetters", publicName: "alphaIndexLetters", isSignal: true, isRequired: false, transformFunction: null }, loadMoreLabel: { classPropertyName: "loadMoreLabel", publicName: "loadMoreLabel", isSignal: true, isRequired: false, transformFunction: null }, virtualized: { classPropertyName: "virtualized", publicName: "virtualized", isSignal: true, isRequired: false, transformFunction: null }, virtualizeThreshold: { classPropertyName: "virtualizeThreshold", publicName: "virtualizeThreshold", isSignal: true, isRequired: false, transformFunction: null }, itemHeights: { classPropertyName: "itemHeights", publicName: "itemHeights", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, defaultCollapsed: { classPropertyName: "defaultCollapsed", publicName: "defaultCollapsed", isSignal: true, isRequired: false, transformFunction: null }, fluidWidth: { classPropertyName: "fluidWidth", publicName: "fluidWidth", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { search: "search", searchChange: "searchChange", searchClear: "searchClear", filter: "filter", filterRemove: "filterRemove", addFilter: "addFilter", stateChange: "stateChange", facetAdd: "facetAdd", facetRemove: "facetRemove", sort: "sort", select: "select", selectedChange: "selectedChange", expandedChange: "expandedChange", togglePin: "togglePin", create: "create", pinGroup: "pinGroup", groupCollapse: "groupCollapse", more: "more", collapsedChange: "collapsedChange", jumpToLetter: "jumpToLetter", loadMore: "loadMore", expandLoad: "expandLoad" }, host: { properties: { "attr.data-collapsed": "isCollapsed() ? 'true' : null", "attr.data-fluid": "fluidWidth() ? 'true' : null", "attr.aria-label": "ariaLabel() || title() || null" }, classAttribute: "ius-entnav" }, viewQueries: [{ propertyName: "bodyRef", first: true, predicate: ["body"], descendants: true, isSignal: true }, { propertyName: "alphaRef", first: true, predicate: ["alpha"], descendants: true, isSignal: true }, { propertyName: "searchRef", first: true, predicate: ["searchBox"], descendants: true, isSignal: true }, { propertyName: "sentinels", predicate: ["lmSentinel"], descendants: true, isSignal: true }, { propertyName: "letterAnchors", predicate: ["letterAnchor"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Riel colapsado: solo expandir + CTA. Rama aparte, como el golden. -->\r\n@if (collapsible() && isCollapsed()) {\r\n <div class=\"ius-entnav__rail\">\r\n <ius-icon-button\r\n icon=\"left_panel_open\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Expandir\"\r\n (clicked)=\"alternarColapso()\"\r\n />\r\n @if (hayPie()) {\r\n <ius-icon-button\r\n [icon]=\"createIcon()\"\r\n variant=\"secondary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n [ariaLabel]=\"createLabel()\"\r\n (clicked)=\"create.emit($event)\"\r\n />\r\n }\r\n </div>\r\n} @else {\r\n <!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Cabecera \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"ius-entnav__head\">\r\n @if (hayCabecera()) {\r\n <div class=\"ius-entnav__titlerow\">\r\n @if (title()) {\r\n <div class=\"ius-entnav__title\">\r\n @if (titleIcon()) {\r\n <span translate=\"no\" class=\"ius-icon\">{{ titleIcon() }}</span>\r\n }\r\n {{ title() }}\r\n </div>\r\n } @else {\r\n <span></span>\r\n }\r\n <span class=\"ius-entnav__actions\">\r\n @if (showSearchToggle()) {\r\n <!-- El `state: pressed` del golden no se porta: IconButton omite `state`\r\n de su API p\u00FAblica a prop\u00F3sito (decisi\u00F3n suya, documentada). -->\r\n <ius-icon-button\r\n icon=\"search\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Buscar (\u2318K)\"\r\n (clicked)=\"alternarBusqueda()\"\r\n />\r\n }\r\n @if (collapsible()) {\r\n <ius-icon-button\r\n icon=\"left_panel_close\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Colapsar\"\r\n (clicked)=\"alternarColapso()\"\r\n />\r\n }\r\n </span>\r\n </div>\r\n }\r\n\r\n @if (searchVisible()) {\r\n <div #searchBox>\r\n <ius-search-bar\r\n [placeholder]=\"searchPlaceholder()\"\r\n size=\"medium\"\r\n [value]=\"searchValue()\"\r\n (valueChange)=\"onSearchValueChange($event)\"\r\n (search)=\"search.emit($event)\"\r\n (cleared)=\"searchClear.emit()\"\r\n />\r\n </div>\r\n }\r\n\r\n <!-- Eje de estado: excluyente, ortogonal a facetas y b\u00FAsqueda; no poda datos. -->\r\n @if (stateSegments()?.length) {\r\n <div class=\"ius-entnav__state\">\r\n <ius-segmented-control\r\n [options]=\"segmentos()\"\r\n [value]=\"stateVal()\"\r\n size=\"small\"\r\n variant=\"subtle\"\r\n fullWidth\r\n (valueChange)=\"elegirEstado($event)\"\r\n />\r\n </div>\r\n }\r\n\r\n @if (hayBarraFiltros()) {\r\n <div class=\"ius-entnav__filters\">\r\n @for (f of filters(); track f.key) {\r\n <ius-tag\r\n role=\"filter\"\r\n size=\"small\"\r\n [tone]=\"tonoFiltro(f)\"\r\n [icon]=\"f.icon\"\r\n [dot]=\"f.dot\"\r\n [count]=\"f.count\"\r\n [label]=\"f.label\"\r\n [selected]=\"activeKeys().has(f.key)\"\r\n [closable]=\"!!f.removable\"\r\n (clicked)=\"alternarFiltro(f.key)\"\r\n (closed)=\"quitarFiltro(f.key)\"\r\n />\r\n }\r\n\r\n <!-- Facetas: Tag `soft` con el tono categ\u00F3rico de su categor\u00EDa, NUNCA solid. -->\r\n @for (f of facets(); track f.key) {\r\n <ius-tag\r\n role=\"label\"\r\n variant=\"soft\"\r\n size=\"small\"\r\n [tone]=\"tonoFaceta(f)\"\r\n [icon]=\"f.icon\"\r\n closable\r\n [label]=\"textoFaceta(f)\"\r\n (closed)=\"quitarFaceta(f.key)\"\r\n />\r\n }\r\n\r\n @if (availableFilters().length) {\r\n <ius-popover\r\n trigger=\"manual\"\r\n [open]=\"addOpen()\"\r\n [dismissable]=\"true\"\r\n placement=\"bottom-start\"\r\n [offset]=\"6\"\r\n [showArrow]=\"false\"\r\n padding=\"none\"\r\n (openChange)=\"onAddOpenChange($event)\"\r\n >\r\n <ius-tag\r\n role=\"filter\"\r\n variant=\"outline\"\r\n tone=\"neutral\"\r\n size=\"small\"\r\n icon=\"add\"\r\n label=\"Filtro\"\r\n [selected]=\"addOpen()\"\r\n (clicked)=\"alternarMenuFiltro()\"\r\n />\r\n\r\n <div iusPopoverContent class=\"ius-entnav__addpanel\">\r\n @if (addStep(); as step) {\r\n <div class=\"ius-entnav__addhead\">\r\n <ius-menu-item\r\n icon=\"chevron_left\"\r\n [label]=\"step.label\"\r\n size=\"small\"\r\n (clicked)=\"volverDelPaso()\"\r\n />\r\n @if (step.picker === 'search') {\r\n <ius-search-bar\r\n size=\"small\"\r\n placeholder=\"Buscar\u2026\"\r\n [value]=\"addQuery()\"\r\n (valueChange)=\"addQuery.set($event)\"\r\n (cleared)=\"addQuery.set('')\"\r\n />\r\n }\r\n </div>\r\n <div class=\"ius-entnav__addlist ius-scroll ius-scroll--sm\">\r\n @if (opcionesDelPaso().length === 0) {\r\n <div class=\"ius-entnav__addempty\">Sin resultados</div>\r\n } @else {\r\n @for (o of opcionesDelPaso(); track o.key) {\r\n <!-- El check se proyecta SIEMPRE y se oculta por CSS: un\r\n `<ng-content>` detr\u00E1s de un `@if` que depende de un\r\n contentChild se pierde en el primer render. -->\r\n <ius-menu-item\r\n [label]=\"o.label\"\r\n size=\"small\"\r\n [selected]=\"facetaActiva(step, o)\"\r\n (clicked)=\"elegirValor(step, o)\"\r\n >\r\n <span\r\n iusMenuItemTrailing\r\n translate=\"no\"\r\n class=\"ius-icon\"\r\n [class.ius-entnav__check--off]=\"!facetaActiva(step, o)\"\r\n >check</span\r\n >\r\n </ius-menu-item>\r\n }\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"ius-entnav__addlist ius-scroll ius-scroll--sm\">\r\n @for (a of categoriasDisponibles(); track a.key) {\r\n <ius-menu-item\r\n [icon]=\"a.icon\"\r\n [label]=\"a.label\"\r\n size=\"small\"\r\n (clicked)=\"elegirCategoria(a)\"\r\n >\r\n <span\r\n iusMenuItemTrailing\r\n translate=\"no\"\r\n class=\"ius-icon\"\r\n [class.ius-entnav__check--off]=\"!a.picker\"\r\n >chevron_right</span\r\n >\r\n </ius-menu-item>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </ius-popover>\r\n }\r\n </div>\r\n }\r\n\r\n @if (hayMeta()) {\r\n <div class=\"ius-entnav__meta\">\r\n <span>{{ metaLabel() || '' }}</span>\r\n @if (sortOptions()?.length) {\r\n <ius-dropdown\r\n [selectable]=\"true\"\r\n [value]=\"sortValue()\"\r\n label=\"Ordenar por\"\r\n tone=\"neutral\"\r\n [items]=\"sortOptions() ?? []\"\r\n placement=\"bottom-end\"\r\n (valueChange)=\"onSort($event)\"\r\n />\r\n } @else if (sortLabel()) {\r\n <button type=\"button\" class=\"ius-entnav__sort\" (click)=\"sort.emit({ value: sortValue() })\">\r\n {{ sortLabel() }}\r\n <span translate=\"no\" class=\"ius-icon\">expand_more</span>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Secci\u00F3n fijada: vive FUERA del cuerpo con scroll (no entra en la ventana\r\n de render ni en el cursor aritm\u00E9tico de la virtualizaci\u00F3n). -->\r\n @if (modelo().fijada; as fijada) {\r\n <div class=\"ius-entnav__pinned\">\r\n <ng-container [ngTemplateOutlet]=\"seccionTpl\" [ngTemplateOutletContext]=\"{ $implicit: fijada }\" />\r\n </div>\r\n }\r\n\r\n <div class=\"ius-entnav__scrollwrap\">\r\n <div\r\n class=\"ius-entnav__body ius-scroll ius-scroll--sm\"\r\n #body\r\n [attr.data-scrolled]=\"bodyScrolled() ? 'true' : null\"\r\n >\r\n @if (vacio()) {\r\n <div class=\"ius-entnav__empty\">\r\n @if (emptyStateTemplate(); as tpl) {\r\n <ng-container [ngTemplateOutlet]=\"tpl\" />\r\n } @else {\r\n <ius-empty-state\r\n variant=\"no-results\"\r\n size=\"compact\"\r\n [title]=\"noResultsLabel()\"\r\n [description]=\"descripcionVacio()\"\r\n />\r\n }\r\n </div>\r\n } @else {\r\n @for (s of modelo().secciones; track s.gk) {\r\n <ng-container [ngTemplateOutlet]=\"seccionTpl\" [ngTemplateOutletContext]=\"{ $implicit: s }\" />\r\n }\r\n }\r\n </div>\r\n\r\n <!-- \u00CDndice alfab\u00E9tico: navega, no reordena. Se oculta con b\u00FAsqueda/filtros. -->\r\n @if (alphaVisible()) {\r\n <nav\r\n class=\"ius-entnav__alpha\"\r\n #alpha\r\n role=\"navigation\"\r\n aria-label=\"\u00CDndice alfab\u00E9tico\"\r\n (keydown)=\"onRailKey($event)\"\r\n >\r\n @for (L of displayLetters(); track L) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entnav__alpha-let\"\r\n [disabled]=\"!letraHabilitada(L)\"\r\n [attr.data-active]=\"activeLetter() === L ? 'true' : null\"\r\n [attr.aria-current]=\"activeLetter() === L ? 'true' : null\"\r\n [attr.aria-label]=\"'Ir a ' + L\"\r\n [attr.tabindex]=\"letraHabilitada(L) ? (L === alphaTabStop() ? 0 : -1) : -1\"\r\n (click)=\"saltarALetra(L)\"\r\n >\r\n {{ L }}\r\n </button>\r\n }\r\n </nav>\r\n }\r\n </div>\r\n\r\n @if (hayPie()) {\r\n <div class=\"ius-entnav__footer\">\r\n <ius-button\r\n variant=\"primary\"\r\n [prefixIcon]=\"createIcon()\"\r\n [label]=\"createLabel()\"\r\n fullWidth\r\n class=\"ius-entnav__cta\"\r\n (clicked)=\"create.emit($event)\"\r\n />\r\n </div>\r\n }\r\n}\r\n\r\n<!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Plantilla de secci\u00F3n (cuerpo y secci\u00F3n fijada comparten) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<ng-template #seccionTpl let-s>\r\n <section\r\n class=\"ius-entnav__section\"\r\n [attr.data-group]=\"s.gk\"\r\n [attr.data-pinned]=\"s.isPinned ? 'true' : null\"\r\n >\r\n @if (s.hasHeader) {\r\n <ius-section-header\r\n [icon]=\"s.group.icon\"\r\n [count]=\"s.group.count\"\r\n [accent]=\"accent()\"\r\n [sticky]=\"s.sticky\"\r\n [collapsible]=\"collapsibleGroups()\"\r\n [collapsed]=\"s.isCollapsed\"\r\n (toggle)=\"alternarPlegadoGrupo(s.gk)\"\r\n >\r\n {{ s.group.label }}\r\n @if (pinnableGroups()) {\r\n <ius-icon-button\r\n iusSectionHeaderAction\r\n class=\"ius-entnav__pinbtn\"\r\n [class.ius-entnav__pinbtn--on]=\"s.isPinned\"\r\n icon=\"pinboard\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n [ariaLabel]=\"etiquetaPinGrupo(s.isPinned)\"\r\n (clicked)=\"alternarPinGrupo(s.gk)\"\r\n />\r\n }\r\n </ius-section-header>\r\n }\r\n\r\n @if (s.padTop) {\r\n <div class=\"ius-entnav__vpad\" [style.height.px]=\"s.padTop\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n @for (d of s.visible; track d.key) {\r\n @switch (d.kind) {\r\n @case ('letter') {\r\n <div class=\"ius-entnav__lanchor\" #letterAnchor [attr.data-letter]=\"d.letter\">\r\n <ius-section-header variant=\"letter\" [accent]=\"accent()\">{{ d.letter }}</ius-section-header>\r\n </div>\r\n }\r\n @case ('addChild') {\r\n <div class=\"ius-entnav__addchild\" [style.padding-left.px]=\"padAddChild(d.level)\">\r\n <ius-text-button\r\n size=\"small\"\r\n prefixIcon=\"add\"\r\n [label]=\"d.node.addChildLabel\"\r\n (clicked)=\"onAddChild(d.node, $event)\"\r\n />\r\n </div>\r\n }\r\n @default {\r\n <ius-entity-row\r\n [kind]=\"d.node.kind ?? 'expediente'\"\r\n [icon]=\"d.node.icon\"\r\n [label]=\"d.node.label\"\r\n [sublabel]=\"d.node.sublabel\"\r\n [level]=\"d.level\"\r\n [accent]=\"accent()\"\r\n [expandable]=\"d.expandable\"\r\n [expanded]=\"d.expanded\"\r\n [loading]=\"d.loading\"\r\n [selected]=\"d.selected\"\r\n [count]=\"d.node.count\"\r\n [unread]=\"d.node.unread\"\r\n [hasUnread]=\"!!d.node.hasUnread\"\r\n [noveltyTone]=\"d.node.noveltyTone ?? 'info'\"\r\n [pinned]=\"!!d.node.pinned\"\r\n [pinnable]=\"d.canPin\"\r\n [actions]=\"d.node.actions ?? []\"\r\n [state]=\"d.node.state\"\r\n [tag]=\"d.node.tag\"\r\n [statusTag]=\"d.node.statusTag\"\r\n (toggle)=\"alternarNodo(d.node)\"\r\n (togglePin)=\"onTogglePinNodo(d.node, $event)\"\r\n (clicked)=\"elegirNodo(d)\"\r\n />\r\n }\r\n }\r\n }\r\n\r\n @if (s.padBot) {\r\n <div class=\"ius-entnav__vpad\" [style.height.px]=\"s.padBot\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n @if (s.showMore) {\r\n <div class=\"ius-entnav__morerow\">\r\n <ius-show-more\r\n [expanded]=\"s.moreExpanded\"\r\n [remaining]=\"s.moreRemaining\"\r\n align=\"end\"\r\n (toggle)=\"alternarShowMore(s.gk)\"\r\n />\r\n </div>\r\n }\r\n\r\n <!-- Carga por lotes: centinela (IntersectionObserver) + \u00ABCargar m\u00E1s\u00BB. -->\r\n @if (s.showLoadMore) {\r\n <div class=\"ius-entnav__loadmore\">\r\n @if (s.loadingMore) {\r\n <ius-loading variant=\"inline\" size=\"small\" [label]=\"textoCargando()\" />\r\n } @else {\r\n <div\r\n class=\"ius-entnav__sentinel\"\r\n #lmSentinel\r\n [attr.data-lm-group]=\"s.gk\"\r\n aria-hidden=\"true\"\r\n ></div>\r\n <ius-text-button size=\"small\" [label]=\"textoCargarMas()\" (clicked)=\"dispararLote(s.gk)\" />\r\n }\r\n </div>\r\n }\r\n </section>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column;width:340px;min-width:0;height:100%;background:var(--ius-surface-card);border-right:1px solid var(--ius-stroke);font-family:var(--ius-font-body)}:host([data-collapsed=true]){width:52px}:host([data-fluid=true]:not([data-collapsed=true])){width:100%}.ius-entnav__rail{display:flex;flex-direction:column;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-sm) var(--ius-space-xs)}.ius-entnav__head{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xs);padding:var(--ius-space-md) var(--ius-space-md) var(--ius-space-sm);border-bottom:1px solid var(--ius-stroke)}.ius-entnav__titlerow{display:flex;align-items:center;justify-content:space-between;gap:var(--ius-space-xs)}.ius-entnav__actions{display:inline-flex;align-items:center;gap:var(--ius-space-xxs);margin-right:-4px}.ius-entnav__title{font-family:var(--ius-font-display);font-weight:var(--ius-fw-semibold);font-size:var(--ius-fs-sm);letter-spacing:.06em;text-transform:uppercase;color:var(--ius-text-tertiary);display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-entnav__title .ius-icon{font-size:var(--ius-icon-sm)}.ius-entnav__filters{display:flex;flex-wrap:wrap;gap:var(--ius-space-xs)}.ius-entnav__state{display:flex}.ius-entnav__state+.ius-entnav__filters{padding-top:var(--ius-space-xs);border-top:1px solid var(--ius-stroke)}.ius-entnav__addpanel{display:flex;flex-direction:column;min-width:224px;max-width:300px;max-height:min(52vh,360px)}.ius-entnav__addhead{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xxs);padding:var(--ius-space-xxs);border-bottom:1px solid var(--ius-stroke)}.ius-entnav__addlist{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:var(--ius-space-xxs);padding:var(--ius-space-xxs);--_sb-track-margin: var(--ius-space-sm)}.ius-entnav__addempty{padding:var(--ius-space-lg) var(--ius-space-sm);text-align:center;font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-entnav__check--off{visibility:hidden}.ius-entnav__meta{display:flex;align-items:center;justify-content:space-between;gap:var(--ius-space-xs);font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-entnav__meta>span:first-child{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entnav__meta>ius-dropdown{flex:0 0 auto}.ius-entnav__sort{appearance:none;border:0;background:transparent;cursor:pointer;display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font-family:var(--ius-font-body);font-weight:var(--ius-fw-semibold);font-size:var(--ius-fs-sm);line-height:1.2;color:var(--ius-primary-700)}.ius-entnav__sort .ius-icon{font-size:var(--ius-icon-sm)}.ius-entnav__sort:focus-visible{outline:none;box-shadow:var(--ius-focus-ring);border-radius:var(--ius-radius-sm)}.ius-entnav__scrollwrap{position:relative;flex:1 1 auto;min-height:0;display:flex}.ius-entnav__body{flex:1 1 auto;min-width:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:0 var(--ius-space-xs) var(--ius-space-xs);position:relative}.ius-entnav__body[data-scrolled=true]{box-shadow:inset 0 7px 6px -6px #26262629}.ius-entnav__body[data-scrolled=true]:before{content:\"\";position:sticky;top:0;z-index:3;display:block;height:0;margin:0 -8px;border-top:1px solid var(--ius-stroke)}.ius-entnav__section{display:contents}.ius-entnav__body ius-section-header[data-variant=group]{margin:0 -8px;padding-left:var(--ius-space-md);padding-right:var(--ius-space-md)}.ius-entnav__morerow{padding:var(--ius-space-xxs) 0}ius-show-more{padding-right:var(--ius-space-xs)}.ius-entnav__loadmore{display:flex;justify-content:center;padding:var(--ius-space-xs) 0 var(--ius-space-sm)}.ius-entnav__sentinel{height:1px;margin:0;padding:0;pointer-events:none}.ius-entnav__pinned{flex:0 0 auto;padding:var(--ius-space-xxs) var(--ius-space-xs) var(--ius-space-xs);border-bottom:1px solid var(--ius-stroke);background:var(--ius-surface-card)}.ius-entnav__pinned ius-section-header[data-variant=group]{margin:0 -8px;padding-left:var(--ius-space-md);padding-right:var(--ius-space-md)}.ius-entnav__pinbtn{opacity:0;transition:opacity var(--ius-duration-fast) var(--ius-ease-standard)}ius-section-header:hover .ius-entnav__pinbtn,.ius-entnav__pinbtn:focus-within,.ius-entnav__pinbtn--on{opacity:1}.ius-entnav__addchild{display:flex;padding:var(--ius-space-xxs) var(--ius-space-xs) var(--ius-space-xs) 0}.ius-entnav__empty{display:flex;align-items:center;justify-content:center;min-height:220px;padding:var(--ius-space-xl) var(--ius-space-md)}.ius-entnav__footer{flex:0 0 auto;padding:var(--ius-space-sm) var(--ius-space-md);border-top:1px solid var(--ius-stroke)}.ius-entnav__cta{width:100%}.ius-entnav__alpha{flex:0 0 auto;display:flex;flex-direction:column;align-items:stretch;gap:var(--ius-space-none);width:var(--ius-space-lg);padding:var(--ius-space-xxs) 0;overflow:hidden;-webkit-user-select:none;user-select:none}.ius-entnav__alpha-let{appearance:none;border:0;background:transparent;cursor:pointer;flex:1 1 0;min-height:0;display:inline-flex;align-items:center;justify-content:center;padding:0;font-family:var(--ius-font-body);font-weight:var(--ius-fw-medium);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);color:var(--ius-text-tertiary);border-radius:var(--ius-radius-sm);transition:color var(--ius-duration-fast) var(--ius-ease-standard),background var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entnav__alpha-let:hover{color:var(--ius-primary-700)}.ius-entnav__alpha-let[data-active=true]{color:var(--ius-primary-900);background:var(--ius-neutral-2);font-weight:var(--ius-fw-bold)}.ius-entnav__alpha-let:disabled{color:var(--ius-text-tertiary);opacity:.35;cursor:default}.ius-entnav__alpha-let:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "ius-button", inputs: ["variant", "label", "prefixIcon", "sufixIcon", "dynamic", "loading", "status", "disabled", "pressed", "fullWidth", "type", "ariaLabel", "action", "size"], outputs: ["clicked"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DropdownComponent, selector: "ius-dropdown", inputs: ["items", "selectable", "value", "label", "triggerLabel", "triggerIcon", "tone", "variant", "placement", "open", "defaultOpen", "ariaLabel"], outputs: ["valueChange", "openChange"] }, { kind: "component", type: EmptyStateComponent, selector: "ius-empty-state", inputs: ["variant", "size", "tone", "icon", "illustration", "illustrationTemplate", "title", "description", "primaryAction", "secondaryAction", "actionsTemplate", "role"], outputs: ["primaryClick", "secondaryClick"] }, { kind: "component", type: EntityRowComponent, selector: "ius-entity-row", inputs: ["kind", "icon", "label", "sublabel", "level", "accent", "expandable", "expanded", "loading", "selected", "disabled", "count", "unread", "hasUnread", "noveltyTone", "pinned", "pinnable", "actions", "actionsLabel", "state", "tag", "statusTag", "ariaLabel"], outputs: ["toggle", "togglePin", "clicked"] }, { kind: "component", type: IconButtonComponent, selector: "ius-icon-button", inputs: ["icon", "variant", "size", "shape", "disabled", "type", "ariaLabel", "tooltip", "ariaPressed", "tooltipPlacement"], outputs: ["clicked"] }, { kind: "directive", type: IusMenuItemTrailingDirective, selector: "[iusMenuItemTrailing]" }, { kind: "component", type: LoadingComponent, selector: "ius-loading", inputs: ["variant", "label", "showLabel", "tone", "brand", "size", "active", "ariaLabel"] }, { kind: "component", type: MenuItemComponent, selector: "ius-menu-item", inputs: ["icon", "label", "badge", "variant", "size", "selected", "disabled", "danger", "state", "href", "ariaLabel", "itemRole"], outputs: ["clicked"] }, { kind: "component", type: PopoverComponent, selector: "ius-popover", inputs: ["title", "content", "placement", "trigger", "offset", "open", "defaultOpen", "showArrow", "disabled", "anchorRect", "padding", "dismissable", "panelClass"], outputs: ["openChange"] }, { kind: "component", type: SearchBarComponent, selector: "ius-search-bar", inputs: ["value", "defaultValue", "size", "disabled", "state", "placeholder", "ariaLabel", "name", "id"], outputs: ["valueChange", "search", "cleared"] }, { kind: "component", type: SectionHeaderComponent, selector: "ius-section-header", inputs: ["icon", "count", "variant", "accent", "collapsible", "collapsed", "sticky", "ariaLabel"], outputs: ["toggle"] }, { kind: "component", type: SegmentedControlComponent, selector: "ius-segmented-control", inputs: ["options", "size", "variant", "fullWidth", "iconOnly", "ariaLabel", "name", "value", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: ShowMoreComponent, selector: "ius-show-more", inputs: ["expanded", "remaining", "moreLabel", "lessLabel", "collapsible", "size", "align", "ariaControls"], outputs: ["toggle"] }, { kind: "component", type: TagComponent, selector: "ius-tag", inputs: ["label", "role", "tone", "variant", "size", "shape", "icon", "dot", "count", "closable", "closeLabel", "selected", "disabled", "interactive", "state"], outputs: ["clicked", "closed"] }, { kind: "component", type: TextButtonComponent, selector: "ius-text-button", inputs: ["label", "prefixIcon", "sufixIcon", "size", "disabled", "type", "ariaExpanded", "ariaControls"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
17499
17540
  }
17500
17541
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: EntityNavigatorComponent, decorators: [{
17501
17542
  type: Component,
@@ -17521,7 +17562,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
17521
17562
  '[attr.data-collapsed]': "isCollapsed() ? 'true' : null",
17522
17563
  '[attr.data-fluid]': "fluidWidth() ? 'true' : null",
17523
17564
  '[attr.aria-label]': 'ariaLabel() || title() || null',
17524
- }, template: "<!-- Riel colapsado: solo expandir + CTA. Rama aparte, como el golden. -->\r\n@if (collapsible() && isCollapsed()) {\r\n <div class=\"ius-entnav__rail\">\r\n <ius-icon-button\r\n icon=\"left_panel_open\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Expandir\"\r\n (clicked)=\"alternarColapso()\"\r\n />\r\n @if (hayPie()) {\r\n <ius-icon-button\r\n [icon]=\"createIcon()\"\r\n variant=\"secondary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n [ariaLabel]=\"createLabel()\"\r\n (clicked)=\"create.emit($event)\"\r\n />\r\n }\r\n </div>\r\n} @else {\r\n <!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Cabecera \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"ius-entnav__head\">\r\n @if (hayCabecera()) {\r\n <div class=\"ius-entnav__titlerow\">\r\n @if (title()) {\r\n <div class=\"ius-entnav__title\">\r\n @if (titleIcon()) {\r\n <span translate=\"no\" class=\"ius-icon\">{{ titleIcon() }}</span>\r\n }\r\n {{ title() }}\r\n </div>\r\n } @else {\r\n <span></span>\r\n }\r\n <span class=\"ius-entnav__actions\">\r\n @if (showSearchToggle()) {\r\n <!-- El `state: pressed` del golden no se porta: IconButton omite `state`\r\n de su API p\u00FAblica a prop\u00F3sito (decisi\u00F3n suya, documentada). -->\r\n <ius-icon-button\r\n icon=\"search\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Buscar (\u2318K)\"\r\n (clicked)=\"alternarBusqueda()\"\r\n />\r\n }\r\n @if (collapsible()) {\r\n <ius-icon-button\r\n icon=\"left_panel_close\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Colapsar\"\r\n (clicked)=\"alternarColapso()\"\r\n />\r\n }\r\n </span>\r\n </div>\r\n }\r\n\r\n @if (searchVisible()) {\r\n <div #searchBox>\r\n <ius-search-bar\r\n [placeholder]=\"searchPlaceholder()\"\r\n size=\"medium\"\r\n [value]=\"searchValue()\"\r\n (valueChange)=\"onSearchValueChange($event)\"\r\n (search)=\"search.emit($event)\"\r\n (cleared)=\"searchClear.emit()\"\r\n />\r\n </div>\r\n }\r\n\r\n <!-- Eje de estado: excluyente, ortogonal a facetas y b\u00FAsqueda; no poda datos. -->\r\n @if (stateSegments()?.length) {\r\n <div class=\"ius-entnav__state\">\r\n <ius-segmented-control\r\n [options]=\"segmentos()\"\r\n [value]=\"stateVal()\"\r\n size=\"small\"\r\n variant=\"subtle\"\r\n fullWidth\r\n (valueChange)=\"elegirEstado($event)\"\r\n />\r\n </div>\r\n }\r\n\r\n @if (hayBarraFiltros()) {\r\n <div class=\"ius-entnav__filters\">\r\n @for (f of filters(); track f.key) {\r\n <ius-tag\r\n role=\"filter\"\r\n size=\"small\"\r\n [tone]=\"tonoFiltro(f)\"\r\n [icon]=\"f.icon\"\r\n [dot]=\"f.dot\"\r\n [count]=\"f.count\"\r\n [label]=\"f.label\"\r\n [selected]=\"activeKeys().has(f.key)\"\r\n [closable]=\"!!f.removable\"\r\n (clicked)=\"alternarFiltro(f.key)\"\r\n (closed)=\"quitarFiltro(f.key)\"\r\n />\r\n }\r\n\r\n <!-- Facetas: Tag `soft` con el tono categ\u00F3rico de su categor\u00EDa, NUNCA solid. -->\r\n @for (f of facets(); track f.key) {\r\n <ius-tag\r\n role=\"label\"\r\n variant=\"soft\"\r\n size=\"small\"\r\n [tone]=\"tonoFaceta(f)\"\r\n [icon]=\"f.icon\"\r\n closable\r\n [label]=\"textoFaceta(f)\"\r\n (closed)=\"quitarFaceta(f.key)\"\r\n />\r\n }\r\n\r\n @if (availableFilters().length) {\r\n <ius-popover\r\n trigger=\"manual\"\r\n [open]=\"addOpen()\"\r\n [dismissable]=\"true\"\r\n placement=\"bottom-start\"\r\n [offset]=\"6\"\r\n [showArrow]=\"false\"\r\n padding=\"none\"\r\n (openChange)=\"onAddOpenChange($event)\"\r\n >\r\n <ius-tag\r\n role=\"filter\"\r\n variant=\"outline\"\r\n tone=\"neutral\"\r\n size=\"small\"\r\n icon=\"add\"\r\n label=\"Filtro\"\r\n [selected]=\"addOpen()\"\r\n (clicked)=\"alternarMenuFiltro()\"\r\n />\r\n\r\n <div iusPopoverContent class=\"ius-entnav__addpanel\">\r\n @if (addStep(); as step) {\r\n <div class=\"ius-entnav__addhead\">\r\n <ius-menu-item\r\n icon=\"chevron_left\"\r\n [label]=\"step.label\"\r\n size=\"small\"\r\n (clicked)=\"volverDelPaso()\"\r\n />\r\n @if (step.picker === 'search') {\r\n <ius-search-bar\r\n size=\"small\"\r\n placeholder=\"Buscar\u2026\"\r\n [value]=\"addQuery()\"\r\n (valueChange)=\"addQuery.set($event)\"\r\n (cleared)=\"addQuery.set('')\"\r\n />\r\n }\r\n </div>\r\n <div class=\"ius-entnav__addlist ius-scroll ius-scroll--sm\">\r\n @if (opcionesDelPaso().length === 0) {\r\n <div class=\"ius-entnav__addempty\">Sin resultados</div>\r\n } @else {\r\n @for (o of opcionesDelPaso(); track o.key) {\r\n <!-- El check se proyecta SIEMPRE y se oculta por CSS: un\r\n `<ng-content>` detr\u00E1s de un `@if` que depende de un\r\n contentChild se pierde en el primer render. -->\r\n <ius-menu-item\r\n [label]=\"o.label\"\r\n size=\"small\"\r\n [selected]=\"facetaActiva(step, o)\"\r\n (clicked)=\"elegirValor(step, o)\"\r\n >\r\n <span\r\n iusMenuItemTrailing\r\n translate=\"no\"\r\n class=\"ius-icon\"\r\n [class.ius-entnav__check--off]=\"!facetaActiva(step, o)\"\r\n >check</span\r\n >\r\n </ius-menu-item>\r\n }\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"ius-entnav__addlist ius-scroll ius-scroll--sm\">\r\n @for (a of categoriasDisponibles(); track a.key) {\r\n <ius-menu-item\r\n [icon]=\"a.icon\"\r\n [label]=\"a.label\"\r\n size=\"small\"\r\n (clicked)=\"elegirCategoria(a)\"\r\n >\r\n <span\r\n iusMenuItemTrailing\r\n translate=\"no\"\r\n class=\"ius-icon\"\r\n [class.ius-entnav__check--off]=\"!a.picker\"\r\n >chevron_right</span\r\n >\r\n </ius-menu-item>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </ius-popover>\r\n }\r\n </div>\r\n }\r\n\r\n @if (hayMeta()) {\r\n <div class=\"ius-entnav__meta\">\r\n <span>{{ metaLabel() || '' }}</span>\r\n @if (sortOptions()?.length) {\r\n <ius-dropdown\r\n [selectable]=\"true\"\r\n [value]=\"sortValue()\"\r\n label=\"Ordenar por\"\r\n tone=\"neutral\"\r\n [items]=\"sortOptions() ?? []\"\r\n placement=\"bottom-end\"\r\n (valueChange)=\"onSort($event)\"\r\n />\r\n } @else if (sortLabel()) {\r\n <button type=\"button\" class=\"ius-entnav__sort\" (click)=\"sort.emit({ value: sortValue() })\">\r\n {{ sortLabel() }}\r\n <span translate=\"no\" class=\"ius-icon\">expand_more</span>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Secci\u00F3n fijada: vive FUERA del cuerpo con scroll (no entra en la ventana\r\n de render ni en el cursor aritm\u00E9tico de la virtualizaci\u00F3n). -->\r\n @if (modelo().fijada; as fijada) {\r\n <div class=\"ius-entnav__pinned\">\r\n <ng-container [ngTemplateOutlet]=\"seccionTpl\" [ngTemplateOutletContext]=\"{ $implicit: fijada }\" />\r\n </div>\r\n }\r\n\r\n <div class=\"ius-entnav__scrollwrap\">\r\n <div\r\n class=\"ius-entnav__body ius-scroll ius-scroll--sm\"\r\n #body\r\n [attr.data-scrolled]=\"bodyScrolled() ? 'true' : null\"\r\n >\r\n @if (vacio()) {\r\n <div class=\"ius-entnav__empty\">\r\n @if (emptyStateTemplate(); as tpl) {\r\n <ng-container [ngTemplateOutlet]=\"tpl\" />\r\n } @else {\r\n <ius-empty-state\r\n variant=\"no-results\"\r\n size=\"compact\"\r\n [title]=\"noResultsLabel()\"\r\n [description]=\"descripcionVacio()\"\r\n />\r\n }\r\n </div>\r\n } @else {\r\n @for (s of modelo().secciones; track s.gk) {\r\n <ng-container [ngTemplateOutlet]=\"seccionTpl\" [ngTemplateOutletContext]=\"{ $implicit: s }\" />\r\n }\r\n }\r\n </div>\r\n\r\n <!-- \u00CDndice alfab\u00E9tico: navega, no reordena. Se oculta con b\u00FAsqueda/filtros. -->\r\n @if (alphaVisible()) {\r\n <nav\r\n class=\"ius-entnav__alpha\"\r\n #alpha\r\n role=\"navigation\"\r\n aria-label=\"\u00CDndice alfab\u00E9tico\"\r\n (keydown)=\"onRailKey($event)\"\r\n >\r\n @for (L of displayLetters(); track L) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entnav__alpha-let\"\r\n [disabled]=\"!letraHabilitada(L)\"\r\n [attr.data-active]=\"activeLetter() === L ? 'true' : null\"\r\n [attr.aria-current]=\"activeLetter() === L ? 'true' : null\"\r\n [attr.aria-label]=\"'Ir a ' + L\"\r\n [attr.tabindex]=\"letraHabilitada(L) ? (L === alphaTabStop() ? 0 : -1) : -1\"\r\n (click)=\"saltarALetra(L)\"\r\n >\r\n {{ L }}\r\n </button>\r\n }\r\n </nav>\r\n }\r\n </div>\r\n\r\n @if (hayPie()) {\r\n <div class=\"ius-entnav__footer\">\r\n <ius-button\r\n variant=\"primary\"\r\n [prefixIcon]=\"createIcon()\"\r\n [label]=\"createLabel()\"\r\n fullWidth\r\n class=\"ius-entnav__cta\"\r\n (clicked)=\"create.emit($event)\"\r\n />\r\n </div>\r\n }\r\n}\r\n\r\n<!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Plantilla de secci\u00F3n (cuerpo y secci\u00F3n fijada comparten) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<ng-template #seccionTpl let-s>\r\n <section\r\n class=\"ius-entnav__section\"\r\n [attr.data-group]=\"s.gk\"\r\n [attr.data-pinned]=\"s.isPinned ? 'true' : null\"\r\n >\r\n @if (s.hasHeader) {\r\n <ius-section-header\r\n [icon]=\"s.group.icon\"\r\n [count]=\"s.group.count\"\r\n [accent]=\"accent()\"\r\n [sticky]=\"s.sticky\"\r\n [collapsible]=\"collapsibleGroups()\"\r\n [collapsed]=\"s.isCollapsed\"\r\n (toggle)=\"alternarPlegadoGrupo(s.gk)\"\r\n >\r\n {{ s.group.label }}\r\n @if (pinnableGroups()) {\r\n <ius-icon-button\r\n iusSectionHeaderAction\r\n class=\"ius-entnav__pinbtn\"\r\n [class.ius-entnav__pinbtn--on]=\"s.isPinned\"\r\n icon=\"pinboard\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n [ariaLabel]=\"etiquetaPinGrupo(s.isPinned)\"\r\n (clicked)=\"alternarPinGrupo(s.gk)\"\r\n />\r\n }\r\n </ius-section-header>\r\n }\r\n\r\n @if (s.padTop) {\r\n <div class=\"ius-entnav__vpad\" [style.height.px]=\"s.padTop\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n @for (d of s.visible; track d.key) {\r\n @switch (d.kind) {\r\n @case ('letter') {\r\n <div class=\"ius-entnav__lanchor\" #letterAnchor [attr.data-letter]=\"d.letter\">\r\n <ius-section-header variant=\"letter\" [accent]=\"accent()\">{{ d.letter }}</ius-section-header>\r\n </div>\r\n }\r\n @case ('addChild') {\r\n <div class=\"ius-entnav__addchild\" [style.padding-left.px]=\"padAddChild(d.level)\">\r\n <ius-text-button\r\n size=\"small\"\r\n prefixIcon=\"add\"\r\n [label]=\"d.node.addChildLabel\"\r\n (clicked)=\"onAddChild(d.node, $event)\"\r\n />\r\n </div>\r\n }\r\n @default {\r\n <ius-entity-row\r\n [kind]=\"d.node.kind ?? 'expediente'\"\r\n [icon]=\"d.node.icon\"\r\n [label]=\"d.node.label\"\r\n [sublabel]=\"d.node.sublabel\"\r\n [level]=\"d.level\"\r\n [accent]=\"accent()\"\r\n [expandable]=\"d.expandable\"\r\n [expanded]=\"d.expanded\"\r\n [loading]=\"d.loading\"\r\n [selected]=\"d.selected\"\r\n [count]=\"d.node.count\"\r\n [unread]=\"d.node.unread\"\r\n [hasUnread]=\"!!d.node.hasUnread\"\r\n [noveltyTone]=\"d.node.noveltyTone ?? 'info'\"\r\n [pinned]=\"!!d.node.pinned\"\r\n [pinnable]=\"d.canPin\"\r\n [actions]=\"d.node.actions ?? []\"\r\n (toggle)=\"alternarNodo(d.node)\"\r\n (togglePin)=\"onTogglePinNodo(d.node, $event)\"\r\n (clicked)=\"elegirNodo(d)\"\r\n />\r\n }\r\n }\r\n }\r\n\r\n @if (s.padBot) {\r\n <div class=\"ius-entnav__vpad\" [style.height.px]=\"s.padBot\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n @if (s.showMore) {\r\n <div class=\"ius-entnav__morerow\">\r\n <ius-show-more\r\n [expanded]=\"s.moreExpanded\"\r\n [remaining]=\"s.moreRemaining\"\r\n align=\"end\"\r\n (toggle)=\"alternarShowMore(s.gk)\"\r\n />\r\n </div>\r\n }\r\n\r\n <!-- Carga por lotes: centinela (IntersectionObserver) + \u00ABCargar m\u00E1s\u00BB. -->\r\n @if (s.showLoadMore) {\r\n <div class=\"ius-entnav__loadmore\">\r\n @if (s.loadingMore) {\r\n <ius-loading variant=\"inline\" size=\"small\" [label]=\"textoCargando()\" />\r\n } @else {\r\n <div\r\n class=\"ius-entnav__sentinel\"\r\n #lmSentinel\r\n [attr.data-lm-group]=\"s.gk\"\r\n aria-hidden=\"true\"\r\n ></div>\r\n <ius-text-button size=\"small\" [label]=\"textoCargarMas()\" (clicked)=\"dispararLote(s.gk)\" />\r\n }\r\n </div>\r\n }\r\n </section>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column;width:340px;min-width:0;height:100%;background:var(--ius-surface-card);border-right:1px solid var(--ius-stroke);font-family:var(--ius-font-body)}:host([data-collapsed=true]){width:52px}:host([data-fluid=true]:not([data-collapsed=true])){width:100%}.ius-entnav__rail{display:flex;flex-direction:column;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-sm) var(--ius-space-xs)}.ius-entnav__head{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xs);padding:var(--ius-space-md) var(--ius-space-md) var(--ius-space-sm);border-bottom:1px solid var(--ius-stroke)}.ius-entnav__titlerow{display:flex;align-items:center;justify-content:space-between;gap:var(--ius-space-xs)}.ius-entnav__actions{display:inline-flex;align-items:center;gap:var(--ius-space-xxs);margin-right:-4px}.ius-entnav__title{font-family:var(--ius-font-display);font-weight:var(--ius-fw-semibold);font-size:var(--ius-fs-sm);letter-spacing:.06em;text-transform:uppercase;color:var(--ius-text-tertiary);display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-entnav__title .ius-icon{font-size:var(--ius-icon-sm)}.ius-entnav__filters{display:flex;flex-wrap:wrap;gap:var(--ius-space-xs)}.ius-entnav__state{display:flex}.ius-entnav__state+.ius-entnav__filters{padding-top:var(--ius-space-xs);border-top:1px solid var(--ius-stroke)}.ius-entnav__addpanel{display:flex;flex-direction:column;min-width:224px;max-width:300px;max-height:min(52vh,360px)}.ius-entnav__addhead{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xxs);padding:var(--ius-space-xxs);border-bottom:1px solid var(--ius-stroke)}.ius-entnav__addlist{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:var(--ius-space-xxs);padding:var(--ius-space-xxs);--_sb-track-margin: var(--ius-space-sm)}.ius-entnav__addempty{padding:var(--ius-space-lg) var(--ius-space-sm);text-align:center;font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-entnav__check--off{visibility:hidden}.ius-entnav__meta{display:flex;align-items:center;justify-content:space-between;gap:var(--ius-space-xs);font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-entnav__meta>span:first-child{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entnav__meta>ius-dropdown{flex:0 0 auto}.ius-entnav__sort{appearance:none;border:0;background:transparent;cursor:pointer;display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font-family:var(--ius-font-body);font-weight:var(--ius-fw-semibold);font-size:var(--ius-fs-sm);line-height:1.2;color:var(--ius-primary-700)}.ius-entnav__sort .ius-icon{font-size:var(--ius-icon-sm)}.ius-entnav__sort:focus-visible{outline:none;box-shadow:var(--ius-focus-ring);border-radius:var(--ius-radius-sm)}.ius-entnav__scrollwrap{position:relative;flex:1 1 auto;min-height:0;display:flex}.ius-entnav__body{flex:1 1 auto;min-width:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:0 var(--ius-space-xs) var(--ius-space-xs);position:relative}.ius-entnav__body[data-scrolled=true]{box-shadow:inset 0 7px 6px -6px #26262629}.ius-entnav__body[data-scrolled=true]:before{content:\"\";position:sticky;top:0;z-index:3;display:block;height:0;margin:0 -8px;border-top:1px solid var(--ius-stroke)}.ius-entnav__section{display:contents}.ius-entnav__body ius-section-header[data-variant=group]{margin:0 -8px;padding-left:var(--ius-space-md);padding-right:var(--ius-space-md)}.ius-entnav__morerow{padding:var(--ius-space-xxs) 0}ius-show-more{padding-right:var(--ius-space-xs)}.ius-entnav__loadmore{display:flex;justify-content:center;padding:var(--ius-space-xs) 0 var(--ius-space-sm)}.ius-entnav__sentinel{height:1px;margin:0;padding:0;pointer-events:none}.ius-entnav__pinned{flex:0 0 auto;padding:var(--ius-space-xxs) var(--ius-space-xs) var(--ius-space-xs);border-bottom:1px solid var(--ius-stroke);background:var(--ius-surface-card)}.ius-entnav__pinned ius-section-header[data-variant=group]{margin:0 -8px;padding-left:var(--ius-space-md);padding-right:var(--ius-space-md)}.ius-entnav__pinbtn{opacity:0;transition:opacity var(--ius-duration-fast) var(--ius-ease-standard)}ius-section-header:hover .ius-entnav__pinbtn,.ius-entnav__pinbtn:focus-within,.ius-entnav__pinbtn--on{opacity:1}.ius-entnav__addchild{display:flex;padding:var(--ius-space-xxs) var(--ius-space-xs) var(--ius-space-xs) 0}.ius-entnav__empty{display:flex;align-items:center;justify-content:center;min-height:220px;padding:var(--ius-space-xl) var(--ius-space-md)}.ius-entnav__footer{flex:0 0 auto;padding:var(--ius-space-sm) var(--ius-space-md);border-top:1px solid var(--ius-stroke)}.ius-entnav__cta{width:100%}.ius-entnav__alpha{flex:0 0 auto;display:flex;flex-direction:column;align-items:stretch;gap:var(--ius-space-none);width:var(--ius-space-lg);padding:var(--ius-space-xxs) 0;overflow:hidden;-webkit-user-select:none;user-select:none}.ius-entnav__alpha-let{appearance:none;border:0;background:transparent;cursor:pointer;flex:1 1 0;min-height:0;display:inline-flex;align-items:center;justify-content:center;padding:0;font-family:var(--ius-font-body);font-weight:var(--ius-fw-medium);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);color:var(--ius-text-tertiary);border-radius:var(--ius-radius-sm);transition:color var(--ius-duration-fast) var(--ius-ease-standard),background var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entnav__alpha-let:hover{color:var(--ius-primary-700)}.ius-entnav__alpha-let[data-active=true]{color:var(--ius-primary-900);background:var(--ius-neutral-2);font-weight:var(--ius-fw-bold)}.ius-entnav__alpha-let:disabled{color:var(--ius-text-tertiary);opacity:.35;cursor:default}.ius-entnav__alpha-let:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}\n"] }]
17565
+ }, template: "<!-- Riel colapsado: solo expandir + CTA. Rama aparte, como el golden. -->\r\n@if (collapsible() && isCollapsed()) {\r\n <div class=\"ius-entnav__rail\">\r\n <ius-icon-button\r\n icon=\"left_panel_open\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Expandir\"\r\n (clicked)=\"alternarColapso()\"\r\n />\r\n @if (hayPie()) {\r\n <ius-icon-button\r\n [icon]=\"createIcon()\"\r\n variant=\"secondary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n [ariaLabel]=\"createLabel()\"\r\n (clicked)=\"create.emit($event)\"\r\n />\r\n }\r\n </div>\r\n} @else {\r\n <!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Cabecera \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n <div class=\"ius-entnav__head\">\r\n @if (hayCabecera()) {\r\n <div class=\"ius-entnav__titlerow\">\r\n @if (title()) {\r\n <div class=\"ius-entnav__title\">\r\n @if (titleIcon()) {\r\n <span translate=\"no\" class=\"ius-icon\">{{ titleIcon() }}</span>\r\n }\r\n {{ title() }}\r\n </div>\r\n } @else {\r\n <span></span>\r\n }\r\n <span class=\"ius-entnav__actions\">\r\n @if (showSearchToggle()) {\r\n <!-- El `state: pressed` del golden no se porta: IconButton omite `state`\r\n de su API p\u00FAblica a prop\u00F3sito (decisi\u00F3n suya, documentada). -->\r\n <ius-icon-button\r\n icon=\"search\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Buscar (\u2318K)\"\r\n (clicked)=\"alternarBusqueda()\"\r\n />\r\n }\r\n @if (collapsible()) {\r\n <ius-icon-button\r\n icon=\"left_panel_close\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n ariaLabel=\"Colapsar\"\r\n (clicked)=\"alternarColapso()\"\r\n />\r\n }\r\n </span>\r\n </div>\r\n }\r\n\r\n @if (searchVisible()) {\r\n <div #searchBox>\r\n <ius-search-bar\r\n [placeholder]=\"searchPlaceholder()\"\r\n size=\"medium\"\r\n [value]=\"searchValue()\"\r\n (valueChange)=\"onSearchValueChange($event)\"\r\n (search)=\"search.emit($event)\"\r\n (cleared)=\"searchClear.emit()\"\r\n />\r\n </div>\r\n }\r\n\r\n <!-- Eje de estado: excluyente, ortogonal a facetas y b\u00FAsqueda; no poda datos. -->\r\n @if (stateSegments()?.length) {\r\n <div class=\"ius-entnav__state\">\r\n <ius-segmented-control\r\n [options]=\"segmentos()\"\r\n [value]=\"stateVal()\"\r\n size=\"small\"\r\n variant=\"subtle\"\r\n fullWidth\r\n (valueChange)=\"elegirEstado($event)\"\r\n />\r\n </div>\r\n }\r\n\r\n @if (hayBarraFiltros()) {\r\n <div class=\"ius-entnav__filters\">\r\n @for (f of filters(); track f.key) {\r\n <ius-tag\r\n role=\"filter\"\r\n size=\"small\"\r\n [tone]=\"tonoFiltro(f)\"\r\n [icon]=\"f.icon\"\r\n [dot]=\"f.dot\"\r\n [count]=\"f.count\"\r\n [label]=\"f.label\"\r\n [selected]=\"activeKeys().has(f.key)\"\r\n [closable]=\"!!f.removable\"\r\n (clicked)=\"alternarFiltro(f.key)\"\r\n (closed)=\"quitarFiltro(f.key)\"\r\n />\r\n }\r\n\r\n <!-- Facetas: Tag `soft` con el tono categ\u00F3rico de su categor\u00EDa, NUNCA solid. -->\r\n @for (f of facets(); track f.key) {\r\n <ius-tag\r\n role=\"label\"\r\n variant=\"soft\"\r\n size=\"small\"\r\n [tone]=\"tonoFaceta(f)\"\r\n [icon]=\"f.icon\"\r\n closable\r\n [label]=\"textoFaceta(f)\"\r\n (closed)=\"quitarFaceta(f.key)\"\r\n />\r\n }\r\n\r\n @if (availableFilters().length) {\r\n <ius-popover\r\n trigger=\"manual\"\r\n [open]=\"addOpen()\"\r\n [dismissable]=\"true\"\r\n placement=\"bottom-start\"\r\n [offset]=\"6\"\r\n [showArrow]=\"false\"\r\n padding=\"none\"\r\n (openChange)=\"onAddOpenChange($event)\"\r\n >\r\n <ius-tag\r\n role=\"filter\"\r\n variant=\"outline\"\r\n tone=\"neutral\"\r\n size=\"small\"\r\n icon=\"add\"\r\n label=\"Filtro\"\r\n [selected]=\"addOpen()\"\r\n (clicked)=\"alternarMenuFiltro()\"\r\n />\r\n\r\n <div iusPopoverContent class=\"ius-entnav__addpanel\">\r\n @if (addStep(); as step) {\r\n <div class=\"ius-entnav__addhead\">\r\n <ius-menu-item\r\n icon=\"chevron_left\"\r\n [label]=\"step.label\"\r\n size=\"small\"\r\n (clicked)=\"volverDelPaso()\"\r\n />\r\n @if (step.picker === 'search') {\r\n <ius-search-bar\r\n size=\"small\"\r\n placeholder=\"Buscar\u2026\"\r\n [value]=\"addQuery()\"\r\n (valueChange)=\"addQuery.set($event)\"\r\n (cleared)=\"addQuery.set('')\"\r\n />\r\n }\r\n </div>\r\n <div class=\"ius-entnav__addlist ius-scroll ius-scroll--sm\">\r\n @if (opcionesDelPaso().length === 0) {\r\n <div class=\"ius-entnav__addempty\">Sin resultados</div>\r\n } @else {\r\n @for (o of opcionesDelPaso(); track o.key) {\r\n <!-- El check se proyecta SIEMPRE y se oculta por CSS: un\r\n `<ng-content>` detr\u00E1s de un `@if` que depende de un\r\n contentChild se pierde en el primer render. -->\r\n <ius-menu-item\r\n [label]=\"o.label\"\r\n size=\"small\"\r\n [selected]=\"facetaActiva(step, o)\"\r\n (clicked)=\"elegirValor(step, o)\"\r\n >\r\n <span\r\n iusMenuItemTrailing\r\n translate=\"no\"\r\n class=\"ius-icon\"\r\n [class.ius-entnav__check--off]=\"!facetaActiva(step, o)\"\r\n >check</span\r\n >\r\n </ius-menu-item>\r\n }\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"ius-entnav__addlist ius-scroll ius-scroll--sm\">\r\n @for (a of categoriasDisponibles(); track a.key) {\r\n <ius-menu-item\r\n [icon]=\"a.icon\"\r\n [label]=\"a.label\"\r\n size=\"small\"\r\n (clicked)=\"elegirCategoria(a)\"\r\n >\r\n <span\r\n iusMenuItemTrailing\r\n translate=\"no\"\r\n class=\"ius-icon\"\r\n [class.ius-entnav__check--off]=\"!a.picker\"\r\n >chevron_right</span\r\n >\r\n </ius-menu-item>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </ius-popover>\r\n }\r\n </div>\r\n }\r\n\r\n @if (hayMeta()) {\r\n <div class=\"ius-entnav__meta\">\r\n <span>{{ metaLabel() || '' }}</span>\r\n @if (sortOptions()?.length) {\r\n <ius-dropdown\r\n [selectable]=\"true\"\r\n [value]=\"sortValue()\"\r\n label=\"Ordenar por\"\r\n tone=\"neutral\"\r\n [items]=\"sortOptions() ?? []\"\r\n placement=\"bottom-end\"\r\n (valueChange)=\"onSort($event)\"\r\n />\r\n } @else if (sortLabel()) {\r\n <button type=\"button\" class=\"ius-entnav__sort\" (click)=\"sort.emit({ value: sortValue() })\">\r\n {{ sortLabel() }}\r\n <span translate=\"no\" class=\"ius-icon\">expand_more</span>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Secci\u00F3n fijada: vive FUERA del cuerpo con scroll (no entra en la ventana\r\n de render ni en el cursor aritm\u00E9tico de la virtualizaci\u00F3n). -->\r\n @if (modelo().fijada; as fijada) {\r\n <div class=\"ius-entnav__pinned\">\r\n <ng-container [ngTemplateOutlet]=\"seccionTpl\" [ngTemplateOutletContext]=\"{ $implicit: fijada }\" />\r\n </div>\r\n }\r\n\r\n <div class=\"ius-entnav__scrollwrap\">\r\n <div\r\n class=\"ius-entnav__body ius-scroll ius-scroll--sm\"\r\n #body\r\n [attr.data-scrolled]=\"bodyScrolled() ? 'true' : null\"\r\n >\r\n @if (vacio()) {\r\n <div class=\"ius-entnav__empty\">\r\n @if (emptyStateTemplate(); as tpl) {\r\n <ng-container [ngTemplateOutlet]=\"tpl\" />\r\n } @else {\r\n <ius-empty-state\r\n variant=\"no-results\"\r\n size=\"compact\"\r\n [title]=\"noResultsLabel()\"\r\n [description]=\"descripcionVacio()\"\r\n />\r\n }\r\n </div>\r\n } @else {\r\n @for (s of modelo().secciones; track s.gk) {\r\n <ng-container [ngTemplateOutlet]=\"seccionTpl\" [ngTemplateOutletContext]=\"{ $implicit: s }\" />\r\n }\r\n }\r\n </div>\r\n\r\n <!-- \u00CDndice alfab\u00E9tico: navega, no reordena. Se oculta con b\u00FAsqueda/filtros. -->\r\n @if (alphaVisible()) {\r\n <nav\r\n class=\"ius-entnav__alpha\"\r\n #alpha\r\n role=\"navigation\"\r\n aria-label=\"\u00CDndice alfab\u00E9tico\"\r\n (keydown)=\"onRailKey($event)\"\r\n >\r\n @for (L of displayLetters(); track L) {\r\n <button\r\n type=\"button\"\r\n class=\"ius-entnav__alpha-let\"\r\n [disabled]=\"!letraHabilitada(L)\"\r\n [attr.data-active]=\"activeLetter() === L ? 'true' : null\"\r\n [attr.aria-current]=\"activeLetter() === L ? 'true' : null\"\r\n [attr.aria-label]=\"'Ir a ' + L\"\r\n [attr.tabindex]=\"letraHabilitada(L) ? (L === alphaTabStop() ? 0 : -1) : -1\"\r\n (click)=\"saltarALetra(L)\"\r\n >\r\n {{ L }}\r\n </button>\r\n }\r\n </nav>\r\n }\r\n </div>\r\n\r\n @if (hayPie()) {\r\n <div class=\"ius-entnav__footer\">\r\n <ius-button\r\n variant=\"primary\"\r\n [prefixIcon]=\"createIcon()\"\r\n [label]=\"createLabel()\"\r\n fullWidth\r\n class=\"ius-entnav__cta\"\r\n (clicked)=\"create.emit($event)\"\r\n />\r\n </div>\r\n }\r\n}\r\n\r\n<!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Plantilla de secci\u00F3n (cuerpo y secci\u00F3n fijada comparten) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<ng-template #seccionTpl let-s>\r\n <section\r\n class=\"ius-entnav__section\"\r\n [attr.data-group]=\"s.gk\"\r\n [attr.data-pinned]=\"s.isPinned ? 'true' : null\"\r\n >\r\n @if (s.hasHeader) {\r\n <ius-section-header\r\n [icon]=\"s.group.icon\"\r\n [count]=\"s.group.count\"\r\n [accent]=\"accent()\"\r\n [sticky]=\"s.sticky\"\r\n [collapsible]=\"collapsibleGroups()\"\r\n [collapsed]=\"s.isCollapsed\"\r\n (toggle)=\"alternarPlegadoGrupo(s.gk)\"\r\n >\r\n {{ s.group.label }}\r\n @if (pinnableGroups()) {\r\n <ius-icon-button\r\n iusSectionHeaderAction\r\n class=\"ius-entnav__pinbtn\"\r\n [class.ius-entnav__pinbtn--on]=\"s.isPinned\"\r\n icon=\"pinboard\"\r\n variant=\"tertiary\"\r\n shape=\"circle\"\r\n size=\"small\"\r\n [ariaLabel]=\"etiquetaPinGrupo(s.isPinned)\"\r\n (clicked)=\"alternarPinGrupo(s.gk)\"\r\n />\r\n }\r\n </ius-section-header>\r\n }\r\n\r\n @if (s.padTop) {\r\n <div class=\"ius-entnav__vpad\" [style.height.px]=\"s.padTop\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n @for (d of s.visible; track d.key) {\r\n @switch (d.kind) {\r\n @case ('letter') {\r\n <div class=\"ius-entnav__lanchor\" #letterAnchor [attr.data-letter]=\"d.letter\">\r\n <ius-section-header variant=\"letter\" [accent]=\"accent()\">{{ d.letter }}</ius-section-header>\r\n </div>\r\n }\r\n @case ('addChild') {\r\n <div class=\"ius-entnav__addchild\" [style.padding-left.px]=\"padAddChild(d.level)\">\r\n <ius-text-button\r\n size=\"small\"\r\n prefixIcon=\"add\"\r\n [label]=\"d.node.addChildLabel\"\r\n (clicked)=\"onAddChild(d.node, $event)\"\r\n />\r\n </div>\r\n }\r\n @default {\r\n <ius-entity-row\r\n [kind]=\"d.node.kind ?? 'expediente'\"\r\n [icon]=\"d.node.icon\"\r\n [label]=\"d.node.label\"\r\n [sublabel]=\"d.node.sublabel\"\r\n [level]=\"d.level\"\r\n [accent]=\"accent()\"\r\n [expandable]=\"d.expandable\"\r\n [expanded]=\"d.expanded\"\r\n [loading]=\"d.loading\"\r\n [selected]=\"d.selected\"\r\n [count]=\"d.node.count\"\r\n [unread]=\"d.node.unread\"\r\n [hasUnread]=\"!!d.node.hasUnread\"\r\n [noveltyTone]=\"d.node.noveltyTone ?? 'info'\"\r\n [pinned]=\"!!d.node.pinned\"\r\n [pinnable]=\"d.canPin\"\r\n [actions]=\"d.node.actions ?? []\"\r\n [state]=\"d.node.state\"\r\n [tag]=\"d.node.tag\"\r\n [statusTag]=\"d.node.statusTag\"\r\n (toggle)=\"alternarNodo(d.node)\"\r\n (togglePin)=\"onTogglePinNodo(d.node, $event)\"\r\n (clicked)=\"elegirNodo(d)\"\r\n />\r\n }\r\n }\r\n }\r\n\r\n @if (s.padBot) {\r\n <div class=\"ius-entnav__vpad\" [style.height.px]=\"s.padBot\" aria-hidden=\"true\"></div>\r\n }\r\n\r\n @if (s.showMore) {\r\n <div class=\"ius-entnav__morerow\">\r\n <ius-show-more\r\n [expanded]=\"s.moreExpanded\"\r\n [remaining]=\"s.moreRemaining\"\r\n align=\"end\"\r\n (toggle)=\"alternarShowMore(s.gk)\"\r\n />\r\n </div>\r\n }\r\n\r\n <!-- Carga por lotes: centinela (IntersectionObserver) + \u00ABCargar m\u00E1s\u00BB. -->\r\n @if (s.showLoadMore) {\r\n <div class=\"ius-entnav__loadmore\">\r\n @if (s.loadingMore) {\r\n <ius-loading variant=\"inline\" size=\"small\" [label]=\"textoCargando()\" />\r\n } @else {\r\n <div\r\n class=\"ius-entnav__sentinel\"\r\n #lmSentinel\r\n [attr.data-lm-group]=\"s.gk\"\r\n aria-hidden=\"true\"\r\n ></div>\r\n <ius-text-button size=\"small\" [label]=\"textoCargarMas()\" (clicked)=\"dispararLote(s.gk)\" />\r\n }\r\n </div>\r\n }\r\n </section>\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";:host{box-sizing:border-box;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column;width:340px;min-width:0;height:100%;background:var(--ius-surface-card);border-right:1px solid var(--ius-stroke);font-family:var(--ius-font-body)}:host([data-collapsed=true]){width:52px}:host([data-fluid=true]:not([data-collapsed=true])){width:100%}.ius-entnav__rail{display:flex;flex-direction:column;align-items:center;gap:var(--ius-space-xs);padding:var(--ius-space-sm) var(--ius-space-xs)}.ius-entnav__head{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xs);padding:var(--ius-space-md) var(--ius-space-md) var(--ius-space-sm);border-bottom:1px solid var(--ius-stroke)}.ius-entnav__titlerow{display:flex;align-items:center;justify-content:space-between;gap:var(--ius-space-xs)}.ius-entnav__actions{display:inline-flex;align-items:center;gap:var(--ius-space-xxs);margin-right:-4px}.ius-entnav__title{font-family:var(--ius-font-display);font-weight:var(--ius-fw-semibold);font-size:var(--ius-fs-sm);letter-spacing:.06em;text-transform:uppercase;color:var(--ius-text-tertiary);display:inline-flex;align-items:center;gap:var(--ius-space-xs)}.ius-entnav__title .ius-icon{font-size:var(--ius-icon-sm)}.ius-entnav__filters{display:flex;flex-wrap:wrap;gap:var(--ius-space-xs)}.ius-entnav__state{display:flex}.ius-entnav__state+.ius-entnav__filters{padding-top:var(--ius-space-xs);border-top:1px solid var(--ius-stroke)}.ius-entnav__addpanel{display:flex;flex-direction:column;min-width:224px;max-width:300px;max-height:min(52vh,360px)}.ius-entnav__addhead{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--ius-space-xxs);padding:var(--ius-space-xxs);border-bottom:1px solid var(--ius-stroke)}.ius-entnav__addlist{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:var(--ius-space-xxs);padding:var(--ius-space-xxs);--_sb-track-margin: var(--ius-space-sm)}.ius-entnav__addempty{padding:var(--ius-space-lg) var(--ius-space-sm);text-align:center;font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-entnav__check--off{visibility:hidden}.ius-entnav__meta{display:flex;align-items:center;justify-content:space-between;gap:var(--ius-space-xs);font-size:var(--ius-fs-sm);color:var(--ius-text-tertiary)}.ius-entnav__meta>span:first-child{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ius-entnav__meta>ius-dropdown{flex:0 0 auto}.ius-entnav__sort{appearance:none;border:0;background:transparent;cursor:pointer;display:inline-flex;align-items:center;gap:var(--ius-space-xxs);font-family:var(--ius-font-body);font-weight:var(--ius-fw-semibold);font-size:var(--ius-fs-sm);line-height:1.2;color:var(--ius-primary-700)}.ius-entnav__sort .ius-icon{font-size:var(--ius-icon-sm)}.ius-entnav__sort:focus-visible{outline:none;box-shadow:var(--ius-focus-ring);border-radius:var(--ius-radius-sm)}.ius-entnav__scrollwrap{position:relative;flex:1 1 auto;min-height:0;display:flex}.ius-entnav__body{flex:1 1 auto;min-width:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:0 var(--ius-space-xs) var(--ius-space-xs);position:relative}.ius-entnav__body[data-scrolled=true]{box-shadow:inset 0 7px 6px -6px #26262629}.ius-entnav__body[data-scrolled=true]:before{content:\"\";position:sticky;top:0;z-index:3;display:block;height:0;margin:0 -8px;border-top:1px solid var(--ius-stroke)}.ius-entnav__section{display:contents}.ius-entnav__body ius-section-header[data-variant=group]{margin:0 -8px;padding-left:var(--ius-space-md);padding-right:var(--ius-space-md)}.ius-entnav__morerow{padding:var(--ius-space-xxs) 0}ius-show-more{padding-right:var(--ius-space-xs)}.ius-entnav__loadmore{display:flex;justify-content:center;padding:var(--ius-space-xs) 0 var(--ius-space-sm)}.ius-entnav__sentinel{height:1px;margin:0;padding:0;pointer-events:none}.ius-entnav__pinned{flex:0 0 auto;padding:var(--ius-space-xxs) var(--ius-space-xs) var(--ius-space-xs);border-bottom:1px solid var(--ius-stroke);background:var(--ius-surface-card)}.ius-entnav__pinned ius-section-header[data-variant=group]{margin:0 -8px;padding-left:var(--ius-space-md);padding-right:var(--ius-space-md)}.ius-entnav__pinbtn{opacity:0;transition:opacity var(--ius-duration-fast) var(--ius-ease-standard)}ius-section-header:hover .ius-entnav__pinbtn,.ius-entnav__pinbtn:focus-within,.ius-entnav__pinbtn--on{opacity:1}.ius-entnav__addchild{display:flex;padding:var(--ius-space-xxs) var(--ius-space-xs) var(--ius-space-xs) 0}.ius-entnav__empty{display:flex;align-items:center;justify-content:center;min-height:220px;padding:var(--ius-space-xl) var(--ius-space-md)}.ius-entnav__footer{flex:0 0 auto;padding:var(--ius-space-sm) var(--ius-space-md);border-top:1px solid var(--ius-stroke)}.ius-entnav__cta{width:100%}.ius-entnav__alpha{flex:0 0 auto;display:flex;flex-direction:column;align-items:stretch;gap:var(--ius-space-none);width:var(--ius-space-lg);padding:var(--ius-space-xxs) 0;overflow:hidden;-webkit-user-select:none;user-select:none}.ius-entnav__alpha-let{appearance:none;border:0;background:transparent;cursor:pointer;flex:1 1 0;min-height:0;display:inline-flex;align-items:center;justify-content:center;padding:0;font-family:var(--ius-font-body);font-weight:var(--ius-fw-medium);font-size:var(--ius-fs-sm);line-height:var(--ius-lh-sm);color:var(--ius-text-tertiary);border-radius:var(--ius-radius-sm);transition:color var(--ius-duration-fast) var(--ius-ease-standard),background var(--ius-duration-fast) var(--ius-ease-standard)}.ius-entnav__alpha-let:hover{color:var(--ius-primary-700)}.ius-entnav__alpha-let[data-active=true]{color:var(--ius-primary-900);background:var(--ius-neutral-2);font-weight:var(--ius-fw-bold)}.ius-entnav__alpha-let:disabled{color:var(--ius-text-tertiary);opacity:.35;cursor:default}.ius-entnav__alpha-let:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}\n"] }]
17525
17566
  }], ctorParameters: () => [], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], titleIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleIcon", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], searchThreshold: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchThreshold", required: false }] }], searchPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchPlaceholder", required: false }] }], searchValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchValue", required: false }] }], filters: [{ type: i0.Input, args: [{ isSignal: true, alias: "filters", required: false }] }], selectedFilters: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedFilters", required: false }] }], availableFilters: [{ type: i0.Input, args: [{ isSignal: true, alias: "availableFilters", required: false }] }], activeFacets: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeFacets", required: false }] }], stateSegments: [{ type: i0.Input, args: [{ isSignal: true, alias: "stateSegments", required: false }] }], stateValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "stateValue", required: false }] }], sortLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortLabel", required: false }] }], sortOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortOptions", required: false }] }], sortValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortValue", required: false }] }], metaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "metaLabel", required: false }] }], groups: [{ type: i0.Input, args: [{ isSignal: true, alias: "groups", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], accent: [{ type: i0.Input, args: [{ isSignal: true, alias: "accent", required: false }] }], defaultExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultExpanded", required: false }] }], expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }], autoExpandOnFilter: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoExpandOnFilter", required: false }] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }], defaultSelected: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultSelected", required: false }] }], emptyStateTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyStateTemplate", required: false }] }], noResultsLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "noResultsLabel", required: false }] }], createLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "createLabel", required: false }] }], createIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "createIcon", required: false }] }], groupLimit: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupLimit", required: false }] }], collapsibleGroups: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsibleGroups", required: false }] }], collapsedGroups: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsedGroups", required: false }] }], stickyHeaders: [{ type: i0.Input, args: [{ isSignal: true, alias: "stickyHeaders", required: false }] }], pinnableGroups: [{ type: i0.Input, args: [{ isSignal: true, alias: "pinnableGroups", required: false }] }], defaultPinnedGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultPinnedGroup", required: false }] }], moreLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "moreLabel", required: false }] }], alphaIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "alphaIndex", required: false }] }], alphaIndexLetters: [{ type: i0.Input, args: [{ isSignal: true, alias: "alphaIndexLetters", required: false }] }], loadMoreLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadMoreLabel", required: false }] }], virtualized: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualized", required: false }] }], virtualizeThreshold: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualizeThreshold", required: false }] }], itemHeights: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemHeights", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }], defaultCollapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultCollapsed", required: false }] }], fluidWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fluidWidth", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], search: [{
17526
17567
  type: Output
17527
17568
  }], searchChange: [{
@@ -20463,6 +20504,302 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
20463
20504
  args: ['slotEl']
20464
20505
  }] } });
20465
20506
 
20507
+ /** Meses abreviados en minúscula (espejo de `MES` del golden). */
20508
+ const MES = ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'];
20509
+ const atMidnight = (d) => {
20510
+ const x = new Date(d);
20511
+ x.setHours(0, 0, 0, 0);
20512
+ return x;
20513
+ };
20514
+ const addDays = (d, n) => {
20515
+ const x = new Date(d);
20516
+ x.setDate(x.getDate() + n);
20517
+ return x;
20518
+ };
20519
+ const sameDay = (a, b) => !!a &&
20520
+ !!b &&
20521
+ a.getFullYear() === b.getFullYear() &&
20522
+ a.getMonth() === b.getMonth() &&
20523
+ a.getDate() === b.getDate();
20524
+ const fmtD = (d) => `${d.getDate()} ${MES[d.getMonth()]}`;
20525
+ const fmtFull = (d) => `${fmtD(d)} ${d.getFullYear()}`;
20526
+ /** ¿El valor es un rango? (lo contrario de `Date` / `null`). */
20527
+ function isRange(v) {
20528
+ return v != null && !(v instanceof Date);
20529
+ }
20530
+ /** Presets de dominio según el modo (espejo de `defaultPresets` del golden). */
20531
+ function defaultPresets(mode, now) {
20532
+ const today = atMidnight(now);
20533
+ if (mode === 'single') {
20534
+ return [
20535
+ { label: 'Hoy', value: today },
20536
+ { label: 'Ayer', value: addDays(today, -1) },
20537
+ ];
20538
+ }
20539
+ const firstOfMonth = new Date(today.getFullYear(), today.getMonth(), 1);
20540
+ const lastMonthEnd = addDays(firstOfMonth, -1);
20541
+ const lastMonthStart = new Date(lastMonthEnd.getFullYear(), lastMonthEnd.getMonth(), 1);
20542
+ return [
20543
+ { label: 'Hoy', value: { start: today, end: today } },
20544
+ { label: 'Últimos 7 días', value: { start: addDays(today, -6), end: today } },
20545
+ { label: 'Últimos 30 días', value: { start: addDays(today, -29), end: today } },
20546
+ { label: 'Este mes', value: { start: firstOfMonth, end: today } },
20547
+ { label: 'Mes pasado', value: { start: lastMonthStart, end: lastMonthEnd } },
20548
+ { label: 'Este año', value: { start: new Date(today.getFullYear(), 0, 1), end: today } },
20549
+ { label: 'Todo', value: null },
20550
+ ];
20551
+ }
20552
+ /** Sin fecha: `null`, o un rango sin ningún extremo (espejo de `isEmpty`). */
20553
+ function isEmpty(v, mode) {
20554
+ if (v == null)
20555
+ return true;
20556
+ if (mode === 'range')
20557
+ return !isRange(v) || (!v.start && !v.end);
20558
+ return false;
20559
+ }
20560
+ /**
20561
+ * Texto del disparador (espejo de `labelFor` del golden): «25 sep 2026»,
20562
+ * «12 sep – 25 sep 2026» (año en los dos lados si difieren), «Desde …» /
20563
+ * «Hasta …» con un solo extremo, o el placeholder sin valor.
20564
+ */
20565
+ function labelFor(v, mode, placeholder) {
20566
+ if (isEmpty(v, mode))
20567
+ return placeholder;
20568
+ if (mode === 'single') {
20569
+ // Defensa que el golden no tiene: un rango en modo single no revienta.
20570
+ return v instanceof Date ? fmtFull(v) : placeholder;
20571
+ }
20572
+ if (!isRange(v))
20573
+ return placeholder;
20574
+ const { start, end } = v;
20575
+ if (start && end) {
20576
+ const sameYear = start.getFullYear() === end.getFullYear();
20577
+ return `${sameYear ? fmtD(start) : fmtFull(start)} – ${fmtFull(end)}`;
20578
+ }
20579
+ if (start)
20580
+ return `Desde ${fmtFull(start)}`;
20581
+ if (end)
20582
+ return `Hasta ${fmtFull(end)}`;
20583
+ return placeholder;
20584
+ }
20585
+ /** ¿El preset coincide con el borrador? (espejo de `presetActive`). */
20586
+ function presetActive(preset, draft, mode) {
20587
+ if (preset.value == null)
20588
+ return isEmpty(draft, mode);
20589
+ if (mode === 'single') {
20590
+ return preset.value instanceof Date && draft instanceof Date && sameDay(preset.value, draft);
20591
+ }
20592
+ return (isRange(preset.value) &&
20593
+ isRange(draft) &&
20594
+ sameDay(preset.value.start, draft.start) &&
20595
+ sameDay(preset.value.end, draft.end));
20596
+ }
20597
+ /**
20598
+ * DateFilter — Ius Design v2 (familia navigation).
20599
+ *
20600
+ * Filtro de fecha para **barras de lista**: disparador tipo píldora outline
20601
+ * (misma estructura que el de QueryBuilder) que abre un **Popover** con
20602
+ * **presets** a la izquierda (Hoy · Últimos 7 / 30 días · Este mes…) y un
20603
+ * **Calendar** embebido. Rango (desde–hasta, dos meses con banda) o fecha
20604
+ * única. Normalmente vive dentro de un `ius-segment-group` junto al orden
20605
+ * (Dropdown outline) y al QueryBuilder.
20606
+ *
20607
+ * Decisiones de UX fijas (vienen del golden):
20608
+ * - **Staged**: el panel edita un *borrador* que se re-siembra desde lo
20609
+ * aplicado cada vez que abre. "Aplicar" confirma (emite `apply`) y cierra;
20610
+ * "Cancelar" descarta y cierra; "Limpiar" solo vacía el borrador (hay que
20611
+ * confirmar con "Aplicar").
20612
+ * - El preset que coincide con el borrador se marca (`data-active`).
20613
+ * - El disparador muestra el valor **aplicado** («12 sep – 25 sep 2026») y se
20614
+ * resalta (`data-active`) cuando hay valor.
20615
+ *
20616
+ * Compone (no reimplementa) `ius-popover`, `ius-calendar`, `ius-button` y
20617
+ * `ius-text-button`.
20618
+ *
20619
+ * **Cuándo NO usarlo**: capturar una fecha dentro de un formulario →
20620
+ * `ius-date-picker`; calendario fijo embebido → `ius-calendar`.
20621
+ *
20622
+ * Fuente de verdad: `components/navigation/DateFilter/DateFilter.jsx` +
20623
+ * `DateFilter.d.ts` + `DateFilter.ng-spec.md` del proyecto Claude Design.
20624
+ *
20625
+ * ---
20626
+ * **Divergencias doc-vs-golden anotadas** (manda el golden):
20627
+ * 1. "Limpiar" deja el borrador en `{ start: null, end: null }` en `range` (y
20628
+ * `null` en `single`), así que "Limpiar" + "Aplicar" emite ese rango vacío.
20629
+ * El preset "Todo" emite `null`. Los dos cuentan como «sin fecha»: el
20630
+ * disparador vuelve al placeholder y "Todo" queda marcado.
20631
+ * 2. El golden declara `size` (default `small`) pero **no lo usa**. Aquí
20632
+ * gobierna los botones del pie, como en QueryBuilder; sin `size` explícito
20633
+ * se conservan los del golden (Button `small` + TextButton por defecto). El
20634
+ * disparador no cambia de tamaño (tampoco el de QueryBuilder) y
20635
+ * `data-size` se emite solo cuando viene explícito.
20636
+ * 3. El golden no activa `dismissable` en su Popover: el panel se cierra con
20637
+ * el propio disparador, "Cancelar" o "Aplicar" (igual que QueryBuilder).
20638
+ *
20639
+ * **Decisiones del port a Angular**:
20640
+ * - El Popover se usa en modo controlado (`[open]` + `(openChange)`) para
20641
+ * re-sembrar el borrador al abrir.
20642
+ * - El `popoverStyle` del golden (`maxWidth: none` + `padding` md) se porta
20643
+ * como la piel `.ius-popover.ius-datefilter-pop` en
20644
+ * `popover/popover.component.scss` (mismo patrón que `.ius-querybuilder-pop`):
20645
+ * el panel se estampa desde el template del Popover y lleva SU
20646
+ * encapsulación.
20647
+ * - El contenido del panel va bajo `@if (isOpen())`: la proyección del Popover
20648
+ * se reutiliza entre aperturas, y sin el `@if` el Calendar conservaría el
20649
+ * mes navegado y el nivel (mes/año) de la vez anterior. Así cada apertura
20650
+ * arranca en el mes del borrador, como el golden (que desmonta el panel).
20651
+ * - Los presets de dominio se recalculan en cada apertura (el golden los
20652
+ * recalcula en cada render): «Hoy» no se queda en el día en que se montó.
20653
+ */
20654
+ class DateFilterComponent {
20655
+ constructor() {
20656
+ // ── Inputs ────────────────────────────────────────────────────────────
20657
+ /** `range` (default; Calendar de dos meses con banda) o `single`. */
20658
+ this.mode = input('range', /* @ts-ignore */
20659
+ ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
20660
+ /**
20661
+ * Valor aplicado — **modo controlado**. Si se enlaza (aunque sea `null`), el
20662
+ * componente no guarda estado propio: hay que reaccionar a `apply` y volver
20663
+ * a enlazar. `undefined` = no controlado.
20664
+ */
20665
+ this.value = input(undefined, /* @ts-ignore */
20666
+ ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
20667
+ /** Valor inicial del modo **no controlado**. */
20668
+ this.defaultValue = input(null, /* @ts-ignore */
20669
+ ...(ngDevMode ? [{ debugName: "defaultValue" }] : /* istanbul ignore next */ []));
20670
+ /** Atajos del panel. Si se omite, los de dominio según `mode`. */
20671
+ this.presets = input(undefined, /* @ts-ignore */
20672
+ ...(ngDevMode ? [{ debugName: "presets" }] : /* istanbul ignore next */ []));
20673
+ /** Texto del disparador sin valor aplicado. */
20674
+ this.placeholder = input('Fecha', /* @ts-ignore */
20675
+ ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
20676
+ /** Ligadura Material Symbols del disparador. */
20677
+ this.icon = input('calendar_month', /* @ts-ignore */
20678
+ ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
20679
+ /** Colocación del panel respecto del disparador. */
20680
+ this.placement = input('bottom-start', /* @ts-ignore */
20681
+ ...(ngDevMode ? [{ debugName: "placement" }] : /* istanbul ignore next */ []));
20682
+ /**
20683
+ * Escala de los botones del pie. Solo si viene explícito emite `data-size`
20684
+ * (ver la divergencia 2 del comentario de cabecera).
20685
+ */
20686
+ this.size = input(undefined, /* @ts-ignore */
20687
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
20688
+ /** Etiqueta del botón que confirma el borrador. */
20689
+ this.applyLabel = input('Aplicar', /* @ts-ignore */
20690
+ ...(ngDevMode ? [{ debugName: "applyLabel" }] : /* istanbul ignore next */ []));
20691
+ /** Etiqueta del botón que descarta el borrador y cierra. */
20692
+ this.cancelLabel = input('Cancelar', /* @ts-ignore */
20693
+ ...(ngDevMode ? [{ debugName: "cancelLabel" }] : /* istanbul ignore next */ []));
20694
+ /** Etiqueta del botón que vacía el borrador. */
20695
+ this.clearLabel = input('Limpiar', /* @ts-ignore */
20696
+ ...(ngDevMode ? [{ debugName: "clearLabel" }] : /* istanbul ignore next */ []));
20697
+ // ── Outputs ───────────────────────────────────────────────────────────
20698
+ /**
20699
+ * Valor confirmado al pulsar "Aplicar" (espejo de `onApply`). Nombre fijado
20700
+ * por la ng-spec; no colisiona con ningún evento del DOM.
20701
+ */
20702
+ this.apply = output();
20703
+ // ── Estado interno ────────────────────────────────────────────────────
20704
+ /** `undefined` = todavía no se ha aplicado nada → manda `defaultValue`. */
20705
+ this.internalApplied = signal(undefined, /* @ts-ignore */
20706
+ ...(ngDevMode ? [{ debugName: "internalApplied" }] : /* istanbul ignore next */ []));
20707
+ /** Apertura del panel (el Popover se usa en modo controlado). */
20708
+ this.isOpen = signal(false, /* @ts-ignore */
20709
+ ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
20710
+ /** Borrador del panel: lo que se está eligiendo, aún sin aplicar. */
20711
+ this.draft = signal(null, /* @ts-ignore */
20712
+ ...(ngDevMode ? [{ debugName: "draft" }] : /* istanbul ignore next */ []));
20713
+ /** «Hoy» de referencia de los presets de dominio; se refresca al abrir. */
20714
+ this.now = signal(new Date(), /* @ts-ignore */
20715
+ ...(ngDevMode ? [{ debugName: "now" }] : /* istanbul ignore next */ []));
20716
+ // ── Derivados ─────────────────────────────────────────────────────────
20717
+ /**
20718
+ * Valor efectivamente aplicado (controlado › interno › `defaultValue`).
20719
+ * No se usa `??`: `null` es un valor aplicado válido ("Todo").
20720
+ */
20721
+ this.applied = computed(() => {
20722
+ const controlled = this.value();
20723
+ if (controlled !== undefined)
20724
+ return controlled;
20725
+ const internal = this.internalApplied();
20726
+ if (internal !== undefined)
20727
+ return internal;
20728
+ return this.defaultValue();
20729
+ }, /* @ts-ignore */
20730
+ ...(ngDevMode ? [{ debugName: "applied" }] : /* istanbul ignore next */ []));
20731
+ /** Hay fecha aplicada → disparador resaltado. */
20732
+ this.active = computed(() => !isEmpty(this.applied(), this.mode()), /* @ts-ignore */
20733
+ ...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
20734
+ /** Texto del disparador. */
20735
+ this.label = computed(() => labelFor(this.applied(), this.mode(), this.placeholder()), /* @ts-ignore */
20736
+ ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
20737
+ /** Presets efectivos (los del consumidor o los de dominio). */
20738
+ this.presetList = computed(() => this.presets() ?? defaultPresets(this.mode(), this.now()), /* @ts-ignore */
20739
+ ...(ngDevMode ? [{ debugName: "presetList" }] : /* istanbul ignore next */ []));
20740
+ /** Marca de preset activo, por índice (memorizada para el template). */
20741
+ this.presetFlags = computed(() => {
20742
+ const draft = this.draft();
20743
+ const mode = this.mode();
20744
+ return this.presetList().map((preset) => presetActive(preset, draft, mode));
20745
+ }, /* @ts-ignore */
20746
+ ...(ngDevMode ? [{ debugName: "presetFlags" }] : /* istanbul ignore next */ []));
20747
+ /** Tamaño del Button del pie (golden: `small` fijo). */
20748
+ this.buttonSize = computed(() => this.size() ?? 'small', /* @ts-ignore */
20749
+ ...(ngDevMode ? [{ debugName: "buttonSize" }] : /* istanbul ignore next */ []));
20750
+ /** Tamaño de los TextButton del pie (golden: el default de TextButton). */
20751
+ this.textButtonSize = computed(() => this.size() ?? 'medium', /* @ts-ignore */
20752
+ ...(ngDevMode ? [{ debugName: "textButtonSize" }] : /* istanbul ignore next */ []));
20753
+ }
20754
+ // ── Apertura / borrador ───────────────────────────────────────────────
20755
+ /**
20756
+ * Al **abrir**, el borrador se re-siembra desde lo aplicado (espejo del
20757
+ * `useEffect([open])` del golden): lo elegido sin aplicar se descarta.
20758
+ */
20759
+ onOpenChange(open) {
20760
+ if (open) {
20761
+ this.now.set(new Date());
20762
+ this.draft.set(this.applied());
20763
+ }
20764
+ this.isOpen.set(open);
20765
+ }
20766
+ /** Un preset reemplaza el borrador (todavía no aplica: hay que confirmar). */
20767
+ choosePreset(preset) {
20768
+ this.draft.set(preset.value);
20769
+ }
20770
+ /** Cambio desde el Calendar embebido. */
20771
+ onCalendarChange(next) {
20772
+ this.draft.set(next);
20773
+ }
20774
+ // ── Acciones del pie ──────────────────────────────────────────────────
20775
+ /** Vacía el borrador (espejo del `onClick` de "Limpiar"). */
20776
+ clearDraft() {
20777
+ this.draft.set(this.mode() === 'range' ? { start: null, end: null } : null);
20778
+ }
20779
+ /** Descarta el borrador y cierra. */
20780
+ cancel() {
20781
+ this.isOpen.set(false);
20782
+ }
20783
+ /** Confirma el borrador: emite `apply` y cierra el panel. */
20784
+ applyDraft() {
20785
+ const next = this.draft();
20786
+ if (this.value() === undefined)
20787
+ this.internalApplied.set(next);
20788
+ this.apply.emit(next);
20789
+ this.isOpen.set(false);
20790
+ }
20791
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: DateFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
20792
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: DateFilterComponent, isStandalone: true, selector: "ius-date-filter", inputs: { mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, defaultValue: { classPropertyName: "defaultValue", publicName: "defaultValue", isSignal: true, isRequired: false, transformFunction: null }, presets: { classPropertyName: "presets", publicName: "presets", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, applyLabel: { classPropertyName: "applyLabel", publicName: "applyLabel", isSignal: true, isRequired: false, transformFunction: null }, cancelLabel: { classPropertyName: "cancelLabel", publicName: "cancelLabel", isSignal: true, isRequired: false, transformFunction: null }, clearLabel: { classPropertyName: "clearLabel", publicName: "clearLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { apply: "apply" }, host: { properties: { "attr.data-size": "size() ?? null" }, classAttribute: "ius-datefilter" }, ngImport: i0, template: "<!--\n DateFilter \u2014 el Popover es el motor de anclaje; el disparador se proyecta\n como children y el panel como `[iusPopoverContent]`. Modo controlado\n (`[open]` + `(openChange)`) porque el borrador se re-siembra al abrir.\n Sin `dismissable`, como el golden: ver el TSDoc de cabecera.\n-->\n<ius-popover\n trigger=\"click\"\n [placement]=\"placement()\"\n [showArrow]=\"false\"\n [offset]=\"8\"\n [open]=\"isOpen()\"\n panelClass=\"ius-datefilter-pop\"\n (openChange)=\"onOpenChange($event)\"\n>\n <!-- \u2500\u2500 Disparador: p\u00EDldora outline con el valor aplicado \u2500\u2500 -->\n <button\n type=\"button\"\n class=\"ius-datefilter__trigger\"\n aria-haspopup=\"dialog\"\n [attr.data-open]=\"isOpen() ? 'true' : null\"\n [attr.data-active]=\"active() ? 'true' : null\"\n [attr.aria-expanded]=\"isOpen()\"\n >\n <!-- Ligadura Material Symbols: el texto va pegado, sin espacios sueltos. -->\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ icon() }}</span>\n <span>{{ label() }}</span>\n </button>\n\n <!-- \u2500\u2500 Panel: presets + Calendar + pie (se estampa en el overlay) \u2500\u2500 -->\n <div iusPopoverContent class=\"ius-datefilter__panel\">\n <!--\n `@if (isOpen())`: la proyecci\u00F3n se reutiliza entre aperturas; sin \u00E9l el\n Calendar recordar\u00EDa el mes y el nivel navegados la vez anterior.\n -->\n @if (isOpen()) {\n <div class=\"ius-datefilter__body\">\n <div class=\"ius-datefilter__presets\">\n @for (preset of presetList(); track $index; let i = $index) {\n <button\n type=\"button\"\n class=\"ius-datefilter__preset\"\n [attr.data-active]=\"presetFlags()[i] ? 'true' : null\"\n [attr.aria-pressed]=\"presetFlags()[i]\"\n (click)=\"choosePreset(preset)\"\n >{{ preset.label }}</button>\n }\n </div>\n\n <ius-calendar\n [mode]=\"mode()\"\n [value]=\"draft()\"\n (valueChange)=\"onCalendarChange($event)\"\n />\n </div>\n\n <!-- \u2500\u2500 Pie: limpiar \u00B7 cancelar \u00B7 aplicar (staged) \u2500\u2500 -->\n <div class=\"ius-datefilter__foot\">\n <span class=\"ius-datefilter__foot-l\">\n <ius-text-button\n [label]=\"clearLabel()\"\n [size]=\"textButtonSize()\"\n (clicked)=\"clearDraft()\"\n />\n </span>\n <ius-text-button\n [label]=\"cancelLabel()\"\n [size]=\"textButtonSize()\"\n (clicked)=\"cancel()\"\n />\n <ius-button\n variant=\"primary\"\n [size]=\"buttonSize()\"\n [label]=\"applyLabel()\"\n (clicked)=\"applyDraft()\"\n />\n </div>\n }\n </div>\n</ius-popover>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center}.ius-datefilter__trigger{appearance:none;display:inline-flex;align-items:center;gap:var(--ius-space-xs);font-family:var(--ius-font-body);font-size:var(--ius-fs-base);line-height:1;color:var(--ius-text-primary);background:var(--ius-neutral-white);border:1px solid var(--ius-stroke);border-radius:var(--ius-radius-md);padding:var(--ius-space-xs) var(--ius-space-sm);cursor:pointer;transition:border-color var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard);-webkit-user-select:none;user-select:none;white-space:nowrap}.ius-datefilter__trigger:hover{border-color:var(--ius-primary-500);color:var(--ius-primary-900)}.ius-datefilter__trigger:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}.ius-datefilter__trigger[data-open=true],.ius-datefilter__trigger[data-active=true]{border-color:var(--ius-primary-500);color:var(--ius-primary-900)}.ius-datefilter__trigger .ius-icon{font-size:var(--ius-icon-md)}.ius-datefilter__panel{display:flex;flex-direction:column;gap:var(--ius-space-sm)}.ius-datefilter__body{display:flex;gap:var(--ius-space-md)}.ius-datefilter__presets{display:flex;flex-direction:column;gap:var(--ius-space-xxs);min-width:132px;border-right:1px solid var(--ius-stroke);padding-right:var(--ius-space-sm)}.ius-datefilter__preset{appearance:none;border:0;background:transparent;text-align:left;cursor:pointer;font-family:var(--ius-font-body);font-size:var(--ius-fs-sm);color:var(--ius-text-secondary);padding:var(--ius-space-xs) var(--ius-space-sm);border-radius:var(--ius-radius-sm)}.ius-datefilter__preset:hover{background:var(--ius-neutral-2);color:var(--ius-text-primary)}.ius-datefilter__preset[data-active=true]{background:var(--ius-info-100);color:var(--ius-primary-900);font-weight:var(--ius-fw-semibold)}.ius-datefilter__foot{display:flex;align-items:center;justify-content:flex-end;gap:var(--ius-space-sm);border-top:1px solid var(--ius-stroke);padding-top:var(--ius-space-sm)}.ius-datefilter__foot-l{margin-right:auto}\n"], dependencies: [{ kind: "component", type: PopoverComponent, selector: "ius-popover", inputs: ["title", "content", "placement", "trigger", "offset", "open", "defaultOpen", "showArrow", "disabled", "anchorRect", "padding", "dismissable", "panelClass"], outputs: ["openChange"] }, { kind: "component", type: CalendarComponent, selector: "ius-calendar", inputs: ["mode", "defaultValue", "value", "viewDate", "minDate", "maxDate", "isDateDisabled", "showToday", "todayLabel", "weekStartsOn"], outputs: ["valueChange", "viewDateChange", "todayClick"] }, { kind: "component", type: ButtonComponent, selector: "ius-button", inputs: ["variant", "label", "prefixIcon", "sufixIcon", "dynamic", "loading", "status", "disabled", "pressed", "fullWidth", "type", "ariaLabel", "action", "size"], outputs: ["clicked"] }, { kind: "component", type: TextButtonComponent, selector: "ius-text-button", inputs: ["label", "prefixIcon", "sufixIcon", "size", "disabled", "type", "ariaExpanded", "ariaControls"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
20793
+ }
20794
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: DateFilterComponent, decorators: [{
20795
+ type: Component,
20796
+ args: [{ selector: 'ius-date-filter', standalone: true, imports: [PopoverComponent, CalendarComponent, ButtonComponent, TextButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
20797
+ // Clase raíz del golden (`className: 'ius-datefilter'`).
20798
+ class: 'ius-datefilter',
20799
+ '[attr.data-size]': 'size() ?? null',
20800
+ }, template: "<!--\n DateFilter \u2014 el Popover es el motor de anclaje; el disparador se proyecta\n como children y el panel como `[iusPopoverContent]`. Modo controlado\n (`[open]` + `(openChange)`) porque el borrador se re-siembra al abrir.\n Sin `dismissable`, como el golden: ver el TSDoc de cabecera.\n-->\n<ius-popover\n trigger=\"click\"\n [placement]=\"placement()\"\n [showArrow]=\"false\"\n [offset]=\"8\"\n [open]=\"isOpen()\"\n panelClass=\"ius-datefilter-pop\"\n (openChange)=\"onOpenChange($event)\"\n>\n <!-- \u2500\u2500 Disparador: p\u00EDldora outline con el valor aplicado \u2500\u2500 -->\n <button\n type=\"button\"\n class=\"ius-datefilter__trigger\"\n aria-haspopup=\"dialog\"\n [attr.data-open]=\"isOpen() ? 'true' : null\"\n [attr.data-active]=\"active() ? 'true' : null\"\n [attr.aria-expanded]=\"isOpen()\"\n >\n <!-- Ligadura Material Symbols: el texto va pegado, sin espacios sueltos. -->\n <span translate=\"no\" class=\"ius-icon\" aria-hidden=\"true\">{{ icon() }}</span>\n <span>{{ label() }}</span>\n </button>\n\n <!-- \u2500\u2500 Panel: presets + Calendar + pie (se estampa en el overlay) \u2500\u2500 -->\n <div iusPopoverContent class=\"ius-datefilter__panel\">\n <!--\n `@if (isOpen())`: la proyecci\u00F3n se reutiliza entre aperturas; sin \u00E9l el\n Calendar recordar\u00EDa el mes y el nivel navegados la vez anterior.\n -->\n @if (isOpen()) {\n <div class=\"ius-datefilter__body\">\n <div class=\"ius-datefilter__presets\">\n @for (preset of presetList(); track $index; let i = $index) {\n <button\n type=\"button\"\n class=\"ius-datefilter__preset\"\n [attr.data-active]=\"presetFlags()[i] ? 'true' : null\"\n [attr.aria-pressed]=\"presetFlags()[i]\"\n (click)=\"choosePreset(preset)\"\n >{{ preset.label }}</button>\n }\n </div>\n\n <ius-calendar\n [mode]=\"mode()\"\n [value]=\"draft()\"\n (valueChange)=\"onCalendarChange($event)\"\n />\n </div>\n\n <!-- \u2500\u2500 Pie: limpiar \u00B7 cancelar \u00B7 aplicar (staged) \u2500\u2500 -->\n <div class=\"ius-datefilter__foot\">\n <span class=\"ius-datefilter__foot-l\">\n <ius-text-button\n [label]=\"clearLabel()\"\n [size]=\"textButtonSize()\"\n (clicked)=\"clearDraft()\"\n />\n </span>\n <ius-text-button\n [label]=\"cancelLabel()\"\n [size]=\"textButtonSize()\"\n (clicked)=\"cancel()\"\n />\n <ius-button\n variant=\"primary\"\n [size]=\"buttonSize()\"\n [label]=\"applyLabel()\"\n (clicked)=\"applyDraft()\"\n />\n </div>\n }\n </div>\n</ius-popover>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;align-items:center}.ius-datefilter__trigger{appearance:none;display:inline-flex;align-items:center;gap:var(--ius-space-xs);font-family:var(--ius-font-body);font-size:var(--ius-fs-base);line-height:1;color:var(--ius-text-primary);background:var(--ius-neutral-white);border:1px solid var(--ius-stroke);border-radius:var(--ius-radius-md);padding:var(--ius-space-xs) var(--ius-space-sm);cursor:pointer;transition:border-color var(--ius-duration-fast) var(--ius-ease-standard),color var(--ius-duration-fast) var(--ius-ease-standard);-webkit-user-select:none;user-select:none;white-space:nowrap}.ius-datefilter__trigger:hover{border-color:var(--ius-primary-500);color:var(--ius-primary-900)}.ius-datefilter__trigger:focus-visible{outline:none;box-shadow:var(--ius-focus-ring)}.ius-datefilter__trigger[data-open=true],.ius-datefilter__trigger[data-active=true]{border-color:var(--ius-primary-500);color:var(--ius-primary-900)}.ius-datefilter__trigger .ius-icon{font-size:var(--ius-icon-md)}.ius-datefilter__panel{display:flex;flex-direction:column;gap:var(--ius-space-sm)}.ius-datefilter__body{display:flex;gap:var(--ius-space-md)}.ius-datefilter__presets{display:flex;flex-direction:column;gap:var(--ius-space-xxs);min-width:132px;border-right:1px solid var(--ius-stroke);padding-right:var(--ius-space-sm)}.ius-datefilter__preset{appearance:none;border:0;background:transparent;text-align:left;cursor:pointer;font-family:var(--ius-font-body);font-size:var(--ius-fs-sm);color:var(--ius-text-secondary);padding:var(--ius-space-xs) var(--ius-space-sm);border-radius:var(--ius-radius-sm)}.ius-datefilter__preset:hover{background:var(--ius-neutral-2);color:var(--ius-text-primary)}.ius-datefilter__preset[data-active=true]{background:var(--ius-info-100);color:var(--ius-primary-900);font-weight:var(--ius-fw-semibold)}.ius-datefilter__foot{display:flex;align-items:center;justify-content:flex-end;gap:var(--ius-space-sm);border-top:1px solid var(--ius-stroke);padding-top:var(--ius-space-sm)}.ius-datefilter__foot-l{margin-right:auto}\n"] }]
20801
+ }], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], defaultValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValue", required: false }] }], presets: [{ type: i0.Input, args: [{ isSignal: true, alias: "presets", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], applyLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "applyLabel", required: false }] }], cancelLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelLabel", required: false }] }], clearLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearLabel", required: false }] }], apply: [{ type: i0.Output, args: ["apply"] }] } });
20802
+
20466
20803
  function esPromesa(v) {
20467
20804
  return !!v && typeof v.then === 'function';
20468
20805
  }
@@ -23305,5 +23642,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
23305
23642
  * Generated bundle index. Do not edit.
23306
23643
  */
23307
23644
 
23308
- export { ACTUACION_CATALOG, ACTUACION_FUENTES, AccordionComponent, AccountItemComponent, AlertComponent, AnswerFeedbackComponent, AppLayoutComponent, AutocompleteComponent, AvatarComponent, AvatarStackComponent, BarChartComponent, BorderBeamComponent, BreadcrumbComponent, ButtonComponent, CATEGORIES, CATEGORY_DEF, CATEGORY_HUE, CHART_CATEGORICAL_TONES, CHART_SEMANTIC_TONES, CHART_TONES, CLASE_DEF, CalendarComponent, CaptchaFieldComponent, CardComponent, CarouselComponent, CheckboxComponent, ChipComponent, CircularProgressComponent, CodeFieldComponent, CountdownComponent, CountdownRingComponent, DatePickerComponent, DescriptionListComponent, DetailSidePanelComponent, DividerComponent, DonutChartComponent, DrawerComponent, DropdownComponent, EVENT_KINDS, EVENT_KIND_ICON, EXT_KIND, EleniaBubbleComponent, EleniaOrbComponent, EmptyStateComponent, EntityNavigatorComponent, EntityRowComponent, EventPillComponent, FUENTES, FUENTE_DEF, FUENTE_FALLBACK, FileItemComponent, FileTypeIconComponent, FileUploadComponent, FlexComponent, FormComponent, FormFieldComponent, FormSectionComponent, HeaderBarComponent, ILLUSTRATIONS, ILLUSTRATION_ALIAS, ILLUSTRATION_NAMES, IUS_FILTER_OPERATORS, IUS_TOAST_DEFAULT_DURATION, IUS_TOAST_DEFAULT_ICON, IconButtonComponent, IllustrationComponent, InsightComponent, InsigniaComponent, IusAccountItemNameDirective, IusAccountItemSubtitleDirective, IusAccountItemTrailingDirective, IusAlertActionsDirective, IusAlertTrailingDirective, IusCalendarAsideDirective, IusCalendarFooterDirective, IusCardFooterDirective, IusCardHeaderDirective, IusDrawerFooterDirective, IusDrawerHeaderActionsDirective, IusDrawerTitleDirective, IusDropdownTriggerDirective, IusEntityRowLabelDirective, IusEntityRowSublabelDirective, IusFormFooterDirective, IusInsightActionsDirective, IusListCardLeadingDirective, IusListCardOverlineDirective, IusListCardParagraphDirective, IusListCardSubtitleDirective, IusListCardTitleDirective, IusListViewFiltersDirective, IusListViewFooterEndDirective, IusListViewFooterStartDirective, IusListViewHeaderEndDirective, IusListViewHeaderStartDirective, IusListViewToolbarDirective, IusMenuItemTrailingDirective, IusModalFooterDirective, IusPageHeaderActionsDirective, IusPageHeaderBreadcrumbDirective, IusPageHeaderOverlineDirective, IusPageHeaderSubtitleDirective, IusPageHeaderTitleDirective, IusPageHeaderToolbarDirective, IusPersonItemNameDirective, IusPersonItemTrailingDirective, IusSectionTitleActionDirective, IusSettingsNavFooterDirective, IusSettingsNavHeaderDirective, IusStageDetailFooterDirective, IusStageDetailHeaderActionsDirective, IusStageDetailMetaDirective, IusStatCaptionDirective, IusStatDeltaDirective, IusStatDeltaLabelDirective, IusStatLabelDirective, IusStatSparklineDirective, IusTagPrefixDirective, IusTagSuffixDirective, IusToastActionDirective, IusUserMenuFooterDirective, KINDS, KIND_DEF, KIND_FALLBACK, LineChartComponent, LinearProgressBarComponent, ListCardComponent, ListViewComponent, LoadingComponent, LoadingMarkComponent, MenuComponent, MenuItemComponent, ModalComponent, MultiTextFieldComponent, NATURALEZA_DEF, NavUserComponent, NumberFieldComponent, ORB_PERIODS, OauthButtonComponent, OptionItemComponent, PageHeaderComponent, PartyListComponent, PersonItemComponent, PersonPickerComponent, PlanUsageItemComponent, PopoverComponent, QueryBuilderComponent, RepeatableFieldComponent, SOURCE_FUENTE, SOURCE_LABEL, STATUS_TONES, STATUS_VOCAB, STATUS_VOCABS, STATUS_VOCABS_PENDING, ScrollAreaComponent, SearchBarComponent, SectionHeaderComponent, SectionTitleComponent, SegmentGroupComponent, SegmentedControlComponent, SelectComponent, SettingsNavComponent, ShowMoreComponent, SkeletonComponent, SparklineComponent, SplitterComponent, StageDetailDrawerComponent, StatComponent, StatGroupComponent, StatusChipComponent, StatusStateComponent, StepperComponent, SwitchComponent, TableComponent, TabsComponent, TagComponent, TextAreaComponent, TextButtonComponent, TextComponent, TextFieldComponent, TimePanelComponent, TimelineComponent, ToastComponent, ToastService, ToastViewportComponent, TooltipComponent, UserMenuComponent, WizardComponent, WizardController, WizardNavComponent, categoryColors, categoryOptions, chartAxisTicks, chartFormatValue, chartLinearPath, chartNiceNum, chartPath, chartPrefersReducedMotion, chartSmoothPath, chartToneAt, chartToneVar, createWizard, eventKindOptions, extOf, formatBytes, formatDate, formatTime, fuenteColors, fuenteOptions, iusSegColor, kindHue, kindIcon, kindLabel, kindMeta, kindOptions, naturalezaMeta, naturalezaOptions, normalizeTipo, pose, poseIso, poseSpeaking, poseThinking, renderCubeSvg, resolveActuacion, resolveCategoryHue, resolveEventIcon, resolveFuente, resolveIllustration, resolveKind, resolveStatus, sourceIcon, sourceMeta, statusOptions, statusOrder, statusToneVars, statusVocab, timeFromDate, voiceEnv };
23645
+ export { ACTUACION_CATALOG, ACTUACION_FUENTES, AccordionComponent, AccountItemComponent, AlertComponent, AnswerFeedbackComponent, AppLayoutComponent, AutocompleteComponent, AvatarComponent, AvatarStackComponent, BarChartComponent, BorderBeamComponent, BreadcrumbComponent, ButtonComponent, CATEGORIES, CATEGORY_DEF, CATEGORY_HUE, CHART_CATEGORICAL_TONES, CHART_SEMANTIC_TONES, CHART_TONES, CLASE_DEF, CalendarComponent, CaptchaFieldComponent, CardComponent, CarouselComponent, CheckboxComponent, ChipComponent, CircularProgressComponent, CodeFieldComponent, CountdownComponent, CountdownRingComponent, DateFilterComponent, DatePickerComponent, DescriptionListComponent, DetailSidePanelComponent, DividerComponent, DonutChartComponent, DrawerComponent, DropdownComponent, EVENT_KINDS, EVENT_KIND_ICON, EXT_KIND, EleniaBubbleComponent, EleniaOrbComponent, EmptyStateComponent, EntityNavigatorComponent, EntityRowComponent, EventPillComponent, FUENTES, FUENTE_DEF, FUENTE_FALLBACK, FileItemComponent, FileTypeIconComponent, FileUploadComponent, FlexComponent, FormComponent, FormFieldComponent, FormSectionComponent, HeaderBarComponent, ILLUSTRATIONS, ILLUSTRATION_ALIAS, ILLUSTRATION_NAMES, IUS_FILTER_OPERATORS, IUS_TOAST_DEFAULT_DURATION, IUS_TOAST_DEFAULT_ICON, IconButtonComponent, IllustrationComponent, InsightComponent, InsigniaComponent, IusAccountItemNameDirective, IusAccountItemSubtitleDirective, IusAccountItemTrailingDirective, IusAlertActionsDirective, IusAlertTrailingDirective, IusCalendarAsideDirective, IusCalendarFooterDirective, IusCardFooterDirective, IusCardHeaderDirective, IusDrawerFooterDirective, IusDrawerHeaderActionsDirective, IusDrawerTitleDirective, IusDropdownTriggerDirective, IusEntityRowLabelDirective, IusEntityRowSublabelDirective, IusFormFooterDirective, IusInsightActionsDirective, IusListCardLeadingDirective, IusListCardOverlineDirective, IusListCardParagraphDirective, IusListCardSubtitleDirective, IusListCardTitleDirective, IusListViewFiltersDirective, IusListViewFooterEndDirective, IusListViewFooterStartDirective, IusListViewHeaderEndDirective, IusListViewHeaderStartDirective, IusListViewToolbarDirective, IusMenuItemTrailingDirective, IusModalFooterDirective, IusPageHeaderActionsDirective, IusPageHeaderBreadcrumbDirective, IusPageHeaderOverlineDirective, IusPageHeaderSubtitleDirective, IusPageHeaderTitleDirective, IusPageHeaderToolbarDirective, IusPersonItemNameDirective, IusPersonItemTrailingDirective, IusSectionTitleActionDirective, IusSettingsNavFooterDirective, IusSettingsNavHeaderDirective, IusStageDetailFooterDirective, IusStageDetailHeaderActionsDirective, IusStageDetailMetaDirective, IusStatCaptionDirective, IusStatDeltaDirective, IusStatDeltaLabelDirective, IusStatLabelDirective, IusStatSparklineDirective, IusTagPrefixDirective, IusTagSuffixDirective, IusToastActionDirective, IusUserMenuFooterDirective, KINDS, KIND_DEF, KIND_FALLBACK, LineChartComponent, LinearProgressBarComponent, ListCardComponent, ListViewComponent, LoadingComponent, LoadingMarkComponent, MenuComponent, MenuItemComponent, ModalComponent, MultiTextFieldComponent, NATURALEZA_DEF, NavUserComponent, NumberFieldComponent, ORB_PERIODS, OauthButtonComponent, OptionItemComponent, PageHeaderComponent, PartyListComponent, PersonItemComponent, PersonPickerComponent, PlanUsageItemComponent, PopoverComponent, QueryBuilderComponent, RepeatableFieldComponent, SOURCE_FUENTE, SOURCE_LABEL, STATUS_TONES, STATUS_VOCAB, STATUS_VOCABS, STATUS_VOCABS_PENDING, ScrollAreaComponent, SearchBarComponent, SectionHeaderComponent, SectionTitleComponent, SegmentGroupComponent, SegmentedControlComponent, SelectComponent, SettingsNavComponent, ShowMoreComponent, SkeletonComponent, SparklineComponent, SplitterComponent, StageDetailDrawerComponent, StatComponent, StatGroupComponent, StatusChipComponent, StatusStateComponent, StepperComponent, SwitchComponent, TableComponent, TabsComponent, TagComponent, TextAreaComponent, TextButtonComponent, TextComponent, TextFieldComponent, TimePanelComponent, TimelineComponent, ToastComponent, ToastService, ToastViewportComponent, TooltipComponent, UserMenuComponent, WizardComponent, WizardController, WizardNavComponent, categoryColors, categoryOptions, chartAxisTicks, chartFormatValue, chartLinearPath, chartNiceNum, chartPath, chartPrefersReducedMotion, chartSmoothPath, chartToneAt, chartToneVar, createWizard, eventKindOptions, extOf, formatBytes, formatDate, formatTime, fuenteColors, fuenteOptions, iusSegColor, kindHue, kindIcon, kindLabel, kindMeta, kindOptions, naturalezaMeta, naturalezaOptions, normalizeTipo, pose, poseIso, poseSpeaking, poseThinking, renderCubeSvg, resolveActuacion, resolveCategoryHue, resolveEventIcon, resolveFuente, resolveIllustration, resolveKind, resolveStatus, sourceIcon, sourceMeta, statusOptions, statusOrder, statusToneVars, statusVocab, timeFromDate, voiceEnv };
23309
23646
  //# sourceMappingURL=litigiovirtual-ius-design-components.mjs.map