@ojiepermana/angular 22.2.0 → 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 (102) hide show
  1. package/fesm2022/ojiepermana-angular-chart-area.mjs +3 -3
  2. package/fesm2022/ojiepermana-angular-chart-bar.mjs +3 -3
  3. package/fesm2022/ojiepermana-angular-chart-core.mjs +33 -33
  4. package/fesm2022/ojiepermana-angular-chart-line.mjs +3 -3
  5. package/fesm2022/ojiepermana-angular-chart-pie.mjs +3 -3
  6. package/fesm2022/ojiepermana-angular-chart-primitives.mjs +33 -33
  7. package/fesm2022/ojiepermana-angular-chart-radar.mjs +3 -3
  8. package/fesm2022/ojiepermana-angular-chart-radial.mjs +3 -3
  9. package/fesm2022/ojiepermana-angular-chart-scatter.mjs +3 -3
  10. package/fesm2022/ojiepermana-angular-component-accordion.mjs +15 -15
  11. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +27 -27
  12. package/fesm2022/ojiepermana-angular-component-alert.mjs +12 -12
  13. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +3 -3
  14. package/fesm2022/ojiepermana-angular-component-avatar.mjs +18 -18
  15. package/fesm2022/ojiepermana-angular-component-badge.mjs +3 -3
  16. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +21 -21
  17. package/fesm2022/ojiepermana-angular-component-button-group.mjs +9 -9
  18. package/fesm2022/ojiepermana-angular-component-button.mjs +3 -3
  19. package/fesm2022/ojiepermana-angular-component-calendar.mjs +3 -3
  20. package/fesm2022/ojiepermana-angular-component-card.mjs +21 -21
  21. package/fesm2022/ojiepermana-angular-component-carousel.mjs +18 -18
  22. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +3 -3
  23. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +12 -12
  24. package/fesm2022/ojiepermana-angular-component-combobox.mjs +3 -3
  25. package/fesm2022/ojiepermana-angular-component-command.mjs +27 -27
  26. package/fesm2022/ojiepermana-angular-component-composer.mjs +21 -21
  27. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +3 -3
  28. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +3 -3
  29. package/fesm2022/ojiepermana-angular-component-dialog.mjs +21 -21
  30. package/fesm2022/ojiepermana-angular-component-drawer.mjs +1 -2
  31. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +39 -39
  32. package/fesm2022/ojiepermana-angular-component-editor.mjs +18 -18
  33. package/fesm2022/ojiepermana-angular-component-empty.mjs +18 -18
  34. package/fesm2022/ojiepermana-angular-component-form.mjs +36 -36
  35. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +9 -9
  36. package/fesm2022/ojiepermana-angular-component-icon.mjs +6 -6
  37. package/fesm2022/ojiepermana-angular-component-input-group.mjs +18 -18
  38. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +15 -15
  39. package/fesm2022/ojiepermana-angular-component-input.mjs +3 -3
  40. package/fesm2022/ojiepermana-angular-component-item.mjs +30 -30
  41. package/fesm2022/ojiepermana-angular-component-kanban.mjs +27 -27
  42. package/fesm2022/ojiepermana-angular-component-kbd.mjs +6 -6
  43. package/fesm2022/ojiepermana-angular-component-label.mjs +3 -3
  44. package/fesm2022/ojiepermana-angular-component-menubar.mjs +12 -12
  45. package/fesm2022/ojiepermana-angular-component-native-select.mjs +9 -9
  46. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +21 -21
  47. package/fesm2022/ojiepermana-angular-component-pagination.mjs +3 -3
  48. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +15 -15
  49. package/fesm2022/ojiepermana-angular-component-popover.mjs +6 -6
  50. package/fesm2022/ojiepermana-angular-component-progress.mjs +3 -3
  51. package/fesm2022/ojiepermana-angular-component-radio.mjs +6 -6
  52. package/fesm2022/ojiepermana-angular-component-resizable.mjs +12 -12
  53. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +3 -3
  54. package/fesm2022/ojiepermana-angular-component-segmented-control.mjs +3 -3
  55. package/fesm2022/ojiepermana-angular-component-select.mjs +6 -6
  56. package/fesm2022/ojiepermana-angular-component-separator.mjs +3 -3
  57. package/fesm2022/ojiepermana-angular-component-sheet.mjs +21 -21
  58. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +3 -3
  59. package/fesm2022/ojiepermana-angular-component-slider.mjs +6 -6
  60. package/fesm2022/ojiepermana-angular-component-spinner.mjs +3 -3
  61. package/fesm2022/ojiepermana-angular-component-switch.mjs +3 -3
  62. package/fesm2022/ojiepermana-angular-component-table.mjs +24 -24
  63. package/fesm2022/ojiepermana-angular-component-tabs.mjs +18 -18
  64. package/fesm2022/ojiepermana-angular-component-textarea.mjs +3 -3
  65. package/fesm2022/ojiepermana-angular-component-timeline.mjs +18 -18
  66. package/fesm2022/ojiepermana-angular-component-toast.mjs +3 -3
  67. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +9 -9
  68. package/fesm2022/ojiepermana-angular-component-toggle.mjs +3 -3
  69. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +15 -15
  70. package/fesm2022/ojiepermana-angular-component-utils-scale.mjs +3 -3
  71. package/fesm2022/ojiepermana-angular-navigation-icon.mjs +3 -3
  72. package/fesm2022/{ojiepermana-angular-navigation-navigation-badge-count.component-BKCeWzml.mjs → ojiepermana-angular-navigation-navigation-badge-count.component-DYuysKVf.mjs} +3 -3
  73. package/fesm2022/{ojiepermana-angular-navigation-navigation-dockbar-menu.component-DFEJK2jD.mjs → ojiepermana-angular-navigation-navigation-dockbar-menu.component-COiTaw34.mjs} +7 -6
  74. package/fesm2022/{ojiepermana-angular-navigation-navigation-entry-grid.component-mpK9Ar08.mjs → ojiepermana-angular-navigation-navigation-entry-grid.component-YIz0IsIb.mjs} +27 -46
  75. package/fesm2022/{ojiepermana-angular-navigation-navigation-flyout-menu.component-BPgH7FJk.mjs → ojiepermana-angular-navigation-navigation-flyout-menu.component-D2vwEwBY.mjs} +5 -5
  76. package/fesm2022/{ojiepermana-angular-navigation-navigation-horizontal.component-DMpYcD9t.mjs → ojiepermana-angular-navigation-navigation-horizontal.component-B5D7yXfb.mjs} +5 -5
  77. package/fesm2022/{ojiepermana-angular-navigation-navigation-item.component-Basp5SIk.mjs → ojiepermana-angular-navigation-navigation-item.component-CUb68MZH.mjs} +27 -36
  78. package/fesm2022/{ojiepermana-angular-navigation-navigation-list.component-YUzHI9Pj.mjs → ojiepermana-angular-navigation-navigation-list.component-CrK16trj.mjs} +22 -6
  79. package/fesm2022/ojiepermana-angular-navigation-service.mjs +6 -4
  80. package/fesm2022/ojiepermana-angular-navigation-types.mjs +113 -1
  81. package/fesm2022/ojiepermana-angular-navigation.mjs +271 -67
  82. package/fesm2022/ojiepermana-angular-theme-component-settings.mjs +29 -19
  83. package/fesm2022/ojiepermana-angular-theme-layout-services.mjs +6 -6
  84. package/fesm2022/ojiepermana-angular-theme-layout-wrapper.mjs +239 -31
  85. package/fesm2022/ojiepermana-angular-theme-layout.mjs +24 -24
  86. package/fesm2022/ojiepermana-angular-theme-page-core.mjs +3 -3
  87. package/fesm2022/ojiepermana-angular-theme-page-filter.mjs +6 -6
  88. package/fesm2022/ojiepermana-angular-theme-page-overview.mjs +3 -3
  89. package/fesm2022/ojiepermana-angular-theme-page-root.mjs +3 -3
  90. package/fesm2022/ojiepermana-angular-theme-page-side.mjs +6 -6
  91. package/fesm2022/ojiepermana-angular-theme-page-slots.mjs +12 -12
  92. package/fesm2022/ojiepermana-angular-theme-shell-services.mjs +3 -3
  93. package/fesm2022/ojiepermana-angular-theme-shell.mjs +9 -9
  94. package/fesm2022/ojiepermana-angular-theme-styles.mjs +15 -15
  95. package/navigation/README.md +68 -17
  96. package/package.json +2 -2
  97. package/types/ojiepermana-angular-component-card.d.ts +1 -1
  98. package/types/ojiepermana-angular-component-command.d.ts +1 -1
  99. package/types/ojiepermana-angular-navigation-types.d.ts +47 -2
  100. package/types/ojiepermana-angular-navigation.d.ts +47 -3
  101. package/types/ojiepermana-angular-theme-component-settings.d.ts +5 -3
  102. package/types/ojiepermana-angular-theme-layout-wrapper.d.ts +48 -1
@@ -374,7 +374,7 @@ var ThemeBrandService = class ThemeBrandService {
374
374
  }
375
375
  static ɵfac = i0.ɵɵngDeclareFactory({
376
376
  minVersion: "12.0.0",
377
- version: "22.2.0",
377
+ version: "22.2.2",
378
378
  ngImport: i0,
379
379
  type: ThemeBrandService,
380
380
  deps: [],
@@ -382,14 +382,14 @@ var ThemeBrandService = class ThemeBrandService {
382
382
  });
383
383
  static ɵprov = i0.ɵɵngDeclareService({
384
384
  minVersion: "22.0.0",
385
- version: "22.2.0",
385
+ version: "22.2.2",
386
386
  ngImport: i0,
387
387
  type: ThemeBrandService
388
388
  });
389
389
  };
390
390
  i0.ɵɵngDeclareClassMetadata({
391
391
  minVersion: "12.0.0",
392
- version: "22.2.0",
392
+ version: "22.2.2",
393
393
  ngImport: i0,
394
394
  type: ThemeBrandService,
395
395
  decorators: [{ type: Service }],
@@ -419,7 +419,7 @@ var ThemeColorService = class ThemeColorService {
419
419
  }
420
420
  static ɵfac = i0.ɵɵngDeclareFactory({
421
421
  minVersion: "12.0.0",
422
- version: "22.2.0",
422
+ version: "22.2.2",
423
423
  ngImport: i0,
424
424
  type: ThemeColorService,
425
425
  deps: [],
@@ -427,14 +427,14 @@ var ThemeColorService = class ThemeColorService {
427
427
  });
428
428
  static ɵprov = i0.ɵɵngDeclareService({
429
429
  minVersion: "22.0.0",
430
- version: "22.2.0",
430
+ version: "22.2.2",
431
431
  ngImport: i0,
432
432
  type: ThemeColorService
433
433
  });
434
434
  };
435
435
  i0.ɵɵngDeclareClassMetadata({
436
436
  minVersion: "12.0.0",
437
- version: "22.2.0",
437
+ version: "22.2.2",
438
438
  ngImport: i0,
439
439
  type: ThemeColorService,
440
440
  decorators: [{ type: Service }]
@@ -460,7 +460,7 @@ var ThemeModeService = class ThemeModeService {
460
460
  }
461
461
  static ɵfac = i0.ɵɵngDeclareFactory({
462
462
  minVersion: "12.0.0",
463
- version: "22.2.0",
463
+ version: "22.2.2",
464
464
  ngImport: i0,
465
465
  type: ThemeModeService,
466
466
  deps: [],
@@ -468,14 +468,14 @@ var ThemeModeService = class ThemeModeService {
468
468
  });
469
469
  static ɵprov = i0.ɵɵngDeclareService({
470
470
  minVersion: "22.0.0",
471
- version: "22.2.0",
471
+ version: "22.2.2",
472
472
  ngImport: i0,
473
473
  type: ThemeModeService
474
474
  });
475
475
  };
476
476
  i0.ɵɵngDeclareClassMetadata({
477
477
  minVersion: "12.0.0",
478
- version: "22.2.0",
478
+ version: "22.2.2",
479
479
  ngImport: i0,
480
480
  type: ThemeModeService,
481
481
  decorators: [{ type: Service }]
@@ -503,7 +503,7 @@ var ThemeRadiusService = class ThemeRadiusService {
503
503
  }
504
504
  static ɵfac = i0.ɵɵngDeclareFactory({
505
505
  minVersion: "12.0.0",
506
- version: "22.2.0",
506
+ version: "22.2.2",
507
507
  ngImport: i0,
508
508
  type: ThemeRadiusService,
509
509
  deps: [],
@@ -511,14 +511,14 @@ var ThemeRadiusService = class ThemeRadiusService {
511
511
  });
512
512
  static ɵprov = i0.ɵɵngDeclareService({
513
513
  minVersion: "22.0.0",
514
- version: "22.2.0",
514
+ version: "22.2.2",
515
515
  ngImport: i0,
516
516
  type: ThemeRadiusService
517
517
  });
518
518
  };
519
519
  i0.ɵɵngDeclareClassMetadata({
520
520
  minVersion: "12.0.0",
521
- version: "22.2.0",
521
+ version: "22.2.2",
522
522
  ngImport: i0,
523
523
  type: ThemeRadiusService,
524
524
  decorators: [{ type: Service }]
@@ -537,7 +537,7 @@ var ThemeSpaceService = class ThemeSpaceService {
537
537
  }
538
538
  static ɵfac = i0.ɵɵngDeclareFactory({
539
539
  minVersion: "12.0.0",
540
- version: "22.2.0",
540
+ version: "22.2.2",
541
541
  ngImport: i0,
542
542
  type: ThemeSpaceService,
543
543
  deps: [],
@@ -545,14 +545,14 @@ var ThemeSpaceService = class ThemeSpaceService {
545
545
  });
546
546
  static ɵprov = i0.ɵɵngDeclareService({
547
547
  minVersion: "22.0.0",
548
- version: "22.2.0",
548
+ version: "22.2.2",
549
549
  ngImport: i0,
550
550
  type: ThemeSpaceService
551
551
  });
552
552
  };
553
553
  i0.ɵɵngDeclareClassMetadata({
554
554
  minVersion: "12.0.0",
555
- version: "22.2.0",
555
+ version: "22.2.2",
556
556
  ngImport: i0,
557
557
  type: ThemeSpaceService,
558
558
  decorators: [{ type: Service }]
@@ -5,7 +5,7 @@
5
5
  ```ts
6
6
  import {
7
7
  NavigationContainerComponent,
8
- NavigationSidebarComponent, // type: NavigationDockbar/Navbar/FlyoutComponent
8
+ NavigationSidebarComponent, // type: NavigationDockbar/Minidock/Navbar/FlyoutComponent
9
9
  NavigationHeaderComponent,
10
10
  NavigationContentComponent,
11
11
  NavigationFooterComponent,
@@ -44,17 +44,17 @@ const items: NavigationItem[] = [
44
44
  </Navigation>
45
45
  ```
46
46
 
47
- Type dipilih lewat komponen anak deklaratif — `NavigationSidebar`, `NavigationDockbar`, `NavigationNavbar`, atau `NavigationFlyout` — satu type hidup per `<Navigation>`. Di dalam type, `NavigationHeader` dan `NavigationFooter` opsional, sedangkan `NavigationContent` selalu dirender (otomatis dibuat bila tidak diproyeksikan).
47
+ Type dipilih lewat komponen anak deklaratif (`NavigationSidebar`, `NavigationDockbar`, `NavigationMinidock`, `NavigationNavbar`, atau `NavigationFlyout`), satu type hidup per `<Navigation>`. Di dalam type, `NavigationHeader` dan `NavigationFooter` opsional, sedangkan `NavigationContent` selalu dirender (otomatis dibuat bila tidak diproyeksikan).
48
48
 
49
49
  ## API Notes
50
50
 
51
51
  - `data` is the source of navigation data.
52
- - Type is declared by the child component: `NavigationSidebar`/`NavigationDockbar` (vertical), `NavigationNavbar`/`NavigationFlyout` (horizontal). Orientation is implied by the type child.
52
+ - Type is declared by the child component: `NavigationSidebar`/`NavigationDockbar`/`NavigationMinidock` (vertical), `NavigationNavbar`/`NavigationFlyout` (horizontal). Orientation is implied by the type child.
53
53
  - `id` identifies a navigation instance so multiple navs can keep distinct service state.
54
54
  - `data-id` optionally publishes the input data under a different registry id. This lets a
55
55
  mobile mirror use isolated state (`id="main-mobile"`) while exposing the same data contract
56
56
  as the desktop navigation (`data-id="main"`).
57
- - `position` on `NavigationSidebar`/`NavigationDockbar` accepts `left` or `right` (vertical).
57
+ - `position` on `NavigationSidebar`/`NavigationDockbar`/`NavigationMinidock` accepts `left` or `right` (vertical).
58
58
  - `collapsed` on `NavigationSidebar` controls the icon-only sidebar state.
59
59
  - `mode` on `NavigationDockbar` accepts `sticky` or `drawer`.
60
60
  - `dockbar-route-context` on `NavigationDockbar` opts into Router-aware header, rail deduplication,
@@ -109,19 +109,20 @@ Inputs pada `<Navigation>` (container):
109
109
 
110
110
  Inputs pada komponen type:
111
111
 
112
- | Component | API | Type | Notes |
113
- | ------------------- | ----------------------- | ------------------------------------------------- | ----------------------------------------------------------------------------- |
114
- | `NavigationSidebar` | `position` | `left \| right \| null` | Side the rail docks to. |
115
- | `NavigationSidebar` | `collapsed` | `boolean \| null` | Controls collapsed vertical sidebar state. |
116
- | `NavigationSidebar` | `nav-sidebar-collapse` | `boolean` | Enables hover-driven preview expansion on collapsed sidebars. |
117
- | `NavigationSidebar` | `previewExpanded` | `boolean` | Forces a collapsed sidebar to render expanded for preview. |
118
- | `NavigationDockbar` | `mode` | `sticky \| drawer \| null` | Docked aside beside the rail, or overlay drawer. |
119
- | `NavigationDockbar` | `position` | `left \| right \| null` | Side the rail docks to. |
120
- | `NavigationDockbar` | `dockbar-route-context` | `boolean \| NavigationDockbarRouteConfig \| null` | Opt-in Router context and optional overrides. |
121
- | `NavigationDockbar` | `dockbar-badge` | `NavigationBadgeContext` | Reactive badge sources keyed by item or route metadata. |
122
- | `NavigationNavbar` | `nav-appearance` | `flat \| border-rail` | Style variant. `border-rail` = squared panel, dashed icon rails, no hover bg. |
123
- | `NavigationFlyout` | `label` | `string` | Trigger label. Defaults to `Menu`. |
124
- | `NavigationFlyout` | `nav-appearance` | `flat \| border-rail` | Style variant. `border-rail` = squared panel, dashed icon rails, no hover bg. |
112
+ | Component | API | Type | Notes |
113
+ | -------------------- | ----------------------- | ------------------------------------------------- | ----------------------------------------------------------------------------- |
114
+ | `NavigationSidebar` | `position` | `left \| right \| null` | Side the rail docks to. |
115
+ | `NavigationSidebar` | `collapsed` | `boolean \| null` | Controls collapsed vertical sidebar state. |
116
+ | `NavigationSidebar` | `nav-sidebar-collapse` | `boolean` | Enables hover-driven preview expansion on collapsed sidebars. |
117
+ | `NavigationSidebar` | `previewExpanded` | `boolean` | Forces a collapsed sidebar to render expanded for preview. |
118
+ | `NavigationDockbar` | `mode` | `sticky \| drawer \| null` | Docked aside beside the rail, or overlay drawer. |
119
+ | `NavigationDockbar` | `position` | `left \| right \| null` | Side the rail docks to. |
120
+ | `NavigationDockbar` | `dockbar-route-context` | `boolean \| NavigationDockbarRouteConfig \| null` | Opt-in Router context and optional overrides. |
121
+ | `NavigationDockbar` | `dockbar-badge` | `NavigationBadgeContext` | Reactive badge sources keyed by item or route metadata. |
122
+ | `NavigationMinidock` | `position` | `left \| right \| null` | Side the rail docks to. The separating border is set through `class`. |
123
+ | `NavigationNavbar` | `nav-appearance` | `flat \| border-rail` | Style variant. `border-rail` = squared panel, dashed icon rails, no hover bg. |
124
+ | `NavigationFlyout` | `label` | `string` | Trigger label. Defaults to `Menu`. |
125
+ | `NavigationFlyout` | `nav-appearance` | `flat \| border-rail` | Style variant. `border-rail` = squared panel, dashed icon rails, no hover bg. |
125
126
 
126
127
  Semua type juga menerima `class` untuk kelas tambahan pada elemen shell-nya.
127
128
 
@@ -149,6 +150,56 @@ Semua type juga menerima `class` untuk kelas tambahan pada elemen shell-nya.
149
150
  | `columns` | `number` | Column count for `mega` style items. |
150
151
  | `children` | `readonly NavigationItem[]` | Nested items. Trees can be deeper than one level. |
151
152
 
153
+ ## Minidock
154
+
155
+ `NavigationMinidock` is a permanent vertical icon rail. It renders exactly like a collapsed
156
+ sidebar (`--layout-sidebar-collapsed-width`, `--nav-rail-item-size`, a tooltip per item, a two
157
+ letter fallback for items without an icon), but it never expands: there is no `collapsed` input,
158
+ no `nav-sidebar-collapse`, no hover or focus preview, no header toggle, and
159
+ `NavigationService.toggleCollapsed()` does nothing for it. Its stored `nav-type-mode` is always
160
+ `default`.
161
+
162
+ ```html
163
+ <Navigation id="app-rail" [data]="items" class="h-full">
164
+ <NavigationMinidock class="border-r border-border" />
165
+ </Navigation>
166
+ ```
167
+
168
+ The data contract is strict. Minidock only accepts `basic`, `item`, or untyped items without
169
+ children, plus `divider` and `spacer`. Any `group`, `collapsible`, `collapsable`, `mega`, or
170
+ `aside` item, or any item with non empty `children` (hidden items included), throws an `Error`
171
+ in development **and production**. The error reaches Angular's `ErrorHandler` and names the item
172
+ index, its title, and the rejected type, for example
173
+ `Item [2] "Component" bertipe "group".`
174
+
175
+ Flatten grouped data with `toMinidockItems()` from `@ojiepermana/angular/navigation/types`.
176
+ It is a pure function whose output always passes that check, and it is the safe path for data
177
+ that comes from a backend:
178
+
179
+ ```ts
180
+ import { toMinidockItems } from '@ojiepermana/angular/navigation/types';
181
+
182
+ protected readonly railItems = computed(() => toMinidockItems(this.items()));
183
+ ```
184
+
185
+ - Leaves are kept as the same object, unless a parent's `isHidden` has to be merged in.
186
+ - `group` and `mega` (at any level) become a divider boundary and their content is flattened;
187
+ an empty group adds no divider.
188
+ - `collapsible`, `collapsable`, and `aside` are dropped as parents; their children are lifted.
189
+ - Leading, trailing, and repeated dividers are compacted; `spacer` survives only at the top level.
190
+ - A leaf whose `id` repeats is kept once (first occurrence wins).
191
+ - A lifted leaf is hidden when any of its parents is hidden, and a group's boundary divider hides
192
+ with that group.
193
+
194
+ A `spacer` pushes every item after it to the bottom of the rail. `LayoutWrapperDefault` offers
195
+ the type as `nav-type="minidock"` on a vertical layout: it renders `LayoutNavMinidock` with
196
+ `toMinidockItems(data())` under the data id `main-minidock`, and keeps publishing the full
197
+ `data()` under `main`.
198
+
199
+ Adding `'minidock'` widens `NavigationVerticalType` (and so `NavigationType`). The change is
200
+ additive, but a consumer `switch` that is exhaustive over `NavigationType` needs a `minidock`
201
+ branch before it compiles again.
202
+
152
203
  ## Route-aware dockbar
153
204
 
154
205
  The feature is opt-in so existing dockbar, sidebar, navbar, and flyout consumers keep their
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ojiepermana/angular",
3
- "version": "22.2.0",
3
+ "version": "22.2.1",
4
4
  "description": "Accessible, tree-shakable Angular 22 design system from ojiepermana: UI components, charts, navigation shells, theme tokens, and an OpenAPI SDK generator.",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -502,5 +502,5 @@
502
502
  "module": "fesm2022/ojiepermana-angular.mjs",
503
503
  "typings": "types/ojiepermana-angular.d.ts",
504
504
  "type": "module",
505
- "gitHead": "3b69b91d27302f5e63547b54b0a63e29386445db"
505
+ "gitHead": "1d9e13ff98804f60ee81765a22a6b5a814d0f374"
506
506
  }
@@ -4,7 +4,7 @@ import * as i0 from "@angular/core";
4
4
  export type CardSize = 'default' | 'sm';
5
5
  export declare class CardComponent {
6
6
  protected readonly componentScale: ComponentScaleDirective;
7
- readonly radius: import("@angular/core").InputSignal<"inherit" | "none" | "xs" | "sm" | "md" | "xl" | "full">;
7
+ readonly radius: import("@angular/core").InputSignal<"sm" | "inherit" | "none" | "xs" | "md" | "xl" | "full">;
8
8
  readonly density: import("@angular/core").InputSignal<"inherit" | "compact" | "normal" | "relaxed" | "spacious">;
9
9
  readonly size: import("@angular/core").InputSignal<CardSize>;
10
10
  readonly class: import("@angular/core").InputSignal<string>;
@@ -165,7 +165,7 @@ export declare class CommandItemComponent {
165
165
  * on the input instead, which is the listbox pattern.
166
166
  */
167
167
  readonly selectedState: import("@angular/core").InputSignal<boolean>;
168
- readonly selected: import("@angular/core").OutputEmitterRef<MouseEvent | KeyboardEvent>;
168
+ readonly selected: import("@angular/core").OutputEmitterRef<KeyboardEvent | MouseEvent>;
169
169
  /** The highlighted row. Drives styling and `aria-activedescendant`, not `aria-selected`. */
170
170
  readonly active: import("@angular/core").WritableSignal<boolean>;
171
171
  readonly visible: import("@angular/core").Signal<boolean>;
@@ -2,7 +2,7 @@ import { Signal } from "@angular/core";
2
2
  import { IsActiveMatchOptions, Params, QueryParamsHandling, UrlTree } from "@angular/router";
3
3
  import { Observable } from "rxjs";
4
4
  export type NavigationOrientation = 'vertical' | 'horizontal';
5
- export type NavigationVerticalType = 'sidebar' | 'dockbar';
5
+ export type NavigationVerticalType = 'sidebar' | 'dockbar' | 'minidock';
6
6
  export type NavigationHorizontalType = 'navbar' | 'flyout';
7
7
  export type NavigationType = NavigationVerticalType | NavigationHorizontalType;
8
8
  export type NavigationCollapseTree = 'stairs' | 'straight';
@@ -137,4 +137,49 @@ export interface NavigationIconContext {
137
137
  }
138
138
  export declare function normalizeUiNavItems(items: readonly NavigationItem[]): readonly NavigationNormalizedItem[];
139
139
  /** Format visual count badge dockbar. Count nol atau invalid tidak dirender. */
140
- export declare function formatNavigationBadgeCount(value: NavigationBadgeCount): string | null;
140
+ export declare function formatNavigationBadgeCount(value: NavigationBadgeCount): string | null;
141
+ /**
142
+ * Memadatkan divider: yang di awal, di akhir, dan yang berurutan dibuang. Dari
143
+ * satu deret divider berurutan, divider pertama tanpa `isHidden` yang dipertahankan
144
+ * (atau divider pertama bila semuanya punya `isHidden`), supaya pemisah yang selalu
145
+ * terlihat tidak kalah oleh pemisah yang bisa tersembunyi saat runtime.
146
+ *
147
+ * Dipakai dua kali: oleh `toMinidockItems` atas data mentah, dan oleh jalur render
148
+ * minidock atas item yang sudah dinormalisasi (item tersembunyi sudah hilang).
149
+ *
150
+ * @internal
151
+ */
152
+ export declare function ɵcompactNavigationDividers<T extends {
153
+ readonly type?: string;
154
+ readonly isHidden?: unknown;
155
+ }>(items: readonly T[]): T[];
156
+ /**
157
+ * Melempar `Error` pertama yang ditemukan bila data minidock berisi item di luar
158
+ * `basic`, `item`, tanpa type, `divider`, dan `spacer`, atau item mana pun dengan
159
+ * `children` yang tidak kosong. Berjalan atas data mentah, termasuk item yang
160
+ * `isHidden`, dan tanpa `isDevMode()`: aturannya sama di dev dan production.
161
+ *
162
+ * Cukup memeriksa level atas: item apa pun yang punya children sudah ditolak,
163
+ * jadi item bersarang tidak pernah bisa lolos.
164
+ *
165
+ * @internal
166
+ */
167
+ export declare function ɵassertMinidockItems(items: readonly NavigationItem[]): void;
168
+ /**
169
+ * Meratakan data navigasi bergroup menjadi data yang selalu valid untuk
170
+ * `<NavigationMinidock>`:
171
+ *
172
+ * - daun (`basic`, `item`, atau tanpa type, tanpa children) dipertahankan;
173
+ * - `group` dan `mega` di level mana pun diganti batas divider lalu isinya
174
+ * diratakan; group yang isinya kosong tidak menghasilkan divider;
175
+ * - `collapsible`, `collapsable`, `aside`, dan item lain yang punya children
176
+ * dibuang sebagai induk, anak anaknya diratakan rekursif;
177
+ * - divider di awal, di akhir, atau berurutan dipadatkan; `spacer` hanya
178
+ * dipertahankan di level atas;
179
+ * - daun dengan `id` yang sama hanya muncul sekali (kemunculan pertama).
180
+ *
181
+ * Daun dan divider yang diangkat ikut tersembunyi bila salah satu induknya
182
+ * tersembunyi, dan divider pengganti group ikut tersembunyi bersama group itu. Daun dikembalikan
183
+ * sebagai objek yang sama kecuali `isHidden` nya perlu digabung. Tidak pernah throw.
184
+ */
185
+ export declare function toMinidockItems(items: readonly NavigationItem[]): NavigationItem[];
@@ -1,11 +1,12 @@
1
1
  import { NavigationIconDirective, NavigationIconDirective as NavigationIconDirective$1 } from "@ojiepermana/angular/navigation/icon";
2
2
  import * as i0 from "@angular/core";
3
3
  import { InjectionToken, Signal, TemplateRef } from "@angular/core";
4
- import { NAVIGATION_DOCKBAR_FALLBACK_ICON, NavigationActionHandler, NavigationAppearance, NavigationAppearance as NavigationAppearance$1, NavigationBadgeAriaLabel, NavigationBadgeContext, NavigationBadgeContext as NavigationBadgeContext$1, NavigationBadgeCount, NavigationBadgeSource, NavigationBadgeSource as NavigationBadgeSource$1, NavigationBadgeValueSource, NavigationCollapseTree, NavigationCollapseTree as NavigationCollapseTree$1, NavigationDockbarMode, NavigationDockbarMode as NavigationDockbarMode$1, NavigationDockbarRouteConfig, NavigationDockbarRouteContext, NavigationDockbarRouteContext as NavigationDockbarRouteContext$1, NavigationFlyoutIconPosition, NavigationFlyoutIconPosition as NavigationFlyoutIconPosition$1, NavigationFlyoutTriggerVariant, NavigationFlyoutTriggerVariant as NavigationFlyoutTriggerVariant$1, NavigationHorizontalPosition, NavigationHorizontalPosition as NavigationHorizontalPosition$1, NavigationHorizontalType, NavigationIconContext, NavigationIconContext as NavigationIconContext$1, NavigationItem, NavigationItem as NavigationItem$1, NavigationItemBadge, NavigationItemClasses, NavigationItemType, NavigationLink, NavigationNormalizedItem, NavigationNormalizedItem as NavigationNormalizedItem$1, NavigationNormalizedItemType, NavigationOrientation, NavigationOrientation as NavigationOrientation$1, NavigationPosition, NavigationPosition as NavigationPosition$1, NavigationRegisterInput, NavigationResolvedRouteContext, NavigationResolvedRouteContext as NavigationResolvedRouteContext$1, NavigationRouteData, NavigationSelection, NavigationSelection as NavigationSelection$1, NavigationState, NavigationState as NavigationState$1, NavigationType, NavigationType as NavigationType$1, NavigationVerticalPosition, NavigationVerticalPosition as NavigationVerticalPosition$1, NavigationVerticalType, NavigationVisibilityHandler, formatNavigationBadgeCount, normalizeUiNavItems } from "@ojiepermana/angular/navigation/types";
4
+ import { NAVIGATION_DOCKBAR_FALLBACK_ICON, NavigationActionHandler, NavigationAppearance, NavigationAppearance as NavigationAppearance$1, NavigationBadgeAriaLabel, NavigationBadgeContext, NavigationBadgeContext as NavigationBadgeContext$1, NavigationBadgeCount, NavigationBadgeSource, NavigationBadgeSource as NavigationBadgeSource$1, NavigationBadgeValueSource, NavigationCollapseTree, NavigationCollapseTree as NavigationCollapseTree$1, NavigationDockbarMode, NavigationDockbarMode as NavigationDockbarMode$1, NavigationDockbarRouteConfig, NavigationDockbarRouteContext, NavigationDockbarRouteContext as NavigationDockbarRouteContext$1, NavigationFlyoutIconPosition, NavigationFlyoutIconPosition as NavigationFlyoutIconPosition$1, NavigationFlyoutTriggerVariant, NavigationFlyoutTriggerVariant as NavigationFlyoutTriggerVariant$1, NavigationHorizontalPosition, NavigationHorizontalPosition as NavigationHorizontalPosition$1, NavigationHorizontalType, NavigationIconContext, NavigationIconContext as NavigationIconContext$1, NavigationItem, NavigationItem as NavigationItem$1, NavigationItemBadge, NavigationItemClasses, NavigationItemType, NavigationLink, NavigationNormalizedItem, NavigationNormalizedItem as NavigationNormalizedItem$1, NavigationNormalizedItemType, NavigationOrientation, NavigationOrientation as NavigationOrientation$1, NavigationPosition, NavigationPosition as NavigationPosition$1, NavigationRegisterInput, NavigationResolvedRouteContext, NavigationResolvedRouteContext as NavigationResolvedRouteContext$1, NavigationRouteData, NavigationSelection, NavigationSelection as NavigationSelection$1, NavigationState, NavigationState as NavigationState$1, NavigationType, NavigationType as NavigationType$1, NavigationVerticalPosition, NavigationVerticalPosition as NavigationVerticalPosition$1, NavigationVerticalType, NavigationVisibilityHandler, formatNavigationBadgeCount, normalizeUiNavItems, toMinidockItems } from "@ojiepermana/angular/navigation/types";
5
5
  export * from "@ojiepermana/angular/navigation/core";
6
6
  /**
7
7
  * Konfigurasi yang didaftarkan komponen type (`<NavigationSidebar>`,
8
- * `<NavigationDockbar>`, `<NavigationNavbar>`, `<NavigationFlyout>`) ke
8
+ * `<NavigationDockbar>`, `<NavigationMinidock>`, `<NavigationNavbar>`,
9
+ * `<NavigationFlyout>`) ke
9
10
  * `<Navigation>` induknya. Satu `<Navigation>` hanya boleh memuat satu
10
11
  * type hidup pada satu waktu.
11
12
  */
@@ -138,6 +139,8 @@ export declare class NavigationContainerComponent implements NavigationShellCont
138
139
  readonly dockbarActiveRoutePanelGroup: import("@angular/core").Signal<NavigationNormalizedItem$1 | null>;
139
140
  readonly dockbarRouteHeader: import("@angular/core").Signal<NavigationDockbarRouteHeaderState | null>;
140
141
  readonly dockbarRailItems: import("@angular/core").Signal<readonly NavigationNormalizedItem$1[]>;
142
+ /** Item rel minidock: divider di tepi atau berurutan (sesudah item tersembunyi hilang) dibuang. */
143
+ readonly minidockRailItems: import("@angular/core").Signal<NavigationNormalizedItem$1[]>;
141
144
  readonly dockbarAsideId: import("@angular/core").Signal<string>;
142
145
  readonly dockbarOpenGroup: import("@angular/core").Signal<NavigationNormalizedItem$1 | null>;
143
146
  readonly dockbarActiveRoutePanelExpanded: import("@angular/core").Signal<boolean>;
@@ -435,6 +438,47 @@ export declare class NavigationDockbarComponent {
435
438
  };
436
439
  }, {}, ["headerSlot", "contentSlot", "footerSlot", "asideFooterSlot"], ["NavigationHeader", "NavigationContent", "NavigationFooter"], true, never>;
437
440
  }
441
+ /**
442
+ * Type vertikal minidock untuk `<Navigation>`: rel ikon permanen yang tampil sama
443
+ * dengan sidebar collapsed, tetapi tidak pernah melebar (tanpa toggle, hover
444
+ * preview, atau focus preview).
445
+ *
446
+ * Data hanya boleh berisi item `basic`, `item`, tanpa type, `divider`, dan
447
+ * `spacer`, tanpa children. Data lain melempar `Error` di dev dan production;
448
+ * ratakan data bergroup dulu dengan `toMinidockItems()`.
449
+ *
450
+ * Slot `NavigationHeader` dan `NavigationFooter` opsional; `NavigationContent`
451
+ * selalu dirender (default otomatis bila tidak diproyeksikan).
452
+ */
453
+ export declare class NavigationMinidockComponent {
454
+ private readonly container;
455
+ private readonly destroyRef;
456
+ readonly position: import("@angular/core").InputSignal<NavigationVerticalPosition$1 | null>;
457
+ readonly class: import("@angular/core").InputSignal<string>;
458
+ protected readonly headerSlot: import("@angular/core").Signal<NavigationHeaderComponent | undefined>;
459
+ protected readonly contentSlot: import("@angular/core").Signal<NavigationContentComponent | undefined>;
460
+ protected readonly footerSlot: import("@angular/core").Signal<NavigationFooterComponent | undefined>;
461
+ /**
462
+ * Validasi data mentah. Dibaca template, jadi data yang berubah divalidasi ulang
463
+ * dan error yang dilempar sampai ke `ErrorHandler` Angular saat change detection.
464
+ */
465
+ protected readonly dataValidated: import("@angular/core").Signal<boolean>;
466
+ protected readonly hostClasses: import("@angular/core").Signal<string>;
467
+ constructor();
468
+ static ɵfac: i0.ɵɵFactoryDeclaration<NavigationMinidockComponent, never>;
469
+ static ɵcmp: i0.ɵɵComponentDeclaration<NavigationMinidockComponent, "NavigationMinidock", never, {
470
+ "position": {
471
+ "alias": "position";
472
+ "required": false;
473
+ "isSignal": true;
474
+ };
475
+ "class": {
476
+ "alias": "class";
477
+ "required": false;
478
+ "isSignal": true;
479
+ };
480
+ }, {}, ["headerSlot", "contentSlot", "footerSlot"], ["NavigationHeader", "NavigationContent", "NavigationFooter"], true, never>;
481
+ }
438
482
  /**
439
483
  * Type navbar horizontal untuk `<Navigation>`. Slot `NavigationHeader`
440
484
  * dan `NavigationFooter` opsional; `NavigationContent` selalu dirender
@@ -793,4 +837,4 @@ export declare class NavigationHeaderTitleComponent {
793
837
  * memakai dua huruf pertamanya.
794
838
  */
795
839
  export declare function deriveNavigationInitials(name: string): string;
796
- export { NAVIGATION_DOCKBAR_FALLBACK_ICON, type NavigationActionHandler, type NavigationAppearance, type NavigationBadgeAriaLabel, type NavigationBadgeContext, type NavigationBadgeCount, type NavigationBadgeSource, type NavigationBadgeValueSource, type NavigationCollapseTree, type NavigationDockbarMode, type NavigationDockbarRouteConfig, type NavigationDockbarRouteContext, type NavigationFlyoutIconPosition, type NavigationFlyoutTriggerVariant, type NavigationHorizontalPosition, type NavigationHorizontalType, type NavigationIconContext, NavigationIconDirective, type NavigationItem, type NavigationItemBadge, type NavigationItemClasses, type NavigationItemType, type NavigationLink, type NavigationNormalizedItem, type NavigationNormalizedItemType, type NavigationOrientation, type NavigationPosition, type NavigationRegisterInput, type NavigationResolvedRouteContext, type NavigationRouteData, type NavigationSelection, type NavigationState, type NavigationType, type NavigationVerticalPosition, type NavigationVerticalType, type NavigationVisibilityHandler, formatNavigationBadgeCount, normalizeUiNavItems };
840
+ export { NAVIGATION_DOCKBAR_FALLBACK_ICON, type NavigationActionHandler, type NavigationAppearance, type NavigationBadgeAriaLabel, type NavigationBadgeContext, type NavigationBadgeCount, type NavigationBadgeSource, type NavigationBadgeValueSource, type NavigationCollapseTree, type NavigationDockbarMode, type NavigationDockbarRouteConfig, type NavigationDockbarRouteContext, type NavigationFlyoutIconPosition, type NavigationFlyoutTriggerVariant, type NavigationHorizontalPosition, type NavigationHorizontalType, type NavigationIconContext, NavigationIconDirective, type NavigationItem, type NavigationItemBadge, type NavigationItemClasses, type NavigationItemType, type NavigationLink, type NavigationNormalizedItem, type NavigationNormalizedItemType, type NavigationOrientation, type NavigationPosition, type NavigationRegisterInput, type NavigationResolvedRouteContext, type NavigationRouteData, type NavigationSelection, type NavigationState, type NavigationType, type NavigationVerticalPosition, type NavigationVerticalType, type NavigationVisibilityHandler, formatNavigationBadgeCount, normalizeUiNavItems, toMinidockItems };
@@ -74,7 +74,8 @@ export declare class ThemeSettingsComponent {
74
74
  type ThemeSettingsNavigationType = NavigationType | 'desktop';
75
75
  /**
76
76
  * The presentation modes meaningful to the currently selected navigation type.
77
- * Sidebar uses `default`/`collapsed`; dockbar uses `default` (sticky) / `drawer`.
77
+ * Sidebar uses `default`/`collapsed`; dockbar uses `default` (sticky) / `drawer`;
78
+ * minidock is always compact and only has `default`.
78
79
  */
79
80
  type ThemeSettingsNavigationMode = 'default' | 'collapsed' | 'drawer';
80
81
  /**
@@ -104,14 +105,15 @@ export declare const NAV_TYPE_STORAGE_KEY = "nav-type";
104
105
  export declare const NAV_TYPE_MODE_STORAGE_KEY = "nav-type-mode";
105
106
  /**
106
107
  * Nav types valid for a layout/shell pair — mirrors `LayoutWrapperDefault`
107
- * (`navbar`/`flyout` → web horizontal, `sidebar`/`dockbar` → vertical).
108
+ * (`navbar`/`flyout` → web horizontal, `sidebar`/`dockbar`/`minidock` → vertical).
108
109
  * A desktop-mode horizontal shell owns exactly one navigation shape: `desktop`.
109
110
  * `empty` and `fluid` shells are brand-only, so no nav type applies.
110
111
  */
111
112
  export declare function allowedNavTypes(layoutType: LayoutType, shellMode: ShellMode): readonly ThemeSettingsNavigationType[];
112
113
  /**
113
114
  * Presentation modes meaningful to a navigation type: sidebar collapses, dockbar
114
- * turns into a drawer, and every other type has one presentation only.
115
+ * turns into a drawer, and every other type (minidock included, it is always
116
+ * compact) has one presentation only.
115
117
  */
116
118
  export declare function allowedNavTypeModes(navType: ThemeSettingsNavigationType): readonly ThemeSettingsNavigationMode[];
117
119
  /** `fluid` width only has an effect when the layout type is also `fluid`. */
@@ -241,6 +241,46 @@ export declare class LayoutNavDockbar {
241
241
  "logout": "logout";
242
242
  }, never, never, true, never>;
243
243
  }
244
+ /**
245
+ * Nav type: a permanent vertical icon rail (minidock). It is composed exactly like
246
+ * {@link LayoutNavSidebar}, brand in the header and user identity in the footer, and
247
+ * renders the same way a collapsed sidebar does, but it never expands.
248
+ *
249
+ * The rail only accepts flat data, so `LayoutWrapperDefault` hands it
250
+ * `toMinidockItems(data())`. See {@link LayoutNavSidebar} for why
251
+ * `host.class = 'contents'` and for the header and footer borders.
252
+ */
253
+ export declare class LayoutNavMinidock {
254
+ readonly brand: import("@angular/core").InputSignal<BrandIdentity>;
255
+ readonly user: import("@angular/core").InputSignal<UserIdentity>;
256
+ /** Appearance from the shell (`[appearance]`); decides the separator border weight. */
257
+ readonly appearance: import("@angular/core").InputSignal<"flat" | "border-rail">;
258
+ /** Forwarded from `<LayoutUser>`; the effect is the consumer's. */
259
+ readonly logout: import("@angular/core").OutputEmitterRef<void>;
260
+ protected readonly isBorderRail: import("@angular/core").Signal<boolean>;
261
+ /** Border kanan pemisah; ketebalan ikut appearance: `border-rail` = `--layout-rail-width` (selaras rail layout), `flat` 1px. */
262
+ protected readonly shellClass: import("@angular/core").Signal<"border-r-[length:var(--layout-rail-width)] border-border" | "border-r border-border">;
263
+ static ɵfac: i0.ɵɵFactoryDeclaration<LayoutNavMinidock, never>;
264
+ static ɵcmp: i0.ɵɵComponentDeclaration<LayoutNavMinidock, "LayoutNavMinidock", never, {
265
+ "brand": {
266
+ "alias": "brand";
267
+ "required": true;
268
+ "isSignal": true;
269
+ };
270
+ "user": {
271
+ "alias": "user";
272
+ "required": true;
273
+ "isSignal": true;
274
+ };
275
+ "appearance": {
276
+ "alias": "appearance";
277
+ "required": false;
278
+ "isSignal": true;
279
+ };
280
+ }, {
281
+ "logout": "logout";
282
+ }, never, never, true, never>;
283
+ }
244
284
  /**
245
285
  * Nav type: a top bar with inline items (navbar, horizontal). `appearance` follows the
246
286
  * shell (`flat | border-rail`). See {@link LayoutNavSidebar} for why
@@ -385,7 +425,7 @@ export declare class LayoutWrapperDefault {
385
425
  readonly closeMobileNavLabel: import("@angular/core").InputSignal<string>;
386
426
  /**
387
427
  * The user pressed logout in the navigation footer. Forwarded from every nav type that
388
- * shows the user identity (`sidebar`, `dockbar`, `navbar`, `flyout`), the mobile drawer
428
+ * shows the user identity (`sidebar`, `dockbar`, `minidock`, `navbar`, `flyout`), the mobile drawer
389
429
  * included, so one binding covers all of them. The library calls no endpoint and performs
390
430
  * no navigation; what happens next is entirely the consumer's.
391
431
  */
@@ -393,6 +433,7 @@ export declare class LayoutWrapperDefault {
393
433
  private readonly identity;
394
434
  private readonly navigation;
395
435
  private readonly desktopNavigationDataOwner;
436
+ private readonly minidockMainDataOwner;
396
437
  private readonly document;
397
438
  protected readonly mobileNavTriggerRef: import("@angular/core").Signal<ElementRef<HTMLElement> | undefined>;
398
439
  constructor();
@@ -405,6 +446,12 @@ export declare class LayoutWrapperDefault {
405
446
  protected readonly effectiveLayoutType: import("@angular/core").Signal<"fluid" | "vertical" | "horizontal" | "empty">;
406
447
  /** Tipe nav di dalam `#body`: `empty`/`fluid` → `brand` (header-only); selain itu `nav-type`. */
407
448
  protected readonly navKind: import("@angular/core").Signal<NavKind>;
449
+ /** Minidock only accepts flat data, so grouped data is flattened before it reaches the rail. */
450
+ private readonly minidockData;
451
+ /** Data id of the desktop `<Navigation>`; its state id stays `main` for persistence. */
452
+ protected readonly desktopDataId: import("@angular/core").Signal<"main" | "main-minidock">;
453
+ /** Data of the desktop `<Navigation>`: flattened for minidock, unfiltered for every other type. */
454
+ protected readonly desktopData: import("@angular/core").Signal<readonly NavigationItem[]>;
408
455
  /** Lebar host `<Navigation>`: penuh-tinggi (vertical) atau penuh-lebar (horizontal). */
409
456
  protected readonly navClass: import("@angular/core").Signal<"w-full" | "h-full">;
410
457
  protected readonly showsMobileNavigation: import("@angular/core").Signal<boolean>;