@educarehq/solaris-ui 0.23.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2855,6 +2855,29 @@ const DATA_ICONS = [
2855
2855
  { type: 'path', d: 'm2 2 20 20' },
2856
2856
  ],
2857
2857
  },
2858
+ {
2859
+ name: 'cookie',
2860
+ viewBox: '0 0 24 24',
2861
+ fill: 'none',
2862
+ stroke: 'currentColor',
2863
+ strokeWidth: 2,
2864
+ strokeLinecap: 'round',
2865
+ strokeLinejoin: 'round',
2866
+ elements: [
2867
+ { type: 'path', d: 'M11 17h.01' },
2868
+ {
2869
+ type: 'path',
2870
+ d: 'M11.496 2c.324-.016.558.292.529.615a4 4 0 004.235 4.368.713.713 0 01.758.757 4 4 0 004.366 4.237c.323-.03.63.204.614.527a10 10 0 01-2.915 6.566A1 1 0 114.93 4.918 10 10 0 0111.496 2',
2871
+ },
2872
+ { type: 'path', d: 'M12 12h.01' },
2873
+ { type: 'path', d: 'M16 16h.01' },
2874
+ { type: 'path', d: 'M16 3h.01' },
2875
+ { type: 'path', d: 'M21 4h.01' },
2876
+ { type: 'path', d: 'M21 8h.01' },
2877
+ { type: 'path', d: 'M7 14h.01' },
2878
+ { type: 'path', d: 'M9 8h.01' },
2879
+ ],
2880
+ },
2858
2881
  ];
2859
2882
 
2860
2883
  const SOLARIS_BUILT_IN_ICONS = [
@@ -13710,22 +13733,35 @@ const SOLARIS_DIALOG_DATA = new InjectionToken('SolarisDialogData');
13710
13733
  const SOLARIS_DIALOG_REF = new InjectionToken('SolarisDialogRef');
13711
13734
 
13712
13735
  class SolarisDialogContentComponent {
13736
+ density = input(...(ngDevMode ? [undefined, { debugName: "density" }] : /* istanbul ignore next */ []));
13713
13737
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SolarisDialogContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13714
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: SolarisDialogContentComponent, isStandalone: true, selector: "solaris-dialog-content", host: { classAttribute: "solaris-dialog-content" }, ngImport: i0, template: "<div class=\"solaris-dialog-content__inner\">\n <ng-content />\n</div>\n", styles: [":host{display:block;flex:1;overflow-y:auto;padding:var(--solaris-spacing-4);min-height:0}.solaris-dialog-content__inner{height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13738
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.22", type: SolarisDialogContentComponent, isStandalone: true, selector: "solaris-dialog-content", inputs: { density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-density": "density()" }, classAttribute: "solaris-dialog-content" }, ngImport: i0, template: "<div class=\"solaris-dialog-content__inner\">\n <ng-content />\n</div>\n", styles: [":host{display:block;flex:1;overflow-y:auto;padding:var(--solaris-spacing-0);min-height:0}:host([data-density=compact]){padding:var(--solaris-spacing-2)}:host([data-density=normal]){padding:var(--solaris-spacing-4)}:host([data-density=comfortable]){padding:var(--solaris-spacing-6)}.solaris-dialog-content__inner{height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13715
13739
  }
13716
13740
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SolarisDialogContentComponent, decorators: [{
13717
13741
  type: Component,
13718
13742
  args: [{ selector: 'solaris-dialog-content', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
13719
13743
  class: 'solaris-dialog-content',
13720
- }, template: "<div class=\"solaris-dialog-content__inner\">\n <ng-content />\n</div>\n", styles: [":host{display:block;flex:1;overflow-y:auto;padding:var(--solaris-spacing-4);min-height:0}.solaris-dialog-content__inner{height:100%}\n"] }]
13721
- }] });
13744
+ '[attr.data-density]': 'density()',
13745
+ }, template: "<div class=\"solaris-dialog-content__inner\">\n <ng-content />\n</div>\n", styles: [":host{display:block;flex:1;overflow-y:auto;padding:var(--solaris-spacing-0);min-height:0}:host([data-density=compact]){padding:var(--solaris-spacing-2)}:host([data-density=normal]){padding:var(--solaris-spacing-4)}:host([data-density=comfortable]){padding:var(--solaris-spacing-6)}.solaris-dialog-content__inner{height:100%}\n"] }]
13746
+ }], propDecorators: { density: [{ type: i0.Input, args: [{ isSignal: true, alias: "density", required: false }] }] } });
13722
13747
 
13723
13748
  class SolarisDialogActionsComponent {
13724
13749
  dialogRef = inject(SOLARIS_DIALOG_REF);
13750
+ translateService = inject(SolarisTranslateService, {
13751
+ optional: true,
13752
+ });
13725
13753
  actions = input([], ...(ngDevMode ? [{ debugName: "actions" }] : /* istanbul ignore next */ []));
13726
13754
  align = input('end', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
13727
13755
  stack = input('auto', ...(ngDevMode ? [{ debugName: "stack" }] : /* istanbul ignore next */ []));
13756
+ separator = input(true, { ...(ngDevMode ? { debugName: "separator" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
13757
+ density = input(...(ngDevMode ? [undefined, { debugName: "density" }] : /* istanbul ignore next */ []));
13728
13758
  actionExecuted = output();
13759
+ resolvedLabel(action) {
13760
+ if (action.labelKey) {
13761
+ return this.translateService?.translate(action.labelKey) ?? action.label;
13762
+ }
13763
+ return action.label;
13764
+ }
13729
13765
  handleAction(action) {
13730
13766
  const executeAction = () => {
13731
13767
  if (action.action) {
@@ -13742,54 +13778,52 @@ class SolarisDialogActionsComponent {
13742
13778
  this.actionExecuted.emit(action);
13743
13779
  }
13744
13780
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SolarisDialogActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13745
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: SolarisDialogActionsComponent, isStandalone: true, selector: "solaris-dialog-actions", inputs: { actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, stack: { classPropertyName: "stack", publicName: "stack", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { actionExecuted: "actionExecuted" }, host: { properties: { "attr.data-align": "align()", "attr.data-stack": "stack()" }, classAttribute: "solaris-dialog-actions" }, ngImport: i0, template: "<div class=\"solaris-dialog-actions__inner\">\n @for (action of actions(); track $index) {\n <button\n type=\"button\"\n solaris-button\n (click)=\"handleAction(action)\"\n [color]=\"action.color ?? 'neutral'\"\n [disabled]=\"action.disabled ?? false\"\n [appearance]=\"action.appearance ?? 'solid'\"\n >\n {{ action.label }}\n </button>\n }\n</div>\n", styles: [":host{display:block;padding:var(--solaris-spacing-3) var(--solaris-spacing-4)}.solaris-dialog-actions__inner{display:flex;flex-wrap:wrap;gap:var(--solaris-spacing-2)}:host([data-align=start]) .solaris-dialog-actions__inner{justify-content:flex-start}:host([data-align=center]) .solaris-dialog-actions__inner{justify-content:center}:host([data-align=end]) .solaris-dialog-actions__inner{justify-content:flex-end}:host([data-align=space-between]) .solaris-dialog-actions__inner{justify-content:space-between}:host([data-stack=vertical]) .solaris-dialog-actions__inner{flex-direction:column}:host([data-stack=horizontal]) .solaris-dialog-actions__inner{flex-direction:row}\n"], dependencies: [{ kind: "directive", type: SolarisButtonDirective, selector: "[solaris-button]", inputs: ["iconPosition", "appearance", "color", "shape", "radius", "density", "fullWidth", "disabled", "loading", "loadingLabelKey", "loadingLabel", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13781
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: SolarisDialogActionsComponent, isStandalone: true, selector: "solaris-dialog-actions", inputs: { actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, stack: { classPropertyName: "stack", publicName: "stack", isSignal: true, isRequired: false, transformFunction: null }, separator: { classPropertyName: "separator", publicName: "separator", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { actionExecuted: "actionExecuted" }, host: { properties: { "attr.data-align": "align()", "attr.data-stack": "stack()", "attr.data-separator": "separator() ? '' : null", "attr.data-density": "density()" }, classAttribute: "solaris-dialog-actions" }, ngImport: i0, template: "<div class=\"solaris-dialog-actions__inner\">\n @for (action of actions(); track $index) {\n <button\n type=\"button\"\n solaris-button\n [icon]=\"action.icon\"\n (click)=\"handleAction(action)\"\n [radius]=\"action.radius ?? 'md'\"\n [shape]=\"action.shape ?? 'wide'\"\n [color]=\"action.color ?? 'neutral'\"\n [loading]=\"action.loading ?? false\"\n [disabled]=\"action.disabled ?? false\"\n [attr.data-autofocus]=\"action.autoFocus ? '' : null\"\n [density]=\"action.density ?? 'compact'\"\n [appearance]=\"action.appearance ?? 'solid'\"\n [iconPosition]=\"action.iconPosition ?? 'start'\"\n >\n {{ resolvedLabel(action) }}\n </button>\n }\n</div>\n", styles: [":host{display:block;padding:var(--solaris-spacing-0);--solaris-dialog-actions-border-color: var(--solaris-border-default)}:host([data-separator]){border-top:var(--solaris-border-width-sm) solid var(--solaris-dialog-actions-border-color)}.solaris-dialog-actions__inner{display:flex;flex-wrap:wrap;gap:var(--solaris-spacing-3);padding:var(--solaris-spacing-3)}:host([data-density=compact]) .solaris-dialog-actions__inner{gap:var(--solaris-spacing-1)}:host([data-density=normal]) .solaris-dialog-actions__inner{gap:var(--solaris-spacing-2)}:host([data-density=comfortable]) .solaris-dialog-actions__inner{gap:var(--solaris-spacing-3)}:host([data-align=start]) .solaris-dialog-actions__inner{justify-content:flex-start}:host([data-align=center]) .solaris-dialog-actions__inner{justify-content:center}:host([data-align=end]) .solaris-dialog-actions__inner{justify-content:flex-end}:host([data-align=space-between]) .solaris-dialog-actions__inner{justify-content:space-between}:host([data-stack=vertical]) .solaris-dialog-actions__inner{flex-direction:column}:host([data-stack=horizontal]) .solaris-dialog-actions__inner{flex-direction:row}\n"], dependencies: [{ kind: "directive", type: SolarisButtonDirective, selector: "[solaris-button]", inputs: ["iconPosition", "appearance", "color", "shape", "radius", "density", "fullWidth", "disabled", "loading", "loadingLabelKey", "loadingLabel", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13746
13782
  }
13747
13783
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SolarisDialogActionsComponent, decorators: [{
13748
13784
  type: Component,
13749
13785
  args: [{ selector: 'solaris-dialog-actions', standalone: true, imports: [SolarisButtonDirective], changeDetection: ChangeDetectionStrategy.OnPush, host: {
13750
13786
  '[attr.data-align]': 'align()',
13751
13787
  '[attr.data-stack]': 'stack()',
13788
+ '[attr.data-separator]': "separator() ? '' : null",
13789
+ '[attr.data-density]': 'density()',
13752
13790
  class: 'solaris-dialog-actions',
13753
- }, template: "<div class=\"solaris-dialog-actions__inner\">\n @for (action of actions(); track $index) {\n <button\n type=\"button\"\n solaris-button\n (click)=\"handleAction(action)\"\n [color]=\"action.color ?? 'neutral'\"\n [disabled]=\"action.disabled ?? false\"\n [appearance]=\"action.appearance ?? 'solid'\"\n >\n {{ action.label }}\n </button>\n }\n</div>\n", styles: [":host{display:block;padding:var(--solaris-spacing-3) var(--solaris-spacing-4)}.solaris-dialog-actions__inner{display:flex;flex-wrap:wrap;gap:var(--solaris-spacing-2)}:host([data-align=start]) .solaris-dialog-actions__inner{justify-content:flex-start}:host([data-align=center]) .solaris-dialog-actions__inner{justify-content:center}:host([data-align=end]) .solaris-dialog-actions__inner{justify-content:flex-end}:host([data-align=space-between]) .solaris-dialog-actions__inner{justify-content:space-between}:host([data-stack=vertical]) .solaris-dialog-actions__inner{flex-direction:column}:host([data-stack=horizontal]) .solaris-dialog-actions__inner{flex-direction:row}\n"] }]
13754
- }], propDecorators: { actions: [{ type: i0.Input, args: [{ isSignal: true, alias: "actions", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], stack: [{ type: i0.Input, args: [{ isSignal: true, alias: "stack", required: false }] }], actionExecuted: [{ type: i0.Output, args: ["actionExecuted"] }] } });
13791
+ }, template: "<div class=\"solaris-dialog-actions__inner\">\n @for (action of actions(); track $index) {\n <button\n type=\"button\"\n solaris-button\n [icon]=\"action.icon\"\n (click)=\"handleAction(action)\"\n [radius]=\"action.radius ?? 'md'\"\n [shape]=\"action.shape ?? 'wide'\"\n [color]=\"action.color ?? 'neutral'\"\n [loading]=\"action.loading ?? false\"\n [disabled]=\"action.disabled ?? false\"\n [attr.data-autofocus]=\"action.autoFocus ? '' : null\"\n [density]=\"action.density ?? 'compact'\"\n [appearance]=\"action.appearance ?? 'solid'\"\n [iconPosition]=\"action.iconPosition ?? 'start'\"\n >\n {{ resolvedLabel(action) }}\n </button>\n }\n</div>\n", styles: [":host{display:block;padding:var(--solaris-spacing-0);--solaris-dialog-actions-border-color: var(--solaris-border-default)}:host([data-separator]){border-top:var(--solaris-border-width-sm) solid var(--solaris-dialog-actions-border-color)}.solaris-dialog-actions__inner{display:flex;flex-wrap:wrap;gap:var(--solaris-spacing-3);padding:var(--solaris-spacing-3)}:host([data-density=compact]) .solaris-dialog-actions__inner{gap:var(--solaris-spacing-1)}:host([data-density=normal]) .solaris-dialog-actions__inner{gap:var(--solaris-spacing-2)}:host([data-density=comfortable]) .solaris-dialog-actions__inner{gap:var(--solaris-spacing-3)}:host([data-align=start]) .solaris-dialog-actions__inner{justify-content:flex-start}:host([data-align=center]) .solaris-dialog-actions__inner{justify-content:center}:host([data-align=end]) .solaris-dialog-actions__inner{justify-content:flex-end}:host([data-align=space-between]) .solaris-dialog-actions__inner{justify-content:space-between}:host([data-stack=vertical]) .solaris-dialog-actions__inner{flex-direction:column}:host([data-stack=horizontal]) .solaris-dialog-actions__inner{flex-direction:row}\n"] }]
13792
+ }], propDecorators: { actions: [{ type: i0.Input, args: [{ isSignal: true, alias: "actions", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], stack: [{ type: i0.Input, args: [{ isSignal: true, alias: "stack", required: false }] }], separator: [{ type: i0.Input, args: [{ isSignal: true, alias: "separator", required: false }] }], density: [{ type: i0.Input, args: [{ isSignal: true, alias: "density", required: false }] }], actionExecuted: [{ type: i0.Output, args: ["actionExecuted"] }] } });
13755
13793
 
13794
+ let nextDialogHeaderId = 0;
13756
13795
  class SolarisDialogHeaderComponent {
13757
- dialogRef = inject(SOLARIS_DIALOG_REF);
13758
- translateService = inject(SolarisTranslateService, {
13796
+ dialogRef = inject(SOLARIS_DIALOG_REF, {
13759
13797
  optional: true,
13760
13798
  });
13761
13799
  icon = input(...(ngDevMode ? [undefined, { debugName: "icon" }] : /* istanbul ignore next */ []));
13762
13800
  title = input(...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
13763
13801
  description = input(...(ngDevMode ? [undefined, { debugName: "description" }] : /* istanbul ignore next */ []));
13764
- closeable = input(true, ...(ngDevMode ? [{ debugName: "closeable" }] : /* istanbul ignore next */ []));
13765
- closeLabel = input('Close', ...(ngDevMode ? [{ debugName: "closeLabel" }] : /* istanbul ignore next */ []));
13766
- closeLabelKey = input(...(ngDevMode ? [undefined, { debugName: "closeLabelKey" }] : /* istanbul ignore next */ []));
13767
13802
  iconDecorative = input(false, ...(ngDevMode ? [{ debugName: "iconDecorative" }] : /* istanbul ignore next */ []));
13768
- size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
13769
13803
  variant = input('neutral', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
13770
- showCloseButton = () => this.closeable();
13804
+ separator = input(true, { ...(ngDevMode ? { debugName: "separator" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
13805
+ idPrefix = this.dialogRef?.id ?? `solaris-dialog-${++nextDialogHeaderId}`;
13806
+ titleId = `${this.idPrefix}-title`;
13807
+ descriptionId = `${this.idPrefix}-description`;
13771
13808
  hasTitle = () => !!this.title();
13772
13809
  hasDescription = () => !!this.description();
13773
13810
  hasIcon = () => !!this.icon();
13774
- resolvedCloseLabel = () => this.closeLabelKey()
13775
- ? (this.translateService?.translate(this.closeLabelKey()) ??
13776
- this.closeLabel())
13777
- : this.closeLabel();
13778
- close() {
13779
- this.dialogRef.close();
13780
- }
13781
13811
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SolarisDialogHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13782
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: SolarisDialogHeaderComponent, isStandalone: true, selector: "solaris-dialog-header", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, closeable: { classPropertyName: "closeable", publicName: "closeable", isSignal: true, isRequired: false, transformFunction: null }, closeLabel: { classPropertyName: "closeLabel", publicName: "closeLabel", isSignal: true, isRequired: false, transformFunction: null }, closeLabelKey: { classPropertyName: "closeLabelKey", publicName: "closeLabelKey", isSignal: true, isRequired: false, transformFunction: null }, iconDecorative: { classPropertyName: "iconDecorative", publicName: "iconDecorative", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-variant": "variant()" }, classAttribute: "solaris-dialog-header" }, ngImport: i0, template: "<div class=\"solaris-dialog-header__start\">\n @if (hasIcon()) {\n <div class=\"solaris-dialog-header__icon\">\n <solaris-icon [name]=\"icon()!\" [decorative]=\"iconDecorative()\" />\n </div>\n }\n\n <div class=\"solaris-dialog-header__text\">\n @if (hasTitle()) {\n <h2 class=\"solaris-dialog-header__title\" id=\"solaris-dialog-title\">\n {{ title() }}\n </h2>\n }\n\n @if (hasDescription()) {\n <p\n class=\"solaris-dialog-header__description\"\n id=\"solaris-dialog-description\"\n >\n {{ description() }}\n </p>\n }\n </div>\n</div>\n\n@if (showCloseButton()) {\n <div class=\"solaris-dialog-header__end\">\n <button\n type=\"button\"\n class=\"solaris-dialog-header__close\"\n [attr.data-size]=\"size()\"\n [attr.aria-label]=\"resolvedCloseLabel()\"\n (click)=\"close()\"\n >\n <solaris-icon name=\"x\" [decorative]=\"true\" />\n </button>\n </div>\n}\n", styles: [":host{display:flex;align-items:flex-start;gap:var(--solaris-spacing-3);padding:var(--solaris-spacing-4) var(--solaris-spacing-4) 0;--solaris-dialog-close-size: var(--solaris-font-size-lg);--solaris-dialog-close-icon-size: var(--solaris-font-size-lg);--solaris-dialog-icon-color: var(--solaris-text-muted);--solaris-dialog-media-size: var(--solaris-spacing-8);--solaris-dialog-icon-size: var(--solaris-font-size-2xl)}:host([data-variant=info]){--solaris-dialog-icon-color: var(--solaris-info-base)}:host([data-variant=success]){--solaris-dialog-icon-color: var(--solaris-success-base)}:host([data-variant=warning]){--solaris-dialog-icon-color: var(--solaris-warning-base)}:host([data-variant=danger]){--solaris-dialog-icon-color: var(--solaris-danger-base)}.solaris-dialog-header__start{display:flex;align-items:flex-start;gap:var(--solaris-spacing-3);flex:1;min-width:0}.solaris-dialog-header__icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--solaris-dialog-media-size);height:var(--solaris-dialog-media-size);color:var(--solaris-dialog-icon-color)}.solaris-dialog-header__icon solaris-icon,.solaris-dialog-header__icon svg{display:block;width:var(--solaris-dialog-icon-size);height:var(--solaris-dialog-icon-size)}.solaris-dialog-header__text{flex:1;min-width:0}.solaris-dialog-header__title{margin:0;font:var(--solaris-font-weight-semibold) var(--solaris-font-size-lg)/var(--solaris-line-height-sm) var(--solaris-font-family-sans);color:var(--solaris-text-strong)}.solaris-dialog-header__description{margin:var(--solaris-spacing-1) 0 0;font:var(--solaris-font-weight-regular) var(--solaris-font-size-sm)/var(--solaris-line-height-md) var(--solaris-font-family-sans);color:var(--solaris-text-muted)}.solaris-dialog-header__end{flex-shrink:0;display:flex;align-items:center}.solaris-dialog-header__close{all:unset;display:grid;flex-shrink:0;cursor:pointer;place-items:center;box-sizing:border-box;background:transparent;color:var(--solaris-text-muted);width:var(--solaris-dialog-close-size);height:var(--solaris-dialog-close-size);border-radius:var(--solaris-radius-sm);transition:color var(--solaris-motion-duration-normal) var(--solaris-motion-easing-standard)}.solaris-dialog-header__close:hover{color:var(--solaris-text-default)}.solaris-dialog-header__close:focus-visible{outline-offset:2px;outline:2px solid var(--solaris-primary-base)}.solaris-dialog-header__close solaris-icon,.solaris-dialog-header__close svg{display:block;width:var(--solaris-dialog-close-icon-size);height:var(--solaris-dialog-close-icon-size)}\n"], dependencies: [{ kind: "component", type: SolarisIconComponent, selector: "solaris-icon", inputs: ["name", "ariaLabel", "decorative", "inheritColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13812
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: SolarisDialogHeaderComponent, isStandalone: true, selector: "solaris-dialog-header", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, iconDecorative: { classPropertyName: "iconDecorative", publicName: "iconDecorative", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, separator: { classPropertyName: "separator", publicName: "separator", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-variant": "variant()", "attr.data-separator": "separator() ? '' : null" }, classAttribute: "solaris-dialog-header" }, ngImport: i0, template: "<div class=\"solaris-dialog-header__start\">\n @if (hasIcon()) {\n <div class=\"solaris-dialog-header__icon\">\n <solaris-icon [name]=\"icon()!\" [decorative]=\"iconDecorative()\" />\n </div>\n }\n\n <div class=\"solaris-dialog-header__text\">\n @if (hasTitle()) {\n <h2 class=\"solaris-dialog-header__title\" [attr.id]=\"titleId\">\n {{ title() }}\n </h2>\n }\n\n @if (hasDescription()) {\n <p class=\"solaris-dialog-header__description\" [attr.id]=\"descriptionId\">\n {{ description() }}\n </p>\n }\n </div>\n</div>\n", styles: [":host{display:flex;align-items:flex-start;gap:var(--solaris-spacing-0);padding:var(--solaris-spacing-0);--solaris-dialog-icon-color: var(--solaris-text-muted);--solaris-dialog-media-size: var(--solaris-spacing-8);--solaris-dialog-icon-size: var(--solaris-font-size-2xl);--solaris-dialog-header-border-color: var(--solaris-border-default)}:host([data-separator]){padding-block-end:var(--solaris-spacing-3);border-bottom:var(--solaris-border-width-sm) solid var(--solaris-dialog-header-border-color)}:host([data-variant=info]){--solaris-dialog-icon-color: var(--solaris-info-base)}:host([data-variant=success]){--solaris-dialog-icon-color: var(--solaris-success-base)}:host([data-variant=warning]){--solaris-dialog-icon-color: var(--solaris-warning-base)}:host([data-variant=danger]){--solaris-dialog-icon-color: var(--solaris-danger-base)}.solaris-dialog-header__start{flex:1;min-width:0;display:flex;align-items:center}.solaris-dialog-header__icon{flex-shrink:0;padding-left:var(--solaris-spacing-3);color:var(--solaris-dialog-icon-color)}.solaris-dialog-header__icon solaris-icon,.solaris-dialog-header__icon svg{display:block;width:var(--solaris-dialog-icon-size);height:var(--solaris-dialog-icon-size)}.solaris-dialog-header__text{flex:1;min-width:0}.solaris-dialog-header__title{margin:0;color:var(--solaris-text-strong);padding:var(--solaris-spacing-3) 0 0 var(--solaris-spacing-3);font:var(--solaris-font-weight-semibold) var(--solaris-font-size-lg)/var(--solaris-line-height-sm) var(--solaris-font-family-sans)}.solaris-dialog-header__description{color:var(--solaris-text-muted);padding:0 var(--solaris-spacing-3);margin:var(--solaris-spacing-1) 0 0;font:var(--solaris-font-weight-regular) var(--solaris-font-size-xs)/var(--solaris-line-height-md) var(--solaris-font-family-sans)}\n"], dependencies: [{ kind: "component", type: SolarisIconComponent, selector: "solaris-icon", inputs: ["name", "ariaLabel", "decorative", "inheritColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13783
13813
  }
13784
13814
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SolarisDialogHeaderComponent, decorators: [{
13785
13815
  type: Component,
13786
13816
  args: [{ selector: 'solaris-dialog-header', standalone: true, imports: [SolarisIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
13787
13817
  class: 'solaris-dialog-header',
13788
13818
  '[attr.data-variant]': 'variant()',
13789
- }, template: "<div class=\"solaris-dialog-header__start\">\n @if (hasIcon()) {\n <div class=\"solaris-dialog-header__icon\">\n <solaris-icon [name]=\"icon()!\" [decorative]=\"iconDecorative()\" />\n </div>\n }\n\n <div class=\"solaris-dialog-header__text\">\n @if (hasTitle()) {\n <h2 class=\"solaris-dialog-header__title\" id=\"solaris-dialog-title\">\n {{ title() }}\n </h2>\n }\n\n @if (hasDescription()) {\n <p\n class=\"solaris-dialog-header__description\"\n id=\"solaris-dialog-description\"\n >\n {{ description() }}\n </p>\n }\n </div>\n</div>\n\n@if (showCloseButton()) {\n <div class=\"solaris-dialog-header__end\">\n <button\n type=\"button\"\n class=\"solaris-dialog-header__close\"\n [attr.data-size]=\"size()\"\n [attr.aria-label]=\"resolvedCloseLabel()\"\n (click)=\"close()\"\n >\n <solaris-icon name=\"x\" [decorative]=\"true\" />\n </button>\n </div>\n}\n", styles: [":host{display:flex;align-items:flex-start;gap:var(--solaris-spacing-3);padding:var(--solaris-spacing-4) var(--solaris-spacing-4) 0;--solaris-dialog-close-size: var(--solaris-font-size-lg);--solaris-dialog-close-icon-size: var(--solaris-font-size-lg);--solaris-dialog-icon-color: var(--solaris-text-muted);--solaris-dialog-media-size: var(--solaris-spacing-8);--solaris-dialog-icon-size: var(--solaris-font-size-2xl)}:host([data-variant=info]){--solaris-dialog-icon-color: var(--solaris-info-base)}:host([data-variant=success]){--solaris-dialog-icon-color: var(--solaris-success-base)}:host([data-variant=warning]){--solaris-dialog-icon-color: var(--solaris-warning-base)}:host([data-variant=danger]){--solaris-dialog-icon-color: var(--solaris-danger-base)}.solaris-dialog-header__start{display:flex;align-items:flex-start;gap:var(--solaris-spacing-3);flex:1;min-width:0}.solaris-dialog-header__icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--solaris-dialog-media-size);height:var(--solaris-dialog-media-size);color:var(--solaris-dialog-icon-color)}.solaris-dialog-header__icon solaris-icon,.solaris-dialog-header__icon svg{display:block;width:var(--solaris-dialog-icon-size);height:var(--solaris-dialog-icon-size)}.solaris-dialog-header__text{flex:1;min-width:0}.solaris-dialog-header__title{margin:0;font:var(--solaris-font-weight-semibold) var(--solaris-font-size-lg)/var(--solaris-line-height-sm) var(--solaris-font-family-sans);color:var(--solaris-text-strong)}.solaris-dialog-header__description{margin:var(--solaris-spacing-1) 0 0;font:var(--solaris-font-weight-regular) var(--solaris-font-size-sm)/var(--solaris-line-height-md) var(--solaris-font-family-sans);color:var(--solaris-text-muted)}.solaris-dialog-header__end{flex-shrink:0;display:flex;align-items:center}.solaris-dialog-header__close{all:unset;display:grid;flex-shrink:0;cursor:pointer;place-items:center;box-sizing:border-box;background:transparent;color:var(--solaris-text-muted);width:var(--solaris-dialog-close-size);height:var(--solaris-dialog-close-size);border-radius:var(--solaris-radius-sm);transition:color var(--solaris-motion-duration-normal) var(--solaris-motion-easing-standard)}.solaris-dialog-header__close:hover{color:var(--solaris-text-default)}.solaris-dialog-header__close:focus-visible{outline-offset:2px;outline:2px solid var(--solaris-primary-base)}.solaris-dialog-header__close solaris-icon,.solaris-dialog-header__close svg{display:block;width:var(--solaris-dialog-close-icon-size);height:var(--solaris-dialog-close-icon-size)}\n"] }]
13790
- }], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], closeable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeable", required: false }] }], closeLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeLabel", required: false }] }], closeLabelKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeLabelKey", required: false }] }], iconDecorative: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconDecorative", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
13819
+ '[attr.data-separator]': "separator() ? '' : null",
13820
+ }, template: "<div class=\"solaris-dialog-header__start\">\n @if (hasIcon()) {\n <div class=\"solaris-dialog-header__icon\">\n <solaris-icon [name]=\"icon()!\" [decorative]=\"iconDecorative()\" />\n </div>\n }\n\n <div class=\"solaris-dialog-header__text\">\n @if (hasTitle()) {\n <h2 class=\"solaris-dialog-header__title\" [attr.id]=\"titleId\">\n {{ title() }}\n </h2>\n }\n\n @if (hasDescription()) {\n <p class=\"solaris-dialog-header__description\" [attr.id]=\"descriptionId\">\n {{ description() }}\n </p>\n }\n </div>\n</div>\n", styles: [":host{display:flex;align-items:flex-start;gap:var(--solaris-spacing-0);padding:var(--solaris-spacing-0);--solaris-dialog-icon-color: var(--solaris-text-muted);--solaris-dialog-media-size: var(--solaris-spacing-8);--solaris-dialog-icon-size: var(--solaris-font-size-2xl);--solaris-dialog-header-border-color: var(--solaris-border-default)}:host([data-separator]){padding-block-end:var(--solaris-spacing-3);border-bottom:var(--solaris-border-width-sm) solid var(--solaris-dialog-header-border-color)}:host([data-variant=info]){--solaris-dialog-icon-color: var(--solaris-info-base)}:host([data-variant=success]){--solaris-dialog-icon-color: var(--solaris-success-base)}:host([data-variant=warning]){--solaris-dialog-icon-color: var(--solaris-warning-base)}:host([data-variant=danger]){--solaris-dialog-icon-color: var(--solaris-danger-base)}.solaris-dialog-header__start{flex:1;min-width:0;display:flex;align-items:center}.solaris-dialog-header__icon{flex-shrink:0;padding-left:var(--solaris-spacing-3);color:var(--solaris-dialog-icon-color)}.solaris-dialog-header__icon solaris-icon,.solaris-dialog-header__icon svg{display:block;width:var(--solaris-dialog-icon-size);height:var(--solaris-dialog-icon-size)}.solaris-dialog-header__text{flex:1;min-width:0}.solaris-dialog-header__title{margin:0;color:var(--solaris-text-strong);padding:var(--solaris-spacing-3) 0 0 var(--solaris-spacing-3);font:var(--solaris-font-weight-semibold) var(--solaris-font-size-lg)/var(--solaris-line-height-sm) var(--solaris-font-family-sans)}.solaris-dialog-header__description{color:var(--solaris-text-muted);padding:0 var(--solaris-spacing-3);margin:var(--solaris-spacing-1) 0 0;font:var(--solaris-font-weight-regular) var(--solaris-font-size-xs)/var(--solaris-line-height-md) var(--solaris-font-family-sans)}\n"] }]
13821
+ }], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], iconDecorative: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconDecorative", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], separator: [{ type: i0.Input, args: [{ isSignal: true, alias: "separator", required: false }] }] } });
13791
13822
 
13792
13823
  class SolarisDialogComponent {
13824
+ translateService = inject(SolarisTranslateService, {
13825
+ optional: true,
13826
+ });
13793
13827
  options = input.required(...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
13794
13828
  hasActions = computed(() => {
13795
13829
  const actions = this.options().actions;
@@ -13798,15 +13832,36 @@ class SolarisDialogComponent {
13798
13832
  actionsAlign = computed(() => this.options().actionsAlign ?? 'end', ...(ngDevMode ? [{ debugName: "actionsAlign" }] : /* istanbul ignore next */ []));
13799
13833
  actionsStack = computed(() => this.options().actionsStack ?? 'auto', ...(ngDevMode ? [{ debugName: "actionsStack" }] : /* istanbul ignore next */ []));
13800
13834
  iconDecorative = computed(() => this.options().iconDecorative ?? false, ...(ngDevMode ? [{ debugName: "iconDecorative" }] : /* istanbul ignore next */ []));
13801
- closeable = computed(() => this.options().closeable ?? true, ...(ngDevMode ? [{ debugName: "closeable" }] : /* istanbul ignore next */ []));
13802
- closeLabel = computed(() => this.options().closeLabel ?? 'Close', ...(ngDevMode ? [{ debugName: "closeLabel" }] : /* istanbul ignore next */ []));
13803
- size = computed(() => this.options().size ?? 'md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
13804
13835
  variant = computed(() => this.options().variant ?? 'neutral', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
13836
+ headerSeparator = computed(() => this.options().headerSeparator ?? true, ...(ngDevMode ? [{ debugName: "headerSeparator" }] : /* istanbul ignore next */ []));
13837
+ footerSeparator = computed(() => this.options().footerSeparator ?? true, ...(ngDevMode ? [{ debugName: "footerSeparator" }] : /* istanbul ignore next */ []));
13838
+ actionsShape = computed(() => this.options().actionsShape, ...(ngDevMode ? [{ debugName: "actionsShape" }] : /* istanbul ignore next */ []));
13839
+ actionsDensity = computed(() => this.options().actionsDensity, ...(ngDevMode ? [{ debugName: "actionsDensity" }] : /* istanbul ignore next */ []));
13840
+ actionsRadius = computed(() => this.options().actionsRadius, ...(ngDevMode ? [{ debugName: "actionsRadius" }] : /* istanbul ignore next */ []));
13841
+ density = computed(() => this.options().density, ...(ngDevMode ? [{ debugName: "density" }] : /* istanbul ignore next */ []));
13805
13842
  description = computed(() => this.options().description, ...(ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []));
13806
13843
  title = computed(() => this.options().title, ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
13807
13844
  icon = computed(() => this.options().icon, ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
13845
+ resolvedTitle = computed(() => {
13846
+ const titleKey = this.options().titleKey;
13847
+ if (titleKey) {
13848
+ return this.translateService?.translate(titleKey) ?? this.options().title;
13849
+ }
13850
+ return this.title();
13851
+ }, ...(ngDevMode ? [{ debugName: "resolvedTitle" }] : /* istanbul ignore next */ []));
13852
+ resolvedDescription = computed(() => {
13853
+ const descriptionKey = this.options().descriptionKey;
13854
+ if (descriptionKey) {
13855
+ return (this.translateService?.translate(descriptionKey) ??
13856
+ this.options().description);
13857
+ }
13858
+ return this.description();
13859
+ }, ...(ngDevMode ? [{ debugName: "resolvedDescription" }] : /* istanbul ignore next */ []));
13808
13860
  actions = computed(() => {
13809
13861
  const variant = this.variant();
13862
+ const shape = this.actionsShape();
13863
+ const density = this.actionsDensity();
13864
+ const radius = this.actionsRadius();
13810
13865
  return (this.options().actions ?? []).map((action) => {
13811
13866
  const appearance = action.appearance ?? 'solid';
13812
13867
  const hasExplicitColor = action.color !== undefined;
@@ -13815,11 +13870,17 @@ class SolarisDialogComponent {
13815
13870
  : appearance === 'solid'
13816
13871
  ? variant
13817
13872
  : undefined;
13818
- return { ...action, color };
13873
+ return {
13874
+ ...action,
13875
+ color,
13876
+ shape: action.shape ?? shape,
13877
+ density: action.density ?? density,
13878
+ radius: action.radius ?? radius,
13879
+ };
13819
13880
  });
13820
13881
  }, ...(ngDevMode ? [{ debugName: "actions" }] : /* istanbul ignore next */ []));
13821
13882
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SolarisDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13822
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: SolarisDialogComponent, isStandalone: true, selector: "solaris-dialog", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "attr.role": "null" }, classAttribute: "solaris-dialog" }, ngImport: i0, template: "<solaris-dialog-header\n [icon]=\"icon()\"\n [iconDecorative]=\"iconDecorative()\"\n [title]=\"title()\"\n [description]=\"description()\"\n [closeable]=\"closeable()\"\n [closeLabel]=\"closeLabel()\"\n [size]=\"size()\"\n [variant]=\"variant()\"\n/>\n\n@if (description() && !hasActions()) {\n <solaris-dialog-content>\n <p class=\"solaris-dialog__description-text\">{{ description() }}</p>\n </solaris-dialog-content>\n}\n\n@if (hasActions()) {\n <div class=\"solaris-dialog__body\"></div>\n <solaris-dialog-actions\n [actions]=\"actions()\"\n [align]=\"actionsAlign()\"\n [stack]=\"actionsStack()\"\n />\n}\n", styles: [":host{display:flex;flex-direction:column;height:100%;max-height:100%}.solaris-dialog__description-text{margin:0;font:var(--solaris-font-weight-regular) var(--solaris-font-size-sm)/var(--solaris-line-height-md) var(--solaris-font-family-sans);color:var(--solaris-text-muted)}.solaris-dialog__body{flex:1;min-height:0;overflow-y:auto}\n"], dependencies: [{ kind: "component", type: SolarisDialogHeaderComponent, selector: "solaris-dialog-header", inputs: ["icon", "title", "description", "closeable", "closeLabel", "closeLabelKey", "iconDecorative", "size", "variant"] }, { kind: "component", type: SolarisDialogContentComponent, selector: "solaris-dialog-content" }, { kind: "component", type: SolarisDialogActionsComponent, selector: "solaris-dialog-actions", inputs: ["actions", "align", "stack"], outputs: ["actionExecuted"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13883
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: SolarisDialogComponent, isStandalone: true, selector: "solaris-dialog", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "attr.role": "null" }, classAttribute: "solaris-dialog" }, ngImport: i0, template: "<solaris-dialog-header\n [icon]=\"icon()\"\n [title]=\"resolvedTitle()\"\n [variant]=\"variant()\"\n [description]=\"resolvedDescription()\"\n [separator]=\"headerSeparator()\"\n [iconDecorative]=\"iconDecorative()\"\n/>\n\n@if (resolvedDescription() && !hasActions()) {\n <solaris-dialog-content [density]=\"density()\">\n <p class=\"solaris-dialog__description-text\">{{ resolvedDescription() }}</p>\n </solaris-dialog-content>\n}\n\n@if (hasActions()) {\n <div class=\"solaris-dialog__body\"></div>\n <solaris-dialog-actions\n [actions]=\"actions()\"\n [align]=\"actionsAlign()\"\n [stack]=\"actionsStack()\"\n [separator]=\"footerSeparator()\"\n [density]=\"density()\"\n />\n}\n", styles: [":host{display:flex;flex-direction:column;height:100%;max-height:100%}.solaris-dialog__description-text{margin:0;font:var(--solaris-font-weight-regular) var(--solaris-font-size-sm)/var(--solaris-line-height-md) var(--solaris-font-family-sans);color:var(--solaris-text-muted)}.solaris-dialog__body{flex:1;min-height:0;overflow-y:auto}\n"], dependencies: [{ kind: "component", type: SolarisDialogHeaderComponent, selector: "solaris-dialog-header", inputs: ["icon", "title", "description", "iconDecorative", "variant", "separator"] }, { kind: "component", type: SolarisDialogContentComponent, selector: "solaris-dialog-content", inputs: ["density"] }, { kind: "component", type: SolarisDialogActionsComponent, selector: "solaris-dialog-actions", inputs: ["actions", "align", "stack", "separator", "density"], outputs: ["actionExecuted"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13823
13884
  }
13824
13885
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SolarisDialogComponent, decorators: [{
13825
13886
  type: Component,
@@ -13830,26 +13891,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImpo
13830
13891
  ], changeDetection: ChangeDetectionStrategy.OnPush, host: {
13831
13892
  class: 'solaris-dialog',
13832
13893
  '[attr.role]': 'null',
13833
- }, template: "<solaris-dialog-header\n [icon]=\"icon()\"\n [iconDecorative]=\"iconDecorative()\"\n [title]=\"title()\"\n [description]=\"description()\"\n [closeable]=\"closeable()\"\n [closeLabel]=\"closeLabel()\"\n [size]=\"size()\"\n [variant]=\"variant()\"\n/>\n\n@if (description() && !hasActions()) {\n <solaris-dialog-content>\n <p class=\"solaris-dialog__description-text\">{{ description() }}</p>\n </solaris-dialog-content>\n}\n\n@if (hasActions()) {\n <div class=\"solaris-dialog__body\"></div>\n <solaris-dialog-actions\n [actions]=\"actions()\"\n [align]=\"actionsAlign()\"\n [stack]=\"actionsStack()\"\n />\n}\n", styles: [":host{display:flex;flex-direction:column;height:100%;max-height:100%}.solaris-dialog__description-text{margin:0;font:var(--solaris-font-weight-regular) var(--solaris-font-size-sm)/var(--solaris-line-height-md) var(--solaris-font-family-sans);color:var(--solaris-text-muted)}.solaris-dialog__body{flex:1;min-height:0;overflow-y:auto}\n"] }]
13894
+ }, template: "<solaris-dialog-header\n [icon]=\"icon()\"\n [title]=\"resolvedTitle()\"\n [variant]=\"variant()\"\n [description]=\"resolvedDescription()\"\n [separator]=\"headerSeparator()\"\n [iconDecorative]=\"iconDecorative()\"\n/>\n\n@if (resolvedDescription() && !hasActions()) {\n <solaris-dialog-content [density]=\"density()\">\n <p class=\"solaris-dialog__description-text\">{{ resolvedDescription() }}</p>\n </solaris-dialog-content>\n}\n\n@if (hasActions()) {\n <div class=\"solaris-dialog__body\"></div>\n <solaris-dialog-actions\n [actions]=\"actions()\"\n [align]=\"actionsAlign()\"\n [stack]=\"actionsStack()\"\n [separator]=\"footerSeparator()\"\n [density]=\"density()\"\n />\n}\n", styles: [":host{display:flex;flex-direction:column;height:100%;max-height:100%}.solaris-dialog__description-text{margin:0;font:var(--solaris-font-weight-regular) var(--solaris-font-size-sm)/var(--solaris-line-height-md) var(--solaris-font-family-sans);color:var(--solaris-text-muted)}.solaris-dialog__body{flex:1;min-height:0;overflow-y:auto}\n"] }]
13834
13895
  }], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: true }] }] } });
13835
13896
 
13897
+ // SECURITY_EXCEPTION_FILE: ElementRef.nativeElement is the standard Angular API to read the panel element for focus management (panel.focus() and [data-autofocus] lookup). No alternative exists.
13836
13898
  class SolarisDialogContainerComponent {
13837
13899
  dialogRef = inject(SOLARIS_DIALOG_REF);
13838
13900
  injector = inject(Injector);
13901
+ themeService = inject(SolarisThemeService, {
13902
+ optional: true,
13903
+ });
13904
+ translateService = inject(SolarisTranslateService, {
13905
+ optional: true,
13906
+ });
13839
13907
  externalComponent = input(null, ...(ngDevMode ? [{ debugName: "externalComponent" }] : /* istanbul ignore next */ []));
13840
13908
  simpleOptions = input(null, ...(ngDevMode ? [{ debugName: "simpleOptions" }] : /* istanbul ignore next */ []));
13841
13909
  externalComponentConfig = input(null, ...(ngDevMode ? [{ debugName: "externalComponentConfig" }] : /* istanbul ignore next */ []));
13842
13910
  _componentHost = viewChild('componentHost', { ...(ngDevMode ? { debugName: "_componentHost" } : /* istanbul ignore next */ {}), read: ViewContainerRef });
13911
+ _dialogPanel = viewChild('dialogPanel', ...(ngDevMode ? [{ debugName: "_dialogPanel" }] : /* istanbul ignore next */ []));
13912
+ _focusTrap = viewChild(CdkTrapFocus, ...(ngDevMode ? [{ debugName: "_focusTrap" }] : /* istanbul ignore next */ []));
13843
13913
  componentRef = null;
13844
13914
  get hostAppearance() {
13845
13915
  if (this.simpleOptions())
13846
- return this.simpleOptions()?.appearance ?? 'surface';
13847
- return this.externalComponentConfig()?.appearance ?? 'surface';
13916
+ return this.simpleOptions()?.appearance ?? 'outline';
13917
+ return this.externalComponentConfig()?.appearance ?? 'outline';
13848
13918
  }
13849
- get hostSize() {
13850
- if (this.simpleOptions())
13851
- return this.simpleOptions()?.size ?? 'md';
13852
- return this.externalComponentConfig()?.size ?? 'md';
13919
+ get hostFullscreen() {
13920
+ const fullscreen = this.simpleOptions()
13921
+ ? (this.simpleOptions()?.fullscreen ?? false)
13922
+ : (this.externalComponentConfig()?.fullscreen ?? false);
13923
+ return fullscreen ? '' : null;
13853
13924
  }
13854
13925
  get hostVariant() {
13855
13926
  if (this.simpleOptions())
@@ -13866,22 +13937,79 @@ class SolarisDialogContainerComponent {
13866
13937
  return this.simpleOptions()?.backdrop ?? true;
13867
13938
  return this.externalComponentConfig()?.backdrop ?? true;
13868
13939
  }
13940
+ get hostRadius() {
13941
+ if (this.simpleOptions())
13942
+ return this.simpleOptions()?.radius ?? 'lg';
13943
+ return this.externalComponentConfig()?.radius ?? 'lg';
13944
+ }
13945
+ get hostDensity() {
13946
+ if (this.simpleOptions())
13947
+ return (this.simpleOptions()?.density ?? this.themeService?.density ?? 'normal');
13948
+ return (this.externalComponentConfig()?.density ??
13949
+ this.themeService?.density ??
13950
+ 'normal');
13951
+ }
13952
+ get hostHeaderSeparator() {
13953
+ const separator = this.simpleOptions()
13954
+ ? (this.simpleOptions()?.headerSeparator ?? true)
13955
+ : (this.externalComponentConfig()?.headerSeparator ?? true);
13956
+ return separator ? '' : null;
13957
+ }
13958
+ get hostFooterSeparator() {
13959
+ const separator = this.simpleOptions()
13960
+ ? (this.simpleOptions()?.footerSeparator ?? true)
13961
+ : (this.externalComponentConfig()?.footerSeparator ?? true);
13962
+ return separator ? '' : null;
13963
+ }
13869
13964
  get closeable() {
13870
13965
  if (this.simpleOptions())
13871
13966
  return this.simpleOptions()?.closeable ?? true;
13872
13967
  return this.externalComponentConfig()?.closeable ?? true;
13873
13968
  }
13874
- get closeLabel() {
13875
- if (this.simpleOptions()) {
13876
- return this.simpleOptions()?.closeLabel ?? 'Close';
13969
+ get panelAriaLabel() {
13970
+ const options = this.simpleOptions();
13971
+ if (!options)
13972
+ return null;
13973
+ if (options.ariaLabelKey) {
13974
+ return (this.translateService?.translate(options.ariaLabelKey) ??
13975
+ options.ariaLabel ??
13976
+ null);
13877
13977
  }
13878
- return this.externalComponentConfig()?.closeLabel ?? 'Close';
13978
+ return options.ariaLabel ?? null;
13879
13979
  }
13880
- get closeLabelKey() {
13881
- if (this.simpleOptions()) {
13882
- return this.simpleOptions()?.closeLabelKey;
13980
+ get panelAriaLabelledBy() {
13981
+ const options = this.simpleOptions();
13982
+ if (!options)
13983
+ return null;
13984
+ if (options.ariaLabelledBy)
13985
+ return options.ariaLabelledBy;
13986
+ if (options.ariaLabel ?? options.ariaLabelKey)
13987
+ return null;
13988
+ if (!options.title && !options.titleKey)
13989
+ return null;
13990
+ return `${this.dialogRef.id}-title`;
13991
+ }
13992
+ get panelAriaDescribedBy() {
13993
+ const options = this.simpleOptions();
13994
+ if (!options)
13995
+ return null;
13996
+ if (options.ariaDescribedBy)
13997
+ return options.ariaDescribedBy;
13998
+ if (!options.description && !options.descriptionKey)
13999
+ return null;
14000
+ return `${this.dialogRef.id}-description`;
14001
+ }
14002
+ get resolvedCloseLabel() {
14003
+ const closeLabelKey = this.simpleOptions()
14004
+ ? this.simpleOptions()?.closeLabelKey
14005
+ : this.externalComponentConfig()?.closeLabelKey;
14006
+ const closeLabel = this.simpleOptions()
14007
+ ? (this.simpleOptions()?.closeLabel ?? 'Close')
14008
+ : (this.externalComponentConfig()?.closeLabel ?? 'Close');
14009
+ if (closeLabelKey) {
14010
+ return (this.translateService?.translate(closeLabelKey) ?? closeLabel ?? 'Close');
13883
14011
  }
13884
- return this.externalComponentConfig()?.closeLabelKey;
14012
+ return closeLabel;
13885
14013
  }
13886
14014
  get panelWidth() {
13887
14015
  if (this.simpleOptions())
@@ -13933,6 +14061,11 @@ class SolarisDialogContainerComponent {
13933
14061
  return this.simpleOptions()?.role ?? 'dialog';
13934
14062
  return this.externalComponentConfig()?.role ?? 'dialog';
13935
14063
  }
14064
+ get resolvedAutoFocus() {
14065
+ if (this.simpleOptions())
14066
+ return this.simpleOptions()?.autoFocus ?? 'first-tabbable';
14067
+ return this.externalComponentConfig()?.autoFocus ?? 'first-tabbable';
14068
+ }
13936
14069
  constructor() {
13937
14070
  effect(() => {
13938
14071
  const comp = this.externalComponent();
@@ -13963,6 +14096,27 @@ class SolarisDialogContainerComponent {
13963
14096
  });
13964
14097
  this.dialogRef.componentInstance = this.componentRef.instance;
13965
14098
  }
14099
+ ngAfterViewInit() {
14100
+ const autoFocus = this.resolvedAutoFocus;
14101
+ if (autoFocus === false)
14102
+ return;
14103
+ const panel = this._dialogPanel()?.nativeElement;
14104
+ if (!panel)
14105
+ return;
14106
+ const autofocusTarget = panel.querySelector('[data-autofocus]');
14107
+ if (autofocusTarget) {
14108
+ autofocusTarget.focus();
14109
+ return;
14110
+ }
14111
+ if (autoFocus === 'panel') {
14112
+ panel.focus();
14113
+ return;
14114
+ }
14115
+ this._focusTrap()?.focusTrap?.focusInitialElement();
14116
+ }
14117
+ closeDialog() {
14118
+ this.dialogRef.close();
14119
+ }
13966
14120
  onEscapePress() {
13967
14121
  if (this.closeOnEscapeEnabled) {
13968
14122
  this.dialogRef.close();
@@ -13976,21 +14130,25 @@ class SolarisDialogContainerComponent {
13976
14130
  }
13977
14131
  }
13978
14132
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SolarisDialogContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13979
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: SolarisDialogContainerComponent, isStandalone: true, selector: "solaris-dialog-container", inputs: { externalComponent: { classPropertyName: "externalComponent", publicName: "externalComponent", isSignal: true, isRequired: false, transformFunction: null }, simpleOptions: { classPropertyName: "simpleOptions", publicName: "simpleOptions", isSignal: true, isRequired: false, transformFunction: null }, externalComponentConfig: { classPropertyName: "externalComponentConfig", publicName: "externalComponentConfig", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:keydown.escape": "onEscapePress()" }, properties: { "attr.data-size": "hostSize", "attr.data-variant": "hostVariant", "attr.data-appearance": "hostAppearance", "attr.data-placement": "hostPlacement", "attr.data-backdrop": "hasBackdrop" }, classAttribute: "solaris-dialog-container" }, viewQueries: [{ propertyName: "_componentHost", first: true, predicate: ["componentHost"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: "<div\n class=\"solaris-dialog-backdrop\"\n tabindex=\"-1\"\n (click)=\"onBackdropClick($event)\"\n (keydown.escape)=\"onBackdropClick($event)\"\n>\n <div\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n [attr.aria-modal]=\"hasBackdrop ? 'true' : 'false'\"\n [attr.role]=\"dialogRole\"\n [style.width]=\"panelWidth\"\n class=\"solaris-dialog-panel\"\n [style.height]=\"panelHeight\"\n [style.min-width]=\"panelMinWidth\"\n [style.max-width]=\"panelMaxWidth\"\n [style.min-height]=\"panelMinHeight\"\n [style.max-height]=\"panelMaxHeight\"\n >\n @if (isSimpleMode) {\n <solaris-dialog [options]=\"simpleOptions()!\" />\n } @else {\n @if (closeable) {\n <solaris-dialog-header\n [closeable]=\"true\"\n [closeLabel]=\"closeLabel\"\n [closeLabelKey]=\"closeLabelKey\"\n />\n }\n <ng-template #componentHost></ng-template>\n }\n </div>\n</div>\n", styles: [":host{--solaris-dialog-panel-padding: 0;--solaris-dialog-panel-min-width: 448px;--solaris-dialog-backdrop-bg: var(--solaris-backdrop);--solaris-dialog-z-index: var(--solaris-z-index-modal);--solaris-dialog-panel-shadow: var(--solaris-shadow-lg);--solaris-dialog-panel-radius: var(--solaris-radius-lg);--solaris-dialog-panel-border: var(--solaris-border-default);--solaris-dialog-panel-bg: var( --solaris-surface-raised, var(--solaris-surface-base) );--solaris-dialog-panel-max-height: calc(100dvh - var(--solaris-spacing-8));--solaris-dialog-panel-max-width: calc(100vw - var(--solaris-spacing-8));inset:0;display:flex;overflow:hidden;position:fixed;align-items:center;justify-content:center;z-index:var(--solaris-dialog-z-index)}:host([data-placement=bottom]){align-items:flex-end}:host([data-backdrop=false]){--solaris-dialog-backdrop-bg: transparent;pointer-events:none}.solaris-dialog-backdrop{inset:0;display:flex;position:fixed;align-items:center;justify-content:center;background:var(--solaris-dialog-backdrop-bg)}:host([data-placement=bottom]) .solaris-dialog-backdrop{align-items:flex-end;padding-bottom:var(--solaris-spacing-4)}:host([data-backdrop=false]) .solaris-dialog-backdrop{pointer-events:none}:host([data-backdrop=false]) .solaris-dialog-panel{pointer-events:auto}.solaris-dialog-panel{display:flex;overflow:hidden;position:relative;flex-direction:column;box-sizing:border-box;background:var(--solaris-dialog-panel-bg);animation:solaris-dialog-enter .2s var(--solaris-motion-easing-decelerate);box-shadow:var(--solaris-dialog-panel-shadow);max-width:var(--solaris-dialog-panel-max-width);min-width:var(--solaris-dialog-panel-min-width);border-radius:var(--solaris-dialog-panel-radius);max-height:var(--solaris-dialog-panel-max-height)}:host([data-appearance=outline]) .solaris-dialog-panel{border:var(--solaris-border-width-sm) solid var(--solaris-dialog-panel-border)}:host([data-size=sm]) .solaris-dialog-panel{width:896px}:host([data-size=md]) .solaris-dialog-panel{width:1152px}:host([data-size=lg]) .solaris-dialog-panel{width:1536px}:host([data-size=xl]) .solaris-dialog-panel{width:2048px}:host([data-size=fullscreen]) .solaris-dialog-panel{width:100vw;height:100dvh;max-width:100vw;border-radius:0;max-height:100dvh}@keyframes solaris-dialog-enter{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@media(prefers-reduced-motion:reduce){.solaris-dialog-panel{animation:none}}:host-context([data-reduced-motion=true]) .solaris-dialog-panel{animation:none}\n"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: SolarisDialogComponent, selector: "solaris-dialog", inputs: ["options"] }, { kind: "component", type: SolarisDialogHeaderComponent, selector: "solaris-dialog-header", inputs: ["icon", "title", "description", "closeable", "closeLabel", "closeLabelKey", "iconDecorative", "size", "variant"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14133
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: SolarisDialogContainerComponent, isStandalone: true, selector: "solaris-dialog-container", inputs: { externalComponent: { classPropertyName: "externalComponent", publicName: "externalComponent", isSignal: true, isRequired: false, transformFunction: null }, simpleOptions: { classPropertyName: "simpleOptions", publicName: "simpleOptions", isSignal: true, isRequired: false, transformFunction: null }, externalComponentConfig: { classPropertyName: "externalComponentConfig", publicName: "externalComponentConfig", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:keydown.escape": "onEscapePress()" }, properties: { "attr.data-fullscreen": "hostFullscreen", "attr.data-radius": "hostRadius", "attr.data-variant": "hostVariant", "attr.data-density": "hostDensity", "attr.data-backdrop": "hasBackdrop", "attr.data-appearance": "hostAppearance", "attr.data-placement": "hostPlacement", "attr.data-header-separator": "hostHeaderSeparator", "attr.data-footer-separator": "hostFooterSeparator" }, classAttribute: "solaris-dialog-container" }, viewQueries: [{ propertyName: "_componentHost", first: true, predicate: ["componentHost"], descendants: true, read: ViewContainerRef, isSignal: true }, { propertyName: "_dialogPanel", first: true, predicate: ["dialogPanel"], descendants: true, isSignal: true }, { propertyName: "_focusTrap", first: true, predicate: CdkTrapFocus, descendants: true, isSignal: true }], ngImport: i0, template: "<div\n class=\"solaris-dialog-backdrop\"\n tabindex=\"-1\"\n (click)=\"onBackdropClick($event)\"\n (keydown.escape)=\"onBackdropClick($event)\"\n>\n <div\n #dialogPanel\n tabindex=\"-1\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"false\"\n [attr.role]=\"dialogRole\"\n [attr.aria-label]=\"panelAriaLabel\"\n [attr.aria-labelledby]=\"panelAriaLabelledBy\"\n [attr.aria-describedby]=\"panelAriaDescribedBy\"\n [style.width]=\"panelWidth\"\n class=\"solaris-dialog-panel\"\n [style.height]=\"panelHeight\"\n [style.min-width]=\"panelMinWidth\"\n [style.max-width]=\"panelMaxWidth\"\n [style.min-height]=\"panelMinHeight\"\n [style.max-height]=\"panelMaxHeight\"\n [attr.aria-modal]=\"hasBackdrop ? 'true' : 'false'\"\n >\n @if (isSimpleMode) {\n <solaris-dialog [options]=\"simpleOptions()!\" />\n } @else {\n <ng-template #componentHost></ng-template>\n }\n @if (closeable) {\n <button\n type=\"button\"\n data-dialog-close\n (click)=\"closeDialog()\"\n [attr.aria-label]=\"resolvedCloseLabel\"\n class=\"solaris-dialog-container__close\"\n >\n <solaris-icon name=\"x\" [decorative]=\"true\" />\n </button>\n }\n </div>\n</div>\n", styles: [":host{--solaris-dialog-panel-padding: 0;--solaris-dialog-panel-min-width: 448px;--solaris-dialog-backdrop-bg: var(--solaris-backdrop);--solaris-dialog-panel-bg: var(--solaris-surface-base);--solaris-dialog-z-index: var(--solaris-z-index-modal);--solaris-dialog-panel-shadow: var(--solaris-shadow-lg);--solaris-dialog-panel-radius: var(--solaris-radius-lg);--solaris-dialog-panel-border: var(--solaris-border-default);--solaris-dialog-panel-max-width: calc(100vw - var(--solaris-spacing-8));--solaris-dialog-panel-max-height: calc(100dvh - var(--solaris-spacing-8));inset:0;display:flex;position:fixed;overflow:hidden;align-items:center;justify-content:center;z-index:var(--solaris-dialog-z-index)}:host([data-placement=top]){align-items:flex-start}:host([data-placement=bottom]){align-items:flex-end}:host([data-placement=left]){justify-content:flex-start}:host([data-placement=right]){justify-content:flex-end}:host([data-placement=top-left]){align-items:flex-start;justify-content:flex-start}:host([data-placement=top-right]){align-items:flex-start;justify-content:flex-end}:host([data-placement=bottom-left]){align-items:flex-end;justify-content:flex-start}:host([data-placement=bottom-right]){align-items:flex-end;justify-content:flex-end}:host([data-radius=none]){--solaris-dialog-panel-radius: var(--solaris-radius-none)}:host([data-radius=sm]){--solaris-dialog-panel-radius: var(--solaris-radius-sm)}:host([data-radius=md]){--solaris-dialog-panel-radius: var(--solaris-radius-md)}:host([data-radius=lg]){--solaris-dialog-panel-radius: var(--solaris-radius-lg)}:host([data-radius=full]){--solaris-dialog-panel-radius: var(--solaris-radius-full)}:host([data-backdrop=false]){--solaris-dialog-backdrop-bg: transparent;pointer-events:none}.solaris-dialog-backdrop{inset:0;display:flex;position:fixed;align-items:center;justify-content:center;background:var(--solaris-dialog-backdrop-bg)}:host([data-placement=top]) .solaris-dialog-backdrop{align-items:flex-start;padding-top:var(--solaris-spacing-4)}:host([data-placement=bottom]) .solaris-dialog-backdrop{align-items:flex-end;padding-bottom:var(--solaris-spacing-4)}:host([data-placement=left]) .solaris-dialog-backdrop{justify-content:flex-start;padding-left:var(--solaris-spacing-4)}:host([data-placement=right]) .solaris-dialog-backdrop{justify-content:flex-end;padding-right:var(--solaris-spacing-4)}:host([data-placement=top-left]) .solaris-dialog-backdrop{align-items:flex-start;justify-content:flex-start;padding-top:var(--solaris-spacing-4);padding-left:var(--solaris-spacing-4)}:host([data-placement=top-right]) .solaris-dialog-backdrop{align-items:flex-start;justify-content:flex-end;padding-top:var(--solaris-spacing-4);padding-right:var(--solaris-spacing-4)}:host([data-placement=bottom-left]) .solaris-dialog-backdrop{align-items:flex-end;justify-content:flex-start;padding-left:var(--solaris-spacing-4);padding-bottom:var(--solaris-spacing-4)}:host([data-placement=bottom-right]) .solaris-dialog-backdrop{align-items:flex-end;justify-content:flex-end;padding-right:var(--solaris-spacing-4);padding-bottom:var(--solaris-spacing-4)}:host([data-backdrop=false]) .solaris-dialog-backdrop{pointer-events:none}:host([data-backdrop=false]) .solaris-dialog-panel{pointer-events:auto}.solaris-dialog-panel{display:flex;overflow:hidden;position:relative;flex-direction:column;box-sizing:border-box;background:var(--solaris-dialog-panel-bg);box-shadow:var(--solaris-dialog-panel-shadow);max-width:var(--solaris-dialog-panel-max-width);min-width:var(--solaris-dialog-panel-min-width);border-radius:var(--solaris-dialog-panel-radius);max-height:var(--solaris-dialog-panel-max-height);animation:solaris-dialog-enter var(--solaris-motion-duration-normal) var(--solaris-motion-easing-decelerate)}.solaris-dialog-container__close{border:none;display:flex;cursor:pointer;background:none;aspect-ratio:1/1;position:absolute;align-items:center;top:var(--solaris-spacing-3);right:var(--solaris-spacing-3);width:var(--solaris-spacing-4);height:var(--solaris-spacing-4);color:var(--solaris-text-muted);font-size:var(--solaris-font-size-lg);transition:color var(--solaris-motion-duration-normal) var(--solaris-motion-easing-decelerate)}.solaris-dialog-container__close:hover{color:var(--solaris-text-strong)}:host([data-appearance=outline]) .solaris-dialog-panel{border:var(--solaris-border-width-sm) solid var(--solaris-dialog-panel-border)}:host([data-fullscreen]) .solaris-dialog-panel{width:100vw;height:100dvh;max-width:100vw;border-radius:0;max-height:100dvh}@keyframes solaris-dialog-enter{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@media(prefers-reduced-motion:reduce){.solaris-dialog-panel{animation:none}}:host-context([data-reduced-motion=true]) .solaris-dialog-panel{animation:none}\n"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: SolarisDialogComponent, selector: "solaris-dialog", inputs: ["options"] }, { kind: "component", type: SolarisIconComponent, selector: "solaris-icon", inputs: ["name", "ariaLabel", "decorative", "inheritColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13980
14134
  }
13981
14135
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SolarisDialogContainerComponent, decorators: [{
13982
14136
  type: Component,
13983
- args: [{ selector: 'solaris-dialog-container', standalone: true, imports: [CdkTrapFocus, SolarisDialogComponent, SolarisDialogHeaderComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
13984
- '[attr.data-size]': 'hostSize',
14137
+ args: [{ selector: 'solaris-dialog-container', standalone: true, imports: [CdkTrapFocus, SolarisDialogComponent, SolarisIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
14138
+ '[attr.data-fullscreen]': 'hostFullscreen',
13985
14139
  class: 'solaris-dialog-container',
14140
+ '[attr.data-radius]': 'hostRadius',
13986
14141
  '[attr.data-variant]': 'hostVariant',
14142
+ '[attr.data-density]': 'hostDensity',
14143
+ '[attr.data-backdrop]': 'hasBackdrop',
13987
14144
  '[attr.data-appearance]': 'hostAppearance',
13988
14145
  '[attr.data-placement]': 'hostPlacement',
13989
- '[attr.data-backdrop]': 'hasBackdrop',
13990
- }, template: "<div\n class=\"solaris-dialog-backdrop\"\n tabindex=\"-1\"\n (click)=\"onBackdropClick($event)\"\n (keydown.escape)=\"onBackdropClick($event)\"\n>\n <div\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n [attr.aria-modal]=\"hasBackdrop ? 'true' : 'false'\"\n [attr.role]=\"dialogRole\"\n [style.width]=\"panelWidth\"\n class=\"solaris-dialog-panel\"\n [style.height]=\"panelHeight\"\n [style.min-width]=\"panelMinWidth\"\n [style.max-width]=\"panelMaxWidth\"\n [style.min-height]=\"panelMinHeight\"\n [style.max-height]=\"panelMaxHeight\"\n >\n @if (isSimpleMode) {\n <solaris-dialog [options]=\"simpleOptions()!\" />\n } @else {\n @if (closeable) {\n <solaris-dialog-header\n [closeable]=\"true\"\n [closeLabel]=\"closeLabel\"\n [closeLabelKey]=\"closeLabelKey\"\n />\n }\n <ng-template #componentHost></ng-template>\n }\n </div>\n</div>\n", styles: [":host{--solaris-dialog-panel-padding: 0;--solaris-dialog-panel-min-width: 448px;--solaris-dialog-backdrop-bg: var(--solaris-backdrop);--solaris-dialog-z-index: var(--solaris-z-index-modal);--solaris-dialog-panel-shadow: var(--solaris-shadow-lg);--solaris-dialog-panel-radius: var(--solaris-radius-lg);--solaris-dialog-panel-border: var(--solaris-border-default);--solaris-dialog-panel-bg: var( --solaris-surface-raised, var(--solaris-surface-base) );--solaris-dialog-panel-max-height: calc(100dvh - var(--solaris-spacing-8));--solaris-dialog-panel-max-width: calc(100vw - var(--solaris-spacing-8));inset:0;display:flex;overflow:hidden;position:fixed;align-items:center;justify-content:center;z-index:var(--solaris-dialog-z-index)}:host([data-placement=bottom]){align-items:flex-end}:host([data-backdrop=false]){--solaris-dialog-backdrop-bg: transparent;pointer-events:none}.solaris-dialog-backdrop{inset:0;display:flex;position:fixed;align-items:center;justify-content:center;background:var(--solaris-dialog-backdrop-bg)}:host([data-placement=bottom]) .solaris-dialog-backdrop{align-items:flex-end;padding-bottom:var(--solaris-spacing-4)}:host([data-backdrop=false]) .solaris-dialog-backdrop{pointer-events:none}:host([data-backdrop=false]) .solaris-dialog-panel{pointer-events:auto}.solaris-dialog-panel{display:flex;overflow:hidden;position:relative;flex-direction:column;box-sizing:border-box;background:var(--solaris-dialog-panel-bg);animation:solaris-dialog-enter .2s var(--solaris-motion-easing-decelerate);box-shadow:var(--solaris-dialog-panel-shadow);max-width:var(--solaris-dialog-panel-max-width);min-width:var(--solaris-dialog-panel-min-width);border-radius:var(--solaris-dialog-panel-radius);max-height:var(--solaris-dialog-panel-max-height)}:host([data-appearance=outline]) .solaris-dialog-panel{border:var(--solaris-border-width-sm) solid var(--solaris-dialog-panel-border)}:host([data-size=sm]) .solaris-dialog-panel{width:896px}:host([data-size=md]) .solaris-dialog-panel{width:1152px}:host([data-size=lg]) .solaris-dialog-panel{width:1536px}:host([data-size=xl]) .solaris-dialog-panel{width:2048px}:host([data-size=fullscreen]) .solaris-dialog-panel{width:100vw;height:100dvh;max-width:100vw;border-radius:0;max-height:100dvh}@keyframes solaris-dialog-enter{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@media(prefers-reduced-motion:reduce){.solaris-dialog-panel{animation:none}}:host-context([data-reduced-motion=true]) .solaris-dialog-panel{animation:none}\n"] }]
14146
+ '[attr.data-header-separator]': 'hostHeaderSeparator',
14147
+ '[attr.data-footer-separator]': 'hostFooterSeparator',
14148
+ }, template: "<div\n class=\"solaris-dialog-backdrop\"\n tabindex=\"-1\"\n (click)=\"onBackdropClick($event)\"\n (keydown.escape)=\"onBackdropClick($event)\"\n>\n <div\n #dialogPanel\n tabindex=\"-1\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"false\"\n [attr.role]=\"dialogRole\"\n [attr.aria-label]=\"panelAriaLabel\"\n [attr.aria-labelledby]=\"panelAriaLabelledBy\"\n [attr.aria-describedby]=\"panelAriaDescribedBy\"\n [style.width]=\"panelWidth\"\n class=\"solaris-dialog-panel\"\n [style.height]=\"panelHeight\"\n [style.min-width]=\"panelMinWidth\"\n [style.max-width]=\"panelMaxWidth\"\n [style.min-height]=\"panelMinHeight\"\n [style.max-height]=\"panelMaxHeight\"\n [attr.aria-modal]=\"hasBackdrop ? 'true' : 'false'\"\n >\n @if (isSimpleMode) {\n <solaris-dialog [options]=\"simpleOptions()!\" />\n } @else {\n <ng-template #componentHost></ng-template>\n }\n @if (closeable) {\n <button\n type=\"button\"\n data-dialog-close\n (click)=\"closeDialog()\"\n [attr.aria-label]=\"resolvedCloseLabel\"\n class=\"solaris-dialog-container__close\"\n >\n <solaris-icon name=\"x\" [decorative]=\"true\" />\n </button>\n }\n </div>\n</div>\n", styles: [":host{--solaris-dialog-panel-padding: 0;--solaris-dialog-panel-min-width: 448px;--solaris-dialog-backdrop-bg: var(--solaris-backdrop);--solaris-dialog-panel-bg: var(--solaris-surface-base);--solaris-dialog-z-index: var(--solaris-z-index-modal);--solaris-dialog-panel-shadow: var(--solaris-shadow-lg);--solaris-dialog-panel-radius: var(--solaris-radius-lg);--solaris-dialog-panel-border: var(--solaris-border-default);--solaris-dialog-panel-max-width: calc(100vw - var(--solaris-spacing-8));--solaris-dialog-panel-max-height: calc(100dvh - var(--solaris-spacing-8));inset:0;display:flex;position:fixed;overflow:hidden;align-items:center;justify-content:center;z-index:var(--solaris-dialog-z-index)}:host([data-placement=top]){align-items:flex-start}:host([data-placement=bottom]){align-items:flex-end}:host([data-placement=left]){justify-content:flex-start}:host([data-placement=right]){justify-content:flex-end}:host([data-placement=top-left]){align-items:flex-start;justify-content:flex-start}:host([data-placement=top-right]){align-items:flex-start;justify-content:flex-end}:host([data-placement=bottom-left]){align-items:flex-end;justify-content:flex-start}:host([data-placement=bottom-right]){align-items:flex-end;justify-content:flex-end}:host([data-radius=none]){--solaris-dialog-panel-radius: var(--solaris-radius-none)}:host([data-radius=sm]){--solaris-dialog-panel-radius: var(--solaris-radius-sm)}:host([data-radius=md]){--solaris-dialog-panel-radius: var(--solaris-radius-md)}:host([data-radius=lg]){--solaris-dialog-panel-radius: var(--solaris-radius-lg)}:host([data-radius=full]){--solaris-dialog-panel-radius: var(--solaris-radius-full)}:host([data-backdrop=false]){--solaris-dialog-backdrop-bg: transparent;pointer-events:none}.solaris-dialog-backdrop{inset:0;display:flex;position:fixed;align-items:center;justify-content:center;background:var(--solaris-dialog-backdrop-bg)}:host([data-placement=top]) .solaris-dialog-backdrop{align-items:flex-start;padding-top:var(--solaris-spacing-4)}:host([data-placement=bottom]) .solaris-dialog-backdrop{align-items:flex-end;padding-bottom:var(--solaris-spacing-4)}:host([data-placement=left]) .solaris-dialog-backdrop{justify-content:flex-start;padding-left:var(--solaris-spacing-4)}:host([data-placement=right]) .solaris-dialog-backdrop{justify-content:flex-end;padding-right:var(--solaris-spacing-4)}:host([data-placement=top-left]) .solaris-dialog-backdrop{align-items:flex-start;justify-content:flex-start;padding-top:var(--solaris-spacing-4);padding-left:var(--solaris-spacing-4)}:host([data-placement=top-right]) .solaris-dialog-backdrop{align-items:flex-start;justify-content:flex-end;padding-top:var(--solaris-spacing-4);padding-right:var(--solaris-spacing-4)}:host([data-placement=bottom-left]) .solaris-dialog-backdrop{align-items:flex-end;justify-content:flex-start;padding-left:var(--solaris-spacing-4);padding-bottom:var(--solaris-spacing-4)}:host([data-placement=bottom-right]) .solaris-dialog-backdrop{align-items:flex-end;justify-content:flex-end;padding-right:var(--solaris-spacing-4);padding-bottom:var(--solaris-spacing-4)}:host([data-backdrop=false]) .solaris-dialog-backdrop{pointer-events:none}:host([data-backdrop=false]) .solaris-dialog-panel{pointer-events:auto}.solaris-dialog-panel{display:flex;overflow:hidden;position:relative;flex-direction:column;box-sizing:border-box;background:var(--solaris-dialog-panel-bg);box-shadow:var(--solaris-dialog-panel-shadow);max-width:var(--solaris-dialog-panel-max-width);min-width:var(--solaris-dialog-panel-min-width);border-radius:var(--solaris-dialog-panel-radius);max-height:var(--solaris-dialog-panel-max-height);animation:solaris-dialog-enter var(--solaris-motion-duration-normal) var(--solaris-motion-easing-decelerate)}.solaris-dialog-container__close{border:none;display:flex;cursor:pointer;background:none;aspect-ratio:1/1;position:absolute;align-items:center;top:var(--solaris-spacing-3);right:var(--solaris-spacing-3);width:var(--solaris-spacing-4);height:var(--solaris-spacing-4);color:var(--solaris-text-muted);font-size:var(--solaris-font-size-lg);transition:color var(--solaris-motion-duration-normal) var(--solaris-motion-easing-decelerate)}.solaris-dialog-container__close:hover{color:var(--solaris-text-strong)}:host([data-appearance=outline]) .solaris-dialog-panel{border:var(--solaris-border-width-sm) solid var(--solaris-dialog-panel-border)}:host([data-fullscreen]) .solaris-dialog-panel{width:100vw;height:100dvh;max-width:100vw;border-radius:0;max-height:100dvh}@keyframes solaris-dialog-enter{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@media(prefers-reduced-motion:reduce){.solaris-dialog-panel{animation:none}}:host-context([data-reduced-motion=true]) .solaris-dialog-panel{animation:none}\n"] }]
13991
14149
  }], ctorParameters: () => [], propDecorators: { externalComponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "externalComponent", required: false }] }], simpleOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "simpleOptions", required: false }] }], externalComponentConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "externalComponentConfig", required: false }] }], _componentHost: [{ type: i0.ViewChild, args: ['componentHost', { ...{
13992
14150
  read: ViewContainerRef,
13993
- }, isSignal: true }] }], onEscapePress: [{
14151
+ }, isSignal: true }] }], _dialogPanel: [{ type: i0.ViewChild, args: ['dialogPanel', { isSignal: true }] }], _focusTrap: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkTrapFocus), { isSignal: true }] }], onEscapePress: [{
13994
14152
  type: HostListener,
13995
14153
  args: ['document:keydown.escape']
13996
14154
  }] } });
@@ -14019,8 +14177,8 @@ class SolarisDialogRef {
14019
14177
 
14020
14178
  const SOLARIS_DIALOG_CONFIG = new InjectionToken('SolarisDialogConfig');
14021
14179
  const SOLARIS_DIALOG_DEFAULT_CONFIG = {
14022
- appearance: 'surface',
14023
- size: 'md',
14180
+ appearance: 'outline',
14181
+ fullscreen: false,
14024
14182
  placement: 'center',
14025
14183
  closeable: true,
14026
14184
  backdrop: true,
@@ -14029,14 +14187,18 @@ const SOLARIS_DIALOG_DEFAULT_CONFIG = {
14029
14187
  autoFocus: 'first-tabbable',
14030
14188
  restoreFocus: true,
14031
14189
  role: 'dialog',
14190
+ headerSeparator: true,
14191
+ footerSeparator: true,
14032
14192
  actionsAlign: 'end',
14033
14193
  actionsStack: 'auto',
14034
14194
  };
14035
14195
 
14196
+ // SECURITY_EXCEPTION_FILE: Injected DOCUMENT token is the Angular SSR-safe abstraction for document access; used to capture activeElement on open and restore focus on close. No alternative exists.
14036
14197
  let nextDialogId = 0;
14037
14198
  class SolarisDialogService {
14038
14199
  injector = inject(Injector);
14039
14200
  overlay = inject(Overlay);
14201
+ document = inject(DOCUMENT$1);
14040
14202
  config;
14041
14203
  openDialogs = new Set();
14042
14204
  constructor() {
@@ -14057,7 +14219,10 @@ class SolarisDialogService {
14057
14219
  const portal = new ComponentPortal(SolarisDialogContainerComponent, null, injector);
14058
14220
  const componentRef = overlayRef.attach(portal);
14059
14221
  componentRef.setInput('simpleOptions', mergedOptions);
14060
- this.trackDialog(ref, overlayRef);
14222
+ this.trackDialog(ref, overlayRef, {
14223
+ restoreFocus: mergedOptions.restoreFocus ?? true,
14224
+ previouslyFocused: this.document.activeElement,
14225
+ });
14061
14226
  return ref;
14062
14227
  }
14063
14228
  openComponent(component, config) {
@@ -14070,17 +14235,52 @@ class SolarisDialogService {
14070
14235
  const componentRef = overlayRef.attach(portal);
14071
14236
  componentRef.setInput('externalComponent', component);
14072
14237
  componentRef.setInput('externalComponentConfig', config ?? {});
14073
- this.trackDialog(ref, overlayRef);
14238
+ this.trackDialog(ref, overlayRef, {
14239
+ restoreFocus: config?.restoreFocus ?? this.config.restoreFocus ?? true,
14240
+ previouslyFocused: this.document.activeElement,
14241
+ });
14074
14242
  return ref;
14075
14243
  }
14076
14244
  createOverlay(placement, backdrop = true) {
14077
14245
  const positionStrategy = this.overlay.position().global();
14078
- positionStrategy.centerHorizontally();
14079
- if (placement === 'bottom') {
14080
- positionStrategy.bottom('0');
14081
- }
14082
- else {
14083
- positionStrategy.centerVertically();
14246
+ switch (placement) {
14247
+ case 'top':
14248
+ positionStrategy.centerHorizontally();
14249
+ positionStrategy.top('24px');
14250
+ break;
14251
+ case 'bottom':
14252
+ positionStrategy.centerHorizontally();
14253
+ positionStrategy.bottom('24px');
14254
+ break;
14255
+ case 'left':
14256
+ positionStrategy.left('24px');
14257
+ positionStrategy.centerVertically();
14258
+ break;
14259
+ case 'right':
14260
+ positionStrategy.right('24px');
14261
+ positionStrategy.centerVertically();
14262
+ break;
14263
+ case 'top-left':
14264
+ positionStrategy.left('24px');
14265
+ positionStrategy.top('24px');
14266
+ break;
14267
+ case 'top-right':
14268
+ positionStrategy.right('24px');
14269
+ positionStrategy.top('24px');
14270
+ break;
14271
+ case 'bottom-left':
14272
+ positionStrategy.left('24px');
14273
+ positionStrategy.bottom('24px');
14274
+ break;
14275
+ case 'bottom-right':
14276
+ positionStrategy.right('24px');
14277
+ positionStrategy.bottom('24px');
14278
+ break;
14279
+ case 'center':
14280
+ default:
14281
+ positionStrategy.centerHorizontally();
14282
+ positionStrategy.centerVertically();
14283
+ break;
14084
14284
  }
14085
14285
  return this.overlay.create({
14086
14286
  hasBackdrop: false,
@@ -14103,20 +14303,35 @@ class SolarisDialogService {
14103
14303
  parent: this.injector,
14104
14304
  });
14105
14305
  }
14106
- trackDialog(ref, overlayRef) {
14306
+ trackDialog(ref, overlayRef, focus) {
14107
14307
  const entry = { ref, overlayRef };
14108
14308
  this.openDialogs.add(entry);
14109
14309
  ref.afterClosed().subscribe(() => {
14110
14310
  overlayRef.detach();
14111
14311
  overlayRef.dispose();
14112
14312
  this.openDialogs.delete(entry);
14313
+ this.restoreFocus(focus);
14113
14314
  });
14114
14315
  }
14316
+ restoreFocus(focus) {
14317
+ if (!focus.restoreFocus)
14318
+ return;
14319
+ const target = focus.previouslyFocused;
14320
+ if (!target || typeof target.focus !== 'function')
14321
+ return;
14322
+ if (!this.document.contains(target))
14323
+ return;
14324
+ const activeElement = this.document.activeElement;
14325
+ if (activeElement && activeElement !== this.document.body)
14326
+ return;
14327
+ target.focus();
14328
+ }
14115
14329
  resolveOptions(options) {
14116
14330
  return {
14331
+ ...options,
14117
14332
  variant: options.variant ?? 'neutral',
14118
14333
  appearance: options.appearance ?? this.config.appearance,
14119
- size: options.size ?? this.config.size,
14334
+ fullscreen: options.fullscreen ?? this.config.fullscreen ?? false,
14120
14335
  closeable: options.closeable ?? this.config.closeable ?? true,
14121
14336
  backdrop: options.backdrop ?? this.config.backdrop ?? true,
14122
14337
  closeOnEscape: options.closeOnEscape ?? this.config.closeOnEscape ?? true,
@@ -14127,9 +14342,15 @@ class SolarisDialogService {
14127
14342
  restoreFocus: options.restoreFocus ?? this.config.restoreFocus ?? true,
14128
14343
  role: options.role ?? this.config.role,
14129
14344
  placement: options.placement ?? this.config.placement ?? 'center',
14345
+ headerSeparator: options.headerSeparator ?? this.config.headerSeparator ?? true,
14346
+ footerSeparator: options.footerSeparator ?? this.config.footerSeparator ?? true,
14347
+ radius: options.radius ?? this.config.radius,
14348
+ density: options.density ?? this.config.density,
14349
+ actionsShape: options.actionsShape ?? this.config.actionsShape,
14350
+ actionsDensity: options.actionsDensity ?? this.config.actionsDensity,
14351
+ actionsRadius: options.actionsRadius ?? this.config.actionsRadius,
14130
14352
  actionsAlign: options.actionsAlign ?? this.config.actionsAlign ?? 'end',
14131
14353
  actionsStack: options.actionsStack ?? this.config.actionsStack ?? 'auto',
14132
- ...options,
14133
14354
  };
14134
14355
  }
14135
14356
  closeAll() {
@@ -16870,6 +17091,8 @@ class SolarisCollapsibleComponent {
16870
17091
  size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
16871
17092
  appearance = input('boxed', ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
16872
17093
  icon = input(...(ngDevMode ? [undefined, { debugName: "icon" }] : /* istanbul ignore next */ []));
17094
+ leadingIcon = input(undefined, ...(ngDevMode ? [{ debugName: "leadingIcon" }] : /* istanbul ignore next */ []));
17095
+ leadingIconDecorative = input(true, { ...(ngDevMode ? { debugName: "leadingIconDecorative" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
16873
17096
  baseId = computed(() => {
16874
17097
  return resolveElementId(this.elementRef, 'solaris-collapsible');
16875
17098
  }, ...(ngDevMode ? [{ debugName: "baseId" }] : /* istanbul ignore next */ []));
@@ -16939,7 +17162,7 @@ class SolarisCollapsibleComponent {
16939
17162
  this.open.set(!this.open());
16940
17163
  }
16941
17164
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SolarisCollapsibleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16942
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: SolarisCollapsibleComponent, isStandalone: true, selector: "solaris-collapsible", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelKey: { classPropertyName: "labelKey", publicName: "labelKey", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelKey: { classPropertyName: "ariaLabelKey", publicName: "ariaLabelKey", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange" }, host: { properties: { "attr.data-size": "size()", "attr.data-appearance": "effectiveAppearance()", "attr.data-open": "isOpen() ? \"\" : null", "attr.data-disabled": "isEffectivelyDisabled() ? \"\" : null" }, classAttribute: "solaris-collapsible" }, ngImport: i0, template: "@if (headingLevel()) {\n @switch (headingLevel()) {\n @case (2) {\n <h2 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h2>\n }\n @case (3) {\n <h3 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h3>\n }\n @case (4) {\n <h4 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h4>\n }\n @case (5) {\n <h5 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h5>\n }\n @case (6) {\n <h6 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h6>\n }\n @default {\n <h3 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h3>\n }\n }\n} @else {\n <div class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </div>\n}\n\n<ng-template #triggerContent>\n <button\n type=\"button\"\n class=\"solaris-collapsible__trigger\"\n [id]=\"triggerId()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"panelId()\"\n [attr.aria-label]=\"effectiveAriaLabel()\"\n [attr.aria-disabled]=\"!canToggleClosed() && isOpen() ? 'true' : null\"\n [disabled]=\"isEffectivelyDisabled()\"\n (click)=\"toggle()\"\n >\n <span class=\"solaris-collapsible__trigger-label\">\n {{ labelText() }}\n </span>\n <solaris-icon\n [name]=\"effectiveIcon()\"\n class=\"solaris-collapsible__trigger-icon\"\n [decorative]=\"true\"\n />\n </button>\n</ng-template>\n\n<div\n class=\"solaris-collapsible__panel\"\n [id]=\"panelId()\"\n role=\"region\"\n [attr.aria-labelledby]=\"triggerId()\"\n [attr.aria-hidden]=\"isOpen() ? null : 'true'\"\n [attr.inert]=\"isOpen() ? null : ''\"\n>\n <div class=\"solaris-collapsible__panel-inner\">\n <ng-content />\n </div>\n</div>\n", styles: [":host{--solaris-collapsible-radius: var(--solaris-radius-md);--solaris-collapsible-icon-size: var(--solaris-spacing-4);--solaris-collapsible-trigger-gap: var(--solaris-spacing-2);--solaris-collapsible-trigger-color: var(--solaris-text-muted);--solaris-collapsible-border-color: var(--solaris-border-subtle);--solaris-collapsible-trigger-font-size: var(--solaris-font-size-md);--solaris-collapsible-trigger-font-weight: var(--solaris-font-weight-medium);--solaris-collapsible-trigger-padding: var(--solaris-spacing-2) var(--solaris-spacing-3);--solaris-collapsible-header-inset-top: var(--solaris-spacing-3);display:block;box-sizing:border-box}.solaris-collapsible__header{margin:0}.solaris-collapsible__trigger{width:100%;border:none;display:flex;cursor:pointer;text-align:start;align-items:center;box-sizing:border-box;background:transparent;justify-content:space-between;gap:var(--solaris-collapsible-trigger-gap);color:var(--solaris-collapsible-trigger-color);padding:var(--solaris-collapsible-trigger-padding);transition:color var(--solaris-motion-duration-normal) var(--solaris-motion-easing-standard);font:var(--solaris-collapsible-trigger-font-weight) var(--solaris-collapsible-trigger-font-size)/1.2 var(--solaris-font-family-sans)}.solaris-collapsible__trigger:hover:not(:disabled){color:var(--solaris-text-default)}.solaris-collapsible__trigger:focus-visible{outline-offset:var(--solaris-focus-ring-offset);outline:var(--solaris-focus-ring-width) solid var(--solaris-focus-ring-color)}.solaris-collapsible__trigger:disabled{cursor:not-allowed;opacity:var(--solaris-opacity-50)}.solaris-collapsible__trigger-icon{flex-shrink:0;width:var(--solaris-collapsible-icon-size);height:var(--solaris-collapsible-icon-size);transition:transform var(--solaris-motion-duration-normal) var(--solaris-motion-easing-standard)}:host([data-open]) .solaris-collapsible__trigger-icon{transform:rotate(180deg)}.solaris-collapsible__panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--solaris-motion-duration-normal) var(--solaris-motion-easing-standard)}:host([data-open]) .solaris-collapsible__panel{grid-template-rows:1fr}.solaris-collapsible__panel-inner{min-height:0;overflow:hidden;color:var(--solaris-text-muted);font-size:var(--solaris-font-size-sm);padding:0 var(--solaris-spacing-5) var(--solaris-spacing-3)}:host([data-appearance=boxed]){border-radius:var(--solaris-collapsible-radius);border:var(--solaris-border-width-sm) solid var(--solaris-collapsible-border-color)}:host([data-appearance=boxed]) .solaris-collapsible__header{margin-top:var(--solaris-collapsible-header-inset-top)}:host([data-appearance=lined]) .solaris-collapsible__trigger{border-bottom:var(--solaris-border-width-sm) solid var(--solaris-collapsible-border-color)}:host([data-appearance=lined]):last-child .solaris-collapsible__trigger{border-bottom:none}@media(prefers-reduced-motion:reduce){.solaris-collapsible__trigger,.solaris-collapsible__trigger-icon,.solaris-collapsible__panel{transition:none}}:host-context([data-reduced-motion=true]) .solaris-collapsible__trigger,:host-context([data-reduced-motion=true]) .solaris-collapsible__trigger-icon,:host-context([data-reduced-motion=true]) .solaris-collapsible__panel{transition:none}\n"], dependencies: [{ kind: "component", type: SolarisIconComponent, selector: "solaris-icon", inputs: ["name", "ariaLabel", "decorative", "inheritColor"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
17165
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: SolarisCollapsibleComponent, isStandalone: true, selector: "solaris-collapsible", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelKey: { classPropertyName: "labelKey", publicName: "labelKey", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelKey: { classPropertyName: "ariaLabelKey", publicName: "ariaLabelKey", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, leadingIcon: { classPropertyName: "leadingIcon", publicName: "leadingIcon", isSignal: true, isRequired: false, transformFunction: null }, leadingIconDecorative: { classPropertyName: "leadingIconDecorative", publicName: "leadingIconDecorative", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange" }, host: { properties: { "attr.data-size": "size()", "attr.data-appearance": "effectiveAppearance()", "attr.data-open": "isOpen() ? \"\" : null", "attr.data-disabled": "isEffectivelyDisabled() ? \"\" : null" }, classAttribute: "solaris-collapsible" }, ngImport: i0, template: "@if (headingLevel()) {\n @switch (headingLevel()) {\n @case (2) {\n <h2 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h2>\n }\n @case (3) {\n <h3 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h3>\n }\n @case (4) {\n <h4 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h4>\n }\n @case (5) {\n <h5 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h5>\n }\n @case (6) {\n <h6 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h6>\n }\n @default {\n <h3 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h3>\n }\n }\n} @else {\n <div class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </div>\n}\n\n<ng-template #triggerContent>\n <button\n type=\"button\"\n class=\"solaris-collapsible__trigger\"\n [id]=\"triggerId()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"panelId()\"\n [attr.aria-label]=\"effectiveAriaLabel()\"\n [attr.aria-disabled]=\"!canToggleClosed() && isOpen() ? 'true' : null\"\n [disabled]=\"isEffectivelyDisabled()\"\n (click)=\"toggle()\"\n >\n <span class=\"solaris-collapsible__trigger-label\">\n @if (leadingIcon(); as leadingIconName) {\n <solaris-icon\n [name]=\"leadingIconName\"\n class=\"solaris-collapsible__trigger-leading-icon\"\n [decorative]=\"leadingIconDecorative()\"\n />\n }\n {{ labelText() }}\n </span>\n <solaris-icon\n [name]=\"effectiveIcon()\"\n class=\"solaris-collapsible__trigger-icon\"\n [decorative]=\"true\"\n />\n </button>\n</ng-template>\n\n<div\n class=\"solaris-collapsible__panel\"\n [id]=\"panelId()\"\n role=\"region\"\n [attr.aria-labelledby]=\"triggerId()\"\n [attr.aria-hidden]=\"isOpen() ? null : 'true'\"\n [attr.inert]=\"isOpen() ? null : ''\"\n>\n <div class=\"solaris-collapsible__panel-inner\">\n <ng-content />\n </div>\n</div>\n", styles: [":host{--solaris-collapsible-radius: var(--solaris-radius-md);--solaris-collapsible-icon-size: var(--solaris-spacing-4);--solaris-collapsible-trigger-gap: var(--solaris-spacing-2);--solaris-collapsible-trigger-color: var(--solaris-text-muted);--solaris-collapsible-border-color: var(--solaris-border-subtle);--solaris-collapsible-trigger-font-size: var(--solaris-font-size-md);--solaris-collapsible-trigger-font-weight: var(--solaris-font-weight-medium);--solaris-collapsible-trigger-padding: var(--solaris-spacing-2) var(--solaris-spacing-3);--solaris-collapsible-header-inset-top: var(--solaris-spacing-3);display:block;box-sizing:border-box}.solaris-collapsible__header{margin:0}.solaris-collapsible__trigger{width:100%;border:none;display:flex;cursor:pointer;text-align:start;align-items:center;box-sizing:border-box;background:transparent;justify-content:space-between;gap:var(--solaris-collapsible-trigger-gap);color:var(--solaris-collapsible-trigger-color);padding:var(--solaris-collapsible-trigger-padding);transition:color var(--solaris-motion-duration-normal) var(--solaris-motion-easing-standard);font:var(--solaris-collapsible-trigger-font-weight) var(--solaris-collapsible-trigger-font-size)/1.2 var(--solaris-font-family-sans)}.solaris-collapsible__trigger:hover:not(:disabled){color:var(--solaris-text-default)}.solaris-collapsible__trigger:focus-visible{outline-offset:var(--solaris-focus-ring-offset);outline:var(--solaris-focus-ring-width) solid var(--solaris-focus-ring-color)}.solaris-collapsible__trigger:disabled{cursor:not-allowed;opacity:var(--solaris-opacity-50)}.solaris-collapsible__trigger-label{flex:1;min-width:0;display:inline-flex;align-items:center;gap:var(--solaris-collapsible-trigger-gap)}.solaris-collapsible__trigger-leading-icon{flex-shrink:0;width:var(--solaris-collapsible-icon-size);height:var(--solaris-collapsible-icon-size)}.solaris-collapsible__trigger-icon{flex-shrink:0;width:var(--solaris-collapsible-icon-size);height:var(--solaris-collapsible-icon-size);transition:transform var(--solaris-motion-duration-normal) var(--solaris-motion-easing-standard)}:host([data-open]) .solaris-collapsible__trigger-icon{transform:rotate(180deg)}.solaris-collapsible__panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--solaris-motion-duration-normal) var(--solaris-motion-easing-standard)}:host([data-open]) .solaris-collapsible__panel{grid-template-rows:1fr}.solaris-collapsible__panel-inner{min-height:0;overflow:hidden;color:var(--solaris-text-muted);font-size:var(--solaris-font-size-sm);padding:0 var(--solaris-spacing-5) var(--solaris-spacing-3)}:host([data-appearance=boxed]){border-radius:var(--solaris-collapsible-radius);border:var(--solaris-border-width-sm) solid var(--solaris-collapsible-border-color)}:host([data-appearance=boxed]) .solaris-collapsible__header{margin-top:var(--solaris-collapsible-header-inset-top)}:host([data-appearance=lined]) .solaris-collapsible__trigger{border-bottom:var(--solaris-border-width-sm) solid var(--solaris-collapsible-border-color)}:host([data-appearance=lined]):last-child .solaris-collapsible__trigger{border-bottom:none}@media(prefers-reduced-motion:reduce){.solaris-collapsible__trigger,.solaris-collapsible__trigger-icon,.solaris-collapsible__panel{transition:none}}:host-context([data-reduced-motion=true]) .solaris-collapsible__trigger,:host-context([data-reduced-motion=true]) .solaris-collapsible__trigger-icon,:host-context([data-reduced-motion=true]) .solaris-collapsible__panel{transition:none}\n"], dependencies: [{ kind: "component", type: SolarisIconComponent, selector: "solaris-icon", inputs: ["name", "ariaLabel", "decorative", "inheritColor"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16943
17166
  }
16944
17167
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SolarisCollapsibleComponent, decorators: [{
16945
17168
  type: Component,
@@ -16949,8 +17172,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImpo
16949
17172
  '[attr.data-appearance]': 'effectiveAppearance()',
16950
17173
  '[attr.data-open]': 'isOpen() ? "" : null',
16951
17174
  '[attr.data-disabled]': 'isEffectivelyDisabled() ? "" : null',
16952
- }, template: "@if (headingLevel()) {\n @switch (headingLevel()) {\n @case (2) {\n <h2 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h2>\n }\n @case (3) {\n <h3 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h3>\n }\n @case (4) {\n <h4 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h4>\n }\n @case (5) {\n <h5 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h5>\n }\n @case (6) {\n <h6 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h6>\n }\n @default {\n <h3 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h3>\n }\n }\n} @else {\n <div class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </div>\n}\n\n<ng-template #triggerContent>\n <button\n type=\"button\"\n class=\"solaris-collapsible__trigger\"\n [id]=\"triggerId()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"panelId()\"\n [attr.aria-label]=\"effectiveAriaLabel()\"\n [attr.aria-disabled]=\"!canToggleClosed() && isOpen() ? 'true' : null\"\n [disabled]=\"isEffectivelyDisabled()\"\n (click)=\"toggle()\"\n >\n <span class=\"solaris-collapsible__trigger-label\">\n {{ labelText() }}\n </span>\n <solaris-icon\n [name]=\"effectiveIcon()\"\n class=\"solaris-collapsible__trigger-icon\"\n [decorative]=\"true\"\n />\n </button>\n</ng-template>\n\n<div\n class=\"solaris-collapsible__panel\"\n [id]=\"panelId()\"\n role=\"region\"\n [attr.aria-labelledby]=\"triggerId()\"\n [attr.aria-hidden]=\"isOpen() ? null : 'true'\"\n [attr.inert]=\"isOpen() ? null : ''\"\n>\n <div class=\"solaris-collapsible__panel-inner\">\n <ng-content />\n </div>\n</div>\n", styles: [":host{--solaris-collapsible-radius: var(--solaris-radius-md);--solaris-collapsible-icon-size: var(--solaris-spacing-4);--solaris-collapsible-trigger-gap: var(--solaris-spacing-2);--solaris-collapsible-trigger-color: var(--solaris-text-muted);--solaris-collapsible-border-color: var(--solaris-border-subtle);--solaris-collapsible-trigger-font-size: var(--solaris-font-size-md);--solaris-collapsible-trigger-font-weight: var(--solaris-font-weight-medium);--solaris-collapsible-trigger-padding: var(--solaris-spacing-2) var(--solaris-spacing-3);--solaris-collapsible-header-inset-top: var(--solaris-spacing-3);display:block;box-sizing:border-box}.solaris-collapsible__header{margin:0}.solaris-collapsible__trigger{width:100%;border:none;display:flex;cursor:pointer;text-align:start;align-items:center;box-sizing:border-box;background:transparent;justify-content:space-between;gap:var(--solaris-collapsible-trigger-gap);color:var(--solaris-collapsible-trigger-color);padding:var(--solaris-collapsible-trigger-padding);transition:color var(--solaris-motion-duration-normal) var(--solaris-motion-easing-standard);font:var(--solaris-collapsible-trigger-font-weight) var(--solaris-collapsible-trigger-font-size)/1.2 var(--solaris-font-family-sans)}.solaris-collapsible__trigger:hover:not(:disabled){color:var(--solaris-text-default)}.solaris-collapsible__trigger:focus-visible{outline-offset:var(--solaris-focus-ring-offset);outline:var(--solaris-focus-ring-width) solid var(--solaris-focus-ring-color)}.solaris-collapsible__trigger:disabled{cursor:not-allowed;opacity:var(--solaris-opacity-50)}.solaris-collapsible__trigger-icon{flex-shrink:0;width:var(--solaris-collapsible-icon-size);height:var(--solaris-collapsible-icon-size);transition:transform var(--solaris-motion-duration-normal) var(--solaris-motion-easing-standard)}:host([data-open]) .solaris-collapsible__trigger-icon{transform:rotate(180deg)}.solaris-collapsible__panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--solaris-motion-duration-normal) var(--solaris-motion-easing-standard)}:host([data-open]) .solaris-collapsible__panel{grid-template-rows:1fr}.solaris-collapsible__panel-inner{min-height:0;overflow:hidden;color:var(--solaris-text-muted);font-size:var(--solaris-font-size-sm);padding:0 var(--solaris-spacing-5) var(--solaris-spacing-3)}:host([data-appearance=boxed]){border-radius:var(--solaris-collapsible-radius);border:var(--solaris-border-width-sm) solid var(--solaris-collapsible-border-color)}:host([data-appearance=boxed]) .solaris-collapsible__header{margin-top:var(--solaris-collapsible-header-inset-top)}:host([data-appearance=lined]) .solaris-collapsible__trigger{border-bottom:var(--solaris-border-width-sm) solid var(--solaris-collapsible-border-color)}:host([data-appearance=lined]):last-child .solaris-collapsible__trigger{border-bottom:none}@media(prefers-reduced-motion:reduce){.solaris-collapsible__trigger,.solaris-collapsible__trigger-icon,.solaris-collapsible__panel{transition:none}}:host-context([data-reduced-motion=true]) .solaris-collapsible__trigger,:host-context([data-reduced-motion=true]) .solaris-collapsible__trigger-icon,:host-context([data-reduced-motion=true]) .solaris-collapsible__panel{transition:none}\n"] }]
16953
- }], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], labelKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelKey", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaLabelKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelKey", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }] } });
17175
+ }, template: "@if (headingLevel()) {\n @switch (headingLevel()) {\n @case (2) {\n <h2 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h2>\n }\n @case (3) {\n <h3 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h3>\n }\n @case (4) {\n <h4 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h4>\n }\n @case (5) {\n <h5 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h5>\n }\n @case (6) {\n <h6 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h6>\n }\n @default {\n <h3 class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </h3>\n }\n }\n} @else {\n <div class=\"solaris-collapsible__header\">\n <ng-container *ngTemplateOutlet=\"triggerContent\" />\n </div>\n}\n\n<ng-template #triggerContent>\n <button\n type=\"button\"\n class=\"solaris-collapsible__trigger\"\n [id]=\"triggerId()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"panelId()\"\n [attr.aria-label]=\"effectiveAriaLabel()\"\n [attr.aria-disabled]=\"!canToggleClosed() && isOpen() ? 'true' : null\"\n [disabled]=\"isEffectivelyDisabled()\"\n (click)=\"toggle()\"\n >\n <span class=\"solaris-collapsible__trigger-label\">\n @if (leadingIcon(); as leadingIconName) {\n <solaris-icon\n [name]=\"leadingIconName\"\n class=\"solaris-collapsible__trigger-leading-icon\"\n [decorative]=\"leadingIconDecorative()\"\n />\n }\n {{ labelText() }}\n </span>\n <solaris-icon\n [name]=\"effectiveIcon()\"\n class=\"solaris-collapsible__trigger-icon\"\n [decorative]=\"true\"\n />\n </button>\n</ng-template>\n\n<div\n class=\"solaris-collapsible__panel\"\n [id]=\"panelId()\"\n role=\"region\"\n [attr.aria-labelledby]=\"triggerId()\"\n [attr.aria-hidden]=\"isOpen() ? null : 'true'\"\n [attr.inert]=\"isOpen() ? null : ''\"\n>\n <div class=\"solaris-collapsible__panel-inner\">\n <ng-content />\n </div>\n</div>\n", styles: [":host{--solaris-collapsible-radius: var(--solaris-radius-md);--solaris-collapsible-icon-size: var(--solaris-spacing-4);--solaris-collapsible-trigger-gap: var(--solaris-spacing-2);--solaris-collapsible-trigger-color: var(--solaris-text-muted);--solaris-collapsible-border-color: var(--solaris-border-subtle);--solaris-collapsible-trigger-font-size: var(--solaris-font-size-md);--solaris-collapsible-trigger-font-weight: var(--solaris-font-weight-medium);--solaris-collapsible-trigger-padding: var(--solaris-spacing-2) var(--solaris-spacing-3);--solaris-collapsible-header-inset-top: var(--solaris-spacing-3);display:block;box-sizing:border-box}.solaris-collapsible__header{margin:0}.solaris-collapsible__trigger{width:100%;border:none;display:flex;cursor:pointer;text-align:start;align-items:center;box-sizing:border-box;background:transparent;justify-content:space-between;gap:var(--solaris-collapsible-trigger-gap);color:var(--solaris-collapsible-trigger-color);padding:var(--solaris-collapsible-trigger-padding);transition:color var(--solaris-motion-duration-normal) var(--solaris-motion-easing-standard);font:var(--solaris-collapsible-trigger-font-weight) var(--solaris-collapsible-trigger-font-size)/1.2 var(--solaris-font-family-sans)}.solaris-collapsible__trigger:hover:not(:disabled){color:var(--solaris-text-default)}.solaris-collapsible__trigger:focus-visible{outline-offset:var(--solaris-focus-ring-offset);outline:var(--solaris-focus-ring-width) solid var(--solaris-focus-ring-color)}.solaris-collapsible__trigger:disabled{cursor:not-allowed;opacity:var(--solaris-opacity-50)}.solaris-collapsible__trigger-label{flex:1;min-width:0;display:inline-flex;align-items:center;gap:var(--solaris-collapsible-trigger-gap)}.solaris-collapsible__trigger-leading-icon{flex-shrink:0;width:var(--solaris-collapsible-icon-size);height:var(--solaris-collapsible-icon-size)}.solaris-collapsible__trigger-icon{flex-shrink:0;width:var(--solaris-collapsible-icon-size);height:var(--solaris-collapsible-icon-size);transition:transform var(--solaris-motion-duration-normal) var(--solaris-motion-easing-standard)}:host([data-open]) .solaris-collapsible__trigger-icon{transform:rotate(180deg)}.solaris-collapsible__panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--solaris-motion-duration-normal) var(--solaris-motion-easing-standard)}:host([data-open]) .solaris-collapsible__panel{grid-template-rows:1fr}.solaris-collapsible__panel-inner{min-height:0;overflow:hidden;color:var(--solaris-text-muted);font-size:var(--solaris-font-size-sm);padding:0 var(--solaris-spacing-5) var(--solaris-spacing-3)}:host([data-appearance=boxed]){border-radius:var(--solaris-collapsible-radius);border:var(--solaris-border-width-sm) solid var(--solaris-collapsible-border-color)}:host([data-appearance=boxed]) .solaris-collapsible__header{margin-top:var(--solaris-collapsible-header-inset-top)}:host([data-appearance=lined]) .solaris-collapsible__trigger{border-bottom:var(--solaris-border-width-sm) solid var(--solaris-collapsible-border-color)}:host([data-appearance=lined]):last-child .solaris-collapsible__trigger{border-bottom:none}@media(prefers-reduced-motion:reduce){.solaris-collapsible__trigger,.solaris-collapsible__trigger-icon,.solaris-collapsible__panel{transition:none}}:host-context([data-reduced-motion=true]) .solaris-collapsible__trigger,:host-context([data-reduced-motion=true]) .solaris-collapsible__trigger-icon,:host-context([data-reduced-motion=true]) .solaris-collapsible__panel{transition:none}\n"] }]
17176
+ }], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], labelKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelKey", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaLabelKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelKey", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], leadingIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "leadingIcon", required: false }] }], leadingIconDecorative: [{ type: i0.Input, args: [{ isSignal: true, alias: "leadingIconDecorative", required: false }] }] } });
16954
17177
 
16955
17178
  class SolarisAccordionComponent {
16956
17179
  appearance = input('boxed', ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));