@unopsitg/ux 21.0.20 → 21.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"unopsitg-ux.mjs","sources":["../../../projects/unops-ux/src/lib/theme/brand-theme.ts","../../../projects/unops-ux/src/lib/layout/tokens.ts","../../../projects/unops-ux/src/lib/layout/layout.service.ts","../../../projects/unops-ux/src/lib/layout/footer.service.ts","../../../projects/unops-ux/src/lib/layout/components/app.breadcrumb.ts","../../../projects/unops-ux/src/lib/layout/components/app.configurator.ts","../../../projects/unops-ux/src/lib/layout/components/app.rightmenu.ts","../../../projects/unops-ux/src/lib/layout/components/app.search.ts","../../../projects/unops-ux/src/lib/components/footer-main/footer-main.ts","../../../projects/unops-ux/src/lib/layout/components/app.menuitem.ts","../../../projects/unops-ux/src/lib/layout/components/app.menu.ts","../../../projects/unops-ux/src/lib/layout/components/app.topbar.ts","../../../projects/unops-ux/src/lib/layout/components/app.sidebar.ts","../../../projects/unops-ux/src/lib/layout/components/app.layout.ts","../../../projects/unops-ux/src/lib/layout/components/app.footer.ts","../../../projects/unops-ux/src/lib/layout/components/app.authlayout.ts","../../../projects/unops-ux/src/lib/components/ai-card-bg/ai-card-bg.ts","../../../projects/unops-ux/src/lib/components/ai-insights-card/ai-insights-card.ts","../../../projects/unops-ux/src/lib/components/completion-steps/completion-steps.ts","../../../projects/unops-ux/src/lib/components/detail-layout/detail-layout.ts","../../../projects/unops-ux/src/lib/components/pill-tabs/pill-tabs.ts","../../../projects/unops-ux/src/lib/components/documents-card/documents-card.ts","../../../projects/unops-ux/src/lib/components/select/select.ts","../../../projects/unops-ux/src/lib/components/task-drawer/task-drawer.ts","../../../projects/unops-ux/src/public-api.ts","../../../projects/unops-ux/src/unopsitg-ux.ts"],"sourcesContent":["import { definePreset } from '@primeuix/themes';\nimport SoftBase from '@primeuix/themes/aura';\nimport CrispBase from '@primeuix/themes/lara';\nimport ContrastBase from '@primeuix/themes/nora';\n\n/**\n * Brand theme presets built on top of PrimeUIX base presets.\n *\n * Upstream mapping (for PrimeNG docs, changelogs, and debugging):\n * Soft <- @primeuix/themes/aura\n * Crisp <- @primeuix/themes/lara\n * Contrast <- @primeuix/themes/nora\n */\n\nexport const brandPrimitives = {\n deepsea: { 50: '#c3c7cb', 100: '#9ea5ac', 200: '#7a838d', 300: '#56626d', 400: '#31404e', 500: '#0d1e2f', 600: '#0b1a28', 700: '#091521', 800: '#07111a', 900: '#050c13', 950: '#03080c' },\n gray: { 50: '#f8fafc', 100: '#f1f5f9', 200: '#e2e8f0', 300: '#cbd5e1', 400: '#94a3b8', 500: '#64748b', 600: '#475569', 700: '#334155', 800: '#1e293b', 900: '#0f172a', 950: '#020617' },\n red: { 50: '#f6cac6', 100: '#f0a9a4', 200: '#eb8982', 300: '#e56960', 400: '#e0493e', 500: '#da291c', 600: '#b92318', 700: '#991d14', 800: '#78170f', 900: '#57100b', 950: '#370a07' },\n orange: { 50: '#f9d6c3', 100: '#f6be9f', 200: '#f2a57a', 300: '#ef8d56', 400: '#eb7432', 500: '#e85c0e', 600: '#c54e0c', 700: '#a2400a', 800: '#803308', 900: '#5d2506', 950: '#3a1704' },\n yellow: { 50: '#fff0c5', 100: '#ffe7a1', 200: '#ffdd7e', 300: '#ffd45b', 400: '#ffcb38', 500: '#ffc215', 600: '#d9a512', 700: '#b3880f', 800: '#8c6b0c', 900: '#664e08', 950: '#403105' },\n lemon: { 50: '#fdfad0', 100: '#fcf7b4', 200: '#fbf398', 300: '#faf07c', 400: '#f9ed60', 500: '#f8ea44', 600: '#d3c73a', 700: '#aea430', 800: '#888125', 900: '#635e1b', 950: '#3e3b11' },\n lime: { 50: '#f0f5bf', 100: '#e7ef99', 200: '#dfe873', 300: '#d6e24d', 400: '#cddc26', 500: '#c4d600', 600: '#a7b600', 700: '#899600', 800: '#6c7600', 900: '#4e5600', 950: '#313600' },\n babygreen: { 50: '#e5f2cf', 100: '#d5e9b1', 200: '#c5e194', 300: '#b6d977', 400: '#a6d15a', 500: '#96c93d', 600: '#80ab34', 700: '#698d2b', 800: '#536f22', 900: '#3c5018', 950: '#26320f' },\n green: { 50: '#d2e7cd', 100: '#b7d9af', 200: '#9dca92', 300: '#82bc74', 400: '#67ad56', 500: '#4c9f38', 600: '#418730', 700: '#356f27', 800: '#2a571f', 900: '#1e4016', 950: '#13280e' },\n olive: { 50: '#d1e0d5', 100: '#b5cdbc', 200: '#99baa3', 300: '#7da889', 400: '#619570', 500: '#458257', 600: '#3b6f4a', 700: '#305b3d', 800: '#264830', 900: '#1c3423', 950: '#112116' },\n teal: { 50: '#bfeae5', 100: '#99ddd5', 200: '#73d0c6', 300: '#4dc3b6', 400: '#26b6a7', 500: '#00a997', 600: '#009080', 700: '#00766a', 800: '#005d53', 900: '#00443c', 950: '#002a26' },\n ocean: { 50: '#d3f0f7', 100: '#b8e7f3', 200: '#9edeee', 300: '#83d5e9', 400: '#69cce5', 500: '#4ec3e0', 600: '#42a6be', 700: '#37899d', 800: '#2b6b7b', 900: '#1f4e5a', 950: '#143138' },\n blue: { 50: '#DEEFFF', 100: '#C9E8FF', 150: '#99D3ED', 200: '#73c3e6', 300: '#4db3df', 400: '#26a2d8', 500: '#0092d1', 600: '#007cb2', 700: '#006692', 800: '#005073', 900: '#003a54', 950: '#002534' },\n darkblue: { 50: '#D0EEFF', 100: '#B7E2F9', 200: '#73abc7', 300: '#4d94b8', 400: '#267da9', 500: '#00669a', 600: '#005783', 700: '#00476c', 800: '#003855', 900: '#00293e', 950: '#001a27' },\n midnight: { 50: '#bfd2dd', 100: '#99b6c8', 200: '#739bb4', 300: '#4d809f', 400: '#26648b', 500: '#004976', 600: '#003e64', 700: '#003353', 800: '#002841', 850: '#001E31', 900: '#001d2f', 950: '#00121e' },\n cherry: { 50: '#e6c7d9', 100: '#d6a5c2', 200: '#c783ab', 300: '#b86294', 400: '#a8407d', 500: '#991e66', 600: '#821a57', 700: '#6b1547', 800: '#541138', 900: '#3d0c29', 950: '#26081a' },\n ai: { 50: '#f0edff', 100: '#e4deff', 200: '#cdc2ff', 300: '#b0a0ff', 400: '#9378ff', 500: '#7c5cfc', 600: '#6a44f0', 700: '#5835d4', 800: '#482dac', 900: '#3b278a', 950: '#24185e' }\n} as const;\n\nconst brandOverrides = {\n primitive: {\n ...brandPrimitives,\n slate: brandPrimitives.gray,\n zinc: brandPrimitives.deepsea,\n neutral: brandPrimitives.gray,\n stone: brandPrimitives.gray,\n emerald: brandPrimitives.green,\n amber: brandPrimitives.yellow,\n cyan: brandPrimitives.ocean,\n sky: brandPrimitives.blue,\n indigo: brandPrimitives.darkblue,\n violet: brandPrimitives.midnight,\n purple: brandPrimitives.cherry,\n fuchsia: brandPrimitives.cherry,\n pink: brandPrimitives.cherry,\n rose: brandPrimitives.red\n },\n semantic: {\n fontFamily: '\"Noto Sans\", sans-serif',\n primary: {\n 50: '{darkblue.50}',\n 100: '{darkblue.100}',\n 200: '{darkblue.200}',\n 300: '{darkblue.300}',\n 400: '{darkblue.400}',\n 500: '{darkblue.500}',\n 600: '{darkblue.600}',\n 700: '{darkblue.700}',\n 800: '{darkblue.800}',\n 900: '{darkblue.900}',\n 950: '{darkblue.950}'\n },\n colorScheme: {\n light: {\n surface: {\n 0: '#ffffff',\n 50: '{gray.50}',\n 100: '{gray.100}',\n 200: '{gray.200}',\n 300: '{gray.300}',\n 400: '{gray.400}',\n 500: '{gray.500}',\n 600: '{gray.600}',\n 700: '{gray.700}',\n 800: '{gray.800}',\n 900: '{gray.900}',\n 950: '{gray.950}'\n }\n },\n dark: {\n surface: {\n 0: '#ffffff',\n 50: '{darkblue.50}',\n 100: '{darkblue.100}',\n 200: '{darkblue.200}',\n 300: '{darkblue.300}',\n 400: '{blue.400}',\n 500: '{blue.500}',\n 600: '{darkblue.600}',\n 700: '{darkblue.700}',\n 800: '{darkblue.800}',\n 900: '{darkblue.900}',\n 950: '{darkblue.950}'\n }\n }\n }\n },\n components: {\n accordion: {\n root: { transitionDuration: '{transition.duration}' },\n panel: { borderWidth: '0' },\n header: { background: 'transparent', padding: '0 0 0 0' },\n content: { background: 'transparent' }\n },\n button: {\n colorScheme: {\n light: {\n root: {\n primary: {\n background: '{primary.600}',\n borderColor: '{primary.600}'\n }\n }\n }\n }\n },\n datatable: {\n colorScheme: {\n light: {\n row: {\n hoverBackground: '{surface.100}',\n hoverColor: '{surface.950}'\n }\n },\n dark: {\n row: {\n hoverBackground: '{surface.900}',\n hoverColor: '{surface.0}'\n }\n }\n }\n },\n // Tab active/hover backgrounds are set in _tabs.scss via sidebar\n // `--d-menuitem-*` tokens (not expressible in the preset). Only structural\n // properties that _tabs.scss does NOT override belong here.\n tabs: {\n tablist: {\n background: 'transparent',\n borderWidth: '0 0 1px 0'\n },\n tab: {\n background: 'transparent',\n borderColor: 'transparent',\n activeBorderColor: 'transparent',\n borderWidth: '0',\n padding: '0.5rem 1rem',\n margin: '0 0 0.5rem 0'\n },\n tabpanel: {\n background: 'transparent',\n padding: '0'\n }\n },\n dataview: {\n header: {\n background: 'transparent',\n borderWidth: '0',\n padding: '0'\n },\n content: {\n background: 'transparent',\n padding: '0'\n }\n },\n paginator: {\n root: {\n background: 'transparent'\n }\n },\n fileupload: {\n root: {\n background: 'transparent'\n }\n },\n\n panel: {\n root: {\n background: 'transparent',\n borderColor: 'transparent',\n borderRadius: '0'\n },\n header: {\n background: 'transparent',\n padding: '0',\n borderWidth: '0'\n },\n toggleableHeader: {\n padding: '0'\n },\n title: {\n fontWeight: '700'\n },\n content: {\n padding: '0'\n }\n },\n\n card: {\n root: {\n shadow: 'none',\n borderRadius: '{border.radius.xl}'\n },\n body: {\n padding: '1.25rem',\n gap: '1rem'\n }\n },\n\n avatar: {\n root: {\n borderRadius: '9999px',\n fontSize: '0.875rem'\n }\n },\n\n drawer: {\n content: { padding: '1.25rem' }\n },\n inputtext: {\n root: {\n borderRadius: '{border.radius.xl}',\n paddingY: '0.5rem'\n }\n },\n divider: {\n horizontal: {\n margin: '0',\n padding: '0',\n content: { padding: '0 0.5rem' }\n },\n vertical: {\n margin: '0',\n padding: '0',\n content: { padding: '0.5rem 0' }\n }\n },\n\n tag: {\n root: {\n padding: '0.25rem 0.5rem',\n fontWeight: '500'\n },\n\n colorScheme: {\n light: {\n secondary: { color: '{surface.800}' },\n success: { color: '{green.800}' },\n info: { color: '{blue.800}' },\n warn: { color: '{orange.800}' },\n danger: { color: '{red.800}' }\n },\n dark: {\n secondary: { color: '{surface.100}' },\n success: { color: '{green.100}' },\n info: { color: '{blue.100}' },\n warn: { color: '{orange.100}' },\n danger: { color: '{red.100}' }\n }\n }\n },\n\n toolbar: {\n root: {\n background: 'transparent',\n borderColor: 'transparent',\n borderRadius: '0',\n padding: '0',\n gap: '0.5rem'\n }\n },\n\n progressbar: {\n root: {\n borderRadius: '{border.radius.lg}',\n height: '0.75rem'\n }\n },\n\n message: {\n root: {\n borderRadius: '{border.radius.lg}',\n borderWidth: '0 0 0 4px'\n },\n content: {\n padding: '0.75rem 1rem',\n gap: '0.5rem'\n },\n text: {\n fontSize: '0.875rem',\n fontWeight: '500'\n }\n }\n }\n};\n\nexport const BrandSoft = definePreset(SoftBase, brandOverrides);\nexport const BrandCrisp = definePreset(CrispBase, brandOverrides);\nexport const BrandContrast = definePreset(ContrastBase, brandOverrides);\n\nexport const brandPresets = {\n Soft: BrandSoft,\n Crisp: BrandCrisp,\n Contrast: BrandContrast\n} as const;\n","import { InjectionToken } from '@angular/core';\nimport type { IsActiveMatchOptions, QueryParamsHandling } from '@angular/router';\n\n/**\n * Sidebar / compact menu item shape (recursive). Matches Sakai-style menu model.\n */\nexport interface MenuItem {\n label?: string;\n icon?: string;\n routerLink?: string[];\n url?: string;\n target?: string;\n separator?: boolean;\n path?: string;\n visible?: boolean;\n disabled?: boolean;\n preventAutoActivate?: boolean;\n command?: (event?: { originalEvent?: Event; item?: MenuItem }) => void;\n items?: MenuItem[];\n class?: string;\n badgeClass?: string;\n fragment?: string;\n queryParamsHandling?: QueryParamsHandling;\n preserveFragment?: boolean;\n skipLocationChange?: boolean;\n replaceUrl?: boolean;\n state?: Record<string, unknown>;\n queryParams?: Record<string, unknown>;\n routerLinkActiveOptions?: IsActiveMatchOptions;\n}\n\nexport const MENU_MODEL = new InjectionToken<MenuItem[]>('UNOPS_UX_MENU_MODEL', {\n factory: () => {\n throw new Error(\n 'MENU_MODEL is not provided. Add { provide: MENU_MODEL, useFactory: ... } or useValue to app.config.ts providers.'\n );\n }\n});\n\nexport interface SidebarLogoConfig {\n expanded: string;\n compact: string;\n alt: string;\n}\n\nexport const SIDEBAR_LOGO = new InjectionToken<SidebarLogoConfig>('UNOPS_UX_SIDEBAR_LOGO', {\n factory: () => ({\n expanded: 'assets/opp/AppLogo/AppLogo-onDark_H.svg',\n compact: 'assets/opp/AppLogo/AppLogo-onDark_compact.svg',\n alt: 'UNOPS'\n })\n});\n\nexport interface TopbarMobileLogoConfig {\n dark: string;\n light: string;\n alt: string;\n}\n\nexport const TOPBAR_MOBILE_LOGO = new InjectionToken<TopbarMobileLogoConfig>('UNOPS_UX_TOPBAR_MOBILE_LOGO', {\n factory: () => ({\n dark: 'assets/opp/AppLogo/AppLogo-onDark_H.svg',\n light: 'assets/opp/AppLogo/AppLogo-onLight_H.svg',\n alt: 'UNOPS'\n })\n});\n","import { computed, effect, inject, Injectable, signal } from '@angular/core';\nimport { Router } from '@angular/router';\n\nexport interface LayoutConfig {\n preset: string;\n primary: string;\n surface: string | undefined | null;\n darkTheme: boolean;\n menuMode: string;\n menuTheme: string;\n cardStyle: string;\n}\n\ninterface LayoutState {\n staticMenuInactive: boolean;\n overlayMenuActive: boolean;\n rightMenuVisible: boolean;\n configSidebarVisible: boolean;\n mobileMenuActive: boolean;\n searchBarActive: boolean;\n sidebarExpanded: boolean;\n sidebarPinned: boolean;\n menuHoverActive: boolean;\n activePath: string | null;\n anchored: boolean;\n}\n\ninterface MenuChangeEvent {\n key: string;\n routeEvent?: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LayoutService {\n layoutConfig = signal<LayoutConfig>({\n preset: 'Soft',\n primary: 'blue',\n surface: null,\n darkTheme: true,\n menuMode: 'static',\n menuTheme: 'primary',\n cardStyle: 'transparent'\n });\n\n layoutState = signal<LayoutState>({\n staticMenuInactive: false,\n overlayMenuActive: false,\n rightMenuVisible: false,\n configSidebarVisible: false,\n mobileMenuActive: false,\n searchBarActive: false,\n sidebarExpanded: false,\n sidebarPinned: true,\n menuHoverActive: false,\n activePath: null,\n anchored: false\n });\n\n router = inject(Router);\n\n currentUrl = signal<string>('');\n\n isDarkTheme = computed(() => this.layoutConfig().darkTheme);\n\n isSlim = computed(() => this.layoutConfig().menuMode === 'slim');\n\n isHorizontal = computed(() => this.layoutConfig().menuMode === 'horizontal');\n\n isOverlay = computed(() => this.layoutConfig().menuMode === 'overlay');\n\n isCompact = computed(() => this.layoutConfig().menuMode === 'compact');\n\n isStatic = computed(() => this.layoutConfig().menuMode === 'static');\n\n isReveal = computed(() => this.layoutConfig().menuMode === 'reveal');\n\n isDrawer = computed(() => this.layoutConfig().menuMode === 'drawer');\n\n isSidebarPinned = computed(() => this.layoutState().sidebarPinned);\n\n isRail = computed(() => !this.layoutState().sidebarPinned && this.isStatic());\n\n hasOverlaySubmenu = computed(() => this.isSlim() || this.isCompact() || this.isHorizontal());\n\n hasOpenOverlay = computed(() => this.layoutState().overlayMenuActive || this.hasOpenOverlaySubmenu());\n\n hasOpenOverlaySubmenu = computed(() => {\n return this.hasOverlaySubmenu() && !!this.layoutState().activePath;\n });\n\n isSidebarStateChanged = computed(() => {\n const layoutConfig = this.layoutConfig();\n return layoutConfig.menuMode === 'horizontal' || layoutConfig.menuMode === 'slim' || layoutConfig.menuMode === 'slim-plus';\n });\n\n private initialized = false;\n\n private previousMenuMode: string | undefined = undefined;\n\n constructor() {\n effect(() => {\n const config = this.layoutConfig();\n\n if (!this.initialized || !config) {\n this.initialized = true;\n return;\n }\n\n this.handleDarkModeTransition(config);\n });\n\n effect(() => {\n this.updateMenuState();\n });\n }\n\n private updateMenuState() {\n const menuMode = this.layoutConfig().menuMode;\n if (this.previousMenuMode === undefined) {\n this.previousMenuMode = menuMode;\n return;\n }\n\n if (this.previousMenuMode === menuMode) {\n return;\n }\n\n this.previousMenuMode = menuMode;\n\n const isOverlaySubmenu = menuMode === 'slim' || menuMode === 'slim-plus' || menuMode === 'horizontal' || menuMode === 'compact';\n\n this.layoutState.update((prev) => ({\n ...prev,\n staticMenuInactive: false,\n overlayMenuActive: false,\n mobileMenuActive: false,\n sidebarExpanded: false,\n menuHoverActive: false,\n anchored: false,\n activePath: this.isDesktop() ? (isOverlaySubmenu ? null : this.router.url) : prev.activePath\n }));\n }\n\n private handleDarkModeTransition(config: LayoutConfig): void {\n const supportsViewTransition = 'startViewTransition' in document;\n\n if (supportsViewTransition) {\n this.startViewTransition(config);\n } else {\n this.toggleDarkMode(config);\n }\n }\n\n private startViewTransition(config: LayoutConfig): void {\n const transition = (document as any).startViewTransition(() => {\n this.toggleDarkMode(config);\n });\n }\n\n toggleDarkMode(config?: LayoutConfig): void {\n const _config = config || this.layoutConfig();\n if (_config.darkTheme) {\n document.documentElement.classList.add('app-dark');\n } else {\n document.documentElement.classList.remove('app-dark');\n }\n }\n\n toggleMenu() {\n if (this.isDesktop()) {\n this.toggleSidebarPin();\n } else {\n this.layoutState.update((prev) => ({ ...prev, mobileMenuActive: !prev.mobileMenuActive }));\n }\n }\n\n toggleSidebarPin() {\n this.layoutState.update((prev) => ({\n ...prev,\n sidebarPinned: !prev.sidebarPinned,\n sidebarExpanded: false\n }));\n }\n\n changeMenuMode(mode: string) {\n this.layoutConfig.update((prev) => ({ ...prev, menuMode: mode }));\n this.layoutState.update((prev) => ({ ...prev, staticMenuInactive: false, overlayMenuActive: false, mobileMenuActive: false, sidebarExpanded: false, sidebarPinned: true, menuHoverActive: false, anchored: false }));\n\n if (this.isDesktop()) {\n this.layoutState.update((prev) => ({ ...prev, activePath: this.hasOverlaySubmenu() ? null : this.router.url }));\n }\n }\n\n toggleRightMenu() {\n this.layoutState.update((prev) => ({\n ...prev,\n rightMenuVisible: !prev.rightMenuVisible\n }));\n }\n\n toggleConfigSidebar() {\n this.layoutState.update((prev) => ({\n ...prev,\n configSidebarVisible: !prev.configSidebarVisible\n }));\n }\n\n toggleSearchBar() {\n this.layoutState.update((prev) => ({\n ...prev,\n searchBarActive: !prev.searchBarActive\n }));\n }\n\n isDesktop() {\n return window.innerWidth > 991;\n }\n}\n","import { Injectable, signal, TemplateRef } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class FooterService {\n readonly content = signal<TemplateRef<unknown> | null>(null);\n}\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ActivatedRouteSnapshot, NavigationEnd, Router, RouterModule } from '@angular/router';\n\nimport { BehaviorSubject, filter } from 'rxjs';\n\ninterface Breadcrumb {\n label: string;\n url?: string;\n}\n\n@Component({\n selector: '[app-breadcrumb]',\n imports: [CommonModule, RouterModule],\n template: `<nav class=\"layout-breadcrumb\" aria-label=\"Breadcrumb\">\n <ol>\n @for (item of breadcrumbs$ | async; track item.url; let last = $last) {\n <li class=\"text-sm font-medium text-surface-700 dark:text-surface-100\">\n @if (!last && item.url) {\n <a [routerLink]=\"item.url\" class=\"text-surface-700 dark:text-surface-100 cursor-pointer\">{{ item.label }}</a>\n } @else {\n {{ item.label }}\n }\n </li>\n @if (!last) {\n <li class=\"text-sm font-medium text-surface-400 dark:text-surface-400\">/</li>\n }\n }\n </ol>\n </nav> `\n})\nexport class AppBreadcrumb {\n private readonly _breadcrumbs$ = new BehaviorSubject<Breadcrumb[]>([]);\n\n readonly breadcrumbs$ = this._breadcrumbs$.asObservable();\n\n constructor(private router: Router) {\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((event) => {\n const root = this.router.routerState.snapshot.root;\n const breadcrumbs: Breadcrumb[] = [];\n this.addBreadcrumb(root, [], breadcrumbs);\n\n this._breadcrumbs$.next(breadcrumbs);\n });\n }\n\n private addBreadcrumb(route: ActivatedRouteSnapshot, parentUrl: string[], breadcrumbs: Breadcrumb[]) {\n const routeUrl = parentUrl.concat(route.url.map((url) => url.path));\n const breadcrumb = route.data['breadcrumb'];\n const parentBreadcrumb = route.parent && route.parent.data ? route.parent.data['breadcrumb'] : null;\n\n if (breadcrumb && breadcrumb !== parentBreadcrumb) {\n breadcrumbs.push({\n label: route.data['breadcrumb'],\n url: '/' + routeUrl.join('/')\n });\n }\n\n if (route.firstChild) {\n this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs);\n }\n }\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, Component, computed, inject, Input, model, OnInit, PLATFORM_ID } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { $t, updatePreset, updateSurfacePalette } from '@primeuix/themes';\nimport { brandPrimitives, brandPresets as brandPresetMap } from '../../theme/brand-theme';\nimport { PrimeNG } from 'primeng/config';\nimport { DrawerModule } from 'primeng/drawer';\nimport { RadioButtonModule } from 'primeng/radiobutton';\nimport { SelectButtonModule } from 'primeng/selectbutton';\nimport { LayoutService } from '../layout.service';\n\ndeclare type KeyOfType<T> = keyof T extends infer U ? U : never;\n\ndeclare type SurfacesType = {\n name?: string;\n palette?: {\n 0?: string;\n 50?: string;\n 100?: string;\n 200?: string;\n 300?: string;\n 400?: string;\n 500?: string;\n 600?: string;\n 700?: string;\n 800?: string;\n 900?: string;\n 950?: string;\n };\n};\n\n@Component({\n selector: 'app-configurator',\n imports: [CommonModule, FormsModule, SelectButtonModule, DrawerModule, RadioButtonModule],\n template: `\n <p-drawer [(visible)]=\"configSidebarVisible\" position=\"right\" [transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\" styleClass=\"layout-config-sidebar w-80\" header=\"Settings\" appendTo=\"body\">\n <div class=\"flex flex-col gap-6\">\n <div>\n <span class=\"text-lg text-muted-color font-semibold\">Primary</span>\n <div class=\"pt-2 flex gap-2 flex-wrap\">\n @for (primaryColor of primaryColors(); track primaryColor.name) {\n <button\n type=\"button\"\n [title]=\"primaryColor.name\"\n (click)=\"updateColors($event, 'primary', primaryColor)\"\n class=\"w-6 h-6 cursor-pointer hover:shadow-lg rounded duration-150 flex items-center justify-center\"\n [style]=\"{\n 'background-color': primaryColor?.name === 'noir' ? 'var(--text-color)' : primaryColor?.palette?.['500']\n }\"\n >\n <i *ngIf=\"primaryColor.name === selectedPrimaryColor()\" class=\"pi pi-check text-white\"></i>\n </button>\n }\n </div>\n </div>\n\n <div>\n <span class=\"text-lg text-muted-color font-semibold\">Surface</span>\n <div class=\"pt-2 flex gap-2 flex-wrap\">\n @for (surface of surfaces; track surface.name) {\n <button\n type=\"button\"\n [title]=\"surface.name\"\n (click)=\"updateColors($event, 'surface', surface)\"\n class=\"w-6 h-6 cursor-pointer hover:shadow-lg rounded duration-150 flex items-center justify-center\"\n [style]=\"{\n 'background-color': surface?.palette?.['500']\n }\"\n >\n <i *ngIf=\"selectedSurfaceColor() ? selectedSurfaceColor() === surface.name : darkTheme() ? surface.name === 'darkblue' : surface.name === 'gray'\" class=\"pi pi-check text-white\"></i>\n </button>\n }\n </div>\n </div>\n <div>\n <div class=\"flex flex-col gap-2\">\n <span class=\"text-lg text-muted-color font-semibold\">Presets</span>\n <p-selectbutton [options]=\"presetKeys\" [ngModel]=\"selectedPreset()\" (ngModelChange)=\"onPresetChange($event)\" [allowEmpty]=\"false\"></p-selectbutton>\n </div>\n </div>\n <div>\n <div class=\"flex flex-col gap-2\">\n <span class=\"text-lg text-muted-color font-semibold\">Color Scheme</span>\n <p-selectbutton [ngModel]=\"darkTheme()\" (ngModelChange)=\"toggleDarkMode()\" [options]=\"themeOptions\" optionLabel=\"name\" optionValue=\"value\" [allowEmpty]=\"false\"></p-selectbutton>\n </div>\n </div>\n <div *ngIf=\"!simple && location === 'app'\" class=\"flex flex-col gap-2\">\n <span class=\"text-lg text-muted-color font-semibold\">Card Style</span>\n <p-selectbutton [ngModel]=\"cardStyle()\" (ngModelChange)=\"onCardStyleChange($event)\" [options]=\"cardStyleOptions\" optionLabel=\"name\" optionValue=\"value\" [allowEmpty]=\"false\" />\n </div>\n\n <div *ngIf=\"!simple && location === 'app'\" class=\"flex flex-col gap-2\">\n <span class=\"text-lg text-muted-color font-semibold\">Menu Theme</span>\n <p-selectbutton [ngModel]=\"menuTheme()\" (ngModelChange)=\"onMenuThemeChange($event)\" [options]=\"menuThemeOptions\" optionLabel=\"name\" optionValue=\"value\" [allowEmpty]=\"false\" />\n </div>\n\n <div *ngIf=\"!simple && location === 'app'\">\n <div class=\"flex flex-col gap-2\">\n <span class=\"text-lg text-muted-color font-semibold\">Menu Type</span>\n <div class=\"flex flex-wrap flex-col gap-3\">\n <div class=\"flex\">\n <div class=\"flex items-center gap-2 w-6/12\">\n <p-radiobutton name=\"menuMode\" value=\"static\" [ngModel]=\"menuMode()\" (ngModelChange)=\"setMenuMode('static')\" inputId=\"static\"></p-radiobutton>\n <label for=\"static\">Static</label>\n </div>\n <div class=\"flex items-center gap-2 w-6/12\">\n <p-radiobutton name=\"menuMode\" value=\"rail\" [ngModel]=\"menuMode()\" (ngModelChange)=\"setMenuMode('rail')\" inputId=\"rail\"></p-radiobutton>\n <label for=\"rail\">Rail</label>\n </div>\n </div>\n <div class=\"flex\">\n <div class=\"flex items-center gap-2 w-6/12\">\n <p-radiobutton name=\"menuMode\" value=\"slim\" [ngModel]=\"menuMode()\" (ngModelChange)=\"setMenuMode('slim')\" inputId=\"slim\"></p-radiobutton>\n <label for=\"slim\">Slim</label>\n </div>\n <div class=\"flex items-center gap-2 w-6/12\">\n <p-radiobutton name=\"menuMode\" value=\"compact\" [ngModel]=\"menuMode()\" (ngModelChange)=\"setMenuMode('compact')\" inputId=\"compact\"></p-radiobutton>\n <label for=\"compact\">Compact</label>\n </div>\n </div>\n <div class=\"flex\">\n <div class=\"flex items-center gap-2 w-6/12\">\n <p-radiobutton name=\"menuMode\" value=\"horizontal\" [ngModel]=\"menuMode()\" (ngModelChange)=\"setMenuMode('horizontal')\" inputId=\"horizontal\"></p-radiobutton>\n <label for=\"horizontal\">Horizontal</label>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </p-drawer>\n `\n})\nexport class AppConfigurator implements OnInit {\n @Input({ transform: booleanAttribute }) simple: boolean = false;\n\n @Input() location: string = 'app';\n\n config: PrimeNG = inject(PrimeNG);\n\n layoutService: LayoutService = inject(LayoutService);\n\n platformId = inject(PLATFORM_ID);\n\n presetKeys = Object.keys(brandPresetMap) as (keyof typeof brandPresetMap)[];\n\n themeOptions = [\n { name: 'Light', value: false },\n { name: 'Dark', value: true }\n ];\n\n menuThemeOptions: { name: string; value: string }[] = [];\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.onPresetChange(this.layoutService.layoutConfig().preset);\n }\n this.updateMenuThemeOptions();\n }\n\n updateMenuThemeOptions() {\n if (this.darkTheme()) {\n this.menuThemeOptions = [\n { name: 'Dark', value: 'dark' },\n { name: 'Primary', value: 'primary' }\n ];\n } else {\n this.menuThemeOptions = [\n { name: 'Light', value: 'light' },\n { name: 'Dark', value: 'dark' },\n { name: 'Primary', value: 'primary' }\n ];\n }\n }\n\n surfaces: SurfacesType[] = ['gray', 'darkblue'].map(name => ({\n name,\n palette: { 0: '#ffffff', ...brandPrimitives[name as keyof typeof brandPrimitives] }\n }));\n\n selectedPrimaryColor = computed(() => {\n return this.layoutService.layoutConfig().primary;\n });\n\n selectedSurfaceColor = computed(() => this.layoutService.layoutConfig().surface);\n\n selectedPreset = computed(() => this.layoutService.layoutConfig().preset);\n\n menuMode = computed(() => {\n const mode = this.layoutService.layoutConfig().menuMode;\n const pinned = this.layoutService.layoutState().sidebarPinned;\n return mode === 'static' && !pinned ? 'rail' : mode;\n });\n\n cardStyle = model(this.layoutService.layoutConfig().cardStyle);\n\n get configSidebarVisible(): boolean {\n return this.layoutService.layoutState().configSidebarVisible;\n }\n\n set configSidebarVisible(val: boolean) {\n this.layoutService.layoutState.update((prev) => ({ ...prev, configSidebarVisible: val }));\n }\n\n darkTheme = computed(() => this.layoutService.layoutConfig().darkTheme);\n\n selectedSurface = computed(() => this.layoutService.layoutConfig().surface);\n\n cardStyleOptions = [\n { name: 'Transparent', value: 'transparent' },\n { name: 'Filled', value: 'filled' }\n ];\n\n primaryColors = computed<SurfacesType[]>(() => {\n const presetPalette = brandPresetMap[this.layoutService.layoutConfig().preset as KeyOfType<typeof brandPresetMap>].primitive;\n const colors = ['red', 'orange', 'yellow', 'lemon', 'lime', 'babygreen', 'green', 'olive', 'teal', 'ocean', 'blue', 'darkblue', 'midnight', 'cherry'];\n const palettes: SurfacesType[] = [{ name: 'noir', palette: {} }];\n\n colors.forEach((color) => {\n palettes.push({\n name: color,\n palette: presetPalette?.[color as KeyOfType<typeof presetPalette>] as SurfacesType['palette']\n });\n });\n\n return palettes;\n });\n\n menuTheme = computed(() => this.layoutService.layoutConfig().menuTheme);\n\n getPresetExt() {\n const color: SurfacesType = this.primaryColors().find((c) => c.name === this.selectedPrimaryColor()) || {};\n\n if (color.name === 'noir') {\n return {\n semantic: {\n primary: {\n 50: '{surface.50}',\n 100: '{surface.100}',\n 200: '{surface.200}',\n 300: '{surface.300}',\n 400: '{surface.400}',\n 500: '{surface.500}',\n 600: '{surface.600}',\n 700: '{surface.700}',\n 800: '{surface.800}',\n 900: '{surface.900}',\n 950: '{surface.950}'\n },\n colorScheme: {\n light: {\n primary: {\n color: '{primary.950}',\n contrastColor: '#ffffff',\n hoverColor: '{primary.800}',\n activeColor: '{primary.700}'\n },\n highlight: {\n background: '{primary.950}',\n focusBackground: '{primary.700}',\n color: '#ffffff',\n focusColor: '#ffffff'\n }\n },\n dark: {\n primary: {\n color: '{primary.50}',\n contrastColor: '{primary.950}',\n hoverColor: '{primary.200}',\n activeColor: '{primary.300}'\n },\n highlight: {\n background: '{primary.50}',\n focusBackground: '{primary.300}',\n color: '{primary.950}',\n focusColor: '{primary.950}'\n }\n }\n }\n }\n };\n } else {\n return {\n semantic: {\n primary: color.palette,\n colorScheme: {\n light: {\n primary: {\n color: '{primary.500}',\n contrastColor: '#ffffff',\n hoverColor: '{primary.600}',\n activeColor: '{primary.700}'\n },\n highlight: {\n background: '{primary.50}',\n focusBackground: '{primary.100}',\n color: '{primary.700}',\n focusColor: '{primary.800}'\n }\n },\n dark: {\n primary: {\n color: '{primary.400}',\n contrastColor: '{surface.900}',\n hoverColor: '{primary.300}',\n activeColor: '{primary.200}'\n },\n highlight: {\n background: 'color-mix(in srgb, {primary.400}, transparent 84%)',\n focusBackground: 'color-mix(in srgb, {primary.400}, transparent 76%)',\n color: 'rgba(255,255,255,.87)',\n focusColor: 'rgba(255,255,255,.87)'\n }\n }\n }\n }\n };\n }\n }\n\n updateColors(event: any, type: string, color: any) {\n if (type === 'primary') {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n primary: color.name\n }));\n } else if (type === 'surface') {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n surface: color.name\n }));\n }\n this.applyTheme(type, color);\n\n event.stopPropagation();\n }\n\n applyTheme(type: string, color: any) {\n if (type === 'primary') {\n updatePreset(this.getPresetExt());\n } else if (type === 'surface') {\n updateSurfacePalette(color.palette);\n }\n }\n\n onPresetChange(event: any) {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n preset: event\n }));\n const preset = brandPresetMap[event as KeyOfType<typeof brandPresetMap>];\n const surfacePalette = this.surfaces.find((s) => s.name === this.selectedSurfaceColor())?.palette;\n $t().preset(preset).preset(this.getPresetExt()).surfacePalette(surfacePalette).use({ useDefaultOptions: true });\n }\n\n onCardStyleChange(value: string) {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n cardStyle: value\n }));\n }\n\n onMenuThemeChange(value: string) {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n menuTheme: value\n }));\n }\n\n setMenuMode(mode: string) {\n const isRail = mode === 'rail';\n const actualMode = isRail ? 'static' : mode;\n\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n menuMode: actualMode\n }));\n\n this.layoutService.layoutState.update((state) => ({\n ...state,\n staticMenuInactive: false,\n overlayMenuActive: false,\n mobileMenuActive: false,\n sidebarExpanded: false,\n sidebarPinned: !isRail,\n menuHoverActive: false,\n anchored: false\n }));\n }\n\n toggleDarkMode() {\n this.executeDarkModeToggle();\n }\n\n executeDarkModeToggle() {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n darkTheme: !state.darkTheme\n }));\n if (this.darkTheme()) {\n this.setMenuTheme('dark');\n }\n this.updateMenuThemeOptions();\n }\n\n toggleConfigSidebar() {\n this.layoutService.layoutState.update((val) => ({ ...val, configSidebarVisible: !val.configSidebarVisible }));\n }\n\n setMenuTheme(theme: string) {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n menuTheme: theme\n }));\n }\n}\n","import { LayoutService } from '../layout.service';\nimport { Component, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { DividerModule } from 'primeng/divider';\nimport { DrawerModule } from 'primeng/drawer';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { SelectModule } from 'primeng/select';\n\n@Component({\n selector: '[app-rightmenu]',\n imports: [DrawerModule, DividerModule, SelectModule, InputTextModule, FormsModule, ButtonModule],\n template: ` <p-drawer header=\"Menu\" [(visible)]=\"rightMenuVisible\" position=\"right\" styleClass=\"layout-rightmenu w-full! sm:w-xl!\">\n <div>\n <h2 class=\"title-h7 text-left\">Activity</h2>\n <div class=\"flex flex-col mt-7\">\n <div class=\"flex gap-6\">\n <div class=\"flex flex-col items-center\">\n <span class=\"w-14 h-14 flex items-center justify-center border border-surface rounded-xl shadow-subtle\">\n <i class=\"pi pi-dollar text-blue-600 text-2xl!\"></i>\n </span>\n <span class=\"min-h-14 w-px bg-(--surface-border)\"></span>\n </div>\n <div class=\"mt-2\">\n <h5 class=\"label-large\">New Sale</h5>\n <p class=\"md:label-small mt-1\">Richard Jones has purchased a blue t-shirt for <b class=\"body-small text-surface-950 dark:text-surface-0\">$79</b></p>\n </div>\n </div>\n <div class=\"flex gap-6\">\n <div class=\"flex flex-col items-center\">\n <span class=\"w-14 h-14 flex items-center justify-center border border-surface rounded-xl shadow-subtle\">\n <i class=\"pi pi-download text-orange-600 text-2xl!\"></i>\n </span>\n <span class=\"min-h-14 w-px bg-(--surface-border)\"></span>\n </div>\n <div class=\"mt-2\">\n <h5 class=\"label-large\">Withdrawal Initiated</h5>\n <p class=\"md:label-small mt-1\">Your request for withdrawal of <b class=\"body-small text-surface-950 dark:text-surface-0\">$2500</b> has been initiated.</p>\n </div>\n </div>\n <div class=\"flex gap-6\">\n <div class=\"flex flex-col items-center\">\n <span class=\"w-14 h-14 flex items-center justify-center border border-surface rounded-xl shadow-subtle\">\n <i class=\"pi pi-question-circle text-violet-600 text-2xl!\"></i>\n </span>\n <span class=\"min-h-14 w-px bg-(--surface-border)\"></span>\n </div>\n <div class=\"mt-2\">\n <h5 class=\"label-large\">Question Received</h5>\n <p class=\"md:label-small mt-1\">Jane Davis has posted a <b class=\"body-small text-surface-950 dark:text-surface-0\">new question</b> about your product.</p>\n </div>\n </div>\n <div class=\"flex gap-6\">\n <div class=\"flex flex-col items-center\">\n <span class=\"w-14 h-14 flex items-center justify-center border border-surface rounded-xl shadow-subtle\">\n <i class=\"pi pi-comment text-blue-600 text-2xl!\"></i>\n </span>\n </div>\n <div class=\"mt-2\">\n <h5 class=\"label-large\">Comment Received</h5>\n <p class=\"md:label-small mt-1\">Claire Smith has upvoted your store along with a <b class=\"body-small text-surface-950 dark:text-surface-0\">comment.</b></p>\n </div>\n </div>\n </div>\n </div>\n <p-divider class=\"my-10!\" />\n <div>\n <h2 class=\"title-h7 text-left\">Quick Withdraw</h2>\n <div class=\"flex flex-col gap-3.5 mt-7 mb-6\">\n <input pInputText type=\"text\" [(ngModel)]=\"amountValue\" placeholder=\"Amount\" />\n <p-select [(ngModel)]=\"selectedCard\" [options]=\"cards\" optionLabel=\"label\" placeholder=\"Select a Card\" class=\"w-full\" />\n </div>\n <button pButton label=\"Confirm\" severity=\"success\" class=\"w-full!\"></button>\n </div>\n <p-divider class=\"my-10!\" />\n <div>\n <h2 class=\"title-h7 text-left\">Shipment Tracking</h2>\n <p class=\"body-small mt-1 text-left\">Track your ongoing shipments to customers.</p>\n <img class=\"w-full h-full max-h-60 object-cover border border-surface rounded-2xl mt-4\" src=\"layout/images/sidebar-right/staticmap.png\" alt=\"unops-ng_ux\" />\n </div>\n </p-drawer>`\n})\nexport class AppRightMenu {\n layoutService: LayoutService = inject(LayoutService);\n\n cards = [\n { label: '*****24', value: { id: 1, name: '*****24', code: 'A1' } },\n { label: '*****75', value: { id: 2, name: '*****75', code: 'A2' } }\n ];\n\n selectedCard: any;\n amountValue: string = '';\n\n get rightMenuVisible(): boolean {\n return this.layoutService.layoutState().rightMenuVisible;\n }\n\n set rightMenuVisible(_val: boolean) {\n this.layoutService.layoutState.update((prev) => ({ ...prev, rightMenuVisible: _val }));\n }\n}\n","import { LayoutService } from '../layout.service';\nimport { Component, inject } from '@angular/core';\nimport { AutoFocusModule } from 'primeng/autofocus';\nimport { DialogModule } from 'primeng/dialog';\nimport { InputTextModule } from 'primeng/inputtext';\n\n@Component({\n selector: '[app-search]',\n imports: [DialogModule, InputTextModule, AutoFocusModule],\n template: ` <p-dialog [(visible)]=\"searchBarActive\" [breakpoints]=\"{ '1024px': '75vw', '780px': '90vw' }\" modal dismissableMask styleClass=\"w-1/2 search-container\">\n <ng-template #headless>\n <div class=\"w-full\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" [pAutoFocus]=\"true\" class=\"p-inputtext search-input\" placeholder=\"Search\" (keydown.enter)=\"toggleSearchBar()\" />\n </div>\n </ng-template>\n </p-dialog>`\n})\nexport class AppSearch {\n layoutService = inject(LayoutService);\n\n toggleSearchBar() {\n this.layoutService.layoutState.update((value) => ({ ...value, searchBarActive: !value.searchBarActive }));\n }\n\n get searchBarActive(): boolean {\n return this.layoutService.layoutState().searchBarActive;\n }\n\n set searchBarActive(_val: boolean) {\n this.layoutService.layoutState.update((prev) => ({ ...prev, searchBarActive: _val }));\n }\n}\n","import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FooterService } from '../../layout/footer.service';\n\n@Component({\n selector: 'ux-footer-main',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n host: { class: 'ux-footer-main' },\n styles: `\n :host {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n height: 3rem;\n background: var(--p-primary-50);\n font-size: var(--font-size-xs, 0.75rem);\n line-height: 1.2;\n color: var(--p-text-color);\n }\n\n :host-context(:root[class*='app-dark']) {\n background: var(--p-primary-950);\n color: var(--p-surface-100);\n }\n\n :host(.footer-sticky) {\n position: sticky;\n bottom: 0;\n z-index: 10;\n }\n\n .footer-inner {\n width: 100%;\n max-width: 1540px;\n margin-inline: auto;\n padding: 1rem;\n }\n\n @media screen and (min-width: 780px) {\n .footer-inner {\n padding: 1rem 3rem;\n }\n }\n `,\n template: `\n <div class=\"footer-inner\">\n @if (copyrightOnly()) {\n <span>&#169; UNOPS {{ copyrightYear }}</span>\n } @else if (footerService.content(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n }\n </div>\n `\n})\nexport class FooterMainComponent {\n /** When true, always shows the default copyright — ignores FooterService content. */\n copyrightOnly = input(false);\n\n protected readonly footerService = inject(FooterService);\n protected readonly copyrightYear = new Date().getFullYear();\n}\n","import { CommonModule } from '@angular/common';\nimport { AfterViewInit, Component, computed, effect, inject, input, OnDestroy, signal } from '@angular/core';\nimport { Router, RouterModule } from '@angular/router';\nimport { RippleModule } from 'primeng/ripple';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { LayoutService } from '../layout.service';\nimport type { MenuItem } from '../tokens';\n\n@Component({\n selector: '[app-menuitem]',\n imports: [CommonModule, RouterModule, TooltipModule, RippleModule],\n template: `\n @if (root() && isVisible() && hasChildren()) {\n <div class=\"layout-menuitem-root-text\">{{ item()?.label }}</div>\n }\n @if ((!hasRouterLink() || hasChildren()) && isVisible()) {\n <a\n [attr.href]=\"item()?.url\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n [ngClass]=\"item()?.class\"\n [attr.target]=\"item()?.target\"\n tabindex=\"0\"\n pRipple\n [pTooltip]=\"item()?.label\"\n [tooltipDisabled]=\"!((isCompact() || isRailCollapsed()) && !isActive() && root())\"\n >\n <i [ngClass]=\"item()?.icon\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text label-small text-inherit\">{{ item()?.label }}</span>\n @if (hasChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n </a>\n }\n @if (hasRouterLink() && !hasChildren() && isVisible()) {\n <a\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n [ngClass]=\"item()?.class\"\n [routerLink]=\"item()?.routerLink\"\n routerLinkActive=\"active-route\"\n [routerLinkActiveOptions]=\"item()?.routerLinkActiveOptions || { paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored' }\"\n [fragment]=\"item()?.fragment\"\n [queryParamsHandling]=\"item()?.queryParamsHandling\"\n [preserveFragment]=\"item()?.preserveFragment\"\n [skipLocationChange]=\"item()?.skipLocationChange\"\n [replaceUrl]=\"item()?.replaceUrl\"\n [state]=\"item()?.state\"\n [queryParams]=\"item()?.queryParams\"\n [attr.target]=\"item()?.target\"\n tabindex=\"0\"\n [pTooltip]=\"item()?.label\"\n [tooltipDisabled]=\"!((isCompact() || isRailCollapsed()) && !isActive() && root())\"\n >\n <i [ngClass]=\"item()?.icon\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text label-small text-inherit\">{{ item()?.label }}</span>\n @if (hasChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n </a>\n }\n @if (hasChildren() && isVisible()) {\n <ul [animate.enter]=\"initialized() ? 'p-submenu-enter' : null\" [animate.leave]=\"'p-submenu-leave'\" [class.layout-root-submenulist]=\"root()\">\n @for (child of item()?.items; track child?.label) {\n <li app-menuitem [item]=\"child\" [root]=\"false\" [parentPath]=\"fullPath()\" [preventAutoActivate]=\"preventAutoActivate() || !!item()?.preventAutoActivate\" [class]=\"child?.['badgeClass']\"></li>\n }\n </ul>\n }\n `,\n host: {\n '[class.active-menuitem]': 'isActive()',\n '[class.layout-root-menuitem]': 'root()',\n '[class.route-active-within]': 'isRouteWithin()'\n },\n styles: [\n `\n .p-submenu-enter {\n animation: p-animate-submenu-expand 0.15s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n overflow: hidden;\n }\n\n .p-submenu-leave {\n animation: p-animate-submenu-collapse 0.15s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n overflow: hidden;\n }\n\n @keyframes p-animate-submenu-expand {\n from {\n max-height: 0;\n }\n to {\n max-height: 1000px;\n }\n }\n\n @keyframes p-animate-submenu-collapse {\n from {\n max-height: 1000px;\n }\n to {\n max-height: 0;\n }\n }\n `\n ]\n})\nexport class AppMenuitem implements AfterViewInit, OnDestroy {\n layoutService = inject(LayoutService);\n\n router = inject(Router);\n\n private hoverExpandTimer: ReturnType<typeof setTimeout> | null = null;\n\n item = input<MenuItem | null>(null);\n\n root = input<boolean>(true);\n\n parentPath = input<string | null>(null);\n\n preventAutoActivate = input<boolean>(false);\n\n isDisabled = computed(() => this.item()?.disabled ?? false);\n\n isSlim = computed(() => this.layoutService.layoutConfig().menuMode === 'slim');\n\n isHorizontal = computed(() => this.layoutService.layoutConfig().menuMode === 'horizontal');\n\n isCompact = computed(() => this.layoutService.layoutConfig().menuMode === 'compact');\n\n isRailCollapsed = computed(() => this.layoutService.isRail() && !this.layoutService.layoutState().sidebarExpanded);\n\n isVisible = computed(() => this.item()?.visible !== false);\n\n hasChildren = computed(() => !!this.item()?.items && (this.item()?.items?.length ?? 0) > 0);\n\n hasCommand = computed(() => typeof this.item()?.command === 'function');\n\n hasRouterLink = computed(() => !!this.item()?.routerLink);\n\n fullPath = computed(() => {\n const itemPath = this.item()?.path;\n if (!itemPath) return this.parentPath();\n const parent = this.parentPath();\n if (parent && !itemPath.startsWith(parent)) {\n return parent + itemPath;\n }\n return itemPath;\n });\n\n menuHoverActive = computed(() => this.layoutService.layoutState().menuHoverActive);\n\n isActive = computed(() => {\n const activePath = this.layoutService.layoutState().activePath;\n if (this.item()?.path) {\n return activePath?.startsWith(this.fullPath() ?? '') ?? false;\n }\n return false;\n });\n\n isRouteWithin = computed(() => {\n this.layoutService.currentUrl();\n if (!this.root() || !this.hasChildren()) return false;\n return this.hasMatchingChildRoute(this.item());\n });\n\n initialized = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n this.updateActivePath();\n });\n }\n\n private readonly defaultMatchOptions: import('@angular/router').IsActiveMatchOptions = {\n paths: 'exact',\n queryParams: 'ignored',\n matrixParams: 'ignored',\n fragment: 'ignored'\n };\n\n private itemMatchOptions(item: MenuItem | null | undefined): import('@angular/router').IsActiveMatchOptions {\n return item?.routerLinkActiveOptions ?? this.defaultMatchOptions;\n }\n\n updateActivePath() {\n if (this.layoutService.hasOverlaySubmenu() && this.layoutService.isDesktop()) {\n return;\n }\n\n if (this.preventAutoActivate()) {\n return;\n }\n\n const item = this.item();\n const parentPath = this.parentPath();\n\n if (item?.routerLink && !item?.items) {\n const isRouteActive = this.router.isActive(item.routerLink[0], this.itemMatchOptions(item));\n\n if (isRouteActive && parentPath) {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: parentPath\n }));\n }\n }\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.initialized.set(true);\n });\n }\n\n itemClick(event: Event) {\n if (this.isDisabled()) {\n event.preventDefault();\n return;\n }\n\n if (this.hasCommand()) {\n this.item()?.command?.({ originalEvent: event, item: this.item() ?? undefined });\n }\n\n if (this.hasChildren()) {\n if (this.isActive()) {\n const deactivateHover = this.root() && this.layoutService.hasOverlaySubmenu() && this.layoutService.isDesktop();\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: this.parentPath(),\n menuHoverActive: deactivateHover ? false : val.menuHoverActive\n }));\n } else {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: this.fullPath(),\n menuHoverActive: true\n }));\n }\n } else {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n overlayMenuActive: false,\n mobileMenuActive: false,\n menuHoverActive: false\n }));\n\n if (this.layoutService.hasOverlaySubmenu() && this.layoutService.isDesktop()) {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: null\n }));\n }\n }\n\n if (this.layoutService.isDesktop() && this.layoutService.isRail() && !this.layoutService.layoutState().sidebarExpanded) {\n this.layoutService.toggleSidebarPin();\n }\n }\n\n onMouseEnter() {\n if (this.layoutService.isDesktop() && this.root() && this.hasChildren() && this.menuHoverActive() && !this.isActive()) {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: this.fullPath(),\n menuHoverActive: true\n }));\n }\n }\n\n onMouseLeave() {}\n\n ngOnDestroy() {\n this.clearHoverTimer();\n }\n\n private scheduleRailExpand() {\n this.clearHoverTimer();\n this.hoverExpandTimer = setTimeout(() => {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n sidebarExpanded: true\n }));\n }, 500);\n }\n\n private clearHoverTimer() {\n if (this.hoverExpandTimer !== null) {\n clearTimeout(this.hoverExpandTimer);\n this.hoverExpandTimer = null;\n }\n }\n\n private hasMatchingChildRoute(item: MenuItem | null | undefined): boolean {\n if (!item) return false;\n if (item.routerLink) {\n return this.router.isActive(item.routerLink[0], this.itemMatchOptions(item));\n }\n return item.items?.some((child) => this.hasMatchingChildRoute(child)) ?? false;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { MENU_MODEL } from '../tokens';\nimport { AppMenuitem } from './app.menuitem';\n\n@Component({\n selector: '[app-menu]',\n imports: [CommonModule, AppMenuitem, RouterModule],\n template: `<ul class=\"layout-menu\">\n @for (item of menuItems; track $index) {\n @if (!item.separator) {\n <li app-menuitem [item]=\"item\" [root]=\"true\"></li>\n } @else {\n <li class=\"menu-separator\"></li>\n }\n }\n </ul> `\n})\nexport class AppMenu {\n /** Injected menu tree from the host application. */\n menuItems = inject(MENU_MODEL);\n}\n","import { LayoutService } from '../layout.service';\nimport { TOPBAR_MOBILE_LOGO } from '../tokens';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, ElementRef, HostListener, inject, model, signal, ViewChild, ChangeDetectionStrategy, AfterViewChecked } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AvatarModule } from 'primeng/avatar';\nimport { BadgeModule } from 'primeng/badge';\nimport { ButtonModule } from 'primeng/button';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { OverlayBadgeModule } from 'primeng/overlaybadge';\nimport { RippleModule } from 'primeng/ripple';\nimport { AppBreadcrumb } from './app.breadcrumb';\n\ntype DropdownId = 'notifications' | 'language' | 'profile' | null;\n\ninterface NotificationsBars {\n id: string;\n label: string;\n badge?: string | any;\n}\n\n@Component({\n selector: '[app-topbar]',\n imports: [RouterModule, CommonModule, AppBreadcrumb, InputTextModule, ButtonModule, IconFieldModule, InputIconModule, RippleModule, BadgeModule, OverlayBadgeModule, AvatarModule],\n template: `<div class=\"layout-topbar\">\n <button type=\"button\" class=\"mobile-menu-button\" aria-label=\"Toggle navigation menu\" (click)=\"onMenuButtonClick()\">\n <i class=\"pi pi-bars\"></i>\n </button>\n <div class=\"topbar-left\">\n <div class=\"topbar-sidebar-section\">\n <button\n type=\"button\"\n class=\"topbar-menu-toggle\"\n [class.active]=\"isSidebarPinned()\"\n [attr.aria-label]=\"isSidebarPinned() ? 'Collapse sidebar' : 'Expand sidebar'\"\n (click)=\"toggleSidebarPin()\"\n >\n <i class=\"pi pi-bars\"></i>\n </button>\n <a class=\"topbar-logo\" [routerLink]=\"['/']\">\n <img [src]=\"desktopLogo()\" [attr.alt]=\"mobileLogoConfig.alt\" />\n </a>\n <span class=\"topbar-logo-separator\"></span>\n </div>\n </div>\n\n <div class=\"topbar-main\">\n <div app-breadcrumb></div>\n @if (searchActive()) {\n <div class=\"flex items-center gap-2 ml-auto\">\n <p-iconfield class=\"w-48 sm:w-80\">\n <p-inputicon styleClass=\"pi pi-search\" />\n <input #searchInput type=\"text\" pInputText placeholder=\"Search...\" aria-label=\"Search\" class=\"w-full !py-2 !text-sm\" (keydown.escape)=\"closeSearch()\" />\n </p-iconfield>\n <button type=\"button\" class=\"flex items-center justify-center w-8 h-8 rounded-md cursor-pointer hover:bg-emphasis transition-colors\" aria-label=\"Close search\" (click)=\"closeSearch()\">\n <i class=\"pi pi-times text-sm\"></i>\n </button>\n </div>\n }\n <div class=\"topbar-right\">\n <ul class=\"topbar-menu\">\n <li class=\"right-sidebar-item\" [class.hidden]=\"searchActive()\">\n <a class=\"right-sidebar-button\" aria-label=\"Open search\" (click)=\"openSearch()\">\n <i class=\"pi pi-search\"></i>\n </a>\n </li>\n <li class=\"right-sidebar-item\" [class.hidden]=\"searchActive()\">\n <a\n class=\"right-sidebar-button\"\n [attr.aria-label]=\"isDarkTheme() ? 'Switch to light mode' : 'Switch to dark mode'\"\n (click)=\"toggleDarkMode()\"\n >\n <i [class]=\"isDarkTheme() ? 'pi pi-sun' : 'pi pi-moon'\"></i>\n </a>\n </li>\n <li class=\"right-sidebar-item static sm:relative z-50\" #notificationsItem>\n <a class=\"right-sidebar-button\" aria-label=\"Notifications\" (click)=\"toggleDropdown('notifications', $event)\">\n <span class=\"w-2 h-2 rounded-full bg-red-500 absolute top-2 right-2.5\"></span>\n <i class=\"pi pi-bell\"></i>\n </a>\n @if (activeDropdown() === 'notifications') {\n <div\n class=\"list-none m-0 rounded-2xl border border-surface fixed sm:absolute bg-surface-0 dark:bg-surface-900 overflow-hidden origin-top w-[calc(100vw-2rem)] sm:w-88 mt-2 z-50 top-auto left-4 sm:left-auto sm:right-0 shadow-flyout animate-scalein\"\n >\n <div class=\"p-4 flex items-center justify-between border-b border-surface\">\n <span class=\"label-small text-surface-950 dark:text-surface-0\">Notifications</span>\n <button pRipple class=\"py-1 px-2 text-surface-950 dark:text-surface-0 label-x-small hover:bg-emphasis border border-surface rounded-lg shadow-subtle transition-all\">Mark all as read</button>\n </div>\n <div class=\"flex items-center border-b border-surface\">\n @for (item of notificationsBars(); track item.id; let i = $index) {\n <button\n [ngClass]=\"{ 'border-surface-950 dark:border-surface-0': selectedNotificationBar() === item.id, 'border-transparent': selectedNotificationBar() !== item.id }\"\n class=\"px-3.5 py-2 inline-flex items-center border-b gap-2\"\n (click)=\"selectedNotificationBar.set(item.id)\"\n >\n <span [ngClass]=\"{ 'text-surface-950 dark:text-surface-0': selectedNotificationBar() === item.id }\" class=\"label-small\">{{ item.label }}</span>\n <p-badge *ngIf=\"item?.badge\" [value]=\"item.badge\" severity=\"success\" size=\"small\" class=\"rounded-md!\" />\n </button>\n }\n </div>\n <ul class=\"flex flex-col divide-y divide-(--surface-border) max-h-80 overflow-auto\">\n @for (item of selectedNotificationsBarData(); track item.name; let i = $index) {\n <li>\n <div class=\"flex items-center gap-3 px-4 sm:px-6 py-3.5 cursor-pointer hover:bg-emphasis transition-all\">\n <p-overlay-badge value=\"\" severity=\"danger\" class=\"inline-flex\">\n <p-avatar [label]=\"item.initials\" size=\"large\" styleClass=\"rounded-lg\" />\n </p-overlay-badge>\n <div class=\"flex items-center gap-3\">\n <div class=\"flex flex-col\">\n <span class=\"label-small text-left text-surface-950 dark:text-surface-0\">{{ item.name }}</span>\n <span class=\"label-xsmall text-left line-clamp-1\">{{ item.description }}</span>\n <span class=\"label-xsmall text-left\">{{ item.time }}</span>\n </div>\n <p-badge *ngIf=\"item.new\" value=\"\" severity=\"success\" />\n </div>\n </div>\n <span *ngIf=\"i !== notifications().length - 1\"></span>\n </li>\n }\n </ul>\n </div>\n }\n </li>\n <li class=\"right-sidebar-item static sm:relative\" #languageItem>\n <a class=\"right-sidebar-button relative z-50\" aria-label=\"Change language\" (click)=\"toggleDropdown('language', $event)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"m5 8 6 6\"/>\n <path d=\"m4 14 6-6 2-3\"/>\n <path d=\"M2 5h12\"/>\n <path d=\"M7 2h1\"/>\n <path d=\"m22 22-5-10-5 10\"/>\n <path d=\"M14 18h6\"/>\n </svg>\n </a>\n @if (activeDropdown() === 'language') {\n <div\n class=\"list-none p-2 m-0 rounded-2xl border border-surface overflow-hidden fixed sm:absolute bg-surface-0 dark:bg-surface-900 origin-top w-44 mt-2 right-4 sm:right-0 z-999 top-auto shadow-flyout animate-scalein\"\n >\n <ul class=\"flex flex-col gap-1\">\n @for (lang of languages(); track lang.code) {\n <li>\n <a\n class=\"label-small dark:text-surface-400 flex gap-2.5 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer\"\n [class.text-surface-950]=\"selectedLanguage() === lang.code\"\n [class.dark:text-surface-0]=\"selectedLanguage() === lang.code\"\n [class.font-semibold]=\"selectedLanguage() === lang.code\"\n (click)=\"selectLanguage(lang.code)\"\n >\n <span class=\"text-lg\">{{ lang.flag }}</span>\n <span>{{ lang.label }}</span>\n </a>\n </li>\n }\n </ul>\n </div>\n }\n </li>\n <li class=\"profile-item static sm:relative\" #profileItem>\n <a class=\"right-sidebar-button relative z-50\" aria-label=\"User profile menu\" (click)=\"toggleDropdown('profile', $event)\">\n <p-avatar icon=\"pi pi-user\" styleClass=\"w-10! h-10!\" />\n </a>\n @if (activeDropdown() === 'profile') {\n <div\n #profilePanel\n class=\"list-none p-2 m-0 rounded-2xl border border-surface overflow-hidden fixed sm:absolute bg-surface-0 dark:bg-surface-900 origin-top w-52 mt-2 right-4 sm:right-0 z-999 top-auto shadow-flyout animate-scalein\"\n >\n <ul class=\"flex flex-col gap-1\">\n <div class=\"mobile-profile-actions\">\n <li>\n <a class=\"label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer\" (click)=\"closeDropdown(); openSearch()\">\n <i class=\"pi pi-search\"></i>\n <span>Search</span>\n </a>\n </li>\n <li>\n <a class=\"label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer\" (click)=\"closeDropdown(); toggleDarkMode()\">\n <i [class]=\"isDarkTheme() ? 'pi pi-sun' : 'pi pi-moon'\"></i>\n <span>{{ isDarkTheme() ? 'Light Mode' : 'Dark Mode' }}</span>\n </a>\n </li>\n <li>\n <a class=\"label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer relative\" (click)=\"closeDropdown()\">\n <i class=\"pi pi-bell\"></i>\n <span>Notifications</span>\n <span class=\"w-2 h-2 rounded-full bg-red-500 ml-auto\"></span>\n </a>\n </li>\n <li class=\"border-b border-surface pb-1 mb-1\">\n <span class=\"label-xsmall px-2.5 py-1 text-surface-400\">Language</span>\n @for (lang of languages(); track lang.code) {\n <a\n class=\"label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer\"\n [class.text-surface-950]=\"selectedLanguage() === lang.code\"\n [class.dark:text-surface-0]=\"selectedLanguage() === lang.code\"\n [class.font-semibold]=\"selectedLanguage() === lang.code\"\n (click)=\"closeDropdown(); selectLanguage(lang.code)\"\n >\n <span class=\"text-lg\">{{ lang.flag }}</span>\n <span>{{ lang.label }}</span>\n @if (selectedLanguage() === lang.code) {\n <i class=\"pi pi-check ml-auto text-xs\"></i>\n }\n </a>\n }\n </li>\n </div>\n <li>\n <a class=\"label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer\" (click)=\"closeDropdown()\">\n <i class=\"pi pi-user\"></i>\n <span>Profile</span>\n </a>\n </li>\n <li>\n <a class=\"label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer\" (click)=\"closeDropdown(); onConfigButtonClick()\">\n <i class=\"pi pi-cog\"></i>\n <span>Settings</span>\n </a>\n </li>\n <li>\n <a class=\"label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer\" (click)=\"closeDropdown()\">\n <i class=\"pi pi-calendar\"></i>\n <span>Calendar</span>\n </a>\n </li>\n <li>\n <a class=\"label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer\" (click)=\"closeDropdown()\">\n <i class=\"pi pi-inbox\"></i>\n <span>Inbox</span>\n </a>\n </li>\n <li class=\"border-t border-surface mt-1 pt-1\">\n <a class=\"label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer\" (click)=\"closeDropdown()\">\n <i class=\"pi pi-power-off\"></i>\n <span>Log out</span>\n </a>\n </li>\n </ul>\n </div>\n }\n </li>\n </ul>\n </div>\n </div>\n\n <a class=\"mobile-logo\" [routerLink]=\"['/']\">\n <img [src]=\"mobileLogo()\" [attr.alt]=\"mobileLogoConfig.alt\" />\n </a>\n </div>`\n})\nexport class AppTopbar implements AfterViewChecked {\n layoutService = inject(LayoutService);\n\n readonly mobileLogoConfig = inject(TOPBAR_MOBILE_LOGO);\n\n mobileLogo = computed(() =>\n this.layoutService.isDarkTheme() ? this.mobileLogoConfig.dark : this.mobileLogoConfig.light\n );\n\n desktopLogo = computed(() =>\n this.layoutService.isDarkTheme() ? this.mobileLogoConfig.dark : this.mobileLogoConfig.light\n );\n\n isDarkTheme = computed(() => this.layoutService.isDarkTheme());\n\n isSidebarPinned = computed(() => this.layoutService.isSidebarPinned());\n\n searchActive = signal(false);\n activeDropdown = signal<DropdownId>(null);\n private shouldFocusSearch = false;\n\n @ViewChild('menubutton') menuButton!: ElementRef;\n @ViewChild('searchInput') searchInput?: ElementRef<HTMLInputElement>;\n @ViewChild('notificationsItem') notificationsItem!: ElementRef;\n @ViewChild('languageItem') languageItem!: ElementRef;\n @ViewChild('profileItem') profileItem!: ElementRef;\n\n notificationsBars = signal<NotificationsBars[]>([\n {\n id: 'inbox',\n label: 'Inbox',\n badge: '2'\n },\n {\n id: 'general',\n label: 'General'\n },\n {\n id: 'archived',\n label: 'Archived'\n }\n ]);\n\n notifications = signal<any[]>([\n {\n id: 'inbox',\n data: [\n {\n initials: 'ML',\n name: 'Michael Lee',\n description: 'You have a new message from the support team regarding your recent inquiry.',\n time: '1 hour ago',\n new: true\n },\n {\n initials: 'AJ',\n name: 'Alice Johnson',\n description: 'Your report has been successfully submitted and is under review.',\n time: '10 minutes ago',\n new: true\n },\n {\n initials: 'ED',\n name: 'Emily Davis',\n description: 'The project deadline has been updated to September 30th. Please check the details.',\n time: 'Yesterday at 4:35 PM',\n new: false\n }\n ]\n },\n {\n id: 'general',\n data: [\n {\n initials: 'AJ',\n name: 'Alice Johnson',\n description: 'Reminder: Your subscription is about to expire in 3 days. Renew now to avoid interruption.',\n time: '30 minutes ago',\n new: true\n },\n {\n initials: 'ML',\n name: 'Michael Lee',\n description: 'The server maintenance has been completed successfully. No further downtime is expected.',\n time: 'Yesterday at 2:15 PM',\n new: false\n }\n ]\n },\n {\n id: 'archived',\n data: [\n {\n initials: 'LB',\n name: 'Lucas Brown',\n description: 'Your appointment with Dr. Anderson has been confirmed for October 12th at 10:00 AM.',\n time: '1 week ago',\n new: true\n },\n {\n initials: 'ED',\n name: 'Emily Davis',\n description: 'The document you uploaded has been successfully archived for future reference.',\n time: '2 weeks ago',\n new: false\n }\n ]\n }\n ]);\n\n languages = signal([\n { code: 'en', label: 'English', flag: '\\u{1F1EC}\\u{1F1E7}' },\n { code: 'fr', label: 'French', flag: '\\u{1F1EB}\\u{1F1F7}' },\n { code: 'es', label: 'Spanish', flag: '\\u{1F1EA}\\u{1F1F8}' }\n ]);\n\n selectedLanguage = signal('en');\n\n selectedNotificationBar = model(this.notificationsBars()[0].id ?? 'inbox');\n\n selectedNotificationsBarData = computed(() => this.notifications().find((f) => f.id === this.selectedNotificationBar()).data);\n\n onMenuButtonClick() {\n this.layoutService.toggleMenu();\n }\n\n toggleSidebarPin() {\n this.layoutService.toggleSidebarPin();\n }\n\n toggleDarkMode() {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n darkTheme: !state.darkTheme\n }));\n }\n\n showRightMenu() {\n this.layoutService.toggleRightMenu();\n }\n\n onConfigButtonClick() {\n this.layoutService.toggleConfigSidebar();\n }\n\n selectLanguage(code: string) {\n this.selectedLanguage.set(code);\n this.closeDropdown();\n }\n\n toggleDropdown(id: DropdownId, event: Event) {\n event.stopPropagation();\n this.activeDropdown.update((current) => (current === id ? null : id));\n }\n\n closeDropdown() {\n this.activeDropdown.set(null);\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n if (!this.activeDropdown()) return;\n\n const target = event.target as Node;\n const containers = [\n this.notificationsItem?.nativeElement,\n this.languageItem?.nativeElement,\n this.profileItem?.nativeElement\n ];\n\n const insideAny = containers.some((el) => el?.contains(target));\n if (!insideAny) {\n this.closeDropdown();\n }\n }\n\n openSearch() {\n this.searchActive.set(true);\n this.shouldFocusSearch = true;\n }\n\n closeSearch() {\n this.searchActive.set(false);\n }\n\n ngAfterViewChecked() {\n if (this.shouldFocusSearch && this.searchInput) {\n this.searchInput.nativeElement.focus();\n this.shouldFocusSearch = false;\n }\n }\n\n toggleSearchBar() {\n this.layoutService.toggleSearchBar();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, effect, ElementRef, inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { filter, Subject, takeUntil } from 'rxjs';\nimport { LayoutService } from '../layout.service';\nimport { FooterMainComponent } from '../../components/footer-main/footer-main';\nimport { AppMenu } from './app.menu';\nimport { AppTopbar } from './app.topbar';\n\nconst BREAKPOINT = 1024;\n\n@Component({\n selector: '[app-sidebar]',\n imports: [CommonModule, AppMenu, RouterModule, AppTopbar, FooterMainComponent],\n template: `<nav class=\"layout-sidebar\" aria-label=\"Main navigation\" (mouseleave)=\"onMouseLeave()\">\n <div #menuContainer class=\"layout-menu-container min-h-0 grow\" (scroll)=\"onMenuScroll()\">\n <div app-menu></div>\n </div>\n @if (!isHorizontal()) {\n <ux-footer-main [copyrightOnly]=\"true\" role=\"contentinfo\" />\n }\n <div app-topbar *ngIf=\"isHorizontal()\"></div>\n </nav>`\n})\nexport class AppSidebar implements OnInit, OnDestroy {\n layoutService = inject(LayoutService);\n\n router = inject(Router);\n\n el = inject(ElementRef);\n\n @ViewChild('menuContainer') menuContainer!: ElementRef;\n\n @ViewChild('sidebarRef') sidebarRef!: ElementRef;\n\n private timeout: ReturnType<typeof setTimeout> | null = null;\n\n private observer: IntersectionObserver | null = null;\n\n private outsideClickListener: ((event: MouseEvent) => void) | null = null;\n\n private mediaQuery = window.matchMedia(`(min-width: ${BREAKPOINT}px)`);\n\n private destroy$ = new Subject<void>();\n\n isHorizontal = computed(() => this.layoutService.isHorizontal());\n\n constructor() {\n effect(() => {\n const hasOpenOverlay = this.layoutService.hasOpenOverlay();\n const mobileMenuActive = this.layoutService.layoutState().mobileMenuActive;\n\n if (this.layoutService.isDesktop()) {\n if (hasOpenOverlay) {\n this.bindOutsideClickListener();\n } else {\n this.unbindOutsideClickListener();\n }\n } else {\n if (mobileMenuActive) {\n this.bindOutsideClickListener();\n } else {\n this.unbindOutsideClickListener();\n }\n }\n });\n\n effect(() => {\n const hasOpenOverlaySubmenu = this.layoutService.hasOpenOverlaySubmenu();\n if (this.layoutService.isDesktop()) {\n if (hasOpenOverlaySubmenu) {\n setTimeout(() => this.setupIntersectionObserver());\n } else {\n this.unbindObserver();\n }\n }\n });\n }\n\n ngOnInit() {\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n takeUntil(this.destroy$)\n )\n .subscribe((event) => {\n const navEvent = event as NavigationEnd;\n this.onRouteChange(navEvent.urlAfterRedirects);\n });\n\n this.onRouteChange(this.router.url);\n\n this.mediaQuery.addEventListener('change', this.screenChangeListener);\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.unbindOutsideClickListener();\n this.unbindObserver();\n this.mediaQuery.removeEventListener('change', this.screenChangeListener);\n }\n\n private onRouteChange(path: string) {\n this.layoutService.currentUrl.set(path);\n\n let newActivePath: string | null;\n\n if (this.layoutService.hasOverlaySubmenu() && this.layoutService.isDesktop()) {\n newActivePath = null;\n } else {\n newActivePath = path;\n }\n\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: newActivePath,\n overlayMenuActive: false,\n staticMenuMobileActive: false,\n menuHoverActive: false\n }));\n }\n\n private screenChangeListener = () => {\n if (this.layoutService.hasOverlaySubmenu()) {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: this.layoutService.isDesktop() ? null : this.router.url,\n menuHoverActive: false\n }));\n this.unbindOutsideClickListener();\n this.unbindObserver();\n }\n };\n\n private bindOutsideClickListener() {\n if (!this.outsideClickListener) {\n this.outsideClickListener = (event: MouseEvent) => {\n if (this.isOutsideClicked(event)) {\n if (this.layoutService.isDesktop()) {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n overlayMenuActive: false\n }));\n\n if (this.layoutService.hasOverlaySubmenu()) {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: null,\n menuHoverActive: false\n }));\n }\n } else {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n mobileMenuActive: false\n }));\n }\n }\n };\n\n document.addEventListener('click', this.outsideClickListener);\n }\n }\n\n private unbindOutsideClickListener() {\n if (this.outsideClickListener) {\n document.removeEventListener('click', this.outsideClickListener);\n this.outsideClickListener = null;\n }\n }\n\n private isOutsideClicked(event: MouseEvent): boolean {\n const topbarButtonEl = document.querySelector('.mobile-menu-button');\n const sidebarEl = this.el.nativeElement;\n\n return !(\n sidebarEl?.isSameNode(event.target as Node) ||\n sidebarEl?.contains(event.target as Node) ||\n topbarButtonEl?.isSameNode(event.target as Node) ||\n topbarButtonEl?.contains(event.target as Node)\n );\n }\n\n onMouseEnter() {}\n\n onMouseLeave() {\n if (!this.layoutService.isDesktop() || !this.layoutService.isRail()) return;\n if (this.layoutService.layoutState().sidebarPinned) return;\n\n if (this.timeout) clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n sidebarExpanded: false\n }));\n }, 300);\n }\n\n onAnchorToggle() {\n this.layoutService.layoutState.update((state) => ({\n ...state,\n anchored: !state.anchored\n }));\n }\n\n onMenuScroll() {\n if (this.menuContainer?.nativeElement) {\n if (this.layoutService.isHorizontal()) {\n const scrollLeft = this.menuContainer.nativeElement.scrollLeft;\n this.menuContainer.nativeElement.style.setProperty('--menu-scroll-x', `-${scrollLeft}px`);\n } else {\n const scrollTop = this.menuContainer.nativeElement.scrollTop;\n this.menuContainer.nativeElement.style.setProperty('--menu-scroll-y', `-${scrollTop}px`);\n }\n }\n\n if (this.layoutService.hasOverlaySubmenu() && this.layoutService.isDesktop()) {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: null,\n menuHoverActive: false\n }));\n }\n }\n\n private setupIntersectionObserver() {\n if (!this.menuContainer?.nativeElement) return;\n\n if (this.observer) {\n this.observer.disconnect();\n }\n\n const activeMenuItem = this.menuContainer.nativeElement.querySelector('.layout-root-menuitem.active-menuitem');\n if (!activeMenuItem) return;\n\n this.observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (\n this.layoutService.isDesktop() &&\n !entry.isIntersecting &&\n this.layoutService.hasOverlaySubmenu() &&\n this.layoutService.layoutState().activePath\n ) {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: null\n }));\n }\n });\n },\n {\n root: this.menuContainer.nativeElement,\n threshold: 0\n }\n );\n\n this.observer.observe(activeMenuItem);\n }\n\n private unbindObserver() {\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, effect, ElementRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { LayoutService } from '../layout.service';\nimport { AppBreadcrumb } from './app.breadcrumb';\nimport { AppConfigurator } from './app.configurator';\nimport { AppRightMenu } from './app.rightmenu';\nimport { AppSearch } from './app.search';\nimport { AppSidebar } from './app.sidebar';\nimport { AppTopbar } from './app.topbar';\nimport { FooterMainComponent } from '../../components/footer-main/footer-main';\n\n@Component({\n selector: 'app-layout',\n imports: [CommonModule, AppTopbar, AppSidebar, RouterModule, AppConfigurator, AppBreadcrumb, FooterMainComponent, AppSearch, AppRightMenu],\n template: `<div class=\"layout-wrapper\" [ngClass]=\"containerClass()\">\n <div app-topbar></div>\n <div class=\"layout-body\">\n <div app-sidebar></div>\n <div class=\"layout-content-wrapper\">\n <div class=\"layout-content-wrapper-inside\">\n <main class=\"layout-content\">\n <div app-breadcrumb></div>\n <router-outlet></router-outlet>\n </main>\n </div>\n <ux-footer-main class=\"footer-sticky\" />\n </div>\n </div>\n <app-configurator />\n <div app-search></div>\n <div app-rightmenu></div>\n <div class=\"layout-mask\"></div>\n </div> `\n})\nexport class AppLayout {\n layoutService = inject(LayoutService);\n private elRef = inject(ElementRef);\n\n constructor() {\n effect(() => {\n const state = this.layoutService.layoutState();\n if (state.mobileMenuActive) {\n document.body.classList.add('blocked-scroll');\n } else {\n document.body.classList.remove('blocked-scroll');\n }\n });\n\n inject(Router).events.pipe(\n filter((e): e is NavigationEnd => e instanceof NavigationEnd),\n takeUntilDestroyed()\n ).subscribe(() => {\n const wrapper: HTMLElement | null = this.elRef.nativeElement.querySelector('.layout-content-wrapper');\n if (wrapper) wrapper.scrollTop = 0;\n });\n }\n\n containerClass = computed(() => {\n const layoutConfig = this.layoutService.layoutConfig();\n const layoutState = this.layoutService.layoutState();\n return {\n 'layout-overlay': layoutConfig.menuMode === 'overlay',\n 'layout-static': layoutConfig.menuMode === 'static',\n 'layout-slim': layoutConfig.menuMode === 'slim',\n 'layout-horizontal': layoutConfig.menuMode === 'horizontal',\n 'layout-compact': layoutConfig.menuMode === 'compact',\n 'layout-reveal': layoutConfig.menuMode === 'reveal',\n 'layout-drawer': layoutConfig.menuMode === 'drawer',\n 'layout-overlay-active': layoutState.overlayMenuActive,\n 'layout-mobile-active': layoutState.mobileMenuActive,\n 'layout-sidebar-expanded': layoutState.sidebarExpanded,\n 'layout-sidebar-rail': !layoutState.sidebarPinned && layoutConfig.menuMode === 'static',\n 'layout-sidebar-anchored': layoutState.anchored,\n [`layout-card-${layoutConfig.cardStyle}`]: true,\n [`layout-sidebar-${layoutConfig.menuTheme}`]: true\n };\n });\n}\n","import { Component, inject } from '@angular/core';\nimport { LayoutService } from '../layout.service';\n\n@Component({\n selector: '[app-footer]',\n template: `\n @if (layoutService.isHorizontal()) {\n <footer class=\"layout-footer\">\n <span class=\"footer-copyright\">&#169; UNOPS {{ copyrightYear }}</span>\n </footer>\n }\n `\n})\nexport class AppFooter {\n layoutService = inject(LayoutService);\n\n readonly copyrightYear = new Date().getFullYear();\n}\n","import { LayoutService } from '../layout.service';\nimport { Component, inject } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AppConfigurator } from './app.configurator';\n\n@Component({\n selector: 'auth-layout',\n imports: [RouterModule, AppConfigurator],\n template: `\n <main>\n <router-outlet></router-outlet>\n </main>\n <button class=\"layout-config-button config-link\" (click)=\"layoutService.toggleConfigSidebar()\">\n <i class=\"pi pi-cog\"></i>\n </button>\n <app-configurator location=\"landing\" />\n `\n})\nexport class AuthLayout {\n layoutService: LayoutService = inject(LayoutService);\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\nlet aiCardBgFilterId = 0;\n\n/**\n * Animated brand-tinted background for AI insight cards: shifting host background\n * plus soft blurred SVG blobs with staggered fill animation.\n *\n * Project card content with `<ng-content />` so it stacks above the SVG layer.\n */\n@Component({\n selector: 'ux-ai-card-bg',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ux-ai-card-bg block box-border',\n '[attr.data-ai-bg]': 'true'\n },\n styles: `\n :host {\n --ux-ai-bg-from: var(--color-ai-50);\n --ux-ai-bg-to: var(--color-cherry-50);\n --ux-ai-fg-from: var(--color-ai-200);\n --ux-ai-fg-to: var(--color-cherry-100);\n position: relative;\n overflow: hidden;\n isolation: isolate;\n contain: paint;\n animation: ux-ai-bg-move 5s ease-in-out infinite;\n will-change: background-color;\n }\n\n :host-context([class*='app-dark']) {\n --ux-ai-bg-from: var(--color-ai-950);\n --ux-ai-bg-to: var(--color-cherry-950);\n --ux-ai-fg-from: var(--color-ai-900);\n --ux-ai-fg-to: var(--color-cherry-900);\n }\n\n :host > :not(svg) {\n position: relative;\n z-index: 1;\n }\n\n :host svg.ux-ai-card-bg__svg {\n position: absolute;\n inset: 0;\n z-index: 0;\n height: 100%;\n width: 100%;\n max-height: 100%;\n overflow: hidden;\n pointer-events: none;\n }\n\n .ux-ai-fg {\n will-change: fill;\n animation: ux-ai-fg-move 6s ease-in-out infinite;\n }\n\n .ux-ai-fg--1 {\n animation-delay: 0s;\n }\n\n .ux-ai-fg--2 {\n animation-delay: 2s;\n }\n\n .ux-ai-fg--3 {\n animation-delay: 4s;\n }\n\n @keyframes ux-ai-bg-move {\n 0%,\n 100% {\n background-color: var(--ux-ai-bg-from);\n }\n 50% {\n background-color: var(--ux-ai-bg-to);\n }\n }\n\n @keyframes ux-ai-fg-move {\n 0%,\n 100% {\n fill: var(--ux-ai-fg-from);\n }\n 50% {\n fill: var(--ux-ai-fg-to);\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n :host {\n animation: none;\n background-color: var(--ux-ai-bg-from);\n }\n\n .ux-ai-fg {\n animation: none;\n fill: var(--ux-ai-fg-from);\n }\n }\n `,\n template: `\n <svg\n class=\"ux-ai-card-bg__svg\"\n viewBox=\"0 0 400 300\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <defs>\n <filter [attr.id]=\"blurFilterId\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n <feGaussianBlur stdDeviation=\"30\" />\n </filter>\n </defs>\n <ellipse\n class=\"ux-ai-fg ux-ai-fg--1\"\n cx=\"60\"\n cy=\"50\"\n rx=\"120\"\n ry=\"100\"\n opacity=\"0.35\"\n [attr.filter]=\"blurFilterUrl\"\n />\n <ellipse\n class=\"ux-ai-fg ux-ai-fg--2\"\n cx=\"320\"\n cy=\"80\"\n rx=\"100\"\n ry=\"80\"\n opacity=\"0.3\"\n [attr.filter]=\"blurFilterUrl\"\n />\n <ellipse\n class=\"ux-ai-fg ux-ai-fg--3\"\n cx=\"200\"\n cy=\"240\"\n rx=\"140\"\n ry=\"90\"\n opacity=\"0.25\"\n [attr.filter]=\"blurFilterUrl\"\n />\n </svg>\n <ng-content />\n `\n})\nexport class AiCardBgComponent {\n readonly blurFilterId = `uxAiBlur_${++aiCardBgFilterId}`;\n\n get blurFilterUrl(): string {\n return `url(#${this.blurFilterId})`;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n input,\n OnInit,\n output,\n signal\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgClass } from '@angular/common';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { AiCardBgComponent } from '../ai-card-bg/ai-card-bg';\n\nexport interface AiInsight {\n id: number;\n title: string;\n description: string;\n actionLabel: string;\n icon: string;\n iconColor: string;\n}\n\n@Component({\n selector: 'ux-ai-insights-card',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AiCardBgComponent, FormsModule, NgClass, PaginatorModule],\n host: {\n class: 'ux-ai-insights-card block border border-blue-100 dark:border-midnight-400 rounded-2xl shadow-sm overflow-hidden transition-all duration-300 flex flex-col',\n '[class.ux-ai-expanded]': 'expanded()'\n },\n styles: `\n :host { display: flex; }\n `,\n template: `\n <ux-ai-card-bg class=\"flex flex-col flex-1 p-4\">\n <div class=\"motion-safe:animate-enter-liquid [animation-delay:80ms] flex flex-col flex-1\">\n <div class=\"flex items-center justify-between cursor-pointer shrink-0 pr-2\" (click)=\"expanded.set(!expanded())\">\n <div class=\"flex items-center gap-3\">\n <div class=\"w-[34px] h-[34px] rounded-[10px] flex items-center justify-center shrink-0\">\n <i class=\"pi pi-sparkles text-ai-600 dark:text-ai-300\"></i>\n </div>\n <div class=\"flex flex-col\">\n <h4 class=\"title-h4 text-left text-deepsea-500 dark:text-surface-0\">{{ title() }}</h4>\n <span class=\"text-midnight-700 dark:text-surface-100 text-sm font-medium leading-tight\">{{ insights().length }} insights available for your review</span>\n </div>\n </div>\n <i class=\"pi text-sm text-darkblue-500 dark:text-surface-0\" [ngClass]=\"expanded() ? 'pi-chevron-up' : 'pi-chevron-down'\"></i>\n </div>\n\n <div class=\"expand-body\" [class.expand-body--open]=\"expanded()\">\n <div class=\"expand-body__inner\">\n <div class=\"flex flex-col gap-4 mt-4\">\n <div class=\"bg-white/60 dark:bg-surface-800/60 border border-white dark:border-surface-700 rounded-[14px] shadow-sm flex items-center gap-4 px-4 py-2.5 shrink-0\">\n <i class=\"pi pi-search text-surface-500 dark:text-surface-300 text-sm\"></i>\n <input\n type=\"text\"\n [ngModel]=\"searchQuery()\"\n (ngModelChange)=\"searchQuery.set($event); page.set(0)\"\n [placeholder]=\"searchPlaceholder()\"\n class=\"bg-transparent border-none outline-none flex-1 text-sm font-medium text-deepsea-500 dark:text-surface-0 placeholder:text-surface-700 dark:placeholder:text-surface-300\"\n />\n </div>\n\n <div class=\"flex flex-col gap-3\">\n @for (insight of paginatedInsights(); track insight.id) {\n <div class=\"bg-white/70 dark:bg-surface-800/70 border border-white/50 dark:border-surface-700/50 rounded-[14px] shadow-sm p-4 flex gap-3 items-start shrink-0\">\n <i class=\"pi mt-0.5\" [ngClass]=\"[insight.icon, insight.iconColor]\"></i>\n <div class=\"flex flex-col gap-2 flex-1 min-w-0\">\n <div class=\"flex flex-col gap-1\">\n <span class=\"text-midnight-500 dark:text-surface-0 text-sm font-bold leading-[21px]\">{{ insight.title }}</span>\n <p class=\"text-midnight-400 dark:text-surface-300 text-sm leading-normal\">{{ insight.description }}</p>\n </div>\n <button\n class=\"flex items-center gap-1.5 text-darkblue-500 dark:text-primary-400 text-sm font-semibold cursor-pointer hover:underline bg-transparent border-none p-0 w-fit\"\n (click)=\"actionClick.emit(insight)\"\n >\n {{ insight.actionLabel }}\n <i class=\"pi pi-arrow-right text-xs\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n\n <div class=\"shrink-0 w-full border-t border-white/50 dark:border-surface-700/50 pt-2 mt-1 relative z-[1] bg-transparent\">\n <p-paginator\n [rows]=\"perPage()\"\n [totalRecords]=\"filteredInsights().length\"\n [first]=\"first()\"\n (onPageChange)=\"page.set($event.page ?? 0)\"\n [pageLinkSize]=\"3\"\n styleClass=\"w-full\"\n [pt]=\"{ root: { class: 'justify-center' } }\"\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </ux-ai-card-bg>\n `\n})\nexport class AiInsightsCardComponent implements OnInit {\n title = input.required<string>();\n insights = input.required<AiInsight[]>();\n searchPlaceholder = input('Search AI insights...');\n\n actionClick = output<AiInsight>();\n\n expanded = signal(false);\n searchQuery = signal('');\n\n filteredInsights = computed(() => {\n const query = this.searchQuery().trim().toLowerCase();\n if (!query) return this.insights();\n return this.insights().filter(i =>\n i.title.toLowerCase().includes(query) ||\n i.description.toLowerCase().includes(query)\n );\n });\n\n perPage = signal(this.calcPerPage());\n page = signal(0);\n first = computed(() => this.page() * this.perPage());\n paginatedInsights = computed(() => {\n const all = this.filteredInsights();\n return all.slice(this.first(), this.first() + this.perPage());\n });\n\n private destroyRef = inject(DestroyRef);\n\n ngOnInit() {\n const onResize = () => this.perPage.set(this.calcPerPage());\n window.addEventListener('resize', onResize);\n this.destroyRef.onDestroy(() => window.removeEventListener('resize', onResize));\n }\n\n private calcPerPage(): number {\n const shellOffset = 12 * 16;\n const cardChrome = 160 + 72;\n const insightCardHeight = 150;\n const available = (typeof window !== 'undefined' ? window.innerHeight : 900) - shellOffset - cardChrome;\n return Math.max(1, Math.floor(available / insightCardHeight));\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { TooltipModule } from 'primeng/tooltip';\n\nexport interface CompletionStep {\n type: 'mandatory' | 'optional';\n filled: boolean;\n name: string;\n}\n\nexport interface CompletionCategory {\n filled: number;\n total: number;\n}\n\n@Component({\n selector: 'ux-completion-steps',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TooltipModule],\n host: { class: 'block' },\n template: `\n <div class=\"card flex flex-col gap-4\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex items-center gap-3\">\n <div class=\"flex flex-col\">\n <span class=\"text-xs font-semibold text-surface-600 dark:text-surface-300 uppercase tracking-wide\">{{ title() }}</span>\n </div>\n </div>\n <span class=\"text-2xl font-bold\" [class]=\"filledTotal() > 0 ? 'text-surface-900 dark:text-surface-0' : 'text-surface-500 dark:text-surface-400'\">{{ filledTotal() }}/{{ totalRecords() }}</span>\n </div>\n\n <div class=\"flex items-center gap-1 flex-wrap\">\n @for (step of steps(); track $index) {\n <span class=\"inline-flex items-center justify-center w-6 h-6 rounded-full\"\n [class.cursor-pointer]=\"interactive()\"\n [class]=\"getDotStyle(step).bg\"\n [pTooltip]=\"step.name + (step.filled ? '' : ' (missing)')\" tooltipPosition=\"top\"\n (click)=\"interactive() && stepClick.emit($index)\">\n @if (getDotStyle(step).icon === 'pi') {\n <i class=\"pi text-[3px]\" [class]=\"getDotStyle(step).iconClass + ' ' + getDotStyle(step).text\"></i>\n } @else if (getDotStyle(step).icon === 'material') {\n <span class=\"material-symbols-outlined leading-none\" style=\"font-size:20px;transform:scale(0.9)\" [class]=\"getDotStyle(step).text\">{{ getDotStyle(step).iconClass }}</span>\n } @else {\n <span class=\"text-sm font-black leading-none\" [class]=\"getDotStyle(step).text\">!</span>\n }\n </span>\n }\n </div>\n\n <div class=\"flex flex-wrap items-center gap-x-6 gap-y-2 mt-1\">\n <div class=\"flex items-center gap-2\">\n <span class=\"inline-block w-4 h-4 rounded-full shrink-0\" [class]=\"legendMandatoryBg()\"></span>\n <span class=\"text-sm text-surface-600 dark:text-surface-300\">Mandatory:</span>\n <span class=\"text-sm font-semibold text-surface-900 dark:text-surface-0\">{{ mandatory().filled }}/{{ mandatory().total }}</span>\n </div>\n <div class=\"flex items-center gap-2\">\n <span class=\"inline-block w-4 h-4 rounded-full shrink-0\" [class]=\"legendOptionalBg()\"></span>\n <span class=\"text-sm text-surface-600 dark:text-surface-300\">Optional:</span>\n <span class=\"text-sm font-semibold text-surface-900 dark:text-surface-0\">{{ optional().filled }}/{{ optional().total }}</span>\n </div>\n <div class=\"flex items-center gap-2\">\n <span class=\"text-sm text-surface-600 dark:text-surface-300\">Total:</span>\n <span class=\"text-sm font-semibold text-surface-900 dark:text-surface-0\">{{ totalRecords() }}</span>\n </div>\n </div>\n\n @if (empty()) {\n <div class=\"empty-state\">\n <i class=\"pi pi-chart-bar text-3xl text-surface-500 dark:text-surface-400\"></i>\n <span class=\"empty-state-title\">{{ emptyTitle() }}</span>\n <span class=\"empty-state-desc\">{{ emptyDescription() }}</span>\n </div>\n }\n </div>\n `\n})\nexport class CompletionStepsComponent {\n title = input('Completion Steps');\n steps = input<CompletionStep[]>([]);\n mandatory = input<CompletionCategory>({ filled: 0, total: 0 });\n optional = input<CompletionCategory>({ filled: 0, total: 0 });\n totalRecords = input(0);\n interactive = input(false);\n emptyTitle = input('No progress tracked yet');\n emptyDescription = input('Progress is calculated automatically as you fill in the opportunity sections. Each dot represents a required or optional field — mandatory fields (bordered red) must be completed before submission.');\n\n stepClick = output<number>();\n\n private readonly dotStyles = {\n mandatoryFilled: { bg: 'bg-green-200 dark:bg-green-700', text: 'text-green-800 dark:text-green-50', icon: 'pi', iconClass: 'pi-check' },\n optionalFilled: { bg: 'bg-blue-200 dark:bg-blue-700', text: 'text-blue-800 dark:text-blue-50', icon: 'material', iconClass: 'info_i' },\n mandatoryMissing: { bg: 'bg-transparent border-2 border-red-400 dark:border-red-500', text: 'text-red-500 dark:text-red-400', icon: 'pi', iconClass: 'pi-plus' },\n optionalMissing: { bg: 'bg-transparent border-2 border-surface-300 dark:border-surface-600', text: 'text-surface-500 dark:text-surface-400', icon: 'material', iconClass: 'info_i' }\n };\n\n filledTotal = computed(() => this.mandatory().filled + this.optional().filled);\n empty = computed(() => this.filledTotal() === 0);\n\n legendMandatoryBg = computed(() =>\n this.mandatory().filled > 0 ? this.dotStyles.mandatoryFilled.bg : this.dotStyles.mandatoryMissing.bg\n );\n\n legendOptionalBg = computed(() =>\n this.optional().filled > 0 ? this.dotStyles.optionalFilled.bg : this.dotStyles.optionalMissing.bg\n );\n\n getDotStyle(step: CompletionStep) {\n if (step.filled) return step.type === 'mandatory' ? this.dotStyles.mandatoryFilled : this.dotStyles.optionalFilled;\n return step.type === 'mandatory' ? this.dotStyles.mandatoryMissing : this.dotStyles.optionalMissing;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, ContentChildren, DestroyRef, Directive, inject, input, model, PLATFORM_ID, QueryList, signal, TemplateRef } from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SelectModule } from 'primeng/select';\nimport { TabsModule } from 'primeng/tabs';\n\nexport interface DetailTab {\n value: string;\n label: string;\n icon?: string;\n}\n\n/**\n * Structural directive that marks a template as content for a specific tab\n * inside `<ux-detail-layout>`.\n *\n * Usage: `<ng-template uxDetailTab=\"overview\">...content...</ng-template>`\n */\n@Directive({ selector: '[uxDetailTab]' })\nexport class DetailTabDirective {\n readonly uxDetailTab = input.required<string>();\n constructor(public templateRef: TemplateRef<unknown>) {}\n}\n\n/**\n * Reusable detail-page layout shell: sticky header, tabbed main column,\n * and a persistent right sidebar (typically for AI insights).\n *\n * All styling derives from the active PrimeNG brand preset (BrandSoft / BrandCrisp /\n * BrandContrast) via `--p-*` CSS variables and Tailwind `surface-*` / `primary-*`\n * utilities (resolved by `tailwindcss-primeui`). No hardcoded colors.\n *\n * ```html\n * <ux-detail-layout [tabs]=\"myTabs\" [(activeTab)]=\"currentTab\">\n * <ng-container ux-detail-header>\n * ...sticky header content...\n * </ng-container>\n *\n * <ng-template uxDetailTab=\"overview\">...tab 1...</ng-template>\n * <ng-template uxDetailTab=\"scope\">...tab 2...</ng-template>\n *\n * <ng-container ux-detail-sidebar>\n * <!-- Use ng-container so children become direct children of the\n * library's flex container and inherit the gap spacing. -->\n * ...right sidebar (AI card, documents, etc.)...\n * </ng-container>\n *\n * </ux-detail-layout>\n * ```\n */\n@Component({\n selector: 'ux-detail-layout',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, SelectModule, TabsModule],\n host: { class: 'ux-detail-layout' },\n styles: `\n :host {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n font-family: var(--p-font-family, 'Noto Sans', sans-serif);\n background: transparent;\n color: var(--p-text-color);\n }\n\n .ux-dl__header {\n background: transparent;\n }\n\n .ux-dl__scroll {\n scrollbar-width: thin;\n scrollbar-color: color-mix(in srgb, var(--p-primary-color) 25%, transparent)\n color-mix(in srgb, var(--p-surface-500) 8%, transparent);\n }\n\n .ux-dl__scroll::-webkit-scrollbar { width: 10px; height: 10px; }\n .ux-dl__scroll::-webkit-scrollbar-track {\n background: color-mix(in srgb, var(--p-surface-500) 8%, transparent);\n border-radius: var(--p-content-border-radius, 0.375rem);\n }\n .ux-dl__scroll::-webkit-scrollbar-thumb {\n background: color-mix(in srgb, var(--p-primary-color) 25%, transparent);\n border-radius: var(--p-content-border-radius, 0.375rem);\n }\n .ux-dl__scroll::-webkit-scrollbar-thumb:hover {\n background: color-mix(in srgb, var(--p-primary-color) 45%, transparent);\n }\n\n .ux-dl__sidebar-inner { display: flex; flex-direction: column; gap: 1.5rem; }\n\n .ux-dl__header-meta {\n overflow: hidden;\n max-height: 80px;\n opacity: 1;\n transition: max-height 0.25s ease-out, opacity 0.2s ease-out;\n }\n .ux-dl__header-meta--hidden {\n max-height: 0;\n opacity: 0;\n }\n\n .ux-dl__tablist {\n display: flex;\n overflow: hidden;\n }\n\n .ux-dl__mobile-tabs {\n position: sticky;\n top: 0;\n z-index: 5;\n }\n\n `,\n template: `\n <div class=\"flex flex-col flex-1 min-h-0\">\n\n <!-- Sticky header (projected) -->\n <div class=\"ux-dl__header flex-shrink-0 z-10\">\n <div>\n <ng-content select=\"[ux-detail-header]\" />\n </div>\n <div class=\"ux-dl__header-meta\" [class.ux-dl__header-meta--hidden]=\"scrolled()\">\n <ng-content select=\"[ux-detail-header-meta]\" />\n </div>\n </div>\n\n <!-- p-tabs wraps tablist + scrollable panels for state binding -->\n <p-tabs class=\"flex flex-col flex-1 min-h-0\" [value]=\"activeTab()\" (valueChange)=\"activeTab.set($event + '')\">\n\n @if (!singleTab()) {\n <!-- Mobile: dropdown selector -->\n @if (isMobile()) {\n <div class=\"ux-dl__mobile-tabs\">\n <p-select\n [options]=\"tabOptions()\"\n [ngModel]=\"activeTab()\"\n (ngModelChange)=\"activeTab.set($event)\"\n optionLabel=\"label\"\n optionValue=\"value\"\n styleClass=\"w-full ux-dl__mobile-select\"\n />\n </div>\n }\n\n <!-- Desktop: horizontal tab bar (outside scroll → stays fixed below header) -->\n <p-tablist\n class=\"flex-shrink-0 ux-dl__tablist\"\n [style.display]=\"isMobile() ? 'none' : null\"\n [pt]=\"{ tabList: { class: 'p-0' } }\"\n >\n @for (tab of tabs(); track tab.value) {\n <p-tab [value]=\"tab.value\">\n @if (tab.icon) {\n <i [class]=\"tab.icon\" class=\"mr-2 text-sm\"></i>\n }\n {{ tab.label }}\n </p-tab>\n }\n </p-tablist>\n }\n\n <!-- Scrollable body (only content scrolls, tabs stay above) -->\n <div class=\"flex flex-col flex-1 min-h-0 overflow-y-auto overflow-x-hidden ux-dl__scroll\"\n (scroll)=\"onScroll($event)\">\n\n <!-- Content + Sidebar row -->\n <div class=\"flex flex-col lg:flex-row items-start gap-6 w-full py-4 lg:py-6\">\n\n <!-- Main column: tab panels -->\n <div class=\"w-full flex-1 min-w-0 flex flex-col gap-6\">\n <p-tabpanels>\n @for (tab of tabs(); track tab.value) {\n <p-tabpanel [value]=\"tab.value\">\n <div class=\"flex flex-col gap-6\">\n @if (getTabTemplate(tab.value); as tmpl) {\n <ng-container [ngTemplateOutlet]=\"tmpl\" />\n }\n </div>\n </p-tabpanel>\n }\n </p-tabpanels>\n </div>\n\n <!-- Sidebar -->\n <aside class=\"w-full lg:w-[380px] shrink-0 flex flex-col lg:sticky lg:top-4 lg:self-start lg:pb-8\">\n <div class=\"ux-dl__sidebar-inner w-full\">\n <ng-content select=\"[ux-detail-sidebar]\" />\n </div>\n </aside>\n </div>\n\n </div>\n\n </p-tabs>\n\n </div>\n `\n})\nexport class DetailLayoutComponent {\n /** Tab definitions for the main content area. */\n readonly tabs = input.required<DetailTab[]>();\n\n /** Currently active tab value (two-way bindable). */\n readonly activeTab = model<string>('');\n\n /** Options for the mobile tab dropdown. */\n readonly tabOptions = computed(() => this.tabs().map(t => ({ label: t.label, value: t.value })));\n\n /** True when there is only a single tab, making the tab bar redundant. */\n readonly singleTab = computed(() => this.tabs().length <= 1);\n\n /** True when viewport is below the lg breakpoint (1024px). */\n readonly isMobile = signal(false);\n\n /** True once the scrollable body has been scrolled past the threshold. */\n readonly scrolled = signal(false);\n\n constructor() {\n if (isPlatformBrowser(inject(PLATFORM_ID))) {\n const mql = window.matchMedia('(max-width: 1023px)');\n this.isMobile.set(mql.matches);\n const handler = (e: MediaQueryListEvent) => this.isMobile.set(e.matches);\n mql.addEventListener('change', handler);\n inject(DestroyRef).onDestroy(() => mql.removeEventListener('change', handler));\n }\n\n }\n\n /** Tab content templates provided by the consumer. */\n @ContentChildren(DetailTabDirective) tabTemplates!: QueryList<DetailTabDirective>;\n\n getTabTemplate(value: string): TemplateRef<unknown> | null {\n const match = this.tabTemplates?.find(t => t.uxDetailTab() === value);\n return match?.templateRef ?? null;\n }\n\n onScroll(event: Event) {\n const el = event.target as HTMLElement;\n this.scrolled.set(el.scrollTop > 10);\n }\n}\n","import { ChangeDetectionStrategy, Component, input, model } from '@angular/core';\n\nexport interface PillTabItem {\n value: string;\n label: string;\n}\n\n/**\n * Horizontal row of pill-shaped sub-tab buttons. Styling aligns with sidebar menu item\n * hover/active tokens (`--d-menuitem-*`).\n */\n@Component({\n selector: 'ux-pill-tabs',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'ux-pill-tabs block' },\n styles: `\n .ux-pill-tabs__row {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n }\n\n .ux-pill-tabs__btn {\n border-radius: 9999px;\n padding: 0.375rem 0.875rem;\n font-size: var(--p-font-size, 0.875rem);\n font-weight: 600;\n font-family: inherit;\n cursor: pointer;\n transition: all 0.15s ease;\n border: 1px solid var(--p-primary-800);\n background: transparent;\n color: var(--p-text-muted-color);\n }\n\n :host-context(.app-dark) .ux-pill-tabs__btn:not(.ux-pill-tabs__btn--active) {\n border-color: var(--p-surface-700);\n }\n\n .ux-pill-tabs__btn:hover:not(.ux-pill-tabs__btn--active) {\n background: var(--d-menuitem-hover-bg);\n color: var(--p-primary-950);\n }\n\n :host-context(.app-dark) .ux-pill-tabs__btn:hover:not(.ux-pill-tabs__btn--active) {\n color: var(--p-primary-200);\n }\n\n .ux-pill-tabs__btn--active {\n background: var(--p-primary-200);\n border-color: transparent;\n color: var(--p-primary-950);\n }\n\n :host-context(.app-dark) .ux-pill-tabs__btn--active {\n color: var(--p-primary-950);\n }\n\n .ux-pill-tabs__btn:focus {\n outline: none;\n box-shadow: none;\n }\n\n .ux-pill-tabs__btn:focus-visible {\n outline: none;\n box-shadow: var(--d-menuitem-focus-shadow);\n }\n `,\n template: `\n <div class=\"ux-pill-tabs__row\" role=\"tablist\">\n @for (item of items(); track item.value) {\n <button\n type=\"button\"\n class=\"ux-pill-tabs__btn\"\n role=\"tab\"\n [attr.aria-selected]=\"activeValue() === item.value\"\n [class.ux-pill-tabs__btn--active]=\"activeValue() === item.value\"\n (click)=\"activeValue.set(item.value)\"\n >\n {{ item.label }}\n </button>\n }\n </div>\n `\n})\nexport class PillTabsComponent {\n readonly items = input.required<PillTabItem[]>();\n readonly activeValue = model<string>('');\n}\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, model, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MenuItem } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { Menu, MenuModule } from 'primeng/menu';\nimport { PanelModule } from 'primeng/panel';\nimport { TableModule } from 'primeng/table';\nimport { TagModule } from 'primeng/tag';\nimport { PillTabsComponent, PillTabItem } from '../pill-tabs/pill-tabs';\n\nexport interface DocumentItem {\n id: number;\n fileName: string;\n type: string;\n fileSize: string;\n uploadDate: string;\n owner: string;\n icon: string;\n}\n\n@Component({\n selector: 'ux-documents-card',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, FormsModule, ButtonModule, FileUploadModule, IconFieldModule, InputIconModule, InputTextModule, MenuModule, TableModule, TagModule, PillTabsComponent, PanelModule],\n host: { class: 'ux-documents-card block' },\n styles: ``,\n template: `\n <div class=\"card flex flex-col overflow-hidden\">\n <p-panel [toggleable]=\"true\" [collapsed]=\"!expanded()\" (collapsedChange)=\"expanded.set(!$event)\" toggler=\"header\">\n <ng-template #headericons let-collapsed>\n <i class=\"pi text-sm text-darkblue-500 dark:text-surface-0\" [ngClass]=\"collapsed ? 'pi-chevron-down' : 'pi-chevron-up'\"></i>\n </ng-template>\n <ng-template #header>\n <div class=\"flex items-center gap-3 flex-1\">\n <div class=\"w-[34px] h-[34px] rounded-[10px] flex items-center justify-center shrink-0\">\n <i class=\"pi pi-folder text-deepsea-500 dark:text-surface-0\"></i>\n </div>\n <div class=\"flex flex-col\">\n <h4 class=\"title-h4 text-left text-deepsea-500 dark:text-surface-0\">Documents</h4>\n <span class=\"text-surface-500 dark:text-surface-300 text-sm font-medium leading-tight\">{{ summary() }}</span>\n </div>\n </div>\n </ng-template>\n <div class=\"flex flex-col gap-4 pt-4\">\n <ux-pill-tabs [items]=\"pillTabItems()\" [(activeValue)]=\"activeFilter\" />\n\n <p-iconfield>\n <p-inputicon class=\"pi pi-search\" />\n <input pInputText [(ngModel)]=\"searchQuery\" placeholder=\"Search documents\" class=\"w-full\" />\n </p-iconfield>\n\n @if (filtered().length > 0) {\n <p-table\n [value]=\"filtered()\"\n [paginator]=\"true\"\n [rows]=\"rows()\"\n sortMode=\"multiple\"\n styleClass=\"flex flex-col rounded-2xl overflow-hidden [&>[data-pc-section=paginatorcontainer]]:border-0! [&>[data-pc-section=paginatorcontainer]]:mt-auto [&_[data-pc-name=pcpaginator]]:rounded-none!\"\n tableStyleClass=\"w-full table-fixed\"\n paginatorTemplate=\"FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink\"\n >\n <ng-template #header>\n <tr>\n <th pSortableColumn=\"fileName\" class=\"w-1/2\">File Name <p-sortIcon field=\"fileName\" /></th>\n <th pSortableColumn=\"type\" class=\"w-1/4\">Type <p-sortIcon field=\"type\" /></th>\n <th class=\"w-1/4\">Actions</th>\n </tr>\n </ng-template>\n <ng-template #body let-doc>\n <tr>\n <td>\n <div class=\"flex items-center gap-3 py-1 min-w-0\">\n <i class=\"pi text-xl text-surface-600 dark:text-surface-300 shrink-0\" [ngClass]=\"doc.icon\"></i>\n <span class=\"text-surface-700 dark:text-surface-100 text-sm truncate\">{{ doc.fileName }}</span>\n </div>\n </td>\n <td>\n <p-tag [value]=\"doc.type\" styleClass=\"px-2 py-1\" />\n </td>\n <td>\n <div class=\"flex items-center gap-1\">\n <p-button icon=\"pi pi-download\" [rounded]=\"true\" [text]=\"true\" size=\"small\" severity=\"secondary\" styleClass=\"cursor-pointer\" ariaLabel=\"Download\" />\n <p-button icon=\"pi pi-ellipsis-h\" [rounded]=\"true\" [text]=\"true\" size=\"small\" severity=\"secondary\" styleClass=\"cursor-pointer\" ariaLabel=\"More options\" (onClick)=\"onMenuToggle($event, doc, docMenu)\" />\n <p-menu #docMenu [model]=\"menuItems\" [popup]=\"true\" styleClass=\"w-48\" appendTo=\"body\" />\n </div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n } @else {\n <div class=\"flex flex-col items-center gap-3 py-8 text-center\">\n <i class=\"pi pi-folder-open text-3xl text-surface-300 dark:text-surface-500\"></i>\n <span class=\"text-surface-600 dark:text-surface-300 text-sm\">No documents to show</span>\n </div>\n }\n\n <p-fileupload\n name=\"documents[]\"\n [multiple]=\"true\"\n maxFileSize=\"10000000\"\n mode=\"advanced\"\n [auto]=\"false\"\n chooseLabel=\"Upload File\"\n chooseIcon=\"pi pi-upload\"\n [showUploadButton]=\"false\"\n [showCancelButton]=\"false\"\n [pt]=\"{ root: { class: 'bg-transparent' }, header: { class: 'bg-transparent' }, content: { class: 'bg-transparent' } }\"\n >\n <ng-template #header let-chooseCallback=\"chooseCallback\">\n <div class=\"flex items-center gap-2 w-full\">\n <p-button icon=\"pi pi-upload\" label=\"Upload File\" (onClick)=\"chooseCallback()\" />\n <p-button icon=\"pi pi-link\" label=\"Share Link\" [outlined]=\"true\" styleClass=\"!text-primary-600 !border-primary-600\" />\n </div>\n </ng-template>\n <ng-template #empty>\n <div class=\"flex flex-col items-center gap-2 py-4\">\n <i class=\"pi pi-cloud-upload text-2xl text-surface-400 dark:text-surface-300\"></i>\n <span class=\"text-surface-500 dark:text-surface-100 text-sm\">Drag and drop files here</span>\n </div>\n </ng-template>\n </p-fileupload>\n </div>\n </p-panel>\n </div>\n `\n})\nexport class DocumentsCardComponent {\n documents = input<DocumentItem[]>([]);\n rows = input(5);\n\n expanded = signal(false);\n activeFilter = signal('All Files');\n searchQuery = model('');\n\n private fileTypes = computed(() => {\n const types = [...new Set(this.documents().map(d => d.type))];\n types.sort();\n return types;\n });\n\n filterOptions = computed(() => ['All Files', ...this.fileTypes(), 'Other']);\n\n pillTabItems = computed<PillTabItem[]>(() =>\n this.filterOptions().map(f => ({ value: f, label: f }))\n );\n\n summary = computed(() => {\n const docs = this.documents();\n const count = docs.length;\n if (count === 0) return 'No files attached';\n const types = this.fileTypes();\n const fileWord = count === 1 ? 'file' : 'files';\n if (types.length === 0) return `${count} ${fileWord} attached`;\n return `${count} ${fileWord} · ${types.join(', ')}`;\n });\n\n filtered = computed(() => {\n let docs = this.documents();\n const query = this.searchQuery().trim().toLowerCase();\n if (query) {\n docs = docs.filter(d => d.fileName.toLowerCase().includes(query) || d.owner.toLowerCase().includes(query));\n }\n const filter = this.activeFilter();\n if (filter === 'All Files') return docs;\n if (filter === 'Other') {\n const knownTypes = this.fileTypes();\n return docs.filter(d => !knownTypes.includes(d.type));\n }\n return docs.filter(d => d.type === filter);\n });\n\n menuItems: MenuItem[] = [];\n\n onMenuToggle(event: Event, _doc: DocumentItem, menu: Menu) {\n this.menuItems = [\n { label: 'Preview', icon: 'pi pi-eye' },\n { label: 'Share', icon: 'pi pi-share-alt' },\n { separator: true },\n { label: 'Delete', icon: 'pi pi-trash', styleClass: 'text-red-500' }\n ];\n menu.toggle(event);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SelectModule } from 'primeng/select';\n\n@Component({\n selector: 'ux-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, SelectModule],\n host: { class: 'ux-select' },\n styles: `\n :host :deep .p-select {\n border-radius: var(--p-content-border-radius, 0.375rem);\n font-family: var(--p-font-family, 'Noto Sans', sans-serif);\n font-size: var(--font-size-sm, 0.875rem);\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n padding: 0.5rem 1.5rem;\n }\n\n :host :deep .p-select:not(.p-disabled):hover {\n border-color: var(--p-primary-400);\n }\n\n :host :deep .p-select:not(.p-disabled).p-focus {\n border-color: var(--p-primary-500);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--p-primary-500) 20%, transparent);\n }\n\n :host :deep .p-select-label {\n font-size: var(--font-size-sm, 0.875rem);\n color: var(--p-text-color);\n }\n\n :host :deep .p-select-label.p-placeholder {\n color: var(--p-text-muted-color);\n }\n\n :host :deep .p-select-dropdown {\n color: var(--p-text-muted-color);\n }\n\n :host-context(:root[class*='app-dark']) :deep .p-select:not(.p-disabled):hover {\n border-color: var(--p-primary-300);\n }\n\n :host-context(:root[class*='app-dark']) :deep .p-select:not(.p-disabled).p-focus {\n border-color: var(--p-primary-400);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--p-primary-400) 25%, transparent);\n }\n `,\n template: `\n <p-select\n [options]=\"options()\"\n [optionLabel]=\"optionLabel()\"\n [optionValue]=\"optionValue()\"\n [optionGroupLabel]=\"optionGroupLabel()\"\n [optionGroupChildren]=\"optionGroupChildren()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [filter]=\"filter()\"\n [showClear]=\"showClear()\"\n [emptyMessage]=\"emptyMessage()\"\n [group]=\"group()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"value.set($event)\"\n (onChange)=\"onChange.emit($event)\"\n (onFilter)=\"onFilter.emit($event)\"\n [styleClass]=\"resolvedStyleClass()\"\n />\n `\n})\nexport class UxSelectComponent {\n readonly options = input<any[]>([]);\n readonly optionLabel = input<string>('label');\n readonly optionValue = input<string>('value');\n readonly optionGroupLabel = input<string>('label');\n readonly optionGroupChildren = input<string>('items');\n readonly placeholder = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly filter = input<boolean>(false);\n readonly showClear = input<boolean>(false);\n readonly emptyMessage = input<string>('No results found');\n readonly group = input<boolean>(false);\n readonly styleClass = input<string>('');\n\n readonly value = model<any>(null);\n\n readonly onChange = output<any>();\n readonly onFilter = output<any>();\n\n readonly resolvedStyleClass = computed(() => {\n const base = 'ux-select__inner';\n const extra = this.styleClass();\n return extra ? `${base} ${extra}` : base;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model, OnChanges, output, SimpleChanges } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AutoCompleteCompleteEvent, AutoCompleteModule } from 'primeng/autocomplete';\nimport { AvatarModule } from 'primeng/avatar';\nimport { ButtonModule } from 'primeng/button';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { DividerModule } from 'primeng/divider';\nimport { DrawerModule } from 'primeng/drawer';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { SelectModule } from 'primeng/select';\nimport { TextareaModule } from 'primeng/textarea';\n\nexport interface TaskDrawerMember {\n name?: string;\n image: string;\n}\n\nexport interface TaskDrawerTask {\n id: number | null;\n title: string;\n description: string | null;\n status: string;\n completed: boolean;\n startDate: string | null;\n endDate: string | null;\n members: TaskDrawerMember[];\n}\n\ninterface FormData {\n id: number | null;\n title: string;\n description: string;\n status: string;\n completed: boolean;\n startDate: Date | null;\n endDate: Date | null;\n members: TaskDrawerMember[];\n}\n\ninterface StatusOption {\n label: string;\n value: string;\n}\n\n@Component({\n selector: 'ux-task-drawer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ButtonModule, DrawerModule, InputTextModule, TextareaModule, SelectModule, DatePickerModule, AutoCompleteModule, DividerModule, AvatarModule],\n host: { class: 'ux-task-drawer' },\n template: `\n <p-drawer [visible]=\"visible()\" position=\"right\" styleClass=\"w-full! md:w-[420px]!\" (onHide)=\"onHide()\" (visibleChange)=\"visible.set($event)\" appendTo=\"body\">\n <ng-template #header>\n <div class=\"flex items-center gap-3\">\n <i class=\"pi pi-list-check text-xl text-primary-500\"></i>\n <span class=\"text-surface-900 dark:text-surface-0 font-semibold text-lg\">{{ drawerTitle() }}</span>\n </div>\n </ng-template>\n\n <div class=\"flex flex-col gap-6 p-1\">\n <div class=\"flex flex-col gap-2\">\n <label for=\"task-title\" class=\"text-surface-900 dark:text-surface-0 font-medium text-sm\">Task Title</label>\n <input pInputText id=\"task-title\" [(ngModel)]=\"formData.title\" placeholder=\"Enter task title...\" class=\"w-full\" />\n </div>\n\n <div class=\"flex flex-col gap-2\">\n <label for=\"task-description\" class=\"text-surface-900 dark:text-surface-0 font-medium text-sm\">Description</label>\n <textarea pTextarea id=\"task-description\" [(ngModel)]=\"formData.description\" placeholder=\"Enter task description...\" [rows]=\"4\" class=\"w-full\"></textarea>\n </div>\n\n <div class=\"flex flex-col gap-2\">\n <label for=\"task-status\" class=\"text-surface-900 dark:text-surface-0 font-medium text-sm\">Status</label>\n <p-select id=\"task-status\" [(ngModel)]=\"formData.status\" [options]=\"statusOptions\" optionLabel=\"label\" optionValue=\"value\" placeholder=\"Select status\" styleClass=\"w-full\" />\n </div>\n\n <p-divider styleClass=\"my-2\" />\n\n <div class=\"flex flex-col gap-2\">\n <label for=\"start-date\" class=\"text-surface-900 dark:text-surface-0 font-medium text-sm\">Start Date</label>\n <p-datepicker id=\"start-date\" [(ngModel)]=\"formData.startDate\" dateFormat=\"dd.mm.yy\" placeholder=\"Select start date\" inputStyleClass=\"w-full\" />\n </div>\n\n <div class=\"flex flex-col gap-2\">\n <label for=\"end-date\" class=\"text-surface-900 dark:text-surface-0 font-medium text-sm\">End Date</label>\n <p-datepicker id=\"end-date\" [(ngModel)]=\"formData.endDate\" dateFormat=\"dd.mm.yy\" placeholder=\"Select end date\" inputStyleClass=\"w-full\" />\n </div>\n\n <p-divider styleClass=\"my-2\" />\n\n <div class=\"flex flex-col gap-2\">\n <label for=\"team-members\" class=\"text-surface-900 dark:text-surface-0 font-medium text-sm\">Team Members</label>\n <p-autocomplete\n id=\"team-members\"\n [(ngModel)]=\"formData.members\"\n [suggestions]=\"filteredMembers\"\n optionLabel=\"name\"\n [multiple]=\"true\"\n placeholder=\"Search team members...\"\n (completeMethod)=\"filterMembers($event)\"\n styleClass=\"w-full\"\n >\n <ng-template #selecteditem let-value>\n <div class=\"flex items-center gap-2 bg-surface-50 dark:bg-surface-900 px-2 py-1 rounded\">\n <p-avatar [image]=\"'demo/images/avatar/' + value.image\" shape=\"circle\" styleClass=\"w-5 h-5 border border-surface-200 dark:border-surface-700\" />\n </div>\n </ng-template>\n <ng-template #item let-option>\n <div class=\"flex items-center gap-3\">\n <p-avatar [image]=\"'demo/images/avatar/' + option.image\" shape=\"circle\" styleClass=\"w-8 h-8 border border-surface-200 dark:border-surface-700\" />\n <span class=\"text-surface-900 dark:text-surface-0 font-medium\">{{ option.name }}</span>\n </div>\n </ng-template>\n </p-autocomplete>\n </div>\n </div>\n\n <ng-template #footer>\n <div class=\"flex justify-end gap-3 pt-4 border-t border-surface-200 dark:border-surface-700\">\n <p-button label=\"Cancel\" icon=\"pi pi-times\" [outlined]=\"true\" severity=\"secondary\" (onClick)=\"handleCancel()\" styleClass=\"flex-1\" />\n <p-button [label]=\"mode() === 'create' ? 'Create Task' : 'Update Task'\" [icon]=\"mode() === 'create' ? 'pi pi-plus' : 'pi pi-check'\" (onClick)=\"handleSave()\" styleClass=\"flex-1\" />\n </div>\n </ng-template>\n </p-drawer>\n `\n})\nexport class TaskDrawerComponent implements OnChanges {\n visible = model(false);\n task = input<TaskDrawerTask | null>(null);\n mode = input<'create' | 'edit'>('create');\n availableMembers = input<TaskDrawerMember[]>([\n { name: 'Amy Elsner', image: 'amyelsner.png' },\n { name: 'Anna Fali', image: 'annafali.png' },\n { name: 'Asiya Javayant', image: 'asiyajavayant.png' },\n { name: 'Bernardo Dominic', image: 'bernardodominic.png' }\n ]);\n\n save = output<TaskDrawerTask>();\n cancel = output<void>();\n\n drawerTitle = computed(() => this.mode() === 'create' ? 'Create New Task' : 'Edit Task');\n\n formData: FormData = {\n id: null,\n title: '',\n description: '',\n status: 'pending',\n completed: false,\n startDate: null,\n endDate: null,\n members: []\n };\n\n statusOptions: StatusOption[] = [\n { label: 'Pending', value: 'pending' },\n { label: 'In Progress', value: 'in-progress' },\n { label: 'Completed', value: 'completed' }\n ];\n\n filteredMembers: TaskDrawerMember[] = [];\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['task']) {\n const newTask = changes['task'].currentValue;\n if (newTask) {\n this.formData = {\n id: newTask.id,\n title: newTask.title || '',\n description: newTask.description || '',\n status: newTask.status || 'pending',\n completed: newTask.completed || false,\n startDate: newTask.startDate ? this.parseDate(newTask.startDate) : null,\n endDate: newTask.endDate ? this.parseDate(newTask.endDate) : null,\n members: newTask.members || []\n };\n } else {\n this.resetForm();\n }\n }\n }\n\n parseDate(dateStr: string): Date | null {\n if (!dateStr) return null;\n const parts = dateStr.split('.');\n if (parts.length === 3) {\n return new Date(parseInt(parts[2]), parseInt(parts[1]) - 1, parseInt(parts[0]));\n }\n return null;\n }\n\n resetForm() {\n this.formData = {\n id: null,\n title: '',\n description: '',\n status: 'pending',\n completed: false,\n startDate: null,\n endDate: null,\n members: []\n };\n }\n\n filterMembers(event: AutoCompleteCompleteEvent) {\n const members = this.availableMembers();\n if (!event.query) {\n this.filteredMembers = members;\n return;\n }\n this.filteredMembers = members.filter(member =>\n member.name?.toLowerCase().includes(event.query.toLowerCase())\n );\n }\n\n formatDateForSave(date: Date | null): string | null {\n if (!date) return null;\n const d = new Date(date);\n return `${String(d.getDate()).padStart(2, '0')}.${String(d.getMonth() + 1).padStart(2, '0')}.${d.getFullYear()}`;\n }\n\n handleSave() {\n const taskData: TaskDrawerTask = {\n id: this.formData.id,\n title: this.formData.title,\n description: this.formData.description || null,\n status: this.formData.status,\n completed: this.formData.status === 'completed',\n startDate: this.formatDateForSave(this.formData.startDate),\n endDate: this.formatDateForSave(this.formData.endDate),\n members: this.formData.members\n };\n\n this.save.emit(taskData);\n this.handleCancel();\n }\n\n handleCancel() {\n this.resetForm();\n this.cancel.emit();\n this.visible.set(false);\n }\n\n onHide() {\n this.handleCancel();\n }\n}\n","/*\n * Public API Surface of @unopsitg/ux\n */\nexport * from './lib/theme';\nexport * from './lib/layout';\nexport * from './lib/components';\nexport * from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","brandPresetMap","i1","i4","i5","i6","i3","i7","i9","i8","i10"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA;;;;;;;AAOG;AAEI,MAAM,eAAe,GAAG;IAC3B,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;IAC1L,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;IACvL,GAAG,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;IACtL,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;IACzL,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;IACzL,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;IACxL,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;IACvL,SAAS,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;IAC5L,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;IACxL,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,E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"}
1
+ {"version":3,"file":"unopsitg-ux.mjs","sources":["../../../projects/unops-ux/src/lib/theme/brand-theme.ts","../../../projects/unops-ux/src/lib/layout/tokens.ts","../../../projects/unops-ux/src/lib/layout/layout.service.ts","../../../projects/unops-ux/src/lib/layout/footer.service.ts","../../../projects/unops-ux/src/lib/layout/components/app.breadcrumb.ts","../../../projects/unops-ux/src/lib/layout/components/app.configurator.ts","../../../projects/unops-ux/src/lib/layout/components/app.rightmenu.ts","../../../projects/unops-ux/src/lib/layout/components/app.search.ts","../../../projects/unops-ux/src/lib/components/footer-main/footer-main.ts","../../../projects/unops-ux/src/lib/layout/components/app.menuitem.ts","../../../projects/unops-ux/src/lib/layout/components/app.menu.ts","../../../projects/unops-ux/src/lib/layout/components/app.topbar.ts","../../../projects/unops-ux/src/lib/layout/components/app.sidebar.ts","../../../projects/unops-ux/src/lib/layout/components/app.layout.ts","../../../projects/unops-ux/src/lib/layout/components/app.footer.ts","../../../projects/unops-ux/src/lib/layout/components/app.authlayout.ts","../../../projects/unops-ux/src/lib/components/ai-card-bg/ai-card-bg.ts","../../../projects/unops-ux/src/lib/components/ai-insights-card/ai-insights-card.ts","../../../projects/unops-ux/src/lib/components/completion-steps/completion-steps.ts","../../../projects/unops-ux/src/lib/components/detail-layout/detail-layout.ts","../../../projects/unops-ux/src/lib/components/pill-tabs/pill-tabs.ts","../../../projects/unops-ux/src/lib/components/documents-card/documents-card.ts","../../../projects/unops-ux/src/lib/components/select/select.ts","../../../projects/unops-ux/src/lib/components/task-drawer/task-drawer.ts","../../../projects/unops-ux/src/public-api.ts","../../../projects/unops-ux/src/unopsitg-ux.ts"],"sourcesContent":["import { definePreset } from '@primeuix/themes';\nimport SoftBase from '@primeuix/themes/aura';\nimport CrispBase from '@primeuix/themes/lara';\nimport ContrastBase from '@primeuix/themes/nora';\n\n/**\n * Brand theme presets built on top of PrimeUIX base presets.\n *\n * Upstream mapping (for PrimeNG docs, changelogs, and debugging):\n * Soft <- @primeuix/themes/aura\n * Crisp <- @primeuix/themes/lara\n * Contrast <- @primeuix/themes/nora\n */\n\nexport const brandPrimitives = {\n deepsea: { 50: '#c3c7cb', 100: '#9ea5ac', 200: '#7a838d', 300: '#56626d', 400: '#31404e', 500: '#0d1e2f', 600: '#0b1a28', 700: '#091521', 800: '#07111a', 900: '#050c13', 950: '#03080c' },\n gray: { 50: '#f8fafc', 100: '#f1f5f9', 200: '#e2e8f0', 300: '#cbd5e1', 400: '#94a3b8', 500: '#64748b', 600: '#475569', 700: '#334155', 800: '#1e293b', 900: '#0f172a', 950: '#020617' },\n red: { 50: '#f6cac6', 100: '#f0a9a4', 200: '#eb8982', 300: '#e56960', 400: '#e0493e', 500: '#da291c', 600: '#b92318', 700: '#991d14', 800: '#78170f', 900: '#57100b', 950: '#370a07' },\n orange: { 50: '#f9d6c3', 100: '#f6be9f', 200: '#f2a57a', 300: '#ef8d56', 400: '#eb7432', 500: '#e85c0e', 600: '#c54e0c', 700: '#a2400a', 800: '#803308', 900: '#5d2506', 950: '#3a1704' },\n yellow: { 50: '#fff0c5', 100: '#ffe7a1', 200: '#ffdd7e', 300: '#ffd45b', 400: '#ffcb38', 500: '#ffc215', 600: '#d9a512', 700: '#b3880f', 800: '#8c6b0c', 900: '#664e08', 950: '#403105' },\n lemon: { 50: '#fdfad0', 100: '#fcf7b4', 200: '#fbf398', 300: '#faf07c', 400: '#f9ed60', 500: '#f8ea44', 600: '#d3c73a', 700: '#aea430', 800: '#888125', 900: '#635e1b', 950: '#3e3b11' },\n lime: { 50: '#f0f5bf', 100: '#e7ef99', 200: '#dfe873', 300: '#d6e24d', 400: '#cddc26', 500: '#c4d600', 600: '#a7b600', 700: '#899600', 800: '#6c7600', 900: '#4e5600', 950: '#313600' },\n babygreen: { 50: '#e5f2cf', 100: '#d5e9b1', 200: '#c5e194', 300: '#b6d977', 400: '#a6d15a', 500: '#96c93d', 600: '#80ab34', 700: '#698d2b', 800: '#536f22', 900: '#3c5018', 950: '#26320f' },\n green: { 50: '#d2e7cd', 100: '#b7d9af', 200: '#9dca92', 300: '#82bc74', 400: '#67ad56', 500: '#4c9f38', 600: '#418730', 700: '#356f27', 800: '#2a571f', 900: '#1e4016', 950: '#13280e' },\n olive: { 50: '#d1e0d5', 100: '#b5cdbc', 200: '#99baa3', 300: '#7da889', 400: '#619570', 500: '#458257', 600: '#3b6f4a', 700: '#305b3d', 800: '#264830', 900: '#1c3423', 950: '#112116' },\n teal: { 50: '#bfeae5', 100: '#99ddd5', 200: '#73d0c6', 300: '#4dc3b6', 400: '#26b6a7', 500: '#00a997', 600: '#009080', 700: '#00766a', 800: '#005d53', 900: '#00443c', 950: '#002a26' },\n ocean: { 50: '#d3f0f7', 100: '#b8e7f3', 200: '#9edeee', 300: '#83d5e9', 400: '#69cce5', 500: '#4ec3e0', 600: '#42a6be', 700: '#37899d', 800: '#2b6b7b', 900: '#1f4e5a', 950: '#143138' },\n blue: { 50: '#DEEFFF', 100: '#C9E8FF', 150: '#99D3ED', 200: '#73c3e6', 300: '#4db3df', 400: '#26a2d8', 500: '#0092d1', 600: '#007cb2', 700: '#006692', 800: '#005073', 900: '#003a54', 950: '#002534' },\n darkblue: { 50: '#D0EEFF', 100: '#B7E2F9', 200: '#73abc7', 300: '#4d94b8', 400: '#267da9', 500: '#00669a', 600: '#005783', 700: '#00476c', 800: '#003855', 900: '#00293e', 950: '#001a27' },\n midnight: { 50: '#bfd2dd', 100: '#99b6c8', 200: '#739bb4', 300: '#4d809f', 400: '#26648b', 500: '#004976', 600: '#003e64', 700: '#003353', 800: '#002841', 850: '#001E31', 900: '#001d2f', 950: '#00121e' },\n cherry: { 50: '#e6c7d9', 100: '#d6a5c2', 200: '#c783ab', 300: '#b86294', 400: '#a8407d', 500: '#991e66', 600: '#821a57', 700: '#6b1547', 800: '#541138', 900: '#3d0c29', 950: '#26081a' },\n ai: { 50: '#f0edff', 100: '#e4deff', 200: '#cdc2ff', 300: '#b0a0ff', 400: '#9378ff', 500: '#7c5cfc', 600: '#6a44f0', 700: '#5835d4', 800: '#482dac', 900: '#3b278a', 950: '#24185e' }\n} as const;\n\nconst brandOverrides = {\n primitive: {\n ...brandPrimitives,\n slate: brandPrimitives.gray,\n zinc: brandPrimitives.deepsea,\n neutral: brandPrimitives.gray,\n stone: brandPrimitives.gray,\n emerald: brandPrimitives.green,\n amber: brandPrimitives.yellow,\n cyan: brandPrimitives.ocean,\n sky: brandPrimitives.blue,\n indigo: brandPrimitives.darkblue,\n violet: brandPrimitives.midnight,\n purple: brandPrimitives.cherry,\n fuchsia: brandPrimitives.cherry,\n pink: brandPrimitives.cherry,\n rose: brandPrimitives.red\n },\n semantic: {\n fontFamily: '\"Noto Sans\", sans-serif',\n primary: {\n 50: '{darkblue.50}',\n 100: '{darkblue.100}',\n 200: '{darkblue.200}',\n 300: '{darkblue.300}',\n 400: '{darkblue.400}',\n 500: '{darkblue.500}',\n 600: '{darkblue.600}',\n 700: '{darkblue.700}',\n 800: '{darkblue.800}',\n 900: '{darkblue.900}',\n 950: '{darkblue.950}'\n },\n colorScheme: {\n light: {\n surface: {\n 0: '#ffffff',\n 50: '{gray.50}',\n 100: '{gray.100}',\n 200: '{gray.200}',\n 300: '{gray.300}',\n 400: '{gray.400}',\n 500: '{gray.500}',\n 600: '{gray.600}',\n 700: '{gray.700}',\n 800: '{gray.800}',\n 900: '{gray.900}',\n 950: '{gray.950}'\n }\n },\n dark: {\n surface: {\n 0: '#ffffff',\n 50: '{darkblue.50}',\n 100: '{darkblue.100}',\n 200: '{darkblue.200}',\n 300: '{darkblue.300}',\n 400: '{blue.400}',\n 500: '{blue.500}',\n 600: '{darkblue.600}',\n 700: '{darkblue.700}',\n 800: '{darkblue.800}',\n 900: '{darkblue.900}',\n 950: '{darkblue.950}'\n }\n }\n }\n },\n components: {\n accordion: {\n root: { transitionDuration: '{transition.duration}' },\n panel: { borderWidth: '0' },\n header: { background: 'transparent', padding: '0 0 0 0' },\n content: { background: 'transparent' }\n },\n button: {\n colorScheme: {\n light: {\n root: {\n primary: {\n background: '{primary.600}',\n borderColor: '{primary.600}'\n }\n }\n }\n }\n },\n datatable: {\n colorScheme: {\n light: {\n row: {\n hoverBackground: '{surface.100}',\n hoverColor: '{surface.950}'\n }\n },\n dark: {\n row: {\n hoverBackground: '{surface.900}',\n hoverColor: '{surface.0}'\n }\n }\n }\n },\n // Tab active/hover backgrounds are set in _tabs.scss via sidebar\n // `--d-menuitem-*` tokens (not expressible in the preset). Only structural\n // properties that _tabs.scss does NOT override belong here.\n tabs: {\n tablist: {\n background: 'transparent',\n borderWidth: '0 0 1px 0'\n },\n tab: {\n background: 'transparent',\n borderColor: 'transparent',\n activeBorderColor: 'transparent',\n borderWidth: '0',\n padding: '0.5rem 1rem',\n margin: '0 0 0.5rem 0'\n },\n tabpanel: {\n background: 'transparent',\n padding: '0'\n }\n },\n dataview: {\n header: {\n background: 'transparent',\n borderWidth: '0',\n padding: '0'\n },\n content: {\n background: 'transparent',\n padding: '0'\n }\n },\n paginator: {\n root: {\n background: 'transparent'\n }\n },\n fileupload: {\n root: {\n background: 'transparent'\n }\n },\n\n panel: {\n root: {\n background: 'transparent',\n borderColor: 'transparent',\n borderRadius: '0'\n },\n header: {\n background: 'transparent',\n padding: '0',\n borderWidth: '0'\n },\n toggleableHeader: {\n padding: '0'\n },\n title: {\n fontWeight: '700'\n },\n content: {\n padding: '0'\n }\n },\n\n card: {\n root: {\n shadow: 'none',\n borderRadius: '{border.radius.xl}'\n },\n body: {\n padding: '1.25rem',\n gap: '1rem'\n }\n },\n\n avatar: {\n root: {\n borderRadius: '9999px',\n fontSize: '0.875rem'\n }\n },\n\n drawer: {\n content: { padding: '1.25rem' }\n },\n inputtext: {\n root: {\n borderRadius: '{border.radius.xl}',\n paddingY: '0.5rem'\n }\n },\n divider: {\n horizontal: {\n margin: '0',\n padding: '0',\n content: { padding: '0 0.5rem' }\n },\n vertical: {\n margin: '0',\n padding: '0',\n content: { padding: '0.5rem 0' }\n }\n },\n\n tag: {\n root: {\n padding: '0.25rem 0.5rem',\n fontWeight: '500'\n },\n\n colorScheme: {\n light: {\n secondary: { color: '{surface.800}' },\n success: { color: '{green.800}' },\n info: { color: '{blue.800}' },\n warn: { color: '{orange.800}' },\n danger: { color: '{red.800}' }\n },\n dark: {\n secondary: { color: '{surface.100}' },\n success: { color: '{green.100}' },\n info: { color: '{blue.100}' },\n warn: { color: '{orange.100}' },\n danger: { color: '{red.100}' }\n }\n }\n },\n\n toolbar: {\n root: {\n background: 'transparent',\n borderColor: 'transparent',\n borderRadius: '0',\n padding: '0',\n gap: '0.5rem'\n }\n },\n\n progressbar: {\n root: {\n borderRadius: '{border.radius.lg}',\n height: '0.75rem'\n }\n },\n\n message: {\n root: {\n borderRadius: '{border.radius.lg}',\n borderWidth: '0 0 0 4px'\n },\n content: {\n padding: '0.75rem 1rem',\n gap: '0.5rem'\n },\n text: {\n fontSize: '0.875rem',\n fontWeight: '500'\n }\n }\n }\n};\n\nexport const BrandSoft = definePreset(SoftBase, brandOverrides);\nexport const BrandCrisp = definePreset(CrispBase, brandOverrides);\nexport const BrandContrast = definePreset(ContrastBase, brandOverrides);\n\nexport const brandPresets = {\n Soft: BrandSoft,\n Crisp: BrandCrisp,\n Contrast: BrandContrast\n} as const;\n","import { InjectionToken, Signal } from '@angular/core';\nimport type { IsActiveMatchOptions, QueryParamsHandling } from '@angular/router';\n\n/**\n * Sidebar / compact menu item shape (recursive). Matches Sakai-style menu model.\n */\nexport interface MenuItem {\n label?: string;\n icon?: string;\n routerLink?: string[];\n url?: string;\n target?: string;\n separator?: boolean;\n path?: string;\n visible?: boolean;\n disabled?: boolean;\n preventAutoActivate?: boolean;\n command?: (event?: { originalEvent?: Event; item?: MenuItem }) => void;\n items?: MenuItem[];\n class?: string;\n badgeClass?: string;\n fragment?: string;\n queryParamsHandling?: QueryParamsHandling;\n preserveFragment?: boolean;\n skipLocationChange?: boolean;\n replaceUrl?: boolean;\n state?: Record<string, unknown>;\n queryParams?: Record<string, unknown>;\n routerLinkActiveOptions?: IsActiveMatchOptions;\n}\n\nexport const MENU_MODEL = new InjectionToken<MenuItem[]>('UNOPS_UX_MENU_MODEL', {\n factory: () => {\n throw new Error(\n 'MENU_MODEL is not provided. Add { provide: MENU_MODEL, useFactory: ... } or useValue to app.config.ts providers.'\n );\n }\n});\n\nexport interface SidebarLogoConfig {\n expanded: string;\n compact: string;\n alt: string;\n}\n\nexport const SIDEBAR_LOGO = new InjectionToken<SidebarLogoConfig>('UNOPS_UX_SIDEBAR_LOGO', {\n factory: () => ({\n expanded: 'assets/opp/AppLogo/AppLogo-onDark_H.svg',\n compact: 'assets/opp/AppLogo/AppLogo-onDark_compact.svg',\n alt: 'UNOPS'\n })\n});\n\nexport interface TopbarMobileLogoConfig {\n dark: string;\n light: string;\n alt: string;\n}\n\nexport const TOPBAR_MOBILE_LOGO = new InjectionToken<TopbarMobileLogoConfig>('UNOPS_UX_TOPBAR_MOBILE_LOGO', {\n factory: () => ({\n dark: 'assets/opp/AppLogo/AppLogo-onDark_H.svg',\n light: 'assets/opp/AppLogo/AppLogo-onLight_H.svg',\n alt: 'UNOPS'\n })\n});\n\nexport interface TopbarLanguageItem {\n code: string;\n label: string;\n flag: string;\n}\n\nexport interface TopbarLanguageConfig {\n languages: TopbarLanguageItem[];\n defaultLanguage?: string;\n onLanguageChange?: (code: string) => void;\n}\n\nexport const TOPBAR_LANGUAGE_CONFIG = new InjectionToken<TopbarLanguageConfig>('UNOPS_UX_TOPBAR_LANGUAGE_CONFIG');\n\nexport interface TopbarProfileMenuItem {\n id: string;\n label: string;\n icon: string;\n separator?: boolean;\n command: () => void;\n}\n\nexport interface TopbarProfileMenuConfig {\n items: TopbarProfileMenuItem[];\n}\n\nexport const TOPBAR_PROFILE_MENU_CONFIG = new InjectionToken<TopbarProfileMenuConfig>('UNOPS_UX_TOPBAR_PROFILE_MENU_CONFIG');\n\nexport interface TopbarNotificationItem {\n id: number;\n message: string;\n category: string;\n time: string;\n isRead: boolean;\n entity?: string;\n entityId?: number;\n icon?: string;\n}\n\nexport interface TopbarNotificationTab {\n id: string;\n label: string;\n badge?: string;\n}\n\nexport interface TopbarNotificationConfig {\n tabs: Signal<TopbarNotificationTab[]>;\n items: Signal<TopbarNotificationItem[]>;\n selectedTab: Signal<string>;\n unreadCount: Signal<number>;\n onTabChange: (tabId: string) => void;\n onItemClick: (item: TopbarNotificationItem) => void;\n onMarkAsRead: (item: TopbarNotificationItem) => void;\n onMarkAllAsRead: () => void;\n onPanelOpen?: () => void;\n}\n\nexport const TOPBAR_NOTIFICATION_CONFIG = new InjectionToken<TopbarNotificationConfig>('UNOPS_UX_TOPBAR_NOTIFICATION_CONFIG');\n","import { computed, effect, inject, Injectable, signal } from '@angular/core';\nimport { Router } from '@angular/router';\n\nexport interface LayoutConfig {\n preset: string;\n primary: string;\n surface: string | undefined | null;\n darkTheme: boolean;\n menuMode: string;\n menuTheme: string;\n cardStyle: string;\n}\n\ninterface LayoutState {\n staticMenuInactive: boolean;\n overlayMenuActive: boolean;\n rightMenuVisible: boolean;\n configSidebarVisible: boolean;\n mobileMenuActive: boolean;\n searchBarActive: boolean;\n sidebarExpanded: boolean;\n sidebarPinned: boolean;\n menuHoverActive: boolean;\n activePath: string | null;\n anchored: boolean;\n}\n\ninterface MenuChangeEvent {\n key: string;\n routeEvent?: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LayoutService {\n layoutConfig = signal<LayoutConfig>({\n preset: 'Soft',\n primary: 'blue',\n surface: null,\n darkTheme: true,\n menuMode: 'static',\n menuTheme: 'primary',\n cardStyle: 'transparent'\n });\n\n layoutState = signal<LayoutState>({\n staticMenuInactive: false,\n overlayMenuActive: false,\n rightMenuVisible: false,\n configSidebarVisible: false,\n mobileMenuActive: false,\n searchBarActive: false,\n sidebarExpanded: false,\n sidebarPinned: true,\n menuHoverActive: false,\n activePath: null,\n anchored: false\n });\n\n router = inject(Router);\n\n currentUrl = signal<string>('');\n\n isDarkTheme = computed(() => this.layoutConfig().darkTheme);\n\n isSlim = computed(() => this.layoutConfig().menuMode === 'slim');\n\n isHorizontal = computed(() => this.layoutConfig().menuMode === 'horizontal');\n\n isOverlay = computed(() => this.layoutConfig().menuMode === 'overlay');\n\n isCompact = computed(() => this.layoutConfig().menuMode === 'compact');\n\n isStatic = computed(() => this.layoutConfig().menuMode === 'static');\n\n isReveal = computed(() => this.layoutConfig().menuMode === 'reveal');\n\n isDrawer = computed(() => this.layoutConfig().menuMode === 'drawer');\n\n isSidebarPinned = computed(() => this.layoutState().sidebarPinned);\n\n isRail = computed(() => !this.layoutState().sidebarPinned && this.isStatic());\n\n hasOverlaySubmenu = computed(() => this.isSlim() || this.isCompact() || this.isHorizontal());\n\n hasOpenOverlay = computed(() => this.layoutState().overlayMenuActive || this.hasOpenOverlaySubmenu());\n\n hasOpenOverlaySubmenu = computed(() => {\n return this.hasOverlaySubmenu() && !!this.layoutState().activePath;\n });\n\n isSidebarStateChanged = computed(() => {\n const layoutConfig = this.layoutConfig();\n return layoutConfig.menuMode === 'horizontal' || layoutConfig.menuMode === 'slim' || layoutConfig.menuMode === 'slim-plus';\n });\n\n private initialized = false;\n\n private previousMenuMode: string | undefined = undefined;\n\n constructor() {\n effect(() => {\n const config = this.layoutConfig();\n\n if (!this.initialized || !config) {\n this.initialized = true;\n return;\n }\n\n this.handleDarkModeTransition(config);\n });\n\n effect(() => {\n this.updateMenuState();\n });\n }\n\n private updateMenuState() {\n const menuMode = this.layoutConfig().menuMode;\n if (this.previousMenuMode === undefined) {\n this.previousMenuMode = menuMode;\n return;\n }\n\n if (this.previousMenuMode === menuMode) {\n return;\n }\n\n this.previousMenuMode = menuMode;\n\n const isOverlaySubmenu = menuMode === 'slim' || menuMode === 'slim-plus' || menuMode === 'horizontal' || menuMode === 'compact';\n\n this.layoutState.update((prev) => ({\n ...prev,\n staticMenuInactive: false,\n overlayMenuActive: false,\n mobileMenuActive: false,\n sidebarExpanded: false,\n menuHoverActive: false,\n anchored: false,\n activePath: this.isDesktop() ? (isOverlaySubmenu ? null : this.router.url) : prev.activePath\n }));\n }\n\n private handleDarkModeTransition(config: LayoutConfig): void {\n const supportsViewTransition = 'startViewTransition' in document;\n\n if (supportsViewTransition) {\n this.startViewTransition(config);\n } else {\n this.toggleDarkMode(config);\n }\n }\n\n private startViewTransition(config: LayoutConfig): void {\n const transition = (document as any).startViewTransition(() => {\n this.toggleDarkMode(config);\n });\n }\n\n toggleDarkMode(config?: LayoutConfig): void {\n const _config = config || this.layoutConfig();\n if (_config.darkTheme) {\n document.documentElement.classList.add('app-dark');\n } else {\n document.documentElement.classList.remove('app-dark');\n }\n }\n\n toggleMenu() {\n if (this.isDesktop()) {\n this.toggleSidebarPin();\n } else {\n this.layoutState.update((prev) => ({ ...prev, mobileMenuActive: !prev.mobileMenuActive }));\n }\n }\n\n toggleSidebarPin() {\n this.layoutState.update((prev) => ({\n ...prev,\n sidebarPinned: !prev.sidebarPinned,\n sidebarExpanded: false\n }));\n }\n\n changeMenuMode(mode: string) {\n this.layoutConfig.update((prev) => ({ ...prev, menuMode: mode }));\n this.layoutState.update((prev) => ({ ...prev, staticMenuInactive: false, overlayMenuActive: false, mobileMenuActive: false, sidebarExpanded: false, sidebarPinned: true, menuHoverActive: false, anchored: false }));\n\n if (this.isDesktop()) {\n this.layoutState.update((prev) => ({ ...prev, activePath: this.hasOverlaySubmenu() ? null : this.router.url }));\n }\n }\n\n toggleRightMenu() {\n this.layoutState.update((prev) => ({\n ...prev,\n rightMenuVisible: !prev.rightMenuVisible\n }));\n }\n\n toggleConfigSidebar() {\n this.layoutState.update((prev) => ({\n ...prev,\n configSidebarVisible: !prev.configSidebarVisible\n }));\n }\n\n toggleSearchBar() {\n this.layoutState.update((prev) => ({\n ...prev,\n searchBarActive: !prev.searchBarActive\n }));\n }\n\n isDesktop() {\n return window.innerWidth > 991;\n }\n}\n","import { Injectable, signal, TemplateRef } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class FooterService {\n readonly content = signal<TemplateRef<unknown> | null>(null);\n}\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ActivatedRouteSnapshot, NavigationEnd, Router, RouterModule } from '@angular/router';\n\nimport { BehaviorSubject, filter } from 'rxjs';\n\ninterface Breadcrumb {\n label: string;\n url?: string;\n}\n\n@Component({\n selector: '[app-breadcrumb]',\n imports: [CommonModule, RouterModule],\n template: `<nav class=\"layout-breadcrumb\" aria-label=\"Breadcrumb\">\n <ol>\n @for (item of breadcrumbs$ | async; track item.url; let last = $last) {\n <li class=\"text-sm font-medium text-surface-700 dark:text-surface-100\">\n @if (!last && item.url) {\n <a [routerLink]=\"item.url\" class=\"text-surface-700 dark:text-surface-100 cursor-pointer\">{{ item.label }}</a>\n } @else {\n {{ item.label }}\n }\n </li>\n @if (!last) {\n <li class=\"text-sm font-medium text-surface-400 dark:text-surface-400\">/</li>\n }\n }\n </ol>\n </nav> `\n})\nexport class AppBreadcrumb {\n private readonly _breadcrumbs$ = new BehaviorSubject<Breadcrumb[]>([]);\n\n readonly breadcrumbs$ = this._breadcrumbs$.asObservable();\n\n constructor(private router: Router) {\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((event) => {\n const root = this.router.routerState.snapshot.root;\n const breadcrumbs: Breadcrumb[] = [];\n this.addBreadcrumb(root, [], breadcrumbs);\n\n this._breadcrumbs$.next(breadcrumbs);\n });\n }\n\n private addBreadcrumb(route: ActivatedRouteSnapshot, parentUrl: string[], breadcrumbs: Breadcrumb[]) {\n const routeUrl = parentUrl.concat(route.url.map((url) => url.path));\n const breadcrumb = route.data['breadcrumb'];\n const parentBreadcrumb = route.parent && route.parent.data ? route.parent.data['breadcrumb'] : null;\n\n if (breadcrumb && breadcrumb !== parentBreadcrumb) {\n breadcrumbs.push({\n label: route.data['breadcrumb'],\n url: '/' + routeUrl.join('/')\n });\n }\n\n if (route.firstChild) {\n this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs);\n }\n }\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, Component, computed, inject, Input, model, OnInit, PLATFORM_ID } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { $t, updatePreset, updateSurfacePalette } from '@primeuix/themes';\nimport { brandPrimitives, brandPresets as brandPresetMap } from '../../theme/brand-theme';\nimport { PrimeNG } from 'primeng/config';\nimport { DrawerModule } from 'primeng/drawer';\nimport { RadioButtonModule } from 'primeng/radiobutton';\nimport { SelectButtonModule } from 'primeng/selectbutton';\nimport { LayoutService } from '../layout.service';\n\ndeclare type KeyOfType<T> = keyof T extends infer U ? U : never;\n\ndeclare type SurfacesType = {\n name?: string;\n palette?: {\n 0?: string;\n 50?: string;\n 100?: string;\n 200?: string;\n 300?: string;\n 400?: string;\n 500?: string;\n 600?: string;\n 700?: string;\n 800?: string;\n 900?: string;\n 950?: string;\n };\n};\n\n@Component({\n selector: 'app-configurator',\n imports: [CommonModule, FormsModule, SelectButtonModule, DrawerModule, RadioButtonModule],\n template: `\n <p-drawer [(visible)]=\"configSidebarVisible\" position=\"right\" [transitionOptions]=\"'.3s cubic-bezier(0, 0, 0.2, 1)'\" styleClass=\"layout-config-sidebar w-80\" header=\"Settings\" appendTo=\"body\">\n <div class=\"flex flex-col gap-6\">\n <div>\n <span class=\"text-lg text-muted-color font-semibold\">Primary</span>\n <div class=\"pt-2 flex gap-2 flex-wrap\">\n @for (primaryColor of primaryColors(); track primaryColor.name) {\n <button\n type=\"button\"\n [title]=\"primaryColor.name\"\n (click)=\"updateColors($event, 'primary', primaryColor)\"\n class=\"w-6 h-6 cursor-pointer hover:shadow-lg rounded duration-150 flex items-center justify-center\"\n [style]=\"{\n 'background-color': primaryColor?.name === 'noir' ? 'var(--text-color)' : primaryColor?.palette?.['500']\n }\"\n >\n <i *ngIf=\"primaryColor.name === selectedPrimaryColor()\" class=\"pi pi-check text-white\"></i>\n </button>\n }\n </div>\n </div>\n\n <div>\n <span class=\"text-lg text-muted-color font-semibold\">Surface</span>\n <div class=\"pt-2 flex gap-2 flex-wrap\">\n @for (surface of surfaces; track surface.name) {\n <button\n type=\"button\"\n [title]=\"surface.name\"\n (click)=\"updateColors($event, 'surface', surface)\"\n class=\"w-6 h-6 cursor-pointer hover:shadow-lg rounded duration-150 flex items-center justify-center\"\n [style]=\"{\n 'background-color': surface?.palette?.['500']\n }\"\n >\n <i *ngIf=\"selectedSurfaceColor() ? selectedSurfaceColor() === surface.name : darkTheme() ? surface.name === 'darkblue' : surface.name === 'gray'\" class=\"pi pi-check text-white\"></i>\n </button>\n }\n </div>\n </div>\n <div>\n <div class=\"flex flex-col gap-2\">\n <span class=\"text-lg text-muted-color font-semibold\">Presets</span>\n <p-selectbutton [options]=\"presetKeys\" [ngModel]=\"selectedPreset()\" (ngModelChange)=\"onPresetChange($event)\" [allowEmpty]=\"false\"></p-selectbutton>\n </div>\n </div>\n <div>\n <div class=\"flex flex-col gap-2\">\n <span class=\"text-lg text-muted-color font-semibold\">Color Scheme</span>\n <p-selectbutton [ngModel]=\"darkTheme()\" (ngModelChange)=\"toggleDarkMode()\" [options]=\"themeOptions\" optionLabel=\"name\" optionValue=\"value\" [allowEmpty]=\"false\"></p-selectbutton>\n </div>\n </div>\n <div *ngIf=\"!simple && location === 'app'\" class=\"flex flex-col gap-2\">\n <span class=\"text-lg text-muted-color font-semibold\">Card Style</span>\n <p-selectbutton [ngModel]=\"cardStyle()\" (ngModelChange)=\"onCardStyleChange($event)\" [options]=\"cardStyleOptions\" optionLabel=\"name\" optionValue=\"value\" [allowEmpty]=\"false\" />\n </div>\n\n <div *ngIf=\"!simple && location === 'app'\" class=\"flex flex-col gap-2\">\n <span class=\"text-lg text-muted-color font-semibold\">Menu Theme</span>\n <p-selectbutton [ngModel]=\"menuTheme()\" (ngModelChange)=\"onMenuThemeChange($event)\" [options]=\"menuThemeOptions\" optionLabel=\"name\" optionValue=\"value\" [allowEmpty]=\"false\" />\n </div>\n\n <div *ngIf=\"!simple && location === 'app'\">\n <div class=\"flex flex-col gap-2\">\n <span class=\"text-lg text-muted-color font-semibold\">Menu Type</span>\n <div class=\"flex flex-wrap flex-col gap-3\">\n <div class=\"flex\">\n <div class=\"flex items-center gap-2 w-6/12\">\n <p-radiobutton name=\"menuMode\" value=\"static\" [ngModel]=\"menuMode()\" (ngModelChange)=\"setMenuMode('static')\" inputId=\"static\"></p-radiobutton>\n <label for=\"static\">Static</label>\n </div>\n <div class=\"flex items-center gap-2 w-6/12\">\n <p-radiobutton name=\"menuMode\" value=\"rail\" [ngModel]=\"menuMode()\" (ngModelChange)=\"setMenuMode('rail')\" inputId=\"rail\"></p-radiobutton>\n <label for=\"rail\">Rail</label>\n </div>\n </div>\n <div class=\"flex\">\n <div class=\"flex items-center gap-2 w-6/12\">\n <p-radiobutton name=\"menuMode\" value=\"slim\" [ngModel]=\"menuMode()\" (ngModelChange)=\"setMenuMode('slim')\" inputId=\"slim\"></p-radiobutton>\n <label for=\"slim\">Slim</label>\n </div>\n <div class=\"flex items-center gap-2 w-6/12\">\n <p-radiobutton name=\"menuMode\" value=\"compact\" [ngModel]=\"menuMode()\" (ngModelChange)=\"setMenuMode('compact')\" inputId=\"compact\"></p-radiobutton>\n <label for=\"compact\">Compact</label>\n </div>\n </div>\n <div class=\"flex\">\n <div class=\"flex items-center gap-2 w-6/12\">\n <p-radiobutton name=\"menuMode\" value=\"horizontal\" [ngModel]=\"menuMode()\" (ngModelChange)=\"setMenuMode('horizontal')\" inputId=\"horizontal\"></p-radiobutton>\n <label for=\"horizontal\">Horizontal</label>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </p-drawer>\n `\n})\nexport class AppConfigurator implements OnInit {\n @Input({ transform: booleanAttribute }) simple: boolean = false;\n\n @Input() location: string = 'app';\n\n config: PrimeNG = inject(PrimeNG);\n\n layoutService: LayoutService = inject(LayoutService);\n\n platformId = inject(PLATFORM_ID);\n\n presetKeys = Object.keys(brandPresetMap) as (keyof typeof brandPresetMap)[];\n\n themeOptions = [\n { name: 'Light', value: false },\n { name: 'Dark', value: true }\n ];\n\n menuThemeOptions: { name: string; value: string }[] = [];\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.onPresetChange(this.layoutService.layoutConfig().preset);\n }\n this.updateMenuThemeOptions();\n }\n\n updateMenuThemeOptions() {\n if (this.darkTheme()) {\n this.menuThemeOptions = [\n { name: 'Dark', value: 'dark' },\n { name: 'Primary', value: 'primary' }\n ];\n } else {\n this.menuThemeOptions = [\n { name: 'Light', value: 'light' },\n { name: 'Dark', value: 'dark' },\n { name: 'Primary', value: 'primary' }\n ];\n }\n }\n\n surfaces: SurfacesType[] = ['gray', 'darkblue'].map(name => ({\n name,\n palette: { 0: '#ffffff', ...brandPrimitives[name as keyof typeof brandPrimitives] }\n }));\n\n selectedPrimaryColor = computed(() => {\n return this.layoutService.layoutConfig().primary;\n });\n\n selectedSurfaceColor = computed(() => this.layoutService.layoutConfig().surface);\n\n selectedPreset = computed(() => this.layoutService.layoutConfig().preset);\n\n menuMode = computed(() => {\n const mode = this.layoutService.layoutConfig().menuMode;\n const pinned = this.layoutService.layoutState().sidebarPinned;\n return mode === 'static' && !pinned ? 'rail' : mode;\n });\n\n cardStyle = model(this.layoutService.layoutConfig().cardStyle);\n\n get configSidebarVisible(): boolean {\n return this.layoutService.layoutState().configSidebarVisible;\n }\n\n set configSidebarVisible(val: boolean) {\n this.layoutService.layoutState.update((prev) => ({ ...prev, configSidebarVisible: val }));\n }\n\n darkTheme = computed(() => this.layoutService.layoutConfig().darkTheme);\n\n selectedSurface = computed(() => this.layoutService.layoutConfig().surface);\n\n cardStyleOptions = [\n { name: 'Transparent', value: 'transparent' },\n { name: 'Filled', value: 'filled' }\n ];\n\n primaryColors = computed<SurfacesType[]>(() => {\n const presetPalette = brandPresetMap[this.layoutService.layoutConfig().preset as KeyOfType<typeof brandPresetMap>].primitive;\n const colors = ['red', 'orange', 'yellow', 'lemon', 'lime', 'babygreen', 'green', 'olive', 'teal', 'ocean', 'blue', 'darkblue', 'midnight', 'cherry'];\n const palettes: SurfacesType[] = [{ name: 'noir', palette: {} }];\n\n colors.forEach((color) => {\n palettes.push({\n name: color,\n palette: presetPalette?.[color as KeyOfType<typeof presetPalette>] as SurfacesType['palette']\n });\n });\n\n return palettes;\n });\n\n menuTheme = computed(() => this.layoutService.layoutConfig().menuTheme);\n\n getPresetExt() {\n const color: SurfacesType = this.primaryColors().find((c) => c.name === this.selectedPrimaryColor()) || {};\n\n if (color.name === 'noir') {\n return {\n semantic: {\n primary: {\n 50: '{surface.50}',\n 100: '{surface.100}',\n 200: '{surface.200}',\n 300: '{surface.300}',\n 400: '{surface.400}',\n 500: '{surface.500}',\n 600: '{surface.600}',\n 700: '{surface.700}',\n 800: '{surface.800}',\n 900: '{surface.900}',\n 950: '{surface.950}'\n },\n colorScheme: {\n light: {\n primary: {\n color: '{primary.950}',\n contrastColor: '#ffffff',\n hoverColor: '{primary.800}',\n activeColor: '{primary.700}'\n },\n highlight: {\n background: '{primary.950}',\n focusBackground: '{primary.700}',\n color: '#ffffff',\n focusColor: '#ffffff'\n }\n },\n dark: {\n primary: {\n color: '{primary.50}',\n contrastColor: '{primary.950}',\n hoverColor: '{primary.200}',\n activeColor: '{primary.300}'\n },\n highlight: {\n background: '{primary.50}',\n focusBackground: '{primary.300}',\n color: '{primary.950}',\n focusColor: '{primary.950}'\n }\n }\n }\n }\n };\n } else {\n return {\n semantic: {\n primary: color.palette,\n colorScheme: {\n light: {\n primary: {\n color: '{primary.500}',\n contrastColor: '#ffffff',\n hoverColor: '{primary.600}',\n activeColor: '{primary.700}'\n },\n highlight: {\n background: '{primary.50}',\n focusBackground: '{primary.100}',\n color: '{primary.700}',\n focusColor: '{primary.800}'\n }\n },\n dark: {\n primary: {\n color: '{primary.400}',\n contrastColor: '{surface.900}',\n hoverColor: '{primary.300}',\n activeColor: '{primary.200}'\n },\n highlight: {\n background: 'color-mix(in srgb, {primary.400}, transparent 84%)',\n focusBackground: 'color-mix(in srgb, {primary.400}, transparent 76%)',\n color: 'rgba(255,255,255,.87)',\n focusColor: 'rgba(255,255,255,.87)'\n }\n }\n }\n }\n };\n }\n }\n\n updateColors(event: any, type: string, color: any) {\n if (type === 'primary') {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n primary: color.name\n }));\n } else if (type === 'surface') {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n surface: color.name\n }));\n }\n this.applyTheme(type, color);\n\n event.stopPropagation();\n }\n\n applyTheme(type: string, color: any) {\n if (type === 'primary') {\n updatePreset(this.getPresetExt());\n } else if (type === 'surface') {\n updateSurfacePalette(color.palette);\n }\n }\n\n onPresetChange(event: any) {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n preset: event\n }));\n const preset = brandPresetMap[event as KeyOfType<typeof brandPresetMap>];\n const surfacePalette = this.surfaces.find((s) => s.name === this.selectedSurfaceColor())?.palette;\n $t().preset(preset).preset(this.getPresetExt()).surfacePalette(surfacePalette).use({ useDefaultOptions: true });\n }\n\n onCardStyleChange(value: string) {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n cardStyle: value\n }));\n }\n\n onMenuThemeChange(value: string) {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n menuTheme: value\n }));\n }\n\n setMenuMode(mode: string) {\n const isRail = mode === 'rail';\n const actualMode = isRail ? 'static' : mode;\n\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n menuMode: actualMode\n }));\n\n this.layoutService.layoutState.update((state) => ({\n ...state,\n staticMenuInactive: false,\n overlayMenuActive: false,\n mobileMenuActive: false,\n sidebarExpanded: false,\n sidebarPinned: !isRail,\n menuHoverActive: false,\n anchored: false\n }));\n }\n\n toggleDarkMode() {\n this.executeDarkModeToggle();\n }\n\n executeDarkModeToggle() {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n darkTheme: !state.darkTheme\n }));\n if (this.darkTheme()) {\n this.setMenuTheme('dark');\n }\n this.updateMenuThemeOptions();\n }\n\n toggleConfigSidebar() {\n this.layoutService.layoutState.update((val) => ({ ...val, configSidebarVisible: !val.configSidebarVisible }));\n }\n\n setMenuTheme(theme: string) {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n menuTheme: theme\n }));\n }\n}\n","import { LayoutService } from '../layout.service';\nimport { Component, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { DividerModule } from 'primeng/divider';\nimport { DrawerModule } from 'primeng/drawer';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { SelectModule } from 'primeng/select';\n\n@Component({\n selector: '[app-rightmenu]',\n imports: [DrawerModule, DividerModule, SelectModule, InputTextModule, FormsModule, ButtonModule],\n template: ` <p-drawer header=\"Menu\" [(visible)]=\"rightMenuVisible\" position=\"right\" styleClass=\"layout-rightmenu w-full! sm:w-xl!\">\n <div>\n <h2 class=\"title-h7 text-left\">Activity</h2>\n <div class=\"flex flex-col mt-7\">\n <div class=\"flex gap-6\">\n <div class=\"flex flex-col items-center\">\n <span class=\"w-14 h-14 flex items-center justify-center border border-surface rounded-xl shadow-subtle\">\n <i class=\"pi pi-dollar text-blue-600 text-2xl!\"></i>\n </span>\n <span class=\"min-h-14 w-px bg-(--surface-border)\"></span>\n </div>\n <div class=\"mt-2\">\n <h5 class=\"label-large\">New Sale</h5>\n <p class=\"md:label-small mt-1\">Richard Jones has purchased a blue t-shirt for <b class=\"body-small text-surface-950 dark:text-surface-0\">$79</b></p>\n </div>\n </div>\n <div class=\"flex gap-6\">\n <div class=\"flex flex-col items-center\">\n <span class=\"w-14 h-14 flex items-center justify-center border border-surface rounded-xl shadow-subtle\">\n <i class=\"pi pi-download text-orange-600 text-2xl!\"></i>\n </span>\n <span class=\"min-h-14 w-px bg-(--surface-border)\"></span>\n </div>\n <div class=\"mt-2\">\n <h5 class=\"label-large\">Withdrawal Initiated</h5>\n <p class=\"md:label-small mt-1\">Your request for withdrawal of <b class=\"body-small text-surface-950 dark:text-surface-0\">$2500</b> has been initiated.</p>\n </div>\n </div>\n <div class=\"flex gap-6\">\n <div class=\"flex flex-col items-center\">\n <span class=\"w-14 h-14 flex items-center justify-center border border-surface rounded-xl shadow-subtle\">\n <i class=\"pi pi-question-circle text-violet-600 text-2xl!\"></i>\n </span>\n <span class=\"min-h-14 w-px bg-(--surface-border)\"></span>\n </div>\n <div class=\"mt-2\">\n <h5 class=\"label-large\">Question Received</h5>\n <p class=\"md:label-small mt-1\">Jane Davis has posted a <b class=\"body-small text-surface-950 dark:text-surface-0\">new question</b> about your product.</p>\n </div>\n </div>\n <div class=\"flex gap-6\">\n <div class=\"flex flex-col items-center\">\n <span class=\"w-14 h-14 flex items-center justify-center border border-surface rounded-xl shadow-subtle\">\n <i class=\"pi pi-comment text-blue-600 text-2xl!\"></i>\n </span>\n </div>\n <div class=\"mt-2\">\n <h5 class=\"label-large\">Comment Received</h5>\n <p class=\"md:label-small mt-1\">Claire Smith has upvoted your store along with a <b class=\"body-small text-surface-950 dark:text-surface-0\">comment.</b></p>\n </div>\n </div>\n </div>\n </div>\n <p-divider class=\"my-10!\" />\n <div>\n <h2 class=\"title-h7 text-left\">Quick Withdraw</h2>\n <div class=\"flex flex-col gap-3.5 mt-7 mb-6\">\n <input pInputText type=\"text\" [(ngModel)]=\"amountValue\" placeholder=\"Amount\" />\n <p-select [(ngModel)]=\"selectedCard\" [options]=\"cards\" optionLabel=\"label\" placeholder=\"Select a Card\" class=\"w-full\" />\n </div>\n <button pButton label=\"Confirm\" severity=\"success\" class=\"w-full!\"></button>\n </div>\n <p-divider class=\"my-10!\" />\n <div>\n <h2 class=\"title-h7 text-left\">Shipment Tracking</h2>\n <p class=\"body-small mt-1 text-left\">Track your ongoing shipments to customers.</p>\n <img class=\"w-full h-full max-h-60 object-cover border border-surface rounded-2xl mt-4\" src=\"layout/images/sidebar-right/staticmap.png\" alt=\"unops-ng_ux\" />\n </div>\n </p-drawer>`\n})\nexport class AppRightMenu {\n layoutService: LayoutService = inject(LayoutService);\n\n cards = [\n { label: '*****24', value: { id: 1, name: '*****24', code: 'A1' } },\n { label: '*****75', value: { id: 2, name: '*****75', code: 'A2' } }\n ];\n\n selectedCard: any;\n amountValue: string = '';\n\n get rightMenuVisible(): boolean {\n return this.layoutService.layoutState().rightMenuVisible;\n }\n\n set rightMenuVisible(_val: boolean) {\n this.layoutService.layoutState.update((prev) => ({ ...prev, rightMenuVisible: _val }));\n }\n}\n","import { LayoutService } from '../layout.service';\nimport { Component, inject } from '@angular/core';\nimport { AutoFocusModule } from 'primeng/autofocus';\nimport { DialogModule } from 'primeng/dialog';\nimport { InputTextModule } from 'primeng/inputtext';\n\n@Component({\n selector: '[app-search]',\n imports: [DialogModule, InputTextModule, AutoFocusModule],\n template: ` <p-dialog [(visible)]=\"searchBarActive\" [breakpoints]=\"{ '1024px': '75vw', '780px': '90vw' }\" modal dismissableMask styleClass=\"w-1/2 search-container\">\n <ng-template #headless>\n <div class=\"w-full\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" [pAutoFocus]=\"true\" class=\"p-inputtext search-input\" placeholder=\"Search\" (keydown.enter)=\"toggleSearchBar()\" />\n </div>\n </ng-template>\n </p-dialog>`\n})\nexport class AppSearch {\n layoutService = inject(LayoutService);\n\n toggleSearchBar() {\n this.layoutService.layoutState.update((value) => ({ ...value, searchBarActive: !value.searchBarActive }));\n }\n\n get searchBarActive(): boolean {\n return this.layoutService.layoutState().searchBarActive;\n }\n\n set searchBarActive(_val: boolean) {\n this.layoutService.layoutState.update((prev) => ({ ...prev, searchBarActive: _val }));\n }\n}\n","import { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FooterService } from '../../layout/footer.service';\n\n@Component({\n selector: 'ux-footer-main',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n host: { class: 'ux-footer-main' },\n styles: `\n :host {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n height: 3rem;\n background: var(--p-primary-50);\n font-size: var(--font-size-xs, 0.75rem);\n line-height: 1.2;\n color: var(--p-text-color);\n }\n\n :host-context(:root[class*='app-dark']) {\n background: var(--p-primary-950);\n color: var(--p-surface-100);\n }\n\n :host(.footer-sticky) {\n position: sticky;\n bottom: 0;\n z-index: 10;\n }\n\n .footer-inner {\n width: 100%;\n max-width: 1540px;\n margin-inline: auto;\n padding: 1rem;\n }\n\n @media screen and (min-width: 780px) {\n .footer-inner {\n padding: 1rem 3rem;\n }\n }\n `,\n template: `\n <div class=\"footer-inner\">\n @if (copyrightOnly()) {\n <span>&#169; UNOPS {{ copyrightYear }}</span>\n } @else if (footerService.content(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n }\n </div>\n `\n})\nexport class FooterMainComponent {\n /** When true, always shows the default copyright — ignores FooterService content. */\n copyrightOnly = input(false);\n\n protected readonly footerService = inject(FooterService);\n protected readonly copyrightYear = new Date().getFullYear();\n}\n","import { CommonModule } from '@angular/common';\nimport { AfterViewInit, Component, computed, effect, inject, input, OnDestroy, signal } from '@angular/core';\nimport { Router, RouterModule } from '@angular/router';\nimport { RippleModule } from 'primeng/ripple';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { LayoutService } from '../layout.service';\nimport type { MenuItem } from '../tokens';\n\n@Component({\n selector: '[app-menuitem]',\n imports: [CommonModule, RouterModule, TooltipModule, RippleModule],\n template: `\n @if (root() && isVisible() && hasChildren()) {\n <div class=\"layout-menuitem-root-text\">{{ item()?.label }}</div>\n }\n @if ((!hasRouterLink() || hasChildren()) && isVisible()) {\n <a\n [attr.href]=\"item()?.url\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n [ngClass]=\"item()?.class\"\n [attr.target]=\"item()?.target\"\n tabindex=\"0\"\n pRipple\n [pTooltip]=\"item()?.label\"\n [tooltipDisabled]=\"!((isCompact() || isRailCollapsed()) && !isActive() && root())\"\n >\n <i [ngClass]=\"item()?.icon\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text label-small text-inherit\">{{ item()?.label }}</span>\n @if (hasChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n </a>\n }\n @if (hasRouterLink() && !hasChildren() && isVisible()) {\n <a\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n [ngClass]=\"item()?.class\"\n [routerLink]=\"item()?.routerLink\"\n routerLinkActive=\"active-route\"\n [routerLinkActiveOptions]=\"item()?.routerLinkActiveOptions || { paths: 'exact', queryParams: 'ignored', matrixParams: 'ignored', fragment: 'ignored' }\"\n [fragment]=\"item()?.fragment\"\n [queryParamsHandling]=\"item()?.queryParamsHandling\"\n [preserveFragment]=\"item()?.preserveFragment\"\n [skipLocationChange]=\"item()?.skipLocationChange\"\n [replaceUrl]=\"item()?.replaceUrl\"\n [state]=\"item()?.state\"\n [queryParams]=\"item()?.queryParams\"\n [attr.target]=\"item()?.target\"\n tabindex=\"0\"\n [pTooltip]=\"item()?.label\"\n [tooltipDisabled]=\"!((isCompact() || isRailCollapsed()) && !isActive() && root())\"\n >\n <i [ngClass]=\"item()?.icon\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text label-small text-inherit\">{{ item()?.label }}</span>\n @if (hasChildren()) {\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\"></i>\n }\n </a>\n }\n @if (hasChildren() && isVisible()) {\n <ul [animate.enter]=\"initialized() ? 'p-submenu-enter' : null\" [animate.leave]=\"'p-submenu-leave'\" [class.layout-root-submenulist]=\"root()\">\n @for (child of item()?.items; track child?.label) {\n <li app-menuitem [item]=\"child\" [root]=\"false\" [parentPath]=\"fullPath()\" [preventAutoActivate]=\"preventAutoActivate() || !!item()?.preventAutoActivate\" [class]=\"child?.['badgeClass']\"></li>\n }\n </ul>\n }\n `,\n host: {\n '[class.active-menuitem]': 'isActive()',\n '[class.layout-root-menuitem]': 'root()',\n '[class.route-active-within]': 'isRouteWithin()'\n },\n styles: [\n `\n .p-submenu-enter {\n animation: p-animate-submenu-expand 0.15s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n overflow: hidden;\n }\n\n .p-submenu-leave {\n animation: p-animate-submenu-collapse 0.15s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n overflow: hidden;\n }\n\n @keyframes p-animate-submenu-expand {\n from {\n max-height: 0;\n }\n to {\n max-height: 1000px;\n }\n }\n\n @keyframes p-animate-submenu-collapse {\n from {\n max-height: 1000px;\n }\n to {\n max-height: 0;\n }\n }\n `\n ]\n})\nexport class AppMenuitem implements AfterViewInit, OnDestroy {\n layoutService = inject(LayoutService);\n\n router = inject(Router);\n\n private hoverExpandTimer: ReturnType<typeof setTimeout> | null = null;\n\n item = input<MenuItem | null>(null);\n\n root = input<boolean>(true);\n\n parentPath = input<string | null>(null);\n\n preventAutoActivate = input<boolean>(false);\n\n isDisabled = computed(() => this.item()?.disabled ?? false);\n\n isSlim = computed(() => this.layoutService.layoutConfig().menuMode === 'slim');\n\n isHorizontal = computed(() => this.layoutService.layoutConfig().menuMode === 'horizontal');\n\n isCompact = computed(() => this.layoutService.layoutConfig().menuMode === 'compact');\n\n isRailCollapsed = computed(() => this.layoutService.isRail() && !this.layoutService.layoutState().sidebarExpanded);\n\n isVisible = computed(() => this.item()?.visible !== false);\n\n hasChildren = computed(() => !!this.item()?.items && (this.item()?.items?.length ?? 0) > 0);\n\n hasCommand = computed(() => typeof this.item()?.command === 'function');\n\n hasRouterLink = computed(() => !!this.item()?.routerLink);\n\n fullPath = computed(() => {\n const itemPath = this.item()?.path;\n if (!itemPath) return this.parentPath();\n const parent = this.parentPath();\n if (parent && !itemPath.startsWith(parent)) {\n return parent + itemPath;\n }\n return itemPath;\n });\n\n menuHoverActive = computed(() => this.layoutService.layoutState().menuHoverActive);\n\n isActive = computed(() => {\n const activePath = this.layoutService.layoutState().activePath;\n if (this.item()?.path) {\n return activePath?.startsWith(this.fullPath() ?? '') ?? false;\n }\n return false;\n });\n\n isRouteWithin = computed(() => {\n this.layoutService.currentUrl();\n if (!this.root() || !this.hasChildren()) return false;\n return this.hasMatchingChildRoute(this.item());\n });\n\n initialized = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n this.updateActivePath();\n });\n }\n\n private readonly defaultMatchOptions: import('@angular/router').IsActiveMatchOptions = {\n paths: 'exact',\n queryParams: 'ignored',\n matrixParams: 'ignored',\n fragment: 'ignored'\n };\n\n private itemMatchOptions(item: MenuItem | null | undefined): import('@angular/router').IsActiveMatchOptions {\n return item?.routerLinkActiveOptions ?? this.defaultMatchOptions;\n }\n\n updateActivePath() {\n if (this.layoutService.hasOverlaySubmenu() && this.layoutService.isDesktop()) {\n return;\n }\n\n if (this.preventAutoActivate()) {\n return;\n }\n\n const item = this.item();\n const parentPath = this.parentPath();\n\n if (item?.routerLink && !item?.items) {\n const isRouteActive = this.router.isActive(item.routerLink[0], this.itemMatchOptions(item));\n\n if (isRouteActive && parentPath) {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: parentPath\n }));\n }\n }\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.initialized.set(true);\n });\n }\n\n itemClick(event: Event) {\n if (this.isDisabled()) {\n event.preventDefault();\n return;\n }\n\n if (this.hasCommand()) {\n this.item()?.command?.({ originalEvent: event, item: this.item() ?? undefined });\n }\n\n if (this.hasChildren()) {\n if (this.isActive()) {\n const deactivateHover = this.root() && this.layoutService.hasOverlaySubmenu() && this.layoutService.isDesktop();\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: this.parentPath(),\n menuHoverActive: deactivateHover ? false : val.menuHoverActive\n }));\n } else {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: this.fullPath(),\n menuHoverActive: true\n }));\n }\n } else {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n overlayMenuActive: false,\n mobileMenuActive: false,\n menuHoverActive: false\n }));\n\n if (this.layoutService.hasOverlaySubmenu() && this.layoutService.isDesktop()) {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: null\n }));\n }\n }\n\n if (this.layoutService.isDesktop() && this.layoutService.isRail() && !this.layoutService.layoutState().sidebarExpanded) {\n this.layoutService.toggleSidebarPin();\n }\n }\n\n onMouseEnter() {\n if (this.layoutService.isDesktop() && this.root() && this.hasChildren() && this.menuHoverActive() && !this.isActive()) {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: this.fullPath(),\n menuHoverActive: true\n }));\n }\n }\n\n onMouseLeave() {}\n\n ngOnDestroy() {\n this.clearHoverTimer();\n }\n\n private scheduleRailExpand() {\n this.clearHoverTimer();\n this.hoverExpandTimer = setTimeout(() => {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n sidebarExpanded: true\n }));\n }, 500);\n }\n\n private clearHoverTimer() {\n if (this.hoverExpandTimer !== null) {\n clearTimeout(this.hoverExpandTimer);\n this.hoverExpandTimer = null;\n }\n }\n\n private hasMatchingChildRoute(item: MenuItem | null | undefined): boolean {\n if (!item) return false;\n if (item.routerLink) {\n return this.router.isActive(item.routerLink[0], this.itemMatchOptions(item));\n }\n return item.items?.some((child) => this.hasMatchingChildRoute(child)) ?? false;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { MENU_MODEL } from '../tokens';\nimport { AppMenuitem } from './app.menuitem';\n\n@Component({\n selector: '[app-menu]',\n imports: [CommonModule, AppMenuitem, RouterModule],\n template: `<ul class=\"layout-menu\">\n @for (item of menuItems; track $index) {\n @if (!item.separator) {\n <li app-menuitem [item]=\"item\" [root]=\"true\"></li>\n } @else {\n <li class=\"menu-separator\"></li>\n }\n }\n </ul> `\n})\nexport class AppMenu {\n /** Injected menu tree from the host application. */\n menuItems = inject(MENU_MODEL);\n}\n","import { LayoutService } from '../layout.service';\nimport { TOPBAR_MOBILE_LOGO, TOPBAR_LANGUAGE_CONFIG, TOPBAR_PROFILE_MENU_CONFIG, TOPBAR_NOTIFICATION_CONFIG } from '../tokens';\nimport { CommonModule } from '@angular/common';\nimport { Component, computed, ElementRef, HostListener, inject, model, signal, ViewChild, ChangeDetectionStrategy, AfterViewChecked } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AvatarModule } from 'primeng/avatar';\nimport { BadgeModule } from 'primeng/badge';\nimport { ButtonModule } from 'primeng/button';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { OverlayBadgeModule } from 'primeng/overlaybadge';\nimport { RippleModule } from 'primeng/ripple';\nimport { AppBreadcrumb } from './app.breadcrumb';\n\ntype DropdownId = 'notifications' | 'language' | 'profile' | null;\n\ninterface NotificationsBars {\n id: string;\n label: string;\n badge?: string | any;\n}\n\n@Component({\n selector: '[app-topbar]',\n imports: [RouterModule, CommonModule, AppBreadcrumb, InputTextModule, ButtonModule, IconFieldModule, InputIconModule, RippleModule, BadgeModule, OverlayBadgeModule, AvatarModule],\n template: `<div class=\"layout-topbar\">\n <button type=\"button\" class=\"mobile-menu-button\" aria-label=\"Toggle navigation menu\" (click)=\"onMenuButtonClick()\">\n <i class=\"pi pi-bars\"></i>\n </button>\n <div class=\"topbar-left\">\n <div class=\"topbar-sidebar-section\">\n <button\n type=\"button\"\n class=\"topbar-menu-toggle\"\n [class.active]=\"isSidebarPinned()\"\n [attr.aria-label]=\"isSidebarPinned() ? 'Collapse sidebar' : 'Expand sidebar'\"\n (click)=\"toggleSidebarPin()\"\n >\n <i class=\"pi pi-bars\"></i>\n </button>\n <a class=\"topbar-logo\" [routerLink]=\"['/']\">\n <img [src]=\"desktopLogo()\" [attr.alt]=\"mobileLogoConfig.alt\" />\n </a>\n <span class=\"topbar-logo-separator\"></span>\n </div>\n </div>\n\n <div class=\"topbar-main\">\n <div app-breadcrumb></div>\n @if (searchActive()) {\n <div class=\"flex items-center gap-2 ml-auto\">\n <p-iconfield class=\"w-48 sm:w-80\">\n <p-inputicon styleClass=\"pi pi-search\" />\n <input #searchInput type=\"text\" pInputText placeholder=\"Search...\" aria-label=\"Search\" class=\"w-full !py-2 !text-sm\" (keydown.escape)=\"closeSearch()\" />\n </p-iconfield>\n <button type=\"button\" class=\"flex items-center justify-center w-8 h-8 rounded-md cursor-pointer hover:bg-emphasis transition-colors\" aria-label=\"Close search\" (click)=\"closeSearch()\">\n <i class=\"pi pi-times text-sm\"></i>\n </button>\n </div>\n }\n <div class=\"topbar-right\">\n <ul class=\"topbar-menu\">\n <li class=\"right-sidebar-item\" [class.hidden]=\"searchActive()\">\n <a class=\"right-sidebar-button\" aria-label=\"Open search\" (click)=\"openSearch()\">\n <i class=\"pi pi-search\"></i>\n </a>\n </li>\n <li class=\"right-sidebar-item\" [class.hidden]=\"searchActive()\">\n <a\n class=\"right-sidebar-button\"\n [attr.aria-label]=\"isDarkTheme() ? 'Switch to light mode' : 'Switch to dark mode'\"\n (click)=\"toggleDarkMode()\"\n >\n <i [class]=\"isDarkTheme() ? 'pi pi-sun' : 'pi pi-moon'\"></i>\n </a>\n </li>\n <li class=\"right-sidebar-item static sm:relative z-50\" #notificationsItem>\n <a class=\"right-sidebar-button\" aria-label=\"Notifications\" (click)=\"toggleDropdown('notifications', $event); onNotificationBellClick()\">\n @if (notifConfig && notifConfig.unreadCount() > 0) {\n <span class=\"w-2 h-2 rounded-full bg-red-500 absolute top-2 right-2.5\"></span>\n } @else if (!notifConfig) {\n <span class=\"w-2 h-2 rounded-full bg-red-500 absolute top-2 right-2.5\"></span>\n }\n <i class=\"pi pi-bell\"></i>\n </a>\n @if (activeDropdown() === 'notifications') {\n <div\n class=\"list-none m-0 rounded-2xl border border-surface fixed sm:absolute bg-surface-0 dark:bg-surface-900 overflow-hidden origin-top w-[calc(100vw-2rem)] sm:w-88 mt-2 z-50 top-auto left-4 sm:left-auto sm:right-0 shadow-flyout animate-scalein\"\n >\n @if (notifConfig) {\n <div class=\"p-4 flex items-center justify-between border-b border-surface\">\n <span class=\"label-small text-surface-950 dark:text-surface-0\">Notifications</span>\n <button pRipple class=\"py-1 px-2 text-surface-950 dark:text-surface-0 label-x-small hover:bg-emphasis border border-surface rounded-lg shadow-subtle transition-all\" (click)=\"notifConfig.onMarkAllAsRead()\">Mark all as read</button>\n </div>\n <div class=\"flex items-center border-b border-surface\">\n @for (tab of notifConfig.tabs(); track tab.id) {\n <button\n [ngClass]=\"{ 'border-surface-950 dark:border-surface-0': notifConfig.selectedTab() === tab.id, 'border-transparent': notifConfig.selectedTab() !== tab.id }\"\n class=\"px-3.5 py-2 inline-flex items-center border-b gap-2\"\n (click)=\"notifConfig.onTabChange(tab.id)\"\n >\n <span [ngClass]=\"{ 'text-surface-950 dark:text-surface-0': notifConfig.selectedTab() === tab.id }\" class=\"label-small\">{{ tab.label }}</span>\n <p-badge *ngIf=\"tab.badge\" [value]=\"tab.badge\" severity=\"success\" size=\"small\" class=\"rounded-md!\" />\n </button>\n }\n </div>\n <ul class=\"flex flex-col divide-y divide-(--surface-border) max-h-80 overflow-auto\">\n @if (notifConfig.items().length === 0) {\n <li class=\"px-4 sm:px-6 py-8 text-center\">\n <i class=\"pi pi-bell-slash text-2xl text-surface-400 mb-2\"></i>\n <p class=\"label-small text-surface-400\">No {{ notifConfig.selectedTab() === 'unread' ? 'unread ' : '' }}notifications</p>\n </li>\n } @else {\n @for (item of notifConfig.items(); track item.id) {\n <li>\n <div class=\"flex items-center gap-3 px-4 sm:px-6 py-3.5 cursor-pointer hover:bg-emphasis transition-all\" (click)=\"notifConfig.onItemClick(item)\">\n <div class=\"flex items-center justify-center w-10 h-10 rounded-lg flex-shrink-0\" [ngClass]=\"item.isRead ? 'bg-surface-100 dark:bg-surface-800' : 'bg-primary/10'\">\n <i [class]=\"item.icon || 'pi pi-bell'\" [ngClass]=\"item.isRead ? 'text-surface-500' : 'text-primary'\"></i>\n </div>\n <div class=\"flex items-center gap-3 flex-1 min-w-0\">\n <div class=\"flex flex-col flex-1 min-w-0\">\n <span class=\"label-small text-left line-clamp-2\" [ngClass]=\"item.isRead ? '' : 'text-surface-950 dark:text-surface-0 font-semibold'\">{{ item.message }}</span>\n <span class=\"label-xsmall text-left\">{{ item.time }}</span>\n </div>\n @if (!item.isRead) {\n <span class=\"w-2 h-2 rounded-full bg-primary flex-shrink-0\"></span>\n }\n </div>\n </div>\n </li>\n }\n }\n </ul>\n } @else {\n <div class=\"p-4 flex items-center justify-between border-b border-surface\">\n <span class=\"label-small text-surface-950 dark:text-surface-0\">Notifications</span>\n <button pRipple class=\"py-1 px-2 text-surface-950 dark:text-surface-0 label-x-small hover:bg-emphasis border border-surface rounded-lg shadow-subtle transition-all\">Mark all as read</button>\n </div>\n <div class=\"flex items-center border-b border-surface\">\n @for (item of notificationsBars(); track item.id; let i = $index) {\n <button\n [ngClass]=\"{ 'border-surface-950 dark:border-surface-0': selectedNotificationBar() === item.id, 'border-transparent': selectedNotificationBar() !== item.id }\"\n class=\"px-3.5 py-2 inline-flex items-center border-b gap-2\"\n (click)=\"selectedNotificationBar.set(item.id)\"\n >\n <span [ngClass]=\"{ 'text-surface-950 dark:text-surface-0': selectedNotificationBar() === item.id }\" class=\"label-small\">{{ item.label }}</span>\n <p-badge *ngIf=\"item?.badge\" [value]=\"item.badge\" severity=\"success\" size=\"small\" class=\"rounded-md!\" />\n </button>\n }\n </div>\n <ul class=\"flex flex-col divide-y divide-(--surface-border) max-h-80 overflow-auto\">\n @for (item of selectedNotificationsBarData(); track item.name; let i = $index) {\n <li>\n <div class=\"flex items-center gap-3 px-4 sm:px-6 py-3.5 cursor-pointer hover:bg-emphasis transition-all\">\n <p-overlay-badge value=\"\" severity=\"danger\" class=\"inline-flex\">\n <p-avatar [label]=\"item.initials\" size=\"large\" styleClass=\"rounded-lg\" />\n </p-overlay-badge>\n <div class=\"flex items-center gap-3\">\n <div class=\"flex flex-col\">\n <span class=\"label-small text-left text-surface-950 dark:text-surface-0\">{{ item.name }}</span>\n <span class=\"label-xsmall text-left line-clamp-1\">{{ item.description }}</span>\n <span class=\"label-xsmall text-left\">{{ item.time }}</span>\n </div>\n <p-badge *ngIf=\"item.new\" value=\"\" severity=\"success\" />\n </div>\n </div>\n <span *ngIf=\"i !== notifications().length - 1\"></span>\n </li>\n }\n </ul>\n }\n </div>\n }\n </li>\n <li class=\"right-sidebar-item static sm:relative\" #languageItem>\n <a class=\"right-sidebar-button relative z-50\" aria-label=\"Change language\" (click)=\"toggleDropdown('language', $event)\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"m5 8 6 6\"/>\n <path d=\"m4 14 6-6 2-3\"/>\n <path d=\"M2 5h12\"/>\n <path d=\"M7 2h1\"/>\n <path d=\"m22 22-5-10-5 10\"/>\n <path d=\"M14 18h6\"/>\n </svg>\n </a>\n @if (activeDropdown() === 'language') {\n <div\n class=\"list-none p-2 m-0 rounded-2xl border border-surface overflow-hidden fixed sm:absolute bg-surface-0 dark:bg-surface-900 origin-top w-44 mt-2 right-4 sm:right-0 z-999 top-auto shadow-flyout animate-scalein\"\n >\n <ul class=\"flex flex-col gap-1\">\n @for (lang of languages(); track lang.code) {\n <li>\n <a\n class=\"label-small dark:text-surface-400 flex gap-2.5 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer\"\n [class.text-surface-950]=\"selectedLanguage() === lang.code\"\n [class.dark:text-surface-0]=\"selectedLanguage() === lang.code\"\n [class.font-semibold]=\"selectedLanguage() === lang.code\"\n (click)=\"selectLanguage(lang.code)\"\n >\n <span class=\"text-lg\">{{ lang.flag }}</span>\n <span>{{ lang.label }}</span>\n </a>\n </li>\n }\n </ul>\n </div>\n }\n </li>\n <li class=\"profile-item static sm:relative\" #profileItem>\n <a class=\"right-sidebar-button relative z-50\" aria-label=\"User profile menu\" (click)=\"toggleDropdown('profile', $event)\">\n <p-avatar icon=\"pi pi-user\" styleClass=\"w-10! h-10!\" />\n </a>\n @if (activeDropdown() === 'profile') {\n <div\n #profilePanel\n class=\"list-none p-2 m-0 rounded-2xl border border-surface overflow-hidden fixed sm:absolute bg-surface-0 dark:bg-surface-900 origin-top w-52 mt-2 right-4 sm:right-0 z-999 top-auto shadow-flyout animate-scalein\"\n >\n <ul class=\"flex flex-col gap-1\">\n <div class=\"mobile-profile-actions\">\n <li>\n <a class=\"label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer\" (click)=\"closeDropdown(); openSearch()\">\n <i class=\"pi pi-search\"></i>\n <span>Search</span>\n </a>\n </li>\n <li>\n <a class=\"label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer\" (click)=\"closeDropdown(); toggleDarkMode()\">\n <i [class]=\"isDarkTheme() ? 'pi pi-sun' : 'pi pi-moon'\"></i>\n <span>{{ isDarkTheme() ? 'Light Mode' : 'Dark Mode' }}</span>\n </a>\n </li>\n <li>\n <a class=\"label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer relative\" (click)=\"closeDropdown()\">\n <i class=\"pi pi-bell\"></i>\n <span>Notifications</span>\n <span class=\"w-2 h-2 rounded-full bg-red-500 ml-auto\"></span>\n </a>\n </li>\n <li class=\"border-b border-surface pb-1 mb-1\">\n <span class=\"label-xsmall px-2.5 py-1 text-surface-400\">Language</span>\n @for (lang of languages(); track lang.code) {\n <a\n class=\"label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer\"\n [class.text-surface-950]=\"selectedLanguage() === lang.code\"\n [class.dark:text-surface-0]=\"selectedLanguage() === lang.code\"\n [class.font-semibold]=\"selectedLanguage() === lang.code\"\n (click)=\"closeDropdown(); selectLanguage(lang.code)\"\n >\n <span class=\"text-lg\">{{ lang.flag }}</span>\n <span>{{ lang.label }}</span>\n @if (selectedLanguage() === lang.code) {\n <i class=\"pi pi-check ml-auto text-xs\"></i>\n }\n </a>\n }\n </li>\n </div>\n @if (profileMenuConfig) {\n @for (item of profileMenuConfig.items; track item.id) {\n <li [class.border-t]=\"item.separator\" [class.border-surface]=\"item.separator\" [class.mt-1]=\"item.separator\" [class.pt-1]=\"item.separator\">\n <a class=\"label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer\" (click)=\"closeDropdown(); item.command()\">\n <i [class]=\"item.icon\"></i>\n <span>{{ item.label }}</span>\n </a>\n </li>\n }\n } @else {\n <li>\n <a class=\"label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer\" (click)=\"closeDropdown()\">\n <i class=\"pi pi-user\"></i>\n <span>Profile</span>\n </a>\n </li>\n <li>\n <a class=\"label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer\" (click)=\"closeDropdown(); onConfigButtonClick()\">\n <i class=\"pi pi-cog\"></i>\n <span>Settings</span>\n </a>\n </li>\n <li class=\"border-t border-surface mt-1 pt-1\">\n <a class=\"label-small dark:text-surface-400 flex gap-2 py-2 px-2.5 rounded-lg items-center hover:bg-emphasis transition-colors duration-150 cursor-pointer\" (click)=\"closeDropdown()\">\n <i class=\"pi pi-power-off\"></i>\n <span>Log out</span>\n </a>\n </li>\n }\n </ul>\n </div>\n }\n </li>\n </ul>\n </div>\n </div>\n\n <a class=\"mobile-logo\" [routerLink]=\"['/']\">\n <img [src]=\"mobileLogo()\" [attr.alt]=\"mobileLogoConfig.alt\" />\n </a>\n </div>`\n})\nexport class AppTopbar implements AfterViewChecked {\n layoutService = inject(LayoutService);\n\n readonly mobileLogoConfig = inject(TOPBAR_MOBILE_LOGO);\n\n mobileLogo = computed(() =>\n this.layoutService.isDarkTheme() ? this.mobileLogoConfig.dark : this.mobileLogoConfig.light\n );\n\n desktopLogo = computed(() =>\n this.layoutService.isDarkTheme() ? this.mobileLogoConfig.dark : this.mobileLogoConfig.light\n );\n\n isDarkTheme = computed(() => this.layoutService.isDarkTheme());\n\n isSidebarPinned = computed(() => this.layoutService.isSidebarPinned());\n\n searchActive = signal(false);\n activeDropdown = signal<DropdownId>(null);\n private shouldFocusSearch = false;\n\n @ViewChild('menubutton') menuButton!: ElementRef;\n @ViewChild('searchInput') searchInput?: ElementRef<HTMLInputElement>;\n @ViewChild('notificationsItem') notificationsItem!: ElementRef;\n @ViewChild('languageItem') languageItem!: ElementRef;\n @ViewChild('profileItem') profileItem!: ElementRef;\n\n notificationsBars = signal<NotificationsBars[]>([\n {\n id: 'inbox',\n label: 'Inbox',\n badge: '2'\n },\n {\n id: 'general',\n label: 'General'\n },\n {\n id: 'archived',\n label: 'Archived'\n }\n ]);\n\n notifications = signal<any[]>([\n {\n id: 'inbox',\n data: [\n {\n initials: 'ML',\n name: 'Michael Lee',\n description: 'You have a new message from the support team regarding your recent inquiry.',\n time: '1 hour ago',\n new: true\n },\n {\n initials: 'AJ',\n name: 'Alice Johnson',\n description: 'Your report has been successfully submitted and is under review.',\n time: '10 minutes ago',\n new: true\n },\n {\n initials: 'ED',\n name: 'Emily Davis',\n description: 'The project deadline has been updated to September 30th. Please check the details.',\n time: 'Yesterday at 4:35 PM',\n new: false\n }\n ]\n },\n {\n id: 'general',\n data: [\n {\n initials: 'AJ',\n name: 'Alice Johnson',\n description: 'Reminder: Your subscription is about to expire in 3 days. Renew now to avoid interruption.',\n time: '30 minutes ago',\n new: true\n },\n {\n initials: 'ML',\n name: 'Michael Lee',\n description: 'The server maintenance has been completed successfully. No further downtime is expected.',\n time: 'Yesterday at 2:15 PM',\n new: false\n }\n ]\n },\n {\n id: 'archived',\n data: [\n {\n initials: 'LB',\n name: 'Lucas Brown',\n description: 'Your appointment with Dr. Anderson has been confirmed for October 12th at 10:00 AM.',\n time: '1 week ago',\n new: true\n },\n {\n initials: 'ED',\n name: 'Emily Davis',\n description: 'The document you uploaded has been successfully archived for future reference.',\n time: '2 weeks ago',\n new: false\n }\n ]\n }\n ]);\n\n private readonly langConfig = inject(TOPBAR_LANGUAGE_CONFIG, { optional: true });\n readonly profileMenuConfig = inject(TOPBAR_PROFILE_MENU_CONFIG, { optional: true });\n readonly notifConfig = inject(TOPBAR_NOTIFICATION_CONFIG, { optional: true });\n\n languages = signal(this.langConfig?.languages ?? [\n { code: 'en', label: 'English', flag: '\\u{1F1EC}\\u{1F1E7}' },\n { code: 'fr', label: 'French', flag: '\\u{1F1EB}\\u{1F1F7}' },\n { code: 'es', label: 'Spanish', flag: '\\u{1F1EA}\\u{1F1F8}' }\n ]);\n\n selectedLanguage = signal(this.langConfig?.defaultLanguage ?? 'en');\n\n selectedNotificationBar = model(this.notificationsBars()[0].id ?? 'inbox');\n\n selectedNotificationsBarData = computed(() => this.notifications().find((f) => f.id === this.selectedNotificationBar()).data);\n\n onMenuButtonClick() {\n this.layoutService.toggleMenu();\n }\n\n toggleSidebarPin() {\n this.layoutService.toggleSidebarPin();\n }\n\n toggleDarkMode() {\n this.layoutService.layoutConfig.update((state) => ({\n ...state,\n darkTheme: !state.darkTheme\n }));\n }\n\n showRightMenu() {\n this.layoutService.toggleRightMenu();\n }\n\n onConfigButtonClick() {\n this.layoutService.toggleConfigSidebar();\n }\n\n selectLanguage(code: string) {\n this.selectedLanguage.set(code);\n this.langConfig?.onLanguageChange?.(code);\n this.closeDropdown();\n }\n\n onNotificationBellClick() {\n this.notifConfig?.onPanelOpen?.();\n }\n\n toggleDropdown(id: DropdownId, event: Event) {\n event.stopPropagation();\n this.activeDropdown.update((current) => (current === id ? null : id));\n }\n\n closeDropdown() {\n this.activeDropdown.set(null);\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n if (!this.activeDropdown()) return;\n\n const target = event.target as Node;\n const containers = [\n this.notificationsItem?.nativeElement,\n this.languageItem?.nativeElement,\n this.profileItem?.nativeElement\n ];\n\n const insideAny = containers.some((el) => el?.contains(target));\n if (!insideAny) {\n this.closeDropdown();\n }\n }\n\n openSearch() {\n this.searchActive.set(true);\n this.shouldFocusSearch = true;\n }\n\n closeSearch() {\n this.searchActive.set(false);\n }\n\n ngAfterViewChecked() {\n if (this.shouldFocusSearch && this.searchInput) {\n this.searchInput.nativeElement.focus();\n this.shouldFocusSearch = false;\n }\n }\n\n toggleSearchBar() {\n this.layoutService.toggleSearchBar();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, effect, ElementRef, inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { filter, Subject, takeUntil } from 'rxjs';\nimport { LayoutService } from '../layout.service';\nimport { FooterMainComponent } from '../../components/footer-main/footer-main';\nimport { AppMenu } from './app.menu';\nimport { AppTopbar } from './app.topbar';\n\nconst BREAKPOINT = 1024;\n\n@Component({\n selector: '[app-sidebar]',\n imports: [CommonModule, AppMenu, RouterModule, AppTopbar, FooterMainComponent],\n template: `<nav class=\"layout-sidebar\" aria-label=\"Main navigation\" (mouseleave)=\"onMouseLeave()\">\n <div #menuContainer class=\"layout-menu-container min-h-0 grow\" (scroll)=\"onMenuScroll()\">\n <div app-menu></div>\n </div>\n @if (!isHorizontal()) {\n <ux-footer-main [copyrightOnly]=\"true\" role=\"contentinfo\" />\n }\n <div app-topbar *ngIf=\"isHorizontal()\"></div>\n </nav>`\n})\nexport class AppSidebar implements OnInit, OnDestroy {\n layoutService = inject(LayoutService);\n\n router = inject(Router);\n\n el = inject(ElementRef);\n\n @ViewChild('menuContainer') menuContainer!: ElementRef;\n\n @ViewChild('sidebarRef') sidebarRef!: ElementRef;\n\n private timeout: ReturnType<typeof setTimeout> | null = null;\n\n private observer: IntersectionObserver | null = null;\n\n private outsideClickListener: ((event: MouseEvent) => void) | null = null;\n\n private mediaQuery = window.matchMedia(`(min-width: ${BREAKPOINT}px)`);\n\n private destroy$ = new Subject<void>();\n\n isHorizontal = computed(() => this.layoutService.isHorizontal());\n\n constructor() {\n effect(() => {\n const hasOpenOverlay = this.layoutService.hasOpenOverlay();\n const mobileMenuActive = this.layoutService.layoutState().mobileMenuActive;\n\n if (this.layoutService.isDesktop()) {\n if (hasOpenOverlay) {\n this.bindOutsideClickListener();\n } else {\n this.unbindOutsideClickListener();\n }\n } else {\n if (mobileMenuActive) {\n this.bindOutsideClickListener();\n } else {\n this.unbindOutsideClickListener();\n }\n }\n });\n\n effect(() => {\n const hasOpenOverlaySubmenu = this.layoutService.hasOpenOverlaySubmenu();\n if (this.layoutService.isDesktop()) {\n if (hasOpenOverlaySubmenu) {\n setTimeout(() => this.setupIntersectionObserver());\n } else {\n this.unbindObserver();\n }\n }\n });\n }\n\n ngOnInit() {\n this.router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n takeUntil(this.destroy$)\n )\n .subscribe((event) => {\n const navEvent = event as NavigationEnd;\n this.onRouteChange(navEvent.urlAfterRedirects);\n });\n\n this.onRouteChange(this.router.url);\n\n this.mediaQuery.addEventListener('change', this.screenChangeListener);\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.unbindOutsideClickListener();\n this.unbindObserver();\n this.mediaQuery.removeEventListener('change', this.screenChangeListener);\n }\n\n private onRouteChange(path: string) {\n this.layoutService.currentUrl.set(path);\n\n let newActivePath: string | null;\n\n if (this.layoutService.hasOverlaySubmenu() && this.layoutService.isDesktop()) {\n newActivePath = null;\n } else {\n newActivePath = path;\n }\n\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: newActivePath,\n overlayMenuActive: false,\n staticMenuMobileActive: false,\n menuHoverActive: false\n }));\n }\n\n private screenChangeListener = () => {\n if (this.layoutService.hasOverlaySubmenu()) {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: this.layoutService.isDesktop() ? null : this.router.url,\n menuHoverActive: false\n }));\n this.unbindOutsideClickListener();\n this.unbindObserver();\n }\n };\n\n private bindOutsideClickListener() {\n if (!this.outsideClickListener) {\n this.outsideClickListener = (event: MouseEvent) => {\n if (this.isOutsideClicked(event)) {\n if (this.layoutService.isDesktop()) {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n overlayMenuActive: false\n }));\n\n if (this.layoutService.hasOverlaySubmenu()) {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: null,\n menuHoverActive: false\n }));\n }\n } else {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n mobileMenuActive: false\n }));\n }\n }\n };\n\n document.addEventListener('click', this.outsideClickListener);\n }\n }\n\n private unbindOutsideClickListener() {\n if (this.outsideClickListener) {\n document.removeEventListener('click', this.outsideClickListener);\n this.outsideClickListener = null;\n }\n }\n\n private isOutsideClicked(event: MouseEvent): boolean {\n const topbarButtonEl = document.querySelector('.mobile-menu-button');\n const sidebarEl = this.el.nativeElement;\n\n return !(\n sidebarEl?.isSameNode(event.target as Node) ||\n sidebarEl?.contains(event.target as Node) ||\n topbarButtonEl?.isSameNode(event.target as Node) ||\n topbarButtonEl?.contains(event.target as Node)\n );\n }\n\n onMouseEnter() {}\n\n onMouseLeave() {\n if (!this.layoutService.isDesktop() || !this.layoutService.isRail()) return;\n if (this.layoutService.layoutState().sidebarPinned) return;\n\n if (this.timeout) clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n sidebarExpanded: false\n }));\n }, 300);\n }\n\n onAnchorToggle() {\n this.layoutService.layoutState.update((state) => ({\n ...state,\n anchored: !state.anchored\n }));\n }\n\n onMenuScroll() {\n if (this.menuContainer?.nativeElement) {\n if (this.layoutService.isHorizontal()) {\n const scrollLeft = this.menuContainer.nativeElement.scrollLeft;\n this.menuContainer.nativeElement.style.setProperty('--menu-scroll-x', `-${scrollLeft}px`);\n } else {\n const scrollTop = this.menuContainer.nativeElement.scrollTop;\n this.menuContainer.nativeElement.style.setProperty('--menu-scroll-y', `-${scrollTop}px`);\n }\n }\n\n if (this.layoutService.hasOverlaySubmenu() && this.layoutService.isDesktop()) {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: null,\n menuHoverActive: false\n }));\n }\n }\n\n private setupIntersectionObserver() {\n if (!this.menuContainer?.nativeElement) return;\n\n if (this.observer) {\n this.observer.disconnect();\n }\n\n const activeMenuItem = this.menuContainer.nativeElement.querySelector('.layout-root-menuitem.active-menuitem');\n if (!activeMenuItem) return;\n\n this.observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (\n this.layoutService.isDesktop() &&\n !entry.isIntersecting &&\n this.layoutService.hasOverlaySubmenu() &&\n this.layoutService.layoutState().activePath\n ) {\n this.layoutService.layoutState.update((val) => ({\n ...val,\n activePath: null\n }));\n }\n });\n },\n {\n root: this.menuContainer.nativeElement,\n threshold: 0\n }\n );\n\n this.observer.observe(activeMenuItem);\n }\n\n private unbindObserver() {\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, effect, ElementRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { LayoutService } from '../layout.service';\nimport { AppBreadcrumb } from './app.breadcrumb';\nimport { AppConfigurator } from './app.configurator';\nimport { AppRightMenu } from './app.rightmenu';\nimport { AppSearch } from './app.search';\nimport { AppSidebar } from './app.sidebar';\nimport { AppTopbar } from './app.topbar';\nimport { FooterMainComponent } from '../../components/footer-main/footer-main';\n\n@Component({\n selector: 'app-layout',\n imports: [CommonModule, AppTopbar, AppSidebar, RouterModule, AppConfigurator, AppBreadcrumb, FooterMainComponent, AppSearch, AppRightMenu],\n template: `<div class=\"layout-wrapper\" [ngClass]=\"containerClass()\">\n <div app-topbar></div>\n <div class=\"layout-body\">\n <div app-sidebar></div>\n <div class=\"layout-content-wrapper\">\n <div class=\"layout-content-wrapper-inside\">\n <main class=\"layout-content\">\n <div app-breadcrumb></div>\n <router-outlet></router-outlet>\n </main>\n </div>\n <ux-footer-main class=\"footer-sticky\" />\n </div>\n </div>\n <app-configurator />\n <div app-search></div>\n <div app-rightmenu></div>\n <div class=\"layout-mask\"></div>\n </div> `\n})\nexport class AppLayout {\n layoutService = inject(LayoutService);\n private elRef = inject(ElementRef);\n\n constructor() {\n effect(() => {\n const state = this.layoutService.layoutState();\n if (state.mobileMenuActive) {\n document.body.classList.add('blocked-scroll');\n } else {\n document.body.classList.remove('blocked-scroll');\n }\n });\n\n inject(Router).events.pipe(\n filter((e): e is NavigationEnd => e instanceof NavigationEnd),\n takeUntilDestroyed()\n ).subscribe(() => {\n const wrapper: HTMLElement | null = this.elRef.nativeElement.querySelector('.layout-content-wrapper');\n if (wrapper) wrapper.scrollTop = 0;\n });\n }\n\n containerClass = computed(() => {\n const layoutConfig = this.layoutService.layoutConfig();\n const layoutState = this.layoutService.layoutState();\n return {\n 'layout-overlay': layoutConfig.menuMode === 'overlay',\n 'layout-static': layoutConfig.menuMode === 'static',\n 'layout-slim': layoutConfig.menuMode === 'slim',\n 'layout-horizontal': layoutConfig.menuMode === 'horizontal',\n 'layout-compact': layoutConfig.menuMode === 'compact',\n 'layout-reveal': layoutConfig.menuMode === 'reveal',\n 'layout-drawer': layoutConfig.menuMode === 'drawer',\n 'layout-overlay-active': layoutState.overlayMenuActive,\n 'layout-mobile-active': layoutState.mobileMenuActive,\n 'layout-sidebar-expanded': layoutState.sidebarExpanded,\n 'layout-sidebar-rail': !layoutState.sidebarPinned && layoutConfig.menuMode === 'static',\n 'layout-sidebar-anchored': layoutState.anchored,\n [`layout-card-${layoutConfig.cardStyle}`]: true,\n [`layout-sidebar-${layoutConfig.menuTheme}`]: true\n };\n });\n}\n","import { Component, inject } from '@angular/core';\nimport { LayoutService } from '../layout.service';\n\n@Component({\n selector: '[app-footer]',\n template: `\n @if (layoutService.isHorizontal()) {\n <footer class=\"layout-footer\">\n <span class=\"footer-copyright\">&#169; UNOPS {{ copyrightYear }}</span>\n </footer>\n }\n `\n})\nexport class AppFooter {\n layoutService = inject(LayoutService);\n\n readonly copyrightYear = new Date().getFullYear();\n}\n","import { LayoutService } from '../layout.service';\nimport { Component, inject } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AppConfigurator } from './app.configurator';\n\n@Component({\n selector: 'auth-layout',\n imports: [RouterModule, AppConfigurator],\n template: `\n <main>\n <router-outlet></router-outlet>\n </main>\n <button class=\"layout-config-button config-link\" (click)=\"layoutService.toggleConfigSidebar()\">\n <i class=\"pi pi-cog\"></i>\n </button>\n <app-configurator location=\"landing\" />\n `\n})\nexport class AuthLayout {\n layoutService: LayoutService = inject(LayoutService);\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\nlet aiCardBgFilterId = 0;\n\n/**\n * Animated brand-tinted background for AI insight cards: shifting host background\n * plus soft blurred SVG blobs with staggered fill animation.\n *\n * Project card content with `<ng-content />` so it stacks above the SVG layer.\n */\n@Component({\n selector: 'ux-ai-card-bg',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'ux-ai-card-bg block box-border',\n '[attr.data-ai-bg]': 'true'\n },\n styles: `\n :host {\n --ux-ai-bg-from: var(--color-ai-50);\n --ux-ai-bg-to: var(--color-cherry-50);\n --ux-ai-fg-from: var(--color-ai-200);\n --ux-ai-fg-to: var(--color-cherry-100);\n position: relative;\n overflow: hidden;\n isolation: isolate;\n contain: paint;\n animation: ux-ai-bg-move 5s ease-in-out infinite;\n will-change: background-color;\n }\n\n :host-context([class*='app-dark']) {\n --ux-ai-bg-from: var(--color-ai-950);\n --ux-ai-bg-to: var(--color-cherry-950);\n --ux-ai-fg-from: var(--color-ai-900);\n --ux-ai-fg-to: var(--color-cherry-900);\n }\n\n :host > :not(svg) {\n position: relative;\n z-index: 1;\n }\n\n :host svg.ux-ai-card-bg__svg {\n position: absolute;\n inset: 0;\n z-index: 0;\n height: 100%;\n width: 100%;\n max-height: 100%;\n overflow: hidden;\n pointer-events: none;\n }\n\n .ux-ai-fg {\n will-change: fill;\n animation: ux-ai-fg-move 6s ease-in-out infinite;\n }\n\n .ux-ai-fg--1 {\n animation-delay: 0s;\n }\n\n .ux-ai-fg--2 {\n animation-delay: 2s;\n }\n\n .ux-ai-fg--3 {\n animation-delay: 4s;\n }\n\n @keyframes ux-ai-bg-move {\n 0%,\n 100% {\n background-color: var(--ux-ai-bg-from);\n }\n 50% {\n background-color: var(--ux-ai-bg-to);\n }\n }\n\n @keyframes ux-ai-fg-move {\n 0%,\n 100% {\n fill: var(--ux-ai-fg-from);\n }\n 50% {\n fill: var(--ux-ai-fg-to);\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n :host {\n animation: none;\n background-color: var(--ux-ai-bg-from);\n }\n\n .ux-ai-fg {\n animation: none;\n fill: var(--ux-ai-fg-from);\n }\n }\n `,\n template: `\n <svg\n class=\"ux-ai-card-bg__svg\"\n viewBox=\"0 0 400 300\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <defs>\n <filter [attr.id]=\"blurFilterId\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n <feGaussianBlur stdDeviation=\"30\" />\n </filter>\n </defs>\n <ellipse\n class=\"ux-ai-fg ux-ai-fg--1\"\n cx=\"60\"\n cy=\"50\"\n rx=\"120\"\n ry=\"100\"\n opacity=\"0.35\"\n [attr.filter]=\"blurFilterUrl\"\n />\n <ellipse\n class=\"ux-ai-fg ux-ai-fg--2\"\n cx=\"320\"\n cy=\"80\"\n rx=\"100\"\n ry=\"80\"\n opacity=\"0.3\"\n [attr.filter]=\"blurFilterUrl\"\n />\n <ellipse\n class=\"ux-ai-fg ux-ai-fg--3\"\n cx=\"200\"\n cy=\"240\"\n rx=\"140\"\n ry=\"90\"\n opacity=\"0.25\"\n [attr.filter]=\"blurFilterUrl\"\n />\n </svg>\n <ng-content />\n `\n})\nexport class AiCardBgComponent {\n readonly blurFilterId = `uxAiBlur_${++aiCardBgFilterId}`;\n\n get blurFilterUrl(): string {\n return `url(#${this.blurFilterId})`;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n input,\n OnInit,\n output,\n signal\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgClass } from '@angular/common';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { AiCardBgComponent } from '../ai-card-bg/ai-card-bg';\n\nexport interface AiInsight {\n id: number;\n title: string;\n description: string;\n actionLabel: string;\n icon: string;\n iconColor: string;\n}\n\n@Component({\n selector: 'ux-ai-insights-card',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AiCardBgComponent, FormsModule, NgClass, PaginatorModule],\n host: {\n class: 'ux-ai-insights-card block border border-blue-100 dark:border-midnight-400 rounded-2xl shadow-sm overflow-hidden transition-all duration-300 flex flex-col',\n '[class.ux-ai-expanded]': 'expanded()'\n },\n styles: `\n :host { display: flex; }\n `,\n template: `\n <ux-ai-card-bg class=\"flex flex-col flex-1 p-4\">\n <div class=\"motion-safe:animate-enter-liquid [animation-delay:80ms] flex flex-col flex-1\">\n <div class=\"flex items-center justify-between cursor-pointer shrink-0 pr-2\" (click)=\"expanded.set(!expanded())\">\n <div class=\"flex items-center gap-3\">\n <div class=\"w-[34px] h-[34px] rounded-[10px] flex items-center justify-center shrink-0\">\n <i class=\"pi pi-sparkles text-ai-600 dark:text-ai-300\"></i>\n </div>\n <div class=\"flex flex-col\">\n <h4 class=\"title-h4 text-left text-deepsea-500 dark:text-surface-0\">{{ title() }}</h4>\n <span class=\"text-midnight-700 dark:text-surface-100 text-sm font-medium leading-tight\">{{ insights().length }} insights available for your review</span>\n </div>\n </div>\n <i class=\"pi text-sm text-darkblue-500 dark:text-surface-0\" [ngClass]=\"expanded() ? 'pi-chevron-up' : 'pi-chevron-down'\"></i>\n </div>\n\n <div class=\"expand-body\" [class.expand-body--open]=\"expanded()\">\n <div class=\"expand-body__inner\">\n <div class=\"flex flex-col gap-4 mt-4\">\n <div class=\"bg-white/60 dark:bg-surface-800/60 border border-white dark:border-surface-700 rounded-[14px] shadow-sm flex items-center gap-4 px-4 py-2.5 shrink-0\">\n <i class=\"pi pi-search text-surface-500 dark:text-surface-300 text-sm\"></i>\n <input\n type=\"text\"\n [ngModel]=\"searchQuery()\"\n (ngModelChange)=\"searchQuery.set($event); page.set(0)\"\n [placeholder]=\"searchPlaceholder()\"\n class=\"bg-transparent border-none outline-none flex-1 text-sm font-medium text-deepsea-500 dark:text-surface-0 placeholder:text-surface-700 dark:placeholder:text-surface-300\"\n />\n </div>\n\n <div class=\"flex flex-col gap-3\">\n @for (insight of paginatedInsights(); track insight.id) {\n <div class=\"bg-white/70 dark:bg-surface-800/70 border border-white/50 dark:border-surface-700/50 rounded-[14px] shadow-sm p-4 flex gap-3 items-start shrink-0\">\n <i class=\"pi mt-0.5\" [ngClass]=\"[insight.icon, insight.iconColor]\"></i>\n <div class=\"flex flex-col gap-2 flex-1 min-w-0\">\n <div class=\"flex flex-col gap-1\">\n <span class=\"text-midnight-500 dark:text-surface-0 text-sm font-bold leading-[21px]\">{{ insight.title }}</span>\n <p class=\"text-midnight-400 dark:text-surface-300 text-sm leading-normal\">{{ insight.description }}</p>\n </div>\n <button\n class=\"flex items-center gap-1.5 text-darkblue-500 dark:text-primary-400 text-sm font-semibold cursor-pointer hover:underline bg-transparent border-none p-0 w-fit\"\n (click)=\"actionClick.emit(insight)\"\n >\n {{ insight.actionLabel }}\n <i class=\"pi pi-arrow-right text-xs\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n\n <div class=\"shrink-0 w-full border-t border-white/50 dark:border-surface-700/50 pt-2 mt-1 relative z-[1] bg-transparent\">\n <p-paginator\n [rows]=\"perPage()\"\n [totalRecords]=\"filteredInsights().length\"\n [first]=\"first()\"\n (onPageChange)=\"page.set($event.page ?? 0)\"\n [pageLinkSize]=\"3\"\n styleClass=\"w-full\"\n [pt]=\"{ root: { class: 'justify-center' } }\"\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </ux-ai-card-bg>\n `\n})\nexport class AiInsightsCardComponent implements OnInit {\n title = input.required<string>();\n insights = input.required<AiInsight[]>();\n searchPlaceholder = input('Search AI insights...');\n\n actionClick = output<AiInsight>();\n\n expanded = signal(false);\n searchQuery = signal('');\n\n filteredInsights = computed(() => {\n const query = this.searchQuery().trim().toLowerCase();\n if (!query) return this.insights();\n return this.insights().filter(i =>\n i.title.toLowerCase().includes(query) ||\n i.description.toLowerCase().includes(query)\n );\n });\n\n perPage = signal(this.calcPerPage());\n page = signal(0);\n first = computed(() => this.page() * this.perPage());\n paginatedInsights = computed(() => {\n const all = this.filteredInsights();\n return all.slice(this.first(), this.first() + this.perPage());\n });\n\n private destroyRef = inject(DestroyRef);\n\n ngOnInit() {\n const onResize = () => this.perPage.set(this.calcPerPage());\n window.addEventListener('resize', onResize);\n this.destroyRef.onDestroy(() => window.removeEventListener('resize', onResize));\n }\n\n private calcPerPage(): number {\n const shellOffset = 12 * 16;\n const cardChrome = 160 + 72;\n const insightCardHeight = 150;\n const available = (typeof window !== 'undefined' ? window.innerHeight : 900) - shellOffset - cardChrome;\n return Math.max(1, Math.floor(available / insightCardHeight));\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { TooltipModule } from 'primeng/tooltip';\n\nexport interface CompletionStep {\n type: 'mandatory' | 'optional';\n filled: boolean;\n name: string;\n}\n\nexport interface CompletionCategory {\n filled: number;\n total: number;\n}\n\n@Component({\n selector: 'ux-completion-steps',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TooltipModule],\n host: { class: 'block' },\n template: `\n <div class=\"card flex flex-col gap-4\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex items-center gap-3\">\n <div class=\"flex flex-col\">\n <span class=\"text-xs font-semibold text-surface-600 dark:text-surface-300 uppercase tracking-wide\">{{ title() }}</span>\n </div>\n </div>\n <span class=\"text-2xl font-bold\" [class]=\"filledTotal() > 0 ? 'text-surface-900 dark:text-surface-0' : 'text-surface-500 dark:text-surface-400'\">{{ filledTotal() }}/{{ totalRecords() }}</span>\n </div>\n\n <div class=\"flex items-center gap-1 flex-wrap\">\n @for (step of steps(); track $index) {\n <span class=\"inline-flex items-center justify-center w-6 h-6 rounded-full\"\n [class.cursor-pointer]=\"interactive()\"\n [class]=\"getDotStyle(step).bg\"\n [pTooltip]=\"step.name + (step.filled ? '' : ' (missing)')\" tooltipPosition=\"top\"\n (click)=\"interactive() && stepClick.emit($index)\">\n @if (getDotStyle(step).icon === 'pi') {\n <i class=\"pi text-[3px]\" [class]=\"getDotStyle(step).iconClass + ' ' + getDotStyle(step).text\"></i>\n } @else if (getDotStyle(step).icon === 'material') {\n <span class=\"material-symbols-outlined leading-none\" style=\"font-size:20px;transform:scale(0.9)\" [class]=\"getDotStyle(step).text\">{{ getDotStyle(step).iconClass }}</span>\n } @else {\n <span class=\"text-sm font-black leading-none\" [class]=\"getDotStyle(step).text\">!</span>\n }\n </span>\n }\n </div>\n\n <div class=\"flex flex-wrap items-center gap-x-6 gap-y-2 mt-1\">\n <div class=\"flex items-center gap-2\">\n <span class=\"inline-block w-4 h-4 rounded-full shrink-0\" [class]=\"legendMandatoryBg()\"></span>\n <span class=\"text-sm text-surface-600 dark:text-surface-300\">Mandatory:</span>\n <span class=\"text-sm font-semibold text-surface-900 dark:text-surface-0\">{{ mandatory().filled }}/{{ mandatory().total }}</span>\n </div>\n <div class=\"flex items-center gap-2\">\n <span class=\"inline-block w-4 h-4 rounded-full shrink-0\" [class]=\"legendOptionalBg()\"></span>\n <span class=\"text-sm text-surface-600 dark:text-surface-300\">Optional:</span>\n <span class=\"text-sm font-semibold text-surface-900 dark:text-surface-0\">{{ optional().filled }}/{{ optional().total }}</span>\n </div>\n <div class=\"flex items-center gap-2\">\n <span class=\"text-sm text-surface-600 dark:text-surface-300\">Total:</span>\n <span class=\"text-sm font-semibold text-surface-900 dark:text-surface-0\">{{ totalRecords() }}</span>\n </div>\n </div>\n\n @if (empty()) {\n <div class=\"empty-state\">\n <i class=\"pi pi-chart-bar text-3xl text-surface-500 dark:text-surface-400\"></i>\n <span class=\"empty-state-title\">{{ emptyTitle() }}</span>\n <span class=\"empty-state-desc\">{{ emptyDescription() }}</span>\n </div>\n }\n </div>\n `\n})\nexport class CompletionStepsComponent {\n title = input('Completion Steps');\n steps = input<CompletionStep[]>([]);\n mandatory = input<CompletionCategory>({ filled: 0, total: 0 });\n optional = input<CompletionCategory>({ filled: 0, total: 0 });\n totalRecords = input(0);\n interactive = input(false);\n emptyTitle = input('No progress tracked yet');\n emptyDescription = input('Progress is calculated automatically as you fill in the opportunity sections. Each dot represents a required or optional field — mandatory fields (bordered red) must be completed before submission.');\n\n stepClick = output<number>();\n\n private readonly dotStyles = {\n mandatoryFilled: { bg: 'bg-green-200 dark:bg-green-700', text: 'text-green-800 dark:text-green-50', icon: 'pi', iconClass: 'pi-check' },\n optionalFilled: { bg: 'bg-blue-200 dark:bg-blue-700', text: 'text-blue-800 dark:text-blue-50', icon: 'material', iconClass: 'info_i' },\n mandatoryMissing: { bg: 'bg-transparent border-2 border-red-400 dark:border-red-500', text: 'text-red-500 dark:text-red-400', icon: 'pi', iconClass: 'pi-plus' },\n optionalMissing: { bg: 'bg-transparent border-2 border-surface-300 dark:border-surface-600', text: 'text-surface-500 dark:text-surface-400', icon: 'material', iconClass: 'info_i' }\n };\n\n filledTotal = computed(() => this.mandatory().filled + this.optional().filled);\n empty = computed(() => this.filledTotal() === 0);\n\n legendMandatoryBg = computed(() =>\n this.mandatory().filled > 0 ? this.dotStyles.mandatoryFilled.bg : this.dotStyles.mandatoryMissing.bg\n );\n\n legendOptionalBg = computed(() =>\n this.optional().filled > 0 ? this.dotStyles.optionalFilled.bg : this.dotStyles.optionalMissing.bg\n );\n\n getDotStyle(step: CompletionStep) {\n if (step.filled) return step.type === 'mandatory' ? this.dotStyles.mandatoryFilled : this.dotStyles.optionalFilled;\n return step.type === 'mandatory' ? this.dotStyles.mandatoryMissing : this.dotStyles.optionalMissing;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, ContentChildren, DestroyRef, Directive, inject, input, model, PLATFORM_ID, QueryList, signal, TemplateRef } from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SelectModule } from 'primeng/select';\nimport { TabsModule } from 'primeng/tabs';\n\nexport interface DetailTab {\n value: string;\n label: string;\n icon?: string;\n}\n\n/**\n * Structural directive that marks a template as content for a specific tab\n * inside `<ux-detail-layout>`.\n *\n * Usage: `<ng-template uxDetailTab=\"overview\">...content...</ng-template>`\n */\n@Directive({ selector: '[uxDetailTab]' })\nexport class DetailTabDirective {\n readonly uxDetailTab = input.required<string>();\n constructor(public templateRef: TemplateRef<unknown>) {}\n}\n\n/**\n * Reusable detail-page layout shell: sticky header, tabbed main column,\n * and a persistent right sidebar (typically for AI insights).\n *\n * All styling derives from the active PrimeNG brand preset (BrandSoft / BrandCrisp /\n * BrandContrast) via `--p-*` CSS variables and Tailwind `surface-*` / `primary-*`\n * utilities (resolved by `tailwindcss-primeui`). No hardcoded colors.\n *\n * ```html\n * <ux-detail-layout [tabs]=\"myTabs\" [(activeTab)]=\"currentTab\">\n * <ng-container ux-detail-header>\n * ...sticky header content...\n * </ng-container>\n *\n * <ng-template uxDetailTab=\"overview\">...tab 1...</ng-template>\n * <ng-template uxDetailTab=\"scope\">...tab 2...</ng-template>\n *\n * <ng-container ux-detail-sidebar>\n * <!-- Use ng-container so children become direct children of the\n * library's flex container and inherit the gap spacing. -->\n * ...right sidebar (AI card, documents, etc.)...\n * </ng-container>\n *\n * </ux-detail-layout>\n * ```\n */\n@Component({\n selector: 'ux-detail-layout',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, FormsModule, SelectModule, TabsModule],\n host: { class: 'ux-detail-layout' },\n styles: `\n :host {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n font-family: var(--p-font-family, 'Noto Sans', sans-serif);\n background: transparent;\n color: var(--p-text-color);\n }\n\n .ux-dl__header {\n background: transparent;\n }\n\n .ux-dl__scroll {\n scrollbar-width: thin;\n scrollbar-color: color-mix(in srgb, var(--p-primary-color) 25%, transparent)\n color-mix(in srgb, var(--p-surface-500) 8%, transparent);\n }\n\n .ux-dl__scroll::-webkit-scrollbar { width: 10px; height: 10px; }\n .ux-dl__scroll::-webkit-scrollbar-track {\n background: color-mix(in srgb, var(--p-surface-500) 8%, transparent);\n border-radius: var(--p-content-border-radius, 0.375rem);\n }\n .ux-dl__scroll::-webkit-scrollbar-thumb {\n background: color-mix(in srgb, var(--p-primary-color) 25%, transparent);\n border-radius: var(--p-content-border-radius, 0.375rem);\n }\n .ux-dl__scroll::-webkit-scrollbar-thumb:hover {\n background: color-mix(in srgb, var(--p-primary-color) 45%, transparent);\n }\n\n .ux-dl__sidebar-inner { display: flex; flex-direction: column; gap: 1.5rem; }\n\n .ux-dl__header-meta {\n overflow: hidden;\n max-height: 80px;\n opacity: 1;\n transition: max-height 0.25s ease-out, opacity 0.2s ease-out;\n }\n .ux-dl__header-meta--hidden {\n max-height: 0;\n opacity: 0;\n }\n\n .ux-dl__tablist {\n display: flex;\n overflow: hidden;\n }\n\n .ux-dl__mobile-tabs {\n position: sticky;\n top: 0;\n z-index: 5;\n }\n\n `,\n template: `\n <div class=\"flex flex-col flex-1 min-h-0\">\n\n <!-- Sticky header (projected) -->\n <div class=\"ux-dl__header flex-shrink-0 z-10\">\n <div>\n <ng-content select=\"[ux-detail-header]\" />\n </div>\n <div class=\"ux-dl__header-meta\" [class.ux-dl__header-meta--hidden]=\"scrolled()\">\n <ng-content select=\"[ux-detail-header-meta]\" />\n </div>\n </div>\n\n <!-- p-tabs wraps tablist + scrollable panels for state binding -->\n <p-tabs class=\"flex flex-col flex-1 min-h-0\" [value]=\"activeTab()\" (valueChange)=\"activeTab.set($event + '')\">\n\n @if (!singleTab()) {\n <!-- Mobile: dropdown selector -->\n @if (isMobile()) {\n <div class=\"ux-dl__mobile-tabs\">\n <p-select\n [options]=\"tabOptions()\"\n [ngModel]=\"activeTab()\"\n (ngModelChange)=\"activeTab.set($event)\"\n optionLabel=\"label\"\n optionValue=\"value\"\n styleClass=\"w-full ux-dl__mobile-select\"\n />\n </div>\n }\n\n <!-- Desktop: horizontal tab bar (outside scroll → stays fixed below header) -->\n <p-tablist\n class=\"flex-shrink-0 ux-dl__tablist\"\n [style.display]=\"isMobile() ? 'none' : null\"\n [pt]=\"{ tabList: { class: 'p-0' } }\"\n >\n @for (tab of tabs(); track tab.value) {\n <p-tab [value]=\"tab.value\">\n @if (tab.icon) {\n <i [class]=\"tab.icon\" class=\"mr-2 text-sm\"></i>\n }\n {{ tab.label }}\n </p-tab>\n }\n </p-tablist>\n }\n\n <!-- Scrollable body (only content scrolls, tabs stay above) -->\n <div class=\"flex flex-col flex-1 min-h-0 overflow-y-auto overflow-x-hidden ux-dl__scroll\"\n (scroll)=\"onScroll($event)\">\n\n <!-- Content + Sidebar row -->\n <div class=\"flex flex-col lg:flex-row items-start gap-6 w-full py-4 lg:py-6\">\n\n <!-- Main column: tab panels -->\n <div class=\"w-full flex-1 min-w-0 flex flex-col gap-6\">\n <p-tabpanels>\n @for (tab of tabs(); track tab.value) {\n <p-tabpanel [value]=\"tab.value\">\n <div class=\"flex flex-col gap-6\">\n @if (getTabTemplate(tab.value); as tmpl) {\n <ng-container [ngTemplateOutlet]=\"tmpl\" />\n }\n </div>\n </p-tabpanel>\n }\n </p-tabpanels>\n </div>\n\n <!-- Sidebar -->\n <aside class=\"w-full lg:w-[380px] shrink-0 flex flex-col lg:sticky lg:top-4 lg:self-start lg:pb-8\">\n <div class=\"ux-dl__sidebar-inner w-full\">\n <ng-content select=\"[ux-detail-sidebar]\" />\n </div>\n </aside>\n </div>\n\n </div>\n\n </p-tabs>\n\n </div>\n `\n})\nexport class DetailLayoutComponent {\n /** Tab definitions for the main content area. */\n readonly tabs = input.required<DetailTab[]>();\n\n /** Currently active tab value (two-way bindable). */\n readonly activeTab = model<string>('');\n\n /** Options for the mobile tab dropdown. */\n readonly tabOptions = computed(() => this.tabs().map(t => ({ label: t.label, value: t.value })));\n\n /** True when there is only a single tab, making the tab bar redundant. */\n readonly singleTab = computed(() => this.tabs().length <= 1);\n\n /** True when viewport is below the lg breakpoint (1024px). */\n readonly isMobile = signal(false);\n\n /** True once the scrollable body has been scrolled past the threshold. */\n readonly scrolled = signal(false);\n\n constructor() {\n if (isPlatformBrowser(inject(PLATFORM_ID))) {\n const mql = window.matchMedia('(max-width: 1023px)');\n this.isMobile.set(mql.matches);\n const handler = (e: MediaQueryListEvent) => this.isMobile.set(e.matches);\n mql.addEventListener('change', handler);\n inject(DestroyRef).onDestroy(() => mql.removeEventListener('change', handler));\n }\n\n }\n\n /** Tab content templates provided by the consumer. */\n @ContentChildren(DetailTabDirective) tabTemplates!: QueryList<DetailTabDirective>;\n\n getTabTemplate(value: string): TemplateRef<unknown> | null {\n const match = this.tabTemplates?.find(t => t.uxDetailTab() === value);\n return match?.templateRef ?? null;\n }\n\n onScroll(event: Event) {\n const el = event.target as HTMLElement;\n this.scrolled.set(el.scrollTop > 10);\n }\n}\n","import { ChangeDetectionStrategy, Component, input, model } from '@angular/core';\n\nexport interface PillTabItem {\n value: string;\n label: string;\n}\n\n/**\n * Horizontal row of pill-shaped sub-tab buttons. Styling aligns with sidebar menu item\n * hover/active tokens (`--d-menuitem-*`).\n */\n@Component({\n selector: 'ux-pill-tabs',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'ux-pill-tabs block' },\n styles: `\n .ux-pill-tabs__row {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n }\n\n .ux-pill-tabs__btn {\n border-radius: 9999px;\n padding: 0.375rem 0.875rem;\n font-size: var(--p-font-size, 0.875rem);\n font-weight: 600;\n font-family: inherit;\n cursor: pointer;\n transition: all 0.15s ease;\n border: 1px solid var(--p-primary-800);\n background: transparent;\n color: var(--p-text-muted-color);\n }\n\n :host-context(.app-dark) .ux-pill-tabs__btn:not(.ux-pill-tabs__btn--active) {\n border-color: var(--p-surface-700);\n }\n\n .ux-pill-tabs__btn:hover:not(.ux-pill-tabs__btn--active) {\n background: var(--d-menuitem-hover-bg);\n color: var(--p-primary-950);\n }\n\n :host-context(.app-dark) .ux-pill-tabs__btn:hover:not(.ux-pill-tabs__btn--active) {\n color: var(--p-primary-200);\n }\n\n .ux-pill-tabs__btn--active {\n background: var(--p-primary-200);\n border-color: transparent;\n color: var(--p-primary-950);\n }\n\n :host-context(.app-dark) .ux-pill-tabs__btn--active {\n color: var(--p-primary-950);\n }\n\n .ux-pill-tabs__btn:focus {\n outline: none;\n box-shadow: none;\n }\n\n .ux-pill-tabs__btn:focus-visible {\n outline: none;\n box-shadow: var(--d-menuitem-focus-shadow);\n }\n `,\n template: `\n <div class=\"ux-pill-tabs__row\" role=\"tablist\">\n @for (item of items(); track item.value) {\n <button\n type=\"button\"\n class=\"ux-pill-tabs__btn\"\n role=\"tab\"\n [attr.aria-selected]=\"activeValue() === item.value\"\n [class.ux-pill-tabs__btn--active]=\"activeValue() === item.value\"\n (click)=\"activeValue.set(item.value)\"\n >\n {{ item.label }}\n </button>\n }\n </div>\n `\n})\nexport class PillTabsComponent {\n readonly items = input.required<PillTabItem[]>();\n readonly activeValue = model<string>('');\n}\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, model, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MenuItem } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { Menu, MenuModule } from 'primeng/menu';\nimport { PanelModule } from 'primeng/panel';\nimport { TableModule } from 'primeng/table';\nimport { TagModule } from 'primeng/tag';\nimport { PillTabsComponent, PillTabItem } from '../pill-tabs/pill-tabs';\n\nexport interface DocumentItem {\n id: number;\n fileName: string;\n type: string;\n fileSize: string;\n uploadDate: string;\n owner: string;\n icon: string;\n}\n\n@Component({\n selector: 'ux-documents-card',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, FormsModule, ButtonModule, FileUploadModule, IconFieldModule, InputIconModule, InputTextModule, MenuModule, TableModule, TagModule, PillTabsComponent, PanelModule],\n host: { class: 'ux-documents-card block' },\n styles: ``,\n template: `\n <div class=\"card flex flex-col overflow-hidden\">\n <p-panel [toggleable]=\"true\" [collapsed]=\"!expanded()\" (collapsedChange)=\"expanded.set(!$event)\" toggler=\"header\">\n <ng-template #headericons let-collapsed>\n <i class=\"pi text-sm text-darkblue-500 dark:text-surface-0\" [ngClass]=\"collapsed ? 'pi-chevron-down' : 'pi-chevron-up'\"></i>\n </ng-template>\n <ng-template #header>\n <div class=\"flex items-center gap-3 flex-1\">\n <div class=\"w-[34px] h-[34px] rounded-[10px] flex items-center justify-center shrink-0\">\n <i class=\"pi pi-folder text-deepsea-500 dark:text-surface-0\"></i>\n </div>\n <div class=\"flex flex-col\">\n <h4 class=\"title-h4 text-left text-deepsea-500 dark:text-surface-0\">Documents</h4>\n <span class=\"text-surface-500 dark:text-surface-300 text-sm font-medium leading-tight\">{{ summary() }}</span>\n </div>\n </div>\n </ng-template>\n <div class=\"flex flex-col gap-4 pt-4\">\n <ux-pill-tabs [items]=\"pillTabItems()\" [(activeValue)]=\"activeFilter\" />\n\n <p-iconfield>\n <p-inputicon class=\"pi pi-search\" />\n <input pInputText [(ngModel)]=\"searchQuery\" placeholder=\"Search documents\" class=\"w-full\" />\n </p-iconfield>\n\n @if (filtered().length > 0) {\n <p-table\n [value]=\"filtered()\"\n [paginator]=\"true\"\n [rows]=\"rows()\"\n sortMode=\"multiple\"\n styleClass=\"flex flex-col rounded-2xl overflow-hidden [&>[data-pc-section=paginatorcontainer]]:border-0! [&>[data-pc-section=paginatorcontainer]]:mt-auto [&_[data-pc-name=pcpaginator]]:rounded-none!\"\n tableStyleClass=\"w-full table-fixed\"\n paginatorTemplate=\"FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink\"\n >\n <ng-template #header>\n <tr>\n <th pSortableColumn=\"fileName\" class=\"w-1/2\">File Name <p-sortIcon field=\"fileName\" /></th>\n <th pSortableColumn=\"type\" class=\"w-1/4\">Type <p-sortIcon field=\"type\" /></th>\n <th class=\"w-1/4\">Actions</th>\n </tr>\n </ng-template>\n <ng-template #body let-doc>\n <tr>\n <td>\n <div class=\"flex items-center gap-3 py-1 min-w-0\">\n <i class=\"pi text-xl text-surface-600 dark:text-surface-300 shrink-0\" [ngClass]=\"doc.icon\"></i>\n <span class=\"text-surface-700 dark:text-surface-100 text-sm truncate\">{{ doc.fileName }}</span>\n </div>\n </td>\n <td>\n <p-tag [value]=\"doc.type\" styleClass=\"px-2 py-1\" />\n </td>\n <td>\n <div class=\"flex items-center gap-1\">\n <p-button icon=\"pi pi-download\" [rounded]=\"true\" [text]=\"true\" size=\"small\" severity=\"secondary\" styleClass=\"cursor-pointer\" ariaLabel=\"Download\" />\n <p-button icon=\"pi pi-ellipsis-h\" [rounded]=\"true\" [text]=\"true\" size=\"small\" severity=\"secondary\" styleClass=\"cursor-pointer\" ariaLabel=\"More options\" (onClick)=\"onMenuToggle($event, doc, docMenu)\" />\n <p-menu #docMenu [model]=\"menuItems\" [popup]=\"true\" styleClass=\"w-48\" appendTo=\"body\" />\n </div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n } @else {\n <div class=\"flex flex-col items-center gap-3 py-8 text-center\">\n <i class=\"pi pi-folder-open text-3xl text-surface-300 dark:text-surface-500\"></i>\n <span class=\"text-surface-600 dark:text-surface-300 text-sm\">No documents to show</span>\n </div>\n }\n\n <p-fileupload\n name=\"documents[]\"\n [multiple]=\"true\"\n maxFileSize=\"10000000\"\n mode=\"advanced\"\n [auto]=\"false\"\n chooseLabel=\"Upload File\"\n chooseIcon=\"pi pi-upload\"\n [showUploadButton]=\"false\"\n [showCancelButton]=\"false\"\n [pt]=\"{ root: { class: 'bg-transparent' }, header: { class: 'bg-transparent' }, content: { class: 'bg-transparent' } }\"\n >\n <ng-template #header let-chooseCallback=\"chooseCallback\">\n <div class=\"flex items-center gap-2 w-full\">\n <p-button icon=\"pi pi-upload\" label=\"Upload File\" (onClick)=\"chooseCallback()\" />\n <p-button icon=\"pi pi-link\" label=\"Share Link\" [outlined]=\"true\" styleClass=\"!text-primary-600 !border-primary-600\" />\n </div>\n </ng-template>\n <ng-template #empty>\n <div class=\"flex flex-col items-center gap-2 py-4\">\n <i class=\"pi pi-cloud-upload text-2xl text-surface-400 dark:text-surface-300\"></i>\n <span class=\"text-surface-500 dark:text-surface-100 text-sm\">Drag and drop files here</span>\n </div>\n </ng-template>\n </p-fileupload>\n </div>\n </p-panel>\n </div>\n `\n})\nexport class DocumentsCardComponent {\n documents = input<DocumentItem[]>([]);\n rows = input(5);\n\n expanded = signal(false);\n activeFilter = signal('All Files');\n searchQuery = model('');\n\n private fileTypes = computed(() => {\n const types = [...new Set(this.documents().map(d => d.type))];\n types.sort();\n return types;\n });\n\n filterOptions = computed(() => ['All Files', ...this.fileTypes(), 'Other']);\n\n pillTabItems = computed<PillTabItem[]>(() =>\n this.filterOptions().map(f => ({ value: f, label: f }))\n );\n\n summary = computed(() => {\n const docs = this.documents();\n const count = docs.length;\n if (count === 0) return 'No files attached';\n const types = this.fileTypes();\n const fileWord = count === 1 ? 'file' : 'files';\n if (types.length === 0) return `${count} ${fileWord} attached`;\n return `${count} ${fileWord} · ${types.join(', ')}`;\n });\n\n filtered = computed(() => {\n let docs = this.documents();\n const query = this.searchQuery().trim().toLowerCase();\n if (query) {\n docs = docs.filter(d => d.fileName.toLowerCase().includes(query) || d.owner.toLowerCase().includes(query));\n }\n const filter = this.activeFilter();\n if (filter === 'All Files') return docs;\n if (filter === 'Other') {\n const knownTypes = this.fileTypes();\n return docs.filter(d => !knownTypes.includes(d.type));\n }\n return docs.filter(d => d.type === filter);\n });\n\n menuItems: MenuItem[] = [];\n\n onMenuToggle(event: Event, _doc: DocumentItem, menu: Menu) {\n this.menuItems = [\n { label: 'Preview', icon: 'pi pi-eye' },\n { label: 'Share', icon: 'pi pi-share-alt' },\n { separator: true },\n { label: 'Delete', icon: 'pi pi-trash', styleClass: 'text-red-500' }\n ];\n menu.toggle(event);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model, output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SelectModule } from 'primeng/select';\n\n@Component({\n selector: 'ux-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, SelectModule],\n host: { class: 'ux-select' },\n styles: `\n :host :deep .p-select {\n border-radius: var(--p-content-border-radius, 0.375rem);\n font-family: var(--p-font-family, 'Noto Sans', sans-serif);\n font-size: var(--font-size-sm, 0.875rem);\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n padding: 0.5rem 1.5rem;\n }\n\n :host :deep .p-select:not(.p-disabled):hover {\n border-color: var(--p-primary-400);\n }\n\n :host :deep .p-select:not(.p-disabled).p-focus {\n border-color: var(--p-primary-500);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--p-primary-500) 20%, transparent);\n }\n\n :host :deep .p-select-label {\n font-size: var(--font-size-sm, 0.875rem);\n color: var(--p-text-color);\n }\n\n :host :deep .p-select-label.p-placeholder {\n color: var(--p-text-muted-color);\n }\n\n :host :deep .p-select-dropdown {\n color: var(--p-text-muted-color);\n }\n\n :host-context(:root[class*='app-dark']) :deep .p-select:not(.p-disabled):hover {\n border-color: var(--p-primary-300);\n }\n\n :host-context(:root[class*='app-dark']) :deep .p-select:not(.p-disabled).p-focus {\n border-color: var(--p-primary-400);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--p-primary-400) 25%, transparent);\n }\n `,\n template: `\n <p-select\n [options]=\"options()\"\n [optionLabel]=\"optionLabel()\"\n [optionValue]=\"optionValue()\"\n [optionGroupLabel]=\"optionGroupLabel()\"\n [optionGroupChildren]=\"optionGroupChildren()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [filter]=\"filter()\"\n [showClear]=\"showClear()\"\n [emptyMessage]=\"emptyMessage()\"\n [group]=\"group()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"value.set($event)\"\n (onChange)=\"onChange.emit($event)\"\n (onFilter)=\"onFilter.emit($event)\"\n [styleClass]=\"resolvedStyleClass()\"\n />\n `\n})\nexport class UxSelectComponent {\n readonly options = input<any[]>([]);\n readonly optionLabel = input<string>('label');\n readonly optionValue = input<string>('value');\n readonly optionGroupLabel = input<string>('label');\n readonly optionGroupChildren = input<string>('items');\n readonly placeholder = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly filter = input<boolean>(false);\n readonly showClear = input<boolean>(false);\n readonly emptyMessage = input<string>('No results found');\n readonly group = input<boolean>(false);\n readonly styleClass = input<string>('');\n\n readonly value = model<any>(null);\n\n readonly onChange = output<any>();\n readonly onFilter = output<any>();\n\n readonly resolvedStyleClass = computed(() => {\n const base = 'ux-select__inner';\n const extra = this.styleClass();\n return extra ? `${base} ${extra}` : base;\n });\n}\n","import { ChangeDetectionStrategy, Component, computed, input, model, OnChanges, output, SimpleChanges } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AutoCompleteCompleteEvent, AutoCompleteModule } from 'primeng/autocomplete';\nimport { AvatarModule } from 'primeng/avatar';\nimport { ButtonModule } from 'primeng/button';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { DividerModule } from 'primeng/divider';\nimport { DrawerModule } from 'primeng/drawer';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { SelectModule } from 'primeng/select';\nimport { TextareaModule } from 'primeng/textarea';\n\nexport interface TaskDrawerMember {\n name?: string;\n image: string;\n}\n\nexport interface TaskDrawerTask {\n id: number | null;\n title: string;\n description: string | null;\n status: string;\n completed: boolean;\n startDate: string | null;\n endDate: string | null;\n members: TaskDrawerMember[];\n}\n\ninterface FormData {\n id: number | null;\n title: string;\n description: string;\n status: string;\n completed: boolean;\n startDate: Date | null;\n endDate: Date | null;\n members: TaskDrawerMember[];\n}\n\ninterface StatusOption {\n label: string;\n value: string;\n}\n\n@Component({\n selector: 'ux-task-drawer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ButtonModule, DrawerModule, InputTextModule, TextareaModule, SelectModule, DatePickerModule, AutoCompleteModule, DividerModule, AvatarModule],\n host: { class: 'ux-task-drawer' },\n template: `\n <p-drawer [visible]=\"visible()\" position=\"right\" styleClass=\"w-full! md:w-[420px]!\" (onHide)=\"onHide()\" (visibleChange)=\"visible.set($event)\" appendTo=\"body\">\n <ng-template #header>\n <div class=\"flex items-center gap-3\">\n <i class=\"pi pi-list-check text-xl text-primary-500\"></i>\n <span class=\"text-surface-900 dark:text-surface-0 font-semibold text-lg\">{{ drawerTitle() }}</span>\n </div>\n </ng-template>\n\n <div class=\"flex flex-col gap-6 p-1\">\n <div class=\"flex flex-col gap-2\">\n <label for=\"task-title\" class=\"text-surface-900 dark:text-surface-0 font-medium text-sm\">Task Title</label>\n <input pInputText id=\"task-title\" [(ngModel)]=\"formData.title\" placeholder=\"Enter task title...\" class=\"w-full\" />\n </div>\n\n <div class=\"flex flex-col gap-2\">\n <label for=\"task-description\" class=\"text-surface-900 dark:text-surface-0 font-medium text-sm\">Description</label>\n <textarea pTextarea id=\"task-description\" [(ngModel)]=\"formData.description\" placeholder=\"Enter task description...\" [rows]=\"4\" class=\"w-full\"></textarea>\n </div>\n\n <div class=\"flex flex-col gap-2\">\n <label for=\"task-status\" class=\"text-surface-900 dark:text-surface-0 font-medium text-sm\">Status</label>\n <p-select id=\"task-status\" [(ngModel)]=\"formData.status\" [options]=\"statusOptions\" optionLabel=\"label\" optionValue=\"value\" placeholder=\"Select status\" styleClass=\"w-full\" />\n </div>\n\n <p-divider styleClass=\"my-2\" />\n\n <div class=\"flex flex-col gap-2\">\n <label for=\"start-date\" class=\"text-surface-900 dark:text-surface-0 font-medium text-sm\">Start Date</label>\n <p-datepicker id=\"start-date\" [(ngModel)]=\"formData.startDate\" dateFormat=\"dd.mm.yy\" placeholder=\"Select start date\" inputStyleClass=\"w-full\" />\n </div>\n\n <div class=\"flex flex-col gap-2\">\n <label for=\"end-date\" class=\"text-surface-900 dark:text-surface-0 font-medium text-sm\">End Date</label>\n <p-datepicker id=\"end-date\" [(ngModel)]=\"formData.endDate\" dateFormat=\"dd.mm.yy\" placeholder=\"Select end date\" inputStyleClass=\"w-full\" />\n </div>\n\n <p-divider styleClass=\"my-2\" />\n\n <div class=\"flex flex-col gap-2\">\n <label for=\"team-members\" class=\"text-surface-900 dark:text-surface-0 font-medium text-sm\">Team Members</label>\n <p-autocomplete\n id=\"team-members\"\n [(ngModel)]=\"formData.members\"\n [suggestions]=\"filteredMembers\"\n optionLabel=\"name\"\n [multiple]=\"true\"\n placeholder=\"Search team members...\"\n (completeMethod)=\"filterMembers($event)\"\n styleClass=\"w-full\"\n >\n <ng-template #selecteditem let-value>\n <div class=\"flex items-center gap-2 bg-surface-50 dark:bg-surface-900 px-2 py-1 rounded\">\n <p-avatar [image]=\"'demo/images/avatar/' + value.image\" shape=\"circle\" styleClass=\"w-5 h-5 border border-surface-200 dark:border-surface-700\" />\n </div>\n </ng-template>\n <ng-template #item let-option>\n <div class=\"flex items-center gap-3\">\n <p-avatar [image]=\"'demo/images/avatar/' + option.image\" shape=\"circle\" styleClass=\"w-8 h-8 border border-surface-200 dark:border-surface-700\" />\n <span class=\"text-surface-900 dark:text-surface-0 font-medium\">{{ option.name }}</span>\n </div>\n </ng-template>\n </p-autocomplete>\n </div>\n </div>\n\n <ng-template #footer>\n <div class=\"flex justify-end gap-3 pt-4 border-t border-surface-200 dark:border-surface-700\">\n <p-button label=\"Cancel\" icon=\"pi pi-times\" [outlined]=\"true\" severity=\"secondary\" (onClick)=\"handleCancel()\" styleClass=\"flex-1\" />\n <p-button [label]=\"mode() === 'create' ? 'Create Task' : 'Update Task'\" [icon]=\"mode() === 'create' ? 'pi pi-plus' : 'pi pi-check'\" (onClick)=\"handleSave()\" styleClass=\"flex-1\" />\n </div>\n </ng-template>\n </p-drawer>\n `\n})\nexport class TaskDrawerComponent implements OnChanges {\n visible = model(false);\n task = input<TaskDrawerTask | null>(null);\n mode = input<'create' | 'edit'>('create');\n availableMembers = input<TaskDrawerMember[]>([\n { name: 'Amy Elsner', image: 'amyelsner.png' },\n { name: 'Anna Fali', image: 'annafali.png' },\n { name: 'Asiya Javayant', image: 'asiyajavayant.png' },\n { name: 'Bernardo Dominic', image: 'bernardodominic.png' }\n ]);\n\n save = output<TaskDrawerTask>();\n cancel = output<void>();\n\n drawerTitle = computed(() => this.mode() === 'create' ? 'Create New Task' : 'Edit Task');\n\n formData: FormData = {\n id: null,\n title: '',\n description: '',\n status: 'pending',\n completed: false,\n startDate: null,\n endDate: null,\n members: []\n };\n\n statusOptions: StatusOption[] = [\n { label: 'Pending', value: 'pending' },\n { label: 'In Progress', value: 'in-progress' },\n { label: 'Completed', value: 'completed' }\n ];\n\n filteredMembers: TaskDrawerMember[] = [];\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['task']) {\n const newTask = changes['task'].currentValue;\n if (newTask) {\n this.formData = {\n id: newTask.id,\n title: newTask.title || '',\n description: newTask.description || '',\n status: newTask.status || 'pending',\n completed: newTask.completed || false,\n startDate: newTask.startDate ? this.parseDate(newTask.startDate) : null,\n endDate: newTask.endDate ? this.parseDate(newTask.endDate) : null,\n members: newTask.members || []\n };\n } else {\n this.resetForm();\n }\n }\n }\n\n parseDate(dateStr: string): Date | null {\n if (!dateStr) return null;\n const parts = dateStr.split('.');\n if (parts.length === 3) {\n return new Date(parseInt(parts[2]), parseInt(parts[1]) - 1, parseInt(parts[0]));\n }\n return null;\n }\n\n resetForm() {\n this.formData = {\n id: null,\n title: '',\n description: '',\n status: 'pending',\n completed: false,\n startDate: null,\n endDate: null,\n members: []\n };\n }\n\n filterMembers(event: AutoCompleteCompleteEvent) {\n const members = this.availableMembers();\n if (!event.query) {\n this.filteredMembers = members;\n return;\n }\n this.filteredMembers = members.filter(member =>\n member.name?.toLowerCase().includes(event.query.toLowerCase())\n );\n }\n\n formatDateForSave(date: Date | null): string | null {\n if (!date) return null;\n const d = new Date(date);\n return `${String(d.getDate()).padStart(2, '0')}.${String(d.getMonth() + 1).padStart(2, '0')}.${d.getFullYear()}`;\n }\n\n handleSave() {\n const taskData: TaskDrawerTask = {\n id: this.formData.id,\n title: this.formData.title,\n description: this.formData.description || null,\n status: this.formData.status,\n completed: this.formData.status === 'completed',\n startDate: this.formatDateForSave(this.formData.startDate),\n endDate: this.formatDateForSave(this.formData.endDate),\n members: this.formData.members\n };\n\n this.save.emit(taskData);\n this.handleCancel();\n }\n\n handleCancel() {\n this.resetForm();\n this.cancel.emit();\n this.visible.set(false);\n }\n\n onHide() {\n this.handleCancel();\n }\n}\n","/*\n * Public API Surface of @unopsitg/ux\n */\nexport * from './lib/theme';\nexport * from './lib/layout';\nexport * from './lib/components';\nexport * from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","brandPresetMap","i1","i4","i5","i6","i3","i7","i9","i8","i10"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA;;;;;;;AAOG;AAEI,MAAM,eAAe,GAAG;IAC3B,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;IAC1L,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;IACvL,GAAG,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;IACtL,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;IACzL,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;IACzL,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;IACxL,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;IACvL,SAAS,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;IAC5L,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE;IACxL,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,E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"}