@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,49 +1,66 @@
1
- import * as i0 from '@angular/core';
2
- import { inject, input, computed, DestroyRef, Component, effect, booleanAttribute, ElementRef } from '@angular/core';
3
- import { cn } from '@ojiepermana/angular/component/utils/core';
4
- import { LayoutLoadingService, LayoutService } from '@ojiepermana/angular/theme/layout/services';
5
- export { LAYOUT_LOADING_HIDE_DELAY_MS, LAYOUT_LOADING_INITIAL_PROGRESS, LAYOUT_LOADING_SKIP, LAYOUT_LOADING_TRICKLE_CEILING, LAYOUT_LOADING_TRICKLE_INTERVAL_MS, LayoutLoadingService, LayoutService, layoutLoadingInterceptor } from '@ojiepermana/angular/theme/layout/services';
6
- import { ThemeRadiusService } from '@ojiepermana/angular/theme/styles';
7
- import { LAYOUT_LOCKED_WIDTH, LAYOUT_DEFAULT_SURFACE, LAYOUT_DEFAULT_APPEARANCE, LAYOUT_DEFAULT_WIDTH } from '@ojiepermana/angular/theme/layout/types';
8
- export { LAYOUT_APPEARANCES, LAYOUT_APPEARANCE_STORAGE_KEY, LAYOUT_DEFAULT_APPEARANCE, LAYOUT_DEFAULT_SURFACE, LAYOUT_DEFAULT_TYPE, LAYOUT_DEFAULT_WIDTH, LAYOUT_LOCKED_WIDTH, LAYOUT_SURFACES, LAYOUT_SURFACE_STORAGE_KEY, LAYOUT_TYPES, LAYOUT_TYPE_STORAGE_KEY, LAYOUT_WIDTHS, LAYOUT_WIDTH_STORAGE_KEY, isUiLayoutAppearance, isUiLayoutSurface, isUiLayoutType, isUiLayoutWidth } from '@ojiepermana/angular/theme/layout/types';
9
- import { DOCUMENT } from '@angular/common';
10
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
11
- import { Router, NavigationEnd } from '@angular/router';
12
-
13
- /**
14
- * A thin progress line along the top edge of the viewport, running left to right.
15
- * `Layout` renders it automatically and `LayoutLoadingService` drives it, so it
16
- * turns itself on while a route navigation or a data load is in flight.
17
- *
18
- * It can also be placed at the application root, so the bar is already up during
19
- * the first navigation; any extra instance inside `Layout` goes inert on its own,
20
- * and the line is never drawn twice.
21
- */
22
- class LayoutLoadingComponent {
23
- loading = inject(LayoutLoadingService);
24
- hostId = this.loading.registerHost();
25
- class = input('', /* @ts-ignore */
26
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
27
- ariaLabel = input('Loading page', /* @ts-ignore */
28
- ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
29
- isPrimary = computed(() => this.loading.primaryHostId() === this.hostId, /* @ts-ignore */
30
- ...(ngDevMode ? [{ debugName: "isPrimary" }] : /* istanbul ignore next */ []));
31
- state = computed(() => {
32
- if (!this.isPrimary()) {
33
- return 'inert';
34
- }
35
- return this.loading.active() ? 'active' : 'idle';
36
- }, /* @ts-ignore */
37
- ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
38
- hostClasses = computed(() => cn('pointer-events-none fixed inset-x-0 top-0 z-50 block h-0.5', this.class()), /* @ts-ignore */
39
- ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
40
- roundedProgress = computed(() => Math.round(this.loading.progress()), /* @ts-ignore */
41
- ...(ngDevMode ? [{ debugName: "roundedProgress" }] : /* istanbul ignore next */ []));
42
- constructor() {
43
- inject(DestroyRef).onDestroy(() => this.loading.unregisterHost(this.hostId));
44
- }
45
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutLoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
46
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: LayoutLoadingComponent, isStandalone: true, selector: "LayoutLoading", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-layout-loading": "" }, properties: { "class": "hostClasses()", "attr.data-state": "state()" } }, ngImport: i0, template: `
1
+ import * as i0 from "@angular/core";
2
+ import { Component, DestroyRef, ElementRef, booleanAttribute, computed, effect, inject, input } from "@angular/core";
3
+ import { cn } from "@ojiepermana/angular/component/utils/core";
4
+ import { LAYOUT_LOADING_HIDE_DELAY_MS, LAYOUT_LOADING_INITIAL_PROGRESS, LAYOUT_LOADING_SKIP, LAYOUT_LOADING_TRICKLE_CEILING, LAYOUT_LOADING_TRICKLE_INTERVAL_MS, LayoutLoadingService, LayoutLoadingService as LayoutLoadingService$1, LayoutService, LayoutService as LayoutService$1, layoutLoadingInterceptor } from "@ojiepermana/angular/theme/layout/services";
5
+ import { ThemeRadiusService } from "@ojiepermana/angular/theme/styles";
6
+ import { LAYOUT_APPEARANCES, LAYOUT_APPEARANCE_STORAGE_KEY, LAYOUT_DEFAULT_APPEARANCE, LAYOUT_DEFAULT_APPEARANCE as LAYOUT_DEFAULT_APPEARANCE$1, LAYOUT_DEFAULT_SURFACE, LAYOUT_DEFAULT_SURFACE as LAYOUT_DEFAULT_SURFACE$1, LAYOUT_DEFAULT_TYPE, LAYOUT_DEFAULT_WIDTH, LAYOUT_DEFAULT_WIDTH as LAYOUT_DEFAULT_WIDTH$1, LAYOUT_LOCKED_WIDTH, LAYOUT_LOCKED_WIDTH as LAYOUT_LOCKED_WIDTH$1, LAYOUT_SURFACES, LAYOUT_SURFACE_STORAGE_KEY, LAYOUT_TYPES, LAYOUT_TYPE_STORAGE_KEY, LAYOUT_WIDTHS, LAYOUT_WIDTH_STORAGE_KEY, isUiLayoutAppearance, isUiLayoutSurface, isUiLayoutType, isUiLayoutWidth } from "@ojiepermana/angular/theme/layout/types";
7
+ import { DOCUMENT } from "@angular/common";
8
+ import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
9
+ import { NavigationEnd, Router } from "@angular/router";
10
+ var LayoutLoadingComponent = class LayoutLoadingComponent {
11
+ loading = inject(LayoutLoadingService$1);
12
+ hostId = this.loading.registerHost();
13
+ class = input("", ...ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []);
14
+ ariaLabel = input("Loading page", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
15
+ isPrimary = computed(() => this.loading.primaryHostId() === this.hostId, ...ngDevMode ? [{ debugName: "isPrimary" }] : /* istanbul ignore next */ []);
16
+ state = computed(() => {
17
+ if (!this.isPrimary()) return "inert";
18
+ return this.loading.active() ? "active" : "idle";
19
+ }, ...ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []);
20
+ hostClasses = computed(() => cn("pointer-events-none fixed inset-x-0 top-0 z-50 block h-0.5", this.class()), ...ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []);
21
+ roundedProgress = computed(() => Math.round(this.loading.progress()), ...ngDevMode ? [{ debugName: "roundedProgress" }] : /* istanbul ignore next */ []);
22
+ constructor() {
23
+ inject(DestroyRef).onDestroy(() => this.loading.unregisterHost(this.hostId));
24
+ }
25
+ static ɵfac = i0.ɵɵngDeclareFactory({
26
+ minVersion: "12.0.0",
27
+ version: "22.2.2",
28
+ ngImport: i0,
29
+ type: LayoutLoadingComponent,
30
+ deps: [],
31
+ target: i0.ɵɵFactoryTarget.Component
32
+ });
33
+ static ɵcmp = i0.ɵɵngDeclareComponent({
34
+ minVersion: "17.0.0",
35
+ version: "22.2.2",
36
+ type: LayoutLoadingComponent,
37
+ isStandalone: true,
38
+ selector: "LayoutLoading",
39
+ inputs: {
40
+ class: {
41
+ classPropertyName: "class",
42
+ publicName: "class",
43
+ isSignal: true,
44
+ isRequired: false,
45
+ transformFunction: null
46
+ },
47
+ ariaLabel: {
48
+ classPropertyName: "ariaLabel",
49
+ publicName: "ariaLabel",
50
+ isSignal: true,
51
+ isRequired: false,
52
+ transformFunction: null
53
+ }
54
+ },
55
+ host: {
56
+ attributes: { "data-layout-loading": "" },
57
+ properties: {
58
+ "class": "hostClasses()",
59
+ "attr.data-state": "state()"
60
+ }
61
+ },
62
+ ngImport: i0,
63
+ template: `
47
64
  @if (isPrimary() && loading.active()) {
48
65
  <div
49
66
  role="progressbar"
@@ -61,18 +78,25 @@ class LayoutLoadingComponent {
61
78
  ></div>
62
79
  </div>
63
80
  }
64
- `, isInline: true });
65
- }
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutLoadingComponent, decorators: [{
67
- type: Component,
68
- args: [{
69
- selector: 'LayoutLoading',
70
- host: {
71
- '[class]': 'hostClasses()',
72
- 'data-layout-loading': '',
73
- '[attr.data-state]': 'state()',
74
- },
75
- template: `
81
+ `,
82
+ isInline: true
83
+ });
84
+ };
85
+ i0.ɵɵngDeclareClassMetadata({
86
+ minVersion: "12.0.0",
87
+ version: "22.2.2",
88
+ ngImport: i0,
89
+ type: LayoutLoadingComponent,
90
+ decorators: [{
91
+ type: Component,
92
+ args: [{
93
+ selector: "LayoutLoading",
94
+ host: {
95
+ "[class]": "hostClasses()",
96
+ "data-layout-loading": "",
97
+ "[attr.data-state]": "state()"
98
+ },
99
+ template: `
76
100
  @if (isPrimary() && loading.active()) {
77
101
  <div
78
102
  role="progressbar"
@@ -90,229 +114,177 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
90
114
  ></div>
91
115
  </div>
92
116
  }
93
- `,
94
- }]
95
- }], ctorParameters: () => [], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
96
-
97
- class LayoutComponent {
98
- layout = inject(LayoutService);
99
- themeRadius = inject(ThemeRadiusService);
100
- surface = input(null, /* @ts-ignore */
101
- ...(ngDevMode ? [{ debugName: "surface" }] : /* istanbul ignore next */ []));
102
- appearance = input(null, /* @ts-ignore */
103
- ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
104
- layoutAppearanceAttribute = input(null, { ...(ngDevMode ? { debugName: "layoutAppearanceAttribute" } : /* istanbul ignore next */ {}), alias: 'layout-appearance' });
105
- width = input(null, /* @ts-ignore */
106
- ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
107
- /**
108
- * Layout type (`vertical` | `horizontal` | `empty` | `fluid`). When set it is the
109
- * source of truth and overrides the projected `Layout*` variant; `null` leaves the
110
- * variant in charge.
111
- */
112
- type = input(null, { ...(ngDevMode ? { debugName: "type" } : /* istanbul ignore next */ {}), alias: 'layout-type' });
113
- class = input('', /* @ts-ignore */
114
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
115
- appearanceInput = computed(() => this.appearance() ?? this.layoutAppearanceAttribute(), /* @ts-ignore */
116
- ...(ngDevMode ? [{ debugName: "appearanceInput" }] : /* istanbul ignore next */ []));
117
- resolvedSurface = computed(() => this.surface() ?? this.layout.surface(), /* @ts-ignore */
118
- ...(ngDevMode ? [{ debugName: "resolvedSurface" }] : /* istanbul ignore next */ []));
119
- resolvedAppearance = computed(() => this.appearanceInput() ?? this.layout.appearance(), /* @ts-ignore */
120
- ...(ngDevMode ? [{ debugName: "resolvedAppearance" }] : /* istanbul ignore next */ []));
121
- // The shell-mode lock outranks a host-declared width: on desktop, tablet, and
122
- // mobile the app IS the surface, so there is no page for the frame to be inset
123
- // within, whatever the consumer asked for.
124
- resolvedWidth = computed(() => this.layout.widthLocked() ? LAYOUT_LOCKED_WIDTH : (this.width() ?? this.layout.width()), /* @ts-ignore */
125
- ...(ngDevMode ? [{ debugName: "resolvedWidth" }] : /* istanbul ignore next */ []));
126
- resolvedType = computed(() => this.type() ?? this.layout.type(), /* @ts-ignore */
127
- ...(ngDevMode ? [{ debugName: "resolvedType" }] : /* istanbul ignore next */ []));
128
- isBorderRail = computed(() => this.resolvedAppearance() === 'border-rail', /* @ts-ignore */
129
- ...(ngDevMode ? [{ debugName: "isBorderRail" }] : /* istanbul ignore next */ []));
130
- isFluidFrame = computed(() => this.resolvedWidth() === 'fluid' && this.resolvedType() === 'fluid', /* @ts-ignore */
131
- ...(ngDevMode ? [{ debugName: "isFluidFrame" }] : /* istanbul ignore next */ []));
132
- isFullFlat = computed(() => this.resolvedWidth() === 'full' && !this.isBorderRail(), /* @ts-ignore */
133
- ...(ngDevMode ? [{ debugName: "isFullFlat" }] : /* istanbul ignore next */ []));
134
- // The `grid-line` surface forces square frame corners (like `border-rail`) so
135
- // the mosaic grid runs cleanly to the edges instead of being clipped by the
136
- // theme-radius curve.
137
- isGridLineSurface = computed(() => this.resolvedSurface() === 'grid-line', /* @ts-ignore */
138
- ...(ngDevMode ? [{ debugName: "isGridLineSurface" }] : /* istanbul ignore next */ []));
139
- showsInsetRails = computed(() => {
140
- const layoutType = this.resolvedType();
141
- return this.isBorderRail() && (layoutType === 'horizontal' || layoutType === 'vertical');
142
- }, /* @ts-ignore */
143
- ...(ngDevMode ? [{ debugName: "showsInsetRails" }] : /* istanbul ignore next */ []));
144
- frameStageClasses = computed(() => cn('relative grid min-h-0 min-w-0 grid-cols-1 grid-rows-1', this.frameSizeClasses()), /* @ts-ignore */
145
- ...(ngDevMode ? [{ debugName: "frameStageClasses" }] : /* istanbul ignore next */ []));
146
- railAnchorClasses = computed(() => 'relative h-full min-h-0 w-full min-w-0', /* @ts-ignore */
147
- ...(ngDevMode ? [{ debugName: "railAnchorClasses" }] : /* istanbul ignore next */ []));
148
- contentShellClasses = computed(() => cn('relative z-10 min-h-0 min-w-0', this.isFluidFrame() ? 'h-auto w-auto max-h-full max-w-full' : 'h-full w-full', this.isBorderRail() ? 'overflow-visible' : 'overflow-hidden'), /* @ts-ignore */
149
- ...(ngDevMode ? [{ debugName: "contentShellClasses" }] : /* istanbul ignore next */ []));
150
- hostClasses = computed(() => cn(
151
- // Size comes from --layout-viewport-height / -width so the layout can be
152
- // nested. Height is 100dvh by default (the layout IS the viewport) and a
153
- // <Shell> retunes it to `auto` so the titlebar keeps its own slice. Width is
154
- // 100% by default; `frame='modern'` retunes it to `auto` so the shell's inset
155
- // margins actually shrink the panel instead of pushing it off the window.
156
- // These go through variables rather than being overridden in CSS because
157
- // these are Tailwind UTILITIES — a rule in @layer components could never win
158
- // against them, whatever its specificity.
159
- 'relative isolate h-[var(--layout-viewport-height,100dvh)] w-[var(--layout-viewport-width,100%)] min-w-0 box-border overflow-hidden text-foreground', this.isFluidFrame() ? 'grid place-items-center' : 'block', this.surfaceClasses(), this.widthPaddingClasses(), this.class()), /* @ts-ignore */
160
- ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
161
- frameClasses = computed(() => {
162
- const gridLine = this.isGridLineSurface();
163
- return cn(
164
- // Solid frame (FluxUI-style): the panel stays --background (constant
165
- // white / near-black) while the tinted --layout-canvas shows only around
166
- // it. The old translucent veil (bg-background/55 + blur) is gone — the
167
- // decorative host surfaces/rails no longer bleed through the frame.
168
- 'relative min-h-0 min-w-0 bg-background', this.frameSizeClasses(),
169
- // Frame border color:
170
- // • border-rail → the accent-driven rail color var (--layout-rail-color / -opacity),
171
- // so the frame border (--layout-rail-width) matches the rail lines.
172
- // • grid-line flat → the accent at --layout-grid-line-border-opacity (0.484).
173
- // • everything else → --border.
174
- this.isBorderRail()
175
- ? 'border-[hsl(var(--layout-rail-color)/var(--layout-rail-opacity))]'
176
- : gridLine
177
- ? 'border-[hsl(var(--accent-foreground)/var(--layout-grid-line-border-opacity))]'
178
- : 'border-border',
179
- // flat: the outer frame rounds with the active theme-radius
180
- // (--layout-frame-radius → --radius-lg → --radius-base). border-rail keeps
181
- // square corners for its grid-rail aesthetic. `grid-line` is always a clearly
182
- // bordered square box (rounded-none + a visible border in every width) so the
183
- // mosaic reads as a framed panel.
184
- this.isBorderRail()
185
- ? 'overflow-visible border-[length:var(--layout-rail-width)]'
186
- : gridLine
187
- ? 'overflow-hidden border rounded-none'
188
- : this.isFullFlat()
189
- ? 'overflow-hidden'
190
- : 'overflow-hidden border rounded-[var(--layout-frame-radius)]');
191
- }, /* @ts-ignore */
192
- ...(ngDevMode ? [{ debugName: "frameClasses" }] : /* istanbul ignore next */ []));
193
- frameLayerClasses = computed(() => cn('col-start-1 row-start-1', this.frameClasses()), /* @ts-ignore */
194
- ...(ngDevMode ? [{ debugName: "frameLayerClasses" }] : /* istanbul ignore next */ []));
195
- constructor() {
196
- effect(() => {
197
- const surface = this.surface();
198
- if (surface !== null) {
199
- this.layout.setSurface(surface, { persist: false });
200
- }
201
- else {
202
- this.layout.registerSurface(LAYOUT_DEFAULT_SURFACE);
203
- }
204
- const appearance = this.appearanceInput();
205
- if (appearance !== null) {
206
- this.layout.setAppearance(appearance, { persist: false });
207
- }
208
- else {
209
- this.layout.registerAppearance(LAYOUT_DEFAULT_APPEARANCE);
210
- }
211
- if (this.resolvedAppearance() === 'border-rail' && this.themeRadius.radius() !== 'none') {
212
- this.themeRadius.setRadius('none');
213
- }
214
- // While the shell mode locks the width, the incoming value is NOT recorded.
215
- // Hosts commonly feed `width` straight back from `LayoutService.width()`, which
216
- // already reports the locked width — writing that back would overwrite the
217
- // user's real preference with the lock and lose it for good.
218
- const width = this.width();
219
- if (this.layout.widthLocked()) {
220
- // no-op: resolvedWidth() forces the locked width regardless
221
- }
222
- else if (width !== null) {
223
- this.layout.setWidth(width, { persist: false });
224
- }
225
- else {
226
- this.layout.registerWidth(LAYOUT_DEFAULT_WIDTH);
227
- }
228
- // Type: bila consumer mendaftarkan `layout-type`, itu jadi sumber kebenaran (override
229
- // variant). Bila null, dibiarkan — variant `Layout*` yang menetapkan (registerType default
230
- // sengaja TIDAK dipanggil agar tidak menimpa type yang sudah di-set variant).
231
- const type = this.type();
232
- if (type !== null) {
233
- this.layout.setType(type, { persist: false });
234
- }
235
- });
236
- }
237
- surfaceClasses() {
238
- switch (this.resolvedSurface()) {
239
- case 'grid':
240
- // `grid`: two-axis 1px gradient. The line color is --layout-grid-color —
241
- // the pattern LINE tier at --layout-grid-line-opacity (base/theme.css):
242
- // the active theme-neutral's family hue (saturation-raised so it reads),
243
- // or the accent at pinned lightness on theme-neutral='base'. Classic HSL
244
- // triplets keep the same mapping without relative-color support.
245
- return '[--layout-grid-size:2rem] bg-layout-canvas bg-[linear-gradient(var(--layout-grid-color)_1px,transparent_1px),linear-gradient(to_right,var(--layout-grid-color)_1px,transparent_1px)] bg-position-[center_center] bg-size-[var(--layout-grid-size)_var(--layout-grid-size)]';
246
- case 'grid-line':
247
- // `grid-line`: a richer "mosaic" cousin of `grid`, painted by the
248
- // `.layout-surface-grid-line` mask layer (base/components.css). One mask
249
- // carries the faint uniform grid PLUS scattered bright highlight squares
250
- // and a few subtly-lit cells, so the layers stay pixel-aligned. The glow
251
- // is the pattern HIGHLIGHT tier: the active neutral family's hue, or the
252
- // accent on theme-neutral='base' — lightness pinned to
253
- // --layout-grid-highlight-l either way so brightness stays put. (The
254
- // frame border stays accent on every neutral: it is chrome, not pattern.)
255
- return 'bg-layout-canvas layout-surface-grid-line';
256
- case 'honeycomb':
257
- // True honeycomb: tileable hexagon outline painted by the
258
- // `.layout-surface-honeycomb` mask layer (base/components.css), so it
259
- // stays token-colored across themes. `bg-layout-canvas` is the base.
260
- return 'bg-layout-canvas layout-surface-honeycomb';
261
- case 'matrix':
262
- // `matrix`: a scattered binary (0/1) field painted by the
263
- // `.layout-surface-matrix` mask layer (base/components.css). The glyphs
264
- // are tinted with the pattern NODE tier (the active neutral family's
265
- // hue; `--primary` on theme-neutral='base') and carry
266
- // baked-in per-glyph opacity, so the field reads as a soft "digital"
267
- // signature that recolors with the neutral/theme.
268
- return 'bg-layout-canvas layout-surface-matrix';
269
- case 'circuit':
270
- // `circuit`: a tileable PCB / circuit-board texture — routed traces with
271
- // 45° bends, via nodes, and concentric ring pads. Painted by the
272
- // `.layout-surface-circuit` class (base/components.css) as TWO stacked,
273
- // pixel-aligned mask layers (a single mask only carries alpha, so two
274
- // colors need two layers): `::before` strokes the copper traces in the
275
- // pattern LINE tier (`--layout-circuit-trace-color`) and `::after`
276
- // paints the via nodes/pads in the pattern NODE tier
277
- // (`--layout-circuit-node-color`) — the neutral family's hue on every
278
- // neutral except 'base', where the traces tint with the accent and the
279
- // nodes glow with `--primary`. Both recolor across neutrals + dark mode.
280
- return 'bg-layout-canvas layout-surface-circuit';
281
- case 'line-vertical':
282
- // Single-axis rules: --layout-line-color is the pattern LINE tier at
283
- // --layout-grid-dot-opacity (a step above the dense multi-axis tier),
284
- // composed in base/theme.css like --layout-grid-color.
285
- return 'bg-layout-canvas bg-[linear-gradient(to_right,var(--layout-line-color)_1px,transparent_1px)] bg-position-[center_center] bg-size-[2rem_2rem]';
286
- case 'line-horizontal':
287
- return 'bg-layout-canvas bg-[linear-gradient(var(--layout-line-color)_1px,transparent_1px)] bg-position-[center_center] bg-size-[2rem_2rem]';
288
- default:
289
- return 'bg-layout-canvas';
290
- }
291
- }
292
- widthPaddingClasses() {
293
- if (this.isFullFlat())
294
- return '';
295
- switch (this.resolvedWidth()) {
296
- case 'wide':
297
- return 'p-4 lg:p-12';
298
- case 'container':
299
- return 'p-4 lg:px-0 lg:py-16';
300
- case 'fluid':
301
- return 'p-4 sm:p-6 lg:p-8';
302
- default:
303
- return 'p-4'; // full + border-rail
304
- }
305
- }
306
- frameSizeClasses() {
307
- if (this.isFluidFrame()) {
308
- return 'h-auto w-auto max-h-full max-w-full';
309
- }
310
- return this.resolvedWidth() === 'container'
311
- ? 'h-full w-full lg:container lg:mx-auto'
312
- : 'h-full w-full';
313
- }
314
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
315
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: LayoutComponent, isStandalone: true, selector: "Layout", inputs: { surface: { classPropertyName: "surface", publicName: "surface", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, layoutAppearanceAttribute: { classPropertyName: "layoutAppearanceAttribute", publicName: "layout-appearance", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "layout-type", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-layout-root": "" }, properties: { "class": "hostClasses()", "attr.data-surface": "resolvedSurface()", "attr.data-layout-appearance": "resolvedAppearance()", "attr.data-layout-width": "resolvedWidth()", "attr.data-layout-type": "resolvedType()" } }, ngImport: i0, template: `
117
+ `
118
+ }]
119
+ }],
120
+ ctorParameters: () => [],
121
+ propDecorators: {
122
+ class: [{
123
+ type: i0.Input,
124
+ args: [{
125
+ isSignal: true,
126
+ alias: "class",
127
+ required: false
128
+ }]
129
+ }],
130
+ ariaLabel: [{
131
+ type: i0.Input,
132
+ args: [{
133
+ isSignal: true,
134
+ alias: "ariaLabel",
135
+ required: false
136
+ }]
137
+ }]
138
+ }
139
+ });
140
+ var LayoutComponent = class LayoutComponent {
141
+ layout = inject(LayoutService$1);
142
+ themeRadius = inject(ThemeRadiusService);
143
+ surface = input(null, ...ngDevMode ? [{ debugName: "surface" }] : /* istanbul ignore next */ []);
144
+ appearance = input(null, ...ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []);
145
+ layoutAppearanceAttribute = input(null, {
146
+ ...ngDevMode ? { debugName: "layoutAppearanceAttribute" } : /* istanbul ignore next */ {},
147
+ alias: "layout-appearance"
148
+ });
149
+ width = input(null, ...ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []);
150
+ type = input(null, {
151
+ ...ngDevMode ? { debugName: "type" } : /* istanbul ignore next */ {},
152
+ alias: "layout-type"
153
+ });
154
+ class = input("", ...ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []);
155
+ appearanceInput = computed(() => this.appearance() ?? this.layoutAppearanceAttribute(), ...ngDevMode ? [{ debugName: "appearanceInput" }] : /* istanbul ignore next */ []);
156
+ resolvedSurface = computed(() => this.surface() ?? this.layout.surface(), ...ngDevMode ? [{ debugName: "resolvedSurface" }] : /* istanbul ignore next */ []);
157
+ resolvedAppearance = computed(() => this.appearanceInput() ?? this.layout.appearance(), ...ngDevMode ? [{ debugName: "resolvedAppearance" }] : /* istanbul ignore next */ []);
158
+ resolvedWidth = computed(() => this.layout.widthLocked() ? LAYOUT_LOCKED_WIDTH$1 : this.width() ?? this.layout.width(), ...ngDevMode ? [{ debugName: "resolvedWidth" }] : /* istanbul ignore next */ []);
159
+ resolvedType = computed(() => this.type() ?? this.layout.type(), ...ngDevMode ? [{ debugName: "resolvedType" }] : /* istanbul ignore next */ []);
160
+ isBorderRail = computed(() => this.resolvedAppearance() === "border-rail", ...ngDevMode ? [{ debugName: "isBorderRail" }] : /* istanbul ignore next */ []);
161
+ isFluidFrame = computed(() => this.resolvedWidth() === "fluid" && this.resolvedType() === "fluid", ...ngDevMode ? [{ debugName: "isFluidFrame" }] : /* istanbul ignore next */ []);
162
+ isFullFlat = computed(() => this.resolvedWidth() === "full" && !this.isBorderRail(), ...ngDevMode ? [{ debugName: "isFullFlat" }] : /* istanbul ignore next */ []);
163
+ isGridLineSurface = computed(() => this.resolvedSurface() === "grid-line", ...ngDevMode ? [{ debugName: "isGridLineSurface" }] : /* istanbul ignore next */ []);
164
+ showsInsetRails = computed(() => {
165
+ const layoutType = this.resolvedType();
166
+ return this.isBorderRail() && (layoutType === "horizontal" || layoutType === "vertical");
167
+ }, ...ngDevMode ? [{ debugName: "showsInsetRails" }] : /* istanbul ignore next */ []);
168
+ frameStageClasses = computed(() => cn("relative grid min-h-0 min-w-0 grid-cols-1 grid-rows-1", this.frameSizeClasses()), ...ngDevMode ? [{ debugName: "frameStageClasses" }] : /* istanbul ignore next */ []);
169
+ railAnchorClasses = computed(() => "relative h-full min-h-0 w-full min-w-0", ...ngDevMode ? [{ debugName: "railAnchorClasses" }] : /* istanbul ignore next */ []);
170
+ contentShellClasses = computed(() => cn("relative z-10 min-h-0 min-w-0", this.isFluidFrame() ? "h-auto w-auto max-h-full max-w-full" : "h-full w-full", this.isBorderRail() ? "overflow-visible" : "overflow-hidden"), ...ngDevMode ? [{ debugName: "contentShellClasses" }] : /* istanbul ignore next */ []);
171
+ hostClasses = computed(() => cn("relative isolate h-[var(--layout-viewport-height,100dvh)] w-[var(--layout-viewport-width,100%)] min-w-0 box-border overflow-hidden text-foreground", this.isFluidFrame() ? "grid place-items-center" : "block", this.surfaceClasses(), this.widthPaddingClasses(), this.class()), ...ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []);
172
+ frameClasses = computed(() => {
173
+ const gridLine = this.isGridLineSurface();
174
+ return cn("relative min-h-0 min-w-0 bg-background", this.frameSizeClasses(), this.isBorderRail() ? "border-[hsl(var(--layout-rail-color)/var(--layout-rail-opacity))]" : gridLine ? "border-[hsl(var(--accent-foreground)/var(--layout-grid-line-border-opacity))]" : "border-border", this.isBorderRail() ? "overflow-visible border-[length:var(--layout-rail-width)]" : gridLine ? "overflow-hidden border rounded-none" : this.isFullFlat() ? "overflow-hidden" : "overflow-hidden border rounded-[var(--layout-frame-radius)]");
175
+ }, ...ngDevMode ? [{ debugName: "frameClasses" }] : /* istanbul ignore next */ []);
176
+ frameLayerClasses = computed(() => cn("col-start-1 row-start-1", this.frameClasses()), ...ngDevMode ? [{ debugName: "frameLayerClasses" }] : /* istanbul ignore next */ []);
177
+ constructor() {
178
+ effect(() => {
179
+ const surface = this.surface();
180
+ if (surface !== null) this.layout.setSurface(surface, { persist: false });
181
+ else this.layout.registerSurface(LAYOUT_DEFAULT_SURFACE$1);
182
+ const appearance = this.appearanceInput();
183
+ if (appearance !== null) this.layout.setAppearance(appearance, { persist: false });
184
+ else this.layout.registerAppearance(LAYOUT_DEFAULT_APPEARANCE$1);
185
+ if (this.resolvedAppearance() === "border-rail" && this.themeRadius.radius() !== "none") this.themeRadius.setRadius("none");
186
+ const width = this.width();
187
+ if (this.layout.widthLocked()) {} else if (width !== null) this.layout.setWidth(width, { persist: false });
188
+ else this.layout.registerWidth(LAYOUT_DEFAULT_WIDTH$1);
189
+ const type = this.type();
190
+ if (type !== null) this.layout.setType(type, { persist: false });
191
+ });
192
+ }
193
+ surfaceClasses() {
194
+ switch (this.resolvedSurface()) {
195
+ case "grid": return "[--layout-grid-size:2rem] bg-layout-canvas bg-[linear-gradient(var(--layout-grid-color)_1px,transparent_1px),linear-gradient(to_right,var(--layout-grid-color)_1px,transparent_1px)] bg-position-[center_center] bg-size-[var(--layout-grid-size)_var(--layout-grid-size)]";
196
+ case "grid-line": return "bg-layout-canvas layout-surface-grid-line";
197
+ case "honeycomb": return "bg-layout-canvas layout-surface-honeycomb";
198
+ case "matrix": return "bg-layout-canvas layout-surface-matrix";
199
+ case "circuit": return "bg-layout-canvas layout-surface-circuit";
200
+ case "line-vertical": return "bg-layout-canvas bg-[linear-gradient(to_right,var(--layout-line-color)_1px,transparent_1px)] bg-position-[center_center] bg-size-[2rem_2rem]";
201
+ case "line-horizontal": return "bg-layout-canvas bg-[linear-gradient(var(--layout-line-color)_1px,transparent_1px)] bg-position-[center_center] bg-size-[2rem_2rem]";
202
+ default: return "bg-layout-canvas";
203
+ }
204
+ }
205
+ widthPaddingClasses() {
206
+ if (this.isFullFlat()) return "";
207
+ switch (this.resolvedWidth()) {
208
+ case "wide": return "p-4 lg:p-12";
209
+ case "container": return "p-4 lg:px-0 lg:py-16";
210
+ case "fluid": return "p-4 sm:p-6 lg:p-8";
211
+ default: return "p-4";
212
+ }
213
+ }
214
+ frameSizeClasses() {
215
+ if (this.isFluidFrame()) return "h-auto w-auto max-h-full max-w-full";
216
+ return this.resolvedWidth() === "container" ? "h-full w-full lg:container lg:mx-auto" : "h-full w-full";
217
+ }
218
+ static ɵfac = i0.ɵɵngDeclareFactory({
219
+ minVersion: "12.0.0",
220
+ version: "22.2.2",
221
+ ngImport: i0,
222
+ type: LayoutComponent,
223
+ deps: [],
224
+ target: i0.ɵɵFactoryTarget.Component
225
+ });
226
+ static ɵcmp = i0.ɵɵngDeclareComponent({
227
+ minVersion: "17.0.0",
228
+ version: "22.2.2",
229
+ type: LayoutComponent,
230
+ isStandalone: true,
231
+ selector: "Layout",
232
+ inputs: {
233
+ surface: {
234
+ classPropertyName: "surface",
235
+ publicName: "surface",
236
+ isSignal: true,
237
+ isRequired: false,
238
+ transformFunction: null
239
+ },
240
+ appearance: {
241
+ classPropertyName: "appearance",
242
+ publicName: "appearance",
243
+ isSignal: true,
244
+ isRequired: false,
245
+ transformFunction: null
246
+ },
247
+ layoutAppearanceAttribute: {
248
+ classPropertyName: "layoutAppearanceAttribute",
249
+ publicName: "layout-appearance",
250
+ isSignal: true,
251
+ isRequired: false,
252
+ transformFunction: null
253
+ },
254
+ width: {
255
+ classPropertyName: "width",
256
+ publicName: "width",
257
+ isSignal: true,
258
+ isRequired: false,
259
+ transformFunction: null
260
+ },
261
+ type: {
262
+ classPropertyName: "type",
263
+ publicName: "layout-type",
264
+ isSignal: true,
265
+ isRequired: false,
266
+ transformFunction: null
267
+ },
268
+ class: {
269
+ classPropertyName: "class",
270
+ publicName: "class",
271
+ isSignal: true,
272
+ isRequired: false,
273
+ transformFunction: null
274
+ }
275
+ },
276
+ host: {
277
+ attributes: { "data-layout-root": "" },
278
+ properties: {
279
+ "class": "hostClasses()",
280
+ "attr.data-surface": "resolvedSurface()",
281
+ "attr.data-layout-appearance": "resolvedAppearance()",
282
+ "attr.data-layout-width": "resolvedWidth()",
283
+ "attr.data-layout-type": "resolvedType()"
284
+ }
285
+ },
286
+ ngImport: i0,
287
+ template: `
316
288
  <LayoutLoading />
317
289
 
318
290
  <div data-layout-stage [class]="frameStageClasses()">
@@ -417,22 +389,35 @@ class LayoutComponent {
417
389
  </div>
418
390
  </div>
419
391
  </div>
420
- `, isInline: true, dependencies: [{ kind: "component", type: LayoutLoadingComponent, selector: "LayoutLoading", inputs: ["class", "ariaLabel"] }] });
421
- }
422
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutComponent, decorators: [{
423
- type: Component,
424
- args: [{
425
- selector: 'Layout',
426
- imports: [LayoutLoadingComponent],
427
- host: {
428
- '[class]': 'hostClasses()',
429
- 'data-layout-root': '',
430
- '[attr.data-surface]': 'resolvedSurface()',
431
- '[attr.data-layout-appearance]': 'resolvedAppearance()',
432
- '[attr.data-layout-width]': 'resolvedWidth()',
433
- '[attr.data-layout-type]': 'resolvedType()',
434
- },
435
- template: `
392
+ `,
393
+ isInline: true,
394
+ dependencies: [{
395
+ kind: "component",
396
+ type: LayoutLoadingComponent,
397
+ selector: "LayoutLoading",
398
+ inputs: ["class", "ariaLabel"]
399
+ }]
400
+ });
401
+ };
402
+ i0.ɵɵngDeclareClassMetadata({
403
+ minVersion: "12.0.0",
404
+ version: "22.2.2",
405
+ ngImport: i0,
406
+ type: LayoutComponent,
407
+ decorators: [{
408
+ type: Component,
409
+ args: [{
410
+ selector: "Layout",
411
+ imports: [LayoutLoadingComponent],
412
+ host: {
413
+ "[class]": "hostClasses()",
414
+ "data-layout-root": "",
415
+ "[attr.data-surface]": "resolvedSurface()",
416
+ "[attr.data-layout-appearance]": "resolvedAppearance()",
417
+ "[attr.data-layout-width]": "resolvedWidth()",
418
+ "[attr.data-layout-type]": "resolvedType()"
419
+ },
420
+ template: `
436
421
  <LayoutLoading />
437
422
 
438
423
  <div data-layout-stage [class]="frameStageClasses()">
@@ -537,202 +522,568 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
537
522
  </div>
538
523
  </div>
539
524
  </div>
540
- `,
541
- }]
542
- }], ctorParameters: () => [], propDecorators: { surface: [{ type: i0.Input, args: [{ isSignal: true, alias: "surface", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], layoutAppearanceAttribute: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout-appearance", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout-type", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
543
-
544
- class LayoutVerticalComponent {
545
- layout = inject(LayoutService);
546
- class = input('', /* @ts-ignore */
547
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
548
- classes = computed(() => cn('grid h-full min-h-0 w-full min-w-0 grid-cols-[auto_minmax(0,1fr)]', this.layout.appearance() === 'border-rail' ? 'overflow-visible' : 'overflow-hidden', this.class()), /* @ts-ignore */
549
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
550
- constructor() {
551
- this.layout.setType('vertical', { persist: false });
552
- }
553
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutVerticalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
554
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.6", type: LayoutVerticalComponent, isStandalone: true, selector: "LayoutVertical", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-layout-variant": "", "data-layout-type": "vertical" }, properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
555
- }
556
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutVerticalComponent, decorators: [{
557
- type: Component,
558
- args: [{
559
- selector: 'LayoutVertical',
560
- host: {
561
- '[class]': 'classes()',
562
- 'data-layout-variant': '',
563
- 'data-layout-type': 'vertical',
564
- },
565
- template: `<ng-content />`,
566
- }]
567
- }], ctorParameters: () => [], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
568
-
569
- class LayoutHorizontalComponent {
570
- layout = inject(LayoutService);
571
- class = input('', /* @ts-ignore */
572
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
573
- classes = computed(() => cn('flex h-full min-h-0 w-full min-w-0 flex-col overflow-hidden', this.class()), /* @ts-ignore */
574
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
575
- constructor() {
576
- this.layout.setType('horizontal', { persist: false });
577
- }
578
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutHorizontalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
579
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.6", type: LayoutHorizontalComponent, isStandalone: true, selector: "LayoutHorizontal", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-layout-variant": "", "data-layout-type": "horizontal" }, properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
580
- }
581
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutHorizontalComponent, decorators: [{
582
- type: Component,
583
- args: [{
584
- selector: 'LayoutHorizontal',
585
- host: {
586
- '[class]': 'classes()',
587
- 'data-layout-variant': '',
588
- 'data-layout-type': 'horizontal',
589
- },
590
- template: `<ng-content />`,
591
- }]
592
- }], ctorParameters: () => [], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
593
-
594
- class LayoutEmptyComponent {
595
- layout = inject(LayoutService);
596
- class = input('', /* @ts-ignore */
597
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
598
- classes = computed(() => cn('h-full min-h-0 w-full min-w-0 overflow-hidden', this.class()), /* @ts-ignore */
599
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
600
- constructor() {
601
- this.layout.setType('empty', { persist: false });
602
- }
603
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutEmptyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
604
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.6", type: LayoutEmptyComponent, isStandalone: true, selector: "LayoutEmpty", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-layout-variant": "", "data-layout-type": "empty" }, properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
605
- }
606
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutEmptyComponent, decorators: [{
607
- type: Component,
608
- args: [{
609
- selector: 'LayoutEmpty',
610
- host: {
611
- '[class]': 'classes()',
612
- 'data-layout-variant': '',
613
- 'data-layout-type': 'empty',
614
- },
615
- template: `<ng-content />`,
616
- }]
617
- }], ctorParameters: () => [], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
618
-
619
- class LayoutFluidComponent {
620
- layout = inject(LayoutService);
621
- class = input('', /* @ts-ignore */
622
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
623
- classes = computed(() => cn('grid min-h-0 min-w-0 place-items-center overflow-auto', this.layout.width() === 'fluid' ? 'h-auto w-auto max-h-full max-w-full' : 'h-full w-full', this.class()), /* @ts-ignore */
624
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
625
- constructor() {
626
- this.layout.setType('fluid', { persist: false });
627
- }
628
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutFluidComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
629
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.6", type: LayoutFluidComponent, isStandalone: true, selector: "LayoutFluid", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-layout-variant": "", "data-layout-type": "fluid" }, properties: { "class": "classes()" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
630
- }
631
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutFluidComponent, decorators: [{
632
- type: Component,
633
- args: [{
634
- selector: 'LayoutFluid',
635
- host: {
636
- '[class]': 'classes()',
637
- 'data-layout-variant': '',
638
- 'data-layout-type': 'fluid',
639
- },
640
- template: `<ng-content />`,
641
- }]
642
- }], ctorParameters: () => [], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
643
-
644
- class LayoutNavigationComponent {
645
- layout = inject(LayoutService);
646
- ariaLabel = input('Layout navigation', /* @ts-ignore */
647
- ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
648
- /** Turn off when the child `<Navigation>` is already the semantic navigation landmark. */
649
- landmark = input(true, { ...(ngDevMode ? { debugName: "landmark" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
650
- class = input('', /* @ts-ignore */
651
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
652
- classes = computed(() => {
653
- const layoutType = this.layout.type();
654
- return cn('relative block min-h-0 min-w-0', layoutType === 'horizontal' &&
655
- 'h-(--layout-topbar-height) min-h-(--layout-topbar-height) w-full shrink-0 overflow-visible',
656
- // overflow-visible: clipping diatur host <Navigation>; overlay nav (aside
657
- // drawer dockbar, preview rail) keluar dari kolom rail collapsed dan overflow-hidden
658
- // di sini ikut ter-scroll oleh focus scroll-into-view sehingga rail hilang.
659
- layoutType === 'vertical' && 'h-full w-max max-w-full shrink-0 overflow-visible',
660
- // empty & fluid = layout fokus-konten: slot nav boleh tetap diproyeksikan agar struktur
661
- // konsumen seragam (`LayoutNavigation` + `LayoutContent`), tapi nav-nya disembunyikan.
662
- (layoutType === 'empty' || layoutType === 'fluid') && 'hidden', this.class());
663
- }, /* @ts-ignore */
664
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
665
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutNavigationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
666
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.6", type: LayoutNavigationComponent, isStandalone: true, selector: "LayoutNavigation", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, landmark: { classPropertyName: "landmark", publicName: "landmark", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-layout-navigation": "" }, properties: { "class": "classes()", "attr.role": "landmark() ? \"navigation\" : null", "attr.aria-label": "landmark() ? ariaLabel() || null : null", "attr.data-layout-type": "layout.type()", "attr.data-layout-appearance": "layout.appearance()" } }, ngImport: i0, template: ` <ng-content /> `, isInline: true });
667
- }
668
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutNavigationComponent, decorators: [{
669
- type: Component,
670
- args: [{
671
- selector: 'LayoutNavigation',
672
- host: {
673
- '[class]': 'classes()',
674
- 'data-layout-navigation': '',
675
- '[attr.role]': 'landmark() ? "navigation" : null',
676
- '[attr.aria-label]': 'landmark() ? ariaLabel() || null : null',
677
- '[attr.data-layout-type]': 'layout.type()',
678
- '[attr.data-layout-appearance]': 'layout.appearance()',
679
- },
680
- template: ` <ng-content /> `,
681
- }]
682
- }], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], landmark: [{ type: i0.Input, args: [{ isSignal: true, alias: "landmark", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
683
-
684
- class LayoutContentComponent {
685
- layout = inject(LayoutService);
686
- document = inject(DOCUMENT, { optional: true });
687
- host = inject((ElementRef));
688
- router = inject(Router, { optional: true });
689
- class = input('', /* @ts-ignore */
690
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
691
- /** Stable target for the skip link. */
692
- contentId = input('main-content', { ...(ngDevMode ? { debugName: "contentId" } : /* istanbul ignore next */ {}), alias: 'content-id' });
693
- /** Move focus to the main landmark after NavigationEnd (opt-in). */
694
- focusOnNavigation = input(false, { ...(ngDevMode ? { debugName: "focusOnNavigation" } : /* istanbul ignore next */ {}), alias: 'focus-on-navigation' });
695
- classes = computed(() => {
696
- const layoutType = this.layout.type();
697
- return cn('block min-h-0 min-w-0 overflow-auto', layoutType === 'horizontal' && 'flex-1', layoutType === 'vertical' && 'h-full', layoutType === 'empty' && 'h-full w-full',
698
- // fluid: konten dipusatkan oleh LayoutFluid; batasi ke ukuran frame agar tetap scrollable.
699
- layoutType === 'fluid' && 'max-h-full max-w-full', this.layout.width() === 'container' && 'w-full lg:container lg:mx-auto', this.class());
700
- }, /* @ts-ignore */
701
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
702
- constructor() {
703
- this.router?.events.pipe(takeUntilDestroyed()).subscribe((event) => {
704
- if (!(event instanceof NavigationEnd) || !this.focusOnNavigation()) {
705
- return;
706
- }
707
- const view = this.document?.defaultView;
708
- if (!view) {
709
- return;
710
- }
711
- view.requestAnimationFrame(() => this.host.nativeElement.focus());
712
- });
713
- }
714
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
715
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.6", type: LayoutContentComponent, isStandalone: true, selector: "LayoutContent", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, contentId: { classPropertyName: "contentId", publicName: "content-id", isSignal: true, isRequired: false, transformFunction: null }, focusOnNavigation: { classPropertyName: "focusOnNavigation", publicName: "focus-on-navigation", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "data-layout-content": "", "role": "main", "tabindex": "-1" }, properties: { "class": "classes()", "attr.id": "contentId()", "attr.data-layout-type": "layout.type()", "attr.data-layout-width": "layout.width()" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
716
- }
717
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: LayoutContentComponent, decorators: [{
718
- type: Component,
719
- args: [{
720
- selector: 'LayoutContent',
721
- host: {
722
- '[class]': 'classes()',
723
- 'data-layout-content': '',
724
- '[attr.id]': 'contentId()',
725
- role: 'main',
726
- tabindex: '-1',
727
- '[attr.data-layout-type]': 'layout.type()',
728
- '[attr.data-layout-width]': 'layout.width()',
729
- },
730
- template: `<ng-content />`,
731
- }]
732
- }], ctorParameters: () => [], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], contentId: [{ type: i0.Input, args: [{ isSignal: true, alias: "content-id", required: false }] }], focusOnNavigation: [{ type: i0.Input, args: [{ isSignal: true, alias: "focus-on-navigation", required: false }] }] } });
733
-
734
- /**
735
- * Generated bundle index. Do not edit.
736
- */
737
-
738
- export { LayoutComponent, LayoutContentComponent, LayoutEmptyComponent, LayoutFluidComponent, LayoutHorizontalComponent, LayoutLoadingComponent, LayoutNavigationComponent, LayoutVerticalComponent };
525
+ `
526
+ }]
527
+ }],
528
+ ctorParameters: () => [],
529
+ propDecorators: {
530
+ surface: [{
531
+ type: i0.Input,
532
+ args: [{
533
+ isSignal: true,
534
+ alias: "surface",
535
+ required: false
536
+ }]
537
+ }],
538
+ appearance: [{
539
+ type: i0.Input,
540
+ args: [{
541
+ isSignal: true,
542
+ alias: "appearance",
543
+ required: false
544
+ }]
545
+ }],
546
+ layoutAppearanceAttribute: [{
547
+ type: i0.Input,
548
+ args: [{
549
+ isSignal: true,
550
+ alias: "layout-appearance",
551
+ required: false
552
+ }]
553
+ }],
554
+ width: [{
555
+ type: i0.Input,
556
+ args: [{
557
+ isSignal: true,
558
+ alias: "width",
559
+ required: false
560
+ }]
561
+ }],
562
+ type: [{
563
+ type: i0.Input,
564
+ args: [{
565
+ isSignal: true,
566
+ alias: "layout-type",
567
+ required: false
568
+ }]
569
+ }],
570
+ class: [{
571
+ type: i0.Input,
572
+ args: [{
573
+ isSignal: true,
574
+ alias: "class",
575
+ required: false
576
+ }]
577
+ }]
578
+ }
579
+ });
580
+ var LayoutVerticalComponent = class LayoutVerticalComponent {
581
+ layout = inject(LayoutService$1);
582
+ class = input("", ...ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []);
583
+ classes = computed(() => cn("grid h-full min-h-0 w-full min-w-0 grid-cols-[auto_minmax(0,1fr)]", this.layout.appearance() === "border-rail" ? "overflow-visible" : "overflow-hidden", this.class()), ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
584
+ constructor() {
585
+ this.layout.setType("vertical", { persist: false });
586
+ }
587
+ static ɵfac = i0.ɵɵngDeclareFactory({
588
+ minVersion: "12.0.0",
589
+ version: "22.2.2",
590
+ ngImport: i0,
591
+ type: LayoutVerticalComponent,
592
+ deps: [],
593
+ target: i0.ɵɵFactoryTarget.Component
594
+ });
595
+ static ɵcmp = i0.ɵɵngDeclareComponent({
596
+ minVersion: "17.1.0",
597
+ version: "22.2.2",
598
+ type: LayoutVerticalComponent,
599
+ isStandalone: true,
600
+ selector: "LayoutVertical",
601
+ inputs: { class: {
602
+ classPropertyName: "class",
603
+ publicName: "class",
604
+ isSignal: true,
605
+ isRequired: false,
606
+ transformFunction: null
607
+ } },
608
+ host: {
609
+ attributes: {
610
+ "data-layout-variant": "",
611
+ "data-layout-type": "vertical"
612
+ },
613
+ properties: { "class": "classes()" }
614
+ },
615
+ ngImport: i0,
616
+ template: `<ng-content />`,
617
+ isInline: true
618
+ });
619
+ };
620
+ i0.ɵɵngDeclareClassMetadata({
621
+ minVersion: "12.0.0",
622
+ version: "22.2.2",
623
+ ngImport: i0,
624
+ type: LayoutVerticalComponent,
625
+ decorators: [{
626
+ type: Component,
627
+ args: [{
628
+ selector: "LayoutVertical",
629
+ host: {
630
+ "[class]": "classes()",
631
+ "data-layout-variant": "",
632
+ "data-layout-type": "vertical"
633
+ },
634
+ template: `<ng-content />`
635
+ }]
636
+ }],
637
+ ctorParameters: () => [],
638
+ propDecorators: { class: [{
639
+ type: i0.Input,
640
+ args: [{
641
+ isSignal: true,
642
+ alias: "class",
643
+ required: false
644
+ }]
645
+ }] }
646
+ });
647
+ var LayoutHorizontalComponent = class LayoutHorizontalComponent {
648
+ layout = inject(LayoutService$1);
649
+ class = input("", ...ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []);
650
+ classes = computed(() => cn("flex h-full min-h-0 w-full min-w-0 flex-col overflow-hidden", this.class()), ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
651
+ constructor() {
652
+ this.layout.setType("horizontal", { persist: false });
653
+ }
654
+ static ɵfac = i0.ɵɵngDeclareFactory({
655
+ minVersion: "12.0.0",
656
+ version: "22.2.2",
657
+ ngImport: i0,
658
+ type: LayoutHorizontalComponent,
659
+ deps: [],
660
+ target: i0.ɵɵFactoryTarget.Component
661
+ });
662
+ static ɵcmp = i0.ɵɵngDeclareComponent({
663
+ minVersion: "17.1.0",
664
+ version: "22.2.2",
665
+ type: LayoutHorizontalComponent,
666
+ isStandalone: true,
667
+ selector: "LayoutHorizontal",
668
+ inputs: { class: {
669
+ classPropertyName: "class",
670
+ publicName: "class",
671
+ isSignal: true,
672
+ isRequired: false,
673
+ transformFunction: null
674
+ } },
675
+ host: {
676
+ attributes: {
677
+ "data-layout-variant": "",
678
+ "data-layout-type": "horizontal"
679
+ },
680
+ properties: { "class": "classes()" }
681
+ },
682
+ ngImport: i0,
683
+ template: `<ng-content />`,
684
+ isInline: true
685
+ });
686
+ };
687
+ i0.ɵɵngDeclareClassMetadata({
688
+ minVersion: "12.0.0",
689
+ version: "22.2.2",
690
+ ngImport: i0,
691
+ type: LayoutHorizontalComponent,
692
+ decorators: [{
693
+ type: Component,
694
+ args: [{
695
+ selector: "LayoutHorizontal",
696
+ host: {
697
+ "[class]": "classes()",
698
+ "data-layout-variant": "",
699
+ "data-layout-type": "horizontal"
700
+ },
701
+ template: `<ng-content />`
702
+ }]
703
+ }],
704
+ ctorParameters: () => [],
705
+ propDecorators: { class: [{
706
+ type: i0.Input,
707
+ args: [{
708
+ isSignal: true,
709
+ alias: "class",
710
+ required: false
711
+ }]
712
+ }] }
713
+ });
714
+ var LayoutEmptyComponent = class LayoutEmptyComponent {
715
+ layout = inject(LayoutService$1);
716
+ class = input("", ...ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []);
717
+ classes = computed(() => cn("h-full min-h-0 w-full min-w-0 overflow-hidden", this.class()), ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
718
+ constructor() {
719
+ this.layout.setType("empty", { persist: false });
720
+ }
721
+ static ɵfac = i0.ɵɵngDeclareFactory({
722
+ minVersion: "12.0.0",
723
+ version: "22.2.2",
724
+ ngImport: i0,
725
+ type: LayoutEmptyComponent,
726
+ deps: [],
727
+ target: i0.ɵɵFactoryTarget.Component
728
+ });
729
+ static ɵcmp = i0.ɵɵngDeclareComponent({
730
+ minVersion: "17.1.0",
731
+ version: "22.2.2",
732
+ type: LayoutEmptyComponent,
733
+ isStandalone: true,
734
+ selector: "LayoutEmpty",
735
+ inputs: { class: {
736
+ classPropertyName: "class",
737
+ publicName: "class",
738
+ isSignal: true,
739
+ isRequired: false,
740
+ transformFunction: null
741
+ } },
742
+ host: {
743
+ attributes: {
744
+ "data-layout-variant": "",
745
+ "data-layout-type": "empty"
746
+ },
747
+ properties: { "class": "classes()" }
748
+ },
749
+ ngImport: i0,
750
+ template: `<ng-content />`,
751
+ isInline: true
752
+ });
753
+ };
754
+ i0.ɵɵngDeclareClassMetadata({
755
+ minVersion: "12.0.0",
756
+ version: "22.2.2",
757
+ ngImport: i0,
758
+ type: LayoutEmptyComponent,
759
+ decorators: [{
760
+ type: Component,
761
+ args: [{
762
+ selector: "LayoutEmpty",
763
+ host: {
764
+ "[class]": "classes()",
765
+ "data-layout-variant": "",
766
+ "data-layout-type": "empty"
767
+ },
768
+ template: `<ng-content />`
769
+ }]
770
+ }],
771
+ ctorParameters: () => [],
772
+ propDecorators: { class: [{
773
+ type: i0.Input,
774
+ args: [{
775
+ isSignal: true,
776
+ alias: "class",
777
+ required: false
778
+ }]
779
+ }] }
780
+ });
781
+ var LayoutFluidComponent = class LayoutFluidComponent {
782
+ layout = inject(LayoutService$1);
783
+ class = input("", ...ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []);
784
+ classes = computed(() => cn("grid min-h-0 min-w-0 place-items-center overflow-auto", this.layout.width() === "fluid" ? "h-auto w-auto max-h-full max-w-full" : "h-full w-full", this.class()), ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
785
+ constructor() {
786
+ this.layout.setType("fluid", { persist: false });
787
+ }
788
+ static ɵfac = i0.ɵɵngDeclareFactory({
789
+ minVersion: "12.0.0",
790
+ version: "22.2.2",
791
+ ngImport: i0,
792
+ type: LayoutFluidComponent,
793
+ deps: [],
794
+ target: i0.ɵɵFactoryTarget.Component
795
+ });
796
+ static ɵcmp = i0.ɵɵngDeclareComponent({
797
+ minVersion: "17.1.0",
798
+ version: "22.2.2",
799
+ type: LayoutFluidComponent,
800
+ isStandalone: true,
801
+ selector: "LayoutFluid",
802
+ inputs: { class: {
803
+ classPropertyName: "class",
804
+ publicName: "class",
805
+ isSignal: true,
806
+ isRequired: false,
807
+ transformFunction: null
808
+ } },
809
+ host: {
810
+ attributes: {
811
+ "data-layout-variant": "",
812
+ "data-layout-type": "fluid"
813
+ },
814
+ properties: { "class": "classes()" }
815
+ },
816
+ ngImport: i0,
817
+ template: `<ng-content />`,
818
+ isInline: true
819
+ });
820
+ };
821
+ i0.ɵɵngDeclareClassMetadata({
822
+ minVersion: "12.0.0",
823
+ version: "22.2.2",
824
+ ngImport: i0,
825
+ type: LayoutFluidComponent,
826
+ decorators: [{
827
+ type: Component,
828
+ args: [{
829
+ selector: "LayoutFluid",
830
+ host: {
831
+ "[class]": "classes()",
832
+ "data-layout-variant": "",
833
+ "data-layout-type": "fluid"
834
+ },
835
+ template: `<ng-content />`
836
+ }]
837
+ }],
838
+ ctorParameters: () => [],
839
+ propDecorators: { class: [{
840
+ type: i0.Input,
841
+ args: [{
842
+ isSignal: true,
843
+ alias: "class",
844
+ required: false
845
+ }]
846
+ }] }
847
+ });
848
+ var LayoutNavigationComponent = class LayoutNavigationComponent {
849
+ layout = inject(LayoutService$1);
850
+ ariaLabel = input("Layout navigation", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
851
+ landmark = input(true, {
852
+ ...ngDevMode ? { debugName: "landmark" } : /* istanbul ignore next */ {},
853
+ transform: booleanAttribute
854
+ });
855
+ class = input("", ...ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []);
856
+ classes = computed(() => {
857
+ const layoutType = this.layout.type();
858
+ return cn("relative block min-h-0 min-w-0", layoutType === "horizontal" && "h-(--layout-topbar-height) min-h-(--layout-topbar-height) w-full shrink-0 overflow-visible", layoutType === "vertical" && "h-full w-max max-w-full shrink-0 overflow-visible", (layoutType === "empty" || layoutType === "fluid") && "hidden", this.class());
859
+ }, ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
860
+ static ɵfac = i0.ɵɵngDeclareFactory({
861
+ minVersion: "12.0.0",
862
+ version: "22.2.2",
863
+ ngImport: i0,
864
+ type: LayoutNavigationComponent,
865
+ deps: [],
866
+ target: i0.ɵɵFactoryTarget.Component
867
+ });
868
+ static ɵcmp = i0.ɵɵngDeclareComponent({
869
+ minVersion: "17.1.0",
870
+ version: "22.2.2",
871
+ type: LayoutNavigationComponent,
872
+ isStandalone: true,
873
+ selector: "LayoutNavigation",
874
+ inputs: {
875
+ ariaLabel: {
876
+ classPropertyName: "ariaLabel",
877
+ publicName: "ariaLabel",
878
+ isSignal: true,
879
+ isRequired: false,
880
+ transformFunction: null
881
+ },
882
+ landmark: {
883
+ classPropertyName: "landmark",
884
+ publicName: "landmark",
885
+ isSignal: true,
886
+ isRequired: false,
887
+ transformFunction: null
888
+ },
889
+ class: {
890
+ classPropertyName: "class",
891
+ publicName: "class",
892
+ isSignal: true,
893
+ isRequired: false,
894
+ transformFunction: null
895
+ }
896
+ },
897
+ host: {
898
+ attributes: { "data-layout-navigation": "" },
899
+ properties: {
900
+ "class": "classes()",
901
+ "attr.role": "landmark() ? \"navigation\" : null",
902
+ "attr.aria-label": "landmark() ? ariaLabel() || null : null",
903
+ "attr.data-layout-type": "layout.type()",
904
+ "attr.data-layout-appearance": "layout.appearance()"
905
+ }
906
+ },
907
+ ngImport: i0,
908
+ template: ` <ng-content /> `,
909
+ isInline: true
910
+ });
911
+ };
912
+ i0.ɵɵngDeclareClassMetadata({
913
+ minVersion: "12.0.0",
914
+ version: "22.2.2",
915
+ ngImport: i0,
916
+ type: LayoutNavigationComponent,
917
+ decorators: [{
918
+ type: Component,
919
+ args: [{
920
+ selector: "LayoutNavigation",
921
+ host: {
922
+ "[class]": "classes()",
923
+ "data-layout-navigation": "",
924
+ "[attr.role]": "landmark() ? \"navigation\" : null",
925
+ "[attr.aria-label]": "landmark() ? ariaLabel() || null : null",
926
+ "[attr.data-layout-type]": "layout.type()",
927
+ "[attr.data-layout-appearance]": "layout.appearance()"
928
+ },
929
+ template: ` <ng-content /> `
930
+ }]
931
+ }],
932
+ propDecorators: {
933
+ ariaLabel: [{
934
+ type: i0.Input,
935
+ args: [{
936
+ isSignal: true,
937
+ alias: "ariaLabel",
938
+ required: false
939
+ }]
940
+ }],
941
+ landmark: [{
942
+ type: i0.Input,
943
+ args: [{
944
+ isSignal: true,
945
+ alias: "landmark",
946
+ required: false
947
+ }]
948
+ }],
949
+ class: [{
950
+ type: i0.Input,
951
+ args: [{
952
+ isSignal: true,
953
+ alias: "class",
954
+ required: false
955
+ }]
956
+ }]
957
+ }
958
+ });
959
+ var LayoutContentComponent = class LayoutContentComponent {
960
+ layout = inject(LayoutService$1);
961
+ document = inject(DOCUMENT, { optional: true });
962
+ host = inject(ElementRef);
963
+ router = inject(Router, { optional: true });
964
+ class = input("", ...ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []);
965
+ contentId = input("main-content", {
966
+ ...ngDevMode ? { debugName: "contentId" } : /* istanbul ignore next */ {},
967
+ alias: "content-id"
968
+ });
969
+ focusOnNavigation = input(false, {
970
+ ...ngDevMode ? { debugName: "focusOnNavigation" } : /* istanbul ignore next */ {},
971
+ alias: "focus-on-navigation"
972
+ });
973
+ classes = computed(() => {
974
+ const layoutType = this.layout.type();
975
+ return cn("block min-h-0 min-w-0 overflow-auto", layoutType === "horizontal" && "flex-1", layoutType === "vertical" && "h-full", layoutType === "empty" && "h-full w-full", layoutType === "fluid" && "max-h-full max-w-full", this.layout.width() === "container" && "w-full lg:container lg:mx-auto", this.class());
976
+ }, ...ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []);
977
+ constructor() {
978
+ this.router?.events.pipe(takeUntilDestroyed()).subscribe((event) => {
979
+ if (!(event instanceof NavigationEnd) || !this.focusOnNavigation()) return;
980
+ const view = this.document?.defaultView;
981
+ if (!view) return;
982
+ view.requestAnimationFrame(() => this.host.nativeElement.focus());
983
+ });
984
+ }
985
+ static ɵfac = i0.ɵɵngDeclareFactory({
986
+ minVersion: "12.0.0",
987
+ version: "22.2.2",
988
+ ngImport: i0,
989
+ type: LayoutContentComponent,
990
+ deps: [],
991
+ target: i0.ɵɵFactoryTarget.Component
992
+ });
993
+ static ɵcmp = i0.ɵɵngDeclareComponent({
994
+ minVersion: "17.1.0",
995
+ version: "22.2.2",
996
+ type: LayoutContentComponent,
997
+ isStandalone: true,
998
+ selector: "LayoutContent",
999
+ inputs: {
1000
+ class: {
1001
+ classPropertyName: "class",
1002
+ publicName: "class",
1003
+ isSignal: true,
1004
+ isRequired: false,
1005
+ transformFunction: null
1006
+ },
1007
+ contentId: {
1008
+ classPropertyName: "contentId",
1009
+ publicName: "content-id",
1010
+ isSignal: true,
1011
+ isRequired: false,
1012
+ transformFunction: null
1013
+ },
1014
+ focusOnNavigation: {
1015
+ classPropertyName: "focusOnNavigation",
1016
+ publicName: "focus-on-navigation",
1017
+ isSignal: true,
1018
+ isRequired: false,
1019
+ transformFunction: null
1020
+ }
1021
+ },
1022
+ host: {
1023
+ attributes: {
1024
+ "data-layout-content": "",
1025
+ "role": "main",
1026
+ "tabindex": "-1"
1027
+ },
1028
+ properties: {
1029
+ "class": "classes()",
1030
+ "attr.id": "contentId()",
1031
+ "attr.data-layout-type": "layout.type()",
1032
+ "attr.data-layout-width": "layout.width()"
1033
+ }
1034
+ },
1035
+ ngImport: i0,
1036
+ template: `<ng-content />`,
1037
+ isInline: true
1038
+ });
1039
+ };
1040
+ i0.ɵɵngDeclareClassMetadata({
1041
+ minVersion: "12.0.0",
1042
+ version: "22.2.2",
1043
+ ngImport: i0,
1044
+ type: LayoutContentComponent,
1045
+ decorators: [{
1046
+ type: Component,
1047
+ args: [{
1048
+ selector: "LayoutContent",
1049
+ host: {
1050
+ "[class]": "classes()",
1051
+ "data-layout-content": "",
1052
+ "[attr.id]": "contentId()",
1053
+ role: "main",
1054
+ tabindex: "-1",
1055
+ "[attr.data-layout-type]": "layout.type()",
1056
+ "[attr.data-layout-width]": "layout.width()"
1057
+ },
1058
+ template: `<ng-content />`
1059
+ }]
1060
+ }],
1061
+ ctorParameters: () => [],
1062
+ propDecorators: {
1063
+ class: [{
1064
+ type: i0.Input,
1065
+ args: [{
1066
+ isSignal: true,
1067
+ alias: "class",
1068
+ required: false
1069
+ }]
1070
+ }],
1071
+ contentId: [{
1072
+ type: i0.Input,
1073
+ args: [{
1074
+ isSignal: true,
1075
+ alias: "content-id",
1076
+ required: false
1077
+ }]
1078
+ }],
1079
+ focusOnNavigation: [{
1080
+ type: i0.Input,
1081
+ args: [{
1082
+ isSignal: true,
1083
+ alias: "focus-on-navigation",
1084
+ required: false
1085
+ }]
1086
+ }]
1087
+ }
1088
+ });
1089
+ export { LAYOUT_APPEARANCES, LAYOUT_APPEARANCE_STORAGE_KEY, LAYOUT_DEFAULT_APPEARANCE, LAYOUT_DEFAULT_SURFACE, LAYOUT_DEFAULT_TYPE, LAYOUT_DEFAULT_WIDTH, LAYOUT_LOADING_HIDE_DELAY_MS, LAYOUT_LOADING_INITIAL_PROGRESS, LAYOUT_LOADING_SKIP, LAYOUT_LOADING_TRICKLE_CEILING, LAYOUT_LOADING_TRICKLE_INTERVAL_MS, LAYOUT_LOCKED_WIDTH, LAYOUT_SURFACES, LAYOUT_SURFACE_STORAGE_KEY, LAYOUT_TYPES, LAYOUT_TYPE_STORAGE_KEY, LAYOUT_WIDTHS, LAYOUT_WIDTH_STORAGE_KEY, LayoutComponent, LayoutContentComponent, LayoutEmptyComponent, LayoutFluidComponent, LayoutHorizontalComponent, LayoutLoadingComponent, LayoutLoadingService, LayoutNavigationComponent, LayoutService, LayoutVerticalComponent, isUiLayoutAppearance, isUiLayoutSurface, isUiLayoutType, isUiLayoutWidth, layoutLoadingInterceptor };