@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,115 +1,212 @@
1
- import * as i0 from '@angular/core';
2
- import { signal, Service, input, booleanAttribute, Component, output, computed, model, inject, viewChild, effect } from '@angular/core';
3
- import { NavigationHeaderInitialComponent, NavigationHeaderTitleComponent, NavigationFooterActionComponent, NavigationFooterInitialComponent, NavigationFooterTitleComponent, NavigationSidebarComponent, NavigationHeaderComponent, NavigationFooterComponent, NavigationAsideFooterDirective, NavigationDockbarComponent, NavigationNavbarComponent, NavigationFlyoutComponent, NavigationContainerComponent } from '@ojiepermana/angular/navigation';
4
- import { IconComponent } from '@ojiepermana/angular/component/icon';
5
- import { ThemeSettingsComponent } from '@ojiepermana/angular/theme/component/settings';
6
- import { DOCUMENT, NgTemplateOutlet } from '@angular/common';
7
- import { cn } from '@ojiepermana/angular/component/utils/core';
8
- import { LayoutComponent, LayoutVerticalComponent, LayoutHorizontalComponent, LayoutEmptyComponent, LayoutFluidComponent, LayoutNavigationComponent, LayoutContentComponent } from '@ojiepermana/angular/theme/layout';
9
- import { LAYOUT_DEFAULT_SURFACE, LAYOUT_DEFAULT_APPEARANCE, LAYOUT_DEFAULT_WIDTH, LAYOUT_DEFAULT_TYPE } from '@ojiepermana/angular/theme/layout/types';
10
- import { NAVIGATION_ADAPTER } from '@ojiepermana/angular/navigation/core';
11
-
12
- /**
13
- * The identity shape the layout wrappers consume. The library defines the structure
14
- * only; the concrete brand and user values come from the consumer as inputs.
15
- */
16
-
17
- /** Registry key used only while `LayoutWrapperDefault` renders its desktop nav. */
18
- const LAYOUT_DESKTOP_NAVIGATION_DATA_ID = '__layout-desktop-navigation';
19
- /**
20
- * Registry of the brand and user identity a shell publishes (`LayoutWrapperDefault`, for
21
- * one). Other surfaces — the apps launcher in `Page`, say — read it so they show the same
22
- * brand and user as the nav flyout without taking inputs of their own.
23
- */
24
- class LayoutIdentityService {
25
- brandState = signal(null, /* @ts-ignore */
26
- ...(ngDevMode ? [{ debugName: "brandState" }] : /* istanbul ignore next */ []));
27
- userState = signal(null, /* @ts-ignore */
28
- ...(ngDevMode ? [{ debugName: "userState" }] : /* istanbul ignore next */ []));
29
- brand = this.brandState.asReadonly();
30
- user = this.userState.asReadonly();
31
- setBrand(brand) {
32
- this.brandState.set(brand);
33
- }
34
- setUser(user) {
35
- this.userState.set(user);
36
- }
37
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutIdentityService, deps: [], target: i0.ɵɵFactoryTarget.Service });
38
- static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.6", ngImport: i0, type: LayoutIdentityService });
39
- }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutIdentityService, decorators: [{
41
- type: Service
42
- }] });
43
-
44
- /**
45
- * The brand slot for `<NavigationHeader>`: initials or logo plus a title. Purely
46
- * input-driven.
47
- *
48
- * `compact` (dockbar, or an icon-only rail) hides the title. `host.class = 'contents'`
49
- * keeps `NavigationHeaderInitial` and `NavigationHeaderTitle` as direct flex children of
50
- * the header row; the title still auto-hides on a collapsed sidebar, because
51
- * `NAVIGATION_SHELL` reaches `<Navigation>` through the live injector tree.
52
- */
53
- class LayoutBrand {
54
- /** Identitas brand (nama, ikon, judul, subjudul). */
55
- brand = input.required(/* @ts-ignore */
56
- ...(ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []));
57
- /** Sembunyikan judul, sisakan inisial saja (dockbar / rail ikon-only). */
58
- compact = input(false, { ...(ngDevMode ? { debugName: "compact" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
59
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutBrand, deps: [], target: i0.ɵɵFactoryTarget.Component });
60
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: LayoutBrand, isStandalone: true, selector: "LayoutBrand", inputs: { brand: { classPropertyName: "brand", publicName: "brand", isSignal: true, isRequired: true, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "contents" }, ngImport: i0, template: `
1
+ import * as i0 from "@angular/core";
2
+ import { Component, Service, booleanAttribute, computed, effect, inject, input, model, output, signal, viewChild } from "@angular/core";
3
+ import { NavigationAsideFooterDirective, NavigationContainerComponent, NavigationDockbarComponent, NavigationFlyoutComponent, NavigationFooterActionComponent, NavigationFooterComponent, NavigationFooterInitialComponent, NavigationFooterTitleComponent, NavigationHeaderComponent, NavigationHeaderInitialComponent, NavigationHeaderTitleComponent, NavigationMinidockComponent, NavigationNavbarComponent, NavigationSidebarComponent } from "@ojiepermana/angular/navigation";
4
+ import { IconComponent } from "@ojiepermana/angular/component/icon";
5
+ import { ThemeSettingsComponent } from "@ojiepermana/angular/theme/component/settings";
6
+ import { DOCUMENT, NgTemplateOutlet } from "@angular/common";
7
+ import { cn } from "@ojiepermana/angular/component/utils/core";
8
+ import { LayoutComponent, LayoutContentComponent, LayoutEmptyComponent, LayoutFluidComponent, LayoutHorizontalComponent, LayoutNavigationComponent, LayoutVerticalComponent } from "@ojiepermana/angular/theme/layout";
9
+ import { LAYOUT_DEFAULT_APPEARANCE, LAYOUT_DEFAULT_SURFACE, LAYOUT_DEFAULT_TYPE, LAYOUT_DEFAULT_WIDTH } from "@ojiepermana/angular/theme/layout/types";
10
+ import { toMinidockItems } from "@ojiepermana/angular/navigation/types";
11
+ import { NAVIGATION_ADAPTER } from "@ojiepermana/angular/navigation/core";
12
+ const LAYOUT_DESKTOP_NAVIGATION_DATA_ID = "__layout-desktop-navigation";
13
+ var LayoutIdentityService = class LayoutIdentityService {
14
+ brandState = signal(null, ...ngDevMode ? [{ debugName: "brandState" }] : /* istanbul ignore next */ []);
15
+ userState = signal(null, ...ngDevMode ? [{ debugName: "userState" }] : /* istanbul ignore next */ []);
16
+ brand = this.brandState.asReadonly();
17
+ user = this.userState.asReadonly();
18
+ setBrand(brand) {
19
+ this.brandState.set(brand);
20
+ }
21
+ setUser(user) {
22
+ this.userState.set(user);
23
+ }
24
+ static ɵfac = i0.ɵɵngDeclareFactory({
25
+ minVersion: "12.0.0",
26
+ version: "22.2.2",
27
+ ngImport: i0,
28
+ type: LayoutIdentityService,
29
+ deps: [],
30
+ target: i0.ɵɵFactoryTarget.Service
31
+ });
32
+ static ɵprov = i0.ɵɵngDeclareService({
33
+ minVersion: "22.0.0",
34
+ version: "22.2.2",
35
+ ngImport: i0,
36
+ type: LayoutIdentityService
37
+ });
38
+ };
39
+ i0.ɵɵngDeclareClassMetadata({
40
+ minVersion: "12.0.0",
41
+ version: "22.2.2",
42
+ ngImport: i0,
43
+ type: LayoutIdentityService,
44
+ decorators: [{ type: Service }]
45
+ });
46
+ var LayoutBrand = class LayoutBrand {
47
+ brand = input.required(...ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []);
48
+ compact = input(false, {
49
+ ...ngDevMode ? { debugName: "compact" } : /* istanbul ignore next */ {},
50
+ transform: booleanAttribute
51
+ });
52
+ static ɵfac = i0.ɵɵngDeclareFactory({
53
+ minVersion: "12.0.0",
54
+ version: "22.2.2",
55
+ ngImport: i0,
56
+ type: LayoutBrand,
57
+ deps: [],
58
+ target: i0.ɵɵFactoryTarget.Component
59
+ });
60
+ static ɵcmp = i0.ɵɵngDeclareComponent({
61
+ minVersion: "17.0.0",
62
+ version: "22.2.2",
63
+ type: LayoutBrand,
64
+ isStandalone: true,
65
+ selector: "LayoutBrand",
66
+ inputs: {
67
+ brand: {
68
+ classPropertyName: "brand",
69
+ publicName: "brand",
70
+ isSignal: true,
71
+ isRequired: true,
72
+ transformFunction: null
73
+ },
74
+ compact: {
75
+ classPropertyName: "compact",
76
+ publicName: "compact",
77
+ isSignal: true,
78
+ isRequired: false,
79
+ transformFunction: null
80
+ }
81
+ },
82
+ host: { classAttribute: "contents" },
83
+ ngImport: i0,
84
+ template: `
61
85
  <NavigationHeaderInitial [name]="brand().name" [icon]="brand().icon" [compact]="compact()" />
62
86
  @if (!compact()) {
63
87
  <NavigationHeaderTitle [title]="brand().title" [subtitle]="brand().subtitle" />
64
88
  }
65
- `, isInline: true, dependencies: [{ kind: "component", type: NavigationHeaderInitialComponent, selector: "NavigationHeaderInitial", inputs: ["name", "src", "initials", "icon", "compact", "class"] }, { kind: "component", type: NavigationHeaderTitleComponent, selector: "NavigationHeaderTitle", inputs: ["title", "subtitle", "class"] }] });
66
- }
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutBrand, decorators: [{
68
- type: Component,
69
- args: [{
70
- selector: 'LayoutBrand',
71
- imports: [NavigationHeaderInitialComponent, NavigationHeaderTitleComponent],
72
- host: { class: 'contents' },
73
- template: `
89
+ `,
90
+ isInline: true,
91
+ dependencies: [{
92
+ kind: "component",
93
+ type: NavigationHeaderInitialComponent,
94
+ selector: "NavigationHeaderInitial",
95
+ inputs: [
96
+ "name",
97
+ "src",
98
+ "initials",
99
+ "icon",
100
+ "compact",
101
+ "class"
102
+ ]
103
+ }, {
104
+ kind: "component",
105
+ type: NavigationHeaderTitleComponent,
106
+ selector: "NavigationHeaderTitle",
107
+ inputs: [
108
+ "title",
109
+ "subtitle",
110
+ "class"
111
+ ]
112
+ }]
113
+ });
114
+ };
115
+ i0.ɵɵngDeclareClassMetadata({
116
+ minVersion: "12.0.0",
117
+ version: "22.2.2",
118
+ ngImport: i0,
119
+ type: LayoutBrand,
120
+ decorators: [{
121
+ type: Component,
122
+ args: [{
123
+ selector: "LayoutBrand",
124
+ imports: [NavigationHeaderInitialComponent, NavigationHeaderTitleComponent],
125
+ host: { class: "contents" },
126
+ template: `
74
127
  <NavigationHeaderInitial [name]="brand().name" [icon]="brand().icon" [compact]="compact()" />
75
128
  @if (!compact()) {
76
129
  <NavigationHeaderTitle [title]="brand().title" [subtitle]="brand().subtitle" />
77
130
  }
78
- `,
79
- }]
80
- }], propDecorators: { brand: [{ type: i0.Input, args: [{ isSignal: true, alias: "brand", required: true }] }], compact: [{ type: i0.Input, args: [{ isSignal: true, alias: "compact", required: false }] }] } });
81
-
82
- /**
83
- * The user slot for `<NavigationFooter>`: an optional identity plus the logout action.
84
- * Purely input-driven.
85
- *
86
- * `detailed` shows initials and name (a full sidebar); without it, only the logout
87
- * button. `host.class = 'contents'` makes the children direct flex children of the
88
- * footer, so `ml-auto` and the auto-hide on collapse (through `NAVIGATION_SHELL`) still
89
- * apply.
90
- *
91
- * The logout button only emits `(logout)`. Endpoint, cookie, and redirect target differ
92
- * per application, so the effect is entirely the consumer's — the library calls no
93
- * endpoint and performs no navigation. A consumer that never binds `(logout)` still
94
- * renders without error; the button simply does nothing, exactly as before this output
95
- * existed.
96
- */
97
- class LayoutUser {
98
- /** Identitas user (nama + email). */
99
- user = input.required(/* @ts-ignore */
100
- ...(ngDevMode ? [{ debugName: "user" }] : /* istanbul ignore next */ []));
101
- /** Show the user identity (initials and name), not only the logout button. */
102
- detailed = input(false, { ...(ngDevMode ? { debugName: "detailed" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
103
- /** Accessible name for the logout button. */
104
- logoutLabel = input('Logout', /* @ts-ignore */
105
- ...(ngDevMode ? [{ debugName: "logoutLabel" }] : /* istanbul ignore next */ []));
106
- /** Material symbol for the logout button. */
107
- logoutIcon = input('logout', /* @ts-ignore */
108
- ...(ngDevMode ? [{ debugName: "logoutIcon" }] : /* istanbul ignore next */ []));
109
- /** The user pressed logout. The effect is the consumer's; the library does not navigate. */
110
- logout = output();
111
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutUser, deps: [], target: i0.ɵɵFactoryTarget.Component });
112
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: LayoutUser, isStandalone: true, selector: "LayoutUser", inputs: { user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: true, transformFunction: null }, detailed: { classPropertyName: "detailed", publicName: "detailed", isSignal: true, isRequired: false, transformFunction: null }, logoutLabel: { classPropertyName: "logoutLabel", publicName: "logoutLabel", isSignal: true, isRequired: false, transformFunction: null }, logoutIcon: { classPropertyName: "logoutIcon", publicName: "logoutIcon", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { logout: "logout" }, host: { classAttribute: "contents" }, ngImport: i0, template: `
131
+ `
132
+ }]
133
+ }],
134
+ propDecorators: {
135
+ brand: [{
136
+ type: i0.Input,
137
+ args: [{
138
+ isSignal: true,
139
+ alias: "brand",
140
+ required: true
141
+ }]
142
+ }],
143
+ compact: [{
144
+ type: i0.Input,
145
+ args: [{
146
+ isSignal: true,
147
+ alias: "compact",
148
+ required: false
149
+ }]
150
+ }]
151
+ }
152
+ });
153
+ var LayoutUser = class LayoutUser {
154
+ user = input.required(...ngDevMode ? [{ debugName: "user" }] : /* istanbul ignore next */ []);
155
+ detailed = input(false, {
156
+ ...ngDevMode ? { debugName: "detailed" } : /* istanbul ignore next */ {},
157
+ transform: booleanAttribute
158
+ });
159
+ logoutLabel = input("Logout", ...ngDevMode ? [{ debugName: "logoutLabel" }] : /* istanbul ignore next */ []);
160
+ logoutIcon = input("logout", ...ngDevMode ? [{ debugName: "logoutIcon" }] : /* istanbul ignore next */ []);
161
+ logout = output();
162
+ static ɵfac = i0.ɵɵngDeclareFactory({
163
+ minVersion: "12.0.0",
164
+ version: "22.2.2",
165
+ ngImport: i0,
166
+ type: LayoutUser,
167
+ deps: [],
168
+ target: i0.ɵɵFactoryTarget.Component
169
+ });
170
+ static ɵcmp = i0.ɵɵngDeclareComponent({
171
+ minVersion: "17.0.0",
172
+ version: "22.2.2",
173
+ type: LayoutUser,
174
+ isStandalone: true,
175
+ selector: "LayoutUser",
176
+ inputs: {
177
+ user: {
178
+ classPropertyName: "user",
179
+ publicName: "user",
180
+ isSignal: true,
181
+ isRequired: true,
182
+ transformFunction: null
183
+ },
184
+ detailed: {
185
+ classPropertyName: "detailed",
186
+ publicName: "detailed",
187
+ isSignal: true,
188
+ isRequired: false,
189
+ transformFunction: null
190
+ },
191
+ logoutLabel: {
192
+ classPropertyName: "logoutLabel",
193
+ publicName: "logoutLabel",
194
+ isSignal: true,
195
+ isRequired: false,
196
+ transformFunction: null
197
+ },
198
+ logoutIcon: {
199
+ classPropertyName: "logoutIcon",
200
+ publicName: "logoutIcon",
201
+ isSignal: true,
202
+ isRequired: false,
203
+ transformFunction: null
204
+ }
205
+ },
206
+ outputs: { logout: "logout" },
207
+ host: { classAttribute: "contents" },
208
+ ngImport: i0,
209
+ template: `
113
210
  @if (detailed()) {
114
211
  <NavigationFooterInitial [name]="user().name" />
115
212
  <NavigationFooterTitle class="flex-1" [title]="user().name" [subtitle]="user().email" />
@@ -127,21 +224,87 @@ class LayoutUser {
127
224
  </button>
128
225
  <ThemeSettings [trigger-icon-only]="true" class="size-8! min-h-8!" />
129
226
  </NavigationFooterAction>
130
- `, isInline: true, dependencies: [{ kind: "component", type: IconComponent, selector: "Icon", inputs: ["name", "class", "size", "fill", "weight", "grade", "opticalSize"] }, { kind: "component", type: ThemeSettingsComponent, selector: "ThemeSettings", inputs: ["open", "trigger", "triggerLabel", "trigger-icon-only", "show-trigger", "side", "class"], outputs: ["openChange"] }, { kind: "component", type: NavigationFooterActionComponent, selector: "NavigationFooterAction", inputs: ["class"] }, { kind: "component", type: NavigationFooterInitialComponent, selector: "NavigationFooterInitial", inputs: ["name", "src", "initials", "icon", "class"] }, { kind: "component", type: NavigationFooterTitleComponent, selector: "NavigationFooterTitle", inputs: ["title", "subtitle", "class"] }] });
131
- }
132
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutUser, decorators: [{
133
- type: Component,
134
- args: [{
135
- selector: 'LayoutUser',
136
- imports: [
137
- IconComponent,
138
- ThemeSettingsComponent,
139
- NavigationFooterActionComponent,
140
- NavigationFooterInitialComponent,
141
- NavigationFooterTitleComponent,
142
- ],
143
- host: { class: 'contents' },
144
- template: `
227
+ `,
228
+ isInline: true,
229
+ dependencies: [
230
+ {
231
+ kind: "component",
232
+ type: IconComponent,
233
+ selector: "Icon",
234
+ inputs: [
235
+ "name",
236
+ "class",
237
+ "size",
238
+ "fill",
239
+ "weight",
240
+ "grade",
241
+ "opticalSize"
242
+ ]
243
+ },
244
+ {
245
+ kind: "component",
246
+ type: ThemeSettingsComponent,
247
+ selector: "ThemeSettings",
248
+ inputs: [
249
+ "open",
250
+ "trigger",
251
+ "triggerLabel",
252
+ "trigger-icon-only",
253
+ "show-trigger",
254
+ "side",
255
+ "class"
256
+ ],
257
+ outputs: ["openChange"]
258
+ },
259
+ {
260
+ kind: "component",
261
+ type: NavigationFooterActionComponent,
262
+ selector: "NavigationFooterAction",
263
+ inputs: ["class"]
264
+ },
265
+ {
266
+ kind: "component",
267
+ type: NavigationFooterInitialComponent,
268
+ selector: "NavigationFooterInitial",
269
+ inputs: [
270
+ "name",
271
+ "src",
272
+ "initials",
273
+ "icon",
274
+ "class"
275
+ ]
276
+ },
277
+ {
278
+ kind: "component",
279
+ type: NavigationFooterTitleComponent,
280
+ selector: "NavigationFooterTitle",
281
+ inputs: [
282
+ "title",
283
+ "subtitle",
284
+ "class"
285
+ ]
286
+ }
287
+ ]
288
+ });
289
+ };
290
+ i0.ɵɵngDeclareClassMetadata({
291
+ minVersion: "12.0.0",
292
+ version: "22.2.2",
293
+ ngImport: i0,
294
+ type: LayoutUser,
295
+ decorators: [{
296
+ type: Component,
297
+ args: [{
298
+ selector: "LayoutUser",
299
+ imports: [
300
+ IconComponent,
301
+ ThemeSettingsComponent,
302
+ NavigationFooterActionComponent,
303
+ NavigationFooterInitialComponent,
304
+ NavigationFooterTitleComponent
305
+ ],
306
+ host: { class: "contents" },
307
+ template: `
145
308
  @if (detailed()) {
146
309
  <NavigationFooterInitial [name]="user().name" />
147
310
  <NavigationFooterTitle class="flex-1" [title]="user().name" [subtitle]="user().email" />
@@ -159,48 +322,108 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
159
322
  </button>
160
323
  <ThemeSettings [trigger-icon-only]="true" class="size-8! min-h-8!" />
161
324
  </NavigationFooterAction>
162
- `,
163
- }]
164
- }], propDecorators: { user: [{ type: i0.Input, args: [{ isSignal: true, alias: "user", required: true }] }], detailed: [{ type: i0.Input, args: [{ isSignal: true, alias: "detailed", required: false }] }], logoutLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "logoutLabel", required: false }] }], logoutIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "logoutIcon", required: false }] }], logout: [{ type: i0.Output, args: ["logout"] }] } });
165
-
166
- /**
167
- * Nav type: a collapsible vertical sidebar (the default). Brand in the header, user
168
- * identity in the footer.
169
- *
170
- * Horizontal dividers: the sidebar ALWAYS uses the borders `NavigationHeader`
171
- * (`border-b`) and `NavigationFooter` (`border-t`) bring, `border-rail` included.
172
- * Layout's inset accent rail (`top-12`/`bottom-12`) sits behind a frame that is now
173
- * solid (`bg-background`) and is therefore invisible inside it; those explicit borders
174
- * are what keep the header and footer lines visible and running straight into the
175
- * content column (both `h-12`), consistent with {@link LayoutNavDockbar}.
176
- *
177
- * `host.class = 'contents'` makes `<NavigationSidebar>` an effective child of
178
- * `<Navigation>` (h-full, shell classes), while `NAVIGATION_SHELL` still reaches it
179
- * through the live injector tree and `<NavigationHeader>` stays a direct child for the
180
- * library's content projection.
181
- */
182
- class LayoutNavSidebar {
183
- brand = input.required(/* @ts-ignore */
184
- ...(ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []));
185
- user = input.required(/* @ts-ignore */
186
- ...(ngDevMode ? [{ debugName: "user" }] : /* istanbul ignore next */ []));
187
- /** Appearance from the shell (`[appearance]`); decides the separator border weight. */
188
- appearance = input('flat', /* @ts-ignore */
189
- ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
190
- navTypeMode = input('default', { ...(ngDevMode ? { debugName: "navTypeMode" } : /* istanbul ignore next */ {}), alias: 'nav-type-mode' });
191
- /** Forwarded from `<LayoutUser>`; the effect is the consumer's. */
192
- logout = output();
193
- isBorderRail = computed(() => this.appearance() === 'border-rail', /* @ts-ignore */
194
- ...(ngDevMode ? [{ debugName: "isBorderRail" }] : /* istanbul ignore next */ []));
195
- isCollapsed = computed(() => this.navTypeMode() === 'collapsed', /* @ts-ignore */
196
- ...(ngDevMode ? [{ debugName: "isCollapsed" }] : /* istanbul ignore next */ []));
197
- /** Border kanan pemisah; ketebalan ikut appearance: `border-rail` = `--layout-rail-width` (selaras rail layout), `flat` 1px. */
198
- shellClass = computed(() => this.isBorderRail()
199
- ? 'border-r-[length:var(--layout-rail-width)] border-border'
200
- : 'border-r border-border', /* @ts-ignore */
201
- ...(ngDevMode ? [{ debugName: "shellClass" }] : /* istanbul ignore next */ []));
202
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutNavSidebar, deps: [], target: i0.ɵɵFactoryTarget.Component });
203
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.6", type: LayoutNavSidebar, isStandalone: true, selector: "LayoutNavSidebar", inputs: { brand: { classPropertyName: "brand", publicName: "brand", isSignal: true, isRequired: true, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: true, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, navTypeMode: { classPropertyName: "navTypeMode", publicName: "nav-type-mode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { logout: "logout" }, host: { classAttribute: "contents" }, ngImport: i0, template: `
325
+ `
326
+ }]
327
+ }],
328
+ propDecorators: {
329
+ user: [{
330
+ type: i0.Input,
331
+ args: [{
332
+ isSignal: true,
333
+ alias: "user",
334
+ required: true
335
+ }]
336
+ }],
337
+ detailed: [{
338
+ type: i0.Input,
339
+ args: [{
340
+ isSignal: true,
341
+ alias: "detailed",
342
+ required: false
343
+ }]
344
+ }],
345
+ logoutLabel: [{
346
+ type: i0.Input,
347
+ args: [{
348
+ isSignal: true,
349
+ alias: "logoutLabel",
350
+ required: false
351
+ }]
352
+ }],
353
+ logoutIcon: [{
354
+ type: i0.Input,
355
+ args: [{
356
+ isSignal: true,
357
+ alias: "logoutIcon",
358
+ required: false
359
+ }]
360
+ }],
361
+ logout: [{
362
+ type: i0.Output,
363
+ args: ["logout"]
364
+ }]
365
+ }
366
+ });
367
+ var LayoutNavSidebar = class LayoutNavSidebar {
368
+ brand = input.required(...ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []);
369
+ user = input.required(...ngDevMode ? [{ debugName: "user" }] : /* istanbul ignore next */ []);
370
+ appearance = input("flat", ...ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []);
371
+ navTypeMode = input("default", {
372
+ ...ngDevMode ? { debugName: "navTypeMode" } : /* istanbul ignore next */ {},
373
+ alias: "nav-type-mode"
374
+ });
375
+ logout = output();
376
+ isBorderRail = computed(() => this.appearance() === "border-rail", ...ngDevMode ? [{ debugName: "isBorderRail" }] : /* istanbul ignore next */ []);
377
+ isCollapsed = computed(() => this.navTypeMode() === "collapsed", ...ngDevMode ? [{ debugName: "isCollapsed" }] : /* istanbul ignore next */ []);
378
+ shellClass = computed(() => this.isBorderRail() ? "border-r-[length:var(--layout-rail-width)] border-border" : "border-r border-border", ...ngDevMode ? [{ debugName: "shellClass" }] : /* istanbul ignore next */ []);
379
+ static ɵfac = i0.ɵɵngDeclareFactory({
380
+ minVersion: "12.0.0",
381
+ version: "22.2.2",
382
+ ngImport: i0,
383
+ type: LayoutNavSidebar,
384
+ deps: [],
385
+ target: i0.ɵɵFactoryTarget.Component
386
+ });
387
+ static ɵcmp = i0.ɵɵngDeclareComponent({
388
+ minVersion: "17.1.0",
389
+ version: "22.2.2",
390
+ type: LayoutNavSidebar,
391
+ isStandalone: true,
392
+ selector: "LayoutNavSidebar",
393
+ inputs: {
394
+ brand: {
395
+ classPropertyName: "brand",
396
+ publicName: "brand",
397
+ isSignal: true,
398
+ isRequired: true,
399
+ transformFunction: null
400
+ },
401
+ user: {
402
+ classPropertyName: "user",
403
+ publicName: "user",
404
+ isSignal: true,
405
+ isRequired: true,
406
+ transformFunction: null
407
+ },
408
+ appearance: {
409
+ classPropertyName: "appearance",
410
+ publicName: "appearance",
411
+ isSignal: true,
412
+ isRequired: false,
413
+ transformFunction: null
414
+ },
415
+ navTypeMode: {
416
+ classPropertyName: "navTypeMode",
417
+ publicName: "nav-type-mode",
418
+ isSignal: true,
419
+ isRequired: false,
420
+ transformFunction: null
421
+ }
422
+ },
423
+ outputs: { logout: "logout" },
424
+ host: { classAttribute: "contents" },
425
+ ngImport: i0,
426
+ template: `
204
427
  <NavigationSidebar nav-sidebar-collapse [collapsed]="isCollapsed()" [class]="shellClass()">
205
428
  <NavigationHeader>
206
429
  <LayoutBrand [brand]="brand()" />
@@ -209,21 +432,72 @@ class LayoutNavSidebar {
209
432
  <LayoutUser [user]="user()" detailed (logout)="logout.emit()" />
210
433
  </NavigationFooter>
211
434
  </NavigationSidebar>
212
- `, isInline: true, dependencies: [{ kind: "component", type: NavigationSidebarComponent, selector: "NavigationSidebar", inputs: ["position", "collapsed", "nav-sidebar-collapse", "previewExpanded", "class"] }, { kind: "component", type: NavigationHeaderComponent, selector: "NavigationHeader", inputs: ["toggle", "class"] }, { kind: "component", type: NavigationFooterComponent, selector: "NavigationFooter", inputs: ["class"] }, { kind: "component", type: LayoutBrand, selector: "LayoutBrand", inputs: ["brand", "compact"] }, { kind: "component", type: LayoutUser, selector: "LayoutUser", inputs: ["user", "detailed", "logoutLabel", "logoutIcon"], outputs: ["logout"] }] });
213
- }
214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutNavSidebar, decorators: [{
215
- type: Component,
216
- args: [{
217
- selector: 'LayoutNavSidebar',
218
- imports: [
219
- NavigationSidebarComponent,
220
- NavigationHeaderComponent,
221
- NavigationFooterComponent,
222
- LayoutBrand,
223
- LayoutUser,
224
- ],
225
- host: { class: 'contents' },
226
- template: `
435
+ `,
436
+ isInline: true,
437
+ dependencies: [
438
+ {
439
+ kind: "component",
440
+ type: NavigationSidebarComponent,
441
+ selector: "NavigationSidebar",
442
+ inputs: [
443
+ "position",
444
+ "collapsed",
445
+ "nav-sidebar-collapse",
446
+ "previewExpanded",
447
+ "class"
448
+ ]
449
+ },
450
+ {
451
+ kind: "component",
452
+ type: NavigationHeaderComponent,
453
+ selector: "NavigationHeader",
454
+ inputs: ["toggle", "class"]
455
+ },
456
+ {
457
+ kind: "component",
458
+ type: NavigationFooterComponent,
459
+ selector: "NavigationFooter",
460
+ inputs: ["class"]
461
+ },
462
+ {
463
+ kind: "component",
464
+ type: LayoutBrand,
465
+ selector: "LayoutBrand",
466
+ inputs: ["brand", "compact"]
467
+ },
468
+ {
469
+ kind: "component",
470
+ type: LayoutUser,
471
+ selector: "LayoutUser",
472
+ inputs: [
473
+ "user",
474
+ "detailed",
475
+ "logoutLabel",
476
+ "logoutIcon"
477
+ ],
478
+ outputs: ["logout"]
479
+ }
480
+ ]
481
+ });
482
+ };
483
+ i0.ɵɵngDeclareClassMetadata({
484
+ minVersion: "12.0.0",
485
+ version: "22.2.2",
486
+ ngImport: i0,
487
+ type: LayoutNavSidebar,
488
+ decorators: [{
489
+ type: Component,
490
+ args: [{
491
+ selector: "LayoutNavSidebar",
492
+ imports: [
493
+ NavigationSidebarComponent,
494
+ NavigationHeaderComponent,
495
+ NavigationFooterComponent,
496
+ LayoutBrand,
497
+ LayoutUser
498
+ ],
499
+ host: { class: "contents" },
500
+ template: `
227
501
  <NavigationSidebar nav-sidebar-collapse [collapsed]="isCollapsed()" [class]="shellClass()">
228
502
  <NavigationHeader>
229
503
  <LayoutBrand [brand]="brand()" />
@@ -232,56 +506,135 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
232
506
  <LayoutUser [user]="user()" detailed (logout)="logout.emit()" />
233
507
  </NavigationFooter>
234
508
  </NavigationSidebar>
235
- `,
236
- }]
237
- }], propDecorators: { brand: [{ type: i0.Input, args: [{ isSignal: true, alias: "brand", required: true }] }], user: [{ type: i0.Input, args: [{ isSignal: true, alias: "user", required: true }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], navTypeMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "nav-type-mode", required: false }] }], logout: [{ type: i0.Output, args: ["logout"] }] } });
238
-
509
+ `
510
+ }]
511
+ }],
512
+ propDecorators: {
513
+ brand: [{
514
+ type: i0.Input,
515
+ args: [{
516
+ isSignal: true,
517
+ alias: "brand",
518
+ required: true
519
+ }]
520
+ }],
521
+ user: [{
522
+ type: i0.Input,
523
+ args: [{
524
+ isSignal: true,
525
+ alias: "user",
526
+ required: true
527
+ }]
528
+ }],
529
+ appearance: [{
530
+ type: i0.Input,
531
+ args: [{
532
+ isSignal: true,
533
+ alias: "appearance",
534
+ required: false
535
+ }]
536
+ }],
537
+ navTypeMode: [{
538
+ type: i0.Input,
539
+ args: [{
540
+ isSignal: true,
541
+ alias: "nav-type-mode",
542
+ required: false
543
+ }]
544
+ }],
545
+ logout: [{
546
+ type: i0.Output,
547
+ args: ["logout"]
548
+ }]
549
+ }
550
+ });
239
551
  const EMPTY_NAVIGATION_BADGE_CONTEXT$1 = Object.freeze({});
240
- /**
241
- * Nav type: a vertical icon rail (dockbar). A compact brand (initials only) in the
242
- * header, the user's initials in the rail footer (title and actions auto-hide, because
243
- * the rail is always collapsed), and the full identity (name, email, logout) in the
244
- * aside footer — together with the rail initials they form one footer row, like an
245
- * expanded sidebar.
246
- *
247
- * Horizontal dividers: unlike the sidebar, which leaves the separator to Layout's inset
248
- * accent rail at `top-12`/`bottom-12` under `border-rail`, the dockbar ALWAYS uses the
249
- * borders `NavigationHeader`/`NavigationFooter` bring. The dockbar aside covers the inset
250
- * rail line with its own opaque background, so those explicit borders are what keep the
251
- * separator running straight from rail to aside (header and footer are both `h-12`).
252
- * See {@link LayoutNavSidebar} for why `host.class = 'contents'`.
253
- */
254
- class LayoutNavDockbar {
255
- brand = input.required(/* @ts-ignore */
256
- ...(ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []));
257
- user = input.required(/* @ts-ignore */
258
- ...(ngDevMode ? [{ debugName: "user" }] : /* istanbul ignore next */ []));
259
- /** Appearance from the shell (`[appearance]`); decides the separator border weight. */
260
- appearance = input('flat', /* @ts-ignore */
261
- ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
262
- navTypeMode = input('default', { ...(ngDevMode ? { debugName: "navTypeMode" } : /* istanbul ignore next */ {}), alias: 'nav-type-mode' });
263
- /** Opt-in route-aware header; ketika aktif, header route menggantikan compact brand. */
264
- dockbarRouteContext = input(null, { ...(ngDevMode ? { debugName: "dockbarRouteContext" } : /* istanbul ignore next */ {}), alias: 'dockbar-route-context' });
265
- /** The generic badge registry forwarded to `NavigationDockbar`. */
266
- dockbarBadgeContext = input(EMPTY_NAVIGATION_BADGE_CONTEXT$1, { ...(ngDevMode ? { debugName: "dockbarBadgeContext" } : /* istanbul ignore next */ {}), alias: 'dockbar-badge' });
267
- /** Forwarded from the rail and aside footer logout buttons; the effect is the consumer's. */
268
- logout = output();
269
- isBorderRail = computed(() => this.appearance() === 'border-rail', /* @ts-ignore */
270
- ...(ngDevMode ? [{ debugName: "isBorderRail" }] : /* istanbul ignore next */ []));
271
- dockbarMode = computed(() => this.navTypeMode() === 'drawer' ? 'drawer' : 'sticky', /* @ts-ignore */
272
- ...(ngDevMode ? [{ debugName: "dockbarMode" }] : /* istanbul ignore next */ []));
273
- routeContextEnabled = computed(() => {
274
- const context = this.dockbarRouteContext();
275
- return context !== null && context !== false;
276
- }, /* @ts-ignore */
277
- ...(ngDevMode ? [{ debugName: "routeContextEnabled" }] : /* istanbul ignore next */ []));
278
- /** Border kanan pemisah; ketebalan ikut appearance: `border-rail` = `--layout-rail-width` (selaras rail layout), `flat` 1px. */
279
- shellClass = computed(() => this.isBorderRail()
280
- ? 'border-r-[length:var(--layout-rail-width)] border-border'
281
- : 'border-r border-border', /* @ts-ignore */
282
- ...(ngDevMode ? [{ debugName: "shellClass" }] : /* istanbul ignore next */ []));
283
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutNavDockbar, deps: [], target: i0.ɵɵFactoryTarget.Component });
284
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: LayoutNavDockbar, isStandalone: true, selector: "LayoutNavDockbar", inputs: { brand: { classPropertyName: "brand", publicName: "brand", isSignal: true, isRequired: true, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: true, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, navTypeMode: { classPropertyName: "navTypeMode", publicName: "nav-type-mode", isSignal: true, isRequired: false, transformFunction: null }, dockbarRouteContext: { classPropertyName: "dockbarRouteContext", publicName: "dockbar-route-context", isSignal: true, isRequired: false, transformFunction: null }, dockbarBadgeContext: { classPropertyName: "dockbarBadgeContext", publicName: "dockbar-badge", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { logout: "logout" }, host: { classAttribute: "contents" }, ngImport: i0, template: `
552
+ var LayoutNavDockbar = class LayoutNavDockbar {
553
+ brand = input.required(...ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []);
554
+ user = input.required(...ngDevMode ? [{ debugName: "user" }] : /* istanbul ignore next */ []);
555
+ appearance = input("flat", ...ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []);
556
+ navTypeMode = input("default", {
557
+ ...ngDevMode ? { debugName: "navTypeMode" } : /* istanbul ignore next */ {},
558
+ alias: "nav-type-mode"
559
+ });
560
+ dockbarRouteContext = input(null, {
561
+ ...ngDevMode ? { debugName: "dockbarRouteContext" } : /* istanbul ignore next */ {},
562
+ alias: "dockbar-route-context"
563
+ });
564
+ dockbarBadgeContext = input(EMPTY_NAVIGATION_BADGE_CONTEXT$1, {
565
+ ...ngDevMode ? { debugName: "dockbarBadgeContext" } : /* istanbul ignore next */ {},
566
+ alias: "dockbar-badge"
567
+ });
568
+ logout = output();
569
+ isBorderRail = computed(() => this.appearance() === "border-rail", ...ngDevMode ? [{ debugName: "isBorderRail" }] : /* istanbul ignore next */ []);
570
+ dockbarMode = computed(() => this.navTypeMode() === "drawer" ? "drawer" : "sticky", ...ngDevMode ? [{ debugName: "dockbarMode" }] : /* istanbul ignore next */ []);
571
+ routeContextEnabled = computed(() => {
572
+ const context = this.dockbarRouteContext();
573
+ return context !== null && context !== false;
574
+ }, ...ngDevMode ? [{ debugName: "routeContextEnabled" }] : /* istanbul ignore next */ []);
575
+ shellClass = computed(() => this.isBorderRail() ? "border-r-[length:var(--layout-rail-width)] border-border" : "border-r border-border", ...ngDevMode ? [{ debugName: "shellClass" }] : /* istanbul ignore next */ []);
576
+ static ɵfac = i0.ɵɵngDeclareFactory({
577
+ minVersion: "12.0.0",
578
+ version: "22.2.2",
579
+ ngImport: i0,
580
+ type: LayoutNavDockbar,
581
+ deps: [],
582
+ target: i0.ɵɵFactoryTarget.Component
583
+ });
584
+ static ɵcmp = i0.ɵɵngDeclareComponent({
585
+ minVersion: "17.0.0",
586
+ version: "22.2.2",
587
+ type: LayoutNavDockbar,
588
+ isStandalone: true,
589
+ selector: "LayoutNavDockbar",
590
+ inputs: {
591
+ brand: {
592
+ classPropertyName: "brand",
593
+ publicName: "brand",
594
+ isSignal: true,
595
+ isRequired: true,
596
+ transformFunction: null
597
+ },
598
+ user: {
599
+ classPropertyName: "user",
600
+ publicName: "user",
601
+ isSignal: true,
602
+ isRequired: true,
603
+ transformFunction: null
604
+ },
605
+ appearance: {
606
+ classPropertyName: "appearance",
607
+ publicName: "appearance",
608
+ isSignal: true,
609
+ isRequired: false,
610
+ transformFunction: null
611
+ },
612
+ navTypeMode: {
613
+ classPropertyName: "navTypeMode",
614
+ publicName: "nav-type-mode",
615
+ isSignal: true,
616
+ isRequired: false,
617
+ transformFunction: null
618
+ },
619
+ dockbarRouteContext: {
620
+ classPropertyName: "dockbarRouteContext",
621
+ publicName: "dockbar-route-context",
622
+ isSignal: true,
623
+ isRequired: false,
624
+ transformFunction: null
625
+ },
626
+ dockbarBadgeContext: {
627
+ classPropertyName: "dockbarBadgeContext",
628
+ publicName: "dockbar-badge",
629
+ isSignal: true,
630
+ isRequired: false,
631
+ transformFunction: null
632
+ }
633
+ },
634
+ outputs: { logout: "logout" },
635
+ host: { classAttribute: "contents" },
636
+ ngImport: i0,
637
+ template: `
285
638
  <NavigationDockbar
286
639
  [mode]="dockbarMode()"
287
640
  [dockbar-route-context]="dockbarRouteContext()"
@@ -318,23 +671,93 @@ class LayoutNavDockbar {
318
671
  </button>
319
672
  </ng-template>
320
673
  </NavigationDockbar>
321
- `, isInline: true, dependencies: [{ kind: "component", type: IconComponent, selector: "Icon", inputs: ["name", "class", "size", "fill", "weight", "grade", "opticalSize"] }, { kind: "directive", type: NavigationAsideFooterDirective, selector: "ng-template[NavigationAsideFooter]" }, { kind: "component", type: NavigationDockbarComponent, selector: "NavigationDockbar", inputs: ["mode", "position", "dockbar-route-context", "dockbar-badge", "class"] }, { kind: "component", type: NavigationHeaderComponent, selector: "NavigationHeader", inputs: ["toggle", "class"] }, { kind: "component", type: NavigationFooterComponent, selector: "NavigationFooter", inputs: ["class"] }, { kind: "component", type: LayoutBrand, selector: "LayoutBrand", inputs: ["brand", "compact"] }, { kind: "component", type: LayoutUser, selector: "LayoutUser", inputs: ["user", "detailed", "logoutLabel", "logoutIcon"], outputs: ["logout"] }] });
322
- }
323
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutNavDockbar, decorators: [{
324
- type: Component,
325
- args: [{
326
- selector: 'LayoutNavDockbar',
327
- imports: [
328
- IconComponent,
329
- NavigationAsideFooterDirective,
330
- NavigationDockbarComponent,
331
- NavigationHeaderComponent,
332
- NavigationFooterComponent,
333
- LayoutBrand,
334
- LayoutUser,
335
- ],
336
- host: { class: 'contents' },
337
- template: `
674
+ `,
675
+ isInline: true,
676
+ dependencies: [
677
+ {
678
+ kind: "component",
679
+ type: IconComponent,
680
+ selector: "Icon",
681
+ inputs: [
682
+ "name",
683
+ "class",
684
+ "size",
685
+ "fill",
686
+ "weight",
687
+ "grade",
688
+ "opticalSize"
689
+ ]
690
+ },
691
+ {
692
+ kind: "directive",
693
+ type: NavigationAsideFooterDirective,
694
+ selector: "ng-template[NavigationAsideFooter]"
695
+ },
696
+ {
697
+ kind: "component",
698
+ type: NavigationDockbarComponent,
699
+ selector: "NavigationDockbar",
700
+ inputs: [
701
+ "mode",
702
+ "position",
703
+ "dockbar-route-context",
704
+ "dockbar-badge",
705
+ "class"
706
+ ]
707
+ },
708
+ {
709
+ kind: "component",
710
+ type: NavigationHeaderComponent,
711
+ selector: "NavigationHeader",
712
+ inputs: ["toggle", "class"]
713
+ },
714
+ {
715
+ kind: "component",
716
+ type: NavigationFooterComponent,
717
+ selector: "NavigationFooter",
718
+ inputs: ["class"]
719
+ },
720
+ {
721
+ kind: "component",
722
+ type: LayoutBrand,
723
+ selector: "LayoutBrand",
724
+ inputs: ["brand", "compact"]
725
+ },
726
+ {
727
+ kind: "component",
728
+ type: LayoutUser,
729
+ selector: "LayoutUser",
730
+ inputs: [
731
+ "user",
732
+ "detailed",
733
+ "logoutLabel",
734
+ "logoutIcon"
735
+ ],
736
+ outputs: ["logout"]
737
+ }
738
+ ]
739
+ });
740
+ };
741
+ i0.ɵɵngDeclareClassMetadata({
742
+ minVersion: "12.0.0",
743
+ version: "22.2.2",
744
+ ngImport: i0,
745
+ type: LayoutNavDockbar,
746
+ decorators: [{
747
+ type: Component,
748
+ args: [{
749
+ selector: "LayoutNavDockbar",
750
+ imports: [
751
+ IconComponent,
752
+ NavigationAsideFooterDirective,
753
+ NavigationDockbarComponent,
754
+ NavigationHeaderComponent,
755
+ NavigationFooterComponent,
756
+ LayoutBrand,
757
+ LayoutUser
758
+ ],
759
+ host: { class: "contents" },
760
+ template: `
338
761
  <NavigationDockbar
339
762
  [mode]="dockbarMode()"
340
763
  [dockbar-route-context]="dockbarRouteContext()"
@@ -371,27 +794,268 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
371
794
  </button>
372
795
  </ng-template>
373
796
  </NavigationDockbar>
797
+ `
798
+ }]
799
+ }],
800
+ propDecorators: {
801
+ brand: [{
802
+ type: i0.Input,
803
+ args: [{
804
+ isSignal: true,
805
+ alias: "brand",
806
+ required: true
807
+ }]
808
+ }],
809
+ user: [{
810
+ type: i0.Input,
811
+ args: [{
812
+ isSignal: true,
813
+ alias: "user",
814
+ required: true
815
+ }]
816
+ }],
817
+ appearance: [{
818
+ type: i0.Input,
819
+ args: [{
820
+ isSignal: true,
821
+ alias: "appearance",
822
+ required: false
823
+ }]
824
+ }],
825
+ navTypeMode: [{
826
+ type: i0.Input,
827
+ args: [{
828
+ isSignal: true,
829
+ alias: "nav-type-mode",
830
+ required: false
831
+ }]
832
+ }],
833
+ dockbarRouteContext: [{
834
+ type: i0.Input,
835
+ args: [{
836
+ isSignal: true,
837
+ alias: "dockbar-route-context",
838
+ required: false
839
+ }]
840
+ }],
841
+ dockbarBadgeContext: [{
842
+ type: i0.Input,
843
+ args: [{
844
+ isSignal: true,
845
+ alias: "dockbar-badge",
846
+ required: false
847
+ }]
848
+ }],
849
+ logout: [{
850
+ type: i0.Output,
851
+ args: ["logout"]
852
+ }]
853
+ }
854
+ });
855
+ var LayoutNavMinidock = class LayoutNavMinidock {
856
+ brand = input.required(...ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []);
857
+ user = input.required(...ngDevMode ? [{ debugName: "user" }] : /* istanbul ignore next */ []);
858
+ appearance = input("flat", ...ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []);
859
+ logout = output();
860
+ isBorderRail = computed(() => this.appearance() === "border-rail", ...ngDevMode ? [{ debugName: "isBorderRail" }] : /* istanbul ignore next */ []);
861
+ shellClass = computed(() => this.isBorderRail() ? "border-r-[length:var(--layout-rail-width)] border-border" : "border-r border-border", ...ngDevMode ? [{ debugName: "shellClass" }] : /* istanbul ignore next */ []);
862
+ static ɵfac = i0.ɵɵngDeclareFactory({
863
+ minVersion: "12.0.0",
864
+ version: "22.2.2",
865
+ ngImport: i0,
866
+ type: LayoutNavMinidock,
867
+ deps: [],
868
+ target: i0.ɵɵFactoryTarget.Component
869
+ });
870
+ static ɵcmp = i0.ɵɵngDeclareComponent({
871
+ minVersion: "17.1.0",
872
+ version: "22.2.2",
873
+ type: LayoutNavMinidock,
874
+ isStandalone: true,
875
+ selector: "LayoutNavMinidock",
876
+ inputs: {
877
+ brand: {
878
+ classPropertyName: "brand",
879
+ publicName: "brand",
880
+ isSignal: true,
881
+ isRequired: true,
882
+ transformFunction: null
883
+ },
884
+ user: {
885
+ classPropertyName: "user",
886
+ publicName: "user",
887
+ isSignal: true,
888
+ isRequired: true,
889
+ transformFunction: null
890
+ },
891
+ appearance: {
892
+ classPropertyName: "appearance",
893
+ publicName: "appearance",
894
+ isSignal: true,
895
+ isRequired: false,
896
+ transformFunction: null
897
+ }
898
+ },
899
+ outputs: { logout: "logout" },
900
+ host: { classAttribute: "contents" },
901
+ ngImport: i0,
902
+ template: `
903
+ <NavigationMinidock [class]="shellClass()">
904
+ <NavigationHeader>
905
+ <LayoutBrand [brand]="brand()" />
906
+ </NavigationHeader>
907
+ <NavigationFooter class="px-3">
908
+ <LayoutUser [user]="user()" detailed (logout)="logout.emit()" />
909
+ </NavigationFooter>
910
+ </NavigationMinidock>
374
911
  `,
375
- }]
376
- }], propDecorators: { brand: [{ type: i0.Input, args: [{ isSignal: true, alias: "brand", required: true }] }], user: [{ type: i0.Input, args: [{ isSignal: true, alias: "user", required: true }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], navTypeMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "nav-type-mode", required: false }] }], dockbarRouteContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "dockbar-route-context", required: false }] }], dockbarBadgeContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "dockbar-badge", required: false }] }], logout: [{ type: i0.Output, args: ["logout"] }] } });
377
-
378
- /**
379
- * Nav type: a top bar with inline items (navbar, horizontal). `appearance` follows the
380
- * shell (`flat | border-rail`). See {@link LayoutNavSidebar} for why
381
- * `host.class = 'contents'`.
382
- */
383
- class LayoutNavNavbar {
384
- brand = input.required(/* @ts-ignore */
385
- ...(ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []));
386
- user = input.required(/* @ts-ignore */
387
- ...(ngDevMode ? [{ debugName: "user" }] : /* istanbul ignore next */ []));
388
- /** Appearance from the shell (`[nav-type-style]`). */
389
- appearance = input('flat', /* @ts-ignore */
390
- ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
391
- /** Forwarded from `<LayoutUser>`; the effect is the consumer's. */
392
- logout = output();
393
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutNavNavbar, deps: [], target: i0.ɵɵFactoryTarget.Component });
394
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.6", type: LayoutNavNavbar, isStandalone: true, selector: "LayoutNavNavbar", inputs: { brand: { classPropertyName: "brand", publicName: "brand", isSignal: true, isRequired: true, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: true, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { logout: "logout" }, host: { classAttribute: "contents" }, ngImport: i0, template: `
912
+ isInline: true,
913
+ dependencies: [
914
+ {
915
+ kind: "component",
916
+ type: NavigationMinidockComponent,
917
+ selector: "NavigationMinidock",
918
+ inputs: ["position", "class"]
919
+ },
920
+ {
921
+ kind: "component",
922
+ type: NavigationHeaderComponent,
923
+ selector: "NavigationHeader",
924
+ inputs: ["toggle", "class"]
925
+ },
926
+ {
927
+ kind: "component",
928
+ type: NavigationFooterComponent,
929
+ selector: "NavigationFooter",
930
+ inputs: ["class"]
931
+ },
932
+ {
933
+ kind: "component",
934
+ type: LayoutBrand,
935
+ selector: "LayoutBrand",
936
+ inputs: ["brand", "compact"]
937
+ },
938
+ {
939
+ kind: "component",
940
+ type: LayoutUser,
941
+ selector: "LayoutUser",
942
+ inputs: [
943
+ "user",
944
+ "detailed",
945
+ "logoutLabel",
946
+ "logoutIcon"
947
+ ],
948
+ outputs: ["logout"]
949
+ }
950
+ ]
951
+ });
952
+ };
953
+ i0.ɵɵngDeclareClassMetadata({
954
+ minVersion: "12.0.0",
955
+ version: "22.2.2",
956
+ ngImport: i0,
957
+ type: LayoutNavMinidock,
958
+ decorators: [{
959
+ type: Component,
960
+ args: [{
961
+ selector: "LayoutNavMinidock",
962
+ imports: [
963
+ NavigationMinidockComponent,
964
+ NavigationHeaderComponent,
965
+ NavigationFooterComponent,
966
+ LayoutBrand,
967
+ LayoutUser
968
+ ],
969
+ host: { class: "contents" },
970
+ template: `
971
+ <NavigationMinidock [class]="shellClass()">
972
+ <NavigationHeader>
973
+ <LayoutBrand [brand]="brand()" />
974
+ </NavigationHeader>
975
+ <NavigationFooter class="px-3">
976
+ <LayoutUser [user]="user()" detailed (logout)="logout.emit()" />
977
+ </NavigationFooter>
978
+ </NavigationMinidock>
979
+ `
980
+ }]
981
+ }],
982
+ propDecorators: {
983
+ brand: [{
984
+ type: i0.Input,
985
+ args: [{
986
+ isSignal: true,
987
+ alias: "brand",
988
+ required: true
989
+ }]
990
+ }],
991
+ user: [{
992
+ type: i0.Input,
993
+ args: [{
994
+ isSignal: true,
995
+ alias: "user",
996
+ required: true
997
+ }]
998
+ }],
999
+ appearance: [{
1000
+ type: i0.Input,
1001
+ args: [{
1002
+ isSignal: true,
1003
+ alias: "appearance",
1004
+ required: false
1005
+ }]
1006
+ }],
1007
+ logout: [{
1008
+ type: i0.Output,
1009
+ args: ["logout"]
1010
+ }]
1011
+ }
1012
+ });
1013
+ var LayoutNavNavbar = class LayoutNavNavbar {
1014
+ brand = input.required(...ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []);
1015
+ user = input.required(...ngDevMode ? [{ debugName: "user" }] : /* istanbul ignore next */ []);
1016
+ appearance = input("flat", ...ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []);
1017
+ logout = output();
1018
+ static ɵfac = i0.ɵɵngDeclareFactory({
1019
+ minVersion: "12.0.0",
1020
+ version: "22.2.2",
1021
+ ngImport: i0,
1022
+ type: LayoutNavNavbar,
1023
+ deps: [],
1024
+ target: i0.ɵɵFactoryTarget.Component
1025
+ });
1026
+ static ɵcmp = i0.ɵɵngDeclareComponent({
1027
+ minVersion: "17.1.0",
1028
+ version: "22.2.2",
1029
+ type: LayoutNavNavbar,
1030
+ isStandalone: true,
1031
+ selector: "LayoutNavNavbar",
1032
+ inputs: {
1033
+ brand: {
1034
+ classPropertyName: "brand",
1035
+ publicName: "brand",
1036
+ isSignal: true,
1037
+ isRequired: true,
1038
+ transformFunction: null
1039
+ },
1040
+ user: {
1041
+ classPropertyName: "user",
1042
+ publicName: "user",
1043
+ isSignal: true,
1044
+ isRequired: true,
1045
+ transformFunction: null
1046
+ },
1047
+ appearance: {
1048
+ classPropertyName: "appearance",
1049
+ publicName: "appearance",
1050
+ isSignal: true,
1051
+ isRequired: false,
1052
+ transformFunction: null
1053
+ }
1054
+ },
1055
+ outputs: { logout: "logout" },
1056
+ host: { classAttribute: "contents" },
1057
+ ngImport: i0,
1058
+ template: `
395
1059
  <NavigationNavbar [nav-type-style]="appearance()" class="border-b border-border">
396
1060
  <NavigationHeader>
397
1061
  <LayoutBrand [brand]="brand()" />
@@ -400,21 +1064,70 @@ class LayoutNavNavbar {
400
1064
  <LayoutUser [user]="user()" (logout)="logout.emit()" />
401
1065
  </NavigationFooter>
402
1066
  </NavigationNavbar>
403
- `, isInline: true, dependencies: [{ kind: "component", type: NavigationNavbarComponent, selector: "NavigationNavbar", inputs: ["nav-position", "nav-type-style", "class"] }, { kind: "component", type: NavigationHeaderComponent, selector: "NavigationHeader", inputs: ["toggle", "class"] }, { kind: "component", type: NavigationFooterComponent, selector: "NavigationFooter", inputs: ["class"] }, { kind: "component", type: LayoutBrand, selector: "LayoutBrand", inputs: ["brand", "compact"] }, { kind: "component", type: LayoutUser, selector: "LayoutUser", inputs: ["user", "detailed", "logoutLabel", "logoutIcon"], outputs: ["logout"] }] });
404
- }
405
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutNavNavbar, decorators: [{
406
- type: Component,
407
- args: [{
408
- selector: 'LayoutNavNavbar',
409
- imports: [
410
- NavigationNavbarComponent,
411
- NavigationHeaderComponent,
412
- NavigationFooterComponent,
413
- LayoutBrand,
414
- LayoutUser,
415
- ],
416
- host: { class: 'contents' },
417
- template: `
1067
+ `,
1068
+ isInline: true,
1069
+ dependencies: [
1070
+ {
1071
+ kind: "component",
1072
+ type: NavigationNavbarComponent,
1073
+ selector: "NavigationNavbar",
1074
+ inputs: [
1075
+ "nav-position",
1076
+ "nav-type-style",
1077
+ "class"
1078
+ ]
1079
+ },
1080
+ {
1081
+ kind: "component",
1082
+ type: NavigationHeaderComponent,
1083
+ selector: "NavigationHeader",
1084
+ inputs: ["toggle", "class"]
1085
+ },
1086
+ {
1087
+ kind: "component",
1088
+ type: NavigationFooterComponent,
1089
+ selector: "NavigationFooter",
1090
+ inputs: ["class"]
1091
+ },
1092
+ {
1093
+ kind: "component",
1094
+ type: LayoutBrand,
1095
+ selector: "LayoutBrand",
1096
+ inputs: ["brand", "compact"]
1097
+ },
1098
+ {
1099
+ kind: "component",
1100
+ type: LayoutUser,
1101
+ selector: "LayoutUser",
1102
+ inputs: [
1103
+ "user",
1104
+ "detailed",
1105
+ "logoutLabel",
1106
+ "logoutIcon"
1107
+ ],
1108
+ outputs: ["logout"]
1109
+ }
1110
+ ]
1111
+ });
1112
+ };
1113
+ i0.ɵɵngDeclareClassMetadata({
1114
+ minVersion: "12.0.0",
1115
+ version: "22.2.2",
1116
+ ngImport: i0,
1117
+ type: LayoutNavNavbar,
1118
+ decorators: [{
1119
+ type: Component,
1120
+ args: [{
1121
+ selector: "LayoutNavNavbar",
1122
+ imports: [
1123
+ NavigationNavbarComponent,
1124
+ NavigationHeaderComponent,
1125
+ NavigationFooterComponent,
1126
+ LayoutBrand,
1127
+ LayoutUser
1128
+ ],
1129
+ host: { class: "contents" },
1130
+ template: `
418
1131
  <NavigationNavbar [nav-type-style]="appearance()" class="border-b border-border">
419
1132
  <NavigationHeader>
420
1133
  <LayoutBrand [brand]="brand()" />
@@ -423,26 +1136,86 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
423
1136
  <LayoutUser [user]="user()" (logout)="logout.emit()" />
424
1137
  </NavigationFooter>
425
1138
  </NavigationNavbar>
426
- `,
427
- }]
428
- }], propDecorators: { brand: [{ type: i0.Input, args: [{ isSignal: true, alias: "brand", required: true }] }], user: [{ type: i0.Input, args: [{ isSignal: true, alias: "user", required: true }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], logout: [{ type: i0.Output, args: ["logout"] }] } });
429
-
430
- /**
431
- * Nav type: a top bar with a flyout trigger button (horizontal). `appearance` follows the
432
- * shell. See {@link LayoutNavSidebar} for why `host.class = 'contents'`.
433
- */
434
- class LayoutNavFlyout {
435
- brand = input.required(/* @ts-ignore */
436
- ...(ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []));
437
- user = input.required(/* @ts-ignore */
438
- ...(ngDevMode ? [{ debugName: "user" }] : /* istanbul ignore next */ []));
439
- /** Appearance from the shell (`[nav-type-style]`). */
440
- appearance = input('flat', /* @ts-ignore */
441
- ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
442
- /** Forwarded from `<LayoutUser>`; the effect is the consumer's. */
443
- logout = output();
444
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutNavFlyout, deps: [], target: i0.ɵɵFactoryTarget.Component });
445
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.6", type: LayoutNavFlyout, isStandalone: true, selector: "LayoutNavFlyout", inputs: { brand: { classPropertyName: "brand", publicName: "brand", isSignal: true, isRequired: true, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: true, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { logout: "logout" }, host: { classAttribute: "contents" }, ngImport: i0, template: `
1139
+ `
1140
+ }]
1141
+ }],
1142
+ propDecorators: {
1143
+ brand: [{
1144
+ type: i0.Input,
1145
+ args: [{
1146
+ isSignal: true,
1147
+ alias: "brand",
1148
+ required: true
1149
+ }]
1150
+ }],
1151
+ user: [{
1152
+ type: i0.Input,
1153
+ args: [{
1154
+ isSignal: true,
1155
+ alias: "user",
1156
+ required: true
1157
+ }]
1158
+ }],
1159
+ appearance: [{
1160
+ type: i0.Input,
1161
+ args: [{
1162
+ isSignal: true,
1163
+ alias: "appearance",
1164
+ required: false
1165
+ }]
1166
+ }],
1167
+ logout: [{
1168
+ type: i0.Output,
1169
+ args: ["logout"]
1170
+ }]
1171
+ }
1172
+ });
1173
+ var LayoutNavFlyout = class LayoutNavFlyout {
1174
+ brand = input.required(...ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []);
1175
+ user = input.required(...ngDevMode ? [{ debugName: "user" }] : /* istanbul ignore next */ []);
1176
+ appearance = input("flat", ...ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []);
1177
+ logout = output();
1178
+ static ɵfac = i0.ɵɵngDeclareFactory({
1179
+ minVersion: "12.0.0",
1180
+ version: "22.2.2",
1181
+ ngImport: i0,
1182
+ type: LayoutNavFlyout,
1183
+ deps: [],
1184
+ target: i0.ɵɵFactoryTarget.Component
1185
+ });
1186
+ static ɵcmp = i0.ɵɵngDeclareComponent({
1187
+ minVersion: "17.1.0",
1188
+ version: "22.2.2",
1189
+ type: LayoutNavFlyout,
1190
+ isStandalone: true,
1191
+ selector: "LayoutNavFlyout",
1192
+ inputs: {
1193
+ brand: {
1194
+ classPropertyName: "brand",
1195
+ publicName: "brand",
1196
+ isSignal: true,
1197
+ isRequired: true,
1198
+ transformFunction: null
1199
+ },
1200
+ user: {
1201
+ classPropertyName: "user",
1202
+ publicName: "user",
1203
+ isSignal: true,
1204
+ isRequired: true,
1205
+ transformFunction: null
1206
+ },
1207
+ appearance: {
1208
+ classPropertyName: "appearance",
1209
+ publicName: "appearance",
1210
+ isSignal: true,
1211
+ isRequired: false,
1212
+ transformFunction: null
1213
+ }
1214
+ },
1215
+ outputs: { logout: "logout" },
1216
+ host: { classAttribute: "contents" },
1217
+ ngImport: i0,
1218
+ template: `
446
1219
  <NavigationFlyout
447
1220
  [nav-type-style]="appearance()"
448
1221
  label="Menu"
@@ -456,21 +1229,79 @@ class LayoutNavFlyout {
456
1229
  <LayoutUser [user]="user()" (logout)="logout.emit()" />
457
1230
  </NavigationFooter>
458
1231
  </NavigationFlyout>
459
- `, isInline: true, dependencies: [{ kind: "component", type: NavigationFlyoutComponent, selector: "NavigationFlyout", inputs: ["label", "icon", "icon-only", "icon-position", "trigger-variant", "trigger-floating", "panel-viewport", "trigger-class", "trigger-button-class", "nav-position", "nav-type-style", "class"] }, { kind: "component", type: NavigationHeaderComponent, selector: "NavigationHeader", inputs: ["toggle", "class"] }, { kind: "component", type: NavigationFooterComponent, selector: "NavigationFooter", inputs: ["class"] }, { kind: "component", type: LayoutBrand, selector: "LayoutBrand", inputs: ["brand", "compact"] }, { kind: "component", type: LayoutUser, selector: "LayoutUser", inputs: ["user", "detailed", "logoutLabel", "logoutIcon"], outputs: ["logout"] }] });
460
- }
461
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutNavFlyout, decorators: [{
462
- type: Component,
463
- args: [{
464
- selector: 'LayoutNavFlyout',
465
- imports: [
466
- NavigationFlyoutComponent,
467
- NavigationHeaderComponent,
468
- NavigationFooterComponent,
469
- LayoutBrand,
470
- LayoutUser,
471
- ],
472
- host: { class: 'contents' },
473
- template: `
1232
+ `,
1233
+ isInline: true,
1234
+ dependencies: [
1235
+ {
1236
+ kind: "component",
1237
+ type: NavigationFlyoutComponent,
1238
+ selector: "NavigationFlyout",
1239
+ inputs: [
1240
+ "label",
1241
+ "icon",
1242
+ "icon-only",
1243
+ "icon-position",
1244
+ "trigger-variant",
1245
+ "trigger-floating",
1246
+ "panel-viewport",
1247
+ "trigger-class",
1248
+ "trigger-button-class",
1249
+ "nav-position",
1250
+ "nav-type-style",
1251
+ "class"
1252
+ ]
1253
+ },
1254
+ {
1255
+ kind: "component",
1256
+ type: NavigationHeaderComponent,
1257
+ selector: "NavigationHeader",
1258
+ inputs: ["toggle", "class"]
1259
+ },
1260
+ {
1261
+ kind: "component",
1262
+ type: NavigationFooterComponent,
1263
+ selector: "NavigationFooter",
1264
+ inputs: ["class"]
1265
+ },
1266
+ {
1267
+ kind: "component",
1268
+ type: LayoutBrand,
1269
+ selector: "LayoutBrand",
1270
+ inputs: ["brand", "compact"]
1271
+ },
1272
+ {
1273
+ kind: "component",
1274
+ type: LayoutUser,
1275
+ selector: "LayoutUser",
1276
+ inputs: [
1277
+ "user",
1278
+ "detailed",
1279
+ "logoutLabel",
1280
+ "logoutIcon"
1281
+ ],
1282
+ outputs: ["logout"]
1283
+ }
1284
+ ]
1285
+ });
1286
+ };
1287
+ i0.ɵɵngDeclareClassMetadata({
1288
+ minVersion: "12.0.0",
1289
+ version: "22.2.2",
1290
+ ngImport: i0,
1291
+ type: LayoutNavFlyout,
1292
+ decorators: [{
1293
+ type: Component,
1294
+ args: [{
1295
+ selector: "LayoutNavFlyout",
1296
+ imports: [
1297
+ NavigationFlyoutComponent,
1298
+ NavigationHeaderComponent,
1299
+ NavigationFooterComponent,
1300
+ LayoutBrand,
1301
+ LayoutUser
1302
+ ],
1303
+ host: { class: "contents" },
1304
+ template: `
474
1305
  <NavigationFlyout
475
1306
  [nav-type-style]="appearance()"
476
1307
  label="Menu"
@@ -484,206 +1315,407 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
484
1315
  <LayoutUser [user]="user()" (logout)="logout.emit()" />
485
1316
  </NavigationFooter>
486
1317
  </NavigationFlyout>
487
- `,
488
- }]
489
- }], propDecorators: { brand: [{ type: i0.Input, args: [{ isSignal: true, alias: "brand", required: true }] }], user: [{ type: i0.Input, args: [{ isSignal: true, alias: "user", required: true }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], logout: [{ type: i0.Output, args: ["logout"] }] } });
490
-
491
- /**
492
- * Nav type: a brand-only sidebar for the `empty` and `fluid` variants, where
493
- * `LayoutNavigation` hides the nav — so no collapse and no footer. See
494
- * {@link LayoutNavSidebar} for why `host.class = 'contents'`.
495
- */
496
- class LayoutNavMinimal {
497
- brand = input.required(/* @ts-ignore */
498
- ...(ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []));
499
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutNavMinimal, deps: [], target: i0.ɵɵFactoryTarget.Component });
500
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.6", type: LayoutNavMinimal, isStandalone: true, selector: "LayoutNavMinimal", inputs: { brand: { classPropertyName: "brand", publicName: "brand", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "contents" }, ngImport: i0, template: `
1318
+ `
1319
+ }]
1320
+ }],
1321
+ propDecorators: {
1322
+ brand: [{
1323
+ type: i0.Input,
1324
+ args: [{
1325
+ isSignal: true,
1326
+ alias: "brand",
1327
+ required: true
1328
+ }]
1329
+ }],
1330
+ user: [{
1331
+ type: i0.Input,
1332
+ args: [{
1333
+ isSignal: true,
1334
+ alias: "user",
1335
+ required: true
1336
+ }]
1337
+ }],
1338
+ appearance: [{
1339
+ type: i0.Input,
1340
+ args: [{
1341
+ isSignal: true,
1342
+ alias: "appearance",
1343
+ required: false
1344
+ }]
1345
+ }],
1346
+ logout: [{
1347
+ type: i0.Output,
1348
+ args: ["logout"]
1349
+ }]
1350
+ }
1351
+ });
1352
+ var LayoutNavMinimal = class LayoutNavMinimal {
1353
+ brand = input.required(...ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []);
1354
+ static ɵfac = i0.ɵɵngDeclareFactory({
1355
+ minVersion: "12.0.0",
1356
+ version: "22.2.2",
1357
+ ngImport: i0,
1358
+ type: LayoutNavMinimal,
1359
+ deps: [],
1360
+ target: i0.ɵɵFactoryTarget.Component
1361
+ });
1362
+ static ɵcmp = i0.ɵɵngDeclareComponent({
1363
+ minVersion: "17.1.0",
1364
+ version: "22.2.2",
1365
+ type: LayoutNavMinimal,
1366
+ isStandalone: true,
1367
+ selector: "LayoutNavMinimal",
1368
+ inputs: { brand: {
1369
+ classPropertyName: "brand",
1370
+ publicName: "brand",
1371
+ isSignal: true,
1372
+ isRequired: true,
1373
+ transformFunction: null
1374
+ } },
1375
+ host: { classAttribute: "contents" },
1376
+ ngImport: i0,
1377
+ template: `
501
1378
  <NavigationSidebar>
502
1379
  <NavigationHeader>
503
1380
  <LayoutBrand [brand]="brand()" />
504
1381
  </NavigationHeader>
505
1382
  </NavigationSidebar>
506
- `, isInline: true, dependencies: [{ kind: "component", type: NavigationSidebarComponent, selector: "NavigationSidebar", inputs: ["position", "collapsed", "nav-sidebar-collapse", "previewExpanded", "class"] }, { kind: "component", type: NavigationHeaderComponent, selector: "NavigationHeader", inputs: ["toggle", "class"] }, { kind: "component", type: LayoutBrand, selector: "LayoutBrand", inputs: ["brand", "compact"] }] });
507
- }
508
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutNavMinimal, decorators: [{
509
- type: Component,
510
- args: [{
511
- selector: 'LayoutNavMinimal',
512
- imports: [NavigationSidebarComponent, NavigationHeaderComponent, LayoutBrand],
513
- host: { class: 'contents' },
514
- template: `
1383
+ `,
1384
+ isInline: true,
1385
+ dependencies: [
1386
+ {
1387
+ kind: "component",
1388
+ type: NavigationSidebarComponent,
1389
+ selector: "NavigationSidebar",
1390
+ inputs: [
1391
+ "position",
1392
+ "collapsed",
1393
+ "nav-sidebar-collapse",
1394
+ "previewExpanded",
1395
+ "class"
1396
+ ]
1397
+ },
1398
+ {
1399
+ kind: "component",
1400
+ type: NavigationHeaderComponent,
1401
+ selector: "NavigationHeader",
1402
+ inputs: ["toggle", "class"]
1403
+ },
1404
+ {
1405
+ kind: "component",
1406
+ type: LayoutBrand,
1407
+ selector: "LayoutBrand",
1408
+ inputs: ["brand", "compact"]
1409
+ }
1410
+ ]
1411
+ });
1412
+ };
1413
+ i0.ɵɵngDeclareClassMetadata({
1414
+ minVersion: "12.0.0",
1415
+ version: "22.2.2",
1416
+ ngImport: i0,
1417
+ type: LayoutNavMinimal,
1418
+ decorators: [{
1419
+ type: Component,
1420
+ args: [{
1421
+ selector: "LayoutNavMinimal",
1422
+ imports: [
1423
+ NavigationSidebarComponent,
1424
+ NavigationHeaderComponent,
1425
+ LayoutBrand
1426
+ ],
1427
+ host: { class: "contents" },
1428
+ template: `
515
1429
  <NavigationSidebar>
516
1430
  <NavigationHeader>
517
1431
  <LayoutBrand [brand]="brand()" />
518
1432
  </NavigationHeader>
519
1433
  </NavigationSidebar>
520
- `,
521
- }]
522
- }], propDecorators: { brand: [{ type: i0.Input, args: [{ isSignal: true, alias: "brand", required: true }] }] } });
523
-
1434
+ `
1435
+ }]
1436
+ }],
1437
+ propDecorators: { brand: [{
1438
+ type: i0.Input,
1439
+ args: [{
1440
+ isSignal: true,
1441
+ alias: "brand",
1442
+ required: true
1443
+ }]
1444
+ }] }
1445
+ });
524
1446
  const EMPTY_NAVIGATION_BADGE_CONTEXT = Object.freeze({});
525
- /**
526
- * A ready-made layout shell — the consumer supplies data through inputs instead of
527
- * assembling `Layout > LayoutVertical/Horizontal/Empty/Fluid > LayoutNavigation >
528
- * Navigation > nav type` by hand.
529
- *
530
- * ```html
531
- * <LayoutWrapperDefault
532
- * [surface]="surface" [layout-appearance]="appearance" [width]="width"
533
- * [layout-type]="layoutType" [nav-type]="navType"
534
- * [data]="navItems" [brand]="brand" [user]="user"
535
- * (logout)="signOut()"
536
- * >
537
- * <router-outlet /> <!-- page content is projected into LayoutContent -->
538
- * </LayoutWrapperDefault>
539
- * ```
540
- *
541
- * The `register*` defaults (LayoutService) stay the consumer's job; this wrapper is purely
542
- * presentational — two axes (`effectiveLayoutType` → wrapper, `navKind` → nav type) over one
543
- * shared skeleton. Injection stays sound: `<Navigation>` provides `NAVIGATION_SHELL` inside
544
- * `#body`, and each nav type is `display:contents`, so `<NavigationXxx>` is an effective child
545
- * of `<Navigation>`.
546
- */
547
- class LayoutWrapperDefault {
548
- /** Surface latar shell (mis. `grid`, `flat`). */
549
- surface = input(LAYOUT_DEFAULT_SURFACE, /* @ts-ignore */
550
- ...(ngDevMode ? [{ debugName: "surface" }] : /* istanbul ignore next */ []));
551
- /** Appearance shell & nav (`flat | border-rail`). */
552
- appearance = input(LAYOUT_DEFAULT_APPEARANCE, { ...(ngDevMode ? { debugName: "appearance" } : /* istanbul ignore next */ {}), alias: 'layout-appearance' });
553
- /** Frame width (`full`, `container`, and so on). */
554
- width = input(LAYOUT_DEFAULT_WIDTH, /* @ts-ignore */
555
- ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
556
- /** Tipe layout dasar (`vertical | horizontal | empty | fluid`); `empty`/`fluid` override nav. */
557
- layoutType = input(LAYOUT_DEFAULT_TYPE, { ...(ngDevMode ? { debugName: "layoutType" } : /* istanbul ignore next */ {}), alias: 'layout-type' });
558
- /**
559
- * The shell's navigation type. `desktop` only means anything on a horizontal frame:
560
- * the titlebar becomes the primary chrome and the navigation area follows the
561
- * content-focused `empty` behaviour.
562
- */
563
- navType = input('sidebar', { ...(ngDevMode ? { debugName: "navType" } : /* istanbul ignore next */ {}), alias: 'nav-type' });
564
- /** Presentation mode for the active nav type (`collapsed` sidebar / `drawer` dockbar). */
565
- navTypeMode = input('default', { ...(ngDevMode ? { debugName: "navTypeMode" } : /* istanbul ignore next */ {}), alias: 'nav-type-mode' });
566
- /** Opt-in route-aware dockbar state; ignored by other navigation types. */
567
- dockbarRouteContext = input(null, { ...(ngDevMode ? { debugName: "dockbarRouteContext" } : /* istanbul ignore next */ {}), alias: 'dockbar-route-context' });
568
- /** Generic dockbar badge registry; ignored by sidebar/navbar/flyout. */
569
- dockbarBadgeContext = input(EMPTY_NAVIGATION_BADGE_CONTEXT, { ...(ngDevMode ? { debugName: "dockbarBadgeContext" } : /* istanbul ignore next */ {}), alias: 'dockbar-badge' });
570
- /** Item navigasi. */
571
- data = input.required(/* @ts-ignore */
572
- ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
573
- /** Identitas brand. */
574
- brand = input.required(/* @ts-ignore */
575
- ...(ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []));
576
- /** Identitas user. */
577
- user = input.required(/* @ts-ignore */
578
- ...(ngDevMode ? [{ debugName: "user" }] : /* istanbul ignore next */ []));
579
- /** Id landmark konten utama sekaligus target skip link. */
580
- contentId = input('main-content', { ...(ngDevMode ? { debugName: "contentId" } : /* istanbul ignore next */ {}), alias: 'content-id' });
581
- /** Skip-link label; the consumer can localise it. */
582
- skipLinkLabel = input('Skip to main content', { ...(ngDevMode ? { debugName: "skipLinkLabel" } : /* istanbul ignore next */ {}), alias: 'skip-link-label' });
583
- /** Fokuskan landmark utama setelah route selesai berubah. */
584
- focusOnNavigation = input(false, { ...(ngDevMode ? { debugName: "focusOnNavigation" } : /* istanbul ignore next */ {}), alias: 'focus-on-navigation' });
585
- /** Controlled/uncontrolled state drawer navigasi mobile. */
586
- mobileNavOpen = model(false, { ...(ngDevMode ? { debugName: "mobileNavOpen" } : /* istanbul ignore next */ {}), alias: 'mobile-nav-open' });
587
- mobileNavLabel = input('Open navigation', { ...(ngDevMode ? { debugName: "mobileNavLabel" } : /* istanbul ignore next */ {}), alias: 'mobile-nav-label' });
588
- closeMobileNavLabel = input('Close navigation', { ...(ngDevMode ? { debugName: "closeMobileNavLabel" } : /* istanbul ignore next */ {}), alias: 'close-mobile-nav-label' });
589
- /**
590
- * The user pressed logout in the navigation footer. Forwarded from every nav type that
591
- * shows the user identity (`sidebar`, `dockbar`, `navbar`, `flyout`), the mobile drawer
592
- * included, so one binding covers all of them. The library calls no endpoint and performs
593
- * no navigation; what happens next is entirely the consumer's.
594
- */
595
- logout = output();
596
- identity = inject(LayoutIdentityService);
597
- navigation = inject(NAVIGATION_ADAPTER);
598
- desktopNavigationDataOwner = {};
599
- document = inject(DOCUMENT, { optional: true });
600
- mobileNavTriggerRef = viewChild('mobileNavTrigger', /* @ts-ignore */
601
- ...(ngDevMode ? [{ debugName: "mobileNavTriggerRef" }] : /* istanbul ignore next */ []));
602
- constructor() {
603
- // Publikasikan identitas ke registry agar surface lain (mis. apps-launcher di `Page`)
604
- // menampilkan brand/user yang sama dengan flyout nav.
605
- effect(() => this.identity.setBrand(this.brand()));
606
- effect(() => this.identity.setUser(this.user()));
607
- // Desktop navigation has no in-layout <Navigation> node: its trigger belongs
608
- // to the window titlebar. Publish the same data through a dedicated key so
609
- // <Shell> can surface it without duplicating navbar/dockbar configurations.
610
- effect((onCleanup) => {
611
- if (this.navType() !== 'desktop') {
612
- return;
613
- }
614
- this.navigation.publishData(LAYOUT_DESKTOP_NAVIGATION_DATA_ID, this.data(), this.desktopNavigationDataOwner);
615
- onCleanup(() => this.navigation.clearData(LAYOUT_DESKTOP_NAVIGATION_DATA_ID, this.desktopNavigationDataOwner));
616
- });
617
- // Drawer tidak boleh tetap modal ketika viewport kembali ke desktop.
618
- effect((onCleanup) => {
619
- const media = this.document?.defaultView?.matchMedia?.('(min-width: 640px)');
620
- if (!media) {
621
- return;
622
- }
623
- const closeOnDesktop = (event) => {
624
- if (event.matches) {
625
- this.mobileNavOpen.set(false);
626
- }
627
- };
628
- closeOnDesktop(media);
629
- media.addEventListener('change', closeOnDesktop);
630
- onCleanup(() => media.removeEventListener('change', closeOnDesktop));
631
- });
632
- }
633
- /**
634
- * Classes for `<LayoutContent>`, chosen by the consumer (padding, say). Empty by
635
- * default: the library no longer forces `p-6`; the consumer or `<Page>` decides spacing.
636
- */
637
- contentClassInput = input('', { ...(ngDevMode ? { debugName: "contentClassInput" } : /* istanbul ignore next */ {}), alias: 'content-class' });
638
- /** Wrapper layout & nilai `<Layout [layout-type]>`: navbar/flyout = horizontal, sisanya vertical. */
639
- effectiveLayoutType = computed(() => {
640
- const layoutType = this.layoutType();
641
- if (layoutType === 'empty' || layoutType === 'fluid') {
642
- return layoutType;
643
- }
644
- return this.navType() === 'navbar' ||
645
- this.navType() === 'flyout' ||
646
- this.navType() === 'desktop'
647
- ? 'horizontal'
648
- : 'vertical';
649
- }, /* @ts-ignore */
650
- ...(ngDevMode ? [{ debugName: "effectiveLayoutType" }] : /* istanbul ignore next */ []));
651
- /** Tipe nav di dalam `#body`: `empty`/`fluid` → `brand` (header-only); selain itu `nav-type`. */
652
- navKind = computed(() => {
653
- const layoutType = this.layoutType();
654
- const navType = this.navType();
655
- return layoutType === 'empty' || layoutType === 'fluid' || navType === 'desktop'
656
- ? 'brand'
657
- : navType;
658
- }, /* @ts-ignore */
659
- ...(ngDevMode ? [{ debugName: "navKind" }] : /* istanbul ignore next */ []));
660
- /** Lebar host `<Navigation>`: penuh-tinggi (vertical) atau penuh-lebar (horizontal). */
661
- navClass = computed(() => this.effectiveLayoutType() === 'horizontal' ? 'w-full' : 'h-full', /* @ts-ignore */
662
- ...(ngDevMode ? [{ debugName: "navClass" }] : /* istanbul ignore next */ []));
663
- showsMobileNavigation = computed(() => {
664
- if (this.navType() === 'desktop') {
665
- return false;
666
- }
667
- const type = this.effectiveLayoutType();
668
- return type === 'vertical' || type === 'horizontal';
669
- }, /* @ts-ignore */
670
- ...(ngDevMode ? [{ debugName: "showsMobileNavigation" }] : /* istanbul ignore next */ []));
671
- /** Internal shell owns responsive placement while primitives remain composition-safe. */
672
- defaultShellClasses = computed(() => {
673
- const type = this.effectiveLayoutType();
674
- if (type === 'empty' || type === 'fluid' || this.navType() === 'desktop') {
675
- return 'contents';
676
- }
677
- return cn('relative grid h-full min-h-0 w-full min-w-0 grid-cols-1 grid-rows-[3rem_minmax(0,1fr)]', type === 'horizontal'
678
- ? 'sm:flex sm:flex-col'
679
- : 'col-span-2 sm:grid-cols-[auto_minmax(0,1fr)] sm:grid-rows-1');
680
- }, /* @ts-ignore */
681
- ...(ngDevMode ? [{ debugName: "defaultShellClasses" }] : /* istanbul ignore next */ []));
682
- /** Kelas `<LayoutContent>`: `fluid` membatasi lebar & memusatkan; padding diserahkan ke consumer. */
683
- contentClass = computed(() => cn(this.effectiveLayoutType() === 'fluid' ? 'w-full max-w-3xl' : '', this.contentClassInput()), /* @ts-ignore */
684
- ...(ngDevMode ? [{ debugName: "contentClass" }] : /* istanbul ignore next */ []));
685
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutWrapperDefault, deps: [], target: i0.ɵɵFactoryTarget.Component });
686
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: LayoutWrapperDefault, isStandalone: true, selector: "LayoutWrapperDefault", inputs: { surface: { classPropertyName: "surface", publicName: "surface", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "layout-appearance", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, layoutType: { classPropertyName: "layoutType", publicName: "layout-type", isSignal: true, isRequired: false, transformFunction: null }, navType: { classPropertyName: "navType", publicName: "nav-type", isSignal: true, isRequired: false, transformFunction: null }, navTypeMode: { classPropertyName: "navTypeMode", publicName: "nav-type-mode", isSignal: true, isRequired: false, transformFunction: null }, dockbarRouteContext: { classPropertyName: "dockbarRouteContext", publicName: "dockbar-route-context", isSignal: true, isRequired: false, transformFunction: null }, dockbarBadgeContext: { classPropertyName: "dockbarBadgeContext", publicName: "dockbar-badge", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, brand: { classPropertyName: "brand", publicName: "brand", isSignal: true, isRequired: true, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: true, transformFunction: null }, contentId: { classPropertyName: "contentId", publicName: "content-id", isSignal: true, isRequired: false, transformFunction: null }, skipLinkLabel: { classPropertyName: "skipLinkLabel", publicName: "skip-link-label", isSignal: true, isRequired: false, transformFunction: null }, focusOnNavigation: { classPropertyName: "focusOnNavigation", publicName: "focus-on-navigation", isSignal: true, isRequired: false, transformFunction: null }, mobileNavOpen: { classPropertyName: "mobileNavOpen", publicName: "mobile-nav-open", isSignal: true, isRequired: false, transformFunction: null }, mobileNavLabel: { classPropertyName: "mobileNavLabel", publicName: "mobile-nav-label", isSignal: true, isRequired: false, transformFunction: null }, closeMobileNavLabel: { classPropertyName: "closeMobileNavLabel", publicName: "close-mobile-nav-label", isSignal: true, isRequired: false, transformFunction: null }, contentClassInput: { classPropertyName: "contentClassInput", publicName: "content-class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mobileNavOpen: "mobile-nav-openChange", logout: "logout" }, host: { classAttribute: "contents" }, viewQueries: [{ propertyName: "mobileNavTriggerRef", first: true, predicate: ["mobileNavTrigger"], descendants: true, isSignal: true }], ngImport: i0, template: `
1447
+ const MAIN_NAVIGATION_ID = "main";
1448
+ const MINIDOCK_NAVIGATION_DATA_ID = "main-minidock";
1449
+ var LayoutWrapperDefault = class LayoutWrapperDefault {
1450
+ surface = input(LAYOUT_DEFAULT_SURFACE, ...ngDevMode ? [{ debugName: "surface" }] : /* istanbul ignore next */ []);
1451
+ appearance = input(LAYOUT_DEFAULT_APPEARANCE, {
1452
+ ...ngDevMode ? { debugName: "appearance" } : /* istanbul ignore next */ {},
1453
+ alias: "layout-appearance"
1454
+ });
1455
+ width = input(LAYOUT_DEFAULT_WIDTH, ...ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []);
1456
+ layoutType = input(LAYOUT_DEFAULT_TYPE, {
1457
+ ...ngDevMode ? { debugName: "layoutType" } : /* istanbul ignore next */ {},
1458
+ alias: "layout-type"
1459
+ });
1460
+ navType = input("sidebar", {
1461
+ ...ngDevMode ? { debugName: "navType" } : /* istanbul ignore next */ {},
1462
+ alias: "nav-type"
1463
+ });
1464
+ navTypeMode = input("default", {
1465
+ ...ngDevMode ? { debugName: "navTypeMode" } : /* istanbul ignore next */ {},
1466
+ alias: "nav-type-mode"
1467
+ });
1468
+ dockbarRouteContext = input(null, {
1469
+ ...ngDevMode ? { debugName: "dockbarRouteContext" } : /* istanbul ignore next */ {},
1470
+ alias: "dockbar-route-context"
1471
+ });
1472
+ dockbarBadgeContext = input(EMPTY_NAVIGATION_BADGE_CONTEXT, {
1473
+ ...ngDevMode ? { debugName: "dockbarBadgeContext" } : /* istanbul ignore next */ {},
1474
+ alias: "dockbar-badge"
1475
+ });
1476
+ data = input.required(...ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []);
1477
+ brand = input.required(...ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []);
1478
+ user = input.required(...ngDevMode ? [{ debugName: "user" }] : /* istanbul ignore next */ []);
1479
+ contentId = input("main-content", {
1480
+ ...ngDevMode ? { debugName: "contentId" } : /* istanbul ignore next */ {},
1481
+ alias: "content-id"
1482
+ });
1483
+ skipLinkLabel = input("Skip to main content", {
1484
+ ...ngDevMode ? { debugName: "skipLinkLabel" } : /* istanbul ignore next */ {},
1485
+ alias: "skip-link-label"
1486
+ });
1487
+ focusOnNavigation = input(false, {
1488
+ ...ngDevMode ? { debugName: "focusOnNavigation" } : /* istanbul ignore next */ {},
1489
+ alias: "focus-on-navigation"
1490
+ });
1491
+ mobileNavOpen = model(false, {
1492
+ ...ngDevMode ? { debugName: "mobileNavOpen" } : /* istanbul ignore next */ {},
1493
+ alias: "mobile-nav-open"
1494
+ });
1495
+ mobileNavLabel = input("Open navigation", {
1496
+ ...ngDevMode ? { debugName: "mobileNavLabel" } : /* istanbul ignore next */ {},
1497
+ alias: "mobile-nav-label"
1498
+ });
1499
+ closeMobileNavLabel = input("Close navigation", {
1500
+ ...ngDevMode ? { debugName: "closeMobileNavLabel" } : /* istanbul ignore next */ {},
1501
+ alias: "close-mobile-nav-label"
1502
+ });
1503
+ logout = output();
1504
+ identity = inject(LayoutIdentityService);
1505
+ navigation = inject(NAVIGATION_ADAPTER);
1506
+ desktopNavigationDataOwner = {};
1507
+ minidockMainDataOwner = {};
1508
+ document = inject(DOCUMENT, { optional: true });
1509
+ mobileNavTriggerRef = viewChild("mobileNavTrigger", ...ngDevMode ? [{ debugName: "mobileNavTriggerRef" }] : /* istanbul ignore next */ []);
1510
+ constructor() {
1511
+ effect(() => this.identity.setBrand(this.brand()));
1512
+ effect(() => this.identity.setUser(this.user()));
1513
+ effect((onCleanup) => {
1514
+ if (this.navType() !== "desktop") return;
1515
+ this.navigation.publishData(LAYOUT_DESKTOP_NAVIGATION_DATA_ID, this.data(), this.desktopNavigationDataOwner);
1516
+ onCleanup(() => this.navigation.clearData(LAYOUT_DESKTOP_NAVIGATION_DATA_ID, this.desktopNavigationDataOwner));
1517
+ });
1518
+ effect((onCleanup) => {
1519
+ if (this.navKind() !== "minidock") return;
1520
+ this.navigation.publishData(MAIN_NAVIGATION_ID, this.data(), this.minidockMainDataOwner);
1521
+ onCleanup(() => this.navigation.clearData(MAIN_NAVIGATION_ID, this.minidockMainDataOwner));
1522
+ });
1523
+ effect((onCleanup) => {
1524
+ const media = this.document?.defaultView?.matchMedia?.("(min-width: 640px)");
1525
+ if (!media) return;
1526
+ const closeOnDesktop = (event) => {
1527
+ if (event.matches) this.mobileNavOpen.set(false);
1528
+ };
1529
+ closeOnDesktop(media);
1530
+ media.addEventListener("change", closeOnDesktop);
1531
+ onCleanup(() => media.removeEventListener("change", closeOnDesktop));
1532
+ });
1533
+ }
1534
+ contentClassInput = input("", {
1535
+ ...ngDevMode ? { debugName: "contentClassInput" } : /* istanbul ignore next */ {},
1536
+ alias: "content-class"
1537
+ });
1538
+ effectiveLayoutType = computed(() => {
1539
+ const layoutType = this.layoutType();
1540
+ if (layoutType === "empty" || layoutType === "fluid") return layoutType;
1541
+ return this.navType() === "navbar" || this.navType() === "flyout" || this.navType() === "desktop" ? "horizontal" : "vertical";
1542
+ }, ...ngDevMode ? [{ debugName: "effectiveLayoutType" }] : /* istanbul ignore next */ []);
1543
+ navKind = computed(() => {
1544
+ const layoutType = this.layoutType();
1545
+ const navType = this.navType();
1546
+ return layoutType === "empty" || layoutType === "fluid" || navType === "desktop" ? "brand" : navType;
1547
+ }, ...ngDevMode ? [{ debugName: "navKind" }] : /* istanbul ignore next */ []);
1548
+ minidockData = computed(() => toMinidockItems(this.data()), ...ngDevMode ? [{ debugName: "minidockData" }] : /* istanbul ignore next */ []);
1549
+ desktopDataId = computed(() => this.navKind() === "minidock" ? MINIDOCK_NAVIGATION_DATA_ID : MAIN_NAVIGATION_ID, ...ngDevMode ? [{ debugName: "desktopDataId" }] : /* istanbul ignore next */ []);
1550
+ desktopData = computed(() => this.navKind() === "minidock" ? this.minidockData() : this.data(), ...ngDevMode ? [{ debugName: "desktopData" }] : /* istanbul ignore next */ []);
1551
+ navClass = computed(() => this.effectiveLayoutType() === "horizontal" ? "w-full" : "h-full", ...ngDevMode ? [{ debugName: "navClass" }] : /* istanbul ignore next */ []);
1552
+ showsMobileNavigation = computed(() => {
1553
+ if (this.navType() === "desktop") return false;
1554
+ const type = this.effectiveLayoutType();
1555
+ return type === "vertical" || type === "horizontal";
1556
+ }, ...ngDevMode ? [{ debugName: "showsMobileNavigation" }] : /* istanbul ignore next */ []);
1557
+ defaultShellClasses = computed(() => {
1558
+ const type = this.effectiveLayoutType();
1559
+ if (type === "empty" || type === "fluid" || this.navType() === "desktop") return "contents";
1560
+ return cn("relative grid h-full min-h-0 w-full min-w-0 grid-cols-1 grid-rows-[3rem_minmax(0,1fr)]", type === "horizontal" ? "sm:flex sm:flex-col" : "col-span-2 sm:grid-cols-[auto_minmax(0,1fr)] sm:grid-rows-1");
1561
+ }, ...ngDevMode ? [{ debugName: "defaultShellClasses" }] : /* istanbul ignore next */ []);
1562
+ contentClass = computed(() => cn(this.effectiveLayoutType() === "fluid" ? "w-full max-w-3xl" : "", this.contentClassInput()), ...ngDevMode ? [{ debugName: "contentClass" }] : /* istanbul ignore next */ []);
1563
+ static ɵfac = i0.ɵɵngDeclareFactory({
1564
+ minVersion: "12.0.0",
1565
+ version: "22.2.2",
1566
+ ngImport: i0,
1567
+ type: LayoutWrapperDefault,
1568
+ deps: [],
1569
+ target: i0.ɵɵFactoryTarget.Component
1570
+ });
1571
+ static ɵcmp = i0.ɵɵngDeclareComponent({
1572
+ minVersion: "17.0.0",
1573
+ version: "22.2.2",
1574
+ type: LayoutWrapperDefault,
1575
+ isStandalone: true,
1576
+ selector: "LayoutWrapperDefault",
1577
+ inputs: {
1578
+ surface: {
1579
+ classPropertyName: "surface",
1580
+ publicName: "surface",
1581
+ isSignal: true,
1582
+ isRequired: false,
1583
+ transformFunction: null
1584
+ },
1585
+ appearance: {
1586
+ classPropertyName: "appearance",
1587
+ publicName: "layout-appearance",
1588
+ isSignal: true,
1589
+ isRequired: false,
1590
+ transformFunction: null
1591
+ },
1592
+ width: {
1593
+ classPropertyName: "width",
1594
+ publicName: "width",
1595
+ isSignal: true,
1596
+ isRequired: false,
1597
+ transformFunction: null
1598
+ },
1599
+ layoutType: {
1600
+ classPropertyName: "layoutType",
1601
+ publicName: "layout-type",
1602
+ isSignal: true,
1603
+ isRequired: false,
1604
+ transformFunction: null
1605
+ },
1606
+ navType: {
1607
+ classPropertyName: "navType",
1608
+ publicName: "nav-type",
1609
+ isSignal: true,
1610
+ isRequired: false,
1611
+ transformFunction: null
1612
+ },
1613
+ navTypeMode: {
1614
+ classPropertyName: "navTypeMode",
1615
+ publicName: "nav-type-mode",
1616
+ isSignal: true,
1617
+ isRequired: false,
1618
+ transformFunction: null
1619
+ },
1620
+ dockbarRouteContext: {
1621
+ classPropertyName: "dockbarRouteContext",
1622
+ publicName: "dockbar-route-context",
1623
+ isSignal: true,
1624
+ isRequired: false,
1625
+ transformFunction: null
1626
+ },
1627
+ dockbarBadgeContext: {
1628
+ classPropertyName: "dockbarBadgeContext",
1629
+ publicName: "dockbar-badge",
1630
+ isSignal: true,
1631
+ isRequired: false,
1632
+ transformFunction: null
1633
+ },
1634
+ data: {
1635
+ classPropertyName: "data",
1636
+ publicName: "data",
1637
+ isSignal: true,
1638
+ isRequired: true,
1639
+ transformFunction: null
1640
+ },
1641
+ brand: {
1642
+ classPropertyName: "brand",
1643
+ publicName: "brand",
1644
+ isSignal: true,
1645
+ isRequired: true,
1646
+ transformFunction: null
1647
+ },
1648
+ user: {
1649
+ classPropertyName: "user",
1650
+ publicName: "user",
1651
+ isSignal: true,
1652
+ isRequired: true,
1653
+ transformFunction: null
1654
+ },
1655
+ contentId: {
1656
+ classPropertyName: "contentId",
1657
+ publicName: "content-id",
1658
+ isSignal: true,
1659
+ isRequired: false,
1660
+ transformFunction: null
1661
+ },
1662
+ skipLinkLabel: {
1663
+ classPropertyName: "skipLinkLabel",
1664
+ publicName: "skip-link-label",
1665
+ isSignal: true,
1666
+ isRequired: false,
1667
+ transformFunction: null
1668
+ },
1669
+ focusOnNavigation: {
1670
+ classPropertyName: "focusOnNavigation",
1671
+ publicName: "focus-on-navigation",
1672
+ isSignal: true,
1673
+ isRequired: false,
1674
+ transformFunction: null
1675
+ },
1676
+ mobileNavOpen: {
1677
+ classPropertyName: "mobileNavOpen",
1678
+ publicName: "mobile-nav-open",
1679
+ isSignal: true,
1680
+ isRequired: false,
1681
+ transformFunction: null
1682
+ },
1683
+ mobileNavLabel: {
1684
+ classPropertyName: "mobileNavLabel",
1685
+ publicName: "mobile-nav-label",
1686
+ isSignal: true,
1687
+ isRequired: false,
1688
+ transformFunction: null
1689
+ },
1690
+ closeMobileNavLabel: {
1691
+ classPropertyName: "closeMobileNavLabel",
1692
+ publicName: "close-mobile-nav-label",
1693
+ isSignal: true,
1694
+ isRequired: false,
1695
+ transformFunction: null
1696
+ },
1697
+ contentClassInput: {
1698
+ classPropertyName: "contentClassInput",
1699
+ publicName: "content-class",
1700
+ isSignal: true,
1701
+ isRequired: false,
1702
+ transformFunction: null
1703
+ }
1704
+ },
1705
+ outputs: {
1706
+ mobileNavOpen: "mobile-nav-openChange",
1707
+ logout: "logout"
1708
+ },
1709
+ host: { classAttribute: "contents" },
1710
+ viewQueries: [{
1711
+ propertyName: "mobileNavTriggerRef",
1712
+ first: true,
1713
+ predicate: ["mobileNavTrigger"],
1714
+ descendants: true,
1715
+ isSignal: true
1716
+ }],
1717
+ ngImport: i0,
1718
+ template: `
687
1719
  <Layout
688
1720
  [surface]="surface()"
689
1721
  [layout-appearance]="appearance()"
@@ -761,7 +1793,12 @@ class LayoutWrapperDefault {
761
1793
  [landmark]="false"
762
1794
  class="max-sm:hidden"
763
1795
  >
764
- <Navigation id="main" data-id="main" [data]="data()" [class]="navClass()">
1796
+ <Navigation
1797
+ id="main"
1798
+ [data-id]="desktopDataId()"
1799
+ [data]="desktopData()"
1800
+ [class]="navClass()"
1801
+ >
765
1802
  @switch (navKind()) {
766
1803
  @case ('navbar') {
767
1804
  <LayoutNavNavbar
@@ -790,6 +1827,14 @@ class LayoutWrapperDefault {
790
1827
  (logout)="logout.emit()"
791
1828
  />
792
1829
  }
1830
+ @case ('minidock') {
1831
+ <LayoutNavMinidock
1832
+ [brand]="brand()"
1833
+ [user]="user()"
1834
+ [appearance]="appearance()"
1835
+ (logout)="logout.emit()"
1836
+ />
1837
+ }
793
1838
  @case ('brand') {
794
1839
  <LayoutNavMinimal [brand]="brand()" />
795
1840
  }
@@ -840,38 +1885,209 @@ class LayoutWrapperDefault {
840
1885
  }
841
1886
  }
842
1887
  </Layout>
843
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LayoutComponent, selector: "Layout", inputs: ["surface", "appearance", "layout-appearance", "width", "layout-type", "class"] }, { kind: "component", type: LayoutVerticalComponent, selector: "LayoutVertical", inputs: ["class"] }, { kind: "component", type: LayoutHorizontalComponent, selector: "LayoutHorizontal", inputs: ["class"] }, { kind: "component", type: LayoutEmptyComponent, selector: "LayoutEmpty", inputs: ["class"] }, { kind: "component", type: LayoutFluidComponent, selector: "LayoutFluid", inputs: ["class"] }, { kind: "component", type: LayoutNavigationComponent, selector: "LayoutNavigation", inputs: ["ariaLabel", "landmark", "class"] }, { kind: "component", type: LayoutContentComponent, selector: "LayoutContent", inputs: ["class", "content-id", "focus-on-navigation"] }, { kind: "component", type: NavigationContainerComponent, selector: "Navigation", inputs: ["id", "data-id", "data", "ariaLabel", "compact", "collapse-tree", "class", "itemClass", "nav-group-class", "activeIds", "activeUrl", "openedIds"], outputs: ["openedIdsChange", "itemSelected"] }, { kind: "component", type: LayoutBrand, selector: "LayoutBrand", inputs: ["brand", "compact"] }, { kind: "component", type: LayoutNavSidebar, selector: "LayoutNavSidebar", inputs: ["brand", "user", "appearance", "nav-type-mode"], outputs: ["logout"] }, { kind: "component", type: LayoutNavDockbar, selector: "LayoutNavDockbar", inputs: ["brand", "user", "appearance", "nav-type-mode", "dockbar-route-context", "dockbar-badge"], outputs: ["logout"] }, { kind: "component", type: LayoutNavNavbar, selector: "LayoutNavNavbar", inputs: ["brand", "user", "appearance"], outputs: ["logout"] }, { kind: "component", type: LayoutNavFlyout, selector: "LayoutNavFlyout", inputs: ["brand", "user", "appearance"], outputs: ["logout"] }, { kind: "component", type: LayoutNavMinimal, selector: "LayoutNavMinimal", inputs: ["brand"] }], deferBlockDependencies: [() => [/* @ts-ignore */
844
- import('@ojiepermana/angular/component/sheet').then(m => m.SheetComponent), /* @ts-ignore */
845
- import('@ojiepermana/angular/component/sheet').then(m => m.SheetTitleComponent), NavigationContainerComponent,
846
- LayoutNavSidebar]] });
847
- }
848
- i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "22.1.6", ngImport: i0, type: LayoutWrapperDefault, resolveDeferredDeps: () => [/* @ts-ignore */
849
- import('@ojiepermana/angular/component/sheet').then(m => m.SheetComponent), /* @ts-ignore */
850
- import('@ojiepermana/angular/component/sheet').then(m => m.SheetTitleComponent)], resolveMetadata: (SheetComponent, SheetTitleComponent) => ({ decorators: [{
851
- type: Component,
852
- args: [{
853
- selector: 'LayoutWrapperDefault',
854
- host: { class: 'contents' },
855
- imports: [
856
- NgTemplateOutlet,
857
- LayoutComponent,
858
- LayoutVerticalComponent,
859
- LayoutHorizontalComponent,
860
- LayoutEmptyComponent,
861
- LayoutFluidComponent,
862
- LayoutNavigationComponent,
863
- LayoutContentComponent,
864
- SheetComponent,
865
- SheetTitleComponent,
866
- NavigationContainerComponent,
867
- LayoutBrand,
868
- LayoutNavSidebar,
869
- LayoutNavDockbar,
870
- LayoutNavNavbar,
871
- LayoutNavFlyout,
872
- LayoutNavMinimal,
873
- ],
874
- template: `
1888
+ `,
1889
+ isInline: true,
1890
+ dependencies: [
1891
+ {
1892
+ kind: "directive",
1893
+ type: NgTemplateOutlet,
1894
+ selector: "[ngTemplateOutlet]",
1895
+ inputs: [
1896
+ "ngTemplateOutletContext",
1897
+ "ngTemplateOutlet",
1898
+ "ngTemplateOutletInjector"
1899
+ ]
1900
+ },
1901
+ {
1902
+ kind: "component",
1903
+ type: LayoutComponent,
1904
+ selector: "Layout",
1905
+ inputs: [
1906
+ "surface",
1907
+ "appearance",
1908
+ "layout-appearance",
1909
+ "width",
1910
+ "layout-type",
1911
+ "class"
1912
+ ]
1913
+ },
1914
+ {
1915
+ kind: "component",
1916
+ type: LayoutVerticalComponent,
1917
+ selector: "LayoutVertical",
1918
+ inputs: ["class"]
1919
+ },
1920
+ {
1921
+ kind: "component",
1922
+ type: LayoutHorizontalComponent,
1923
+ selector: "LayoutHorizontal",
1924
+ inputs: ["class"]
1925
+ },
1926
+ {
1927
+ kind: "component",
1928
+ type: LayoutEmptyComponent,
1929
+ selector: "LayoutEmpty",
1930
+ inputs: ["class"]
1931
+ },
1932
+ {
1933
+ kind: "component",
1934
+ type: LayoutFluidComponent,
1935
+ selector: "LayoutFluid",
1936
+ inputs: ["class"]
1937
+ },
1938
+ {
1939
+ kind: "component",
1940
+ type: LayoutNavigationComponent,
1941
+ selector: "LayoutNavigation",
1942
+ inputs: [
1943
+ "ariaLabel",
1944
+ "landmark",
1945
+ "class"
1946
+ ]
1947
+ },
1948
+ {
1949
+ kind: "component",
1950
+ type: LayoutContentComponent,
1951
+ selector: "LayoutContent",
1952
+ inputs: [
1953
+ "class",
1954
+ "content-id",
1955
+ "focus-on-navigation"
1956
+ ]
1957
+ },
1958
+ {
1959
+ kind: "component",
1960
+ type: NavigationContainerComponent,
1961
+ selector: "Navigation",
1962
+ inputs: [
1963
+ "id",
1964
+ "data-id",
1965
+ "data",
1966
+ "ariaLabel",
1967
+ "compact",
1968
+ "collapse-tree",
1969
+ "class",
1970
+ "itemClass",
1971
+ "nav-group-class",
1972
+ "activeIds",
1973
+ "activeUrl",
1974
+ "openedIds"
1975
+ ],
1976
+ outputs: ["openedIdsChange", "itemSelected"]
1977
+ },
1978
+ {
1979
+ kind: "component",
1980
+ type: LayoutBrand,
1981
+ selector: "LayoutBrand",
1982
+ inputs: ["brand", "compact"]
1983
+ },
1984
+ {
1985
+ kind: "component",
1986
+ type: LayoutNavSidebar,
1987
+ selector: "LayoutNavSidebar",
1988
+ inputs: [
1989
+ "brand",
1990
+ "user",
1991
+ "appearance",
1992
+ "nav-type-mode"
1993
+ ],
1994
+ outputs: ["logout"]
1995
+ },
1996
+ {
1997
+ kind: "component",
1998
+ type: LayoutNavDockbar,
1999
+ selector: "LayoutNavDockbar",
2000
+ inputs: [
2001
+ "brand",
2002
+ "user",
2003
+ "appearance",
2004
+ "nav-type-mode",
2005
+ "dockbar-route-context",
2006
+ "dockbar-badge"
2007
+ ],
2008
+ outputs: ["logout"]
2009
+ },
2010
+ {
2011
+ kind: "component",
2012
+ type: LayoutNavMinidock,
2013
+ selector: "LayoutNavMinidock",
2014
+ inputs: [
2015
+ "brand",
2016
+ "user",
2017
+ "appearance"
2018
+ ],
2019
+ outputs: ["logout"]
2020
+ },
2021
+ {
2022
+ kind: "component",
2023
+ type: LayoutNavNavbar,
2024
+ selector: "LayoutNavNavbar",
2025
+ inputs: [
2026
+ "brand",
2027
+ "user",
2028
+ "appearance"
2029
+ ],
2030
+ outputs: ["logout"]
2031
+ },
2032
+ {
2033
+ kind: "component",
2034
+ type: LayoutNavFlyout,
2035
+ selector: "LayoutNavFlyout",
2036
+ inputs: [
2037
+ "brand",
2038
+ "user",
2039
+ "appearance"
2040
+ ],
2041
+ outputs: ["logout"]
2042
+ },
2043
+ {
2044
+ kind: "component",
2045
+ type: LayoutNavMinimal,
2046
+ selector: "LayoutNavMinimal",
2047
+ inputs: ["brand"]
2048
+ }
2049
+ ],
2050
+ deferBlockDependencies: [() => [
2051
+ import("@ojiepermana/angular/component/sheet").then((m) => m.SheetComponent),
2052
+ import("@ojiepermana/angular/component/sheet").then((m) => m.SheetTitleComponent),
2053
+ NavigationContainerComponent,
2054
+ LayoutNavSidebar
2055
+ ]]
2056
+ });
2057
+ };
2058
+ i0.ɵɵngDeclareClassMetadataAsync({
2059
+ minVersion: "18.0.0",
2060
+ version: "22.2.2",
2061
+ ngImport: i0,
2062
+ type: LayoutWrapperDefault,
2063
+ resolveDeferredDeps: () => [import("@ojiepermana/angular/component/sheet").then((m) => m.SheetComponent), import("@ojiepermana/angular/component/sheet").then((m) => m.SheetTitleComponent)],
2064
+ resolveMetadata: (SheetComponent, SheetTitleComponent) => ({
2065
+ decorators: [{
2066
+ type: Component,
2067
+ args: [{
2068
+ selector: "LayoutWrapperDefault",
2069
+ host: { class: "contents" },
2070
+ imports: [
2071
+ NgTemplateOutlet,
2072
+ LayoutComponent,
2073
+ LayoutVerticalComponent,
2074
+ LayoutHorizontalComponent,
2075
+ LayoutEmptyComponent,
2076
+ LayoutFluidComponent,
2077
+ LayoutNavigationComponent,
2078
+ LayoutContentComponent,
2079
+ SheetComponent,
2080
+ SheetTitleComponent,
2081
+ NavigationContainerComponent,
2082
+ LayoutBrand,
2083
+ LayoutNavSidebar,
2084
+ LayoutNavDockbar,
2085
+ LayoutNavMinidock,
2086
+ LayoutNavNavbar,
2087
+ LayoutNavFlyout,
2088
+ LayoutNavMinimal
2089
+ ],
2090
+ template: `
875
2091
  <Layout
876
2092
  [surface]="surface()"
877
2093
  [layout-appearance]="appearance()"
@@ -949,7 +2165,12 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "22.1.6", ng
949
2165
  [landmark]="false"
950
2166
  class="max-sm:hidden"
951
2167
  >
952
- <Navigation id="main" data-id="main" [data]="data()" [class]="navClass()">
2168
+ <Navigation
2169
+ id="main"
2170
+ [data-id]="desktopDataId()"
2171
+ [data]="desktopData()"
2172
+ [class]="navClass()"
2173
+ >
953
2174
  @switch (navKind()) {
954
2175
  @case ('navbar') {
955
2176
  <LayoutNavNavbar
@@ -978,6 +2199,14 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "22.1.6", ng
978
2199
  (logout)="logout.emit()"
979
2200
  />
980
2201
  }
2202
+ @case ('minidock') {
2203
+ <LayoutNavMinidock
2204
+ [brand]="brand()"
2205
+ [user]="user()"
2206
+ [appearance]="appearance()"
2207
+ (logout)="logout.emit()"
2208
+ />
2209
+ }
981
2210
  @case ('brand') {
982
2211
  <LayoutNavMinimal [brand]="brand()" />
983
2212
  }
@@ -1028,21 +2257,167 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "22.1.6", ng
1028
2257
  }
1029
2258
  }
1030
2259
  </Layout>
1031
- `,
1032
- }]
1033
- }], ctorParameters: () => [], propDecorators: { surface: [{ type: i0.Input, args: [{ isSignal: true, alias: "surface", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout-appearance", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], layoutType: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout-type", required: false }] }], navType: [{ type: i0.Input, args: [{ isSignal: true, alias: "nav-type", required: false }] }], navTypeMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "nav-type-mode", required: false }] }], dockbarRouteContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "dockbar-route-context", required: false }] }], dockbarBadgeContext: [{ type: i0.Input, args: [{ isSignal: true, alias: "dockbar-badge", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], brand: [{ type: i0.Input, args: [{ isSignal: true, alias: "brand", required: true }] }], user: [{ type: i0.Input, args: [{ isSignal: true, alias: "user", required: true }] }], contentId: [{ type: i0.Input, args: [{ isSignal: true, alias: "content-id", required: false }] }], skipLinkLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "skip-link-label", required: false }] }], focusOnNavigation: [{ type: i0.Input, args: [{ isSignal: true, alias: "focus-on-navigation", required: false }] }], mobileNavOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobile-nav-open", required: false }] }, { type: i0.Output, args: ["mobile-nav-openChange"] }], mobileNavLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobile-nav-label", required: false }] }], closeMobileNavLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "close-mobile-nav-label", required: false }] }], logout: [{ type: i0.Output, args: ["logout"] }], mobileNavTriggerRef: [{ type: i0.ViewChild, args: ['mobileNavTrigger', { isSignal: true }] }], contentClassInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "content-class", required: false }] }] } }) });
1034
-
1035
- /*
1036
- * Public API of @ojiepermana/angular/theme/layout/wrapper
1037
- *
1038
- * Wrapper blok-jadi untuk layout shell: consumer cukup menyediakan data input
1039
- * (surface, appearance, width, layout-type, nav-type, navigation data, brand, user)
1040
- * tanpa merakit komponen bersarang. `register*` default tetap di consumer.
1041
- */
1042
- // Identitas (bentuk data yang disediakan consumer)
1043
-
1044
- /**
1045
- * Generated bundle index. Do not edit.
1046
- */
1047
-
1048
- export { LAYOUT_DESKTOP_NAVIGATION_DATA_ID, LayoutBrand, LayoutIdentityService, LayoutNavDockbar, LayoutNavFlyout, LayoutNavMinimal, LayoutNavNavbar, LayoutNavSidebar, LayoutUser, LayoutWrapperDefault };
2260
+ `
2261
+ }]
2262
+ }],
2263
+ ctorParameters: () => [],
2264
+ propDecorators: {
2265
+ surface: [{
2266
+ type: i0.Input,
2267
+ args: [{
2268
+ isSignal: true,
2269
+ alias: "surface",
2270
+ required: false
2271
+ }]
2272
+ }],
2273
+ appearance: [{
2274
+ type: i0.Input,
2275
+ args: [{
2276
+ isSignal: true,
2277
+ alias: "layout-appearance",
2278
+ required: false
2279
+ }]
2280
+ }],
2281
+ width: [{
2282
+ type: i0.Input,
2283
+ args: [{
2284
+ isSignal: true,
2285
+ alias: "width",
2286
+ required: false
2287
+ }]
2288
+ }],
2289
+ layoutType: [{
2290
+ type: i0.Input,
2291
+ args: [{
2292
+ isSignal: true,
2293
+ alias: "layout-type",
2294
+ required: false
2295
+ }]
2296
+ }],
2297
+ navType: [{
2298
+ type: i0.Input,
2299
+ args: [{
2300
+ isSignal: true,
2301
+ alias: "nav-type",
2302
+ required: false
2303
+ }]
2304
+ }],
2305
+ navTypeMode: [{
2306
+ type: i0.Input,
2307
+ args: [{
2308
+ isSignal: true,
2309
+ alias: "nav-type-mode",
2310
+ required: false
2311
+ }]
2312
+ }],
2313
+ dockbarRouteContext: [{
2314
+ type: i0.Input,
2315
+ args: [{
2316
+ isSignal: true,
2317
+ alias: "dockbar-route-context",
2318
+ required: false
2319
+ }]
2320
+ }],
2321
+ dockbarBadgeContext: [{
2322
+ type: i0.Input,
2323
+ args: [{
2324
+ isSignal: true,
2325
+ alias: "dockbar-badge",
2326
+ required: false
2327
+ }]
2328
+ }],
2329
+ data: [{
2330
+ type: i0.Input,
2331
+ args: [{
2332
+ isSignal: true,
2333
+ alias: "data",
2334
+ required: true
2335
+ }]
2336
+ }],
2337
+ brand: [{
2338
+ type: i0.Input,
2339
+ args: [{
2340
+ isSignal: true,
2341
+ alias: "brand",
2342
+ required: true
2343
+ }]
2344
+ }],
2345
+ user: [{
2346
+ type: i0.Input,
2347
+ args: [{
2348
+ isSignal: true,
2349
+ alias: "user",
2350
+ required: true
2351
+ }]
2352
+ }],
2353
+ contentId: [{
2354
+ type: i0.Input,
2355
+ args: [{
2356
+ isSignal: true,
2357
+ alias: "content-id",
2358
+ required: false
2359
+ }]
2360
+ }],
2361
+ skipLinkLabel: [{
2362
+ type: i0.Input,
2363
+ args: [{
2364
+ isSignal: true,
2365
+ alias: "skip-link-label",
2366
+ required: false
2367
+ }]
2368
+ }],
2369
+ focusOnNavigation: [{
2370
+ type: i0.Input,
2371
+ args: [{
2372
+ isSignal: true,
2373
+ alias: "focus-on-navigation",
2374
+ required: false
2375
+ }]
2376
+ }],
2377
+ mobileNavOpen: [{
2378
+ type: i0.Input,
2379
+ args: [{
2380
+ isSignal: true,
2381
+ alias: "mobile-nav-open",
2382
+ required: false
2383
+ }]
2384
+ }, {
2385
+ type: i0.Output,
2386
+ args: ["mobile-nav-openChange"]
2387
+ }],
2388
+ mobileNavLabel: [{
2389
+ type: i0.Input,
2390
+ args: [{
2391
+ isSignal: true,
2392
+ alias: "mobile-nav-label",
2393
+ required: false
2394
+ }]
2395
+ }],
2396
+ closeMobileNavLabel: [{
2397
+ type: i0.Input,
2398
+ args: [{
2399
+ isSignal: true,
2400
+ alias: "close-mobile-nav-label",
2401
+ required: false
2402
+ }]
2403
+ }],
2404
+ logout: [{
2405
+ type: i0.Output,
2406
+ args: ["logout"]
2407
+ }],
2408
+ mobileNavTriggerRef: [{
2409
+ type: i0.ViewChild,
2410
+ args: ["mobileNavTrigger", { isSignal: true }]
2411
+ }],
2412
+ contentClassInput: [{
2413
+ type: i0.Input,
2414
+ args: [{
2415
+ isSignal: true,
2416
+ alias: "content-class",
2417
+ required: false
2418
+ }]
2419
+ }]
2420
+ }
2421
+ })
2422
+ });
2423
+ export { LAYOUT_DESKTOP_NAVIGATION_DATA_ID, LayoutBrand, LayoutIdentityService, LayoutNavDockbar, LayoutNavFlyout, LayoutNavMinidock, LayoutNavMinimal, LayoutNavNavbar, LayoutNavSidebar, LayoutUser, LayoutWrapperDefault };