@siemens/element-ng 49.11.0 → 49.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/carousel/package.json +4 -0
  2. package/fesm2022/siemens-element-ng-ag-grid.mjs +6 -5
  3. package/fesm2022/siemens-element-ng-ag-grid.mjs.map +1 -1
  4. package/fesm2022/siemens-element-ng-application-header.mjs +51 -32
  5. package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
  6. package/fesm2022/siemens-element-ng-autocomplete.mjs +9 -13
  7. package/fesm2022/siemens-element-ng-autocomplete.mjs.map +1 -1
  8. package/fesm2022/siemens-element-ng-breadcrumb-router.mjs +3 -3
  9. package/fesm2022/siemens-element-ng-breadcrumb-router.mjs.map +1 -1
  10. package/fesm2022/siemens-element-ng-breadcrumb.mjs +3 -3
  11. package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
  12. package/fesm2022/siemens-element-ng-card.mjs +2 -2
  13. package/fesm2022/siemens-element-ng-card.mjs.map +1 -1
  14. package/fesm2022/siemens-element-ng-carousel.mjs +541 -0
  15. package/fesm2022/siemens-element-ng-carousel.mjs.map +1 -0
  16. package/fesm2022/siemens-element-ng-chat-messages.mjs +18 -21
  17. package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
  18. package/fesm2022/siemens-element-ng-content-action-bar.mjs +2 -2
  19. package/fesm2022/siemens-element-ng-content-action-bar.mjs.map +1 -1
  20. package/fesm2022/siemens-element-ng-dashboard.mjs +34 -35
  21. package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
  22. package/fesm2022/siemens-element-ng-date-range-filter.mjs +10 -8
  23. package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
  24. package/fesm2022/siemens-element-ng-datepicker.mjs +10 -9
  25. package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
  26. package/fesm2022/siemens-element-ng-electron-titlebar.mjs +3 -3
  27. package/fesm2022/siemens-element-ng-electron-titlebar.mjs.map +1 -1
  28. package/fesm2022/siemens-element-ng-empty-state.mjs +2 -2
  29. package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -1
  30. package/fesm2022/siemens-element-ng-file-uploader.mjs +49 -47
  31. package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
  32. package/fesm2022/siemens-element-ng-filter-bar.mjs +5 -5
  33. package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -1
  34. package/fesm2022/siemens-element-ng-filtered-search.mjs +6 -5
  35. package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
  36. package/fesm2022/siemens-element-ng-footer.mjs +3 -3
  37. package/fesm2022/siemens-element-ng-footer.mjs.map +1 -1
  38. package/fesm2022/siemens-element-ng-form.mjs +28 -49
  39. package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
  40. package/fesm2022/siemens-element-ng-formly.mjs +24 -23
  41. package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
  42. package/fesm2022/siemens-element-ng-header-dropdown.mjs +37 -21
  43. package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
  44. package/fesm2022/siemens-element-ng-help-button.mjs +3 -3
  45. package/fesm2022/siemens-element-ng-help-button.mjs.map +1 -1
  46. package/fesm2022/siemens-element-ng-inline-notification.mjs +3 -3
  47. package/fesm2022/siemens-element-ng-inline-notification.mjs.map +1 -1
  48. package/fesm2022/siemens-element-ng-ip-input.mjs +1 -1
  49. package/fesm2022/siemens-element-ng-ip-input.mjs.map +1 -1
  50. package/fesm2022/siemens-element-ng-language-switcher.mjs +3 -3
  51. package/fesm2022/siemens-element-ng-language-switcher.mjs.map +1 -1
  52. package/fesm2022/siemens-element-ng-markdown-renderer.mjs +4 -3
  53. package/fesm2022/siemens-element-ng-markdown-renderer.mjs.map +1 -1
  54. package/fesm2022/siemens-element-ng-menu.mjs +2 -2
  55. package/fesm2022/siemens-element-ng-menu.mjs.map +1 -1
  56. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs +8 -7
  57. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs.map +1 -1
  58. package/fesm2022/siemens-element-ng-navbar-vertical.mjs +13 -12
  59. package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
  60. package/fesm2022/siemens-element-ng-navbar.mjs +6 -8
  61. package/fesm2022/siemens-element-ng-navbar.mjs.map +1 -1
  62. package/fesm2022/siemens-element-ng-notification-item.mjs +3 -3
  63. package/fesm2022/siemens-element-ng-notification-item.mjs.map +1 -1
  64. package/fesm2022/siemens-element-ng-pagination.mjs +4 -1
  65. package/fesm2022/siemens-element-ng-pagination.mjs.map +1 -1
  66. package/fesm2022/siemens-element-ng-password-toggle.mjs +3 -3
  67. package/fesm2022/siemens-element-ng-password-toggle.mjs.map +1 -1
  68. package/fesm2022/siemens-element-ng-phone-number.mjs +63 -42
  69. package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -1
  70. package/fesm2022/siemens-element-ng-pills-input.mjs +4 -4
  71. package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
  72. package/fesm2022/siemens-element-ng-popover-legacy.mjs +3 -3
  73. package/fesm2022/siemens-element-ng-popover-legacy.mjs.map +1 -1
  74. package/fesm2022/siemens-element-ng-popover.mjs +3 -3
  75. package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
  76. package/fesm2022/siemens-element-ng-result-details-list.mjs +3 -3
  77. package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
  78. package/fesm2022/siemens-element-ng-side-panel.mjs +5 -5
  79. package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
  80. package/fesm2022/siemens-element-ng-sort-bar.mjs +3 -3
  81. package/fesm2022/siemens-element-ng-sort-bar.mjs.map +1 -1
  82. package/fesm2022/siemens-element-ng-split.mjs +3 -3
  83. package/fesm2022/siemens-element-ng-split.mjs.map +1 -1
  84. package/fesm2022/siemens-element-ng-status-bar.mjs +3 -3
  85. package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
  86. package/fesm2022/siemens-element-ng-tabs.mjs +33 -6
  87. package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
  88. package/fesm2022/siemens-element-ng-threshold.mjs +5 -5
  89. package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -1
  90. package/fesm2022/siemens-element-ng-toast-notification.mjs +3 -3
  91. package/fesm2022/siemens-element-ng-toast-notification.mjs.map +1 -1
  92. package/fesm2022/siemens-element-ng-tooltip.mjs +180 -77
  93. package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
  94. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  95. package/fesm2022/siemens-element-ng-tree-view.mjs +6 -6
  96. package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
  97. package/package.json +12 -8
  98. package/template-i18n.json +7 -0
  99. package/types/siemens-element-ng-application-header.d.ts +15 -8
  100. package/types/siemens-element-ng-autocomplete.d.ts +19 -19
  101. package/types/siemens-element-ng-carousel.d.ts +209 -0
  102. package/types/siemens-element-ng-chat-messages.d.ts +1 -2
  103. package/types/siemens-element-ng-dashboard.d.ts +4 -4
  104. package/types/siemens-element-ng-date-range-filter.d.ts +1 -1
  105. package/types/siemens-element-ng-file-uploader.d.ts +6 -8
  106. package/types/siemens-element-ng-form.d.ts +1 -3
  107. package/types/siemens-element-ng-header-dropdown.d.ts +8 -3
  108. package/types/siemens-element-ng-navbar.d.ts +1 -2
  109. package/types/siemens-element-ng-phone-number.d.ts +2 -2
  110. package/types/siemens-element-ng-tabs.d.ts +4 -0
  111. package/types/siemens-element-ng-tooltip.d.ts +10 -26
  112. package/types/siemens-element-ng-translate.d.ts +7 -0
@@ -0,0 +1,4 @@
1
+ {
2
+ "module": "../fesm2022/siemens-element-ng-carousel.mjs",
3
+ "typings": "../types/siemens-element-ng-carousel.d.ts"
4
+ }
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, Component, signal, makeEnvironmentProviders } from '@angular/core';
2
+ import { inject, ElementRef, ChangeDetectionStrategy, Component, signal, makeEnvironmentProviders } from '@angular/core';
3
3
  import * as i1 from '@angular/forms';
4
4
  import { FormsModule } from '@angular/forms';
5
5
  import { SiDatepickerDirective, SiCalendarButtonComponent } from '@siemens/element-ng/datepicker';
@@ -92,7 +92,7 @@ class AgDateInputComponent {
92
92
  (ngModelChange)="onDateChange()"
93
93
  />
94
94
  </si-calendar-button>
95
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: SiDatepickerDirective, selector: "[siDatepicker]", inputs: ["autoClose"], exportAs: ["siDatepicker"] }, { kind: "component", type: SiCalendarButtonComponent, selector: "si-calendar-button", inputs: ["ariaLabel"] }] });
95
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: SiDatepickerDirective, selector: "[siDatepicker]", inputs: ["autoClose"], exportAs: ["siDatepicker"] }, { kind: "component", type: SiCalendarButtonComponent, selector: "si-calendar-button", inputs: ["ariaLabel"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
96
96
  }
97
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AgDateInputComponent, decorators: [{
98
98
  type: Component,
@@ -110,7 +110,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
110
110
  (ngModelChange)="onDateChange()"
111
111
  />
112
112
  </si-calendar-button>
113
- `
113
+ `,
114
+ changeDetection: ChangeDetectionStrategy.Default
114
115
  }]
115
116
  }] });
116
117
 
@@ -157,11 +158,11 @@ class AgNoRowsOverlayComponent {
157
158
  this.content.set(params.content);
158
159
  }
159
160
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AgNoRowsOverlayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
160
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.8", type: AgNoRowsOverlayComponent, isStandalone: true, selector: "si-ag-no-rows-overlay", ngImport: i0, template: ` <si-empty-state [icon]="icon()" [heading]="heading()" [content]="content()" /> `, isInline: true, styles: [":host{display:flex;align-items:center;justify-content:center;height:100%;width:100%}\n"], dependencies: [{ kind: "component", type: SiEmptyStateComponent, selector: "si-empty-state", inputs: ["icon", "heading", "content"] }] });
161
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.8", type: AgNoRowsOverlayComponent, isStandalone: true, selector: "si-ag-no-rows-overlay", ngImport: i0, template: ` <si-empty-state [icon]="icon()" [heading]="heading()" [content]="content()" /> `, isInline: true, styles: [":host{display:flex;align-items:center;justify-content:center;height:100%;width:100%}\n"], dependencies: [{ kind: "component", type: SiEmptyStateComponent, selector: "si-empty-state", inputs: ["icon", "heading", "content"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
161
162
  }
162
163
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: AgNoRowsOverlayComponent, decorators: [{
163
164
  type: Component,
164
- args: [{ selector: 'si-ag-no-rows-overlay', imports: [SiEmptyStateComponent], template: ` <si-empty-state [icon]="icon()" [heading]="heading()" [content]="content()" /> `, styles: [":host{display:flex;align-items:center;justify-content:center;height:100%;width:100%}\n"] }]
165
+ args: [{ selector: 'si-ag-no-rows-overlay', imports: [SiEmptyStateComponent], template: ` <si-empty-state [icon]="icon()" [heading]="heading()" [content]="content()" /> `, changeDetection: ChangeDetectionStrategy.Default, styles: [":host{display:flex;align-items:center;justify-content:center;height:100%;width:100%}\n"] }]
165
166
  }] });
166
167
 
167
168
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-ag-grid.mjs","sources":["../../../../projects/element-ng/ag-grid/components/ag-date-input.component.ts","../../../../projects/element-ng/ag-grid/components/ag-no-rows-overlay.component.ts","../../../../projects/element-ng/ag-grid/components/index.ts","../../../../projects/element-ng/ag-grid/parts/checkbox-style.part.ts","../../../../projects/element-ng/ag-grid/parts/color-scheme.part.ts","../../../../projects/element-ng/ag-grid/parts/icon-overrides.part.ts","../../../../projects/element-ng/ag-grid/parts/pagination-style.part.ts","../../../../projects/element-ng/ag-grid/parts/pinning-style.part.ts","../../../../projects/element-ng/ag-grid/parts/radio-style.part.ts","../../../../projects/element-ng/ag-grid/parts/skeleton-style.part.ts","../../../../projects/element-ng/ag-grid/parts/text-filter-style.part.ts","../../../../projects/element-ng/ag-grid/parts/toggle-style.part.ts","../../../../projects/element-ng/ag-grid/parts/index.ts","../../../../projects/element-ng/ag-grid/themes.ts","../../../../projects/element-ng/ag-grid/provider.ts","../../../../projects/element-ng/ag-grid/index.ts","../../../../projects/element-ng/ag-grid/siemens-element-ng-ag-grid.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { Component, ElementRef, OnDestroy, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SiCalendarButtonComponent, SiDatepickerDirective } from '@siemens/element-ng/datepicker';\nimport { IDateComp, IDateParams } from 'ag-grid-community';\n\n/**\n * Custom AG Grid date component using Element datepicker.\n * This component replaces the native HTML date input with the Element design system datepicker.\n */\n@Component({\n selector: 'si-ag-date-input',\n imports: [FormsModule, SiDatepickerDirective, SiCalendarButtonComponent],\n template: `\n <si-calendar-button class=\"w-100\">\n <input\n type=\"text\"\n class=\"form-control\"\n siDatepicker\n [autoClose]=\"true\"\n [(ngModel)]=\"date\"\n (ngModelChange)=\"onDateChange()\"\n />\n </si-calendar-button>\n `\n})\nexport class AgDateInputComponent implements IDateComp, OnDestroy {\n private elementRef = inject(ElementRef);\n\n /**\n * The selected date value.\n */\n public date: Date | undefined = undefined;\n\n /**\n * AG Grid date filter parameters.\n * @internal\n */\n private params!: IDateParams;\n\n /**\n * Document click event listener for calendar overlay.\n * @internal\n */\n private documentClickListener?: (event: MouseEvent) => void;\n\n /**\n * Notifies AG Grid when the date value changes.\n * @internal\n */\n onDateChange(): void {\n if (this.params) {\n this.params.onDateChanged();\n }\n }\n\n /**\n * Lifecycle hook called after the component GUI is attached.\n * Sets up event listeners to prevent filter popup from closing when interacting with calendar.\n */\n afterGuiAttached(): void {\n // Remove any existing listener to prevent duplicates\n if (this.documentClickListener) {\n document.removeEventListener('mousedown', this.documentClickListener, true);\n }\n\n // Intercept document click events to keep the filter open when clicking the calendar\n this.documentClickListener = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const calendarOverlay = target.closest('si-datepicker, .cdk-overlay-pane');\n\n if (calendarOverlay) {\n event.stopPropagation();\n }\n };\n document.addEventListener('mousedown', this.documentClickListener, true);\n }\n\n ngOnDestroy(): void {\n if (this.documentClickListener) {\n document.removeEventListener('mousedown', this.documentClickListener, true);\n }\n }\n\n agInit(params: IDateParams): void {\n this.params = params;\n }\n\n getDate(): Date | null {\n return this.date ?? null;\n }\n\n getGui(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n setDate(date: Date | null): void {\n this.date = date ?? undefined;\n if (this.params) {\n this.params.onDateChanged();\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { Component, signal } from '@angular/core';\nimport { SiEmptyStateComponent } from '@siemens/element-ng/empty-state';\nimport { INoRowsOverlayParams } from 'ag-grid-community';\n\n/**\n * Custom AG Grid no rows overlay component using Element Empty State.\n * This component is displayed when the grid has no data to show.\n *\n * @example\n * Using with custom parameters\n * ```typescript\n * <ag-grid-angular\n * [noRowsOverlayComponent]=\"AgNoRowsOverlayComponent\"\n * [noRowsOverlayComponentParams]=\"{\n * icon: 'element-technical-search',\n * heading: 'No results found',\n * content: 'Try adjusting your filters.'\n * }\"\n * />\n * ```\n */\n@Component({\n selector: 'si-ag-no-rows-overlay',\n imports: [SiEmptyStateComponent],\n template: ` <si-empty-state [icon]=\"icon()\" [heading]=\"heading()\" [content]=\"content()\" /> `,\n styles: `\n :host {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n }\n `\n})\nexport class AgNoRowsOverlayComponent {\n /**\n * Icon to display in the empty state.\n *\n */\n protected readonly icon = signal<string>('');\n\n /**\n * Heading text for the empty state.\n *\n */\n protected readonly heading = signal<string>('');\n\n /**\n * Description text for the empty state.\n *\n */\n protected readonly content = signal<string | undefined>(undefined);\n\n agInit(params: INoRowsOverlayParams & { icon: string; heading: string; content?: string }): void {\n this.icon.set(params.icon);\n this.heading.set(params.heading);\n this.content.set(params.content);\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './ag-date-input.component';\nexport * from './ag-no-rows-overlay.component';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a checkbox style part for the Element AG Grid theme.\n * This part overrides the unchecked checkbox hover state to match Element design system.\n *\n * @returns A part that defines checkbox styling for the Element AG Grid theme.\n */\nexport const elementCheckboxStyle: Part = createPart({\n css: `\n.ag-checkbox-input-wrapper:not(.ag-checked):not(.ag-indeterminate):hover {\n border-color: var(--element-action-secondary-border-hover);\n background: var(--element-action-secondary-hover);\n}\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { elementCheckedImageShape } from '@siemens/element-ng/icon';\nimport { Part, ThemeDefaultParams, createPart } from 'ag-grid-community';\n\n/**\n * Creates a comprehensive color scheme part for the Element AG Grid theme.\n *\n * This part applies Element design system colors and styling to all AG Grid components,\n * including:\n * - Typography (fonts, weights, sizes)\n * - Base colors (backgrounds, borders, foreground)\n * - Interactive elements (buttons, inputs, icons)\n * - Cell and row styling (hover, selection, borders)\n * - Header components\n * - Checkboxes and form controls\n * - Menus, dialogs, and overlays\n * - Tooltips and tabs\n * - Charts and visualizations\n *\n * All colors are mapped to CSS custom properties from the Element design system,\n * ensuring consistency with other Element components and automatic theme support.\n *\n * @returns A part that defines the complete color scheme for the Element AG Grid theme.\n */\nexport const elementColorScheme: Part = createPart({\n feature: 'colorScheme',\n params: {\n // Typography\n buttonFontWeight: '600',\n cellFontFamily: 'var(--element-body-font-family)',\n fontFamily: 'var(--element-body-font-family)',\n fontSize: '14px',\n headerFontWeight: '600',\n\n // Base colors:\n accentColor: 'var(--element-focus-default)',\n backgroundColor: 'var(--element-base-1)',\n borderColor: 'var(--element-ui-4)',\n foregroundColor: 'var(--element-text-primary)',\n invalidColor: 'var(--element-status-danger)',\n subtleTextColor: 'var(--element-text-secondary)',\n\n // Button styles\n buttonActiveBackgroundColor: 'var(--element-action-secondary-hover)',\n buttonActiveBorder: {\n color: 'var(--element-action-secondary-hover)'\n },\n buttonActiveTextColor: 'var(--element-action-secondary-text-hover)',\n buttonBackgroundColor: 'var(--element-action-secondary)',\n buttonBorder: {\n color: 'var(--element-action-secondary-border)'\n },\n buttonTextColor: 'var(--element-action-secondary-text)',\n\n buttonHoverBackgroundColor: 'var(--element-action-secondary-hover)',\n buttonHoverBorder: {\n color: 'var(--element-action-secondary-border-hover)'\n },\n buttonHoverTextColor: 'var(--element-action-secondary-text-hover)',\n\n buttonDisabledBackgroundColor: 'var(--element-action-secondary)',\n buttonDisabledTextColor: 'var(--element-text-disabled)',\n buttonDisabledBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Advanced filter builder styles\n advancedFilterBuilderButtonBarBorder: {\n color: 'var(--element-ui-4)'\n },\n advancedFilterBuilderJoinPillColor: 'var(--element-base-danger)',\n advancedFilterBuilderColumnPillColor: 'var(--element-base-success)',\n advancedFilterBuilderOptionPillColor: 'var(--element-base-warning)',\n advancedFilterBuilderValuePillColor: 'var(--element-base-information)',\n\n // Cell styles\n cellEditingBorder: {\n color: 'var(--element-action-primary)'\n },\n cellTextColor: 'var(--element-text-primary)',\n\n // Column styles\n columnBorder: {\n color: 'var(--element-action-secondary)'\n },\n columnDropCellBackgroundColor: 'var(--element-base-1)',\n columnDropCellBorder: {\n color: 'var(--element-action-secondary)'\n },\n columnDropCellDragHandleColor: 'var(--element-text-primary)',\n columnDropCellTextColor: 'var(--element-text-primary)',\n columnHoverColor: 'var(--element-base-1-hover)',\n\n // Row styles\n oddRowBackgroundColor: 'var(--element-base-1)',\n rowBorder: {\n color: 'var(--element-ui-4)'\n },\n rowHoverColor: 'var(--element-base-1-hover)',\n rowLoadingSkeletonEffectColor: 'var(--element-base-1)',\n selectedRowBackgroundColor: 'var(--element-base-1-selected)',\n\n // Dialog and footer styles\n footerRowBorder: {\n color: 'var(--element-ui-4)'\n },\n dialogBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Checkbox styles\n checkboxBorderRadius: '2px',\n checkboxBorderWidth: '1px',\n checkboxCheckedBackgroundColor: 'var(--element-action-primary)',\n checkboxCheckedBorderColor: 'var(--element-action-primary)',\n checkboxCheckedShapeColor: 'var(--element-action-primary-text)',\n checkboxCheckedShapeImage: {\n url: elementCheckedImageShape\n },\n checkboxIndeterminateBackgroundColor: 'var(--element-action-primary)',\n checkboxIndeterminateBorderColor: 'var(--element-action-primary)',\n checkboxIndeterminateShapeColor: 'var(--element-base-1)',\n checkboxUncheckedBackgroundColor: 'var(--element-base-1)',\n checkboxUncheckedBorderColor: 'var(--element-ui-1)',\n\n // Header styles\n headerBackgroundColor: 'var(--element-base-1)',\n headerCellHoverBackgroundColor: 'var(--element-base-1-hover)',\n headerColumnBorder: {\n color: 'var(--element-action-secondary)'\n },\n headerColumnResizeHandleColor: 'var(--element-ui-4)',\n headerRowBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Input styles\n inputBackgroundColor: 'var(--element-base-1)',\n inputBorder: {\n color: 'var(--element-ui-2)'\n },\n inputBorderRadius: '2px',\n inputDisabledBackgroundColor: 'var(--element-base-1)',\n inputDisabledBorder: {\n color: 'var(--element-ui-3)'\n },\n inputDisabledTextColor: 'var(--element-text-disabled)',\n inputFocusBorder: {\n color: 'var(--element-focus-default)'\n },\n inputFocusShadow: false,\n inputIconColor: 'var(--element-ui-1)',\n inputInvalidBorder: {\n color: 'var(--element-status-danger)'\n },\n inputTextColor: 'var(--element-text-primary)',\n\n // Icon styles\n iconButtonActiveBackgroundColor: 'var(--element-base-1-selected)',\n iconButtonActiveColor: 'var(--element-action-primary-hover)',\n iconButtonActiveIndicatorColor: 'var(--element-action-primary-hover)',\n iconButtonBackgroundColor: 'var(--element-action-secondary)',\n iconButtonColor: 'var(--element-text-primary)',\n iconButtonHoverBackgroundColor: 'var(--element-base-1-hover)',\n iconButtonHoverColor: 'var(--element-text-primary)',\n iconColor: 'var(--element-text-primary)',\n iconSize: '18px',\n\n // Menu styles\n menuBackgroundColor: 'var(--element-base-1)',\n menuBorder: false,\n menuShadow:\n '0 0 8px var(--element-box-shadow-color-1), 0 8px 8px var(--element-box-shadow-color-2)',\n\n // Pinning styles\n pinnedColumnBorder: {\n color: 'var(--element-base-1-selected)'\n },\n pinnedRowBorder: {\n color: 'var(--element-base-1-selected)'\n },\n\n // Drag and drop styles\n dragAndDropImageBackgroundColor: 'var(--element-base-3)',\n dragAndDropImageBorder: false,\n dragAndDropImageShadow:\n '0 0 8px var(--element-box-shadow-color-1), 0 8px 8px var(--element-box-shadow-color-2)',\n dragHandleColor: 'var(--element-text-primary)',\n\n // Range selection styles\n rangeHeaderHighlightColor: 'var(--element-base-1)',\n rangeSelectionBackgroundColor: 'var(--element-base-1-selected)',\n rangeSelectionBorderColor: 'var(--element-action-primary-hover)',\n rangeSelectionHighlightColor: 'var(--element-base-1-selected)',\n\n // Sidebar styles\n sideBarBackgroundColor: 'var(--element-base-1)',\n sidePanelBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Side button styles\n sideButtonBackgroundColor: 'var(--element-action-secondary)',\n sideButtonBarBackgroundColor: 'var(--element-base-1)',\n sideButtonHoverBackgroundColor: 'var(--element-base-1-hover)',\n sideButtonSelectedBackgroundColor: 'var(--element-base-1-selected)',\n sideButtonSelectedBorder: 'var(--element-action-secondary-border)',\n sideButtonSelectedUnderlineColor: 'var(--element-base-1-selected)',\n\n // Status bar styles\n statusBarLabelColor: 'var(--element-text-primary)',\n statusBarValueColor: 'var(--element-text-primary)',\n\n // Select cell styles\n selectCellBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Toggle button styles - matching Element switch design\n toggleButtonHeight: '20px',\n toggleButtonOffBackgroundColor: 'var(--element-ui-4)',\n toggleButtonOnBackgroundColor: 'var(--element-ui-0)',\n toggleButtonSwitchBackgroundColor: 'var(--element-ui-2)',\n toggleButtonSwitchInset: '4px',\n toggleButtonWidth: '40px',\n\n // Value change styles\n valueChangeDeltaDownColor: 'var(--element-status-danger)',\n valueChangeDeltaUpColor: 'var(--element-status-success)',\n valueChangeValueHighlightBackgroundColor: 'var(--element-base-1-selected)',\n\n // Tooltip styles\n tooltipBackgroundColor: 'var(--element-base-translucent-2)',\n tooltipBorder: false,\n tooltipTextColor: 'var(--element-text-inverse)',\n\n // Tab styles\n tabBackgroundColor: 'var(--element-action-secondary)',\n tabBarBackgroundColor: 'var(--element-base-1)',\n tabBarBorder: {\n color: 'var(--element-ui-4)'\n },\n tabHoverBackgroundColor: 'var(--element-action-secondary)',\n tabSelectedTextColor: 'var(--element-action-primary)',\n tabSelectedUnderlineColor: 'var(--element-action-secondary)',\n\n // Chart styles\n chartMenuLabelColor: 'var(--element-text-primary)',\n\n // Misc styles\n focusShadow: false,\n wrapperBorder: false\n } satisfies Partial<ThemeDefaultParams>\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n elementBusy,\n elementCancel,\n elementCopy,\n elementCut,\n elementDown2,\n elementDownload,\n elementEdit,\n elementFilter,\n elementHide,\n elementJumpToListItem,\n elementLayoutPane3Alt,\n elementLeft2,\n elementLeft4,\n elementLink,\n elementLinkBroken,\n elementMenu,\n elementMinus,\n elementMove,\n elementOk,\n elementOptionsVertical,\n elementOutOfService,\n elementPalette,\n elementPaste,\n elementPin,\n elementPinch,\n elementPlus,\n elementReport,\n elementRight2,\n elementRight4,\n elementShow,\n elementSortDown,\n elementSortUp,\n elementSum,\n elementUp2,\n elementZoom\n} from '@siemens/element-icons';\nimport { iconOverrides } from 'ag-grid-community';\n\n/**\n * Utility function to convert data URI icon map to AG Grid icon format.\n * Extracts base64 SVG data from data URIs.\n *\n * @param icons - Record of icon names to data URI strings\n * @returns Record of icon names to AG Grid icon objects with SVG data\n */\nconst createIconMap = (icons: Record<string, string>): Record<string, { svg: string }> =>\n Object.fromEntries(\n Object.entries(icons).map(([key, dataUri]) => [key, { svg: dataUri.split(',')[1] }])\n );\n\n/**\n * Creates an icon overrides part for the Element AG Grid theme.\n * This part allows customization of AG Grid icons with Element design system icons.\n * Icons can be added to the icons map as needed.\n *\n * @returns A part that defines icon overrides for the Element AG Grid theme.\n */\nexport const elementIconOverrides = iconOverrides({\n type: 'image',\n mask: true,\n icons: createIconMap({\n aggregation: elementSum,\n arrows: elementMove,\n asc: elementSortUp,\n cancel: elementCancel,\n chart: elementReport,\n 'chevron-down': elementDown2,\n 'chevron-left': elementLeft2,\n 'chevron-right': elementRight2,\n 'chevron-up': elementUp2,\n 'color-picker': elementPalette,\n columns: elementLayoutPane3Alt,\n contracted: elementRight2,\n copy: elementCopy,\n cross: elementCancel,\n cut: elementCut,\n desc: elementSortDown,\n edit: elementEdit,\n expanded: elementLeft2,\n 'eye-slash': elementHide,\n eye: elementShow,\n filter: elementFilter,\n group: elementJumpToListItem,\n left: elementLeft4,\n linked: elementLink,\n loading: elementBusy,\n maximize: elementZoom,\n menu: elementOptionsVertical,\n 'menu-alt': elementOptionsVertical,\n minimize: elementPinch,\n minus: elementMinus,\n next: elementRight2,\n 'not-allowed': elementOutOfService,\n paste: elementPaste,\n pin: elementPin,\n plus: elementPlus,\n previous: elementLeft2,\n right: elementRight4,\n save: elementDownload,\n 'small-down': elementDown2,\n 'small-left': elementLeft2,\n 'small-right': elementRight2,\n 'small-up': elementUp2,\n tick: elementOk,\n 'tree-closed': elementRight2,\n 'tree-indeterminate': elementMinus,\n 'tree-open': elementDown2,\n unlinked: elementLinkBroken,\n up: elementSortUp,\n grip: elementMenu\n })\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a pagination style part for the Element AG Grid theme.\n * This part applies font weight styling to pagination summary numbers.\n *\n * @returns A part that defines pagination styling for the Element AG Grid theme.\n */\nexport const elementPaginationStyle: Part = createPart({\n css: `\n .ag-paging-row-summary-panel-number {\n font-weight: 600;\n }\n `\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a pinning style part for the Element AG Grid theme.\n * This part applies box shadow styling to floating top and bottom rows.\n *\n * @returns A part that defines pinning styles for the Element AG Grid theme.\n */\nexport const elementPinningStyle: Part = createPart({\n css: `\n .ag-floating-top {\n box-shadow:\n 0 0 8px var(--element-box-shadow-color-1),\n 0 8px 8px var(--element-box-shadow-color-2);\n z-index: 1;\n position: relative;\n }\n\n .ag-floating-bottom {\n box-shadow:\n 0 0 8px var(--element-box-shadow-color-1),\n 0 -8px 8px var(--element-box-shadow-color-2);\n z-index: 1;\n position: relative;\n }\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a radio button style part for the Element AG Grid theme.\n * This part applies Element design system styling to radio buttons including colors,\n * hover states, checked states, and disabled states.\n *\n * @returns A part that defines radio button styling for the Element AG Grid theme.\n */\nexport const elementRadioStyle: Part = createPart({\n css: `\n .ag-radio-button-input-wrapper {\n background-color: var(--element-ui-5);\n border: 1px solid var(--element-ui-1);\n}\n\n.ag-radio-button-input-wrapper:hover {\n border-color: var(--element-action-secondary-border-hover);\n background: var(--element-action-secondary-hover);\n}\n\n.ag-radio-button-input-wrapper.ag-checked {\n border-color: var(--element-ui-0);\n background-color: var(--element-ui-5);\n}\n\n.ag-radio-button-input-wrapper.ag-checked::after {\n background-color: var(--element-ui-0);\n mask-image: none;\n inset: 4px;\n border-radius: 50%;\n}\n\n.ag-radio-button-input-wrapper.ag-checked:hover {\n border-color: var(--element-ui-0-hover);\n}\n\n.ag-radio-button-input-wrapper.ag-checked:hover::after {\n background-color: var(--element-ui-0-hover);\n}\n\n.ag-radio-button-input-wrapper.ag-disabled {\n border-color: var(--element-ui-3);\n background-color: var(--element-ui-5);\n opacity: 1;\n}\n\n.ag-radio-button-input-wrapper.ag-checked.ag-disabled {\n border-color: var(--element-ui-3);\n}\n\n.ag-radio-button-input-wrapper.ag-checked.ag-disabled::after {\n background-color: var(--element-ui-3);\n}\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a skeleton style part for the Element AG Grid theme.\n * This part applies Element design system shimmer animation to skeleton loading effects\n * to match the Element skeleton component design.\n *\n * @returns A part that defines skeleton loading styles for the Element AG Grid theme.\n */\nexport const elementSkeletonStyle: Part = createPart({\n css: `\n @keyframes shimmer {\n to {\n background-position-x: -100%;\n }\n }\n\n .ag-skeleton-effect {\n background: linear-gradient(\n 90deg,\n var(--element-base-1-hover) 0%,\n var(--element-base-1-selected) 25%,\n var(--element-base-1-hover) 50%\n );\n background-size: 200% 100%;\n background-position-x: 100%;\n animation: shimmer calc(1.6s * var(--element-animations-enabled, 1)) ease-in-out infinite;\n }\n `\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a text filter style part for the Element AG Grid theme.\n * This part applies Element design system styling to text filter search inputs,\n * including border width and background color customization.\n *\n * @returns A part that defines text filter search input styling for the Element AG Grid theme.\n */\nexport const elementTextFilterStyle: Part = createPart({\n css: `\n .ag-column-select-header-filter-wrapper,\n.ag-filter-toolpanel-search,\n.ag-mini-filter,\n.ag-filter-filter,\n.ag-filter-add-select {\n .ag-text-field-input[type='text'] {\n border-width: 0;\n background-color: var(--element-base-4);\n }\n}\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a toggle button style part for the Element AG Grid theme.\n * This part applies Element design system switch styling including hover states,\n * transitions, and proper knob positioning to match the Element switch component.\n *\n * @returns A part that defines toggle button styling for the Element AG Grid theme.\n */\nexport const elementToggleStyle: Part = createPart({\n css: `\n .ag-toggle-button-input-wrapper {\n transition: background-color 0.4s;\n }\n\n .ag-toggle-button-input-wrapper::before {\n transition: left 0.4s;\n }\n\n .ag-toggle-button-input-wrapper:not(.ag-checked):hover {\n background-color: var(--element-ui-4);\n }\n\n .ag-toggle-button-input-wrapper.ag-checked:hover {\n background-color: var(--element-ui-0-hover);\n }\n\n .ag-toggle-button-input-wrapper.ag-checked::before {\n background-color: var(--element-ui-5);\n }\n `\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './checkbox-style.part';\nexport * from './color-scheme.part';\nexport * from './icon-overrides.part';\nexport * from './pagination-style.part';\nexport * from './pinning-style.part';\nexport * from './radio-style.part';\nexport * from './skeleton-style.part';\nexport * from './text-filter-style.part';\nexport * from './toggle-style.part';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { iconSetAlpine, Theme, themeAlpine } from 'ag-grid-community';\n\nimport {\n elementCheckboxStyle,\n elementColorScheme,\n elementIconOverrides,\n elementPaginationStyle,\n elementPinningStyle,\n elementRadioStyle,\n elementSkeletonStyle,\n elementTextFilterStyle,\n elementToggleStyle\n} from './parts';\n\n/**\n * Base theme combining all Element design system parts with AG Grid Alpine theme.\n * This theme includes custom styling for checkboxes, radios, toggles, pagination,\n * pinning, skeleton loaders, text filters, icons, and color scheme.\n * @internal\n */\nconst elementBaseTheme: Theme = themeAlpine\n .withPart(iconSetAlpine)\n .withPart(elementCheckboxStyle)\n .withPart(elementRadioStyle)\n .withPart(elementToggleStyle)\n .withPart(elementPaginationStyle)\n .withPart(elementPinningStyle)\n .withPart(elementSkeletonStyle)\n .withPart(elementTextFilterStyle)\n .withPart(elementIconOverrides)\n .withPart(elementColorScheme);\n\n/**\n * Standard density Element AG Grid theme.\n * Provides balanced spacing suitable for most use cases.\n * - Row height: 42px\n * - Header height: 48px\n * - Spacing: 8px\n */\nexport const elementTheme: Theme = elementBaseTheme.withParams({\n rowHeight: '42px',\n headerHeight: '48px',\n spacing: '8px'\n});\n\n/**\n * Compact density Element AG Grid theme.\n * Optimized for displaying more data in limited space.\n * - Row height: 28px\n * - Header height: 32px\n * - Spacing: 4px\n */\nexport const elementThemeCompact: Theme = elementBaseTheme.withParams({\n rowHeight: '28px',\n headerHeight: '32px',\n spacing: '4px'\n});\n\n/**\n * Comfort density Element AG Grid theme.\n * Provides generous spacing for enhanced readability and touch interactions.\n * - Row height: 84px\n * - Header height: 96px\n * - Spacing: 12px\n */\nexport const elementThemeComfort: Theme = elementBaseTheme.withParams({\n rowHeight: '84px',\n headerHeight: '96px',\n spacing: '12px'\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { GridOptions, provideGlobalGridOptions, Theme } from 'ag-grid-community';\n\nimport { AgDateInputComponent, AgNoRowsOverlayComponent } from './components';\nimport { elementTheme, elementThemeCompact, elementThemeComfort } from './themes';\n\n/**\n * Default AG Grid options for Element theme.\n * Includes custom components for date input and empty state overlay.\n * @internal\n */\nconst ELEMENT_AG_GRID_OPTIONS: GridOptions = {\n tooltipShowDelay: 200,\n components: {\n agDateInput: AgDateInputComponent,\n agNoRowsOverlay: AgNoRowsOverlayComponent\n }\n};\n\n/**\n * Theme mapping by density variant.\n * @internal\n */\nconst THEME_BY_DENSITY = new Map<string, Theme>([\n ['compact', elementThemeCompact],\n ['comfort', elementThemeComfort],\n ['standard', elementTheme]\n]);\n\n/**\n * Provides AG Grid global configuration with Element design system theme.\n *\n * This provider configures AG Grid with the Element theme, custom components,\n * and density-specific styling. Use it in your application providers.\n *\n * @param density - The density variant to use. Options:\n * - 'compact': Minimal spacing (28px row height, 32px header height, 4px spacing)\n * - 'standard': Default spacing (42px row height, 48px header height, 8px spacing)\n * - 'comfort': Generous spacing (84px row height, 96px header height, 12px spacing)\n * @param gridOptions - Optional AG Grid options to merge with Element defaults.\n * These options will override Element defaults if specified.\n * @returns Environment providers for dependency injection\n *\n * @example\n * ```typescript\n * // In app.config.ts\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideSiAgGridConfig()\n * ]\n * };\n *\n * // With custom options\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideSiAgGridConfig('compact', {\n * rowHeight: 30,\n * suppressMenuHide: true\n * })\n * ]\n * };\n * ```\n */\nexport const provideSiAgGridConfig = (\n density: 'compact' | 'comfort' | 'standard' = 'standard',\n gridOptions?: GridOptions\n): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: 'ag-grid-options',\n useValue: provideGlobalGridOptions({\n ...ELEMENT_AG_GRID_OPTIONS,\n ...gridOptions,\n theme: THEME_BY_DENSITY.get(density)\n })\n }\n ]);\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nexport * from './components';\nexport * from './provider';\nexport * from './themes';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;AAAA;;;AAGG;AAOH;;;AAGG;MAiBU,oBAAoB,CAAA;AACvB,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvC;;AAEG;IACI,IAAI,GAAqB,SAAS;AAEzC;;;AAGG;AACK,IAAA,MAAM;AAEd;;;AAGG;AACK,IAAA,qBAAqB;AAE7B;;;AAGG;IACH,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;QAC7B;IACF;AAEA;;;AAGG;IACH,gBAAgB,GAAA;;AAEd,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC;QAC7E;;AAGA,QAAA,IAAI,CAAC,qBAAqB,GAAG,CAAC,KAAiB,KAAI;AACjD,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;YAC1C,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,kCAAkC,CAAC;YAE1E,IAAI,eAAe,EAAE;gBACnB,KAAK,CAAC,eAAe,EAAE;YACzB;AACF,QAAA,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC;IAC1E;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC;QAC7E;IACF;AAEA,IAAA,MAAM,CAAC,MAAmB,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;IACtB;IAEA,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI;IAC1B;IAEA,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa;IACtC;AAEA,IAAA,OAAO,CAAC,IAAiB,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,SAAS;AAC7B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;QAC7B;IACF;uGA3EW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAbrB;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAZS,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAc5D,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAhBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,qBAAqB,EAAE,yBAAyB,CAAC;AACxE,oBAAA,QAAQ,EAAE;;;;;;;;;;;AAWT,EAAA;AACF,iBAAA;;;AC7BD;;;AAGG;AAMH;;;;;;;;;;;;;;;;AAgBG;MAeU,wBAAwB,CAAA;AACnC;;;AAGG;AACgB,IAAA,IAAI,GAAG,MAAM,CAAS,EAAE,gDAAC;AAE5C;;;AAGG;AACgB,IAAA,OAAO,GAAG,MAAM,CAAS,EAAE,mDAAC;AAE/C;;;AAGG;AACgB,IAAA,OAAO,GAAG,MAAM,CAAqB,SAAS,mDAAC;AAElE,IAAA,MAAM,CAAC,MAAkF,EAAA;QACvF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;IAClC;uGAvBW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXzB,CAAA,gFAAA,CAAkF,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EADlF,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAYpB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAdpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EACxB,CAAC,qBAAqB,CAAC,YACtB,CAAA,gFAAA,CAAkF,EAAA,MAAA,EAAA,CAAA,wFAAA,CAAA,EAAA;;;AC7B9F;;;AAGG;;ACHH;;;AAGG;AAIH;;;;;AAKG;AACI,MAAM,oBAAoB,GAAS,UAAU,CAAC;AACnD,IAAA,GAAG,EAAE;;;;;AAKN;AACA,CAAA,CAAC;;ACpBF;;;AAGG;AAIH;;;;;;;;;;;;;;;;;;;AAmBG;AACI,MAAM,kBAAkB,GAAS,UAAU,CAAC;AACjD,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,MAAM,EAAE;;AAEN,QAAA,gBAAgB,EAAE,KAAK;AACvB,QAAA,cAAc,EAAE,iCAAiC;AACjD,QAAA,UAAU,EAAE,iCAAiC;AAC7C,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,gBAAgB,EAAE,KAAK;;AAGvB,QAAA,WAAW,EAAE,8BAA8B;AAC3C,QAAA,eAAe,EAAE,uBAAuB;AACxC,QAAA,WAAW,EAAE,qBAAqB;AAClC,QAAA,eAAe,EAAE,6BAA6B;AAC9C,QAAA,YAAY,EAAE,8BAA8B;AAC5C,QAAA,eAAe,EAAE,+BAA+B;;AAGhD,QAAA,2BAA2B,EAAE,uCAAuC;AACpE,QAAA,kBAAkB,EAAE;AAClB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,qBAAqB,EAAE,4CAA4C;AACnE,QAAA,qBAAqB,EAAE,iCAAiC;AACxD,QAAA,YAAY,EAAE;AACZ,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,eAAe,EAAE,sCAAsC;AAEvD,QAAA,0BAA0B,EAAE,uCAAuC;AACnE,QAAA,iBAAiB,EAAE;AACjB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,oBAAoB,EAAE,4CAA4C;AAElE,QAAA,6BAA6B,EAAE,iCAAiC;AAChE,QAAA,uBAAuB,EAAE,8BAA8B;AACvD,QAAA,oBAAoB,EAAE;AACpB,YAAA,KAAK,EAAE;AACR,SAAA;;AAGD,QAAA,oCAAoC,EAAE;AACpC,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,kCAAkC,EAAE,4BAA4B;AAChE,QAAA,oCAAoC,EAAE,6BAA6B;AACnE,QAAA,oCAAoC,EAAE,6BAA6B;AACnE,QAAA,mCAAmC,EAAE,iCAAiC;;AAGtE,QAAA,iBAAiB,EAAE;AACjB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,aAAa,EAAE,6BAA6B;;AAG5C,QAAA,YAAY,EAAE;AACZ,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,6BAA6B,EAAE,uBAAuB;AACtD,QAAA,oBAAoB,EAAE;AACpB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,6BAA6B,EAAE,6BAA6B;AAC5D,QAAA,uBAAuB,EAAE,6BAA6B;AACtD,QAAA,gBAAgB,EAAE,6BAA6B;;AAG/C,QAAA,qBAAqB,EAAE,uBAAuB;AAC9C,QAAA,SAAS,EAAE;AACT,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,aAAa,EAAE,6BAA6B;AAC5C,QAAA,6BAA6B,EAAE,uBAAuB;AACtD,QAAA,0BAA0B,EAAE,gCAAgC;;AAG5D,QAAA,eAAe,EAAE;AACf,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,KAAK,EAAE;AACR,SAAA;;AAGD,QAAA,oBAAoB,EAAE,KAAK;AAC3B,QAAA,mBAAmB,EAAE,KAAK;AAC1B,QAAA,8BAA8B,EAAE,+BAA+B;AAC/D,QAAA,0BAA0B,EAAE,+BAA+B;AAC3D,QAAA,yBAAyB,EAAE,oCAAoC;AAC/D,QAAA,yBAAyB,EAAE;AACzB,YAAA,GAAG,EAAE;AACN,SAAA;AACD,QAAA,oCAAoC,EAAE,+BAA+B;AACrE,QAAA,gCAAgC,EAAE,+BAA+B;AACjE,QAAA,+BAA+B,EAAE,uBAAuB;AACxD,QAAA,gCAAgC,EAAE,uBAAuB;AACzD,QAAA,4BAA4B,EAAE,qBAAqB;;AAGnD,QAAA,qBAAqB,EAAE,uBAAuB;AAC9C,QAAA,8BAA8B,EAAE,6BAA6B;AAC7D,QAAA,kBAAkB,EAAE;AAClB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,6BAA6B,EAAE,qBAAqB;AACpD,QAAA,eAAe,EAAE;AACf,YAAA,KAAK,EAAE;AACR,SAAA;;AAGD,QAAA,oBAAoB,EAAE,uBAAuB;AAC7C,QAAA,WAAW,EAAE;AACX,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,iBAAiB,EAAE,KAAK;AACxB,QAAA,4BAA4B,EAAE,uBAAuB;AACrD,QAAA,mBAAmB,EAAE;AACnB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,sBAAsB,EAAE,8BAA8B;AACtD,QAAA,gBAAgB,EAAE;AAChB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,gBAAgB,EAAE,KAAK;AACvB,QAAA,cAAc,EAAE,qBAAqB;AACrC,QAAA,kBAAkB,EAAE;AAClB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,cAAc,EAAE,6BAA6B;;AAG7C,QAAA,+BAA+B,EAAE,gCAAgC;AACjE,QAAA,qBAAqB,EAAE,qCAAqC;AAC5D,QAAA,8BAA8B,EAAE,qCAAqC;AACrE,QAAA,yBAAyB,EAAE,iCAAiC;AAC5D,QAAA,eAAe,EAAE,6BAA6B;AAC9C,QAAA,8BAA8B,EAAE,6BAA6B;AAC7D,QAAA,oBAAoB,EAAE,6BAA6B;AACnD,QAAA,SAAS,EAAE,6BAA6B;AACxC,QAAA,QAAQ,EAAE,MAAM;;AAGhB,QAAA,mBAAmB,EAAE,uBAAuB;AAC5C,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EACR,wFAAwF;;AAG1F,QAAA,kBAAkB,EAAE;AAClB,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,KAAK,EAAE;AACR,SAAA;;AAGD,QAAA,+BAA+B,EAAE,uBAAuB;AACxD,QAAA,sBAAsB,EAAE,KAAK;AAC7B,QAAA,sBAAsB,EACpB,wFAAwF;AAC1F,QAAA,eAAe,EAAE,6BAA6B;;AAG9C,QAAA,yBAAyB,EAAE,uBAAuB;AAClD,QAAA,6BAA6B,EAAE,gCAAgC;AAC/D,QAAA,yBAAyB,EAAE,qCAAqC;AAChE,QAAA,4BAA4B,EAAE,gCAAgC;;AAG9D,QAAA,sBAAsB,EAAE,uBAAuB;AAC/C,QAAA,eAAe,EAAE;AACf,YAAA,KAAK,EAAE;AACR,SAAA;;AAGD,QAAA,yBAAyB,EAAE,iCAAiC;AAC5D,QAAA,4BAA4B,EAAE,uBAAuB;AACrD,QAAA,8BAA8B,EAAE,6BAA6B;AAC7D,QAAA,iCAAiC,EAAE,gCAAgC;AACnE,QAAA,wBAAwB,EAAE,wCAAwC;AAClE,QAAA,gCAAgC,EAAE,gCAAgC;;AAGlE,QAAA,mBAAmB,EAAE,6BAA6B;AAClD,QAAA,mBAAmB,EAAE,6BAA6B;;AAGlD,QAAA,gBAAgB,EAAE;AAChB,YAAA,KAAK,EAAE;AACR,SAAA;;AAGD,QAAA,kBAAkB,EAAE,MAAM;AAC1B,QAAA,8BAA8B,EAAE,qBAAqB;AACrD,QAAA,6BAA6B,EAAE,qBAAqB;AACpD,QAAA,iCAAiC,EAAE,qBAAqB;AACxD,QAAA,uBAAuB,EAAE,KAAK;AAC9B,QAAA,iBAAiB,EAAE,MAAM;;AAGzB,QAAA,yBAAyB,EAAE,8BAA8B;AACzD,QAAA,uBAAuB,EAAE,+BAA+B;AACxD,QAAA,wCAAwC,EAAE,gCAAgC;;AAG1E,QAAA,sBAAsB,EAAE,mCAAmC;AAC3D,QAAA,aAAa,EAAE,KAAK;AACpB,QAAA,gBAAgB,EAAE,6BAA6B;;AAG/C,QAAA,kBAAkB,EAAE,iCAAiC;AACrD,QAAA,qBAAqB,EAAE,uBAAuB;AAC9C,QAAA,YAAY,EAAE;AACZ,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,uBAAuB,EAAE,iCAAiC;AAC1D,QAAA,oBAAoB,EAAE,+BAA+B;AACrD,QAAA,yBAAyB,EAAE,iCAAiC;;AAG5D,QAAA,mBAAmB,EAAE,6BAA6B;;AAGlD,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,aAAa,EAAE;AACsB;AACxC,CAAA,CAAC;;AChQF;;;AAGG;AAwCH;;;;;;AAMG;AACH,MAAM,aAAa,GAAG,CAAC,KAA6B,KAClD,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACrF;AAEH;;;;;;AAMG;AACI,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAChD,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,aAAa,CAAC;AACnB,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,MAAM,EAAE,WAAW;AACnB,QAAA,GAAG,EAAE,aAAa;AAClB,QAAA,MAAM,EAAE,aAAa;AACrB,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,cAAc,EAAE,YAAY;AAC5B,QAAA,cAAc,EAAE,YAAY;AAC5B,QAAA,eAAe,EAAE,aAAa;AAC9B,QAAA,YAAY,EAAE,UAAU;AACxB,QAAA,cAAc,EAAE,cAAc;AAC9B,QAAA,OAAO,EAAE,qBAAqB;AAC9B,QAAA,UAAU,EAAE,aAAa;AACzB,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,GAAG,EAAE,UAAU;AACf,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,QAAQ,EAAE,YAAY;AACtB,QAAA,WAAW,EAAE,WAAW;AACxB,QAAA,GAAG,EAAE,WAAW;AAChB,QAAA,MAAM,EAAE,aAAa;AACrB,QAAA,KAAK,EAAE,qBAAqB;AAC5B,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,MAAM,EAAE,WAAW;AACnB,QAAA,OAAO,EAAE,WAAW;AACpB,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,IAAI,EAAE,sBAAsB;AAC5B,QAAA,UAAU,EAAE,sBAAsB;AAClC,QAAA,QAAQ,EAAE,YAAY;AACtB,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,aAAa,EAAE,mBAAmB;AAClC,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,GAAG,EAAE,UAAU;AACf,QAAA,IAAI,EAAE,WAAW;AACjB,QAAA,QAAQ,EAAE,YAAY;AACtB,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,YAAY,EAAE,YAAY;AAC1B,QAAA,YAAY,EAAE,YAAY;AAC1B,QAAA,aAAa,EAAE,aAAa;AAC5B,QAAA,UAAU,EAAE,UAAU;AACtB,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,aAAa,EAAE,aAAa;AAC5B,QAAA,oBAAoB,EAAE,YAAY;AAClC,QAAA,WAAW,EAAE,YAAY;AACzB,QAAA,QAAQ,EAAE,iBAAiB;AAC3B,QAAA,EAAE,EAAE,aAAa;AACjB,QAAA,IAAI,EAAE;KACP;AACF,CAAA,CAAC;;ACpHF;;;AAGG;AAIH;;;;;AAKG;AACI,MAAM,sBAAsB,GAAS,UAAU,CAAC;AACrD,IAAA,GAAG,EAAE;;;;AAIJ,EAAA;AACF,CAAA,CAAC;;ACnBF;;;AAGG;AAIH;;;;;AAKG;AACI,MAAM,mBAAmB,GAAS,UAAU,CAAC;AAClD,IAAA,GAAG,EAAE;;;;;;;;;;;;;;;;AAgBN;AACA,CAAA,CAAC;;AC/BF;;;AAGG;AAIH;;;;;;AAMG;AACI,MAAM,iBAAiB,GAAS,UAAU,CAAC;AAChD,IAAA,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CN;AACA,CAAA,CAAC;;AC5DF;;;AAGG;AAIH;;;;;;AAMG;AACI,MAAM,oBAAoB,GAAS,UAAU,CAAC;AACnD,IAAA,GAAG,EAAE;;;;;;;;;;;;;;;;;;AAkBJ,EAAA;AACF,CAAA,CAAC;;AClCF;;;AAGG;AAIH;;;;;;AAMG;AACI,MAAM,sBAAsB,GAAS,UAAU,CAAC;AACrD,IAAA,GAAG,EAAE;;;;;;;;;;;AAWN;AACA,CAAA,CAAC;;AC3BF;;;AAGG;AAIH;;;;;;AAMG;AACI,MAAM,kBAAkB,GAAS,UAAU,CAAC;AACjD,IAAA,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;AAoBJ,EAAA;AACF,CAAA,CAAC;;ACpCF;;;AAGG;;ACHH;;;AAGG;AAgBH;;;;;AAKG;AACH,MAAM,gBAAgB,GAAU;KAC7B,QAAQ,CAAC,aAAa;KACtB,QAAQ,CAAC,oBAAoB;KAC7B,QAAQ,CAAC,iBAAiB;KAC1B,QAAQ,CAAC,kBAAkB;KAC3B,QAAQ,CAAC,sBAAsB;KAC/B,QAAQ,CAAC,mBAAmB;KAC5B,QAAQ,CAAC,oBAAoB;KAC7B,QAAQ,CAAC,sBAAsB;KAC/B,QAAQ,CAAC,oBAAoB;KAC7B,QAAQ,CAAC,kBAAkB,CAAC;AAE/B;;;;;;AAMG;AACI,MAAM,YAAY,GAAU,gBAAgB,CAAC,UAAU,CAAC;AAC7D,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,YAAY,EAAE,MAAM;AACpB,IAAA,OAAO,EAAE;AACV,CAAA;AAED;;;;;;AAMG;AACI,MAAM,mBAAmB,GAAU,gBAAgB,CAAC,UAAU,CAAC;AACpE,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,YAAY,EAAE,MAAM;AACpB,IAAA,OAAO,EAAE;AACV,CAAA;AAED;;;;;;AAMG;AACI,MAAM,mBAAmB,GAAU,gBAAgB,CAAC,UAAU,CAAC;AACpE,IAAA,SAAS,EAAE,MAAM;AACjB,IAAA,YAAY,EAAE,MAAM;AACpB,IAAA,OAAO,EAAE;AACV,CAAA;;AC1ED;;;AAGG;AAQH;;;;AAIG;AACH,MAAM,uBAAuB,GAAgB;AAC3C,IAAA,gBAAgB,EAAE,GAAG;AACrB,IAAA,UAAU,EAAE;AACV,QAAA,WAAW,EAAE,oBAAoB;AACjC,QAAA,eAAe,EAAE;AAClB;CACF;AAED;;;AAGG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAgB;IAC9C,CAAC,SAAS,EAAE,mBAAmB,CAAC;IAChC,CAAC,SAAS,EAAE,mBAAmB,CAAC;IAChC,CAAC,UAAU,EAAE,YAAY;AAC1B,CAAA,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCG;AACI,MAAM,qBAAqB,GAAG,CACnC,UAA8C,UAAU,EACxD,WAAyB,KACD;AACxB,IAAA,OAAO,wBAAwB,CAAC;AAC9B,QAAA;AACE,YAAA,OAAO,EAAE,iBAAiB;YAC1B,QAAQ,EAAE,wBAAwB,CAAC;AACjC,gBAAA,GAAG,uBAAuB;AAC1B,gBAAA,GAAG,WAAW;AACd,gBAAA,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO;aACpC;AACF;AACF,KAAA,CAAC;AACJ;;AClFA;;;AAGG;;ACHH;;AAEG;;;;"}
1
+ {"version":3,"file":"siemens-element-ng-ag-grid.mjs","sources":["../../../../projects/element-ng/ag-grid/components/ag-date-input.component.ts","../../../../projects/element-ng/ag-grid/components/ag-no-rows-overlay.component.ts","../../../../projects/element-ng/ag-grid/components/index.ts","../../../../projects/element-ng/ag-grid/parts/checkbox-style.part.ts","../../../../projects/element-ng/ag-grid/parts/color-scheme.part.ts","../../../../projects/element-ng/ag-grid/parts/icon-overrides.part.ts","../../../../projects/element-ng/ag-grid/parts/pagination-style.part.ts","../../../../projects/element-ng/ag-grid/parts/pinning-style.part.ts","../../../../projects/element-ng/ag-grid/parts/radio-style.part.ts","../../../../projects/element-ng/ag-grid/parts/skeleton-style.part.ts","../../../../projects/element-ng/ag-grid/parts/text-filter-style.part.ts","../../../../projects/element-ng/ag-grid/parts/toggle-style.part.ts","../../../../projects/element-ng/ag-grid/parts/index.ts","../../../../projects/element-ng/ag-grid/themes.ts","../../../../projects/element-ng/ag-grid/provider.ts","../../../../projects/element-ng/ag-grid/index.ts","../../../../projects/element-ng/ag-grid/siemens-element-ng-ag-grid.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SiCalendarButtonComponent, SiDatepickerDirective } from '@siemens/element-ng/datepicker';\nimport { IDateComp, IDateParams } from 'ag-grid-community';\n\n/**\n * Custom AG Grid date component using Element datepicker.\n * This component replaces the native HTML date input with the Element design system datepicker.\n */\n@Component({\n selector: 'si-ag-date-input',\n imports: [FormsModule, SiDatepickerDirective, SiCalendarButtonComponent],\n template: `\n <si-calendar-button class=\"w-100\">\n <input\n type=\"text\"\n class=\"form-control\"\n siDatepicker\n [autoClose]=\"true\"\n [(ngModel)]=\"date\"\n (ngModelChange)=\"onDateChange()\"\n />\n </si-calendar-button>\n `,\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class AgDateInputComponent implements IDateComp, OnDestroy {\n private elementRef = inject(ElementRef);\n\n /**\n * The selected date value.\n */\n public date: Date | undefined = undefined;\n\n /**\n * AG Grid date filter parameters.\n * @internal\n */\n private params!: IDateParams;\n\n /**\n * Document click event listener for calendar overlay.\n * @internal\n */\n private documentClickListener?: (event: MouseEvent) => void;\n\n /**\n * Notifies AG Grid when the date value changes.\n * @internal\n */\n onDateChange(): void {\n if (this.params) {\n this.params.onDateChanged();\n }\n }\n\n /**\n * Lifecycle hook called after the component GUI is attached.\n * Sets up event listeners to prevent filter popup from closing when interacting with calendar.\n */\n afterGuiAttached(): void {\n // Remove any existing listener to prevent duplicates\n if (this.documentClickListener) {\n document.removeEventListener('mousedown', this.documentClickListener, true);\n }\n\n // Intercept document click events to keep the filter open when clicking the calendar\n this.documentClickListener = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const calendarOverlay = target.closest('si-datepicker, .cdk-overlay-pane');\n\n if (calendarOverlay) {\n event.stopPropagation();\n }\n };\n document.addEventListener('mousedown', this.documentClickListener, true);\n }\n\n ngOnDestroy(): void {\n if (this.documentClickListener) {\n document.removeEventListener('mousedown', this.documentClickListener, true);\n }\n }\n\n agInit(params: IDateParams): void {\n this.params = params;\n }\n\n getDate(): Date | null {\n return this.date ?? null;\n }\n\n getGui(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n setDate(date: Date | null): void {\n this.date = date ?? undefined;\n if (this.params) {\n this.params.onDateChanged();\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { ChangeDetectionStrategy, Component, signal } from '@angular/core';\nimport { SiEmptyStateComponent } from '@siemens/element-ng/empty-state';\nimport { INoRowsOverlayParams } from 'ag-grid-community';\n\n/**\n * Custom AG Grid no rows overlay component using Element Empty State.\n * This component is displayed when the grid has no data to show.\n *\n * @example\n * Using with custom parameters\n * ```typescript\n * <ag-grid-angular\n * [noRowsOverlayComponent]=\"AgNoRowsOverlayComponent\"\n * [noRowsOverlayComponentParams]=\"{\n * icon: 'element-technical-search',\n * heading: 'No results found',\n * content: 'Try adjusting your filters.'\n * }\"\n * />\n * ```\n */\n@Component({\n selector: 'si-ag-no-rows-overlay',\n imports: [SiEmptyStateComponent],\n template: ` <si-empty-state [icon]=\"icon()\" [heading]=\"heading()\" [content]=\"content()\" /> `,\n styles: `\n :host {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n }\n `,\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class AgNoRowsOverlayComponent {\n /**\n * Icon to display in the empty state.\n *\n */\n protected readonly icon = signal<string>('');\n\n /**\n * Heading text for the empty state.\n *\n */\n protected readonly heading = signal<string>('');\n\n /**\n * Description text for the empty state.\n *\n */\n protected readonly content = signal<string | undefined>(undefined);\n\n agInit(params: INoRowsOverlayParams & { icon: string; heading: string; content?: string }): void {\n this.icon.set(params.icon);\n this.heading.set(params.heading);\n this.content.set(params.content);\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './ag-date-input.component';\nexport * from './ag-no-rows-overlay.component';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a checkbox style part for the Element AG Grid theme.\n * This part overrides the unchecked checkbox hover state to match Element design system.\n *\n * @returns A part that defines checkbox styling for the Element AG Grid theme.\n */\nexport const elementCheckboxStyle: Part = createPart({\n css: `\n.ag-checkbox-input-wrapper:not(.ag-checked):not(.ag-indeterminate):hover {\n border-color: var(--element-action-secondary-border-hover);\n background: var(--element-action-secondary-hover);\n}\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { elementCheckedImageShape } from '@siemens/element-ng/icon';\nimport { Part, ThemeDefaultParams, createPart } from 'ag-grid-community';\n\n/**\n * Creates a comprehensive color scheme part for the Element AG Grid theme.\n *\n * This part applies Element design system colors and styling to all AG Grid components,\n * including:\n * - Typography (fonts, weights, sizes)\n * - Base colors (backgrounds, borders, foreground)\n * - Interactive elements (buttons, inputs, icons)\n * - Cell and row styling (hover, selection, borders)\n * - Header components\n * - Checkboxes and form controls\n * - Menus, dialogs, and overlays\n * - Tooltips and tabs\n * - Charts and visualizations\n *\n * All colors are mapped to CSS custom properties from the Element design system,\n * ensuring consistency with other Element components and automatic theme support.\n *\n * @returns A part that defines the complete color scheme for the Element AG Grid theme.\n */\nexport const elementColorScheme: Part = createPart({\n feature: 'colorScheme',\n params: {\n // Typography\n buttonFontWeight: '600',\n cellFontFamily: 'var(--element-body-font-family)',\n fontFamily: 'var(--element-body-font-family)',\n fontSize: '14px',\n headerFontWeight: '600',\n\n // Base colors:\n accentColor: 'var(--element-focus-default)',\n backgroundColor: 'var(--element-base-1)',\n borderColor: 'var(--element-ui-4)',\n foregroundColor: 'var(--element-text-primary)',\n invalidColor: 'var(--element-status-danger)',\n subtleTextColor: 'var(--element-text-secondary)',\n\n // Button styles\n buttonActiveBackgroundColor: 'var(--element-action-secondary-hover)',\n buttonActiveBorder: {\n color: 'var(--element-action-secondary-hover)'\n },\n buttonActiveTextColor: 'var(--element-action-secondary-text-hover)',\n buttonBackgroundColor: 'var(--element-action-secondary)',\n buttonBorder: {\n color: 'var(--element-action-secondary-border)'\n },\n buttonTextColor: 'var(--element-action-secondary-text)',\n\n buttonHoverBackgroundColor: 'var(--element-action-secondary-hover)',\n buttonHoverBorder: {\n color: 'var(--element-action-secondary-border-hover)'\n },\n buttonHoverTextColor: 'var(--element-action-secondary-text-hover)',\n\n buttonDisabledBackgroundColor: 'var(--element-action-secondary)',\n buttonDisabledTextColor: 'var(--element-text-disabled)',\n buttonDisabledBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Advanced filter builder styles\n advancedFilterBuilderButtonBarBorder: {\n color: 'var(--element-ui-4)'\n },\n advancedFilterBuilderJoinPillColor: 'var(--element-base-danger)',\n advancedFilterBuilderColumnPillColor: 'var(--element-base-success)',\n advancedFilterBuilderOptionPillColor: 'var(--element-base-warning)',\n advancedFilterBuilderValuePillColor: 'var(--element-base-information)',\n\n // Cell styles\n cellEditingBorder: {\n color: 'var(--element-action-primary)'\n },\n cellTextColor: 'var(--element-text-primary)',\n\n // Column styles\n columnBorder: {\n color: 'var(--element-action-secondary)'\n },\n columnDropCellBackgroundColor: 'var(--element-base-1)',\n columnDropCellBorder: {\n color: 'var(--element-action-secondary)'\n },\n columnDropCellDragHandleColor: 'var(--element-text-primary)',\n columnDropCellTextColor: 'var(--element-text-primary)',\n columnHoverColor: 'var(--element-base-1-hover)',\n\n // Row styles\n oddRowBackgroundColor: 'var(--element-base-1)',\n rowBorder: {\n color: 'var(--element-ui-4)'\n },\n rowHoverColor: 'var(--element-base-1-hover)',\n rowLoadingSkeletonEffectColor: 'var(--element-base-1)',\n selectedRowBackgroundColor: 'var(--element-base-1-selected)',\n\n // Dialog and footer styles\n footerRowBorder: {\n color: 'var(--element-ui-4)'\n },\n dialogBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Checkbox styles\n checkboxBorderRadius: '2px',\n checkboxBorderWidth: '1px',\n checkboxCheckedBackgroundColor: 'var(--element-action-primary)',\n checkboxCheckedBorderColor: 'var(--element-action-primary)',\n checkboxCheckedShapeColor: 'var(--element-action-primary-text)',\n checkboxCheckedShapeImage: {\n url: elementCheckedImageShape\n },\n checkboxIndeterminateBackgroundColor: 'var(--element-action-primary)',\n checkboxIndeterminateBorderColor: 'var(--element-action-primary)',\n checkboxIndeterminateShapeColor: 'var(--element-base-1)',\n checkboxUncheckedBackgroundColor: 'var(--element-base-1)',\n checkboxUncheckedBorderColor: 'var(--element-ui-1)',\n\n // Header styles\n headerBackgroundColor: 'var(--element-base-1)',\n headerCellHoverBackgroundColor: 'var(--element-base-1-hover)',\n headerColumnBorder: {\n color: 'var(--element-action-secondary)'\n },\n headerColumnResizeHandleColor: 'var(--element-ui-4)',\n headerRowBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Input styles\n inputBackgroundColor: 'var(--element-base-1)',\n inputBorder: {\n color: 'var(--element-ui-2)'\n },\n inputBorderRadius: '2px',\n inputDisabledBackgroundColor: 'var(--element-base-1)',\n inputDisabledBorder: {\n color: 'var(--element-ui-3)'\n },\n inputDisabledTextColor: 'var(--element-text-disabled)',\n inputFocusBorder: {\n color: 'var(--element-focus-default)'\n },\n inputFocusShadow: false,\n inputIconColor: 'var(--element-ui-1)',\n inputInvalidBorder: {\n color: 'var(--element-status-danger)'\n },\n inputTextColor: 'var(--element-text-primary)',\n\n // Icon styles\n iconButtonActiveBackgroundColor: 'var(--element-base-1-selected)',\n iconButtonActiveColor: 'var(--element-action-primary-hover)',\n iconButtonActiveIndicatorColor: 'var(--element-action-primary-hover)',\n iconButtonBackgroundColor: 'var(--element-action-secondary)',\n iconButtonColor: 'var(--element-text-primary)',\n iconButtonHoverBackgroundColor: 'var(--element-base-1-hover)',\n iconButtonHoverColor: 'var(--element-text-primary)',\n iconColor: 'var(--element-text-primary)',\n iconSize: '18px',\n\n // Menu styles\n menuBackgroundColor: 'var(--element-base-1)',\n menuBorder: false,\n menuShadow:\n '0 0 8px var(--element-box-shadow-color-1), 0 8px 8px var(--element-box-shadow-color-2)',\n\n // Pinning styles\n pinnedColumnBorder: {\n color: 'var(--element-base-1-selected)'\n },\n pinnedRowBorder: {\n color: 'var(--element-base-1-selected)'\n },\n\n // Drag and drop styles\n dragAndDropImageBackgroundColor: 'var(--element-base-3)',\n dragAndDropImageBorder: false,\n dragAndDropImageShadow:\n '0 0 8px var(--element-box-shadow-color-1), 0 8px 8px var(--element-box-shadow-color-2)',\n dragHandleColor: 'var(--element-text-primary)',\n\n // Range selection styles\n rangeHeaderHighlightColor: 'var(--element-base-1)',\n rangeSelectionBackgroundColor: 'var(--element-base-1-selected)',\n rangeSelectionBorderColor: 'var(--element-action-primary-hover)',\n rangeSelectionHighlightColor: 'var(--element-base-1-selected)',\n\n // Sidebar styles\n sideBarBackgroundColor: 'var(--element-base-1)',\n sidePanelBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Side button styles\n sideButtonBackgroundColor: 'var(--element-action-secondary)',\n sideButtonBarBackgroundColor: 'var(--element-base-1)',\n sideButtonHoverBackgroundColor: 'var(--element-base-1-hover)',\n sideButtonSelectedBackgroundColor: 'var(--element-base-1-selected)',\n sideButtonSelectedBorder: 'var(--element-action-secondary-border)',\n sideButtonSelectedUnderlineColor: 'var(--element-base-1-selected)',\n\n // Status bar styles\n statusBarLabelColor: 'var(--element-text-primary)',\n statusBarValueColor: 'var(--element-text-primary)',\n\n // Select cell styles\n selectCellBorder: {\n color: 'var(--element-ui-4)'\n },\n\n // Toggle button styles - matching Element switch design\n toggleButtonHeight: '20px',\n toggleButtonOffBackgroundColor: 'var(--element-ui-4)',\n toggleButtonOnBackgroundColor: 'var(--element-ui-0)',\n toggleButtonSwitchBackgroundColor: 'var(--element-ui-2)',\n toggleButtonSwitchInset: '4px',\n toggleButtonWidth: '40px',\n\n // Value change styles\n valueChangeDeltaDownColor: 'var(--element-status-danger)',\n valueChangeDeltaUpColor: 'var(--element-status-success)',\n valueChangeValueHighlightBackgroundColor: 'var(--element-base-1-selected)',\n\n // Tooltip styles\n tooltipBackgroundColor: 'var(--element-base-translucent-2)',\n tooltipBorder: false,\n tooltipTextColor: 'var(--element-text-inverse)',\n\n // Tab styles\n tabBackgroundColor: 'var(--element-action-secondary)',\n tabBarBackgroundColor: 'var(--element-base-1)',\n tabBarBorder: {\n color: 'var(--element-ui-4)'\n },\n tabHoverBackgroundColor: 'var(--element-action-secondary)',\n tabSelectedTextColor: 'var(--element-action-primary)',\n tabSelectedUnderlineColor: 'var(--element-action-secondary)',\n\n // Chart styles\n chartMenuLabelColor: 'var(--element-text-primary)',\n\n // Misc styles\n focusShadow: false,\n wrapperBorder: false\n } satisfies Partial<ThemeDefaultParams>\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport {\n elementBusy,\n elementCancel,\n elementCopy,\n elementCut,\n elementDown2,\n elementDownload,\n elementEdit,\n elementFilter,\n elementHide,\n elementJumpToListItem,\n elementLayoutPane3Alt,\n elementLeft2,\n elementLeft4,\n elementLink,\n elementLinkBroken,\n elementMenu,\n elementMinus,\n elementMove,\n elementOk,\n elementOptionsVertical,\n elementOutOfService,\n elementPalette,\n elementPaste,\n elementPin,\n elementPinch,\n elementPlus,\n elementReport,\n elementRight2,\n elementRight4,\n elementShow,\n elementSortDown,\n elementSortUp,\n elementSum,\n elementUp2,\n elementZoom\n} from '@siemens/element-icons';\nimport { iconOverrides } from 'ag-grid-community';\n\n/**\n * Utility function to convert data URI icon map to AG Grid icon format.\n * Extracts base64 SVG data from data URIs.\n *\n * @param icons - Record of icon names to data URI strings\n * @returns Record of icon names to AG Grid icon objects with SVG data\n */\nconst createIconMap = (icons: Record<string, string>): Record<string, { svg: string }> =>\n Object.fromEntries(\n Object.entries(icons).map(([key, dataUri]) => [key, { svg: dataUri.split(',')[1] }])\n );\n\n/**\n * Creates an icon overrides part for the Element AG Grid theme.\n * This part allows customization of AG Grid icons with Element design system icons.\n * Icons can be added to the icons map as needed.\n *\n * @returns A part that defines icon overrides for the Element AG Grid theme.\n */\nexport const elementIconOverrides = iconOverrides({\n type: 'image',\n mask: true,\n icons: createIconMap({\n aggregation: elementSum,\n arrows: elementMove,\n asc: elementSortUp,\n cancel: elementCancel,\n chart: elementReport,\n 'chevron-down': elementDown2,\n 'chevron-left': elementLeft2,\n 'chevron-right': elementRight2,\n 'chevron-up': elementUp2,\n 'color-picker': elementPalette,\n columns: elementLayoutPane3Alt,\n contracted: elementRight2,\n copy: elementCopy,\n cross: elementCancel,\n cut: elementCut,\n desc: elementSortDown,\n edit: elementEdit,\n expanded: elementLeft2,\n 'eye-slash': elementHide,\n eye: elementShow,\n filter: elementFilter,\n group: elementJumpToListItem,\n left: elementLeft4,\n linked: elementLink,\n loading: elementBusy,\n maximize: elementZoom,\n menu: elementOptionsVertical,\n 'menu-alt': elementOptionsVertical,\n minimize: elementPinch,\n minus: elementMinus,\n next: elementRight2,\n 'not-allowed': elementOutOfService,\n paste: elementPaste,\n pin: elementPin,\n plus: elementPlus,\n previous: elementLeft2,\n right: elementRight4,\n save: elementDownload,\n 'small-down': elementDown2,\n 'small-left': elementLeft2,\n 'small-right': elementRight2,\n 'small-up': elementUp2,\n tick: elementOk,\n 'tree-closed': elementRight2,\n 'tree-indeterminate': elementMinus,\n 'tree-open': elementDown2,\n unlinked: elementLinkBroken,\n up: elementSortUp,\n grip: elementMenu\n })\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a pagination style part for the Element AG Grid theme.\n * This part applies font weight styling to pagination summary numbers.\n *\n * @returns A part that defines pagination styling for the Element AG Grid theme.\n */\nexport const elementPaginationStyle: Part = createPart({\n css: `\n .ag-paging-row-summary-panel-number {\n font-weight: 600;\n }\n `\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a pinning style part for the Element AG Grid theme.\n * This part applies box shadow styling to floating top and bottom rows.\n *\n * @returns A part that defines pinning styles for the Element AG Grid theme.\n */\nexport const elementPinningStyle: Part = createPart({\n css: `\n .ag-floating-top {\n box-shadow:\n 0 0 8px var(--element-box-shadow-color-1),\n 0 8px 8px var(--element-box-shadow-color-2);\n z-index: 1;\n position: relative;\n }\n\n .ag-floating-bottom {\n box-shadow:\n 0 0 8px var(--element-box-shadow-color-1),\n 0 -8px 8px var(--element-box-shadow-color-2);\n z-index: 1;\n position: relative;\n }\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a radio button style part for the Element AG Grid theme.\n * This part applies Element design system styling to radio buttons including colors,\n * hover states, checked states, and disabled states.\n *\n * @returns A part that defines radio button styling for the Element AG Grid theme.\n */\nexport const elementRadioStyle: Part = createPart({\n css: `\n .ag-radio-button-input-wrapper {\n background-color: var(--element-ui-5);\n border: 1px solid var(--element-ui-1);\n}\n\n.ag-radio-button-input-wrapper:hover {\n border-color: var(--element-action-secondary-border-hover);\n background: var(--element-action-secondary-hover);\n}\n\n.ag-radio-button-input-wrapper.ag-checked {\n border-color: var(--element-ui-0);\n background-color: var(--element-ui-5);\n}\n\n.ag-radio-button-input-wrapper.ag-checked::after {\n background-color: var(--element-ui-0);\n mask-image: none;\n inset: 4px;\n border-radius: 50%;\n}\n\n.ag-radio-button-input-wrapper.ag-checked:hover {\n border-color: var(--element-ui-0-hover);\n}\n\n.ag-radio-button-input-wrapper.ag-checked:hover::after {\n background-color: var(--element-ui-0-hover);\n}\n\n.ag-radio-button-input-wrapper.ag-disabled {\n border-color: var(--element-ui-3);\n background-color: var(--element-ui-5);\n opacity: 1;\n}\n\n.ag-radio-button-input-wrapper.ag-checked.ag-disabled {\n border-color: var(--element-ui-3);\n}\n\n.ag-radio-button-input-wrapper.ag-checked.ag-disabled::after {\n background-color: var(--element-ui-3);\n}\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a skeleton style part for the Element AG Grid theme.\n * This part applies Element design system shimmer animation to skeleton loading effects\n * to match the Element skeleton component design.\n *\n * @returns A part that defines skeleton loading styles for the Element AG Grid theme.\n */\nexport const elementSkeletonStyle: Part = createPart({\n css: `\n @keyframes shimmer {\n to {\n background-position-x: -100%;\n }\n }\n\n .ag-skeleton-effect {\n background: linear-gradient(\n 90deg,\n var(--element-base-1-hover) 0%,\n var(--element-base-1-selected) 25%,\n var(--element-base-1-hover) 50%\n );\n background-size: 200% 100%;\n background-position-x: 100%;\n animation: shimmer calc(1.6s * var(--element-animations-enabled, 1)) ease-in-out infinite;\n }\n `\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a text filter style part for the Element AG Grid theme.\n * This part applies Element design system styling to text filter search inputs,\n * including border width and background color customization.\n *\n * @returns A part that defines text filter search input styling for the Element AG Grid theme.\n */\nexport const elementTextFilterStyle: Part = createPart({\n css: `\n .ag-column-select-header-filter-wrapper,\n.ag-filter-toolpanel-search,\n.ag-mini-filter,\n.ag-filter-filter,\n.ag-filter-add-select {\n .ag-text-field-input[type='text'] {\n border-width: 0;\n background-color: var(--element-base-4);\n }\n}\n`\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { createPart, type Part } from 'ag-grid-community';\n\n/**\n * Creates a toggle button style part for the Element AG Grid theme.\n * This part applies Element design system switch styling including hover states,\n * transitions, and proper knob positioning to match the Element switch component.\n *\n * @returns A part that defines toggle button styling for the Element AG Grid theme.\n */\nexport const elementToggleStyle: Part = createPart({\n css: `\n .ag-toggle-button-input-wrapper {\n transition: background-color 0.4s;\n }\n\n .ag-toggle-button-input-wrapper::before {\n transition: left 0.4s;\n }\n\n .ag-toggle-button-input-wrapper:not(.ag-checked):hover {\n background-color: var(--element-ui-4);\n }\n\n .ag-toggle-button-input-wrapper.ag-checked:hover {\n background-color: var(--element-ui-0-hover);\n }\n\n .ag-toggle-button-input-wrapper.ag-checked::before {\n background-color: var(--element-ui-5);\n }\n `\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './checkbox-style.part';\nexport * from './color-scheme.part';\nexport * from './icon-overrides.part';\nexport * from './pagination-style.part';\nexport * from './pinning-style.part';\nexport * from './radio-style.part';\nexport * from './skeleton-style.part';\nexport * from './text-filter-style.part';\nexport * from './toggle-style.part';\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { iconSetAlpine, Theme, themeAlpine } from 'ag-grid-community';\n\nimport {\n elementCheckboxStyle,\n elementColorScheme,\n elementIconOverrides,\n elementPaginationStyle,\n elementPinningStyle,\n elementRadioStyle,\n elementSkeletonStyle,\n elementTextFilterStyle,\n elementToggleStyle\n} from './parts';\n\n/**\n * Base theme combining all Element design system parts with AG Grid Alpine theme.\n * This theme includes custom styling for checkboxes, radios, toggles, pagination,\n * pinning, skeleton loaders, text filters, icons, and color scheme.\n * @internal\n */\nconst elementBaseTheme: Theme = themeAlpine\n .withPart(iconSetAlpine)\n .withPart(elementCheckboxStyle)\n .withPart(elementRadioStyle)\n .withPart(elementToggleStyle)\n .withPart(elementPaginationStyle)\n .withPart(elementPinningStyle)\n .withPart(elementSkeletonStyle)\n .withPart(elementTextFilterStyle)\n .withPart(elementIconOverrides)\n .withPart(elementColorScheme);\n\n/**\n * Standard density Element AG Grid theme.\n * Provides balanced spacing suitable for most use cases.\n * - Row height: 42px\n * - Header height: 48px\n * - Spacing: 8px\n */\nexport const elementTheme: Theme = elementBaseTheme.withParams({\n rowHeight: '42px',\n headerHeight: '48px',\n spacing: '8px'\n});\n\n/**\n * Compact density Element AG Grid theme.\n * Optimized for displaying more data in limited space.\n * - Row height: 28px\n * - Header height: 32px\n * - Spacing: 4px\n */\nexport const elementThemeCompact: Theme = elementBaseTheme.withParams({\n rowHeight: '28px',\n headerHeight: '32px',\n spacing: '4px'\n});\n\n/**\n * Comfort density Element AG Grid theme.\n * Provides generous spacing for enhanced readability and touch interactions.\n * - Row height: 84px\n * - Header height: 96px\n * - Spacing: 12px\n */\nexport const elementThemeComfort: Theme = elementBaseTheme.withParams({\n rowHeight: '84px',\n headerHeight: '96px',\n spacing: '12px'\n});\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { GridOptions, provideGlobalGridOptions, Theme } from 'ag-grid-community';\n\nimport { AgDateInputComponent, AgNoRowsOverlayComponent } from './components';\nimport { elementTheme, elementThemeCompact, elementThemeComfort } from './themes';\n\n/**\n * Default AG Grid options for Element theme.\n * Includes custom components for date input and empty state overlay.\n * @internal\n */\nconst ELEMENT_AG_GRID_OPTIONS: GridOptions = {\n tooltipShowDelay: 200,\n components: {\n agDateInput: AgDateInputComponent,\n agNoRowsOverlay: AgNoRowsOverlayComponent\n }\n};\n\n/**\n * Theme mapping by density variant.\n * @internal\n */\nconst THEME_BY_DENSITY = new Map<string, Theme>([\n ['compact', elementThemeCompact],\n ['comfort', elementThemeComfort],\n ['standard', elementTheme]\n]);\n\n/**\n * Provides AG Grid global configuration with Element design system theme.\n *\n * This provider configures AG Grid with the Element theme, custom components,\n * and density-specific styling. Use it in your application providers.\n *\n * @param density - The density variant to use. Options:\n * - 'compact': Minimal spacing (28px row height, 32px header height, 4px spacing)\n * - 'standard': Default spacing (42px row height, 48px header height, 8px spacing)\n * - 'comfort': Generous spacing (84px row height, 96px header height, 12px spacing)\n * @param gridOptions - Optional AG Grid options to merge with Element defaults.\n * These options will override Element defaults if specified.\n * @returns Environment providers for dependency injection\n *\n * @example\n * ```typescript\n * // In app.config.ts\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideSiAgGridConfig()\n * ]\n * };\n *\n * // With custom options\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideSiAgGridConfig('compact', {\n * rowHeight: 30,\n * suppressMenuHide: true\n * })\n * ]\n * };\n * ```\n */\nexport const provideSiAgGridConfig = (\n density: 'compact' | 'comfort' | 'standard' = 'standard',\n gridOptions?: GridOptions\n): EnvironmentProviders => {\n return makeEnvironmentProviders([\n {\n provide: 'ag-grid-options',\n useValue: provideGlobalGridOptions({\n ...ELEMENT_AG_GRID_OPTIONS,\n ...gridOptions,\n theme: THEME_BY_DENSITY.get(density)\n })\n }\n ]);\n};\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\n\nexport * from './components';\nexport * from './provider';\nexport * from './themes';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -3,14 +3,16 @@ import { CdkTrapFocus, A11yModule } from '@angular/cdk/a11y';
3
3
  import { BreakpointObserver } from '@angular/cdk/layout';
4
4
  import { NgTemplateOutlet } from '@angular/common';
5
5
  import * as i0 from '@angular/core';
6
- import { input, signal, inject, Injector, viewChild, ChangeDetectionStrategy, Component, HostListener, Directive, computed, ElementRef, afterNextRender, booleanAttribute, model, output } from '@angular/core';
6
+ import { input, signal, inject, Injector, viewChild, effect, untracked, ChangeDetectionStrategy, Component, HostListener, Directive, ElementRef, computed, afterNextRender, booleanAttribute, model, output } from '@angular/core';
7
+ import { toSignal, toObservable } from '@angular/core/rxjs-interop';
7
8
  import { elementMenu, elementThumbnails, elementDown2, elementOptionsVertical, elementFavoritesFilled, elementFavorites, elementExport, elementCancel } from '@siemens/element-icons';
8
9
  import { SI_HEADER_WITH_DROPDOWNS, SiHeaderDropdownTriggerDirective, SI_HEADER_DROPDOWN_OPTIONS } from '@siemens/element-ng/header-dropdown';
9
10
  import { addIcons, SiIconComponent } from '@siemens/element-ng/icon';
10
11
  import { BOOTSTRAP_BREAKPOINTS } from '@siemens/element-ng/resize-observer';
11
12
  import { t, SiTranslatePipe } from '@siemens/element-translate-ng/translate';
12
- import { Subject, defer, of } from 'rxjs';
13
- import { map, skip, takeUntil } from 'rxjs/operators';
13
+ import { Subject, of } from 'rxjs';
14
+ import { switchMap, map } from 'rxjs/operators';
15
+ import { SiTooltipService, SiTooltipDirective } from '@siemens/element-ng/tooltip';
14
16
  import { SiAvatarComponent } from '@siemens/element-ng/avatar';
15
17
  import { ActivatedRoute, RouterLinkActive, RouterLink } from '@angular/router';
16
18
  import { SiLinkModule } from '@siemens/element-ng/link';
@@ -57,16 +59,20 @@ class SiApplicationHeaderComponent {
57
59
  this.closeLaunchpad();
58
60
  });
59
61
  /** @internal */
60
- // defer is required to re-check the current breakpoint as it may change.
61
- inlineDropdown = defer(() => {
62
- const expandBreakpoint = this.expandBreakpoint();
62
+ inlineDropdown = toSignal(toObservable(this.expandBreakpoint).pipe(switchMap(expandBreakpoint => {
63
63
  if (expandBreakpoint === 'never') {
64
64
  return of(true);
65
65
  }
66
66
  return this.breakpointObserver
67
67
  .observe(`(min-width: ${BOOTSTRAP_BREAKPOINTS[(expandBreakpoint + 'Minimum')]}px)`)
68
68
  .pipe(map(({ matches }) => !matches));
69
- });
69
+ })), { initialValue: false });
70
+ constructor() {
71
+ effect(() => {
72
+ this.inlineDropdown();
73
+ untracked(() => this.closeMobileMenus.next());
74
+ });
75
+ }
70
76
  ngOnDestroy() {
71
77
  this.closeMobileSub.unsubscribe();
72
78
  this.closeMobileMenus.next();
@@ -137,9 +143,6 @@ class SiApplicationHeaderComponent {
137
143
  this.closeMobileMenus.next();
138
144
  this.mobileNavigationExpanded.set(true);
139
145
  this.dropdownOpened();
140
- this.inlineDropdown
141
- .pipe(skip(1), takeUntil(this.closeMobileMenus))
142
- .subscribe(() => this.closeMobileMenus.next());
143
146
  this.focusTrap().focusTrap.focusFirstTabbableElementWhenReady();
144
147
  }
145
148
  }
@@ -156,7 +159,7 @@ class SiApplicationHeaderComponent {
156
159
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiApplicationHeaderComponent, decorators: [{
157
160
  type: Component,
158
161
  args: [{ selector: 'si-application-header', imports: [SiTranslatePipe, A11yModule, NgTemplateOutlet, SiIconComponent], providers: [{ provide: SI_HEADER_WITH_DROPDOWNS, useExisting: SiApplicationHeaderComponent }], changeDetection: ChangeDetectionStrategy.OnPush, template: "<header\n [class]=\"`application-header expand-${expandBreakpoint()}`\"\n [class.show-navigation]=\"mobileNavigationExpanded()\"\n>\n @if (launchpad()) {\n <button\n type=\"button\"\n aria-haspopup=\"dialog\"\n [class]=\"`header-toggle focus-inside d-${expandBreakpoint()}-block`\"\n [class.show]=\"launchpadOpen()\"\n [class.d-none]=\"hasNavigation()\"\n [attr.aria-expanded]=\"launchpadOpen()\"\n [attr.aria-label]=\"launchpadLabel() | translate\"\n [attr.aria-controls]=\"id + '-launchpad'\"\n (click)=\"toggleLaunchpad()\"\n >\n <si-icon class=\"icon-lg\" [icon]=\"icons.elementThumbnails\" />\n </button>\n }\n @if (hasNavigation()) {\n <button\n #navigationToggle\n type=\"button\"\n class=\"header-toggle focus-inside\"\n [class.show]=\"mobileNavigationExpanded()\"\n [attr.aria-expanded]=\"mobileNavigationExpanded()\"\n [attr.aria-label]=\"toggleNavigation | translate\"\n [attr.aria-controls]=\"id + '-navigation-wrapper'\"\n (click)=\"toggleMobileNavigationExpanded()\"\n >\n <si-icon class=\"icon-lg\" [icon]=\"icons.elementMenu\" />\n </button>\n }\n <ng-content select=\"si-header-brand, element-header-brand\">\n <div class=\"header-brand\"></div>\n </ng-content>\n\n <div\n class=\"d-contents\"\n [id]=\"id + '-navigation-wrapper'\"\n [cdkTrapFocus]=\"mobileNavigationExpanded()\"\n (keydown.escape)=\"navigationEscapePressed()\"\n >\n <ng-content select=\"si-header-navigation, element-header-navigation\">\n <div class=\"header-navigation\"></div>\n </ng-content>\n </div>\n\n <ng-content select=\"si-header-actions, element-header-actions\">\n <div class=\"header-actions\"></div>\n </ng-content>\n</header>\n\n@if (launchpadOpen() && launchpad()) {\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n [id]=\"id + '-launchpad'\"\n [attr.aria-label]=\"launchpadLabel() | translate\"\n >\n <ng-template [ngTemplateOutlet]=\"launchpad()!\" [ngTemplateOutletInjector]=\"injector\" />\n </div>\n}\n\n@if (openDropdownCount() || launchpadOpen()) {\n <div\n [class]=\"`modal-backdrop ${launchpadOpen() ? 'd-block' : `d-${expandBreakpoint()}-none`}`\"\n (click)=\"backdropClicked()\"\n ></div>\n}\n", styles: [".modal-backdrop{z-index:1032}\n"] }]
159
- }], propDecorators: { expandBreakpoint: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandBreakpoint", required: false }] }], launchpad: [{ type: i0.Input, args: [{ isSignal: true, alias: "launchpad", required: false }] }], launchpadLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "launchpadLabel", required: false }] }], navigationToggle: [{ type: i0.ViewChild, args: ['navigationToggle', { isSignal: true }] }], focusTrap: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkTrapFocus), { isSignal: true }] }] } });
162
+ }], ctorParameters: () => [], propDecorators: { expandBreakpoint: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandBreakpoint", required: false }] }], launchpad: [{ type: i0.Input, args: [{ isSignal: true, alias: "launchpad", required: false }] }], launchpadLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "launchpadLabel", required: false }] }], navigationToggle: [{ type: i0.ViewChild, args: ['navigationToggle', { isSignal: true }] }], focusTrap: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkTrapFocus), { isSignal: true }] }] } });
160
163
 
161
164
  /**
162
165
  * Copyright (c) Siemens 2016 - 2026
@@ -293,10 +296,8 @@ class SiHeaderCollapsibleActionsComponent {
293
296
  focusTrap = viewChild.required(CdkTrapFocus);
294
297
  header = inject(SiApplicationHeaderComponent);
295
298
  closeMobileSub = this.header.closeMobileMenus.subscribe(() => this.closeMobile());
296
- inlineChangeSubscription;
297
299
  ngOnDestroy() {
298
300
  this.closeMobileSub.unsubscribe();
299
- this.inlineChangeSubscription?.unsubscribe();
300
301
  }
301
302
  toggleMobileExpanded() {
302
303
  if (this.mobileExpanded()) {
@@ -315,9 +316,6 @@ class SiHeaderCollapsibleActionsComponent {
315
316
  this.header.closeMobileMenus.next();
316
317
  this.header.dropdownOpened();
317
318
  this.mobileExpanded.set(true);
318
- this.inlineChangeSubscription = this.header.inlineDropdown
319
- .pipe(skip(1), takeUntil(this.header.closeMobileMenus))
320
- .subscribe(() => this.header.closeMobileMenus.next());
321
319
  this.focusTrap().focusTrap.focusFirstTabbableElementWhenReady();
322
320
  }
323
321
  }
@@ -395,6 +393,9 @@ class SiHeaderActionIconItemBase extends SiHeaderActionItemBase {
395
393
  * - =true, an empty red dot will be shown
396
394
  */
397
395
  badge = input(...(ngDevMode ? [undefined, { debugName: "badge" }] : []));
396
+ tooltipService = inject(SiTooltipService);
397
+ elementRef = inject(ElementRef);
398
+ existingTooltip = inject(SiTooltipDirective, { optional: true, host: true });
398
399
  badgeDot = computed(() => typeof this.badge() === 'boolean' ? this.badge() : false, ...(ngDevMode ? [{ debugName: "badgeDot" }] : []));
399
400
  badgeValue = computed(() => {
400
401
  const badge = this.badge();
@@ -402,6 +403,24 @@ class SiHeaderActionIconItemBase extends SiHeaderActionItemBase {
402
403
  ? `${badge > 99 ? '+' : ''}${Math.min(99, Math.round(badge))}`
403
404
  : undefined;
404
405
  }, ...(ngDevMode ? [{ debugName: "badgeValue" }] : []));
406
+ constructor() {
407
+ super();
408
+ effect(onCleanup => this.setupTooltip(onCleanup));
409
+ }
410
+ setupTooltip(onCleanup) {
411
+ const hasActiveTooltip = !!this.existingTooltip &&
412
+ !this.existingTooltip.isDisabled() &&
413
+ !!this.existingTooltip.siTooltip();
414
+ if (this.visuallyHideTitle() && !hasActiveTooltip) {
415
+ const tooltipRef = this.tooltipService.createTooltip({
416
+ element: this.elementRef,
417
+ placement: 'auto',
418
+ tooltip: this.itemTitle,
419
+ tooltipContext: () => undefined
420
+ });
421
+ onCleanup(() => tooltipRef.destroy());
422
+ }
423
+ }
405
424
  ngOnChanges(changes) {
406
425
  if (changes.badge) {
407
426
  if (changes.badge.currentValue && !changes.badge.previousValue) {
@@ -412,16 +431,14 @@ class SiHeaderActionIconItemBase extends SiHeaderActionItemBase {
412
431
  }
413
432
  }
414
433
  }
415
- get visuallyHideTitle() {
416
- return !this.collapsibleActions?.mobileExpanded();
417
- }
418
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderActionIconItemBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
434
+ visuallyHideTitle = computed(() => !this.collapsibleActions?.mobileExpanded(), ...(ngDevMode ? [{ debugName: "visuallyHideTitle" }] : []));
435
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderActionIconItemBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
419
436
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.8", type: SiHeaderActionIconItemBase, isStandalone: true, inputs: { badge: { classPropertyName: "badge", publicName: "badge", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
420
437
  }
421
438
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderActionIconItemBase, decorators: [{
422
439
  type: Directive,
423
440
  args: [{}]
424
- }], propDecorators: { badge: [{ type: i0.Input, args: [{ isSignal: true, alias: "badge", required: false }] }] } });
441
+ }], ctorParameters: () => [], propDecorators: { badge: [{ type: i0.Input, args: [{ isSignal: true, alias: "badge", required: false }] }] } });
425
442
 
426
443
  /**
427
444
  * Copyright (c) Siemens 2016 - 2026
@@ -431,16 +448,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
431
448
  class SiHeaderActionItemComponent extends SiHeaderActionIconItemBase {
432
449
  /** The icon to be shown. */
433
450
  icon = input.required(...(ngDevMode ? [{ debugName: "icon" }] : []));
451
+ itemTitle = viewChild.required('itemTitle');
434
452
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderActionItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
435
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiHeaderActionItemComponent, isStandalone: true, selector: "button[si-header-action-item], a[si-header-action-item]", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.dropdown-toggle": "!!dropdownTrigger" }, classAttribute: "header-item focus-inside" }, usesInheritance: true, ngImport: i0, template: "<si-icon class=\"icon-lg\" [class.badge-dot]=\"badgeDot()\" [icon]=\"icon()\" />\n@if (badgeValue()) {\n <span class=\"badge-text\">{{ badgeValue() }}</span>\n}\n<ng-content select=\"si-avatar\" />\n<div class=\"item-title\" [class.visually-hidden]=\"visuallyHideTitle\">\n <ng-content />\n</div>\n@if (dropdownTrigger) {\n <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\n}\n", dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
453
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiHeaderActionItemComponent, isStandalone: true, selector: "button[si-header-action-item], a[si-header-action-item]", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.dropdown-toggle": "!!dropdownTrigger" }, classAttribute: "header-item focus-inside" }, providers: [SiTooltipService], viewQueries: [{ propertyName: "itemTitle", first: true, predicate: ["itemTitle"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<si-icon class=\"icon-lg\" [class.badge-dot]=\"badgeDot()\" [icon]=\"icon()\" />\n@if (badgeValue()) {\n <span class=\"badge-text\">{{ badgeValue() }}</span>\n}\n<ng-content select=\"si-avatar\" />\n<div #itemTitle class=\"item-title\" [class.visually-hidden]=\"visuallyHideTitle()\">\n <ng-content />\n</div>\n@if (dropdownTrigger) {\n <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\n}\n", dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
436
454
  }
437
455
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderActionItemComponent, decorators: [{
438
456
  type: Component,
439
- args: [{ selector: 'button[si-header-action-item], a[si-header-action-item]', imports: [SiIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
457
+ args: [{ selector: 'button[si-header-action-item], a[si-header-action-item]', imports: [SiIconComponent], providers: [SiTooltipService], changeDetection: ChangeDetectionStrategy.OnPush, host: {
440
458
  class: 'header-item focus-inside',
441
459
  '[class.dropdown-toggle]': '!!dropdownTrigger'
442
- }, template: "<si-icon class=\"icon-lg\" [class.badge-dot]=\"badgeDot()\" [icon]=\"icon()\" />\n@if (badgeValue()) {\n <span class=\"badge-text\">{{ badgeValue() }}</span>\n}\n<ng-content select=\"si-avatar\" />\n<div class=\"item-title\" [class.visually-hidden]=\"visuallyHideTitle\">\n <ng-content />\n</div>\n@if (dropdownTrigger) {\n <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\n}\n" }]
443
- }], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: true }] }] } });
460
+ }, template: "<si-icon class=\"icon-lg\" [class.badge-dot]=\"badgeDot()\" [icon]=\"icon()\" />\n@if (badgeValue()) {\n <span class=\"badge-text\">{{ badgeValue() }}</span>\n}\n<ng-content select=\"si-avatar\" />\n<div #itemTitle class=\"item-title\" [class.visually-hidden]=\"visuallyHideTitle()\">\n <ng-content />\n</div>\n@if (dropdownTrigger) {\n <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\n}\n" }]
461
+ }], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: true }] }], itemTitle: [{ type: i0.ViewChild, args: ['itemTitle', { isSignal: true }] }] } });
444
462
 
445
463
  /**
446
464
  * Copyright (c) Siemens 2016 - 2026
@@ -454,15 +472,16 @@ class SiHeaderAccountItemComponent extends SiHeaderActionIconItemBase {
454
472
  initials = input(...(ngDevMode ? [undefined, { debugName: "initials" }] : []));
455
473
  /** URL to an image which should be shown instead of the initials. */
456
474
  imageUrl = input(...(ngDevMode ? [undefined, { debugName: "imageUrl" }] : []));
475
+ itemTitle = this.name;
457
476
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderAccountItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
458
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiHeaderAccountItemComponent, isStandalone: true, selector: "button[si-header-account-item]", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, initials: { classPropertyName: "initials", publicName: "initials", isSignal: true, isRequired: false, transformFunction: null }, imageUrl: { classPropertyName: "imageUrl", publicName: "imageUrl", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.dropdown-toggle": "!!dropdownTrigger" }, classAttribute: "header-item focus-inside px-4 py-0" }, usesInheritance: true, ngImport: i0, template: "<si-avatar\n size=\"small\"\n color=\"0\"\n [altText]=\"name()\"\n [initials]=\"initials()\"\n [imageUrl]=\"imageUrl()\"\n/>\n<div class=\"item-title\" aria-hidden=\"true\" [class.d-none]=\"visuallyHideTitle\">\n {{ name() }}\n</div>\n@if (badgeValue()) {\n <div class=\"badge-text\">{{ badgeValue() }}</div>\n}\n@if (dropdownTrigger) {\n <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\n}\n", styles: ["si-avatar.small{--avatar-size: calc(1.5rem + 8px) }\n"], dependencies: [{ kind: "component", type: SiAvatarComponent, selector: "si-avatar", inputs: ["size", "imageUrl", "icon", "initials", "color", "altText", "status", "statusAriaLabel"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
477
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiHeaderAccountItemComponent, isStandalone: true, selector: "button[si-header-account-item]", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, initials: { classPropertyName: "initials", publicName: "initials", isSignal: true, isRequired: false, transformFunction: null }, imageUrl: { classPropertyName: "imageUrl", publicName: "imageUrl", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.dropdown-toggle": "!!dropdownTrigger" }, classAttribute: "header-item focus-inside px-4 py-0" }, providers: [SiTooltipService], usesInheritance: true, ngImport: i0, template: "<si-avatar\n size=\"small\"\n color=\"0\"\n [altText]=\"name()\"\n [initials]=\"initials()\"\n [imageUrl]=\"imageUrl()\"\n/>\n<div class=\"item-title\" aria-hidden=\"true\" [class.d-none]=\"visuallyHideTitle()\">\n {{ name() }}\n</div>\n@if (badgeValue()) {\n <div class=\"badge-text\">{{ badgeValue() }}</div>\n}\n@if (dropdownTrigger) {\n <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\n}\n", styles: ["si-avatar.small{--avatar-size: calc(1.5rem + 8px) }\n"], dependencies: [{ kind: "component", type: SiAvatarComponent, selector: "si-avatar", inputs: ["size", "imageUrl", "icon", "initials", "color", "altText", "status", "statusAriaLabel"] }, { kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
459
478
  }
460
479
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderAccountItemComponent, decorators: [{
461
480
  type: Component,
462
- args: [{ selector: 'button[si-header-account-item]', imports: [SiAvatarComponent, SiIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
481
+ args: [{ selector: 'button[si-header-account-item]', imports: [SiAvatarComponent, SiIconComponent], providers: [SiTooltipService], changeDetection: ChangeDetectionStrategy.OnPush, host: {
463
482
  class: 'header-item focus-inside px-4 py-0',
464
483
  '[class.dropdown-toggle]': '!!dropdownTrigger'
465
- }, template: "<si-avatar\n size=\"small\"\n color=\"0\"\n [altText]=\"name()\"\n [initials]=\"initials()\"\n [imageUrl]=\"imageUrl()\"\n/>\n<div class=\"item-title\" aria-hidden=\"true\" [class.d-none]=\"visuallyHideTitle\">\n {{ name() }}\n</div>\n@if (badgeValue()) {\n <div class=\"badge-text\">{{ badgeValue() }}</div>\n}\n@if (dropdownTrigger) {\n <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\n}\n", styles: ["si-avatar.small{--avatar-size: calc(1.5rem + 8px) }\n"] }]
484
+ }, template: "<si-avatar\n size=\"small\"\n color=\"0\"\n [altText]=\"name()\"\n [initials]=\"initials()\"\n [imageUrl]=\"imageUrl()\"\n/>\n<div class=\"item-title\" aria-hidden=\"true\" [class.d-none]=\"visuallyHideTitle()\">\n {{ name() }}\n</div>\n@if (badgeValue()) {\n <div class=\"badge-text\">{{ badgeValue() }}</div>\n}\n@if (dropdownTrigger) {\n <si-icon class=\"dropdown-caret\" [icon]=\"icons.elementDown2\" />\n}\n", styles: ["si-avatar.small{--avatar-size: calc(1.5rem + 8px) }\n"] }]
466
485
  }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }], initials: [{ type: i0.Input, args: [{ isSignal: true, alias: "initials", required: false }] }], imageUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "imageUrl", required: false }] }] } });
467
486
 
468
487
  /**
@@ -477,11 +496,11 @@ class SiHeaderSelectionItemComponent extends SiHeaderActionItemBase {
477
496
  */
478
497
  open = input(false, ...(ngDevMode ? [{ debugName: "open" }] : []));
479
498
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderSelectionItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
480
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.8", type: SiHeaderSelectionItemComponent, isStandalone: true, selector: "button[si-header-selection-item]", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.show": "open()" }, classAttribute: "header-item header-selection-item focus-inside dropdown-toggle" }, usesInheritance: true, ngImport: i0, template: "<div class=\"item-title\">\n <ng-content />\n</div>\n<si-icon class=\"d-block dropdown-caret\" [icon]=\"icons.elementDown2\" />\n", dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }] });
499
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.8", type: SiHeaderSelectionItemComponent, isStandalone: true, selector: "button[si-header-selection-item]", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.show": "open()" }, classAttribute: "header-item header-selection-item focus-inside dropdown-toggle" }, usesInheritance: true, ngImport: i0, template: "<div class=\"item-title\">\n <ng-content />\n</div>\n<si-icon class=\"d-block dropdown-caret\" [icon]=\"icons.elementDown2\" />\n", dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
481
500
  }
482
501
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderSelectionItemComponent, decorators: [{
483
502
  type: Component,
484
- args: [{ selector: 'button[si-header-selection-item]', imports: [SiIconComponent], host: {
503
+ args: [{ selector: 'button[si-header-selection-item]', imports: [SiIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
485
504
  class: 'header-item header-selection-item focus-inside dropdown-toggle',
486
505
  '[class.show]': 'open()'
487
506
  }, template: "<div class=\"item-title\">\n <ng-content />\n</div>\n<si-icon class=\"d-block dropdown-caret\" [icon]=\"icons.elementDown2\" />\n" }]
@@ -604,11 +623,11 @@ class SiHeaderNavigationComponent {
604
623
  this.header.hasNavigation.set(false);
605
624
  }
606
625
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
607
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiHeaderNavigationComponent, isStandalone: true, selector: "si-header-navigation", host: { attributes: { "role": "navigation" }, classAttribute: "header-navigation" }, ngImport: i0, template: "@if (header.launchpad()) {\n <button\n type=\"button\"\n [class]=\"`header-item focus-inside d-${header.expandBreakpoint()}-none`\"\n (click)=\"header.openLaunchpad()\"\n >\n <si-icon class=\"icon-lg pe-5\" [icon]=\"icons.elementThumbnails\" />\n {{ header.launchpadLabel() | translate }}\n </button>\n}\n<ng-content />\n", dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
626
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiHeaderNavigationComponent, isStandalone: true, selector: "si-header-navigation", host: { attributes: { "role": "navigation" }, classAttribute: "header-navigation" }, ngImport: i0, template: "@if (header.launchpad()) {\n <button\n type=\"button\"\n [class]=\"`header-item focus-inside d-${header.expandBreakpoint()}-none`\"\n (click)=\"header.openLaunchpad()\"\n >\n <si-icon class=\"icon-lg pe-5\" [icon]=\"icons.elementThumbnails\" />\n {{ header.launchpadLabel() | translate }}\n </button>\n}\n<ng-content />\n", dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
608
627
  }
609
628
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderNavigationComponent, decorators: [{
610
629
  type: Component,
611
- args: [{ selector: 'si-header-navigation', imports: [SiTranslatePipe, SiIconComponent], host: { class: 'header-navigation', role: 'navigation' }, template: "@if (header.launchpad()) {\n <button\n type=\"button\"\n [class]=\"`header-item focus-inside d-${header.expandBreakpoint()}-none`\"\n (click)=\"header.openLaunchpad()\"\n >\n <si-icon class=\"icon-lg pe-5\" [icon]=\"icons.elementThumbnails\" />\n {{ header.launchpadLabel() | translate }}\n </button>\n}\n<ng-content />\n" }]
630
+ args: [{ selector: 'si-header-navigation', imports: [SiTranslatePipe, SiIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'header-navigation', role: 'navigation' }, template: "@if (header.launchpad()) {\n <button\n type=\"button\"\n [class]=\"`header-item focus-inside d-${header.expandBreakpoint()}-none`\"\n (click)=\"header.openLaunchpad()\"\n >\n <si-icon class=\"icon-lg pe-5\" [icon]=\"icons.elementThumbnails\" />\n {{ header.launchpadLabel() | translate }}\n </button>\n}\n<ng-content />\n" }]
612
631
  }], ctorParameters: () => [] });
613
632
 
614
633
  /**