import { __decorate } from 'tslib';
import * as i0 from '@angular/core';
import { EventEmitter, signal, booleanAttribute, HostBinding, Output, Input, ChangeDetectionStrategy, Component, viewChild, viewChildren, inject, ChangeDetectorRef, ContentChildren, NgModule } from '@angular/core';
import { elementRight3, elementLeft3, elementCancel } from '@siemens/element-icons';
import { isRTL, WebComponentContentChildren } from '@siemens/element-ng/common';
import { addIcons, SiIconComponent } from '@siemens/element-ng/icon';
import { SiResizeObserverDirective } from '@siemens/element-ng/resize-observer';
import { SiTranslatePipe } from '@siemens/element-translate-ng/translate';
import { asyncScheduler } from 'rxjs';
import { first, observeOn } from 'rxjs/operators';

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
/* eslint-disable @angular-eslint/prefer-output-emitter-ref */
/**
 * @deprecated Use the new components from `@siemens/element-ng/tabs` instead.
 * See {@link https://element.siemens.io/components/layout-navigation/tabs/#code}
 * for usage instructions.
 */
class SiTabLegacyComponent {
    static idCounter = 0;
    /** Title of the tab item. */
    heading;
    /** Icon of the tab item. */
    icon;
    /** Alternative name or translation key for icon. Used for A11y. */
    iconAltText;
    /**
     * Additional badge content. A value of
     * - `true` will render a red dot
     * - any string without a `badgeColor` will render a red dot with text
     * - any string with a `badgeColor` will render a normal badge
     */
    badgeContent;
    /**
     * Background color of the badge.
     * If no color is provided a red dot badge will be rendered.
     */
    badgeColor;
    /**
     * Disables the tab.
     *
     * @defaultValue false
     */
    disabled = false;
    /**
     * Close the current tab.
     *
     * @defaultValue false
     */
    closable = false;
    /** Event emitter to notify when a tab is closed. */
    closeTriggered = new EventEmitter();
    /** @internal */
    id = `__si-tab-panel-${SiTabLegacyComponent.idCounter++}`;
    /** @internal */
    tabId = `__si-tab-${SiTabLegacyComponent.idCounter}`;
    get isHidden() {
        return !this.active() ? true : null;
    }
    parent;
    /** @internal */
    active = signal(false, ...(ngDevMode ? [{ debugName: "active" }] : []));
    /** @internal */
    registerParent(parent) {
        this.parent = parent;
    }
    ngOnChanges() {
        this.parent?.notifyChildrenChanged();
    }
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiTabLegacyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "21.0.8", type: SiTabLegacyComponent, isStandalone: true, selector: "si-tab-legacy", inputs: { heading: "heading", icon: "icon", iconAltText: "iconAltText", badgeContent: "badgeContent", badgeColor: "badgeColor", disabled: ["disabled", "disabled", booleanAttribute], closable: ["closable", "closable", booleanAttribute] }, outputs: { closeTriggered: "closeTriggered" }, host: { attributes: { "role": "tabpanel" }, properties: { "id": "this.id", "attr.aria-labelledby": "this.tabId", "attr.hidden": "this.isHidden" } }, usesOnChanges: true, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiTabLegacyComponent, decorators: [{
            type: Component,
            args: [{
                    selector: 'si-tab-legacy',
                    template: '<ng-content />',
                    changeDetection: ChangeDetectionStrategy.OnPush,
                    host: {
                        role: 'tabpanel'
                    }
                }]
        }], propDecorators: { heading: [{
                type: Input
            }], icon: [{
                type: Input
            }], iconAltText: [{
                type: Input
            }], badgeContent: [{
                type: Input
            }], badgeColor: [{
                type: Input
            }], disabled: [{
                type: Input,
                args: [{ transform: booleanAttribute }]
            }], closable: [{
                type: Input,
                args: [{ transform: booleanAttribute }]
            }], closeTriggered: [{
                type: Output
            }], id: [{
                type: HostBinding,
                args: ['id']
            }], tabId: [{
                type: HostBinding,
                args: ['attr.aria-labelledby']
            }], isHidden: [{
                type: HostBinding,
                args: ['attr.hidden']
            }] } });

const SCROLL_INCREMENT = 55;
/**
 * @deprecated Use the new components from `@siemens/element-ng/tabs` instead.
 * See {@link https://element.siemens.io/components/layout-navigation/tabs/#code}
 * for usage instructions.
 */
class SiTabsetLegacyComponent {
    /**
     * Contains the current tab components.
     */
    tabPanels;
    /**
     * Component variable to indicate if scrolling is necessary or the container is big enough to display all tabs.
     */
    scrollable = false;
    xPos = 0;
    endArrowDisabled = false;
    focusedTabIndex;
    icons = addIcons({ elementCancel, elementLeft3, elementRight3 });
    /**
     * If selectDefaultTab is passed as 'false', this implies no default tab selection
     * i.e. on initial load of tabset component no tab gets selected.
     *
     * @defaultValue true
     */
    selectDefaultTab = true;
    /**
     * Sets a selected tab index. This will activate the tab of the provided
     * index, activates the tab and fires a notification about the change.
     * If index is passed as -1 i.e. `selectedTabIndex = -1`, this implies to clear all tab selection.
     * @defaultref {@link _selectedTabIndex}
     */
    set selectedTabIndex(tabIndex) {
        if (this.initialized && this.tabPanels.get(tabIndex)) {
            this.selectTab(this.tabPanels.get(tabIndex));
        }
        else {
            this.initTabIndex = tabIndex;
        }
    }
    /**
     * Returns the currently selected tab index.
     */
    get selectedTabIndex() {
        return this.tabPanels?.toArray().findIndex(tab => tab.active());
    }
    /** Define an optional max-width in px for the tab buttons. The minimum value is `100`. */
    tabButtonMaxWidth;
    /**
     * Event emitter to notify about selected tab index changes. You can either
     * use bi-directional binding with [(selectedTabIndex)] or separate both with
     * [selectedTabIndex]=... and (selectedTabIndexChange)=...
     */
    selectedTabIndexChange = new EventEmitter();
    /**
     * Event emitter to notify when a tab became inactive.
     */
    deselect = new EventEmitter();
    initTabIndex = 0;
    initialized = false;
    subscription;
    tabContainer = viewChild.required('tabContainer');
    innerTabContainer = viewChild.required('innerTabContainer');
    tabs = viewChildren('tabElement', ...(ngDevMode ? [{ debugName: "tabs" }] : []));
    changeDetectorRef = inject(ChangeDetectorRef);
    ngAfterViewInit() {
        this.initialized = true;
        this.subscription = this.tabPanels.changes.subscribe(() => {
            this.tabPanels.forEach(tab => tab.registerParent(this));
            this.changeDetectorRef.markForCheck();
        });
        this.tabPanels.notifyOnChanges();
        if (this.selectDefaultTab) {
            if (this.tabPanels.length) {
                queueMicrotask(() => this.selectTab(this.tabPanels.get(this.initTabIndex)));
            }
            else {
                // no tabs are there yet. But maybe there will be some soon, so let's wait for it
                this.subscription.add(this.tabPanels.changes
                    .pipe(first(() => !!this.tabPanels.length), observeOn(asyncScheduler))
                    .subscribe(() => {
                    this.selectTab(this.tabPanels.get(this.initTabIndex));
                    this.changeDetectorRef.markForCheck();
                }));
            }
        }
        setTimeout(() => {
            this.resize();
        });
    }
    ngOnDestroy() {
        this.subscription?.unsubscribe();
        this.subscription = undefined;
    }
    /** @internal */
    notifyChildrenChanged() {
        this.changeDetectorRef.markForCheck();
    }
    isTabFocusable(index) {
        const tab = this.tabPanels.get(index);
        return !tab.disabled;
    }
    focusNext() {
        do {
            this.focusedTabIndex = (this.focusedTabIndex ?? 0) + 1;
            if (this.focusedTabIndex >= this.tabs().length) {
                this.focusedTabIndex = 0;
            }
        } while (!this.isTabFocusable(this.focusedTabIndex));
        this.tabs().at(this.focusedTabIndex).nativeElement.focus();
    }
    focusPrevious() {
        do {
            this.focusedTabIndex = (this.focusedTabIndex ?? 0) - 1;
            if (this.focusedTabIndex < 0) {
                this.focusedTabIndex += this.tabs().length;
            }
        } while (!this.isTabFocusable(this.focusedTabIndex));
        this.tabs().at(this.focusedTabIndex).nativeElement.focus();
    }
    resize() {
        this.scrollable =
            Math.round(this.tabContainer().nativeElement.offsetWidth) <
                this.innerTabContainer().nativeElement.scrollWidth;
        this.scroll(0);
    }
    /**
     * Finds the index of the provided tab and sets the index as new selected tab index
     *
     * @param selectedTab - The tab to be selected. This must already be part of the container.
     */
    selectTab(selectedTab) {
        if (selectedTab?.disabled) {
            return;
        }
        const tabs = this.tabPanels.toArray();
        const newTabIndex = tabs.indexOf(selectedTab);
        const currentTabIndex = tabs.findIndex(tab => tab.active());
        let continueWithSelection = newTabIndex !== currentTabIndex;
        if (continueWithSelection && currentTabIndex !== -1) {
            const currentTab = tabs[currentTabIndex];
            const deselectEvent = {
                target: currentTab,
                tabIndex: currentTabIndex,
                cancel: () => {
                    continueWithSelection = false;
                    currentTab.active.set(true);
                }
            };
            currentTab.active.set(false);
            this.deselect.emit(deselectEvent);
        }
        if (continueWithSelection) {
            selectedTab.active.set(true);
            this.changeDetectorRef.markForCheck();
            this.selectedTabIndexChange.emit(newTabIndex);
        }
    }
    /**
     * Scrolls the tab headers to the end (right in LTR).
     */
    scrollEnd() {
        this.scroll(SCROLL_INCREMENT);
    }
    /**
     * Scrolls the tab headers to the start (left in LTR).
     */
    scrollStart() {
        this.scroll(-SCROLL_INCREMENT);
    }
    scroll(inc) {
        this.xPos += inc;
        this.xPos = Math.max(0, Math.min(this.innerTabContainer().nativeElement.scrollWidth -
            this.innerTabContainer().nativeElement.offsetWidth, this.xPos));
        this.endArrowDisabled =
            this.xPos + this.tabContainer().nativeElement.offsetWidth >=
                this.innerTabContainer().nativeElement.scrollWidth;
        this.innerTabContainer().nativeElement.style.transform = `translateX(${this.xPos * (isRTL() ? 1 : -1)}px)`;
    }
    mouseScroll(event) {
        if (event.deltaY < 0) {
            this.scroll(-SCROLL_INCREMENT);
        }
        else {
            this.scroll(SCROLL_INCREMENT);
        }
        if (this.xPos || !this.endArrowDisabled) {
            event.preventDefault();
        }
    }
    /** @internal */
    focus(index) {
        this.focusedTabIndex = index;
    }
    /** @internal */
    blur() {
        this.focusedTabIndex = undefined;
    }
    closeTab(event, tab) {
        event.stopPropagation();
        let targetActiveTab;
        if (tab.active()) {
            const index = this.tabPanels.toArray().indexOf(tab);
            targetActiveTab = this.tabPanels.toArray()[index + 1] ?? this.tabPanels.toArray()[index - 1];
            if (targetActiveTab) {
                this.selectTab(targetActiveTab);
            }
        }
        else {
            targetActiveTab = this.tabPanels.find(otherTabs => otherTabs.active());
        }
        if (targetActiveTab) {
            // The focus will always get the next element due browser behavior.
            // Setting it to the active element solves this.
            setTimeout(() => {
                this.tabs().at(this.tabPanels.toArray().indexOf(targetActiveTab)).nativeElement.focus();
            });
        }
        tab.closeTriggered.emit(tab);
        this.focusedTabIndex = undefined;
    }
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiTabsetLegacyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiTabsetLegacyComponent, isStandalone: true, selector: "si-tabset-legacy", inputs: { selectDefaultTab: ["selectDefaultTab", "selectDefaultTab", booleanAttribute], selectedTabIndex: "selectedTabIndex", tabButtonMaxWidth: "tabButtonMaxWidth" }, outputs: { selectedTabIndexChange: "selectedTabIndexChange", deselect: "deselect" }, queries: [{ propertyName: "tabPanels", predicate: SiTabLegacyComponent }], viewQueries: [{ propertyName: "tabContainer", first: true, predicate: ["tabContainer"], descendants: true, isSignal: true }, { propertyName: "innerTabContainer", first: true, predicate: ["innerTabContainer"], descendants: true, isSignal: true }, { propertyName: "tabs", predicate: ["tabElement"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n  class=\"nav nav-tabs tab-container-header focus-inside\"\n  role=\"tablist\"\n  [class.is-scrollable]=\"scrollable\"\n  (siResizeObserver)=\"resize()\"\n>\n  @if (scrollable) {\n    <button\n      type=\"button\"\n      class=\"tab-container-control focus-inside\"\n      tabindex=\"-1\"\n      aria-hidden=\"true\"\n      [hidden]=\"!xPos\"\n      (keydown.enter)=\"scrollStart()\"\n      (mousedown)=\"scrollStart()\"\n    >\n      <si-icon class=\"icon flip-rtl\" [icon]=\"icons.elementLeft3\" />\n    </button>\n  }\n\n  <div #tabContainer class=\"tab-container-buttonbar\" (wheel)=\"mouseScroll($event)\">\n    <div #innerTabContainer class=\"tab-container-buttonbar-list focus-inside\">\n      @for (tab of tabPanels; track $index) {\n        <button\n          #tabElement\n          type=\"button\"\n          role=\"tab\"\n          class=\"nav-link focus-inside px-5\"\n          [class.pe-3]=\"tab.closable\"\n          [attr.aria-controls]=\"tab.id\"\n          [id]=\"tab.tabId\"\n          [style.max-width.px]=\"tabButtonMaxWidth\"\n          [tabindex]=\"!tab.disabled && tab.active() && focusedTabIndex === undefined ? 0 : -1\"\n          [class.active]=\"tab.active()\"\n          [attr.aria-selected]=\"tab.active()\"\n          [class.disabled]=\"tab.disabled\"\n          (click)=\"selectTab(tab)\"\n          (keydown.arrowLeft)=\"focusPrevious()\"\n          (keydown.arrowRight)=\"focusNext()\"\n          (keydown.delete)=\"tab.closeTriggered.emit(tab)\"\n          (blur)=\"blur()\"\n          (focus)=\"focus($index)\"\n        >\n          <span class=\"text-truncate\">{{ tab.heading | translate }}</span>\n          @if (tab.icon) {\n            <si-icon\n              class=\"icon\"\n              [attr.role]=\"tab.iconAltText ? 'img' : 'presentation'\"\n              [icon]=\"tab.icon\"\n              [attr.aria-label]=\"(tab.iconAltText | translate) ?? undefined\"\n            />\n          }\n          @if (tab.badgeContent === true) {\n            <span class=\"badge-dot\"></span>\n          } @else if (tab.badgeContent && tab.badgeColor) {\n            <span class=\"badge\" [class]=\"`bg-${tab.badgeColor}`\">\n              {{ tab.badgeContent | translate }}\n            </span>\n          } @else if (tab.badgeContent && !tab.badgeColor) {\n            <span class=\"badge-text\"> {{ tab.badgeContent | translate }}</span>\n          }\n          @if (tab.closable && !tab.disabled) {\n            <si-icon\n              class=\"ms-2 btn btn-circle btn-sm btn-ghost close\"\n              [icon]=\"icons.elementCancel\"\n              (click)=\"closeTab($event, tab)\"\n            />\n          }\n        </button>\n      }\n    </div>\n  </div>\n  @if (scrollable) {\n    <button\n      type=\"button\"\n      class=\"tab-container-control is-end focus-inside\"\n      tabindex=\"-1\"\n      aria-hidden=\"true\"\n      [hidden]=\"endArrowDisabled\"\n      (keydown.enter)=\"scrollEnd()\"\n      (mousedown)=\"scrollEnd()\"\n    >\n      <si-icon class=\"icon flip-rtl\" [icon]=\"icons.elementRight3\" />\n    </button>\n  }\n</div>\n\n<ng-content />\n", styles: [":host{display:block;flex-direction:column}.tab-container-header{overflow:hidden;display:flex}.tab-container-buttonbar{flex:1;overflow:hidden}.tab-container-buttonbar-list{display:flex;margin:0;padding:0;list-style-type:none;transition:calc(.25s * var(--element-animations-enabled, 1))}.tab-container-buttonbar-list-item{flex:none}.tab-container-control{background:transparent;border:0;-webkit-user-select:none;user-select:none;padding-inline:0 7px;padding-block:6px 10px}.tab-container-control .is-end{padding-inline:7px 0}.tab-container-control:hover{color:var(--element-text-active)}.tab-container-control:disabled{color:var(--element-text-disabled);cursor:default}.nav-link{flex-shrink:0;color:var(--element-text-secondary)}.nav-link span.badge-dot{inset-block-end:100%;inset-inline-start:12px;margin-inline-end:12px}.nav-link span.badge-text{inset-block-end:calc(100% - 7px);inset-inline-start:2px}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "directive", type: SiResizeObserverDirective, selector: "[siResizeObserver]", inputs: ["resizeThrottle", "emitInitial"], outputs: ["siResizeObserver"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
}
__decorate([
    WebComponentContentChildren(SiTabLegacyComponent)
], SiTabsetLegacyComponent.prototype, "tabPanels", void 0);
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiTabsetLegacyComponent, decorators: [{
            type: Component,
            args: [{ selector: 'si-tabset-legacy', imports: [SiIconComponent, SiResizeObserverDirective, SiTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n  class=\"nav nav-tabs tab-container-header focus-inside\"\n  role=\"tablist\"\n  [class.is-scrollable]=\"scrollable\"\n  (siResizeObserver)=\"resize()\"\n>\n  @if (scrollable) {\n    <button\n      type=\"button\"\n      class=\"tab-container-control focus-inside\"\n      tabindex=\"-1\"\n      aria-hidden=\"true\"\n      [hidden]=\"!xPos\"\n      (keydown.enter)=\"scrollStart()\"\n      (mousedown)=\"scrollStart()\"\n    >\n      <si-icon class=\"icon flip-rtl\" [icon]=\"icons.elementLeft3\" />\n    </button>\n  }\n\n  <div #tabContainer class=\"tab-container-buttonbar\" (wheel)=\"mouseScroll($event)\">\n    <div #innerTabContainer class=\"tab-container-buttonbar-list focus-inside\">\n      @for (tab of tabPanels; track $index) {\n        <button\n          #tabElement\n          type=\"button\"\n          role=\"tab\"\n          class=\"nav-link focus-inside px-5\"\n          [class.pe-3]=\"tab.closable\"\n          [attr.aria-controls]=\"tab.id\"\n          [id]=\"tab.tabId\"\n          [style.max-width.px]=\"tabButtonMaxWidth\"\n          [tabindex]=\"!tab.disabled && tab.active() && focusedTabIndex === undefined ? 0 : -1\"\n          [class.active]=\"tab.active()\"\n          [attr.aria-selected]=\"tab.active()\"\n          [class.disabled]=\"tab.disabled\"\n          (click)=\"selectTab(tab)\"\n          (keydown.arrowLeft)=\"focusPrevious()\"\n          (keydown.arrowRight)=\"focusNext()\"\n          (keydown.delete)=\"tab.closeTriggered.emit(tab)\"\n          (blur)=\"blur()\"\n          (focus)=\"focus($index)\"\n        >\n          <span class=\"text-truncate\">{{ tab.heading | translate }}</span>\n          @if (tab.icon) {\n            <si-icon\n              class=\"icon\"\n              [attr.role]=\"tab.iconAltText ? 'img' : 'presentation'\"\n              [icon]=\"tab.icon\"\n              [attr.aria-label]=\"(tab.iconAltText | translate) ?? undefined\"\n            />\n          }\n          @if (tab.badgeContent === true) {\n            <span class=\"badge-dot\"></span>\n          } @else if (tab.badgeContent && tab.badgeColor) {\n            <span class=\"badge\" [class]=\"`bg-${tab.badgeColor}`\">\n              {{ tab.badgeContent | translate }}\n            </span>\n          } @else if (tab.badgeContent && !tab.badgeColor) {\n            <span class=\"badge-text\"> {{ tab.badgeContent | translate }}</span>\n          }\n          @if (tab.closable && !tab.disabled) {\n            <si-icon\n              class=\"ms-2 btn btn-circle btn-sm btn-ghost close\"\n              [icon]=\"icons.elementCancel\"\n              (click)=\"closeTab($event, tab)\"\n            />\n          }\n        </button>\n      }\n    </div>\n  </div>\n  @if (scrollable) {\n    <button\n      type=\"button\"\n      class=\"tab-container-control is-end focus-inside\"\n      tabindex=\"-1\"\n      aria-hidden=\"true\"\n      [hidden]=\"endArrowDisabled\"\n      (keydown.enter)=\"scrollEnd()\"\n      (mousedown)=\"scrollEnd()\"\n    >\n      <si-icon class=\"icon flip-rtl\" [icon]=\"icons.elementRight3\" />\n    </button>\n  }\n</div>\n\n<ng-content />\n", styles: [":host{display:block;flex-direction:column}.tab-container-header{overflow:hidden;display:flex}.tab-container-buttonbar{flex:1;overflow:hidden}.tab-container-buttonbar-list{display:flex;margin:0;padding:0;list-style-type:none;transition:calc(.25s * var(--element-animations-enabled, 1))}.tab-container-buttonbar-list-item{flex:none}.tab-container-control{background:transparent;border:0;-webkit-user-select:none;user-select:none;padding-inline:0 7px;padding-block:6px 10px}.tab-container-control .is-end{padding-inline:7px 0}.tab-container-control:hover{color:var(--element-text-active)}.tab-container-control:disabled{color:var(--element-text-disabled);cursor:default}.nav-link{flex-shrink:0;color:var(--element-text-secondary)}.nav-link span.badge-dot{inset-block-end:100%;inset-inline-start:12px;margin-inline-end:12px}.nav-link span.badge-text{inset-block-end:calc(100% - 7px);inset-inline-start:2px}\n"] }]
        }], propDecorators: { tabPanels: [{
                type: ContentChildren,
                args: [SiTabLegacyComponent]
            }], selectDefaultTab: [{
                type: Input,
                args: [{ transform: booleanAttribute }]
            }], selectedTabIndex: [{
                type: Input
            }], tabButtonMaxWidth: [{
                type: Input
            }], selectedTabIndexChange: [{
                type: Output
            }], deselect: [{
                type: Output
            }], tabContainer: [{ type: i0.ViewChild, args: ['tabContainer', { isSignal: true }] }], innerTabContainer: [{ type: i0.ViewChild, args: ['innerTabContainer', { isSignal: true }] }], tabs: [{ type: i0.ViewChildren, args: ['tabElement', { isSignal: true }] }] } });

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

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

/**
 * Copyright (c) Siemens 2016 - 2026
 * SPDX-License-Identifier: MIT
 */
const components = [SiTabsetLegacyComponent, SiTabLegacyComponent];
/**
 * @deprecated Use the new components from `@siemens/element-ng/tabs` instead.
 * See {@link https://element.siemens.io/components/layout-navigation/tabs/#code}
 * for usage instructions.
 */
class SiTabsLegacyModule {
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiTabsLegacyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
    static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.8", ngImport: i0, type: SiTabsLegacyModule, imports: [SiTabsetLegacyComponent, SiTabLegacyComponent], exports: [SiTabsetLegacyComponent, SiTabLegacyComponent] });
    static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiTabsLegacyModule, imports: [SiTabsetLegacyComponent] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiTabsLegacyModule, decorators: [{
            type: NgModule,
            args: [{
                    imports: components,
                    exports: components
                }]
        }] });

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

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

export { SiTabLegacyComponent, SiTabsLegacyModule, SiTabsetLegacyComponent };
//# sourceMappingURL=siemens-element-ng-tabs-legacy.mjs.map
