import * as i0 from '@angular/core';
import { signal, Injectable, input, model, booleanAttribute, output, computed, inject, viewChild, ChangeDetectionStrategy, Component, contentChildren, DestroyRef, ElementRef, NgModule } from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { elementDown2 } from '@siemens/element-icons';
import { addIcons, SiIconComponent } from '@siemens/element-ng/icon';
import { SiTooltipDirective } from '@siemens/element-ng/tooltip';
import { SiTranslatePipe } from '@siemens/element-translate-ng/translate';
import { Subject, filter } from 'rxjs';
import { ResizeObserverService } from '@siemens/element-ng/resize-observer';

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
/** @internal */
class SiAccordionHCollapseService {
    /**
     * Emitting the current horizontal collapsed state.
     *
     * @defaultValue undefined
     */
    hcollapsed = signal(undefined, ...(ngDevMode ? [{ debugName: "hcollapsed" }] : []));
    /**
     * Subject to emit to open the accordion.
     */
    open$ = new Subject();
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiAccordionHCollapseService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
    static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiAccordionHCollapseService, providedIn: null });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiAccordionHCollapseService, decorators: [{
            type: Injectable,
            args: [{
                    providedIn: null
                }]
        }] });

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
/** @internal */
class SiAccordionService {
    /**
     * Emit an item in the accordion which should be toggled.
     */
    toggle$ = new Subject();
    /**
     * Subject to emit when the items should be expanded to their full height or restored to normal height.
     *
     * @defaultValue null
     */
    fullHeight = signal(null, ...(ngDevMode ? [{ debugName: "fullHeight" }] : []));
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiAccordionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
    static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiAccordionService, providedIn: null });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiAccordionService, decorators: [{
            type: Injectable,
            args: [{
                    providedIn: null
                }]
        }] });

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
let controlIdCounter = 1;
class SiCollapsiblePanelComponent {
    /**
     * Heading for the collapsible panel.
     */
    heading = input(...(ngDevMode ? [undefined, { debugName: "heading" }] : []));
    /**
     * Additional CSS classes for the top element.
     *
     * @defaultValue ''
     */
    headerCssClasses = input('', ...(ngDevMode ? [{ debugName: "headerCssClasses" }] : []));
    /**
     * Additional CSS classes for the collapsible content region.
     *
     * @defaultValue ''
     */
    contentBgClasses = input('', ...(ngDevMode ? [{ debugName: "contentBgClasses" }] : []));
    /**
     * Additional CSS classes for the wrapping content element.
     *
     * @defaultValue ''
     */
    contentCssClasses = input('', ...(ngDevMode ? [{ debugName: "contentCssClasses" }] : []));
    /**
     * Expand/collapse the panel.
     *
     * @defaultValue false
     */
    opened = model(false, ...(ngDevMode ? [{ debugName: "opened" }] : []));
    /**
     * The icon to be displayed besides the heading.
     */
    icon = input(...(ngDevMode ? [undefined, { debugName: "icon" }] : []));
    /**
     * Whether the si-collapsible-panel is disabled.
     *
     * @defaultValue false
     */
    disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
    /**
     * Color variant for component background.
     *
     * @deprecated This input has no effect on the component styling.
     */
    colorVariant = input(...(ngDevMode ? [undefined, { debugName: "colorVariant" }] : []));
    /**
     * Defines the content of the optional badge. Should be a number or something like "100+".
     * if undefined or empty string, no badge is displayed
     */
    badge = input(...(ngDevMode ? [undefined, { debugName: "badge" }] : []));
    /**
     * Defines the background color of the badge. Default is specific to Element flavour.
     */
    badgeColor = input(...(ngDevMode ? [undefined, { debugName: "badgeColor" }] : []));
    /**
     * An event emitted when the user triggered expand/collapse and emit with the new open state.
     * The event is emitted before the animation happens.
     */
    panelToggle = output();
    hcollapsed = computed(() => this.accordionHCollapseService?.hcollapsed() ?? false, ...(ngDevMode ? [{ debugName: "hcollapsed" }] : []));
    fullHeight = computed(() => this.accordionService?.fullHeight() ?? false, ...(ngDevMode ? [{ debugName: "fullHeight" }] : []));
    controlId = '__si-collapsible-' + controlIdCounter++;
    headerId = this.controlId + '-header';
    isHCollapsible = false;
    icons = addIcons({ elementDown2 });
    disableAnimation = signal(false, ...(ngDevMode ? [{ debugName: "disableAnimation" }] : []));
    accordionService = inject(SiAccordionService, { optional: true });
    accordionHCollapseService = inject(SiAccordionHCollapseService, {
        optional: true
    });
    /** Restore the content scroll position between open/close of the panel. */
    lastScrollPos = 0;
    contentRef = viewChild.required('content');
    constructor() {
        this.isHCollapsible = !!this.accordionHCollapseService;
        this.accordionService?.toggle$
            .pipe(takeUntilDestroyed(), filter(item => item !== this))
            .subscribe(() => this.openClose(false));
    }
    /**
     * Expand/collapse panel.
     * @param open - indicate the panel shall open or close
     * @param enableAnimation - with animation
     */
    openClose(open, enableAnimation = true) {
        this.opened.set(open);
        this.disableAnimation.set(!enableAnimation);
        if (open) {
            // Restore scroll position after opening
            setTimeout(() => {
                this.contentRef().nativeElement.scrollTop = this.lastScrollPos;
            });
        }
        else {
            // Save scroll position before closing
            this.lastScrollPos = this.contentRef().nativeElement.scrollTop;
        }
    }
    doToggle(event) {
        if (this.disabled()) {
            return;
        }
        event?.preventDefault();
        const opened = this.opened();
        this.panelToggle.emit(!opened);
        this.openClose(this.hcollapsed() || !opened);
        this.accordionService?.toggle$.next(this);
        if (this.hcollapsed()) {
            this.accordionHCollapseService?.open$.next(this);
        }
    }
    keydown(event) {
        if (event.key === 'Enter' || event.key === 'Space' || event.key === ' ') {
            this.doToggle(undefined);
        }
    }
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiCollapsiblePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiCollapsiblePanelComponent, isStandalone: true, selector: "si-collapsible-panel", inputs: { heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: false, transformFunction: null }, headerCssClasses: { classPropertyName: "headerCssClasses", publicName: "headerCssClasses", isSignal: true, isRequired: false, transformFunction: null }, contentBgClasses: { classPropertyName: "contentBgClasses", publicName: "contentBgClasses", isSignal: true, isRequired: false, transformFunction: null }, contentCssClasses: { classPropertyName: "contentCssClasses", publicName: "contentCssClasses", isSignal: true, isRequired: false, transformFunction: null }, opened: { classPropertyName: "opened", publicName: "opened", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, colorVariant: { classPropertyName: "colorVariant", publicName: "colorVariant", isSignal: true, isRequired: false, transformFunction: null }, badge: { classPropertyName: "badge", publicName: "badge", isSignal: true, isRequired: false, transformFunction: null }, badgeColor: { classPropertyName: "badgeColor", publicName: "badgeColor", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { opened: "openedChange", panelToggle: "panelToggle" }, host: { properties: { "class": "colorVariant()", "class.opened": "opened()", "class.hcollapsed": "hcollapsed()", "class.full-height": "fullHeight()", "style.--element-animations-enabled": "disableAnimation() ? \"0\" : undefined" } }, viewQueries: [{ propertyName: "contentRef", first: true, predicate: ["content"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n  role=\"button\"\n  placement=\"start\"\n  [siTooltip]=\"hcollapsed() && heading() ? (heading()! | translate) : ''\"\n  [class]=\"`collapsible-header focus-inside ${headerCssClasses()}`\"\n  [class.px-5]=\"hcollapsed()\"\n  [class.px-6]=\"!hcollapsed()\"\n  [attr.tabindex]=\"disabled() ? '' : '0'\"\n  [id]=\"headerId\"\n  [class.open]=\"opened()\"\n  [class.disabled]=\"disabled()\"\n  [attr.aria-expanded]=\"opened() && !hcollapsed()\"\n  [attr.aria-disabled]=\"disabled()\"\n  [attr.aria-controls]=\"controlId\"\n  [attr.aria-label]=\"hcollapsed() ? (heading() | translate) : ''\"\n  (keydown)=\"keydown($event)\"\n  (click)=\"doToggle($event)\"\n>\n  @let headerIcon = icon();\n  @if (headerIcon) {\n    <si-icon\n      class=\"icon\"\n      [class.p-1]=\"hcollapsed()\"\n      [class.pe-2]=\"!hcollapsed()\"\n      [icon]=\"headerIcon\"\n      [class.collapsed-icon]=\"isHCollapsible\"\n    />\n  }\n  @if (icon() && badge() !== undefined && badge() !== '') {\n    <span class=\"badge-text\">\n      {{ badge() }}\n    </span>\n  }\n  <div class=\"si-h5 autohide\">\n    {{ heading() | translate }}\n    <ng-content select=\"[si-panel-heading]\" />\n  </div>\n\n  @if (badge() !== undefined && badge() !== '') {\n    <span [class]=\"'badge autohide' + (badgeColor() ? ' bg-' + badgeColor() : '')\">\n      {{ badge() }}\n    </span>\n  }\n  <span class=\"ms-auto autohide\">\n    <si-icon class=\"icon dropdown-caret\" [icon]=\"icons.elementDown2\" />\n  </span>\n</div>\n<div\n  #content\n  role=\"region\"\n  [id]=\"controlId\"\n  [class]=\"`collapsible-content ${contentBgClasses()}`\"\n  [attr.aria-labelledby]=\"headerId\"\n  [class.full-height]=\"fullHeight()\"\n>\n  @if (opened()) {\n    <div class=\"content-motion\" animate.leave=\"content-leave\">\n      <div class=\"overflow-hidden\">\n        <div [class]=\"contentCssClasses()\">\n          <ng-content />\n        </div>\n      </div>\n    </div>\n  }\n</div>\n", styles: [":host{--__radius: var(--si-accordion-radius, var(--element-button-radius));display:flex;flex-direction:column;background:var(--element-base-0);padding-block-end:2px}:host:not(.hcollapsed) .collapsed-icon,:host:not(.hcollapsed) .badge-text{display:none}:host.hcollapsed{background:var(--element-base-1)}:host.hcollapsed .collapsible-header .autohide,:host.hcollapsed .collapsible-content{display:none}:host.hcollapsed .collapsible-header{padding-block:8px}:host.hcollapsed .collapsible-header:hover{background:var(--element-base-1-hover)}:host.full-height{transition:flex-grow calc(.5s * var(--element-animations-enabled, 1))}:host.full-height.opened,:host.full-height .collapsible-content{flex:1 1 0}:host.full-height .collapsible-content>div{flex:1 0 0}.collapsible-header{display:flex;align-items:center;background:var(--element-base-1);color:var(--element-text-primary);padding-block:12px;border-radius:var(--__radius)}.collapsible-header.disabled{color:var(--element-text-disabled);cursor:default}.collapsible-header.open{border-end-start-radius:0;border-end-end-radius:0}.collapsible-header:not(.disabled){cursor:pointer}.collapsible-header:not(.disabled):hover{text-decoration:none;background:var(--element-base-1-hover)}.dropdown-caret{transition:transform calc(.5s * var(--element-animations-enabled, 1));color:var(--element-ui-1)}.open .dropdown-caret{transform:rotate(180deg)}.collapsible-content{overflow:hidden;background:var(--element-base-1);border-end-start-radius:var(--__radius);border-end-end-radius:var(--__radius)}.collapsible-content.full-height{overflow:auto}.content-motion{display:grid;grid-template-rows:1fr;transition:grid-template-rows calc(.5s * var(--element-animations-enabled, 1))}@starting-style{.content-motion{grid-template-rows:0fr}}.content-motion.content-leave{grid-template-rows:0fr}:host(.full-height) .content-motion{display:flex}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "directive", type: SiTooltipDirective, selector: "[siTooltip]", inputs: ["siTooltip", "placement", "isDisabled", "tooltipContext"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiCollapsiblePanelComponent, decorators: [{
            type: Component,
            args: [{ selector: 'si-collapsible-panel', imports: [SiIconComponent, SiTranslatePipe, SiTooltipDirective], changeDetection: ChangeDetectionStrategy.OnPush, host: {
                        '[class]': 'colorVariant()',
                        '[class.opened]': 'opened()',
                        '[class.hcollapsed]': 'hcollapsed()',
                        '[class.full-height]': 'fullHeight()',
                        '[style.--element-animations-enabled]': 'disableAnimation() ? "0" : undefined'
                    }, template: "<div\n  role=\"button\"\n  placement=\"start\"\n  [siTooltip]=\"hcollapsed() && heading() ? (heading()! | translate) : ''\"\n  [class]=\"`collapsible-header focus-inside ${headerCssClasses()}`\"\n  [class.px-5]=\"hcollapsed()\"\n  [class.px-6]=\"!hcollapsed()\"\n  [attr.tabindex]=\"disabled() ? '' : '0'\"\n  [id]=\"headerId\"\n  [class.open]=\"opened()\"\n  [class.disabled]=\"disabled()\"\n  [attr.aria-expanded]=\"opened() && !hcollapsed()\"\n  [attr.aria-disabled]=\"disabled()\"\n  [attr.aria-controls]=\"controlId\"\n  [attr.aria-label]=\"hcollapsed() ? (heading() | translate) : ''\"\n  (keydown)=\"keydown($event)\"\n  (click)=\"doToggle($event)\"\n>\n  @let headerIcon = icon();\n  @if (headerIcon) {\n    <si-icon\n      class=\"icon\"\n      [class.p-1]=\"hcollapsed()\"\n      [class.pe-2]=\"!hcollapsed()\"\n      [icon]=\"headerIcon\"\n      [class.collapsed-icon]=\"isHCollapsible\"\n    />\n  }\n  @if (icon() && badge() !== undefined && badge() !== '') {\n    <span class=\"badge-text\">\n      {{ badge() }}\n    </span>\n  }\n  <div class=\"si-h5 autohide\">\n    {{ heading() | translate }}\n    <ng-content select=\"[si-panel-heading]\" />\n  </div>\n\n  @if (badge() !== undefined && badge() !== '') {\n    <span [class]=\"'badge autohide' + (badgeColor() ? ' bg-' + badgeColor() : '')\">\n      {{ badge() }}\n    </span>\n  }\n  <span class=\"ms-auto autohide\">\n    <si-icon class=\"icon dropdown-caret\" [icon]=\"icons.elementDown2\" />\n  </span>\n</div>\n<div\n  #content\n  role=\"region\"\n  [id]=\"controlId\"\n  [class]=\"`collapsible-content ${contentBgClasses()}`\"\n  [attr.aria-labelledby]=\"headerId\"\n  [class.full-height]=\"fullHeight()\"\n>\n  @if (opened()) {\n    <div class=\"content-motion\" animate.leave=\"content-leave\">\n      <div class=\"overflow-hidden\">\n        <div [class]=\"contentCssClasses()\">\n          <ng-content />\n        </div>\n      </div>\n    </div>\n  }\n</div>\n", styles: [":host{--__radius: var(--si-accordion-radius, var(--element-button-radius));display:flex;flex-direction:column;background:var(--element-base-0);padding-block-end:2px}:host:not(.hcollapsed) .collapsed-icon,:host:not(.hcollapsed) .badge-text{display:none}:host.hcollapsed{background:var(--element-base-1)}:host.hcollapsed .collapsible-header .autohide,:host.hcollapsed .collapsible-content{display:none}:host.hcollapsed .collapsible-header{padding-block:8px}:host.hcollapsed .collapsible-header:hover{background:var(--element-base-1-hover)}:host.full-height{transition:flex-grow calc(.5s * var(--element-animations-enabled, 1))}:host.full-height.opened,:host.full-height .collapsible-content{flex:1 1 0}:host.full-height .collapsible-content>div{flex:1 0 0}.collapsible-header{display:flex;align-items:center;background:var(--element-base-1);color:var(--element-text-primary);padding-block:12px;border-radius:var(--__radius)}.collapsible-header.disabled{color:var(--element-text-disabled);cursor:default}.collapsible-header.open{border-end-start-radius:0;border-end-end-radius:0}.collapsible-header:not(.disabled){cursor:pointer}.collapsible-header:not(.disabled):hover{text-decoration:none;background:var(--element-base-1-hover)}.dropdown-caret{transition:transform calc(.5s * var(--element-animations-enabled, 1));color:var(--element-ui-1)}.open .dropdown-caret{transform:rotate(180deg)}.collapsible-content{overflow:hidden;background:var(--element-base-1);border-end-start-radius:var(--__radius);border-end-end-radius:var(--__radius)}.collapsible-content.full-height{overflow:auto}.content-motion{display:grid;grid-template-rows:1fr;transition:grid-template-rows calc(.5s * var(--element-animations-enabled, 1))}@starting-style{.content-motion{grid-template-rows:0fr}}.content-motion.content-leave{grid-template-rows:0fr}:host(.full-height) .content-motion{display:flex}\n"] }]
        }], ctorParameters: () => [], propDecorators: { heading: [{ type: i0.Input, args: [{ isSignal: true, alias: "heading", required: false }] }], headerCssClasses: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerCssClasses", required: false }] }], contentBgClasses: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentBgClasses", required: false }] }], contentCssClasses: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentCssClasses", required: false }] }], opened: [{ type: i0.Input, args: [{ isSignal: true, alias: "opened", required: false }] }, { type: i0.Output, args: ["openedChange"] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], colorVariant: [{ type: i0.Input, args: [{ isSignal: true, alias: "colorVariant", required: false }] }], badge: [{ type: i0.Input, args: [{ isSignal: true, alias: "badge", required: false }] }], badgeColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "badgeColor", required: false }] }], panelToggle: [{ type: i0.Output, args: ["panelToggle"] }], contentRef: [{ type: i0.ViewChild, args: ['content', { isSignal: true }] }] } });

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
const PANEL_MIN_HEIGHT = 100;
class SiAccordionComponent {
    /** @defaultValue true */
    expandFirstPanel = input(true, { ...(ngDevMode ? { debugName: "expandFirstPanel" } : {}), transform: booleanAttribute });
    /** @defaultValue false */
    fullHeight = input(false, { ...(ngDevMode ? { debugName: "fullHeight" } : {}), transform: booleanAttribute });
    /** @defaultValue false */
    hcollapsed = input(false, ...(ngDevMode ? [{ debugName: "hcollapsed" }] : []));
    /**
     * Indicate whether the accordion is collapsed.
     * @internal
     */
    collapsed = computed(() => this.accordionHCollapseService?.hcollapsed() ?? this.hcollapsed(), ...(ngDevMode ? [{ debugName: "collapsed" }] : []));
    panels = contentChildren(SiCollapsiblePanelComponent, ...(ngDevMode ? [{ debugName: "panels" }] : []));
    responsive = false;
    destroyer = inject(DestroyRef);
    service = inject(SiAccordionService);
    resizeObserver = inject(ResizeObserverService);
    element = inject(ElementRef);
    accordionHCollapseService = inject(SiAccordionHCollapseService, { optional: true });
    ngOnChanges() {
        this.service.fullHeight.set(this.fullHeight() && !this.responsive);
    }
    ngAfterContentInit() {
        this.resizeObserver
            .observe(this.element.nativeElement, 100, true, true)
            .pipe(takeUntilDestroyed(this.destroyer))
            .subscribe(() => this.calcFullHeight());
        this.panels().at(0)?.openClose(this.expandFirstPanel(), false);
    }
    calcFullHeight() {
        if (this.panels()?.length) {
            const height = this.element.nativeElement.offsetHeight;
            this.responsive = !this.hcollapsed() && height < this.panels().length * PANEL_MIN_HEIGHT;
            this.service.fullHeight.set(this.fullHeight() && !this.responsive);
        }
    }
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiAccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.0.8", type: SiAccordionComponent, isStandalone: true, selector: "si-accordion", inputs: { expandFirstPanel: { classPropertyName: "expandFirstPanel", publicName: "expandFirstPanel", isSignal: true, isRequired: false, transformFunction: null }, fullHeight: { classPropertyName: "fullHeight", publicName: "fullHeight", isSignal: true, isRequired: false, transformFunction: null }, hcollapsed: { classPropertyName: "hcollapsed", publicName: "hcollapsed", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.full-height": "fullHeight()", "class.hcollapsed": "collapsed()" } }, providers: [SiAccordionService], queries: [{ propertyName: "panels", predicate: SiCollapsiblePanelComponent, isSignal: true }], usesOnChanges: true, ngImport: i0, template: '<div><ng-content /></div>', isInline: true, styles: [":host,:host>div{display:flex;flex-direction:column}:host.full-height{block-size:100%}:host.full-height>div{overflow-y:auto;flex:1 1 0}:host.full-height.hcollapsed>div{overflow-y:unset;flex-basis:auto}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiAccordionComponent, decorators: [{
            type: Component,
            args: [{ selector: 'si-accordion', template: '<div><ng-content /></div>', providers: [SiAccordionService], changeDetection: ChangeDetectionStrategy.OnPush, host: {
                        '[class.full-height]': 'fullHeight()',
                        '[class.hcollapsed]': 'collapsed()'
                    }, styles: [":host,:host>div{display:flex;flex-direction:column}:host.full-height{block-size:100%}:host.full-height>div{overflow-y:auto;flex:1 1 0}:host.full-height.hcollapsed>div{overflow-y:unset;flex-basis:auto}\n"] }]
        }], propDecorators: { expandFirstPanel: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandFirstPanel", required: false }] }], fullHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullHeight", required: false }] }], hcollapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "hcollapsed", required: false }] }], panels: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SiCollapsiblePanelComponent), { isSignal: true }] }] } });

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
class SiAccordionModule {
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiAccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
    static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: SiAccordionModule, imports: [SiAccordionComponent, SiCollapsiblePanelComponent], exports: [SiAccordionComponent, SiCollapsiblePanelComponent] });
    static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiAccordionModule, imports: [SiCollapsiblePanelComponent] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiAccordionModule, decorators: [{
            type: NgModule,
            args: [{
                    imports: [SiAccordionComponent, SiCollapsiblePanelComponent],
                    exports: [SiAccordionComponent, SiCollapsiblePanelComponent]
                }]
        }] });

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */

/**
 * Generated bundle index. Do not edit.
 */

export { SiAccordionComponent, SiAccordionHCollapseService, SiAccordionModule, SiAccordionService, SiCollapsiblePanelComponent };
//# sourceMappingURL=siemens-element-ng-accordion.mjs.map
