@ojiepermana/angular 22.1.14 → 22.2.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 (252) hide show
  1. package/README.md +8 -6
  2. package/SUPPORT.md +3 -3
  3. package/chart/README.md +1 -1
  4. package/component/README.md +2 -2
  5. package/component/calendar/README.md +3 -15
  6. package/component/drawer/README.md +1 -2
  7. package/fesm2022/ojiepermana-angular-chart-area.mjs +352 -137
  8. package/fesm2022/ojiepermana-angular-chart-bar.mjs +744 -524
  9. package/fesm2022/ojiepermana-angular-chart-core.mjs +1140 -1344
  10. package/fesm2022/ojiepermana-angular-chart-line.mjs +393 -147
  11. package/fesm2022/ojiepermana-angular-chart-pie.mjs +408 -179
  12. package/fesm2022/ojiepermana-angular-chart-primitives.mjs +1262 -920
  13. package/fesm2022/ojiepermana-angular-chart-radar.mjs +473 -205
  14. package/fesm2022/ojiepermana-angular-chart-radial.mjs +425 -182
  15. package/fesm2022/ojiepermana-angular-chart-scatter.mjs +386 -210
  16. package/fesm2022/ojiepermana-angular-chart.mjs +3 -19
  17. package/fesm2022/ojiepermana-angular-component-accordion.mjs +485 -243
  18. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +963 -325
  19. package/fesm2022/ojiepermana-angular-component-alert.mjs +266 -103
  20. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +80 -35
  21. package/fesm2022/ojiepermana-angular-component-avatar.mjs +402 -135
  22. package/fesm2022/ojiepermana-angular-component-badge.mjs +109 -59
  23. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +410 -142
  24. package/fesm2022/ojiepermana-angular-component-button-group.mjs +249 -96
  25. package/fesm2022/ojiepermana-angular-component-button.mjs +153 -75
  26. package/fesm2022/ojiepermana-angular-component-calendar.mjs +531 -418
  27. package/fesm2022/ojiepermana-angular-component-card.mjs +457 -171
  28. package/fesm2022/ojiepermana-angular-component-carousel.mjs +642 -272
  29. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +312 -108
  30. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +299 -115
  31. package/fesm2022/ojiepermana-angular-component-combobox.mjs +396 -183
  32. package/fesm2022/ojiepermana-angular-component-command.mjs +807 -347
  33. package/fesm2022/ojiepermana-angular-component-composer.mjs +807 -330
  34. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +196 -161
  35. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +650 -338
  36. package/fesm2022/ojiepermana-angular-component-dialog.mjs +710 -316
  37. package/fesm2022/ojiepermana-angular-component-drawer.mjs +1 -5
  38. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +1212 -646
  39. package/fesm2022/ojiepermana-angular-component-editor.mjs +987 -502
  40. package/fesm2022/ojiepermana-angular-component-empty.mjs +350 -137
  41. package/fesm2022/ojiepermana-angular-component-form.mjs +813 -434
  42. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +486 -277
  43. package/fesm2022/ojiepermana-angular-component-icon.mjs +241 -140
  44. package/fesm2022/ojiepermana-angular-component-input-group.mjs +449 -176
  45. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +891 -488
  46. package/fesm2022/ojiepermana-angular-component-input.mjs +86 -55
  47. package/fesm2022/ojiepermana-angular-component-item.mjs +713 -261
  48. package/fesm2022/ojiepermana-angular-component-kanban.mjs +714 -216
  49. package/fesm2022/ojiepermana-angular-component-kbd.mjs +124 -52
  50. package/fesm2022/ojiepermana-angular-component-label.mjs +82 -31
  51. package/fesm2022/ojiepermana-angular-component-menubar.mjs +479 -329
  52. package/fesm2022/ojiepermana-angular-component-native-select.mjs +167 -65
  53. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +683 -380
  54. package/fesm2022/ojiepermana-angular-component-pagination.mjs +277 -94
  55. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +1283 -607
  56. package/fesm2022/ojiepermana-angular-component-popover.mjs +291 -204
  57. package/fesm2022/ojiepermana-angular-component-progress.mjs +176 -53
  58. package/fesm2022/ojiepermana-angular-component-radio.mjs +449 -142
  59. package/fesm2022/ojiepermana-angular-component-resizable.mjs +659 -453
  60. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +117 -39
  61. package/fesm2022/ojiepermana-angular-component-segmented-control.mjs +351 -172
  62. package/fesm2022/ojiepermana-angular-component-select.mjs +475 -345
  63. package/fesm2022/ojiepermana-angular-component-separator.mjs +102 -35
  64. package/fesm2022/ojiepermana-angular-component-sheet.mjs +797 -347
  65. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +62 -29
  66. package/fesm2022/ojiepermana-angular-component-slider.mjs +592 -376
  67. package/fesm2022/ojiepermana-angular-component-spinner.mjs +135 -38
  68. package/fesm2022/ojiepermana-angular-component-switch.mjs +315 -103
  69. package/fesm2022/ojiepermana-angular-component-table.mjs +440 -153
  70. package/fesm2022/ojiepermana-angular-component-tabs.mjs +590 -317
  71. package/fesm2022/ojiepermana-angular-component-textarea.mjs +85 -50
  72. package/fesm2022/ojiepermana-angular-component-timeline.mjs +609 -231
  73. package/fesm2022/ojiepermana-angular-component-toast.mjs +229 -243
  74. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +573 -288
  75. package/fesm2022/ojiepermana-angular-component-toggle.mjs +187 -78
  76. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +798 -517
  77. package/fesm2022/ojiepermana-angular-component-utils-core.mjs +159 -292
  78. package/fesm2022/ojiepermana-angular-component-utils-overlay.mjs +46 -58
  79. package/fesm2022/ojiepermana-angular-component-utils-scale.mjs +76 -38
  80. package/fesm2022/ojiepermana-angular-component-utils.mjs +2 -8
  81. package/fesm2022/ojiepermana-angular-component.mjs +0 -10
  82. package/fesm2022/ojiepermana-angular-navigation-core.mjs +13 -23
  83. package/fesm2022/ojiepermana-angular-navigation-icon.mjs +35 -24
  84. package/fesm2022/ojiepermana-angular-navigation-navigation-badge-count.component-DYuysKVf.mjs +129 -0
  85. package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-COiTaw34.mjs +812 -0
  86. package/fesm2022/{ojiepermana-angular-navigation-navigation-entry-grid.component-COQ-60DS.mjs → ojiepermana-angular-navigation-navigation-entry-grid.component-YIz0IsIb.mjs} +392 -207
  87. package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-D2vwEwBY.mjs +650 -0
  88. package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-B5D7yXfb.mjs +662 -0
  89. package/fesm2022/ojiepermana-angular-navigation-navigation-item.component-CUb68MZH.mjs +1219 -0
  90. package/fesm2022/ojiepermana-angular-navigation-navigation-list.component-CrK16trj.mjs +327 -0
  91. package/fesm2022/ojiepermana-angular-navigation-service.mjs +544 -724
  92. package/fesm2022/ojiepermana-angular-navigation-types.mjs +139 -56
  93. package/fesm2022/ojiepermana-angular-navigation.mjs +3256 -4
  94. package/fesm2022/ojiepermana-angular-sdk.mjs +91 -201
  95. package/fesm2022/ojiepermana-angular-theme-component-settings.mjs +1125 -737
  96. package/fesm2022/ojiepermana-angular-theme-layout-services.mjs +245 -328
  97. package/fesm2022/ojiepermana-angular-theme-layout-types.mjs +35 -38
  98. package/fesm2022/ojiepermana-angular-theme-layout-wrapper.mjs +1928 -553
  99. package/fesm2022/ojiepermana-angular-theme-layout.mjs +847 -496
  100. package/fesm2022/ojiepermana-angular-theme-page-core.mjs +288 -358
  101. package/fesm2022/ojiepermana-angular-theme-page-filter.mjs +362 -224
  102. package/fesm2022/ojiepermana-angular-theme-page-overview.mjs +88 -0
  103. package/fesm2022/ojiepermana-angular-theme-page-root.mjs +576 -254
  104. package/fesm2022/ojiepermana-angular-theme-page-side.mjs +317 -177
  105. package/fesm2022/ojiepermana-angular-theme-page-slots.mjs +256 -112
  106. package/fesm2022/ojiepermana-angular-theme-page.mjs +7 -12
  107. package/fesm2022/ojiepermana-angular-theme-shell-services.mjs +215 -326
  108. package/fesm2022/ojiepermana-angular-theme-shell-types.mjs +68 -129
  109. package/fesm2022/ojiepermana-angular-theme-shell.mjs +907 -378
  110. package/fesm2022/ojiepermana-angular-theme-styles.mjs +521 -720
  111. package/fesm2022/ojiepermana-angular-theme.mjs +0 -10
  112. package/fesm2022/ojiepermana-angular.mjs +5 -24
  113. package/navigation/README.md +69 -18
  114. package/package.json +16 -12
  115. package/sdk/README.md +1 -1
  116. package/sdk/src/writer/index.js +2 -2
  117. package/theme/README.md +1 -1
  118. package/theme/layout/README.md +2 -4
  119. package/theme/page/README.md +50 -0
  120. package/theme/styles/README.md +10 -10
  121. package/theme/styles/css/base/prefers-dark.css +1 -1
  122. package/theme/styles/css/base/status.css +1 -1
  123. package/theme/styles/css/color/amber.css +1 -1
  124. package/theme/styles/css/color/blue.css +1 -1
  125. package/theme/styles/css/color/cyan.css +1 -1
  126. package/theme/styles/css/color/emerald.css +1 -1
  127. package/theme/styles/css/color/fuchsia.css +1 -1
  128. package/theme/styles/css/color/green.css +1 -1
  129. package/theme/styles/css/color/indigo.css +1 -1
  130. package/theme/styles/css/color/lime.css +1 -1
  131. package/theme/styles/css/color/orange.css +1 -1
  132. package/theme/styles/css/color/pink.css +1 -1
  133. package/theme/styles/css/color/purple.css +1 -1
  134. package/theme/styles/css/color/red.css +1 -1
  135. package/theme/styles/css/color/rose.css +1 -1
  136. package/theme/styles/css/color/sky.css +1 -1
  137. package/theme/styles/css/color/teal.css +1 -1
  138. package/theme/styles/css/color/violet.css +1 -1
  139. package/theme/styles/css/color/yellow.css +1 -1
  140. package/theme/styles/css/neutral/gray.css +1 -1
  141. package/theme/styles/css/neutral/mauve.css +1 -1
  142. package/theme/styles/css/neutral/mist.css +1 -1
  143. package/theme/styles/css/neutral/neutral.css +1 -1
  144. package/theme/styles/css/neutral/olive.css +1 -1
  145. package/theme/styles/css/neutral/slate.css +1 -1
  146. package/theme/styles/css/neutral/stone.css +1 -1
  147. package/theme/styles/css/neutral/taupe.css +1 -1
  148. package/theme/styles/css/neutral/zinc.css +1 -1
  149. package/types/ojiepermana-angular-chart-area.d.ts +126 -63
  150. package/types/ojiepermana-angular-chart-bar.d.ts +244 -154
  151. package/types/ojiepermana-angular-chart-core.d.ts +409 -398
  152. package/types/ojiepermana-angular-chart-line.d.ts +141 -68
  153. package/types/ojiepermana-angular-chart-pie.d.ts +192 -121
  154. package/types/ojiepermana-angular-chart-primitives.d.ts +283 -214
  155. package/types/ojiepermana-angular-chart-radar.d.ts +189 -108
  156. package/types/ojiepermana-angular-chart-radial.d.ts +177 -106
  157. package/types/ojiepermana-angular-chart-scatter.d.ts +166 -110
  158. package/types/ojiepermana-angular-chart.d.ts +3 -2
  159. package/types/ojiepermana-angular-component-accordion.d.ts +135 -81
  160. package/types/ojiepermana-angular-component-alert-dialog.d.ts +271 -123
  161. package/types/ojiepermana-angular-component-alert.d.ts +69 -39
  162. package/types/ojiepermana-angular-component-aspect-ratio.d.ts +20 -12
  163. package/types/ojiepermana-angular-component-avatar.d.ts +103 -49
  164. package/types/ojiepermana-angular-component-badge.d.ts +36 -24
  165. package/types/ojiepermana-angular-component-breadcrumb.d.ts +79 -40
  166. package/types/ojiepermana-angular-component-button-group.d.ts +48 -24
  167. package/types/ojiepermana-angular-component-button.d.ts +44 -27
  168. package/types/ojiepermana-angular-component-calendar.d.ts +145 -107
  169. package/types/ojiepermana-angular-component-card.d.ts +112 -63
  170. package/types/ojiepermana-angular-component-carousel.d.ts +150 -81
  171. package/types/ojiepermana-angular-component-checkbox.d.ts +96 -38
  172. package/types/ojiepermana-angular-component-collapsible.d.ts +65 -39
  173. package/types/ojiepermana-angular-component-combobox.d.ts +100 -55
  174. package/types/ojiepermana-angular-component-command.d.ts +206 -121
  175. package/types/ojiepermana-angular-component-composer.d.ts +184 -84
  176. package/types/ojiepermana-angular-component-context-menu.d.ts +51 -41
  177. package/types/ojiepermana-angular-component-date-picker.d.ts +199 -109
  178. package/types/ojiepermana-angular-component-dialog.d.ts +200 -105
  179. package/types/ojiepermana-angular-component-drawer.d.ts +2 -1
  180. package/types/ojiepermana-angular-component-dropdown-menu.d.ts +324 -202
  181. package/types/ojiepermana-angular-component-editor.d.ts +215 -117
  182. package/types/ojiepermana-angular-component-empty.d.ts +80 -45
  183. package/types/ojiepermana-angular-component-form.d.ts +185 -121
  184. package/types/ojiepermana-angular-component-hover-card.d.ts +130 -72
  185. package/types/ojiepermana-angular-component-icon.d.ts +87 -57
  186. package/types/ojiepermana-angular-component-input-group.d.ts +93 -46
  187. package/types/ojiepermana-angular-component-input-otp.d.ts +243 -150
  188. package/types/ojiepermana-angular-component-input.d.ts +27 -17
  189. package/types/ojiepermana-angular-component-item.d.ts +160 -84
  190. package/types/ojiepermana-angular-component-kanban.d.ts +157 -62
  191. package/types/ojiepermana-angular-component-kbd.d.ts +24 -15
  192. package/types/ojiepermana-angular-component-label.d.ts +19 -11
  193. package/types/ojiepermana-angular-component-menubar.d.ts +120 -90
  194. package/types/ojiepermana-angular-component-native-select.d.ts +37 -24
  195. package/types/ojiepermana-angular-component-navigation-menu.d.ts +157 -98
  196. package/types/ojiepermana-angular-component-pagination.d.ts +78 -28
  197. package/types/ojiepermana-angular-component-pillbox.d.ts +361 -204
  198. package/types/ojiepermana-angular-component-popover.d.ts +94 -64
  199. package/types/ojiepermana-angular-component-progress.d.ts +45 -17
  200. package/types/ojiepermana-angular-component-radio.d.ts +129 -53
  201. package/types/ojiepermana-angular-component-resizable.d.ts +160 -112
  202. package/types/ojiepermana-angular-component-scroll-area.d.ts +33 -15
  203. package/types/ojiepermana-angular-component-segmented-control.d.ts +94 -50
  204. package/types/ojiepermana-angular-component-select.d.ts +94 -77
  205. package/types/ojiepermana-angular-component-separator.d.ts +26 -14
  206. package/types/ojiepermana-angular-component-sheet.d.ts +226 -116
  207. package/types/ojiepermana-angular-component-skeleton.d.ts +13 -10
  208. package/types/ojiepermana-angular-component-slider.d.ts +140 -75
  209. package/types/ojiepermana-angular-component-spinner.d.ts +31 -13
  210. package/types/ojiepermana-angular-component-switch.d.ts +97 -40
  211. package/types/ojiepermana-angular-component-table.d.ts +102 -50
  212. package/types/ojiepermana-angular-component-tabs.d.ts +174 -115
  213. package/types/ojiepermana-angular-component-textarea.d.ts +27 -17
  214. package/types/ojiepermana-angular-component-timeline.d.ts +141 -59
  215. package/types/ojiepermana-angular-component-toast.d.ts +51 -55
  216. package/types/ojiepermana-angular-component-toggle-group.d.ts +159 -88
  217. package/types/ojiepermana-angular-component-toggle.d.ts +47 -25
  218. package/types/ojiepermana-angular-component-tooltip.d.ts +222 -132
  219. package/types/ojiepermana-angular-component-utils-core.d.ts +81 -90
  220. package/types/ojiepermana-angular-component-utils-overlay.d.ts +7 -11
  221. package/types/ojiepermana-angular-component-utils-scale.d.ts +20 -12
  222. package/types/ojiepermana-angular-component-utils.d.ts +2 -2
  223. package/types/ojiepermana-angular-component.d.ts +1 -2
  224. package/types/ojiepermana-angular-navigation-core.d.ts +46 -50
  225. package/types/ojiepermana-angular-navigation-icon.d.ts +9 -12
  226. package/types/ojiepermana-angular-navigation-service.d.ts +112 -115
  227. package/types/ojiepermana-angular-navigation-types.d.ts +166 -125
  228. package/types/ojiepermana-angular-navigation.d.ts +708 -375
  229. package/types/ojiepermana-angular-sdk.d.ts +69 -71
  230. package/types/ojiepermana-angular-theme-component-settings.d.ts +120 -86
  231. package/types/ojiepermana-angular-theme-layout-services.d.ts +119 -124
  232. package/types/ojiepermana-angular-theme-layout-types.d.ts +27 -31
  233. package/types/ojiepermana-angular-theme-layout-wrapper.d.ts +446 -187
  234. package/types/ojiepermana-angular-theme-layout.d.ts +201 -113
  235. package/types/ojiepermana-angular-theme-page-core.d.ts +136 -142
  236. package/types/ojiepermana-angular-theme-page-filter.d.ts +112 -62
  237. package/types/ojiepermana-angular-theme-page-overview.d.ts +28 -0
  238. package/types/ojiepermana-angular-theme-page-root.d.ts +172 -88
  239. package/types/ojiepermana-angular-theme-page-side.d.ts +89 -49
  240. package/types/ojiepermana-angular-theme-page-slots.d.ts +58 -37
  241. package/types/ojiepermana-angular-theme-page.d.ts +7 -5
  242. package/types/ojiepermana-angular-theme-shell-services.d.ts +119 -125
  243. package/types/ojiepermana-angular-theme-shell-types.d.ts +38 -41
  244. package/types/ojiepermana-angular-theme-shell.d.ts +139 -61
  245. package/types/ojiepermana-angular-theme-styles.d.ts +184 -196
  246. package/types/ojiepermana-angular-theme.d.ts +1 -2
  247. package/types/ojiepermana-angular.d.ts +5 -5
  248. package/fesm2022/ojiepermana-angular-navigation-navigation-badge-count.component-Be3IqzG4.mjs +0 -91
  249. package/fesm2022/ojiepermana-angular-navigation-navigation-dockbar-menu.component-Bc7DWK3R.mjs +0 -522
  250. package/fesm2022/ojiepermana-angular-navigation-navigation-flyout-menu.component-DA8VPEn7.mjs +0 -404
  251. package/fesm2022/ojiepermana-angular-navigation-navigation-horizontal.component-U2TJTzlW.mjs +0 -466
  252. package/fesm2022/ojiepermana-angular-navigation-ojiepermana-angular-navigation-CIUhmytH.mjs +0 -2668
@@ -1,4 +1,3256 @@
1
- export { c as NavigationAsideFooterDirective, d as NavigationCollapseExpandedDirective, e as NavigationCollapseRootDirective, f as NavigationContainerComponent, g as NavigationContentComponent, h as NavigationDockbarComponent, i as NavigationFlyoutComponent, j as NavigationFooterActionComponent, k as NavigationFooterComponent, l as NavigationFooterInitialComponent, m as NavigationFooterTitleComponent, o as NavigationHeaderComponent, p as NavigationHeaderInitialComponent, q as NavigationHeaderTitleComponent, r as NavigationNavbarComponent, s as NavigationSidebarComponent, t as deriveNavigationInitials } from './ojiepermana-angular-navigation-ojiepermana-angular-navigation-CIUhmytH.mjs';
2
- export * from '@ojiepermana/angular/navigation/core';
3
- export { NAVIGATION_DOCKBAR_FALLBACK_ICON, formatNavigationBadgeCount, normalizeUiNavItems } from '@ojiepermana/angular/navigation/types';
4
- export { NavigationIconDirective } from '@ojiepermana/angular/navigation/icon';
1
+ import { t as NavigationListComponent } from "./ojiepermana-angular-navigation-navigation-list.component-CrK16trj.mjs";
2
+ import * as i0 from "@angular/core";
3
+ import { Component, DestroyRef, Directive, ElementRef, InjectionToken, Injector, TemplateRef, ViewContainerRef, afterNextRender, booleanAttribute, computed, contentChild, effect, forwardRef, inject, input, isDevMode, model, output, signal } from "@angular/core";
4
+ import { ActivatedRoute } from "@angular/router";
5
+ import { cn } from "@ojiepermana/angular/component/utils/core";
6
+ import { NavigationIconDirective, NavigationIconDirective as NavigationIconDirective$1 } from "@ojiepermana/angular/navigation/icon";
7
+ import { NAVIGATION_ADAPTER, NAVIGATION_ROUTE_CONTEXT_ADAPTER } from "@ojiepermana/angular/navigation/core";
8
+ import { NAVIGATION_DOCKBAR_FALLBACK_ICON, NAVIGATION_DOCKBAR_FALLBACK_ICON as NAVIGATION_DOCKBAR_FALLBACK_ICON$1, formatNavigationBadgeCount, normalizeUiNavItems, normalizeUiNavItems as normalizeUiNavItems$1, toMinidockItems, ɵassertMinidockItems, ɵcompactNavigationDividers } from "@ojiepermana/angular/navigation/types";
9
+ import { NgTemplateOutlet } from "@angular/common";
10
+ import { IconComponent } from "@ojiepermana/angular/component/icon";
11
+ import { TooltipDirective } from "@ojiepermana/angular/component/tooltip";
12
+ export * from "@ojiepermana/angular/navigation/core";
13
+ function injectNavigationController(inputs) {
14
+ const nav = inject(NAVIGATION_ADAPTER);
15
+ const owner = {};
16
+ const registeredState = signal(null, ...ngDevMode ? [{ debugName: "registeredState" }] : /* istanbul ignore next */ []);
17
+ const normalizedNavId = computed(() => normalizeId(inputs.navId()), ...ngDevMode ? [{ debugName: "normalizedNavId" }] : /* istanbul ignore next */ []);
18
+ const collapsedPreference = computed(() => inputs.collapsed() ?? (inputs.compact() ? true : null), ...ngDevMode ? [{ debugName: "collapsedPreference" }] : /* istanbul ignore next */ []);
19
+ const normalizedItems = computed(() => normalizeUiNavItems$1(inputs.data()), ...ngDevMode ? [{ debugName: "normalizedItems" }] : /* istanbul ignore next */ []);
20
+ const fallbackState = computed(() => ({
21
+ id: normalizedNavId(),
22
+ orientation: inputs.orientation(),
23
+ type: fallbackType(inputs.orientation(), inputs.type()),
24
+ position: inputs.position() ?? (inputs.orientation() === "horizontal" ? "top" : "left"),
25
+ collapsed: collapsedPreference() ?? false,
26
+ dockbarMode: inputs.dockbarMode() ?? "sticky"
27
+ }), ...ngDevMode ? [{ debugName: "fallbackState" }] : /* istanbul ignore next */ []);
28
+ const resolvedState = computed(() => nav.currentState(normalizedNavId()) ?? registeredState() ?? fallbackState(), ...ngDevMode ? [{ debugName: "resolvedState" }] : /* istanbul ignore next */ []);
29
+ const activeIdSet = computed(() => {
30
+ const ids = inputs.activeIds();
31
+ if (!ids) return /* @__PURE__ */ new Set();
32
+ return ids instanceof Set ? new Set(ids) : new Set(ids);
33
+ }, ...ngDevMode ? [{ debugName: "activeIdSet" }] : /* istanbul ignore next */ []);
34
+ effect((onCleanup) => {
35
+ if (!inputs.enabled()) return;
36
+ const nextState = nav.register({
37
+ id: normalizedNavId(),
38
+ orientation: inputs.orientation(),
39
+ type: inputs.type(),
40
+ position: inputs.position(),
41
+ collapsed: collapsedPreference(),
42
+ dockbarMode: inputs.dockbarMode()
43
+ }, owner);
44
+ registeredState.set(nextState);
45
+ onCleanup(() => nav.unregister(nextState.id, owner));
46
+ });
47
+ return {
48
+ normalizedNavId,
49
+ normalizedItems,
50
+ resolvedState,
51
+ activeIdSet,
52
+ toggleCollapsed: () => nav.toggleCollapsed(normalizedNavId())
53
+ };
54
+ }
55
+ function normalizeId(value) {
56
+ return value.trim() || "default";
57
+ }
58
+ function fallbackType(orientation, type) {
59
+ if (orientation === "vertical" && (type === "sidebar" || type === "dockbar" || type === "minidock")) return type;
60
+ if (orientation === "horizontal" && (type === "navbar" || type === "flyout")) return type;
61
+ return orientation === "horizontal" ? "navbar" : "sidebar";
62
+ }
63
+ const NAVIGATION_SHELL = new InjectionToken("NAVIGATION_SHELL");
64
+ const EMPTY_NAVIGATION_BADGE_CONTEXT$1 = Object.freeze({});
65
+ const EMPTY_NAVIGATION_ACTIVE_IDS = /* @__PURE__ */ new Set();
66
+ var NavigationContainerComponent = class NavigationContainerComponent {
67
+ navId = input("default", {
68
+ ...ngDevMode ? { debugName: "navId" } : /* istanbul ignore next */ {},
69
+ alias: "id"
70
+ });
71
+ dataId = input(null, {
72
+ ...ngDevMode ? { debugName: "dataId" } : /* istanbul ignore next */ {},
73
+ alias: "data-id"
74
+ });
75
+ data = input([], ...ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []);
76
+ ariaLabel = input("Primary navigation", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
77
+ compact = input(false, ...ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []);
78
+ collapseTree = input("stairs", {
79
+ ...ngDevMode ? { debugName: "collapseTree" } : /* istanbul ignore next */ {},
80
+ alias: "collapse-tree"
81
+ });
82
+ class = input("", ...ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []);
83
+ itemClass = input("", ...ngDevMode ? [{ debugName: "itemClass" }] : /* istanbul ignore next */ []);
84
+ groupClass = input("", {
85
+ ...ngDevMode ? { debugName: "groupClass" } : /* istanbul ignore next */ {},
86
+ alias: "nav-group-class"
87
+ });
88
+ activeIds = input(null, ...ngDevMode ? [{ debugName: "activeIds" }] : /* istanbul ignore next */ []);
89
+ activeUrl = input(null, ...ngDevMode ? [{ debugName: "activeUrl" }] : /* istanbul ignore next */ []);
90
+ openedIds = model([], ...ngDevMode ? [{ debugName: "openedIds" }] : /* istanbul ignore next */ []);
91
+ itemSelected = output();
92
+ nav = inject(NAVIGATION_ADAPTER);
93
+ routeContextAdapter = inject(NAVIGATION_ROUTE_CONTEXT_ADAPTER);
94
+ activatedRoute = inject(ActivatedRoute, { optional: true });
95
+ dataOwner = {};
96
+ hoverPreviewExpanded = signal(false, ...ngDevMode ? [{ debugName: "hoverPreviewExpanded" }] : /* istanbul ignore next */ []);
97
+ focusPreviewExpanded = signal(false, ...ngDevMode ? [{ debugName: "focusPreviewExpanded" }] : /* istanbul ignore next */ []);
98
+ typeConfig = signal(null, ...ngDevMode ? [{ debugName: "typeConfig" }] : /* istanbul ignore next */ []);
99
+ orientationPreference = computed(() => this.typeConfig()?.orientation ?? "vertical", ...ngDevMode ? [{ debugName: "orientationPreference" }] : /* istanbul ignore next */ []);
100
+ typePreference = computed(() => this.typeConfig()?.type ?? null, ...ngDevMode ? [{ debugName: "typePreference" }] : /* istanbul ignore next */ []);
101
+ positionPreference = computed(() => this.typeConfig()?.position?.() ?? null, ...ngDevMode ? [{ debugName: "positionPreference" }] : /* istanbul ignore next */ []);
102
+ collapsedPreference = computed(() => this.typeConfig()?.collapsed?.() ?? null, ...ngDevMode ? [{ debugName: "collapsedPreference" }] : /* istanbul ignore next */ []);
103
+ dockbarModePreference = computed(() => this.typeConfig()?.dockbarMode?.() ?? null, ...ngDevMode ? [{ debugName: "dockbarModePreference" }] : /* istanbul ignore next */ []);
104
+ dockbarRouteContextPreference = computed(() => this.typeConfig()?.dockbarRouteContext?.() ?? null, ...ngDevMode ? [{ debugName: "dockbarRouteContextPreference" }] : /* istanbul ignore next */ []);
105
+ dockbarBadgeContext = computed(() => this.typeConfig()?.dockbarBadgeContext?.() ?? EMPTY_NAVIGATION_BADGE_CONTEXT$1, ...ngDevMode ? [{ debugName: "dockbarBadgeContext" }] : /* istanbul ignore next */ []);
106
+ dockbarRouteHeaderVisible = computed(() => this.typeConfig()?.dockbarRouteHeaderVisible?.() ?? false, ...ngDevMode ? [{ debugName: "dockbarRouteHeaderVisible" }] : /* istanbul ignore next */ []);
107
+ dockbarAsideFooter = computed(() => this.typeConfig()?.dockbarAsideFooter?.() ?? null, ...ngDevMode ? [{ debugName: "dockbarAsideFooter" }] : /* istanbul ignore next */ []);
108
+ sidebarCollapse = computed(() => this.typeConfig()?.sidebarCollapse?.() ?? false, ...ngDevMode ? [{ debugName: "sidebarCollapse" }] : /* istanbul ignore next */ []);
109
+ previewExpanded = computed(() => this.typeConfig()?.previewExpanded?.() ?? false, ...ngDevMode ? [{ debugName: "previewExpanded" }] : /* istanbul ignore next */ []);
110
+ typeStyle = computed(() => this.typeConfig()?.typeStyle?.() ?? "flat", ...ngDevMode ? [{ debugName: "typeStyle" }] : /* istanbul ignore next */ []);
111
+ flyoutLabel = computed(() => this.typeConfig()?.flyoutLabel?.() ?? "Menu", ...ngDevMode ? [{ debugName: "flyoutLabel" }] : /* istanbul ignore next */ []);
112
+ flyoutIcon = computed(() => this.typeConfig()?.flyoutIcon?.() ?? null, ...ngDevMode ? [{ debugName: "flyoutIcon" }] : /* istanbul ignore next */ []);
113
+ flyoutIconOnly = computed(() => this.typeConfig()?.flyoutIconOnly?.() ?? false, ...ngDevMode ? [{ debugName: "flyoutIconOnly" }] : /* istanbul ignore next */ []);
114
+ flyoutIconPosition = computed(() => this.typeConfig()?.flyoutIconPosition?.() ?? "start", ...ngDevMode ? [{ debugName: "flyoutIconPosition" }] : /* istanbul ignore next */ []);
115
+ flyoutTriggerVariant = computed(() => this.typeConfig()?.flyoutTriggerVariant?.() ?? "button", ...ngDevMode ? [{ debugName: "flyoutTriggerVariant" }] : /* istanbul ignore next */ []);
116
+ flyoutTriggerFloating = computed(() => this.typeConfig()?.flyoutTriggerFloating?.() ?? false, ...ngDevMode ? [{ debugName: "flyoutTriggerFloating" }] : /* istanbul ignore next */ []);
117
+ flyoutPanelViewport = computed(() => this.typeConfig()?.flyoutPanelViewport?.() ?? false, ...ngDevMode ? [{ debugName: "flyoutPanelViewport" }] : /* istanbul ignore next */ []);
118
+ flyoutTriggerClass = computed(() => this.typeConfig()?.flyoutTriggerClass?.() ?? "", ...ngDevMode ? [{ debugName: "flyoutTriggerClass" }] : /* istanbul ignore next */ []);
119
+ flyoutTriggerButtonClass = computed(() => this.typeConfig()?.flyoutTriggerButtonClass?.() ?? "", ...ngDevMode ? [{ debugName: "flyoutTriggerButtonClass" }] : /* istanbul ignore next */ []);
120
+ controller = injectNavigationController({
121
+ navId: this.navId,
122
+ data: this.data,
123
+ orientation: this.orientationPreference,
124
+ type: this.typePreference,
125
+ position: this.positionPreference,
126
+ collapsed: this.collapsedPreference,
127
+ dockbarMode: this.dockbarModePreference,
128
+ compact: this.compact,
129
+ activeIds: this.activeIds,
130
+ enabled: computed(() => this.typeConfig() !== null)
131
+ });
132
+ iconTemplate = contentChild(NavigationIconDirective$1, ...ngDevMode ? [{ debugName: "iconTemplate" }] : /* istanbul ignore next */ []);
133
+ normalizedItems = this.controller.normalizedItems;
134
+ resolvedState = this.controller.resolvedState;
135
+ activeIdSet = this.controller.activeIdSet;
136
+ dockbarRouteEnabled = computed(() => {
137
+ const context = this.dockbarRouteContextPreference();
138
+ return context !== null && context !== false;
139
+ }, ...ngDevMode ? [{ debugName: "dockbarRouteEnabled" }] : /* istanbul ignore next */ []);
140
+ dockbarResolvedRouteContext = computed(() => {
141
+ const automatic = this.routeContextAdapter.routeContext();
142
+ const config = this.dockbarRouteConfig();
143
+ return {
144
+ url: this.cleanString(config.url) ?? this.activeUrl() ?? automatic.url,
145
+ icon: config.icon === void 0 ? automatic.icon : this.cleanString(config.icon),
146
+ badge: config.badge === void 0 ? automatic.badge : this.cleanString(config.badge),
147
+ label: config.label === void 0 ? automatic.label : this.cleanString(config.label)
148
+ };
149
+ }, ...ngDevMode ? [{ debugName: "dockbarResolvedRouteContext" }] : /* istanbul ignore next */ []);
150
+ dockbarActiveRouteEntry = computed(() => {
151
+ if (!this.dockbarRouteEnabled()) return null;
152
+ const activeUrl = this.dockbarResolvedRouteContext().url;
153
+ return this.normalizedItems().find((entry) => this.routeContextAdapter.isItemRouteActive(entry, activeUrl, this.activatedRoute)) ?? null;
154
+ }, ...ngDevMode ? [{ debugName: "dockbarActiveRouteEntry" }] : /* istanbul ignore next */ []);
155
+ dockbarResolvedActiveIds = computed(() => this.dockbarRouteEnabled() ? EMPTY_NAVIGATION_ACTIVE_IDS : this.activeIdSet(), ...ngDevMode ? [{ debugName: "dockbarResolvedActiveIds" }] : /* istanbul ignore next */ []);
156
+ dockbarActiveRoutePanelGroup = computed(() => {
157
+ const entry = this.dockbarActiveRouteEntry();
158
+ return entry && entry.children.length > 0 ? entry : null;
159
+ }, ...ngDevMode ? [{ debugName: "dockbarActiveRoutePanelGroup" }] : /* istanbul ignore next */ []);
160
+ dockbarRouteHeader = computed(() => {
161
+ if (!this.dockbarRouteEnabled()) return null;
162
+ const activeEntry = this.dockbarActiveRouteEntry();
163
+ const route = this.dockbarResolvedRouteContext();
164
+ const fallbackIcon = this.cleanString(this.dockbarRouteConfig().fallbackIcon) ?? NAVIGATION_DOCKBAR_FALLBACK_ICON$1;
165
+ const icon = activeEntry ? this.cleanString(activeEntry.icon) ?? fallbackIcon : route.icon ?? fallbackIcon;
166
+ const label = this.cleanString(activeEntry?.title) ?? route.label ?? "Current navigation route";
167
+ const badgeKey = activeEntry?.badge?.source ?? route.badge;
168
+ const badge = badgeKey ? this.dockbarBadgeContext()[badgeKey] ?? null : null;
169
+ const item = activeEntry?.source ?? {
170
+ title: label,
171
+ icon
172
+ };
173
+ return {
174
+ activeEntry,
175
+ panelGroup: this.dockbarActiveRoutePanelGroup(),
176
+ icon,
177
+ label,
178
+ badge,
179
+ badgeClass: cn("absolute -right-1 -top-1", activeEntry?.badge?.classes),
180
+ iconContext: {
181
+ $implicit: icon,
182
+ icon,
183
+ item,
184
+ active: true,
185
+ orientation: "vertical",
186
+ level: 0
187
+ }
188
+ };
189
+ }, ...ngDevMode ? [{ debugName: "dockbarRouteHeader" }] : /* istanbul ignore next */ []);
190
+ dockbarRailItems = computed(() => {
191
+ const activeEntry = this.dockbarRouteHeaderVisible() ? this.dockbarActiveRouteEntry() : null;
192
+ if (activeEntry === null) return this.normalizedItems();
193
+ return this.normalizedItems().filter((entry) => entry.key !== activeEntry.key);
194
+ }, ...ngDevMode ? [{ debugName: "dockbarRailItems" }] : /* istanbul ignore next */ []);
195
+ minidockRailItems = computed(() => ɵcompactNavigationDividers(this.normalizedItems()), ...ngDevMode ? [{ debugName: "minidockRailItems" }] : /* istanbul ignore next */ []);
196
+ dockbarAsideId = computed(() => `nav-dockbar-${this.safeId(this.resolvedState().id)}`, ...ngDevMode ? [{ debugName: "dockbarAsideId" }] : /* istanbul ignore next */ []);
197
+ dockbarOpenGroup = computed(() => {
198
+ const state = this.resolvedState();
199
+ if (state.type !== "dockbar") return null;
200
+ if (!this.dockbarRouteEnabled()) return this.nav.resolveDockbarGroup(state.id, this.normalizedItems(), state.dockbarMode, this.activeIdSet(), this.activeUrl());
201
+ const groups = this.nav.dockbarGroups(this.normalizedItems());
202
+ const explicitKey = this.nav.currentPanelKey(state.id);
203
+ const explicitGroup = explicitKey === null ? null : groups.find((group) => group.key === explicitKey) ?? null;
204
+ if (explicitGroup !== null) return explicitGroup;
205
+ return state.dockbarMode === "sticky" ? this.dockbarActiveRoutePanelGroup() : null;
206
+ }, ...ngDevMode ? [{ debugName: "dockbarOpenGroup" }] : /* istanbul ignore next */ []);
207
+ dockbarActiveRoutePanelExpanded = computed(() => {
208
+ const panelGroup = this.dockbarActiveRoutePanelGroup();
209
+ const state = this.resolvedState();
210
+ if (panelGroup === null || state.type !== "dockbar") return false;
211
+ return this.dockbarOpenGroup()?.key === panelGroup.key;
212
+ }, ...ngDevMode ? [{ debugName: "dockbarActiveRoutePanelExpanded" }] : /* istanbul ignore next */ []);
213
+ previewRailExpanded = computed(() => {
214
+ const state = this.resolvedState();
215
+ if (state.orientation !== "vertical" || state.type !== "sidebar" || !state.collapsed) return false;
216
+ return this.previewExpanded() || this.sidebarCollapse() && (this.hoverPreviewExpanded() || this.focusPreviewExpanded());
217
+ }, ...ngDevMode ? [{ debugName: "previewRailExpanded" }] : /* istanbul ignore next */ []);
218
+ previewRailOffset = computed(() => this.previewRailExpanded() ? "calc(var(--layout-sidebar-width) - var(--layout-sidebar-collapsed-width))" : "0px", ...ngDevMode ? [{ debugName: "previewRailOffset" }] : /* istanbul ignore next */ []);
219
+ displayState = computed(() => {
220
+ const state = this.resolvedState();
221
+ if (state.type === "dockbar" || state.type === "minidock") return {
222
+ ...state,
223
+ collapsed: true
224
+ };
225
+ return this.previewRailExpanded() ? {
226
+ ...state,
227
+ collapsed: false
228
+ } : state;
229
+ }, ...ngDevMode ? [{ debugName: "displayState" }] : /* istanbul ignore next */ []);
230
+ dockbarAsideOpen = computed(() => {
231
+ const state = this.resolvedState();
232
+ if (state.type !== "dockbar" || state.dockbarMode !== "sticky") return false;
233
+ return this.dockbarOpenGroup() !== null;
234
+ }, ...ngDevMode ? [{ debugName: "dockbarAsideOpen" }] : /* istanbul ignore next */ []);
235
+ collapseEnabled = computed(() => {
236
+ const state = this.resolvedState();
237
+ return this.sidebarCollapse() && state.orientation === "vertical" && state.type === "sidebar";
238
+ }, ...ngDevMode ? [{ debugName: "collapseEnabled" }] : /* istanbul ignore next */ []);
239
+ shellClasses = computed(() => cn("flex h-full min-h-0 transition-[width,box-shadow,transform] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none", this.resolvedState().orientation === "horizontal" ? "flex-row items-stretch overflow-visible" : this.resolvedState().type === "dockbar" ? "flex-col overflow-visible" : "flex-col overflow-hidden", this.resolvedState().type === "dockbar" && ["w-(--layout-sidebar-collapsed-width) shrink-0", this.resolvedState().position === "right" && "ml-auto"], this.resolvedState().position === "right" ? "origin-right" : "origin-left", this.previewRailExpanded() && ["absolute inset-y-0 z-20 w-(--layout-sidebar-width) overflow-hidden bg-background shadow-xl", this.resolvedState().position === "right" ? "right-0 border-l border-border" : "left-0 border-r border-border"]), ...ngDevMode ? [{ debugName: "shellClasses" }] : /* istanbul ignore next */ []);
240
+ state = this.resolvedState;
241
+ resolvedDataId = computed(() => this.dataId()?.trim() || this.navId().trim() || "default", ...ngDevMode ? [{ debugName: "resolvedDataId" }] : /* istanbul ignore next */ []);
242
+ hostClasses = computed(() => cn("relative block min-h-0 text-foreground transition-[width] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none", this.resolvedState().orientation === "horizontal" ? "h-full w-full" : this.resolvedState().type === "dockbar" ? this.dockbarAsideOpen() ? "w-[calc(var(--layout-sidebar-collapsed-width)+var(--layout-aside-width))]" : "w-(--layout-sidebar-collapsed-width)" : this.resolvedState().type === "minidock" || this.resolvedState().collapsed ? "w-(--layout-sidebar-collapsed-width)" : "w-(--layout-sidebar-width)", this.resolvedState().orientation === "horizontal" || this.resolvedState().type === "dockbar" || this.previewRailExpanded() ? "overflow-visible" : "overflow-hidden", this.class()), ...ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []);
243
+ constructor() {
244
+ effect((onCleanup) => {
245
+ const dataId = this.resolvedDataId();
246
+ this.nav.publishData(dataId, this.data(), this.dataOwner);
247
+ onCleanup(() => this.nav.clearData(dataId, this.dataOwner));
248
+ });
249
+ }
250
+ registerType(config) {
251
+ if (this.typeConfig() !== null && isDevMode()) throw new Error("[Navigation] Hanya satu type (<NavigationSidebar>/<NavigationDockbar>/<NavigationMinidock>/<NavigationNavbar>/<NavigationFlyout>) yang boleh hidup dalam satu <Navigation>.");
252
+ this.typeConfig.set(config);
253
+ }
254
+ unregisterType(config) {
255
+ if (this.typeConfig() === config) this.typeConfig.set(null);
256
+ }
257
+ toggleCollapsed() {
258
+ this.controller.toggleCollapsed();
259
+ }
260
+ toggleDockbarActiveRoutePanel() {
261
+ const state = this.resolvedState();
262
+ const panelGroup = this.dockbarActiveRoutePanelGroup();
263
+ if (state.type === "dockbar" && state.dockbarMode === "drawer" && panelGroup !== null) this.nav.togglePanel(state.id, panelGroup);
264
+ }
265
+ closeDockbarPanel() {
266
+ const state = this.resolvedState();
267
+ if (state.type === "dockbar" && this.nav.currentPanelKey(state.id) !== null) {
268
+ this.nav.closePanel(state.id);
269
+ return true;
270
+ }
271
+ return false;
272
+ }
273
+ restoreDockbarRoutePanel() {
274
+ const state = this.resolvedState();
275
+ if (!this.dockbarRouteEnabled() || state.type !== "dockbar" || state.dockbarMode !== "sticky" || this.nav.currentPanelKey(state.id) === null) return;
276
+ this.nav.closePanel(state.id);
277
+ }
278
+ setHoverPreview(value) {
279
+ this.hoverPreviewExpanded.set(this.sidebarCollapse() ? value : false);
280
+ }
281
+ setFocusPreview(value, event) {
282
+ if (!this.sidebarCollapse()) {
283
+ this.focusPreviewExpanded.set(false);
284
+ return;
285
+ }
286
+ if (!value && event) {
287
+ const next = event.relatedTarget;
288
+ const host = event.currentTarget;
289
+ if (next instanceof Node && host instanceof Node && host.contains(next)) return;
290
+ }
291
+ this.focusPreviewExpanded.set(value);
292
+ }
293
+ dockbarRouteConfig() {
294
+ const context = this.dockbarRouteContextPreference();
295
+ return context !== null && typeof context === "object" ? context : {};
296
+ }
297
+ cleanString(value) {
298
+ return typeof value === "string" && value.trim() ? value.trim() : null;
299
+ }
300
+ safeId(value) {
301
+ return value.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, "-") || "default";
302
+ }
303
+ static ɵfac = i0.ɵɵngDeclareFactory({
304
+ minVersion: "12.0.0",
305
+ version: "22.2.2",
306
+ ngImport: i0,
307
+ type: NavigationContainerComponent,
308
+ deps: [],
309
+ target: i0.ɵɵFactoryTarget.Component
310
+ });
311
+ static ɵcmp = i0.ɵɵngDeclareComponent({
312
+ minVersion: "17.2.0",
313
+ version: "22.2.2",
314
+ type: NavigationContainerComponent,
315
+ isStandalone: true,
316
+ selector: "Navigation",
317
+ inputs: {
318
+ navId: {
319
+ classPropertyName: "navId",
320
+ publicName: "id",
321
+ isSignal: true,
322
+ isRequired: false,
323
+ transformFunction: null
324
+ },
325
+ dataId: {
326
+ classPropertyName: "dataId",
327
+ publicName: "data-id",
328
+ isSignal: true,
329
+ isRequired: false,
330
+ transformFunction: null
331
+ },
332
+ data: {
333
+ classPropertyName: "data",
334
+ publicName: "data",
335
+ isSignal: true,
336
+ isRequired: false,
337
+ transformFunction: null
338
+ },
339
+ ariaLabel: {
340
+ classPropertyName: "ariaLabel",
341
+ publicName: "ariaLabel",
342
+ isSignal: true,
343
+ isRequired: false,
344
+ transformFunction: null
345
+ },
346
+ compact: {
347
+ classPropertyName: "compact",
348
+ publicName: "compact",
349
+ isSignal: true,
350
+ isRequired: false,
351
+ transformFunction: null
352
+ },
353
+ collapseTree: {
354
+ classPropertyName: "collapseTree",
355
+ publicName: "collapse-tree",
356
+ isSignal: true,
357
+ isRequired: false,
358
+ transformFunction: null
359
+ },
360
+ class: {
361
+ classPropertyName: "class",
362
+ publicName: "class",
363
+ isSignal: true,
364
+ isRequired: false,
365
+ transformFunction: null
366
+ },
367
+ itemClass: {
368
+ classPropertyName: "itemClass",
369
+ publicName: "itemClass",
370
+ isSignal: true,
371
+ isRequired: false,
372
+ transformFunction: null
373
+ },
374
+ groupClass: {
375
+ classPropertyName: "groupClass",
376
+ publicName: "nav-group-class",
377
+ isSignal: true,
378
+ isRequired: false,
379
+ transformFunction: null
380
+ },
381
+ activeIds: {
382
+ classPropertyName: "activeIds",
383
+ publicName: "activeIds",
384
+ isSignal: true,
385
+ isRequired: false,
386
+ transformFunction: null
387
+ },
388
+ activeUrl: {
389
+ classPropertyName: "activeUrl",
390
+ publicName: "activeUrl",
391
+ isSignal: true,
392
+ isRequired: false,
393
+ transformFunction: null
394
+ },
395
+ openedIds: {
396
+ classPropertyName: "openedIds",
397
+ publicName: "openedIds",
398
+ isSignal: true,
399
+ isRequired: false,
400
+ transformFunction: null
401
+ }
402
+ },
403
+ outputs: {
404
+ openedIds: "openedIdsChange",
405
+ itemSelected: "itemSelected"
406
+ },
407
+ host: {
408
+ attributes: { "role": "navigation" },
409
+ listeners: {
410
+ "mouseenter": "setHoverPreview(true)",
411
+ "mouseleave": "setHoverPreview(false)",
412
+ "focusin": "setFocusPreview(true)",
413
+ "focusout": "setFocusPreview(false, $event)"
414
+ },
415
+ properties: {
416
+ "class": "hostClasses()",
417
+ "attr.aria-label": "ariaLabel() || null",
418
+ "attr.data-navigation-id": "resolvedState().id",
419
+ "attr.data-id": "resolvedDataId()",
420
+ "attr.data-orientation": "resolvedState().orientation",
421
+ "attr.data-type": "resolvedState().type",
422
+ "attr.data-type-style": "typeStyle()",
423
+ "attr.data-position": "resolvedState().position",
424
+ "attr.data-collapse-tree": "collapseTree()",
425
+ "attr.data-preview-expanded": "previewRailExpanded() ? \"true\" : null"
426
+ }
427
+ },
428
+ providers: [{
429
+ provide: NAVIGATION_SHELL,
430
+ useExisting: forwardRef(() => NavigationContainerComponent)
431
+ }],
432
+ queries: [{
433
+ propertyName: "iconTemplate",
434
+ first: true,
435
+ predicate: NavigationIconDirective$1,
436
+ descendants: true,
437
+ isSignal: true
438
+ }],
439
+ ngImport: i0,
440
+ template: ` <ng-content /> `,
441
+ isInline: true
442
+ });
443
+ };
444
+ i0.ɵɵngDeclareClassMetadata({
445
+ minVersion: "12.0.0",
446
+ version: "22.2.2",
447
+ ngImport: i0,
448
+ type: NavigationContainerComponent,
449
+ decorators: [{
450
+ type: Component,
451
+ args: [{
452
+ selector: "Navigation",
453
+ providers: [{
454
+ provide: NAVIGATION_SHELL,
455
+ useExisting: forwardRef(() => NavigationContainerComponent)
456
+ }],
457
+ host: {
458
+ "[class]": "hostClasses()",
459
+ role: "navigation",
460
+ "[attr.aria-label]": "ariaLabel() || null",
461
+ "[attr.data-navigation-id]": "resolvedState().id",
462
+ "[attr.data-id]": "resolvedDataId()",
463
+ "[attr.data-orientation]": "resolvedState().orientation",
464
+ "[attr.data-type]": "resolvedState().type",
465
+ "[attr.data-type-style]": "typeStyle()",
466
+ "[attr.data-position]": "resolvedState().position",
467
+ "[attr.data-collapse-tree]": "collapseTree()",
468
+ "[attr.data-preview-expanded]": "previewRailExpanded() ? \"true\" : null",
469
+ "(mouseenter)": "setHoverPreview(true)",
470
+ "(mouseleave)": "setHoverPreview(false)",
471
+ "(focusin)": "setFocusPreview(true)",
472
+ "(focusout)": "setFocusPreview(false, $event)"
473
+ },
474
+ template: ` <ng-content /> `
475
+ }]
476
+ }],
477
+ ctorParameters: () => [],
478
+ propDecorators: {
479
+ navId: [{
480
+ type: i0.Input,
481
+ args: [{
482
+ isSignal: true,
483
+ alias: "id",
484
+ required: false
485
+ }]
486
+ }],
487
+ dataId: [{
488
+ type: i0.Input,
489
+ args: [{
490
+ isSignal: true,
491
+ alias: "data-id",
492
+ required: false
493
+ }]
494
+ }],
495
+ data: [{
496
+ type: i0.Input,
497
+ args: [{
498
+ isSignal: true,
499
+ alias: "data",
500
+ required: false
501
+ }]
502
+ }],
503
+ ariaLabel: [{
504
+ type: i0.Input,
505
+ args: [{
506
+ isSignal: true,
507
+ alias: "ariaLabel",
508
+ required: false
509
+ }]
510
+ }],
511
+ compact: [{
512
+ type: i0.Input,
513
+ args: [{
514
+ isSignal: true,
515
+ alias: "compact",
516
+ required: false
517
+ }]
518
+ }],
519
+ collapseTree: [{
520
+ type: i0.Input,
521
+ args: [{
522
+ isSignal: true,
523
+ alias: "collapse-tree",
524
+ required: false
525
+ }]
526
+ }],
527
+ class: [{
528
+ type: i0.Input,
529
+ args: [{
530
+ isSignal: true,
531
+ alias: "class",
532
+ required: false
533
+ }]
534
+ }],
535
+ itemClass: [{
536
+ type: i0.Input,
537
+ args: [{
538
+ isSignal: true,
539
+ alias: "itemClass",
540
+ required: false
541
+ }]
542
+ }],
543
+ groupClass: [{
544
+ type: i0.Input,
545
+ args: [{
546
+ isSignal: true,
547
+ alias: "nav-group-class",
548
+ required: false
549
+ }]
550
+ }],
551
+ activeIds: [{
552
+ type: i0.Input,
553
+ args: [{
554
+ isSignal: true,
555
+ alias: "activeIds",
556
+ required: false
557
+ }]
558
+ }],
559
+ activeUrl: [{
560
+ type: i0.Input,
561
+ args: [{
562
+ isSignal: true,
563
+ alias: "activeUrl",
564
+ required: false
565
+ }]
566
+ }],
567
+ openedIds: [{
568
+ type: i0.Input,
569
+ args: [{
570
+ isSignal: true,
571
+ alias: "openedIds",
572
+ required: false
573
+ }]
574
+ }, {
575
+ type: i0.Output,
576
+ args: ["openedIdsChange"]
577
+ }],
578
+ itemSelected: [{
579
+ type: i0.Output,
580
+ args: ["itemSelected"]
581
+ }],
582
+ iconTemplate: [{
583
+ type: i0.ContentChild,
584
+ args: [i0.forwardRef(() => NavigationIconDirective$1), { isSignal: true }]
585
+ }]
586
+ }
587
+ });
588
+ var NavigationContentComponent = class NavigationContentComponent {
589
+ container = inject(NavigationContainerComponent);
590
+ class = input("", {
591
+ ...ngDevMode ? { debugName: "class" } : /* istanbul ignore next */ {},
592
+ alias: "class"
593
+ });
594
+ hostClasses = computed(() => cn("min-h-0 flex-1", this.container.displayState().orientation === "horizontal" ? "flex h-full min-w-0 items-stretch justify-center overflow-visible" : this.container.displayState().type === "minidock" ? "flex flex-col overflow-y-auto overflow-x-hidden py-2" : "block overflow-y-auto overflow-x-hidden py-2", this.class()), ...ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []);
595
+ static ɵfac = i0.ɵɵngDeclareFactory({
596
+ minVersion: "12.0.0",
597
+ version: "22.2.2",
598
+ ngImport: i0,
599
+ type: NavigationContentComponent,
600
+ deps: [],
601
+ target: i0.ɵɵFactoryTarget.Component
602
+ });
603
+ static ɵcmp = i0.ɵɵngDeclareComponent({
604
+ minVersion: "17.0.0",
605
+ version: "22.2.2",
606
+ type: NavigationContentComponent,
607
+ isStandalone: true,
608
+ selector: "NavigationContent",
609
+ inputs: { class: {
610
+ classPropertyName: "class",
611
+ publicName: "class",
612
+ isSignal: true,
613
+ isRequired: false,
614
+ transformFunction: null
615
+ } },
616
+ host: { properties: { "class": "hostClasses()" } },
617
+ ngImport: i0,
618
+ template: `
619
+ @let navState = container.displayState();
620
+
621
+ @if (navState.orientation === 'horizontal' && navState.type === 'flyout') {
622
+ <!-- Less-common renderers are code-split: a sidebar-only app never bundles them. -->
623
+ @defer (on immediate) {
624
+ <NavigationFlyoutMenu
625
+ [navId]="navState.id"
626
+ [items]="container.normalizedItems()"
627
+ [label]="container.flyoutLabel()"
628
+ [icon]="container.flyoutIcon()"
629
+ [iconOnly]="container.flyoutIconOnly()"
630
+ [iconPosition]="container.flyoutIconPosition()"
631
+ [variant]="container.flyoutTriggerVariant()"
632
+ [floating]="container.flyoutTriggerFloating()"
633
+ [viewport]="container.flyoutPanelViewport()"
634
+ [triggerClass]="container.flyoutTriggerClass()"
635
+ [triggerButtonClass]="container.flyoutTriggerButtonClass()"
636
+ [position]="navState.position"
637
+ [typeStyle]="container.typeStyle()"
638
+ [compact]="container.compact()"
639
+ [itemClass]="container.itemClass()"
640
+ [groupClass]="container.groupClass()"
641
+ [activeIds]="container.activeIdSet()"
642
+ [activeUrl]="container.activeUrl()"
643
+ [iconTemplate]="container.iconTemplate()"
644
+ [collapseTree]="container.collapseTree()"
645
+ [openedIds]="container.openedIds()"
646
+ (openedIdsChange)="container.openedIds.set($event)"
647
+ (itemSelected)="container.itemSelected.emit($event)"
648
+ >
649
+ <ng-content select="NavigationHeader" ngProjectAs="NavigationHeader" />
650
+ <ng-content select="NavigationFooter" ngProjectAs="NavigationFooter" />
651
+ </NavigationFlyoutMenu>
652
+ }
653
+ } @else if (navState.orientation === 'horizontal') {
654
+ @defer (on immediate) {
655
+ <NavigationHorizontal
656
+ [navId]="navState.id"
657
+ [items]="container.normalizedItems()"
658
+ [position]="navState.position"
659
+ [typeStyle]="container.typeStyle()"
660
+ [compact]="container.compact()"
661
+ [itemClass]="container.itemClass()"
662
+ [groupClass]="container.groupClass()"
663
+ [activeIds]="container.activeIdSet()"
664
+ [activeUrl]="container.activeUrl()"
665
+ [iconTemplate]="container.iconTemplate()"
666
+ [collapseTree]="container.collapseTree()"
667
+ [openedIds]="container.openedIds()"
668
+ (openedIdsChange)="container.openedIds.set($event)"
669
+ (itemSelected)="container.itemSelected.emit($event)"
670
+ />
671
+ }
672
+ } @else if (navState.type === 'dockbar') {
673
+ @defer (on immediate) {
674
+ <NavigationDockbarMenu
675
+ [navId]="navState.id"
676
+ [items]="container.normalizedItems()"
677
+ [railItems]="container.dockbarRailItems()"
678
+ [badgeContext]="container.dockbarBadgeContext()"
679
+ [mode]="navState.dockbarMode"
680
+ [position]="navState.position"
681
+ [asideFooterTemplate]="container.dockbarAsideFooter()"
682
+ [itemClass]="container.itemClass()"
683
+ [activeIds]="container.dockbarResolvedActiveIds()"
684
+ [resolvedGroup]="container.dockbarOpenGroup()"
685
+ [activeUrl]="
686
+ container.dockbarRouteEnabled()
687
+ ? container.dockbarResolvedRouteContext().url
688
+ : container.activeUrl()
689
+ "
690
+ [iconTemplate]="container.iconTemplate()"
691
+ [collapseTree]="container.collapseTree()"
692
+ [openedIds]="container.openedIds()"
693
+ (openedIdsChange)="container.openedIds.set($event)"
694
+ (itemSelected)="container.itemSelected.emit($event)"
695
+ />
696
+ }
697
+ } @else if (navState.type === 'minidock') {
698
+ <!-- Minidock: always compact, and the list fills the rail so a spacer can push items down. -->
699
+ <NavigationList
700
+ [navId]="navState.id"
701
+ [items]="container.minidockRailItems()"
702
+ [collapsed]="true"
703
+ [fill]="true"
704
+ [position]="navState.position"
705
+ [itemClass]="container.itemClass()"
706
+ [activeIds]="container.activeIdSet()"
707
+ [activeUrl]="container.activeUrl()"
708
+ [iconTemplate]="container.iconTemplate()"
709
+ [collapseTree]="container.collapseTree()"
710
+ [openedIds]="container.openedIds()"
711
+ (openedIdsChange)="container.openedIds.set($event)"
712
+ (itemSelected)="container.itemSelected.emit($event)"
713
+ />
714
+ } @else {
715
+ <!-- The vertical list (sidebar) is the common default — kept eager, no first-paint pop-in. -->
716
+ <NavigationList
717
+ [navId]="navState.id"
718
+ [items]="container.normalizedItems()"
719
+ [collapsed]="navState.collapsed"
720
+ [position]="navState.position"
721
+ [itemClass]="container.itemClass()"
722
+ [activeIds]="container.activeIdSet()"
723
+ [activeUrl]="container.activeUrl()"
724
+ [iconTemplate]="container.iconTemplate()"
725
+ [collapseTree]="container.collapseTree()"
726
+ [openedIds]="container.openedIds()"
727
+ (openedIdsChange)="container.openedIds.set($event)"
728
+ (itemSelected)="container.itemSelected.emit($event)"
729
+ />
730
+ }
731
+ `,
732
+ isInline: true,
733
+ dependencies: [{
734
+ kind: "component",
735
+ type: NavigationListComponent,
736
+ selector: "NavigationList",
737
+ inputs: [
738
+ "navId",
739
+ "items",
740
+ "collapsed",
741
+ "compact",
742
+ "fill",
743
+ "position",
744
+ "itemClass",
745
+ "activeIds",
746
+ "activeUrl",
747
+ "iconTemplate",
748
+ "collapseTree",
749
+ "openedIds"
750
+ ],
751
+ outputs: ["openedIdsChange", "itemSelected"]
752
+ }],
753
+ deferBlockDependencies: [
754
+ () => [import("./ojiepermana-angular-navigation-navigation-flyout-menu.component-D2vwEwBY.mjs").then((m) => m.NavigationFlyoutMenuComponent)],
755
+ () => [import("./ojiepermana-angular-navigation-navigation-horizontal.component-B5D7yXfb.mjs").then((m) => m.NavigationHorizontalComponent)],
756
+ () => [import("./ojiepermana-angular-navigation-navigation-dockbar-menu.component-COiTaw34.mjs").then((m) => m.NavigationDockbarMenuComponent)]
757
+ ]
758
+ });
759
+ };
760
+ i0.ɵɵngDeclareClassMetadataAsync({
761
+ minVersion: "18.0.0",
762
+ version: "22.2.2",
763
+ ngImport: i0,
764
+ type: NavigationContentComponent,
765
+ resolveDeferredDeps: () => [
766
+ import("./ojiepermana-angular-navigation-navigation-flyout-menu.component-D2vwEwBY.mjs").then((m) => m.NavigationFlyoutMenuComponent),
767
+ import("./ojiepermana-angular-navigation-navigation-horizontal.component-B5D7yXfb.mjs").then((m) => m.NavigationHorizontalComponent),
768
+ import("./ojiepermana-angular-navigation-navigation-dockbar-menu.component-COiTaw34.mjs").then((m) => m.NavigationDockbarMenuComponent)
769
+ ],
770
+ resolveMetadata: (NavigationFlyoutMenuComponent, NavigationHorizontalComponent, NavigationDockbarMenuComponent) => ({
771
+ decorators: [{
772
+ type: Component,
773
+ args: [{
774
+ selector: "NavigationContent",
775
+ imports: [
776
+ NavigationDockbarMenuComponent,
777
+ NavigationFlyoutMenuComponent,
778
+ NavigationHorizontalComponent,
779
+ NavigationListComponent
780
+ ],
781
+ host: { "[class]": "hostClasses()" },
782
+ template: `
783
+ @let navState = container.displayState();
784
+
785
+ @if (navState.orientation === 'horizontal' && navState.type === 'flyout') {
786
+ <!-- Less-common renderers are code-split: a sidebar-only app never bundles them. -->
787
+ @defer (on immediate) {
788
+ <NavigationFlyoutMenu
789
+ [navId]="navState.id"
790
+ [items]="container.normalizedItems()"
791
+ [label]="container.flyoutLabel()"
792
+ [icon]="container.flyoutIcon()"
793
+ [iconOnly]="container.flyoutIconOnly()"
794
+ [iconPosition]="container.flyoutIconPosition()"
795
+ [variant]="container.flyoutTriggerVariant()"
796
+ [floating]="container.flyoutTriggerFloating()"
797
+ [viewport]="container.flyoutPanelViewport()"
798
+ [triggerClass]="container.flyoutTriggerClass()"
799
+ [triggerButtonClass]="container.flyoutTriggerButtonClass()"
800
+ [position]="navState.position"
801
+ [typeStyle]="container.typeStyle()"
802
+ [compact]="container.compact()"
803
+ [itemClass]="container.itemClass()"
804
+ [groupClass]="container.groupClass()"
805
+ [activeIds]="container.activeIdSet()"
806
+ [activeUrl]="container.activeUrl()"
807
+ [iconTemplate]="container.iconTemplate()"
808
+ [collapseTree]="container.collapseTree()"
809
+ [openedIds]="container.openedIds()"
810
+ (openedIdsChange)="container.openedIds.set($event)"
811
+ (itemSelected)="container.itemSelected.emit($event)"
812
+ >
813
+ <ng-content select="NavigationHeader" ngProjectAs="NavigationHeader" />
814
+ <ng-content select="NavigationFooter" ngProjectAs="NavigationFooter" />
815
+ </NavigationFlyoutMenu>
816
+ }
817
+ } @else if (navState.orientation === 'horizontal') {
818
+ @defer (on immediate) {
819
+ <NavigationHorizontal
820
+ [navId]="navState.id"
821
+ [items]="container.normalizedItems()"
822
+ [position]="navState.position"
823
+ [typeStyle]="container.typeStyle()"
824
+ [compact]="container.compact()"
825
+ [itemClass]="container.itemClass()"
826
+ [groupClass]="container.groupClass()"
827
+ [activeIds]="container.activeIdSet()"
828
+ [activeUrl]="container.activeUrl()"
829
+ [iconTemplate]="container.iconTemplate()"
830
+ [collapseTree]="container.collapseTree()"
831
+ [openedIds]="container.openedIds()"
832
+ (openedIdsChange)="container.openedIds.set($event)"
833
+ (itemSelected)="container.itemSelected.emit($event)"
834
+ />
835
+ }
836
+ } @else if (navState.type === 'dockbar') {
837
+ @defer (on immediate) {
838
+ <NavigationDockbarMenu
839
+ [navId]="navState.id"
840
+ [items]="container.normalizedItems()"
841
+ [railItems]="container.dockbarRailItems()"
842
+ [badgeContext]="container.dockbarBadgeContext()"
843
+ [mode]="navState.dockbarMode"
844
+ [position]="navState.position"
845
+ [asideFooterTemplate]="container.dockbarAsideFooter()"
846
+ [itemClass]="container.itemClass()"
847
+ [activeIds]="container.dockbarResolvedActiveIds()"
848
+ [resolvedGroup]="container.dockbarOpenGroup()"
849
+ [activeUrl]="
850
+ container.dockbarRouteEnabled()
851
+ ? container.dockbarResolvedRouteContext().url
852
+ : container.activeUrl()
853
+ "
854
+ [iconTemplate]="container.iconTemplate()"
855
+ [collapseTree]="container.collapseTree()"
856
+ [openedIds]="container.openedIds()"
857
+ (openedIdsChange)="container.openedIds.set($event)"
858
+ (itemSelected)="container.itemSelected.emit($event)"
859
+ />
860
+ }
861
+ } @else if (navState.type === 'minidock') {
862
+ <!-- Minidock: always compact, and the list fills the rail so a spacer can push items down. -->
863
+ <NavigationList
864
+ [navId]="navState.id"
865
+ [items]="container.minidockRailItems()"
866
+ [collapsed]="true"
867
+ [fill]="true"
868
+ [position]="navState.position"
869
+ [itemClass]="container.itemClass()"
870
+ [activeIds]="container.activeIdSet()"
871
+ [activeUrl]="container.activeUrl()"
872
+ [iconTemplate]="container.iconTemplate()"
873
+ [collapseTree]="container.collapseTree()"
874
+ [openedIds]="container.openedIds()"
875
+ (openedIdsChange)="container.openedIds.set($event)"
876
+ (itemSelected)="container.itemSelected.emit($event)"
877
+ />
878
+ } @else {
879
+ <!-- The vertical list (sidebar) is the common default — kept eager, no first-paint pop-in. -->
880
+ <NavigationList
881
+ [navId]="navState.id"
882
+ [items]="container.normalizedItems()"
883
+ [collapsed]="navState.collapsed"
884
+ [position]="navState.position"
885
+ [itemClass]="container.itemClass()"
886
+ [activeIds]="container.activeIdSet()"
887
+ [activeUrl]="container.activeUrl()"
888
+ [iconTemplate]="container.iconTemplate()"
889
+ [collapseTree]="container.collapseTree()"
890
+ [openedIds]="container.openedIds()"
891
+ (openedIdsChange)="container.openedIds.set($event)"
892
+ (itemSelected)="container.itemSelected.emit($event)"
893
+ />
894
+ }
895
+ `
896
+ }]
897
+ }],
898
+ ctorParameters: null,
899
+ propDecorators: { class: [{
900
+ type: i0.Input,
901
+ args: [{
902
+ isSignal: true,
903
+ alias: "class",
904
+ required: false
905
+ }]
906
+ }] }
907
+ })
908
+ });
909
+ var NavigationFooterComponent = class NavigationFooterComponent {
910
+ shell = inject(NAVIGATION_SHELL, { optional: true });
911
+ class = input("", {
912
+ ...ngDevMode ? { debugName: "class" } : /* istanbul ignore next */ {},
913
+ alias: "class"
914
+ });
915
+ isHorizontal = computed(() => this.shell?.displayState().orientation === "horizontal", ...ngDevMode ? [{ debugName: "isHorizontal" }] : /* istanbul ignore next */ []);
916
+ displayCollapsed = computed(() => this.shell?.displayState().collapsed ?? false, ...ngDevMode ? [{ debugName: "displayCollapsed" }] : /* istanbul ignore next */ []);
917
+ rowClasses = computed(() => cn("flex h-full min-w-0 w-full items-center", !this.isHorizontal() && this.displayCollapsed() ? "justify-center" : "gap-3"), ...ngDevMode ? [{ debugName: "rowClasses" }] : /* istanbul ignore next */ []);
918
+ hostClasses = computed(() => cn(this.isHorizontal() ? "relative z-10 block h-full w-auto shrink-0" : "sticky bottom-0 z-10 block h-(--layout-topbar-height) shrink-0 border-t border-[hsl(var(--border)/var(--section-border-opacity))]", this.class()), ...ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []);
919
+ static ɵfac = i0.ɵɵngDeclareFactory({
920
+ minVersion: "12.0.0",
921
+ version: "22.2.2",
922
+ ngImport: i0,
923
+ type: NavigationFooterComponent,
924
+ deps: [],
925
+ target: i0.ɵɵFactoryTarget.Component
926
+ });
927
+ static ɵcmp = i0.ɵɵngDeclareComponent({
928
+ minVersion: "17.1.0",
929
+ version: "22.2.2",
930
+ type: NavigationFooterComponent,
931
+ isStandalone: true,
932
+ selector: "NavigationFooter",
933
+ inputs: { class: {
934
+ classPropertyName: "class",
935
+ publicName: "class",
936
+ isSignal: true,
937
+ isRequired: false,
938
+ transformFunction: null
939
+ } },
940
+ host: { properties: {
941
+ "class": "hostClasses()",
942
+ "attr.data-collapsed": "displayCollapsed()"
943
+ } },
944
+ ngImport: i0,
945
+ template: `
946
+ <div [class]="rowClasses()">
947
+ <ng-content />
948
+ </div>
949
+ `,
950
+ isInline: true
951
+ });
952
+ };
953
+ i0.ɵɵngDeclareClassMetadata({
954
+ minVersion: "12.0.0",
955
+ version: "22.2.2",
956
+ ngImport: i0,
957
+ type: NavigationFooterComponent,
958
+ decorators: [{
959
+ type: Component,
960
+ args: [{
961
+ selector: "NavigationFooter",
962
+ host: {
963
+ "[class]": "hostClasses()",
964
+ "[attr.data-collapsed]": "displayCollapsed()"
965
+ },
966
+ template: `
967
+ <div [class]="rowClasses()">
968
+ <ng-content />
969
+ </div>
970
+ `
971
+ }]
972
+ }],
973
+ propDecorators: { class: [{
974
+ type: i0.Input,
975
+ args: [{
976
+ isSignal: true,
977
+ alias: "class",
978
+ required: false
979
+ }]
980
+ }] }
981
+ });
982
+ var NavigationHeaderComponent = class NavigationHeaderComponent {
983
+ shell = inject(NAVIGATION_SHELL);
984
+ toggle = input(false, ...ngDevMode ? [{ debugName: "toggle" }] : /* istanbul ignore next */ []);
985
+ class = input("", {
986
+ ...ngDevMode ? { debugName: "class" } : /* istanbul ignore next */ {},
987
+ alias: "class"
988
+ });
989
+ collapsed = computed(() => this.shell.state().collapsed, ...ngDevMode ? [{ debugName: "collapsed" }] : /* istanbul ignore next */ []);
990
+ displayCollapsed = computed(() => this.shell.displayState().collapsed, ...ngDevMode ? [{ debugName: "displayCollapsed" }] : /* istanbul ignore next */ []);
991
+ isHorizontal = computed(() => this.shell.displayState().orientation === "horizontal", ...ngDevMode ? [{ debugName: "isHorizontal" }] : /* istanbul ignore next */ []);
992
+ showToggle = computed(() => {
993
+ if (this.isHorizontal() || this.shell.state().type === "minidock") return false;
994
+ return this.toggle() || this.shell.collapseEnabled();
995
+ }, ...ngDevMode ? [{ debugName: "showToggle" }] : /* istanbul ignore next */ []);
996
+ toggleAriaLabel = computed(() => this.collapsed() ? "Expand navigation" : "Collapse navigation", ...ngDevMode ? [{ debugName: "toggleAriaLabel" }] : /* istanbul ignore next */ []);
997
+ toggleIconName = computed(() => this.collapsed() ? "left_panel_open" : "left_panel_close", ...ngDevMode ? [{ debugName: "toggleIconName" }] : /* istanbul ignore next */ []);
998
+ rowClasses = computed(() => cn("flex h-full items-center", !this.isHorizontal() && this.displayCollapsed() ? "justify-center" : "gap-3 px-3"), ...ngDevMode ? [{ debugName: "rowClasses" }] : /* istanbul ignore next */ []);
999
+ contentClasses = computed(() => {
1000
+ if (this.isHorizontal()) return "flex min-w-0 items-center gap-3";
1001
+ return this.displayCollapsed() ? "flex min-w-0 items-center justify-center" : "flex min-w-0 flex-1 items-center gap-3";
1002
+ }, ...ngDevMode ? [{ debugName: "contentClasses" }] : /* istanbul ignore next */ []);
1003
+ hostClasses = computed(() => cn(this.isHorizontal() ? "relative z-10 block h-full w-auto shrink-0" : "sticky top-0 z-10 block h-(--layout-topbar-height) shrink-0 border-b border-[hsl(var(--border)/var(--section-border-opacity))]", this.class()), ...ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []);
1004
+ toggleCollapsed() {
1005
+ this.shell.toggleCollapsed();
1006
+ }
1007
+ static ɵfac = i0.ɵɵngDeclareFactory({
1008
+ minVersion: "12.0.0",
1009
+ version: "22.2.2",
1010
+ ngImport: i0,
1011
+ type: NavigationHeaderComponent,
1012
+ deps: [],
1013
+ target: i0.ɵɵFactoryTarget.Component
1014
+ });
1015
+ static ɵcmp = i0.ɵɵngDeclareComponent({
1016
+ minVersion: "17.0.0",
1017
+ version: "22.2.2",
1018
+ type: NavigationHeaderComponent,
1019
+ isStandalone: true,
1020
+ selector: "NavigationHeader",
1021
+ inputs: {
1022
+ toggle: {
1023
+ classPropertyName: "toggle",
1024
+ publicName: "toggle",
1025
+ isSignal: true,
1026
+ isRequired: false,
1027
+ transformFunction: null
1028
+ },
1029
+ class: {
1030
+ classPropertyName: "class",
1031
+ publicName: "class",
1032
+ isSignal: true,
1033
+ isRequired: false,
1034
+ transformFunction: null
1035
+ }
1036
+ },
1037
+ host: { properties: {
1038
+ "class": "hostClasses()",
1039
+ "attr.data-collapsed": "displayCollapsed()"
1040
+ } },
1041
+ ngImport: i0,
1042
+ template: `
1043
+ <div [class]="rowClasses()">
1044
+ <div [class]="contentClasses()">
1045
+ <ng-content />
1046
+ </div>
1047
+
1048
+ @if (showToggle()) {
1049
+ <button
1050
+ type="button"
1051
+ class="inline-flex size-8 shrink-0 items-center justify-center bg-transparent text-foreground/80 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
1052
+ [attr.aria-label]="toggleAriaLabel()"
1053
+ [attr.title]="toggleAriaLabel()"
1054
+ data-navigation-header-toggle="true"
1055
+ (click)="toggleCollapsed()"
1056
+ >
1057
+ <Icon
1058
+ data-navigation-header-toggle-icon="true"
1059
+ [name]="toggleIconName()"
1060
+ size="inherit"
1061
+ class="text-(length:--nav-icon-size)"
1062
+ />
1063
+ </button>
1064
+ }
1065
+ </div>
1066
+ `,
1067
+ isInline: true,
1068
+ dependencies: [{
1069
+ kind: "component",
1070
+ type: IconComponent,
1071
+ selector: "Icon",
1072
+ inputs: [
1073
+ "name",
1074
+ "class",
1075
+ "size",
1076
+ "fill",
1077
+ "weight",
1078
+ "grade",
1079
+ "opticalSize"
1080
+ ]
1081
+ }]
1082
+ });
1083
+ };
1084
+ i0.ɵɵngDeclareClassMetadata({
1085
+ minVersion: "12.0.0",
1086
+ version: "22.2.2",
1087
+ ngImport: i0,
1088
+ type: NavigationHeaderComponent,
1089
+ decorators: [{
1090
+ type: Component,
1091
+ args: [{
1092
+ selector: "NavigationHeader",
1093
+ imports: [IconComponent],
1094
+ host: {
1095
+ "[class]": "hostClasses()",
1096
+ "[attr.data-collapsed]": "displayCollapsed()"
1097
+ },
1098
+ template: `
1099
+ <div [class]="rowClasses()">
1100
+ <div [class]="contentClasses()">
1101
+ <ng-content />
1102
+ </div>
1103
+
1104
+ @if (showToggle()) {
1105
+ <button
1106
+ type="button"
1107
+ class="inline-flex size-8 shrink-0 items-center justify-center bg-transparent text-foreground/80 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
1108
+ [attr.aria-label]="toggleAriaLabel()"
1109
+ [attr.title]="toggleAriaLabel()"
1110
+ data-navigation-header-toggle="true"
1111
+ (click)="toggleCollapsed()"
1112
+ >
1113
+ <Icon
1114
+ data-navigation-header-toggle-icon="true"
1115
+ [name]="toggleIconName()"
1116
+ size="inherit"
1117
+ class="text-(length:--nav-icon-size)"
1118
+ />
1119
+ </button>
1120
+ }
1121
+ </div>
1122
+ `
1123
+ }]
1124
+ }],
1125
+ propDecorators: {
1126
+ toggle: [{
1127
+ type: i0.Input,
1128
+ args: [{
1129
+ isSignal: true,
1130
+ alias: "toggle",
1131
+ required: false
1132
+ }]
1133
+ }],
1134
+ class: [{
1135
+ type: i0.Input,
1136
+ args: [{
1137
+ isSignal: true,
1138
+ alias: "class",
1139
+ required: false
1140
+ }]
1141
+ }]
1142
+ }
1143
+ });
1144
+ var NavigationSidebarComponent = class NavigationSidebarComponent {
1145
+ container = inject(NavigationContainerComponent);
1146
+ destroyRef = inject(DestroyRef);
1147
+ position = input(null, ...ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []);
1148
+ collapsed = input(null, ...ngDevMode ? [{ debugName: "collapsed" }] : /* istanbul ignore next */ []);
1149
+ collapse = input(false, {
1150
+ ...ngDevMode ? { debugName: "collapse" } : /* istanbul ignore next */ {},
1151
+ alias: "nav-sidebar-collapse",
1152
+ transform: booleanAttribute
1153
+ });
1154
+ previewExpanded = input(false, ...ngDevMode ? [{ debugName: "previewExpanded" }] : /* istanbul ignore next */ []);
1155
+ class = input("", {
1156
+ ...ngDevMode ? { debugName: "class" } : /* istanbul ignore next */ {},
1157
+ alias: "class"
1158
+ });
1159
+ headerSlot = contentChild(NavigationHeaderComponent, ...ngDevMode ? [{ debugName: "headerSlot" }] : /* istanbul ignore next */ []);
1160
+ contentSlot = contentChild(NavigationContentComponent, ...ngDevMode ? [{ debugName: "contentSlot" }] : /* istanbul ignore next */ []);
1161
+ footerSlot = contentChild(NavigationFooterComponent, ...ngDevMode ? [{ debugName: "footerSlot" }] : /* istanbul ignore next */ []);
1162
+ hostClasses = computed(() => cn(this.container.shellClasses(), this.class()), ...ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []);
1163
+ constructor() {
1164
+ const config = {
1165
+ orientation: "vertical",
1166
+ type: "sidebar",
1167
+ position: this.position,
1168
+ collapsed: this.collapsed,
1169
+ sidebarCollapse: this.collapse,
1170
+ previewExpanded: this.previewExpanded
1171
+ };
1172
+ this.container.registerType(config);
1173
+ this.destroyRef.onDestroy(() => this.container.unregisterType(config));
1174
+ }
1175
+ static ɵfac = i0.ɵɵngDeclareFactory({
1176
+ minVersion: "12.0.0",
1177
+ version: "22.2.2",
1178
+ ngImport: i0,
1179
+ type: NavigationSidebarComponent,
1180
+ deps: [],
1181
+ target: i0.ɵɵFactoryTarget.Component
1182
+ });
1183
+ static ɵcmp = i0.ɵɵngDeclareComponent({
1184
+ minVersion: "17.0.0",
1185
+ version: "22.2.2",
1186
+ type: NavigationSidebarComponent,
1187
+ isStandalone: true,
1188
+ selector: "NavigationSidebar",
1189
+ inputs: {
1190
+ position: {
1191
+ classPropertyName: "position",
1192
+ publicName: "position",
1193
+ isSignal: true,
1194
+ isRequired: false,
1195
+ transformFunction: null
1196
+ },
1197
+ collapsed: {
1198
+ classPropertyName: "collapsed",
1199
+ publicName: "collapsed",
1200
+ isSignal: true,
1201
+ isRequired: false,
1202
+ transformFunction: null
1203
+ },
1204
+ collapse: {
1205
+ classPropertyName: "collapse",
1206
+ publicName: "nav-sidebar-collapse",
1207
+ isSignal: true,
1208
+ isRequired: false,
1209
+ transformFunction: null
1210
+ },
1211
+ previewExpanded: {
1212
+ classPropertyName: "previewExpanded",
1213
+ publicName: "previewExpanded",
1214
+ isSignal: true,
1215
+ isRequired: false,
1216
+ transformFunction: null
1217
+ },
1218
+ class: {
1219
+ classPropertyName: "class",
1220
+ publicName: "class",
1221
+ isSignal: true,
1222
+ isRequired: false,
1223
+ transformFunction: null
1224
+ }
1225
+ },
1226
+ host: { properties: { "class": "hostClasses()" } },
1227
+ queries: [
1228
+ {
1229
+ propertyName: "headerSlot",
1230
+ first: true,
1231
+ predicate: NavigationHeaderComponent,
1232
+ descendants: true,
1233
+ isSignal: true
1234
+ },
1235
+ {
1236
+ propertyName: "contentSlot",
1237
+ first: true,
1238
+ predicate: NavigationContentComponent,
1239
+ descendants: true,
1240
+ isSignal: true
1241
+ },
1242
+ {
1243
+ propertyName: "footerSlot",
1244
+ first: true,
1245
+ predicate: NavigationFooterComponent,
1246
+ descendants: true,
1247
+ isSignal: true
1248
+ }
1249
+ ],
1250
+ ngImport: i0,
1251
+ template: `
1252
+ @if (headerSlot()) {
1253
+ <ng-content select="NavigationHeader" />
1254
+ }
1255
+
1256
+ @if (contentSlot()) {
1257
+ <ng-content select="NavigationContent" />
1258
+ } @else {
1259
+ <NavigationContent />
1260
+ }
1261
+
1262
+ @if (footerSlot()) {
1263
+ <ng-content select="NavigationFooter" />
1264
+ }
1265
+ `,
1266
+ isInline: true,
1267
+ dependencies: [{
1268
+ kind: "component",
1269
+ type: NavigationContentComponent,
1270
+ selector: "NavigationContent",
1271
+ inputs: ["class"]
1272
+ }]
1273
+ });
1274
+ };
1275
+ i0.ɵɵngDeclareClassMetadata({
1276
+ minVersion: "12.0.0",
1277
+ version: "22.2.2",
1278
+ ngImport: i0,
1279
+ type: NavigationSidebarComponent,
1280
+ decorators: [{
1281
+ type: Component,
1282
+ args: [{
1283
+ selector: "NavigationSidebar",
1284
+ imports: [NavigationContentComponent],
1285
+ host: { "[class]": "hostClasses()" },
1286
+ template: `
1287
+ @if (headerSlot()) {
1288
+ <ng-content select="NavigationHeader" />
1289
+ }
1290
+
1291
+ @if (contentSlot()) {
1292
+ <ng-content select="NavigationContent" />
1293
+ } @else {
1294
+ <NavigationContent />
1295
+ }
1296
+
1297
+ @if (footerSlot()) {
1298
+ <ng-content select="NavigationFooter" />
1299
+ }
1300
+ `
1301
+ }]
1302
+ }],
1303
+ ctorParameters: () => [],
1304
+ propDecorators: {
1305
+ position: [{
1306
+ type: i0.Input,
1307
+ args: [{
1308
+ isSignal: true,
1309
+ alias: "position",
1310
+ required: false
1311
+ }]
1312
+ }],
1313
+ collapsed: [{
1314
+ type: i0.Input,
1315
+ args: [{
1316
+ isSignal: true,
1317
+ alias: "collapsed",
1318
+ required: false
1319
+ }]
1320
+ }],
1321
+ collapse: [{
1322
+ type: i0.Input,
1323
+ args: [{
1324
+ isSignal: true,
1325
+ alias: "nav-sidebar-collapse",
1326
+ required: false
1327
+ }]
1328
+ }],
1329
+ previewExpanded: [{
1330
+ type: i0.Input,
1331
+ args: [{
1332
+ isSignal: true,
1333
+ alias: "previewExpanded",
1334
+ required: false
1335
+ }]
1336
+ }],
1337
+ class: [{
1338
+ type: i0.Input,
1339
+ args: [{
1340
+ isSignal: true,
1341
+ alias: "class",
1342
+ required: false
1343
+ }]
1344
+ }],
1345
+ headerSlot: [{
1346
+ type: i0.ContentChild,
1347
+ args: [i0.forwardRef(() => NavigationHeaderComponent), { isSignal: true }]
1348
+ }],
1349
+ contentSlot: [{
1350
+ type: i0.ContentChild,
1351
+ args: [i0.forwardRef(() => NavigationContentComponent), { isSignal: true }]
1352
+ }],
1353
+ footerSlot: [{
1354
+ type: i0.ContentChild,
1355
+ args: [i0.forwardRef(() => NavigationFooterComponent), { isSignal: true }]
1356
+ }]
1357
+ }
1358
+ });
1359
+ var NavigationAsideFooterDirective = class NavigationAsideFooterDirective {
1360
+ templateRef = inject(TemplateRef);
1361
+ static ɵfac = i0.ɵɵngDeclareFactory({
1362
+ minVersion: "12.0.0",
1363
+ version: "22.2.2",
1364
+ ngImport: i0,
1365
+ type: NavigationAsideFooterDirective,
1366
+ deps: [],
1367
+ target: i0.ɵɵFactoryTarget.Directive
1368
+ });
1369
+ static ɵdir = i0.ɵɵngDeclareDirective({
1370
+ minVersion: "14.0.0",
1371
+ version: "22.2.2",
1372
+ type: NavigationAsideFooterDirective,
1373
+ isStandalone: true,
1374
+ selector: "ng-template[NavigationAsideFooter]",
1375
+ ngImport: i0
1376
+ });
1377
+ };
1378
+ i0.ɵɵngDeclareClassMetadata({
1379
+ minVersion: "12.0.0",
1380
+ version: "22.2.2",
1381
+ ngImport: i0,
1382
+ type: NavigationAsideFooterDirective,
1383
+ decorators: [{
1384
+ type: Directive,
1385
+ args: [{ selector: "ng-template[NavigationAsideFooter]" }]
1386
+ }]
1387
+ });
1388
+ const EMPTY_NAVIGATION_BADGE_CONTEXT = Object.freeze({});
1389
+ var NavigationDockbarComponent = class NavigationDockbarComponent {
1390
+ container = inject(NavigationContainerComponent);
1391
+ destroyRef = inject(DestroyRef);
1392
+ host = inject(ElementRef);
1393
+ injector = inject(Injector);
1394
+ mode = input(null, ...ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []);
1395
+ position = input(null, ...ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []);
1396
+ routeContext = input(null, {
1397
+ ...ngDevMode ? { debugName: "routeContext" } : /* istanbul ignore next */ {},
1398
+ alias: "dockbar-route-context"
1399
+ });
1400
+ badgeContext = input(EMPTY_NAVIGATION_BADGE_CONTEXT, {
1401
+ ...ngDevMode ? { debugName: "badgeContext" } : /* istanbul ignore next */ {},
1402
+ alias: "dockbar-badge"
1403
+ });
1404
+ class = input("", {
1405
+ ...ngDevMode ? { debugName: "class" } : /* istanbul ignore next */ {},
1406
+ alias: "class"
1407
+ });
1408
+ headerSlot = contentChild(NavigationHeaderComponent, ...ngDevMode ? [{ debugName: "headerSlot" }] : /* istanbul ignore next */ []);
1409
+ contentSlot = contentChild(NavigationContentComponent, ...ngDevMode ? [{ debugName: "contentSlot" }] : /* istanbul ignore next */ []);
1410
+ footerSlot = contentChild(NavigationFooterComponent, ...ngDevMode ? [{ debugName: "footerSlot" }] : /* istanbul ignore next */ []);
1411
+ asideFooterSlot = contentChild(NavigationAsideFooterDirective, ...ngDevMode ? [{ debugName: "asideFooterSlot" }] : /* istanbul ignore next */ []);
1412
+ routeContextEnabled = computed(() => {
1413
+ const context = this.routeContext();
1414
+ return context !== null && context !== false;
1415
+ }, ...ngDevMode ? [{ debugName: "routeContextEnabled" }] : /* istanbul ignore next */ []);
1416
+ hostClasses = computed(() => cn(this.container.shellClasses(), this.class()), ...ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []);
1417
+ constructor() {
1418
+ const config = {
1419
+ orientation: "vertical",
1420
+ type: "dockbar",
1421
+ position: this.position,
1422
+ dockbarMode: this.mode,
1423
+ dockbarRouteContext: this.routeContext,
1424
+ dockbarBadgeContext: this.badgeContext,
1425
+ dockbarRouteHeaderVisible: computed(() => this.routeContextEnabled() && this.headerSlot() === void 0),
1426
+ dockbarAsideFooter: computed(() => this.asideFooterSlot()?.templateRef ?? null)
1427
+ };
1428
+ this.container.registerType(config);
1429
+ this.destroyRef.onDestroy(() => this.container.unregisterType(config));
1430
+ }
1431
+ onPointerOut(event) {
1432
+ const relatedTarget = event.relatedTarget;
1433
+ const nodeType = this.host.nativeElement.ownerDocument.defaultView?.Node;
1434
+ if (relatedTarget !== null && nodeType !== void 0 && relatedTarget instanceof nodeType && this.host.nativeElement.contains(relatedTarget)) return;
1435
+ this.container.restoreDockbarRoutePanel();
1436
+ }
1437
+ onEscape(event) {
1438
+ const state = this.container.resolvedState();
1439
+ if (event.defaultPrevented || state.type !== "dockbar" || state.dockbarMode !== "drawer") return;
1440
+ if (!this.container.closeDockbarPanel()) return;
1441
+ event.preventDefault();
1442
+ this.host.nativeElement.querySelector("[data-navigation-dockbar-route-trigger=\"true\"]")?.focus();
1443
+ }
1444
+ toggleActiveRoutePanel() {
1445
+ const wasExpanded = this.container.dockbarActiveRoutePanelExpanded();
1446
+ this.container.toggleDockbarActiveRoutePanel();
1447
+ if (!wasExpanded) afterNextRender({ read: () => {
1448
+ this.host.nativeElement.querySelector(`#${this.container.dockbarAsideId()}`)?.querySelector("a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])")?.focus();
1449
+ } }, { injector: this.injector });
1450
+ }
1451
+ static ɵfac = i0.ɵɵngDeclareFactory({
1452
+ minVersion: "12.0.0",
1453
+ version: "22.2.2",
1454
+ ngImport: i0,
1455
+ type: NavigationDockbarComponent,
1456
+ deps: [],
1457
+ target: i0.ɵɵFactoryTarget.Component
1458
+ });
1459
+ static ɵcmp = i0.ɵɵngDeclareComponent({
1460
+ minVersion: "17.0.0",
1461
+ version: "22.2.2",
1462
+ type: NavigationDockbarComponent,
1463
+ isStandalone: true,
1464
+ selector: "NavigationDockbar",
1465
+ inputs: {
1466
+ mode: {
1467
+ classPropertyName: "mode",
1468
+ publicName: "mode",
1469
+ isSignal: true,
1470
+ isRequired: false,
1471
+ transformFunction: null
1472
+ },
1473
+ position: {
1474
+ classPropertyName: "position",
1475
+ publicName: "position",
1476
+ isSignal: true,
1477
+ isRequired: false,
1478
+ transformFunction: null
1479
+ },
1480
+ routeContext: {
1481
+ classPropertyName: "routeContext",
1482
+ publicName: "dockbar-route-context",
1483
+ isSignal: true,
1484
+ isRequired: false,
1485
+ transformFunction: null
1486
+ },
1487
+ badgeContext: {
1488
+ classPropertyName: "badgeContext",
1489
+ publicName: "dockbar-badge",
1490
+ isSignal: true,
1491
+ isRequired: false,
1492
+ transformFunction: null
1493
+ },
1494
+ class: {
1495
+ classPropertyName: "class",
1496
+ publicName: "class",
1497
+ isSignal: true,
1498
+ isRequired: false,
1499
+ transformFunction: null
1500
+ }
1501
+ },
1502
+ host: {
1503
+ listeners: {
1504
+ "keydown.escape": "onEscape($event)",
1505
+ "pointerout": "onPointerOut($event)"
1506
+ },
1507
+ properties: { "class": "hostClasses()" }
1508
+ },
1509
+ queries: [
1510
+ {
1511
+ propertyName: "headerSlot",
1512
+ first: true,
1513
+ predicate: NavigationHeaderComponent,
1514
+ descendants: true,
1515
+ isSignal: true
1516
+ },
1517
+ {
1518
+ propertyName: "contentSlot",
1519
+ first: true,
1520
+ predicate: NavigationContentComponent,
1521
+ descendants: true,
1522
+ isSignal: true
1523
+ },
1524
+ {
1525
+ propertyName: "footerSlot",
1526
+ first: true,
1527
+ predicate: NavigationFooterComponent,
1528
+ descendants: true,
1529
+ isSignal: true
1530
+ },
1531
+ {
1532
+ propertyName: "asideFooterSlot",
1533
+ first: true,
1534
+ predicate: NavigationAsideFooterDirective,
1535
+ descendants: true,
1536
+ isSignal: true
1537
+ }
1538
+ ],
1539
+ ngImport: i0,
1540
+ template: `
1541
+ @if (headerSlot()) {
1542
+ <ng-content select="NavigationHeader" />
1543
+ } @else if (container.dockbarRouteHeader(); as routeHeader) {
1544
+ <NavigationHeader>
1545
+ <ng-template #routeIndicator>
1546
+ <span
1547
+ aria-hidden="true"
1548
+ class="inline-flex items-center justify-center text-(length:--nav-icon-size-rail) text-current"
1549
+ >
1550
+ @if (container.iconTemplate(); as customIcon) {
1551
+ <ng-container
1552
+ [ngTemplateOutlet]="customIcon.template"
1553
+ [ngTemplateOutletContext]="routeHeader.iconContext"
1554
+ />
1555
+ } @else {
1556
+ <Icon [name]="routeHeader.icon" size="inherit" [fill]="1" />
1557
+ }
1558
+ </span>
1559
+
1560
+ @if (routeHeader.badge; as badge) {
1561
+ @defer (on immediate) {
1562
+ <NavigationBadgeCount [badge]="badge" [class]="routeHeader.badgeClass" />
1563
+ }
1564
+ }
1565
+ </ng-template>
1566
+
1567
+ @if (routeHeader.panelGroup && container.resolvedState().dockbarMode === 'drawer') {
1568
+ <button
1569
+ type="button"
1570
+ data-navigation-dockbar-route-header="true"
1571
+ data-navigation-dockbar-route-trigger="true"
1572
+ [attr.data-navigation-item-key]="routeHeader.activeEntry?.key"
1573
+ class="relative inline-flex size-(--nav-rail-item-size) items-center justify-center rounded-md bg-accent text-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
1574
+ [Tooltip]="routeHeader.label"
1575
+ [TooltipPosition]="position() === 'right' ? 'left' : 'right'"
1576
+ [attr.aria-controls]="container.dockbarAsideId()"
1577
+ [attr.aria-expanded]="container.dockbarActiveRoutePanelExpanded()"
1578
+ (click)="toggleActiveRoutePanel()"
1579
+ >
1580
+ <span class="sr-only">{{ routeHeader.label }}</span>
1581
+ <ng-container [ngTemplateOutlet]="routeIndicator" />
1582
+ </button>
1583
+ } @else {
1584
+ <span
1585
+ data-navigation-dockbar-route-header="true"
1586
+ class="relative inline-flex size-(--nav-rail-item-size) items-center justify-center text-foreground"
1587
+ [Tooltip]="routeHeader.label"
1588
+ [TooltipPosition]="position() === 'right' ? 'left' : 'right'"
1589
+ >
1590
+ <span class="sr-only">{{ routeHeader.label }}</span>
1591
+ <ng-container [ngTemplateOutlet]="routeIndicator" />
1592
+ </span>
1593
+ }
1594
+ </NavigationHeader>
1595
+ }
1596
+
1597
+ @if (contentSlot()) {
1598
+ <ng-content select="NavigationContent" />
1599
+ } @else {
1600
+ <NavigationContent />
1601
+ }
1602
+
1603
+ @if (footerSlot()) {
1604
+ <ng-content select="NavigationFooter" />
1605
+ }
1606
+ `,
1607
+ isInline: true,
1608
+ dependencies: [
1609
+ {
1610
+ kind: "component",
1611
+ type: IconComponent,
1612
+ selector: "Icon",
1613
+ inputs: [
1614
+ "name",
1615
+ "class",
1616
+ "size",
1617
+ "fill",
1618
+ "weight",
1619
+ "grade",
1620
+ "opticalSize"
1621
+ ]
1622
+ },
1623
+ {
1624
+ kind: "component",
1625
+ type: NavigationContentComponent,
1626
+ selector: "NavigationContent",
1627
+ inputs: ["class"]
1628
+ },
1629
+ {
1630
+ kind: "component",
1631
+ type: NavigationHeaderComponent,
1632
+ selector: "NavigationHeader",
1633
+ inputs: ["toggle", "class"]
1634
+ },
1635
+ {
1636
+ kind: "directive",
1637
+ type: NgTemplateOutlet,
1638
+ selector: "[ngTemplateOutlet]",
1639
+ inputs: [
1640
+ "ngTemplateOutletContext",
1641
+ "ngTemplateOutlet",
1642
+ "ngTemplateOutletInjector"
1643
+ ]
1644
+ },
1645
+ {
1646
+ kind: "directive",
1647
+ type: TooltipDirective,
1648
+ selector: "[Tooltip]",
1649
+ inputs: [
1650
+ "Tooltip",
1651
+ "TooltipPosition",
1652
+ "TooltipDisabled",
1653
+ "TooltipShowDelay",
1654
+ "TooltipHideDelay"
1655
+ ],
1656
+ exportAs: ["Tooltip"]
1657
+ }
1658
+ ],
1659
+ deferBlockDependencies: [() => [import("./ojiepermana-angular-navigation-navigation-badge-count.component-DYuysKVf.mjs").then((m) => m.NavigationBadgeCountComponent)]]
1660
+ });
1661
+ };
1662
+ i0.ɵɵngDeclareClassMetadataAsync({
1663
+ minVersion: "18.0.0",
1664
+ version: "22.2.2",
1665
+ ngImport: i0,
1666
+ type: NavigationDockbarComponent,
1667
+ resolveDeferredDeps: () => [import("./ojiepermana-angular-navigation-navigation-badge-count.component-DYuysKVf.mjs").then((m) => m.NavigationBadgeCountComponent)],
1668
+ resolveMetadata: (NavigationBadgeCountComponent) => ({
1669
+ decorators: [{
1670
+ type: Component,
1671
+ args: [{
1672
+ selector: "NavigationDockbar",
1673
+ imports: [
1674
+ IconComponent,
1675
+ NavigationBadgeCountComponent,
1676
+ NavigationContentComponent,
1677
+ NavigationHeaderComponent,
1678
+ NgTemplateOutlet,
1679
+ TooltipDirective
1680
+ ],
1681
+ host: {
1682
+ "[class]": "hostClasses()",
1683
+ "(keydown.escape)": "onEscape($event)",
1684
+ "(pointerout)": "onPointerOut($event)"
1685
+ },
1686
+ template: `
1687
+ @if (headerSlot()) {
1688
+ <ng-content select="NavigationHeader" />
1689
+ } @else if (container.dockbarRouteHeader(); as routeHeader) {
1690
+ <NavigationHeader>
1691
+ <ng-template #routeIndicator>
1692
+ <span
1693
+ aria-hidden="true"
1694
+ class="inline-flex items-center justify-center text-(length:--nav-icon-size-rail) text-current"
1695
+ >
1696
+ @if (container.iconTemplate(); as customIcon) {
1697
+ <ng-container
1698
+ [ngTemplateOutlet]="customIcon.template"
1699
+ [ngTemplateOutletContext]="routeHeader.iconContext"
1700
+ />
1701
+ } @else {
1702
+ <Icon [name]="routeHeader.icon" size="inherit" [fill]="1" />
1703
+ }
1704
+ </span>
1705
+
1706
+ @if (routeHeader.badge; as badge) {
1707
+ @defer (on immediate) {
1708
+ <NavigationBadgeCount [badge]="badge" [class]="routeHeader.badgeClass" />
1709
+ }
1710
+ }
1711
+ </ng-template>
1712
+
1713
+ @if (routeHeader.panelGroup && container.resolvedState().dockbarMode === 'drawer') {
1714
+ <button
1715
+ type="button"
1716
+ data-navigation-dockbar-route-header="true"
1717
+ data-navigation-dockbar-route-trigger="true"
1718
+ [attr.data-navigation-item-key]="routeHeader.activeEntry?.key"
1719
+ class="relative inline-flex size-(--nav-rail-item-size) items-center justify-center rounded-md bg-accent text-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
1720
+ [Tooltip]="routeHeader.label"
1721
+ [TooltipPosition]="position() === 'right' ? 'left' : 'right'"
1722
+ [attr.aria-controls]="container.dockbarAsideId()"
1723
+ [attr.aria-expanded]="container.dockbarActiveRoutePanelExpanded()"
1724
+ (click)="toggleActiveRoutePanel()"
1725
+ >
1726
+ <span class="sr-only">{{ routeHeader.label }}</span>
1727
+ <ng-container [ngTemplateOutlet]="routeIndicator" />
1728
+ </button>
1729
+ } @else {
1730
+ <span
1731
+ data-navigation-dockbar-route-header="true"
1732
+ class="relative inline-flex size-(--nav-rail-item-size) items-center justify-center text-foreground"
1733
+ [Tooltip]="routeHeader.label"
1734
+ [TooltipPosition]="position() === 'right' ? 'left' : 'right'"
1735
+ >
1736
+ <span class="sr-only">{{ routeHeader.label }}</span>
1737
+ <ng-container [ngTemplateOutlet]="routeIndicator" />
1738
+ </span>
1739
+ }
1740
+ </NavigationHeader>
1741
+ }
1742
+
1743
+ @if (contentSlot()) {
1744
+ <ng-content select="NavigationContent" />
1745
+ } @else {
1746
+ <NavigationContent />
1747
+ }
1748
+
1749
+ @if (footerSlot()) {
1750
+ <ng-content select="NavigationFooter" />
1751
+ }
1752
+ `
1753
+ }]
1754
+ }],
1755
+ ctorParameters: () => [],
1756
+ propDecorators: {
1757
+ mode: [{
1758
+ type: i0.Input,
1759
+ args: [{
1760
+ isSignal: true,
1761
+ alias: "mode",
1762
+ required: false
1763
+ }]
1764
+ }],
1765
+ position: [{
1766
+ type: i0.Input,
1767
+ args: [{
1768
+ isSignal: true,
1769
+ alias: "position",
1770
+ required: false
1771
+ }]
1772
+ }],
1773
+ routeContext: [{
1774
+ type: i0.Input,
1775
+ args: [{
1776
+ isSignal: true,
1777
+ alias: "dockbar-route-context",
1778
+ required: false
1779
+ }]
1780
+ }],
1781
+ badgeContext: [{
1782
+ type: i0.Input,
1783
+ args: [{
1784
+ isSignal: true,
1785
+ alias: "dockbar-badge",
1786
+ required: false
1787
+ }]
1788
+ }],
1789
+ class: [{
1790
+ type: i0.Input,
1791
+ args: [{
1792
+ isSignal: true,
1793
+ alias: "class",
1794
+ required: false
1795
+ }]
1796
+ }],
1797
+ headerSlot: [{
1798
+ type: i0.ContentChild,
1799
+ args: [i0.forwardRef(() => NavigationHeaderComponent), { isSignal: true }]
1800
+ }],
1801
+ contentSlot: [{
1802
+ type: i0.ContentChild,
1803
+ args: [i0.forwardRef(() => NavigationContentComponent), { isSignal: true }]
1804
+ }],
1805
+ footerSlot: [{
1806
+ type: i0.ContentChild,
1807
+ args: [i0.forwardRef(() => NavigationFooterComponent), { isSignal: true }]
1808
+ }],
1809
+ asideFooterSlot: [{
1810
+ type: i0.ContentChild,
1811
+ args: [i0.forwardRef(() => NavigationAsideFooterDirective), { isSignal: true }]
1812
+ }]
1813
+ }
1814
+ })
1815
+ });
1816
+ var NavigationMinidockComponent = class NavigationMinidockComponent {
1817
+ container = inject(NavigationContainerComponent);
1818
+ destroyRef = inject(DestroyRef);
1819
+ position = input(null, ...ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []);
1820
+ class = input("", {
1821
+ ...ngDevMode ? { debugName: "class" } : /* istanbul ignore next */ {},
1822
+ alias: "class"
1823
+ });
1824
+ headerSlot = contentChild(NavigationHeaderComponent, ...ngDevMode ? [{ debugName: "headerSlot" }] : /* istanbul ignore next */ []);
1825
+ contentSlot = contentChild(NavigationContentComponent, ...ngDevMode ? [{ debugName: "contentSlot" }] : /* istanbul ignore next */ []);
1826
+ footerSlot = contentChild(NavigationFooterComponent, ...ngDevMode ? [{ debugName: "footerSlot" }] : /* istanbul ignore next */ []);
1827
+ dataValidated = computed(() => {
1828
+ ɵassertMinidockItems(this.container.data());
1829
+ return true;
1830
+ }, ...ngDevMode ? [{ debugName: "dataValidated" }] : /* istanbul ignore next */ []);
1831
+ hostClasses = computed(() => cn(this.container.shellClasses(), this.class()), ...ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []);
1832
+ constructor() {
1833
+ const config = {
1834
+ orientation: "vertical",
1835
+ type: "minidock",
1836
+ position: this.position
1837
+ };
1838
+ this.container.registerType(config);
1839
+ this.destroyRef.onDestroy(() => this.container.unregisterType(config));
1840
+ }
1841
+ static ɵfac = i0.ɵɵngDeclareFactory({
1842
+ minVersion: "12.0.0",
1843
+ version: "22.2.2",
1844
+ ngImport: i0,
1845
+ type: NavigationMinidockComponent,
1846
+ deps: [],
1847
+ target: i0.ɵɵFactoryTarget.Component
1848
+ });
1849
+ static ɵcmp = i0.ɵɵngDeclareComponent({
1850
+ minVersion: "17.0.0",
1851
+ version: "22.2.2",
1852
+ type: NavigationMinidockComponent,
1853
+ isStandalone: true,
1854
+ selector: "NavigationMinidock",
1855
+ inputs: {
1856
+ position: {
1857
+ classPropertyName: "position",
1858
+ publicName: "position",
1859
+ isSignal: true,
1860
+ isRequired: false,
1861
+ transformFunction: null
1862
+ },
1863
+ class: {
1864
+ classPropertyName: "class",
1865
+ publicName: "class",
1866
+ isSignal: true,
1867
+ isRequired: false,
1868
+ transformFunction: null
1869
+ }
1870
+ },
1871
+ host: { properties: { "class": "hostClasses()" } },
1872
+ queries: [
1873
+ {
1874
+ propertyName: "headerSlot",
1875
+ first: true,
1876
+ predicate: NavigationHeaderComponent,
1877
+ descendants: true,
1878
+ isSignal: true
1879
+ },
1880
+ {
1881
+ propertyName: "contentSlot",
1882
+ first: true,
1883
+ predicate: NavigationContentComponent,
1884
+ descendants: true,
1885
+ isSignal: true
1886
+ },
1887
+ {
1888
+ propertyName: "footerSlot",
1889
+ first: true,
1890
+ predicate: NavigationFooterComponent,
1891
+ descendants: true,
1892
+ isSignal: true
1893
+ }
1894
+ ],
1895
+ ngImport: i0,
1896
+ template: `
1897
+ @if (dataValidated()) {
1898
+ @if (headerSlot()) {
1899
+ <ng-content select="NavigationHeader" />
1900
+ }
1901
+
1902
+ @if (contentSlot()) {
1903
+ <ng-content select="NavigationContent" />
1904
+ } @else {
1905
+ <NavigationContent />
1906
+ }
1907
+
1908
+ @if (footerSlot()) {
1909
+ <ng-content select="NavigationFooter" />
1910
+ }
1911
+ }
1912
+ `,
1913
+ isInline: true,
1914
+ dependencies: [{
1915
+ kind: "component",
1916
+ type: NavigationContentComponent,
1917
+ selector: "NavigationContent",
1918
+ inputs: ["class"]
1919
+ }]
1920
+ });
1921
+ };
1922
+ i0.ɵɵngDeclareClassMetadata({
1923
+ minVersion: "12.0.0",
1924
+ version: "22.2.2",
1925
+ ngImport: i0,
1926
+ type: NavigationMinidockComponent,
1927
+ decorators: [{
1928
+ type: Component,
1929
+ args: [{
1930
+ selector: "NavigationMinidock",
1931
+ imports: [NavigationContentComponent],
1932
+ host: { "[class]": "hostClasses()" },
1933
+ template: `
1934
+ @if (dataValidated()) {
1935
+ @if (headerSlot()) {
1936
+ <ng-content select="NavigationHeader" />
1937
+ }
1938
+
1939
+ @if (contentSlot()) {
1940
+ <ng-content select="NavigationContent" />
1941
+ } @else {
1942
+ <NavigationContent />
1943
+ }
1944
+
1945
+ @if (footerSlot()) {
1946
+ <ng-content select="NavigationFooter" />
1947
+ }
1948
+ }
1949
+ `
1950
+ }]
1951
+ }],
1952
+ ctorParameters: () => [],
1953
+ propDecorators: {
1954
+ position: [{
1955
+ type: i0.Input,
1956
+ args: [{
1957
+ isSignal: true,
1958
+ alias: "position",
1959
+ required: false
1960
+ }]
1961
+ }],
1962
+ class: [{
1963
+ type: i0.Input,
1964
+ args: [{
1965
+ isSignal: true,
1966
+ alias: "class",
1967
+ required: false
1968
+ }]
1969
+ }],
1970
+ headerSlot: [{
1971
+ type: i0.ContentChild,
1972
+ args: [i0.forwardRef(() => NavigationHeaderComponent), { isSignal: true }]
1973
+ }],
1974
+ contentSlot: [{
1975
+ type: i0.ContentChild,
1976
+ args: [i0.forwardRef(() => NavigationContentComponent), { isSignal: true }]
1977
+ }],
1978
+ footerSlot: [{
1979
+ type: i0.ContentChild,
1980
+ args: [i0.forwardRef(() => NavigationFooterComponent), { isSignal: true }]
1981
+ }]
1982
+ }
1983
+ });
1984
+ var NavigationNavbarComponent = class NavigationNavbarComponent {
1985
+ container = inject(NavigationContainerComponent);
1986
+ destroyRef = inject(DestroyRef);
1987
+ position = input(null, {
1988
+ ...ngDevMode ? { debugName: "position" } : /* istanbul ignore next */ {},
1989
+ alias: "nav-position"
1990
+ });
1991
+ typeStyle = input("flat", {
1992
+ ...ngDevMode ? { debugName: "typeStyle" } : /* istanbul ignore next */ {},
1993
+ alias: "nav-type-style"
1994
+ });
1995
+ class = input("", {
1996
+ ...ngDevMode ? { debugName: "class" } : /* istanbul ignore next */ {},
1997
+ alias: "class"
1998
+ });
1999
+ headerSlot = contentChild(NavigationHeaderComponent, ...ngDevMode ? [{ debugName: "headerSlot" }] : /* istanbul ignore next */ []);
2000
+ contentSlot = contentChild(NavigationContentComponent, ...ngDevMode ? [{ debugName: "contentSlot" }] : /* istanbul ignore next */ []);
2001
+ footerSlot = contentChild(NavigationFooterComponent, ...ngDevMode ? [{ debugName: "footerSlot" }] : /* istanbul ignore next */ []);
2002
+ hostClasses = computed(() => cn(this.container.shellClasses(), this.class()), ...ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []);
2003
+ constructor() {
2004
+ const config = {
2005
+ orientation: "horizontal",
2006
+ type: "navbar",
2007
+ position: this.position,
2008
+ typeStyle: this.typeStyle
2009
+ };
2010
+ this.container.registerType(config);
2011
+ this.destroyRef.onDestroy(() => this.container.unregisterType(config));
2012
+ }
2013
+ static ɵfac = i0.ɵɵngDeclareFactory({
2014
+ minVersion: "12.0.0",
2015
+ version: "22.2.2",
2016
+ ngImport: i0,
2017
+ type: NavigationNavbarComponent,
2018
+ deps: [],
2019
+ target: i0.ɵɵFactoryTarget.Component
2020
+ });
2021
+ static ɵcmp = i0.ɵɵngDeclareComponent({
2022
+ minVersion: "17.0.0",
2023
+ version: "22.2.2",
2024
+ type: NavigationNavbarComponent,
2025
+ isStandalone: true,
2026
+ selector: "NavigationNavbar",
2027
+ inputs: {
2028
+ position: {
2029
+ classPropertyName: "position",
2030
+ publicName: "nav-position",
2031
+ isSignal: true,
2032
+ isRequired: false,
2033
+ transformFunction: null
2034
+ },
2035
+ typeStyle: {
2036
+ classPropertyName: "typeStyle",
2037
+ publicName: "nav-type-style",
2038
+ isSignal: true,
2039
+ isRequired: false,
2040
+ transformFunction: null
2041
+ },
2042
+ class: {
2043
+ classPropertyName: "class",
2044
+ publicName: "class",
2045
+ isSignal: true,
2046
+ isRequired: false,
2047
+ transformFunction: null
2048
+ }
2049
+ },
2050
+ host: { properties: { "class": "hostClasses()" } },
2051
+ queries: [
2052
+ {
2053
+ propertyName: "headerSlot",
2054
+ first: true,
2055
+ predicate: NavigationHeaderComponent,
2056
+ descendants: true,
2057
+ isSignal: true
2058
+ },
2059
+ {
2060
+ propertyName: "contentSlot",
2061
+ first: true,
2062
+ predicate: NavigationContentComponent,
2063
+ descendants: true,
2064
+ isSignal: true
2065
+ },
2066
+ {
2067
+ propertyName: "footerSlot",
2068
+ first: true,
2069
+ predicate: NavigationFooterComponent,
2070
+ descendants: true,
2071
+ isSignal: true
2072
+ }
2073
+ ],
2074
+ ngImport: i0,
2075
+ template: `
2076
+ @if (headerSlot()) {
2077
+ <ng-content select="NavigationHeader" />
2078
+ }
2079
+
2080
+ @if (contentSlot()) {
2081
+ <ng-content select="NavigationContent" />
2082
+ } @else {
2083
+ <NavigationContent />
2084
+ }
2085
+
2086
+ @if (footerSlot()) {
2087
+ <ng-content select="NavigationFooter" />
2088
+ }
2089
+ `,
2090
+ isInline: true,
2091
+ dependencies: [{
2092
+ kind: "component",
2093
+ type: NavigationContentComponent,
2094
+ selector: "NavigationContent",
2095
+ inputs: ["class"]
2096
+ }]
2097
+ });
2098
+ };
2099
+ i0.ɵɵngDeclareClassMetadata({
2100
+ minVersion: "12.0.0",
2101
+ version: "22.2.2",
2102
+ ngImport: i0,
2103
+ type: NavigationNavbarComponent,
2104
+ decorators: [{
2105
+ type: Component,
2106
+ args: [{
2107
+ selector: "NavigationNavbar",
2108
+ imports: [NavigationContentComponent],
2109
+ host: { "[class]": "hostClasses()" },
2110
+ template: `
2111
+ @if (headerSlot()) {
2112
+ <ng-content select="NavigationHeader" />
2113
+ }
2114
+
2115
+ @if (contentSlot()) {
2116
+ <ng-content select="NavigationContent" />
2117
+ } @else {
2118
+ <NavigationContent />
2119
+ }
2120
+
2121
+ @if (footerSlot()) {
2122
+ <ng-content select="NavigationFooter" />
2123
+ }
2124
+ `
2125
+ }]
2126
+ }],
2127
+ ctorParameters: () => [],
2128
+ propDecorators: {
2129
+ position: [{
2130
+ type: i0.Input,
2131
+ args: [{
2132
+ isSignal: true,
2133
+ alias: "nav-position",
2134
+ required: false
2135
+ }]
2136
+ }],
2137
+ typeStyle: [{
2138
+ type: i0.Input,
2139
+ args: [{
2140
+ isSignal: true,
2141
+ alias: "nav-type-style",
2142
+ required: false
2143
+ }]
2144
+ }],
2145
+ class: [{
2146
+ type: i0.Input,
2147
+ args: [{
2148
+ isSignal: true,
2149
+ alias: "class",
2150
+ required: false
2151
+ }]
2152
+ }],
2153
+ headerSlot: [{
2154
+ type: i0.ContentChild,
2155
+ args: [i0.forwardRef(() => NavigationHeaderComponent), { isSignal: true }]
2156
+ }],
2157
+ contentSlot: [{
2158
+ type: i0.ContentChild,
2159
+ args: [i0.forwardRef(() => NavigationContentComponent), { isSignal: true }]
2160
+ }],
2161
+ footerSlot: [{
2162
+ type: i0.ContentChild,
2163
+ args: [i0.forwardRef(() => NavigationFooterComponent), { isSignal: true }]
2164
+ }]
2165
+ }
2166
+ });
2167
+ var NavigationFlyoutComponent = class NavigationFlyoutComponent {
2168
+ container = inject(NavigationContainerComponent);
2169
+ destroyRef = inject(DestroyRef);
2170
+ label = input("Menu", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
2171
+ icon = input(null, ...ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []);
2172
+ iconOnly = input(false, {
2173
+ ...ngDevMode ? { debugName: "iconOnly" } : /* istanbul ignore next */ {},
2174
+ alias: "icon-only",
2175
+ transform: booleanAttribute
2176
+ });
2177
+ iconPosition = input("start", {
2178
+ ...ngDevMode ? { debugName: "iconPosition" } : /* istanbul ignore next */ {},
2179
+ alias: "icon-position"
2180
+ });
2181
+ triggerVariant = input("button", {
2182
+ ...ngDevMode ? { debugName: "triggerVariant" } : /* istanbul ignore next */ {},
2183
+ alias: "trigger-variant"
2184
+ });
2185
+ triggerFloating = input(false, {
2186
+ ...ngDevMode ? { debugName: "triggerFloating" } : /* istanbul ignore next */ {},
2187
+ alias: "trigger-floating",
2188
+ transform: booleanAttribute
2189
+ });
2190
+ panelViewport = input(false, {
2191
+ ...ngDevMode ? { debugName: "panelViewport" } : /* istanbul ignore next */ {},
2192
+ alias: "panel-viewport",
2193
+ transform: booleanAttribute
2194
+ });
2195
+ triggerClass = input("", {
2196
+ ...ngDevMode ? { debugName: "triggerClass" } : /* istanbul ignore next */ {},
2197
+ alias: "trigger-class"
2198
+ });
2199
+ triggerButtonClass = input("", {
2200
+ ...ngDevMode ? { debugName: "triggerButtonClass" } : /* istanbul ignore next */ {},
2201
+ alias: "trigger-button-class"
2202
+ });
2203
+ position = input(null, {
2204
+ ...ngDevMode ? { debugName: "position" } : /* istanbul ignore next */ {},
2205
+ alias: "nav-position"
2206
+ });
2207
+ typeStyle = input("flat", {
2208
+ ...ngDevMode ? { debugName: "typeStyle" } : /* istanbul ignore next */ {},
2209
+ alias: "nav-type-style"
2210
+ });
2211
+ class = input("", {
2212
+ ...ngDevMode ? { debugName: "class" } : /* istanbul ignore next */ {},
2213
+ alias: "class"
2214
+ });
2215
+ hostClasses = computed(() => cn(this.container.shellClasses(), this.class()), ...ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []);
2216
+ constructor() {
2217
+ const config = {
2218
+ orientation: "horizontal",
2219
+ type: "flyout",
2220
+ position: this.position,
2221
+ flyoutLabel: this.label,
2222
+ flyoutIcon: this.icon,
2223
+ flyoutIconOnly: this.iconOnly,
2224
+ flyoutIconPosition: this.iconPosition,
2225
+ flyoutTriggerVariant: this.triggerVariant,
2226
+ flyoutTriggerFloating: this.triggerFloating,
2227
+ flyoutPanelViewport: this.panelViewport,
2228
+ flyoutTriggerClass: this.triggerClass,
2229
+ flyoutTriggerButtonClass: this.triggerButtonClass,
2230
+ typeStyle: this.typeStyle
2231
+ };
2232
+ this.container.registerType(config);
2233
+ this.destroyRef.onDestroy(() => this.container.unregisterType(config));
2234
+ }
2235
+ static ɵfac = i0.ɵɵngDeclareFactory({
2236
+ minVersion: "12.0.0",
2237
+ version: "22.2.2",
2238
+ ngImport: i0,
2239
+ type: NavigationFlyoutComponent,
2240
+ deps: [],
2241
+ target: i0.ɵɵFactoryTarget.Component
2242
+ });
2243
+ static ɵcmp = i0.ɵɵngDeclareComponent({
2244
+ minVersion: "17.1.0",
2245
+ version: "22.2.2",
2246
+ type: NavigationFlyoutComponent,
2247
+ isStandalone: true,
2248
+ selector: "NavigationFlyout",
2249
+ inputs: {
2250
+ label: {
2251
+ classPropertyName: "label",
2252
+ publicName: "label",
2253
+ isSignal: true,
2254
+ isRequired: false,
2255
+ transformFunction: null
2256
+ },
2257
+ icon: {
2258
+ classPropertyName: "icon",
2259
+ publicName: "icon",
2260
+ isSignal: true,
2261
+ isRequired: false,
2262
+ transformFunction: null
2263
+ },
2264
+ iconOnly: {
2265
+ classPropertyName: "iconOnly",
2266
+ publicName: "icon-only",
2267
+ isSignal: true,
2268
+ isRequired: false,
2269
+ transformFunction: null
2270
+ },
2271
+ iconPosition: {
2272
+ classPropertyName: "iconPosition",
2273
+ publicName: "icon-position",
2274
+ isSignal: true,
2275
+ isRequired: false,
2276
+ transformFunction: null
2277
+ },
2278
+ triggerVariant: {
2279
+ classPropertyName: "triggerVariant",
2280
+ publicName: "trigger-variant",
2281
+ isSignal: true,
2282
+ isRequired: false,
2283
+ transformFunction: null
2284
+ },
2285
+ triggerFloating: {
2286
+ classPropertyName: "triggerFloating",
2287
+ publicName: "trigger-floating",
2288
+ isSignal: true,
2289
+ isRequired: false,
2290
+ transformFunction: null
2291
+ },
2292
+ panelViewport: {
2293
+ classPropertyName: "panelViewport",
2294
+ publicName: "panel-viewport",
2295
+ isSignal: true,
2296
+ isRequired: false,
2297
+ transformFunction: null
2298
+ },
2299
+ triggerClass: {
2300
+ classPropertyName: "triggerClass",
2301
+ publicName: "trigger-class",
2302
+ isSignal: true,
2303
+ isRequired: false,
2304
+ transformFunction: null
2305
+ },
2306
+ triggerButtonClass: {
2307
+ classPropertyName: "triggerButtonClass",
2308
+ publicName: "trigger-button-class",
2309
+ isSignal: true,
2310
+ isRequired: false,
2311
+ transformFunction: null
2312
+ },
2313
+ position: {
2314
+ classPropertyName: "position",
2315
+ publicName: "nav-position",
2316
+ isSignal: true,
2317
+ isRequired: false,
2318
+ transformFunction: null
2319
+ },
2320
+ typeStyle: {
2321
+ classPropertyName: "typeStyle",
2322
+ publicName: "nav-type-style",
2323
+ isSignal: true,
2324
+ isRequired: false,
2325
+ transformFunction: null
2326
+ },
2327
+ class: {
2328
+ classPropertyName: "class",
2329
+ publicName: "class",
2330
+ isSignal: true,
2331
+ isRequired: false,
2332
+ transformFunction: null
2333
+ }
2334
+ },
2335
+ host: { properties: { "class": "hostClasses()" } },
2336
+ ngImport: i0,
2337
+ template: `
2338
+ <!-- Bar hanya berisi trigger (dari NavigationContent → FlyoutMenu); NavigationHeader &
2339
+ NavigationFooter di-re-project ke DALAM panel flyout saat dibuka. Urutan dibaca dari sisi
2340
+ bar ke arah luar: header (menempel bar, sticky) → menu → footer (ujung jauh). Mode top:
2341
+ brand atas, logout bawah; mode bottom: cerminannya (brand bawah dekat bar, logout atas). -->
2342
+ <NavigationContent>
2343
+ <ng-content select="NavigationHeader" ngProjectAs="NavigationHeader" />
2344
+ <ng-content select="NavigationFooter" ngProjectAs="NavigationFooter" />
2345
+ </NavigationContent>
2346
+ `,
2347
+ isInline: true,
2348
+ dependencies: [{
2349
+ kind: "component",
2350
+ type: NavigationContentComponent,
2351
+ selector: "NavigationContent",
2352
+ inputs: ["class"]
2353
+ }]
2354
+ });
2355
+ };
2356
+ i0.ɵɵngDeclareClassMetadata({
2357
+ minVersion: "12.0.0",
2358
+ version: "22.2.2",
2359
+ ngImport: i0,
2360
+ type: NavigationFlyoutComponent,
2361
+ decorators: [{
2362
+ type: Component,
2363
+ args: [{
2364
+ selector: "NavigationFlyout",
2365
+ imports: [NavigationContentComponent],
2366
+ host: { "[class]": "hostClasses()" },
2367
+ template: `
2368
+ <!-- Bar hanya berisi trigger (dari NavigationContent → FlyoutMenu); NavigationHeader &
2369
+ NavigationFooter di-re-project ke DALAM panel flyout saat dibuka. Urutan dibaca dari sisi
2370
+ bar ke arah luar: header (menempel bar, sticky) → menu → footer (ujung jauh). Mode top:
2371
+ brand atas, logout bawah; mode bottom: cerminannya (brand bawah dekat bar, logout atas). -->
2372
+ <NavigationContent>
2373
+ <ng-content select="NavigationHeader" ngProjectAs="NavigationHeader" />
2374
+ <ng-content select="NavigationFooter" ngProjectAs="NavigationFooter" />
2375
+ </NavigationContent>
2376
+ `
2377
+ }]
2378
+ }],
2379
+ ctorParameters: () => [],
2380
+ propDecorators: {
2381
+ label: [{
2382
+ type: i0.Input,
2383
+ args: [{
2384
+ isSignal: true,
2385
+ alias: "label",
2386
+ required: false
2387
+ }]
2388
+ }],
2389
+ icon: [{
2390
+ type: i0.Input,
2391
+ args: [{
2392
+ isSignal: true,
2393
+ alias: "icon",
2394
+ required: false
2395
+ }]
2396
+ }],
2397
+ iconOnly: [{
2398
+ type: i0.Input,
2399
+ args: [{
2400
+ isSignal: true,
2401
+ alias: "icon-only",
2402
+ required: false
2403
+ }]
2404
+ }],
2405
+ iconPosition: [{
2406
+ type: i0.Input,
2407
+ args: [{
2408
+ isSignal: true,
2409
+ alias: "icon-position",
2410
+ required: false
2411
+ }]
2412
+ }],
2413
+ triggerVariant: [{
2414
+ type: i0.Input,
2415
+ args: [{
2416
+ isSignal: true,
2417
+ alias: "trigger-variant",
2418
+ required: false
2419
+ }]
2420
+ }],
2421
+ triggerFloating: [{
2422
+ type: i0.Input,
2423
+ args: [{
2424
+ isSignal: true,
2425
+ alias: "trigger-floating",
2426
+ required: false
2427
+ }]
2428
+ }],
2429
+ panelViewport: [{
2430
+ type: i0.Input,
2431
+ args: [{
2432
+ isSignal: true,
2433
+ alias: "panel-viewport",
2434
+ required: false
2435
+ }]
2436
+ }],
2437
+ triggerClass: [{
2438
+ type: i0.Input,
2439
+ args: [{
2440
+ isSignal: true,
2441
+ alias: "trigger-class",
2442
+ required: false
2443
+ }]
2444
+ }],
2445
+ triggerButtonClass: [{
2446
+ type: i0.Input,
2447
+ args: [{
2448
+ isSignal: true,
2449
+ alias: "trigger-button-class",
2450
+ required: false
2451
+ }]
2452
+ }],
2453
+ position: [{
2454
+ type: i0.Input,
2455
+ args: [{
2456
+ isSignal: true,
2457
+ alias: "nav-position",
2458
+ required: false
2459
+ }]
2460
+ }],
2461
+ typeStyle: [{
2462
+ type: i0.Input,
2463
+ args: [{
2464
+ isSignal: true,
2465
+ alias: "nav-type-style",
2466
+ required: false
2467
+ }]
2468
+ }],
2469
+ class: [{
2470
+ type: i0.Input,
2471
+ args: [{
2472
+ isSignal: true,
2473
+ alias: "class",
2474
+ required: false
2475
+ }]
2476
+ }]
2477
+ }
2478
+ });
2479
+ function isCompactDisplay(shell) {
2480
+ const state = shell.displayState();
2481
+ if (state.orientation !== "vertical") return false;
2482
+ if (state.type === "dockbar" || state.type === "minidock") return true;
2483
+ return shell.collapseEnabled() && state.collapsed;
2484
+ }
2485
+ var NavigationCollapseRootDirective = class NavigationCollapseRootDirective {
2486
+ shell = inject(NAVIGATION_SHELL);
2487
+ collapseEnabled = computed(() => {
2488
+ const state = this.shell.displayState();
2489
+ return state.orientation === "vertical" && (this.shell.collapseEnabled() || state.type === "dockbar" || state.type === "minidock");
2490
+ }, ...ngDevMode ? [{ debugName: "collapseEnabled" }] : /* istanbul ignore next */ []);
2491
+ displayCollapsed = computed(() => isCompactDisplay(this.shell), ...ngDevMode ? [{ debugName: "displayCollapsed" }] : /* istanbul ignore next */ []);
2492
+ static ɵfac = i0.ɵɵngDeclareFactory({
2493
+ minVersion: "12.0.0",
2494
+ version: "22.2.2",
2495
+ ngImport: i0,
2496
+ type: NavigationCollapseRootDirective,
2497
+ deps: [],
2498
+ target: i0.ɵɵFactoryTarget.Directive
2499
+ });
2500
+ static ɵdir = i0.ɵɵngDeclareDirective({
2501
+ minVersion: "14.0.0",
2502
+ version: "22.2.2",
2503
+ type: NavigationCollapseRootDirective,
2504
+ isStandalone: true,
2505
+ selector: "[NavigationCollapseRoot]",
2506
+ host: { properties: {
2507
+ "class.w-full": "collapseEnabled()",
2508
+ "class.justify-center": "displayCollapsed()"
2509
+ } },
2510
+ ngImport: i0
2511
+ });
2512
+ };
2513
+ i0.ɵɵngDeclareClassMetadata({
2514
+ minVersion: "12.0.0",
2515
+ version: "22.2.2",
2516
+ ngImport: i0,
2517
+ type: NavigationCollapseRootDirective,
2518
+ decorators: [{
2519
+ type: Directive,
2520
+ args: [{
2521
+ selector: "[NavigationCollapseRoot]",
2522
+ host: {
2523
+ "[class.w-full]": "collapseEnabled()",
2524
+ "[class.justify-center]": "displayCollapsed()"
2525
+ }
2526
+ }]
2527
+ }]
2528
+ });
2529
+ var NavigationCollapseExpandedDirective = class NavigationCollapseExpandedDirective {
2530
+ shell = inject(NAVIGATION_SHELL);
2531
+ templateRef = inject(TemplateRef);
2532
+ viewContainer = inject(ViewContainerRef);
2533
+ hasView = false;
2534
+ shouldRender = computed(() => !isCompactDisplay(this.shell), ...ngDevMode ? [{ debugName: "shouldRender" }] : /* istanbul ignore next */ []);
2535
+ constructor() {
2536
+ effect(() => {
2537
+ if (this.shouldRender()) {
2538
+ if (!this.hasView) {
2539
+ this.viewContainer.createEmbeddedView(this.templateRef);
2540
+ this.hasView = true;
2541
+ }
2542
+ return;
2543
+ }
2544
+ if (this.hasView) {
2545
+ this.viewContainer.clear();
2546
+ this.hasView = false;
2547
+ }
2548
+ });
2549
+ }
2550
+ static ɵfac = i0.ɵɵngDeclareFactory({
2551
+ minVersion: "12.0.0",
2552
+ version: "22.2.2",
2553
+ ngImport: i0,
2554
+ type: NavigationCollapseExpandedDirective,
2555
+ deps: [],
2556
+ target: i0.ɵɵFactoryTarget.Directive
2557
+ });
2558
+ static ɵdir = i0.ɵɵngDeclareDirective({
2559
+ minVersion: "14.0.0",
2560
+ version: "22.2.2",
2561
+ type: NavigationCollapseExpandedDirective,
2562
+ isStandalone: true,
2563
+ selector: "[NavigationCollapseExpanded]",
2564
+ ngImport: i0
2565
+ });
2566
+ };
2567
+ i0.ɵɵngDeclareClassMetadata({
2568
+ minVersion: "12.0.0",
2569
+ version: "22.2.2",
2570
+ ngImport: i0,
2571
+ type: NavigationCollapseExpandedDirective,
2572
+ decorators: [{
2573
+ type: Directive,
2574
+ args: [{ selector: "[NavigationCollapseExpanded]" }]
2575
+ }],
2576
+ ctorParameters: () => []
2577
+ });
2578
+ var NavigationFooterActionComponent = class NavigationFooterActionComponent {
2579
+ shell = inject(NAVIGATION_SHELL, { optional: true });
2580
+ class = input("", {
2581
+ ...ngDevMode ? { debugName: "class" } : /* istanbul ignore next */ {},
2582
+ alias: "class"
2583
+ });
2584
+ collapsed = computed(() => {
2585
+ const state = this.shell?.displayState();
2586
+ return state ? state.orientation === "vertical" && state.collapsed : false;
2587
+ }, ...ngDevMode ? [{ debugName: "collapsed" }] : /* istanbul ignore next */ []);
2588
+ hostClasses = computed(() => cn(this.collapsed() ? "hidden" : "ml-auto flex shrink-0 items-center gap-1", this.class()), ...ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []);
2589
+ static ɵfac = i0.ɵɵngDeclareFactory({
2590
+ minVersion: "12.0.0",
2591
+ version: "22.2.2",
2592
+ ngImport: i0,
2593
+ type: NavigationFooterActionComponent,
2594
+ deps: [],
2595
+ target: i0.ɵɵFactoryTarget.Component
2596
+ });
2597
+ static ɵcmp = i0.ɵɵngDeclareComponent({
2598
+ minVersion: "17.1.0",
2599
+ version: "22.2.2",
2600
+ type: NavigationFooterActionComponent,
2601
+ isStandalone: true,
2602
+ selector: "NavigationFooterAction",
2603
+ inputs: { class: {
2604
+ classPropertyName: "class",
2605
+ publicName: "class",
2606
+ isSignal: true,
2607
+ isRequired: false,
2608
+ transformFunction: null
2609
+ } },
2610
+ host: { properties: { "class": "hostClasses()" } },
2611
+ ngImport: i0,
2612
+ template: `<ng-content />`,
2613
+ isInline: true
2614
+ });
2615
+ };
2616
+ i0.ɵɵngDeclareClassMetadata({
2617
+ minVersion: "12.0.0",
2618
+ version: "22.2.2",
2619
+ ngImport: i0,
2620
+ type: NavigationFooterActionComponent,
2621
+ decorators: [{
2622
+ type: Component,
2623
+ args: [{
2624
+ selector: "NavigationFooterAction",
2625
+ host: { "[class]": "hostClasses()" },
2626
+ template: `<ng-content />`
2627
+ }]
2628
+ }],
2629
+ propDecorators: { class: [{
2630
+ type: i0.Input,
2631
+ args: [{
2632
+ isSignal: true,
2633
+ alias: "class",
2634
+ required: false
2635
+ }]
2636
+ }] }
2637
+ });
2638
+ function deriveNavigationInitials(name) {
2639
+ const parts = name.trim().split(/\s+/).filter(Boolean);
2640
+ if (parts.length === 0) return "";
2641
+ const first = parts[0] ?? "";
2642
+ if (parts.length === 1) return first.slice(0, 2).toUpperCase();
2643
+ const last = parts[parts.length - 1] ?? "";
2644
+ return (first.charAt(0) + last.charAt(0)).toUpperCase();
2645
+ }
2646
+ const INITIAL_HOST_CLASSES = "inline-flex size-8 shrink-0 items-center justify-center overflow-hidden rounded-md bg-primary/10 text-primary";
2647
+ function setupNavigationInitial(sources) {
2648
+ return {
2649
+ resolvedInitials: computed(() => sources.initials()?.slice(0, 2).toUpperCase() || deriveNavigationInitials(sources.name())),
2650
+ iconClasses: computed(() => sources.compact() ? "text-(length:--nav-icon-size-rail)" : "text-(length:--nav-icon-size)"),
2651
+ hostClasses: computed(() => cn(INITIAL_HOST_CLASSES, sources.class()))
2652
+ };
2653
+ }
2654
+ var NavigationFooterInitialComponent = class NavigationFooterInitialComponent {
2655
+ name = input("", ...ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []);
2656
+ src = input(null, ...ngDevMode ? [{ debugName: "src" }] : /* istanbul ignore next */ []);
2657
+ initials = input(null, ...ngDevMode ? [{ debugName: "initials" }] : /* istanbul ignore next */ []);
2658
+ icon = input(null, ...ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []);
2659
+ class = input("", {
2660
+ ...ngDevMode ? { debugName: "class" } : /* istanbul ignore next */ {},
2661
+ alias: "class"
2662
+ });
2663
+ view = setupNavigationInitial({
2664
+ name: () => this.name(),
2665
+ initials: () => this.initials(),
2666
+ compact: () => false,
2667
+ class: () => this.class()
2668
+ });
2669
+ resolvedInitials = this.view.resolvedInitials;
2670
+ hostClasses = this.view.hostClasses;
2671
+ static ɵfac = i0.ɵɵngDeclareFactory({
2672
+ minVersion: "12.0.0",
2673
+ version: "22.2.2",
2674
+ ngImport: i0,
2675
+ type: NavigationFooterInitialComponent,
2676
+ deps: [],
2677
+ target: i0.ɵɵFactoryTarget.Component
2678
+ });
2679
+ static ɵcmp = i0.ɵɵngDeclareComponent({
2680
+ minVersion: "17.0.0",
2681
+ version: "22.2.2",
2682
+ type: NavigationFooterInitialComponent,
2683
+ isStandalone: true,
2684
+ selector: "NavigationFooterInitial",
2685
+ inputs: {
2686
+ name: {
2687
+ classPropertyName: "name",
2688
+ publicName: "name",
2689
+ isSignal: true,
2690
+ isRequired: false,
2691
+ transformFunction: null
2692
+ },
2693
+ src: {
2694
+ classPropertyName: "src",
2695
+ publicName: "src",
2696
+ isSignal: true,
2697
+ isRequired: false,
2698
+ transformFunction: null
2699
+ },
2700
+ initials: {
2701
+ classPropertyName: "initials",
2702
+ publicName: "initials",
2703
+ isSignal: true,
2704
+ isRequired: false,
2705
+ transformFunction: null
2706
+ },
2707
+ icon: {
2708
+ classPropertyName: "icon",
2709
+ publicName: "icon",
2710
+ isSignal: true,
2711
+ isRequired: false,
2712
+ transformFunction: null
2713
+ },
2714
+ class: {
2715
+ classPropertyName: "class",
2716
+ publicName: "class",
2717
+ isSignal: true,
2718
+ isRequired: false,
2719
+ transformFunction: null
2720
+ }
2721
+ },
2722
+ host: { properties: {
2723
+ "class": "hostClasses()",
2724
+ "attr.role": "name() ? 'img' : null",
2725
+ "attr.aria-label": "name() || null"
2726
+ } },
2727
+ ngImport: i0,
2728
+ template: `
2729
+ @if (src(); as source) {
2730
+ <img [src]="source" alt="" class="h-full w-full rounded-[inherit] object-cover" />
2731
+ } @else if (icon(); as glyph) {
2732
+ <Icon [name]="glyph" size="inherit" [fill]="1" class="text-(length:--nav-icon-size)" />
2733
+ } @else {
2734
+ <span class="text-xs font-semibold leading-none">{{ resolvedInitials() }}</span>
2735
+ }
2736
+ `,
2737
+ isInline: true,
2738
+ dependencies: [{
2739
+ kind: "component",
2740
+ type: IconComponent,
2741
+ selector: "Icon",
2742
+ inputs: [
2743
+ "name",
2744
+ "class",
2745
+ "size",
2746
+ "fill",
2747
+ "weight",
2748
+ "grade",
2749
+ "opticalSize"
2750
+ ]
2751
+ }]
2752
+ });
2753
+ };
2754
+ i0.ɵɵngDeclareClassMetadata({
2755
+ minVersion: "12.0.0",
2756
+ version: "22.2.2",
2757
+ ngImport: i0,
2758
+ type: NavigationFooterInitialComponent,
2759
+ decorators: [{
2760
+ type: Component,
2761
+ args: [{
2762
+ selector: "NavigationFooterInitial",
2763
+ imports: [IconComponent],
2764
+ host: {
2765
+ "[class]": "hostClasses()",
2766
+ "[attr.role]": "name() ? 'img' : null",
2767
+ "[attr.aria-label]": "name() || null"
2768
+ },
2769
+ template: `
2770
+ @if (src(); as source) {
2771
+ <img [src]="source" alt="" class="h-full w-full rounded-[inherit] object-cover" />
2772
+ } @else if (icon(); as glyph) {
2773
+ <Icon [name]="glyph" size="inherit" [fill]="1" class="text-(length:--nav-icon-size)" />
2774
+ } @else {
2775
+ <span class="text-xs font-semibold leading-none">{{ resolvedInitials() }}</span>
2776
+ }
2777
+ `
2778
+ }]
2779
+ }],
2780
+ propDecorators: {
2781
+ name: [{
2782
+ type: i0.Input,
2783
+ args: [{
2784
+ isSignal: true,
2785
+ alias: "name",
2786
+ required: false
2787
+ }]
2788
+ }],
2789
+ src: [{
2790
+ type: i0.Input,
2791
+ args: [{
2792
+ isSignal: true,
2793
+ alias: "src",
2794
+ required: false
2795
+ }]
2796
+ }],
2797
+ initials: [{
2798
+ type: i0.Input,
2799
+ args: [{
2800
+ isSignal: true,
2801
+ alias: "initials",
2802
+ required: false
2803
+ }]
2804
+ }],
2805
+ icon: [{
2806
+ type: i0.Input,
2807
+ args: [{
2808
+ isSignal: true,
2809
+ alias: "icon",
2810
+ required: false
2811
+ }]
2812
+ }],
2813
+ class: [{
2814
+ type: i0.Input,
2815
+ args: [{
2816
+ isSignal: true,
2817
+ alias: "class",
2818
+ required: false
2819
+ }]
2820
+ }]
2821
+ }
2822
+ });
2823
+ var NavigationFooterTitleComponent = class NavigationFooterTitleComponent {
2824
+ shell = inject(NAVIGATION_SHELL, { optional: true });
2825
+ title = input("", ...ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []);
2826
+ subtitle = input(null, ...ngDevMode ? [{ debugName: "subtitle" }] : /* istanbul ignore next */ []);
2827
+ class = input("", {
2828
+ ...ngDevMode ? { debugName: "class" } : /* istanbul ignore next */ {},
2829
+ alias: "class"
2830
+ });
2831
+ collapsed = computed(() => {
2832
+ const state = this.shell?.displayState();
2833
+ return state ? state.orientation === "vertical" && state.collapsed : false;
2834
+ }, ...ngDevMode ? [{ debugName: "collapsed" }] : /* istanbul ignore next */ []);
2835
+ hostClasses = computed(() => cn(this.collapsed() ? "hidden" : "flex min-w-0 flex-col justify-center", this.class()), ...ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []);
2836
+ static ɵfac = i0.ɵɵngDeclareFactory({
2837
+ minVersion: "12.0.0",
2838
+ version: "22.2.2",
2839
+ ngImport: i0,
2840
+ type: NavigationFooterTitleComponent,
2841
+ deps: [],
2842
+ target: i0.ɵɵFactoryTarget.Component
2843
+ });
2844
+ static ɵcmp = i0.ɵɵngDeclareComponent({
2845
+ minVersion: "17.0.0",
2846
+ version: "22.2.2",
2847
+ type: NavigationFooterTitleComponent,
2848
+ isStandalone: true,
2849
+ selector: "NavigationFooterTitle",
2850
+ inputs: {
2851
+ title: {
2852
+ classPropertyName: "title",
2853
+ publicName: "title",
2854
+ isSignal: true,
2855
+ isRequired: false,
2856
+ transformFunction: null
2857
+ },
2858
+ subtitle: {
2859
+ classPropertyName: "subtitle",
2860
+ publicName: "subtitle",
2861
+ isSignal: true,
2862
+ isRequired: false,
2863
+ transformFunction: null
2864
+ },
2865
+ class: {
2866
+ classPropertyName: "class",
2867
+ publicName: "class",
2868
+ isSignal: true,
2869
+ isRequired: false,
2870
+ transformFunction: null
2871
+ }
2872
+ },
2873
+ host: { properties: {
2874
+ "class": "hostClasses()",
2875
+ "attr.data-collapsed": "collapsed()"
2876
+ } },
2877
+ ngImport: i0,
2878
+ template: `
2879
+ <span class="nav-text block truncate text-foreground">{{ title() }}</span>
2880
+ @if (subtitle(); as sub) {
2881
+ <span
2882
+ class="nav-subtitle -mt-0.5 block truncate text-muted-foreground"
2883
+ data-navigation-sidebar-subtitle
2884
+ >
2885
+ {{ sub }}
2886
+ </span>
2887
+ }
2888
+ `,
2889
+ isInline: true
2890
+ });
2891
+ };
2892
+ i0.ɵɵngDeclareClassMetadata({
2893
+ minVersion: "12.0.0",
2894
+ version: "22.2.2",
2895
+ ngImport: i0,
2896
+ type: NavigationFooterTitleComponent,
2897
+ decorators: [{
2898
+ type: Component,
2899
+ args: [{
2900
+ selector: "NavigationFooterTitle",
2901
+ host: {
2902
+ "[class]": "hostClasses()",
2903
+ "[attr.data-collapsed]": "collapsed()"
2904
+ },
2905
+ template: `
2906
+ <span class="nav-text block truncate text-foreground">{{ title() }}</span>
2907
+ @if (subtitle(); as sub) {
2908
+ <span
2909
+ class="nav-subtitle -mt-0.5 block truncate text-muted-foreground"
2910
+ data-navigation-sidebar-subtitle
2911
+ >
2912
+ {{ sub }}
2913
+ </span>
2914
+ }
2915
+ `
2916
+ }]
2917
+ }],
2918
+ propDecorators: {
2919
+ title: [{
2920
+ type: i0.Input,
2921
+ args: [{
2922
+ isSignal: true,
2923
+ alias: "title",
2924
+ required: false
2925
+ }]
2926
+ }],
2927
+ subtitle: [{
2928
+ type: i0.Input,
2929
+ args: [{
2930
+ isSignal: true,
2931
+ alias: "subtitle",
2932
+ required: false
2933
+ }]
2934
+ }],
2935
+ class: [{
2936
+ type: i0.Input,
2937
+ args: [{
2938
+ isSignal: true,
2939
+ alias: "class",
2940
+ required: false
2941
+ }]
2942
+ }]
2943
+ }
2944
+ });
2945
+ var NavigationHeaderInitialComponent = class NavigationHeaderInitialComponent {
2946
+ name = input("", ...ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []);
2947
+ src = input(null, ...ngDevMode ? [{ debugName: "src" }] : /* istanbul ignore next */ []);
2948
+ initials = input(null, ...ngDevMode ? [{ debugName: "initials" }] : /* istanbul ignore next */ []);
2949
+ icon = input(null, ...ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []);
2950
+ compact = input(false, {
2951
+ ...ngDevMode ? { debugName: "compact" } : /* istanbul ignore next */ {},
2952
+ transform: booleanAttribute
2953
+ });
2954
+ class = input("", {
2955
+ ...ngDevMode ? { debugName: "class" } : /* istanbul ignore next */ {},
2956
+ alias: "class"
2957
+ });
2958
+ view = setupNavigationInitial({
2959
+ name: () => this.name(),
2960
+ initials: () => this.initials(),
2961
+ compact: () => this.compact(),
2962
+ class: () => this.class()
2963
+ });
2964
+ resolvedInitials = this.view.resolvedInitials;
2965
+ iconClasses = this.view.iconClasses;
2966
+ hostClasses = this.view.hostClasses;
2967
+ static ɵfac = i0.ɵɵngDeclareFactory({
2968
+ minVersion: "12.0.0",
2969
+ version: "22.2.2",
2970
+ ngImport: i0,
2971
+ type: NavigationHeaderInitialComponent,
2972
+ deps: [],
2973
+ target: i0.ɵɵFactoryTarget.Component
2974
+ });
2975
+ static ɵcmp = i0.ɵɵngDeclareComponent({
2976
+ minVersion: "17.0.0",
2977
+ version: "22.2.2",
2978
+ type: NavigationHeaderInitialComponent,
2979
+ isStandalone: true,
2980
+ selector: "NavigationHeaderInitial",
2981
+ inputs: {
2982
+ name: {
2983
+ classPropertyName: "name",
2984
+ publicName: "name",
2985
+ isSignal: true,
2986
+ isRequired: false,
2987
+ transformFunction: null
2988
+ },
2989
+ src: {
2990
+ classPropertyName: "src",
2991
+ publicName: "src",
2992
+ isSignal: true,
2993
+ isRequired: false,
2994
+ transformFunction: null
2995
+ },
2996
+ initials: {
2997
+ classPropertyName: "initials",
2998
+ publicName: "initials",
2999
+ isSignal: true,
3000
+ isRequired: false,
3001
+ transformFunction: null
3002
+ },
3003
+ icon: {
3004
+ classPropertyName: "icon",
3005
+ publicName: "icon",
3006
+ isSignal: true,
3007
+ isRequired: false,
3008
+ transformFunction: null
3009
+ },
3010
+ compact: {
3011
+ classPropertyName: "compact",
3012
+ publicName: "compact",
3013
+ isSignal: true,
3014
+ isRequired: false,
3015
+ transformFunction: null
3016
+ },
3017
+ class: {
3018
+ classPropertyName: "class",
3019
+ publicName: "class",
3020
+ isSignal: true,
3021
+ isRequired: false,
3022
+ transformFunction: null
3023
+ }
3024
+ },
3025
+ host: { properties: {
3026
+ "class": "hostClasses()",
3027
+ "attr.role": "name() ? 'img' : null",
3028
+ "attr.aria-label": "name() || null"
3029
+ } },
3030
+ ngImport: i0,
3031
+ template: `
3032
+ @if (src(); as source) {
3033
+ <img [src]="source" alt="" class="h-full w-full rounded-[inherit] object-cover" />
3034
+ } @else if (icon(); as glyph) {
3035
+ <Icon [name]="glyph" size="inherit" [fill]="1" [class]="iconClasses()" />
3036
+ } @else {
3037
+ <span class="text-xs font-semibold leading-none">{{ resolvedInitials() }}</span>
3038
+ }
3039
+ `,
3040
+ isInline: true,
3041
+ dependencies: [{
3042
+ kind: "component",
3043
+ type: IconComponent,
3044
+ selector: "Icon",
3045
+ inputs: [
3046
+ "name",
3047
+ "class",
3048
+ "size",
3049
+ "fill",
3050
+ "weight",
3051
+ "grade",
3052
+ "opticalSize"
3053
+ ]
3054
+ }]
3055
+ });
3056
+ };
3057
+ i0.ɵɵngDeclareClassMetadata({
3058
+ minVersion: "12.0.0",
3059
+ version: "22.2.2",
3060
+ ngImport: i0,
3061
+ type: NavigationHeaderInitialComponent,
3062
+ decorators: [{
3063
+ type: Component,
3064
+ args: [{
3065
+ selector: "NavigationHeaderInitial",
3066
+ imports: [IconComponent],
3067
+ host: {
3068
+ "[class]": "hostClasses()",
3069
+ "[attr.role]": "name() ? 'img' : null",
3070
+ "[attr.aria-label]": "name() || null"
3071
+ },
3072
+ template: `
3073
+ @if (src(); as source) {
3074
+ <img [src]="source" alt="" class="h-full w-full rounded-[inherit] object-cover" />
3075
+ } @else if (icon(); as glyph) {
3076
+ <Icon [name]="glyph" size="inherit" [fill]="1" [class]="iconClasses()" />
3077
+ } @else {
3078
+ <span class="text-xs font-semibold leading-none">{{ resolvedInitials() }}</span>
3079
+ }
3080
+ `
3081
+ }]
3082
+ }],
3083
+ propDecorators: {
3084
+ name: [{
3085
+ type: i0.Input,
3086
+ args: [{
3087
+ isSignal: true,
3088
+ alias: "name",
3089
+ required: false
3090
+ }]
3091
+ }],
3092
+ src: [{
3093
+ type: i0.Input,
3094
+ args: [{
3095
+ isSignal: true,
3096
+ alias: "src",
3097
+ required: false
3098
+ }]
3099
+ }],
3100
+ initials: [{
3101
+ type: i0.Input,
3102
+ args: [{
3103
+ isSignal: true,
3104
+ alias: "initials",
3105
+ required: false
3106
+ }]
3107
+ }],
3108
+ icon: [{
3109
+ type: i0.Input,
3110
+ args: [{
3111
+ isSignal: true,
3112
+ alias: "icon",
3113
+ required: false
3114
+ }]
3115
+ }],
3116
+ compact: [{
3117
+ type: i0.Input,
3118
+ args: [{
3119
+ isSignal: true,
3120
+ alias: "compact",
3121
+ required: false
3122
+ }]
3123
+ }],
3124
+ class: [{
3125
+ type: i0.Input,
3126
+ args: [{
3127
+ isSignal: true,
3128
+ alias: "class",
3129
+ required: false
3130
+ }]
3131
+ }]
3132
+ }
3133
+ });
3134
+ var NavigationHeaderTitleComponent = class NavigationHeaderTitleComponent {
3135
+ shell = inject(NAVIGATION_SHELL, { optional: true });
3136
+ title = input("", ...ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []);
3137
+ subtitle = input(null, ...ngDevMode ? [{ debugName: "subtitle" }] : /* istanbul ignore next */ []);
3138
+ class = input("", {
3139
+ ...ngDevMode ? { debugName: "class" } : /* istanbul ignore next */ {},
3140
+ alias: "class"
3141
+ });
3142
+ collapsed = computed(() => {
3143
+ const state = this.shell?.displayState();
3144
+ return state ? state.orientation === "vertical" && state.collapsed : false;
3145
+ }, ...ngDevMode ? [{ debugName: "collapsed" }] : /* istanbul ignore next */ []);
3146
+ hostClasses = computed(() => cn(this.collapsed() ? "hidden" : "flex min-w-0 flex-col justify-center", this.class()), ...ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []);
3147
+ static ɵfac = i0.ɵɵngDeclareFactory({
3148
+ minVersion: "12.0.0",
3149
+ version: "22.2.2",
3150
+ ngImport: i0,
3151
+ type: NavigationHeaderTitleComponent,
3152
+ deps: [],
3153
+ target: i0.ɵɵFactoryTarget.Component
3154
+ });
3155
+ static ɵcmp = i0.ɵɵngDeclareComponent({
3156
+ minVersion: "17.0.0",
3157
+ version: "22.2.2",
3158
+ type: NavigationHeaderTitleComponent,
3159
+ isStandalone: true,
3160
+ selector: "NavigationHeaderTitle",
3161
+ inputs: {
3162
+ title: {
3163
+ classPropertyName: "title",
3164
+ publicName: "title",
3165
+ isSignal: true,
3166
+ isRequired: false,
3167
+ transformFunction: null
3168
+ },
3169
+ subtitle: {
3170
+ classPropertyName: "subtitle",
3171
+ publicName: "subtitle",
3172
+ isSignal: true,
3173
+ isRequired: false,
3174
+ transformFunction: null
3175
+ },
3176
+ class: {
3177
+ classPropertyName: "class",
3178
+ publicName: "class",
3179
+ isSignal: true,
3180
+ isRequired: false,
3181
+ transformFunction: null
3182
+ }
3183
+ },
3184
+ host: { properties: {
3185
+ "class": "hostClasses()",
3186
+ "attr.data-collapsed": "collapsed()"
3187
+ } },
3188
+ ngImport: i0,
3189
+ template: `
3190
+ <span class="nav-text block truncate text-foreground">{{ title() }}</span>
3191
+ @if (subtitle(); as sub) {
3192
+ <span
3193
+ class="nav-subtitle block truncate text-muted-foreground"
3194
+ data-navigation-sidebar-subtitle
3195
+ >
3196
+ {{ sub }}
3197
+ </span>
3198
+ }
3199
+ `,
3200
+ isInline: true
3201
+ });
3202
+ };
3203
+ i0.ɵɵngDeclareClassMetadata({
3204
+ minVersion: "12.0.0",
3205
+ version: "22.2.2",
3206
+ ngImport: i0,
3207
+ type: NavigationHeaderTitleComponent,
3208
+ decorators: [{
3209
+ type: Component,
3210
+ args: [{
3211
+ selector: "NavigationHeaderTitle",
3212
+ host: {
3213
+ "[class]": "hostClasses()",
3214
+ "[attr.data-collapsed]": "collapsed()"
3215
+ },
3216
+ template: `
3217
+ <span class="nav-text block truncate text-foreground">{{ title() }}</span>
3218
+ @if (subtitle(); as sub) {
3219
+ <span
3220
+ class="nav-subtitle block truncate text-muted-foreground"
3221
+ data-navigation-sidebar-subtitle
3222
+ >
3223
+ {{ sub }}
3224
+ </span>
3225
+ }
3226
+ `
3227
+ }]
3228
+ }],
3229
+ propDecorators: {
3230
+ title: [{
3231
+ type: i0.Input,
3232
+ args: [{
3233
+ isSignal: true,
3234
+ alias: "title",
3235
+ required: false
3236
+ }]
3237
+ }],
3238
+ subtitle: [{
3239
+ type: i0.Input,
3240
+ args: [{
3241
+ isSignal: true,
3242
+ alias: "subtitle",
3243
+ required: false
3244
+ }]
3245
+ }],
3246
+ class: [{
3247
+ type: i0.Input,
3248
+ args: [{
3249
+ isSignal: true,
3250
+ alias: "class",
3251
+ required: false
3252
+ }]
3253
+ }]
3254
+ }
3255
+ });
3256
+ export { NAVIGATION_DOCKBAR_FALLBACK_ICON, NavigationAsideFooterDirective, NavigationCollapseExpandedDirective, NavigationCollapseRootDirective, NavigationContainerComponent, NavigationContentComponent, NavigationDockbarComponent, NavigationFlyoutComponent, NavigationFooterActionComponent, NavigationFooterComponent, NavigationFooterInitialComponent, NavigationFooterTitleComponent, NavigationHeaderComponent, NavigationHeaderInitialComponent, NavigationHeaderTitleComponent, NavigationIconDirective, NavigationMinidockComponent, NavigationNavbarComponent, NavigationSidebarComponent, deriveNavigationInitials, formatNavigationBadgeCount, normalizeUiNavItems, toMinidockItems };