@ojiepermana/angular 0.1.0 → 0.1.1

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 (30) hide show
  1. package/README.md +8 -5
  2. package/fesm2022/ojiepermana-angular-internal.mjs +16 -0
  3. package/fesm2022/ojiepermana-angular-internal.mjs.map +1 -1
  4. package/fesm2022/ojiepermana-angular-layout.mjs +44 -41
  5. package/fesm2022/ojiepermana-angular-layout.mjs.map +1 -1
  6. package/fesm2022/ojiepermana-angular-navigation-horizontal.mjs +198 -262
  7. package/fesm2022/ojiepermana-angular-navigation-horizontal.mjs.map +1 -1
  8. package/fesm2022/ojiepermana-angular-navigation-vertical.mjs +123 -44
  9. package/fesm2022/ojiepermana-angular-navigation-vertical.mjs.map +1 -1
  10. package/fesm2022/ojiepermana-angular-navigation.mjs +326 -30
  11. package/fesm2022/ojiepermana-angular-navigation.mjs.map +1 -1
  12. package/fesm2022/ojiepermana-angular-shell.mjs +6 -1
  13. package/fesm2022/ojiepermana-angular-shell.mjs.map +1 -1
  14. package/layout/README.md +3 -3
  15. package/{theme/styles/layout → layout/src/component/horizontal}/horizontal.css +38 -17
  16. package/{theme/styles/layout → layout/src/component/vertical}/vertical.css +7 -7
  17. package/{theme/styles/layout/index.css → layout/src/layout.css} +0 -3
  18. package/navigation/README.md +91 -5
  19. package/navigation/horizontal/README.md +49 -0
  20. package/navigation/vertical/README.md +0 -0
  21. package/package.json +1 -1
  22. package/shell/README.md +5 -1
  23. package/styles/index.css +1 -1
  24. package/theme/README.md +2 -2
  25. package/types/ojiepermana-angular-internal.d.ts +1 -0
  26. package/types/ojiepermana-angular-layout.d.ts +1 -1
  27. package/types/ojiepermana-angular-navigation-horizontal.d.ts +26 -22
  28. package/types/ojiepermana-angular-navigation-vertical.d.ts +24 -22
  29. package/types/ojiepermana-angular-navigation.d.ts +55 -9
  30. package/types/ojiepermana-angular-shell.d.ts +2 -0
@@ -1,14 +1,73 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, signal, input, output, computed, ViewChild, ViewEncapsulation, ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';
3
- import { RouterLink } from '@angular/router';
2
+ import { inject, input, output, computed, Directive, signal, ViewChild, ViewEncapsulation, ChangeDetectionStrategy, Component, forwardRef } from '@angular/core';
3
+ import { NavigationService, getNavigationItemAction, shouldRenderNavigationItem, hasNavigationChildren } from '@ojiepermana/angular/navigation';
4
+ import * as i2$1 from '@angular/common';
4
5
  import { DOCUMENT, NgTemplateOutlet } from '@angular/common';
5
- import { shouldRenderNavigationItem, hasNavigationChildren, NavigationService, getNavigationItemAction } from '@ojiepermana/angular/navigation';
6
+ import * as i1$1 from '@angular/router';
7
+ import { RouterLink } from '@angular/router';
8
+ import * as i3 from '@ojiepermana/angular/internal';
6
9
  import { trackNavigationTreeItem, getNavigationTreePathKey, isNavigationTreeItemExpanded, toggleNavigationTreeItemExpanded, NavigationItemContent, NavigationTreeOutlet } from '@ojiepermana/angular/internal';
7
10
  import * as i2 from '@angular/material/divider';
8
11
  import { MatDividerModule } from '@angular/material/divider';
9
12
  import * as i1 from '@angular/material/menu';
10
13
  import { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';
11
14
 
15
+ class HorizontalNavigationBaseComponent {
16
+ _navigationService = inject(NavigationService);
17
+ _activeRootBranch = null;
18
+ name = input('', ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
19
+ navigation = input([], ...(ngDevMode ? [{ debugName: "navigation" }] : /* istanbul ignore next */ []));
20
+ itemClicked = output();
21
+ navigationData = computed(() => {
22
+ const inputData = this.navigation();
23
+ if (inputData.length > 0) {
24
+ return inputData;
25
+ }
26
+ return this._navigationService.getNavigation();
27
+ }, ...(ngDevMode ? [{ debugName: "navigationData" }] : /* istanbul ignore next */ []));
28
+ isMegaVariant() {
29
+ return this.variant === 'mega';
30
+ }
31
+ onItemClicked(item) {
32
+ if (item.id) {
33
+ this._navigationService.setActiveItem(item.id);
34
+ }
35
+ getNavigationItemAction(item)?.(item);
36
+ this.itemClicked.emit(item);
37
+ }
38
+ onRootBranchOpened(branch) {
39
+ if (this._activeRootBranch && this._activeRootBranch !== branch) {
40
+ this._activeRootBranch.closeMenu();
41
+ }
42
+ this._activeRootBranch = branch;
43
+ }
44
+ onRootBranchClosed(branch) {
45
+ if (this._activeRootBranch === branch) {
46
+ this._activeRootBranch = null;
47
+ }
48
+ }
49
+ shouldRenderItem(item) {
50
+ return shouldRenderNavigationItem(item);
51
+ }
52
+ hasChildren(item) {
53
+ return hasNavigationChildren(item);
54
+ }
55
+ getFlatNavigation() {
56
+ return this._navigationService.getFlatNavigation(this.navigationData());
57
+ }
58
+ getItem(id) {
59
+ return this._navigationService.getItem(id, this.navigationData());
60
+ }
61
+ getItemParent(id) {
62
+ return this._navigationService.getItemParent(id, this.navigationData(), this.navigationData());
63
+ }
64
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HorizontalNavigationBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
65
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.8", type: HorizontalNavigationBaseComponent, isStandalone: true, inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, navigation: { classPropertyName: "navigation", publicName: "navigation", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClicked: "itemClicked" }, ngImport: i0 });
66
+ }
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HorizontalNavigationBaseComponent, decorators: [{
68
+ type: Directive
69
+ }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], navigation: [{ type: i0.Input, args: [{ isSignal: true, alias: "navigation", required: false }] }], itemClicked: [{ type: i0.Output, args: ["itemClicked"] }] } });
70
+
12
71
  class HorizontalNavigationBranchItem {
13
72
  _menuTrigger;
14
73
  _rootTrigger;
@@ -19,6 +78,7 @@ class HorizontalNavigationBranchItem {
19
78
  item = input.required(...(ngDevMode ? [{ debugName: "item" }] : /* istanbul ignore next */ []));
20
79
  menuItem = input(false, ...(ngDevMode ? [{ debugName: "menuItem" }] : /* istanbul ignore next */ []));
21
80
  nested = input(false, ...(ngDevMode ? [{ debugName: "nested" }] : /* istanbul ignore next */ []));
81
+ variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
22
82
  itemClicked = output();
23
83
  branchOpened = output();
24
84
  branchClosed = output();
@@ -28,9 +88,11 @@ class HorizontalNavigationBranchItem {
28
88
  treeShouldRenderItemFn = shouldRenderNavigationItem;
29
89
  treeHasChildrenFn = hasNavigationChildren;
30
90
  treeResolveParentKeyFn = getNavigationTreePathKey;
31
- menuPanelClass = computed(() => this.menuItem()
32
- ? 'horizontal-navigation-menu horizontal-navigation-menu--nested'
33
- : 'horizontal-navigation-menu horizontal-navigation-menu--root', ...(ngDevMode ? [{ debugName: "menuPanelClass" }] : /* istanbul ignore next */ []));
91
+ menuPanelClass = computed(() => {
92
+ const nestingClass = this.menuItem() ? 'horizontal-navigation-menu--nested' : 'horizontal-navigation-menu--root';
93
+ const variantClass = this.variant() === 'mega' ? 'horizontal-navigation-menu--mega' : 'horizontal-navigation-menu--default';
94
+ return `horizontal-navigation-menu ${nestingClass} ${variantClass}`;
95
+ }, ...(ngDevMode ? [{ debugName: "menuPanelClass" }] : /* istanbul ignore next */ []));
34
96
  hasChildren(item) {
35
97
  return hasNavigationChildren(item);
36
98
  }
@@ -99,13 +161,14 @@ class HorizontalNavigationBranchItem {
99
161
  this._document.documentElement.style.setProperty('--horizontal-navigation-root-trigger-width', `${width}px`);
100
162
  }
101
163
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HorizontalNavigationBranchItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
102
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: HorizontalNavigationBranchItem, isStandalone: true, selector: "horizontal-navigation-branch-item", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, menuItem: { classPropertyName: "menuItem", publicName: "menuItem", isSignal: true, isRequired: false, transformFunction: null }, nested: { classPropertyName: "nested", publicName: "nested", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClicked: "itemClicked", branchOpened: "branchOpened", branchClosed: "branchClosed" }, viewQueries: [{ propertyName: "_menuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }, { propertyName: "_rootTrigger", first: true, predicate: ["rootTrigger"], descendants: true }], ngImport: i0, template: `
164
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: HorizontalNavigationBranchItem, isStandalone: true, selector: "horizontal-navigation-branch-item", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, menuItem: { classPropertyName: "menuItem", publicName: "menuItem", isSignal: true, isRequired: false, transformFunction: null }, nested: { classPropertyName: "nested", publicName: "nested", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClicked: "itemClicked", branchOpened: "branchOpened", branchClosed: "branchClosed" }, viewQueries: [{ propertyName: "_menuTrigger", first: true, predicate: MatMenuTrigger, descendants: true }, { propertyName: "_rootTrigger", first: true, predicate: ["rootTrigger"], descendants: true }], ngImport: i0, template: `
103
165
  @if (menuItem()) {
104
166
  <button
105
167
  type="button"
106
168
  mat-menu-item
107
169
  class="horizontal-navigation-menu-entry horizontal-navigation-menu-entry--branch"
108
170
  [class.horizontal-navigation-menu-entry--nested]="nested()"
171
+ [class.horizontal-navigation-menu-entry--mega]="variant() === 'mega'"
109
172
  [class.horizontal-navigation-menu-entry--open]="isMenuOpen()"
110
173
  [matMenuTriggerFor]="matMenu"
111
174
  [matMenuTriggerRestoreFocus]="false"
@@ -122,6 +185,7 @@ class HorizontalNavigationBranchItem {
122
185
  type="button"
123
186
  #rootTrigger
124
187
  class="horizontal-navigation-root-trigger"
188
+ [class.horizontal-navigation-root-trigger--mega]="variant() === 'mega'"
125
189
  [class.horizontal-navigation-root-trigger--open]="isMenuOpen()"
126
190
  [matMenuTriggerFor]="matMenu"
127
191
  [matMenuTriggerRestoreFocus]="false"
@@ -172,6 +236,7 @@ class HorizontalNavigationBranchItem {
172
236
  [item]="child"
173
237
  [menuItem]="true"
174
238
  [nested]="level > 0"
239
+ [variant]="variant()"
175
240
  (itemClicked)="onChildItemClicked($event)"
176
241
  (branchOpened)="onChildBranchOpened($event)"
177
242
  (branchClosed)="onChildBranchClosed($event)" />
@@ -204,6 +269,7 @@ class HorizontalNavigationBranchItem {
204
269
  <button
205
270
  type="button"
206
271
  class="horizontal-navigation-inline-branch-header"
272
+ [class.horizontal-navigation-inline-branch-header--mega]="variant() === 'mega'"
207
273
  [title]="child.tooltip"
208
274
  [attr.aria-expanded]="isInlineBranchExpanded(child, parentKey)"
209
275
  (click)="onInlineBranchHeaderClick($event, child, parentKey)">
@@ -244,6 +310,7 @@ class HorizontalNavigationBranchItem {
244
310
  [title]="child.tooltip"
245
311
  class="horizontal-navigation-menu-entry"
246
312
  [class.horizontal-navigation-menu-entry--nested]="level > 0"
313
+ [class.horizontal-navigation-menu-entry--mega]="variant() === 'mega'"
247
314
  [class.horizontal-navigation-menu-entry--last]="isLast"
248
315
  [style.--horizontal-navigation-item-level]="level"
249
316
  (click)="onChildItemClicked(child)">
@@ -259,6 +326,7 @@ class HorizontalNavigationBranchItem {
259
326
  [title]="child.tooltip"
260
327
  class="horizontal-navigation-menu-entry"
261
328
  [class.horizontal-navigation-menu-entry--nested]="level > 0"
329
+ [class.horizontal-navigation-menu-entry--mega]="variant() === 'mega'"
262
330
  [class.horizontal-navigation-menu-entry--last]="isLast"
263
331
  [style.--horizontal-navigation-item-level]="level"
264
332
  (click)="onChildItemClicked(child)">
@@ -272,6 +340,7 @@ class HorizontalNavigationBranchItem {
272
340
  mat-menu-item
273
341
  class="horizontal-navigation-menu-entry"
274
342
  [class.horizontal-navigation-menu-entry--nested]="level > 0"
343
+ [class.horizontal-navigation-menu-entry--mega]="variant() === 'mega'"
275
344
  [class.horizontal-navigation-menu-entry--last]="isLast"
276
345
  [style.--horizontal-navigation-item-level]="level"
277
346
  [title]="child.tooltip"
@@ -286,7 +355,7 @@ class HorizontalNavigationBranchItem {
286
355
  <ng-template #itemBody let-currentItem let-level="level">
287
356
  <navigation-item-content [item]="currentItem" [level]="level" variant="horizontal"></navigation-item-content>
288
357
  </ng-template>
289
- `, isInline: true, styles: [".horizontal-navigation-menu.mat-mdc-menu-panel{min-width:280px;max-width:360px;overflow:hidden;border:1px solid var(--border);border-radius:1rem;background:var(--popover);color:var(--popover-foreground);font-family:var(--nav-font-family);box-shadow:0 18px 48px #0f172a29,0 6px 18px #0f172a1a}.horizontal-navigation-menu--root.mat-mdc-menu-panel{margin-top:.5rem;position:relative;border-radius:1rem;overflow:hidden}.horizontal-navigation-menu--root.mat-mdc-menu-panel:before{display:none}.horizontal-navigation-menu--nested.mat-mdc-menu-panel{margin-left:.5rem}.horizontal-navigation-menu .mat-mdc-menu-content{padding:.5rem 0;background:var(--popover)}.horizontal-navigation-menu .mat-mdc-menu-item{min-height:3rem;line-height:normal;color:inherit;background:transparent}.horizontal-navigation-menu .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center;width:100%;min-width:0;gap:.75rem}.horizontal-navigation-menu .horizontal-navigation-menu-entry.mat-mdc-menu-item-submenu-trigger .mat-mdc-menu-submenu-icon{display:none}.horizontal-navigation-root-trigger{display:inline-flex;align-items:center;gap:.75rem;width:auto;border:0;border-radius:0;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-menu-entry{display:flex;align-items:center;width:100%;gap:.875rem;border-radius:.75rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-root-trigger{position:relative;padding:0 .875rem 0 0;white-space:nowrap}.horizontal-navigation-menu-entry{box-sizing:border-box;padding:.75rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight)}.horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--nested{position:relative;padding-left:calc(1rem + (var(--horizontal-navigation-item-level, 1) * .5rem))}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-menu .horizontal-navigation-menu-entry:hover,.horizontal-navigation-menu .horizontal-navigation-menu-entry.cdk-program-focused,.horizontal-navigation-menu .horizontal-navigation-menu-entry.cdk-keyboard-focused,.horizontal-navigation-menu .horizontal-navigation-menu-entry.mat-mdc-menu-item-highlighted{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-root-trigger:focus-visible{background:transparent;color:inherit}.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open{z-index:1101;border-color:transparent;padding-bottom:0;background:transparent;color:inherit;box-shadow:none}.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open:hover,.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open:focus-visible{background:transparent;color:inherit}.horizontal-navigation-item-body{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.875rem}.horizontal-navigation-item-leading{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.75rem}.horizontal-navigation-item-leading--nested:before{content:\"\";width:.875rem;min-width:.875rem;border-top:1px dashed var(--border);opacity:.9}.horizontal-navigation-item-icon{width:1.125rem;height:1.125rem;flex-shrink:0}.horizontal-navigation-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-word}.horizontal-navigation-item-badge{margin-left:auto;display:inline-flex;align-items:center;padding:.1875rem .5rem;border-radius:9999px;font-size:.75rem;line-height:1rem;font-weight:500;flex-shrink:0}.horizontal-navigation-item-dot,.horizontal-navigation-inline-branch-dot{margin-left:auto;width:.5rem;height:.5rem;flex-shrink:0;border-radius:9999px;background:#9ca3af;opacity:.85;transition:background-color .18s ease,opacity .18s ease,transform .18s ease}.horizontal-navigation-inline-branch{padding:.125rem 0}.horizontal-navigation-inline-branch-header{display:flex;align-items:center;width:100%;box-sizing:border-box;padding:.875rem .75rem .375rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:var(--foreground);background:transparent;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-inline-branch-header:hover,.horizontal-navigation-inline-branch-header:focus-visible{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-inline-branch--nested .horizontal-navigation-inline-branch-header{position:relative;padding-left:calc(1rem + (var(--horizontal-navigation-item-level, 1) * .5rem))}.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open .horizontal-navigation-item-dot,.horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--open .horizontal-navigation-item-dot,.horizontal-navigation-inline-branch--expanded>.horizontal-navigation-inline-branch-header .horizontal-navigation-inline-branch-dot{background:#16a34a;opacity:1;transform:scale(1.1)}.horizontal-navigation-inline-branch-header:hover .horizontal-navigation-inline-branch-dot,.horizontal-navigation-menu .horizontal-navigation-menu-entry--branch:hover .horizontal-navigation-item-dot,.horizontal-navigation-root-trigger:hover .horizontal-navigation-item-dot{opacity:1}.horizontal-navigation-inline-branch-children{position:relative;display:block;overflow:hidden;padding-left:0;padding-bottom:.25rem}.horizontal-navigation-inline-branch-children:before{content:\"\";position:absolute;left:calc(.875rem + ((var(--horizontal-navigation-child-level, 1) - 1) * 1rem));top:-.25rem;bottom:0;border-left:1px dashed color-mix(in srgb,var(--border) 82%,transparent);pointer-events:none}.horizontal-navigation-group-label{padding:.875rem .75rem .375rem;font-size:var(--nav-group-title-font-size);line-height:var(--nav-group-title-line-height);font-weight:var(--nav-group-title-font-weight);text-transform:uppercase;letter-spacing:var(--nav-group-title-letter-spacing);color:var(--muted-foreground)}.horizontal-navigation-group-label--nested{position:relative;padding-left:calc(1rem + (var(--horizontal-navigation-item-level, 1) * .5rem))}.horizontal-navigation-group-label--nested:before{content:\"\";position:absolute;left:calc(.875rem + ((var(--horizontal-navigation-item-level, 1) - 1) * 1rem));top:calc(50% + .375rem);width:.875rem;border-top:1px dashed var(--border);transform:translateY(-50%);pointer-events:none}.horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--nested.horizontal-navigation-menu-entry--last:after,.horizontal-navigation-group-label--nested.horizontal-navigation-group-label--last:after,.horizontal-navigation-inline-branch--nested.horizontal-navigation-inline-branch--last:not(.horizontal-navigation-inline-branch--expanded) .horizontal-navigation-inline-branch-header:after{content:\"\";position:absolute;left:calc(.875rem + ((var(--horizontal-navigation-item-level, 1) - 1) * 1rem));top:calc(50% + .375rem);bottom:-.5rem;width:2px;background:var(--popover);transform:translate(-50%);pointer-events:none}.horizontal-navigation-menu .horizontal-navigation-divider{margin:.375rem 0;border-top-color:var(--border)}.cdk-overlay-pane .horizontal-navigation-menu.mat-mdc-menu-panel{z-index:1000}\n"], dependencies: [{ kind: "component", type: i0.forwardRef(() => HorizontalNavigationBranchItem), selector: "horizontal-navigation-branch-item", inputs: ["item", "menuItem", "nested"], outputs: ["itemClicked", "branchOpened", "branchClosed"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatMenuModule) }, { kind: "component", type: i0.forwardRef(() => i1.MatMenu), selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i0.forwardRef(() => i1.MatMenuItem), selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i0.forwardRef(() => i1.MatMenuTrigger), selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatDividerModule) }, { kind: "component", type: i0.forwardRef(() => i2.MatDivider), selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i0.forwardRef(() => RouterLink), selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i0.forwardRef(() => NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i0.forwardRef(() => NavigationItemContent), selector: "navigation-item-content", inputs: ["item", "level", "variant"] }, { kind: "component", type: i0.forwardRef(() => NavigationTreeOutlet), selector: "navigation-tree-outlet", inputs: ["items", "level", "parentKey", "data", "branchTemplate", "leafTemplate", "groupTemplate", "dividerTemplate", "spacerTemplate", "trackByFn", "shouldRenderItemFn", "hasChildrenFn", "resolveParentKeyFn"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
358
+ `, isInline: true, styles: [".horizontal-navigation-menu.mat-mdc-menu-panel{min-width:280px;max-width:360px;overflow:hidden;border:1px solid var(--border);border-radius:1rem;background:var(--popover);color:var(--popover-foreground);font-family:var(--nav-font-family);box-shadow:0 18px 48px #0f172a29,0 6px 18px #0f172a1a}.horizontal-navigation-menu--root.mat-mdc-menu-panel{margin-top:.5rem;position:relative;border-radius:1rem;overflow:hidden}.horizontal-navigation-menu--root.mat-mdc-menu-panel:before{display:none}.horizontal-navigation-menu--nested.mat-mdc-menu-panel{margin-left:.5rem}.horizontal-navigation-menu--mega.mat-mdc-menu-panel{min-width:22rem;max-width:min(42rem,calc(100vw - 2rem));border-radius:1.25rem}.horizontal-navigation-menu .mat-mdc-menu-content{padding:.5rem 0;background:var(--popover)}.horizontal-navigation-menu--mega .mat-mdc-menu-content{padding:.75rem}.horizontal-navigation-menu .mat-mdc-menu-item{min-height:3rem;line-height:normal;color:inherit;background:transparent}.horizontal-navigation-menu .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center;width:100%;min-width:0;gap:.75rem}.horizontal-navigation-menu .horizontal-navigation-menu-entry.mat-mdc-menu-item-submenu-trigger .mat-mdc-menu-submenu-icon{display:none}.horizontal-navigation-root-trigger{display:inline-flex;align-items:center;gap:.75rem;width:auto;border:0;border-radius:0;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-menu-entry{display:flex;align-items:center;width:100%;gap:.875rem;border-radius:.75rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-root-trigger{position:relative;padding:0 .875rem 0 0;white-space:nowrap}.horizontal-navigation-menu-entry{box-sizing:border-box;padding:.75rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight)}.horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--nested{position:relative;padding-left:calc(1rem + (var(--horizontal-navigation-item-level, 1) * .5rem))}.horizontal-navigation-root-trigger--mega{min-height:3rem;padding-right:1rem}.horizontal-navigation-menu-entry--mega{min-height:3.25rem;padding:.875rem;border-radius:.875rem}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-menu .horizontal-navigation-menu-entry:hover,.horizontal-navigation-menu .horizontal-navigation-menu-entry.cdk-program-focused,.horizontal-navigation-menu .horizontal-navigation-menu-entry.cdk-keyboard-focused,.horizontal-navigation-menu .horizontal-navigation-menu-entry.mat-mdc-menu-item-highlighted{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-root-trigger:focus-visible{background:transparent;color:inherit}.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open{z-index:1101;border-color:transparent;padding-bottom:0;background:transparent;color:inherit;box-shadow:none}.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open:hover,.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open:focus-visible{background:transparent;color:inherit}.horizontal-navigation-item-body{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.875rem}.horizontal-navigation-item-leading{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.75rem}.horizontal-navigation-item-leading--nested:before{content:\"\";width:.875rem;min-width:.875rem;border-top:1px dashed var(--border);opacity:.9}.horizontal-navigation-item-icon{width:1.125rem;height:1.125rem;flex-shrink:0}.horizontal-navigation-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-word}.horizontal-navigation-item-badge{margin-left:auto;display:inline-flex;align-items:center;padding:.1875rem .5rem;border-radius:9999px;font-size:.75rem;line-height:1rem;font-weight:500;flex-shrink:0}.horizontal-navigation-item-dot,.horizontal-navigation-inline-branch-dot{margin-left:auto;width:.5rem;height:.5rem;flex-shrink:0;border-radius:9999px;background:#9ca3af;opacity:.85;transition:background-color .18s ease,opacity .18s ease,transform .18s ease}.horizontal-navigation-inline-branch{padding:.125rem 0}.horizontal-navigation-inline-branch-header{display:flex;align-items:center;width:100%;box-sizing:border-box;padding:.875rem .75rem .375rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:var(--foreground);background:transparent;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-inline-branch-header:hover,.horizontal-navigation-inline-branch-header:focus-visible{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-inline-branch-header--mega{padding-top:1rem;padding-bottom:.5rem;border-radius:.875rem}.horizontal-navigation-inline-branch--nested .horizontal-navigation-inline-branch-header{position:relative;padding-left:calc(1rem + (var(--horizontal-navigation-item-level, 1) * .5rem))}.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open .horizontal-navigation-item-dot,.horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--open .horizontal-navigation-item-dot,.horizontal-navigation-inline-branch--expanded>.horizontal-navigation-inline-branch-header .horizontal-navigation-inline-branch-dot{background:#16a34a;opacity:1;transform:scale(1.1)}.horizontal-navigation-inline-branch-header:hover .horizontal-navigation-inline-branch-dot,.horizontal-navigation-menu .horizontal-navigation-menu-entry--branch:hover .horizontal-navigation-item-dot,.horizontal-navigation-root-trigger:hover .horizontal-navigation-item-dot{opacity:1}.horizontal-navigation-inline-branch-children{position:relative;display:block;overflow:hidden;padding-left:0;padding-bottom:.25rem}.horizontal-navigation-inline-branch-children:before{content:\"\";position:absolute;left:calc(.875rem + ((var(--horizontal-navigation-child-level, 1) - 1) * 1rem));top:-.25rem;bottom:0;border-left:1px dashed color-mix(in srgb,var(--border) 82%,transparent);pointer-events:none}.horizontal-navigation-group-label{padding:.875rem .75rem .375rem;font-size:var(--nav-group-title-font-size);line-height:var(--nav-group-title-line-height);font-weight:var(--nav-group-title-font-weight);text-transform:uppercase;letter-spacing:var(--nav-group-title-letter-spacing);color:var(--muted-foreground)}.horizontal-navigation-group-label--nested{position:relative;padding-left:calc(1rem + (var(--horizontal-navigation-item-level, 1) * .5rem))}.horizontal-navigation-group-label--nested:before{content:\"\";position:absolute;left:calc(.875rem + ((var(--horizontal-navigation-item-level, 1) - 1) * 1rem));top:calc(50% + .375rem);width:.875rem;border-top:1px dashed var(--border);transform:translateY(-50%);pointer-events:none}.horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--nested.horizontal-navigation-menu-entry--last:after,.horizontal-navigation-group-label--nested.horizontal-navigation-group-label--last:after,.horizontal-navigation-inline-branch--nested.horizontal-navigation-inline-branch--last:not(.horizontal-navigation-inline-branch--expanded) .horizontal-navigation-inline-branch-header:after{content:\"\";position:absolute;left:calc(.875rem + ((var(--horizontal-navigation-item-level, 1) - 1) * 1rem));top:calc(50% + .375rem);bottom:-.5rem;width:2px;background:var(--popover);transform:translate(-50%);pointer-events:none}.horizontal-navigation-menu .horizontal-navigation-divider{margin:.375rem 0;border-top-color:var(--border)}.cdk-overlay-pane .horizontal-navigation-menu.mat-mdc-menu-panel{z-index:1000}\n"], dependencies: [{ kind: "component", type: i0.forwardRef(() => HorizontalNavigationBranchItem), selector: "horizontal-navigation-branch-item", inputs: ["item", "menuItem", "nested", "variant"], outputs: ["itemClicked", "branchOpened", "branchClosed"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatMenuModule) }, { kind: "component", type: i0.forwardRef(() => i1.MatMenu), selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i0.forwardRef(() => i1.MatMenuItem), selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i0.forwardRef(() => i1.MatMenuTrigger), selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatDividerModule) }, { kind: "component", type: i0.forwardRef(() => i2.MatDivider), selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i0.forwardRef(() => RouterLink), selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i0.forwardRef(() => NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i0.forwardRef(() => NavigationItemContent), selector: "navigation-item-content", inputs: ["item", "level", "variant"] }, { kind: "component", type: i0.forwardRef(() => NavigationTreeOutlet), selector: "navigation-tree-outlet", inputs: ["items", "level", "parentKey", "data", "branchTemplate", "leafTemplate", "groupTemplate", "dividerTemplate", "spacerTemplate", "trackByFn", "shouldRenderItemFn", "hasChildrenFn", "resolveParentKeyFn"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
290
359
  }
291
360
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HorizontalNavigationBranchItem, decorators: [{
292
361
  type: Component,
@@ -297,6 +366,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
297
366
  mat-menu-item
298
367
  class="horizontal-navigation-menu-entry horizontal-navigation-menu-entry--branch"
299
368
  [class.horizontal-navigation-menu-entry--nested]="nested()"
369
+ [class.horizontal-navigation-menu-entry--mega]="variant() === 'mega'"
300
370
  [class.horizontal-navigation-menu-entry--open]="isMenuOpen()"
301
371
  [matMenuTriggerFor]="matMenu"
302
372
  [matMenuTriggerRestoreFocus]="false"
@@ -313,6 +383,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
313
383
  type="button"
314
384
  #rootTrigger
315
385
  class="horizontal-navigation-root-trigger"
386
+ [class.horizontal-navigation-root-trigger--mega]="variant() === 'mega'"
316
387
  [class.horizontal-navigation-root-trigger--open]="isMenuOpen()"
317
388
  [matMenuTriggerFor]="matMenu"
318
389
  [matMenuTriggerRestoreFocus]="false"
@@ -363,6 +434,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
363
434
  [item]="child"
364
435
  [menuItem]="true"
365
436
  [nested]="level > 0"
437
+ [variant]="variant()"
366
438
  (itemClicked)="onChildItemClicked($event)"
367
439
  (branchOpened)="onChildBranchOpened($event)"
368
440
  (branchClosed)="onChildBranchClosed($event)" />
@@ -395,6 +467,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
395
467
  <button
396
468
  type="button"
397
469
  class="horizontal-navigation-inline-branch-header"
470
+ [class.horizontal-navigation-inline-branch-header--mega]="variant() === 'mega'"
398
471
  [title]="child.tooltip"
399
472
  [attr.aria-expanded]="isInlineBranchExpanded(child, parentKey)"
400
473
  (click)="onInlineBranchHeaderClick($event, child, parentKey)">
@@ -435,6 +508,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
435
508
  [title]="child.tooltip"
436
509
  class="horizontal-navigation-menu-entry"
437
510
  [class.horizontal-navigation-menu-entry--nested]="level > 0"
511
+ [class.horizontal-navigation-menu-entry--mega]="variant() === 'mega'"
438
512
  [class.horizontal-navigation-menu-entry--last]="isLast"
439
513
  [style.--horizontal-navigation-item-level]="level"
440
514
  (click)="onChildItemClicked(child)">
@@ -450,6 +524,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
450
524
  [title]="child.tooltip"
451
525
  class="horizontal-navigation-menu-entry"
452
526
  [class.horizontal-navigation-menu-entry--nested]="level > 0"
527
+ [class.horizontal-navigation-menu-entry--mega]="variant() === 'mega'"
453
528
  [class.horizontal-navigation-menu-entry--last]="isLast"
454
529
  [style.--horizontal-navigation-item-level]="level"
455
530
  (click)="onChildItemClicked(child)">
@@ -463,6 +538,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
463
538
  mat-menu-item
464
539
  class="horizontal-navigation-menu-entry"
465
540
  [class.horizontal-navigation-menu-entry--nested]="level > 0"
541
+ [class.horizontal-navigation-menu-entry--mega]="variant() === 'mega'"
466
542
  [class.horizontal-navigation-menu-entry--last]="isLast"
467
543
  [style.--horizontal-navigation-item-level]="level"
468
544
  [title]="child.tooltip"
@@ -485,164 +561,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
485
561
  NavigationItemContent,
486
562
  NavigationTreeOutlet,
487
563
  forwardRef(() => HorizontalNavigationBranchItem),
488
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".horizontal-navigation-menu.mat-mdc-menu-panel{min-width:280px;max-width:360px;overflow:hidden;border:1px solid var(--border);border-radius:1rem;background:var(--popover);color:var(--popover-foreground);font-family:var(--nav-font-family);box-shadow:0 18px 48px #0f172a29,0 6px 18px #0f172a1a}.horizontal-navigation-menu--root.mat-mdc-menu-panel{margin-top:.5rem;position:relative;border-radius:1rem;overflow:hidden}.horizontal-navigation-menu--root.mat-mdc-menu-panel:before{display:none}.horizontal-navigation-menu--nested.mat-mdc-menu-panel{margin-left:.5rem}.horizontal-navigation-menu .mat-mdc-menu-content{padding:.5rem 0;background:var(--popover)}.horizontal-navigation-menu .mat-mdc-menu-item{min-height:3rem;line-height:normal;color:inherit;background:transparent}.horizontal-navigation-menu .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center;width:100%;min-width:0;gap:.75rem}.horizontal-navigation-menu .horizontal-navigation-menu-entry.mat-mdc-menu-item-submenu-trigger .mat-mdc-menu-submenu-icon{display:none}.horizontal-navigation-root-trigger{display:inline-flex;align-items:center;gap:.75rem;width:auto;border:0;border-radius:0;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-menu-entry{display:flex;align-items:center;width:100%;gap:.875rem;border-radius:.75rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-root-trigger{position:relative;padding:0 .875rem 0 0;white-space:nowrap}.horizontal-navigation-menu-entry{box-sizing:border-box;padding:.75rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight)}.horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--nested{position:relative;padding-left:calc(1rem + (var(--horizontal-navigation-item-level, 1) * .5rem))}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-menu .horizontal-navigation-menu-entry:hover,.horizontal-navigation-menu .horizontal-navigation-menu-entry.cdk-program-focused,.horizontal-navigation-menu .horizontal-navigation-menu-entry.cdk-keyboard-focused,.horizontal-navigation-menu .horizontal-navigation-menu-entry.mat-mdc-menu-item-highlighted{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-root-trigger:focus-visible{background:transparent;color:inherit}.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open{z-index:1101;border-color:transparent;padding-bottom:0;background:transparent;color:inherit;box-shadow:none}.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open:hover,.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open:focus-visible{background:transparent;color:inherit}.horizontal-navigation-item-body{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.875rem}.horizontal-navigation-item-leading{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.75rem}.horizontal-navigation-item-leading--nested:before{content:\"\";width:.875rem;min-width:.875rem;border-top:1px dashed var(--border);opacity:.9}.horizontal-navigation-item-icon{width:1.125rem;height:1.125rem;flex-shrink:0}.horizontal-navigation-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-word}.horizontal-navigation-item-badge{margin-left:auto;display:inline-flex;align-items:center;padding:.1875rem .5rem;border-radius:9999px;font-size:.75rem;line-height:1rem;font-weight:500;flex-shrink:0}.horizontal-navigation-item-dot,.horizontal-navigation-inline-branch-dot{margin-left:auto;width:.5rem;height:.5rem;flex-shrink:0;border-radius:9999px;background:#9ca3af;opacity:.85;transition:background-color .18s ease,opacity .18s ease,transform .18s ease}.horizontal-navigation-inline-branch{padding:.125rem 0}.horizontal-navigation-inline-branch-header{display:flex;align-items:center;width:100%;box-sizing:border-box;padding:.875rem .75rem .375rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:var(--foreground);background:transparent;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-inline-branch-header:hover,.horizontal-navigation-inline-branch-header:focus-visible{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-inline-branch--nested .horizontal-navigation-inline-branch-header{position:relative;padding-left:calc(1rem + (var(--horizontal-navigation-item-level, 1) * .5rem))}.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open .horizontal-navigation-item-dot,.horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--open .horizontal-navigation-item-dot,.horizontal-navigation-inline-branch--expanded>.horizontal-navigation-inline-branch-header .horizontal-navigation-inline-branch-dot{background:#16a34a;opacity:1;transform:scale(1.1)}.horizontal-navigation-inline-branch-header:hover .horizontal-navigation-inline-branch-dot,.horizontal-navigation-menu .horizontal-navigation-menu-entry--branch:hover .horizontal-navigation-item-dot,.horizontal-navigation-root-trigger:hover .horizontal-navigation-item-dot{opacity:1}.horizontal-navigation-inline-branch-children{position:relative;display:block;overflow:hidden;padding-left:0;padding-bottom:.25rem}.horizontal-navigation-inline-branch-children:before{content:\"\";position:absolute;left:calc(.875rem + ((var(--horizontal-navigation-child-level, 1) - 1) * 1rem));top:-.25rem;bottom:0;border-left:1px dashed color-mix(in srgb,var(--border) 82%,transparent);pointer-events:none}.horizontal-navigation-group-label{padding:.875rem .75rem .375rem;font-size:var(--nav-group-title-font-size);line-height:var(--nav-group-title-line-height);font-weight:var(--nav-group-title-font-weight);text-transform:uppercase;letter-spacing:var(--nav-group-title-letter-spacing);color:var(--muted-foreground)}.horizontal-navigation-group-label--nested{position:relative;padding-left:calc(1rem + (var(--horizontal-navigation-item-level, 1) * .5rem))}.horizontal-navigation-group-label--nested:before{content:\"\";position:absolute;left:calc(.875rem + ((var(--horizontal-navigation-item-level, 1) - 1) * 1rem));top:calc(50% + .375rem);width:.875rem;border-top:1px dashed var(--border);transform:translateY(-50%);pointer-events:none}.horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--nested.horizontal-navigation-menu-entry--last:after,.horizontal-navigation-group-label--nested.horizontal-navigation-group-label--last:after,.horizontal-navigation-inline-branch--nested.horizontal-navigation-inline-branch--last:not(.horizontal-navigation-inline-branch--expanded) .horizontal-navigation-inline-branch-header:after{content:\"\";position:absolute;left:calc(.875rem + ((var(--horizontal-navigation-item-level, 1) - 1) * 1rem));top:calc(50% + .375rem);bottom:-.5rem;width:2px;background:var(--popover);transform:translate(-50%);pointer-events:none}.horizontal-navigation-menu .horizontal-navigation-divider{margin:.375rem 0;border-top-color:var(--border)}.cdk-overlay-pane .horizontal-navigation-menu.mat-mdc-menu-panel{z-index:1000}\n"] }]
564
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".horizontal-navigation-menu.mat-mdc-menu-panel{min-width:280px;max-width:360px;overflow:hidden;border:1px solid var(--border);border-radius:1rem;background:var(--popover);color:var(--popover-foreground);font-family:var(--nav-font-family);box-shadow:0 18px 48px #0f172a29,0 6px 18px #0f172a1a}.horizontal-navigation-menu--root.mat-mdc-menu-panel{margin-top:.5rem;position:relative;border-radius:1rem;overflow:hidden}.horizontal-navigation-menu--root.mat-mdc-menu-panel:before{display:none}.horizontal-navigation-menu--nested.mat-mdc-menu-panel{margin-left:.5rem}.horizontal-navigation-menu--mega.mat-mdc-menu-panel{min-width:22rem;max-width:min(42rem,calc(100vw - 2rem));border-radius:1.25rem}.horizontal-navigation-menu .mat-mdc-menu-content{padding:.5rem 0;background:var(--popover)}.horizontal-navigation-menu--mega .mat-mdc-menu-content{padding:.75rem}.horizontal-navigation-menu .mat-mdc-menu-item{min-height:3rem;line-height:normal;color:inherit;background:transparent}.horizontal-navigation-menu .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center;width:100%;min-width:0;gap:.75rem}.horizontal-navigation-menu .horizontal-navigation-menu-entry.mat-mdc-menu-item-submenu-trigger .mat-mdc-menu-submenu-icon{display:none}.horizontal-navigation-root-trigger{display:inline-flex;align-items:center;gap:.75rem;width:auto;border:0;border-radius:0;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-menu-entry{display:flex;align-items:center;width:100%;gap:.875rem;border-radius:.75rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-root-trigger{position:relative;padding:0 .875rem 0 0;white-space:nowrap}.horizontal-navigation-menu-entry{box-sizing:border-box;padding:.75rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight)}.horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--nested{position:relative;padding-left:calc(1rem + (var(--horizontal-navigation-item-level, 1) * .5rem))}.horizontal-navigation-root-trigger--mega{min-height:3rem;padding-right:1rem}.horizontal-navigation-menu-entry--mega{min-height:3.25rem;padding:.875rem;border-radius:.875rem}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-menu .horizontal-navigation-menu-entry:hover,.horizontal-navigation-menu .horizontal-navigation-menu-entry.cdk-program-focused,.horizontal-navigation-menu .horizontal-navigation-menu-entry.cdk-keyboard-focused,.horizontal-navigation-menu .horizontal-navigation-menu-entry.mat-mdc-menu-item-highlighted{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-root-trigger:focus-visible{background:transparent;color:inherit}.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open{z-index:1101;border-color:transparent;padding-bottom:0;background:transparent;color:inherit;box-shadow:none}.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open:hover,.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open:focus-visible{background:transparent;color:inherit}.horizontal-navigation-item-body{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.875rem}.horizontal-navigation-item-leading{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.75rem}.horizontal-navigation-item-leading--nested:before{content:\"\";width:.875rem;min-width:.875rem;border-top:1px dashed var(--border);opacity:.9}.horizontal-navigation-item-icon{width:1.125rem;height:1.125rem;flex-shrink:0}.horizontal-navigation-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-word}.horizontal-navigation-item-badge{margin-left:auto;display:inline-flex;align-items:center;padding:.1875rem .5rem;border-radius:9999px;font-size:.75rem;line-height:1rem;font-weight:500;flex-shrink:0}.horizontal-navigation-item-dot,.horizontal-navigation-inline-branch-dot{margin-left:auto;width:.5rem;height:.5rem;flex-shrink:0;border-radius:9999px;background:#9ca3af;opacity:.85;transition:background-color .18s ease,opacity .18s ease,transform .18s ease}.horizontal-navigation-inline-branch{padding:.125rem 0}.horizontal-navigation-inline-branch-header{display:flex;align-items:center;width:100%;box-sizing:border-box;padding:.875rem .75rem .375rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:var(--foreground);background:transparent;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-inline-branch-header:hover,.horizontal-navigation-inline-branch-header:focus-visible{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-inline-branch-header--mega{padding-top:1rem;padding-bottom:.5rem;border-radius:.875rem}.horizontal-navigation-inline-branch--nested .horizontal-navigation-inline-branch-header{position:relative;padding-left:calc(1rem + (var(--horizontal-navigation-item-level, 1) * .5rem))}.horizontal-navigation-root-trigger.horizontal-navigation-root-trigger--open .horizontal-navigation-item-dot,.horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--open .horizontal-navigation-item-dot,.horizontal-navigation-inline-branch--expanded>.horizontal-navigation-inline-branch-header .horizontal-navigation-inline-branch-dot{background:#16a34a;opacity:1;transform:scale(1.1)}.horizontal-navigation-inline-branch-header:hover .horizontal-navigation-inline-branch-dot,.horizontal-navigation-menu .horizontal-navigation-menu-entry--branch:hover .horizontal-navigation-item-dot,.horizontal-navigation-root-trigger:hover .horizontal-navigation-item-dot{opacity:1}.horizontal-navigation-inline-branch-children{position:relative;display:block;overflow:hidden;padding-left:0;padding-bottom:.25rem}.horizontal-navigation-inline-branch-children:before{content:\"\";position:absolute;left:calc(.875rem + ((var(--horizontal-navigation-child-level, 1) - 1) * 1rem));top:-.25rem;bottom:0;border-left:1px dashed color-mix(in srgb,var(--border) 82%,transparent);pointer-events:none}.horizontal-navigation-group-label{padding:.875rem .75rem .375rem;font-size:var(--nav-group-title-font-size);line-height:var(--nav-group-title-line-height);font-weight:var(--nav-group-title-font-weight);text-transform:uppercase;letter-spacing:var(--nav-group-title-letter-spacing);color:var(--muted-foreground)}.horizontal-navigation-group-label--nested{position:relative;padding-left:calc(1rem + (var(--horizontal-navigation-item-level, 1) * .5rem))}.horizontal-navigation-group-label--nested:before{content:\"\";position:absolute;left:calc(.875rem + ((var(--horizontal-navigation-item-level, 1) - 1) * 1rem));top:calc(50% + .375rem);width:.875rem;border-top:1px dashed var(--border);transform:translateY(-50%);pointer-events:none}.horizontal-navigation-menu-entry.horizontal-navigation-menu-entry--nested.horizontal-navigation-menu-entry--last:after,.horizontal-navigation-group-label--nested.horizontal-navigation-group-label--last:after,.horizontal-navigation-inline-branch--nested.horizontal-navigation-inline-branch--last:not(.horizontal-navigation-inline-branch--expanded) .horizontal-navigation-inline-branch-header:after{content:\"\";position:absolute;left:calc(.875rem + ((var(--horizontal-navigation-item-level, 1) - 1) * 1rem));top:calc(50% + .375rem);bottom:-.5rem;width:2px;background:var(--popover);transform:translate(-50%);pointer-events:none}.horizontal-navigation-menu .horizontal-navigation-divider{margin:.375rem 0;border-top-color:var(--border)}.cdk-overlay-pane .horizontal-navigation-menu.mat-mdc-menu-panel{z-index:1000}\n"] }]
489
565
  }], propDecorators: { _menuTrigger: [{
490
566
  type: ViewChild,
491
567
  args: [MatMenuTrigger]
492
568
  }], _rootTrigger: [{
493
569
  type: ViewChild,
494
570
  args: ['rootTrigger']
495
- }], item: [{ type: i0.Input, args: [{ isSignal: true, alias: "item", required: true }] }], menuItem: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuItem", required: false }] }], nested: [{ type: i0.Input, args: [{ isSignal: true, alias: "nested", required: false }] }], itemClicked: [{ type: i0.Output, args: ["itemClicked"] }], branchOpened: [{ type: i0.Output, args: ["branchOpened"] }], branchClosed: [{ type: i0.Output, args: ["branchClosed"] }] } });
496
-
497
- class HorizontalNavigation {
498
- _navigationService = inject(NavigationService);
499
- _activeRootBranch = null;
500
- // Navigation name identifier
501
- name = input('', ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
502
- // Input for navigation data
503
- navigation = input([], ...(ngDevMode ? [{ debugName: "navigation" }] : /* istanbul ignore next */ []));
504
- // Output for item clicks
505
- itemClicked = output();
506
- // Computed navigation data (from input or service)
507
- navigationData = computed(() => {
508
- const inputData = this.navigation();
509
- if (inputData.length > 0) {
510
- return inputData;
511
- }
512
- return this._navigationService.getNavigation();
513
- }, ...(ngDevMode ? [{ debugName: "navigationData" }] : /* istanbul ignore next */ []));
514
- /**
515
- * Handle item click
516
- */
517
- onItemClicked(item) {
518
- getNavigationItemAction(item)?.(item);
519
- this.itemClicked.emit(item);
520
- }
521
- onRootBranchOpened(branch) {
522
- if (this._activeRootBranch && this._activeRootBranch !== branch) {
523
- this._activeRootBranch.closeMenu();
524
- }
525
- this._activeRootBranch = branch;
526
- }
527
- onRootBranchClosed(branch) {
528
- if (this._activeRootBranch === branch) {
529
- this._activeRootBranch = null;
530
- }
531
- }
532
- shouldRenderItem(item) {
533
- return shouldRenderNavigationItem(item);
534
- }
535
- hasChildren(item) {
536
- return hasNavigationChildren(item);
537
- }
538
- /**
539
- * Get flat navigation for utility purposes
540
- */
541
- getFlatNavigation() {
542
- return this._navigationService.getFlatNavigation(this.navigationData());
543
- }
544
- /**
545
- * Get navigation item by ID
546
- */
547
- getItem(id) {
548
- return this._navigationService.getItem(id, this.navigationData());
549
- }
550
- /**
551
- * Get navigation item parent by ID
552
- */
553
- getItemParent(id) {
554
- return this._navigationService.getItemParent(id, this.navigationData(), this.navigationData());
555
- }
556
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HorizontalNavigation, deps: [], target: i0.ɵɵFactoryTarget.Component });
557
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: HorizontalNavigation, isStandalone: true, selector: "horizontal-navigation", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, navigation: { classPropertyName: "navigation", publicName: "navigation", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClicked: "itemClicked" }, ngImport: i0, template: `
558
- <nav class="horizontal-navigation">
559
- @if (navigationData()) {
560
- <div class="horizontal-navigation-items">
561
- @for (item of navigationData(); track item.id || item.title) {
562
- @if (shouldRenderItem(item)) {
563
- @switch (item.type) {
564
- @case ('basic') {
565
- @if (item.link) {
566
- <a
567
- [routerLink]="item.link"
568
- [title]="item.tooltip"
569
- class="horizontal-navigation-root-trigger"
570
- (click)="onItemClicked(item)">
571
- <ng-container
572
- [ngTemplateOutlet]="itemBody"
573
- [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
574
- </a>
575
- } @else {
576
- <button
577
- type="button"
578
- class="horizontal-navigation-root-trigger"
579
- [title]="item.tooltip"
580
- (click)="onItemClicked(item)"
581
- (keydown.enter)="onItemClicked(item)"
582
- (keydown.space)="$event.preventDefault(); onItemClicked(item)">
583
- <ng-container
584
- [ngTemplateOutlet]="itemBody"
585
- [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
586
- </button>
587
- }
588
- }
589
-
590
- @case ('collapsable') {
591
- @if (hasChildren(item)) {
592
- <horizontal-navigation-branch-item
593
- [item]="item"
594
- (itemClicked)="onItemClicked($event)"
595
- (branchOpened)="onRootBranchOpened($event)"
596
- (branchClosed)="onRootBranchClosed($event)" />
597
- } @else {
598
- <button
599
- type="button"
600
- class="horizontal-navigation-root-trigger"
601
- [title]="item.tooltip"
602
- (click)="onItemClicked(item)"
603
- (keydown.enter)="onItemClicked(item)"
604
- (keydown.space)="$event.preventDefault(); onItemClicked(item)">
605
- <ng-container
606
- [ngTemplateOutlet]="itemBody"
607
- [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
608
- </button>
609
- }
610
- }
611
-
612
- @case ('group') {
613
- @if (hasChildren(item)) {
614
- <horizontal-navigation-branch-item
615
- [item]="item"
616
- (itemClicked)="onItemClicked($event)"
617
- (branchOpened)="onRootBranchOpened($event)"
618
- (branchClosed)="onRootBranchClosed($event)" />
619
- } @else {
620
- <button
621
- type="button"
622
- class="horizontal-navigation-root-trigger"
623
- [title]="item.tooltip"
624
- (click)="onItemClicked(item)"
625
- (keydown.enter)="onItemClicked(item)"
626
- (keydown.space)="$event.preventDefault(); onItemClicked(item)">
627
- <ng-container
628
- [ngTemplateOutlet]="itemBody"
629
- [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
630
- </button>
631
- }
632
- }
633
-
634
- @case ('divider') {
635
- <div class="w-px h-6 bg-border mx-2"></div>
636
- }
637
-
638
- @case ('spacer') {
639
- <div class="flex-1"></div>
640
- }
641
-
642
- @default {
571
+ }], item: [{ type: i0.Input, args: [{ isSignal: true, alias: "item", required: true }] }], menuItem: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuItem", required: false }] }], nested: [{ type: i0.Input, args: [{ isSignal: true, alias: "nested", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], itemClicked: [{ type: i0.Output, args: ["itemClicked"] }], branchOpened: [{ type: i0.Output, args: ["branchOpened"] }], branchClosed: [{ type: i0.Output, args: ["branchClosed"] }] } });
572
+
573
+ const HORIZONTAL_NAVIGATION_TEMPLATE = `
574
+ <nav class="horizontal-navigation" [class.horizontal-navigation--mega]="isMegaVariant()">
575
+ @if (navigationData()) {
576
+ <div class="horizontal-navigation-items" [class.horizontal-navigation-items--mega]="isMegaVariant()">
577
+ @for (item of navigationData(); track item.id || item.title) {
578
+ @if (shouldRenderItem(item)) {
579
+ @switch (item.type) {
580
+ @case ('basic') {
581
+ @if (item.link) {
582
+ <a
583
+ [routerLink]="item.link"
584
+ [title]="item.tooltip"
585
+ class="horizontal-navigation-root-trigger"
586
+ [class.horizontal-navigation-root-trigger--mega]="isMegaVariant()"
587
+ (click)="onItemClicked(item)">
588
+ <ng-container
589
+ [ngTemplateOutlet]="itemBody"
590
+ [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
591
+ </a>
592
+ } @else {
643
593
  <button
644
594
  type="button"
645
595
  class="horizontal-navigation-root-trigger"
596
+ [class.horizontal-navigation-root-trigger--mega]="isMegaVariant()"
646
597
  [title]="item.tooltip"
647
598
  (click)="onItemClicked(item)"
648
599
  (keydown.enter)="onItemClicked(item)"
@@ -653,108 +604,44 @@ class HorizontalNavigation {
653
604
  </button>
654
605
  }
655
606
  }
656
- }
657
- }
658
- </div>
659
- }
660
607
 
661
- <ng-template #itemBody let-currentItem>
662
- <navigation-item-content [item]="currentItem" variant="horizontal"></navigation-item-content>
663
- </ng-template>
664
- </nav>
665
- `, isInline: true, styles: [".horizontal-navigation{@apply w-full;font-family:var(--nav-font-family)}.horizontal-navigation-items{display:flex;align-items:center;gap:.25rem;overflow-x:auto;scrollbar-width:thin;scrollbar-color:rgba(156,163,175,.5) transparent}.horizontal-navigation-items::-webkit-scrollbar{height:4px}.horizontal-navigation-items::-webkit-scrollbar-track{background:transparent}.horizontal-navigation-items::-webkit-scrollbar-thumb{background:#9ca3af80;border-radius:2px}.horizontal-navigation-items::-webkit-scrollbar-thumb:hover{background:#9ca3afcc}.horizontal-navigation-root-trigger{display:inline-flex;align-items:center;gap:.75rem;width:auto;padding:.5rem 1rem .5rem .75rem;border-radius:.5rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;white-space:nowrap;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-root-trigger:focus-visible{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-item-body{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.75rem}.horizontal-navigation-item-leading{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.625rem}.horizontal-navigation-item-icon{width:1rem;height:1rem;flex-shrink:0}.horizontal-navigation-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.horizontal-navigation-item-badge{margin-left:auto;display:inline-flex;align-items:center;padding:.125rem .375rem;border-radius:9999px;font-size:var(--nav-badge-font-size);line-height:var(--nav-badge-line-height);font-weight:var(--nav-badge-font-weight);flex-shrink:0}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NavigationItemContent, selector: "navigation-item-content", inputs: ["item", "level", "variant"] }, { kind: "component", type: HorizontalNavigationBranchItem, selector: "horizontal-navigation-branch-item", inputs: ["item", "menuItem", "nested"], outputs: ["itemClicked", "branchOpened", "branchClosed"] }] });
666
- }
667
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HorizontalNavigation, decorators: [{
668
- type: Component,
669
- args: [{ selector: 'horizontal-navigation', template: `
670
- <nav class="horizontal-navigation">
671
- @if (navigationData()) {
672
- <div class="horizontal-navigation-items">
673
- @for (item of navigationData(); track item.id || item.title) {
674
- @if (shouldRenderItem(item)) {
675
- @switch (item.type) {
676
- @case ('basic') {
677
- @if (item.link) {
678
- <a
679
- [routerLink]="item.link"
680
- [title]="item.tooltip"
681
- class="horizontal-navigation-root-trigger"
682
- (click)="onItemClicked(item)">
683
- <ng-container
684
- [ngTemplateOutlet]="itemBody"
685
- [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
686
- </a>
687
- } @else {
688
- <button
689
- type="button"
690
- class="horizontal-navigation-root-trigger"
691
- [title]="item.tooltip"
692
- (click)="onItemClicked(item)"
693
- (keydown.enter)="onItemClicked(item)"
694
- (keydown.space)="$event.preventDefault(); onItemClicked(item)">
695
- <ng-container
696
- [ngTemplateOutlet]="itemBody"
697
- [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
698
- </button>
699
- }
700
- }
701
-
702
- @case ('collapsable') {
703
- @if (hasChildren(item)) {
704
- <horizontal-navigation-branch-item
705
- [item]="item"
706
- (itemClicked)="onItemClicked($event)"
707
- (branchOpened)="onRootBranchOpened($event)"
708
- (branchClosed)="onRootBranchClosed($event)" />
709
- } @else {
710
- <button
711
- type="button"
712
- class="horizontal-navigation-root-trigger"
713
- [title]="item.tooltip"
714
- (click)="onItemClicked(item)"
715
- (keydown.enter)="onItemClicked(item)"
716
- (keydown.space)="$event.preventDefault(); onItemClicked(item)">
717
- <ng-container
718
- [ngTemplateOutlet]="itemBody"
719
- [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
720
- </button>
721
- }
722
- }
723
-
724
- @case ('group') {
725
- @if (hasChildren(item)) {
726
- <horizontal-navigation-branch-item
727
- [item]="item"
728
- (itemClicked)="onItemClicked($event)"
729
- (branchOpened)="onRootBranchOpened($event)"
730
- (branchClosed)="onRootBranchClosed($event)" />
731
- } @else {
732
- <button
733
- type="button"
734
- class="horizontal-navigation-root-trigger"
735
- [title]="item.tooltip"
736
- (click)="onItemClicked(item)"
737
- (keydown.enter)="onItemClicked(item)"
738
- (keydown.space)="$event.preventDefault(); onItemClicked(item)">
739
- <ng-container
740
- [ngTemplateOutlet]="itemBody"
741
- [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
742
- </button>
743
- }
744
- }
745
-
746
- @case ('divider') {
747
- <div class="w-px h-6 bg-border mx-2"></div>
748
- }
749
-
750
- @case ('spacer') {
751
- <div class="flex-1"></div>
608
+ @case ('collapsable') {
609
+ @if (hasChildren(item)) {
610
+ <horizontal-navigation-branch-item
611
+ [item]="item"
612
+ [variant]="variant"
613
+ (itemClicked)="onItemClicked($event)"
614
+ (branchOpened)="onRootBranchOpened($event)"
615
+ (branchClosed)="onRootBranchClosed($event)" />
616
+ } @else {
617
+ <button
618
+ type="button"
619
+ class="horizontal-navigation-root-trigger"
620
+ [class.horizontal-navigation-root-trigger--mega]="isMegaVariant()"
621
+ [title]="item.tooltip"
622
+ (click)="onItemClicked(item)"
623
+ (keydown.enter)="onItemClicked(item)"
624
+ (keydown.space)="$event.preventDefault(); onItemClicked(item)">
625
+ <ng-container
626
+ [ngTemplateOutlet]="itemBody"
627
+ [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
628
+ </button>
752
629
  }
630
+ }
753
631
 
754
- @default {
632
+ @case ('group') {
633
+ @if (hasChildren(item)) {
634
+ <horizontal-navigation-branch-item
635
+ [item]="item"
636
+ [variant]="variant"
637
+ (itemClicked)="onItemClicked($event)"
638
+ (branchOpened)="onRootBranchOpened($event)"
639
+ (branchClosed)="onRootBranchClosed($event)" />
640
+ } @else {
755
641
  <button
756
642
  type="button"
757
643
  class="horizontal-navigation-root-trigger"
644
+ [class.horizontal-navigation-root-trigger--mega]="isMegaVariant()"
758
645
  [title]="item.tooltip"
759
646
  (click)="onItemClicked(item)"
760
647
  (keydown.enter)="onItemClicked(item)"
@@ -765,21 +652,70 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImpor
765
652
  </button>
766
653
  }
767
654
  }
655
+
656
+ @case ('divider') {
657
+ <div class="h-6 w-px bg-border mx-2"></div>
658
+ }
659
+
660
+ @case ('spacer') {
661
+ <div class="flex-1"></div>
662
+ }
663
+
664
+ @default {
665
+ <button
666
+ type="button"
667
+ class="horizontal-navigation-root-trigger"
668
+ [class.horizontal-navigation-root-trigger--mega]="isMegaVariant()"
669
+ [title]="item.tooltip"
670
+ (click)="onItemClicked(item)"
671
+ (keydown.enter)="onItemClicked(item)"
672
+ (keydown.space)="$event.preventDefault(); onItemClicked(item)">
673
+ <ng-container
674
+ [ngTemplateOutlet]="itemBody"
675
+ [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
676
+ </button>
677
+ }
768
678
  }
769
679
  }
770
- </div>
771
- }
680
+ }
681
+ </div>
682
+ }
772
683
 
773
- <ng-template #itemBody let-currentItem>
774
- <navigation-item-content [item]="currentItem" variant="horizontal"></navigation-item-content>
775
- </ng-template>
776
- </nav>
777
- `, imports: [RouterLink, NgTemplateOutlet, NavigationItemContent, HorizontalNavigationBranchItem], styles: [".horizontal-navigation{@apply w-full;font-family:var(--nav-font-family)}.horizontal-navigation-items{display:flex;align-items:center;gap:.25rem;overflow-x:auto;scrollbar-width:thin;scrollbar-color:rgba(156,163,175,.5) transparent}.horizontal-navigation-items::-webkit-scrollbar{height:4px}.horizontal-navigation-items::-webkit-scrollbar-track{background:transparent}.horizontal-navigation-items::-webkit-scrollbar-thumb{background:#9ca3af80;border-radius:2px}.horizontal-navigation-items::-webkit-scrollbar-thumb:hover{background:#9ca3afcc}.horizontal-navigation-root-trigger{display:inline-flex;align-items:center;gap:.75rem;width:auto;padding:.5rem 1rem .5rem .75rem;border-radius:.5rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;white-space:nowrap;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-root-trigger:focus-visible{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-item-body{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.75rem}.horizontal-navigation-item-leading{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.625rem}.horizontal-navigation-item-icon{width:1rem;height:1rem;flex-shrink:0}.horizontal-navigation-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.horizontal-navigation-item-badge{margin-left:auto;display:inline-flex;align-items:center;padding:.125rem .375rem;border-radius:9999px;font-size:var(--nav-badge-font-size);line-height:var(--nav-badge-line-height);font-weight:var(--nav-badge-font-weight);flex-shrink:0}\n"] }]
778
- }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], navigation: [{ type: i0.Input, args: [{ isSignal: true, alias: "navigation", required: false }] }], itemClicked: [{ type: i0.Output, args: ["itemClicked"] }] } });
684
+ <ng-template #itemBody let-currentItem>
685
+ <navigation-item-content [item]="currentItem" variant="horizontal"></navigation-item-content>
686
+ </ng-template>
687
+ </nav>
688
+ `;
689
+ const HORIZONTAL_NAVIGATION_IMPORTS = [
690
+ RouterLink,
691
+ NgTemplateOutlet,
692
+ NavigationItemContent,
693
+ HorizontalNavigationBranchItem,
694
+ ];
695
+
696
+ class HorizontalNavigation extends HorizontalNavigationBaseComponent {
697
+ variant = 'default';
698
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HorizontalNavigation, deps: null, target: i0.ɵɵFactoryTarget.Component });
699
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: HorizontalNavigation, isStandalone: true, selector: "horizontal-navigation", usesInheritance: true, ngImport: i0, template: "\n <nav class=\"horizontal-navigation\" [class.horizontal-navigation--mega]=\"isMegaVariant()\">\n @if (navigationData()) {\n <div class=\"horizontal-navigation-items\" [class.horizontal-navigation-items--mega]=\"isMegaVariant()\">\n @for (item of navigationData(); track item.id || item.title) {\n @if (shouldRenderItem(item)) {\n @switch (item.type) {\n @case ('basic') {\n @if (item.link) {\n <a\n [routerLink]=\"item.link\"\n [title]=\"item.tooltip\"\n class=\"horizontal-navigation-root-trigger\"\n [class.horizontal-navigation-root-trigger--mega]=\"isMegaVariant()\"\n (click)=\"onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"horizontal-navigation-root-trigger\"\n [class.horizontal-navigation-root-trigger--mega]=\"isMegaVariant()\"\n [title]=\"item.tooltip\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n (keydown.space)=\"$event.preventDefault(); onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </button>\n }\n }\n\n @case ('collapsable') {\n @if (hasChildren(item)) {\n <horizontal-navigation-branch-item\n [item]=\"item\"\n [variant]=\"variant\"\n (itemClicked)=\"onItemClicked($event)\"\n (branchOpened)=\"onRootBranchOpened($event)\"\n (branchClosed)=\"onRootBranchClosed($event)\" />\n } @else {\n <button\n type=\"button\"\n class=\"horizontal-navigation-root-trigger\"\n [class.horizontal-navigation-root-trigger--mega]=\"isMegaVariant()\"\n [title]=\"item.tooltip\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n (keydown.space)=\"$event.preventDefault(); onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </button>\n }\n }\n\n @case ('group') {\n @if (hasChildren(item)) {\n <horizontal-navigation-branch-item\n [item]=\"item\"\n [variant]=\"variant\"\n (itemClicked)=\"onItemClicked($event)\"\n (branchOpened)=\"onRootBranchOpened($event)\"\n (branchClosed)=\"onRootBranchClosed($event)\" />\n } @else {\n <button\n type=\"button\"\n class=\"horizontal-navigation-root-trigger\"\n [class.horizontal-navigation-root-trigger--mega]=\"isMegaVariant()\"\n [title]=\"item.tooltip\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n (keydown.space)=\"$event.preventDefault(); onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </button>\n }\n }\n\n @case ('divider') {\n <div class=\"h-6 w-px bg-border mx-2\"></div>\n }\n\n @case ('spacer') {\n <div class=\"flex-1\"></div>\n }\n\n @default {\n <button\n type=\"button\"\n class=\"horizontal-navigation-root-trigger\"\n [class.horizontal-navigation-root-trigger--mega]=\"isMegaVariant()\"\n [title]=\"item.tooltip\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n (keydown.space)=\"$event.preventDefault(); onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </button>\n }\n }\n }\n }\n </div>\n }\n\n <ng-template #itemBody let-currentItem>\n <navigation-item-content [item]=\"currentItem\" variant=\"horizontal\"></navigation-item-content>\n </ng-template>\n </nav>\n", isInline: true, styles: [".horizontal-navigation{@apply w-full;font-family:var(--nav-font-family)}.horizontal-navigation-items{display:flex;align-items:center;gap:.25rem;overflow-x:auto;scrollbar-width:thin;scrollbar-color:rgba(156,163,175,.5) transparent}.horizontal-navigation-items::-webkit-scrollbar{height:4px}.horizontal-navigation-items::-webkit-scrollbar-track{background:transparent}.horizontal-navigation-items::-webkit-scrollbar-thumb{background:#9ca3af80;border-radius:2px}.horizontal-navigation-items::-webkit-scrollbar-thumb:hover{background:#9ca3afcc}.horizontal-navigation-root-trigger{display:inline-flex;align-items:center;gap:.75rem;width:auto;padding:.5rem 1rem .5rem .75rem;border-radius:.5rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;white-space:nowrap;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-root-trigger:focus-visible{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-item-body{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.75rem}.horizontal-navigation-item-leading{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.625rem}.horizontal-navigation-item-icon{width:1rem;height:1rem;flex-shrink:0}.horizontal-navigation-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.horizontal-navigation-item-badge{margin-left:auto;display:inline-flex;align-items:center;padding:.125rem .375rem;border-radius:9999px;font-size:var(--nav-badge-font-size);line-height:var(--nav-badge-line-height);font-weight:var(--nav-badge-font-weight);flex-shrink:0}\n"], dependencies: [{ kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.NavigationItemContent, selector: "navigation-item-content", inputs: ["item", "level", "variant"] }, { kind: "component", type: HorizontalNavigationBranchItem, selector: "horizontal-navigation-branch-item", inputs: ["item", "menuItem", "nested", "variant"], outputs: ["itemClicked", "branchOpened", "branchClosed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
700
+ }
701
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HorizontalNavigation, decorators: [{
702
+ type: Component,
703
+ args: [{ selector: 'horizontal-navigation', template: HORIZONTAL_NAVIGATION_TEMPLATE, changeDetection: ChangeDetectionStrategy.OnPush, imports: HORIZONTAL_NAVIGATION_IMPORTS, styles: [".horizontal-navigation{@apply w-full;font-family:var(--nav-font-family)}.horizontal-navigation-items{display:flex;align-items:center;gap:.25rem;overflow-x:auto;scrollbar-width:thin;scrollbar-color:rgba(156,163,175,.5) transparent}.horizontal-navigation-items::-webkit-scrollbar{height:4px}.horizontal-navigation-items::-webkit-scrollbar-track{background:transparent}.horizontal-navigation-items::-webkit-scrollbar-thumb{background:#9ca3af80;border-radius:2px}.horizontal-navigation-items::-webkit-scrollbar-thumb:hover{background:#9ca3afcc}.horizontal-navigation-root-trigger{display:inline-flex;align-items:center;gap:.75rem;width:auto;padding:.5rem 1rem .5rem .75rem;border-radius:.5rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;white-space:nowrap;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-root-trigger:focus-visible{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-item-body{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.75rem}.horizontal-navigation-item-leading{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.625rem}.horizontal-navigation-item-icon{width:1rem;height:1rem;flex-shrink:0}.horizontal-navigation-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.horizontal-navigation-item-badge{margin-left:auto;display:inline-flex;align-items:center;padding:.125rem .375rem;border-radius:9999px;font-size:var(--nav-badge-font-size);line-height:var(--nav-badge-line-height);font-weight:var(--nav-badge-font-weight);flex-shrink:0}\n"] }]
704
+ }] });
705
+
706
+ class HorizontalNavigationMegaComponent extends HorizontalNavigationBaseComponent {
707
+ variant = 'mega';
708
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HorizontalNavigationMegaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
709
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: HorizontalNavigationMegaComponent, isStandalone: true, selector: "horizontal-navigation-mega", usesInheritance: true, ngImport: i0, template: "\n <nav class=\"horizontal-navigation\" [class.horizontal-navigation--mega]=\"isMegaVariant()\">\n @if (navigationData()) {\n <div class=\"horizontal-navigation-items\" [class.horizontal-navigation-items--mega]=\"isMegaVariant()\">\n @for (item of navigationData(); track item.id || item.title) {\n @if (shouldRenderItem(item)) {\n @switch (item.type) {\n @case ('basic') {\n @if (item.link) {\n <a\n [routerLink]=\"item.link\"\n [title]=\"item.tooltip\"\n class=\"horizontal-navigation-root-trigger\"\n [class.horizontal-navigation-root-trigger--mega]=\"isMegaVariant()\"\n (click)=\"onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"horizontal-navigation-root-trigger\"\n [class.horizontal-navigation-root-trigger--mega]=\"isMegaVariant()\"\n [title]=\"item.tooltip\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n (keydown.space)=\"$event.preventDefault(); onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </button>\n }\n }\n\n @case ('collapsable') {\n @if (hasChildren(item)) {\n <horizontal-navigation-branch-item\n [item]=\"item\"\n [variant]=\"variant\"\n (itemClicked)=\"onItemClicked($event)\"\n (branchOpened)=\"onRootBranchOpened($event)\"\n (branchClosed)=\"onRootBranchClosed($event)\" />\n } @else {\n <button\n type=\"button\"\n class=\"horizontal-navigation-root-trigger\"\n [class.horizontal-navigation-root-trigger--mega]=\"isMegaVariant()\"\n [title]=\"item.tooltip\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n (keydown.space)=\"$event.preventDefault(); onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </button>\n }\n }\n\n @case ('group') {\n @if (hasChildren(item)) {\n <horizontal-navigation-branch-item\n [item]=\"item\"\n [variant]=\"variant\"\n (itemClicked)=\"onItemClicked($event)\"\n (branchOpened)=\"onRootBranchOpened($event)\"\n (branchClosed)=\"onRootBranchClosed($event)\" />\n } @else {\n <button\n type=\"button\"\n class=\"horizontal-navigation-root-trigger\"\n [class.horizontal-navigation-root-trigger--mega]=\"isMegaVariant()\"\n [title]=\"item.tooltip\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n (keydown.space)=\"$event.preventDefault(); onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </button>\n }\n }\n\n @case ('divider') {\n <div class=\"h-6 w-px bg-border mx-2\"></div>\n }\n\n @case ('spacer') {\n <div class=\"flex-1\"></div>\n }\n\n @default {\n <button\n type=\"button\"\n class=\"horizontal-navigation-root-trigger\"\n [class.horizontal-navigation-root-trigger--mega]=\"isMegaVariant()\"\n [title]=\"item.tooltip\"\n (click)=\"onItemClicked(item)\"\n (keydown.enter)=\"onItemClicked(item)\"\n (keydown.space)=\"$event.preventDefault(); onItemClicked(item)\">\n <ng-container\n [ngTemplateOutlet]=\"itemBody\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </button>\n }\n }\n }\n }\n </div>\n }\n\n <ng-template #itemBody let-currentItem>\n <navigation-item-content [item]=\"currentItem\" variant=\"horizontal\"></navigation-item-content>\n </ng-template>\n </nav>\n", isInline: true, styles: [".horizontal-navigation{@apply w-full;font-family:var(--nav-font-family)}.horizontal-navigation-items{display:flex;align-items:center;gap:.25rem;overflow-x:auto;scrollbar-width:thin;scrollbar-color:rgba(156,163,175,.5) transparent}.horizontal-navigation-items::-webkit-scrollbar{height:4px}.horizontal-navigation-items::-webkit-scrollbar-track{background:transparent}.horizontal-navigation-items::-webkit-scrollbar-thumb{background:#9ca3af80;border-radius:2px}.horizontal-navigation-items::-webkit-scrollbar-thumb:hover{background:#9ca3afcc}.horizontal-navigation-root-trigger{display:inline-flex;align-items:center;gap:.75rem;width:auto;padding:.5rem 1rem .5rem .75rem;border-radius:.5rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;white-space:nowrap;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-root-trigger:focus-visible{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-item-body{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.75rem}.horizontal-navigation-item-leading{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.625rem}.horizontal-navigation-item-icon{width:1rem;height:1rem;flex-shrink:0}.horizontal-navigation-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.horizontal-navigation-item-badge{margin-left:auto;display:inline-flex;align-items:center;padding:.125rem .375rem;border-radius:9999px;font-size:var(--nav-badge-font-size);line-height:var(--nav-badge-line-height);font-weight:var(--nav-badge-font-weight);flex-shrink:0}\n", ".horizontal-navigation{position:relative;overflow:hidden;padding:.5rem;border:1px solid color-mix(in srgb,var(--border) 80%,transparent);border-radius:1.25rem;background:linear-gradient(180deg,color-mix(in srgb,var(--card) 94%,white 6%),var(--card));box-shadow:0 20px 44px #0f172a1f,inset 0 1px #ffffff2e}.horizontal-navigation-items--mega{gap:.5rem;padding:.25rem}.horizontal-navigation-root-trigger--mega{min-height:3rem;padding:.75rem 1.25rem .75rem 1rem;border:1px solid transparent;border-radius:.875rem;background:color-mix(in srgb,var(--accent) 8%,transparent)}.horizontal-navigation-root-trigger--mega:hover,.horizontal-navigation-root-trigger--mega:focus-visible{border-color:color-mix(in srgb,var(--accent) 24%,transparent);background:color-mix(in srgb,var(--accent) 16%,transparent);color:inherit}.horizontal-navigation-root-trigger--mega .horizontal-navigation-item-label{font-weight:600}.horizontal-navigation-root-trigger--mega .horizontal-navigation-item-badge{padding-inline:.5rem;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 65%,transparent)}\n"], dependencies: [{ kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.NavigationItemContent, selector: "navigation-item-content", inputs: ["item", "level", "variant"] }, { kind: "component", type: HorizontalNavigationBranchItem, selector: "horizontal-navigation-branch-item", inputs: ["item", "menuItem", "nested", "variant"], outputs: ["itemClicked", "branchOpened", "branchClosed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
710
+ }
711
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: HorizontalNavigationMegaComponent, decorators: [{
712
+ type: Component,
713
+ args: [{ selector: 'horizontal-navigation-mega', template: HORIZONTAL_NAVIGATION_TEMPLATE, changeDetection: ChangeDetectionStrategy.OnPush, imports: HORIZONTAL_NAVIGATION_IMPORTS, styles: [".horizontal-navigation{@apply w-full;font-family:var(--nav-font-family)}.horizontal-navigation-items{display:flex;align-items:center;gap:.25rem;overflow-x:auto;scrollbar-width:thin;scrollbar-color:rgba(156,163,175,.5) transparent}.horizontal-navigation-items::-webkit-scrollbar{height:4px}.horizontal-navigation-items::-webkit-scrollbar-track{background:transparent}.horizontal-navigation-items::-webkit-scrollbar-thumb{background:#9ca3af80;border-radius:2px}.horizontal-navigation-items::-webkit-scrollbar-thumb:hover{background:#9ca3afcc}.horizontal-navigation-root-trigger{display:inline-flex;align-items:center;gap:.75rem;width:auto;padding:.5rem 1rem .5rem .75rem;border-radius:.5rem;font-size:var(--nav-item-font-size);line-height:var(--nav-item-line-height);font-weight:var(--nav-item-font-weight);color:inherit;background:transparent;white-space:nowrap;transition:background-color .15s ease,color .15s ease}.horizontal-navigation-root-trigger:hover,.horizontal-navigation-root-trigger:focus-visible{background:var(--accent);color:var(--accent-foreground)}.horizontal-navigation-item-body{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.75rem}.horizontal-navigation-item-leading{display:flex;align-items:center;flex:1 1 auto;min-width:0;gap:.625rem}.horizontal-navigation-item-icon{width:1rem;height:1rem;flex-shrink:0}.horizontal-navigation-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.horizontal-navigation-item-badge{margin-left:auto;display:inline-flex;align-items:center;padding:.125rem .375rem;border-radius:9999px;font-size:var(--nav-badge-font-size);line-height:var(--nav-badge-line-height);font-weight:var(--nav-badge-font-weight);flex-shrink:0}\n", ".horizontal-navigation{position:relative;overflow:hidden;padding:.5rem;border:1px solid color-mix(in srgb,var(--border) 80%,transparent);border-radius:1.25rem;background:linear-gradient(180deg,color-mix(in srgb,var(--card) 94%,white 6%),var(--card));box-shadow:0 20px 44px #0f172a1f,inset 0 1px #ffffff2e}.horizontal-navigation-items--mega{gap:.5rem;padding:.25rem}.horizontal-navigation-root-trigger--mega{min-height:3rem;padding:.75rem 1.25rem .75rem 1rem;border:1px solid transparent;border-radius:.875rem;background:color-mix(in srgb,var(--accent) 8%,transparent)}.horizontal-navigation-root-trigger--mega:hover,.horizontal-navigation-root-trigger--mega:focus-visible{border-color:color-mix(in srgb,var(--accent) 24%,transparent);background:color-mix(in srgb,var(--accent) 16%,transparent);color:inherit}.horizontal-navigation-root-trigger--mega .horizontal-navigation-item-label{font-weight:600}.horizontal-navigation-root-trigger--mega .horizontal-navigation-item-badge{padding-inline:.5rem;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 65%,transparent)}\n"] }]
714
+ }] });
779
715
 
780
716
  /**
781
717
  * Generated bundle index. Do not edit.
782
718
  */
783
719
 
784
- export { HorizontalNavigation, HorizontalNavigationBranchItem };
720
+ export { HorizontalNavigation, HorizontalNavigationBranchItem, HorizontalNavigationMegaComponent };
785
721
  //# sourceMappingURL=ojiepermana-angular-navigation-horizontal.mjs.map