@ojiepermana/angular 21.1.9 → 21.1.12

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ojiepermana-angular-navigation.mjs","sources":["../../../projects/angular/navigation/src/lib/core/services/navigation.service.ts","../../../projects/angular/navigation/src/lib/components/shared/nav-icon.component.ts","../../../projects/angular/navigation/src/lib/core/utils/cn.util.ts","../../../projects/angular/navigation/src/lib/components/shared/nav-item.component.ts","../../../projects/angular/navigation/src/lib/components/sidebar/sidebar.component.ts","../../../projects/angular/navigation/src/lib/components/topbar/topbar.component.ts","../../../projects/angular/navigation/src/lib/data/demo-navigation.data.ts","../../../projects/angular/navigation/public-api.ts","../../../projects/angular/navigation/ojiepermana-angular-navigation.ts"],"sourcesContent":["import { Injectable, computed, inject, signal } from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { filter } from 'rxjs/operators';\nimport { DestroyRef } from '@angular/core';\nimport type { NavigationItem } from '../types/navigation.type';\n\n/** Default registry key used when no id is specified. */\nexport const DEFAULT_NAVIGATION_ID = 'main';\n\n/**\n * Signal-based global state untuk navigation (sidebar/topbar).\n *\n * Items disimpan dalam registry ber-key. Key default adalah `'main'`.\n * Komponen `ui-sidebar` / `ui-topbar` memilih registry via input `navigationId`.\n */\n@Injectable({ providedIn: 'root' })\nexport class NavigationService {\n private readonly router = inject(Router);\n private readonly destroyRef = inject(DestroyRef);\n\n /** Internal version counter — incremented on every registry mutation. */\n private readonly _version = signal(0);\n\n /** Internal map of registered navigation trees. */\n private readonly _registry = new Map<string, NavigationItem[]>();\n\n /**\n * Backward-compatible accessor — returns items for the default (`'main'`) key.\n * Prefer `getItems(id)` when working with named registries.\n */\n readonly items = computed(() => this.getItems(DEFAULT_NAVIGATION_ID)());\n\n /** Sidebar collapsed (default ↔ thin) toggle untuk desktop. */\n readonly collapsed = signal<boolean>(false);\n\n /** Sheet drawer terbuka di mobile. */\n readonly mobileOpen = signal<boolean>(false);\n\n /** Set id grup / collapsable yang sedang terbuka. */\n readonly openGroups = signal<ReadonlySet<string>>(new Set<string>());\n\n /** URL aktif terakhir. Update otomatis dari Router `NavigationEnd`. */\n readonly activeUrl = signal<string>(this.router.url);\n\n /** Trail id item yang sedang match dengan URL aktif (across ALL registries). */\n readonly activeTrail = computed<ReadonlySet<string>>(() => {\n this._version(); // track changes\n const url = this.activeUrl();\n const trail = new Set<string>();\n const walk = (list: readonly NavigationItem[], ancestors: string[]): boolean => {\n let matched = false;\n for (const item of list) {\n const id = item.id;\n const link = 'link' in item ? item.link : undefined;\n let selfMatch = false;\n if (link) {\n selfMatch = url === link || url.startsWith(link + '/') || url.startsWith(link + '?');\n }\n const children = 'children' in item ? (item.children ?? []) : [];\n const nextAncestors = id ? [...ancestors, id] : ancestors;\n const childMatch = children.length > 0 && walk(children, nextAncestors);\n if (selfMatch || childMatch) {\n if (id) trail.add(id);\n for (const a of ancestors) trail.add(a);\n matched = true;\n }\n }\n return matched;\n };\n for (const items of this._registry.values()) {\n walk(items, []);\n }\n return trail;\n });\n\n constructor() {\n this.router.events\n .pipe(\n filter((e): e is NavigationEnd => e instanceof NavigationEnd),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((e) => this.activeUrl.set(e.urlAfterRedirects));\n }\n\n /**\n * Register items di registry.\n *\n * Overload:\n * - `registerItems(items)` → key `'main'`\n * - `registerItems(id, items)` → key spesifik\n */\n registerItems(items: NavigationItem[]): void;\n registerItems(id: string, items: NavigationItem[]): void;\n registerItems(idOrItems: string | NavigationItem[], maybeItems?: NavigationItem[]): void {\n const [id, items] = typeof idOrItems === 'string' ? [idOrItems, maybeItems!] : [DEFAULT_NAVIGATION_ID, idOrItems];\n this._registry.set(id, items);\n this._version.update((v) => v + 1);\n }\n\n /** Remove a named registry entry. */\n removeItems(id: string): void {\n this._registry.delete(id);\n this._version.update((v) => v + 1);\n }\n\n /**\n * Computed yang mengembalikan items untuk key tertentu.\n * Reactive terhadap perubahan registry.\n */\n getItems(id: string): () => readonly NavigationItem[] {\n return computed(() => {\n this._version(); // track changes\n return this._registry.get(id) ?? [];\n });\n }\n\n /** Toggle sidebar collapsed (default ↔ thin). */\n toggleCollapsed(): void {\n this.collapsed.update((v) => !v);\n }\n\n setCollapsed(value: boolean): void {\n this.collapsed.set(value);\n }\n\n openMobile(): void {\n this.mobileOpen.set(true);\n }\n\n closeMobile(): void {\n this.mobileOpen.set(false);\n }\n\n toggleMobile(): void {\n this.mobileOpen.update((v) => !v);\n }\n\n isGroupOpen(id: string): boolean {\n return this.openGroups().has(id);\n }\n\n toggleGroup(id: string): void {\n const next = new Set(this.openGroups());\n if (next.has(id)) next.delete(id);\n else next.add(id);\n this.openGroups.set(next);\n }\n\n setGroupOpen(id: string, open: boolean): void {\n const next = new Set(this.openGroups());\n if (open) next.add(id);\n else next.delete(id);\n this.openGroups.set(next);\n }\n\n /** Apakah id termasuk dalam active trail saat ini. */\n isActive(id: string | undefined): boolean {\n return !!id && this.activeTrail().has(id);\n }\n}\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, PLATFORM_ID, computed, inject, input } from '@angular/core';\n\nconst MATERIAL_SYMBOLS_FONT_ATTR = 'data-ui-nav-icon-font';\nconst MATERIAL_SYMBOLS_FONT_ID = 'material-symbols-outlined';\nconst MATERIAL_SYMBOLS_FONT_HREF =\n 'https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0';\n\n/**\n * Material Symbols icon renderer.\n * Menyuntikkan stylesheet font sekali saat dipakai agar consumer tidak perlu\n * menambahkan `<link>` manual di `index.html`.\n */\n@Component({\n selector: 'ui-nav-icon',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[style.font-size.px]': 'size()',\n '[style.font-variation-settings]': 'fontVariationSettings',\n 'aria-hidden': 'true',\n translate: 'no',\n },\n template: `{{ name() }}`,\n})\nexport class UiNavIconComponent {\n private readonly doc = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n\n readonly name = input<string>('');\n readonly class = input<string>('');\n readonly size = input<number | null>(null);\n\n protected readonly fontVariationSettings = '\"FILL\" 0, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24';\n\n constructor() {\n this.ensureFontStylesheet();\n }\n\n protected readonly classes = computed(() => {\n const base = 'material-symbols-outlined inline-flex items-center justify-center leading-none select-none';\n const extra = this.class();\n return extra ? `${base} ${extra}` : base;\n });\n\n private ensureFontStylesheet(): void {\n if (!isPlatformBrowser(this.platformId) || !this.doc.head) return;\n\n const existing = this.doc.head.querySelector(`link[${MATERIAL_SYMBOLS_FONT_ATTR}=\"${MATERIAL_SYMBOLS_FONT_ID}\"]`);\n if (existing) return;\n\n const link = this.doc.createElement('link');\n link.rel = 'stylesheet';\n link.href = MATERIAL_SYMBOLS_FONT_HREF;\n link.setAttribute(MATERIAL_SYMBOLS_FONT_ATTR, MATERIAL_SYMBOLS_FONT_ID);\n this.doc.head.appendChild(link);\n }\n}\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/** Concatenate and dedupe Tailwind class names. */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { UiNavIconComponent } from './nav-icon.component';\nimport { NavigationService } from '../../core/services/navigation.service';\nimport { cn } from '../../core/utils/cn.util';\nimport type {\n NavigationAsideItem,\n NavigationBasicItem,\n NavigationCollapsableItem,\n NavigationGroupItem,\n NavigationItem,\n NavigationMegaItem,\n} from '../../core/types/navigation.type';\n\n/**\n * Recursive navigation item renderer (vertical context).\n *\n * Menerima item polymorphic dan delegasi ke template sesuai `type`.\n * Mega dirender sebagai group biasa saat muncul di konteks vertical.\n */\n@Component({\n selector: 'ui-nav-item',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterLink, RouterLinkActive, MatTooltip, UiNavIconComponent],\n template: `\n @switch (type()) {\n @case ('divider') {\n <hr class=\"my-2 border-t border-border\" role=\"separator\" />\n }\n @case ('spacer') {\n <div class=\"flex-1\"></div>\n }\n @case ('group') {\n <div class=\"p-3\" role=\"group\" [attr.aria-labelledby]=\"headingId()\">\n @if (!compact()) {\n <div class=\"sticky top-0 z-10 bg-background py-3 text-muted-foreground\">\n <div [id]=\"headingId()\" [class]=\"cn('ui-nav-heading text-muted-foreground', item().classes?.title)\">\n {{ item().title }}\n </div>\n </div>\n }\n <div class=\"flex flex-col gap-0.5\">\n @for (child of groupItem().children; track child.id) {\n <ui-nav-item [item]=\"child\" [level]=\"level() + 1\" [compact]=\"compact()\" />\n }\n </div>\n </div>\n }\n @case ('collapsable') {\n @let id = collapsableItem().id ?? '';\n @let open = isGroupOpen();\n <button\n type=\"button\"\n [class]=\"\n cn(\n 'ui-nav-text group/ni flex w-full items-center gap-3 rounded-md px-3 py-2 text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n isTrailActive() && 'text-primary',\n item().classes?.wrapper\n )\n \"\n [attr.aria-expanded]=\"open\"\n [attr.aria-controls]=\"id + '-panel'\"\n [disabled]=\"collapsableItem().disabled || null\"\n [matTooltip]=\"compact() ? (collapsableItem().title ?? '') : ''\"\n matTooltipPosition=\"right\"\n [matTooltipDisabled]=\"!compact()\"\n (click)=\"toggleGroup()\">\n @if (collapsableItem().icon) {\n <ui-nav-icon [name]=\"collapsableItem().icon!\" [size]=\"18\" [class]=\"item().classes?.icon ?? ''\" />\n }\n @if (!compact()) {\n <span [class]=\"cn('flex-1 truncate text-left', item().classes?.title)\">\n {{ collapsableItem().title }}\n </span>\n @if (collapsableItem().badge; as badge) {\n <span [class]=\"badge.classes ?? 'ui-nav-badge ml-auto'\">{{ badge.title }}</span>\n }\n <ui-nav-icon\n [name]=\"'chevron_right'\"\n [size]=\"18\"\n [class]=\"cn('transition-transform duration-200', open && 'rotate-90')\" />\n }\n </button>\n @if (!compact() && open) {\n <div [id]=\"id + '-panel'\" role=\"region\" class=\"ml-3 mt-0.5 flex flex-col gap-0.5 border-l border-border pl-3\">\n @for (child of collapsableItem().children; track child.id) {\n <ui-nav-item [item]=\"child\" [level]=\"level() + 1\" [compact]=\"false\" />\n }\n </div>\n }\n }\n @case ('mega') {\n <!-- Mega direndahkan ke group saat berada di sidebar vertical. -->\n <div class=\"mt-4 py-3 first:mt-0\" role=\"group\">\n @if (!compact()) {\n <div class=\"ui-nav-heading sticky top-0 z-10 bg-background px-3 pb-1 text-muted-foreground\">\n {{ item().title }}\n </div>\n }\n <div class=\"flex flex-col gap-0.5\">\n @for (child of megaItem().children; track child.id) {\n <ui-nav-item [item]=\"child\" [level]=\"level() + 1\" [compact]=\"compact()\" />\n }\n </div>\n </div>\n }\n @case ('aside') {\n <a\n [class]=\"\n cn(\n 'ui-nav-text flex items-center gap-3 rounded-md px-3 py-2 text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring aria-[current=page]:text-primary',\n item().classes?.wrapper\n )\n \"\n routerLinkActive=\"text-primary\"\n #rla=\"routerLinkActive\"\n [attr.aria-current]=\"rla.isActive ? 'page' : null\"\n [routerLink]=\"asideItem().link\"\n [queryParams]=\"asideItem().queryParams\"\n [fragment]=\"asideItem().fragment ?? undefined\"\n [target]=\"asideItem().target ?? undefined\"\n [matTooltip]=\"compact() ? (asideItem().title ?? '') : ''\"\n matTooltipPosition=\"right\"\n [matTooltipDisabled]=\"!compact()\">\n @if (asideItem().icon) {\n <ui-nav-icon [name]=\"asideItem().icon!\" [size]=\"18\" />\n }\n @if (!compact()) {\n <span class=\"flex-1 truncate\">{{ asideItem().title }}</span>\n }\n </a>\n }\n @default {\n <!-- basic -->\n @if (basicItem().link && !basicItem().externalLink) {\n <a\n [class]=\"\n cn(\n 'ui-nav-text flex items-center gap-3 rounded-md px-3 py-2 text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring aria-[current=page]:text-primary aria-disabled:pointer-events-none aria-disabled:opacity-50',\n item().classes?.wrapper\n )\n \"\n routerLinkActive=\"text-primary\"\n #rla=\"routerLinkActive\"\n [routerLinkActiveOptions]=\"\n basicItem().isActiveMatchOptions ?? (basicItem().exactMatch ? exactMatch : inexactMatch)\n \"\n [attr.aria-current]=\"rla.isActive ? 'page' : null\"\n [attr.aria-disabled]=\"basicItem().disabled || null\"\n [matTooltip]=\"compact() ? (basicItem().title ?? '') : ''\"\n matTooltipPosition=\"right\"\n [matTooltipDisabled]=\"!compact()\"\n [routerLink]=\"basicItem().link\"\n [queryParams]=\"basicItem().queryParams\"\n [queryParamsHandling]=\"basicItem().queryParamsHandling ?? null\"\n [fragment]=\"basicItem().fragment ?? undefined\"\n [preserveFragment]=\"basicItem().preserveFragment ?? false\"\n [target]=\"basicItem().target ?? undefined\"\n (click)=\"runAction()\">\n @if (basicItem().icon) {\n <ui-nav-icon [name]=\"basicItem().icon!\" [size]=\"18\" [class]=\"item().classes?.icon ?? ''\" />\n }\n @if (!compact()) {\n <span [class]=\"cn('flex-1 truncate', item().classes?.title)\">{{ basicItem().title }}</span>\n @if (basicItem().badge; as badge) {\n <span [class]=\"badge.classes ?? 'ui-nav-badge ml-auto'\">{{ badge.title }}</span>\n }\n }\n </a>\n } @else if (basicItem().link && basicItem().externalLink) {\n <a\n [class]=\"\n cn(\n 'ui-nav-text flex items-center gap-3 rounded-md px-3 py-2 text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n item().classes?.wrapper\n )\n \"\n [attr.href]=\"basicItem().link\"\n [attr.target]=\"basicItem().target ?? '_blank'\"\n rel=\"noopener noreferrer\"\n [matTooltip]=\"compact() ? (basicItem().title ?? '') : ''\"\n matTooltipPosition=\"right\"\n [matTooltipDisabled]=\"!compact()\">\n @if (basicItem().icon) {\n <ui-nav-icon [name]=\"basicItem().icon!\" [size]=\"18\" />\n }\n @if (!compact()) {\n <span class=\"flex-1 truncate\">{{ basicItem().title }}</span>\n }\n </a>\n } @else {\n <button\n type=\"button\"\n [class]=\"\n cn(\n 'ui-nav-text flex w-full items-center gap-3 rounded-md px-3 py-2 text-left text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n item().classes?.wrapper\n )\n \"\n [disabled]=\"basicItem().disabled || null\"\n [matTooltip]=\"compact() ? (basicItem().title ?? '') : ''\"\n matTooltipPosition=\"right\"\n [matTooltipDisabled]=\"!compact()\"\n (click)=\"runAction()\">\n @if (basicItem().icon) {\n <ui-nav-icon [name]=\"basicItem().icon!\" [size]=\"18\" />\n }\n @if (!compact()) {\n <span class=\"flex-1 truncate\">{{ basicItem().title }}</span>\n }\n </button>\n }\n }\n }\n `,\n})\nexport class UiNavItemComponent {\n private readonly nav = inject(NavigationService);\n protected readonly cn = cn;\n\n readonly item = input.required<NavigationItem>();\n readonly level = input<number>(0);\n /** Compact / icon-only rendering (sidebar `thin`). */\n readonly compact = input<boolean>(false);\n\n protected readonly exactMatch = {\n exact: true,\n paths: 'exact',\n queryParams: 'exact',\n fragment: 'exact',\n matrixParams: 'exact',\n } as const;\n protected readonly inexactMatch = {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n } as const;\n\n protected readonly type = computed(() => this.item().type);\n\n protected readonly groupItem = computed(() => this.item() as NavigationGroupItem);\n protected readonly collapsableItem = computed(() => this.item() as NavigationCollapsableItem);\n protected readonly megaItem = computed(() => this.item() as NavigationMegaItem);\n protected readonly asideItem = computed(() => this.item() as NavigationAsideItem);\n protected readonly basicItem = computed(() => this.item() as NavigationBasicItem);\n\n protected readonly headingId = computed(() => {\n const id = this.item().id ?? '';\n return `nav-group-${id}`;\n });\n\n protected isGroupOpen(): boolean {\n const id = this.item().id;\n if (!id) return false;\n // auto-open when any descendant is active\n if (this.nav.isActive(id) && 'children' in this.item()) return true;\n return this.nav.isGroupOpen(id);\n }\n\n protected isTrailActive(): boolean {\n return this.nav.isActive(this.item().id);\n }\n\n protected toggleGroup(): void {\n const id = this.item().id;\n if (id) this.nav.toggleGroup(id);\n }\n\n protected runAction(): void {\n const item = this.item();\n if ('action' in item && typeof item.action === 'function') {\n item.action(item);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n TemplateRef,\n ViewContainerRef,\n computed,\n effect,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { filter, map } from 'rxjs/operators';\nimport { UiNavItemComponent } from '../shared/nav-item.component';\nimport { NavigationService, DEFAULT_NAVIGATION_ID } from '../../core/services/navigation.service';\nimport type { NavigationItem, SidebarAppearance, SidebarPosition } from '../../core/types/navigation.type';\n\n/**\n * Vertical navigation (sidebar) — shadcn-styled.\n *\n * Variants:\n * - `default`: 17.5rem, label + icon\n * - `thin`: 4rem icon-only; hover memunculkan overlay expand (tidak push konten)\n *\n * Mobile (`< md`): saat `autoMobile=true` (default), host desktop disembunyikan\n * dan konten dirender lewat CDK Overlay drawer dengan focus trap. State buka\n * dikontrol lewat `NavigationService.mobileOpen`.\n */\n@Component({\n selector: 'ui-sidebar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, UiNavItemComponent],\n host: {\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel()',\n '[class]': 'hostClasses()',\n '[attr.data-appearance]': 'appearance()',\n '[attr.data-position]': 'position()',\n '[attr.data-expanded]': 'isExpanded()',\n '[hidden]': 'isMobile()',\n '(mouseenter)': 'onHoverEnter()',\n '(mouseleave)': 'onHoverLeave()',\n '(focusin)': 'onHoverEnter()',\n '(click)': 'onHostClick($event)',\n },\n template: `\n <div [class]=\"innerClasses()\">\n <ng-container [ngTemplateOutlet]=\"body\" />\n </div>\n\n <ng-template #body>\n @if (header()) {\n <div class=\"flex h-12 items-center gap-2 border-b border-border\">\n <ng-content select=\"[ui-sidebar-header]\" />\n </div>\n }\n <nav class=\"flex-1 overflow-y-auto overflow-x-hidden\">\n @for (item of resolvedItems(); track item.id) {\n <ui-nav-item [item]=\"item\" [compact]=\"isCompact()\" />\n }\n </nav>\n <div class=\"border-t border-border h-12\">\n <ng-content select=\"[ui-sidebar-footer]\" />\n </div>\n </ng-template>\n\n <ng-template #drawerTpl>\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"ariaLabel()\"\n class=\"flex h-full w-72 max-w-[85vw] flex-col border-border bg-background text-foreground shadow-xl\"\n [class.border-l]=\"position() === 'right'\"\n [class.border-r]=\"position() !== 'right'\">\n <ng-container [ngTemplateOutlet]=\"body\" />\n </div>\n </ng-template>\n `,\n})\nexport class SidebarComponent {\n private readonly nav = inject(NavigationService);\n private readonly bp = inject(BreakpointObserver);\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n private readonly focusTrapFactory = inject(FocusTrapFactory);\n private readonly doc = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly items = input<NavigationItem[]>([]);\n /** Registry key di `NavigationService`. Default `'main'`. */\n readonly navigationId = input<string>(DEFAULT_NAVIGATION_ID);\n readonly appearance = input<SidebarAppearance>('default');\n readonly position = input<SidebarPosition>('left');\n readonly ariaLabel = input<string>('Primary');\n readonly header = input<boolean>(true);\n readonly class = input<string>('');\n /** Auto switch ke CDK overlay drawer saat viewport `< md`. */\n readonly autoMobile = input<boolean>(true);\n /** Auto-register `items` ke `NavigationService` agar `activeTrail` bekerja. */\n readonly autoRegister = input<boolean>(true);\n\n /** Resolved items: input jika disediakan, fallback ke registry NavigationService. */\n protected readonly resolvedItems = computed(() => {\n const explicit = this.items();\n return explicit.length > 0 ? explicit : this.nav.getItems(this.navigationId())();\n });\n\n private readonly hovered = signal<boolean>(false);\n\n private readonly drawerTpl = viewChild.required<TemplateRef<unknown>>('drawerTpl');\n private drawerRef: OverlayRef | null = null;\n private focusTrap: FocusTrap | null = null;\n private previouslyFocused: HTMLElement | null = null;\n\n /** True saat viewport `< md` (767.98px). */\n protected readonly isMobileMedia = toSignal(this.bp.observe('(max-width: 767.98px)').pipe(map((s) => s.matches)), {\n initialValue: false,\n });\n\n protected readonly isMobile = computed(() => this.autoMobile() && this.isMobileMedia());\n\n protected readonly isExpanded = computed(() => this.appearance() === 'default' || this.hovered());\n protected readonly isCompact = computed(() => !this.isMobile() && this.appearance() === 'thin' && !this.hovered());\n\n constructor() {\n // Auto-register items ke service untuk active trail (hanya jika input non-kosong).\n effect(() => {\n const explicit = this.items();\n if (this.autoRegister() && explicit.length > 0) this.nav.registerItems(this.navigationId(), explicit);\n });\n\n // Kelola overlay drawer berdasarkan mobileOpen + isMobile.\n effect(() => {\n const open = this.nav.mobileOpen();\n const mobile = this.isMobile();\n if (mobile && open) this.openDrawer();\n else this.closeDrawer();\n });\n\n this.destroyRef.onDestroy(() => this.closeDrawer());\n }\n\n protected readonly hostClasses = computed(() => {\n const base = ['relative flex shrink-0 bg-background text-foreground', 'transition-[width] duration-200 ease-out'];\n const appearance = this.appearance();\n if (appearance === 'thin') base.push('w-16');\n else base.push('[width:17.5rem]');\n if (this.position() === 'right') base.push('border-l');\n else base.push('border-r');\n base.push('border-border');\n return [...base, this.class()].join(' ');\n });\n\n protected readonly innerClasses = computed(() => {\n const overlayActive = this.appearance() === 'thin' && this.hovered();\n const base = ['flex h-full flex-col transition-[width] duration-200 ease-out'];\n if (overlayActive) {\n base.push(\n 'absolute inset-y-0 z-30 bg-background shadow-xl [width:17.5rem]',\n this.position() === 'right' ? 'right-0 border-l border-border' : 'left-0 border-r border-border',\n );\n } else {\n base.push('w-full');\n }\n return base.join(' ');\n });\n\n protected onHoverEnter(): void {\n if (this.appearance() === 'thin' && !this.isMobile()) this.hovered.set(true);\n }\n\n protected onHoverLeave(): void {\n if (this.appearance() === 'thin') this.hovered.set(false);\n }\n\n /** Touch fallback: tap pada strip thin (ketika belum expanded) untuk expand. */\n protected onHostClick(event: MouseEvent): void {\n if (this.appearance() !== 'thin' || this.isMobile()) return;\n if (this.hovered()) return;\n const target = event.target as HTMLElement | null;\n // Biarkan klik pada control interaktif terus propagate (tidak intercept).\n if (target && target.closest('a,button,[role=\"menuitem\"]')) return;\n this.hovered.set(true);\n }\n\n private openDrawer(): void {\n if (this.drawerRef) return;\n const side = this.position();\n const pos = this.overlay.position().global().top('0');\n if (side === 'right') pos.right('0');\n else pos.left('0');\n\n this.drawerRef = this.overlay.create({\n positionStrategy: pos,\n height: '100vh',\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-dark-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.block(),\n panelClass: ['ui-sidebar-drawer'],\n });\n\n const portal = new TemplatePortal(this.drawerTpl(), this.vcr);\n const viewRef = this.drawerRef.attach(portal);\n viewRef.detectChanges();\n\n const root = this.drawerRef.overlayElement;\n this.focusTrap = this.focusTrapFactory.create(root);\n this.previouslyFocused = this.doc.activeElement as HTMLElement | null;\n queueMicrotask(() => this.focusTrap?.focusInitialElementWhenReady());\n\n this.drawerRef\n .backdropClick()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.nav.closeMobile());\n\n this.drawerRef\n .keydownEvents()\n .pipe(\n filter((e) => e.key === 'Escape'),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => this.nav.closeMobile());\n }\n\n private closeDrawer(): void {\n if (!this.drawerRef) return;\n this.focusTrap?.destroy();\n this.focusTrap = null;\n this.drawerRef.dispose();\n this.drawerRef = null;\n this.previouslyFocused?.focus?.();\n this.previouslyFocused = null;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n computed,\n effect,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { UiNavIconComponent } from '../shared/nav-icon.component';\nimport { UiNavItemComponent } from '../shared/nav-item.component';\nimport { NavigationService, DEFAULT_NAVIGATION_ID } from '../../core/services/navigation.service';\nimport type {\n NavigationBasicItem,\n NavigationCollapsableItem,\n NavigationGroupItem,\n NavigationItem,\n NavigationMegaItem,\n TopbarAppearance,\n} from '../../core/types/navigation.type';\n\ninterface ActiveOverlay {\n ref: OverlayRef;\n id: string;\n}\n\n/**\n * Horizontal navigation (topbar) — shadcn-styled.\n *\n * Variants:\n * - `default`: horizontal list; item `collapsable` buka dropdown\n * - `megamenu`: item `mega` buka panel full-width multi-kolom\n */\n@Component({\n selector: 'ui-topbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterLink, RouterLinkActive, UiNavIconComponent, UiNavItemComponent],\n host: {\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel()',\n '[class]': 'hostClasses()',\n '[attr.data-appearance]': 'appearance()',\n '[style.height]': 'topbarHeight',\n },\n template: `\n <div class=\"flex h-full w-full items-center gap-3 px-1\">\n <div data-ui-topbar-slot=\"start\" class=\"flex shrink-0 items-center gap-2\">\n @if (showHamburger()) {\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-9 items-center justify-center rounded-md text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring md:hidden\"\n [attr.aria-label]=\"hamburgerLabel()\"\n [attr.aria-expanded]=\"nav.mobileOpen()\"\n (click)=\"nav.toggleMobile()\">\n <ui-nav-icon name=\"menu\" [size]=\"18\" />\n </button>\n }\n <ng-content select=\"[ui-topbar-start]\" />\n </div>\n\n <div data-ui-topbar-slot=\"nav\" class=\"flex min-w-0 flex-1 items-center justify-center\">\n <ul\n class=\"flex min-w-0 flex-1 items-center justify-center gap-1\"\n role=\"menubar\"\n (keydown)=\"onMenubarKeydown($event)\">\n @for (item of resolvedItems(); track item.id) {\n <li role=\"none\" class=\"relative\">\n @switch (item.type) {\n @case ('basic') {\n @let basic = asBasic(item);\n <a\n role=\"menuitem\"\n class=\"ui-nav-text inline-flex items-center gap-2 rounded-md px-3 py-2 text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring aria-[current=page]:text-primary\"\n [routerLink]=\"basic.link\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n [class.text-primary]=\"rla.isActive\"\n [attr.aria-current]=\"rla.isActive ? 'page' : null\"\n [target]=\"basic.target ?? undefined\">\n @if (basic.icon) {\n <ui-nav-icon [name]=\"basic.icon\" [size]=\"18\" />\n }\n <span>{{ basic.title }}</span>\n </a>\n }\n @case ('collapsable') {\n @let col = asCollapsable(item);\n <button\n #trigger\n type=\"button\"\n role=\"menuitem\"\n class=\"ui-nav-text inline-flex items-center gap-2 rounded-md px-3 py-2 text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n [class.text-primary]=\"isItemActive(col.id)\"\n [attr.aria-expanded]=\"openId() === col.id\"\n [attr.aria-haspopup]=\"'menu'\"\n (click)=\"toggleDropdown(trigger, item)\"\n (mouseenter)=\"openDropdown(trigger, item)\">\n @if (col.icon) {\n <ui-nav-icon [name]=\"col.icon\" [size]=\"18\" />\n }\n <span>{{ col.title }}</span>\n <ui-nav-icon name=\"expand_more\" [size]=\"18\" />\n </button>\n }\n @case ('group') {\n @let group = asGroup(item);\n <button\n #trigger\n type=\"button\"\n role=\"menuitem\"\n class=\"ui-nav-text inline-flex items-center gap-2 rounded-md px-3 py-2 text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n [class.text-primary]=\"isItemActive(group.id)\"\n [attr.aria-expanded]=\"openId() === group.id\"\n [attr.aria-haspopup]=\"'menu'\"\n (click)=\"toggleDropdown(trigger, item)\"\n (mouseenter)=\"openDropdown(trigger, item)\">\n @if (group.icon) {\n <ui-nav-icon [name]=\"group.icon\" [size]=\"18\" />\n }\n <span>{{ group.title }}</span>\n <ui-nav-icon name=\"expand_more\" [size]=\"18\" />\n </button>\n }\n @case ('mega') {\n @let mega = asMega(item);\n <button\n #trigger\n type=\"button\"\n role=\"menuitem\"\n class=\"ui-nav-text inline-flex items-center gap-2 rounded-md px-3 py-2 text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n [class.text-primary]=\"isItemActive(mega.id)\"\n [attr.aria-expanded]=\"openId() === mega.id\"\n [attr.aria-haspopup]=\"'menu'\"\n (click)=\"toggleMega(trigger, item)\"\n (mouseenter)=\"openMega(trigger, item)\">\n @if (mega.icon) {\n <ui-nav-icon [name]=\"mega.icon\" [size]=\"18\" />\n }\n <span>{{ mega.title }}</span>\n <ui-nav-icon name=\"expand_more\" [size]=\"18\" />\n </button>\n }\n @default {\n <span class=\"ui-nav-heading px-3 py-2 text-muted-foreground\">\n {{ item.title }}\n </span>\n }\n }\n </li>\n }\n </ul>\n </div>\n\n <div data-ui-topbar-slot=\"end\" class=\"flex shrink-0 items-center justify-end gap-2\">\n <ng-content select=\"[ui-topbar-end]\" />\n </div>\n </div>\n\n <!-- Dropdown template -->\n <ng-template #dropdownTpl let-item>\n <div\n role=\"menu\"\n class=\"min-w-56 rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md\"\n (keydown)=\"onPanelKeydown($event)\">\n @for (child of item.children; track child.id) {\n <ui-nav-item [item]=\"child\" />\n }\n </div>\n </ng-template>\n\n <!-- Mega panel template -->\n <ng-template #megaTpl let-item>\n <div\n role=\"menu\"\n class=\"w-screen max-w-[min(90vw,72rem)] rounded-md border border-border bg-popover p-6 text-popover-foreground shadow-lg\"\n (keydown)=\"onPanelKeydown($event)\">\n <div [class]=\"megaGridClasses(item.columns)\">\n @for (col of item.children; track col.id) {\n <div>\n <div class=\"ui-nav-heading mb-2 text-muted-foreground\">\n {{ col.title }}\n </div>\n <div class=\"flex flex-col gap-0.5\">\n @for (leaf of col.children ?? []; track leaf.id) {\n <ui-nav-item [item]=\"leaf\" />\n }\n </div>\n </div>\n }\n </div>\n </div>\n </ng-template>\n `,\n})\nexport class TopbarComponent {\n protected readonly nav = inject(NavigationService);\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly items = input<NavigationItem[]>([]);\n /** Registry key di `NavigationService`. Default `'main'`. */\n readonly navigationId = input<string>(DEFAULT_NAVIGATION_ID);\n readonly appearance = input<TopbarAppearance>('default');\n readonly ariaLabel = input<string>('Primary');\n readonly class = input<string>('');\n /** Auto-register `items` ke `NavigationService` agar `activeTrail` bekerja. */\n readonly autoRegister = input<boolean>(true);\n /** Tampilkan hamburger di `< md` yang men-toggle mobile drawer sidebar. */\n readonly showHamburger = input<boolean>(true);\n readonly hamburgerLabel = input<string>('Open navigation');\n protected readonly topbarHeight = 'var(--layout-topbar-height)';\n\n /** Resolved items: input jika disediakan, fallback ke registry NavigationService. */\n protected readonly resolvedItems = computed(() => {\n const explicit = this.items();\n return explicit.length > 0 ? explicit : this.nav.getItems(this.navigationId())();\n });\n\n protected readonly openId = signal<string | null>(null);\n private active: ActiveOverlay | null = null;\n\n private readonly dropdownTpl = viewChild.required<TemplateRef<unknown>>('dropdownTpl');\n private readonly megaTpl = viewChild.required<TemplateRef<unknown>>('megaTpl');\n\n constructor() {\n effect(() => {\n const explicit = this.items();\n if (this.autoRegister() && explicit.length > 0) this.nav.registerItems(this.navigationId(), explicit);\n });\n this.destroyRef.onDestroy(() => this.closeAll());\n }\n\n protected readonly hostClasses = computed(() => {\n return [\n 'sticky top-0 z-20 flex w-full items-center border-b border-border bg-background text-foreground',\n this.class(),\n ].join(' ');\n });\n\n protected asBasic(i: NavigationItem): NavigationBasicItem {\n return i as NavigationBasicItem;\n }\n protected asCollapsable(i: NavigationItem): NavigationCollapsableItem {\n return i as NavigationCollapsableItem;\n }\n protected asGroup(i: NavigationItem): NavigationGroupItem {\n return i as NavigationGroupItem;\n }\n protected asMega(i: NavigationItem): NavigationMegaItem {\n return i as NavigationMegaItem;\n }\n\n protected isItemActive(id: string | undefined): boolean {\n return this.nav.isActive(id);\n }\n\n protected megaGridClasses(columns?: number): string {\n const c = Math.min(Math.max(columns ?? 4, 1), 6);\n const classes = ['grid', 'gap-6'];\n switch (c) {\n case 1:\n classes.push('grid-cols-1');\n break;\n case 2:\n classes.push('md:grid-cols-2');\n break;\n case 3:\n classes.push('md:grid-cols-3');\n break;\n case 5:\n classes.push('md:grid-cols-5');\n break;\n case 6:\n classes.push('md:grid-cols-6');\n break;\n default:\n classes.push('md:grid-cols-4');\n }\n return classes.join(' ');\n }\n\n protected toggleDropdown(trigger: HTMLElement, item: NavigationItem): void {\n if (this.openId() === item.id) this.closeAll();\n else this.openDropdown(trigger, item);\n }\n\n protected openDropdown(trigger: HTMLElement, item: NavigationItem): void {\n if (this.openId() === item.id) return;\n this.closeAll();\n this.attach(trigger, item, this.dropdownTpl(), /*fullWidth*/ false);\n }\n\n protected toggleMega(trigger: HTMLElement, item: NavigationItem): void {\n if (this.openId() === item.id) this.closeAll();\n else this.openMega(trigger, item);\n }\n\n protected openMega(trigger: HTMLElement, item: NavigationItem): void {\n if (this.openId() === item.id) return;\n this.closeAll();\n this.attach(trigger, item, this.megaTpl(), /*fullWidth*/ true);\n }\n\n private attach(trigger: HTMLElement, item: NavigationItem, tpl: TemplateRef<unknown>, fullWidth: boolean): void {\n const strategy = this.overlay\n .position()\n .flexibleConnectedTo(trigger)\n .withFlexibleDimensions(false)\n .withPush(false)\n .withPositions(\n fullWidth\n ? [\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -4,\n },\n ]\n : [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -4,\n },\n ],\n );\n\n const ref = this.overlay.create({\n positionStrategy: strategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n panelClass: fullWidth ? ['ui-mega-panel'] : ['ui-dropdown-panel'],\n width: fullWidth ? '100vw' : undefined,\n maxWidth: fullWidth ? '100vw' : undefined,\n });\n\n const portal = new TemplatePortal(tpl, this.vcr, { $implicit: item });\n ref.attach(portal);\n this.active = { ref, id: item.id ?? '' };\n this.openId.set(item.id ?? null);\n\n merge(ref.backdropClick(), ref.keydownEvents().pipe(filter((e) => e.key === 'Escape')))\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.closeAll();\n trigger.focus();\n });\n }\n\n protected closeAll(): void {\n if (this.active) {\n this.active.ref.dispose();\n this.active = null;\n }\n this.openId.set(null);\n }\n\n /** Menubar keyboard navigation: ArrowLeft/Right antar trigger, Home/End, ArrowDown fokus panel. */\n protected onMenubarKeydown(event: KeyboardEvent): void {\n const key = event.key;\n const root = this.host.nativeElement;\n const triggers = Array.from(root.querySelectorAll<HTMLElement>('ul[role=\"menubar\"] [role=\"menuitem\"]')).filter(\n (el) => !el.hasAttribute('disabled'),\n );\n if (triggers.length === 0) return;\n const currentIndex = triggers.indexOf(document.activeElement as HTMLElement);\n\n if (key === 'ArrowDown' && currentIndex !== -1) {\n event.preventDefault();\n // Jika open, fokus item pertama panel; jika belum, focus tetap (panel akan dibuka via click/mouseenter).\n queueMicrotask(() => this.focusFirstInPanel());\n return;\n }\n if (key !== 'ArrowLeft' && key !== 'ArrowRight' && key !== 'Home' && key !== 'End') return;\n let nextIndex = currentIndex;\n if (key === 'ArrowRight') nextIndex = (currentIndex + 1 + triggers.length) % triggers.length;\n else if (key === 'ArrowLeft') nextIndex = (currentIndex - 1 + triggers.length) % triggers.length;\n else if (key === 'Home') nextIndex = 0;\n else if (key === 'End') nextIndex = triggers.length - 1;\n if (nextIndex !== currentIndex && triggers[nextIndex]) {\n event.preventDefault();\n triggers[nextIndex].focus();\n }\n }\n\n /** Arrow-key navigation dalam dropdown/mega panel. */\n protected onPanelKeydown(event: KeyboardEvent): void {\n const key = event.key;\n if (\n key !== 'ArrowDown' &&\n key !== 'ArrowUp' &&\n key !== 'ArrowLeft' &&\n key !== 'ArrowRight' &&\n key !== 'Home' &&\n key !== 'End'\n )\n return;\n const panel = this.active?.ref.overlayElement;\n if (!panel) return;\n const items = this.collectPanelFocusables(panel);\n if (items.length === 0) return;\n const currentIndex = items.indexOf(document.activeElement as HTMLElement);\n let nextIndex = currentIndex;\n if (key === 'ArrowDown' || key === 'ArrowRight') nextIndex = (currentIndex + 1 + items.length) % items.length;\n else if (key === 'ArrowUp' || key === 'ArrowLeft') nextIndex = (currentIndex - 1 + items.length) % items.length;\n else if (key === 'Home') nextIndex = 0;\n else if (key === 'End') nextIndex = items.length - 1;\n if (nextIndex !== currentIndex && items[nextIndex]) {\n event.preventDefault();\n items[nextIndex].focus();\n }\n }\n\n private collectPanelFocusables(root: HTMLElement): HTMLElement[] {\n return Array.from(\n root.querySelectorAll<HTMLElement>('a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'),\n ).filter((el) => el.offsetParent !== null || el.getClientRects().length > 0);\n }\n\n private focusFirstInPanel(): void {\n const panel = this.active?.ref.overlayElement;\n if (!panel) return;\n const items = this.collectPanelFocusables(panel);\n items[0]?.focus();\n }\n}\n","import { NavigationItem } from '../core/types/navigation.type';\n\nexport const DemoNavigationData: NavigationItem[] = [\n {\n id: 'documentation',\n title: 'Documentation',\n subtitle: 'Guides and getting started resources',\n type: 'group',\n icon: 'menu_book',\n children: [\n {\n id: 'documentation-introduction',\n title: 'Introduction',\n type: 'basic',\n icon: 'menu_book',\n link: '/docs/introduction',\n },\n {\n id: 'documentation-installation',\n title: 'Installation',\n type: 'basic',\n icon: 'download',\n link: '/docs/installation',\n },\n {\n id: 'documentation-getting-started',\n title: 'Getting started',\n type: 'basic',\n icon: 'rocket_launch',\n link: '/docs/getting-started',\n },\n {\n id: 'documentation-upgrade-guide',\n title: 'Upgrade Guide',\n type: 'basic',\n icon: 'arrow_circle_up',\n link: '/docs/upgrade-guide',\n },\n {\n id: 'documentation-changelog',\n title: 'Changelog',\n type: 'basic',\n icon: 'history',\n link: '/docs/changelog',\n },\n {\n id: 'documentation-icon-lucide',\n title: 'Lucide Icons',\n type: 'basic',\n icon: 'star',\n link: '/lucide-icons',\n badge: {\n title: 'Demo',\n classes: 'ml-2 px-2 py-0.5 rounded-full text-xs bg-blue-500 text-white',\n },\n },\n ],\n },\n {\n id: 'user-interface',\n title: 'User Interface',\n subtitle: 'Components and design elements',\n type: 'group',\n icon: 'dashboard',\n children: [\n {\n id: 'user-interface-material-components',\n title: 'Material Components',\n type: 'collapsable',\n icon: 'deployed_code',\n children: [\n {\n id: 'user-interface-material-components-inputs-forms',\n title: 'Inputs & Forms',\n type: 'collapsable',\n icon: 'input',\n children: [\n {\n id: 'user-interface-material-components-inputs-forms-autocomplete',\n title: 'Autocomplete',\n type: 'basic',\n icon: 'search',\n link: '/ui/material/autocomplete',\n },\n {\n id: 'user-interface-material-components-inputs-forms-checkbox',\n title: 'Checkbox',\n type: 'basic',\n icon: 'check_box',\n link: '/ui/material/checkbox',\n },\n {\n id: 'user-interface-material-components-inputs-forms-datepicker',\n title: 'Datepicker',\n type: 'basic',\n icon: 'calendar_today',\n link: '/ui/material/datepicker',\n },\n {\n id: 'user-interface-material-components-inputs-forms-form-field',\n title: 'Form field',\n type: 'basic',\n icon: 'text_fields',\n link: '/ui/material/form-field',\n },\n {\n id: 'user-interface-material-components-inputs-forms-input',\n title: 'Input',\n type: 'basic',\n icon: 'text_fields',\n link: '/ui/material/input',\n },\n {\n id: 'user-interface-material-components-inputs-forms-radio-button',\n title: 'Radio button',\n type: 'basic',\n icon: 'radio_button_checked',\n link: '/ui/material/radio',\n },\n {\n id: 'user-interface-material-components-inputs-forms-select',\n title: 'Select',\n type: 'basic',\n icon: 'expand_more',\n link: '/ui/material/select',\n },\n {\n id: 'user-interface-material-components-inputs-forms-slider',\n title: 'Slider',\n type: 'basic',\n icon: 'tune',\n link: '/ui/material/slider',\n },\n {\n id: 'user-interface-material-components-inputs-forms-slide-toggle',\n title: 'Slide toggle',\n type: 'basic',\n icon: 'toggle_on',\n link: '/ui/material/slide-toggle',\n },\n ],\n },\n {\n id: 'user-interface-material-components-buttons-actions',\n title: 'Buttons & Actions',\n type: 'collapsable',\n icon: 'ads_click',\n children: [\n {\n id: 'user-interface-material-components-buttons-actions-button',\n title: 'Button',\n type: 'basic',\n icon: 'crop_square',\n link: '/ui/material/button',\n },\n {\n id: 'user-interface-material-components-buttons-actions-button-toggle',\n title: 'Button toggle',\n type: 'basic',\n icon: 'view_column',\n link: '/ui/material/button-toggle',\n },\n {\n id: 'user-interface-material-components-buttons-actions-chips',\n title: 'Chips',\n type: 'basic',\n icon: 'label',\n link: '/ui/material/chips',\n badge: {\n title: 'New',\n classes: 'ml-2 px-2 py-0.5 rounded-full text-xs bg-green-500 text-white',\n },\n },\n {\n id: 'user-interface-material-components-buttons-actions-menu',\n title: 'Menu',\n type: 'basic',\n icon: 'menu',\n link: '/ui/material/menu',\n },\n {\n id: 'user-interface-material-components-buttons-actions-ripples',\n title: 'Ripples',\n type: 'basic',\n icon: 'waves',\n link: '/ui/material/ripples',\n },\n ],\n },\n {\n id: 'user-interface-material-components-layout-containers',\n title: 'Layout & Containers',\n type: 'collapsable',\n icon: 'dashboard',\n children: [\n {\n id: 'user-interface-material-components-layout-containers-card',\n title: 'Card',\n type: 'basic',\n icon: 'credit_card',\n link: '/ui/material/card',\n },\n {\n id: 'user-interface-material-components-layout-containers-divider',\n title: 'Divider',\n type: 'basic',\n icon: 'remove',\n link: '/ui/material/divider',\n },\n {\n id: 'user-interface-material-components-layout-containers-expansion-panel',\n title: 'Expansion Panel',\n type: 'basic',\n icon: 'expand_more',\n link: '/ui/material/expansion',\n },\n {\n id: 'user-interface-material-components-layout-containers-grid-list',\n title: 'Grid list',\n type: 'basic',\n icon: 'grid_view',\n link: '/ui/material/grid-list',\n },\n {\n id: 'user-interface-material-components-layout-containers-list',\n title: 'List',\n type: 'basic',\n icon: 'list',\n link: '/ui/material/list',\n },\n {\n id: 'user-interface-material-components-layout-containers-sidenav',\n title: 'Sidenav',\n type: 'basic',\n icon: 'view_sidebar',\n link: '/ui/material/sidenav',\n },\n {\n id: 'user-interface-material-components-layout-containers-tabs',\n title: 'Tabs',\n type: 'basic',\n icon: 'tab',\n link: '/ui/material/tabs',\n },\n {\n id: 'user-interface-material-components-layout-containers-toolbar',\n title: 'Toolbar',\n type: 'basic',\n icon: 'build',\n link: '/ui/material/toolbar',\n },\n ],\n },\n {\n id: 'user-interface-material-components-data-display',\n title: 'Data & Display',\n type: 'collapsable',\n icon: 'bar_chart',\n children: [\n {\n id: 'user-interface-material-components-data-display-badge',\n title: 'Badge',\n type: 'basic',\n icon: 'verified',\n link: '/ui/material/badge',\n },\n {\n id: 'user-interface-material-components-data-display-icon',\n title: 'Icon',\n type: 'basic',\n icon: 'star',\n link: '/ui/material/icon',\n },\n {\n id: 'user-interface-material-components-data-display-paginator',\n title: 'Paginator',\n type: 'basic',\n icon: 'first_page',\n link: '/ui/material/paginator',\n },\n {\n id: 'user-interface-material-components-data-display-progress-bar',\n title: 'Progress bar',\n type: 'basic',\n icon: 'hourglass_empty',\n link: '/ui/material/progress-bar',\n },\n {\n id: 'user-interface-material-components-data-display-progress-spinner',\n title: 'Progress spinner',\n type: 'basic',\n icon: 'progress_activity',\n link: '/ui/material/progress-spinner',\n },\n {\n id: 'user-interface-material-components-data-display-sort',\n title: 'Sort header',\n type: 'basic',\n icon: 'swap_vert',\n link: '/ui/material/sort',\n },\n {\n id: 'user-interface-material-components-data-display-table',\n title: 'Table',\n type: 'basic',\n icon: 'table_chart',\n link: '/ui/material/table',\n },\n {\n id: 'user-interface-material-components-data-display-tree',\n title: 'Tree',\n type: 'basic',\n icon: 'hub',\n link: '/ui/material/tree',\n },\n ],\n },\n {\n id: 'user-interface-material-components-overlays-modals',\n title: 'Overlays & Modals',\n type: 'collapsable',\n icon: 'layers',\n children: [\n {\n id: 'user-interface-material-components-overlays-modals-bottom-sheet',\n title: 'Bottom Sheet',\n type: 'basic',\n icon: 'south',\n link: '/ui/material/bottom-sheet',\n },\n {\n id: 'user-interface-material-components-overlays-modals-dialog',\n title: 'Dialog',\n type: 'basic',\n icon: 'chat',\n link: '/ui/material/dialog',\n },\n {\n id: 'user-interface-material-components-overlays-modals-snack-bar',\n title: 'Snack-bar',\n type: 'basic',\n icon: 'notifications',\n link: '/ui/material/snack-bar',\n },\n {\n id: 'user-interface-material-components-overlays-modals-tooltip',\n title: 'Tooltip',\n type: 'basic',\n icon: 'help',\n link: '/ui/material/tooltip',\n },\n ],\n },\n {\n id: 'user-interface-material-components-navigation-stepper',\n title: 'Navigation & Steps',\n type: 'collapsable',\n icon: 'account_tree',\n children: [\n {\n id: 'user-interface-material-components-navigation-stepper-stepper',\n title: 'Stepper',\n type: 'basic',\n icon: 'account_tree',\n link: '/ui/material/stepper',\n },\n ],\n },\n ],\n },\n {\n id: 'user-interface-angular-cdk',\n title: 'Angular CDK',\n type: 'collapsable',\n icon: 'widgets',\n children: [\n {\n id: 'user-interface-angular-cdk-accessibility-navigation',\n title: 'Accessibility & Navigation',\n type: 'collapsable',\n icon: 'accessibility',\n children: [\n {\n id: 'user-interface-angular-cdk-accessibility-navigation-a11y',\n title: 'Accessibility',\n type: 'basic',\n icon: 'accessibility',\n link: '/ui/cdk/a11y',\n },\n {\n id: 'user-interface-angular-cdk-accessibility-navigation-focus-trap',\n title: 'Focus Trap',\n type: 'basic',\n icon: 'center_focus_strong',\n link: '/ui/cdk/focus-trap',\n },\n {\n id: 'user-interface-angular-cdk-accessibility-navigation-live-announcer',\n title: 'Live Announcer',\n type: 'basic',\n icon: 'campaign',\n link: '/ui/cdk/live-announcer',\n },\n {\n id: 'user-interface-angular-cdk-accessibility-navigation-listbox',\n title: 'Listbox',\n type: 'basic',\n icon: 'list',\n link: '/ui/cdk/listbox',\n },\n {\n id: 'user-interface-angular-cdk-accessibility-navigation-menu-cdk',\n title: 'Menu',\n type: 'basic',\n icon: 'menu',\n link: '/ui/cdk/menu',\n },\n ],\n },\n {\n id: 'user-interface-angular-cdk-layout-positioning',\n title: 'Layout & Positioning',\n type: 'collapsable',\n icon: 'dashboard',\n children: [\n {\n id: 'user-interface-angular-cdk-layout-positioning-layout',\n title: 'Layout',\n type: 'basic',\n icon: 'dashboard',\n link: '/ui/cdk/layout',\n },\n {\n id: 'user-interface-angular-cdk-layout-positioning-overlay',\n title: 'Overlay',\n type: 'basic',\n icon: 'layers',\n link: '/ui/cdk/overlay',\n },\n {\n id: 'user-interface-angular-cdk-layout-positioning-portal',\n title: 'Portal',\n type: 'basic',\n icon: 'radio_button_checked',\n link: '/ui/cdk/portal',\n },\n {\n id: 'user-interface-angular-cdk-layout-positioning-scrolling',\n title: 'Scrolling',\n type: 'basic',\n icon: 'unfold_more',\n link: '/ui/cdk/scrolling',\n },\n {\n id: 'user-interface-angular-cdk-layout-positioning-virtual-scrolling',\n title: 'Virtual Scrolling',\n type: 'basic',\n icon: 'view_agenda',\n link: '/ui/cdk/virtual-scrolling',\n },\n ],\n },\n {\n id: 'user-interface-angular-cdk-interaction-behavior',\n title: 'Interaction & Behavior',\n type: 'collapsable',\n icon: 'pan_tool',\n children: [\n {\n id: 'user-interface-angular-cdk-interaction-behavior-drag-drop',\n title: 'Drag and Drop',\n type: 'basic',\n icon: 'open_with',\n link: '/ui/cdk/drag-drop',\n },\n {\n id: 'user-interface-angular-cdk-interaction-behavior-observers',\n title: 'Observers',\n type: 'basic',\n icon: 'visibility',\n link: '/ui/cdk/observers',\n },\n {\n id: 'user-interface-angular-cdk-interaction-behavior-platform',\n title: 'Platform',\n type: 'basic',\n icon: 'devices',\n link: '/ui/cdk/platform',\n },\n {\n id: 'user-interface-angular-cdk-interaction-behavior-stepper-cdk',\n title: 'Stepper',\n type: 'basic',\n icon: 'account_tree',\n link: '/ui/cdk/stepper',\n },\n ],\n },\n {\n id: 'user-interface-angular-cdk-forms-data',\n title: 'Forms & Data',\n type: 'collapsable',\n icon: 'storage',\n children: [\n {\n id: 'user-interface-angular-cdk-forms-data-accordion',\n title: 'Accordion',\n type: 'basic',\n icon: 'expand_more',\n link: '/ui/cdk/accordion',\n },\n {\n id: 'user-interface-angular-cdk-forms-data-table-cdk',\n title: 'Table',\n type: 'basic',\n icon: 'table_chart',\n link: '/ui/cdk/table',\n },\n {\n id: 'user-interface-angular-cdk-forms-data-tree-cdk',\n title: 'Tree',\n type: 'basic',\n icon: 'hub',\n link: '/ui/cdk/tree',\n },\n ],\n },\n {\n id: 'user-interface-angular-cdk-utilities-helpers',\n title: 'Utilities & Helpers',\n type: 'collapsable',\n icon: 'build',\n children: [\n {\n id: 'user-interface-angular-cdk-utilities-helpers-bidi',\n title: 'Bidirectionality',\n type: 'basic',\n icon: 'swap_horiz',\n link: '/ui/cdk/bidi',\n },\n {\n id: 'user-interface-angular-cdk-utilities-helpers-clipboard',\n title: 'Clipboard',\n type: 'basic',\n icon: 'content_paste',\n link: '/ui/cdk/clipboard',\n },\n {\n id: 'user-interface-angular-cdk-utilities-helpers-coercion',\n title: 'Coercion',\n type: 'basic',\n icon: 'shuffle',\n link: '/ui/cdk/coercion',\n },\n {\n id: 'user-interface-angular-cdk-utilities-helpers-collections',\n title: 'Collections',\n type: 'basic',\n icon: 'folder',\n link: '/ui/cdk/collections',\n },\n {\n id: 'user-interface-angular-cdk-utilities-helpers-keycodes',\n title: 'Keycodes',\n type: 'basic',\n icon: 'keyboard',\n link: '/ui/cdk/keycodes',\n },\n ],\n },\n {\n id: 'user-interface-angular-cdk-testing-tools',\n title: 'Testing Tools',\n type: 'collapsable',\n icon: 'bug_report',\n children: [\n {\n id: 'user-interface-angular-cdk-testing-tools-component-harnesses',\n title: 'Component Harnesses',\n type: 'basic',\n icon: 'science',\n link: '/ui/cdk/testing',\n },\n {\n id: 'user-interface-angular-cdk-testing-tools-test-harnesses',\n title: 'Test Harnesses',\n type: 'basic',\n icon: 'science',\n link: '/ui/cdk/test-harnesses',\n },\n ],\n },\n {\n id: 'user-interface-angular-cdk-advanced-feature',\n title: 'Advanced feature',\n type: 'collapsable',\n icon: 'settings',\n children: [\n {\n id: 'user-interface-angular-cdk-advanced-feature-dialog-cdk',\n title: 'Dialog',\n type: 'basic',\n icon: 'chat',\n link: '/ui/cdk/dialog',\n },\n {\n id: 'user-interface-angular-cdk-advanced-feature-text-field',\n title: 'Text Field',\n type: 'basic',\n icon: 'text_fields',\n link: '/ui/cdk/text-field',\n },\n ],\n },\n ],\n },\n {\n id: 'user-interface-tailwind',\n title: 'Tailwind CSS',\n type: 'collapsable',\n icon: 'air',\n children: [\n {\n id: 'user-interface-tailwind-css-heading',\n title: 'Heading',\n type: 'basic',\n icon: 'text_fields',\n link: '/ui/tailwind/heading',\n },\n {\n id: 'user-interface-tailwind-data-display',\n title: 'Data Display',\n type: 'basic',\n icon: 'bar_chart',\n link: '/ui/tailwind/data-display',\n },\n {\n id: 'user-interface-tailwind-list',\n title: 'List',\n type: 'basic',\n icon: 'list',\n link: '/ui/tailwind/list',\n },\n {\n id: 'user-interface-tailwind-form',\n title: 'Form',\n type: 'basic',\n icon: 'dynamic_form',\n link: '/ui/tailwind/form',\n },\n {\n id: 'user-interface-tailwind-feedback',\n title: 'Feedback',\n type: 'basic',\n icon: 'report',\n link: '/ui/tailwind/feedback',\n },\n ],\n },\n ],\n },\n {\n id: 'feature',\n title: 'Features',\n subtitle: 'Advanced functionality and customization options',\n type: 'group',\n icon: 'settings',\n children: [\n {\n id: 'feature-theme',\n title: 'Themes',\n type: 'collapsable',\n icon: 'palette',\n children: [\n {\n id: 'feature-theme-dark-mode',\n title: 'Dark Mode',\n type: 'basic',\n icon: 'dark_mode',\n link: '/feature/theme/dark-mode',\n },\n {\n id: 'feature-theme-color',\n title: 'Color Schemes',\n type: 'basic',\n icon: 'palette',\n link: '/feature/theme/color-schemes',\n badge: {\n title: 'Beta',\n classes: 'ml-2 px-2 py-0.5 rounded-full text-xs bg-yellow-500 text-white',\n },\n },\n {\n id: 'feature-layout',\n title: 'Layout',\n type: 'collapsable',\n icon: 'dashboard',\n children: [\n {\n id: 'feature-layout-apps',\n title: 'Application',\n type: 'collapsable',\n icon: 'web',\n children: [\n {\n id: 'feature-layout-apps-vertical',\n title: 'Vertical',\n type: 'basic',\n icon: 'view_sidebar',\n link: '/feature/layout/application/vertical',\n },\n {\n id: 'feature-layout-apps-horizontal',\n title: 'Horizontal',\n type: 'basic',\n icon: 'view_column',\n link: '/feature/layout/application/horizontal',\n },\n ],\n },\n {\n id: 'feature-layout-page',\n title: 'Pages',\n type: 'collapsable',\n icon: 'description',\n children: [\n {\n id: 'feature-layout-page-page',\n title: 'Page',\n type: 'basic',\n icon: 'description',\n link: '/feature/layout/page/page',\n },\n {\n id: 'feature-layout-page-content',\n title: 'Content',\n type: 'basic',\n icon: 'description',\n link: '/feature/layout/page/content',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n id: 'feature-navigation',\n title: 'Navigation',\n type: 'collapsable',\n icon: 'navigation',\n children: [\n {\n id: 'feature-navigation-horizontal-navigation',\n title: 'Horizontal ',\n type: 'basic',\n icon: 'view_column',\n link: '/feature/navigation/horizontal',\n },\n {\n id: 'feature-navigation-vertical-navigation',\n title: 'Vertical ',\n type: 'collapsable',\n icon: 'view_agenda',\n children: [\n {\n id: 'feature-navigation-vertical-navigation-default',\n title: 'Default',\n type: 'basic',\n icon: 'view_agenda',\n link: '/feature/navigation/vertical/default',\n },\n {\n id: 'feature-navigation-vertical-navigation-thin',\n title: 'Thin',\n type: 'basic',\n icon: 'view_agenda',\n link: '/feature/navigation/vertical/thin',\n },\n {\n id: 'feature-navigation-vertical-navigation-compact',\n title: 'Compact',\n type: 'basic',\n icon: 'view_agenda',\n link: '/feature/navigation/vertical/compact',\n },\n {\n id: 'feature-navigation-vertical-navigation-dense',\n title: 'Dense',\n type: 'basic',\n icon: 'view_agenda',\n link: '/feature/navigation/vertical/dense',\n },\n ],\n },\n ],\n },\n ],\n },\n];\n","/*\n * Public API Surface of @ojiepermana/angular/navigation\n */\n\n// Core\nexport * from './src/lib/core/types/navigation.type';\nexport * from './src/lib/core/services/navigation.service';\n\n// Shared\nexport * from './src/lib/components/shared/nav-icon.component';\nexport * from './src/lib/components/shared/nav-item.component';\n\n// Sidebar & Topbar\nexport * from './src/lib/components/sidebar/sidebar.component';\nexport * from './src/lib/components/topbar/topbar.component';\n\n// Demo data\nexport * from './src/lib/data/demo-navigation.data';\n\nexport const NAVIGATION_VERSION = '0.0.1';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ojiepermana-angular-navigation.mjs","sources":["../../../projects/angular/navigation/src/lib/core/services/navigation.service.ts","../../../projects/angular/navigation/src/lib/components/shared/nav-icon.component.ts","../../../projects/angular/navigation/src/lib/core/utils/cn.util.ts","../../../projects/angular/navigation/src/lib/components/shared/nav-item.component.ts","../../../projects/angular/navigation/src/lib/components/sidebar/sidebar.component.ts","../../../projects/angular/navigation/src/lib/components/topbar/topbar.component.ts","../../../projects/angular/navigation/src/lib/data/demo-navigation.data.ts","../../../projects/angular/navigation/public-api.ts","../../../projects/angular/navigation/ojiepermana-angular-navigation.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { Injectable, computed, effect, inject, signal } from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { filter } from 'rxjs/operators';\nimport { DestroyRef } from '@angular/core';\nimport type { NavigationItem, SidebarAppearance } from '../types/navigation.type';\n\n/** Default registry key used when no id is specified. */\nexport const DEFAULT_NAVIGATION_ID = 'main';\nconst SIDEBAR_COLLAPSE_STORAGE_KEY = 'sidebar-collapse';\nconst LEGACY_SIDEBAR_APPEARANCE_STORAGE_KEY = 'sidebar-appearance';\n\nfunction parseSidebarCollapsed(value: string | null | undefined): boolean | null {\n if (value === 'true') return true;\n if (value === 'false') return false;\n return null;\n}\n\n/**\n * Signal-based global state untuk navigation (sidebar/topbar).\n *\n * Items disimpan dalam registry ber-key. Key default adalah `'main'`.\n * Komponen `sidebar` / `topbar` memilih registry via input `navigationId`.\n */\n@Injectable({ providedIn: 'root' })\nexport class NavigationService {\n private readonly doc = inject(DOCUMENT);\n private readonly router = inject(Router);\n private readonly destroyRef = inject(DestroyRef);\n private readonly persistedSidebarCollapsed = this.readPersistedSidebarCollapsed();\n\n /** Internal version counter — incremented on every registry mutation. */\n private readonly _version = signal(0);\n\n /** Internal map of registered navigation trees. */\n private readonly _registry = new Map<string, NavigationItem[]>();\n private readonly _collapsed = signal(this.persistedSidebarCollapsed ?? false);\n private readonly _hasStoredSidebarCollapse = signal(this.persistedSidebarCollapsed !== null);\n\n /**\n * Backward-compatible accessor — returns items for the default (`'main'`) key.\n * Prefer `getItems(id)` when working with named registries.\n */\n readonly items = computed(() => this.getItems(DEFAULT_NAVIGATION_ID)());\n\n /** Sidebar appearance preference (`default` or `thin`). */\n readonly sidebarAppearance = computed<SidebarAppearance>(() => (this._collapsed() ? 'thin' : 'default'));\n readonly hasStoredSidebarCollapse = this._hasStoredSidebarCollapse.asReadonly();\n\n /** Sidebar collapsed (default ↔ thin) toggle untuk desktop. */\n readonly collapsed = this._collapsed.asReadonly();\n\n /** Sheet drawer terbuka di mobile. */\n readonly mobileOpen = signal<boolean>(false);\n\n /** Set id grup / collapsable yang sedang terbuka. */\n readonly openGroups = signal<ReadonlySet<string>>(new Set<string>());\n\n /** URL aktif terakhir. Update otomatis dari Router `NavigationEnd`. */\n readonly activeUrl = signal<string>(this.router.url);\n\n /** Trail id item yang sedang match dengan URL aktif (across ALL registries). */\n readonly activeTrail = computed<ReadonlySet<string>>(() => {\n this._version(); // track changes\n const url = this.activeUrl();\n const trail = new Set<string>();\n const walk = (list: readonly NavigationItem[], ancestors: string[]): boolean => {\n let matched = false;\n for (const item of list) {\n const id = item.id;\n const link = 'link' in item ? item.link : undefined;\n let selfMatch = false;\n if (link) {\n selfMatch = url === link || url.startsWith(link + '/') || url.startsWith(link + '?');\n }\n const children = 'children' in item ? (item.children ?? []) : [];\n const nextAncestors = id ? [...ancestors, id] : ancestors;\n const childMatch = children.length > 0 && walk(children, nextAncestors);\n if (selfMatch || childMatch) {\n if (id) trail.add(id);\n for (const a of ancestors) trail.add(a);\n matched = true;\n }\n }\n return matched;\n };\n for (const items of this._registry.values()) {\n walk(items, []);\n }\n return trail;\n });\n\n constructor() {\n effect(() => {\n if (!this._hasStoredSidebarCollapse()) {\n return;\n }\n\n this.persistSidebarCollapsed(this._collapsed());\n });\n\n this.router.events\n .pipe(\n filter((e): e is NavigationEnd => e instanceof NavigationEnd),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((e) => this.activeUrl.set(e.urlAfterRedirects));\n }\n\n /**\n * Register items di registry.\n *\n * Overload:\n * - `registerItems(items)` → key `'main'`\n * - `registerItems(id, items)` → key spesifik\n */\n registerItems(items: NavigationItem[]): void;\n registerItems(id: string, items: NavigationItem[]): void;\n registerItems(idOrItems: string | NavigationItem[], maybeItems?: NavigationItem[]): void {\n const [id, items] = typeof idOrItems === 'string' ? [idOrItems, maybeItems!] : [DEFAULT_NAVIGATION_ID, idOrItems];\n this._registry.set(id, items);\n this._version.update((v) => v + 1);\n }\n\n /** Remove a named registry entry. */\n removeItems(id: string): void {\n this._registry.delete(id);\n this._version.update((v) => v + 1);\n }\n\n /**\n * Computed yang mengembalikan items untuk key tertentu.\n * Reactive terhadap perubahan registry.\n */\n getItems(id: string): () => readonly NavigationItem[] {\n return computed(() => {\n this._version(); // track changes\n return this._registry.get(id) ?? [];\n });\n }\n\n setSidebarAppearance(value: SidebarAppearance): void {\n this.setCollapsed(value === 'thin');\n }\n\n toggleSidebarAppearance(currentAppearance: SidebarAppearance = this.sidebarAppearance()): void {\n this.setCollapsed(currentAppearance !== 'thin');\n }\n\n /** Toggle sidebar collapsed (default ↔ thin). */\n toggleCollapsed(): void {\n this.setCollapsed(!this._collapsed());\n }\n\n setCollapsed(value: boolean): void {\n this._collapsed.set(value);\n this._hasStoredSidebarCollapse.set(true);\n }\n\n openMobile(): void {\n this.mobileOpen.set(true);\n }\n\n closeMobile(): void {\n this.mobileOpen.set(false);\n }\n\n toggleMobile(): void {\n this.mobileOpen.update((v) => !v);\n }\n\n isGroupOpen(id: string): boolean {\n return this.openGroups().has(id);\n }\n\n toggleGroup(id: string): void {\n const next = new Set(this.openGroups());\n if (next.has(id)) next.delete(id);\n else next.add(id);\n this.openGroups.set(next);\n }\n\n setGroupOpen(id: string, open: boolean): void {\n const next = new Set(this.openGroups());\n if (open) next.add(id);\n else next.delete(id);\n this.openGroups.set(next);\n }\n\n /** Apakah id termasuk dalam active trail saat ini. */\n isActive(id: string | undefined): boolean {\n return !!id && this.activeTrail().has(id);\n }\n\n private readPersistedSidebarCollapsed(): boolean | null {\n try {\n const storage = this.doc.defaultView?.localStorage;\n const collapsed = parseSidebarCollapsed(storage?.getItem(SIDEBAR_COLLAPSE_STORAGE_KEY));\n if (collapsed !== null) {\n return collapsed;\n }\n\n const legacyAppearance = storage?.getItem(LEGACY_SIDEBAR_APPEARANCE_STORAGE_KEY);\n if (legacyAppearance === 'thin') {\n return true;\n }\n if (legacyAppearance === 'default') {\n return false;\n }\n\n return null;\n } catch {\n return null;\n }\n }\n\n private persistSidebarCollapsed(value: boolean): void {\n try {\n const storage = this.doc.defaultView?.localStorage;\n storage?.setItem(SIDEBAR_COLLAPSE_STORAGE_KEY, String(value));\n storage?.removeItem(LEGACY_SIDEBAR_APPEARANCE_STORAGE_KEY);\n } catch {\n /* ignore */\n }\n }\n}\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, PLATFORM_ID, computed, inject, input } from '@angular/core';\n\nconst MATERIAL_SYMBOLS_FONT_ATTR = 'data-ui-nav-icon-font';\nconst MATERIAL_SYMBOLS_FONT_ID = 'material-symbols-outlined';\nconst MATERIAL_SYMBOLS_FONT_HREF =\n 'https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0';\n\n/**\n * Material Symbols icon renderer.\n * Menyuntikkan stylesheet font sekali saat dipakai agar consumer tidak perlu\n * menambahkan `<link>` manual di `index.html`.\n */\n@Component({\n selector: 'ui-nav-icon',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[style.font-size.px]': 'size()',\n '[style.font-variation-settings]': 'fontVariationSettings',\n 'aria-hidden': 'true',\n translate: 'no',\n },\n template: `{{ name() }}`,\n})\nexport class UiNavIconComponent {\n private readonly doc = inject(DOCUMENT);\n private readonly platformId = inject(PLATFORM_ID);\n\n readonly name = input<string>('');\n readonly class = input<string>('');\n readonly size = input<number | null>(null);\n\n protected readonly fontVariationSettings = '\"FILL\" 0, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24';\n\n constructor() {\n this.ensureFontStylesheet();\n }\n\n protected readonly classes = computed(() => {\n const base = 'material-symbols-outlined inline-flex items-center justify-center leading-none select-none';\n const extra = this.class();\n return extra ? `${base} ${extra}` : base;\n });\n\n private ensureFontStylesheet(): void {\n if (!isPlatformBrowser(this.platformId) || !this.doc.head) return;\n\n const existing = this.doc.head.querySelector(`link[${MATERIAL_SYMBOLS_FONT_ATTR}=\"${MATERIAL_SYMBOLS_FONT_ID}\"]`);\n if (existing) return;\n\n const link = this.doc.createElement('link');\n link.rel = 'stylesheet';\n link.href = MATERIAL_SYMBOLS_FONT_HREF;\n link.setAttribute(MATERIAL_SYMBOLS_FONT_ATTR, MATERIAL_SYMBOLS_FONT_ID);\n this.doc.head.appendChild(link);\n }\n}\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/** Concatenate and dedupe Tailwind class names. */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { UiNavIconComponent } from './nav-icon.component';\nimport { NavigationService } from '../../core/services/navigation.service';\nimport { cn } from '../../core/utils/cn.util';\nimport type {\n NavigationAsideItem,\n NavigationBasicItem,\n NavigationCollapsableItem,\n NavigationGroupItem,\n NavigationItem,\n NavigationMegaItem,\n} from '../../core/types/navigation.type';\n\n/**\n * Recursive navigation item renderer (vertical context).\n *\n * Menerima item polymorphic dan delegasi ke template sesuai `type`.\n * Mega dirender sebagai group biasa saat muncul di konteks vertical.\n */\n@Component({\n selector: 'ui-nav-item',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterLink, RouterLinkActive, MatTooltip, UiNavIconComponent],\n template: `\n @switch (type()) {\n @case ('divider') {\n <hr class=\"my-2 border-t border-border\" role=\"separator\" />\n }\n @case ('spacer') {\n <div class=\"flex-1\"></div>\n }\n @case ('group') {\n <div role=\"group\" [attr.aria-labelledby]=\"headingId()\">\n @if (!compact()) {\n <div class=\"sticky top-0 z-10 p-3 text-muted-foreground backdrop-blur-3xl bg-transparent\">\n <div [id]=\"headingId()\" [class]=\"cn('ui-nav-heading text-muted-foreground', item().classes?.title)\">\n {{ item().title }}\n </div>\n </div>\n }\n <div class=\"flex flex-col gap-0.5\">\n @for (child of groupItem().children; track child.id) {\n <ui-nav-item [item]=\"child\" [level]=\"level() + 1\" [compact]=\"compact()\" />\n }\n </div>\n </div>\n }\n @case ('collapsable') {\n @let id = collapsableItem().id ?? '';\n @let open = isGroupOpen();\n <button\n type=\"button\"\n [class]=\"\n cn(\n 'ui-nav-text group/ni flex w-full items-center gap-3 rounded-full p-3 text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n isTrailActive() && 'text-primary',\n item().classes?.wrapper\n )\n \"\n [attr.aria-expanded]=\"open\"\n [attr.aria-controls]=\"id + '-panel'\"\n [disabled]=\"collapsableItem().disabled || null\"\n [matTooltip]=\"compact() ? (collapsableItem().title ?? '') : ''\"\n matTooltipPosition=\"right\"\n [matTooltipDisabled]=\"!compact()\"\n (click)=\"toggleGroup()\">\n @if (collapsableItem().icon) {\n <span\n [class]=\"\n cn(\n 'inline-flex shrink-0 items-center justify-center',\n open && 'h-7 w-7 rounded-full border border-brand'\n )\n \">\n <ui-nav-icon [name]=\"collapsableItem().icon!\" [size]=\"18\" [class]=\"item().classes?.icon ?? ''\" />\n </span>\n }\n @if (!compact()) {\n <span [class]=\"cn('flex-1 truncate text-left', item().classes?.title)\">\n {{ collapsableItem().title }}\n </span>\n @if (collapsableItem().badge; as badge) {\n <span [class]=\"badge.classes ?? 'ui-nav-badge ml-auto'\">{{ badge.title }}</span>\n }\n <ui-nav-icon\n [name]=\"'chevron_right'\"\n [size]=\"18\"\n [class]=\"cn('transition-transform duration-200', open && 'rotate-90')\" />\n }\n </button>\n @if (!compact() && open) {\n <div\n [id]=\"id + '-panel'\"\n role=\"region\"\n class=\"relative ml-6.5 mt-0.5 flex flex-col gap-0.5 pl-3 before:absolute before:bottom-0 before:left-0 before:-top-3.5 before:w-px before:bg-border before:content-['']\">\n @for (child of collapsableItem().children; track child.id) {\n <ui-nav-item [item]=\"child\" [level]=\"level() + 1\" [compact]=\"false\" />\n }\n </div>\n }\n }\n @case ('mega') {\n <!-- Mega direndahkan ke group saat berada di sidebar vertical. -->\n <div class=\"mt-4 py-3 first:mt-0\" role=\"group\">\n @if (!compact()) {\n <div class=\"ui-nav-heading sticky top-0 z-10 bg-background px-3 pb-1 text-muted-foreground\">\n {{ item().title }}\n </div>\n }\n <div class=\"flex flex-col gap-0.5\">\n @for (child of megaItem().children; track child.id) {\n <ui-nav-item [item]=\"child\" [level]=\"level() + 1\" [compact]=\"compact()\" />\n }\n </div>\n </div>\n }\n @case ('aside') {\n <a\n [class]=\"\n cn(\n 'ui-nav-text flex items-center gap-3 rounded-md px-3 py-2 text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring aria-[current=page]:text-primary',\n item().classes?.wrapper\n )\n \"\n routerLinkActive=\"text-primary\"\n #rla=\"routerLinkActive\"\n [attr.aria-current]=\"rla.isActive ? 'page' : null\"\n [routerLink]=\"asideItem().link\"\n [queryParams]=\"asideItem().queryParams\"\n [fragment]=\"asideItem().fragment ?? undefined\"\n [target]=\"asideItem().target ?? undefined\"\n [matTooltip]=\"compact() ? (asideItem().title ?? '') : ''\"\n matTooltipPosition=\"right\"\n [matTooltipDisabled]=\"!compact()\">\n @if (asideItem().icon) {\n <ui-nav-icon [name]=\"asideItem().icon!\" [size]=\"18\" />\n }\n @if (!compact()) {\n <span class=\"flex-1 truncate\">{{ asideItem().title }}</span>\n }\n </a>\n }\n @default {\n <!-- basic -->\n @if (basicItem().link && !basicItem().externalLink) {\n <a\n [class]=\"\n cn(\n 'ui-nav-text flex items-center gap-3 rounded-md px-3 py-2 text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring aria-[current=page]:text-primary aria-disabled:pointer-events-none aria-disabled:opacity-50',\n item().classes?.wrapper\n )\n \"\n routerLinkActive=\"text-primary\"\n #rla=\"routerLinkActive\"\n [routerLinkActiveOptions]=\"\n basicItem().isActiveMatchOptions ?? (basicItem().exactMatch ? exactMatch : inexactMatch)\n \"\n [attr.aria-current]=\"rla.isActive ? 'page' : null\"\n [attr.aria-disabled]=\"basicItem().disabled || null\"\n [matTooltip]=\"compact() ? (basicItem().title ?? '') : ''\"\n matTooltipPosition=\"right\"\n [matTooltipDisabled]=\"!compact()\"\n [routerLink]=\"basicItem().link\"\n [queryParams]=\"basicItem().queryParams\"\n [queryParamsHandling]=\"basicItem().queryParamsHandling ?? null\"\n [fragment]=\"basicItem().fragment ?? undefined\"\n [preserveFragment]=\"basicItem().preserveFragment ?? false\"\n [target]=\"basicItem().target ?? undefined\"\n (click)=\"runAction()\">\n @if (basicItem().icon) {\n <ui-nav-icon [name]=\"basicItem().icon!\" [size]=\"18\" [class]=\"item().classes?.icon ?? ''\" />\n }\n @if (!compact()) {\n <span [class]=\"cn('flex-1 truncate', item().classes?.title)\">{{ basicItem().title }}</span>\n @if (basicItem().badge; as badge) {\n <span [class]=\"badge.classes ?? 'ui-nav-badge ml-auto'\">{{ badge.title }}</span>\n }\n }\n </a>\n } @else if (basicItem().link && basicItem().externalLink) {\n <a\n [class]=\"\n cn(\n 'ui-nav-text flex items-center gap-3 rounded-md px-3 py-2 text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n item().classes?.wrapper\n )\n \"\n [attr.href]=\"basicItem().link\"\n [attr.target]=\"basicItem().target ?? '_blank'\"\n rel=\"noopener noreferrer\"\n [matTooltip]=\"compact() ? (basicItem().title ?? '') : ''\"\n matTooltipPosition=\"right\"\n [matTooltipDisabled]=\"!compact()\">\n @if (basicItem().icon) {\n <ui-nav-icon [name]=\"basicItem().icon!\" [size]=\"18\" />\n }\n @if (!compact()) {\n <span class=\"flex-1 truncate\">{{ basicItem().title }}</span>\n }\n </a>\n } @else {\n <button\n type=\"button\"\n [class]=\"\n cn(\n 'ui-nav-text flex w-full items-center gap-3 rounded-md px-3 py-2 text-left text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n item().classes?.wrapper\n )\n \"\n [disabled]=\"basicItem().disabled || null\"\n [matTooltip]=\"compact() ? (basicItem().title ?? '') : ''\"\n matTooltipPosition=\"right\"\n [matTooltipDisabled]=\"!compact()\"\n (click)=\"runAction()\">\n @if (basicItem().icon) {\n <ui-nav-icon [name]=\"basicItem().icon!\" [size]=\"18\" />\n }\n @if (!compact()) {\n <span class=\"flex-1 truncate\">{{ basicItem().title }}</span>\n }\n </button>\n }\n }\n }\n `,\n})\nexport class UiNavItemComponent {\n private readonly nav = inject(NavigationService);\n protected readonly cn = cn;\n\n readonly item = input.required<NavigationItem>();\n readonly level = input<number>(0);\n /** Compact / icon-only rendering (sidebar `thin`). */\n readonly compact = input<boolean>(false);\n\n protected readonly exactMatch = {\n exact: true,\n paths: 'exact',\n queryParams: 'exact',\n fragment: 'exact',\n matrixParams: 'exact',\n } as const;\n protected readonly inexactMatch = {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n } as const;\n\n protected readonly type = computed(() => this.item().type);\n\n protected readonly groupItem = computed(() => this.item() as NavigationGroupItem);\n protected readonly collapsableItem = computed(() => this.item() as NavigationCollapsableItem);\n protected readonly megaItem = computed(() => this.item() as NavigationMegaItem);\n protected readonly asideItem = computed(() => this.item() as NavigationAsideItem);\n protected readonly basicItem = computed(() => this.item() as NavigationBasicItem);\n\n protected readonly headingId = computed(() => {\n const id = this.item().id ?? '';\n return `nav-group-${id}`;\n });\n\n protected isGroupOpen(): boolean {\n const id = this.item().id;\n if (!id) return false;\n // auto-open when any descendant is active\n if (this.nav.isActive(id) && 'children' in this.item()) return true;\n return this.nav.isGroupOpen(id);\n }\n\n protected isTrailActive(): boolean {\n return this.nav.isActive(this.item().id);\n }\n\n protected toggleGroup(): void {\n const id = this.item().id;\n if (id) this.nav.toggleGroup(id);\n }\n\n protected runAction(): void {\n const item = this.item();\n if ('action' in item && typeof item.action === 'function') {\n item.action(item);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n TemplateRef,\n ViewContainerRef,\n computed,\n effect,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { filter, map } from 'rxjs/operators';\nimport { UiNavIconComponent } from '../shared/nav-icon.component';\nimport { UiNavItemComponent } from '../shared/nav-item.component';\nimport { NavigationService, DEFAULT_NAVIGATION_ID } from '../../core/services/navigation.service';\nimport type { NavigationItem, SidebarAppearance, SidebarPosition } from '../../core/types/navigation.type';\n\n/**\n * Vertical navigation (sidebar) — shadcn-styled.\n *\n * Variants:\n * - `default`: 17.5rem, label + icon\n * - `thin`: 4rem icon-only; hover memunculkan overlay expand (tidak push konten)\n *\n * Mobile (`< md`): saat `autoMobile=true` (default), host desktop disembunyikan\n * dan konten dirender lewat CDK Overlay drawer dengan focus trap. State buka\n * dikontrol lewat `NavigationService.mobileOpen`.\n */\n@Component({\n selector: 'sidebar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, UiNavIconComponent, UiNavItemComponent],\n host: {\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel()',\n '[class]': 'hostClasses()',\n '[attr.data-appearance]': 'resolvedAppearance()',\n '[attr.data-position]': 'position()',\n '[attr.data-expanded]': 'isExpanded()',\n '[hidden]': 'isMobile()',\n '(mouseenter)': 'onHoverEnter()',\n '(mouseleave)': 'onHoverLeave()',\n '(focusin)': 'onHoverEnter()',\n '(click)': 'onHostClick($event)',\n },\n template: `\n <div [class]=\"innerClasses()\">\n <ng-container [ngTemplateOutlet]=\"body\" />\n </div>\n\n <ng-template #body>\n @if (header()) {\n <div [class]=\"headerClasses()\">\n <div [class]=\"headerSlotClasses()\">\n <ng-content select=\"[sidebar-header]\" />\n </div>\n @if (!isMobile() && !isCompact()) {\n <button\n type=\"button\"\n data-sidebar-toggle\n class=\"ml-auto mr-2 inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\"\n [attr.aria-label]=\"toggleButtonLabel()\"\n [attr.title]=\"toggleButtonLabel()\"\n [attr.aria-pressed]=\"resolvedAppearance() === 'thin'\"\n (click)=\"toggleAppearance($event)\">\n <ui-nav-icon name=\"view_sidebar\" [size]=\"18\" class=\"text-current\" />\n </button>\n }\n </div>\n }\n <nav [class]=\"navClasses()\">\n @for (item of resolvedItems(); track item.id) {\n <ui-nav-item [item]=\"item\" [compact]=\"isCompact()\" />\n }\n </nav>\n <div [class]=\"footerClasses()\">\n <div [class]=\"footerSlotClasses()\">\n <ng-content select=\"[sidebar-footer]\" />\n </div>\n </div>\n </ng-template>\n\n <ng-template #drawerTpl>\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"ariaLabel()\"\n class=\"flex h-full w-72 max-w-[85vw] flex-col text-foreground shadow-xl\"\n [class.border-l]=\"position() === 'right'\"\n [class.border-brand]=\"position() === 'right'\">\n <ng-container [ngTemplateOutlet]=\"body\" />\n </div>\n </ng-template>\n `,\n})\nexport class SidebarComponent {\n private readonly nav = inject(NavigationService);\n private readonly bp = inject(BreakpointObserver);\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n private readonly focusTrapFactory = inject(FocusTrapFactory);\n private readonly doc = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly items = input<NavigationItem[]>([]);\n /** Registry key di `NavigationService`. Default `'main'`. */\n readonly navigationId = input<string>(DEFAULT_NAVIGATION_ID);\n readonly appearance = input<SidebarAppearance>('default');\n readonly position = input<SidebarPosition>('left');\n readonly ariaLabel = input<string>('Primary');\n readonly header = input<boolean>(true);\n readonly class = input<string>('');\n /** Auto switch ke CDK overlay drawer saat viewport `< md`. */\n readonly autoMobile = input<boolean>(true);\n /** Auto-register `items` ke `NavigationService` agar `activeTrail` bekerja. */\n readonly autoRegister = input<boolean>(true);\n\n /** Resolved items: input jika disediakan, fallback ke registry NavigationService. */\n protected readonly resolvedItems = computed(() => {\n const explicit = this.items();\n return explicit.length > 0 ? explicit : this.nav.getItems(this.navigationId())();\n });\n\n private readonly hovered = signal<boolean>(false);\n private readonly suppressHoverUntilLeave = signal<boolean>(false);\n\n private readonly drawerTpl = viewChild.required<TemplateRef<unknown>>('drawerTpl');\n private drawerRef: OverlayRef | null = null;\n private focusTrap: FocusTrap | null = null;\n private previouslyFocused: HTMLElement | null = null;\n\n /** True saat viewport `< md` (767.98px). */\n protected readonly isMobileMedia = toSignal(this.bp.observe('(max-width: 767.98px)').pipe(map((s) => s.matches)), {\n initialValue: false,\n });\n\n protected readonly isMobile = computed(() => this.autoMobile() && this.isMobileMedia());\n protected readonly resolvedCollapsed = computed(() => {\n if (this.nav.hasStoredSidebarCollapse()) {\n return this.nav.collapsed();\n }\n\n return this.appearance() === 'thin';\n });\n protected readonly resolvedAppearance = computed<SidebarAppearance>(() => {\n return this.resolvedCollapsed() ? 'thin' : 'default';\n });\n protected readonly hoverActive = computed(() => this.hovered() && !this.suppressHoverUntilLeave());\n protected readonly isExpanded = computed(() => !this.resolvedCollapsed() || this.hoverActive());\n protected readonly isCompact = computed(() => !this.isMobile() && this.resolvedCollapsed() && !this.hoverActive());\n protected readonly toggleButtonLabel = computed(() =>\n this.resolvedCollapsed() ? 'Expand sidebar' : 'Collapse sidebar',\n );\n\n constructor() {\n // Auto-register items ke service untuk active trail (hanya jika input non-kosong).\n effect(() => {\n const explicit = this.items();\n if (this.autoRegister() && explicit.length > 0) this.nav.registerItems(this.navigationId(), explicit);\n });\n\n // Kelola overlay drawer berdasarkan mobileOpen + isMobile.\n effect(() => {\n const open = this.nav.mobileOpen();\n const mobile = this.isMobile();\n if (mobile && open) this.openDrawer();\n else this.closeDrawer();\n });\n\n this.destroyRef.onDestroy(() => this.closeDrawer());\n }\n\n protected readonly hostClasses = computed(() => {\n const base = ['relative flex shrink-0 text-foreground', 'transition-[width] duration-200 ease-out'];\n if (this.resolvedCollapsed()) base.push('w-16');\n else base.push('[width:17.5rem]');\n if (this.position() === 'right') base.push('border-l', 'border-brand');\n return [...base, this.class()].join(' ');\n });\n\n protected readonly headerClasses = computed(() => {\n const base = ['flex h-12 items-center gap-2 border-b border-brand'];\n if (this.isCompact()) {\n base.push('justify-center px-2');\n }\n return base.join(' ');\n });\n\n protected readonly headerSlotClasses = computed(() => {\n const base = ['min-w-0'];\n if (this.isCompact()) {\n base.push(\n 'flex flex-1 items-center justify-center overflow-hidden',\n '[&>[sidebar-header]>*]:mx-auto',\n '[&>[sidebar-header]>*]:max-w-full',\n '[&>[sidebar-header]>*]:shrink-0',\n );\n } else {\n base.push('flex min-w-0 flex-1 items-center');\n }\n return base.join(' ');\n });\n\n protected readonly navClasses = computed(() => {\n const base = ['flex-1 overflow-y-auto overflow-x-hidden'];\n if (this.isCompact()) {\n base.push(\n 'px-2',\n '[&_.ui-nav-text]:mx-auto',\n '[&_.ui-nav-text]:w-10',\n '[&_.ui-nav-text]:justify-center',\n '[&_.ui-nav-text]:px-0',\n );\n }\n return base.join(' ');\n });\n\n protected readonly footerClasses = computed(() => {\n const base = ['h-12 border-t border-brand'];\n if (this.isCompact()) {\n base.push('flex items-center justify-center px-2');\n }\n return base.join(' ');\n });\n\n protected readonly footerSlotClasses = computed(() => {\n const base = ['h-full'];\n if (this.isCompact()) {\n base.push(\n 'flex h-full items-center justify-center overflow-hidden',\n '[&>[sidebar-footer]>*]:mx-auto',\n '[&>[sidebar-footer]>*]:w-auto',\n '[&>[sidebar-footer]>*]:max-w-full',\n '[&>[sidebar-footer]>*]:justify-center',\n '[&>[sidebar-footer]>*]:gap-0',\n '[&>[sidebar-footer]>*]:px-0',\n '[&>[sidebar-footer]>*>*:first-child]:mx-auto',\n '[&>[sidebar-footer]>*>*:nth-child(n+2)]:hidden',\n );\n } else {\n base.push('w-full');\n }\n return base.join(' ');\n });\n\n protected readonly innerClasses = computed(() => {\n const overlayActive = this.resolvedCollapsed() && this.hoverActive();\n const base = ['flex h-full flex-col transition-[width] duration-200 ease-out'];\n if (this.resolvedCollapsed()) {\n base.push('bg-background');\n }\n if (overlayActive) {\n base.push(\n 'absolute inset-y-0 z-30 shadow-xl [width:17.5rem]',\n this.position() === 'right' ? 'right-0 border-l border-brand' : 'left-0 border-r border-brand',\n );\n } else {\n base.push('w-full');\n }\n return base.join(' ');\n });\n\n protected onHoverEnter(): void {\n if (!this.resolvedCollapsed() || this.isMobile() || this.suppressHoverUntilLeave()) return;\n this.hovered.set(true);\n }\n\n protected onHoverLeave(): void {\n this.suppressHoverUntilLeave.set(false);\n if (this.resolvedCollapsed()) this.hovered.set(false);\n }\n\n protected toggleAppearance(event: MouseEvent): void {\n event.stopPropagation();\n const nextCollapsed = !this.resolvedCollapsed();\n this.nav.setCollapsed(nextCollapsed);\n this.hovered.set(false);\n this.suppressHoverUntilLeave.set(nextCollapsed);\n }\n\n /** Touch fallback: tap pada strip thin (ketika belum expanded) untuk expand. */\n protected onHostClick(event: MouseEvent): void {\n if (!this.resolvedCollapsed() || this.isMobile()) return;\n if (this.hovered()) return;\n const target = event.target as HTMLElement | null;\n // Biarkan klik pada control interaktif terus propagate (tidak intercept).\n if (target && target.closest('a,button,[role=\"menuitem\"]')) return;\n this.hovered.set(true);\n }\n\n private openDrawer(): void {\n if (this.drawerRef) return;\n const side = this.position();\n const pos = this.overlay.position().global().top('0');\n if (side === 'right') pos.right('0');\n else pos.left('0');\n\n this.drawerRef = this.overlay.create({\n positionStrategy: pos,\n height: '100vh',\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-dark-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.block(),\n panelClass: ['sidebar-drawer'],\n });\n\n const portal = new TemplatePortal(this.drawerTpl(), this.vcr);\n const viewRef = this.drawerRef.attach(portal);\n viewRef.detectChanges();\n\n const root = this.drawerRef.overlayElement;\n this.focusTrap = this.focusTrapFactory.create(root);\n this.previouslyFocused = this.doc.activeElement as HTMLElement | null;\n queueMicrotask(() => this.focusTrap?.focusInitialElementWhenReady());\n\n this.drawerRef\n .backdropClick()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.nav.closeMobile());\n\n this.drawerRef\n .keydownEvents()\n .pipe(\n filter((e) => e.key === 'Escape'),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => this.nav.closeMobile());\n }\n\n private closeDrawer(): void {\n if (!this.drawerRef) return;\n this.focusTrap?.destroy();\n this.focusTrap = null;\n this.drawerRef.dispose();\n this.drawerRef = null;\n this.previouslyFocused?.focus?.();\n this.previouslyFocused = null;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n TemplateRef,\n ViewContainerRef,\n computed,\n effect,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { UiNavIconComponent } from '../shared/nav-icon.component';\nimport { UiNavItemComponent } from '../shared/nav-item.component';\nimport { NavigationService, DEFAULT_NAVIGATION_ID } from '../../core/services/navigation.service';\nimport type {\n NavigationBasicItem,\n NavigationCollapsableItem,\n NavigationGroupItem,\n NavigationItem,\n TopbarAppearance,\n} from '../../core/types/navigation.type';\n\ninterface ActiveOverlay {\n ref: OverlayRef;\n id: string;\n}\n\n/**\n * Horizontal navigation (topbar) — shadcn-styled.\n */\n@Component({\n selector: 'topbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterLink, RouterLinkActive, UiNavIconComponent, UiNavItemComponent],\n host: {\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel()',\n '[class]': 'hostClasses()',\n '[attr.data-appearance]': 'appearance()',\n },\n template: `\n <div class=\"flex h-full w-full items-center gap-3 px-1\">\n <div data-topbar-slot=\"start\" class=\"flex shrink-0 items-center gap-2\">\n @if (showHamburger()) {\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-9 items-center justify-center rounded-md text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring md:hidden\"\n [attr.aria-label]=\"hamburgerLabel()\"\n [attr.aria-expanded]=\"nav.mobileOpen()\"\n (click)=\"nav.toggleMobile()\">\n <ui-nav-icon name=\"menu\" [size]=\"18\" />\n </button>\n }\n <ng-content select=\"[topbar-start]\" />\n </div>\n\n <div data-topbar-slot=\"nav\" class=\"flex min-w-0 flex-1 items-center justify-center\">\n <ul\n class=\"flex min-w-0 flex-1 items-center justify-center gap-1\"\n role=\"menubar\"\n (keydown)=\"onMenubarKeydown($event)\">\n @for (item of resolvedItems(); track item.id) {\n <li role=\"none\" class=\"relative\">\n @switch (item.type) {\n @case ('basic') {\n @let basic = asBasic(item);\n <a\n role=\"menuitem\"\n class=\"ui-nav-text inline-flex items-center gap-2 rounded-md px-3 py-2 text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring aria-[current=page]:text-primary\"\n [routerLink]=\"basic.link\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n [class.text-primary]=\"rla.isActive\"\n [attr.aria-current]=\"rla.isActive ? 'page' : null\"\n [target]=\"basic.target ?? undefined\">\n @if (basic.icon) {\n <ui-nav-icon [name]=\"basic.icon\" [size]=\"18\" />\n }\n <span>{{ basic.title }}</span>\n </a>\n }\n @case ('collapsable') {\n @let col = asCollapsable(item);\n <button\n #trigger\n type=\"button\"\n role=\"menuitem\"\n class=\"ui-nav-text inline-flex items-center gap-2 rounded-md px-3 py-2 text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n [class.text-primary]=\"isItemActive(col.id)\"\n [attr.aria-expanded]=\"openId() === col.id\"\n [attr.aria-haspopup]=\"'menu'\"\n (click)=\"toggleDropdown(trigger, item)\"\n (mouseenter)=\"openDropdown(trigger, item)\">\n @if (col.icon) {\n <ui-nav-icon [name]=\"col.icon\" [size]=\"18\" />\n }\n <span>{{ col.title }}</span>\n <ui-nav-icon name=\"expand_more\" [size]=\"18\" />\n </button>\n }\n @case ('group') {\n @let group = asGroup(item);\n <button\n #trigger\n type=\"button\"\n role=\"menuitem\"\n class=\"ui-nav-text inline-flex items-center gap-2 rounded-md px-3 py-2 text-foreground/80 hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n [class.text-primary]=\"isItemActive(group.id)\"\n [attr.aria-expanded]=\"openId() === group.id\"\n [attr.aria-haspopup]=\"'menu'\"\n (click)=\"toggleDropdown(trigger, item)\"\n (mouseenter)=\"openDropdown(trigger, item)\">\n @if (group.icon) {\n <ui-nav-icon [name]=\"group.icon\" [size]=\"18\" />\n }\n <span>{{ group.title }}</span>\n <ui-nav-icon name=\"expand_more\" [size]=\"18\" />\n </button>\n }\n @default {\n <span class=\"ui-nav-heading px-3 py-2 text-muted-foreground\">\n {{ item.title }}\n </span>\n }\n }\n </li>\n }\n </ul>\n </div>\n\n <div data-topbar-slot=\"end\" [class]=\"endSlotClasses()\">\n <ng-content select=\"[topbar-end]\" />\n </div>\n </div>\n\n <!-- Dropdown template -->\n <ng-template #dropdownTpl let-item>\n <div role=\"menu\" class=\"min-w-56 border border-brand bg-background/95 p-1\" (keydown)=\"onPanelKeydown($event)\">\n @for (child of item.children; track child.id) {\n <ui-nav-item [item]=\"child\" />\n }\n </div>\n </ng-template>\n `,\n})\nexport class TopbarComponent {\n protected readonly nav = inject(NavigationService);\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly items = input<NavigationItem[]>([]);\n /** Registry key di `NavigationService`. Default `'main'`. */\n readonly navigationId = input<string>(DEFAULT_NAVIGATION_ID);\n readonly appearance = input<TopbarAppearance>('default');\n readonly ariaLabel = input<string>('Primary');\n readonly class = input<string>('');\n /** Auto-register `items` ke `NavigationService` agar `activeTrail` bekerja. */\n readonly autoRegister = input<boolean>(true);\n /** Tampilkan hamburger di `< md` yang men-toggle mobile drawer sidebar. */\n readonly showHamburger = input<boolean>(true);\n readonly hamburgerLabel = input<string>('Open navigation');\n\n /** Resolved items: input jika disediakan, fallback ke registry NavigationService. */\n protected readonly resolvedItems = computed(() => {\n const explicit = this.items();\n return explicit.length > 0 ? explicit : this.nav.getItems(this.navigationId())();\n });\n\n protected readonly openId = signal<string | null>(null);\n private active: ActiveOverlay | null = null;\n\n private readonly dropdownTpl = viewChild.required<TemplateRef<unknown>>('dropdownTpl');\n\n constructor() {\n effect(() => {\n const explicit = this.items();\n if (this.autoRegister() && explicit.length > 0) this.nav.registerItems(this.navigationId(), explicit);\n });\n this.destroyRef.onDestroy(() => this.closeAll());\n }\n\n protected readonly hostClasses = computed(() => {\n return ['sticky top-0 z-20 flex h-11 w-full items-center', this.class()].join(' ');\n });\n\n protected readonly endSlotClasses = computed(() => {\n const base = ['flex h-full shrink-0 items-center justify-end gap-2 overflow-hidden'];\n base.push(\n '[&>[topbar-end]]:flex',\n '[&>[topbar-end]]:min-w-0',\n '[&>[topbar-end]]:max-w-full',\n '[&>[topbar-end]]:items-center',\n '[&>[topbar-end]]:justify-end',\n '[&>[topbar-end]]:gap-2',\n '[&>[topbar-end]>*]:w-auto',\n '[&>[topbar-end]>*]:max-w-full',\n '[&>[topbar-end]>*]:justify-end',\n '[&>[topbar-end]>*]:gap-0',\n '[&>[topbar-end]>*]:px-2',\n '[&>[topbar-end]>*>*:first-child]:ml-auto',\n '[&>[topbar-end]>*>*:nth-child(n+2)]:hidden',\n );\n return base.join(' ');\n });\n\n protected asBasic(i: NavigationItem): NavigationBasicItem {\n return i as NavigationBasicItem;\n }\n protected asCollapsable(i: NavigationItem): NavigationCollapsableItem {\n return i as NavigationCollapsableItem;\n }\n protected asGroup(i: NavigationItem): NavigationGroupItem {\n return i as NavigationGroupItem;\n }\n\n protected isItemActive(id: string | undefined): boolean {\n return this.nav.isActive(id);\n }\n\n protected toggleDropdown(trigger: HTMLElement, item: NavigationItem): void {\n if (this.openId() === item.id) this.closeAll();\n else this.openDropdown(trigger, item);\n }\n\n protected openDropdown(trigger: HTMLElement, item: NavigationItem): void {\n if (this.openId() === item.id) return;\n this.closeAll();\n this.attach(trigger, item, this.dropdownTpl());\n }\n\n private attach(trigger: HTMLElement, item: NavigationItem, tpl: TemplateRef<unknown>): void {\n const strategy = this.overlay\n .position()\n .flexibleConnectedTo(trigger)\n .withFlexibleDimensions(false)\n .withPush(false)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -4,\n },\n ]);\n\n const ref = this.overlay.create({\n positionStrategy: strategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n panelClass: ['ui-dropdown-panel'],\n });\n\n const portal = new TemplatePortal(tpl, this.vcr, { $implicit: item });\n ref.attach(portal);\n this.active = { ref, id: item.id ?? '' };\n this.openId.set(item.id ?? null);\n\n merge(ref.backdropClick(), ref.keydownEvents().pipe(filter((e) => e.key === 'Escape')))\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.closeAll();\n trigger.focus();\n });\n }\n\n protected closeAll(): void {\n if (this.active) {\n this.active.ref.dispose();\n this.active = null;\n }\n this.openId.set(null);\n }\n\n /** Menubar keyboard navigation: ArrowLeft/Right antar trigger, Home/End, ArrowDown fokus panel. */\n protected onMenubarKeydown(event: KeyboardEvent): void {\n const key = event.key;\n const root = this.host.nativeElement;\n const triggers = Array.from(root.querySelectorAll<HTMLElement>('ul[role=\"menubar\"] [role=\"menuitem\"]')).filter(\n (el) => !el.hasAttribute('disabled'),\n );\n if (triggers.length === 0) return;\n const currentIndex = triggers.indexOf(document.activeElement as HTMLElement);\n\n if (key === 'ArrowDown' && currentIndex !== -1) {\n event.preventDefault();\n // Jika open, fokus item pertama panel; jika belum, focus tetap (panel akan dibuka via click/mouseenter).\n queueMicrotask(() => this.focusFirstInPanel());\n return;\n }\n if (key !== 'ArrowLeft' && key !== 'ArrowRight' && key !== 'Home' && key !== 'End') return;\n let nextIndex = currentIndex;\n if (key === 'ArrowRight') nextIndex = (currentIndex + 1 + triggers.length) % triggers.length;\n else if (key === 'ArrowLeft') nextIndex = (currentIndex - 1 + triggers.length) % triggers.length;\n else if (key === 'Home') nextIndex = 0;\n else if (key === 'End') nextIndex = triggers.length - 1;\n if (nextIndex !== currentIndex && triggers[nextIndex]) {\n event.preventDefault();\n triggers[nextIndex].focus();\n }\n }\n\n /** Arrow-key navigation dalam dropdown panel. */\n protected onPanelKeydown(event: KeyboardEvent): void {\n const key = event.key;\n if (\n key !== 'ArrowDown' &&\n key !== 'ArrowUp' &&\n key !== 'ArrowLeft' &&\n key !== 'ArrowRight' &&\n key !== 'Home' &&\n key !== 'End'\n )\n return;\n const panel = this.active?.ref.overlayElement;\n if (!panel) return;\n const items = this.collectPanelFocusables(panel);\n if (items.length === 0) return;\n const currentIndex = items.indexOf(document.activeElement as HTMLElement);\n let nextIndex = currentIndex;\n if (key === 'ArrowDown' || key === 'ArrowRight') nextIndex = (currentIndex + 1 + items.length) % items.length;\n else if (key === 'ArrowUp' || key === 'ArrowLeft') nextIndex = (currentIndex - 1 + items.length) % items.length;\n else if (key === 'Home') nextIndex = 0;\n else if (key === 'End') nextIndex = items.length - 1;\n if (nextIndex !== currentIndex && items[nextIndex]) {\n event.preventDefault();\n items[nextIndex].focus();\n }\n }\n\n private collectPanelFocusables(root: HTMLElement): HTMLElement[] {\n return Array.from(\n root.querySelectorAll<HTMLElement>('a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'),\n ).filter((el) => el.offsetParent !== null || el.getClientRects().length > 0);\n }\n\n private focusFirstInPanel(): void {\n const panel = this.active?.ref.overlayElement;\n if (!panel) return;\n const items = this.collectPanelFocusables(panel);\n items[0]?.focus();\n }\n}\n","import { NavigationItem } from '../core/types/navigation.type';\n\nexport const DemoNavigationData: NavigationItem[] = [\n {\n id: 'documentation',\n title: 'Documentation',\n subtitle: 'Guides and getting started resources',\n type: 'group',\n icon: 'menu_book',\n children: [\n {\n id: 'documentation-introduction',\n title: 'Introduction',\n type: 'basic',\n icon: 'menu_book',\n link: '/docs/introduction',\n },\n {\n id: 'documentation-installation',\n title: 'Installation',\n type: 'basic',\n icon: 'download',\n link: '/docs/installation',\n },\n {\n id: 'documentation-getting-started',\n title: 'Getting started',\n type: 'basic',\n icon: 'rocket_launch',\n link: '/docs/getting-started',\n },\n {\n id: 'documentation-upgrade-guide',\n title: 'Upgrade Guide',\n type: 'basic',\n icon: 'arrow_circle_up',\n link: '/docs/upgrade-guide',\n },\n {\n id: 'documentation-changelog',\n title: 'Changelog',\n type: 'basic',\n icon: 'history',\n link: '/docs/changelog',\n },\n {\n id: 'documentation-icon-lucide',\n title: 'Lucide Icons',\n type: 'basic',\n icon: 'star',\n link: '/lucide-icons',\n badge: {\n title: 'Demo',\n classes: 'ml-2 px-2 py-0.5 rounded-full text-xs bg-blue-500 text-white',\n },\n },\n ],\n },\n {\n id: 'user-interface',\n title: 'User Interface',\n subtitle: 'Components and design elements',\n type: 'group',\n icon: 'dashboard',\n children: [\n {\n id: 'user-interface-material-components',\n title: 'Material Components',\n type: 'collapsable',\n icon: 'deployed_code',\n children: [\n {\n id: 'user-interface-material-components-inputs-forms',\n title: 'Inputs & Forms',\n type: 'collapsable',\n icon: 'input',\n children: [\n {\n id: 'user-interface-material-components-inputs-forms-autocomplete',\n title: 'Autocomplete',\n type: 'basic',\n icon: 'search',\n link: '/ui/material/autocomplete',\n },\n {\n id: 'user-interface-material-components-inputs-forms-checkbox',\n title: 'Checkbox',\n type: 'basic',\n icon: 'check_box',\n link: '/ui/material/checkbox',\n },\n {\n id: 'user-interface-material-components-inputs-forms-datepicker',\n title: 'Datepicker',\n type: 'basic',\n icon: 'calendar_today',\n link: '/ui/material/datepicker',\n },\n {\n id: 'user-interface-material-components-inputs-forms-form-field',\n title: 'Form field',\n type: 'basic',\n icon: 'text_fields',\n link: '/ui/material/form-field',\n },\n {\n id: 'user-interface-material-components-inputs-forms-input',\n title: 'Input',\n type: 'basic',\n icon: 'text_fields',\n link: '/ui/material/input',\n },\n {\n id: 'user-interface-material-components-inputs-forms-radio-button',\n title: 'Radio button',\n type: 'basic',\n icon: 'radio_button_checked',\n link: '/ui/material/radio',\n },\n {\n id: 'user-interface-material-components-inputs-forms-select',\n title: 'Select',\n type: 'basic',\n icon: 'expand_more',\n link: '/ui/material/select',\n },\n {\n id: 'user-interface-material-components-inputs-forms-slider',\n title: 'Slider',\n type: 'basic',\n icon: 'tune',\n link: '/ui/material/slider',\n },\n {\n id: 'user-interface-material-components-inputs-forms-slide-toggle',\n title: 'Slide toggle',\n type: 'basic',\n icon: 'toggle_on',\n link: '/ui/material/slide-toggle',\n },\n ],\n },\n {\n id: 'user-interface-material-components-buttons-actions',\n title: 'Buttons & Actions',\n type: 'collapsable',\n icon: 'ads_click',\n children: [\n {\n id: 'user-interface-material-components-buttons-actions-button',\n title: 'Button',\n type: 'basic',\n icon: 'crop_square',\n link: '/ui/material/button',\n },\n {\n id: 'user-interface-material-components-buttons-actions-button-toggle',\n title: 'Button toggle',\n type: 'basic',\n icon: 'view_column',\n link: '/ui/material/button-toggle',\n },\n {\n id: 'user-interface-material-components-buttons-actions-chips',\n title: 'Chips',\n type: 'basic',\n icon: 'label',\n link: '/ui/material/chips',\n badge: {\n title: 'New',\n classes: 'ml-2 px-2 py-0.5 rounded-full text-xs bg-green-500 text-white',\n },\n },\n {\n id: 'user-interface-material-components-buttons-actions-menu',\n title: 'Menu',\n type: 'basic',\n icon: 'menu',\n link: '/ui/material/menu',\n },\n {\n id: 'user-interface-material-components-buttons-actions-ripples',\n title: 'Ripples',\n type: 'basic',\n icon: 'waves',\n link: '/ui/material/ripples',\n },\n ],\n },\n {\n id: 'user-interface-material-components-layout-containers',\n title: 'Layout & Containers',\n type: 'collapsable',\n icon: 'dashboard',\n children: [\n {\n id: 'user-interface-material-components-layout-containers-card',\n title: 'Card',\n type: 'basic',\n icon: 'credit_card',\n link: '/ui/material/card',\n },\n {\n id: 'user-interface-material-components-layout-containers-divider',\n title: 'Divider',\n type: 'basic',\n icon: 'remove',\n link: '/ui/material/divider',\n },\n {\n id: 'user-interface-material-components-layout-containers-expansion-panel',\n title: 'Expansion Panel',\n type: 'basic',\n icon: 'expand_more',\n link: '/ui/material/expansion',\n },\n {\n id: 'user-interface-material-components-layout-containers-grid-list',\n title: 'Grid list',\n type: 'basic',\n icon: 'grid_view',\n link: '/ui/material/grid-list',\n },\n {\n id: 'user-interface-material-components-layout-containers-list',\n title: 'List',\n type: 'basic',\n icon: 'list',\n link: '/ui/material/list',\n },\n {\n id: 'user-interface-material-components-layout-containers-sidenav',\n title: 'Sidenav',\n type: 'basic',\n icon: 'view_sidebar',\n link: '/ui/material/sidenav',\n },\n {\n id: 'user-interface-material-components-layout-containers-tabs',\n title: 'Tabs',\n type: 'basic',\n icon: 'tab',\n link: '/ui/material/tabs',\n },\n {\n id: 'user-interface-material-components-layout-containers-toolbar',\n title: 'Toolbar',\n type: 'basic',\n icon: 'build',\n link: '/ui/material/toolbar',\n },\n ],\n },\n {\n id: 'user-interface-material-components-data-display',\n title: 'Data & Display',\n type: 'collapsable',\n icon: 'bar_chart',\n children: [\n {\n id: 'user-interface-material-components-data-display-badge',\n title: 'Badge',\n type: 'basic',\n icon: 'verified',\n link: '/ui/material/badge',\n },\n {\n id: 'user-interface-material-components-data-display-icon',\n title: 'Icon',\n type: 'basic',\n icon: 'star',\n link: '/ui/material/icon',\n },\n {\n id: 'user-interface-material-components-data-display-paginator',\n title: 'Paginator',\n type: 'basic',\n icon: 'first_page',\n link: '/ui/material/paginator',\n },\n {\n id: 'user-interface-material-components-data-display-progress-bar',\n title: 'Progress bar',\n type: 'basic',\n icon: 'hourglass_empty',\n link: '/ui/material/progress-bar',\n },\n {\n id: 'user-interface-material-components-data-display-progress-spinner',\n title: 'Progress spinner',\n type: 'basic',\n icon: 'progress_activity',\n link: '/ui/material/progress-spinner',\n },\n {\n id: 'user-interface-material-components-data-display-sort',\n title: 'Sort header',\n type: 'basic',\n icon: 'swap_vert',\n link: '/ui/material/sort',\n },\n {\n id: 'user-interface-material-components-data-display-table',\n title: 'Table',\n type: 'basic',\n icon: 'table_chart',\n link: '/ui/material/table',\n },\n {\n id: 'user-interface-material-components-data-display-tree',\n title: 'Tree',\n type: 'basic',\n icon: 'hub',\n link: '/ui/material/tree',\n },\n ],\n },\n {\n id: 'user-interface-material-components-overlays-modals',\n title: 'Overlays & Modals',\n type: 'collapsable',\n icon: 'layers',\n children: [\n {\n id: 'user-interface-material-components-overlays-modals-bottom-sheet',\n title: 'Bottom Sheet',\n type: 'basic',\n icon: 'south',\n link: '/ui/material/bottom-sheet',\n },\n {\n id: 'user-interface-material-components-overlays-modals-dialog',\n title: 'Dialog',\n type: 'basic',\n icon: 'chat',\n link: '/ui/material/dialog',\n },\n {\n id: 'user-interface-material-components-overlays-modals-snack-bar',\n title: 'Snack-bar',\n type: 'basic',\n icon: 'notifications',\n link: '/ui/material/snack-bar',\n },\n {\n id: 'user-interface-material-components-overlays-modals-tooltip',\n title: 'Tooltip',\n type: 'basic',\n icon: 'help',\n link: '/ui/material/tooltip',\n },\n ],\n },\n {\n id: 'user-interface-material-components-navigation-stepper',\n title: 'Navigation & Steps',\n type: 'collapsable',\n icon: 'account_tree',\n children: [\n {\n id: 'user-interface-material-components-navigation-stepper-stepper',\n title: 'Stepper',\n type: 'basic',\n icon: 'account_tree',\n link: '/ui/material/stepper',\n },\n ],\n },\n ],\n },\n {\n id: 'user-interface-angular-cdk',\n title: 'Angular CDK',\n type: 'collapsable',\n icon: 'widgets',\n children: [\n {\n id: 'user-interface-angular-cdk-accessibility-navigation',\n title: 'Accessibility & Navigation',\n type: 'collapsable',\n icon: 'accessibility',\n children: [\n {\n id: 'user-interface-angular-cdk-accessibility-navigation-a11y',\n title: 'Accessibility',\n type: 'basic',\n icon: 'accessibility',\n link: '/ui/cdk/a11y',\n },\n {\n id: 'user-interface-angular-cdk-accessibility-navigation-focus-trap',\n title: 'Focus Trap',\n type: 'basic',\n icon: 'center_focus_strong',\n link: '/ui/cdk/focus-trap',\n },\n {\n id: 'user-interface-angular-cdk-accessibility-navigation-live-announcer',\n title: 'Live Announcer',\n type: 'basic',\n icon: 'campaign',\n link: '/ui/cdk/live-announcer',\n },\n {\n id: 'user-interface-angular-cdk-accessibility-navigation-listbox',\n title: 'Listbox',\n type: 'basic',\n icon: 'list',\n link: '/ui/cdk/listbox',\n },\n {\n id: 'user-interface-angular-cdk-accessibility-navigation-menu-cdk',\n title: 'Menu',\n type: 'basic',\n icon: 'menu',\n link: '/ui/cdk/menu',\n },\n ],\n },\n {\n id: 'user-interface-angular-cdk-layout-positioning',\n title: 'Layout & Positioning',\n type: 'collapsable',\n icon: 'dashboard',\n children: [\n {\n id: 'user-interface-angular-cdk-layout-positioning-layout',\n title: 'Layout',\n type: 'basic',\n icon: 'dashboard',\n link: '/ui/cdk/layout',\n },\n {\n id: 'user-interface-angular-cdk-layout-positioning-overlay',\n title: 'Overlay',\n type: 'basic',\n icon: 'layers',\n link: '/ui/cdk/overlay',\n },\n {\n id: 'user-interface-angular-cdk-layout-positioning-portal',\n title: 'Portal',\n type: 'basic',\n icon: 'radio_button_checked',\n link: '/ui/cdk/portal',\n },\n {\n id: 'user-interface-angular-cdk-layout-positioning-scrolling',\n title: 'Scrolling',\n type: 'basic',\n icon: 'unfold_more',\n link: '/ui/cdk/scrolling',\n },\n {\n id: 'user-interface-angular-cdk-layout-positioning-virtual-scrolling',\n title: 'Virtual Scrolling',\n type: 'basic',\n icon: 'view_agenda',\n link: '/ui/cdk/virtual-scrolling',\n },\n ],\n },\n {\n id: 'user-interface-angular-cdk-interaction-behavior',\n title: 'Interaction & Behavior',\n type: 'collapsable',\n icon: 'pan_tool',\n children: [\n {\n id: 'user-interface-angular-cdk-interaction-behavior-drag-drop',\n title: 'Drag and Drop',\n type: 'basic',\n icon: 'open_with',\n link: '/ui/cdk/drag-drop',\n },\n {\n id: 'user-interface-angular-cdk-interaction-behavior-observers',\n title: 'Observers',\n type: 'basic',\n icon: 'visibility',\n link: '/ui/cdk/observers',\n },\n {\n id: 'user-interface-angular-cdk-interaction-behavior-platform',\n title: 'Platform',\n type: 'basic',\n icon: 'devices',\n link: '/ui/cdk/platform',\n },\n {\n id: 'user-interface-angular-cdk-interaction-behavior-stepper-cdk',\n title: 'Stepper',\n type: 'basic',\n icon: 'account_tree',\n link: '/ui/cdk/stepper',\n },\n ],\n },\n {\n id: 'user-interface-angular-cdk-forms-data',\n title: 'Forms & Data',\n type: 'collapsable',\n icon: 'storage',\n children: [\n {\n id: 'user-interface-angular-cdk-forms-data-accordion',\n title: 'Accordion',\n type: 'basic',\n icon: 'expand_more',\n link: '/ui/cdk/accordion',\n },\n {\n id: 'user-interface-angular-cdk-forms-data-table-cdk',\n title: 'Table',\n type: 'basic',\n icon: 'table_chart',\n link: '/ui/cdk/table',\n },\n {\n id: 'user-interface-angular-cdk-forms-data-tree-cdk',\n title: 'Tree',\n type: 'basic',\n icon: 'hub',\n link: '/ui/cdk/tree',\n },\n ],\n },\n {\n id: 'user-interface-angular-cdk-utilities-helpers',\n title: 'Utilities & Helpers',\n type: 'collapsable',\n icon: 'build',\n children: [\n {\n id: 'user-interface-angular-cdk-utilities-helpers-bidi',\n title: 'Bidirectionality',\n type: 'basic',\n icon: 'swap_horiz',\n link: '/ui/cdk/bidi',\n },\n {\n id: 'user-interface-angular-cdk-utilities-helpers-clipboard',\n title: 'Clipboard',\n type: 'basic',\n icon: 'content_paste',\n link: '/ui/cdk/clipboard',\n },\n {\n id: 'user-interface-angular-cdk-utilities-helpers-coercion',\n title: 'Coercion',\n type: 'basic',\n icon: 'shuffle',\n link: '/ui/cdk/coercion',\n },\n {\n id: 'user-interface-angular-cdk-utilities-helpers-collections',\n title: 'Collections',\n type: 'basic',\n icon: 'folder',\n link: '/ui/cdk/collections',\n },\n {\n id: 'user-interface-angular-cdk-utilities-helpers-keycodes',\n title: 'Keycodes',\n type: 'basic',\n icon: 'keyboard',\n link: '/ui/cdk/keycodes',\n },\n ],\n },\n {\n id: 'user-interface-angular-cdk-testing-tools',\n title: 'Testing Tools',\n type: 'collapsable',\n icon: 'bug_report',\n children: [\n {\n id: 'user-interface-angular-cdk-testing-tools-component-harnesses',\n title: 'Component Harnesses',\n type: 'basic',\n icon: 'science',\n link: '/ui/cdk/testing',\n },\n {\n id: 'user-interface-angular-cdk-testing-tools-test-harnesses',\n title: 'Test Harnesses',\n type: 'basic',\n icon: 'science',\n link: '/ui/cdk/test-harnesses',\n },\n ],\n },\n {\n id: 'user-interface-angular-cdk-advanced-feature',\n title: 'Advanced feature',\n type: 'collapsable',\n icon: 'settings',\n children: [\n {\n id: 'user-interface-angular-cdk-advanced-feature-dialog-cdk',\n title: 'Dialog',\n type: 'basic',\n icon: 'chat',\n link: '/ui/cdk/dialog',\n },\n {\n id: 'user-interface-angular-cdk-advanced-feature-text-field',\n title: 'Text Field',\n type: 'basic',\n icon: 'text_fields',\n link: '/ui/cdk/text-field',\n },\n ],\n },\n ],\n },\n {\n id: 'user-interface-tailwind',\n title: 'Tailwind CSS',\n type: 'collapsable',\n icon: 'air',\n children: [\n {\n id: 'user-interface-tailwind-css-heading',\n title: 'Heading',\n type: 'basic',\n icon: 'text_fields',\n link: '/ui/tailwind/heading',\n },\n {\n id: 'user-interface-tailwind-data-display',\n title: 'Data Display',\n type: 'basic',\n icon: 'bar_chart',\n link: '/ui/tailwind/data-display',\n },\n {\n id: 'user-interface-tailwind-list',\n title: 'List',\n type: 'basic',\n icon: 'list',\n link: '/ui/tailwind/list',\n },\n {\n id: 'user-interface-tailwind-form',\n title: 'Form',\n type: 'basic',\n icon: 'dynamic_form',\n link: '/ui/tailwind/form',\n },\n {\n id: 'user-interface-tailwind-feedback',\n title: 'Feedback',\n type: 'basic',\n icon: 'report',\n link: '/ui/tailwind/feedback',\n },\n ],\n },\n ],\n },\n {\n id: 'feature',\n title: 'Features',\n subtitle: 'Advanced functionality and customization options',\n type: 'group',\n icon: 'settings',\n children: [\n {\n id: 'feature-theme',\n title: 'Themes',\n type: 'collapsable',\n icon: 'palette',\n children: [\n {\n id: 'feature-theme-dark-mode',\n title: 'Dark Mode',\n type: 'basic',\n icon: 'dark_mode',\n link: '/feature/theme/dark-mode',\n },\n {\n id: 'feature-theme-color',\n title: 'Color Schemes',\n type: 'basic',\n icon: 'palette',\n link: '/feature/theme/color-schemes',\n badge: {\n title: 'Beta',\n classes: 'ml-2 px-2 py-0.5 rounded-full text-xs bg-yellow-500 text-white',\n },\n },\n {\n id: 'feature-layout',\n title: 'Layout',\n type: 'collapsable',\n icon: 'dashboard',\n children: [\n {\n id: 'feature-layout-apps',\n title: 'Application',\n type: 'collapsable',\n icon: 'web',\n children: [\n {\n id: 'feature-layout-apps-vertical',\n title: 'Vertical',\n type: 'basic',\n icon: 'view_sidebar',\n link: '/feature/layout/application/vertical',\n },\n {\n id: 'feature-layout-apps-horizontal',\n title: 'Horizontal',\n type: 'basic',\n icon: 'view_column',\n link: '/feature/layout/application/horizontal',\n },\n ],\n },\n {\n id: 'feature-layout-page',\n title: 'Pages',\n type: 'collapsable',\n icon: 'description',\n children: [\n {\n id: 'feature-layout-page-page',\n title: 'Page',\n type: 'basic',\n icon: 'description',\n link: '/feature/layout/page/page',\n },\n {\n id: 'feature-layout-page-content',\n title: 'Content',\n type: 'basic',\n icon: 'description',\n link: '/feature/layout/page/content',\n },\n ],\n },\n ],\n },\n ],\n },\n {\n id: 'feature-navigation',\n title: 'Navigation',\n type: 'collapsable',\n icon: 'navigation',\n children: [\n {\n id: 'feature-navigation-horizontal-navigation',\n title: 'Horizontal ',\n type: 'basic',\n icon: 'view_column',\n link: '/feature/navigation/horizontal',\n },\n {\n id: 'feature-navigation-vertical-navigation',\n title: 'Vertical ',\n type: 'collapsable',\n icon: 'view_agenda',\n children: [\n {\n id: 'feature-navigation-vertical-navigation-default',\n title: 'Default',\n type: 'basic',\n icon: 'view_agenda',\n link: '/feature/navigation/vertical/default',\n },\n {\n id: 'feature-navigation-vertical-navigation-thin',\n title: 'Thin',\n type: 'basic',\n icon: 'view_agenda',\n link: '/feature/navigation/vertical/thin',\n },\n {\n id: 'feature-navigation-vertical-navigation-compact',\n title: 'Compact',\n type: 'basic',\n icon: 'view_agenda',\n link: '/feature/navigation/vertical/compact',\n },\n {\n id: 'feature-navigation-vertical-navigation-dense',\n title: 'Dense',\n type: 'basic',\n icon: 'view_agenda',\n link: '/feature/navigation/vertical/dense',\n },\n ],\n },\n ],\n },\n ],\n },\n];\n","/*\n * Public API Surface of @ojiepermana/angular/navigation\n */\n\n// Core\nexport * from './src/lib/core/types/navigation.type';\nexport * from './src/lib/core/services/navigation.service';\n\n// Shared\nexport * from './src/lib/components/shared/nav-icon.component';\nexport * from './src/lib/components/shared/nav-item.component';\n\n// Sidebar & Topbar\nexport * from './src/lib/components/sidebar/sidebar.component';\nexport * from './src/lib/components/topbar/topbar.component';\n\n// Demo data\nexport * from './src/lib/data/demo-navigation.data';\n\nexport const NAVIGATION_VERSION = '0.0.1';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}