@kiranshub/dashboard-ui 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kiranshub-dashboard-ui.mjs","sources":["../../../projects/component-lib/src/lib/component-lib.ts","../../../projects/component-lib/src/lib/atoms/button/button.component.ts","../../../projects/component-lib/src/lib/atoms/button/button.component.html","../../../projects/component-lib/src/lib/atoms/icons/icons.ts","../../../projects/component-lib/src/lib/atoms/icons/icon.component.ts","../../../projects/component-lib/src/lib/atoms/icons/icon.component.html","../../../projects/component-lib/src/lib/atoms/card/card.component.ts","../../../projects/component-lib/src/lib/atoms/card/card.component.html","../../../projects/component-lib/src/lib/molecules/grid/grid.component.ts","../../../projects/component-lib/src/lib/molecules/grid/grid.component.html","../../../projects/component-lib/src/lib/organisms/sidebar.component.ts","../../../projects/component-lib/src/lib/organisms/sidebar.component.html","../../../projects/component-lib/src/lib/molecules/nav-list/nav-list.component.ts","../../../projects/component-lib/src/lib/molecules/nav-list/nav-list.component.html","../../../projects/component-lib/src/lib/services/theme.service.ts","../../../projects/component-lib/src/lib/templates/dashboard.component.ts","../../../projects/component-lib/src/lib/templates/dashboard.component.html","../../../projects/component-lib/src/public-api.ts","../../../projects/component-lib/src/kiranshub-dashboard-ui.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-component-lib',\n imports: [],\n template: ` <p>component-lib works!</p> `,\n styles: ``,\n})\nexport class ComponentLib {}\n","import { Component, output, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'outline';\nexport type ButtonSize = 'small' | 'medium' | 'large';\nexport type ButtonType = 'button' | 'submit' | 'reset';\n\n@Component({\n selector: 'particle-button',\n imports: [CommonModule],\n templateUrl: './button.component.html',\n styleUrl: './button.component.scss',\n})\nexport class ParticleButton {\n readonly variant = input<ButtonVariant>('primary');\n readonly size = input<ButtonSize>('medium');\n readonly disabled = input<boolean>(false);\n readonly type = input<ButtonType>('button');\n readonly clicked = output<void>();\n\n protected onClick(): void {\n if (!this.disabled()) {\n this.clicked.emit();\n }\n }\n\n protected getClasses(): string {\n const base = 'btn';\n const sizeClasses: Record<ButtonSize, string> = {\n small: 'btn-small',\n medium: 'btn-medium',\n large: 'btn-large',\n };\n const variantClasses: Record<ButtonVariant, string> = {\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n outline: 'btn-outline',\n };\n\n const sizeClass = sizeClasses[this.size()] || 'btn-medium';\n const variantClass = variantClasses[this.variant()] || 'btn-primary';\n\n return `${base} ${sizeClass} ${variantClass}`;\n }\n}\n","<button\n [ngClass]=\"getClasses()\"\n [disabled]=\"disabled()\"\n [type]=\"type()\"\n (click)=\"onClick()\"\n>\n <ng-content></ng-content>\n</button>\n","export const ICONS: Record<string, string> = {\n menu: '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5\"/></svg>',\n 'chevron-left':\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 19.5 8.25 12l7.5-7.5\"/></svg>',\n 'chevron-right':\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m8.25 4.5 7.5 7.5-7.5 7.5\"/></svg>',\n xmark:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18 18 6M6 6l12 12\"/></svg>',\n home: '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m2.25 12 8.954-8.955c.44-.439 1.152-.439 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25\"/></svg>',\n 'chart-bar':\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z\"/></svg>',\n users:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 19.128a9.38 9.38 0 0 0 2.625.372 9.337 9.337 0 0 0 4.121-.952 4.125 4.125 0 0 0-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 0 1 8.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0 1 11.964-3.07M12 6.375a3.375 3.375 0 1 1-6.75 0 3.375 3.375 0 0 1 6.75 0Zm8.25 2.25a2.625 2.625 0 1 1-5.25 0 2.625 2.625 0 0 1 5.25 0Z\"/></svg>',\n cog: '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M4.5 12a7.5 7.5 0 0 0 15 0m-15 0a7.5 7.5 0 1 1 15 0m-15 0H3m16.5 0H21m-1.5 0H12m-8.457 3.077 1.41-.513m14.095-5.13 1.41-.513M5.106 17.785l1.15-.964m11.49-9.642 1.149-.964M7.501 19.795l.75-1.3m7.5-12.99.75-1.3m-6.063 16.658.26-1.477m2.605-14.772.26-1.477m0 17.726-.26-1.477M10.698 4.614l-.26-1.477M16.5 19.794l-.75-1.299M7.5 4.205 12 12m6.894 5.785-1.149-.964M6.256 7.178l-1.15-.964m15.352 8.864-1.41-.513M4.954 9.435l-1.41-.514M12.002 12l-3.75 6.495\"/></svg>',\n sun: '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z\"/></svg>',\n moon: '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z\"/></svg>',\n bell: '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0\"/></svg>',\n folder:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 12.75V12A2.25 2.25 0 0 1 4.5 9.75h15A2.25 2.25 0 0 1 21.75 12v.75m-8.69-6.44-2.12-2.12a1.5 1.5 0 0 0-1.061-.44H4.5A2.25 2.25 0 0 0 2.25 6v12a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18V9a2.25 2.25 0 0 0-2.25-2.25h-5.379a1.5 1.5 0 0 1-1.06-.44Z\"/></svg>',\n 'shopping-cart':\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 3h1.386c.51 0 .955.343 1.087.835l.383 1.437M7.5 14.25a3 3 0 0 0-3 3h15.75m-12.75-3h11.218c1.121-2.3 2.1-4.684 2.924-7.138a60.114 60.114 0 0 0-16.536-1.84M7.5 14.25 5.106 5.272M6 20.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Zm12.75 0a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z\"/></svg>',\n mail: '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M21.75 6.75v10.5a2.25 2.25 0 0 1-2.25 2.25h-15a2.25 2.25 0 0 1-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25m19.5 0v.243a2.25 2.25 0 0 1-1.07 1.916l-7.5 4.615a2.25 2.25 0 0 1-2.36 0L3.32 8.91a2.25 2.25 0 0 1-1.07-1.916V6.75\"/></svg>',\n 'information-circle':\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z\"/></svg>',\n user: '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 6a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0ZM4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.933 17.933 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632Z\"/></svg>',\n logout:\n '<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15M12 9l-3 3m0 0 3 3m-3-3h12.75\"/></svg>',\n};\n\nexport type IconName = keyof typeof ICONS;\n","import { Component, input, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ICONS } from './icons';\n\nexport type IconName = keyof typeof ICONS;\nexport type IconSize = 'small' | 'medium' | 'large';\n\n@Component({\n selector: 'particle-icon',\n imports: [CommonModule],\n templateUrl: './icon.component.html',\n styleUrl: './icon.component.scss',\n})\nexport class ParticleIcon {\n readonly name = input.required<IconName>();\n readonly size = input<IconSize>('medium');\n\n constructor(private sanitizer: DomSanitizer) {}\n\n protected svgContent = computed(() => {\n const iconName = this.name();\n const svg = ICONS[iconName] || '';\n return this.sanitizer.bypassSecurityTrustHtml(svg) as SafeHtml;\n });\n\n protected getSizeClass(): string {\n return `icon-${this.size()}`;\n }\n}\n","<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke-width=\"1.5\"\n stroke=\"currentColor\"\n [class]=\"getSizeClass()\"\n [innerHTML]=\"svgContent()\"\n></svg>\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'particle-card',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './card.component.html',\n styleUrl: './card.component.scss',\n})\nexport class CardComponent {}\n","<div class=\"card\">\n <ng-content></ng-content>\n</div>\n","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type GridGap = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type GridCols = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\n@Component({\n selector: 'particle-grid',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './grid.component.html',\n styleUrl: './grid.component.scss',\n})\nexport class GridComponent {\n readonly gap = input<GridGap>('md');\n readonly cols = input<GridCols>(4);\n}\n","<div class=\"grid\" [class]=\"'gap-' + gap()\">\n <ng-content></ng-content>\n</div>\n","import { Component, input, output } from '@angular/core';\nimport type { IconName } from '../atoms/icons/icon.component';\nimport { ParticleIcon } from '../atoms/icons/icon.component';\n\nexport interface NavListItem {\n label: string;\n icon: IconName;\n route?: string;\n}\n\n@Component({\n selector: 'particle-sidebar',\n standalone: true,\n imports: [ParticleIcon],\n templateUrl: './sidebar.component.html',\n styleUrl: './sidebar.component.scss',\n})\nexport class SidebarComponent {\n readonly appTitle = input<string>('');\n readonly collapsed = input<boolean>(false);\n readonly isMobile = input<boolean>(false);\n readonly toggle = output<void>();\n}\n","<aside class=\"sidebar\" [class.collapsed]=\"collapsed()\">\n <div class=\"sidebar-header\">\n <button class=\"sidebar-toggle\" (click)=\"toggle.emit()\" aria-label=\"Toggle sidebar\">\n <particle-icon\n [name]=\"isMobile() ? 'xmark' : collapsed() ? 'chevron-right' : 'chevron-left'\"\n size=\"medium\"\n />\n </button>\n @if (appTitle() && !collapsed()) {\n <h1 class=\"app-title\">{{ appTitle() }}</h1>\n }\n <ng-content select=\"[sidebarHeader]\"></ng-content>\n </div>\n <div class=\"sidebar-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"sidebar-footer\">\n <ng-content select=\"[sidebarFooter]\"></ng-content>\n </div>\n</aside>\n","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\n\nimport { ParticleIcon } from '../../atoms/icons/icon.component';\nimport type { NavListItem } from '../../organisms/sidebar.component';\n\n@Component({\n selector: 'particle-nav-list',\n standalone: true,\n imports: [CommonModule, RouterLink, RouterLinkActive, ParticleIcon],\n templateUrl: './nav-list.component.html',\n styleUrl: './nav-list.component.scss',\n})\nexport class NavListComponent {\n readonly items = input<readonly NavListItem[]>([]);\n readonly collapsed = input<boolean>(false);\n}\n","<div class=\"sidebar-nav-wrapper\">\n <nav class=\"sidebar-nav\" [class.collapsed]=\"collapsed()\">\n @for (item of items(); track item.label) {\n @if (item.route) {\n <a class=\"nav-item\" [routerLink]=\"item.route\" routerLinkActive=\"active\">\n <particle-icon [name]=\"item.icon\" size=\"medium\" />\n @if (!collapsed()) {\n <span class=\"nav-label\">{{ item.label }}</span>\n }\n </a>\n } @else {\n <span class=\"nav-item nav-item-disabled\">\n <particle-icon [name]=\"item.icon\" size=\"medium\" />\n @if (!collapsed()) {\n <span class=\"nav-label\">{{ item.label }}</span>\n }\n </span>\n }\n }\n </nav>\n</div>\n","import { signal } from '@angular/core';\n\nconst STORAGE_KEY = 'theme';\n\nexport const themeSignal = signal<boolean>(false);\n\nfunction getInitialTheme(): boolean {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored !== null) {\n return stored === 'dark';\n }\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\n}\n\nexport function initializeTheme(): void {\n const isDark = getInitialTheme();\n themeSignal.set(isDark);\n applyTheme(isDark);\n}\n\nexport function toggleTheme(): void {\n const newValue = !themeSignal();\n setTheme(newValue);\n}\n\nexport function setTheme(isDark: boolean): void {\n themeSignal.set(isDark);\n applyTheme(isDark);\n localStorage.setItem(STORAGE_KEY, isDark ? 'dark' : 'light');\n}\n\nfunction applyTheme(isDark: boolean): void {\n document.documentElement.setAttribute('data-theme', isDark ? 'dark' : 'light');\n}\n","import { Component, input, signal, HostListener } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SidebarComponent } from '../organisms/sidebar.component';\nimport { NavListComponent } from '../molecules/nav-list/nav-list.component';\nimport { ParticleIcon } from '../atoms/icons/icon.component';\nimport type { NavListItem } from '../organisms/sidebar.component';\nimport { themeSignal, toggleTheme } from '../services/theme.service';\n\n@Component({\n selector: 'particle-dashboard',\n standalone: true,\n imports: [CommonModule, SidebarComponent, NavListComponent, ParticleIcon],\n templateUrl: './dashboard.component.html',\n styleUrl: './dashboard.component.scss',\n})\nexport class DashboardComponent {\n readonly appTitle = input<string>('Dashboard');\n readonly navItems = input<readonly NavListItem[]>([]);\n readonly userInitials = input<string>('');\n readonly userMenuItems = input<readonly NavListItem[]>([\n { label: 'Manage Account', icon: 'user', route: '/account' },\n { label: 'Settings', icon: 'cog', route: '/settings' },\n { label: 'Log Out', icon: 'logout', route: '/logout' },\n ]);\n\n protected readonly sidebarCollapsed = signal(false);\n protected readonly isMobile = signal(false);\n protected readonly mobileSidebarOpen = signal(false);\n protected readonly isDark = themeSignal;\n protected readonly userMenuOpen = signal(false);\n\n constructor() {\n this.checkScreenSize();\n }\n\n private getBreakpoint(): number {\n return parseInt(\n getComputedStyle(document.documentElement).getPropertyValue('--breakpoint-mobile') || '768',\n 10,\n );\n }\n\n @HostListener('window:resize')\n protected readonly checkScreenSize = () => {\n this.isMobile.set(window.innerWidth < this.getBreakpoint());\n };\n\n protected readonly toggleSidebar = () => {\n if (this.isMobile()) {\n this.mobileSidebarOpen.update((v) => !v);\n } else {\n this.sidebarCollapsed.update((v) => !v);\n }\n };\n\n protected readonly closeMobileSidebar = () => {\n this.mobileSidebarOpen.set(false);\n };\n\n protected readonly toggleTheme = () => toggleTheme();\n\n protected readonly toggleUserMenu = () => {\n this.userMenuOpen.update((v) => !v);\n };\n\n protected readonly closeUserMenu = () => {\n this.userMenuOpen.set(false);\n };\n}\n","<div class=\"dashboard\" [class.collapsed]=\"sidebarCollapsed()\">\n @if (!isMobile()) {\n <particle-sidebar\n [appTitle]=\"appTitle()\"\n [collapsed]=\"sidebarCollapsed()\"\n [isMobile]=\"false\"\n (toggle)=\"toggleSidebar()\"\n >\n <particle-nav-list [items]=\"navItems()\" [collapsed]=\"sidebarCollapsed()\" />\n </particle-sidebar>\n }\n\n @if (isMobile() && mobileSidebarOpen()) {\n <div class=\"mobile-sidebar-overlay\" (click)=\"closeMobileSidebar()\">\n <div class=\"mobile-sidebar\" (click)=\"$event.stopPropagation()\">\n <particle-sidebar\n [appTitle]=\"appTitle()\"\n [collapsed]=\"false\"\n [isMobile]=\"true\"\n (toggle)=\"closeMobileSidebar()\"\n >\n <particle-nav-list [items]=\"navItems()\" [collapsed]=\"false\" />\n </particle-sidebar>\n </div>\n </div>\n }\n\n <div class=\"main-content\" [class.mobile]=\"isMobile()\">\n <header class=\"header\">\n <div class=\"header-left\">\n @if (isMobile()) {\n <button class=\"menu-toggle\" (click)=\"toggleSidebar()\" aria-label=\"Toggle menu\">\n <particle-icon name=\"menu\" size=\"medium\" />\n </button>\n }\n </div>\n <div class=\"header-right\">\n <button\n class=\"theme-toggle\"\n (click)=\"toggleTheme()\"\n [attr.aria-label]=\"isDark() ? 'Switch to light mode' : 'Switch to dark mode'\"\n >\n @if (isDark()) {\n <particle-icon name=\"sun\" size=\"medium\" />\n } @else {\n <particle-icon name=\"moon\" size=\"medium\" />\n }\n </button>\n <div class=\"user-menu\" (click)=\"toggleUserMenu()\">\n <span class=\"user-initials\">{{ userInitials() }}</span>\n @if (userMenuOpen()) {\n <div class=\"user-dropdown\" (click)=\"$event.stopPropagation()\">\n <particle-nav-list [items]=\"userMenuItems()\" [collapsed]=\"false\" />\n </div>\n }\n </div>\n </div>\n </header>\n\n <main class=\"content\">\n <ng-content></ng-content>\n </main>\n </div>\n</div>\n","/*\n * Public API Surface of component-lib\n */\n\nexport { ComponentLib } from './lib/component-lib';\n\nexport { ParticleButton } from './lib/atoms/button/button.component';\nexport type { ButtonVariant, ButtonSize, ButtonType } from './lib/atoms/button/button.component';\n\nexport { ParticleIcon } from './lib/atoms/icons/icon.component';\nexport type { IconName, IconSize } from './lib/atoms/icons/icon.component';\n\nexport { CardComponent } from './lib/atoms/card/card.component';\n\nexport { GridComponent } from './lib/molecules/grid/grid.component';\nexport type { GridGap, GridCols } from './lib/molecules/grid/grid.component';\n\nexport { DashboardComponent } from './lib/templates/dashboard.component';\n\nexport { SidebarComponent } from './lib/organisms/sidebar.component';\nexport type { NavListItem } from './lib/organisms/sidebar.component';\n\nexport { NavListComponent } from './lib/molecules/nav-list/nav-list.component';\n\nexport { initializeTheme, themeSignal, toggleTheme, setTheme } from './lib/services/theme.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@kiranshub/dashboard-ui",
3
+ "version": "0.0.1",
4
+ "description": "Angular UI component library with dashboard, sidebar, buttons, icons, and more",
5
+ "keywords": [
6
+ "angular",
7
+ "ui",
8
+ "component-library",
9
+ "dashboard",
10
+ "ui-components"
11
+ ],
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "https://github.com/TheDevelolper/Dashboard-UI"
15
+ },
16
+ "author": "Kiran Randhawa",
17
+ "license": "MIT",
18
+ "peerDependencies": {
19
+ "@angular/common": "^21.2.0",
20
+ "@angular/core": "^21.2.0"
21
+ },
22
+ "dependencies": {
23
+ "tslib": "^2.3.0"
24
+ },
25
+ "sideEffects": false,
26
+ "module": "fesm2022/kiranshub-dashboard-ui.mjs",
27
+ "typings": "types/kiranshub-dashboard-ui.d.ts",
28
+ "exports": {
29
+ "./package.json": {
30
+ "default": "./package.json"
31
+ },
32
+ ".": {
33
+ "types": "./types/kiranshub-dashboard-ui.d.ts",
34
+ "default": "./fesm2022/kiranshub-dashboard-ui.mjs"
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,102 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
3
+
4
+ declare class ComponentLib {
5
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ComponentLib, never>;
6
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ComponentLib, "lib-component-lib", never, {}, {}, never, never, true, never>;
7
+ }
8
+
9
+ type ButtonVariant = 'primary' | 'secondary' | 'outline';
10
+ type ButtonSize = 'small' | 'medium' | 'large';
11
+ type ButtonType = 'button' | 'submit' | 'reset';
12
+ declare class ParticleButton {
13
+ readonly variant: _angular_core.InputSignal<ButtonVariant>;
14
+ readonly size: _angular_core.InputSignal<ButtonSize>;
15
+ readonly disabled: _angular_core.InputSignal<boolean>;
16
+ readonly type: _angular_core.InputSignal<ButtonType>;
17
+ readonly clicked: _angular_core.OutputEmitterRef<void>;
18
+ protected onClick(): void;
19
+ protected getClasses(): string;
20
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ParticleButton, never>;
21
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ParticleButton, "particle-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, ["*"], true, never>;
22
+ }
23
+
24
+ declare const ICONS: Record<string, string>;
25
+
26
+ type IconName = keyof typeof ICONS;
27
+ type IconSize = 'small' | 'medium' | 'large';
28
+ declare class ParticleIcon {
29
+ private sanitizer;
30
+ readonly name: _angular_core.InputSignal<string>;
31
+ readonly size: _angular_core.InputSignal<IconSize>;
32
+ constructor(sanitizer: DomSanitizer);
33
+ protected svgContent: _angular_core.Signal<SafeHtml>;
34
+ protected getSizeClass(): string;
35
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ParticleIcon, never>;
36
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ParticleIcon, "particle-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
37
+ }
38
+
39
+ declare class CardComponent {
40
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardComponent, never>;
41
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardComponent, "particle-card", never, {}, {}, never, ["*"], true, never>;
42
+ }
43
+
44
+ type GridGap = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
45
+ type GridCols = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
46
+ declare class GridComponent {
47
+ readonly gap: _angular_core.InputSignal<GridGap>;
48
+ readonly cols: _angular_core.InputSignal<GridCols>;
49
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GridComponent, never>;
50
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<GridComponent, "particle-grid", never, { "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "cols": { "alias": "cols"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
51
+ }
52
+
53
+ interface NavListItem {
54
+ label: string;
55
+ icon: IconName;
56
+ route?: string;
57
+ }
58
+ declare class SidebarComponent {
59
+ readonly appTitle: _angular_core.InputSignal<string>;
60
+ readonly collapsed: _angular_core.InputSignal<boolean>;
61
+ readonly isMobile: _angular_core.InputSignal<boolean>;
62
+ readonly toggle: _angular_core.OutputEmitterRef<void>;
63
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidebarComponent, never>;
64
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidebarComponent, "particle-sidebar", never, { "appTitle": { "alias": "appTitle"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "isMobile": { "alias": "isMobile"; "required": false; "isSignal": true; }; }, { "toggle": "toggle"; }, never, ["[sidebarHeader]", "*", "[sidebarFooter]"], true, never>;
65
+ }
66
+
67
+ declare class DashboardComponent {
68
+ readonly appTitle: _angular_core.InputSignal<string>;
69
+ readonly navItems: _angular_core.InputSignal<readonly NavListItem[]>;
70
+ readonly userInitials: _angular_core.InputSignal<string>;
71
+ readonly userMenuItems: _angular_core.InputSignal<readonly NavListItem[]>;
72
+ protected readonly sidebarCollapsed: _angular_core.WritableSignal<boolean>;
73
+ protected readonly isMobile: _angular_core.WritableSignal<boolean>;
74
+ protected readonly mobileSidebarOpen: _angular_core.WritableSignal<boolean>;
75
+ protected readonly isDark: _angular_core.WritableSignal<boolean>;
76
+ protected readonly userMenuOpen: _angular_core.WritableSignal<boolean>;
77
+ constructor();
78
+ private getBreakpoint;
79
+ protected readonly checkScreenSize: () => void;
80
+ protected readonly toggleSidebar: () => void;
81
+ protected readonly closeMobileSidebar: () => void;
82
+ protected readonly toggleTheme: () => void;
83
+ protected readonly toggleUserMenu: () => void;
84
+ protected readonly closeUserMenu: () => void;
85
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DashboardComponent, never>;
86
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DashboardComponent, "particle-dashboard", never, { "appTitle": { "alias": "appTitle"; "required": false; "isSignal": true; }; "navItems": { "alias": "navItems"; "required": false; "isSignal": true; }; "userInitials": { "alias": "userInitials"; "required": false; "isSignal": true; }; "userMenuItems": { "alias": "userMenuItems"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
87
+ }
88
+
89
+ declare class NavListComponent {
90
+ readonly items: _angular_core.InputSignal<readonly NavListItem[]>;
91
+ readonly collapsed: _angular_core.InputSignal<boolean>;
92
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavListComponent, never>;
93
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavListComponent, "particle-nav-list", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
94
+ }
95
+
96
+ declare const themeSignal: _angular_core.WritableSignal<boolean>;
97
+ declare function initializeTheme(): void;
98
+ declare function toggleTheme(): void;
99
+ declare function setTheme(isDark: boolean): void;
100
+
101
+ export { CardComponent, ComponentLib, DashboardComponent, GridComponent, NavListComponent, ParticleButton, ParticleIcon, SidebarComponent, initializeTheme, setTheme, themeSignal, toggleTheme };
102
+ export type { ButtonSize, ButtonType, ButtonVariant, GridCols, GridGap, IconName, IconSize, NavListItem };