import { BreakpointObserver } from '@angular/cdk/layout';
import { NgTemplateOutlet } from '@angular/common';
import * as i0 from '@angular/core';
import { Component, InjectionToken, input, model, signal, inject, ViewContainerRef, Injector, computed, HostListener, Directive, ChangeDetectionStrategy, viewChildren, booleanAttribute, output, viewChild, HostBinding, NgModule } from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { RouterLinkActive, ActivatedRoute, RouterLink } from '@angular/router';
import { elementDown2, elementSearch, elementDoubleRight, elementDoubleLeft } from '@siemens/element-icons';
import { SI_UI_STATE_SERVICE } from '@siemens/element-ng/common';
import { addIcons, SiIconComponent } from '@siemens/element-ng/icon';
import { BOOTSTRAP_BREAKPOINTS } from '@siemens/element-ng/resize-observer';
import { SiSearchBarComponent } from '@siemens/element-ng/search-bar';
import { SiSkipLinkTargetDirective } from '@siemens/element-ng/skip-links';
import { SiTooltipDirective } from '@siemens/element-ng/tooltip';
import { SiTranslatePipe, t } from '@siemens/element-translate-ng/translate';
import { Overlay } from '@angular/cdk/overlay';
import { TemplatePortal } from '@angular/cdk/portal';
import { CdkTrapFocus } from '@angular/cdk/a11y';
import { SiLinkDirective } from '@siemens/element-ng/link';

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
// We need a component to attach the stylesheet
class SiNavbarVerticalDividerComponent {
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarVerticalDividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.8", type: SiNavbarVerticalDividerComponent, isStandalone: true, selector: "si-navbar-vertical-divider", ngImport: i0, template: '', isInline: true, styles: [":host{display:block;block-size:1px;background-color:var(--element-ui-4);margin-block:6px;margin-inline:12px}\n"] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarVerticalDividerComponent, decorators: [{
            type: Component,
            args: [{ selector: 'si-navbar-vertical-divider', template: '', styles: [":host{display:block;block-size:1px;background-color:var(--element-ui-4);margin-block:6px;margin-inline:12px}\n"] }]
        }] });

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
const SI_NAVBAR_VERTICAL = new InjectionToken('SI_NAVBAR_VERTICAL');

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
/**
 * Using this component, to anchor the flyout inside the navbar within the a11y tree.
 * Otherwise, without aria-owns, screen reader will announce the leaving of the navbar when moving to the flyout.
 * Aria-owns cannot be put directly on the trigger
 * as chrome will include the flyout children in the a11y label of the trigger.
 */
class SiNavbarFlyoutAnchorComponent {
    groupId = input(...(ngDevMode ? [undefined, { debugName: "groupId" }] : []));
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarFlyoutAnchorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.8", type: SiNavbarFlyoutAnchorComponent, isStandalone: true, selector: "si-navbar-flyout-anchor", inputs: { groupId: { classPropertyName: "groupId", publicName: "groupId", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.aria-owns": "groupId()" } }, ngImport: i0, template: '', isInline: true });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarFlyoutAnchorComponent, decorators: [{
            type: Component,
            args: [{
                    selector: 'si-navbar-flyout-anchor',
                    template: '',
                    host: { '[attr.aria-owns]': 'groupId()' }
                }]
        }], propDecorators: { groupId: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupId", required: false }] }] } });
class SiNavbarVerticalGroupTriggerDirective {
    static idCounter = 0;
    /** @internal */
    groupId = `si-navbar-vertical-group-${SiNavbarVerticalGroupTriggerDirective.idCounter++}`;
    id = `${this.groupId}-trigger`;
    groupTemplate = input.required({ ...(ngDevMode ? { debugName: "groupTemplate" } : {}), alias: 'siNavbarVerticalGroupTriggerFor' });
    groupData = input(...(ngDevMode ? [undefined, { debugName: "groupData" }] : []));
    stateId = input(...(ngDevMode ? [undefined, { debugName: "stateId" }] : []));
    expanded = model.required(...(ngDevMode ? [{ debugName: "expanded" }] : []));
    /** @internal */
    flyout = signal(false, ...(ngDevMode ? [{ debugName: "flyout" }] : []));
    /** @internal */
    active = signal(false, ...(ngDevMode ? [{ debugName: "active" }] : []));
    navbar = inject(SI_NAVBAR_VERTICAL);
    flyoutOutsideClickSubscription;
    viewContainer = inject(ViewContainerRef);
    overlay = inject(Overlay);
    injector = Injector.create({ parent: inject(Injector), providers: [] });
    overlayRef = this.overlay.create({
        positionStrategy: this.overlay
            .position()
            .flexibleConnectedTo(this.viewContainer.element)
            .withPositions([
            { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top' },
            { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom' }
        ])
    });
    groupView;
    flyoutAnchorComponentRef;
    templatePortal = computed(() => new TemplatePortal(this.groupTemplate(), this.viewContainer, this.groupData(), this.injector), ...(ngDevMode ? [{ debugName: "templatePortal" }] : []));
    ngOnInit() {
        this.attachInline();
    }
    /** @internal */
    hideFlyout() {
        if (this.flyout()) {
            this.flyout.set(false);
            this.active.set(false);
            this.flyoutAnchorComponentRef?.destroy();
            this.flyoutAnchorComponentRef = undefined;
            this.attachInline();
            this.flyoutOutsideClickSubscription?.unsubscribe();
        }
    }
    triggered() {
        if (this.navbar.collapsed()) {
            this.toggleFlyout();
        }
        else {
            this.expanded.set(!this.expanded());
            this.navbar.groupTriggered();
        }
    }
    toggleFlyout() {
        if (this.flyout()) {
            this.hideFlyout();
        }
        else {
            this.flyout.set(true);
            this.attachFlyout();
        }
    }
    attachInline() {
        this.overlayRef.detach();
        this.groupView?.destroy(); // we need ?. for first attachment
        this.groupView = this.viewContainer.createEmbeddedView(this.groupTemplate(), this.groupData(), {
            injector: this.injector
        });
    }
    attachFlyout() {
        this.groupView.destroy();
        this.groupView = this.overlayRef.attach(this.templatePortal());
        this.flyoutAnchorComponentRef = this.viewContainer.createComponent(SiNavbarFlyoutAnchorComponent);
        this.flyoutAnchorComponentRef.setInput('groupId', this.groupId);
        this.flyoutOutsideClickSubscription = this.overlayRef
            .outsidePointerEvents()
            .subscribe(() => this.hideFlyout());
    }
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarVerticalGroupTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
    static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.8", type: SiNavbarVerticalGroupTriggerDirective, isStandalone: true, selector: "button[siNavbarVerticalGroupTriggerFor]", inputs: { groupTemplate: { classPropertyName: "groupTemplate", publicName: "siNavbarVerticalGroupTriggerFor", isSignal: true, isRequired: true, transformFunction: null }, groupData: { classPropertyName: "groupData", publicName: "groupData", isSignal: true, isRequired: false, transformFunction: null }, stateId: { classPropertyName: "stateId", publicName: "stateId", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { listeners: { "click": "triggered()" }, properties: { "id": "id", "class.show": "expanded()", "attr.aria-controls": "groupId", "attr.aria-expanded": "expanded()" }, classAttribute: "dropdown-toggle" }, ngImport: i0 });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarVerticalGroupTriggerDirective, decorators: [{
            type: Directive,
            args: [{
                    selector: 'button[siNavbarVerticalGroupTriggerFor]',
                    host: {
                        class: 'dropdown-toggle',
                        '[id]': 'id',
                        '[class.show]': 'expanded()',
                        '[attr.aria-controls]': 'groupId',
                        '[attr.aria-expanded]': 'expanded()'
                    }
                }]
        }], propDecorators: { groupTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "siNavbarVerticalGroupTriggerFor", required: true }] }], groupData: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupData", required: false }] }], stateId: [{ type: i0.Input, args: [{ isSignal: true, alias: "stateId", required: false }] }], expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: true }] }, { type: i0.Output, args: ["expandedChange"] }], triggered: [{
                type: HostListener,
                args: ['click']
            }] } });

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
class SiNavbarVerticalGroupComponent {
    navbar = inject(SI_NAVBAR_VERTICAL);
    groupTrigger = inject(SiNavbarVerticalGroupTriggerDirective);
    routerLinkActive = inject(RouterLinkActive, { optional: true });
    // Store initial value, as the mode for an instance never changes.
    flyout = this.groupTrigger.flyout();
    visible = computed(() => {
        return this.flyout || (!this.navbar.collapsed() && this.groupTrigger.expanded());
    }, ...(ngDevMode ? [{ debugName: "visible" }] : []));
    constructor() {
        this.routerLinkActive?.isActiveChange
            .pipe(takeUntilDestroyed())
            .subscribe(active => this.groupTrigger.active.set(active));
    }
    close() {
        this.groupTrigger.hideFlyout();
    }
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarVerticalGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiNavbarVerticalGroupComponent, isStandalone: true, selector: "si-navbar-vertical-group", host: { attributes: { "role": "group", "animate.enter": "component-enter" }, listeners: { "keydown.escape": "close()" }, properties: { "id": "groupTrigger.groupId", "attr.aria-labelledby": "groupTrigger.id" } }, ngImport: i0, template: `@if (visible()) {
    <div
      animate.leave="group-leave"
      [class.inline-group]="!flyout"
      [class.dropdown-menu]="flyout"
      [cdkTrapFocus]="flyout"
      [cdkTrapFocusAutoCapture]="flyout"
    >
      <div [class.overflow-hidden]="!flyout">
        <ng-content />
      </div>
    </div>
  }`, isInline: true, styles: [":host.component-enter .inline-group{transition:none}.inline-group{display:grid;transition-property:grid-template-rows,opacity;transition-duration:calc(.5s * var(--element-animations-enabled, 1));transition-timing-function:ease;opacity:1;grid-template-rows:1fr;overflow:hidden}@starting-style{.inline-group{grid-template-rows:0fr;opacity:0}}.inline-group.group-leave{grid-template-rows:0fr;opacity:0}.dropdown-menu{display:block;position:static}\n"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarVerticalGroupComponent, decorators: [{
            type: Component,
            args: [{ selector: 'si-navbar-vertical-group', imports: [CdkTrapFocus], template: `@if (visible()) {
    <div
      animate.leave="group-leave"
      [class.inline-group]="!flyout"
      [class.dropdown-menu]="flyout"
      [cdkTrapFocus]="flyout"
      [cdkTrapFocusAutoCapture]="flyout"
    >
      <div [class.overflow-hidden]="!flyout">
        <ng-content />
      </div>
    </div>
  }`, host: {
                        role: 'group',
                        '[id]': 'groupTrigger.groupId',
                        '[attr.aria-labelledby]': 'groupTrigger.id',
                        'animate.enter': 'component-enter'
                    }, styles: [":host.component-enter .inline-group{transition:none}.inline-group{display:grid;transition-property:grid-template-rows,opacity;transition-duration:calc(.5s * var(--element-animations-enabled, 1));transition-timing-function:ease;opacity:1;grid-template-rows:1fr;overflow:hidden}@starting-style{.inline-group{grid-template-rows:0fr;opacity:0}}.inline-group.group-leave{grid-template-rows:0fr;opacity:0}.dropdown-menu{display:block;position:static}\n"] }]
        }], ctorParameters: () => [], propDecorators: { close: [{
                type: HostListener,
                args: ['keydown.escape']
            }] } });

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
class SiNavbarVerticalHeaderComponent {
    navbar = inject(SI_NAVBAR_VERTICAL);
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarVerticalHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiNavbarVerticalHeaderComponent, isStandalone: true, selector: "si-navbar-vertical-header", host: { attributes: { "animate.enter": "component-enter" }, properties: { "class.collapsed": "navbar.collapsed()" } }, ngImport: i0, template: `
    @if (!navbar.collapsed()) {
      <div class="title si-h5 text-secondary text-truncate p-5" animate.leave="title-leave">
        <ng-content />
      </div>
    } @else {
      <si-navbar-vertical-divider class="divider" animate.leave="divider-leave" />
    }
  `, isInline: true, styles: [".divider,.title{opacity:1;transition:opacity calc(.25s * var(--element-animations-enabled, 1)) calc(.25s * var(--element-animations-enabled, 1)) ease-out}@starting-style{.divider,.title{opacity:0}}:host{display:flex;align-items:center;block-size:40px;transition:block-size calc(.5s * var(--element-animations-enabled, 1)) ease-out}:host.collapsed{block-size:13px}:host.component-enter{transition:none}:host.component-enter .title,:host.component-enter .divider{transition:none}.title.title-leave{opacity:0;transition:opacity calc(.25s * var(--element-animations-enabled, 1)) ease-in}.divider{flex:1;margin-block:0}.divider.divider-leave{opacity:0;transition-delay:0s}\n"], dependencies: [{ kind: "component", type: SiNavbarVerticalDividerComponent, selector: "si-navbar-vertical-divider" }] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarVerticalHeaderComponent, decorators: [{
            type: Component,
            args: [{ selector: 'si-navbar-vertical-header', imports: [SiNavbarVerticalDividerComponent], template: `
    @if (!navbar.collapsed()) {
      <div class="title si-h5 text-secondary text-truncate p-5" animate.leave="title-leave">
        <ng-content />
      </div>
    } @else {
      <si-navbar-vertical-divider class="divider" animate.leave="divider-leave" />
    }
  `, host: {
                        '[class.collapsed]': 'navbar.collapsed()',
                        'animate.enter': 'component-enter'
                    }, styles: [".divider,.title{opacity:1;transition:opacity calc(.25s * var(--element-animations-enabled, 1)) calc(.25s * var(--element-animations-enabled, 1)) ease-out}@starting-style{.divider,.title{opacity:0}}:host{display:flex;align-items:center;block-size:40px;transition:block-size calc(.5s * var(--element-animations-enabled, 1)) ease-out}:host.collapsed{block-size:13px}:host.component-enter{transition:none}:host.component-enter .title,:host.component-enter .divider{transition:none}.title.title-leave{opacity:0;transition:opacity calc(.25s * var(--element-animations-enabled, 1)) ease-in}.divider{flex:1;margin-block:0}.divider.divider-leave{opacity:0;transition-delay:0s}\n"] }]
        }] });

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
class SiNavbarVerticalItemComponent {
    icons = addIcons({ elementDown2 });
    item = input.required({ ...(ngDevMode ? { debugName: "item" } : {}), alias: 'si-navbar-vertical-item' });
    activeOverride = input(...(ngDevMode ? [undefined, { debugName: "activeOverride" }] : []));
    navbar = inject(SI_NAVBAR_VERTICAL);
    parent = inject(SiNavbarVerticalItemComponent, {
        skipSelf: true,
        optional: true
    });
    group = inject(SiNavbarVerticalGroupTriggerDirective, {
        optional: true,
        self: true
    });
    routerLinkActive = inject(RouterLinkActive, { optional: true });
    siLink = inject(SiLinkDirective, { optional: true });
    /**
     * Hides the badge in collapsed state
     */
    hideBadgeCollapsed = computed(() => !!this.item().hideBadgeWhenCollapsed, ...(ngDevMode ? [{ debugName: "hideBadgeCollapsed" }] : []));
    /**
     * Determines if the badge contains text-only content (not numeric)
     */
    textOnlyBadge = computed(() => {
        const badge = this.item().badge;
        return badge ? typeof badge !== 'number' : false;
    }, ...(ngDevMode ? [{ debugName: "textOnlyBadge" }] : []));
    /**
     * Formats badge value to limit display to "+99" for numbers greater than 99
     */
    formattedBadge = computed(() => {
        const badge = this.item().badge;
        if (!badge) {
            return '';
        }
        if (typeof badge === 'number') {
            return badge > 99 ? '+99' : badge.toString();
        }
        return badge.toString();
    }, ...(ngDevMode ? [{ debugName: "formattedBadge" }] : []));
    ngOnInit() {
        if (this.group && this.active) {
            this.group.expanded.set(true);
        }
    }
    triggered() {
        const item = this.item();
        if (item.type === 'action') {
            item.action(item);
            return;
        }
        this.parent?.group?.hideFlyout();
        if (!this.group) {
            this.navbar.itemTriggered();
        }
    }
    get active() {
        return (this.activeOverride() ||
            this.routerLinkActive?.isActive ||
            this.siLink?.active() ||
            ((!this.group?.expanded() || this.navbar.collapsed()) && this.group?.active()) ||
            false);
        /* eslint-disable-enable @typescript-eslint/prefer-nullish-coalescing */
    }
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarVerticalItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiNavbarVerticalItemComponent, isStandalone: true, selector: "a[si-navbar-vertical-item], button[si-navbar-vertical-item]", inputs: { item: { classPropertyName: "item", publicName: "si-navbar-vertical-item", isSignal: true, isRequired: true, transformFunction: null }, activeOverride: { classPropertyName: "activeOverride", publicName: "activeOverride", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "triggered()" }, properties: { "class.dropdown-item": "this.parent?.group?.flyout()", "class.navbar-vertical-item": "!this.parent?.group?.flyout()", "class.active": "active", "class.hide-badge-collapsed": "hideBadgeCollapsed()" }, classAttribute: "focus-inside" }, ngImport: i0, template: "@let icon = item().icon;\n@if (icon) {\n  <si-icon class=\"icon-lg\" [icon]=\"icon\" />\n}\n<div class=\"item-title text-truncate si-h5\">\n  <ng-content />\n</div>\n@if (!navbar.textOnly() && formattedBadge()) {\n  <span\n    [class]=\"[\n      'badge',\n      item().badgeColor ? `bg-${item().badgeColor}` : 'bg-default',\n      textOnlyBadge() ? 'badge-text-only' : '',\n      navbar.collapsed() ? 'badge-collapsed' : ''\n    ]\"\n    >{{ formattedBadge() }}</span\n  >\n}\n@if (group) {\n  <si-icon aria-hidden=\"true\" class=\"dropdown-caret me-0 text-body\" [icon]=\"icons.elementDown2\" />\n}\n", styles: [":host(.navbar-vertical-item){display:flex;align-items:center;position:relative;color:var(--element-text-primary);background:none;border:0;font-size:.875rem;padding-block:8px;padding-inline:0 12px;min-inline-size:0;min-block-size:40px;inline-size:100%;border-radius:0}:host(.navbar-vertical-item) .item-title{margin-inline-start:12px}:host(.navbar-vertical-item) .icon-lg{margin-inline-start:12px}:host(.navbar-vertical-item) .icon-lg+.item-title{margin-inline-start:8px}:host(.navbar-vertical-item).show .badge:not(.badge-collapsed){display:none}:host(.navbar-vertical-item):not(.show) .badge+.dropdown-caret{margin-inline:0;padding-inline:0}:host(.navbar-vertical-item).active{color:var(--element-action-primary-hover);background:var(--element-base-1-selected)}:host(.navbar-vertical-item).active:after{content:\"\";position:absolute;inset-block:0;inset-inline-start:0;inline-size:4px;background:var(--element-action-primary-hover)}:host(.navbar-vertical-item):hover{text-decoration:none;background:var(--element-base-1-hover)}:host-context(.nav-scroll > .navbar-vertical-item)+:host(.navbar-vertical-item),:host-context(.nav-scroll > si-navbar-vertical-group)+:host(.navbar-vertical-item),:host-context(.nav-scroll > si-navbar-flyout-anchor)+:host(.navbar-vertical-item){margin-block-start:8px}:host-context(.nav-text-only si-navbar-vertical-group) .item-title{margin-inline-start:0}:host-context(si-navbar-vertical-group) :host(.navbar-vertical-item){padding-inline-start:32px}:host-context(si-navbar-vertical-group) :host(.navbar-vertical-item) .item-title{font-weight:400}:host(.dropdown-item) .item-title{font-weight:400}:host-context(.nav-collapsed) .badge{position:absolute;inset-block-start:4px;inset-inline-end:6px;block-size:14px;min-inline-size:14px;border-radius:7px;font-size:.75rem;line-height:14px;padding-block:0;padding-inline:4px;font-weight:600}:host-context(.nav-collapsed) .badge.badge-text-only{color:transparent;font-size:0}:host-context(.nav-collapsed) :is(.item-title,.dropdown-caret){position:absolute!important;inline-size:1px!important;block-size:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}:host-context(.nav-collapsed).hide-badge-collapsed .badge{display:none}:host-context(.link-with-items)>:host(button){padding-inline:12px}:host-context(.link-with-items)>:host(button) .item-title,:host-context(.link-with-items)>:host(button) .icon-lg{display:none}:host-context(.link-with-items)>:host(button) .dropdown-caret{padding-inline:0}:host-context(.link-with-items)>:host(button):after{display:none}:host-context(.nav-collapsed .link-with-items)>:host(button){padding-inline:0}:host-context(.nav-collapsed .link-with-items)>:host(button):after{display:block}:host-context(.nav-collapsed .link-with-items)>:host(button) .icon-lg{display:block}:host-context(.nav-collapsed .link-with-items)>:host(a){display:none}.badge{margin-inline:auto 0}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarVerticalItemComponent, decorators: [{
            type: Component,
            args: [{ selector: 'a[si-navbar-vertical-item], button[si-navbar-vertical-item]', imports: [SiIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
                        'class': 'focus-inside',
                        '[class.dropdown-item]': 'this.parent?.group?.flyout()',
                        '[class.navbar-vertical-item]': '!this.parent?.group?.flyout()',
                        '[class.active]': 'active',
                        '[class.hide-badge-collapsed]': 'hideBadgeCollapsed()'
                    }, template: "@let icon = item().icon;\n@if (icon) {\n  <si-icon class=\"icon-lg\" [icon]=\"icon\" />\n}\n<div class=\"item-title text-truncate si-h5\">\n  <ng-content />\n</div>\n@if (!navbar.textOnly() && formattedBadge()) {\n  <span\n    [class]=\"[\n      'badge',\n      item().badgeColor ? `bg-${item().badgeColor}` : 'bg-default',\n      textOnlyBadge() ? 'badge-text-only' : '',\n      navbar.collapsed() ? 'badge-collapsed' : ''\n    ]\"\n    >{{ formattedBadge() }}</span\n  >\n}\n@if (group) {\n  <si-icon aria-hidden=\"true\" class=\"dropdown-caret me-0 text-body\" [icon]=\"icons.elementDown2\" />\n}\n", styles: [":host(.navbar-vertical-item){display:flex;align-items:center;position:relative;color:var(--element-text-primary);background:none;border:0;font-size:.875rem;padding-block:8px;padding-inline:0 12px;min-inline-size:0;min-block-size:40px;inline-size:100%;border-radius:0}:host(.navbar-vertical-item) .item-title{margin-inline-start:12px}:host(.navbar-vertical-item) .icon-lg{margin-inline-start:12px}:host(.navbar-vertical-item) .icon-lg+.item-title{margin-inline-start:8px}:host(.navbar-vertical-item).show .badge:not(.badge-collapsed){display:none}:host(.navbar-vertical-item):not(.show) .badge+.dropdown-caret{margin-inline:0;padding-inline:0}:host(.navbar-vertical-item).active{color:var(--element-action-primary-hover);background:var(--element-base-1-selected)}:host(.navbar-vertical-item).active:after{content:\"\";position:absolute;inset-block:0;inset-inline-start:0;inline-size:4px;background:var(--element-action-primary-hover)}:host(.navbar-vertical-item):hover{text-decoration:none;background:var(--element-base-1-hover)}:host-context(.nav-scroll > .navbar-vertical-item)+:host(.navbar-vertical-item),:host-context(.nav-scroll > si-navbar-vertical-group)+:host(.navbar-vertical-item),:host-context(.nav-scroll > si-navbar-flyout-anchor)+:host(.navbar-vertical-item){margin-block-start:8px}:host-context(.nav-text-only si-navbar-vertical-group) .item-title{margin-inline-start:0}:host-context(si-navbar-vertical-group) :host(.navbar-vertical-item){padding-inline-start:32px}:host-context(si-navbar-vertical-group) :host(.navbar-vertical-item) .item-title{font-weight:400}:host(.dropdown-item) .item-title{font-weight:400}:host-context(.nav-collapsed) .badge{position:absolute;inset-block-start:4px;inset-inline-end:6px;block-size:14px;min-inline-size:14px;border-radius:7px;font-size:.75rem;line-height:14px;padding-block:0;padding-inline:4px;font-weight:600}:host-context(.nav-collapsed) .badge.badge-text-only{color:transparent;font-size:0}:host-context(.nav-collapsed) :is(.item-title,.dropdown-caret){position:absolute!important;inline-size:1px!important;block-size:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}:host-context(.nav-collapsed).hide-badge-collapsed .badge{display:none}:host-context(.link-with-items)>:host(button){padding-inline:12px}:host-context(.link-with-items)>:host(button) .item-title,:host-context(.link-with-items)>:host(button) .icon-lg{display:none}:host-context(.link-with-items)>:host(button) .dropdown-caret{padding-inline:0}:host-context(.link-with-items)>:host(button):after{display:none}:host-context(.nav-collapsed .link-with-items)>:host(button){padding-inline:0}:host-context(.nav-collapsed .link-with-items)>:host(button):after{display:block}:host-context(.nav-collapsed .link-with-items)>:host(button) .icon-lg{display:block}:host-context(.nav-collapsed .link-with-items)>:host(a){display:none}.badge{margin-inline:auto 0}\n"] }]
        }], propDecorators: { item: [{ type: i0.Input, args: [{ isSignal: true, alias: "si-navbar-vertical-item", required: true }] }], activeOverride: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeOverride", required: false }] }], triggered: [{
                type: HostListener,
                args: ['click']
            }] } });

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
class SiNavbarVerticalItemLegacyComponent {
    item = input.required(...(ngDevMode ? [{ debugName: "item" }] : []));
    navbarExpandButtonText = input.required(...(ngDevMode ? [{ debugName: "navbarExpandButtonText" }] : []));
    navbarCollapseButtonText = input.required(...(ngDevMode ? [{ debugName: "navbarCollapseButtonText" }] : []));
    expanded = model.required(...(ngDevMode ? [{ debugName: "expanded" }] : []));
    flyoutItems = computed(() => {
        if (!this.navbar.collapsed()) {
            return this.item().items;
        }
        else {
            return [
                this.isLink() ? { ...this.item(), items: undefined } : [],
                this.item().items ?? []
            ].flat();
        }
    }, ...(ngDevMode ? [{ debugName: "flyoutItems" }] : []));
    isLink = computed(() => {
        const item = this.item();
        return !!item.action || !!item.link || !!item.href;
    }, ...(ngDevMode ? [{ debugName: "isLink" }] : []));
    toggleButtonLabel = computed(() => this.navbar.collapsed()
        ? this.navbarExpandButtonText()
        : this.expanded()
            ? this.navbarCollapseButtonText()
            : this.navbarExpandButtonText(), ...(ngDevMode ? [{ debugName: "toggleButtonLabel" }] : []));
    siLinks = viewChildren(SiLinkDirective, ...(ngDevMode ? [{ debugName: "siLinks" }] : []));
    itemActive = computed(() => (this.navbar.collapsed() || !this.expanded()) && this.siLinks().some(link => link.active()), ...(ngDevMode ? [{ debugName: "itemActive" }] : []));
    navbar = inject(SI_NAVBAR_VERTICAL);
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarVerticalItemLegacyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiNavbarVerticalItemLegacyComponent, isStandalone: true, selector: "si-navbar-vertical-item-legacy", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, navbarExpandButtonText: { classPropertyName: "navbarExpandButtonText", publicName: "navbarExpandButtonText", isSignal: true, isRequired: true, transformFunction: null }, navbarCollapseButtonText: { classPropertyName: "navbarCollapseButtonText", publicName: "navbarCollapseButtonText", isSignal: true, isRequired: true, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { classAttribute: "d-block mb-4" }, viewQueries: [{ propertyName: "siLinks", predicate: SiLinkDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<!-- section header -->\n@if (!isLink() && !item().items) {\n  <si-navbar-vertical-header>\n    {{ item().title | translate }}\n  </si-navbar-vertical-header>\n} @else if (isLink() && !item().items) {\n  <a [si-navbar-vertical-item]=\"item()\" [siLink]=\"item()\">\n    {{ item().title | translate }}\n  </a>\n} @else if (isLink() && item().items) {\n  <div class=\"link-with-items\">\n    <a\n      #mainLink\n      [si-navbar-vertical-item]=\"item()\"\n      [siLink]=\"item()\"\n      [activeOverride]=\"itemActive()\"\n    >\n      {{ item().title | translate }}\n    </a>\n    <button\n      type=\"button\"\n      class=\"mt-0\"\n      [si-navbar-vertical-item]=\"item()\"\n      [siNavbarVerticalGroupTriggerFor]=\"group\"\n      [activeOverride]=\"mainLink.active\"\n      [attr.aria-label]=\"toggleButtonLabel() + ' ' + item().title | translate\"\n      [(expanded)]=\"expanded\"\n    >\n      {{ item().title | translate }}\n    </button>\n  </div>\n} @else if (item().items) {\n  <button\n    type=\"button\"\n    [si-navbar-vertical-item]=\"item()\"\n    [siNavbarVerticalGroupTriggerFor]=\"group\"\n    [activeOverride]=\"itemActive()\"\n    [(expanded)]=\"expanded\"\n  >\n    {{ item().title | translate }}\n  </button>\n}\n\n<ng-template #group>\n  <si-navbar-vertical-group>\n    @for (subitem of flyoutItems(); track $index) {\n      <a activeClass=\"active\" [si-navbar-vertical-item]=\"subitem\" [siLink]=\"subitem\">\n        {{ subitem.title | translate }}\n      </a>\n    }\n  </si-navbar-vertical-group>\n</ng-template>\n", styles: [".link-with-items{display:grid;grid-template-columns:1fr auto;grid-template-areas:\"- -\" \"items items\"}si-navbar-vertical-group{grid-area:items}\n"], dependencies: [{ kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "component", type: SiNavbarVerticalItemComponent, selector: "a[si-navbar-vertical-item], button[si-navbar-vertical-item]", inputs: ["si-navbar-vertical-item", "activeOverride"] }, { kind: "directive", type: SiNavbarVerticalGroupTriggerDirective, selector: "button[siNavbarVerticalGroupTriggerFor]", inputs: ["siNavbarVerticalGroupTriggerFor", "groupData", "stateId", "expanded"], outputs: ["expandedChange"] }, { kind: "component", type: SiNavbarVerticalGroupComponent, selector: "si-navbar-vertical-group" }, { kind: "component", type: SiNavbarVerticalHeaderComponent, selector: "si-navbar-vertical-header" }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarVerticalItemLegacyComponent, decorators: [{
            type: Component,
            args: [{ selector: 'si-navbar-vertical-item-legacy', imports: [
                        SiLinkDirective,
                        SiTranslatePipe,
                        SiNavbarVerticalItemComponent,
                        SiNavbarVerticalGroupTriggerDirective,
                        SiNavbarVerticalGroupComponent,
                        SiNavbarVerticalHeaderComponent
                    ], host: {
                        'class': 'd-block mb-4'
                    }, template: "<!-- section header -->\n@if (!isLink() && !item().items) {\n  <si-navbar-vertical-header>\n    {{ item().title | translate }}\n  </si-navbar-vertical-header>\n} @else if (isLink() && !item().items) {\n  <a [si-navbar-vertical-item]=\"item()\" [siLink]=\"item()\">\n    {{ item().title | translate }}\n  </a>\n} @else if (isLink() && item().items) {\n  <div class=\"link-with-items\">\n    <a\n      #mainLink\n      [si-navbar-vertical-item]=\"item()\"\n      [siLink]=\"item()\"\n      [activeOverride]=\"itemActive()\"\n    >\n      {{ item().title | translate }}\n    </a>\n    <button\n      type=\"button\"\n      class=\"mt-0\"\n      [si-navbar-vertical-item]=\"item()\"\n      [siNavbarVerticalGroupTriggerFor]=\"group\"\n      [activeOverride]=\"mainLink.active\"\n      [attr.aria-label]=\"toggleButtonLabel() + ' ' + item().title | translate\"\n      [(expanded)]=\"expanded\"\n    >\n      {{ item().title | translate }}\n    </button>\n  </div>\n} @else if (item().items) {\n  <button\n    type=\"button\"\n    [si-navbar-vertical-item]=\"item()\"\n    [siNavbarVerticalGroupTriggerFor]=\"group\"\n    [activeOverride]=\"itemActive()\"\n    [(expanded)]=\"expanded\"\n  >\n    {{ item().title | translate }}\n  </button>\n}\n\n<ng-template #group>\n  <si-navbar-vertical-group>\n    @for (subitem of flyoutItems(); track $index) {\n      <a activeClass=\"active\" [si-navbar-vertical-item]=\"subitem\" [siLink]=\"subitem\">\n        {{ subitem.title | translate }}\n      </a>\n    }\n  </si-navbar-vertical-group>\n</ng-template>\n", styles: [".link-with-items{display:grid;grid-template-columns:1fr auto;grid-template-areas:\"- -\" \"items items\"}si-navbar-vertical-group{grid-area:items}\n"] }]
        }], propDecorators: { item: [{ type: i0.Input, args: [{ isSignal: true, alias: "item", required: true }] }], navbarExpandButtonText: [{ type: i0.Input, args: [{ isSignal: true, alias: "navbarExpandButtonText", required: true }] }], navbarCollapseButtonText: [{ type: i0.Input, args: [{ isSignal: true, alias: "navbarCollapseButtonText", required: true }] }], expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: true }] }, { type: i0.Output, args: ["expandedChange"] }], siLinks: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => SiLinkDirective), { isSignal: true }] }] } });

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
/** Required to have compiler checks on the factory template */
class SiNavbarVerticalItemGuardDirective {
    static ngTemplateContextGuard(dir, ctx) {
        return true;
    }
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarVerticalItemGuardDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
    static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.8", type: SiNavbarVerticalItemGuardDirective, isStandalone: true, selector: "[siNavbarVerticalItemGuard]", ngImport: i0 });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarVerticalItemGuardDirective, decorators: [{
            type: Directive,
            args: [{ selector: '[siNavbarVerticalItemGuard]' }]
        }] });
class SiNavbarVerticalComponent {
    icons = addIcons({ elementDoubleLeft, elementDoubleRight, elementSearch });
    /**
     * Whether the navbar-vertical is collapsed.
     *
     * @defaultValue false
     */
    collapsed = model(false, ...(ngDevMode ? [{ debugName: "collapsed" }] : []));
    /**
     * Toggles search bar
     *
     * @defaultValue false
     */
    searchable = input(false, { ...(ngDevMode ? { debugName: "searchable" } : {}), transform: booleanAttribute });
    /**
     * Placeholder text for search
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_NAVBAR_VERTICAL.SEARCH_PLACEHOLDER:Search ...`)
     * ```
     */
    searchPlaceholder = input(t(() => $localize `:@@SI_NAVBAR_VERTICAL.SEARCH_PLACEHOLDER:Search ...`), ...(ngDevMode ? [{ debugName: "searchPlaceholder" }] : []));
    /**
     * List of vertical navigation items
     *
     * @defaultValue []
     */
    items = model([], ...(ngDevMode ? [{ debugName: "items" }] : []));
    /**
     * Set to `true` if there are no icons
     *
     * @defaultValue false
     */
    /**
     * Set to `true` if there are no icons
     *
     * @defaultValue false
     */
    textOnly = input(false, { ...(ngDevMode ? { debugName: "textOnly" } : {}), transform: booleanAttribute });
    /**
     * Set to false to hide the vertical navbar
     *
     * @defaultValue true
     */
    /**
     * Set to false to hide the vertical navbar
     *
     * @defaultValue true
     */
    visible = input(true, { ...(ngDevMode ? { debugName: "visible" } : {}), transform: booleanAttribute });
    /**
     * Text for the navbar expand button. Required for a11y
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_NAVBAR_VERTICAL.EXPAND:Expand`)
     * ```
     */
    navbarExpandButtonText = input(t(() => $localize `:@@SI_NAVBAR_VERTICAL.EXPAND:Expand`), ...(ngDevMode ? [{ debugName: "navbarExpandButtonText" }] : []));
    /**
     * Text for the navbar collapse button. Required for a11y
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_NAVBAR_VERTICAL.COLLAPSE:Collapse`)
     * ```
     */
    navbarCollapseButtonText = input(t(() => $localize `:@@SI_NAVBAR_VERTICAL.COLLAPSE:Collapse`), ...(ngDevMode ? [{ debugName: "navbarCollapseButtonText" }] : []));
    /**
     * An optional stateId to uniquely identify a component instance.
     * Required for persistence of ui state.
     */
    stateId = input(...(ngDevMode ? [undefined, { debugName: "stateId" }] : []));
    /**
     * Label for the skip link to the vertical navbar
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_NAVBAR_VERTICAL.SKIP_LINK.NAVIGATION_LABEL:Navigation`)
     * ```
     */
    skipLinkNavigationLabel = input(t(() => $localize `:@@SI_NAVBAR_VERTICAL.SKIP_LINK.NAVIGATION_LABEL:Navigation`), ...(ngDevMode ? [{ debugName: "skipLinkNavigationLabel" }] : []));
    /**
     * Label for the skip link to main content
     *
     * @defaultValue
     * ```
     * t(() => $localize`:@@SI_NAVBAR_VERTICAL.SKIP_LINK.MAIN_LABEL:Main content`)
     * ```
     */
    skipLinkMainContentLabel = input(t(() => $localize `:@@SI_NAVBAR_VERTICAL.SKIP_LINK.MAIN_LABEL:Main content`), ...(ngDevMode ? [{ debugName: "skipLinkMainContentLabel" }] : []));
    /**
     * Debounce time for the search input
     * @defaultValue 400
     */
    searchDebounceTime = input(400, ...(ngDevMode ? [{ debugName: "searchDebounceTime" }] : []));
    /**
     * Output for search bar input
     */
    searchEvent = output();
    searchBar = viewChild.required(SiSearchBarComponent);
    activatedRoute = inject(ActivatedRoute, { optional: true });
    // Is required to prevent the navbar from running the padding animation on creation.
    ready = true;
    uiStateService = inject(SI_UI_STATE_SERVICE, { optional: true });
    breakpointObserver = inject(BreakpointObserver);
    navbarItems = viewChildren(SiNavbarVerticalItemComponent, ...(ngDevMode ? [{ debugName: "navbarItems" }] : []));
    navbarItemsLegacy = viewChildren(SiNavbarVerticalItemLegacyComponent, ...(ngDevMode ? [{ debugName: "navbarItemsLegacy" }] : []));
    itemsToComponents = computed(() => new Map([...this.navbarItems(), ...this.navbarItemsLegacy()].map(component => [
        component.item(), // to have a broader key type allowed
        component
    ])), ...(ngDevMode ? [{ debugName: "itemsToComponents" }] : []));
    smallScreen = signal(false, ...(ngDevMode ? [{ debugName: "smallScreen" }] : []));
    uiStateExpandedItems = signal({}, ...(ngDevMode ? [{ debugName: "uiStateExpandedItems" }] : []));
    // Indicates if the user prefers a collapsed navbar. Relevant for resizing.
    preferCollapse = false;
    constructor() {
        this.breakpointObserver
            .observe(`(max-width: ${BOOTSTRAP_BREAKPOINTS.lgMinimum}px)`)
            .pipe(takeUntilDestroyed())
            .subscribe(({ matches }) => {
            this.collapsed.set(matches || this.preferCollapse);
            this.smallScreen.set(matches);
        });
    }
    ngOnChanges(changes) {
        if (changes.collapsed) {
            this.preferCollapse = this.collapsed();
        }
    }
    ngOnInit() {
        const stateId = this.stateId();
        if (this.uiStateService && stateId) {
            this.uiStateService.load(stateId).then(uiState => {
                if (uiState) {
                    this.preferCollapse = uiState.preferCollapse;
                    this.collapsed.set(this.smallScreen() ? this.collapsed() : this.preferCollapse);
                    this.uiStateExpandedItems.set(uiState.expandedItems);
                }
            });
        }
    }
    toggleCollapse() {
        if (this.collapsed()) {
            this.expand();
        }
        else {
            this.collapse();
        }
    }
    /** Expands the vertical navbar. */
    expand() {
        this.collapsed.set(false);
        if (!this.smallScreen()) {
            this.preferCollapse = this.collapsed();
        }
        this.saveUIState();
    }
    /** Collapses the vertical navbar. */
    collapse() {
        this.collapsed.set(true);
        if (!this.smallScreen()) {
            this.preferCollapse = this.collapsed();
        }
        this.saveUIState();
    }
    expandForSearch() {
        this.expand();
        setTimeout(() => this.searchBar().focus());
    }
    doSearch(event) {
        this.searchEvent.emit(event);
    }
    /** @internal */
    groupTriggered() {
        this.saveUIState();
        const itemToComponentMap = this.itemsToComponents();
        this.items.set(this.items().map(item => {
            const component = itemToComponentMap.get(item);
            if (!component) {
                return item;
            }
            if (component instanceof SiNavbarVerticalItemLegacyComponent) {
                return {
                    ...item,
                    expanded: component.expanded()
                };
            }
            if (component.group) {
                return {
                    ...item,
                    expanded: component.group.expanded()
                };
            }
            return item;
        }));
        this.collapsed.set(false);
    }
    saveUIState() {
        const stateId = this.stateId();
        if (!this.uiStateService || !stateId) {
            return;
        }
        const expandedGroups = this.navbarItems()
            .filter(item => item.item().id && item.group?.expanded())
            .map(item => [item.item().id, true]);
        const expandedGroupsLegacy = this.navbarItemsLegacy()
            .filter(item => item.item().id && item.expanded())
            .map(item => [item.item().id, true]);
        this.uiStateService.save(stateId, {
            preferCollapse: this.preferCollapse,
            expandedItems: Object.fromEntries([...expandedGroups, ...expandedGroupsLegacy])
        });
    }
    /** @internal */
    itemTriggered() {
        if (this.smallScreen()) {
            this.collapsed.set(true);
        }
    }
    isLegacyStyle(item) {
        return !('type' in item && item.type !== 'check' && item.type !== 'radio');
    }
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarVerticalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiNavbarVerticalComponent, isStandalone: true, selector: "si-navbar-vertical", inputs: { collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, textOnly: { classPropertyName: "textOnly", publicName: "textOnly", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, navbarExpandButtonText: { classPropertyName: "navbarExpandButtonText", publicName: "navbarExpandButtonText", isSignal: true, isRequired: false, transformFunction: null }, navbarCollapseButtonText: { classPropertyName: "navbarCollapseButtonText", publicName: "navbarCollapseButtonText", isSignal: true, isRequired: false, transformFunction: null }, stateId: { classPropertyName: "stateId", publicName: "stateId", isSignal: true, isRequired: false, transformFunction: null }, skipLinkNavigationLabel: { classPropertyName: "skipLinkNavigationLabel", publicName: "skipLinkNavigationLabel", isSignal: true, isRequired: false, transformFunction: null }, skipLinkMainContentLabel: { classPropertyName: "skipLinkMainContentLabel", publicName: "skipLinkMainContentLabel", isSignal: true, isRequired: false, transformFunction: null }, searchDebounceTime: { classPropertyName: "searchDebounceTime", publicName: "searchDebounceTime", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange", items: "itemsChange", searchEvent: "searchEvent" }, host: { properties: { "class.nav-collapsed": "collapsed()", "class.nav-text-only": "textOnly()", "class.visible": "visible()", "class.ready": "this.ready" }, classAttribute: "si-layout-inner" }, providers: [{ provide: SI_NAVBAR_VERTICAL, useExisting: SiNavbarVerticalComponent }], viewQueries: [{ propertyName: "searchBar", first: true, predicate: SiSearchBarComponent, descendants: true, isSignal: true }, { propertyName: "navbarItems", predicate: SiNavbarVerticalItemComponent, descendants: true, isSignal: true }, { propertyName: "navbarItemsLegacy", predicate: SiNavbarVerticalItemLegacyComponent, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "@if (visible()) {\n  @if (smallScreen() && !collapsed()) {\n    <div class=\"modal-backdrop\" animate.leave=\"backdrop-leave\" (click)=\"toggleCollapse()\"></div>\n  }\n  <nav\n    tabindex=\"-1\"\n    class=\"bg-base-1 focus-sub-inside\"\n    [class.expanded]=\"!collapsed()\"\n    [siSkipLinkTarget]=\"skipLinkNavigationLabel()\"\n    [class.text-only]=\"textOnly()\"\n  >\n    <div class=\"collapse-toggle ms-auto\">\n      <div class=\"mobile-drawer focus-inside navbar-vertical-no-collapse\">\n        <button\n          type=\"button\"\n          class=\"btn btn-icon btn-ghost\"\n          [attr.aria-label]=\"\n            (collapsed() ? navbarExpandButtonText() : navbarCollapseButtonText()) | translate\n          \"\n          [attr.aria-expanded]=\"!collapsed()\"\n          (click)=\"toggleCollapse()\"\n        >\n          <si-icon\n            class=\"flip-rtl\"\n            [icon]=\"collapsed() ? icons.elementDoubleRight : icons.elementDoubleLeft\"\n          />\n        </button>\n      </div>\n    </div>\n    @if (searchable()) {\n      <div class=\"nav-search\">\n        <si-search-bar\n          class=\"mx-4\"\n          colorVariant=\"base-0\"\n          prohibitedCharacters=\"*?\"\n          [placeholder]=\"searchPlaceholder() | translate\"\n          [debounceTime]=\"searchDebounceTime()\"\n          [showIcon]=\"true\"\n          (searchChange)=\"doSearch($event)\"\n        />\n        <button\n          type=\"button\"\n          class=\"btn-search bg-base-0 p-3 mx-4 mobile navbar-vertical-no-collapse text-secondary\"\n          [attr.aria-label]=\"searchPlaceholder() | translate\"\n          (click)=\"expandForSearch()\"\n        >\n          <si-icon class=\"icon\" [icon]=\"icons.elementSearch\" />\n        </button>\n      </div>\n    }\n    <div class=\"nav-scroll\">\n      @for (item of items(); track $index) {\n        @if (isLegacyStyle(item)) {\n          <si-navbar-vertical-item-legacy\n            [item]=\"item\"\n            [navbarExpandButtonText]=\"navbarExpandButtonText() | translate\"\n            [navbarCollapseButtonText]=\"navbarCollapseButtonText() | translate\"\n            [expanded]=\"\n              (item.id ? uiStateExpandedItems()[item.id] : undefined) ?? item.expanded ?? false\n            \"\n          />\n        } @else {\n          <ng-container *ngTemplateOutlet=\"navbarItems; context: { item }\" />\n        }\n      }\n    </div>\n  </nav>\n}\n<main\n  class=\"si-layout-inner focus-none\"\n  tabindex=\"-1\"\n  [siSkipLinkTarget]=\"skipLinkMainContentLabel()\"\n>\n  <ng-content />\n</main>\n\n<ng-template #navbarItems let-item=\"item\" siNavbarVerticalItemGuard>\n  @switch (item.type) {\n    @case ('group') {\n      <button\n        type=\"button\"\n        placement=\"end\"\n        [si-navbar-vertical-item]=\"item\"\n        [stateId]=\"item.id\"\n        [siNavbarVerticalGroupTriggerFor]=\"group\"\n        [groupData]=\"{ group: item }\"\n        [expanded]=\"\n          (item.id ? uiStateExpandedItems()[item.id] : undefined) ?? item.expanded ?? false\n        \"\n        [siTooltip]=\"item.label | translate\"\n        [isDisabled]=\"!collapsed()\"\n      >\n        {{ item.label | translate }}\n      </button>\n    }\n    @case ('action') {\n      <button\n        type=\"button\"\n        placement=\"end\"\n        [si-navbar-vertical-item]=\"item\"\n        [activeOverride]=\"item.active\"\n        [siTooltip]=\"item.label | translate\"\n        [isDisabled]=\"!collapsed()\"\n      >\n        {{ item.label | translate }}\n      </button>\n    }\n    @case ('router-link') {\n      <a\n        routerLinkActive\n        placement=\"end\"\n        [routerLinkActiveOptions]=\"item.activeMatchOptions ?? { exact: false }\"\n        [si-navbar-vertical-item]=\"item\"\n        [routerLink]=\"item.routerLink\"\n        [queryParams]=\"item.extras?.queryParams\"\n        [queryParamsHandling]=\"item.extras?.queryParamsHandling\"\n        [fragment]=\"item.extras?.fragment\"\n        [state]=\"item.extras?.state\"\n        [relativeTo]=\"item.extras?.relativeTo ?? this.activatedRoute\"\n        [preserveFragment]=\"item.extras?.preserveFragment\"\n        [skipLocationChange]=\"item.extras?.skipLocationChange\"\n        [replaceUrl]=\"item.extras?.replaceUrl\"\n        [siTooltip]=\"item.label | translate\"\n        [isDisabled]=\"!collapsed()\"\n      >\n        {{ item.label | translate }}\n      </a>\n    }\n    @case ('link') {\n      <a\n        placement=\"end\"\n        [si-navbar-vertical-item]=\"item\"\n        [href]=\"item.href\"\n        [target]=\"item.target\"\n        [siTooltip]=\"item.label | translate\"\n        [isDisabled]=\"!collapsed()\"\n      >\n        {{ item.label | translate }}\n      </a>\n    }\n    @case ('divider') {\n      <si-navbar-vertical-divider />\n    }\n    @case ('header') {\n      <si-navbar-vertical-header>\n        {{ item.label | translate }}\n      </si-navbar-vertical-header>\n    }\n  }\n</ng-template>\n\n<ng-template #group let-group=\"group\" siNavbarVerticalItemGuard>\n  <si-navbar-vertical-group routerLinkActive>\n    @for (item of group.children; track $index) {\n      <!-- a copy from above, but we have to nest the items to make routerLink active work -->\n      @switch (item.type) {\n        @case ('router-link') {\n          <a\n            routerLinkActive\n            [routerLinkActiveOptions]=\"item.activeMatchOptions ?? { exact: false }\"\n            [si-navbar-vertical-item]=\"item\"\n            [routerLink]=\"item.routerLink\"\n            [queryParams]=\"item.extras?.queryParams\"\n            [queryParamsHandling]=\"item.extras?.queryParamsHandling\"\n            [fragment]=\"item.extras?.fragment\"\n            [state]=\"item.extras?.state\"\n            [relativeTo]=\"item.extras?.relativeTo ?? this.activatedRoute\"\n            [preserveFragment]=\"item.extras?.preserveFragment\"\n            [skipLocationChange]=\"item.extras?.skipLocationChange\"\n            [replaceUrl]=\"item.extras?.replaceUrl\"\n          >\n            {{ item.label | translate }}\n          </a>\n        }\n        @case ('action') {\n          <button type=\"button\" [si-navbar-vertical-item]=\"item\" [activeOverride]=\"item.active\">\n            {{ item.label | translate }}\n          </button>\n        }\n        @case ('link') {\n          <a [si-navbar-vertical-item]=\"item\" [href]=\"item.href\" [target]=\"item.target\">\n            {{ item.label | translate }}\n          </a>\n        }\n      }\n    }\n  </si-navbar-vertical-group>\n</ng-template>\n", styles: [":host{display:block;transition:padding-inline-start calc(.5s * var(--element-animations-enabled, 1));--si-layout-header-first-element-offset: 40px}:host.ready:not(.visible){padding-inline-start:0!important}nav{display:flex;flex-direction:column;position:fixed;z-index:1031;inset-block-start:calc(48px + var(--element-titlebar-spacing, 0px) + var(--element-system-banner-spacing, 0px));inset-block-end:0;inset-inline-start:0;inline-size:0;transition:inline-size calc(.5s * var(--element-animations-enabled, 1)) ease}:host(.nav-collapsed) nav{z-index:1030}nav.expanded{inline-size:240px}.nav-scroll{overflow-x:hidden;min-block-size:0;flex:1 0 0;overflow-y:auto;margin-block-start:8px}:host(.nav-collapsed) .nav-scroll{display:none}.mobile-drawer{display:block;text-align:end;border:0;inline-size:48px;color:var(--element-text-primary);padding-block:4px;padding-inline:8px;margin-block-start:8px;border-start-end-radius:var(--element-radius-2);border-end-end-radius:var(--element-radius-2);transition:inline-size calc(.5s * var(--element-animations-enabled, 1)) ease,background-color calc(.5s * var(--element-animations-enabled, 1)) ease,box-shadow calc(.5s * var(--element-animations-enabled, 1)) ease}:host(:not(.nav-collapsed)) .mobile-drawer{inline-size:240px}.nav-search{display:flex;align-items:center;block-size:40px;margin-block-start:8px;overflow-x:hidden}:host(.nav-collapsed) .nav-search{display:none}si-search-bar{inline-size:100%}.btn-search{display:none;border:0;border-radius:var(--element-radius-2)}:host.nav-collapsed .mobile-drawer{border:0;color:var(--element-text-primary);background:var(--element-base-1);text-align:end;box-shadow:0 0 4px var(--element-box-shadow-color-1),0 4px 4px var(--element-box-shadow-color-2)}:host.nav-collapsed si-search-bar{display:none}.modal-backdrop{z-index:1031;transition:opacity calc(.15s * var(--element-animations-enabled, 1)) linear;opacity:1}@starting-style{.modal-backdrop{opacity:0}}.modal-backdrop.backdrop-leave{opacity:0}@media(min-width:576px){:host:not(.nav-text-only),:host:not(.nav-collapsed){--si-layout-header-first-element-offset: 0}:host:not(.nav-text-only){padding-inline-start:48px}:host:not(.nav-text-only) .mobile-drawer{background:transparent;box-shadow:none}:host:not(.nav-text-only).nav-collapsed .nav-scroll{display:block}:host:not(.nav-text-only).nav-collapsed .nav-search{display:flex}.btn-search{display:none}:host.nav-collapsed .btn-search{display:block}:host:not(.nav-text-only) nav{inline-size:48px}:host:not(.nav-text-only) nav.expanded{inline-size:240px}}@media(min-width:992px){:host:not(.nav-collapsed){padding-inline-start:240px}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "component", type: SiNavbarVerticalDividerComponent, selector: "si-navbar-vertical-divider" }, { kind: "component", type: SiNavbarVerticalGroupComponent, selector: "si-navbar-vertical-group" }, { kind: "directive", type: SiNavbarVerticalGroupTriggerDirective, selector: "button[siNavbarVerticalGroupTriggerFor]", inputs: ["siNavbarVerticalGroupTriggerFor", "groupData", "stateId", "expanded"], outputs: ["expandedChange"] }, { kind: "component", type: SiNavbarVerticalHeaderComponent, selector: "si-navbar-vertical-header" }, { kind: "component", type: SiNavbarVerticalItemComponent, selector: "a[si-navbar-vertical-item], button[si-navbar-vertical-item]", inputs: ["si-navbar-vertical-item", "activeOverride"] }, { kind: "directive", type: SiNavbarVerticalItemGuardDirective, selector: "[siNavbarVerticalItemGuard]" }, { kind: "component", type: SiNavbarVerticalItemLegacyComponent, selector: "si-navbar-vertical-item-legacy", inputs: ["item", "navbarExpandButtonText", "navbarCollapseButtonText", "expanded"], outputs: ["expandedChange"] }, { kind: "component", type: SiSearchBarComponent, selector: "si-search-bar", inputs: ["debounceTime", "prohibitedCharacters", "placeholder", "showIcon", "tabbable", "value", "readonly", "colorVariant", "disabled", "clearButtonAriaLabel"], outputs: ["searchChange"] }, { kind: "directive", type: SiSkipLinkTargetDirective, selector: "[siSkipLinkTarget]", inputs: ["siSkipLinkTarget"] }, { kind: "directive", type: SiTooltipDirective, selector: "[siTooltip]", inputs: ["siTooltip", "placement", "isDisabled", "tooltipContext"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiNavbarVerticalComponent, decorators: [{
            type: Component,
            args: [{ selector: 'si-navbar-vertical', imports: [
                        NgTemplateOutlet,
                        RouterLink,
                        RouterLinkActive,
                        SiIconComponent,
                        SiNavbarVerticalDividerComponent,
                        SiNavbarVerticalGroupComponent,
                        SiNavbarVerticalGroupTriggerDirective,
                        SiNavbarVerticalHeaderComponent,
                        SiNavbarVerticalItemComponent,
                        SiNavbarVerticalItemGuardDirective,
                        SiNavbarVerticalItemLegacyComponent,
                        SiSearchBarComponent,
                        SiSkipLinkTargetDirective,
                        SiTranslatePipe,
                        SiTooltipDirective
                    ], providers: [{ provide: SI_NAVBAR_VERTICAL, useExisting: SiNavbarVerticalComponent }], host: {
                        class: 'si-layout-inner',
                        '[class.nav-collapsed]': 'collapsed()',
                        '[class.nav-text-only]': 'textOnly()',
                        '[class.visible]': 'visible()'
                    }, template: "@if (visible()) {\n  @if (smallScreen() && !collapsed()) {\n    <div class=\"modal-backdrop\" animate.leave=\"backdrop-leave\" (click)=\"toggleCollapse()\"></div>\n  }\n  <nav\n    tabindex=\"-1\"\n    class=\"bg-base-1 focus-sub-inside\"\n    [class.expanded]=\"!collapsed()\"\n    [siSkipLinkTarget]=\"skipLinkNavigationLabel()\"\n    [class.text-only]=\"textOnly()\"\n  >\n    <div class=\"collapse-toggle ms-auto\">\n      <div class=\"mobile-drawer focus-inside navbar-vertical-no-collapse\">\n        <button\n          type=\"button\"\n          class=\"btn btn-icon btn-ghost\"\n          [attr.aria-label]=\"\n            (collapsed() ? navbarExpandButtonText() : navbarCollapseButtonText()) | translate\n          \"\n          [attr.aria-expanded]=\"!collapsed()\"\n          (click)=\"toggleCollapse()\"\n        >\n          <si-icon\n            class=\"flip-rtl\"\n            [icon]=\"collapsed() ? icons.elementDoubleRight : icons.elementDoubleLeft\"\n          />\n        </button>\n      </div>\n    </div>\n    @if (searchable()) {\n      <div class=\"nav-search\">\n        <si-search-bar\n          class=\"mx-4\"\n          colorVariant=\"base-0\"\n          prohibitedCharacters=\"*?\"\n          [placeholder]=\"searchPlaceholder() | translate\"\n          [debounceTime]=\"searchDebounceTime()\"\n          [showIcon]=\"true\"\n          (searchChange)=\"doSearch($event)\"\n        />\n        <button\n          type=\"button\"\n          class=\"btn-search bg-base-0 p-3 mx-4 mobile navbar-vertical-no-collapse text-secondary\"\n          [attr.aria-label]=\"searchPlaceholder() | translate\"\n          (click)=\"expandForSearch()\"\n        >\n          <si-icon class=\"icon\" [icon]=\"icons.elementSearch\" />\n        </button>\n      </div>\n    }\n    <div class=\"nav-scroll\">\n      @for (item of items(); track $index) {\n        @if (isLegacyStyle(item)) {\n          <si-navbar-vertical-item-legacy\n            [item]=\"item\"\n            [navbarExpandButtonText]=\"navbarExpandButtonText() | translate\"\n            [navbarCollapseButtonText]=\"navbarCollapseButtonText() | translate\"\n            [expanded]=\"\n              (item.id ? uiStateExpandedItems()[item.id] : undefined) ?? item.expanded ?? false\n            \"\n          />\n        } @else {\n          <ng-container *ngTemplateOutlet=\"navbarItems; context: { item }\" />\n        }\n      }\n    </div>\n  </nav>\n}\n<main\n  class=\"si-layout-inner focus-none\"\n  tabindex=\"-1\"\n  [siSkipLinkTarget]=\"skipLinkMainContentLabel()\"\n>\n  <ng-content />\n</main>\n\n<ng-template #navbarItems let-item=\"item\" siNavbarVerticalItemGuard>\n  @switch (item.type) {\n    @case ('group') {\n      <button\n        type=\"button\"\n        placement=\"end\"\n        [si-navbar-vertical-item]=\"item\"\n        [stateId]=\"item.id\"\n        [siNavbarVerticalGroupTriggerFor]=\"group\"\n        [groupData]=\"{ group: item }\"\n        [expanded]=\"\n          (item.id ? uiStateExpandedItems()[item.id] : undefined) ?? item.expanded ?? false\n        \"\n        [siTooltip]=\"item.label | translate\"\n        [isDisabled]=\"!collapsed()\"\n      >\n        {{ item.label | translate }}\n      </button>\n    }\n    @case ('action') {\n      <button\n        type=\"button\"\n        placement=\"end\"\n        [si-navbar-vertical-item]=\"item\"\n        [activeOverride]=\"item.active\"\n        [siTooltip]=\"item.label | translate\"\n        [isDisabled]=\"!collapsed()\"\n      >\n        {{ item.label | translate }}\n      </button>\n    }\n    @case ('router-link') {\n      <a\n        routerLinkActive\n        placement=\"end\"\n        [routerLinkActiveOptions]=\"item.activeMatchOptions ?? { exact: false }\"\n        [si-navbar-vertical-item]=\"item\"\n        [routerLink]=\"item.routerLink\"\n        [queryParams]=\"item.extras?.queryParams\"\n        [queryParamsHandling]=\"item.extras?.queryParamsHandling\"\n        [fragment]=\"item.extras?.fragment\"\n        [state]=\"item.extras?.state\"\n        [relativeTo]=\"item.extras?.relativeTo ?? this.activatedRoute\"\n        [preserveFragment]=\"item.extras?.preserveFragment\"\n        [skipLocationChange]=\"item.extras?.skipLocationChange\"\n        [replaceUrl]=\"item.extras?.replaceUrl\"\n        [siTooltip]=\"item.label | translate\"\n        [isDisabled]=\"!collapsed()\"\n      >\n        {{ item.label | translate }}\n      </a>\n    }\n    @case ('link') {\n      <a\n        placement=\"end\"\n        [si-navbar-vertical-item]=\"item\"\n        [href]=\"item.href\"\n        [target]=\"item.target\"\n        [siTooltip]=\"item.label | translate\"\n        [isDisabled]=\"!collapsed()\"\n      >\n        {{ item.label | translate }}\n      </a>\n    }\n    @case ('divider') {\n      <si-navbar-vertical-divider />\n    }\n    @case ('header') {\n      <si-navbar-vertical-header>\n        {{ item.label | translate }}\n      </si-navbar-vertical-header>\n    }\n  }\n</ng-template>\n\n<ng-template #group let-group=\"group\" siNavbarVerticalItemGuard>\n  <si-navbar-vertical-group routerLinkActive>\n    @for (item of group.children; track $index) {\n      <!-- a copy from above, but we have to nest the items to make routerLink active work -->\n      @switch (item.type) {\n        @case ('router-link') {\n          <a\n            routerLinkActive\n            [routerLinkActiveOptions]=\"item.activeMatchOptions ?? { exact: false }\"\n            [si-navbar-vertical-item]=\"item\"\n            [routerLink]=\"item.routerLink\"\n            [queryParams]=\"item.extras?.queryParams\"\n            [queryParamsHandling]=\"item.extras?.queryParamsHandling\"\n            [fragment]=\"item.extras?.fragment\"\n            [state]=\"item.extras?.state\"\n            [relativeTo]=\"item.extras?.relativeTo ?? this.activatedRoute\"\n            [preserveFragment]=\"item.extras?.preserveFragment\"\n            [skipLocationChange]=\"item.extras?.skipLocationChange\"\n            [replaceUrl]=\"item.extras?.replaceUrl\"\n          >\n            {{ item.label | translate }}\n          </a>\n        }\n        @case ('action') {\n          <button type=\"button\" [si-navbar-vertical-item]=\"item\" [activeOverride]=\"item.active\">\n            {{ item.label | translate }}\n          </button>\n        }\n        @case ('link') {\n          <a [si-navbar-vertical-item]=\"item\" [href]=\"item.href\" [target]=\"item.target\">\n            {{ item.label | translate }}\n          </a>\n        }\n      }\n    }\n  </si-navbar-vertical-group>\n</ng-template>\n", styles: [":host{display:block;transition:padding-inline-start calc(.5s * var(--element-animations-enabled, 1));--si-layout-header-first-element-offset: 40px}:host.ready:not(.visible){padding-inline-start:0!important}nav{display:flex;flex-direction:column;position:fixed;z-index:1031;inset-block-start:calc(48px + var(--element-titlebar-spacing, 0px) + var(--element-system-banner-spacing, 0px));inset-block-end:0;inset-inline-start:0;inline-size:0;transition:inline-size calc(.5s * var(--element-animations-enabled, 1)) ease}:host(.nav-collapsed) nav{z-index:1030}nav.expanded{inline-size:240px}.nav-scroll{overflow-x:hidden;min-block-size:0;flex:1 0 0;overflow-y:auto;margin-block-start:8px}:host(.nav-collapsed) .nav-scroll{display:none}.mobile-drawer{display:block;text-align:end;border:0;inline-size:48px;color:var(--element-text-primary);padding-block:4px;padding-inline:8px;margin-block-start:8px;border-start-end-radius:var(--element-radius-2);border-end-end-radius:var(--element-radius-2);transition:inline-size calc(.5s * var(--element-animations-enabled, 1)) ease,background-color calc(.5s * var(--element-animations-enabled, 1)) ease,box-shadow calc(.5s * var(--element-animations-enabled, 1)) ease}:host(:not(.nav-collapsed)) .mobile-drawer{inline-size:240px}.nav-search{display:flex;align-items:center;block-size:40px;margin-block-start:8px;overflow-x:hidden}:host(.nav-collapsed) .nav-search{display:none}si-search-bar{inline-size:100%}.btn-search{display:none;border:0;border-radius:var(--element-radius-2)}:host.nav-collapsed .mobile-drawer{border:0;color:var(--element-text-primary);background:var(--element-base-1);text-align:end;box-shadow:0 0 4px var(--element-box-shadow-color-1),0 4px 4px var(--element-box-shadow-color-2)}:host.nav-collapsed si-search-bar{display:none}.modal-backdrop{z-index:1031;transition:opacity calc(.15s * var(--element-animations-enabled, 1)) linear;opacity:1}@starting-style{.modal-backdrop{opacity:0}}.modal-backdrop.backdrop-leave{opacity:0}@media(min-width:576px){:host:not(.nav-text-only),:host:not(.nav-collapsed){--si-layout-header-first-element-offset: 0}:host:not(.nav-text-only){padding-inline-start:48px}:host:not(.nav-text-only) .mobile-drawer{background:transparent;box-shadow:none}:host:not(.nav-text-only).nav-collapsed .nav-scroll{display:block}:host:not(.nav-text-only).nav-collapsed .nav-search{display:flex}.btn-search{display:none}:host.nav-collapsed .btn-search{display:block}:host:not(.nav-text-only) nav{inline-size:48px}:host:not(.nav-text-only) nav.expanded{inline-size:240px}}@media(min-width:992px){:host:not(.nav-collapsed){padding-inline-start:240px}}\n"] }]
        }], ctorParameters: () => [], propDecorators: { collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }, { type: i0.Output, args: ["collapsedChange"] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], searchPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchPlaceholder", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }, { type: i0.Output, args: ["itemsChange"] }], textOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "textOnly", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }], navbarExpandButtonText: [{ type: i0.Input, args: [{ isSignal: true, alias: "navbarExpandButtonText", required: false }] }], navbarCollapseButtonText: [{ type: i0.Input, args: [{ isSignal: true, alias: "navbarCollapseButtonText", required: false }] }], stateId: [{ type: i0.Input, args: [{ isSignal: true, alias: "stateId", required: false }] }], skipLinkNavigationLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "skipLinkNavigationLabel", required: false }] }], skipLinkMainContentLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "skipLinkMainContentLabel", required: false }] }], searchDebounceTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchDebounceTime", required: false }] }], searchEvent: [{ type: i0.Output, args: ["searchEvent"] }], searchBar: [{ type: i0.ViewChild, args: [i0.forwardRef(() => SiSearchBarComponent), { isSignal: true }] }], ready: [{
                type: HostBinding,
                args: ['class.ready']
            }], navbarItems: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => SiNavbarVerticalItemComponent), { isSignal: true }] }], navbarItemsLegacy: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => SiNavbarVerticalItemLegacyComponent), { isSignal: true }] }] } });

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

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

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

export { SiNavbarVerticalComponent, SiNavbarVerticalItemGuardDirective, SiNavbarVerticalModule };
//# sourceMappingURL=siemens-element-ng-navbar-vertical.mjs.map
