import * as _ojiepermana_angular_navigation from '@ojiepermana/angular-navigation'; import * as _angular_core from '@angular/core'; import { Signal, TemplateRef } from '@angular/core'; import { NavigationIconDirective } from '@ojiepermana/angular-navigation/icon'; export { NavigationIconDirective } from '@ojiepermana/angular-navigation/icon'; import { NavigationOrientation, NavigationType, NavigationPosition, NavigationDockbarMode, NavigationDockbarRouteContext, NavigationBadgeContext, NavigationAppearance, NavigationFlyoutIconPosition, NavigationFlyoutTriggerVariant, NavigationState, NavigationItem, NavigationCollapseTree, NavigationSelection, NavigationBadgeSource, NavigationNormalizedItem, NavigationResolvedRouteContext, NavigationIconContext, NavigationVerticalPosition, NavigationHorizontalPosition } from '@ojiepermana/angular-navigation/types'; export { NAVIGATION_DOCKBAR_FALLBACK_ICON, NavigationActionHandler, NavigationAppearance, NavigationBadgeAriaLabel, NavigationBadgeContext, NavigationBadgeCount, NavigationBadgeSource, NavigationBadgeValueSource, NavigationCollapseTree, NavigationDockbarMode, NavigationDockbarRouteConfig, NavigationDockbarRouteContext, NavigationFlyoutIconPosition, NavigationFlyoutTriggerVariant, NavigationHorizontalPosition, NavigationHorizontalType, NavigationIconContext, NavigationItem, NavigationItemBadge, NavigationItemClasses, NavigationItemType, NavigationLink, NavigationNormalizedItem, NavigationNormalizedItemType, NavigationOrientation, NavigationPosition, NavigationRegisterInput, NavigationResolvedRouteContext, NavigationRouteData, NavigationSelection, NavigationState, NavigationType, NavigationVerticalPosition, NavigationVerticalType, NavigationVisibilityHandler, formatNavigationBadgeCount, normalizeUiNavItems } from '@ojiepermana/angular-navigation/types'; export * from '@ojiepermana/angular-navigation/core'; /** * Konfigurasi yang didaftarkan komponen type (``, * ``, ``, ``) ke * `` induknya. Satu `` hanya boleh memuat satu * type hidup pada satu waktu. */ interface NavigationTypeConfig { readonly orientation: NavigationOrientation; readonly type: NavigationType; readonly position?: Signal; readonly collapsed?: Signal; readonly dockbarMode?: Signal; /** Opt-in route context dan registry badge khusus dockbar. */ readonly dockbarRouteContext?: Signal; readonly dockbarBadgeContext?: Signal; /** Header route bawaan hanya terlihat bila consumer tidak memproyeksikan header sendiri. */ readonly dockbarRouteHeaderVisible?: Signal; /** Template footer aside dockbar (slot `ng-template[NavigationAsideFooter]`). */ readonly dockbarAsideFooter?: Signal | null>; readonly sidebarCollapse?: Signal; readonly previewExpanded?: Signal; readonly typeStyle?: Signal; readonly flyoutLabel?: Signal; /** Nama Material Symbols untuk trigger flyout; `null` = tanpa ikon (label saja). */ readonly flyoutIcon?: Signal; /** Trigger flyout hanya ikon — label pindah ke aria-label/title. */ readonly flyoutIconOnly?: Signal; /** Penempatan ikon relatif terhadap label trigger flyout. */ readonly flyoutIconPosition?: Signal; /** Bentuk visual tombol trigger flyout: `button` (pil) | `link` | `plain` (ghost). */ readonly flyoutTriggerVariant?: Signal; /** Trigger flyout mengambang (`fixed`) alih-alih mengalir di dalam bar/div. */ readonly flyoutTriggerFloating?: Signal; /** Panel floating menutup dari batas atas viewport dan memakai lebar viewport penuh. */ readonly flyoutPanelViewport?: Signal; /** Kelas Tailwind tambahan untuk host trigger flyout (posisi pojok floating / override wrapper). */ readonly flyoutTriggerClass?: Signal; /** Kelas tambahan khusus tombol trigger flyout. */ readonly flyoutTriggerButtonClass?: Signal; } interface NavigationShellContext { readonly state: Signal; readonly displayState: Signal; readonly collapseEnabled: Signal; toggleCollapsed(): void; } interface NavigationDockbarRouteHeaderState { readonly activeEntry: NavigationNormalizedItem | null; readonly panelGroup: NavigationNormalizedItem | null; readonly icon: string; readonly label: string; readonly badge: NavigationBadgeSource | null; readonly badgeClass: string; readonly iconContext: NavigationIconContext; } /** * Container navigasi deklaratif. Type ditentukan oleh komponen anak: * * ```html * * * * * * * * ``` * * Header dan footer opsional; `NavigationContent` selalu dirender oleh * type (default otomatis bila tidak diproyeksikan). */ declare class NavigationContainerComponent implements NavigationShellContext { readonly navId: _angular_core.InputSignal; /** Id data publik dapat dipisahkan dari id state. Berguna untuk mirror mobile tanpa berbagi persistence state. */ readonly dataId: _angular_core.InputSignal; readonly data: _angular_core.InputSignal; readonly ariaLabel: _angular_core.InputSignal; readonly compact: _angular_core.InputSignal; readonly collapseTree: _angular_core.InputSignal; readonly class: _angular_core.InputSignal; readonly itemClass: _angular_core.InputSignal; /** Kelas Tailwind untuk container `
  • ` group horizontal (flyout tab / navbar group). */ readonly groupClass: _angular_core.InputSignal; readonly activeIds: _angular_core.InputSignal | readonly string[] | null>; readonly activeUrl: _angular_core.InputSignal; readonly openedIds: _angular_core.ModelSignal; readonly itemSelected: _angular_core.OutputEmitterRef; private readonly nav; private readonly routeContextAdapter; private readonly activatedRoute; private readonly dataOwner; private readonly hoverPreviewExpanded; /** * Keyboard twin of the hover preview: a collapsed rail hides the children of * every collapsible, so without this the only way into a nested route is a * pointer hovering the rail. */ private readonly focusPreviewExpanded; /** Konfigurasi type aktif yang didaftarkan wrapper anak (sidebar/dockbar/navbar/flyout). */ private readonly typeConfig; private readonly orientationPreference; private readonly typePreference; private readonly positionPreference; private readonly collapsedPreference; private readonly dockbarModePreference; private readonly dockbarRouteContextPreference; readonly dockbarBadgeContext: _angular_core.Signal>>; readonly dockbarRouteHeaderVisible: _angular_core.Signal; /** Template footer aside dockbar dari slot `ng-template[NavigationAsideFooter]`. */ readonly dockbarAsideFooter: _angular_core.Signal<_angular_core.TemplateRef | null>; private readonly sidebarCollapse; private readonly previewExpanded; readonly typeStyle: _angular_core.Signal<_ojiepermana_angular_navigation.NavigationAppearance>; readonly flyoutLabel: _angular_core.Signal; readonly flyoutIcon: _angular_core.Signal; readonly flyoutIconOnly: _angular_core.Signal; readonly flyoutIconPosition: _angular_core.Signal<_ojiepermana_angular_navigation.NavigationFlyoutIconPosition>; readonly flyoutTriggerVariant: _angular_core.Signal<_ojiepermana_angular_navigation.NavigationFlyoutTriggerVariant>; readonly flyoutTriggerFloating: _angular_core.Signal; readonly flyoutPanelViewport: _angular_core.Signal; readonly flyoutTriggerClass: _angular_core.Signal; readonly flyoutTriggerButtonClass: _angular_core.Signal; private readonly controller; readonly iconTemplate: _angular_core.Signal; readonly normalizedItems: _angular_core.Signal; readonly resolvedState: _angular_core.Signal<_ojiepermana_angular_navigation.NavigationState>; readonly activeIdSet: _angular_core.Signal>; readonly dockbarRouteEnabled: _angular_core.Signal; readonly dockbarResolvedRouteContext: _angular_core.Signal; readonly dockbarActiveRouteEntry: _angular_core.Signal; readonly dockbarResolvedActiveIds: _angular_core.Signal>; readonly dockbarActiveRoutePanelGroup: _angular_core.Signal; readonly dockbarRouteHeader: _angular_core.Signal; readonly dockbarRailItems: _angular_core.Signal; readonly dockbarAsideId: _angular_core.Signal; readonly dockbarOpenGroup: _angular_core.Signal; readonly dockbarActiveRoutePanelExpanded: _angular_core.Signal; readonly previewRailExpanded: _angular_core.Signal; readonly previewRailOffset: _angular_core.Signal<"calc(var(--layout-sidebar-width) - var(--layout-sidebar-collapsed-width))" | "0px">; readonly displayState: _angular_core.Signal<_ojiepermana_angular_navigation.NavigationState>; readonly dockbarAsideOpen: _angular_core.Signal; readonly collapseEnabled: _angular_core.Signal; /** Kelas shell yang dipakai host komponen type (eks `div` shell internal). */ readonly shellClasses: _angular_core.Signal; readonly state: _angular_core.Signal<_ojiepermana_angular_navigation.NavigationState>; readonly resolvedDataId: _angular_core.Signal; protected readonly hostClasses: _angular_core.Signal; constructor(); /** * Dipanggil komponen type saat dibuat. Satu `` hanya boleh * memuat satu type hidup — pendaftaran ganda dianggap salah konfigurasi. */ registerType(config: NavigationTypeConfig): void; unregisterType(config: NavigationTypeConfig): void; toggleCollapsed(): void; toggleDockbarActiveRoutePanel(): void; closeDockbarPanel(): boolean; restoreDockbarRoutePanel(): void; protected setHoverPreview(value: boolean): void; protected setFocusPreview(value: boolean, event?: FocusEvent): void; private dockbarRouteConfig; private cleanString; private safeId; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Area konten navigasi: merender daftar item sesuai type aktif dari * `` induk. Selalu hadir di setiap type — komponen type * merender default-nya bila consumer tidak memproyeksikan ``. */ declare class NavigationContentComponent { protected readonly container: NavigationContainerComponent; readonly class: _angular_core.InputSignal; protected readonly hostClasses: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class NavigationFooterComponent { private readonly shell; readonly class: _angular_core.InputSignal; protected readonly isHorizontal: _angular_core.Signal; protected readonly displayCollapsed: _angular_core.Signal; /** * Baris isi footer. Saat collapsed/dockbar (vertical) isi (inisial user) dipusatkan * di tengah rail agar simetris dengan `NavigationHeader` dan ikon nav-item; selain * itu rata kiri dengan `gap-3` (padding diserahkan consumer, mis. `px-3`). */ protected readonly rowClasses: _angular_core.Signal; protected readonly hostClasses: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class NavigationHeaderComponent { private readonly shell; readonly toggle: _angular_core.InputSignal; readonly class: _angular_core.InputSignal; protected readonly collapsed: _angular_core.Signal; protected readonly displayCollapsed: _angular_core.Signal; protected readonly isHorizontal: _angular_core.Signal; /** * The toggle used to disappear once the rail collapsed, which left the * collapsed rail with no control that could expand it again — nested items * below a collapsible were then reachable by hover only. */ protected readonly showToggle: _angular_core.Signal; protected readonly toggleAriaLabel: _angular_core.Signal<"Expand navigation" | "Collapse navigation">; protected readonly toggleIconName: _angular_core.Signal<"left_panel_open" | "left_panel_close">; /** * Baris isi header. Saat collapsed/dockbar (vertical) isi (inisial/ikon) dipusatkan di tengah * rail agar simetris dengan ikon nav-item di bawahnya (yang juga center di rail); selain itu kiri * dengan padding `px-3`. */ protected readonly rowClasses: _angular_core.Signal; protected readonly contentClasses: _angular_core.Signal<"flex min-w-0 items-center gap-3" | "flex min-w-0 items-center justify-center" | "flex min-w-0 flex-1 items-center gap-3">; protected readonly hostClasses: _angular_core.Signal; protected toggleCollapsed(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Type sidebar vertikal untuk ``. Slot `NavigationHeader` dan * `NavigationFooter` opsional; `NavigationContent` selalu dirender (default * otomatis bila tidak diproyeksikan). */ declare class NavigationSidebarComponent { private readonly container; private readonly destroyRef; readonly position: _angular_core.InputSignal; readonly collapsed: _angular_core.InputSignal; readonly collapse: _angular_core.InputSignalWithTransform; readonly previewExpanded: _angular_core.InputSignal; readonly class: _angular_core.InputSignal; protected readonly headerSlot: _angular_core.Signal; protected readonly contentSlot: _angular_core.Signal; protected readonly footerSlot: _angular_core.Signal; protected readonly hostClasses: _angular_core.Signal; constructor(); static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Slot footer untuk aside dockbar. Proyeksikan sebagai `ng-template` di dalam * ``; dirender di dasar aside (h-12, border-t) setiap kali * panel group terbuka — baik mode `sticky` maupun `drawer`. * * ```html * * …rail… * …identitas user + aksi… * * ``` * * Berbeda dengan `NavigationFooter` (kolom rail, selalu collapsed pada dockbar), * isi template ini tampil dalam konteks lebar penuh aside — cocok untuk nama + * email + tombol aksi seperti footer sidebar expanded. */ declare class NavigationAsideFooterDirective { readonly templateRef: TemplateRef; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } /** * Type dockbar vertikal (rail ikon + aside) untuk ``. Slot * `NavigationHeader` dan `NavigationFooter` opsional; `NavigationContent` * selalu dirender (default otomatis bila tidak diproyeksikan). Slot * `ng-template[NavigationAsideFooter]` opsional — dirender sebagai footer di * dasar aside saat panel group terbuka. */ declare class NavigationDockbarComponent { protected readonly container: NavigationContainerComponent; private readonly destroyRef; private readonly host; private readonly injector; readonly mode: _angular_core.InputSignal; readonly position: _angular_core.InputSignal; readonly routeContext: _angular_core.InputSignal; readonly badgeContext: _angular_core.InputSignal>>; readonly class: _angular_core.InputSignal; protected readonly headerSlot: _angular_core.Signal; protected readonly contentSlot: _angular_core.Signal; protected readonly footerSlot: _angular_core.Signal; protected readonly asideFooterSlot: _angular_core.Signal; private readonly routeContextEnabled; protected readonly hostClasses: _angular_core.Signal; constructor(); protected onPointerOut(event: PointerEvent): void; protected onEscape(event: Event): void; protected toggleActiveRoutePanel(): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Type navbar horizontal untuk ``. Slot `NavigationHeader` * dan `NavigationFooter` opsional; `NavigationContent` selalu dirender * (default otomatis bila tidak diproyeksikan). */ declare class NavigationNavbarComponent { private readonly container; private readonly destroyRef; /** Posisi bar terhadap konten layout: `top` (default) atau `bottom` — panel grid membuka ke arah sebaliknya. */ readonly position: _angular_core.InputSignal; readonly typeStyle: _angular_core.InputSignal; readonly class: _angular_core.InputSignal; protected readonly headerSlot: _angular_core.Signal; protected readonly contentSlot: _angular_core.Signal; protected readonly footerSlot: _angular_core.Signal; protected readonly hostClasses: _angular_core.Signal; constructor(); static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Type flyout horizontal (trigger + panel menu) untuk ``. * Slot `NavigationHeader` dan `NavigationFooter` opsional; `NavigationContent` * selalu dirender (default otomatis bila tidak diproyeksikan). */ declare class NavigationFlyoutComponent { private readonly container; private readonly destroyRef; readonly label: _angular_core.InputSignal; /** Nama Material Symbols untuk trigger (mis. `apps`, `menu`); `null` = label saja. */ readonly icon: _angular_core.InputSignal; /** Trigger hanya menampilkan ikon; label tetap dipakai sebagai aria-label/title. */ readonly iconOnly: _angular_core.InputSignalWithTransform; /** Penempatan ikon relatif terhadap label: `start` (default) atau `end`. */ readonly iconPosition: _angular_core.InputSignal; /** Bentuk visual tombol trigger: `button` (pil, default) | `link` | `plain` (ghost). */ readonly triggerVariant: _angular_core.InputSignal; /** * Trigger mengambang (`fixed`) alih-alih mengalir di dalam bar/div. Default pojok kanan-atas; * pakai `trigger-class` untuk pindah pojok (mis. `bottom-6 right-6 top-auto`). * * Catatan: `position: fixed` ber-anchor ke viewport HANYA bila tak ada ancestor pembentuk * containing block. Di dalam `` (frame-nya memakai `backdrop-blur`), trigger ber-anchor * ke kotak konten frame (bukan viewport sebenarnya) dan bisa ter-clip oleh frame `overflow-hidden`. * Untuk floating sebenar-viewport, tempatkan `` flyout di luar frame ``. */ readonly triggerFloating: _angular_core.InputSignalWithTransform; /** * Saat trigger floating dibuka, tempelkan panel ke batas atas viewport dan * bentangkan sepanjang viewport. Dipakai window chrome; default popover tetap * menempel ke trigger. */ readonly panelViewport: _angular_core.InputSignalWithTransform; /** Kelas Tailwind untuk host trigger (posisi pojok floating / styling wrapper saat in-flow). */ readonly triggerClass: _angular_core.InputSignal; /** Kelas tambahan khusus tombol trigger, tanpa memengaruhi host atau item di dalam panel. */ readonly triggerButtonClass: _angular_core.InputSignal; /** Posisi bar terhadap konten layout: `top` (default) atau `bottom` — panel membuka ke arah sebaliknya. */ readonly position: _angular_core.InputSignal; readonly typeStyle: _angular_core.InputSignal; readonly class: _angular_core.InputSignal; protected readonly hostClasses: _angular_core.Signal; constructor(); static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class NavigationCollapseRootDirective { private readonly shell; protected readonly collapseEnabled: _angular_core.Signal; protected readonly displayCollapsed: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } declare class NavigationCollapseExpandedDirective { private readonly shell; private readonly templateRef; private readonly viewContainer; private hasView; private readonly shouldRender; constructor(); static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵdir: _angular_core.ɵɵDirectiveDeclaration; } /** * Slot aksi di sisi kanan `NavigationFooter`. Selalu didorong ke kanan (`ml-auto`), * rata tengah vertikal, dengan jarak antar-child otomatis (`gap`). Isi bebas dengan * ikon, button, atau teks — mis. tombol logout. * * Otomatis disembunyikan saat sidebar vertical sedang collapsed (rail icon-only) * agar tidak overflow; konsisten dengan `NavigationFooterTitle`. */ declare class NavigationFooterActionComponent { private readonly shell; readonly class: _angular_core.InputSignal; protected readonly collapsed: _angular_core.Signal; protected readonly hostClasses: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Blok avatar/inisial untuk slot `NavigationFooter` (profil user). Sama seperti * `NavigationHeaderInitial` dengan bentuk identitas yang seragam (rounded-md). * Consumer cukup memberi `name`; inisial diturunkan otomatis. Beri `src` untuk * foto, `icon` untuk material symbol, atau `initials` untuk override. * * Tetap tampil saat sidebar collapsed; pasangannya `NavigationFooterTitle` yang * menyembunyikan diri. */ declare class NavigationFooterInitialComponent { readonly name: _angular_core.InputSignal; readonly src: _angular_core.InputSignal; readonly initials: _angular_core.InputSignal; readonly icon: _angular_core.InputSignal; readonly class: _angular_core.InputSignal; private readonly view; protected readonly resolvedInitials: _angular_core.Signal; protected readonly hostClasses: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Judul + subjudul untuk slot `NavigationFooter` (mis. nama + email user). * Otomatis disembunyikan saat sidebar vertical sedang collapsed (rail icon-only) * dengan membaca `NAVIGATION_SHELL`. */ declare class NavigationFooterTitleComponent { private readonly shell; readonly title: _angular_core.InputSignal; readonly subtitle: _angular_core.InputSignal; readonly class: _angular_core.InputSignal; protected readonly collapsed: _angular_core.Signal; protected readonly hostClasses: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Blok avatar/inisial untuk slot `NavigationHeader` (brand/logo). Consumer cukup * memberi `name`; inisial diturunkan otomatis ("Ojie Permana" → "OP"). Beri `src` * untuk gambar, `icon` (material symbol) sebagai ganti inisial, atau `initials` * untuk override manual. * * Selalu tampil baik saat sidebar expanded maupun collapsed karena ukurannya muat * di rail icon-only — pasangannya, `NavigationHeaderTitle`, yang menyembunyikan * diri saat collapsed. */ declare class NavigationHeaderInitialComponent { readonly name: _angular_core.InputSignal; readonly src: _angular_core.InputSignal; readonly initials: _angular_core.InputSignal; readonly icon: _angular_core.InputSignal; /** Use the rail icon token when the header is rendered in compact navigation. */ readonly compact: _angular_core.InputSignalWithTransform; readonly class: _angular_core.InputSignal; private readonly view; protected readonly resolvedInitials: _angular_core.Signal; protected readonly iconClasses: _angular_core.Signal; protected readonly hostClasses: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Judul + subjudul untuk slot `NavigationHeader`. Otomatis disembunyikan saat * sidebar vertical sedang collapsed (rail icon-only) dengan membaca * `NAVIGATION_SHELL` — consumer tidak perlu mengelola state collapse sendiri. */ declare class NavigationHeaderTitleComponent { private readonly shell; readonly title: _angular_core.InputSignal; readonly subtitle: _angular_core.InputSignal; readonly class: _angular_core.InputSignal; protected readonly collapsed: _angular_core.Signal; protected readonly hostClasses: _angular_core.Signal; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } /** * Turunkan inisial ringkas dari sebuah nama untuk avatar fallback. * * "Ojie Permana" → "OP" * "Ojiepermana" → "OJ" * "" → "" * * Mengambil huruf depan kata pertama dan kata terakhir; bila hanya satu kata, * memakai dua huruf pertamanya. */ declare function deriveNavigationInitials(name: string): string; export { NavigationAsideFooterDirective, NavigationCollapseExpandedDirective, NavigationCollapseRootDirective, NavigationContainerComponent, NavigationContentComponent, NavigationDockbarComponent, NavigationFlyoutComponent, NavigationFooterActionComponent, NavigationFooterComponent, NavigationFooterInitialComponent, NavigationFooterTitleComponent, NavigationHeaderComponent, NavigationHeaderInitialComponent, NavigationHeaderTitleComponent, NavigationNavbarComponent, NavigationSidebarComponent, deriveNavigationInitials }; export type { NavigationTypeConfig };