@ojiepermana/angular-theme 22.0.43 → 22.0.45

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.
@@ -2,45 +2,6 @@ import * as _ojiepermana_angular_theme_layout_wrapper from '@ojiepermana/angular
2
2
  import * as _ojiepermana_angular_navigation_service from '@ojiepermana/angular-navigation/service';
3
3
  import * as _angular_core from '@angular/core';
4
4
 
5
- declare class PageHeaderComponent {
6
- private readonly page;
7
- readonly class: _angular_core.InputSignal<string>;
8
- protected readonly resolvedHeight: _angular_core.Signal<"auto" | "fix">;
9
- protected readonly isBorderRail: _angular_core.Signal<boolean>;
10
- /** Saat tombol apps mengambang di atas header, sisakan ruang kanan agar isi header tidak tertimpa. */
11
- protected readonly reservesAppsLauncher: _angular_core.Signal<boolean>;
12
- /** Lebar tombol apps (h-9 w-9 = 36px) + offset kanan (right-2 = 8px) + jarak aman; `null` = tak memesan. */
13
- protected readonly appsLauncherReservePadding: _angular_core.Signal<"3.5rem" | null>;
14
- protected readonly classes: _angular_core.Signal<string>;
15
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageHeaderComponent, never>;
16
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageHeaderComponent, "PageHeader", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
17
- }
18
- declare class PageContentComponent {
19
- private readonly page;
20
- readonly class: _angular_core.InputSignal<string>;
21
- protected readonly resolvedScroll: _angular_core.Signal<"content" | "page">;
22
- protected readonly classes: _angular_core.Signal<string>;
23
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageContentComponent, never>;
24
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageContentComponent, "PageContent", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
25
- }
26
- declare class PageDashboardComponent {
27
- private readonly page;
28
- readonly class: _angular_core.InputSignal<string>;
29
- protected readonly resolvedScroll: _angular_core.Signal<"content" | "page">;
30
- protected readonly classes: _angular_core.Signal<string>;
31
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageDashboardComponent, never>;
32
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageDashboardComponent, "PageDashboard", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
33
- }
34
- declare class PageFooterComponent {
35
- private readonly page;
36
- readonly class: _angular_core.InputSignal<string>;
37
- protected readonly resolvedHeight: _angular_core.Signal<"auto" | "fix">;
38
- protected readonly isBorderRail: _angular_core.Signal<boolean>;
39
- protected readonly classes: _angular_core.Signal<string>;
40
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageFooterComponent, never>;
41
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageFooterComponent, "PageFooter", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
42
- }
43
-
44
5
  declare const PAGE_VARIANTS: readonly ["stacked", "side"];
45
6
  declare const PAGE_SIDE_POSITIONS: readonly ["left", "right"];
46
7
  declare const PAGE_SIDE_MODES: readonly ["sticky", "drawer", "overlay"];
@@ -48,12 +9,15 @@ declare const PAGE_SCROLL_VALUES: readonly ["content", "page"];
48
9
  declare const PAGE_HEIGHT_VALUES: readonly ["auto", "fix"];
49
10
  /** Visual appearance shared with the layout/navigation axes — unifies borders. */
50
11
  declare const PAGE_APPEARANCES: readonly ["flat", "border-rail"];
12
+ /** Penempatan `PageFilter`: `stacked` = bar antara header & content; `side` = kolom di samping content. */
13
+ declare const PAGE_FILTER_PLACEMENTS: readonly ["stacked", "side"];
51
14
  type PageVariant = (typeof PAGE_VARIANTS)[number];
52
15
  type PageSidePosition = (typeof PAGE_SIDE_POSITIONS)[number];
53
16
  type PageSideMode = (typeof PAGE_SIDE_MODES)[number];
54
17
  type PageScroll = (typeof PAGE_SCROLL_VALUES)[number];
55
18
  type PageHeight = (typeof PAGE_HEIGHT_VALUES)[number];
56
19
  type PageAppearance = (typeof PAGE_APPEARANCES)[number];
20
+ type PageFilterPlacement = (typeof PAGE_FILTER_PLACEMENTS)[number];
57
21
  declare const PAGE_DEFAULT_VARIANT: PageVariant;
58
22
  declare const PAGE_DEFAULT_SIDE_POSITION: PageSidePosition;
59
23
  declare const PAGE_DEFAULT_SIDE_MODE: PageSideMode;
@@ -61,12 +25,21 @@ declare const PAGE_DEFAULT_SCROLL: PageScroll;
61
25
  declare const PAGE_DEFAULT_HEIGHT: PageHeight;
62
26
  declare const PAGE_DEFAULT_APPEARANCE: PageAppearance;
63
27
  declare const PAGE_DEFAULT_SIDE_WIDTH = "16rem";
28
+ /** Placement default `PageFilter`. */
29
+ declare const PAGE_DEFAULT_FILTER_PLACEMENT: PageFilterPlacement;
30
+ /** Mode default `PageFilter` saat `placement="side"`; `stacked` selalu berperilaku `sticky`. */
31
+ declare const PAGE_DEFAULT_FILTER_MODE: PageSideMode;
32
+ /** Posisi default kolom `PageFilter` saat `placement="side"`. */
33
+ declare const PAGE_DEFAULT_FILTER_POSITION: PageSidePosition;
34
+ /** Lebar default kolom `PageFilter` saat `placement="side"` (sticky/drawer/overlay). */
35
+ declare const PAGE_DEFAULT_FILTER_WIDTH = "18rem";
64
36
  declare function isUiPageVariant(value: string | null): value is PageVariant;
65
37
  declare function isUiPageSidePosition(value: string | null): value is PageSidePosition;
66
38
  declare function isUiPageSideMode(value: string | null): value is PageSideMode;
67
39
  declare function isUiPageScroll(value: string | null): value is PageScroll;
68
40
  declare function isUiPageHeight(value: string | null): value is PageHeight;
69
41
  declare function isUiPageAppearance(value: string | null): value is PageAppearance;
42
+ declare function isUiPageFilterPlacement(value: string | null): value is PageFilterPlacement;
70
43
 
71
44
  declare class PageStateService {
72
45
  private readonly variantState;
@@ -83,6 +56,15 @@ declare class PageStateService {
83
56
  private readonly sideOpenRequestVersionState;
84
57
  /** Aktif saat apps-launcher mengambang di atas `PageHeader`; header memesan ruang kanan agar isinya tidak tertimpa. */
85
58
  private readonly appsLauncherReserveState;
59
+ private readonly filterPlacementState;
60
+ private readonly filterModeState;
61
+ private readonly filterPositionState;
62
+ private readonly filterWidthState;
63
+ private readonly filterIdState;
64
+ private readonly internalFilterOpenState;
65
+ private readonly controlledFilterOpenState;
66
+ private readonly filterOpenRequestState;
67
+ private readonly filterOpenRequestVersionState;
86
68
  readonly variant: _angular_core.Signal<"stacked" | "side">;
87
69
  readonly height: _angular_core.Signal<"auto" | "fix">;
88
70
  readonly scroll: _angular_core.Signal<"content" | "page">;
@@ -97,6 +79,16 @@ declare class PageStateService {
97
79
  readonly sideOpen: _angular_core.Signal<boolean>;
98
80
  readonly isSideInteractive: _angular_core.Signal<boolean>;
99
81
  readonly isSideVisible: _angular_core.Signal<boolean>;
82
+ readonly filterPlacement: _angular_core.Signal<"stacked" | "side">;
83
+ readonly filterMode: _angular_core.Signal<"sticky" | "drawer" | "overlay">;
84
+ readonly filterPosition: _angular_core.Signal<"left" | "right">;
85
+ readonly filterWidth: _angular_core.Signal<string>;
86
+ readonly filterId: _angular_core.Signal<string | null>;
87
+ readonly filterOpenRequest: _angular_core.Signal<boolean | null>;
88
+ readonly filterOpenRequestVersion: _angular_core.Signal<number>;
89
+ readonly filterOpen: _angular_core.Signal<boolean>;
90
+ readonly isFilterInteractive: _angular_core.Signal<boolean>;
91
+ readonly isFilterVisible: _angular_core.Signal<boolean>;
100
92
  registerRoot(config: {
101
93
  variant: PageVariant;
102
94
  height: PageHeight;
@@ -119,18 +111,128 @@ declare class PageStateService {
119
111
  closeSide(): boolean;
120
112
  toggleSide(): boolean;
121
113
  private requestSideOpenChange;
114
+ registerFilter(config: {
115
+ placement: PageFilterPlacement;
116
+ mode: PageSideMode;
117
+ position: PageSidePosition;
118
+ width: string;
119
+ id: string;
120
+ }): void;
121
+ setControlledFilterOpen(open: boolean | null): void;
122
+ setFilterOpen(open: boolean): void;
123
+ openFilter(): boolean;
124
+ closeFilter(): boolean;
125
+ toggleFilter(): boolean;
126
+ private requestFilterOpenChange;
122
127
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageStateService, never>;
123
128
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<PageStateService>;
124
129
  }
125
130
 
131
+ /**
132
+ * `PageFilter` — slot filter di antara `PageHeader` dan `PageContent` (`placement="stacked"`)
133
+ * atau di samping `PageContent` (`placement="side"`). Pada `stacked`, filter mendorong content
134
+ * ke bawah dan content menyesuaikan tinggi sisa. Pada `side`, filter mendorong content ke samping
135
+ * dengan mode `sticky | drawer | overlay` (mengikuti pola `PageSide`).
136
+ *
137
+ * `placement="stacked"` selalu berperilaku `sticky` — `drawer`/`overlay` hanya berlaku untuk `side`.
138
+ */
139
+ declare class PageFilterComponent {
140
+ private readonly document;
141
+ private readonly host;
142
+ protected readonly page: PageStateService;
143
+ protected readonly resolvedId: string;
144
+ readonly placement: _angular_core.InputSignal<"stacked" | "side">;
145
+ readonly mode: _angular_core.InputSignal<"sticky" | "drawer" | "overlay">;
146
+ readonly position: _angular_core.InputSignal<"left" | "right" | null>;
147
+ readonly width: _angular_core.InputSignal<string | null>;
148
+ readonly closeOnEsc: _angular_core.InputSignal<boolean>;
149
+ /**
150
+ * Khusus `placement="stacked"`: jadikan bar dapat dibuka/tutup lewat `PageFilterToggle`
151
+ * (default tertutup). Saat tertutup, bar disembunyikan dan content mengisi ruangnya kembali.
152
+ * Diabaikan untuk `placement="side"` (gunakan `mode="drawer"`/`overlay"` untuk side yang bisa ditutup).
153
+ */
154
+ readonly collapsible: _angular_core.InputSignalWithTransform<boolean, unknown>;
155
+ /** Nama aksesibilitas untuk panel saat mode `drawer`/`overlay` (dipasang sebagai `aria-label` dialog). */
156
+ readonly ariaLabel: _angular_core.InputSignal<string>;
157
+ readonly class: _angular_core.InputSignal<string>;
158
+ protected readonly resolvedPlacement: _angular_core.Signal<"stacked" | "side">;
159
+ /** `stacked` adalah bar horizontal — tidak punya drawer/overlay, jadi mode efektifnya selalu `sticky`. */
160
+ protected readonly effectiveMode: _angular_core.Signal<"sticky" | "drawer" | "overlay">;
161
+ protected readonly resolvedPosition: _angular_core.Signal<"left" | "right">;
162
+ protected readonly resolvedWidth: _angular_core.Signal<string>;
163
+ protected readonly resolvedScroll: _angular_core.Signal<"content" | "page">;
164
+ protected readonly isStacked: _angular_core.Signal<boolean>;
165
+ /** Bar stacked yang dapat ditutup dan sedang tertutup → disembunyikan dari layout. */
166
+ protected readonly isCollapsedStacked: _angular_core.Signal<boolean>;
167
+ protected readonly isSticky: _angular_core.Signal<boolean>;
168
+ protected readonly isDrawer: _angular_core.Signal<boolean>;
169
+ protected readonly isOverlay: _angular_core.Signal<boolean>;
170
+ /** Mode mengambang (drawer/overlay) — bersifat dialog dan butuh manajemen fokus + `inert` saat tertutup. */
171
+ protected readonly isInteractive: _angular_core.Signal<boolean>;
172
+ /** Drawer/overlay yang tertutup disembunyikan dari pohon aksesibilitas. */
173
+ protected readonly ariaHidden: _angular_core.Signal<"true" | null>;
174
+ /** Saat panel mengambang tertutup, `inert` mengeluarkan isinya dari tab order & pohon aksesibilitas (AXE). */
175
+ protected readonly inertWhenClosed: _angular_core.Signal<"" | null>;
176
+ protected readonly dialogRole: _angular_core.Signal<"dialog" | null>;
177
+ protected readonly ariaModal: _angular_core.Signal<"true" | null>;
178
+ protected readonly dialogLabel: _angular_core.Signal<string | null>;
179
+ protected readonly dialogTabindex: _angular_core.Signal<"-1" | null>;
180
+ protected readonly classes: _angular_core.Signal<string>;
181
+ constructor();
182
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageFilterComponent, never>;
183
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageFilterComponent, "PageFilter", never, { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "closeOnEsc": { "alias": "closeOnEsc"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
184
+ }
185
+
186
+ declare class PageHeaderComponent {
187
+ private readonly page;
188
+ readonly class: _angular_core.InputSignal<string>;
189
+ protected readonly resolvedHeight: _angular_core.Signal<"auto" | "fix">;
190
+ protected readonly isBorderRail: _angular_core.Signal<boolean>;
191
+ /** Saat tombol apps mengambang di atas header, sisakan ruang kanan agar isi header tidak tertimpa. */
192
+ protected readonly reservesAppsLauncher: _angular_core.Signal<boolean>;
193
+ /** Lebar tombol apps (h-9 w-9 = 36px) + offset kanan (right-2 = 8px) + jarak aman; `null` = tak memesan. */
194
+ protected readonly appsLauncherReservePadding: _angular_core.Signal<"3.5rem" | null>;
195
+ protected readonly classes: _angular_core.Signal<string>;
196
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageHeaderComponent, never>;
197
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageHeaderComponent, "PageHeader", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
198
+ }
199
+ declare class PageContentComponent {
200
+ private readonly page;
201
+ readonly class: _angular_core.InputSignal<string>;
202
+ protected readonly resolvedScroll: _angular_core.Signal<"content" | "page">;
203
+ protected readonly classes: _angular_core.Signal<string>;
204
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageContentComponent, never>;
205
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageContentComponent, "PageContent", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
206
+ }
207
+ declare class PageDashboardComponent {
208
+ private readonly page;
209
+ readonly class: _angular_core.InputSignal<string>;
210
+ protected readonly resolvedScroll: _angular_core.Signal<"content" | "page">;
211
+ protected readonly classes: _angular_core.Signal<string>;
212
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageDashboardComponent, never>;
213
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageDashboardComponent, "PageDashboard", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
214
+ }
215
+ declare class PageFooterComponent {
216
+ private readonly page;
217
+ readonly class: _angular_core.InputSignal<string>;
218
+ protected readonly resolvedHeight: _angular_core.Signal<"auto" | "fix">;
219
+ protected readonly isBorderRail: _angular_core.Signal<boolean>;
220
+ protected readonly classes: _angular_core.Signal<string>;
221
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageFooterComponent, never>;
222
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageFooterComponent, "PageFooter", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
223
+ }
224
+
126
225
  declare class PageSideComponent {
127
226
  private readonly document;
227
+ private readonly host;
128
228
  protected readonly page: PageStateService;
129
229
  protected readonly resolvedId: string;
130
230
  readonly mode: _angular_core.InputSignal<"sticky" | "drawer" | "overlay">;
131
231
  readonly position: _angular_core.InputSignal<"left" | "right" | null>;
132
232
  readonly width: _angular_core.InputSignal<string | null>;
133
233
  readonly closeOnEsc: _angular_core.InputSignal<boolean>;
234
+ /** Nama aksesibilitas untuk panel saat mode `drawer`/`overlay` (dipasang sebagai `aria-label` dialog). */
235
+ readonly ariaLabel: _angular_core.InputSignal<string>;
134
236
  readonly class: _angular_core.InputSignal<string>;
135
237
  protected readonly resolvedMode: _angular_core.Signal<"sticky" | "drawer" | "overlay">;
136
238
  protected readonly resolvedPosition: _angular_core.Signal<"left" | "right">;
@@ -138,12 +240,20 @@ declare class PageSideComponent {
138
240
  protected readonly isSticky: _angular_core.Signal<boolean>;
139
241
  protected readonly isDrawer: _angular_core.Signal<boolean>;
140
242
  protected readonly isOverlay: _angular_core.Signal<boolean>;
243
+ /** Mode mengambang (drawer/overlay) — bersifat dialog dan butuh manajemen fokus + `inert` saat tertutup. */
244
+ protected readonly isInteractive: _angular_core.Signal<boolean>;
141
245
  protected readonly resolvedScroll: _angular_core.Signal<"content" | "page">;
142
246
  protected readonly ariaHidden: _angular_core.Signal<"true" | null>;
247
+ /** Saat panel mengambang tertutup, `inert` mengeluarkan isinya dari tab order & pohon aksesibilitas (AXE). */
248
+ protected readonly inertWhenClosed: _angular_core.Signal<"" | null>;
249
+ protected readonly dialogRole: _angular_core.Signal<"dialog" | null>;
250
+ protected readonly ariaModal: _angular_core.Signal<"true" | null>;
251
+ protected readonly dialogLabel: _angular_core.Signal<string | null>;
252
+ protected readonly dialogTabindex: _angular_core.Signal<"-1" | null>;
143
253
  protected readonly classes: _angular_core.Signal<string>;
144
254
  constructor();
145
255
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageSideComponent, never>;
146
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageSideComponent, "PageSide", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "closeOnEsc": { "alias": "closeOnEsc"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
256
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageSideComponent, "PageSide", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "closeOnEsc": { "alias": "closeOnEsc"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
147
257
  }
148
258
 
149
259
  declare class PageComponent {
@@ -153,6 +263,7 @@ declare class PageComponent {
153
263
  private readonly identity;
154
264
  protected readonly projectedSide: _angular_core.Signal<PageSideComponent | undefined>;
155
265
  protected readonly projectedHeader: _angular_core.Signal<PageHeaderComponent | undefined>;
266
+ protected readonly projectedFilter: _angular_core.Signal<PageFilterComponent | undefined>;
156
267
  readonly variant: _angular_core.InputSignal<"stacked" | "side">;
157
268
  readonly height: _angular_core.InputSignal<"auto" | "fix">;
158
269
  readonly scroll: _angular_core.InputSignal<"content" | "page">;
@@ -162,8 +273,11 @@ declare class PageComponent {
162
273
  readonly sideMode: _angular_core.InputSignal<"sticky" | "drawer" | "overlay">;
163
274
  readonly sideOpen: _angular_core.InputSignal<boolean | null>;
164
275
  readonly sideWidth: _angular_core.InputSignal<string>;
276
+ /** Controlled state untuk `PageFilter` drawer/overlay. `null` = uncontrolled (dikelola toggle/backdrop/Esc). */
277
+ readonly filterOpen: _angular_core.InputSignal<boolean | null>;
165
278
  readonly class: _angular_core.InputSignal<string>;
166
279
  readonly sideOpenChange: _angular_core.OutputEmitterRef<boolean>;
280
+ readonly filterOpenChange: _angular_core.OutputEmitterRef<boolean>;
167
281
  /** Saat layout `empty`, munculkan tombol apps (flyout main navigation) di pojok kanan-atas. Set `false` untuk menonaktifkan. */
168
282
  readonly appsLauncher: _angular_core.InputSignalWithTransform<boolean, unknown>;
169
283
  /** Id navigasi yang disurface oleh apps-launcher (default `main`). */
@@ -178,6 +292,14 @@ declare class PageComponent {
178
292
  protected readonly resolvedSideMode: _angular_core.Signal<"sticky" | "drawer" | "overlay">;
179
293
  protected readonly isLeftSide: _angular_core.Signal<boolean>;
180
294
  protected readonly isRightSide: _angular_core.Signal<boolean>;
295
+ protected readonly hasFilter: _angular_core.Signal<boolean>;
296
+ protected readonly filterPlacement: _angular_core.Signal<"stacked" | "side">;
297
+ /** Mode efektif: `stacked` selalu `sticky`; `side` memakai mode pada `PageFilter`. */
298
+ protected readonly filterMode: _angular_core.Signal<"sticky" | "drawer" | "overlay">;
299
+ protected readonly filterPosition: _angular_core.Signal<"left" | "right">;
300
+ protected readonly filterWidthVar: _angular_core.Signal<string>;
301
+ protected readonly showsSideOverlayBackdrop: _angular_core.Signal<boolean>;
302
+ protected readonly showsFilterOverlayBackdrop: _angular_core.Signal<boolean>;
181
303
  protected readonly showsOverlayBackdrop: _angular_core.Signal<boolean>;
182
304
  /** Signal data untuk id yang dipilih; di-recompute hanya saat `appsNavId` berubah. */
183
305
  private readonly appsNavSource;
@@ -198,10 +320,33 @@ declare class PageComponent {
198
320
  protected readonly hostClasses: _angular_core.Signal<string>;
199
321
  protected readonly shellClasses: _angular_core.Signal<string>;
200
322
  protected readonly bodyClasses: _angular_core.Signal<string>;
323
+ /**
324
+ * Wrapper di sekitar `PageFilter` + `PageContent`. Tanpa filter, memakai `display: contents`
325
+ * agar transparan (perilaku body lama dipertahankan persis). Dengan filter, menjadi grid/flex
326
+ * yang menata filter (baris untuk `stacked`, kolom untuk `side`); drawer/overlay menjadikannya
327
+ * `relative` sebagai positioning context untuk panel yang mengambang.
328
+ */
329
+ protected readonly contentRegionClasses: _angular_core.Signal<string>;
201
330
  constructor();
202
331
  protected handleBackdropClick(): void;
203
332
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageComponent, never>;
204
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageComponent, "Page", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "scroll": { "alias": "scroll"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "sideMode": { "alias": "sideMode"; "required": false; "isSignal": true; }; "sideOpen": { "alias": "sideOpen"; "required": false; "isSignal": true; }; "sideWidth": { "alias": "sideWidth"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "appsLauncher": { "alias": "appsLauncher"; "required": false; "isSignal": true; }; "appsNavId": { "alias": "appsNavId"; "required": false; "isSignal": true; }; "appsIcon": { "alias": "appsIcon"; "required": false; "isSignal": true; }; "appsLabel": { "alias": "appsLabel"; "required": false; "isSignal": true; }; }, { "sideOpenChange": "sideOpenChange"; }, ["projectedSide", "projectedHeader"], ["PageHeader", "PageSideToggle", "PageSide", "PageContent, PageDashboard", "PageFooter"], true, never>;
333
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageComponent, "Page", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "scroll": { "alias": "scroll"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "sideMode": { "alias": "sideMode"; "required": false; "isSignal": true; }; "sideOpen": { "alias": "sideOpen"; "required": false; "isSignal": true; }; "sideWidth": { "alias": "sideWidth"; "required": false; "isSignal": true; }; "filterOpen": { "alias": "filterOpen"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "appsLauncher": { "alias": "appsLauncher"; "required": false; "isSignal": true; }; "appsNavId": { "alias": "appsNavId"; "required": false; "isSignal": true; }; "appsIcon": { "alias": "appsIcon"; "required": false; "isSignal": true; }; "appsLabel": { "alias": "appsLabel"; "required": false; "isSignal": true; }; }, { "sideOpenChange": "sideOpenChange"; "filterOpenChange": "filterOpenChange"; }, ["projectedSide", "projectedHeader", "projectedFilter"], ["PageHeader", "PageSideToggle, PageFilterToggle", "PageSide", "PageFilter", "PageContent, PageDashboard", "PageFooter"], true, never>;
334
+ }
335
+
336
+ /**
337
+ * `PageFilterToggle` — tombol untuk membuka/menutup `PageFilter` dalam mode `drawer`/`overlay`.
338
+ * Menerima projected content untuk label/ikon kustom; fallback memakai ikon funnel bawaan.
339
+ */
340
+ declare class PageFilterToggleComponent {
341
+ protected readonly page: PageStateService;
342
+ readonly ariaLabel: _angular_core.InputSignal<string>;
343
+ readonly class: _angular_core.InputSignal<string>;
344
+ readonly toggled: _angular_core.OutputEmitterRef<boolean>;
345
+ protected readonly hostClasses: _angular_core.Signal<string>;
346
+ protected readonly buttonClasses: _angular_core.Signal<string>;
347
+ protected handleClick(): void;
348
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageFilterToggleComponent, never>;
349
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageFilterToggleComponent, "PageFilterToggle", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "toggled": "toggled"; }, never, ["*"], true, never>;
205
350
  }
206
351
 
207
352
  declare class PageSideToggleComponent {
@@ -216,5 +361,5 @@ declare class PageSideToggleComponent {
216
361
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageSideToggleComponent, "PageSideToggle", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "toggled": "toggled"; }, never, ["*"], true, never>;
217
362
  }
218
363
 
219
- export { PAGE_APPEARANCES, PAGE_DEFAULT_APPEARANCE, PAGE_DEFAULT_HEIGHT, PAGE_DEFAULT_SCROLL, PAGE_DEFAULT_SIDE_MODE, PAGE_DEFAULT_SIDE_POSITION, PAGE_DEFAULT_SIDE_WIDTH, PAGE_DEFAULT_VARIANT, PAGE_HEIGHT_VALUES, PAGE_SCROLL_VALUES, PAGE_SIDE_MODES, PAGE_SIDE_POSITIONS, PAGE_VARIANTS, PageComponent, PageContentComponent, PageDashboardComponent, PageFooterComponent, PageHeaderComponent, PageSideComponent, PageSideToggleComponent, isUiPageAppearance, isUiPageHeight, isUiPageScroll, isUiPageSideMode, isUiPageSidePosition, isUiPageVariant };
220
- export type { PageAppearance, PageHeight, PageScroll, PageSideMode, PageSidePosition, PageVariant };
364
+ export { PAGE_APPEARANCES, PAGE_DEFAULT_APPEARANCE, PAGE_DEFAULT_FILTER_MODE, PAGE_DEFAULT_FILTER_PLACEMENT, PAGE_DEFAULT_FILTER_POSITION, PAGE_DEFAULT_FILTER_WIDTH, PAGE_DEFAULT_HEIGHT, PAGE_DEFAULT_SCROLL, PAGE_DEFAULT_SIDE_MODE, PAGE_DEFAULT_SIDE_POSITION, PAGE_DEFAULT_SIDE_WIDTH, PAGE_DEFAULT_VARIANT, PAGE_FILTER_PLACEMENTS, PAGE_HEIGHT_VALUES, PAGE_SCROLL_VALUES, PAGE_SIDE_MODES, PAGE_SIDE_POSITIONS, PAGE_VARIANTS, PageComponent, PageContentComponent, PageDashboardComponent, PageFilterComponent, PageFilterToggleComponent, PageFooterComponent, PageHeaderComponent, PageSideComponent, PageSideToggleComponent, isUiPageAppearance, isUiPageFilterPlacement, isUiPageHeight, isUiPageScroll, isUiPageSideMode, isUiPageSidePosition, isUiPageVariant };
365
+ export type { PageAppearance, PageFilterPlacement, PageHeight, PageScroll, PageSideMode, PageSidePosition, PageVariant };