@weeehaoooz/talos-ui 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs +25 -4
  2. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs.map +1 -1
  3. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs +2 -1
  4. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs.map +1 -1
  5. package/fesm2022/weeehaoooz-talos-ui-data-display-data-grid.mjs +1627 -0
  6. package/fesm2022/weeehaoooz-talos-ui-data-display-data-grid.mjs.map +1 -0
  7. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs +2 -2
  8. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs.map +1 -1
  9. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs +2 -2
  10. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs.map +1 -1
  11. package/fesm2022/weeehaoooz-talos-ui-layout.mjs +4 -4
  12. package/fesm2022/weeehaoooz-talos-ui-layout.mjs.map +1 -1
  13. package/fesm2022/weeehaoooz-talos-ui-nav.mjs +118 -71
  14. package/fesm2022/weeehaoooz-talos-ui-nav.mjs.map +1 -1
  15. package/fesm2022/weeehaoooz-talos-ui.mjs +1765 -87
  16. package/fesm2022/weeehaoooz-talos-ui.mjs.map +1 -1
  17. package/package.json +5 -1
  18. package/styles/_button-group.scss +154 -6
  19. package/styles/_buttons.scss +105 -8
  20. package/styles/_variables.scss +4 -0
  21. package/types/weeehaoooz-talos-ui-button-button-group.d.ts +5 -2
  22. package/types/weeehaoooz-talos-ui-button-button-group.d.ts.map +1 -1
  23. package/types/weeehaoooz-talos-ui-button-button.d.ts +1 -1
  24. package/types/weeehaoooz-talos-ui-button-button.d.ts.map +1 -1
  25. package/types/weeehaoooz-talos-ui-data-display-data-grid.d.ts +272 -0
  26. package/types/weeehaoooz-talos-ui-data-display-data-grid.d.ts.map +1 -0
  27. package/types/weeehaoooz-talos-ui-nav.d.ts +36 -10
  28. package/types/weeehaoooz-talos-ui-nav.d.ts.map +1 -1
  29. package/types/weeehaoooz-talos-ui.d.ts +309 -16
  30. package/types/weeehaoooz-talos-ui.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"weeehaoooz-talos-ui-nav.mjs","sources":["../../../projects/talos-ui/nav/nav-group/nav-group.component.ts","../../../projects/talos-ui/nav/nav-item/nav-item.component.ts","../../../projects/talos-ui/nav/theme-toggle/theme-toggle.component.ts","../../../projects/talos-ui/nav/side-nav/side-nav.component.ts","../../../projects/talos-ui/nav/side-nav/side-nav.component.html","../../../projects/talos-ui/nav/top-nav/top-nav.component.ts","../../../projects/talos-ui/nav/top-nav/top-nav.component.html","../../../projects/talos-ui/nav/top-nav/top-nav.module.ts","../../../projects/talos-ui/nav/side-nav.module.ts","../../../projects/talos-ui/nav/weeehaoooz-talos-ui-nav.ts"],"sourcesContent":["import { Component, input, model } from '@angular/core';\nimport { LucideChevronDown } from '@lucide/angular';\n\n@Component({\n selector: 'talos-nav-group',\n imports: [LucideChevronDown],\n template: `\n @if (title(); as groupTitle) {\n @if (collapsible()) {\n <button\n type=\"button\"\n class=\"nav-group-title nav-group-header-btn\"\n [attr.aria-expanded]=\"!collapsed()\"\n (click)=\"toggleCollapse()\">\n <span class=\"nav-group-title-text\">{{ groupTitle }}</span>\n <span class=\"nav-group-chevron\" [class.is-collapsed]=\"collapsed()\">\n <svg lucideChevronDown [size]=\"14\"></svg>\n </span>\n </button>\n } @else {\n <div class=\"nav-group-title\">{{ groupTitle }}</div>\n }\n }\n <div class=\"nav-group-content\" [class.is-collapsed]=\"collapsible() && collapsed()\">\n <ul class=\"nav-item-list\">\n <ng-content />\n </ul>\n </div>\n `,\n host: {\n 'class': 'nav-group talos-nav-group',\n '[class.is-collapsible]': 'collapsible()',\n '[class.is-collapsed]': 'collapsible() && collapsed()',\n 'role': 'group'\n }\n})\nexport class TalosNavGroupComponent {\n /** Optional title for the navigation group */\n readonly title = input<string | undefined>(undefined);\n\n /** Whether the navigation group is collapsible */\n readonly collapsible = input<boolean>(false);\n\n /** Two-way model signal for the collapsed state */\n readonly collapsed = model<boolean>(false);\n\n /** Toggle the collapsed state */\n toggleCollapse(): void {\n if (!this.collapsible()) return;\n this.collapsed.update((c) => !c);\n }\n}\n","import { NgComponentOutlet } from '@angular/common';\nimport { Component, ElementRef, Type, computed, inject, input, output } from '@angular/core';\nimport { LayoutService } from '@weeehaoooz/talos-ui/layout';\nimport { TalosTooltipDirective } from '@weeehaoooz/talos-ui/feedback/tooltip';\n\n@Component({\n selector: 'talos-nav-item',\n imports: [NgComponentOutlet, TalosTooltipDirective],\n template: `\n <button\n type=\"button\"\n class=\"nav-link\"\n [class.active]=\"active()\"\n [disabled]=\"disabled()\"\n (click)=\"handleClick()\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n [talosTooltip]=\"computedTooltip() || ''\"\n [tooltipDisabled]=\"!isSidebarCollapsed()\"\n tooltipPosition=\"right\">\n @if (icon(); as iconComp) {\n <span class=\"nav-icon\">\n <ng-container *ngComponentOutlet=\"iconComp\" />\n </span>\n }\n <span class=\"nav-label\">\n @if (label()) {\n {{ label() }}\n } @else {\n <ng-content />\n }\n </span>\n @if (badge(); as b) {\n <span class=\"nav-badge\">{{ b }}</span>\n }\n </button>\n `,\n host: {\n 'class': 'nav-item talos-nav-item',\n 'role': 'listitem'\n }\n})\nexport class TalosNavItemComponent {\n protected readonly layoutService = inject(LayoutService, { optional: true });\n\n /** Text label for the nav item */\n readonly label = input<string>('');\n\n /** Icon component type (e.g. Lucide icon) */\n readonly icon = input<Type<unknown> | null>(null);\n\n /** Whether the item is currently active */\n readonly active = input<boolean>(false);\n\n /** Badge or counter displayed on the right */\n readonly badge = input<string | number | undefined>(undefined);\n\n /** Whether the nav item is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Optional route path */\n readonly route = input<string | undefined>(undefined);\n\n /** Optional custom tooltip text when collapsed */\n readonly tooltip = input<string | undefined>(undefined);\n\n /** Optional collapsed override passed from parent side-nav */\n readonly collapsed = input<boolean | undefined>(undefined);\n\n /** Output event when the nav item is clicked */\n readonly itemClick = output<void>();\n\n /** Whether parent sidebar is in collapsed mode */\n readonly isSidebarCollapsed = computed(() => {\n const col = this.collapsed();\n if (col !== undefined) {\n return col;\n }\n return this.layoutService?.isLeftNavCollapsed() ?? false;\n });\n\n /** Computed tooltip for collapsed sidebar state */\n readonly computedTooltip = computed(() => {\n if (!this.isSidebarCollapsed()) return null;\n return this.tooltip() || this.label() || null;\n });\n\n handleClick(): void {\n if (this.disabled()) return;\n this.itemClick.emit();\n }\n}\n","import { Component, computed, inject, input, output } from '@angular/core';\nimport { LucideMonitor, LucideMoon, LucideSun } from '@lucide/angular';\nimport { LayoutService } from '@weeehaoooz/talos-ui/layout';\nimport { TalosTooltipDirective } from '@weeehaoooz/talos-ui/feedback/tooltip';\n\nexport type TalosThemeMode = 'system' | 'light' | 'dark';\n\n@Component({\n selector: 'talos-nav-theme-toggle',\n imports: [LucideSun, LucideMoon, LucideMonitor, TalosTooltipDirective],\n template: `\n <button\n type=\"button\"\n class=\"theme-toggle-btn\"\n (click)=\"handleToggle()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [talosTooltip]=\"computedTooltip() || ''\"\n [tooltipDisabled]=\"!layoutService?.isLeftNavCollapsed()\"\n tooltipPosition=\"right\">\n <span class=\"theme-toggle-icon\">\n @if (effectiveMode() === 'system') {\n <svg lucideMonitor [size]=\"16\"></svg>\n } @else if (effectiveMode() === 'dark') {\n <svg lucideMoon [size]=\"16\"></svg>\n } @else {\n <svg lucideSun [size]=\"16\"></svg>\n }\n </span>\n @if (showLabel()) {\n <span class=\"theme-toggle-label\">{{ currentModeLabel() }}</span>\n }\n <span\n class=\"theme-toggle-indicator\"\n [class.is-system]=\"effectiveMode() === 'system'\"\n [class.is-light]=\"effectiveMode() === 'light'\"\n [class.is-dark]=\"effectiveMode() === 'dark'\"\n aria-hidden=\"true\">\n <span class=\"indicator-thumb\"></span>\n </span>\n </button>\n `,\n styleUrl: './theme-toggle.component.scss',\n host: {\n 'class': 'talos-nav-theme-toggle-host',\n '[class.is-collapsed]': 'layoutService?.isLeftNavCollapsed() ?? false'\n }\n})\nexport class TalosNavThemeToggleComponent {\n protected readonly layoutService = inject(LayoutService, { optional: true });\n\n /** Explicit 3-way theme mode: 'system' | 'light' | 'dark' */\n readonly themeMode = input<TalosThemeMode | null>(null);\n\n /** Current dark mode state (boolean fallback for backward compatibility) */\n readonly isDarkMode = input<boolean>(false);\n\n /** Whether to show the text label beside the toggle */\n readonly showLabel = input<boolean>(true);\n\n /** Label shown for system mode */\n readonly systemLabel = input<string>('System Mode');\n\n /** Label shown for light mode */\n readonly lightLabel = input<string>('Light Mode');\n\n /** Label shown for dark mode */\n readonly darkLabel = input<string>('Dark Mode');\n\n /** Optional custom tooltip text when collapsed */\n readonly tooltip = input<string | undefined>(undefined);\n\n /** Output event when the toggle is clicked */\n readonly themeToggle = output<void>();\n\n /** Output event with next theme mode ('system' | 'light' | 'dark') */\n readonly themeModeChange = output<TalosThemeMode>();\n\n /** Output event with next dark mode state */\n readonly isDarkModeChange = output<boolean>();\n\n /** Computed effective theme mode */\n readonly effectiveMode = computed<TalosThemeMode>(() => {\n const mode = this.themeMode();\n if (mode) return mode;\n return this.isDarkMode() ? 'dark' : 'light';\n });\n\n /** Computed label for active mode */\n readonly currentModeLabel = computed<string>(() => {\n switch (this.effectiveMode()) {\n case 'system': return this.systemLabel();\n case 'dark': return this.darkLabel();\n default: return this.lightLabel();\n }\n });\n\n /** Computed next mode in cycle: system -> light -> dark -> system */\n readonly nextMode = computed<TalosThemeMode>(() => {\n switch (this.effectiveMode()) {\n case 'system': return 'light';\n case 'light': return 'dark';\n case 'dark': return 'system';\n default: return 'system';\n }\n });\n\n /** Computed accessible aria label */\n readonly computedAriaLabel = computed<string>(() => {\n const current = this.currentModeLabel();\n const nextModeName = this.nextMode() === 'system' ? this.systemLabel() : this.nextMode() === 'dark' ? this.darkLabel() : this.lightLabel();\n return `Current theme: ${current}. Switch to ${nextModeName}`;\n });\n\n /** Computed tooltip for collapsed sidebar state */\n readonly computedTooltip = computed(() => {\n const isCollapsed = this.layoutService?.isLeftNavCollapsed() ?? false;\n if (!isCollapsed) return null;\n return this.tooltip() || `Theme: ${this.currentModeLabel()}`;\n });\n\n handleToggle(): void {\n const next = this.nextMode();\n this.themeToggle.emit();\n this.themeModeChange.emit(next);\n this.isDarkModeChange.emit(next === 'dark');\n }\n}\n","import { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { Component, TemplateRef, Type, ViewEncapsulation, computed, inject, input, model, output, signal } from '@angular/core';\nimport {\n LucideChevronsUpDown,\n LucideCircleHelp,\n LucidePanelLeft,\n LucidePanelLeftClose,\n LucidePanelLeftOpen,\n LucideSettings\n} from '@lucide/angular';\nimport { LayoutService } from '@weeehaoooz/talos-ui/layout';\nimport { TalosNavGroupComponent } from '../nav-group/nav-group.component';\nimport { TalosNavItemComponent } from '../nav-item/nav-item.component';\nimport { TalosNavThemeToggleComponent, TalosThemeMode } from '../theme-toggle/theme-toggle.component';\nimport { TalosTooltipDirective } from '@weeehaoooz/talos-ui/feedback/tooltip';\n\nexport interface SideNavItem {\n id?: string;\n label: string;\n icon?: any;\n route?: string;\n active?: boolean;\n badge?: string | number;\n disabled?: boolean;\n}\n\nexport interface SideNavGroup {\n title?: string;\n collapsible?: boolean;\n collapsed?: boolean;\n items: SideNavItem[];\n}\n\nexport interface SideNavUserProfile {\n name: string;\n email: string;\n avatarUrl?: string;\n}\n\n@Component({\n selector: 'talos-side-nav',\n imports: [\n NgComponentOutlet,\n NgTemplateOutlet,\n LucidePanelLeft,\n LucideChevronsUpDown,\n LucidePanelLeftOpen,\n LucidePanelLeftClose,\n TalosNavGroupComponent,\n TalosNavItemComponent,\n TalosNavThemeToggleComponent,\n TalosTooltipDirective\n ],\n templateUrl: './side-nav.component.html',\n styleUrl: './side-nav.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'talos-side-nav-host',\n '[class.is-collapsed]': 'isCollapsed()',\n '[class.dark-theme]': 'isDarkMode()',\n '[attr.data-theme]': 'isDarkMode() ? \"dark\" : \"light\"',\n '[attr.aria-hidden]': 'isCollapsed()',\n 'role': 'navigation'\n }\n})\nexport class SideNavComponent {\n protected readonly layoutService = inject(LayoutService, { optional: true });\n protected readonly LucidePanelLeftOpen = LucidePanelLeftOpen;\n protected readonly LucidePanelLeftClose = LucidePanelLeftClose;\n\n /** Optional external two-way binding for collapsed state. If omitted, syncs with LayoutService. */\n readonly collapsed = model<boolean | undefined>(undefined);\n\n /** Effective collapsed state */\n readonly isCollapsed = computed(() => {\n const ext = this.collapsed();\n if (ext !== undefined) {\n return ext;\n }\n return this.layoutService?.isLeftNavCollapsed() ?? false;\n });\n\n /** Toggle collapsed state */\n toggleCollapse(): void {\n if (this.collapsed() !== undefined) {\n this.collapsed.update((c) => !c);\n } else if (this.layoutService) {\n this.layoutService.toggleLeftNav();\n }\n }\n\n\n /** Custom header component to render entire header */\n readonly headerComponent = input<Type<unknown> | null>(null);\n\n /** Component inputs object to pass to headerComponent */\n readonly headerComponentInputs = input<Record<string, unknown>>({});\n\n /** Custom header template to render entire header */\n readonly headerTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Custom logo component to render in header */\n readonly logoComponent = input<Type<unknown> | null>(null);\n\n /** Component inputs object to pass to logoComponent */\n readonly logoComponentInputs = input<Record<string, unknown>>({});\n\n /** Custom logo template to render in header */\n readonly logoTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Custom body component to render sidebar body */\n readonly bodyComponent = input<Type<unknown> | null>(null);\n\n /** Component inputs object to pass to bodyComponent */\n readonly bodyComponentInputs = input<Record<string, unknown>>({});\n\n /** Custom body template to render sidebar body */\n readonly bodyTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Custom footer component to render sidebar footer */\n readonly footerComponent = input<Type<unknown> | null>(null);\n\n /** Component inputs object to pass to footerComponent */\n readonly footerComponentInputs = input<Record<string, unknown>>({});\n\n /** Custom footer template to render sidebar footer */\n readonly footerTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Whether to show the header in sidebar */\n readonly showHeader = input<boolean>(true);\n\n /** Whether to show the logo in header */\n readonly showLogo = input<boolean>(true);\n\n /** Whether to show the hamburger / panel toggle button in header */\n readonly showToggle = input<boolean>(true);\n\n /** Whether to show the dark mode / light mode theme toggle button in sidebar */\n readonly showThemeToggle = input<boolean>(true);\n\n /** Explicit 3-way theme mode: 'system' | 'light' | 'dark' */\n readonly themeMode = input<TalosThemeMode | null>(null);\n\n /** Current dark mode status (boolean fallback) */\n readonly isDarkMode = input<boolean>(false);\n\n /** Output event when theme toggle is clicked */\n readonly themeToggle = output<void>();\n\n /** Output event when theme mode changes */\n readonly themeModeChange = output<TalosThemeMode>();\n\n /** Track active item ID */\n readonly activeItemId = signal<string>('dashboards');\n\n /** Concise Navigation Groups for clean sidebar UI */\n readonly navGroups = input<SideNavGroup[]>([]);\n\n /** Secondary / Footer Navigation Items */\n readonly footerItems = input<SideNavItem[]>([\n { id: 'help', label: 'Help Center', icon: LucideCircleHelp },\n { id: 'settings', label: 'Settings', icon: LucideSettings }\n ]);\n\n /** User Profile Info for Bottom Footer */\n readonly userProfile = input<SideNavUserProfile>({\n name: 'Eugene Lamar',\n email: 'eugene@glan.com'\n });\n\n /** Output event when a nav item is clicked */\n readonly itemClick = output<SideNavItem>();\n\n selectItem(item: SideNavItem): void {\n if (item.disabled) return;\n if (item.id) {\n this.activeItemId.set(item.id);\n }\n this.itemClick.emit(item);\n }\n}\n","<div class=\"side-nav-inner\">\n <!-- Header -->\n @if (showHeader()) {\n <div class=\"side-nav-header\">\n @if (headerComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: headerComponentInputs()\" />\n } @else if (headerTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[side-nav-header]\">\n <div class=\"default-nav-header\">\n <ng-content select=\"[side-nav-brand]\">\n @if (showLogo()) {\n <div class=\"brand-wrapper\" title=\"Logo\">\n @if (logoComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: logoComponentInputs()\" />\n } @else if (logoTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[side-nav-logo]\" />\n }\n </div>\n }\n </ng-content>\n\n @if (showToggle()) {\n <button type=\"button\" class=\"hamburger-toggle-btn\" (click)=\"toggleCollapse()\"\n [attr.aria-label]=\"isCollapsed() ? 'Expand sidebar' : 'Collapse sidebar'\"\n [talosTooltip]=\"isCollapsed() ? 'Expand sidebar' : 'Collapse sidebar'\"\n tooltipPosition=\"right\">\n <svg lucidePanelLeft class=\"toggle-icon\" [size]=\"18\"></svg>\n </button>\n }\n </div>\n </ng-content>\n }\n </div>\n }\n\n <!-- Body Navigation Items -->\n <div class=\"side-nav-body\">\n @if (bodyComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: bodyComponentInputs()\" />\n } @else if (bodyTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else if (navGroups().length > 0) {\n <nav class=\"nav-groups-container\" aria-label=\"Sidebar Navigation\">\n @for (group of navGroups(); track group.title || $index) {\n <talos-nav-group [title]=\"group.title\" [collapsible]=\"group.collapsible ?? false\"\n [collapsed]=\"group.collapsed ?? false\">\n @for (item of group.items; track item.id || item.label) {\n <talos-nav-item [label]=\"item.label\" [icon]=\"item.icon\" [badge]=\"item.badge\" [disabled]=\"item.disabled ?? false\"\n [collapsed]=\"isCollapsed()\"\n [active]=\"(item.id && activeItemId() === item.id) || !!item.active\" (itemClick)=\"selectItem(item)\" />\n }\n </talos-nav-group>\n }\n </nav>\n } @else {\n <!-- Projected content slot for custom body content -->\n <ng-content select=\"[side-nav-body]\" />\n <ng-content />\n }\n </div>\n\n <!-- Footer -->\n <div class=\"side-nav-footer\">\n @if (footerComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: footerComponentInputs()\" />\n } @else if (footerTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[side-nav-footer]\">\n <div class=\"default-nav-footer\">\n @if (footerItems().length > 0) {\n <ul class=\"footer-nav-list\">\n @for (item of footerItems(); track item.id || item.label) {\n <talos-nav-item [label]=\"item.label\" [icon]=\"item.icon\" [disabled]=\"item.disabled ?? false\"\n [collapsed]=\"isCollapsed()\"\n [active]=\"item.id ? activeItemId() === item.id : !!item.active\" (itemClick)=\"selectItem(item)\" />\n }\n </ul>\n }\n\n @if (showThemeToggle()) {\n <talos-nav-theme-toggle\n [themeMode]=\"themeMode()\"\n [isDarkMode]=\"isDarkMode()\"\n (themeToggle)=\"themeToggle.emit()\"\n (themeModeChange)=\"themeModeChange.emit($event)\"\n />\n }\n\n @if (userProfile(); as profile) {\n <div class=\"user-profile-card\"\n [talosTooltip]=\"profile.name + ' (' + profile.email + ')'\"\n [tooltipDisabled]=\"!isCollapsed()\"\n tooltipPosition=\"right\">\n <div class=\"avatar-container\">\n @if (profile.avatarUrl) {\n <img [src]=\"profile.avatarUrl\" [alt]=\"profile.name\" class=\"avatar-img\" />\n } @else {\n <div class=\"avatar-placeholder\">\n {{ profile.name.charAt(0) }}\n </div>\n }\n </div>\n <div class=\"user-info\">\n <span class=\"user-name\">{{ profile.name }}</span>\n <span class=\"user-email\">{{ profile.email }}</span>\n </div>\n <div class=\"profile-action\">\n <svg lucideChevronsUpDown class=\"profile-chevron\" [size]=\"14\"></svg>\n </div>\n </div>\n }\n\n <!-- Bottom Collapse/Expand Bar -->\n <button type=\"button\" class=\"footer-collapse-bar\" (click)=\"toggleCollapse()\"\n [attr.aria-label]=\"isCollapsed() ? 'Expand sidebar' : 'Collapse sidebar'\"\n [talosTooltip]=\"isCollapsed() ? 'Expand sidebar' : 'Collapse sidebar'\"\n [tooltipDisabled]=\"!isCollapsed()\"\n tooltipPosition=\"right\">\n <span class=\"collapse-bar-icon\">\n @if (isCollapsed()) {\n <svg lucidePanelLeftOpen [size]=\"16\"></svg>\n } @else {\n <svg lucidePanelLeftClose [size]=\"16\"></svg>\n }\n </span>\n <span class=\"collapse-bar-text\">Collapse sidebar</span>\n </button>\n </div>\n </ng-content>\n }\n </div>\n</div>","import { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ElementRef,\n TemplateRef,\n Type,\n ViewEncapsulation,\n computed,\n inject,\n input,\n model,\n output,\n signal\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n LucideChevronDown,\n LucideMonitor,\n LucideMoon,\n LucidePanelLeftClose,\n LucidePanelLeftOpen,\n LucideSearch,\n LucideSun\n} from '@lucide/angular';\nimport { LayoutService } from '@weeehaoooz/talos-ui/layout';\nimport { TalosTooltipDirective } from '@weeehaoooz/talos-ui/feedback/tooltip';\nimport { TopNavAction, TopNavItem, TopNavSize, TopNavUserProfile } from './top-nav.types';\nimport { TalosThemeMode } from '../theme-toggle/theme-toggle.component';\n\n@Component({\n selector: 'talos-top-nav, [talos-top-nav], [talosTopNav]',\n imports: [\n NgComponentOutlet,\n NgTemplateOutlet,\n LucideChevronDown,\n LucidePanelLeftOpen,\n LucidePanelLeftClose,\n LucideSearch,\n LucideSun,\n LucideMoon,\n LucideMonitor,\n TalosTooltipDirective\n ],\n templateUrl: './top-nav.component.html',\n styleUrl: './top-nav.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'talos-top-nav-host',\n '[class.is-sticky]': 'sticky()',\n '[class.is-glass]': 'glass()',\n '[class.is-bordered]': 'bordered()',\n '[class.size-sm]': 'size() === \"sm\"',\n '[class.size-md]': 'size() === \"md\"',\n '[class.size-lg]': 'size() === \"lg\"',\n '[class.dark-theme]': 'isDarkMode()',\n '[attr.data-theme]': 'isDarkMode() ? \"dark\" : \"light\"',\n 'role': 'banner',\n '(document:click)': 'onDocumentClick($event)',\n '(document:keydown.escape)': 'closeAllDropdowns()'\n }\n})\nexport class TopNavComponent {\n protected readonly layoutService = inject(LayoutService, { optional: true });\n private readonly router = inject(Router, { optional: true });\n private readonly elementRef = inject(ElementRef);\n\n /** Brand title displayed in left header */\n readonly brandTitle = input<string>('Talos');\n\n /** Brand subtitle or description */\n readonly brandSubtitle = input<string | undefined>(undefined);\n\n /** Badge displayed beside brand title */\n readonly brandBadge = input<string | undefined>(undefined);\n\n /** Icon component type for brand badge */\n readonly brandIcon = input<Type<unknown> | null>(null);\n\n /** Route link for brand header click */\n readonly brandRoute = input<string | any[] | undefined>(undefined);\n\n /** Direct href for brand header click */\n readonly brandUrl = input<string | undefined>(undefined);\n\n /** Whether to render brand title & badge */\n readonly showBrand = input<boolean>(true);\n\n /** Whether to show logo in top-nav */\n readonly showLogo = input<boolean>(true);\n\n /** Custom logo component */\n readonly logoComponent = input<Type<unknown> | null>(null);\n\n /** Inputs for custom logo component */\n readonly logoComponentInputs = input<Record<string, unknown>>({});\n\n /** Custom logo template */\n readonly logoTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Whether to show sidebar collapse toggle button */\n readonly showSidebarToggle = input<boolean>(true);\n\n /** Navigation items list with optional dropdown children */\n readonly items = input<TopNavItem[]>([]);\n\n /** Two-way active item identifier */\n readonly activeItemId = model<string | null>(null);\n\n /** Action buttons displayed in right section (e.g. notifications, docs) */\n readonly actions = input<TopNavAction[]>([]);\n\n /** Whether to show theme dark/light mode toggle button */\n readonly showThemeToggle = input<boolean>(true);\n\n /** Explicit 3-way theme mode: 'system' | 'light' | 'dark' */\n readonly themeMode = input<TalosThemeMode | null>(null);\n\n /** Current dark mode state (boolean fallback) */\n readonly isDarkMode = input<boolean>(false);\n\n /** User profile information and user dropdown items */\n readonly userProfile = input<TopNavUserProfile | null>(null);\n\n /** Whether to show search bar */\n readonly showSearch = input<boolean>(false);\n\n /** Placeholder text for search bar */\n readonly searchPlaceholder = input<string>('Search...');\n\n /** Whether top navbar is sticky at top */\n readonly sticky = input<boolean>(false);\n\n /** Whether bottom border is rendered */\n readonly bordered = input<boolean>(true);\n\n /** Whether glassmorphism backdrop blur is applied */\n readonly glass = input<boolean>(false);\n\n /** Size variant for height and spacing */\n readonly size = input<TopNavSize>('md');\n\n /** Custom left section component */\n readonly leftComponent = input<Type<unknown> | null>(null);\n readonly leftComponentInputs = input<Record<string, unknown>>({});\n readonly leftTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Custom center section component */\n readonly centerComponent = input<Type<unknown> | null>(null);\n readonly centerComponentInputs = input<Record<string, unknown>>({});\n readonly centerTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Custom right section component */\n readonly rightComponent = input<Type<unknown> | null>(null);\n readonly rightComponentInputs = input<Record<string, unknown>>({});\n readonly rightTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Optional external two-way binding for sidebar collapsed state. If omitted, syncs with LayoutService. */\n readonly sidebarCollapsed = model<boolean | undefined>(undefined);\n\n /** Effective sidebar collapsed state */\n readonly isSidebarCollapsed = computed(() => {\n const ext = this.sidebarCollapsed();\n if (ext !== undefined) {\n return ext;\n }\n return this.layoutService?.isLeftNavCollapsed() ?? false;\n });\n\n /** Output emitted when a nav item or child item is clicked */\n readonly itemClick = output<TopNavItem>();\n\n /** Output emitted when an action button is clicked */\n readonly actionClick = output<TopNavAction>();\n\n /** Output emitted when user profile is clicked */\n readonly userClick = output<TopNavUserProfile>();\n\n /** Output emitted when theme toggle button is clicked */\n readonly themeToggle = output<void>();\n\n /** Output emitted with next theme mode */\n readonly themeModeChange = output<TalosThemeMode>();\n\n /** Output emitted on search input change */\n readonly searchChange = output<string>();\n\n /** Output emitted when sidebar toggle button is clicked */\n readonly sidebarToggleClick = output<void>();\n\n /** Output emitted when brand logo or title is clicked */\n readonly brandClick = output<void>();\n\n /** Track active open dropdown item ID */\n readonly openDropdownId = signal<string | null>(null);\n\n /** Track whether user profile dropdown menu is open */\n readonly isUserDropdownOpen = signal<boolean>(false);\n\n /** Computed effective theme mode */\n readonly effectiveThemeMode = computed<TalosThemeMode>(() => {\n const mode = this.themeMode();\n if (mode) return mode;\n return this.isDarkMode() ? 'dark' : 'light';\n });\n\n /** Computed next mode in cycle: system -> light -> dark -> system */\n readonly nextThemeMode = computed<TalosThemeMode>(() => {\n switch (this.effectiveThemeMode()) {\n case 'system': return 'light';\n case 'light': return 'dark';\n case 'dark': return 'system';\n default: return 'system';\n }\n });\n\n /** Computed tooltip for theme toggle button */\n readonly themeToggleTooltip = computed<string>(() => {\n const mode = this.effectiveThemeMode();\n const label = mode === 'system' ? 'System (Auto)' : mode === 'dark' ? 'Dark' : 'Light';\n return `Theme: ${label} (Click to cycle)`;\n });\n\n /** Computed aria label for theme toggle button */\n readonly themeToggleAriaLabel = computed<string>(() => {\n const next = this.nextThemeMode();\n const nextName = next === 'system' ? 'System Mode' : next === 'dark' ? 'Dark Mode' : 'Light Mode';\n return `Switch to ${nextName}`;\n });\n\n handleThemeToggle(): void {\n const next = this.nextThemeMode();\n this.themeToggle.emit();\n this.themeModeChange.emit(next);\n }\n\n /** Handle brand click */\n handleBrandClick(): void {\n if (this.brandUrl()) {\n window.open(this.brandUrl()!, '_self');\n } else if (this.brandRoute() !== undefined && this.router) {\n const route = this.brandRoute()!;\n this.router.navigate(Array.isArray(route) ? route : [route]);\n }\n this.brandClick.emit();\n }\n\n /** Toggle sidebar collapse state via model or LayoutService */\n toggleSidebar(): void {\n if (this.sidebarCollapsed() !== undefined) {\n this.sidebarCollapsed.update((c) => !c);\n } else if (this.layoutService) {\n this.layoutService.toggleLeftNav();\n }\n this.sidebarToggleClick.emit();\n }\n\n /** Toggle dropdown state for a given item */\n toggleDropdown(itemId: string, event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n this.isUserDropdownOpen.set(false);\n this.openDropdownId.update((curr) => (curr === itemId ? null : itemId));\n }\n\n /** Toggle user profile dropdown menu */\n toggleUserDropdown(event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n this.openDropdownId.set(null);\n this.isUserDropdownOpen.update((open) => !open);\n if (this.userProfile()) {\n this.userClick.emit(this.userProfile()!);\n }\n }\n\n /** Select a navigation item */\n selectItem(item: TopNavItem, event?: Event): void {\n if (item.disabled) return;\n\n if (item.children && item.children.length > 0) {\n this.toggleDropdown(item.id || item.label, event);\n return;\n }\n\n if (item.id) {\n this.activeItemId.set(item.id);\n }\n this.closeAllDropdowns();\n\n if (item.href) {\n window.open(item.href, item.target ?? '_self');\n } else if (item.route !== undefined && this.router) {\n this.router.navigate(Array.isArray(item.route) ? item.route : [item.route]);\n }\n\n this.itemClick.emit(item);\n }\n\n /** Select a child item inside a dropdown menu */\n selectChildItem(child: TopNavItem, parent: TopNavItem, event?: Event): void {\n if (child.disabled) return;\n if (event) {\n event.stopPropagation();\n }\n if (child.id) {\n this.activeItemId.set(child.id);\n }\n this.closeAllDropdowns();\n\n if (child.href) {\n window.open(child.href, child.target ?? '_self');\n } else if (child.route !== undefined && this.router) {\n this.router.navigate(Array.isArray(child.route) ? child.route : [child.route]);\n }\n\n this.itemClick.emit(child);\n }\n\n /** Handle action button click */\n handleActionClick(action: TopNavAction, event: MouseEvent): void {\n if (action.disabled) return;\n if (action.onClick) {\n action.onClick(action, event);\n }\n if (action.href) {\n window.open(action.href, action.target ?? '_blank');\n } else if (action.route !== undefined && this.router) {\n this.router.navigate(Array.isArray(action.route) ? action.route : [action.route]);\n }\n this.actionClick.emit(action);\n }\n\n /** Handle search input changes */\n onSearchInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.searchChange.emit(value);\n }\n\n /** Close all open dropdown menus */\n closeAllDropdowns(): void {\n this.openDropdownId.set(null);\n this.isUserDropdownOpen.set(false);\n }\n\n /** Dismiss dropdowns when clicking outside the component */\n onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement | null;\n if (target && !this.elementRef.nativeElement.contains(target)) {\n this.closeAllDropdowns();\n }\n }\n}\n","<div class=\"talos-top-nav-inner\">\n <!-- Left Section: Toggle, Brand, Logo -->\n <div class=\"top-nav-left\">\n @if (leftComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: leftComponentInputs()\" />\n } @else if (leftTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[top-nav-left]\">\n <!-- Sidebar Collapse Toggle Button -->\n @if (showSidebarToggle()) {\n <ng-content select=\"[top-nav-toggle]\">\n <button type=\"button\" class=\"nav-toggle-btn\" (click)=\"toggleSidebar()\"\n [attr.aria-label]=\"isSidebarCollapsed() ? 'Expand sidebar' : 'Collapse sidebar'\"\n [talosTooltip]=\"isSidebarCollapsed() ? 'Expand sidebar' : 'Collapse sidebar'\">\n @if (isSidebarCollapsed()) {\n <svg lucidePanelLeftOpen [size]=\"18\"></svg>\n } @else {\n <svg lucidePanelLeftClose [size]=\"18\"></svg>\n }\n </button>\n </ng-content>\n }\n\n <!-- Brand / Logo Area -->\n @if (showLogo() || showBrand()) {\n <div class=\"brand-container\" (click)=\"handleBrandClick()\"\n [attr.tabindex]=\"(brandRoute() || brandUrl()) ? 0 : null\"\n [attr.role]=\"(brandRoute() || brandUrl()) ? 'link' : null\">\n @if (showLogo()) {\n <div class=\"brand-logo-wrapper\">\n @if (logoComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: logoComponentInputs()\" />\n } @else if (logoTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[top-nav-logo]\" />\n }\n </div>\n }\n\n @if (showBrand()) {\n <ng-content select=\"[top-nav-brand]\">\n <div class=\"brand-text-group\">\n <div class=\"brand-title-row\">\n @if (brandIcon(); as iconComp) {\n <span class=\"brand-icon\">\n <ng-container *ngComponentOutlet=\"iconComp\" />\n </span>\n }\n <span class=\"brand-title\">{{ brandTitle() }}</span>\n @if (brandBadge(); as badge) {\n <span class=\"brand-badge\">{{ badge }}</span>\n }\n </div>\n @if (brandSubtitle(); as subtitle) {\n <span class=\"brand-subtitle\">{{ subtitle }}</span>\n }\n </div>\n </ng-content>\n }\n </div>\n }\n </ng-content>\n }\n </div>\n\n <!-- Center Section: Navigation Links & Search -->\n <div class=\"top-nav-center\">\n @if (centerComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: centerComponentInputs()\" />\n } @else if (centerTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[top-nav-center]\">\n <!-- Direct Navigation Items -->\n @if (items().length > 0) {\n <nav class=\"nav-links-bar\" aria-label=\"Main Navigation\">\n @for (item of items(); track item.id || item.label) {\n @if (item.children && item.children.length > 0) {\n <!-- Item with Dropdown Menu -->\n <div class=\"nav-item-dropdown-container\" [class.is-open]=\"openDropdownId() === (item.id || item.label)\">\n <button type=\"button\" class=\"nav-link-btn has-dropdown\"\n [class.is-active]=\"activeItemId() === item.id || !!item.active\" [disabled]=\"item.disabled ?? false\"\n [attr.aria-haspopup]=\"'true'\" [attr.aria-expanded]=\"openDropdownId() === (item.id || item.label)\"\n (click)=\"toggleDropdown(item.id || item.label, $event)\">\n @if (item.icon; as itemIcon) {\n <span class=\"nav-link-icon\">\n <ng-container *ngComponentOutlet=\"itemIcon\" />\n </span>\n }\n <span class=\"nav-link-label\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"nav-link-badge\" [class]=\"'badge-' + (item.badgeVariant ?? 'primary')\">\n {{ item.badge }}\n </span>\n }\n <svg lucideChevronDown class=\"dropdown-chevron\" [size]=\"14\"></svg>\n </button>\n\n <!-- Dropdown Panel -->\n @if (openDropdownId() === (item.id || item.label)) {\n <div class=\"top-nav-dropdown-menu\" role=\"menu\" (click)=\"$event.stopPropagation()\">\n @if (item.dropdownTemplate; as customTmpl) {\n <ng-container *ngTemplateOutlet=\"customTmpl\" />\n } @else {\n <ul class=\"dropdown-menu-list\">\n @for (child of item.children; track child.id || child.label) {\n @if (child.divider) {\n <li class=\"dropdown-divider\" role=\"separator\"></li>\n }\n <li role=\"none\">\n <button type=\"button\" class=\"dropdown-menu-item\" role=\"menuitem\"\n [class.is-active]=\"activeItemId() === child.id || !!child.active\" [disabled]=\"child.disabled ?? false\"\n (click)=\"selectChildItem(child, item, $event)\">\n @if (child.icon; as childIcon) {\n <span class=\"dropdown-item-icon\">\n <ng-container *ngComponentOutlet=\"childIcon\" />\n </span>\n }\n <div class=\"dropdown-item-content\">\n <span class=\"dropdown-item-label\">{{ child.label }}</span>\n @if (child.description) {\n <span class=\"dropdown-item-desc\">{{ child.description }}</span>\n }\n </div>\n @if (child.badge) {\n <span class=\"dropdown-item-badge\" [class]=\"'badge-' + (child.badgeVariant ?? 'subtle')\">\n {{ child.badge }}\n </span>\n }\n </button>\n </li>\n }\n </ul>\n }\n </div>\n }\n </div>\n } @else {\n <!-- Standard Single Nav Link -->\n <button type=\"button\" class=\"nav-link-btn\" [class.is-active]=\"activeItemId() === item.id || !!item.active\"\n [disabled]=\"item.disabled ?? false\" (click)=\"selectItem(item, $event)\">\n @if (item.icon; as itemIcon) {\n <span class=\"nav-link-icon\">\n <ng-container *ngComponentOutlet=\"itemIcon\" />\n </span>\n }\n <span class=\"nav-link-label\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"nav-link-badge\" [class]=\"'badge-' + (item.badgeVariant ?? 'primary')\">\n {{ item.badge }}\n </span>\n }\n </button>\n }\n }\n </nav>\n }\n\n <!-- Search Input Slot -->\n @if (showSearch()) {\n <div class=\"search-bar-wrapper\">\n <svg lucideSearch class=\"search-icon\" [size]=\"15\"></svg>\n <input type=\"text\" class=\"top-nav-search-input\" [placeholder]=\"searchPlaceholder()\"\n (input)=\"onSearchInput($event)\" />\n </div>\n }\n\n <!-- Custom projected center content -->\n <ng-content select=\"[top-nav-links]\" />\n <ng-content />\n </ng-content>\n }\n </div>\n\n <!-- Right Section: Actions, Theme Toggle, User Profile -->\n <div class=\"top-nav-right\">\n @if (rightComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: rightComponentInputs()\" />\n } @else if (rightTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[top-nav-right]\">\n <!-- Action Buttons -->\n @if (actions().length > 0) {\n <div class=\"actions-group\">\n @for (action of actions(); track action.id || action.label || $index) {\n <button type=\"button\" class=\"action-btn\" [class.has-label]=\"action.showLabel && !!action.label\"\n [disabled]=\"action.disabled ?? false\" [attr.aria-label]=\"action.label || 'Action'\"\n [talosTooltip]=\"action.showLabel ? '' : (action.label || '')\" (click)=\"handleActionClick(action, $event)\">\n @if (action.icon; as actIcon) {\n <span class=\"action-btn-icon\">\n <ng-container *ngComponentOutlet=\"actIcon\" />\n </span>\n }\n @if (action.showLabel && action.label) {\n <span class=\"action-btn-label\">{{ action.label }}</span>\n }\n @if (action.badge) {\n <span class=\"action-badge\" [class]=\"'badge-' + (action.badgeVariant ?? 'danger')\">\n {{ action.badge }}\n </span>\n }\n </button>\n }\n </div>\n }\n\n <ng-content select=\"[top-nav-actions]\" />\n\n <!-- 3-Way System/Light/Dark Theme Toggle -->\n @if (showThemeToggle()) {\n <button type=\"button\" class=\"theme-toggle-btn\" (click)=\"handleThemeToggle()\"\n [attr.aria-label]=\"themeToggleAriaLabel()\"\n [talosTooltip]=\"themeToggleTooltip()\">\n @if (effectiveThemeMode() === 'system') {\n <svg lucideMonitor [size]=\"16\"></svg>\n } @else if (effectiveThemeMode() === 'dark') {\n <svg lucideMoon [size]=\"16\"></svg>\n } @else {\n <svg lucideSun [size]=\"16\"></svg>\n }\n </button>\n }\n\n <!-- User Profile & User Dropdown Menu -->\n @if (userProfile(); as user) {\n <div class=\"user-profile-container\" [class.is-open]=\"isUserDropdownOpen()\">\n <button type=\"button\" class=\"user-profile-btn\" [attr.aria-haspopup]=\"'true'\"\n [attr.aria-expanded]=\"isUserDropdownOpen()\" (click)=\"toggleUserDropdown($event)\">\n <div class=\"user-avatar-circle\">\n @if (user.avatarUrl) {\n <img [src]=\"user.avatarUrl\" [alt]=\"user.name\" class=\"user-avatar-img\" />\n } @else {\n <span class=\"avatar-initials\">{{ user.name.charAt(0) }}</span>\n }\n </div>\n <div class=\"user-profile-meta\">\n <span class=\"user-name-text\">{{ user.name }}</span>\n @if (user.role) {\n <span class=\"user-role-text\">{{ user.role }}</span>\n }\n </div>\n @if (user.menuItems && user.menuItems.length > 0) {\n <svg lucideChevronDown class=\"user-dropdown-chevron\" [size]=\"13\"></svg>\n }\n </button>\n\n <!-- User Dropdown Panel -->\n @if (isUserDropdownOpen() && user.menuItems && user.menuItems.length > 0) {\n <div class=\"top-nav-dropdown-menu user-dropdown-menu\" role=\"menu\" (click)=\"$event.stopPropagation()\">\n <div class=\"user-menu-header\">\n <span class=\"user-menu-header-name\">{{ user.name }}</span>\n @if (user.email) {\n <span class=\"user-menu-header-email\">{{ user.email }}</span>\n }\n </div>\n <div class=\"dropdown-divider\" role=\"separator\"></div>\n <ul class=\"dropdown-menu-list\">\n @for (menuItem of user.menuItems; track menuItem.id || menuItem.label) {\n @if (menuItem.divider) {\n <li class=\"dropdown-divider\" role=\"separator\"></li>\n }\n <li role=\"none\">\n <button type=\"button\" class=\"dropdown-menu-item\" role=\"menuitem\"\n [class.is-active]=\"activeItemId() === menuItem.id || !!menuItem.active\"\n [disabled]=\"menuItem.disabled ?? false\" (click)=\"selectItem(menuItem, $event)\">\n @if (menuItem.icon; as menuIcon) {\n <span class=\"dropdown-item-icon\">\n <ng-container *ngComponentOutlet=\"menuIcon\" />\n </span>\n }\n <div class=\"dropdown-item-content\">\n <span class=\"dropdown-item-label\">{{ menuItem.label }}</span>\n @if (menuItem.description) {\n <span class=\"dropdown-item-desc\">{{ menuItem.description }}</span>\n }\n </div>\n @if (menuItem.badge) {\n <span class=\"dropdown-item-badge\" [class]=\"'badge-' + (menuItem.badgeVariant ?? 'subtle')\">\n {{ menuItem.badge }}\n </span>\n }\n </button>\n </li>\n }\n </ul>\n </div>\n }\n </div>\n }\n\n <ng-content select=\"[top-nav-user]\" />\n </ng-content>\n }\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { TopNavComponent } from './top-nav.component';\n\n@NgModule({\n imports: [TopNavComponent],\n exports: [TopNavComponent]\n})\nexport class TalosTopNavModule {}\n","import { NgModule } from '@angular/core';\nimport { SideNavComponent } from './side-nav/side-nav.component';\nimport { TopNavComponent } from './top-nav/top-nav.component';\nimport { TalosNavGroupComponent } from './nav-group/nav-group.component';\nimport { TalosNavItemComponent } from './nav-item/nav-item.component';\nimport { TalosNavThemeToggleComponent } from './theme-toggle/theme-toggle.component';\nimport { TalosTopNavModule } from './top-nav/top-nav.module';\n\n@NgModule({\n imports: [\n SideNavComponent,\n TalosNavGroupComponent,\n TalosNavItemComponent,\n TalosNavThemeToggleComponent\n ],\n exports: [\n SideNavComponent,\n TalosNavGroupComponent,\n TalosNavItemComponent,\n TalosNavThemeToggleComponent\n ]\n})\nexport class TalosSideNavModule {}\n\n@NgModule({\n imports: [\n SideNavComponent,\n TopNavComponent,\n TalosNavGroupComponent,\n TalosNavItemComponent,\n TalosNavThemeToggleComponent,\n TalosTopNavModule,\n TalosSideNavModule\n ],\n exports: [\n SideNavComponent,\n TopNavComponent,\n TalosNavGroupComponent,\n TalosNavItemComponent,\n TalosNavThemeToggleComponent,\n TalosTopNavModule,\n TalosSideNavModule\n ]\n})\nexport class TalosNavModule {}\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":"weeehaoooz-talos-ui-nav.mjs","sources":["../../../projects/talos-ui/nav/nav-group/nav-group.component.ts","../../../projects/talos-ui/nav/nav-item/nav-item.component.ts","../../../projects/talos-ui/nav/theme-toggle/theme-morph-icon.component.ts","../../../projects/talos-ui/nav/theme-toggle/theme-toggle.component.ts","../../../projects/talos-ui/nav/side-nav/side-nav.component.ts","../../../projects/talos-ui/nav/side-nav/side-nav.component.html","../../../projects/talos-ui/nav/top-nav/top-nav.component.ts","../../../projects/talos-ui/nav/top-nav/top-nav.component.html","../../../projects/talos-ui/nav/top-nav/top-nav.module.ts","../../../projects/talos-ui/nav/side-nav.module.ts","../../../projects/talos-ui/nav/weeehaoooz-talos-ui-nav.ts"],"sourcesContent":["import { Component, input, model } from '@angular/core';\nimport { LucideChevronDown } from '@lucide/angular';\n\n@Component({\n selector: 'talos-nav-group',\n imports: [LucideChevronDown],\n template: `\n @if (title(); as groupTitle) {\n @if (collapsible()) {\n <button\n type=\"button\"\n class=\"nav-group-title nav-group-header-btn\"\n [attr.aria-expanded]=\"!collapsed()\"\n (click)=\"toggleCollapse()\">\n <span class=\"nav-group-title-text\">{{ groupTitle }}</span>\n <span class=\"nav-group-chevron\" [class.is-collapsed]=\"collapsed()\">\n <svg lucideChevronDown [size]=\"14\"></svg>\n </span>\n </button>\n } @else {\n <div class=\"nav-group-title\">{{ groupTitle }}</div>\n }\n }\n <div class=\"nav-group-content\" [class.is-collapsed]=\"collapsible() && collapsed()\">\n <ul class=\"nav-item-list\">\n <ng-content />\n </ul>\n </div>\n `,\n host: {\n 'class': 'nav-group talos-nav-group',\n '[class.is-collapsible]': 'collapsible()',\n '[class.is-collapsed]': 'collapsible() && collapsed()',\n 'role': 'group'\n }\n})\nexport class TalosNavGroupComponent {\n /** Optional title for the navigation group */\n readonly title = input<string | undefined>(undefined);\n\n /** Whether the navigation group is collapsible */\n readonly collapsible = input<boolean>(false);\n\n /** Two-way model signal for the collapsed state */\n readonly collapsed = model<boolean>(false);\n\n /** Toggle the collapsed state */\n toggleCollapse(): void {\n if (!this.collapsible()) return;\n this.collapsed.update((c) => !c);\n }\n}\n","import { NgComponentOutlet } from '@angular/common';\nimport { Component, ElementRef, Type, computed, inject, input, output } from '@angular/core';\nimport { LayoutService } from '@weeehaoooz/talos-ui/layout';\nimport { TalosTooltipDirective } from '@weeehaoooz/talos-ui/feedback/tooltip';\n\n@Component({\n selector: 'talos-nav-item',\n imports: [NgComponentOutlet, TalosTooltipDirective],\n template: `\n <button\n type=\"button\"\n class=\"nav-link\"\n [class.active]=\"active()\"\n [disabled]=\"disabled()\"\n (click)=\"handleClick()\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n [talosTooltip]=\"computedTooltip() || ''\"\n [tooltipDisabled]=\"!isSidebarCollapsed()\"\n tooltipPosition=\"right\">\n @if (icon(); as iconComp) {\n <span class=\"nav-icon\">\n <ng-container *ngComponentOutlet=\"iconComp\" />\n </span>\n }\n <span class=\"nav-label\">\n @if (label()) {\n {{ label() }}\n } @else {\n <ng-content />\n }\n </span>\n @if (badge(); as b) {\n <span class=\"nav-badge\">{{ b }}</span>\n }\n </button>\n `,\n host: {\n 'class': 'nav-item talos-nav-item',\n 'role': 'listitem'\n }\n})\nexport class TalosNavItemComponent {\n protected readonly layoutService = inject(LayoutService, { optional: true });\n\n /** Text label for the nav item */\n readonly label = input<string>('');\n\n /** Icon component type (e.g. Lucide icon) */\n readonly icon = input<Type<unknown> | null>(null);\n\n /** Whether the item is currently active */\n readonly active = input<boolean>(false);\n\n /** Badge or counter displayed on the right */\n readonly badge = input<string | number | undefined>(undefined);\n\n /** Whether the nav item is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Optional route path */\n readonly route = input<string | undefined>(undefined);\n\n /** Optional custom tooltip text when collapsed */\n readonly tooltip = input<string | undefined>(undefined);\n\n /** Optional collapsed override passed from parent side-nav */\n readonly collapsed = input<boolean | undefined>(undefined);\n\n /** Output event when the nav item is clicked */\n readonly itemClick = output<void>();\n\n /** Whether parent sidebar is in collapsed mode */\n readonly isSidebarCollapsed = computed(() => {\n const col = this.collapsed();\n if (col !== undefined) {\n return col;\n }\n return this.layoutService?.isLeftNavCollapsed() ?? false;\n });\n\n /** Computed tooltip for collapsed sidebar state */\n readonly computedTooltip = computed(() => {\n if (!this.isSidebarCollapsed()) return null;\n return this.tooltip() || this.label() || null;\n });\n\n handleClick(): void {\n if (this.disabled()) return;\n this.itemClick.emit();\n }\n}\n","import { Component, ViewEncapsulation, computed, input } from '@angular/core';\nimport { LucideMonitor, LucideMoon, LucideSun } from '@lucide/angular';\n\nexport type TalosThemeMorphMode = 'system' | 'light' | 'dark';\n\n@Component({\n selector: 'talos-theme-morph-icon',\n imports: [LucideMonitor, LucideMoon, LucideSun],\n template: `\n <span class=\"talos-theme-morph-container\" [attr.data-mode]=\"effectiveMode()\">\n <span class=\"morph-icon-slot mode-system\" [class.is-active]=\"effectiveMode() === 'system'\">\n <svg lucideMonitor [size]=\"size()\"></svg>\n </span>\n <span class=\"morph-icon-slot mode-dark\" [class.is-active]=\"effectiveMode() === 'dark'\">\n <svg lucideMoon [size]=\"size()\"></svg>\n </span>\n <span class=\"morph-icon-slot mode-light\" [class.is-active]=\"effectiveMode() === 'light'\">\n <svg lucideSun [size]=\"size()\"></svg>\n </span>\n </span>\n `,\n styleUrl: './theme-morph-icon.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'talos-theme-morph-icon-host',\n '[style.width.px]': 'size()',\n '[style.height.px]': 'size()',\n '[style.--morph-size.px]': 'size()'\n }\n})\nexport class TalosThemeMorphIconComponent {\n /** Target theme mode: 'system' | 'light' | 'dark' */\n readonly mode = input<TalosThemeMorphMode>('system');\n\n /** Icon dimension in pixels (defaults to 16px for balanced optical sizing) */\n readonly size = input<number>(16);\n\n /** Effective mode */\n readonly effectiveMode = computed<TalosThemeMorphMode>(() => this.mode() || 'system');\n}\n","import { Component, computed, inject, input, output } from '@angular/core';\nimport { LayoutService } from '@weeehaoooz/talos-ui/layout';\nimport { TalosTooltipDirective, TooltipPosition } from '@weeehaoooz/talos-ui/feedback/tooltip';\nimport { TalosThemeMorphIconComponent } from './theme-morph-icon.component';\n\nexport type TalosThemeMode = 'system' | 'light' | 'dark';\n\n@Component({\n selector: 'talos-nav-theme-toggle',\n imports: [TalosThemeMorphIconComponent, TalosTooltipDirective],\n template: `\n <button\n type=\"button\"\n class=\"theme-toggle-btn\"\n (click)=\"handleToggle()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [talosTooltip]=\"computedTooltip()\"\n [tooltipPosition]=\"tooltipPosition()\">\n <span class=\"theme-toggle-icon\">\n <talos-theme-morph-icon [mode]=\"effectiveMode()\" [size]=\"iconSize()\" />\n </span>\n </button>\n `,\n styleUrl: './theme-toggle.component.scss',\n host: {\n 'class': 'talos-nav-theme-toggle-host',\n '[class.is-collapsed]': 'isCollapsed()'\n }\n})\nexport class TalosNavThemeToggleComponent {\n protected readonly layoutService = inject(LayoutService, { optional: true });\n\n /** Explicit 3-way theme mode: 'system' | 'light' | 'dark' */\n readonly themeMode = input<TalosThemeMode | null>(null);\n\n /** Current dark mode state (boolean fallback for backward compatibility) */\n readonly isDarkMode = input<boolean>(false);\n\n /** Optional explicit collapsed state override */\n readonly collapsed = input<boolean | undefined>(undefined);\n\n /** Icon size in pixels */\n readonly iconSize = input<number>(16);\n\n /** Tooltip position */\n readonly tooltipPosition = input<TooltipPosition>('right');\n\n /** Label shown for system mode */\n readonly systemLabel = input<string>('System Mode');\n\n /** Label shown for light mode */\n readonly lightLabel = input<string>('Light Mode');\n\n /** Label shown for dark mode */\n readonly darkLabel = input<string>('Dark Mode');\n\n /** Optional custom tooltip text override */\n readonly tooltip = input<string | undefined>(undefined);\n\n /** Output event when theme is toggled or clicked */\n readonly themeToggle = output<void>();\n\n /** Output event with selected theme mode ('system' | 'light' | 'dark') */\n readonly themeModeChange = output<TalosThemeMode>();\n\n /** Output event with next dark mode state */\n readonly isDarkModeChange = output<boolean>();\n\n /** Effective collapsed state */\n readonly isCollapsed = computed<boolean>(() => {\n const ext = this.collapsed();\n if (ext !== undefined) return ext;\n return this.layoutService?.isLeftNavCollapsed() ?? false;\n });\n\n /** Computed effective theme mode */\n readonly effectiveMode = computed<TalosThemeMode>(() => {\n const mode = this.themeMode();\n if (mode) return mode;\n return this.isDarkMode() ? 'dark' : 'light';\n });\n\n /** Computed label for active mode */\n readonly currentModeLabel = computed<string>(() => {\n switch (this.effectiveMode()) {\n case 'system': return this.systemLabel();\n case 'dark': return this.darkLabel();\n default: return this.lightLabel();\n }\n });\n\n /** Computed next mode in cycle: system -> light -> dark -> system */\n readonly nextMode = computed<TalosThemeMode>(() => {\n switch (this.effectiveMode()) {\n case 'system': return 'light';\n case 'light': return 'dark';\n case 'dark': return 'system';\n default: return 'system';\n }\n });\n\n /** Computed accessible aria label */\n readonly computedAriaLabel = computed<string>(() => {\n const current = this.currentModeLabel();\n const nextModeName = this.nextMode() === 'system' ? this.systemLabel() : this.nextMode() === 'dark' ? this.darkLabel() : this.lightLabel();\n return `Current theme: ${current}. Click to switch to ${nextModeName}`;\n });\n\n /** Computed tooltip */\n readonly computedTooltip = computed<string>(() => {\n if (this.tooltip() !== undefined) {\n return this.tooltip() || '';\n }\n const current = this.currentModeLabel();\n const nextModeName = this.nextMode() === 'system' ? this.systemLabel() : this.nextMode() === 'dark' ? this.darkLabel() : this.lightLabel();\n return `Theme: ${current} (Click for ${nextModeName})`;\n });\n\n /** Set mode directly */\n setMode(mode: TalosThemeMode): void {\n if (this.effectiveMode() === mode) return;\n this.themeToggle.emit();\n this.themeModeChange.emit(mode);\n this.isDarkModeChange.emit(mode === 'dark');\n }\n\n /** Cycle to next mode */\n handleToggle(): void {\n const next = this.nextMode();\n this.themeToggle.emit();\n this.themeModeChange.emit(next);\n this.isDarkModeChange.emit(next === 'dark');\n }\n}\n","import { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { Component, TemplateRef, Type, ViewEncapsulation, computed, inject, input, model, output, signal } from '@angular/core';\nimport {\n LucideChevronsUpDown,\n LucideCircleHelp,\n LucidePanelLeft,\n LucidePanelLeftClose,\n LucidePanelLeftOpen,\n LucideSettings,\n LucideX\n} from '@lucide/angular';\nimport { LayoutService } from '@weeehaoooz/talos-ui/layout';\nimport { TalosNavGroupComponent } from '../nav-group/nav-group.component';\nimport { TalosNavItemComponent } from '../nav-item/nav-item.component';\nimport { TalosNavThemeToggleComponent, TalosThemeMode } from '../theme-toggle/theme-toggle.component';\nimport { TalosTooltipDirective } from '@weeehaoooz/talos-ui/feedback/tooltip';\n\nexport interface SideNavItem {\n id?: string;\n label: string;\n icon?: any;\n route?: string;\n active?: boolean;\n badge?: string | number;\n disabled?: boolean;\n}\n\nexport interface SideNavGroup {\n title?: string;\n collapsible?: boolean;\n collapsed?: boolean;\n items: SideNavItem[];\n}\n\nexport interface SideNavUserProfile {\n name: string;\n email: string;\n avatarUrl?: string;\n}\n\n@Component({\n selector: 'talos-side-nav',\n imports: [\n NgComponentOutlet,\n NgTemplateOutlet,\n LucidePanelLeft,\n LucideChevronsUpDown,\n LucidePanelLeftOpen,\n LucidePanelLeftClose,\n LucideX,\n TalosNavGroupComponent,\n TalosNavItemComponent,\n TalosNavThemeToggleComponent,\n TalosTooltipDirective\n ],\n templateUrl: './side-nav.component.html',\n styleUrl: './side-nav.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'talos-side-nav-host',\n '[class.is-collapsed]': 'isCollapsed()',\n '[class.dark-theme]': 'isDarkMode()',\n '[attr.data-theme]': 'isDarkMode() ? \"dark\" : \"light\"',\n '[attr.aria-hidden]': 'isCollapsed()',\n 'role': 'navigation'\n }\n})\nexport class SideNavComponent {\n protected readonly layoutService = inject(LayoutService, { optional: true });\n protected readonly LucidePanelLeftOpen = LucidePanelLeftOpen;\n protected readonly LucidePanelLeftClose = LucidePanelLeftClose;\n\n /** Optional external two-way binding for collapsed state. If omitted, syncs with LayoutService. */\n readonly collapsed = model<boolean | undefined>(undefined);\n\n /** Effective collapsed state */\n readonly isCollapsed = computed(() => {\n const ext = this.collapsed();\n if (ext !== undefined) {\n return ext;\n }\n return this.layoutService?.isLeftNavCollapsed() ?? false;\n });\n\n /** Toggle collapsed state */\n toggleCollapse(): void {\n if (this.collapsed() !== undefined) {\n this.collapsed.update((c) => !c);\n } else if (this.layoutService) {\n this.layoutService.toggleLeftNav();\n }\n }\n\n\n /** Custom header component to render entire header */\n readonly headerComponent = input<Type<unknown> | null>(null);\n\n /** Component inputs object to pass to headerComponent */\n readonly headerComponentInputs = input<Record<string, unknown>>({});\n\n /** Custom header template to render entire header */\n readonly headerTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Custom logo component to render in header */\n readonly logoComponent = input<Type<unknown> | null>(null);\n\n /** Component inputs object to pass to logoComponent */\n readonly logoComponentInputs = input<Record<string, unknown>>({});\n\n /** Custom logo template to render in header */\n readonly logoTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Custom body component to render sidebar body */\n readonly bodyComponent = input<Type<unknown> | null>(null);\n\n /** Component inputs object to pass to bodyComponent */\n readonly bodyComponentInputs = input<Record<string, unknown>>({});\n\n /** Custom body template to render sidebar body */\n readonly bodyTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Custom footer component to render sidebar footer */\n readonly footerComponent = input<Type<unknown> | null>(null);\n\n /** Component inputs object to pass to footerComponent */\n readonly footerComponentInputs = input<Record<string, unknown>>({});\n\n /** Custom footer template to render sidebar footer */\n readonly footerTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Whether to show the header in sidebar */\n readonly showHeader = input<boolean>(true);\n\n /** Whether to show the logo in header */\n readonly showLogo = input<boolean>(true);\n\n /** Whether to show the hamburger / panel toggle button in header */\n readonly showToggle = input<boolean>(true);\n\n /** Whether to show the dark mode / light mode theme toggle button in sidebar */\n readonly showThemeToggle = input<boolean>(true);\n\n /** Explicit 3-way theme mode: 'system' | 'light' | 'dark' */\n readonly themeMode = input<TalosThemeMode | null>(null);\n\n /** Current dark mode status (boolean fallback) */\n readonly isDarkMode = input<boolean>(false);\n\n /** Output event when theme toggle is clicked */\n readonly themeToggle = output<void>();\n\n /** Output event when theme mode changes */\n readonly themeModeChange = output<TalosThemeMode>();\n\n /** Track active item ID */\n readonly activeItemId = signal<string>('dashboards');\n\n /** Concise Navigation Groups for clean sidebar UI */\n readonly navGroups = input<SideNavGroup[]>([]);\n\n /** Secondary / Footer Navigation Items */\n readonly footerItems = input<SideNavItem[]>([\n { id: 'help', label: 'Help Center', icon: LucideCircleHelp },\n { id: 'settings', label: 'Settings', icon: LucideSettings }\n ]);\n\n /** User Profile Info for Bottom Footer */\n readonly userProfile = input<SideNavUserProfile>({\n name: 'Eugene Lamar',\n email: 'eugene@glan.com'\n });\n\n /** Output event when a nav item is clicked */\n readonly itemClick = output<SideNavItem>();\n\n selectItem(item: SideNavItem): void {\n if (item.disabled) return;\n if (item.id) {\n this.activeItemId.set(item.id);\n }\n this.itemClick.emit(item);\n }\n}\n","<div class=\"side-nav-inner\">\n <!-- Mobile Close Header Bar (Visible on mobile <= 768px when side nav is 100% full screen) -->\n <div class=\"side-nav-mobile-close-bar\">\n <span class=\"mobile-close-title\">Components</span>\n <button type=\"button\" class=\"mobile-close-btn\" (click)=\"toggleCollapse()\" aria-label=\"Close menu\">\n <svg lucideX [size]=\"18\"></svg>\n </button>\n </div>\n\n <!-- Header -->\n @if (showHeader()) {\n <div class=\"side-nav-header\">\n @if (headerComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: headerComponentInputs()\" />\n } @else if (headerTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[side-nav-header]\">\n <div class=\"default-nav-header\">\n <ng-content select=\"[side-nav-brand]\">\n @if (showLogo()) {\n <div class=\"brand-wrapper\" title=\"Logo\">\n @if (logoComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: logoComponentInputs()\" />\n } @else if (logoTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[side-nav-logo]\" />\n }\n </div>\n }\n </ng-content>\n\n @if (showToggle()) {\n <button type=\"button\" class=\"hamburger-toggle-btn\" (click)=\"toggleCollapse()\"\n [attr.aria-label]=\"isCollapsed() ? 'Expand sidebar' : 'Collapse sidebar'\"\n [talosTooltip]=\"isCollapsed() ? 'Expand sidebar' : 'Collapse sidebar'\" tooltipPosition=\"right\">\n <svg lucidePanelLeft class=\"toggle-icon\" [size]=\"18\"></svg>\n </button>\n }\n </div>\n </ng-content>\n }\n </div>\n }\n\n <!-- Body Navigation Items -->\n <div class=\"side-nav-body\">\n @if (bodyComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: bodyComponentInputs()\" />\n } @else if (bodyTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else if (navGroups().length > 0) {\n <nav class=\"nav-groups-container\" aria-label=\"Sidebar Navigation\">\n @for (group of navGroups(); track group.title || $index) {\n <talos-nav-group [title]=\"group.title\" [collapsible]=\"group.collapsible ?? false\"\n [collapsed]=\"group.collapsed ?? false\">\n @for (item of group.items; track item.id || item.label) {\n <talos-nav-item [label]=\"item.label\" [icon]=\"item.icon\" [badge]=\"item.badge\" [disabled]=\"item.disabled ?? false\"\n [collapsed]=\"isCollapsed()\" [active]=\"(item.id && activeItemId() === item.id) || !!item.active\"\n (itemClick)=\"selectItem(item)\" />\n }\n </talos-nav-group>\n }\n </nav>\n } @else {\n <!-- Projected content slot for custom body content -->\n <ng-content select=\"[side-nav-body]\" />\n <ng-content />\n }\n </div>\n\n <!-- Footer -->\n <div class=\"side-nav-footer\">\n @if (footerComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: footerComponentInputs()\" />\n } @else if (footerTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[side-nav-footer]\">\n <div class=\"default-nav-footer\">\n @if (footerItems().length > 0) {\n <ul class=\"footer-nav-list\">\n @for (item of footerItems(); track item.id || item.label) {\n <talos-nav-item [label]=\"item.label\" [icon]=\"item.icon\" [disabled]=\"item.disabled ?? false\"\n [collapsed]=\"isCollapsed()\" [active]=\"item.id ? activeItemId() === item.id : !!item.active\"\n (itemClick)=\"selectItem(item)\" />\n }\n </ul>\n }\n\n <!-- User Profile Card -->\n @if (userProfile(); as profile) {\n <div class=\"user-profile-card\" [talosTooltip]=\"profile.name + ' (' + profile.email + ')'\"\n [tooltipDisabled]=\"!isCollapsed()\" tooltipPosition=\"right\">\n <div class=\"avatar-container\">\n @if (profile.avatarUrl) {\n <img [src]=\"profile.avatarUrl\" [alt]=\"profile.name\" class=\"avatar-img\" />\n } @else {\n <div class=\"avatar-placeholder\">\n {{ profile.name.charAt(0) }}\n </div>\n }\n </div>\n <div class=\"user-info\">\n <span class=\"user-name\">{{ profile.name }}</span>\n <span class=\"user-email\">{{ profile.email }}</span>\n </div>\n <div class=\"profile-action\">\n <svg lucideChevronsUpDown class=\"profile-chevron\" [size]=\"14\"></svg>\n </div>\n </div>\n }\n\n <!-- Bottom Actions Bar (Collapse + Theme Toggle) -->\n <div class=\"footer-actions-row\">\n <button type=\"button\" class=\"footer-collapse-bar\" (click)=\"toggleCollapse()\"\n [attr.aria-label]=\"isCollapsed() ? 'Expand sidebar' : 'Collapse sidebar'\"\n [talosTooltip]=\"isCollapsed() ? 'Expand sidebar' : 'Collapse sidebar'\" [tooltipDisabled]=\"!isCollapsed()\"\n tooltipPosition=\"right\">\n <span class=\"collapse-bar-icon\">\n @if (isCollapsed()) {\n <svg lucidePanelLeftOpen [size]=\"16\"></svg>\n } @else {\n <svg lucidePanelLeftClose [size]=\"16\"></svg>\n }\n </span>\n <span class=\"collapse-bar-text\">Collapse sidebar</span>\n </button>\n\n @if (showThemeToggle()) {\n <talos-nav-theme-toggle [themeMode]=\"themeMode()\" [isDarkMode]=\"isDarkMode()\"\n (themeToggle)=\"themeToggle.emit()\" (themeModeChange)=\"themeModeChange.emit($event)\" />\n }\n </div>\n </div>\n </ng-content>\n }\n </div>\n</div>","import { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ElementRef,\n TemplateRef,\n Type,\n ViewEncapsulation,\n computed,\n inject,\n input,\n model,\n output,\n signal\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n LucideChevronDown,\n LucideMenu,\n LucidePanelLeftClose,\n LucidePanelLeftOpen,\n LucideSearch,\n LucideX\n} from '@lucide/angular';\nimport { LayoutService } from '@weeehaoooz/talos-ui/layout';\nimport { TalosTooltipDirective } from '@weeehaoooz/talos-ui/feedback/tooltip';\nimport { TopNavAction, TopNavItem, TopNavSize, TopNavUserProfile } from './top-nav.types';\nimport { TalosThemeMode } from '../theme-toggle/theme-toggle.component';\nimport { TalosThemeMorphIconComponent } from '../theme-toggle/theme-morph-icon.component';\n\n@Component({\n selector: 'talos-top-nav, [talos-top-nav], [talosTopNav]',\n imports: [\n NgComponentOutlet,\n NgTemplateOutlet,\n LucideChevronDown,\n LucidePanelLeftOpen,\n LucidePanelLeftClose,\n LucideSearch,\n LucideMenu,\n LucideX,\n TalosTooltipDirective,\n TalosThemeMorphIconComponent\n ],\n templateUrl: './top-nav.component.html',\n styleUrl: './top-nav.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'talos-top-nav-host',\n '[class.is-sticky]': 'sticky()',\n '[class.is-glass]': 'glass()',\n '[class.is-bordered]': 'bordered()',\n '[class.size-sm]': 'size() === \"sm\"',\n '[class.size-md]': 'size() === \"md\"',\n '[class.size-lg]': 'size() === \"lg\"',\n '[class.dark-theme]': 'isDarkMode()',\n '[attr.data-theme]': 'isDarkMode() ? \"dark\" : \"light\"',\n 'role': 'banner',\n '(document:click)': 'onDocumentClick($event)',\n '(document:keydown.escape)': 'closeAllDropdowns()'\n }\n})\nexport class TopNavComponent {\n protected readonly layoutService = inject(LayoutService, { optional: true });\n private readonly router = inject(Router, { optional: true });\n private readonly elementRef = inject(ElementRef);\n\n /** Brand title displayed in left header */\n readonly brandTitle = input<string>('Talos');\n\n /** Brand subtitle or description */\n readonly brandSubtitle = input<string | undefined>(undefined);\n\n /** Badge displayed beside brand title */\n readonly brandBadge = input<string | undefined>(undefined);\n\n /** Icon component type for brand badge */\n readonly brandIcon = input<Type<unknown> | null>(null);\n\n /** Route link for brand header click */\n readonly brandRoute = input<string | any[] | undefined>(undefined);\n\n /** Direct href for brand header click */\n readonly brandUrl = input<string | undefined>(undefined);\n\n /** Whether to render brand title & badge */\n readonly showBrand = input<boolean>(true);\n\n /** Whether to show logo in top-nav */\n readonly showLogo = input<boolean>(true);\n\n /** Custom logo component */\n readonly logoComponent = input<Type<unknown> | null>(null);\n\n /** Inputs for custom logo component */\n readonly logoComponentInputs = input<Record<string, unknown>>({});\n\n /** Custom logo template */\n readonly logoTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Whether to show sidebar collapse toggle button */\n readonly showSidebarToggle = input<boolean>(true);\n\n /** Navigation items list with optional dropdown children */\n readonly items = input<TopNavItem[]>([]);\n\n /** Two-way active item identifier */\n readonly activeItemId = model<string | null>(null);\n\n /** Action buttons displayed in right section (e.g. notifications, docs) */\n readonly actions = input<TopNavAction[]>([]);\n\n /** Whether to show theme dark/light mode toggle button */\n readonly showThemeToggle = input<boolean>(true);\n\n /** Explicit 3-way theme mode: 'system' | 'light' | 'dark' */\n readonly themeMode = input<TalosThemeMode | null>(null);\n\n /** Current dark mode state (boolean fallback) */\n readonly isDarkMode = input<boolean>(false);\n\n /** User profile information and user dropdown items */\n readonly userProfile = input<TopNavUserProfile | null>(null);\n\n /** Whether to show search bar */\n readonly showSearch = input<boolean>(false);\n\n /** Placeholder text for search bar */\n readonly searchPlaceholder = input<string>('Search...');\n\n /** Whether top navbar is sticky at top */\n readonly sticky = input<boolean>(false);\n\n /** Whether bottom border is rendered */\n readonly bordered = input<boolean>(true);\n\n /** Whether glassmorphism backdrop blur is applied */\n readonly glass = input<boolean>(false);\n\n /** Size variant for height and spacing */\n readonly size = input<TopNavSize>('md');\n\n /** Custom left section component */\n readonly leftComponent = input<Type<unknown> | null>(null);\n readonly leftComponentInputs = input<Record<string, unknown>>({});\n readonly leftTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Custom center section component */\n readonly centerComponent = input<Type<unknown> | null>(null);\n readonly centerComponentInputs = input<Record<string, unknown>>({});\n readonly centerTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Custom right section component */\n readonly rightComponent = input<Type<unknown> | null>(null);\n readonly rightComponentInputs = input<Record<string, unknown>>({});\n readonly rightTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Optional external two-way binding for sidebar collapsed state. If omitted, syncs with LayoutService. */\n readonly sidebarCollapsed = model<boolean | undefined>(undefined);\n\n /** Effective sidebar collapsed state */\n readonly isSidebarCollapsed = computed(() => {\n const ext = this.sidebarCollapsed();\n if (ext !== undefined) {\n return ext;\n }\n return this.layoutService?.isLeftNavCollapsed() ?? false;\n });\n\n /** Output emitted when a nav item or child item is clicked */\n readonly itemClick = output<TopNavItem>();\n\n /** Output emitted when an action button is clicked */\n readonly actionClick = output<TopNavAction>();\n\n /** Output emitted when user profile is clicked */\n readonly userClick = output<TopNavUserProfile>();\n\n /** Output emitted when theme toggle button is clicked */\n readonly themeToggle = output<void>();\n\n /** Output emitted with next theme mode */\n readonly themeModeChange = output<TalosThemeMode>();\n\n /** Output emitted on search input change */\n readonly searchChange = output<string>();\n\n /** Output emitted when sidebar toggle button is clicked */\n readonly sidebarToggleClick = output<void>();\n\n /** Output emitted when brand logo or title is clicked */\n readonly brandClick = output<void>();\n\n /** Track active open dropdown item ID */\n readonly openDropdownId = signal<string | null>(null);\n\n /** Track whether user profile dropdown menu is open */\n readonly isUserDropdownOpen = signal<boolean>(false);\n\n /** Track whether mobile hamburger navigation sheet is open */\n readonly isMobileMenuOpen = signal<boolean>(false);\n\n toggleMobileMenu(): void {\n this.isMobileMenuOpen.update((v) => !v);\n }\n\n closeMobileMenu(): void {\n this.isMobileMenuOpen.set(false);\n }\n\n /** Computed effective theme mode */\n readonly effectiveThemeMode = computed<TalosThemeMode>(() => {\n const mode = this.themeMode();\n if (mode) return mode;\n return this.isDarkMode() ? 'dark' : 'light';\n });\n\n /** Computed next mode in cycle: system -> light -> dark -> system */\n readonly nextThemeMode = computed<TalosThemeMode>(() => {\n switch (this.effectiveThemeMode()) {\n case 'system': return 'light';\n case 'light': return 'dark';\n case 'dark': return 'system';\n default: return 'system';\n }\n });\n\n /** Computed tooltip for theme toggle button */\n readonly themeToggleTooltip = computed<string>(() => {\n const mode = this.effectiveThemeMode();\n const label = mode === 'system' ? 'System (Auto)' : mode === 'dark' ? 'Dark' : 'Light';\n return `Theme: ${label} (Click to cycle)`;\n });\n\n /** Computed aria label for theme toggle button */\n readonly themeToggleAriaLabel = computed<string>(() => {\n const next = this.nextThemeMode();\n const nextName = next === 'system' ? 'System Mode' : next === 'dark' ? 'Dark Mode' : 'Light Mode';\n return `Switch to ${nextName}`;\n });\n\n handleThemeToggle(): void {\n const next = this.nextThemeMode();\n this.themeToggle.emit();\n this.themeModeChange.emit(next);\n }\n\n /** Handle brand click */\n handleBrandClick(): void {\n if (this.brandUrl()) {\n window.open(this.brandUrl()!, '_self');\n } else if (this.brandRoute() !== undefined && this.router) {\n const route = this.brandRoute()!;\n this.router.navigate(Array.isArray(route) ? route : [route]);\n }\n this.brandClick.emit();\n }\n\n /** Toggle sidebar collapse state via model or LayoutService */\n toggleSidebar(): void {\n if (this.sidebarCollapsed() !== undefined) {\n this.sidebarCollapsed.update((c) => !c);\n } else if (this.layoutService) {\n this.layoutService.toggleLeftNav();\n }\n this.sidebarToggleClick.emit();\n }\n\n /** Toggle dropdown state for a given item */\n toggleDropdown(itemId: string, event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n this.isUserDropdownOpen.set(false);\n this.openDropdownId.update((curr) => (curr === itemId ? null : itemId));\n }\n\n /** Toggle user profile dropdown menu */\n toggleUserDropdown(event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n this.openDropdownId.set(null);\n this.isUserDropdownOpen.update((open) => !open);\n if (this.userProfile()) {\n this.userClick.emit(this.userProfile()!);\n }\n }\n\n /** Select a navigation item */\n selectItem(item: TopNavItem, event?: Event): void {\n if (item.disabled) return;\n\n if (item.children && item.children.length > 0) {\n this.toggleDropdown(item.id || item.label, event);\n return;\n }\n\n if (item.id) {\n this.activeItemId.set(item.id);\n }\n this.closeAllDropdowns();\n\n if (item.href) {\n window.open(item.href, item.target ?? '_self');\n } else if (item.route !== undefined && this.router) {\n this.router.navigate(Array.isArray(item.route) ? item.route : [item.route]);\n }\n\n this.itemClick.emit(item);\n }\n\n /** Select a child item inside a dropdown menu */\n selectChildItem(child: TopNavItem, parent: TopNavItem, event?: Event): void {\n if (child.disabled) return;\n if (event) {\n event.stopPropagation();\n }\n if (child.id) {\n this.activeItemId.set(child.id);\n }\n this.closeAllDropdowns();\n\n if (child.href) {\n window.open(child.href, child.target ?? '_self');\n } else if (child.route !== undefined && this.router) {\n this.router.navigate(Array.isArray(child.route) ? child.route : [child.route]);\n }\n\n this.itemClick.emit(child);\n }\n\n /** Handle action button click */\n handleActionClick(action: TopNavAction, event: MouseEvent): void {\n if (action.disabled) return;\n if (action.onClick) {\n action.onClick(action, event);\n }\n if (action.href) {\n window.open(action.href, action.target ?? '_blank');\n } else if (action.route !== undefined && this.router) {\n this.router.navigate(Array.isArray(action.route) ? action.route : [action.route]);\n }\n this.actionClick.emit(action);\n }\n\n /** Handle search input changes */\n onSearchInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.searchChange.emit(value);\n }\n\n /** Close all open dropdown menus */\n closeAllDropdowns(): void {\n this.openDropdownId.set(null);\n this.isUserDropdownOpen.set(false);\n this.isMobileMenuOpen.set(false);\n }\n\n /** Dismiss dropdowns when clicking outside the component */\n onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement | null;\n if (target && !this.elementRef.nativeElement.contains(target)) {\n this.closeAllDropdowns();\n }\n }\n}\n","<div class=\"talos-top-nav-inner\">\n <!-- Left Section: Toggle, Brand, Logo -->\n <div class=\"top-nav-left\">\n @if (leftComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: leftComponentInputs()\" />\n } @else if (leftTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[top-nav-left]\">\n <!-- Sidebar Collapse Toggle Button -->\n @if (showSidebarToggle()) {\n <ng-content select=\"[top-nav-toggle]\">\n <button type=\"button\" class=\"nav-toggle-btn\" (click)=\"toggleSidebar()\"\n [attr.aria-label]=\"isSidebarCollapsed() ? 'Expand sidebar' : 'Collapse sidebar'\"\n [talosTooltip]=\"isSidebarCollapsed() ? 'Expand sidebar' : 'Collapse sidebar'\">\n @if (isSidebarCollapsed()) {\n <svg lucidePanelLeftOpen [size]=\"18\"></svg>\n } @else {\n <svg lucidePanelLeftClose [size]=\"18\"></svg>\n }\n </button>\n </ng-content>\n }\n\n <!-- Brand / Logo Area -->\n @if (showLogo() || showBrand()) {\n <div class=\"brand-container\" (click)=\"handleBrandClick()\"\n [attr.tabindex]=\"(brandRoute() || brandUrl()) ? 0 : null\"\n [attr.role]=\"(brandRoute() || brandUrl()) ? 'link' : null\">\n @if (showLogo()) {\n <div class=\"brand-logo-wrapper\">\n @if (logoComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: logoComponentInputs()\" />\n } @else if (logoTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[top-nav-logo]\" />\n }\n </div>\n }\n\n @if (showBrand()) {\n <ng-content select=\"[top-nav-brand]\">\n <div class=\"brand-text-group\">\n <div class=\"brand-title-row\">\n @if (brandIcon(); as iconComp) {\n <span class=\"brand-icon\">\n <ng-container *ngComponentOutlet=\"iconComp\" />\n </span>\n }\n <span class=\"brand-title\">{{ brandTitle() }}</span>\n @if (brandBadge(); as badge) {\n <span class=\"brand-badge\">{{ badge }}</span>\n }\n </div>\n @if (brandSubtitle(); as subtitle) {\n <span class=\"brand-subtitle\">{{ subtitle }}</span>\n }\n </div>\n </ng-content>\n }\n </div>\n }\n </ng-content>\n }\n </div>\n\n <!-- Center Section: Navigation Links & Search -->\n <div class=\"top-nav-center\">\n @if (centerComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: centerComponentInputs()\" />\n } @else if (centerTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[top-nav-center]\">\n <!-- Direct Navigation Items -->\n @if (items().length > 0) {\n <nav class=\"nav-links-bar\" aria-label=\"Main Navigation\">\n @for (item of items(); track item.id || item.label) {\n @if (item.children && item.children.length > 0) {\n <!-- Item with Dropdown Menu -->\n <div class=\"nav-item-dropdown-container\" [class.is-open]=\"openDropdownId() === (item.id || item.label)\">\n <button type=\"button\" class=\"nav-link-btn has-dropdown\"\n [class.is-active]=\"activeItemId() === item.id || !!item.active\" [disabled]=\"item.disabled ?? false\"\n [attr.aria-haspopup]=\"'true'\" [attr.aria-expanded]=\"openDropdownId() === (item.id || item.label)\"\n (click)=\"toggleDropdown(item.id || item.label, $event)\">\n @if (item.icon; as itemIcon) {\n <span class=\"nav-link-icon\">\n <ng-container *ngComponentOutlet=\"itemIcon\" />\n </span>\n }\n <span class=\"nav-link-label\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"nav-link-badge\" [class]=\"'badge-' + (item.badgeVariant ?? 'primary')\">\n {{ item.badge }}\n </span>\n }\n <svg lucideChevronDown class=\"dropdown-chevron\" [size]=\"14\"></svg>\n </button>\n\n <!-- Dropdown Panel -->\n @if (openDropdownId() === (item.id || item.label)) {\n <div class=\"top-nav-dropdown-menu\" role=\"menu\" (click)=\"$event.stopPropagation()\">\n @if (item.dropdownTemplate; as customTmpl) {\n <ng-container *ngTemplateOutlet=\"customTmpl\" />\n } @else {\n <ul class=\"dropdown-menu-list\">\n @for (child of item.children; track child.id || child.label) {\n @if (child.divider) {\n <li class=\"dropdown-divider\" role=\"separator\"></li>\n }\n <li role=\"none\">\n <button type=\"button\" class=\"dropdown-menu-item\" role=\"menuitem\"\n [class.is-active]=\"activeItemId() === child.id || !!child.active\" [disabled]=\"child.disabled ?? false\"\n (click)=\"selectChildItem(child, item, $event)\">\n @if (child.icon; as childIcon) {\n <span class=\"dropdown-item-icon\">\n <ng-container *ngComponentOutlet=\"childIcon\" />\n </span>\n }\n <div class=\"dropdown-item-content\">\n <span class=\"dropdown-item-label\">{{ child.label }}</span>\n @if (child.description) {\n <span class=\"dropdown-item-desc\">{{ child.description }}</span>\n }\n </div>\n @if (child.badge) {\n <span class=\"dropdown-item-badge\" [class]=\"'badge-' + (child.badgeVariant ?? 'subtle')\">\n {{ child.badge }}\n </span>\n }\n </button>\n </li>\n }\n </ul>\n }\n </div>\n }\n </div>\n } @else {\n <!-- Standard Single Nav Link -->\n <button type=\"button\" class=\"nav-link-btn\" [class.is-active]=\"activeItemId() === item.id || !!item.active\"\n [disabled]=\"item.disabled ?? false\" (click)=\"selectItem(item, $event)\">\n @if (item.icon; as itemIcon) {\n <span class=\"nav-link-icon\">\n <ng-container *ngComponentOutlet=\"itemIcon\" />\n </span>\n }\n <span class=\"nav-link-label\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"nav-link-badge\" [class]=\"'badge-' + (item.badgeVariant ?? 'primary')\">\n {{ item.badge }}\n </span>\n }\n </button>\n }\n }\n </nav>\n }\n\n <!-- Search Input Slot -->\n @if (showSearch()) {\n <div class=\"search-bar-wrapper\">\n <svg lucideSearch class=\"search-icon\" [size]=\"15\"></svg>\n <input type=\"text\" class=\"top-nav-search-input\" [placeholder]=\"searchPlaceholder()\"\n (input)=\"onSearchInput($event)\" />\n </div>\n }\n\n <!-- Custom projected center content -->\n <ng-content select=\"[top-nav-links]\" />\n <ng-content />\n </ng-content>\n }\n </div>\n\n <!-- Right Section: Actions, Theme Toggle, User Profile -->\n <div class=\"top-nav-right\">\n @if (rightComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: rightComponentInputs()\" />\n } @else if (rightTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[top-nav-right]\">\n <!-- Action Buttons -->\n @if (actions().length > 0) {\n <div class=\"actions-group\">\n @for (action of actions(); track action.id || action.label || $index) {\n <button type=\"button\" class=\"action-btn\" [class.has-label]=\"action.showLabel && !!action.label\"\n [disabled]=\"action.disabled ?? false\" [attr.aria-label]=\"action.label || 'Action'\"\n [talosTooltip]=\"action.showLabel ? '' : (action.label || '')\" (click)=\"handleActionClick(action, $event)\">\n @if (action.icon; as actIcon) {\n <span class=\"action-btn-icon\">\n <ng-container *ngComponentOutlet=\"actIcon\" />\n </span>\n }\n @if (action.showLabel && action.label) {\n <span class=\"action-btn-label\">{{ action.label }}</span>\n }\n @if (action.badge) {\n <span class=\"action-badge\" [class]=\"'badge-' + (action.badgeVariant ?? 'danger')\">\n {{ action.badge }}\n </span>\n }\n </button>\n }\n </div>\n }\n\n <ng-content select=\"[top-nav-actions]\" />\n\n <!-- 3-Way System/Light/Dark Theme Toggle -->\n @if (showThemeToggle()) {\n <button type=\"button\" class=\"theme-toggle-btn\" (click)=\"handleThemeToggle()\"\n [attr.aria-label]=\"themeToggleAriaLabel()\" [talosTooltip]=\"themeToggleTooltip()\">\n <talos-theme-morph-icon [mode]=\"effectiveThemeMode()\" [size]=\"16\" />\n </button>\n }\n\n <!-- User Profile & User Dropdown Menu -->\n @if (userProfile(); as user) {\n <div class=\"user-profile-container\" [class.is-open]=\"isUserDropdownOpen()\">\n <button type=\"button\" class=\"user-profile-btn\" [attr.aria-haspopup]=\"'true'\"\n [attr.aria-expanded]=\"isUserDropdownOpen()\" (click)=\"toggleUserDropdown($event)\">\n <div class=\"user-avatar-circle\">\n @if (user.avatarUrl) {\n <img [src]=\"user.avatarUrl\" [alt]=\"user.name\" class=\"user-avatar-img\" />\n } @else {\n <span class=\"avatar-initials\">{{ user.name.charAt(0) }}</span>\n }\n </div>\n <div class=\"user-profile-meta\">\n <span class=\"user-name-text\">{{ user.name }}</span>\n @if (user.role) {\n <span class=\"user-role-text\">{{ user.role }}</span>\n }\n </div>\n @if (user.menuItems && user.menuItems.length > 0) {\n <svg lucideChevronDown class=\"user-dropdown-chevron\" [size]=\"13\"></svg>\n }\n </button>\n\n <!-- User Dropdown Panel -->\n @if (isUserDropdownOpen() && user.menuItems && user.menuItems.length > 0) {\n <div class=\"top-nav-dropdown-menu user-dropdown-menu\" role=\"menu\" (click)=\"$event.stopPropagation()\">\n <div class=\"user-menu-header\">\n <span class=\"user-menu-header-name\">{{ user.name }}</span>\n @if (user.email) {\n <span class=\"user-menu-header-email\">{{ user.email }}</span>\n }\n </div>\n <div class=\"dropdown-divider\" role=\"separator\"></div>\n <ul class=\"dropdown-menu-list\">\n @for (menuItem of user.menuItems; track menuItem.id || menuItem.label) {\n @if (menuItem.divider) {\n <li class=\"dropdown-divider\" role=\"separator\"></li>\n }\n <li role=\"none\">\n <button type=\"button\" class=\"dropdown-menu-item\" role=\"menuitem\"\n [class.is-active]=\"activeItemId() === menuItem.id || !!menuItem.active\"\n [disabled]=\"menuItem.disabled ?? false\" (click)=\"selectItem(menuItem, $event)\">\n @if (menuItem.icon; as menuIcon) {\n <span class=\"dropdown-item-icon\">\n <ng-container *ngComponentOutlet=\"menuIcon\" />\n </span>\n }\n <div class=\"dropdown-item-content\">\n <span class=\"dropdown-item-label\">{{ menuItem.label }}</span>\n @if (menuItem.description) {\n <span class=\"dropdown-item-desc\">{{ menuItem.description }}</span>\n }\n </div>\n @if (menuItem.badge) {\n <span class=\"dropdown-item-badge\" [class]=\"'badge-' + (menuItem.badgeVariant ?? 'subtle')\">\n {{ menuItem.badge }}\n </span>\n }\n </button>\n </li>\n }\n </ul>\n </div>\n }\n </div>\n }\n\n <!-- Mobile Top Nav Hamburger Toggle Button -->\n @if (items().length > 0 || actions().length > 0) {\n <button type=\"button\" class=\"top-nav-mobile-hamburger-btn\" (click)=\"toggleMobileMenu()\"\n [class.is-open]=\"isMobileMenuOpen()\" [attr.aria-expanded]=\"isMobileMenuOpen()\"\n [attr.aria-label]=\"isMobileMenuOpen() ? 'Close navigation menu' : 'Open navigation menu'\">\n @if (isMobileMenuOpen()) {\n <svg lucideX [size]=\"20\"></svg>\n } @else {\n <svg lucideMenu [size]=\"20\"></svg>\n }\n </button>\n }\n\n <ng-content select=\"[top-nav-user]\" />\n </ng-content>\n }\n </div>\n</div>\n\n<!-- Mobile Top Navigation Expanding Sheet (Expands Downwards from Top) -->\n@if (isMobileMenuOpen()) {\n<div class=\"top-nav-mobile-sheet\" role=\"navigation\" aria-label=\"Mobile Navigation\" (click)=\"$event.stopPropagation()\">\n @if (showSearch()) {\n <div class=\"mobile-search-bar\">\n <svg lucideSearch class=\"search-icon\" [size]=\"16\"></svg>\n <input type=\"text\" class=\"top-nav-search-input\" [placeholder]=\"searchPlaceholder()\"\n (input)=\"onSearchInput($event)\" />\n </div>\n }\n\n @if (items().length > 0) {\n <nav class=\"mobile-nav-links-list\" aria-label=\"Mobile Main Navigation\">\n @for (item of items(); track item.id || item.label) {\n <button type=\"button\" class=\"mobile-nav-link-btn\" [class.is-active]=\"activeItemId() === item.id || !!item.active\"\n [disabled]=\"item.disabled ?? false\" (click)=\"selectItem(item, $event); closeMobileMenu()\">\n @if (item.icon; as itemIcon) {\n <span class=\"nav-link-icon\">\n <ng-container *ngComponentOutlet=\"itemIcon\" />\n </span>\n }\n <span class=\"nav-link-label\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"nav-link-badge\" [class]=\"'badge-' + (item.badgeVariant ?? 'primary')\">\n {{ item.badge }}\n </span>\n }\n </button>\n }\n </nav>\n }\n\n @if (actions().length > 0) {\n <div class=\"mobile-sheet-actions\">\n @for (action of actions(); track action.id || action.label || $index) {\n <button type=\"button\" class=\"mobile-action-btn\" [disabled]=\"action.disabled ?? false\"\n (click)=\"handleActionClick(action, $event); closeMobileMenu()\">\n @if (action.icon; as actIcon) {\n <span class=\"action-btn-icon\">\n <ng-container *ngComponentOutlet=\"actIcon\" />\n </span>\n }\n @if (action.label) {\n <span class=\"action-btn-label\">{{ action.label }}</span>\n }\n @if (action.badge) {\n <span class=\"action-badge\" [class]=\"'badge-' + (action.badgeVariant ?? 'danger')\">\n {{ action.badge }}\n </span>\n }\n </button>\n }\n </div>\n }\n</div>\n\n<!-- Backdrop for Top Nav Mobile Sheet -->\n<div class=\"top-nav-mobile-backdrop\" (click)=\"closeMobileMenu()\" aria-hidden=\"true\"></div>\n}","import { NgModule } from '@angular/core';\nimport { TopNavComponent } from './top-nav.component';\n\n@NgModule({\n imports: [TopNavComponent],\n exports: [TopNavComponent]\n})\nexport class TalosTopNavModule {}\n","import { NgModule } from '@angular/core';\nimport { SideNavComponent } from './side-nav/side-nav.component';\nimport { TopNavComponent } from './top-nav/top-nav.component';\nimport { TalosNavGroupComponent } from './nav-group/nav-group.component';\nimport { TalosNavItemComponent } from './nav-item/nav-item.component';\nimport { TalosNavThemeToggleComponent } from './theme-toggle/theme-toggle.component';\nimport { TalosTopNavModule } from './top-nav/top-nav.module';\n\n@NgModule({\n imports: [\n SideNavComponent,\n TalosNavGroupComponent,\n TalosNavItemComponent,\n TalosNavThemeToggleComponent\n ],\n exports: [\n SideNavComponent,\n TalosNavGroupComponent,\n TalosNavItemComponent,\n TalosNavThemeToggleComponent\n ]\n})\nexport class TalosSideNavModule {}\n\n@NgModule({\n imports: [\n SideNavComponent,\n TopNavComponent,\n TalosNavGroupComponent,\n TalosNavItemComponent,\n TalosNavThemeToggleComponent,\n TalosTopNavModule,\n TalosSideNavModule\n ],\n exports: [\n SideNavComponent,\n TopNavComponent,\n TalosNavGroupComponent,\n TalosNavItemComponent,\n TalosNavThemeToggleComponent,\n TalosTopNavModule,\n TalosSideNavModule\n ]\n})\nexport class TalosNavModule {}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}