@edsis/ui 21.3.7 → 21.3.8

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":"edsis-ui-nav.mjs","sources":["../../../library/ui/nav/icon/nav-icon.directive.ts","../../../library/ui/nav/service/nav.service.ts","../../../library/ui/nav/types/nav.types.ts","../../../library/ui/nav/internal/nav.controller.ts","../../../library/ui/nav/item/nav-item-content.component.ts","../../../library/ui/nav/item/nav-item.component.ts","../../../library/ui/nav/orientation/horizontal/nav-horizontal.component.ts","../../../library/ui/nav/orientation/horizontal/flyout/nav-flyout.component.ts","../../../library/ui/nav/orientation/horizontal/navbar/nav-navbar.component.ts","../../../library/ui/nav/orientation/vertical/sidebar/nav-sidebar.component.ts","../../../library/ui/nav/orientation/vertical/dockbar/nav-dockbar.component.ts","../../../library/ui/nav/internal/nav-outlet.component.ts","../../../library/ui/nav/shell/shared/nav-shell.token.ts","../../../library/ui/nav/shell/footer/nav-footer.component.ts","../../../library/ui/nav/shell/header/nav-header.component.ts","../../../library/ui/nav/shell/main/nav-main.component.ts","../../../library/ui/nav/nav.component.ts","../../../library/ui/nav/shell/collapse/nav-collapse.directive.ts","../../../library/ui/nav/edsis-ui-nav.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\nimport type { UiNavIconContext } from '../types/nav.types';\n\n@Directive({\n selector: 'ng-template[uiNavIcon]',\n})\nexport class NavIconDirective {\n readonly template = inject<TemplateRef<UiNavIconContext>>(TemplateRef);\n\n static ngTemplateContextGuard(_directive: NavIconDirective, context: unknown): context is UiNavIconContext {\n return true;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, computed, inject, signal, type Signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router, type IsActiveMatchOptions } from '@angular/router';\nimport type {\n UiNavAppearance,\n UiNavDockbarMode,\n UiNavIconContext,\n UiNavNormalizedItem,\n UiNavOrientation,\n UiNavPosition,\n UiNavRegisterInput,\n UiNavState,\n} from './nav.service.types';\n\nconst DEFAULT_NAV_ID = 'default';\nconst DEFAULT_VERTICAL_APPEARANCE: UiNavAppearance = 'sidebar';\nconst DEFAULT_HORIZONTAL_APPEARANCE: UiNavAppearance = 'navbar';\nconst DEFAULT_POSITION: UiNavPosition = 'left';\nconst DEFAULT_DOCKBAR_MODE: UiNavDockbarMode = 'sticky';\nconst VERTICAL_APPEARANCE_STORAGE_KEY = 'nav-vertical-appearance';\nconst HORIZONTAL_APPEARANCE_STORAGE_KEY = 'nav-horizontal-appearance';\n\n@Injectable({ providedIn: 'root' })\nexport class NavService {\n private readonly documentRef = inject(DOCUMENT, { optional: true });\n private readonly router = inject(Router, { optional: true });\n private readonly routerUrl = signal(this.router?.url ?? '/');\n private readonly states = signal<Record<string, UiNavState>>({});\n private readonly openPanelKeys = signal<Record<string, string | null>>({});\n private readonly drawerOpenState = signal<Record<string, boolean>>({});\n\n readonly openPanelKey = computed(() => this.openPanelKeys()[DEFAULT_NAV_ID] ?? null);\n\n readonly exactMatchOptions: IsActiveMatchOptions = {\n paths: 'exact',\n queryParams: 'exact',\n fragment: 'exact',\n matrixParams: 'exact',\n };\n\n readonly subsetMatchOptions: IsActiveMatchOptions = {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n };\n\n constructor() {\n this.ensureAppearanceDefaults();\n\n this.router?.events.pipe(takeUntilDestroyed()).subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.routerUrl.set(event.urlAfterRedirects);\n }\n });\n }\n\n register(input: UiNavRegisterInput): UiNavState {\n this.ensureAppearanceDefaults();\n\n const state = this.resolveState(input);\n this.states.update((states) => ({ ...states, [state.id]: state }));\n this.persistState(state);\n\n return state;\n }\n\n unregister(id: string): void {\n const navId = this.normalizeId(id);\n this.states.update((states) => this.withoutKey(states, navId));\n this.openPanelKeys.update((state) => this.withoutKey(state, navId));\n this.drawerOpenState.update((state) => this.withoutKey(state, navId));\n }\n\n state(id: string): Signal<UiNavState | null> {\n const navId = this.normalizeId(id);\n return computed(() => this.states()[navId] ?? null);\n }\n\n currentState(id: string): UiNavState | null {\n return this.states()[this.normalizeId(id)] ?? null;\n }\n\n currentPanelKey(id: string): string | null {\n return this.openPanelKeys()[this.normalizeId(id)] ?? null;\n }\n\n update(id: string, patch: Partial<UiNavRegisterInput>): UiNavState {\n const navId = this.normalizeId(id);\n const current =\n this.states()[navId] ?? this.resolveState({ id: navId, orientation: patch.orientation ?? 'vertical' });\n\n return this.register({\n id: navId,\n orientation: patch.orientation ?? current.orientation,\n appearance: patch.appearance ?? current.appearance,\n position: patch.position ?? current.position,\n collapsed: patch.collapsed ?? current.collapsed,\n dockbarMode: patch.dockbarMode ?? current.dockbarMode,\n });\n }\n\n setAppearance(id: string, appearance: UiNavAppearance): UiNavState {\n return this.update(id, { appearance });\n }\n\n setPosition(id: string, position: UiNavPosition): UiNavState {\n return this.update(id, { position });\n }\n\n setCollapsed(id: string, collapsed: boolean): UiNavState {\n return this.update(id, { collapsed });\n }\n\n toggleCollapsed(id: string): UiNavState {\n const navId = this.normalizeId(id);\n const current = this.states()[navId] ?? this.resolveState({ id: navId, orientation: 'vertical' });\n\n return this.setCollapsed(navId, !current.collapsed);\n }\n\n setDockbarMode(id: string, mode: UiNavDockbarMode): UiNavState {\n return this.update(id, { dockbarMode: mode });\n }\n\n isRouterItem(item: UiNavNormalizedItem): boolean {\n return !!item.link && !item.externalLink;\n }\n\n hrefFor(item: UiNavNormalizedItem): string | null {\n if (item.href) {\n return item.href;\n }\n\n if (item.externalLink && typeof item.link === 'string') {\n return item.link;\n }\n\n return null;\n }\n\n relFor(item: UiNavNormalizedItem): string | null {\n if (item.rel) {\n return item.rel;\n }\n\n return item.target === '_blank' || item.externalLink ? 'noopener noreferrer' : null;\n }\n\n routerLinkActiveOptions(item: UiNavNormalizedItem): IsActiveMatchOptions {\n return item.isActiveMatchOptions ?? (item.exactMatch ? this.exactMatchOptions : this.subsetMatchOptions);\n }\n\n itemRole(orientation: UiNavOrientation, level: number): 'menuitem' | null {\n return orientation === 'horizontal' || level > 0 ? 'menuitem' : null;\n }\n\n compactLabel(item: UiNavNormalizedItem, compact: boolean): string | null {\n return compact ? (item.tooltip ?? item.title ?? null) : null;\n }\n\n titleFor(item: UiNavNormalizedItem, compact: boolean): string | null {\n return item.tooltip ?? (compact ? (item.title ?? null) : null);\n }\n\n compactFallback(item: UiNavNormalizedItem): string {\n return (item.title ?? item.id ?? '?').trim().slice(0, 2);\n }\n\n iconContext(\n item: UiNavNormalizedItem,\n active: boolean,\n level: number,\n orientation: UiNavOrientation,\n ): UiNavIconContext {\n return {\n $implicit: item.icon ?? '',\n icon: item.icon ?? '',\n item: item.source,\n active,\n orientation,\n level,\n };\n }\n\n isItemActive(item: UiNavNormalizedItem, activeIds: ReadonlySet<string>, explicitActiveUrl: string | null): boolean {\n if (item.active || activeIds.has(item.stateId) || activeIds.has(item.key)) {\n return true;\n }\n\n if (this.matchesActiveUrl(item, explicitActiveUrl)) {\n return true;\n }\n\n return item.children.some((child) => this.isItemActive(child, activeIds, explicitActiveUrl));\n }\n\n isPanelOpen(navIdOrItem: string | UiNavNormalizedItem, item?: UiNavNormalizedItem): boolean {\n const { navId, navItem } = this.resolvePanelArgs(navIdOrItem, item);\n\n return this.openPanelKeys()[navId] === navItem.key;\n }\n\n openPanel(navIdOrItem: string | UiNavNormalizedItem, item?: UiNavNormalizedItem): void {\n const { navId, navItem } = this.resolvePanelArgs(navIdOrItem, item);\n\n if (navItem.disabled) {\n return;\n }\n\n this.openPanelKeys.update((state) => ({ ...state, [navId]: navItem.key }));\n }\n\n togglePanel(navIdOrItem: string | UiNavNormalizedItem, item?: UiNavNormalizedItem): void {\n const { navId, navItem } = this.resolvePanelArgs(navIdOrItem, item);\n\n if (navItem.disabled) {\n return;\n }\n\n this.openPanelKeys.update((state) => ({\n ...state,\n [navId]: state[navId] === navItem.key ? null : navItem.key,\n }));\n }\n\n closePanel(id = DEFAULT_NAV_ID): void {\n const navId = this.normalizeId(id);\n this.openPanelKeys.update((state) => ({ ...state, [navId]: null }));\n }\n\n isDrawerOpen(id: string): boolean {\n return this.drawerOpenState()[this.normalizeId(id)] ?? false;\n }\n\n openDrawer(id: string): void {\n const navId = this.normalizeId(id);\n this.drawerOpenState.update((state) => ({ ...state, [navId]: true }));\n }\n\n toggleDrawer(id: string): void {\n const navId = this.normalizeId(id);\n this.drawerOpenState.update((state) => ({ ...state, [navId]: !(state[navId] ?? false) }));\n }\n\n closeDrawer(id: string): void {\n const navId = this.normalizeId(id);\n this.drawerOpenState.update((state) => ({ ...state, [navId]: false }));\n }\n\n private matchesActiveUrl(item: UiNavNormalizedItem, explicitActiveUrl: string | null): boolean {\n if (!item.link || item.externalLink || typeof item.link !== 'string') {\n return false;\n }\n\n const activeUrl = explicitActiveUrl ?? this.routerUrl();\n const link = item.link;\n\n if (link === '/') {\n return activeUrl === '/';\n }\n\n if (item.exactMatch || item.isActiveMatchOptions?.paths === 'exact') {\n return activeUrl === link;\n }\n\n return activeUrl === link || activeUrl.startsWith(`${link}/`) || activeUrl.startsWith(`${link}?`);\n }\n\n private resolveState(input: UiNavRegisterInput): UiNavState {\n const id = this.normalizeId(input.id);\n const orientation = input.orientation;\n\n return {\n id,\n orientation,\n appearance: this.resolveAppearance(id, orientation, input.appearance),\n position: this.resolvePosition(id, input.position),\n collapsed: this.resolveCollapsed(id, input.collapsed),\n dockbarMode: this.resolveDockbarMode(id, input.dockbarMode),\n };\n }\n\n private resolveAppearance(\n id: string,\n orientation: UiNavOrientation,\n appearance: UiNavAppearance | null | undefined,\n ): UiNavAppearance {\n if (this.isAppearanceForOrientation(appearance, orientation)) {\n return appearance;\n }\n\n const stored = this.readStorage(this.instanceStorageKey(id, 'appearance'));\n if (this.isAppearanceForOrientation(stored, orientation)) {\n return stored;\n }\n\n return this.readOrientationAppearance(orientation);\n }\n\n private resolvePosition(id: string, position: UiNavPosition | null | undefined): UiNavPosition {\n if (this.isPosition(position)) {\n return position;\n }\n\n const stored = this.readStorage(this.instanceStorageKey(id, 'position'));\n\n return this.isPosition(stored) ? stored : DEFAULT_POSITION;\n }\n\n private resolveCollapsed(id: string, collapsed: boolean | null | undefined): boolean {\n if (typeof collapsed === 'boolean') {\n return collapsed;\n }\n\n const stored = this.readStorage(this.instanceStorageKey(id, 'collapsed'));\n\n if (stored === 'true') {\n return true;\n }\n\n if (stored === 'false') {\n return false;\n }\n\n return false;\n }\n\n private resolveDockbarMode(id: string, mode: UiNavDockbarMode | null | undefined): UiNavDockbarMode {\n if (this.isDockbarMode(mode)) {\n return mode;\n }\n\n const stored = this.readStorage(this.instanceStorageKey(id, 'dockbar-mode'));\n\n return this.isDockbarMode(stored) ? stored : DEFAULT_DOCKBAR_MODE;\n }\n\n private persistState(state: UiNavState): void {\n this.writeStorage(this.instanceStorageKey(state.id, 'orientation'), state.orientation);\n this.writeStorage(this.instanceStorageKey(state.id, 'appearance'), state.appearance);\n this.writeStorage(this.instanceStorageKey(state.id, 'position'), state.position);\n this.writeStorage(this.instanceStorageKey(state.id, 'collapsed'), String(state.collapsed));\n this.writeStorage(this.instanceStorageKey(state.id, 'dockbar-mode'), state.dockbarMode);\n }\n\n private readOrientationAppearance(orientation: UiNavOrientation): UiNavAppearance {\n const key = orientation === 'vertical' ? VERTICAL_APPEARANCE_STORAGE_KEY : HORIZONTAL_APPEARANCE_STORAGE_KEY;\n const fallback = orientation === 'vertical' ? DEFAULT_VERTICAL_APPEARANCE : DEFAULT_HORIZONTAL_APPEARANCE;\n const stored = this.readStorage(key);\n\n if (this.isAppearanceForOrientation(stored, orientation)) {\n return stored;\n }\n\n this.writeStorage(key, fallback);\n\n return fallback;\n }\n\n private ensureAppearanceDefaults(): void {\n if (!this.isVerticalAppearance(this.readStorage(VERTICAL_APPEARANCE_STORAGE_KEY))) {\n this.writeStorage(VERTICAL_APPEARANCE_STORAGE_KEY, DEFAULT_VERTICAL_APPEARANCE);\n }\n\n if (!this.isHorizontalAppearance(this.readStorage(HORIZONTAL_APPEARANCE_STORAGE_KEY))) {\n this.writeStorage(HORIZONTAL_APPEARANCE_STORAGE_KEY, DEFAULT_HORIZONTAL_APPEARANCE);\n }\n }\n\n private storage(): Storage | null {\n try {\n return this.documentRef?.defaultView?.localStorage ?? null;\n } catch {\n return null;\n }\n }\n\n private readStorage(key: string): string | null {\n try {\n return this.storage()?.getItem(key) ?? null;\n } catch {\n return null;\n }\n }\n\n private writeStorage(key: string, value: string): void {\n try {\n this.storage()?.setItem(key, value);\n } catch {\n return;\n }\n }\n\n private instanceStorageKey(id: string, property: string): string {\n return `nav:${id}:${property}`;\n }\n\n private normalizeId(id: string): string {\n return id.trim() || DEFAULT_NAV_ID;\n }\n\n private withoutKey<T>(record: Record<string, T>, key: string): Record<string, T> {\n const next = { ...record };\n delete next[key];\n\n return next;\n }\n\n private resolvePanelArgs(\n navIdOrItem: string | UiNavNormalizedItem,\n item: UiNavNormalizedItem | undefined,\n ): { navId: string; navItem: UiNavNormalizedItem } {\n if (typeof navIdOrItem === 'string') {\n return { navId: this.normalizeId(navIdOrItem), navItem: item as UiNavNormalizedItem };\n }\n\n return { navId: DEFAULT_NAV_ID, navItem: navIdOrItem };\n }\n\n private isAppearanceForOrientation(\n value: string | null | undefined,\n orientation: UiNavOrientation,\n ): value is UiNavAppearance {\n return orientation === 'vertical' ? this.isVerticalAppearance(value) : this.isHorizontalAppearance(value);\n }\n\n private isVerticalAppearance(value: string | null | undefined): value is 'sidebar' | 'dockbar' {\n return value === 'sidebar' || value === 'dockbar';\n }\n\n private isHorizontalAppearance(value: string | null | undefined): value is 'navbar' | 'flyout' {\n return value === 'navbar' || value === 'flyout';\n }\n\n private isPosition(value: string | null | undefined): value is UiNavPosition {\n return value === 'left' || value === 'right';\n }\n\n private isDockbarMode(value: string | null | undefined): value is UiNavDockbarMode {\n return value === 'drawer' || value === 'sticky';\n }\n}\n","import type { IsActiveMatchOptions, Params, QueryParamsHandling, UrlTree } from '@angular/router';\n\nexport type UiNavOrientation = 'vertical' | 'horizontal';\n\nexport type UiNavVerticalAppearance = 'sidebar' | 'dockbar';\nexport type UiNavHorizontalAppearance = 'navbar' | 'flyout';\nexport type UiNavAppearance = UiNavVerticalAppearance | UiNavHorizontalAppearance;\nexport type UiNavCollapseTree = 'stairs' | 'straight';\nexport type UiNavPosition = 'left' | 'right';\nexport type UiNavDockbarMode = 'drawer' | 'sticky';\n\nexport interface UiNavRegisterInput {\n readonly id: string;\n readonly orientation: UiNavOrientation;\n readonly appearance?: UiNavAppearance | null;\n readonly position?: UiNavPosition | null;\n readonly collapsed?: boolean | null;\n readonly dockbarMode?: UiNavDockbarMode | null;\n}\n\nexport interface UiNavState {\n readonly id: string;\n readonly orientation: UiNavOrientation;\n readonly appearance: UiNavAppearance;\n readonly position: UiNavPosition;\n readonly collapsed: boolean;\n readonly dockbarMode: UiNavDockbarMode;\n}\n\nexport type UiNavItemType =\n | 'item'\n | 'basic'\n | 'aside'\n | 'group'\n | 'collapsible'\n | 'collapsable'\n | 'mega'\n | 'divider'\n | 'spacer';\n\nexport type UiNavNormalizedItemType = 'item' | 'group' | 'collapsible' | 'mega' | 'divider' | 'spacer';\n\nexport type UiNavLink = string | readonly unknown[] | UrlTree;\n\nexport interface UiNavItemClasses {\n readonly title?: string;\n readonly subtitle?: string;\n readonly icon?: string;\n readonly wrapper?: string;\n}\n\nexport interface UiNavItemBadge {\n readonly title?: string;\n readonly classes?: string;\n}\n\nexport type UiNavVisibilityHandler = (item: UiNavItem) => boolean;\nexport type UiNavActionHandler = (item: UiNavItem) => void;\n\nexport interface UiNavItem {\n readonly id?: string;\n readonly type?: UiNavItemType;\n readonly title?: string;\n readonly subtitle?: string;\n readonly active?: boolean;\n readonly disabled?: boolean;\n readonly tooltip?: string;\n readonly classes?: UiNavItemClasses;\n readonly icon?: string;\n readonly badge?: UiNavItemBadge;\n readonly meta?: Record<string, unknown>;\n readonly isHidden?: UiNavVisibilityHandler;\n readonly link?: UiNavLink;\n readonly href?: string;\n readonly fragment?: string;\n readonly preserveFragment?: boolean;\n readonly queryParams?: Params | null;\n readonly queryParamsHandling?: QueryParamsHandling | null;\n readonly externalLink?: boolean;\n readonly target?: '_blank' | '_self' | '_parent' | '_top' | string;\n readonly rel?: string;\n readonly exactMatch?: boolean;\n readonly isActiveMatchOptions?: IsActiveMatchOptions;\n readonly action?: UiNavActionHandler;\n readonly columns?: number;\n readonly children?: readonly UiNavItem[];\n}\n\nexport interface UiNavNormalizedItem extends Omit<UiNavItem, 'children' | 'type'> {\n readonly key: string;\n readonly stateId: string;\n readonly panelId: string;\n readonly type: UiNavNormalizedItemType;\n readonly source: UiNavItem;\n readonly children: readonly UiNavNormalizedItem[];\n}\n\nexport interface UiNavSelection {\n readonly item: UiNavItem;\n readonly key: string;\n readonly type: UiNavNormalizedItemType;\n readonly link?: UiNavLink;\n readonly external: boolean;\n}\n\nexport interface UiNavIconContext {\n readonly $implicit: string;\n readonly icon: string;\n readonly item: UiNavItem;\n readonly active: boolean;\n readonly orientation: UiNavOrientation;\n readonly level: number;\n}\n\nfunction normalizeType(type: UiNavItemType | undefined, hasChildren: boolean): UiNavNormalizedItemType {\n if (type === 'divider' || type === 'spacer' || type === 'group' || type === 'mega') {\n return type;\n }\n\n if (type === 'collapsible' || type === 'collapsable') {\n return 'collapsible';\n }\n\n if (type === 'aside' && hasChildren) {\n return 'collapsible';\n }\n\n if (!type && hasChildren) {\n return 'collapsible';\n }\n\n return 'item';\n}\n\nfunction toKeyPart(value: string): string {\n return value\n .toLowerCase()\n .replace(/[^a-z0-9_-]+/g, '-')\n .replace(/^-+|-+$/g, '');\n}\n\nfunction itemFallbackKey(item: UiNavItem, index: number): string {\n return toKeyPart(item.title ?? item.link?.toString() ?? item.href ?? `item-${index}`) || `item-${index}`;\n}\n\nfunction normalizeItem(item: UiNavItem, index: number, path: string): UiNavNormalizedItem | null {\n if (item.isHidden?.(item)) {\n return null;\n }\n\n const children = (item.children ?? [])\n .map((child, childIndex) => normalizeItem(child, childIndex, `${path}-${childIndex}`))\n .filter((child): child is UiNavNormalizedItem => child !== null);\n\n const hasChildren = children.length > 0;\n const key = item.id ?? `${path}-${itemFallbackKey(item, index)}`;\n\n return {\n ...item,\n key,\n stateId: item.id ?? key,\n panelId: `ui-nav-panel-${toKeyPart(key) || index}`,\n type: normalizeType(item.type, hasChildren),\n source: item,\n children,\n };\n}\n\nexport function normalizeUiNavItems(items: readonly UiNavItem[]): readonly UiNavNormalizedItem[] {\n return items\n .map((item, index) => normalizeItem(item, index, `ui-nav-${index}`))\n .filter((item): item is UiNavNormalizedItem => item !== null);\n}\n","import { DestroyRef, computed, effect, inject, signal, type Signal } from '@angular/core';\nimport { NavService } from '../service/nav.service';\nimport {\n normalizeUiNavItems,\n type UiNavAppearance,\n type UiNavDockbarMode,\n type UiNavItem,\n type UiNavNormalizedItem,\n type UiNavOrientation,\n type UiNavPosition,\n type UiNavState,\n} from '../types/nav.types';\n\ninterface UiNavControllerInputs {\n readonly navId: Signal<string>;\n readonly data: Signal<readonly UiNavItem[]>;\n readonly items: Signal<readonly UiNavItem[]>;\n readonly orientation: Signal<UiNavOrientation>;\n readonly appearance: Signal<UiNavAppearance | null>;\n readonly position: Signal<UiNavPosition | null>;\n readonly collapsed: Signal<boolean | null>;\n readonly dockbarMode: Signal<UiNavDockbarMode | null>;\n readonly compact: Signal<boolean>;\n readonly activeIds: Signal<ReadonlySet<string> | readonly string[] | null>;\n}\n\nexport interface UiNavController {\n readonly normalizedNavId: Signal<string>;\n readonly normalizedItems: Signal<readonly UiNavNormalizedItem[]>;\n readonly resolvedState: Signal<UiNavState>;\n readonly activeIdSet: Signal<ReadonlySet<string>>;\n toggleCollapsed(): void;\n}\n\nexport function injectUiNavController(inputs: UiNavControllerInputs): UiNavController {\n const nav = inject(NavService);\n const destroyRef = inject(DestroyRef);\n const registeredState = signal<UiNavState | null>(null);\n let previousRegisteredId: string | null = null;\n\n const normalizedNavId = computed(() => normalizeId(inputs.navId()));\n const collapsedPreference = computed(() => inputs.collapsed() ?? (inputs.compact() ? true : null));\n const normalizedItems = computed(() => {\n const data = inputs.data();\n return normalizeUiNavItems(data.length > 0 ? data : inputs.items());\n });\n const fallbackState = computed<UiNavState>(() => ({\n id: normalizedNavId(),\n orientation: inputs.orientation(),\n appearance: fallbackAppearance(inputs.orientation(), inputs.appearance()),\n position: inputs.position() ?? 'left',\n collapsed: collapsedPreference() ?? false,\n dockbarMode: inputs.dockbarMode() ?? 'sticky',\n }));\n const resolvedState = computed(() => nav.currentState(normalizedNavId()) ?? registeredState() ?? fallbackState());\n const activeIdSet = computed(() => {\n const ids = inputs.activeIds();\n if (!ids) {\n return new Set<string>();\n }\n\n return ids instanceof Set ? new Set(ids) : new Set(ids);\n });\n\n effect(() => {\n const nextState = nav.register({\n id: normalizedNavId(),\n orientation: inputs.orientation(),\n appearance: inputs.appearance(),\n position: inputs.position(),\n collapsed: collapsedPreference(),\n dockbarMode: inputs.dockbarMode(),\n });\n\n if (previousRegisteredId && previousRegisteredId !== nextState.id) {\n nav.unregister(previousRegisteredId);\n }\n\n previousRegisteredId = nextState.id;\n registeredState.set(nextState);\n });\n\n destroyRef.onDestroy(() => {\n if (previousRegisteredId) {\n nav.unregister(previousRegisteredId);\n }\n });\n\n return {\n normalizedNavId,\n normalizedItems,\n resolvedState,\n activeIdSet,\n toggleCollapsed: () => nav.toggleCollapsed(normalizedNavId()),\n };\n}\n\nfunction normalizeId(value: string): string {\n return value.trim() || 'default';\n}\n\nfunction fallbackAppearance(orientation: UiNavOrientation, appearance: UiNavAppearance | null): UiNavAppearance {\n if (orientation === 'vertical' && (appearance === 'sidebar' || appearance === 'dockbar')) {\n return appearance;\n }\n\n if (orientation === 'horizontal' && (appearance === 'navbar' || appearance === 'flyout')) {\n return appearance;\n }\n\n return orientation === 'horizontal' ? 'navbar' : 'sidebar';\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { NavIconDirective } from '../icon/nav-icon.directive';\nimport { NavService } from '../service/nav.service';\nimport type { UiNavCollapseTree, UiNavNormalizedItem, UiNavOrientation } from '../types/nav.types';\n\n@Component({\n selector: 'ui-nav-item-content',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n host: {\n class: 'contents',\n },\n template: `\n @if (item().icon) {\n <span data-ui-nav-icon-slot=\"true\" [class]=\"iconSlotClasses()\">\n @if (iconTemplate(); as customIcon) {\n <ng-container [ngTemplateOutlet]=\"customIcon.template\" [ngTemplateOutletContext]=\"iconContext()\" />\n } @else {\n <span aria-hidden=\"true\" [class]=\"defaultIconClasses()\" [attr.data-icon]=\"item().icon\"></span>\n }\n </span>\n }\n\n @if (!compact()) {\n <span class=\"min-w-0 flex-1\">\n <span [class]=\"titleClasses()\">{{ item().title }}</span>\n @if (showSubtitle()) {\n <span [class]=\"subtitleClasses()\">{{ item().subtitle }}</span>\n }\n </span>\n\n @if (item().badge; as badge) {\n <span [class]=\"badge.classes ?? defaultBadgeClasses()\">{{ badge.title }}</span>\n }\n }\n\n @if (compact() && !item().icon) {\n <span aria-hidden=\"true\" [class]=\"compactFallbackClasses()\">{{ compactFallback() }}</span>\n }\n `,\n})\nexport class NavItemContentComponent {\n private readonly nav = inject(NavService);\n\n readonly item = input.required<UiNavNormalizedItem>();\n readonly active = input<boolean>(false);\n readonly compact = input<boolean>(false);\n readonly orientation = input<UiNavOrientation>('vertical');\n readonly level = input<number>(0);\n readonly collapseTree = input<UiNavCollapseTree>('stairs');\n readonly iconTemplate = input<NavIconDirective | undefined>(undefined);\n\n protected readonly iconSlotClasses = computed(() =>\n cn(\n 'relative z-10 inline-flex shrink-0 items-center justify-center transition-[border-color,background-color,color,box-shadow] duration-200',\n this.orientation() === 'vertical'\n ? this.compact()\n ? 'h-8 w-8 rounded-full border'\n : 'h-7 w-7 rounded-full border'\n : 'h-5 w-5 rounded-full border border-transparent',\n this.usesStraightVerticalSurface() && 'overflow-hidden bg-background/85 backdrop-blur-sm border-transparent',\n this.active() && !this.usesStraightVerticalSurface() ? 'border-primary text-current' : 'border-transparent',\n this.active() && this.usesStraightVerticalSurface() && 'text-current',\n this.compact() && 'mx-auto',\n ),\n );\n protected readonly titleClasses = computed(() =>\n cn('block truncate', this.active() && 'font-semibold text-foreground', this.item().classes?.title),\n );\n protected readonly showSubtitle = computed(\n () => !!this.item().subtitle && !(this.orientation() === 'horizontal' && this.level() === 0),\n );\n protected readonly subtitleClasses = computed(() =>\n cn('block truncate text-xs font-normal text-muted-foreground', this.item().classes?.subtitle),\n );\n protected readonly compactFallbackClasses = computed(() =>\n cn('inline-flex h-5 min-w-5 items-center justify-center text-xs font-semibold uppercase'),\n );\n\n protected readonly defaultBadgeClasses = computed(() =>\n cn(\n 'ml-auto inline-flex h-5 shrink-0 items-center rounded-full px-2 text-xs font-medium',\n this.active() ? 'bg-background text-foreground' : 'bg-muted text-muted-foreground',\n ),\n );\n\n protected readonly defaultIconClasses = computed(() =>\n cn(\n 'inline-flex h-4 w-4 shrink-0 rounded-full border',\n this.usesStraightVerticalSurface()\n ? 'border-transparent bg-transparent'\n : this.active()\n ? 'border-primary'\n : 'border-border bg-muted',\n this.item().classes?.icon,\n ),\n );\n\n protected readonly iconContext = computed(() =>\n this.nav.iconContext(this.item(), this.active(), this.level(), this.orientation()),\n );\n\n protected compactFallback(): string {\n return this.nav.compactFallback(this.item());\n }\n\n private usesStraightVerticalSurface(): boolean {\n return this.orientation() === 'vertical' && !this.compact() && this.collapseTree() === 'straight';\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { cn } from '@edsis/ui/utils';\nimport { NavIconDirective } from '../icon/nav-icon.directive';\nimport { NavService } from '../service/nav.service';\nimport { NavItemContentComponent } from './nav-item-content.component';\nimport type { UiNavCollapseTree, UiNavNormalizedItem, UiNavOrientation, UiNavSelection } from '../types/nav.types';\n\n@Component({\n selector: 'li[ui-nav-item]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterLink, RouterLinkActive, NavItemContentComponent],\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'hostRole()',\n '[attr.data-ui-nav-item-key]': 'item().key',\n '[attr.aria-hidden]': 'item().type === \"spacer\" ? \"true\" : null',\n },\n template: `\n @switch (item().type) {\n @case ('divider') {\n <span class=\"block h-px w-full bg-border\"></span>\n }\n\n @case ('spacer') {}\n\n @case ('group') {\n @if (!compact() && item().title) {\n <div [id]=\"headingId()\" [class]=\"groupHeadingClasses()\">{{ item().title }}</div>\n }\n\n <ul [class]=\"childListClasses()\" role=\"group\" [attr.aria-labelledby]=\"item().title ? headingId() : null\">\n @for (child of item().children; track child.key; let isFirst = $first; let isLast = $last) {\n <li\n ui-nav-item\n [navId]=\"navId()\"\n [item]=\"child\"\n [level]=\"level() + 1\"\n [orientation]=\"orientation()\"\n [compact]=\"compact()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [straightRail]=\"showStraightRailForChildren()\"\n [straightRailActive]=\"isActive()\"\n [firstInBranch]=\"isFirst\"\n [lastInBranch]=\"isLast\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n </ul>\n }\n\n @case ('collapsible') {\n <button\n type=\"button\"\n [class]=\"triggerClasses(isActive())\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"item().panelId\"\n [attr.aria-label]=\"compactLabel()\"\n [attr.title]=\"titleFor()\"\n [disabled]=\"item().disabled || null\"\n (click)=\"toggleOpen()\">\n <ui-nav-item-content\n [item]=\"item()\"\n [active]=\"isActive()\"\n [compact]=\"compact()\"\n [orientation]=\"orientation()\"\n [level]=\"level()\"\n [collapseTree]=\"collapseTree()\"\n [iconTemplate]=\"iconTemplate()\" />\n\n @if (!compact()) {\n <span aria-hidden=\"true\" [class]=\"chevronClasses()\">›</span>\n }\n </button>\n\n @if (showChildren()) {\n <ul [id]=\"item().panelId\" [class]=\"childListClasses()\" role=\"group\">\n @for (child of item().children; track child.key; let isFirst = $first; let isLast = $last) {\n <li\n ui-nav-item\n [navId]=\"navId()\"\n [item]=\"child\"\n [level]=\"level() + 1\"\n [orientation]=\"orientation()\"\n [compact]=\"false\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [straightRail]=\"showStraightRailForChildren()\"\n [straightRailActive]=\"isActive()\"\n [firstInBranch]=\"isFirst\"\n [lastInBranch]=\"isLast\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n </ul>\n }\n }\n\n @case ('mega') {\n @if (!compact() && item().title) {\n <div [id]=\"headingId()\" [class]=\"groupHeadingClasses()\">{{ item().title }}</div>\n }\n\n <ul [class]=\"childListClasses()\" role=\"group\" [attr.aria-labelledby]=\"item().title ? headingId() : null\">\n @for (child of item().children; track child.key; let isFirst = $first; let isLast = $last) {\n <li\n ui-nav-item\n [navId]=\"navId()\"\n [item]=\"child\"\n [level]=\"level() + 1\"\n [orientation]=\"orientation()\"\n [compact]=\"compact()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [straightRail]=\"showStraightRailForChildren()\"\n [straightRailActive]=\"isActive()\"\n [firstInBranch]=\"isFirst\"\n [lastInBranch]=\"isLast\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n </ul>\n }\n\n @default {\n @if (isRouterItem()) {\n <a\n [class]=\"leafClasses(routerActive.isActive || isActive())\"\n [routerLink]=\"item().link ?? null\"\n [queryParams]=\"item().queryParams ?? null\"\n [queryParamsHandling]=\"item().queryParamsHandling ?? null\"\n [fragment]=\"item().fragment ?? undefined\"\n [preserveFragment]=\"item().preserveFragment ?? false\"\n [target]=\"item().target ?? undefined\"\n routerLinkActive\n #routerActive=\"routerLinkActive\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n [attr.aria-current]=\"routerActive.isActive || isActive() ? 'page' : null\"\n [attr.aria-disabled]=\"item().disabled || null\"\n [attr.aria-label]=\"compactLabel()\"\n [attr.title]=\"titleFor()\"\n [attr.role]=\"itemRole()\"\n [attr.data-ui-nav-root-item]=\"isHorizontalRoot() ? 'true' : null\"\n (click)=\"selectItem($event)\">\n <ui-nav-item-content\n [item]=\"item()\"\n [active]=\"routerActive.isActive || isActive()\"\n [compact]=\"compact()\"\n [orientation]=\"orientation()\"\n [level]=\"level()\"\n [collapseTree]=\"collapseTree()\"\n [iconTemplate]=\"iconTemplate()\" />\n </a>\n } @else if (hrefFor()) {\n <a\n [class]=\"leafClasses(isActive())\"\n [attr.href]=\"hrefFor()\"\n [attr.target]=\"item().target ?? (item().externalLink ? '_blank' : null)\"\n [attr.rel]=\"relFor()\"\n [attr.aria-current]=\"isActive() ? 'page' : null\"\n [attr.aria-disabled]=\"item().disabled || null\"\n [attr.aria-label]=\"compactLabel()\"\n [attr.title]=\"titleFor()\"\n [attr.role]=\"itemRole()\"\n [attr.data-ui-nav-root-item]=\"isHorizontalRoot() ? 'true' : null\"\n (click)=\"selectItem($event)\">\n <ui-nav-item-content\n [item]=\"item()\"\n [active]=\"isActive()\"\n [compact]=\"compact()\"\n [orientation]=\"orientation()\"\n [level]=\"level()\"\n [collapseTree]=\"collapseTree()\"\n [iconTemplate]=\"iconTemplate()\" />\n </a>\n } @else {\n <button\n type=\"button\"\n [class]=\"leafClasses(isActive())\"\n [disabled]=\"item().disabled || null\"\n [attr.aria-current]=\"isActive() ? 'page' : null\"\n [attr.aria-label]=\"compactLabel()\"\n [attr.title]=\"titleFor()\"\n [attr.role]=\"itemRole()\"\n [attr.data-ui-nav-root-item]=\"isHorizontalRoot() ? 'true' : null\"\n (click)=\"selectItem($event)\">\n <ui-nav-item-content\n [item]=\"item()\"\n [active]=\"isActive()\"\n [compact]=\"compact()\"\n [orientation]=\"orientation()\"\n [level]=\"level()\"\n [collapseTree]=\"collapseTree()\"\n [iconTemplate]=\"iconTemplate()\" />\n </button>\n }\n }\n }\n `,\n})\nexport class NavItemComponent {\n private readonly nav = inject(NavService);\n\n readonly navId = input<string>('default');\n readonly item = input.required<UiNavNormalizedItem>();\n readonly level = input<number>(0);\n readonly orientation = input<UiNavOrientation>('vertical');\n readonly compact = input<boolean>(false);\n readonly itemClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavIconDirective | undefined>(undefined);\n readonly collapseTree = input<UiNavCollapseTree>('stairs');\n readonly straightRail = input<boolean>(false);\n readonly straightRailActive = input<boolean>(false);\n readonly firstInBranch = input<boolean>(false);\n readonly lastInBranch = input<boolean>(false);\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<UiNavSelection>();\n\n private readonly openedIdSet = computed(() => new Set(this.openedIds()));\n\n protected readonly isHorizontalRoot = computed(() => this.orientation() === 'horizontal' && this.level() === 0);\n protected readonly isActive = computed(() => this.nav.isItemActive(this.item(), this.activeIds(), this.activeUrl()));\n protected readonly showChildren = computed(() => !this.compact() && this.isOpen());\n\n protected readonly hostClasses = computed(() => {\n if (this.item().type === 'divider') {\n return this.dividerClasses();\n }\n\n if (this.item().type === 'spacer') {\n return 'flex-1';\n }\n\n if (this.item().type === 'group' || this.item().type === 'mega') {\n return this.groupContainerClasses();\n }\n\n return this.itemContainerClasses();\n });\n\n protected readonly hostRole = computed(() => {\n if (this.item().type === 'divider') {\n return 'separator';\n }\n\n return this.orientation() === 'horizontal' ? 'none' : null;\n });\n\n protected readonly headingId = computed(() => `${this.item().panelId}-heading`);\n\n protected isRouterItem(): boolean {\n return this.nav.isRouterItem(this.item());\n }\n\n protected hrefFor(): string | null {\n return this.nav.hrefFor(this.item());\n }\n\n protected relFor(): string | null {\n return this.nav.relFor(this.item());\n }\n\n protected routerLinkActiveOptions() {\n return this.nav.routerLinkActiveOptions(this.item());\n }\n\n protected itemRole(): 'menuitem' | null {\n return this.nav.itemRole(this.orientation(), this.level());\n }\n\n protected compactLabel(): string | null {\n return this.nav.compactLabel(this.item(), this.compact());\n }\n\n protected titleFor(): string | null {\n return this.nav.titleFor(this.item(), this.compact());\n }\n\n protected isOpen(): boolean {\n return this.openedIdSet().has(this.item().stateId) || this.openedIdSet().has(this.item().key) || this.isActive();\n }\n\n protected toggleOpen(): void {\n if (this.item().disabled) {\n return;\n }\n\n const next = new Set(this.openedIds());\n if (next.has(this.item().stateId)) {\n next.delete(this.item().stateId);\n } else {\n next.add(this.item().stateId);\n }\n\n this.openedIdsChange.emit([...next]);\n }\n\n protected selectItem(event: MouseEvent): void {\n if (this.item().disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n this.item().action?.(this.item().source);\n this.itemSelected.emit({\n item: this.item().source,\n key: this.item().key,\n type: this.item().type,\n link: this.item().link,\n external: !!this.hrefFor(),\n });\n this.nav.closePanel(this.navId());\n this.nav.closeDrawer(this.navId());\n }\n\n protected leafClasses(active: boolean): string {\n return cn(\n 'ui-nav-item group/nav inline-flex min-w-0 items-center rounded-md text-sm font-medium transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n this.orientation() === 'horizontal' && this.level() === 0 ? 'h-9 px-3 py-2' : 'w-full px-3 py-1.5 text-left',\n this.orientation() === 'horizontal' && this.level() === 0 ? 'gap-3' : 'gap-1.5',\n this.compact() && 'h-10 w-10 justify-center gap-0 px-0 text-center',\n this.interactiveStateClasses(active),\n this.item().disabled && 'pointer-events-none opacity-50',\n this.item().classes?.wrapper,\n this.itemClass(),\n );\n }\n\n protected triggerClasses(active: boolean): string {\n return cn(\n 'ui-nav-trigger group/nav inline-flex min-w-0 items-center rounded-md text-sm font-medium transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n this.orientation() === 'horizontal' && this.level() === 0 ? 'h-9 px-3 py-2' : 'w-full px-3 py-1.5 text-left',\n this.orientation() === 'horizontal' && this.level() === 0 ? 'gap-3' : 'gap-1.5',\n this.compact() && 'h-10 w-10 justify-center gap-0 px-0 text-center',\n this.interactiveStateClasses(active),\n this.item().classes?.wrapper,\n this.itemClass(),\n );\n }\n\n private interactiveStateClasses(active: boolean): string {\n const showsNestedActiveConnector =\n active &&\n this.orientation() === 'vertical' &&\n !this.compact() &&\n this.level() > 1 &&\n this.collapseTree() === 'stairs';\n\n if (this.orientation() === 'vertical' && !this.compact()) {\n return cn(\n 'relative isolate',\n \"before:pointer-events-none before:absolute before:inset-y-0 before:left-2 before:right-2 before:-z-10 before:rounded-md before:border before:border-transparent before:bg-transparent before:transition-colors before:duration-200 before:content-['']\",\n showsNestedActiveConnector &&\n \"after:pointer-events-none after:absolute after:-left-2 after:top-1/2 after:-z-10 after:h-px after:w-5 after:-translate-y-1/2 after:rounded-full after:bg-current/25 after:content-['']\",\n active\n ? 'font-semibold text-foreground hover:before:border-primary'\n : 'text-foreground/80 hover:text-accent-foreground hover:before:border-primary hover:before:bg-accent',\n );\n }\n\n return active ? 'font-semibold text-foreground' : 'text-foreground/80 hover:bg-accent hover:text-accent-foreground';\n }\n\n protected chevronClasses(): string {\n return cn('ml-auto shrink-0 text-base leading-none transition-transform', this.isOpen() && 'rotate-90');\n }\n\n protected itemContainerClasses(): string {\n return cn(\n this.orientation() === 'horizontal' && this.level() === 0 ? 'relative' : 'w-full',\n this.compact() && 'flex justify-center',\n this.straightRailClasses(),\n );\n }\n\n protected groupContainerClasses(): string {\n return cn('w-full', this.level() > 0 && 'pt-2');\n }\n\n protected dividerClasses(): string {\n return cn(this.orientation() === 'horizontal' && this.level() === 0 ? 'mx-1 h-5 w-px' : 'my-2 w-full px-2');\n }\n\n protected groupHeadingClasses(): string {\n return cn(\n 'px-3 py-2 text-xs font-medium uppercase tracking-wide text-muted-foreground',\n this.item().classes?.title,\n );\n }\n\n protected childListClasses(): string {\n const isGroupedBranch = this.item().type === 'group' || this.item().type === 'mega';\n const usesStairsTree = this.collapseTree() === 'stairs';\n\n return cn(\n 'flex list-none flex-col gap-0.5 p-0',\n !this.compact() && 'mt-0.5',\n this.level() >= 0 &&\n !this.compact() &&\n !isGroupedBranch &&\n usesStairsTree &&\n cn(\n \"relative ml-[1.625rem] pl-2 before:absolute before:-top-2 before:bottom-0 before:left-0 before:w-px before:-translate-x-1/2 before:rounded-full before:content-['']\",\n this.isActive() ? 'before:bg-current/25' : 'before:bg-border',\n ),\n );\n }\n\n protected showStraightRailForChildren(): boolean {\n return (\n !this.compact() &&\n this.collapseTree() === 'straight' &&\n this.item().type !== 'group' &&\n this.item().type !== 'mega'\n );\n }\n\n private straightRailClasses(): string {\n if (!this.straightRail() || this.orientation() !== 'vertical' || this.compact()) {\n return '';\n }\n\n return cn(\n 'relative',\n \"before:pointer-events-none before:absolute before:left-[1.625rem] before:w-0 before:-z-10 before:border-l before:border-dotted before:content-['']\",\n this.straightRailActive() ? 'before:border-primary/50' : 'before:border-border/50',\n this.firstInBranch() ? 'before:-top-9' : 'before:-top-0.5',\n this.lastInBranch() ? 'before:bottom-[calc(100%-1.25rem)]' : 'before:-bottom-0.5',\n );\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, computed, inject, input, output } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { NavIconDirective } from '../../icon/nav-icon.directive';\nimport { NavItemComponent } from '../../item/nav-item.component';\nimport { NavItemContentComponent } from '../../item/nav-item-content.component';\nimport { NavService } from '../../service/nav.service';\nimport type {\n UiNavCollapseTree,\n UiNavHorizontalAppearance,\n UiNavNormalizedItem,\n UiNavSelection,\n} from '../../types/nav.types';\n\n@Component({\n selector: 'ui-nav-horizontal',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, NavItemComponent, NavItemContentComponent],\n host: {\n class: 'block w-full',\n },\n template: `\n <ul [class]=\"listClasses()\" role=\"menubar\" (keydown)=\"onKeydown($event)\">\n @for (item of items(); track item.key) {\n @switch (item.type) {\n @case ('group') {\n <ng-container [ngTemplateOutlet]=\"branchTemplate\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n }\n @case ('collapsible') {\n <ng-container [ngTemplateOutlet]=\"branchTemplate\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n }\n @case ('mega') {\n <ng-container [ngTemplateOutlet]=\"branchTemplate\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n }\n @default {\n <li\n ui-nav-item\n [navId]=\"navId()\"\n [item]=\"item\"\n [level]=\"0\"\n [orientation]=\"'horizontal'\"\n [compact]=\"compact()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n }\n }\n </ul>\n\n <ng-template #branchTemplate let-item>\n <li role=\"none\" class=\"relative\" [attr.data-ui-nav-item-key]=\"item.key\">\n <button\n type=\"button\"\n role=\"menuitem\"\n data-ui-nav-root-item=\"true\"\n [class]=\"triggerClasses(item)\"\n [attr.aria-expanded]=\"isPanelOpen(item)\"\n [attr.aria-controls]=\"item.panelId\"\n [attr.aria-haspopup]=\"'menu'\"\n [attr.aria-label]=\"compactLabel(item)\"\n [attr.title]=\"titleFor(item)\"\n [disabled]=\"item.disabled || null\"\n (click)=\"togglePanel(item)\"\n (mouseenter)=\"openPanel(item)\">\n <ui-nav-item-content\n [item]=\"item\"\n [active]=\"isItemActive(item)\"\n [compact]=\"compact()\"\n [orientation]=\"'horizontal'\"\n [level]=\"0\"\n [iconTemplate]=\"iconTemplate()\" />\n <span aria-hidden=\"true\" [class]=\"chevronClasses(item)\">⌄</span>\n </button>\n\n @if (isPanelOpen(item)) {\n <div\n [id]=\"item.panelId\"\n role=\"menu\"\n [class]=\"panelClasses(item)\"\n [attr.data-ui-nav-panel]=\"item.key\"\n (keydown)=\"onPanelKeydown($event)\">\n <ul [class]=\"panelListClasses(item)\" role=\"none\">\n @for (child of item.children; track child.key) {\n <li\n ui-nav-item\n [navId]=\"navId()\"\n [item]=\"child\"\n [level]=\"1\"\n [orientation]=\"'horizontal'\"\n [compact]=\"false\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n </ul>\n </div>\n }\n </li>\n </ng-template>\n `,\n})\nexport class NavHorizontalComponent {\n private readonly nav = inject(NavService);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly navId = input<string>('default');\n readonly appearance = input<UiNavHorizontalAppearance>('navbar');\n readonly items = input<readonly UiNavNormalizedItem[]>([]);\n readonly compact = input<boolean>(false);\n readonly itemClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavIconDirective | undefined>(undefined);\n readonly collapseTree = input<UiNavCollapseTree>('stairs');\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<UiNavSelection>();\n\n protected readonly listClasses = computed(() =>\n cn(\n 'flex min-w-0 list-none p-0',\n this.appearance() === 'flyout'\n ? 'items-center gap-2'\n : this.compact()\n ? 'justify-center gap-1'\n : 'items-center justify-center gap-1',\n ),\n );\n\n protected isItemActive(item: UiNavNormalizedItem): boolean {\n return this.nav.isItemActive(item, this.activeIds(), this.activeUrl());\n }\n\n protected isPanelOpen(item: UiNavNormalizedItem): boolean {\n return this.nav.isPanelOpen(this.navId(), item);\n }\n\n protected openPanel(item: UiNavNormalizedItem): void {\n this.nav.openPanel(this.navId(), item);\n }\n\n protected togglePanel(item: UiNavNormalizedItem): void {\n this.nav.togglePanel(this.navId(), item);\n }\n\n protected compactLabel(item: UiNavNormalizedItem): string | null {\n return this.nav.compactLabel(item, this.compact());\n }\n\n protected titleFor(item: UiNavNormalizedItem): string | null {\n return this.nav.titleFor(item, this.compact());\n }\n\n protected triggerClasses(item: UiNavNormalizedItem): string {\n return cn(\n 'ui-nav-trigger group/nav inline-flex min-w-0 items-center gap-3 rounded-md text-sm font-medium transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n this.appearance() === 'flyout'\n ? 'h-10 rounded-full border border-border/60 px-4 py-2 shadow-sm'\n : 'h-9 px-3 py-2',\n this.compact() && 'w-10 justify-center px-0',\n this.isItemActive(item)\n ? 'bg-accent text-accent-foreground'\n : 'text-foreground/80 hover:bg-accent hover:text-accent-foreground',\n item.classes?.wrapper,\n this.itemClass(),\n );\n }\n\n protected chevronClasses(item: UiNavNormalizedItem): string {\n return cn('ml-auto shrink-0 text-base leading-none transition-transform', this.isPanelOpen(item) && 'rotate-180');\n }\n\n protected panelClasses(item: UiNavNormalizedItem): string {\n return cn(\n this.appearance() === 'flyout'\n ? 'absolute left-0 top-[calc(100%+0.75rem)] z-50 rounded-2xl border border-border/70 bg-background/95 p-3 text-foreground shadow-2xl backdrop-blur'\n : 'absolute left-0 top-full z-50 mt-2 rounded-xl border border-border bg-popover p-2 text-popover-foreground shadow-lg',\n item.type === 'mega' ? 'w-[min(92vw,44rem)]' : 'min-w-56',\n );\n }\n\n protected panelListClasses(item: UiNavNormalizedItem): string {\n const columns = Math.min(Math.max(item.columns ?? (item.type === 'mega' ? 2 : 1), 1), 4);\n\n return cn(\n 'grid list-none gap-1 p-0',\n columns === 2 && 'md:grid-cols-2',\n columns === 3 && 'md:grid-cols-3',\n columns === 4 && 'md:grid-cols-4',\n );\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n const panelKey = this.nav.currentPanelKey(this.navId());\n this.nav.closePanel(this.navId());\n this.focusOpenPanelTrigger(panelKey);\n return;\n }\n\n const rootItems = this.rootFocusItems();\n if (rootItems.length === 0) {\n return;\n }\n\n const currentIndex = rootItems.indexOf(document.activeElement as HTMLElement);\n if (currentIndex === -1) {\n return;\n }\n\n if (event.key === 'ArrowDown') {\n const currentItem = rootItems[currentIndex];\n if (currentItem.getAttribute('aria-haspopup') === 'menu') {\n event.preventDefault();\n currentItem.click();\n queueMicrotask(() => this.focusFirstPanelItem(this.nav.currentPanelKey(this.navId())));\n }\n return;\n }\n\n if (event.key === 'ArrowRight' || event.key === 'ArrowLeft') {\n event.preventDefault();\n const direction = event.key === 'ArrowRight' ? 1 : -1;\n const nextIndex = (currentIndex + direction + rootItems.length) % rootItems.length;\n rootItems[nextIndex]?.focus();\n }\n }\n\n protected onPanelKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Escape') {\n return;\n }\n\n event.preventDefault();\n const panelKey = this.nav.currentPanelKey(this.navId());\n this.nav.closePanel(this.navId());\n this.focusOpenPanelTrigger(panelKey);\n }\n\n private rootFocusItems(): HTMLElement[] {\n return Array.from(this.host.nativeElement.querySelectorAll<HTMLElement>('[data-ui-nav-root-item=\"true\"]'));\n }\n\n private focusOpenPanelTrigger(panelKey: string | null): void {\n if (!panelKey) {\n return;\n }\n\n const trigger = this.host.nativeElement.querySelector<HTMLElement>(\n `[data-ui-nav-item-key=\"${panelKey}\"] [data-ui-nav-root-item=\"true\"]`,\n );\n trigger?.focus();\n }\n\n private focusFirstPanelItem(panelKey: string | null): void {\n if (!panelKey) {\n return;\n }\n\n const panel = this.host.nativeElement.querySelector<HTMLElement>(`[data-ui-nav-panel=\"${panelKey}\"]`);\n const item = panel?.querySelector<HTMLElement>('a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])');\n item?.focus();\n }\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { NavIconDirective } from '../../../icon/nav-icon.directive';\nimport type { UiNavCollapseTree, UiNavNormalizedItem, UiNavSelection } from '../../../types/nav.types';\nimport { NavHorizontalComponent } from '../nav-horizontal.component';\n\n@Component({\n selector: 'ui-nav-flyout',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NavHorizontalComponent],\n host: {\n class: 'block w-full',\n },\n template: `\n <ui-nav-horizontal\n [navId]=\"navId()\"\n [appearance]=\"'flyout'\"\n [items]=\"items()\"\n [compact]=\"compact()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n `,\n})\nexport class NavFlyoutComponent {\n readonly navId = input<string>('default');\n readonly items = input<readonly UiNavNormalizedItem[]>([]);\n readonly compact = input<boolean>(false);\n readonly itemClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavIconDirective | undefined>(undefined);\n readonly collapseTree = input<UiNavCollapseTree>('stairs');\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<UiNavSelection>();\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { NavIconDirective } from '../../../icon/nav-icon.directive';\nimport type { UiNavCollapseTree, UiNavNormalizedItem, UiNavSelection } from '../../../types/nav.types';\nimport { NavHorizontalComponent } from '../nav-horizontal.component';\n\n@Component({\n selector: 'ui-nav-navbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NavHorizontalComponent],\n host: {\n class: 'block w-full',\n },\n template: `\n <ui-nav-horizontal\n [navId]=\"navId()\"\n [appearance]=\"'navbar'\"\n [items]=\"items()\"\n [compact]=\"compact()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n `,\n})\nexport class NavNavbarComponent {\n readonly navId = input<string>('default');\n readonly items = input<readonly UiNavNormalizedItem[]>([]);\n readonly compact = input<boolean>(false);\n readonly itemClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavIconDirective | undefined>(undefined);\n readonly collapseTree = input<UiNavCollapseTree>('stairs');\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<UiNavSelection>();\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { NavIconDirective } from '../../../icon/nav-icon.directive';\nimport { NavItemComponent } from '../../../item/nav-item.component';\nimport type { UiNavCollapseTree, UiNavNormalizedItem, UiNavPosition, UiNavSelection } from '../../../types/nav.types';\n\n@Component({\n selector: 'ui-nav-sidebar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NavItemComponent],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-position]': 'position()',\n },\n template: `\n <ul [class]=\"listClasses()\" role=\"list\">\n @for (item of items(); track item.key) {\n <li\n ui-nav-item\n [navId]=\"navId()\"\n [item]=\"item\"\n [level]=\"0\"\n [orientation]=\"'vertical'\"\n [compact]=\"isCollapsed()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n </ul>\n `,\n})\nexport class NavSidebarComponent {\n readonly navId = input<string>('default');\n readonly items = input<readonly UiNavNormalizedItem[]>([]);\n readonly collapsed = input<boolean>(false);\n readonly compact = input<boolean>(false);\n readonly position = input<UiNavPosition>('left');\n readonly itemClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavIconDirective | undefined>(undefined);\n readonly collapseTree = input<UiNavCollapseTree>('stairs');\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<UiNavSelection>();\n\n protected readonly isCollapsed = computed(() => this.collapsed() || this.compact());\n\n protected readonly hostClasses = computed(() => cn('block', this.position() === 'right' && 'items-end text-right'));\n\n protected readonly listClasses = computed(() =>\n this.isCollapsed()\n ? cn('flex list-none flex-col items-center gap-0.5 p-0')\n : cn('flex list-none flex-col gap-0.5 p-0', this.position() === 'right' && 'items-end'),\n );\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, computed, inject, input, output } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { NavIconDirective } from '../../../icon/nav-icon.directive';\nimport { NavService } from '../../../service/nav.service';\nimport type {\n UiNavCollapseTree,\n UiNavDockbarMode,\n UiNavNormalizedItem,\n UiNavPosition,\n UiNavSelection,\n} from '../../../types/nav.types';\nimport { NavSidebarComponent } from '../sidebar/nav-sidebar.component';\n\n@Component({\n selector: 'ui-nav-dockbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NavSidebarComponent],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-mode]': 'mode()',\n '[attr.data-position]': 'position()',\n },\n template: `\n @if (isDrawerMode()) {\n <div class=\"relative\">\n <button\n type=\"button\"\n data-ui-nav-dockbar-trigger=\"true\"\n [class]=\"triggerClasses()\"\n [attr.aria-expanded]=\"isDrawerOpen()\"\n [attr.aria-controls]=\"panelId()\"\n aria-haspopup=\"dialog\"\n aria-label=\"Open navigation drawer\"\n (click)=\"toggleDrawer()\">\n <span aria-hidden=\"true\" class=\"text-lg leading-none\">☰</span>\n </button>\n\n @if (isDrawerOpen()) {\n <div class=\"fixed inset-0 z-40 bg-black/40\" aria-hidden=\"true\" (click)=\"closeDrawer()\"></div>\n\n <aside\n [id]=\"panelId()\"\n [class]=\"drawerClasses()\"\n role=\"dialog\"\n aria-modal=\"true\"\n (keydown)=\"onDrawerKeydown($event)\">\n <div class=\"mb-3 flex items-center justify-between gap-3 px-1\">\n <span class=\"text-sm font-semibold text-foreground\">Navigation</span>\n <button\n type=\"button\"\n class=\"inline-flex h-9 items-center rounded-md px-3 text-sm font-medium text-foreground/80 transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n (click)=\"closeDrawer()\">\n Close\n </button>\n </div>\n\n <ui-nav-sidebar\n [navId]=\"navId()\"\n [items]=\"items()\"\n [collapsed]=\"false\"\n [position]=\"position()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n </aside>\n }\n </div>\n } @else {\n <div [class]=\"railClasses()\">\n <ui-nav-sidebar\n [navId]=\"navId()\"\n [items]=\"items()\"\n [collapsed]=\"true\"\n [position]=\"position()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n </div>\n }\n `,\n})\nexport class NavDockbarComponent {\n private readonly nav = inject(NavService);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly navId = input<string>('default');\n readonly items = input<readonly UiNavNormalizedItem[]>([]);\n readonly mode = input<UiNavDockbarMode>('sticky');\n readonly position = input<UiNavPosition>('left');\n readonly itemClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavIconDirective | undefined>(undefined);\n readonly collapseTree = input<UiNavCollapseTree>('stairs');\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<UiNavSelection>();\n\n protected readonly isDrawerMode = computed(() => this.mode() === 'drawer');\n protected readonly isDrawerOpen = computed(() => this.nav.isDrawerOpen(this.navId()));\n protected readonly panelId = computed(() => `ui-nav-dockbar-${this.safeId(this.navId())}`);\n\n protected readonly hostClasses = computed(() =>\n cn('block', this.isDrawerMode() ? 'w-auto' : 'w-16', this.position() === 'right' && 'justify-self-end'),\n );\n\n protected readonly railClasses = computed(() =>\n cn(\n 'flex min-h-full w-16 justify-center rounded-2xl border border-border/60 bg-background/70 px-2 py-3 backdrop-blur',\n this.position() === 'right' && 'ml-auto',\n ),\n );\n\n protected triggerClasses(): string {\n return cn(\n 'inline-flex h-11 w-11 items-center justify-center rounded-2xl border border-border/60 bg-background/80 text-foreground shadow-sm transition-colors',\n 'hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n );\n }\n\n protected drawerClasses(): string {\n return cn(\n 'fixed bottom-4 top-4 z-50 w-72 overflow-y-auto rounded-2xl border border-border bg-background p-4 shadow-2xl',\n this.position() === 'right' ? 'right-4' : 'left-4',\n );\n }\n\n protected toggleDrawer(): void {\n const wasOpen = this.isDrawerOpen();\n this.nav.toggleDrawer(this.navId());\n\n if (wasOpen) {\n queueMicrotask(() => this.focusTrigger());\n return;\n }\n\n queueMicrotask(() => this.focusFirstDrawerItem());\n }\n\n protected closeDrawer(): void {\n if (!this.isDrawerOpen()) {\n return;\n }\n\n this.nav.closeDrawer(this.navId());\n queueMicrotask(() => this.focusTrigger());\n }\n\n protected onDrawerKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Escape') {\n return;\n }\n\n event.preventDefault();\n this.closeDrawer();\n }\n\n private focusFirstDrawerItem(): void {\n const panel = this.host.nativeElement.querySelector<HTMLElement>(`#${this.panelId()}`);\n const focusable = panel?.querySelector<HTMLElement>(\n 'a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n );\n focusable?.focus();\n }\n\n private focusTrigger(): void {\n const trigger = this.host.nativeElement.querySelector<HTMLElement>('[data-ui-nav-dockbar-trigger=\"true\"]');\n trigger?.focus();\n }\n\n private safeId(value: string): string {\n const normalized = value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9_-]+/g, '-');\n return normalized || 'default';\n }\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { NavIconDirective } from '../icon/nav-icon.directive';\nimport { NavFlyoutComponent } from '../orientation/horizontal/flyout/nav-flyout.component';\nimport { NavNavbarComponent } from '../orientation/horizontal/navbar/nav-navbar.component';\nimport { NavDockbarComponent } from '../orientation/vertical/dockbar/nav-dockbar.component';\nimport { NavSidebarComponent } from '../orientation/vertical/sidebar/nav-sidebar.component';\nimport type { UiNavCollapseTree, UiNavNormalizedItem, UiNavSelection, UiNavState } from '../types/nav.types';\n\n@Component({\n selector: 'ui-nav-outlet',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NavDockbarComponent, NavFlyoutComponent, NavNavbarComponent, NavSidebarComponent],\n template: `\n @let navState = state();\n\n @if (navState.orientation === 'horizontal' && navState.appearance === 'flyout') {\n <ui-nav-flyout\n [navId]=\"navState.id\"\n [items]=\"items()\"\n [compact]=\"compact()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n } @else if (navState.orientation === 'horizontal') {\n <ui-nav-navbar\n [navId]=\"navState.id\"\n [items]=\"items()\"\n [compact]=\"compact()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n } @else if (navState.appearance === 'dockbar') {\n <ui-nav-dockbar\n [navId]=\"navState.id\"\n [items]=\"items()\"\n [mode]=\"navState.dockbarMode\"\n [position]=\"navState.position\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n } @else {\n <ui-nav-sidebar\n [navId]=\"navState.id\"\n [items]=\"items()\"\n [collapsed]=\"navState.collapsed\"\n [position]=\"navState.position\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n }\n `,\n})\nexport class UiNavOutletComponent {\n readonly state = input.required<UiNavState>();\n readonly items = input<readonly UiNavNormalizedItem[]>([]);\n readonly compact = input(false);\n readonly itemClass = input('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavIconDirective | undefined>(undefined);\n readonly collapseTree = input<UiNavCollapseTree>('stairs');\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<UiNavSelection>();\n}\n","import { InjectionToken, type Signal } from '@angular/core';\nimport type { UiNavState } from '../../types/nav.types';\n\nexport interface UiNavShellContext {\n readonly state: Signal<UiNavState>;\n readonly displayState: Signal<UiNavState>;\n readonly collapseEnabled: Signal<boolean>;\n toggleCollapsed(): void;\n}\n\nexport const UI_NAV_SHELL = new InjectionToken<UiNavShellContext>('UI_NAV_SHELL');\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { UI_NAV_SHELL } from '../shared/nav-shell.token';\n\n@Component({\n selector: 'ui-nav-footer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n <div class=\"flex h-full items-center\">\n <ng-content />\n </div>\n `,\n})\nexport class UiNavFooterComponent {\n private readonly shell = inject(UI_NAV_SHELL, { optional: true });\n\n readonly class = input('', { alias: 'class' });\n\n protected readonly isHorizontal = computed(() => this.shell?.displayState().orientation === 'horizontal');\n\n protected readonly hostClasses = computed(() =>\n cn(\n this.isHorizontal()\n ? 'relative z-10 block h-full w-auto shrink-0'\n : 'sticky bottom-0 z-10 block h-12 shrink-0 border-t border-border/70',\n this.class(),\n ),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { UI_NAV_SHELL } from '../shared/nav-shell.token';\n\n@Component({\n selector: 'ui-nav-header',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-collapsed]': 'displayCollapsed()',\n },\n template: `\n <div class=\"flex h-full items-center gap-3 px-3\">\n <div [class]=\"contentClasses()\">\n <ng-content />\n </div>\n\n @if (showToggle()) {\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 shrink-0 items-center justify-center bg-transparent text-foreground/80 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n [attr.aria-label]=\"toggleAriaLabel()\"\n [attr.title]=\"toggleAriaLabel()\"\n data-ui-nav-header-toggle=\"true\"\n (click)=\"toggleCollapsed()\">\n <span\n aria-hidden=\"true\"\n data-ui-nav-header-toggle-icon=\"true\"\n class=\"material-symbols-outlined leading-none\"\n style=\"font-size: 18px; line-height: 18px;\">\n {{ toggleIconName() }}\n </span>\n </button>\n }\n </div>\n `,\n})\nexport class UiNavHeaderComponent {\n private readonly shell = inject(UI_NAV_SHELL);\n\n readonly toggle = input(false);\n readonly class = input('', { alias: 'class' });\n\n protected readonly collapsed = computed(() => this.shell.state().collapsed);\n protected readonly displayCollapsed = computed(() => this.shell.displayState().collapsed);\n protected readonly isHorizontal = computed(() => this.shell.displayState().orientation === 'horizontal');\n protected readonly showToggle = computed(() => {\n if (this.isHorizontal()) {\n return false;\n }\n\n return this.toggle() || (this.shell.collapseEnabled() && !this.displayCollapsed());\n });\n protected readonly toggleAriaLabel = computed(() => (this.collapsed() ? 'Expand navigation' : 'Collapse navigation'));\n protected readonly toggleIconName = computed(() => (this.collapsed() ? 'left_panel_open' : 'left_panel_close'));\n protected readonly contentClasses = computed(() => (this.isHorizontal() ? 'min-w-0' : 'min-w-0 flex-1'));\n protected readonly hostClasses = computed(() =>\n cn(\n this.isHorizontal()\n ? 'relative z-10 block h-full w-auto shrink-0'\n : 'sticky top-0 z-10 block h-12 shrink-0 border-b border-border/70',\n this.class(),\n ),\n );\n\n protected toggleCollapsed(): void {\n this.shell.toggleCollapsed();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport type { UiNavOrientation } from '../../types/nav.types';\n\n@Component({\n selector: 'ui-nav-main',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: ` <ng-content /> `,\n})\nexport class UiNavMainComponent {\n readonly class = input('', { alias: 'class' });\n readonly orientation = input<UiNavOrientation>('vertical');\n\n protected readonly hostClasses = computed(() =>\n cn(\n 'min-h-0 flex-1',\n this.orientation() === 'horizontal'\n ? 'flex h-full min-w-0 items-stretch justify-center overflow-visible'\n : 'block overflow-y-auto overflow-x-hidden scrollbar-thin scrollbar-thumb-primary scrollbar-track-primary/10',\n this.class(),\n ),\n );\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n forwardRef,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { NavIconDirective } from './icon/nav-icon.directive';\nimport { injectUiNavController } from './internal/nav.controller';\nimport { UiNavOutletComponent } from './internal/nav-outlet.component';\nimport { UiNavFooterComponent } from './shell/footer/nav-footer.component';\nimport { UiNavHeaderComponent } from './shell/header/nav-header.component';\nimport { UiNavMainComponent } from './shell/main/nav-main.component';\nimport { UI_NAV_SHELL, type UiNavShellContext } from './shell/shared/nav-shell.token';\nimport {\n type UiNavAppearance,\n type UiNavCollapseTree,\n type UiNavDockbarMode,\n type UiNavItem,\n type UiNavOrientation,\n type UiNavPosition,\n type UiNavSelection,\n} from './types/nav.types';\n\n@Component({\n selector: 'ui-nav',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [UiNavMainComponent, UiNavOutletComponent],\n providers: [{ provide: UI_NAV_SHELL, useExisting: forwardRef(() => UiNavComponent) }],\n host: {\n '[class]': 'hostClasses()',\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.data-nav-id]': 'resolvedState().id',\n '[attr.data-orientation]': 'resolvedState().orientation',\n '[attr.data-appearance]': 'resolvedState().appearance',\n '[attr.data-position]': 'resolvedState().orientation === \"vertical\" ? resolvedState().position : null',\n '[attr.data-collapse-tree]': 'collapseTree()',\n '[attr.data-preview-expanded]': 'previewRailExpanded() ? \"true\" : null',\n '(mouseenter)': 'setHoverPreview(true)',\n '(mouseleave)': 'setHoverPreview(false)',\n },\n template: `\n @let iconTpl = iconTemplate();\n @let navState = displayState();\n\n <div [class]=\"shellClasses()\">\n @if (headerSlot()) {\n <ng-content select=\"ui-nav-header\" />\n }\n\n <ui-nav-main [orientation]=\"navState.orientation\">\n <ui-nav-outlet\n [state]=\"navState\"\n [items]=\"normalizedItems()\"\n [compact]=\"compact()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIdSet()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTpl\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIds.set($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n </ui-nav-main>\n\n @if (footerSlot()) {\n <ng-content select=\"ui-nav-footer\" />\n }\n </div>\n `,\n})\nexport class UiNavComponent implements UiNavShellContext {\n readonly navId = input<string>('default', { alias: 'id' });\n readonly data = input<readonly UiNavItem[]>([]);\n readonly items = input<readonly UiNavItem[]>([]);\n readonly orientation = input<UiNavOrientation>('vertical');\n readonly appearance = input<UiNavAppearance | null>(null);\n readonly position = input<UiNavPosition | null>(null);\n readonly collapsed = input<boolean | null>(null);\n readonly dockbarMode = input<UiNavDockbarMode | null>(null);\n readonly ariaLabel = input<string>('Primary navigation');\n readonly compact = input<boolean>(false);\n readonly previewExpanded = input<boolean>(false);\n readonly sidebarCollapse = input(false, { alias: 'nav-sidebar-collapse', transform: booleanAttribute });\n readonly collapseTree = input<UiNavCollapseTree>('stairs', { alias: 'collapse-tree' });\n readonly class = input<string>('');\n readonly itemClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string> | readonly string[] | null>(null);\n readonly activeUrl = input<string | null>(null);\n readonly openedIds = model<readonly string[]>([]);\n readonly itemSelected = output<UiNavSelection>();\n\n private readonly hoverPreviewExpanded = signal(false);\n private readonly controller = injectUiNavController({\n navId: this.navId,\n data: this.data,\n items: this.items,\n orientation: this.orientation,\n appearance: this.appearance,\n position: this.position,\n collapsed: this.collapsed,\n dockbarMode: this.dockbarMode,\n compact: this.compact,\n activeIds: this.activeIds,\n });\n\n protected readonly headerSlot = contentChild(UiNavHeaderComponent);\n protected readonly footerSlot = contentChild(UiNavFooterComponent);\n protected readonly iconTemplate = contentChild(NavIconDirective);\n protected readonly normalizedItems = this.controller.normalizedItems;\n protected readonly resolvedState = this.controller.resolvedState;\n protected readonly activeIdSet = this.controller.activeIdSet;\n readonly previewRailExpanded = computed(() => {\n const state = this.resolvedState();\n\n if (state.orientation !== 'vertical' || state.appearance !== 'sidebar' || !state.collapsed) {\n return false;\n }\n\n return this.previewExpanded() || (this.sidebarCollapse() && this.hoverPreviewExpanded());\n });\n readonly previewRailOffset = computed(() => (this.previewRailExpanded() ? '15rem' : '0px'));\n readonly displayState = computed(() => {\n const state = this.resolvedState();\n return this.previewRailExpanded() ? { ...state, collapsed: false } : state;\n });\n readonly collapseEnabled = computed(() => {\n const state = this.resolvedState();\n return this.sidebarCollapse() && state.orientation === 'vertical' && state.appearance === 'sidebar';\n });\n protected readonly shellClasses = computed(() =>\n cn(\n 'flex h-full min-h-0 transition-[width,box-shadow,transform] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none',\n this.resolvedState().orientation === 'horizontal'\n ? 'flex-row items-stretch overflow-visible'\n : 'flex-col overflow-hidden',\n this.resolvedState().position === 'right' ? 'origin-right' : 'origin-left',\n this.previewRailExpanded() && [\n 'absolute inset-y-0 z-20 w-76 overflow-hidden bg-background shadow-xl',\n this.resolvedState().position === 'right'\n ? 'right-0 border-l border-border/70'\n : 'left-0 border-r border-border/70',\n ],\n ),\n );\n readonly state = this.resolvedState;\n\n protected readonly hostClasses = computed(() =>\n cn(\n 'relative block min-h-0 text-foreground transition-[width] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none',\n this.resolvedState().orientation === 'horizontal'\n ? 'w-full'\n : this.resolvedState().appearance === 'dockbar'\n ? 'w-auto'\n : this.resolvedState().collapsed\n ? 'w-16'\n : 'w-76',\n this.resolvedState().orientation === 'horizontal' || this.previewRailExpanded()\n ? 'overflow-visible'\n : 'overflow-hidden',\n this.class(),\n ),\n );\n\n toggleCollapsed(): void {\n this.controller.toggleCollapsed();\n }\n\n protected setHoverPreview(value: boolean): void {\n this.hoverPreviewExpanded.set(this.sidebarCollapse() ? value : false);\n }\n}\n","import { computed, Directive, effect, inject, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { UI_NAV_SHELL } from '../shared/nav-shell.token';\n\n@Directive({\n selector: '[uiNavCollapseRoot]',\n host: {\n '[class.w-full]': 'collapseEnabled()',\n '[class.justify-center]': 'displayCollapsed()',\n },\n})\nexport class UiNavCollapseRootDirective {\n private readonly shell = inject(UI_NAV_SHELL);\n\n protected readonly collapseEnabled = computed(\n () => this.shell.collapseEnabled() && this.shell.displayState().orientation === 'vertical',\n );\n protected readonly displayCollapsed = computed(() => this.collapseEnabled() && this.shell.displayState().collapsed);\n}\n\n@Directive({\n selector: '[uiNavCollapseExpanded]',\n})\nexport class UiNavCollapseExpandedDirective {\n private readonly shell = inject(UI_NAV_SHELL);\n private readonly templateRef = inject(TemplateRef<unknown>);\n private readonly viewContainer = inject(ViewContainerRef);\n\n private hasView = false;\n private readonly shouldRender = computed(\n () =>\n !this.shell.collapseEnabled() ||\n this.shell.displayState().orientation !== 'vertical' ||\n !this.shell.displayState().collapsed,\n );\n\n constructor() {\n effect(() => {\n if (this.shouldRender()) {\n if (!this.hasView) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView = true;\n }\n return;\n }\n\n if (this.hasView) {\n this.viewContainer.clear();\n this.hasView = false;\n }\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edsis-ui-nav.mjs","sources":["../../../library/ui/nav/icon/nav-icon.directive.ts","../../../library/ui/nav/service/nav.service.ts","../../../library/ui/nav/types/nav.types.ts","../../../library/ui/nav/internal/nav.controller.ts","../../../library/ui/nav/item/nav-item-content.component.ts","../../../library/ui/nav/item/nav-item.component.ts","../../../library/ui/nav/orientation/horizontal/nav-horizontal.component.ts","../../../library/ui/nav/orientation/horizontal/flyout/nav-flyout.component.ts","../../../library/ui/nav/orientation/horizontal/navbar/nav-navbar.component.ts","../../../library/ui/nav/orientation/vertical/sidebar/nav-sidebar.component.ts","../../../library/ui/nav/orientation/vertical/dockbar/nav-dockbar.component.ts","../../../library/ui/nav/internal/nav-outlet.component.ts","../../../library/ui/nav/shell/shared/nav-shell.token.ts","../../../library/ui/nav/shell/footer/nav-footer.component.ts","../../../library/ui/nav/shell/header/nav-header.component.ts","../../../library/ui/nav/shell/main/nav-main.component.ts","../../../library/ui/nav/nav.component.ts","../../../library/ui/nav/shell/collapse/nav-collapse.directive.ts","../../../library/ui/nav/edsis-ui-nav.ts"],"sourcesContent":["import { Directive, TemplateRef, inject } from '@angular/core';\nimport type { UiNavIconContext } from '../types/nav.types';\n\n@Directive({\n selector: 'ng-template[uiNavIcon]',\n})\nexport class NavIconDirective {\n readonly template = inject<TemplateRef<UiNavIconContext>>(TemplateRef);\n\n static ngTemplateContextGuard(_directive: NavIconDirective, context: unknown): context is UiNavIconContext {\n return true;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Injectable, computed, inject, signal, type Signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router, type IsActiveMatchOptions } from '@angular/router';\nimport type {\n UiNavAppearance,\n UiNavDockbarMode,\n UiNavIconContext,\n UiNavNormalizedItem,\n UiNavOrientation,\n UiNavPosition,\n UiNavRegisterInput,\n UiNavState,\n} from './nav.service.types';\n\nconst DEFAULT_NAV_ID = 'default';\nconst DEFAULT_VERTICAL_APPEARANCE: UiNavAppearance = 'sidebar';\nconst DEFAULT_HORIZONTAL_APPEARANCE: UiNavAppearance = 'navbar';\nconst DEFAULT_POSITION: UiNavPosition = 'left';\nconst DEFAULT_DOCKBAR_MODE: UiNavDockbarMode = 'sticky';\nconst VERTICAL_APPEARANCE_STORAGE_KEY = 'nav-vertical-appearance';\nconst HORIZONTAL_APPEARANCE_STORAGE_KEY = 'nav-horizontal-appearance';\n\n@Injectable({ providedIn: 'root' })\nexport class NavService {\n private readonly documentRef = inject(DOCUMENT, { optional: true });\n private readonly router = inject(Router, { optional: true });\n private readonly routerUrl = signal(this.router?.url ?? '/');\n private readonly states = signal<Record<string, UiNavState>>({});\n private readonly openPanelKeys = signal<Record<string, string | null>>({});\n private readonly drawerOpenState = signal<Record<string, boolean>>({});\n\n readonly openPanelKey = computed(() => this.openPanelKeys()[DEFAULT_NAV_ID] ?? null);\n\n readonly exactMatchOptions: IsActiveMatchOptions = {\n paths: 'exact',\n queryParams: 'exact',\n fragment: 'exact',\n matrixParams: 'exact',\n };\n\n readonly subsetMatchOptions: IsActiveMatchOptions = {\n paths: 'subset',\n queryParams: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n };\n\n constructor() {\n this.ensureAppearanceDefaults();\n\n this.router?.events.pipe(takeUntilDestroyed()).subscribe((event) => {\n if (event instanceof NavigationEnd) {\n this.routerUrl.set(event.urlAfterRedirects);\n }\n });\n }\n\n register(input: UiNavRegisterInput): UiNavState {\n this.ensureAppearanceDefaults();\n\n const state = this.resolveState(input);\n this.states.update((states) => ({ ...states, [state.id]: state }));\n this.persistState(state);\n\n return state;\n }\n\n unregister(id: string): void {\n const navId = this.normalizeId(id);\n this.states.update((states) => this.withoutKey(states, navId));\n this.openPanelKeys.update((state) => this.withoutKey(state, navId));\n this.drawerOpenState.update((state) => this.withoutKey(state, navId));\n }\n\n state(id: string): Signal<UiNavState | null> {\n const navId = this.normalizeId(id);\n return computed(() => this.states()[navId] ?? null);\n }\n\n currentState(id: string): UiNavState | null {\n return this.states()[this.normalizeId(id)] ?? null;\n }\n\n currentPanelKey(id: string): string | null {\n return this.openPanelKeys()[this.normalizeId(id)] ?? null;\n }\n\n update(id: string, patch: Partial<UiNavRegisterInput>): UiNavState {\n const navId = this.normalizeId(id);\n const current =\n this.states()[navId] ?? this.resolveState({ id: navId, orientation: patch.orientation ?? 'vertical' });\n\n return this.register({\n id: navId,\n orientation: patch.orientation ?? current.orientation,\n appearance: patch.appearance ?? current.appearance,\n position: patch.position ?? current.position,\n collapsed: patch.collapsed ?? current.collapsed,\n dockbarMode: patch.dockbarMode ?? current.dockbarMode,\n });\n }\n\n setAppearance(id: string, appearance: UiNavAppearance): UiNavState {\n return this.update(id, { appearance });\n }\n\n setPosition(id: string, position: UiNavPosition): UiNavState {\n return this.update(id, { position });\n }\n\n setCollapsed(id: string, collapsed: boolean): UiNavState {\n return this.update(id, { collapsed });\n }\n\n toggleCollapsed(id: string): UiNavState {\n const navId = this.normalizeId(id);\n const current = this.states()[navId] ?? this.resolveState({ id: navId, orientation: 'vertical' });\n\n return this.setCollapsed(navId, !current.collapsed);\n }\n\n setDockbarMode(id: string, mode: UiNavDockbarMode): UiNavState {\n return this.update(id, { dockbarMode: mode });\n }\n\n isRouterItem(item: UiNavNormalizedItem): boolean {\n return !!item.link && !item.externalLink;\n }\n\n hrefFor(item: UiNavNormalizedItem): string | null {\n if (item.href) {\n return item.href;\n }\n\n if (item.externalLink && typeof item.link === 'string') {\n return item.link;\n }\n\n return null;\n }\n\n relFor(item: UiNavNormalizedItem): string | null {\n if (item.rel) {\n return item.rel;\n }\n\n return item.target === '_blank' || item.externalLink ? 'noopener noreferrer' : null;\n }\n\n routerLinkActiveOptions(item: UiNavNormalizedItem): IsActiveMatchOptions {\n return item.isActiveMatchOptions ?? (item.exactMatch ? this.exactMatchOptions : this.subsetMatchOptions);\n }\n\n itemRole(orientation: UiNavOrientation, level: number): 'menuitem' | null {\n return orientation === 'horizontal' || level > 0 ? 'menuitem' : null;\n }\n\n compactLabel(item: UiNavNormalizedItem, compact: boolean): string | null {\n return compact ? (item.tooltip ?? item.title ?? null) : null;\n }\n\n titleFor(item: UiNavNormalizedItem, compact: boolean): string | null {\n return item.tooltip ?? (compact ? (item.title ?? null) : null);\n }\n\n compactFallback(item: UiNavNormalizedItem): string {\n return (item.title ?? item.id ?? '?').trim().slice(0, 2);\n }\n\n iconContext(\n item: UiNavNormalizedItem,\n active: boolean,\n level: number,\n orientation: UiNavOrientation,\n ): UiNavIconContext {\n return {\n $implicit: item.icon ?? '',\n icon: item.icon ?? '',\n item: item.source,\n active,\n orientation,\n level,\n };\n }\n\n isItemActive(item: UiNavNormalizedItem, activeIds: ReadonlySet<string>, explicitActiveUrl: string | null): boolean {\n if (item.active || activeIds.has(item.stateId) || activeIds.has(item.key)) {\n return true;\n }\n\n if (this.matchesActiveUrl(item, explicitActiveUrl)) {\n return true;\n }\n\n return item.children.some((child) => this.isItemActive(child, activeIds, explicitActiveUrl));\n }\n\n isPanelOpen(navIdOrItem: string | UiNavNormalizedItem, item?: UiNavNormalizedItem): boolean {\n const { navId, navItem } = this.resolvePanelArgs(navIdOrItem, item);\n\n return this.openPanelKeys()[navId] === navItem.key;\n }\n\n openPanel(navIdOrItem: string | UiNavNormalizedItem, item?: UiNavNormalizedItem): void {\n const { navId, navItem } = this.resolvePanelArgs(navIdOrItem, item);\n\n if (navItem.disabled) {\n return;\n }\n\n this.openPanelKeys.update((state) => ({ ...state, [navId]: navItem.key }));\n }\n\n togglePanel(navIdOrItem: string | UiNavNormalizedItem, item?: UiNavNormalizedItem): void {\n const { navId, navItem } = this.resolvePanelArgs(navIdOrItem, item);\n\n if (navItem.disabled) {\n return;\n }\n\n this.openPanelKeys.update((state) => ({\n ...state,\n [navId]: state[navId] === navItem.key ? null : navItem.key,\n }));\n }\n\n closePanel(id = DEFAULT_NAV_ID): void {\n const navId = this.normalizeId(id);\n this.openPanelKeys.update((state) => ({ ...state, [navId]: null }));\n }\n\n isDrawerOpen(id: string): boolean {\n return this.drawerOpenState()[this.normalizeId(id)] ?? false;\n }\n\n openDrawer(id: string): void {\n const navId = this.normalizeId(id);\n this.drawerOpenState.update((state) => ({ ...state, [navId]: true }));\n }\n\n toggleDrawer(id: string): void {\n const navId = this.normalizeId(id);\n this.drawerOpenState.update((state) => ({ ...state, [navId]: !(state[navId] ?? false) }));\n }\n\n closeDrawer(id: string): void {\n const navId = this.normalizeId(id);\n this.drawerOpenState.update((state) => ({ ...state, [navId]: false }));\n }\n\n private matchesActiveUrl(item: UiNavNormalizedItem, explicitActiveUrl: string | null): boolean {\n if (!item.link || item.externalLink || typeof item.link !== 'string') {\n return false;\n }\n\n const activeUrl = explicitActiveUrl ?? this.routerUrl();\n const link = item.link;\n\n if (link === '/') {\n return activeUrl === '/';\n }\n\n if (item.exactMatch || item.isActiveMatchOptions?.paths === 'exact') {\n return activeUrl === link;\n }\n\n return activeUrl === link || activeUrl.startsWith(`${link}/`) || activeUrl.startsWith(`${link}?`);\n }\n\n private resolveState(input: UiNavRegisterInput): UiNavState {\n const id = this.normalizeId(input.id);\n const orientation = input.orientation;\n\n return {\n id,\n orientation,\n appearance: this.resolveAppearance(id, orientation, input.appearance),\n position: this.resolvePosition(id, input.position),\n collapsed: this.resolveCollapsed(id, input.collapsed),\n dockbarMode: this.resolveDockbarMode(id, input.dockbarMode),\n };\n }\n\n private resolveAppearance(\n id: string,\n orientation: UiNavOrientation,\n appearance: UiNavAppearance | null | undefined,\n ): UiNavAppearance {\n if (this.isAppearanceForOrientation(appearance, orientation)) {\n return appearance;\n }\n\n const stored = this.readStorage(this.instanceStorageKey(id, 'appearance'));\n if (this.isAppearanceForOrientation(stored, orientation)) {\n return stored;\n }\n\n return this.readOrientationAppearance(orientation);\n }\n\n private resolvePosition(id: string, position: UiNavPosition | null | undefined): UiNavPosition {\n if (this.isPosition(position)) {\n return position;\n }\n\n const stored = this.readStorage(this.instanceStorageKey(id, 'position'));\n\n return this.isPosition(stored) ? stored : DEFAULT_POSITION;\n }\n\n private resolveCollapsed(id: string, collapsed: boolean | null | undefined): boolean {\n if (typeof collapsed === 'boolean') {\n return collapsed;\n }\n\n const stored = this.readStorage(this.instanceStorageKey(id, 'collapsed'));\n\n if (stored === 'true') {\n return true;\n }\n\n if (stored === 'false') {\n return false;\n }\n\n return false;\n }\n\n private resolveDockbarMode(id: string, mode: UiNavDockbarMode | null | undefined): UiNavDockbarMode {\n if (this.isDockbarMode(mode)) {\n return mode;\n }\n\n const stored = this.readStorage(this.instanceStorageKey(id, 'dockbar-mode'));\n\n return this.isDockbarMode(stored) ? stored : DEFAULT_DOCKBAR_MODE;\n }\n\n private persistState(state: UiNavState): void {\n this.writeStorage(this.instanceStorageKey(state.id, 'orientation'), state.orientation);\n this.writeStorage(this.instanceStorageKey(state.id, 'appearance'), state.appearance);\n this.writeStorage(this.instanceStorageKey(state.id, 'position'), state.position);\n this.writeStorage(this.instanceStorageKey(state.id, 'collapsed'), String(state.collapsed));\n this.writeStorage(this.instanceStorageKey(state.id, 'dockbar-mode'), state.dockbarMode);\n }\n\n private readOrientationAppearance(orientation: UiNavOrientation): UiNavAppearance {\n const key = orientation === 'vertical' ? VERTICAL_APPEARANCE_STORAGE_KEY : HORIZONTAL_APPEARANCE_STORAGE_KEY;\n const fallback = orientation === 'vertical' ? DEFAULT_VERTICAL_APPEARANCE : DEFAULT_HORIZONTAL_APPEARANCE;\n const stored = this.readStorage(key);\n\n if (this.isAppearanceForOrientation(stored, orientation)) {\n return stored;\n }\n\n this.writeStorage(key, fallback);\n\n return fallback;\n }\n\n private ensureAppearanceDefaults(): void {\n if (!this.isVerticalAppearance(this.readStorage(VERTICAL_APPEARANCE_STORAGE_KEY))) {\n this.writeStorage(VERTICAL_APPEARANCE_STORAGE_KEY, DEFAULT_VERTICAL_APPEARANCE);\n }\n\n if (!this.isHorizontalAppearance(this.readStorage(HORIZONTAL_APPEARANCE_STORAGE_KEY))) {\n this.writeStorage(HORIZONTAL_APPEARANCE_STORAGE_KEY, DEFAULT_HORIZONTAL_APPEARANCE);\n }\n }\n\n private storage(): Storage | null {\n try {\n return this.documentRef?.defaultView?.localStorage ?? null;\n } catch {\n return null;\n }\n }\n\n private readStorage(key: string): string | null {\n try {\n return this.storage()?.getItem(key) ?? null;\n } catch {\n return null;\n }\n }\n\n private writeStorage(key: string, value: string): void {\n try {\n this.storage()?.setItem(key, value);\n } catch {\n return;\n }\n }\n\n private instanceStorageKey(id: string, property: string): string {\n return `nav:${id}:${property}`;\n }\n\n private normalizeId(id: string): string {\n return id.trim() || DEFAULT_NAV_ID;\n }\n\n private withoutKey<T>(record: Record<string, T>, key: string): Record<string, T> {\n const next = { ...record };\n delete next[key];\n\n return next;\n }\n\n private resolvePanelArgs(\n navIdOrItem: string | UiNavNormalizedItem,\n item: UiNavNormalizedItem | undefined,\n ): { navId: string; navItem: UiNavNormalizedItem } {\n if (typeof navIdOrItem === 'string') {\n return { navId: this.normalizeId(navIdOrItem), navItem: item as UiNavNormalizedItem };\n }\n\n return { navId: DEFAULT_NAV_ID, navItem: navIdOrItem };\n }\n\n private isAppearanceForOrientation(\n value: string | null | undefined,\n orientation: UiNavOrientation,\n ): value is UiNavAppearance {\n return orientation === 'vertical' ? this.isVerticalAppearance(value) : this.isHorizontalAppearance(value);\n }\n\n private isVerticalAppearance(value: string | null | undefined): value is 'sidebar' | 'dockbar' {\n return value === 'sidebar' || value === 'dockbar';\n }\n\n private isHorizontalAppearance(value: string | null | undefined): value is 'navbar' | 'flyout' {\n return value === 'navbar' || value === 'flyout';\n }\n\n private isPosition(value: string | null | undefined): value is UiNavPosition {\n return value === 'left' || value === 'right';\n }\n\n private isDockbarMode(value: string | null | undefined): value is UiNavDockbarMode {\n return value === 'drawer' || value === 'sticky';\n }\n}\n","import type { IsActiveMatchOptions, Params, QueryParamsHandling, UrlTree } from '@angular/router';\n\nexport type UiNavOrientation = 'vertical' | 'horizontal';\n\nexport type UiNavVerticalAppearance = 'sidebar' | 'dockbar';\nexport type UiNavHorizontalAppearance = 'navbar' | 'flyout';\nexport type UiNavAppearance = UiNavVerticalAppearance | UiNavHorizontalAppearance;\nexport type UiNavCollapseTree = 'stairs' | 'straight';\nexport type UiNavPosition = 'left' | 'right';\nexport type UiNavDockbarMode = 'drawer' | 'sticky';\n\nexport interface UiNavRegisterInput {\n readonly id: string;\n readonly orientation: UiNavOrientation;\n readonly appearance?: UiNavAppearance | null;\n readonly position?: UiNavPosition | null;\n readonly collapsed?: boolean | null;\n readonly dockbarMode?: UiNavDockbarMode | null;\n}\n\nexport interface UiNavState {\n readonly id: string;\n readonly orientation: UiNavOrientation;\n readonly appearance: UiNavAppearance;\n readonly position: UiNavPosition;\n readonly collapsed: boolean;\n readonly dockbarMode: UiNavDockbarMode;\n}\n\nexport type UiNavItemType =\n | 'item'\n | 'basic'\n | 'aside'\n | 'group'\n | 'collapsible'\n | 'collapsable'\n | 'mega'\n | 'divider'\n | 'spacer';\n\nexport type UiNavNormalizedItemType = 'item' | 'group' | 'collapsible' | 'mega' | 'divider' | 'spacer';\n\nexport type UiNavLink = string | readonly unknown[] | UrlTree;\n\nexport interface UiNavItemClasses {\n readonly title?: string;\n readonly subtitle?: string;\n readonly icon?: string;\n readonly wrapper?: string;\n}\n\nexport interface UiNavItemBadge {\n readonly title?: string;\n readonly classes?: string;\n}\n\nexport type UiNavVisibilityHandler = (item: UiNavItem) => boolean;\nexport type UiNavActionHandler = (item: UiNavItem) => void;\n\nexport interface UiNavItem {\n readonly id?: string;\n readonly type?: UiNavItemType;\n readonly title?: string;\n readonly subtitle?: string;\n readonly active?: boolean;\n readonly disabled?: boolean;\n readonly tooltip?: string;\n readonly classes?: UiNavItemClasses;\n readonly icon?: string;\n readonly badge?: UiNavItemBadge;\n readonly meta?: Record<string, unknown>;\n readonly isHidden?: UiNavVisibilityHandler;\n readonly link?: UiNavLink;\n readonly href?: string;\n readonly fragment?: string;\n readonly preserveFragment?: boolean;\n readonly queryParams?: Params | null;\n readonly queryParamsHandling?: QueryParamsHandling | null;\n readonly externalLink?: boolean;\n readonly target?: '_blank' | '_self' | '_parent' | '_top' | string;\n readonly rel?: string;\n readonly exactMatch?: boolean;\n readonly isActiveMatchOptions?: IsActiveMatchOptions;\n readonly action?: UiNavActionHandler;\n readonly columns?: number;\n readonly children?: readonly UiNavItem[];\n}\n\nexport interface UiNavNormalizedItem extends Omit<UiNavItem, 'children' | 'type'> {\n readonly key: string;\n readonly stateId: string;\n readonly panelId: string;\n readonly type: UiNavNormalizedItemType;\n readonly source: UiNavItem;\n readonly children: readonly UiNavNormalizedItem[];\n}\n\nexport interface UiNavSelection {\n readonly item: UiNavItem;\n readonly key: string;\n readonly type: UiNavNormalizedItemType;\n readonly link?: UiNavLink;\n readonly external: boolean;\n}\n\nexport interface UiNavIconContext {\n readonly $implicit: string;\n readonly icon: string;\n readonly item: UiNavItem;\n readonly active: boolean;\n readonly orientation: UiNavOrientation;\n readonly level: number;\n}\n\nfunction normalizeType(type: UiNavItemType | undefined, hasChildren: boolean): UiNavNormalizedItemType {\n if (type === 'divider' || type === 'spacer' || type === 'group' || type === 'mega') {\n return type;\n }\n\n if (type === 'collapsible' || type === 'collapsable') {\n return 'collapsible';\n }\n\n if (type === 'aside' && hasChildren) {\n return 'collapsible';\n }\n\n if (!type && hasChildren) {\n return 'collapsible';\n }\n\n return 'item';\n}\n\nfunction toKeyPart(value: string): string {\n return value\n .toLowerCase()\n .replace(/[^a-z0-9_-]+/g, '-')\n .replace(/^-+|-+$/g, '');\n}\n\nfunction itemFallbackKey(item: UiNavItem, index: number): string {\n return toKeyPart(item.title ?? item.link?.toString() ?? item.href ?? `item-${index}`) || `item-${index}`;\n}\n\nfunction normalizeItem(item: UiNavItem, index: number, path: string): UiNavNormalizedItem | null {\n if (item.isHidden?.(item)) {\n return null;\n }\n\n const children = (item.children ?? [])\n .map((child, childIndex) => normalizeItem(child, childIndex, `${path}-${childIndex}`))\n .filter((child): child is UiNavNormalizedItem => child !== null);\n\n const hasChildren = children.length > 0;\n const key = item.id ?? `${path}-${itemFallbackKey(item, index)}`;\n\n return {\n ...item,\n key,\n stateId: item.id ?? key,\n panelId: `ui-nav-panel-${toKeyPart(key) || index}`,\n type: normalizeType(item.type, hasChildren),\n source: item,\n children,\n };\n}\n\nexport function normalizeUiNavItems(items: readonly UiNavItem[]): readonly UiNavNormalizedItem[] {\n return items\n .map((item, index) => normalizeItem(item, index, `ui-nav-${index}`))\n .filter((item): item is UiNavNormalizedItem => item !== null);\n}\n","import { DestroyRef, computed, effect, inject, signal, type Signal } from '@angular/core';\nimport { NavService } from '../service/nav.service';\nimport {\n normalizeUiNavItems,\n type UiNavAppearance,\n type UiNavDockbarMode,\n type UiNavItem,\n type UiNavNormalizedItem,\n type UiNavOrientation,\n type UiNavPosition,\n type UiNavState,\n} from '../types/nav.types';\n\ninterface UiNavControllerInputs {\n readonly navId: Signal<string>;\n readonly data: Signal<readonly UiNavItem[]>;\n readonly items: Signal<readonly UiNavItem[]>;\n readonly orientation: Signal<UiNavOrientation>;\n readonly appearance: Signal<UiNavAppearance | null>;\n readonly position: Signal<UiNavPosition | null>;\n readonly collapsed: Signal<boolean | null>;\n readonly dockbarMode: Signal<UiNavDockbarMode | null>;\n readonly compact: Signal<boolean>;\n readonly activeIds: Signal<ReadonlySet<string> | readonly string[] | null>;\n}\n\nexport interface UiNavController {\n readonly normalizedNavId: Signal<string>;\n readonly normalizedItems: Signal<readonly UiNavNormalizedItem[]>;\n readonly resolvedState: Signal<UiNavState>;\n readonly activeIdSet: Signal<ReadonlySet<string>>;\n toggleCollapsed(): void;\n}\n\nexport function injectUiNavController(inputs: UiNavControllerInputs): UiNavController {\n const nav = inject(NavService);\n const destroyRef = inject(DestroyRef);\n const registeredState = signal<UiNavState | null>(null);\n let previousRegisteredId: string | null = null;\n\n const normalizedNavId = computed(() => normalizeId(inputs.navId()));\n const collapsedPreference = computed(() => inputs.collapsed() ?? (inputs.compact() ? true : null));\n const normalizedItems = computed(() => {\n const data = inputs.data();\n return normalizeUiNavItems(data.length > 0 ? data : inputs.items());\n });\n const fallbackState = computed<UiNavState>(() => ({\n id: normalizedNavId(),\n orientation: inputs.orientation(),\n appearance: fallbackAppearance(inputs.orientation(), inputs.appearance()),\n position: inputs.position() ?? 'left',\n collapsed: collapsedPreference() ?? false,\n dockbarMode: inputs.dockbarMode() ?? 'sticky',\n }));\n const resolvedState = computed(() => nav.currentState(normalizedNavId()) ?? registeredState() ?? fallbackState());\n const activeIdSet = computed(() => {\n const ids = inputs.activeIds();\n if (!ids) {\n return new Set<string>();\n }\n\n return ids instanceof Set ? new Set(ids) : new Set(ids);\n });\n\n effect(() => {\n const nextState = nav.register({\n id: normalizedNavId(),\n orientation: inputs.orientation(),\n appearance: inputs.appearance(),\n position: inputs.position(),\n collapsed: collapsedPreference(),\n dockbarMode: inputs.dockbarMode(),\n });\n\n if (previousRegisteredId && previousRegisteredId !== nextState.id) {\n nav.unregister(previousRegisteredId);\n }\n\n previousRegisteredId = nextState.id;\n registeredState.set(nextState);\n });\n\n destroyRef.onDestroy(() => {\n if (previousRegisteredId) {\n nav.unregister(previousRegisteredId);\n }\n });\n\n return {\n normalizedNavId,\n normalizedItems,\n resolvedState,\n activeIdSet,\n toggleCollapsed: () => nav.toggleCollapsed(normalizedNavId()),\n };\n}\n\nfunction normalizeId(value: string): string {\n return value.trim() || 'default';\n}\n\nfunction fallbackAppearance(orientation: UiNavOrientation, appearance: UiNavAppearance | null): UiNavAppearance {\n if (orientation === 'vertical' && (appearance === 'sidebar' || appearance === 'dockbar')) {\n return appearance;\n }\n\n if (orientation === 'horizontal' && (appearance === 'navbar' || appearance === 'flyout')) {\n return appearance;\n }\n\n return orientation === 'horizontal' ? 'navbar' : 'sidebar';\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { NavIconDirective } from '../icon/nav-icon.directive';\nimport { NavService } from '../service/nav.service';\nimport type { UiNavCollapseTree, UiNavNormalizedItem, UiNavOrientation } from '../types/nav.types';\n\n@Component({\n selector: 'ui-nav-item-content',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n host: {\n class: 'contents',\n },\n template: `\n @if (item().icon) {\n <span data-ui-nav-icon-slot=\"true\" [class]=\"iconSlotClasses()\">\n @if (iconTemplate(); as customIcon) {\n <ng-container [ngTemplateOutlet]=\"customIcon.template\" [ngTemplateOutletContext]=\"iconContext()\" />\n } @else {\n <span aria-hidden=\"true\" [class]=\"defaultIconClasses()\" [attr.data-icon]=\"item().icon\"></span>\n }\n </span>\n }\n\n @if (!compact()) {\n <span class=\"min-w-0 flex-1\">\n <span [class]=\"titleClasses()\">{{ item().title }}</span>\n @if (showSubtitle()) {\n <span [class]=\"subtitleClasses()\">{{ item().subtitle }}</span>\n }\n </span>\n\n @if (item().badge; as badge) {\n <span [class]=\"badge.classes ?? defaultBadgeClasses()\">{{ badge.title }}</span>\n }\n }\n\n @if (compact() && !item().icon) {\n <span aria-hidden=\"true\" [class]=\"compactFallbackClasses()\">{{ compactFallback() }}</span>\n }\n `,\n})\nexport class NavItemContentComponent {\n private readonly nav = inject(NavService);\n\n readonly item = input.required<UiNavNormalizedItem>();\n readonly active = input<boolean>(false);\n readonly compact = input<boolean>(false);\n readonly orientation = input<UiNavOrientation>('vertical');\n readonly level = input<number>(0);\n readonly collapseTree = input<UiNavCollapseTree>('stairs');\n readonly iconTemplate = input<NavIconDirective | undefined>(undefined);\n\n protected readonly iconSlotClasses = computed(() =>\n cn(\n 'relative z-10 inline-flex shrink-0 items-center justify-center transition-[border-color,background-color,color,box-shadow] duration-200',\n this.orientation() === 'vertical'\n ? this.compact()\n ? 'h-8 w-8 rounded-full border'\n : 'h-7 w-7 rounded-full border'\n : 'h-5 w-5 rounded-full border border-transparent',\n this.usesStraightVerticalSurface() && 'overflow-hidden bg-background/85 backdrop-blur-sm border-transparent',\n this.active() && !this.usesStraightVerticalSurface() ? 'border-primary text-current' : 'border-transparent',\n this.active() && this.usesStraightVerticalSurface() && 'text-current',\n this.compact() && 'mx-auto',\n ),\n );\n protected readonly titleClasses = computed(() =>\n cn('block truncate', this.active() && 'font-semibold text-foreground', this.item().classes?.title),\n );\n protected readonly showSubtitle = computed(\n () => !!this.item().subtitle && !(this.orientation() === 'horizontal' && this.level() === 0),\n );\n protected readonly subtitleClasses = computed(() =>\n cn('block truncate text-xs font-normal text-muted-foreground', this.item().classes?.subtitle),\n );\n protected readonly compactFallbackClasses = computed(() =>\n cn('inline-flex h-5 min-w-5 items-center justify-center text-xs font-semibold uppercase'),\n );\n\n protected readonly defaultBadgeClasses = computed(() =>\n cn(\n 'ml-auto inline-flex h-5 shrink-0 items-center rounded-full px-2 text-xs font-medium',\n this.active() ? 'bg-background text-foreground' : 'bg-muted text-muted-foreground',\n ),\n );\n\n protected readonly defaultIconClasses = computed(() =>\n cn(\n 'inline-flex h-4 w-4 shrink-0 rounded-full border',\n this.usesStraightVerticalSurface()\n ? 'border-transparent bg-transparent'\n : this.active()\n ? 'border-primary'\n : 'border-border bg-muted',\n this.item().classes?.icon,\n ),\n );\n\n protected readonly iconContext = computed(() =>\n this.nav.iconContext(this.item(), this.active(), this.level(), this.orientation()),\n );\n\n protected compactFallback(): string {\n return this.nav.compactFallback(this.item());\n }\n\n private usesStraightVerticalSurface(): boolean {\n return this.orientation() === 'vertical' && !this.compact() && this.collapseTree() === 'straight';\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { cn } from '@edsis/ui/utils';\nimport { NavIconDirective } from '../icon/nav-icon.directive';\nimport { NavService } from '../service/nav.service';\nimport { NavItemContentComponent } from './nav-item-content.component';\nimport type { UiNavCollapseTree, UiNavNormalizedItem, UiNavOrientation, UiNavSelection } from '../types/nav.types';\n\n@Component({\n selector: 'li[ui-nav-item]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterLink, RouterLinkActive, NavItemContentComponent],\n host: {\n '[class]': 'hostClasses()',\n '[attr.role]': 'hostRole()',\n '[attr.data-ui-nav-item-key]': 'item().key',\n '[attr.aria-hidden]': 'item().type === \"spacer\" ? \"true\" : null',\n },\n template: `\n @switch (item().type) {\n @case ('divider') {\n <span class=\"block h-px w-full bg-border\"></span>\n }\n\n @case ('spacer') {}\n\n @case ('group') {\n @if (!compact() && item().title) {\n <div [id]=\"headingId()\" [class]=\"groupHeadingClasses()\">{{ item().title }}</div>\n }\n\n <ul [class]=\"childListClasses()\" role=\"group\" [attr.aria-labelledby]=\"item().title ? headingId() : null\">\n @for (child of item().children; track child.key; let isFirst = $first; let isLast = $last) {\n <li\n ui-nav-item\n [navId]=\"navId()\"\n [item]=\"child\"\n [level]=\"level() + 1\"\n [orientation]=\"orientation()\"\n [compact]=\"compact()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [straightRail]=\"showStraightRailForChildren()\"\n [straightRailActive]=\"isActive()\"\n [firstInBranch]=\"isFirst\"\n [lastInBranch]=\"isLast\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n </ul>\n }\n\n @case ('collapsible') {\n <button\n type=\"button\"\n [class]=\"triggerClasses(isActive())\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"item().panelId\"\n [attr.aria-label]=\"compactLabel()\"\n [attr.title]=\"titleFor()\"\n [disabled]=\"item().disabled || null\"\n (click)=\"toggleOpen()\">\n <ui-nav-item-content\n [item]=\"item()\"\n [active]=\"isActive()\"\n [compact]=\"compact()\"\n [orientation]=\"orientation()\"\n [level]=\"level()\"\n [collapseTree]=\"collapseTree()\"\n [iconTemplate]=\"iconTemplate()\" />\n\n @if (!compact()) {\n <span aria-hidden=\"true\" [class]=\"chevronClasses()\">›</span>\n }\n </button>\n\n @if (showChildren()) {\n <ul [id]=\"item().panelId\" [class]=\"childListClasses()\" role=\"group\">\n @for (child of item().children; track child.key; let isFirst = $first; let isLast = $last) {\n <li\n ui-nav-item\n [navId]=\"navId()\"\n [item]=\"child\"\n [level]=\"level() + 1\"\n [orientation]=\"orientation()\"\n [compact]=\"false\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [straightRail]=\"showStraightRailForChildren()\"\n [straightRailActive]=\"isActive()\"\n [firstInBranch]=\"isFirst\"\n [lastInBranch]=\"isLast\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n </ul>\n }\n }\n\n @case ('mega') {\n @if (!compact() && item().title) {\n <div [id]=\"headingId()\" [class]=\"groupHeadingClasses()\">{{ item().title }}</div>\n }\n\n <ul [class]=\"childListClasses()\" role=\"group\" [attr.aria-labelledby]=\"item().title ? headingId() : null\">\n @for (child of item().children; track child.key; let isFirst = $first; let isLast = $last) {\n <li\n ui-nav-item\n [navId]=\"navId()\"\n [item]=\"child\"\n [level]=\"level() + 1\"\n [orientation]=\"orientation()\"\n [compact]=\"compact()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [straightRail]=\"showStraightRailForChildren()\"\n [straightRailActive]=\"isActive()\"\n [firstInBranch]=\"isFirst\"\n [lastInBranch]=\"isLast\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n </ul>\n }\n\n @default {\n @if (isRouterItem()) {\n <a\n [class]=\"leafClasses(routerActive.isActive || isActive())\"\n [routerLink]=\"item().link ?? null\"\n [queryParams]=\"item().queryParams ?? null\"\n [queryParamsHandling]=\"item().queryParamsHandling ?? null\"\n [fragment]=\"item().fragment ?? undefined\"\n [preserveFragment]=\"item().preserveFragment ?? false\"\n [target]=\"item().target ?? undefined\"\n routerLinkActive\n #routerActive=\"routerLinkActive\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n [attr.aria-current]=\"routerActive.isActive || isActive() ? 'page' : null\"\n [attr.aria-disabled]=\"item().disabled || null\"\n [attr.aria-label]=\"compactLabel()\"\n [attr.title]=\"titleFor()\"\n [attr.role]=\"itemRole()\"\n [attr.data-ui-nav-root-item]=\"isHorizontalRoot() ? 'true' : null\"\n (click)=\"selectItem($event)\">\n <ui-nav-item-content\n [item]=\"item()\"\n [active]=\"routerActive.isActive || isActive()\"\n [compact]=\"compact()\"\n [orientation]=\"orientation()\"\n [level]=\"level()\"\n [collapseTree]=\"collapseTree()\"\n [iconTemplate]=\"iconTemplate()\" />\n </a>\n } @else if (hrefFor()) {\n <a\n [class]=\"leafClasses(isActive())\"\n [attr.href]=\"hrefFor()\"\n [attr.target]=\"item().target ?? (item().externalLink ? '_blank' : null)\"\n [attr.rel]=\"relFor()\"\n [attr.aria-current]=\"isActive() ? 'page' : null\"\n [attr.aria-disabled]=\"item().disabled || null\"\n [attr.aria-label]=\"compactLabel()\"\n [attr.title]=\"titleFor()\"\n [attr.role]=\"itemRole()\"\n [attr.data-ui-nav-root-item]=\"isHorizontalRoot() ? 'true' : null\"\n (click)=\"selectItem($event)\">\n <ui-nav-item-content\n [item]=\"item()\"\n [active]=\"isActive()\"\n [compact]=\"compact()\"\n [orientation]=\"orientation()\"\n [level]=\"level()\"\n [collapseTree]=\"collapseTree()\"\n [iconTemplate]=\"iconTemplate()\" />\n </a>\n } @else {\n <button\n type=\"button\"\n [class]=\"leafClasses(isActive())\"\n [disabled]=\"item().disabled || null\"\n [attr.aria-current]=\"isActive() ? 'page' : null\"\n [attr.aria-label]=\"compactLabel()\"\n [attr.title]=\"titleFor()\"\n [attr.role]=\"itemRole()\"\n [attr.data-ui-nav-root-item]=\"isHorizontalRoot() ? 'true' : null\"\n (click)=\"selectItem($event)\">\n <ui-nav-item-content\n [item]=\"item()\"\n [active]=\"isActive()\"\n [compact]=\"compact()\"\n [orientation]=\"orientation()\"\n [level]=\"level()\"\n [collapseTree]=\"collapseTree()\"\n [iconTemplate]=\"iconTemplate()\" />\n </button>\n }\n }\n }\n `,\n})\nexport class NavItemComponent {\n private readonly nav = inject(NavService);\n\n readonly navId = input<string>('default');\n readonly item = input.required<UiNavNormalizedItem>();\n readonly level = input<number>(0);\n readonly orientation = input<UiNavOrientation>('vertical');\n readonly compact = input<boolean>(false);\n readonly itemClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavIconDirective | undefined>(undefined);\n readonly collapseTree = input<UiNavCollapseTree>('stairs');\n readonly straightRail = input<boolean>(false);\n readonly straightRailActive = input<boolean>(false);\n readonly firstInBranch = input<boolean>(false);\n readonly lastInBranch = input<boolean>(false);\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<UiNavSelection>();\n\n private readonly openedIdSet = computed(() => new Set(this.openedIds()));\n\n protected readonly isHorizontalRoot = computed(() => this.orientation() === 'horizontal' && this.level() === 0);\n protected readonly isActive = computed(() => this.nav.isItemActive(this.item(), this.activeIds(), this.activeUrl()));\n protected readonly showChildren = computed(() => !this.compact() && this.isOpen());\n\n protected readonly hostClasses = computed(() => {\n if (this.item().type === 'divider') {\n return this.dividerClasses();\n }\n\n if (this.item().type === 'spacer') {\n return 'flex-1';\n }\n\n if (this.item().type === 'group' || this.item().type === 'mega') {\n return this.groupContainerClasses();\n }\n\n return this.itemContainerClasses();\n });\n\n protected readonly hostRole = computed(() => {\n if (this.item().type === 'divider') {\n return 'separator';\n }\n\n return this.orientation() === 'horizontal' ? 'none' : null;\n });\n\n protected readonly headingId = computed(() => `${this.item().panelId}-heading`);\n\n protected isRouterItem(): boolean {\n return this.nav.isRouterItem(this.item());\n }\n\n protected hrefFor(): string | null {\n return this.nav.hrefFor(this.item());\n }\n\n protected relFor(): string | null {\n return this.nav.relFor(this.item());\n }\n\n protected routerLinkActiveOptions() {\n return this.nav.routerLinkActiveOptions(this.item());\n }\n\n protected itemRole(): 'menuitem' | null {\n return this.nav.itemRole(this.orientation(), this.level());\n }\n\n protected compactLabel(): string | null {\n return this.nav.compactLabel(this.item(), this.compact());\n }\n\n protected titleFor(): string | null {\n return this.nav.titleFor(this.item(), this.compact());\n }\n\n protected isOpen(): boolean {\n return this.openedIdSet().has(this.item().stateId) || this.openedIdSet().has(this.item().key) || this.isActive();\n }\n\n protected toggleOpen(): void {\n if (this.item().disabled) {\n return;\n }\n\n const next = new Set(this.openedIds());\n if (next.has(this.item().stateId)) {\n next.delete(this.item().stateId);\n } else {\n next.add(this.item().stateId);\n }\n\n this.openedIdsChange.emit([...next]);\n }\n\n protected selectItem(event: MouseEvent): void {\n if (this.item().disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n this.item().action?.(this.item().source);\n this.itemSelected.emit({\n item: this.item().source,\n key: this.item().key,\n type: this.item().type,\n link: this.item().link,\n external: !!this.hrefFor(),\n });\n this.nav.closePanel(this.navId());\n this.nav.closeDrawer(this.navId());\n }\n\n protected leafClasses(active: boolean): string {\n return cn(\n 'ui-nav-item group/nav inline-flex min-w-0 items-center rounded-md text-sm font-medium transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n this.orientation() === 'horizontal' && this.level() === 0 ? 'h-9 px-3 py-2' : 'w-full px-3 py-1.5 text-left',\n this.orientation() === 'horizontal' && this.level() === 0 ? 'gap-3' : 'gap-1.5',\n this.compact() && 'h-10 w-10 justify-center gap-0 px-0 text-center',\n this.interactiveStateClasses(active),\n this.item().disabled && 'pointer-events-none opacity-50',\n this.item().classes?.wrapper,\n this.itemClass(),\n );\n }\n\n protected triggerClasses(active: boolean): string {\n return cn(\n 'ui-nav-trigger group/nav inline-flex min-w-0 items-center rounded-md text-sm font-medium transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n this.orientation() === 'horizontal' && this.level() === 0 ? 'h-9 px-3 py-2' : 'w-full px-3 py-1.5 text-left',\n this.orientation() === 'horizontal' && this.level() === 0 ? 'gap-3' : 'gap-1.5',\n this.compact() && 'h-10 w-10 justify-center gap-0 px-0 text-center',\n this.interactiveStateClasses(active),\n this.item().classes?.wrapper,\n this.itemClass(),\n );\n }\n\n private interactiveStateClasses(active: boolean): string {\n const showsNestedActiveConnector =\n active &&\n this.orientation() === 'vertical' &&\n !this.compact() &&\n this.level() > 1 &&\n this.collapseTree() === 'stairs';\n\n if (this.orientation() === 'vertical' && !this.compact()) {\n return cn(\n 'relative isolate',\n \"before:pointer-events-none before:absolute before:inset-y-0 before:left-2 before:right-2 before:-z-10 before:rounded-md before:border before:border-transparent before:bg-transparent before:transition-colors before:duration-200 before:content-['']\",\n showsNestedActiveConnector &&\n \"after:pointer-events-none after:absolute after:-left-2 after:top-1/2 after:-z-10 after:h-px after:w-5 after:-translate-y-1/2 after:rounded-full after:bg-current/25 after:content-['']\",\n active\n ? 'font-semibold text-foreground hover:before:border-primary'\n : 'text-foreground/80 hover:text-accent-foreground hover:before:border-primary hover:before:bg-accent',\n );\n }\n\n return active ? 'font-semibold text-foreground' : 'text-foreground/80 hover:bg-accent hover:text-accent-foreground';\n }\n\n protected chevronClasses(): string {\n return cn('ml-auto shrink-0 text-base leading-none transition-transform', this.isOpen() && 'rotate-90');\n }\n\n protected itemContainerClasses(): string {\n return cn(\n this.orientation() === 'horizontal' && this.level() === 0 ? 'relative' : 'w-full',\n this.compact() && 'flex justify-center',\n this.straightRailClasses(),\n );\n }\n\n protected groupContainerClasses(): string {\n return cn('w-full', this.level() > 0 && 'pt-2');\n }\n\n protected dividerClasses(): string {\n return cn(this.orientation() === 'horizontal' && this.level() === 0 ? 'mx-1 h-5 w-px' : 'my-2 w-full px-2');\n }\n\n protected groupHeadingClasses(): string {\n return cn(\n 'px-3 py-2 text-xs font-medium uppercase tracking-wide text-muted-foreground',\n this.item().classes?.title,\n );\n }\n\n protected childListClasses(): string {\n const isGroupedBranch = this.item().type === 'group' || this.item().type === 'mega';\n const usesStairsTree = this.collapseTree() === 'stairs';\n\n return cn(\n 'flex list-none flex-col gap-0.5 p-0',\n !this.compact() && 'mt-0.5',\n this.level() >= 0 &&\n !this.compact() &&\n !isGroupedBranch &&\n usesStairsTree &&\n cn(\n \"relative ml-[1.625rem] pl-2 before:absolute before:-top-2 before:bottom-0 before:left-0 before:w-px before:-translate-x-1/2 before:rounded-full before:content-['']\",\n this.isActive() ? 'before:bg-current/25' : 'before:bg-border',\n ),\n );\n }\n\n protected showStraightRailForChildren(): boolean {\n return (\n !this.compact() &&\n this.collapseTree() === 'straight' &&\n this.item().type !== 'group' &&\n this.item().type !== 'mega'\n );\n }\n\n private straightRailClasses(): string {\n if (!this.straightRail() || this.orientation() !== 'vertical' || this.compact()) {\n return '';\n }\n\n return cn(\n 'relative',\n \"before:pointer-events-none before:absolute before:left-[1.625rem] before:w-0 before:-z-10 before:border-l before:border-dotted before:content-['']\",\n this.straightRailActive() ? 'before:border-primary/50' : 'before:border-border/50',\n this.firstInBranch() ? 'before:-top-9' : 'before:-top-0.5',\n this.lastInBranch() ? 'before:bottom-[calc(100%-1.25rem)]' : 'before:-bottom-0.5',\n );\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, computed, inject, input, output } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { NavIconDirective } from '../../icon/nav-icon.directive';\nimport { NavItemComponent } from '../../item/nav-item.component';\nimport { NavItemContentComponent } from '../../item/nav-item-content.component';\nimport { NavService } from '../../service/nav.service';\nimport type {\n UiNavCollapseTree,\n UiNavHorizontalAppearance,\n UiNavNormalizedItem,\n UiNavSelection,\n} from '../../types/nav.types';\n\n@Component({\n selector: 'ui-nav-horizontal',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, NavItemComponent, NavItemContentComponent],\n host: {\n class: 'block w-full',\n },\n template: `\n <ul [class]=\"listClasses()\" role=\"menubar\" (keydown)=\"onKeydown($event)\">\n @for (item of items(); track item.key) {\n @switch (item.type) {\n @case ('group') {\n <ng-container [ngTemplateOutlet]=\"branchTemplate\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n }\n @case ('collapsible') {\n <ng-container [ngTemplateOutlet]=\"branchTemplate\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n }\n @case ('mega') {\n <ng-container [ngTemplateOutlet]=\"branchTemplate\" [ngTemplateOutletContext]=\"{ $implicit: item }\" />\n }\n @default {\n <li\n ui-nav-item\n [navId]=\"navId()\"\n [item]=\"item\"\n [level]=\"0\"\n [orientation]=\"'horizontal'\"\n [compact]=\"compact()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n }\n }\n </ul>\n\n <ng-template #branchTemplate let-item>\n <li role=\"none\" class=\"relative\" [attr.data-ui-nav-item-key]=\"item.key\">\n <button\n type=\"button\"\n role=\"menuitem\"\n data-ui-nav-root-item=\"true\"\n [class]=\"triggerClasses(item)\"\n [attr.aria-expanded]=\"isPanelOpen(item)\"\n [attr.aria-controls]=\"item.panelId\"\n [attr.aria-haspopup]=\"'menu'\"\n [attr.aria-label]=\"compactLabel(item)\"\n [attr.title]=\"titleFor(item)\"\n [disabled]=\"item.disabled || null\"\n (click)=\"togglePanel(item)\"\n (mouseenter)=\"openPanel(item)\">\n <ui-nav-item-content\n [item]=\"item\"\n [active]=\"isItemActive(item)\"\n [compact]=\"compact()\"\n [orientation]=\"'horizontal'\"\n [level]=\"0\"\n [iconTemplate]=\"iconTemplate()\" />\n <span aria-hidden=\"true\" [class]=\"chevronClasses(item)\">⌄</span>\n </button>\n\n @if (isPanelOpen(item)) {\n <div\n [id]=\"item.panelId\"\n role=\"menu\"\n [class]=\"panelClasses(item)\"\n [attr.data-ui-nav-panel]=\"item.key\"\n (keydown)=\"onPanelKeydown($event)\">\n <ul [class]=\"panelListClasses(item)\" role=\"none\">\n @for (child of item.children; track child.key) {\n <li\n ui-nav-item\n [navId]=\"navId()\"\n [item]=\"child\"\n [level]=\"1\"\n [orientation]=\"'horizontal'\"\n [compact]=\"false\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n </ul>\n </div>\n }\n </li>\n </ng-template>\n `,\n})\nexport class NavHorizontalComponent {\n private readonly nav = inject(NavService);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly navId = input<string>('default');\n readonly appearance = input<UiNavHorizontalAppearance>('navbar');\n readonly items = input<readonly UiNavNormalizedItem[]>([]);\n readonly compact = input<boolean>(false);\n readonly itemClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavIconDirective | undefined>(undefined);\n readonly collapseTree = input<UiNavCollapseTree>('stairs');\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<UiNavSelection>();\n\n protected readonly listClasses = computed(() =>\n cn(\n 'flex min-w-0 list-none p-0',\n this.appearance() === 'flyout'\n ? 'items-center gap-2'\n : this.compact()\n ? 'justify-center gap-1'\n : 'items-center justify-center gap-1',\n ),\n );\n\n protected isItemActive(item: UiNavNormalizedItem): boolean {\n return this.nav.isItemActive(item, this.activeIds(), this.activeUrl());\n }\n\n protected isPanelOpen(item: UiNavNormalizedItem): boolean {\n return this.nav.isPanelOpen(this.navId(), item);\n }\n\n protected openPanel(item: UiNavNormalizedItem): void {\n this.nav.openPanel(this.navId(), item);\n }\n\n protected togglePanel(item: UiNavNormalizedItem): void {\n this.nav.togglePanel(this.navId(), item);\n }\n\n protected compactLabel(item: UiNavNormalizedItem): string | null {\n return this.nav.compactLabel(item, this.compact());\n }\n\n protected titleFor(item: UiNavNormalizedItem): string | null {\n return this.nav.titleFor(item, this.compact());\n }\n\n protected triggerClasses(item: UiNavNormalizedItem): string {\n return cn(\n 'ui-nav-trigger group/nav inline-flex min-w-0 items-center gap-3 rounded-md text-sm font-medium transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n this.appearance() === 'flyout'\n ? 'h-10 rounded-full border border-[hsl(var(--border)/var(--opacity-60))] px-4 py-2 shadow-sm'\n : 'h-9 px-3 py-2',\n this.compact() && 'w-10 justify-center px-0',\n this.isItemActive(item)\n ? 'bg-accent text-accent-foreground'\n : 'text-foreground/80 hover:bg-accent hover:text-accent-foreground',\n item.classes?.wrapper,\n this.itemClass(),\n );\n }\n\n protected chevronClasses(item: UiNavNormalizedItem): string {\n return cn('ml-auto shrink-0 text-base leading-none transition-transform', this.isPanelOpen(item) && 'rotate-180');\n }\n\n protected panelClasses(item: UiNavNormalizedItem): string {\n return cn(\n this.appearance() === 'flyout'\n ? 'absolute left-0 top-[calc(100%+0.75rem)] z-50 rounded-2xl border border-[hsl(var(--border)/var(--opacity-70))] bg-[hsl(var(--background)/var(--opacity-95))] p-3 text-foreground shadow-2xl backdrop-blur'\n : 'absolute left-0 top-full z-50 mt-2 rounded-xl border border-border bg-popover p-2 text-popover-foreground shadow-lg',\n item.type === 'mega' ? 'w-[min(92vw,44rem)]' : 'min-w-56',\n );\n }\n\n protected panelListClasses(item: UiNavNormalizedItem): string {\n const columns = Math.min(Math.max(item.columns ?? (item.type === 'mega' ? 2 : 1), 1), 4);\n\n return cn(\n 'grid list-none gap-1 p-0',\n columns === 2 && 'md:grid-cols-2',\n columns === 3 && 'md:grid-cols-3',\n columns === 4 && 'md:grid-cols-4',\n );\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n const panelKey = this.nav.currentPanelKey(this.navId());\n this.nav.closePanel(this.navId());\n this.focusOpenPanelTrigger(panelKey);\n return;\n }\n\n const rootItems = this.rootFocusItems();\n if (rootItems.length === 0) {\n return;\n }\n\n const currentIndex = rootItems.indexOf(document.activeElement as HTMLElement);\n if (currentIndex === -1) {\n return;\n }\n\n if (event.key === 'ArrowDown') {\n const currentItem = rootItems[currentIndex];\n if (currentItem.getAttribute('aria-haspopup') === 'menu') {\n event.preventDefault();\n currentItem.click();\n queueMicrotask(() => this.focusFirstPanelItem(this.nav.currentPanelKey(this.navId())));\n }\n return;\n }\n\n if (event.key === 'ArrowRight' || event.key === 'ArrowLeft') {\n event.preventDefault();\n const direction = event.key === 'ArrowRight' ? 1 : -1;\n const nextIndex = (currentIndex + direction + rootItems.length) % rootItems.length;\n rootItems[nextIndex]?.focus();\n }\n }\n\n protected onPanelKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Escape') {\n return;\n }\n\n event.preventDefault();\n const panelKey = this.nav.currentPanelKey(this.navId());\n this.nav.closePanel(this.navId());\n this.focusOpenPanelTrigger(panelKey);\n }\n\n private rootFocusItems(): HTMLElement[] {\n return Array.from(this.host.nativeElement.querySelectorAll<HTMLElement>('[data-ui-nav-root-item=\"true\"]'));\n }\n\n private focusOpenPanelTrigger(panelKey: string | null): void {\n if (!panelKey) {\n return;\n }\n\n const trigger = this.host.nativeElement.querySelector<HTMLElement>(\n `[data-ui-nav-item-key=\"${panelKey}\"] [data-ui-nav-root-item=\"true\"]`,\n );\n trigger?.focus();\n }\n\n private focusFirstPanelItem(panelKey: string | null): void {\n if (!panelKey) {\n return;\n }\n\n const panel = this.host.nativeElement.querySelector<HTMLElement>(`[data-ui-nav-panel=\"${panelKey}\"]`);\n const item = panel?.querySelector<HTMLElement>('a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])');\n item?.focus();\n }\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { NavIconDirective } from '../../../icon/nav-icon.directive';\nimport type { UiNavCollapseTree, UiNavNormalizedItem, UiNavSelection } from '../../../types/nav.types';\nimport { NavHorizontalComponent } from '../nav-horizontal.component';\n\n@Component({\n selector: 'ui-nav-flyout',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NavHorizontalComponent],\n host: {\n class: 'block w-full',\n },\n template: `\n <ui-nav-horizontal\n [navId]=\"navId()\"\n [appearance]=\"'flyout'\"\n [items]=\"items()\"\n [compact]=\"compact()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n `,\n})\nexport class NavFlyoutComponent {\n readonly navId = input<string>('default');\n readonly items = input<readonly UiNavNormalizedItem[]>([]);\n readonly compact = input<boolean>(false);\n readonly itemClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavIconDirective | undefined>(undefined);\n readonly collapseTree = input<UiNavCollapseTree>('stairs');\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<UiNavSelection>();\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { NavIconDirective } from '../../../icon/nav-icon.directive';\nimport type { UiNavCollapseTree, UiNavNormalizedItem, UiNavSelection } from '../../../types/nav.types';\nimport { NavHorizontalComponent } from '../nav-horizontal.component';\n\n@Component({\n selector: 'ui-nav-navbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NavHorizontalComponent],\n host: {\n class: 'block w-full',\n },\n template: `\n <ui-nav-horizontal\n [navId]=\"navId()\"\n [appearance]=\"'navbar'\"\n [items]=\"items()\"\n [compact]=\"compact()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n `,\n})\nexport class NavNavbarComponent {\n readonly navId = input<string>('default');\n readonly items = input<readonly UiNavNormalizedItem[]>([]);\n readonly compact = input<boolean>(false);\n readonly itemClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavIconDirective | undefined>(undefined);\n readonly collapseTree = input<UiNavCollapseTree>('stairs');\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<UiNavSelection>();\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { NavIconDirective } from '../../../icon/nav-icon.directive';\nimport { NavItemComponent } from '../../../item/nav-item.component';\nimport type { UiNavCollapseTree, UiNavNormalizedItem, UiNavPosition, UiNavSelection } from '../../../types/nav.types';\n\n@Component({\n selector: 'ui-nav-sidebar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NavItemComponent],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-position]': 'position()',\n },\n template: `\n <ul [class]=\"listClasses()\" role=\"list\">\n @for (item of items(); track item.key) {\n <li\n ui-nav-item\n [navId]=\"navId()\"\n [item]=\"item\"\n [level]=\"0\"\n [orientation]=\"'vertical'\"\n [compact]=\"isCollapsed()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\"></li>\n }\n </ul>\n `,\n})\nexport class NavSidebarComponent {\n readonly navId = input<string>('default');\n readonly items = input<readonly UiNavNormalizedItem[]>([]);\n readonly collapsed = input<boolean>(false);\n readonly compact = input<boolean>(false);\n readonly position = input<UiNavPosition>('left');\n readonly itemClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavIconDirective | undefined>(undefined);\n readonly collapseTree = input<UiNavCollapseTree>('stairs');\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<UiNavSelection>();\n\n protected readonly isCollapsed = computed(() => this.collapsed() || this.compact());\n\n protected readonly hostClasses = computed(() => cn('block', this.position() === 'right' && 'items-end text-right'));\n\n protected readonly listClasses = computed(() =>\n this.isCollapsed()\n ? cn('flex list-none flex-col items-center gap-0.5 p-0')\n : cn('flex list-none flex-col gap-0.5 p-0', this.position() === 'right' && 'items-end'),\n );\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, computed, inject, input, output } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { NavIconDirective } from '../../../icon/nav-icon.directive';\nimport { NavService } from '../../../service/nav.service';\nimport type {\n UiNavCollapseTree,\n UiNavDockbarMode,\n UiNavNormalizedItem,\n UiNavPosition,\n UiNavSelection,\n} from '../../../types/nav.types';\nimport { NavSidebarComponent } from '../sidebar/nav-sidebar.component';\n\n@Component({\n selector: 'ui-nav-dockbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NavSidebarComponent],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-mode]': 'mode()',\n '[attr.data-position]': 'position()',\n },\n template: `\n @if (isDrawerMode()) {\n <div class=\"relative\">\n <button\n type=\"button\"\n data-ui-nav-dockbar-trigger=\"true\"\n [class]=\"triggerClasses()\"\n [attr.aria-expanded]=\"isDrawerOpen()\"\n [attr.aria-controls]=\"panelId()\"\n aria-haspopup=\"dialog\"\n aria-label=\"Open navigation drawer\"\n (click)=\"toggleDrawer()\">\n <span aria-hidden=\"true\" class=\"text-lg leading-none\">☰</span>\n </button>\n\n @if (isDrawerOpen()) {\n <div\n class=\"fixed inset-0 z-40 bg-[hsl(var(--overlay-backdrop-strong))]\"\n aria-hidden=\"true\"\n (click)=\"closeDrawer()\"></div>\n\n <aside\n [id]=\"panelId()\"\n [class]=\"drawerClasses()\"\n role=\"dialog\"\n aria-modal=\"true\"\n (keydown)=\"onDrawerKeydown($event)\">\n <div class=\"mb-3 flex items-center justify-between gap-3 px-1\">\n <span class=\"text-sm font-semibold text-foreground\">Navigation</span>\n <button\n type=\"button\"\n class=\"inline-flex h-9 items-center rounded-md px-3 text-sm font-medium text-foreground/80 transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n (click)=\"closeDrawer()\">\n Close\n </button>\n </div>\n\n <ui-nav-sidebar\n [navId]=\"navId()\"\n [items]=\"items()\"\n [collapsed]=\"false\"\n [position]=\"position()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n </aside>\n }\n </div>\n } @else {\n <div [class]=\"railClasses()\">\n <ui-nav-sidebar\n [navId]=\"navId()\"\n [items]=\"items()\"\n [collapsed]=\"true\"\n [position]=\"position()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n </div>\n }\n `,\n})\nexport class NavDockbarComponent {\n private readonly nav = inject(NavService);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly navId = input<string>('default');\n readonly items = input<readonly UiNavNormalizedItem[]>([]);\n readonly mode = input<UiNavDockbarMode>('sticky');\n readonly position = input<UiNavPosition>('left');\n readonly itemClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavIconDirective | undefined>(undefined);\n readonly collapseTree = input<UiNavCollapseTree>('stairs');\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<UiNavSelection>();\n\n protected readonly isDrawerMode = computed(() => this.mode() === 'drawer');\n protected readonly isDrawerOpen = computed(() => this.nav.isDrawerOpen(this.navId()));\n protected readonly panelId = computed(() => `ui-nav-dockbar-${this.safeId(this.navId())}`);\n\n protected readonly hostClasses = computed(() =>\n cn('block', this.isDrawerMode() ? 'w-auto' : 'w-16', this.position() === 'right' && 'justify-self-end'),\n );\n\n protected readonly railClasses = computed(() =>\n cn(\n 'flex min-h-full w-16 justify-center rounded-2xl border border-[hsl(var(--border)/var(--opacity-60))] bg-[hsl(var(--background)/var(--opacity-70))] px-2 py-3 backdrop-blur',\n this.position() === 'right' && 'ml-auto',\n ),\n );\n\n protected triggerClasses(): string {\n return cn(\n 'inline-flex h-11 w-11 items-center justify-center rounded-2xl border border-[hsl(var(--border)/var(--opacity-60))] bg-[hsl(var(--background)/var(--opacity-80))] text-foreground shadow-sm transition-colors',\n 'hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n );\n }\n\n protected drawerClasses(): string {\n return cn(\n 'fixed bottom-4 top-4 z-50 w-72 overflow-y-auto rounded-2xl border border-border bg-background p-4 shadow-2xl',\n this.position() === 'right' ? 'right-4' : 'left-4',\n );\n }\n\n protected toggleDrawer(): void {\n const wasOpen = this.isDrawerOpen();\n this.nav.toggleDrawer(this.navId());\n\n if (wasOpen) {\n queueMicrotask(() => this.focusTrigger());\n return;\n }\n\n queueMicrotask(() => this.focusFirstDrawerItem());\n }\n\n protected closeDrawer(): void {\n if (!this.isDrawerOpen()) {\n return;\n }\n\n this.nav.closeDrawer(this.navId());\n queueMicrotask(() => this.focusTrigger());\n }\n\n protected onDrawerKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Escape') {\n return;\n }\n\n event.preventDefault();\n this.closeDrawer();\n }\n\n private focusFirstDrawerItem(): void {\n const panel = this.host.nativeElement.querySelector<HTMLElement>(`#${this.panelId()}`);\n const focusable = panel?.querySelector<HTMLElement>(\n 'a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n );\n focusable?.focus();\n }\n\n private focusTrigger(): void {\n const trigger = this.host.nativeElement.querySelector<HTMLElement>('[data-ui-nav-dockbar-trigger=\"true\"]');\n trigger?.focus();\n }\n\n private safeId(value: string): string {\n const normalized = value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9_-]+/g, '-');\n return normalized || 'default';\n }\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { NavIconDirective } from '../icon/nav-icon.directive';\nimport { NavFlyoutComponent } from '../orientation/horizontal/flyout/nav-flyout.component';\nimport { NavNavbarComponent } from '../orientation/horizontal/navbar/nav-navbar.component';\nimport { NavDockbarComponent } from '../orientation/vertical/dockbar/nav-dockbar.component';\nimport { NavSidebarComponent } from '../orientation/vertical/sidebar/nav-sidebar.component';\nimport type { UiNavCollapseTree, UiNavNormalizedItem, UiNavSelection, UiNavState } from '../types/nav.types';\n\n@Component({\n selector: 'ui-nav-outlet',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NavDockbarComponent, NavFlyoutComponent, NavNavbarComponent, NavSidebarComponent],\n template: `\n @let navState = state();\n\n @if (navState.orientation === 'horizontal' && navState.appearance === 'flyout') {\n <ui-nav-flyout\n [navId]=\"navState.id\"\n [items]=\"items()\"\n [compact]=\"compact()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n } @else if (navState.orientation === 'horizontal') {\n <ui-nav-navbar\n [navId]=\"navState.id\"\n [items]=\"items()\"\n [compact]=\"compact()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n } @else if (navState.appearance === 'dockbar') {\n <ui-nav-dockbar\n [navId]=\"navState.id\"\n [items]=\"items()\"\n [mode]=\"navState.dockbarMode\"\n [position]=\"navState.position\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n } @else {\n <ui-nav-sidebar\n [navId]=\"navState.id\"\n [items]=\"items()\"\n [collapsed]=\"navState.collapsed\"\n [position]=\"navState.position\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIds()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTemplate()\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIdsChange.emit($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n }\n `,\n})\nexport class UiNavOutletComponent {\n readonly state = input.required<UiNavState>();\n readonly items = input<readonly UiNavNormalizedItem[]>([]);\n readonly compact = input(false);\n readonly itemClass = input('');\n readonly activeIds = input<ReadonlySet<string>>(new Set<string>());\n readonly activeUrl = input<string | null>(null);\n readonly iconTemplate = input<NavIconDirective | undefined>(undefined);\n readonly collapseTree = input<UiNavCollapseTree>('stairs');\n readonly openedIds = input<readonly string[]>([]);\n readonly openedIdsChange = output<readonly string[]>();\n readonly itemSelected = output<UiNavSelection>();\n}\n","import { InjectionToken, type Signal } from '@angular/core';\nimport type { UiNavState } from '../../types/nav.types';\n\nexport interface UiNavShellContext {\n readonly state: Signal<UiNavState>;\n readonly displayState: Signal<UiNavState>;\n readonly collapseEnabled: Signal<boolean>;\n toggleCollapsed(): void;\n}\n\nexport const UI_NAV_SHELL = new InjectionToken<UiNavShellContext>('UI_NAV_SHELL');\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { UI_NAV_SHELL } from '../shared/nav-shell.token';\n\n@Component({\n selector: 'ui-nav-footer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n <div class=\"flex h-full items-center\">\n <ng-content />\n </div>\n `,\n})\nexport class UiNavFooterComponent {\n private readonly shell = inject(UI_NAV_SHELL, { optional: true });\n\n readonly class = input('', { alias: 'class' });\n\n protected readonly isHorizontal = computed(() => this.shell?.displayState().orientation === 'horizontal');\n\n protected readonly hostClasses = computed(() =>\n cn(\n this.isHorizontal()\n ? 'relative z-10 block h-full w-auto shrink-0'\n : 'sticky bottom-0 z-10 block h-12 shrink-0 border-t border-[hsl(var(--border)/var(--opacity-70))]',\n this.class(),\n ),\n );\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { UI_NAV_SHELL } from '../shared/nav-shell.token';\n\n@Component({\n selector: 'ui-nav-header',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-collapsed]': 'displayCollapsed()',\n },\n template: `\n <div class=\"flex h-full items-center gap-3 px-3\">\n <div [class]=\"contentClasses()\">\n <ng-content />\n </div>\n\n @if (showToggle()) {\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 shrink-0 items-center justify-center bg-transparent text-foreground/80 transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n [attr.aria-label]=\"toggleAriaLabel()\"\n [attr.title]=\"toggleAriaLabel()\"\n data-ui-nav-header-toggle=\"true\"\n (click)=\"toggleCollapsed()\">\n <span\n aria-hidden=\"true\"\n data-ui-nav-header-toggle-icon=\"true\"\n class=\"material-symbols-outlined leading-none\"\n style=\"font-size: 18px; line-height: 18px;\">\n {{ toggleIconName() }}\n </span>\n </button>\n }\n </div>\n `,\n})\nexport class UiNavHeaderComponent {\n private readonly shell = inject(UI_NAV_SHELL);\n\n readonly toggle = input(false);\n readonly class = input('', { alias: 'class' });\n\n protected readonly collapsed = computed(() => this.shell.state().collapsed);\n protected readonly displayCollapsed = computed(() => this.shell.displayState().collapsed);\n protected readonly isHorizontal = computed(() => this.shell.displayState().orientation === 'horizontal');\n protected readonly showToggle = computed(() => {\n if (this.isHorizontal()) {\n return false;\n }\n\n return this.toggle() || (this.shell.collapseEnabled() && !this.displayCollapsed());\n });\n protected readonly toggleAriaLabel = computed(() => (this.collapsed() ? 'Expand navigation' : 'Collapse navigation'));\n protected readonly toggleIconName = computed(() => (this.collapsed() ? 'left_panel_open' : 'left_panel_close'));\n protected readonly contentClasses = computed(() => (this.isHorizontal() ? 'min-w-0' : 'min-w-0 flex-1'));\n protected readonly hostClasses = computed(() =>\n cn(\n this.isHorizontal()\n ? 'relative z-10 block h-full w-auto shrink-0'\n : 'sticky top-0 z-10 block h-12 shrink-0 border-b border-[hsl(var(--border)/var(--opacity-70))]',\n this.class(),\n ),\n );\n\n protected toggleCollapsed(): void {\n this.shell.toggleCollapsed();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport type { UiNavOrientation } from '../../types/nav.types';\n\n@Component({\n selector: 'ui-nav-main',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: ` <ng-content /> `,\n})\nexport class UiNavMainComponent {\n readonly class = input('', { alias: 'class' });\n readonly orientation = input<UiNavOrientation>('vertical');\n\n protected readonly hostClasses = computed(() =>\n cn(\n 'min-h-0 flex-1',\n this.orientation() === 'horizontal'\n ? 'flex h-full min-w-0 items-stretch justify-center overflow-visible'\n : 'block overflow-y-auto overflow-x-hidden',\n this.class(),\n ),\n );\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n forwardRef,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { NavIconDirective } from './icon/nav-icon.directive';\nimport { injectUiNavController } from './internal/nav.controller';\nimport { UiNavOutletComponent } from './internal/nav-outlet.component';\nimport { UiNavFooterComponent } from './shell/footer/nav-footer.component';\nimport { UiNavHeaderComponent } from './shell/header/nav-header.component';\nimport { UiNavMainComponent } from './shell/main/nav-main.component';\nimport { UI_NAV_SHELL, type UiNavShellContext } from './shell/shared/nav-shell.token';\nimport {\n type UiNavAppearance,\n type UiNavCollapseTree,\n type UiNavDockbarMode,\n type UiNavItem,\n type UiNavOrientation,\n type UiNavPosition,\n type UiNavSelection,\n} from './types/nav.types';\n\n@Component({\n selector: 'ui-nav',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [UiNavMainComponent, UiNavOutletComponent],\n providers: [{ provide: UI_NAV_SHELL, useExisting: forwardRef(() => UiNavComponent) }],\n host: {\n '[class]': 'hostClasses()',\n role: 'navigation',\n '[attr.aria-label]': 'ariaLabel() || null',\n '[attr.data-nav-id]': 'resolvedState().id',\n '[attr.data-orientation]': 'resolvedState().orientation',\n '[attr.data-appearance]': 'resolvedState().appearance',\n '[attr.data-position]': 'resolvedState().orientation === \"vertical\" ? resolvedState().position : null',\n '[attr.data-collapse-tree]': 'collapseTree()',\n '[attr.data-preview-expanded]': 'previewRailExpanded() ? \"true\" : null',\n '(mouseenter)': 'setHoverPreview(true)',\n '(mouseleave)': 'setHoverPreview(false)',\n },\n template: `\n @let iconTpl = iconTemplate();\n @let navState = displayState();\n\n <div [class]=\"shellClasses()\">\n @if (headerSlot()) {\n <ng-content select=\"ui-nav-header\" />\n }\n\n <ui-nav-main [orientation]=\"navState.orientation\">\n <ui-nav-outlet\n [state]=\"navState\"\n [items]=\"normalizedItems()\"\n [compact]=\"compact()\"\n [itemClass]=\"itemClass()\"\n [activeIds]=\"activeIdSet()\"\n [activeUrl]=\"activeUrl()\"\n [iconTemplate]=\"iconTpl\"\n [collapseTree]=\"collapseTree()\"\n [openedIds]=\"openedIds()\"\n (openedIdsChange)=\"openedIds.set($event)\"\n (itemSelected)=\"itemSelected.emit($event)\" />\n </ui-nav-main>\n\n @if (footerSlot()) {\n <ng-content select=\"ui-nav-footer\" />\n }\n </div>\n `,\n})\nexport class UiNavComponent implements UiNavShellContext {\n readonly navId = input<string>('default', { alias: 'id' });\n readonly data = input<readonly UiNavItem[]>([]);\n readonly items = input<readonly UiNavItem[]>([]);\n readonly orientation = input<UiNavOrientation>('vertical');\n readonly appearance = input<UiNavAppearance | null>(null);\n readonly position = input<UiNavPosition | null>(null);\n readonly collapsed = input<boolean | null>(null);\n readonly dockbarMode = input<UiNavDockbarMode | null>(null);\n readonly ariaLabel = input<string>('Primary navigation');\n readonly compact = input<boolean>(false);\n readonly previewExpanded = input<boolean>(false);\n readonly sidebarCollapse = input(false, { alias: 'nav-sidebar-collapse', transform: booleanAttribute });\n readonly collapseTree = input<UiNavCollapseTree>('stairs', { alias: 'collapse-tree' });\n readonly class = input<string>('');\n readonly itemClass = input<string>('');\n readonly activeIds = input<ReadonlySet<string> | readonly string[] | null>(null);\n readonly activeUrl = input<string | null>(null);\n readonly openedIds = model<readonly string[]>([]);\n readonly itemSelected = output<UiNavSelection>();\n\n private readonly hoverPreviewExpanded = signal(false);\n private readonly controller = injectUiNavController({\n navId: this.navId,\n data: this.data,\n items: this.items,\n orientation: this.orientation,\n appearance: this.appearance,\n position: this.position,\n collapsed: this.collapsed,\n dockbarMode: this.dockbarMode,\n compact: this.compact,\n activeIds: this.activeIds,\n });\n\n protected readonly headerSlot = contentChild(UiNavHeaderComponent);\n protected readonly footerSlot = contentChild(UiNavFooterComponent);\n protected readonly iconTemplate = contentChild(NavIconDirective);\n protected readonly normalizedItems = this.controller.normalizedItems;\n protected readonly resolvedState = this.controller.resolvedState;\n protected readonly activeIdSet = this.controller.activeIdSet;\n readonly previewRailExpanded = computed(() => {\n const state = this.resolvedState();\n\n if (state.orientation !== 'vertical' || state.appearance !== 'sidebar' || !state.collapsed) {\n return false;\n }\n\n return this.previewExpanded() || (this.sidebarCollapse() && this.hoverPreviewExpanded());\n });\n readonly previewRailOffset = computed(() => (this.previewRailExpanded() ? '15rem' : '0px'));\n readonly displayState = computed(() => {\n const state = this.resolvedState();\n return this.previewRailExpanded() ? { ...state, collapsed: false } : state;\n });\n readonly collapseEnabled = computed(() => {\n const state = this.resolvedState();\n return this.sidebarCollapse() && state.orientation === 'vertical' && state.appearance === 'sidebar';\n });\n protected readonly shellClasses = computed(() =>\n cn(\n 'flex h-full min-h-0 transition-[width,box-shadow,transform] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none',\n this.resolvedState().orientation === 'horizontal'\n ? 'flex-row items-stretch overflow-visible'\n : 'flex-col overflow-hidden',\n this.resolvedState().position === 'right' ? 'origin-right' : 'origin-left',\n this.previewRailExpanded() && [\n 'absolute inset-y-0 z-20 w-76 overflow-hidden bg-background shadow-xl',\n this.resolvedState().position === 'right'\n ? 'right-0 border-l border-[hsl(var(--border)/var(--opacity-70))]'\n : 'left-0 border-r border-[hsl(var(--border)/var(--opacity-70))]',\n ],\n ),\n );\n readonly state = this.resolvedState;\n\n protected readonly hostClasses = computed(() =>\n cn(\n 'relative block min-h-0 text-foreground transition-[width] duration-300 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none',\n this.resolvedState().orientation === 'horizontal'\n ? 'w-full'\n : this.resolvedState().appearance === 'dockbar'\n ? 'w-auto'\n : this.resolvedState().collapsed\n ? 'w-16'\n : 'w-76',\n this.resolvedState().orientation === 'horizontal' || this.previewRailExpanded()\n ? 'overflow-visible'\n : 'overflow-hidden',\n this.class(),\n ),\n );\n\n toggleCollapsed(): void {\n this.controller.toggleCollapsed();\n }\n\n protected setHoverPreview(value: boolean): void {\n this.hoverPreviewExpanded.set(this.sidebarCollapse() ? value : false);\n }\n}\n","import { computed, Directive, effect, inject, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { UI_NAV_SHELL } from '../shared/nav-shell.token';\n\n@Directive({\n selector: '[uiNavCollapseRoot]',\n host: {\n '[class.w-full]': 'collapseEnabled()',\n '[class.justify-center]': 'displayCollapsed()',\n },\n})\nexport class UiNavCollapseRootDirective {\n private readonly shell = inject(UI_NAV_SHELL);\n\n protected readonly collapseEnabled = computed(\n () => this.shell.collapseEnabled() && this.shell.displayState().orientation === 'vertical',\n );\n protected readonly displayCollapsed = computed(() => this.collapseEnabled() && this.shell.displayState().collapsed);\n}\n\n@Directive({\n selector: '[uiNavCollapseExpanded]',\n})\nexport class UiNavCollapseExpandedDirective {\n private readonly shell = inject(UI_NAV_SHELL);\n private readonly templateRef = inject(TemplateRef<unknown>);\n private readonly viewContainer = inject(ViewContainerRef);\n\n private hasView = false;\n private readonly shouldRender = computed(\n () =>\n !this.shell.collapseEnabled() ||\n this.shell.displayState().orientation !== 'vertical' ||\n !this.shell.displayState().collapsed,\n );\n\n constructor() {\n effect(() => {\n if (this.shouldRender()) {\n if (!this.hasView) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView = true;\n }\n return;\n }\n\n if (this.hasView) {\n this.viewContainer.clear();\n this.hasView = false;\n }\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}