{"_id":"@chenchukumar_sreeram/admin-dashboard-lib","_rev":"4-a13609a979b05e83c70fbcc13671bea0","name":"@chenchukumar_sreeram/admin-dashboard-lib","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@chenchukumar_sreeram/admin-dashboard-lib","version":"1.0.0","keywords":["angular","admin","dashboard","rbac","role-based-access-control","permissions","authentication"],"author":{"name":"chenchukumar sreeram"},"license":"MIT","_id":"@chenchukumar_sreeram/admin-dashboard-lib@1.0.0","maintainers":[{"name":"chenchukumar_sreeram","email":"sreeram.chenchukumar@exponentialai.com"}],"homepage":"","dist":{"shasum":"52d62d9de59d37fc0286fbb2e9436f6602b00615","tarball":"https://registry.npmjs.org/@chenchukumar_sreeram/admin-dashboard-lib/-/admin-dashboard-lib-1.0.0.tgz","fileCount":36,"integrity":"sha512-zj7MAiQMH0ZhAV2tNUcDEhEnTAUKGO2EObYr7Pu5aArEzuMPQ/tMDXi2ROO5kDzXgr9wjdAJW5UjJpOPX9w+8w==","signatures":[{"sig":"MEQCIF9JSaNyY5YNRzLdYtn7SvArnVUW69dXpnvHDbIWIyg8AiBFAlj7y39tzoVaWM8vmDHVfHfypoOjItw27vvR/v/6iw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":214036},"main":"./public-api.js","types":"./public-api.d.ts","module":"fesm2022/chenchukumar_sreeram-admin-dashboard-lib.mjs","exports":{".":{"esm":"./esm2022/chenchukumar_sreeram-admin-dashboard-lib.mjs","types":"./index.d.ts","default":"./fesm2022/chenchukumar_sreeram-admin-dashboard-lib.mjs","esm2022":"./esm2022/chenchukumar_sreeram-admin-dashboard-lib.mjs"},"./package.json":{"default":"./package.json"}},"typings":"index.d.ts","_npmUser":{"name":"chenchukumar_sreeram","email":"sreeram.chenchukumar@exponentialai.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.8.2","description":"Reusable Admin Dashboard Library with Role-Based Access Control","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","@angular/core":"^18.0.0","@angular/forms":"^18.0.0","@angular/common":"^18.0.0","@angular/router":"^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/admin-dashboard-lib_1.0.0_1767001948559_0.20385429428472612","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@chenchukumar_sreeram/admin-dashboard-lib","version":"1.0.1","keywords":["angular","admin","dashboard","rbac","role-based-access-control","permissions","authentication"],"author":{"name":"chenchukumar sreeram"},"license":"MIT","_id":"@chenchukumar_sreeram/admin-dashboard-lib@1.0.1","maintainers":[{"name":"chenchukumar_sreeram","email":"sreeram.chenchukumar@exponentialai.com"}],"homepage":"","dist":{"shasum":"3b2dda98eb92b01700e49e9b38a5a8747ac94107","tarball":"https://registry.npmjs.org/@chenchukumar_sreeram/admin-dashboard-lib/-/admin-dashboard-lib-1.0.1.tgz","fileCount":38,"integrity":"sha512-Z6w/4Ca7Omfj+OWf5HdyOrFDh+6zm0t/601d327Oun7CnrwuAhJiAmuXCGLj8sKWMZ/XPbvFwAOXzZsbXyBjkA==","signatures":[{"sig":"MEUCIGaw3DIxJxJDOgJXRk6EKC0i4iJJhXjv/0bvzinmRSAzAiEAy6VfB4mE8d0fecohRVC33JpEPWljzmFy3JIelwU9aY0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":254526},"main":"./public-api.js","types":"./public-api.d.ts","module":"fesm2022/chenchukumar_sreeram-admin-dashboard-lib.mjs","exports":{".":{"esm":"./esm2022/chenchukumar_sreeram-admin-dashboard-lib.mjs","types":"./index.d.ts","default":"./fesm2022/chenchukumar_sreeram-admin-dashboard-lib.mjs","esm2022":"./esm2022/chenchukumar_sreeram-admin-dashboard-lib.mjs"},"./package.json":{"default":"./package.json"}},"typings":"index.d.ts","_npmUser":{"name":"chenchukumar_sreeram","email":"sreeram.chenchukumar@exponentialai.com"},"repository":{"url":"","type":"git"},"_npmVersion":"11.5.1","description":"Reusable Admin Dashboard Library with Role-Based Access Control","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","@angular/core":"^18.0.0","@angular/forms":"^18.0.0","@angular/common":"^18.0.0","@angular/router":"^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/admin-dashboard-lib_1.0.1_1767004686321_0.8078617885901378","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@chenchukumar_sreeram/admin-dashboard-lib","version":"1.0.2","keywords":["angular","admin","dashboard","rbac","role-based-access-control","permissions","authentication"],"author":{"name":"chenchukumar sreeram"},"license":"MIT","_id":"@chenchukumar_sreeram/admin-dashboard-lib@1.0.2","maintainers":[{"name":"chenchukumar_sreeram","email":"sreeram.chenchukumar@exponentialai.com"}],"homepage":"","dist":{"shasum":"1f1c6ec1fecc4711156b3d37bff4eccefb09cdeb","tarball":"https://registry.npmjs.org/@chenchukumar_sreeram/admin-dashboard-lib/-/admin-dashboard-lib-1.0.2.tgz","fileCount":43,"integrity":"sha512-GIevcB6pAfBDoN+MeWL/0eE3QXWANNsuGlf82yyrdCFYNDOdpRbN+m1ZlkH03gbuIb3zdB4EDeloD0R5vt5Z3g==","signatures":[{"sig":"MEUCIF14YanGytlwipfWbiaaL+t055g1FTfEye3WTiR+IX34AiEAhGcely6RBuw1GsYhHhnQvkohpV2xARavpxagFFo02Ag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262873},"main":"./public-api.js","style":"./src/lib/styles/index.css","types":"./public-api.d.ts","module":"fesm2022/chenchukumar_sreeram-admin-dashboard-lib.mjs","exports":{".":{"esm":"./esm2022/chenchukumar_sreeram-admin-dashboard-lib.mjs","types":"./index.d.ts","default":"./fesm2022/chenchukumar_sreeram-admin-dashboard-lib.mjs","esm2022":"./esm2022/chenchukumar_sreeram-admin-dashboard-lib.mjs"},"./package.json":{"default":"./package.json"}},"typings":"index.d.ts","_npmUser":{"name":"chenchukumar_sreeram","email":"sreeram.chenchukumar@exponentialai.com"},"repository":{"url":"","type":"git"},"_npmVersion":"11.5.1","description":"Reusable Admin Dashboard Library with Role-Based Access Control","directories":{},"sideEffects":false,"_nodeVersion":"22.21.1","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"~7.8.0","@angular/core":"^18.0.0","@angular/forms":"^18.0.0","@angular/common":"^18.0.0","@angular/router":"^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/admin-dashboard-lib_1.0.2_1767017483349_0.6363570952522242","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@chenchukumar_sreeram/admin-dashboard-lib","version":"1.0.3","description":"Reusable Admin Dashboard Library with Role-Based Access Control","author":{"name":"chenchukumar sreeram"},"license":"MIT","keywords":["angular","admin","dashboard","rbac","role-based-access-control","permissions","authentication"],"repository":{"type":"git","url":""},"homepage":"","main":"./public-api.js","types":"./public-api.d.ts","sideEffects":false,"style":"./src/lib/styles/index.css","peerDependencies":{"@angular/common":"^18.0.0","@angular/core":"^18.0.0","@angular/forms":"^18.0.0","@angular/router":"^18.0.0","rxjs":"~7.8.0"},"dependencies":{"tslib":"^2.3.0"},"module":"fesm2022/chenchukumar_sreeram-admin-dashboard-lib.mjs","typings":"index.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","esm2022":"./esm2022/chenchukumar_sreeram-admin-dashboard-lib.mjs","esm":"./esm2022/chenchukumar_sreeram-admin-dashboard-lib.mjs","default":"./fesm2022/chenchukumar_sreeram-admin-dashboard-lib.mjs"}},"_id":"@chenchukumar_sreeram/admin-dashboard-lib@1.0.3","_nodeVersion":"22.21.1","_npmVersion":"11.5.1","dist":{"integrity":"sha512-ThGj0Z1efGRHARMEH4WxNcsmu1izpRrajbffP2NQcJaInI8W1A8Qc/tD5SztOQWie0eqWl5E9tRvR6bmEbpCuw==","shasum":"301c6448e23349b401390cee7435a187c19ea150","tarball":"https://registry.npmjs.org/@chenchukumar_sreeram/admin-dashboard-lib/-/admin-dashboard-lib-1.0.3.tgz","fileCount":48,"unpackedSize":272596,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDJZOAbrjpGvDYK42Bed32cYOw+tJchlhHh7ySgOGx1CgIhAJkZ5Ralc5I8VHBJJh8lZGWq85lUbtEL86W9E3k0ymKg"}]},"_npmUser":{"name":"chenchukumar_sreeram","email":"sreeram.chenchukumar@exponentialai.com"},"directories":{},"maintainers":[{"name":"chenchukumar_sreeram","email":"sreeram.chenchukumar@exponentialai.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/admin-dashboard-lib_1.0.3_1767018102877_0.0979911647759284"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-29T09:52:28.496Z","modified":"2025-12-29T14:21:43.276Z","1.0.0":"2025-12-29T09:52:28.723Z","1.0.1":"2025-12-29T10:38:06.483Z","1.0.2":"2025-12-29T14:11:23.499Z","1.0.3":"2025-12-29T14:21:43.042Z"},"author":{"name":"chenchukumar sreeram"},"license":"MIT","keywords":["angular","admin","dashboard","rbac","role-based-access-control","permissions","authentication"],"repository":{"type":"git","url":""},"description":"Reusable Admin Dashboard Library with Role-Based Access Control","maintainers":[{"name":"chenchukumar_sreeram","email":"sreeram.chenchukumar@exponentialai.com"}],"readme":"# Admin Dashboard Library\n\nA reusable Angular library for building admin dashboards with role-based access control (RBAC), permissions, and rules management.\n\n## Features\n\n- **Role-Based Access Control (RBAC)**: Manage users with different roles and permissions\n- **Permission System**: Fine-grained control over actions and resources\n- **Rule Engine**: Apply business rules and constraints for access control\n- **Configurable**: Runtime configuration via InjectionTokens\n- **Type-Safe**: Full TypeScript support with comprehensive models\n- **Validation**: Built-in validators for common use cases\n- **Guards**: Route guards for authentication and permission checks\n- **Directives**: Structural directive for permission-based rendering\n\n## Installation\n\n```bash\nnpm install @shared/admin-dashboard-lib\n```\n\n## Quick Start\n\n### 1. Import the Module\n\n```typescript\nimport { AdminDashboardModule } from '@shared/admin-dashboard-lib';\nimport { NgModule } from '@angular/core';\n\n@NgModule({\n  imports: [\n    AdminDashboardModule.forRoot({\n      storageKey: 'myAppUser',\n      ui: {\n        appName: 'My Admin Panel',\n        primaryColor: '#667eea'\n      }\n    })\n  ]\n})\nexport class AppModule { }\n```\n\n### 2. Configure the Library\n\n```typescript\nimport { AdminDashboardModule, AdminDashboardConfig } from '@shared/admin-dashboard-lib';\n\nconst config: Partial<AdminDashboardConfig> = {\n  storageKey: 'currentUser',\n  api: {\n    login: '/api/auth/login',\n    users: '/api/users',\n    roles: '/api/roles'\n  },\n  customAuthHandler: async (email: string, password: string) => {\n    const response = await fetch('/api/auth/login', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json' },\n      body: JSON.stringify({ email, password })\n    });\n    if (!response.ok) throw new Error('Login failed');\n    return response.json();\n  },\n  dataLoaders: {\n    loadUsers: async () => {\n      const response = await fetch('/api/users');\n      return response.json();\n    },\n    loadRoles: async () => {\n      const response = await fetch('/api/roles');\n      return response.json();\n    }\n  },\n  ui: {\n    appName: 'Admin Dashboard',\n    primaryColor: '#667eea',\n    footerText: '© 2024 All rights reserved.'\n  },\n  features: {\n    enableUsers: true,\n    enableRoles: true,\n    enableDashboard: true\n  },\n  routes: {\n    loginPath: '/login',\n    dashboardPath: '/dashboard',\n    usersPath: '/users'\n  }\n};\n\nAdminDashboardModule.forRoot(config);\n```\n\n### 3. Use Services\n\n```typescript\nimport { Component } from '@angular/core';\nimport { AuthService, RbacService, PermissionAction, PermissionResource } from '@shared/admin-dashboard-lib';\n\n@Component({\n  selector: 'app-users',\n  template: `\n    <button *appHasPermission=\"PermissionAction.CREATE; appHasPermissionResource: PermissionResource.USERS\">\n      Create User\n    </button>\n  `\n})\nexport class UsersComponent {\n  PermissionAction = PermissionAction;\n  PermissionResource = PermissionResource;\n\n  constructor(\n    private authService: AuthService,\n    private rbacService: RbacService\n  ) {}\n\n  async login() {\n    try {\n      const user = await this.authService.login('user@example.com', 'password');\n      console.log('Logged in:', user);\n    } catch (error) {\n      console.error('Login failed:', error);\n    }\n  }\n\n  checkPermission() {\n    this.rbacService.hasPermission(PermissionAction.READ, PermissionResource.USERS)\n      .subscribe(hasPermission => {\n        console.log('Has permission:', hasPermission);\n      });\n  }\n}\n```\n\n### 4. Use Guards\n\n```typescript\nimport { Routes } from '@angular/router';\nimport { authGuard, permissionGuard, PermissionAction, PermissionResource } from '@shared/admin-dashboard-lib';\n\nexport const routes: Routes = [\n  {\n    path: 'dashboard',\n    canActivate: [authGuard],\n    loadComponent: () => import('./dashboard.component').then(m => m.DashboardComponent)\n  },\n  {\n    path: 'users',\n    canActivate: [\n      authGuard,\n      permissionGuard(PermissionAction.READ, PermissionResource.USERS)\n    ],\n    loadComponent: () => import('./users.component').then(m => m.UsersComponent)\n  }\n];\n```\n\n### 5. Use Directives\n\n```html\n<!-- Show element only if user has permission -->\n<div *appHasPermission=\"PermissionAction.DELETE; appHasPermissionResource: PermissionResource.USERS\">\n  <button (click)=\"deleteUser()\">Delete</button>\n</div>\n```\n\n## Configuration Options\n\n### AdminDashboardConfig\n\n```typescript\ninterface AdminDashboardConfig {\n  storageKey?: string;                    // Storage key for user session\n  api?: {                                 // API endpoints\n    login?: string;\n    logout?: string;\n    users?: string;\n    roles?: string;\n    permissions?: string;\n    rules?: string;\n  };\n  customAuthHandler?: (email: string, password: string) => Promise<any>;\n  dataLoaders?: {                         // Custom data loaders\n    loadUsers?: () => Promise<any[]>;\n    loadRoles?: () => Promise<any[]>;\n    loadPermissions?: () => Promise<any[]>;\n    loadRules?: () => Promise<any[]>;\n  };\n  ui?: {                                  // UI configuration\n    appName?: string;\n    logoUrl?: string;\n    primaryColor?: string;\n    footerText?: string;\n  };\n  features?: {                            // Feature flags\n    enableUsers?: boolean;\n    enableRoles?: boolean;\n    enablePermissions?: boolean;\n    enableRules?: boolean;\n    enableDashboard?: boolean;\n  };\n  routes?: {                              // Route paths\n    loginPath?: string;\n    dashboardPath?: string;\n    usersPath?: string;\n    rolesPath?: string;\n    permissionsPath?: string;\n    rulesPath?: string;\n    unauthorizedPath?: string;\n  };\n}\n```\n\n## API Reference\n\n### Services\n\n- **AuthService**: Authentication and session management\n- **RbacService**: Role-based access control\n- **RuleEngineService**: Rule evaluation engine\n\n### Guards\n\n- **authGuard**: Protects routes requiring authentication\n- **permissionGuard**: Protects routes based on permissions\n\n### Directives\n\n- **appHasPermission**: Conditionally render elements based on permissions\n\n### Validators\n\n- **ConstraintsValidator**: Email, password strength, username, range, pattern, etc.\n\n### Models\n\n- **User**: User model with role assignment\n- **Role**: Role with permissions and rules\n- **Permission**: Permission with action and resource\n- **Rule**: Business rule with conditions\n\n## Examples\n\nSee the main application in `src/` for complete usage examples.\n\n## License\n\nMIT\n\n","readmeFilename":"README.md"}