@kiranshub/dashboard-ui 0.0.4 → 0.0.5

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,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, input, output, computed, signal, HostListener } from '@angular/core';
2
+ import { Component, input, output, computed, signal, HostListener, ViewChild } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i1$1 from '@angular/platform-browser';
@@ -131,11 +131,11 @@ class SidebarComponent {
131
131
  isMobile = input(false, ...(ngDevMode ? [{ debugName: "isMobile" }] : []));
132
132
  toggle = output();
133
133
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
134
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: SidebarComponent, isStandalone: true, selector: "particle-sidebar", inputs: { appTitle: { classPropertyName: "appTitle", publicName: "appTitle", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, isMobile: { classPropertyName: "isMobile", publicName: "isMobile", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { toggle: "toggle" }, ngImport: i0, template: "<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", styles: ["@tailwind base;@tailwind components;@tailwind utilities;.sidebar{width:var(--sidebar-width);background-color:var(--color-bg-sidebar);color:var(--color-sidebar-text);display:flex;flex-direction:column;position:fixed;height:100vh;transition:width var(--transition-normal)}.sidebar.collapsed{width:4rem}.sidebar-header{height:var(--header-height);padding:0 var(--spacing-lg);border-bottom:1px solid var(--color-sidebar-border);display:flex;align-items:center;gap:var(--spacing-sm);flex-shrink:0}.sidebar-header .app-title{text-wrap:nowrap}.sidebar-toggle{background:none;border:none;cursor:pointer;color:var(--color-sidebar-text);padding:var(--spacing-xs);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center}.sidebar-toggle:hover{background-color:var(--color-sidebar-hover)}.sidebar.collapsed .sidebar-header{padding:0 var(--spacing-sm);justify-content:center}.app-title{font-size:var(--font-size-lg);font-weight:600;margin:0}.sidebar-content{flex:1;overflow-y:auto}.sidebar-footer{padding:var(--spacing-lg);border-top:1px solid var(--color-sidebar-border)}\n"], dependencies: [{ kind: "component", type: ParticleIcon, selector: "particle-icon", inputs: ["name", "size"] }] });
134
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: SidebarComponent, isStandalone: true, selector: "particle-sidebar", inputs: { appTitle: { classPropertyName: "appTitle", publicName: "appTitle", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, isMobile: { classPropertyName: "isMobile", publicName: "isMobile", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { toggle: "toggle" }, ngImport: i0, template: "<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", styles: ["@tailwind base;@tailwind components;@tailwind utilities;.sidebar{width:var(--sidebar-width);background-color:var(--color-bg-sidebar);color:var(--color-sidebar-text);display:flex;flex-direction:column;position:fixed;height:100vh;transition:width var(--transition-normal)}.sidebar.collapsed{width:4rem}.sidebar-header{height:var(--header-height);padding:0 var(--spacing-lg);border-bottom:1px solid var(--color-sidebar-border);background-color:var(--color-bg-header);display:flex;align-items:center;gap:var(--spacing-sm);flex-shrink:0}.sidebar-header .app-title{text-wrap:nowrap}.sidebar-toggle{background:none;border:none;cursor:pointer;color:var(--color-sidebar-text);padding:var(--spacing-xs);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center}.sidebar-toggle:hover{background-color:var(--color-sidebar-hover)}.sidebar.collapsed .sidebar-header{padding:0 var(--spacing-sm);justify-content:center}.app-title{font-size:var(--font-size-lg);font-weight:600;margin:0}.sidebar-content{flex:1;overflow-y:auto}.sidebar-footer{padding:var(--spacing-lg);border-top:1px solid var(--color-sidebar-border);background-color:var(--color-bg-footer)}\n"], dependencies: [{ kind: "component", type: ParticleIcon, selector: "particle-icon", inputs: ["name", "size"] }] });
135
135
  }
136
136
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: SidebarComponent, decorators: [{
137
137
  type: Component,
138
- args: [{ selector: 'particle-sidebar', standalone: true, imports: [ParticleIcon], template: "<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", styles: ["@tailwind base;@tailwind components;@tailwind utilities;.sidebar{width:var(--sidebar-width);background-color:var(--color-bg-sidebar);color:var(--color-sidebar-text);display:flex;flex-direction:column;position:fixed;height:100vh;transition:width var(--transition-normal)}.sidebar.collapsed{width:4rem}.sidebar-header{height:var(--header-height);padding:0 var(--spacing-lg);border-bottom:1px solid var(--color-sidebar-border);display:flex;align-items:center;gap:var(--spacing-sm);flex-shrink:0}.sidebar-header .app-title{text-wrap:nowrap}.sidebar-toggle{background:none;border:none;cursor:pointer;color:var(--color-sidebar-text);padding:var(--spacing-xs);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center}.sidebar-toggle:hover{background-color:var(--color-sidebar-hover)}.sidebar.collapsed .sidebar-header{padding:0 var(--spacing-sm);justify-content:center}.app-title{font-size:var(--font-size-lg);font-weight:600;margin:0}.sidebar-content{flex:1;overflow-y:auto}.sidebar-footer{padding:var(--spacing-lg);border-top:1px solid var(--color-sidebar-border)}\n"] }]
138
+ args: [{ selector: 'particle-sidebar', standalone: true, imports: [ParticleIcon], template: "<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", styles: ["@tailwind base;@tailwind components;@tailwind utilities;.sidebar{width:var(--sidebar-width);background-color:var(--color-bg-sidebar);color:var(--color-sidebar-text);display:flex;flex-direction:column;position:fixed;height:100vh;transition:width var(--transition-normal)}.sidebar.collapsed{width:4rem}.sidebar-header{height:var(--header-height);padding:0 var(--spacing-lg);border-bottom:1px solid var(--color-sidebar-border);background-color:var(--color-bg-header);display:flex;align-items:center;gap:var(--spacing-sm);flex-shrink:0}.sidebar-header .app-title{text-wrap:nowrap}.sidebar-toggle{background:none;border:none;cursor:pointer;color:var(--color-sidebar-text);padding:var(--spacing-xs);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center}.sidebar-toggle:hover{background-color:var(--color-sidebar-hover)}.sidebar.collapsed .sidebar-header{padding:0 var(--spacing-sm);justify-content:center}.app-title{font-size:var(--font-size-lg);font-weight:600;margin:0}.sidebar-content{flex:1;overflow-y:auto}.sidebar-footer{padding:var(--spacing-lg);border-top:1px solid var(--color-sidebar-border);background-color:var(--color-bg-footer)}\n"] }]
139
139
  }], propDecorators: { appTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "appTitle", required: false }] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }], isMobile: [{ type: i0.Input, args: [{ isSignal: true, alias: "isMobile", required: false }] }], toggle: [{ type: i0.Output, args: ["toggle"] }] } });
140
140
 
141
141
  class NavListComponent {
@@ -190,6 +190,7 @@ class DashboardComponent {
190
190
  mobileSidebarOpen = signal(false, ...(ngDevMode ? [{ debugName: "mobileSidebarOpen" }] : []));
191
191
  isDark = themeSignal;
192
192
  userMenuOpen = signal(false, ...(ngDevMode ? [{ debugName: "userMenuOpen" }] : []));
193
+ userMenu;
193
194
  constructor() {
194
195
  this.checkScreenSize();
195
196
  }
@@ -199,6 +200,13 @@ class DashboardComponent {
199
200
  checkScreenSize = () => {
200
201
  this.isMobile.set(window.innerWidth < this.getBreakpoint());
201
202
  };
203
+ onDocumentClick = (event) => {
204
+ if (this.userMenuOpen() &&
205
+ this.userMenu &&
206
+ !this.userMenu.nativeElement.contains(event.target)) {
207
+ this.userMenuOpen.set(false);
208
+ }
209
+ };
202
210
  toggleSidebar = () => {
203
211
  if (this.isMobile()) {
204
212
  this.mobileSidebarOpen.update((v) => !v);
@@ -218,14 +226,20 @@ class DashboardComponent {
218
226
  this.userMenuOpen.set(false);
219
227
  };
220
228
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DashboardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
221
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DashboardComponent, isStandalone: true, selector: "particle-dashboard", inputs: { appTitle: { classPropertyName: "appTitle", publicName: "appTitle", isSignal: true, isRequired: false, transformFunction: null }, navItems: { classPropertyName: "navItems", publicName: "navItems", isSignal: true, isRequired: false, transformFunction: null }, userInitials: { classPropertyName: "userInitials", publicName: "userInitials", isSignal: true, isRequired: false, transformFunction: null }, userMenuItems: { classPropertyName: "userMenuItems", publicName: "userMenuItems", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:resize": "checkScreenSize()" } }, ngImport: i0, template: "<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", styles: ["@tailwind base;@tailwind components;@tailwind utilities;.dashboard{display:flex;min-height:100vh;background-color:var(--color-bg)}.mobile-sidebar-overlay{position:fixed;inset:0;background-color:#00000080;z-index:1000;display:flex;justify-content:flex-start}.mobile-sidebar{width:100%;max-width:280px;height:100%;animation:slideIn .2s ease-out}@keyframes slideIn{0%{transform:translate(-100%)}to{transform:translate(0)}}.main-content{flex:1;margin-left:var(--sidebar-width);display:flex;flex-direction:column;transition:margin-left var(--transition-normal)}.main-content.mobile{margin-left:0}.dashboard.collapsed .main-content:not(.mobile){margin-left:4rem}.header{height:var(--header-height);background-color:var(--color-bg-card);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;padding:0 var(--spacing-lg);position:sticky;top:0}.menu-toggle{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--color-text)}.theme-toggle{background:none;border:none;font-size:1.25rem;cursor:pointer;padding:var(--spacing-sm);border-radius:var(--radius-md);transition:background-color var(--transition-fast);margin-right:var(--spacing-md)}.theme-toggle:hover{background-color:var(--color-sidebar-hover)}.header-right{display:flex;align-items:center}.user-menu{display:flex;align-items:center;gap:var(--spacing-sm);cursor:pointer;position:relative}.user-dropdown{position:absolute;top:calc(100% + var(--spacing-sm));right:0;width:200px;background-color:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:0 4px 12px #00000026;z-index:100;animation:fadeIn .15s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.user-initials{width:2.25rem;height:2.25rem;border-radius:50%;background-color:var(--color-primary);color:var(--color-primary-foreground);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-sm);font-weight:600}.content{flex:1;padding:var(--spacing-xl)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: SidebarComponent, selector: "particle-sidebar", inputs: ["appTitle", "collapsed", "isMobile"], outputs: ["toggle"] }, { kind: "component", type: NavListComponent, selector: "particle-nav-list", inputs: ["items", "collapsed"] }, { kind: "component", type: ParticleIcon, selector: "particle-icon", inputs: ["name", "size"] }] });
229
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DashboardComponent, isStandalone: true, selector: "particle-dashboard", inputs: { appTitle: { classPropertyName: "appTitle", publicName: "appTitle", isSignal: true, isRequired: false, transformFunction: null }, navItems: { classPropertyName: "navItems", publicName: "navItems", isSignal: true, isRequired: false, transformFunction: null }, userInitials: { classPropertyName: "userInitials", publicName: "userInitials", isSignal: true, isRequired: false, transformFunction: null }, userMenuItems: { classPropertyName: "userMenuItems", publicName: "userMenuItems", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:resize": "checkScreenSize()", "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "userMenu", first: true, predicate: ["userMenu"], descendants: true }], ngImport: i0, template: "<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 class=\"icon-lightmode\" name=\"sun\" size=\"medium\" />\n } @else {\n <particle-icon class=\"icon-darkmode\" name=\"moon\" size=\"medium\" />\n }\n </button>\n <div #userMenu 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", styles: ["@tailwind base;@tailwind components;@tailwind utilities;.dashboard{display:flex;min-height:100vh;background-color:var(--color-bg)}.mobile-sidebar-overlay{position:fixed;inset:0;background-color:#00000080;z-index:1000;display:flex;justify-content:flex-start}.mobile-sidebar{width:100%;max-width:280px;height:100%;animation:slideIn .2s ease-out}@keyframes slideIn{0%{transform:translate(-100%)}to{transform:translate(0)}}.main-content{flex:1;margin-left:var(--sidebar-width);display:flex;flex-direction:column;transition:margin-left var(--transition-normal)}.main-content.mobile{margin-left:0}.dashboard.collapsed .main-content:not(.mobile){margin-left:4rem}.header{height:var(--header-height);background-color:var(--color-bg-header);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;padding:0 var(--spacing-lg);position:sticky;top:0}.menu-toggle{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--color-text)}.theme-toggle{background:none;border:none;font-size:1.25rem;cursor:pointer;padding:var(--spacing-sm);border-radius:var(--radius-md);transition:background-color var(--transition-fast);margin-right:var(--spacing-md)}.theme-toggle:hover{background-color:var(--color-sidebar-hover)}.header-right{display:flex;align-items:center}.user-menu{display:flex;align-items:center;gap:var(--spacing-sm);cursor:pointer;position:relative}.user-dropdown{position:absolute;top:calc(100% + var(--spacing-sm));right:0;width:200px;background-color:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:0 4px 12px #00000026;z-index:100;animation:fadeIn .15s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.user-initials{width:2.25rem;height:2.25rem;border-radius:50%;background-color:var(--color-primary);color:var(--color-primary-foreground);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-sm);font-weight:600}.content{flex:1;padding:var(--spacing-xl)}.icon-lightmode{color:var(--color-icon-lightmode)}.icon-darkmode{color:var(--color-icon-darkmode)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: SidebarComponent, selector: "particle-sidebar", inputs: ["appTitle", "collapsed", "isMobile"], outputs: ["toggle"] }, { kind: "component", type: NavListComponent, selector: "particle-nav-list", inputs: ["items", "collapsed"] }, { kind: "component", type: ParticleIcon, selector: "particle-icon", inputs: ["name", "size"] }] });
222
230
  }
223
231
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DashboardComponent, decorators: [{
224
232
  type: Component,
225
- args: [{ selector: 'particle-dashboard', standalone: true, imports: [CommonModule, SidebarComponent, NavListComponent, ParticleIcon], template: "<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", styles: ["@tailwind base;@tailwind components;@tailwind utilities;.dashboard{display:flex;min-height:100vh;background-color:var(--color-bg)}.mobile-sidebar-overlay{position:fixed;inset:0;background-color:#00000080;z-index:1000;display:flex;justify-content:flex-start}.mobile-sidebar{width:100%;max-width:280px;height:100%;animation:slideIn .2s ease-out}@keyframes slideIn{0%{transform:translate(-100%)}to{transform:translate(0)}}.main-content{flex:1;margin-left:var(--sidebar-width);display:flex;flex-direction:column;transition:margin-left var(--transition-normal)}.main-content.mobile{margin-left:0}.dashboard.collapsed .main-content:not(.mobile){margin-left:4rem}.header{height:var(--header-height);background-color:var(--color-bg-card);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;padding:0 var(--spacing-lg);position:sticky;top:0}.menu-toggle{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--color-text)}.theme-toggle{background:none;border:none;font-size:1.25rem;cursor:pointer;padding:var(--spacing-sm);border-radius:var(--radius-md);transition:background-color var(--transition-fast);margin-right:var(--spacing-md)}.theme-toggle:hover{background-color:var(--color-sidebar-hover)}.header-right{display:flex;align-items:center}.user-menu{display:flex;align-items:center;gap:var(--spacing-sm);cursor:pointer;position:relative}.user-dropdown{position:absolute;top:calc(100% + var(--spacing-sm));right:0;width:200px;background-color:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:0 4px 12px #00000026;z-index:100;animation:fadeIn .15s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.user-initials{width:2.25rem;height:2.25rem;border-radius:50%;background-color:var(--color-primary);color:var(--color-primary-foreground);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-sm);font-weight:600}.content{flex:1;padding:var(--spacing-xl)}\n"] }]
226
- }], ctorParameters: () => [], propDecorators: { appTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "appTitle", required: false }] }], navItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "navItems", required: false }] }], userInitials: [{ type: i0.Input, args: [{ isSignal: true, alias: "userInitials", required: false }] }], userMenuItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "userMenuItems", required: false }] }], checkScreenSize: [{
233
+ args: [{ selector: 'particle-dashboard', standalone: true, imports: [CommonModule, SidebarComponent, NavListComponent, ParticleIcon], template: "<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 class=\"icon-lightmode\" name=\"sun\" size=\"medium\" />\n } @else {\n <particle-icon class=\"icon-darkmode\" name=\"moon\" size=\"medium\" />\n }\n </button>\n <div #userMenu 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", styles: ["@tailwind base;@tailwind components;@tailwind utilities;.dashboard{display:flex;min-height:100vh;background-color:var(--color-bg)}.mobile-sidebar-overlay{position:fixed;inset:0;background-color:#00000080;z-index:1000;display:flex;justify-content:flex-start}.mobile-sidebar{width:100%;max-width:280px;height:100%;animation:slideIn .2s ease-out}@keyframes slideIn{0%{transform:translate(-100%)}to{transform:translate(0)}}.main-content{flex:1;margin-left:var(--sidebar-width);display:flex;flex-direction:column;transition:margin-left var(--transition-normal)}.main-content.mobile{margin-left:0}.dashboard.collapsed .main-content:not(.mobile){margin-left:4rem}.header{height:var(--header-height);background-color:var(--color-bg-header);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;padding:0 var(--spacing-lg);position:sticky;top:0}.menu-toggle{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--color-text)}.theme-toggle{background:none;border:none;font-size:1.25rem;cursor:pointer;padding:var(--spacing-sm);border-radius:var(--radius-md);transition:background-color var(--transition-fast);margin-right:var(--spacing-md)}.theme-toggle:hover{background-color:var(--color-sidebar-hover)}.header-right{display:flex;align-items:center}.user-menu{display:flex;align-items:center;gap:var(--spacing-sm);cursor:pointer;position:relative}.user-dropdown{position:absolute;top:calc(100% + var(--spacing-sm));right:0;width:200px;background-color:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:0 4px 12px #00000026;z-index:100;animation:fadeIn .15s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.user-initials{width:2.25rem;height:2.25rem;border-radius:50%;background-color:var(--color-primary);color:var(--color-primary-foreground);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-sm);font-weight:600}.content{flex:1;padding:var(--spacing-xl)}.icon-lightmode{color:var(--color-icon-lightmode)}.icon-darkmode{color:var(--color-icon-darkmode)}\n"] }]
234
+ }], ctorParameters: () => [], propDecorators: { appTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "appTitle", required: false }] }], navItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "navItems", required: false }] }], userInitials: [{ type: i0.Input, args: [{ isSignal: true, alias: "userInitials", required: false }] }], userMenuItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "userMenuItems", required: false }] }], userMenu: [{
235
+ type: ViewChild,
236
+ args: ['userMenu']
237
+ }], checkScreenSize: [{
227
238
  type: HostListener,
228
239
  args: ['window:resize']
240
+ }], onDocumentClick: [{
241
+ type: HostListener,
242
+ args: ['document:click', ['$event']]
229
243
  }] } });
230
244
 
231
245
  /*
@@ -1 +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\nexport interface GridResponsiveCols {\n mobile?: GridCols;\n tablet?: GridCols;\n desktop?: GridCols;\n}\n\nexport function getEffectiveCols(\n cols: GridCols | GridResponsiveCols | undefined,\n defaultCols: GridCols = 1,\n): { mobile: number; tablet: number; desktop: number } {\n if (cols === undefined) {\n return { mobile: defaultCols, tablet: defaultCols, desktop: defaultCols };\n }\n\n if (typeof cols === 'number') {\n return { mobile: cols, tablet: cols, desktop: cols };\n }\n\n const mobile = cols.mobile ?? defaultCols;\n const tablet = cols.tablet ?? cols.desktop ?? mobile;\n const desktop = cols.desktop ?? cols.tablet ?? mobile;\n\n return { mobile, tablet, desktop };\n}\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 | GridResponsiveCols>(1);\n\n protected readonly responsiveCols = () => getEffectiveCols(this.cols());\n}\n","<div\n class=\"grid\"\n [ngClass]=\"'gap-' + gap()\"\n [style.--grid-cols-mobile]=\"responsiveCols().mobile\"\n [style.--grid-cols-tablet]=\"responsiveCols().tablet\"\n [style.--grid-cols-desktop]=\"responsiveCols().desktop\"\n>\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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"}
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\nexport interface GridResponsiveCols {\n mobile?: GridCols;\n tablet?: GridCols;\n desktop?: GridCols;\n}\n\nexport function getEffectiveCols(\n cols: GridCols | GridResponsiveCols | undefined,\n defaultCols: GridCols = 1,\n): { mobile: number; tablet: number; desktop: number } {\n if (cols === undefined) {\n return { mobile: defaultCols, tablet: defaultCols, desktop: defaultCols };\n }\n\n if (typeof cols === 'number') {\n return { mobile: cols, tablet: cols, desktop: cols };\n }\n\n const mobile = cols.mobile ?? defaultCols;\n const tablet = cols.tablet ?? cols.desktop ?? mobile;\n const desktop = cols.desktop ?? cols.tablet ?? mobile;\n\n return { mobile, tablet, desktop };\n}\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 | GridResponsiveCols>(1);\n\n protected readonly responsiveCols = () => getEffectiveCols(this.cols());\n}\n","<div\n class=\"grid\"\n [ngClass]=\"'gap-' + gap()\"\n [style.--grid-cols-mobile]=\"responsiveCols().mobile\"\n [style.--grid-cols-tablet]=\"responsiveCols().tablet\"\n [style.--grid-cols-desktop]=\"responsiveCols().desktop\"\n>\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, ViewChild, ElementRef } 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 @ViewChild('userMenu') private readonly userMenu?: ElementRef<HTMLDivElement>;\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 @HostListener('document:click', ['$event'])\n protected readonly onDocumentClick = (event: MouseEvent) => {\n if (\n this.userMenuOpen() &&\n this.userMenu &&\n !this.userMenu.nativeElement.contains(event.target as Node)\n ) {\n this.userMenuOpen.set(false);\n }\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 class=\"icon-lightmode\" name=\"sun\" size=\"medium\" />\n } @else {\n <particle-icon class=\"icon-darkmode\" name=\"moon\" size=\"medium\" />\n }\n </button>\n <div #userMenu 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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kiranshub/dashboard-ui",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "Angular UI component library with dashboard, sidebar, buttons, icons, and more",
5
5
  "keywords": [
6
6
  "angular",
@@ -84,9 +84,11 @@ declare class DashboardComponent {
84
84
  protected readonly mobileSidebarOpen: _angular_core.WritableSignal<boolean>;
85
85
  protected readonly isDark: _angular_core.WritableSignal<boolean>;
86
86
  protected readonly userMenuOpen: _angular_core.WritableSignal<boolean>;
87
+ private readonly userMenu?;
87
88
  constructor();
88
89
  private getBreakpoint;
89
90
  protected readonly checkScreenSize: () => void;
91
+ protected readonly onDocumentClick: (event: MouseEvent) => void;
90
92
  protected readonly toggleSidebar: () => void;
91
93
  protected readonly closeMobileSidebar: () => void;
92
94
  protected readonly toggleTheme: () => void;