ngx-dev-toolbar 2.0.3 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-dev-toolbar.mjs","sources":["../../../../libs/ngx-dev-toolbar/src/dev-toolbar-state.service.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/angular-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/bolt-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/bug-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/code-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/database-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/discord-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/docs-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/export-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/filter-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/gauge-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/gear-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/git-branch-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/import-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/layout-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/lightbulb-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/lighting-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/lock-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/moon-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/network-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/puzzle-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/refresh-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/star-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/sun-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/terminal-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/toggle-left-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/translate-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/trash-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/users-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/list/list.component.ts","../../../../libs/ngx-dev-toolbar/src/components/list-item/list-item.component.ts","../../../../libs/ngx-dev-toolbar/src/components/tool-button/tool-button.component.ts","../../../../libs/ngx-dev-toolbar/src/components/window/window.component.ts","../../../../libs/ngx-dev-toolbar/src/components/toolbar-tool/toolbar-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/components/input/input.component.ts","../../../../libs/ngx-dev-toolbar/src/components/select/select.component.ts","../../../../libs/ngx-dev-toolbar/src/utils/storage.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/app-features-tool/app-features-internal.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/app-features-tool/app-features-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/tools/feature-flags-tool/feature-flags-internal.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/feature-flags-tool/feature-flags-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/components/button/button.component.ts","../../../../libs/ngx-dev-toolbar/src/components/card/card.component.ts","../../../../libs/ngx-dev-toolbar/src/components/clickable-card/clickable-card.component.ts","../../../../libs/ngx-dev-toolbar/src/components/link-button/link-button.component.ts","../../../../libs/ngx-dev-toolbar/src/tools/home-tool/settings.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/home-tool/home-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/tools/language-tool/language-internal.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/language-tool/language-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/tools/permissions-tool/permissions-internal.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/permissions-tool/permissions-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/tools/presets-tool/presets-internal.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/presets-tool/presets-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/dev-toolbar.component.ts","../../../../libs/ngx-dev-toolbar/src/tools/feature-flags-tool/feature-flags.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/language-tool/language.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/app-features-tool/app-features.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/permissions-tool/permissions.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/presets-tool/presets.service.ts","../../../../libs/ngx-dev-toolbar/src/ngx-dev-toolbar.ts"],"sourcesContent":["import { Injectable, computed, signal } from '@angular/core';\nimport { DevToolbarConfig } from './models/dev-toolbar-config.interface';\n\ninterface DevToolbarState {\n isHidden: boolean;\n activeToolId: string | null;\n error: string | null;\n theme: 'light' | 'dark';\n delay: number;\n config: DevToolbarConfig;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DevToolbarStateService {\n // Initial state\n private state = signal<DevToolbarState>({\n isHidden: true,\n activeToolId: null,\n delay: 3000,\n error: null,\n theme: 'dark',\n config: {},\n });\n\n // Selectors\n readonly isVisible = computed(\n () => !this.state().isHidden || this.hasActiveTool()\n );\n readonly isDarkTheme = computed(() => this.state().theme === 'dark');\n readonly activeToolId = computed(() => this.state().activeToolId);\n readonly hasActiveTool = computed(() => this.state().activeToolId !== null);\n readonly error = computed(() => this.state().error);\n readonly theme = computed(() => this.state().theme);\n /**\n * The delay to hide the toolbar\n */\n readonly delay = computed(() => this.state().delay);\n readonly config = computed(() => this.state().config);\n\n // State updates\n setVisibility(isVisible: boolean): void {\n if (isVisible) {\n this.state.update((state) => ({\n ...state,\n isHidden: false,\n }));\n } else {\n if (this.activeToolId() === null) {\n setTimeout(() => {\n this.state.update((state) => ({\n ...state,\n isHidden: true,\n }));\n }, this.state().delay);\n }\n }\n }\n\n setTheme(theme: 'light' | 'dark'): void {\n this.state.update((state) => ({\n ...state,\n theme,\n }));\n }\n\n setActiveTool(toolId: string | null): void {\n this.state.update((state) => ({\n ...state,\n activeToolId: toolId,\n }));\n\n if (toolId === null) {\n this.setVisibility(false);\n } else {\n this.setVisibility(true);\n }\n }\n\n // Public actions\n toggleTool(toolId: string | null): void {\n const currentToolId = this.activeToolId();\n this.setActiveTool(currentToolId === toolId ? null : toolId);\n }\n\n toggleVisibility(): void {\n this.state.update((state) => ({\n ...state,\n isHidden: !state.isHidden,\n }));\n }\n\n setConfig(config: DevToolbarConfig): void {\n this.state.update((state) => ({\n ...state,\n config,\n }));\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ndt-angular-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <defs>\n <linearGradient\n id=\"angular-gradient\"\n x1=\"6\"\n x2=\"18\"\n y1=\"20\"\n y2=\"4\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0\" stop-color=\"#E40035\" />\n <stop offset=\".24\" stop-color=\"#F60A48\" />\n <stop offset=\".352\" stop-color=\"#F20755\" />\n <stop offset=\".494\" stop-color=\"#DC087D\" />\n <stop offset=\".745\" stop-color=\"#9717E7\" />\n <stop offset=\"1\" stop-color=\"#6C00F5\" />\n </linearGradient>\n </defs>\n <g fill=\"url(#angular-gradient)\">\n <polygon points=\"14.1,2.7 20.1,15.7 20.7,5.8\" />\n <polygon points=\"15.6,16.4 8.4,16.4 7.4,18.6 12,21.2 16.6,18.6\" />\n <polygon points=\"9.6,13.5 14.4,13.5 12,7.7\" />\n <polygon points=\"9.9,2.7 3.3,5.8 3.9,15.7\" />\n </g>\n </svg>\n `,\n})\nexport class AngularIconComponent {}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-bolt-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M160,16,144,96H208l-96,144,16-80H64Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M215.79,118.17a8,8,0,0,0-5-5.66L153.18,90.9l14.66-73.33a8,8,0,0,0-13.69-7l-112,120a8,8,0,0,0,3,13l57.63,21.61L88.16,238.43a8,8,0,0,0,13.69,7l112-120A8,8,0,0,0,215.79,118.17ZM109.37,214l10.47-52.38a8,8,0,0,0-5-9.06L62,132.71l84.62-90.66L136.16,94.43a8,8,0,0,0,5,9.06l52.8,19.8Z\"\n ></path>\n </svg>\n `,\n})\nexport class BoltIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-bug-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M140,88a16,16,0,1,1,16,16A16,16,0,0,1,140,88ZM100,72a16,16,0,1,0,16,16A16,16,0,0,0,100,72Zm120,72a91.84,91.84,0,0,1-2.34,20.64L236.81,173a12,12,0,0,1-9.62,22l-18-7.85a92,92,0,0,1-162.46,0l-18,7.85a12,12,0,1,1-9.62-22l19.15-8.36A91.84,91.84,0,0,1,36,144v-4H16a12,12,0,0,1,0-24H36v-4a91.84,91.84,0,0,1,2.34-20.64L19.19,83a12,12,0,0,1,9.62-22l18,7.85a92,92,0,0,1,162.46,0l18-7.85a12,12,0,1,1,9.62,22l-19.15,8.36A91.84,91.84,0,0,1,220,112v4h20a12,12,0,0,1,0,24H220ZM60,116H196v-4a68,68,0,0,0-136,0Zm56,94.92V140H60v4A68.1,68.1,0,0,0,116,210.92ZM196,144v-4H140v70.92A68.1,68.1,0,0,0,196,144Z\"\n ></path>\n </svg>\n `,\n})\nexport class BugIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-code-icon',\n standalone: true,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M240,128l-48,40H64L16,128,64,88H192Z\" opacity=\"0.2\"></path>\n <path\n d=\"M69.12,94.15,28.5,128l40.62,33.85a8,8,0,1,1-10.24,12.29l-48-40a8,8,0,0,1,0-12.29l48-40a8,8,0,0,1,10.24,12.3Zm176,27.7-48-40a8,8,0,1,0-10.24,12.3L227.5,128l-40.62,33.85a8,8,0,1,0,10.24,12.29l48-40a8,8,0,0,0,0-12.29ZM162.73,32.48a8,8,0,0,0-10.25,4.79l-64,176a8,8,0,0,0,4.79,10.26A8.14,8.14,0,0,0,96,224a8,8,0,0,0,7.52-5.27l64-176A8,8,0,0,0,162.73,32.48Z\"\n ></path>\n </svg>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CodeIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-database-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M216,80c0,26.51-39.4,48-88,48S40,106.51,40,80s39.4-48,88-48S216,53.49,216,80Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M128,24C74.17,24,32,48.6,32,80v96c0,31.4,42.17,56,96,56s96-24.6,96-56V80C224,48.6,181.83,24,128,24Zm80,104c0,9.62-7.88,19.43-21.61,26.92C170.93,163.35,150.19,168,128,168s-42.93-4.65-58.39-13.08C55.88,147.43,48,137.62,48,128V111.36c17.06,15,46.23,24.64,80,24.64s62.94-9.68,80-24.64ZM69.61,53.08C85.07,44.65,105.81,40,128,40s42.93,4.65,58.39,13.08C200.12,60.57,208,70.38,208,80s-7.88,19.43-21.61,26.92C170.93,115.35,150.19,120,128,120s-42.93-4.65-58.39-13.08C55.88,99.43,48,89.62,48,80S55.88,60.57,69.61,53.08ZM186.39,202.92C170.93,211.35,150.19,216,128,216s-42.93-4.65-58.39-13.08C55.88,195.43,48,185.62,48,176V159.36c17.06,15,46.23,24.64,80,24.64s62.94-9.68,80-24.64V176C208,185.62,200.12,195.43,186.39,202.92Z\"\n ></path>\n </svg>\n `,\n})\nexport class DatabaseIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-discord-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M104,140a12,12,0,1,1-12-12A12,12,0,0,1,104,140Zm60-12a12,12,0,1,0,12,12A12,12,0,0,0,164,128Zm74.45,64.9-67,29.71a16.17,16.17,0,0,1-21.71-9.1l-8.11-22q-6.72.45-13.63.46t-13.63-.46l-8.11,22a16.18,16.18,0,0,1-21.71,9.1l-67-29.71a15.93,15.93,0,0,1-9.06-18.51L38,58A16.07,16.07,0,0,1,51,46.14l36.06-5.93a16.22,16.22,0,0,1,18.26,11.88l3.26,12.84Q118.11,64,128,64t19.4.93l3.26-12.84a16.21,16.21,0,0,1,18.26-11.88L205,46.14A16.07,16.07,0,0,1,218,58l29.53,116.38A15.93,15.93,0,0,1,238.45,192.9ZM232,178.28,202.47,62s0,0-.08,0L166.33,56a.17.17,0,0,0-.17,0l-2.83,11.14c5,.94,10,2.06,14.83,3.42A8,8,0,0,1,176,86.31a8.09,8.09,0,0,1-2.16-.3A172.25,172.25,0,0,0,128,80a172.25,172.25,0,0,0-45.84,6,8,8,0,1,1-4.32-15.4c4.82-1.36,9.78-2.48,14.82-3.42L89.83,56s0,0-.12,0h0L53.61,61.93a.17.17,0,0,0-.09,0L24,178.33,91,208a.23.23,0,0,0,.22,0L98,189.72a173.2,173.2,0,0,1-20.14-4.32A8,8,0,0,1,82.16,170,171.85,171.85,0,0,0,128,176a171.85,171.85,0,0,0,45.84-6,8,8,0,0,1,4.32,15.41A173.2,173.2,0,0,1,158,189.72L164.75,208a.22.22,0,0,0,.21,0Z\"\n ></path>\n </svg>\n `,\n})\nexport class DiscordIconComponent {\n fill = input<string>('#000000');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-docs-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M213.66,66.34l-40-40A8,8,0,0,0,168,24H88A16,16,0,0,0,72,40V56H56A16,16,0,0,0,40,72V216a16,16,0,0,0,16,16H168a16,16,0,0,0,16-16V200h16a16,16,0,0,0,16-16V72A8,8,0,0,0,213.66,66.34ZM168,216H56V72h76.69L168,107.31v84.53c0,.06,0,.11,0,.16s0,.1,0,.16V216Zm32-32H184V104a8,8,0,0,0-2.34-5.66l-40-40A8,8,0,0,0,136,56H88V40h76.69L200,75.31Zm-56-32a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h48A8,8,0,0,1,144,152Zm0,32a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h48A8,8,0,0,1,144,184Z\"\n ></path>\n </svg>\n `,\n})\nexport class DocsIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-export-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M216,112v96a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V112A16,16,0,0,1,56,96H80a8,8,0,0,1,0,16H56v96H200V112H176a8,8,0,0,1,0-16h24A16,16,0,0,1,216,112ZM93.66,69.66,120,43.31V136a8,8,0,0,0,16,0V43.31l26.34,26.35a8,8,0,0,0,11.32-11.32l-40-40a8,8,0,0,0-11.32,0l-40,40A8,8,0,0,0,93.66,69.66Z\"\n ></path>\n </svg>\n `,\n})\nexport class ExportIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-filter-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M227.81,66.76l-.08.09L160,139.17v55.49A8,8,0,0,1,156.94,201l-32,21.33A8,8,0,0,1,112,216V139.17L44.27,66.85l-.08-.09A16,16,0,0,1,56,40H200a16,16,0,0,1,11.84,26.76Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M230.6,49.53A23.94,23.94,0,0,0,200,32H56A24,24,0,0,0,38.15,65.67L104,139.37V216a8,8,0,0,0,11.58,7.16l32-16A8,8,0,0,0,152,200V139.37l65.85-73.7A23.93,23.93,0,0,0,230.6,49.53ZM203.36,54.86a8,8,0,0,1,.07,9.12L136,139.17V196.58l-16,8V139.17L52.57,64A8,8,0,0,1,56,48H200A8,8,0,0,1,203.36,54.86Z\"\n ></path>\n </svg>\n `,\n})\nexport class FilterIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-gauge-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M232,152a103.93,103.93,0,0,1-5.9,34.63,8,8,0,0,1-7.57,5.37H37.46a8.05,8.05,0,0,1-7.57-5.41A104.06,104.06,0,0,1,24,151.19C24.44,94,71.73,47.49,129,48A104,104,0,0,1,232,152Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M114.34,154.34l96-96a8,8,0,0,1,11.32,11.32l-96,96a8,8,0,0,1-11.32-11.32ZM128,88a63.9,63.9,0,0,1,20.44,3.33,8,8,0,1,0,5.11-15.16A80,80,0,0,0,48.49,160.88,8,8,0,0,0,56.43,168c.29,0,.59,0,.89-.05a8,8,0,0,0,7.07-8.83A64.92,64.92,0,0,1,64,152,64.07,64.07,0,0,1,128,88Zm99.74,13a8,8,0,0,0-14.24,7.3,96.27,96.27,0,0,1,5,75.71l-181.1-.07A96.24,96.24,0,0,1,128,56h.88a95,95,0,0,1,42.82,10.5A8,8,0,1,0,179,52.27,110.8,110.8,0,0,0,129,40h-1A112.05,112.05,0,0,0,22.35,189.25,16.07,16.07,0,0,0,37.46,200H218.53a16,16,0,0,0,15.11-10.71,112.35,112.35,0,0,0-5.9-88.3Z\"\n ></path>\n </svg>\n `,\n})\nexport class GaugeIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-gear-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M207.86,123.18l16.78-21a99.14,99.14,0,0,0-10.07-24.29l-26.7-3a81,81,0,0,0-6.81-6.81l-3-26.71a99.43,99.43,0,0,0-24.3-10l-21,16.77a81.59,81.59,0,0,0-9.64,0l-21-16.78A99.14,99.14,0,0,0,77.91,41.43l-3,26.7a81,81,0,0,0-6.81,6.81l-26.71,3a99.43,99.43,0,0,0-10,24.3l16.77,21a81.59,81.59,0,0,0,0,9.64l-16.78,21a99.14,99.14,0,0,0,10.07,24.29l26.7,3a81,81,0,0,0,6.81,6.81l3,26.71a99.43,99.43,0,0,0,24.3,10l21-16.77a81.59,81.59,0,0,0,9.64,0l21,16.78a99.14,99.14,0,0,0,24.29-10.07l3-26.7a81,81,0,0,0,6.81-6.81l26.71-3a99.43,99.43,0,0,0,10-24.3l-16.77-21A81.59,81.59,0,0,0,207.86,123.18ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm88-29.84q.06-2.16,0-4.32l14.92-18.64a8,8,0,0,0,1.48-7.06,107.6,107.6,0,0,0-10.88-26.25,8,8,0,0,0-6-3.93l-23.72-2.64q-1.48-1.56-3-3L186,40.54a8,8,0,0,0-3.94-6,107.29,107.29,0,0,0-26.25-10.86,8,8,0,0,0-7.06,1.48L130.16,40Q128,40,125.84,40L107.2,25.11a8,8,0,0,0-7.06-1.48A107.6,107.6,0,0,0,73.89,34.51a8,8,0,0,0-3.93,6L67.32,64.27q-1.56,1.49-3,3L40.54,70a8,8,0,0,0-6,3.94,107.71,107.71,0,0,0-10.87,26.25,8,8,0,0,0,1.49,7.06L40,125.84Q40,128,40,130.16L25.11,148.8a8,8,0,0,0-1.48,7.06,107.6,107.6,0,0,0,10.88,26.25,8,8,0,0,0,6,3.93l23.72,2.64q1.49,1.56,3,3L70,215.46a8,8,0,0,0,3.94,6,107.71,107.71,0,0,0,26.25,10.87,8,8,0,0,0,7.06-1.49L125.84,216q2.16.06,4.32,0l18.64,14.92a8,8,0,0,0,7.06,1.48,107.21,107.21,0,0,0,26.25-10.88,8,8,0,0,0,3.93-6l2.64-23.72q1.56-1.48,3-3L215.46,186a8,8,0,0,0,6-3.94,107.71,107.71,0,0,0,10.87-26.25,8,8,0,0,0-1.49-7.06Zm-16.1-6.5a73.93,73.93,0,0,1,0,8.68,8,8,0,0,0,1.74,5.48l14.19,17.73a91.57,91.57,0,0,1-6.23,15L187,173.11a8,8,0,0,0-5.1,2.64,74.11,74.11,0,0,1-6.14,6.14,8,8,0,0,0-2.64,5.1l-2.51,22.58a91.32,91.32,0,0,1-15,6.23l-17.74-14.19a8,8,0,0,0-5-1.75h-.48a73.93,73.93,0,0,1-8.68,0,8.06,8.06,0,0,0-5.48,1.74L100.45,215.8a91.57,91.57,0,0,1-15-6.23L82.89,187a8,8,0,0,0-2.64-5.1,74.11,74.11,0,0,1-6.14-6.14,8,8,0,0,0-5.1-2.64L46.43,170.6a91.32,91.32,0,0,1-6.23-15l14.19-17.74a8,8,0,0,0,1.74-5.48,73.93,73.93,0,0,1,0-8.68,8,8,0,0,0-1.74-5.48L40.2,100.45a91.57,91.57,0,0,1,6.23-15L69,82.89a8,8,0,0,0,5.1-2.64,74.11,74.11,0,0,1,6.14-6.14A8,8,0,0,0,82.89,69L85.4,46.43a91.32,91.32,0,0,1,15-6.23l17.74,14.19a8,8,0,0,0,5.48,1.74,73.93,73.93,0,0,1,8.68,0,8.06,8.06,0,0,0,5.48-1.74L155.55,40.2a91.57,91.57,0,0,1,15,6.23L173.11,69a8,8,0,0,0,2.64,5.1,74.11,74.11,0,0,1,6.14,6.14,8,8,0,0,0,5.1,2.64l22.58,2.51a91.32,91.32,0,0,1,6.23,15l-14.19,17.74A8,8,0,0,0,199.87,123.66Z\"\n ></path>\n </svg>\n `,\n})\nexport class GearIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-git-branch-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M224,64a24,24,0,1,1-24-24A24,24,0,0,1,224,64Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M232,64a32,32,0,1,0-40,31v17a8,8,0,0,1-8,8H96a23.84,23.84,0,0,0-8,1.38V95a32,32,0,1,0-16,0v66a32,32,0,1,0,16,0V144a8,8,0,0,1,8-8h88a24,24,0,0,0,24-24V95A32.06,32.06,0,0,0,232,64ZM64,64A16,16,0,1,1,80,80,16,16,0,0,1,64,64ZM96,192a16,16,0,1,1-16-16A16,16,0,0,1,96,192ZM200,80a16,16,0,1,1,16-16A16,16,0,0,1,200,80Z\"\n ></path>\n </svg>\n `,\n})\nexport class GitBranchIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-import-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z\"\n ></path>\n </svg>\n `,\n})\nexport class ImportIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-layout-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M104,104V208H40a8,8,0,0,1-8-8V104Z\" opacity=\"0.2\"></path>\n <path\n d=\"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40Zm0,16V96H40V56ZM40,112H96v88H40Zm176,88H112V112H216v88Z\"\n ></path>\n </svg>\n `,\n})\nexport class LayoutIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-lightbulb-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M176,232a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h80A8,8,0,0,1,176,232Zm40-128a87.55,87.55,0,0,1-33.64,69.21A16.24,16.24,0,0,0,176,186v6a16,16,0,0,1-16,16H96a16,16,0,0,1-16-16v-6a16,16,0,0,0-6.23-12.66A87.59,87.59,0,0,1,40,104.49C39.74,56.83,78.26,17.14,125.88,16A88,88,0,0,1,216,104Zm-16,0a72,72,0,0,0-73.74-72c-39,.92-70.47,33.39-70.26,72.39a71.65,71.65,0,0,0,27.64,56.3A32,32,0,0,1,96,186v6h64v-6a32.15,32.15,0,0,1,12.47-25.35A71.65,71.65,0,0,0,200,104Zm-16.11-9.34a57.6,57.6,0,0,0-46.56-46.55,8,8,0,0,0-2.66,15.78c16.57,2.79,30.63,16.85,33.44,33.45A8,8,0,0,0,176,104a9,9,0,0,0,1.35-.11A8,8,0,0,0,183.89,94.66Z\"\n ></path>\n </svg>\n `,\n})\nexport class LightbulbIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-lighting-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M96,240l16-80L48,136,160,16,144,96l64,24Z\" opacity=\"0.2\"></path>\n <path\n d=\"M215.79,118.17a8,8,0,0,0-5-5.66L153.18,90.9l14.66-73.33a8,8,0,0,0-13.69-7l-112,120a8,8,0,0,0,3,13l57.63,21.61L88.16,238.43a8,8,0,0,0,13.69,7l112-120A8,8,0,0,0,215.79,118.17ZM109.37,214l10.47-52.38a8,8,0,0,0-5-9.06L62,132.71l84.62-90.66L136.16,94.43a8,8,0,0,0,5,9.06l52.8,19.8Z\"\n ></path>\n </svg>\n `,\n})\nexport class LightingIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-lock-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M208,80H176V56a48,48,0,0,0-96,0V80H48A16,16,0,0,0,32,96V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V96A16,16,0,0,0,208,80ZM96,56a32,32,0,0,1,64,0V80H96ZM208,208H48V96H208V208Zm-68-56a12,12,0,1,1-12-12A12,12,0,0,1,140,152Z\"\n ></path>\n </svg>\n `,\n})\nexport class LockIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-moon-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M224.3,150.3a8.1,8.1,0,0,0-7.8-5.7l-2.2.4A84,84,0,0,1,111,41.6a5.7,5.7,0,0,0,.3-1.8A7.9,7.9,0,0,0,109,33a8.1,8.1,0,0,0-8.1-1.1A104,104,0,1,0,225.4,156.9,8.1,8.1,0,0,0,224.3,150.3Z\"\n opacity=\"0.2\"\n />\n <path\n d=\"M233.5,137.3a12.1,12.1,0,0,0-11.8-8.6,7.9,7.9,0,0,0-1.3.1,80,80,0,0,1-98.2-98.2,12,12,0,0,0-15.6-14A104.2,104.2,0,0,0,32,120c0,57.4,46.6,104,104,104A104.2,104.2,0,0,0,239.4,149.6,12,12,0,0,0,233.5,137.3ZM136,208A88,88,0,0,1,48,120a87.6,87.6,0,0,1,64.8-84.7,96,96,0,0,0,111.9,112A87.6,87.6,0,0,1,136,208Z\"\n />\n </svg>\n `,\n})\nexport class MoonIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-network-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M152,40V72a8,8,0,0,1-8,8H112a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h32A8,8,0,0,1,152,40ZM80,168H48a8,8,0,0,0-8,8v32a8,8,0,0,0,8,8H80a8,8,0,0,0,8-8V176A8,8,0,0,0,80,168Zm128,0H176a8,8,0,0,0-8,8v32a8,8,0,0,0,8,8h32a8,8,0,0,0,8-8V176A8,8,0,0,0,208,168Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M232,112H136V88h8a16,16,0,0,0,16-16V40a16,16,0,0,0-16-16H112A16,16,0,0,0,96,40V72a16,16,0,0,0,16,16h8v24H24a8,8,0,0,0,0,16H56v32H48a16,16,0,0,0-16,16v32a16,16,0,0,0,16,16H80a16,16,0,0,0,16-16V176a16,16,0,0,0-16-16H72V128H184v32h-8a16,16,0,0,0-16,16v32a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V176a16,16,0,0,0-16-16h-8V128h32a8,8,0,0,0,0-16ZM112,40h32V72H112ZM80,208H48V176H80Zm128,0H176V176h32Z\"\n ></path>\n </svg>\n `,\n})\nexport class NetworkIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-puzzle-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M204,168a28,28,0,0,0,12-2.69V208a8,8,0,0,1-8,8H64a8,8,0,0,1-8-8V165.31a28,28,0,1,1,0-50.62V72a8,8,0,0,1,8-8h46.69a28,28,0,1,1,50.61,0H208a8,8,0,0,1,8,8v42.69A28,28,0,1,0,204,168Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M220.27,158.54a8,8,0,0,0-7.7-.46,20,20,0,1,1,0-36.16A8,8,0,0,0,224,114.69V72a16,16,0,0,0-16-16H171.78a35.36,35.36,0,0,0,.22-4,36.15,36.15,0,0,0-11.36-26.25,36,36,0,0,0-60.55,23.63,36.56,36.56,0,0,0,.14,6.62H64A16,16,0,0,0,48,72v32.22a35.36,35.36,0,0,0-4-.22,36.12,36.12,0,0,0-26.24,11.36,35.7,35.7,0,0,0-9.69,27,36.08,36.08,0,0,0,33.31,33.6,36.56,36.56,0,0,0,6.62-.14V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V165.31A8,8,0,0,0,220.27,158.54ZM208,208H64V165.31a8,8,0,0,0-11.43-7.23,20,20,0,1,1,0-36.16A8,8,0,0,0,64,114.69V72h46.69a8,8,0,0,0,7.23-11.43,20,20,0,1,1,36.16,0A8,8,0,0,0,161.31,72H208v32.23a35.68,35.68,0,0,0-6.62-.14A36,36,0,0,0,204,176a35.36,35.36,0,0,0,4-.22Z\"\n ></path>\n </svg>\n `,\n})\nexport class PuzzleIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-refresh-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M216,128a88,88,0,1,1-88-88A88,88,0,0,1,216,128Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M224,48V96a8,8,0,0,1-8,8H168a8,8,0,0,1,0-16h28.69L182.06,73.37a79.56,79.56,0,0,0-56.13-23.43h-.45A79.52,79.52,0,0,0,69.59,72.71,8,8,0,0,1,58.41,61.27a96,96,0,0,1,135,.79L208,76.69V48a8,8,0,0,1,16,0ZM186.41,183.29a80,80,0,0,1-112.47-.66L59.31,168H88a8,8,0,0,0,0-16H40a8,8,0,0,0-8,8v48a8,8,0,0,0,16,0V179.31l14.63,14.63A95.43,95.43,0,0,0,130,222.06h.53a95.36,95.36,0,0,0,67.07-27.33,8,8,0,0,0-11.18-11.44Z\"\n ></path>\n </svg>\n `,\n})\nexport class RefreshIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-star-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M229.06,108.79l-48.7,42,14.88,62.79a8.4,8.4,0,0,1-12.52,9.17L128,189.09,73.28,222.74a8.4,8.4,0,0,1-12.52-9.17l14.88-62.79-48.7-42A8.46,8.46,0,0,1,31.73,94L95.64,88.8l24.62-59.6a8.36,8.36,0,0,1,15.48,0l24.62,59.6L224.27,94A8.46,8.46,0,0,1,229.06,108.79Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M239.18,97.26A16.38,16.38,0,0,0,224.92,86l-59-4.76L143.14,26.15a16.36,16.36,0,0,0-30.27,0L90.11,81.23,31.08,86a16.46,16.46,0,0,0-9.37,28.86l45,38.83L53,211.75a16.38,16.38,0,0,0,24.5,17.82L128,198.49l50.53,31.08A16.4,16.4,0,0,0,203,211.75l-13.76-58.07,45-38.83A16.43,16.43,0,0,0,239.18,97.26Zm-15.34,5.47-48.7,42a8,8,0,0,0-2.56,7.91l14.88,62.8a.37.37,0,0,1-.17.48c-.18.14-.23.11-.38,0l-54.72-33.65a8,8,0,0,0-8.38,0L69.09,215.94c-.15.09-.19.12-.38,0a.37.37,0,0,1-.17-.48l14.88-62.8a8,8,0,0,0-2.56-7.91l-48.7-42c-.12-.1-.23-.19-.13-.5s.18-.27.33-.29l63.92-5.16A8,8,0,0,0,103,91.86l24.62-59.61c.08-.17.11-.25.35-.25s.27.08.35.25L153,91.86a8,8,0,0,0,6.75,4.92l63.92,5.16c.15,0,.24,0,.33.29S224,102.63,223.84,102.73Z\"\n ></path>\n </svg>\n `,\n})\nexport class StarIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-sun-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M128,60a68,68,0,1,0,68,68A68.07,68.07,0,0,0,128,60Z\"\n opacity=\"0.2\"\n />\n <path\n d=\"M128,44a8,8,0,0,0,8-8V16a8,8,0,0,0-16,0V36A8,8,0,0,0,128,44ZM57.31,68.69a8,8,0,0,0,11.32-11.32L54.63,43.37A8,8,0,0,0,43.31,54.69ZM44,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H36A8,8,0,0,0,44,128Zm24.63,59.31-14,14a8,8,0,0,0,11.32,11.32l14-14a8,8,0,0,0-11.32-11.32ZM128,212a8,8,0,0,0-8,8v20a8,8,0,0,0,16,0V220A8,8,0,0,0,128,212Zm70.69-24.69a8,8,0,0,0-11.32,11.32l14,14a8,8,0,0,0,11.32-11.32ZM240,120H220a8,8,0,0,0,0,16h20a8,8,0,0,0,0-16Zm-24.69-62.63-14,14a8,8,0,0,0,11.32,11.32l14-14a8,8,0,0,0-11.32-11.32ZM128,76a52,52,0,1,0,52,52A52.06,52.06,0,0,0,128,76Zm0,88a36,36,0,1,1,36-36A36,36,0,0,1,128,164Z\"\n />\n </svg>\n `,\n})\nexport class SunIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-terminal-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M224,56V200a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8H216A8,8,0,0,1,224,56Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M128,128a8,8,0,0,1-3,6.25l-40,32a8,8,0,1,1-10-12.5L107.19,128,75,102.25a8,8,0,1,1,10-12.5l40,32A8,8,0,0,1,128,128Zm48,24H136a8,8,0,0,0,0,16h40a8,8,0,0,0,0-16Zm56-96V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216A16,16,0,0,1,232,56ZM216,200V56H40V200H216Z\"\n ></path>\n </svg>\n `,\n})\nexport class TerminalIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-toggle-left-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M112,128A32,32,0,1,1,80,96,32,32,0,0,1,112,128Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M176,56H80a72,72,0,0,0,0,144h96a72,72,0,0,0,0-144Zm0,128H80A56,56,0,0,1,80,72h96a56,56,0,0,1,0,112ZM80,88a40,40,0,1,0,40,40A40,40,0,0,0,80,88Zm0,64a24,24,0,1,1,24-24A24,24,0,0,1,80,152Z\"\n ></path>\n </svg>\n `,\n})\nexport class ToggleLeftIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-translate-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M250.73,210.63l-56-112a12,12,0,0,0-21.46,0l-20.52,41A84.2,84.2,0,0,1,114,126.22,107.48,107.48,0,0,0,139.33,68H160a12,12,0,0,0,0-24H108V32a12,12,0,0,0-24,0V44H32a12,12,0,0,0,0,24h83.13A83.69,83.69,0,0,1,96,110.35,84,84,0,0,1,83.6,91a12,12,0,1,0-21.81,10A107.55,107.55,0,0,0,78,126.24,83.54,83.54,0,0,1,32,140a12,12,0,0,0,0,24,107.47,107.47,0,0,0,64-21.07,108.4,108.4,0,0,0,45.39,19.44l-24.13,48.26a12,12,0,1,0,21.46,10.73L151.41,196h65.17l12.68,25.36a12,12,0,1,0,21.47-10.73ZM163.41,172,184,130.83,204.58,172Z\"\n ></path>\n </svg>\n `,\n})\nexport class TranslateIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-trash-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z\"\n ></path>\n </svg>\n `,\n})\nexport class TrashIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-users-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M224,128a95.76,95.76,0,0,1-31.8,71.37A72,72,0,0,0,128,160a40,40,0,1,0-40-40,40,40,0,0,0,40,40,72,72,0,0,0-64.2,39.37h0A96,96,0,1,1,224,128Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24ZM74.08,197.5a64,64,0,0,1,107.84,0,87.83,87.83,0,0,1-107.84,0ZM96,120a32,32,0,1,1,32,32A32,32,0,0,1,96,120Zm97.76,66.41a79.66,79.66,0,0,0-36.06-28.75,48,48,0,1,0-59.4,0,79.66,79.66,0,0,0-36.06,28.75,88,88,0,1,1,131.52,0Z\"\n ></path>\n </svg>\n `,\n})\nexport class UsersIconComponent {\n fill = input<string>('#FFFF');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n} from '@angular/core';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\nimport { AngularIconComponent } from './angular-icon.component';\nimport { BoltIconComponent } from './bolt-icon.component';\nimport { BugIconComponent } from './bug-icon.component';\nimport { CodeIconComponent } from './code-icon.component';\nimport { DatabaseIconComponent } from './database-icon.component';\nimport { DiscordIconComponent } from './discord-icon.component';\nimport { DocsIconComponent } from './docs-icon.component';\nimport { ExportIconComponent } from './export-icon.component';\nimport { FilterIconComponent } from './filter-icon.component';\nimport { GaugeIconComponent } from './gauge-icon.component';\nimport { GearIconComponent } from './gear-icon.component';\nimport { GitBranchIconComponent } from './git-branch-icon.component';\nimport { IconName } from './icon.models';\nimport { ImportIconComponent } from './import-icon.component';\nimport { LayoutIconComponent } from './layout-icon.component';\nimport { LightbulbIconComponent } from './lightbulb-icon.component';\nimport { LightingIconComponent } from './lighting-icon.component';\nimport { LockIconComponent } from './lock-icon.component';\nimport { MoonIconComponent } from './moon-icon.component';\nimport { NetworkIconComponent } from './network-icon.component';\nimport { PuzzleIconComponent } from './puzzle-icon.component';\nimport { RefreshIconComponent } from './refresh-icon.component';\nimport { StarIconComponent } from './star-icon.component';\nimport { SunIconComponent } from './sun-icon.component';\nimport { TerminalIconComponent } from './terminal-icon.component';\nimport { ToggleLeftIconComponent } from './toggle-left-icon.component';\nimport { TranslateIconComponent } from './translate-icon.component';\nimport { TrashIconComponent } from './trash-icon.component';\nimport { UsersIconComponent } from './users-icon.component';\n\n@Component({\n selector: 'ndt-icon',\n standalone: true,\n imports: [\n AngularIconComponent,\n BoltIconComponent,\n BugIconComponent,\n CodeIconComponent,\n DatabaseIconComponent,\n DocsIconComponent,\n DiscordIconComponent,\n ExportIconComponent,\n FilterIconComponent,\n GaugeIconComponent,\n GearIconComponent,\n GitBranchIconComponent,\n ImportIconComponent,\n LayoutIconComponent,\n LightbulbIconComponent,\n LightingIconComponent,\n LockIconComponent,\n NetworkIconComponent,\n PuzzleIconComponent,\n RefreshIconComponent,\n StarIconComponent,\n TerminalIconComponent,\n ToggleLeftIconComponent,\n UsersIconComponent,\n SunIconComponent,\n MoonIconComponent,\n TranslateIconComponent,\n TrashIconComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @switch (name()) { @case ('angular') {\n <ndt-angular-icon />\n } @case ('bolt') {\n <ndt-bolt-icon [fill]=\"fill()\" />\n } @case ('bug') {\n <ndt-bug-icon [fill]=\"fill()\" />\n } @case ('code') {\n <ndt-code-icon [fill]=\"fill()\" />\n } @case ('database') {\n <ndt-database-icon [fill]=\"fill()\" />\n } @case ('docs') {\n <ndt-docs-icon [fill]=\"fill()\" />\n } @case ('export') {\n <ndt-export-icon [fill]=\"fill()\" />\n } @case ('filter') {\n <ndt-filter-icon [fill]=\"fill()\" />\n } @case ('gauge') {\n <ndt-gauge-icon [fill]=\"fill()\" />\n } @case ('gear') {\n <ndt-gear-icon [fill]=\"fill()\" />\n } @case ('git-branch') {\n <ndt-git-branch-icon [fill]=\"fill()\" />\n } @case ('import') {\n <ndt-import-icon [fill]=\"fill()\" />\n } @case ('layout') {\n <ndt-layout-icon [fill]=\"fill()\" />\n } @case ('lighting') {\n <ndt-lighting-icon [fill]=\"fill()\" />\n } @case ('lightbulb') {\n <ndt-lightbulb-icon [fill]=\"fill()\" />\n } @case ('lock') {\n <ndt-lock-icon [fill]=\"fill()\" />\n } @case ('network') {\n <ndt-network-icon [fill]=\"fill()\" />\n } @case ('puzzle') {\n <ndt-puzzle-icon [fill]=\"fill()\" />\n } @case ('refresh') {\n <ndt-refresh-icon [fill]=\"fill()\" />\n } @case ('star') {\n <ndt-star-icon [fill]=\"fill()\" />\n } @case ('terminal') {\n <ndt-terminal-icon [fill]=\"fill()\" />\n } @case ('toggle-left') {\n <ndt-toggle-left-icon [fill]=\"fill()\" />\n } @case ('user') {\n <ndt-users-icon [fill]=\"fill()\" />\n } @case ('sun') {\n <ndt-sun-icon [fill]=\"fill()\" />\n } @case ('moon') {\n <ndt-moon-icon [fill]=\"fill()\" />\n } @case ('translate') {\n <ndt-translate-icon [fill]=\"fill()\" />\n } @case ('discord') {\n <ndt-discord-icon [fill]=\"fill()\" />\n } @case ('trash') {\n <ndt-trash-icon [fill]=\"fill()\" />\n } }\n `,\n})\nexport class DevToolbarIconComponent {\n private readonly stateService = inject(DevToolbarStateService);\n\n name = input.required<IconName>();\n\n fill = computed(() =>\n this.stateService.theme() === 'dark' ? '#FFFFFF' : '#000000'\n );\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Container component for displaying lists of items with consistent scrolling,\n * empty states, and layout across all tools.\n *\n * @example\n * ```html\n * <ndt-list\n * [hasItems]=\"items().length > 0\"\n * [hasResults]=\"filteredItems().length > 0\"\n * emptyMessage=\"No items found\"\n * noResultsMessage=\"No items match your filter\"\n * >\n * @for (item of filteredItems(); track item.id) {\n * <ndt-list-item ... />\n * }\n * </ndt-list>\n * ```\n */\n@Component({\n selector: 'ndt-list',\n standalone: true,\n imports: [CommonModule],\n template: `\n @if (!hasItems()) {\n <div class=\"empty-state\">\n <p>{{ emptyMessage() }}</p>\n @if (emptyHint()) {\n <p class=\"hint\">{{ emptyHint() }}</p>\n }\n </div>\n } @else if (!hasResults()) {\n <div class=\"empty-state\">\n <p>{{ noResultsMessage() }}</p>\n </div>\n } @else {\n <div class=\"list-container\">\n <ng-content />\n </div>\n }\n `,\n styleUrls: ['./list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarListComponent {\n /**\n * Whether the list has any items at all (before filtering).\n * When false, shows the emptyMessage.\n */\n hasItems = input<boolean>(true);\n\n /**\n * Whether the list has any results after filtering.\n * When false (but hasItems is true), shows the noResultsMessage.\n */\n hasResults = input<boolean>(true);\n\n /**\n * Message to display when there are no items at all.\n * @example \"No feature flags found\"\n */\n emptyMessage = input<string>('No items found');\n\n /**\n * Optional hint text to display below the empty message.\n * @example \"Call setAvailableOptions() to configure features\"\n */\n emptyHint = input<string | undefined>(undefined);\n\n /**\n * Message to display when items exist but none match the current filter.\n * @example \"No flags match your filter\"\n */\n noResultsMessage = input<string>('No results match your filter');\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * List item component with consistent layout, dot badge indicator,\n * and forced state highlighting.\n *\n * @example\n * ```html\n * <ndt-list-item\n * title=\"Analytics Dashboard\"\n * description=\"Advanced reporting tools\"\n * [isForced]=\"false\"\n * [currentValue]=\"true\"\n * [originalValue]=\"undefined\"\n * >\n * <ndt-select ... />\n * </ndt-list-item>\n * ```\n */\n@Component({\n selector: 'ndt-list-item',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div class=\"list-item\" [class.list-item--forced]=\"isForced()\">\n <div class=\"info\">\n <h3>{{ title() }}</h3>\n @if (description()) {\n <div class=\"description-wrapper\">\n <span\n class=\"dot-indicator\"\n [class.dot-indicator--on]=\"displayValue()\"\n [class.dot-indicator--off]=\"!displayValue()\"\n [title]=\"tooltipText()\"\n ></span>\n <p>{{ description() }}</p>\n </div>\n }\n </div>\n <div class=\"actions\">\n <ng-content />\n </div>\n </div>\n `,\n styleUrls: ['./list-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarListItemComponent {\n /**\n * Display title for the list item\n * @example \"Analytics Dashboard\"\n */\n title = input.required<string>();\n\n /**\n * Optional description text\n * @example \"Advanced reporting and data visualization tools\"\n */\n description = input<string | undefined>(undefined);\n\n /**\n * Whether this item's state is forced via the dev toolbar\n */\n isForced = input<boolean>(false);\n\n /**\n * Current enabled/granted state of the item\n */\n currentValue = input.required<boolean>();\n\n /**\n * Original value before forcing (only present when isForced is true)\n */\n originalValue = input<boolean | undefined>(undefined);\n\n /**\n * Value to display in the dot indicator.\n * For forced items: shows originalValue\n * For non-forced items: shows currentValue\n */\n protected displayValue = computed(() => {\n const originalValue = this.originalValue();\n return this.isForced() && originalValue !== undefined\n ? originalValue\n : this.currentValue();\n });\n\n /**\n * Tooltip text explaining the indicator state\n */\n protected tooltipText = computed(() => {\n const value = this.displayValue();\n const state = value ? 'enabled' : 'disabled';\n\n if (this.isForced() && this.originalValue() !== undefined) {\n return `Originally: ${state}`;\n }\n\n return `Current state: ${state}`;\n });\n}\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\n\n@Component({\n selector: 'ndt-tool-button',\n standalone: true,\n template: `\n <button\n class=\"tool-button\"\n [class.tool-button--active]=\"isActive()\"\n [class.tool-button--focus]=\"isFocused()\"\n (mouseenter)=\"onMouseEnter()\"\n (focusin)=\"onFocus()\"\n (focusout)=\"onBlur()\"\n (mouseleave)=\"onMouseLeave()\"\n (keydown.escape)=\"onEscape()\"\n >\n @if (isTooltipVisible()) {\n <span\n class=\"tooltip\"\n [@tooltipAnimation]=\"tooltipState ? 'visible' : 'hidden'\"\n >\n {{ tooltip() }}\n </span>\n }\n <ng-content />\n </button>\n `,\n styleUrls: ['./tool-button.component.scss'],\n animations: [\n trigger('tooltipAnimation', [\n state(\n 'hidden',\n style({\n opacity: 0,\n transform: 'translateX(-50%) translateY(1rem)',\n })\n ),\n state(\n 'visible',\n style({\n opacity: 1,\n transform: 'translateX(-50%) translateY(0)',\n })\n ),\n transition('hidden => visible', [animate('200ms ease-out')]),\n transition('visible => hidden', [animate('150ms ease-in')]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarToolButtonComponent {\n // Injects\n private readonly state = inject(DevToolbarStateService);\n private readonly elementRef = inject(ElementRef);\n\n // Inputs\n readonly title = input.required<string>();\n readonly toolId = input.required<string>();\n\n // Outputs\n readonly open = output<void>();\n\n // Signals\n readonly isActive = computed(\n () => this.state.activeToolId() === this.toolId()\n );\n readonly isToolbarVisible = this.state.isVisible;\n\n readonly isFocused = signal(false);\n readonly tooltip = computed(\n () =>\n this.elementRef.nativeElement.parentElement?.getAttribute(\n 'data-tooltip'\n ) ?? ''\n );\n readonly isTooltipVisible = computed(\n () => this.tooltip() && !this.isActive()\n );\n\n // Properties\n protected tooltipState = false;\n private readonly hideDelay = 3000;\n\n // Public methods\n onClick(): void {\n this.isFocused.set(false);\n this.open.emit();\n }\n\n onMouseEnter(): void {\n this.tooltipState = true;\n }\n\n onMouseLeave(): void {\n this.tooltipState = false;\n }\n\n onEscape(): void {\n this.isFocused.set(false);\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\nimport { DevToolbarWindowOptions } from '../toolbar-tool/toolbar-tool.models';\n\n@Component({\n selector: 'ndt-window',\n standalone: true,\n template: `\n <div class=\"ndt-window\" [attr.data-theme]=\"theme()\">\n <div class=\"header\">\n <div class=\"header__content\">\n <div class=\"header__title\">\n <h1>{{ config().title }}</h1>\n @if (config().isBeta) {\n <span class=\"beta-tag\">BETA</span>\n }\n </div>\n <p class=\"header__description\">{{ config().description }}</p>\n </div>\n <div class=\"header__controls\">\n @if (config().isMinimizable) {\n <button aria-label=\"Minimize\" class=\"control\" (click)=\"onMinimize()\">\n −\n </button>\n } @if (config().isMaximizable) {\n <button aria-label=\"Maximize\" class=\"control\" (click)=\"onMaximize()\">\n □\n </button>\n } @if (config().isClosable) {\n <button\n aria-label=\"Close\"\n class=\"control control--close\"\n (click)=\"onClose()\"\n >\n ×\n </button>\n }\n </div>\n </div>\n\n <div class=\"divider\"></div>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n </div>\n `,\n styleUrls: ['./window.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarWindowComponent {\n readonly devToolbarStateService = inject(DevToolbarStateService);\n readonly config = input.required<DevToolbarWindowOptions>();\n readonly closed = output<void>();\n readonly maximize = output<void>();\n readonly minimize = output<void>();\n\n readonly theme = computed(() => this.devToolbarStateService.theme());\n\n protected onClose(): void {\n this.closed.emit();\n }\n\n protected onMaximize(): void {\n this.maximize.emit();\n }\n\n protected onMinimize(): void {\n this.minimize.emit();\n }\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n contentChild,\n inject,\n input,\n viewChild,\n} from '@angular/core';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\nimport { DevToolbarIconComponent } from '../icons/icon.component';\nimport { IconName } from '../icons/icon.models';\nimport { DevToolbarToolButtonComponent } from '../tool-button/tool-button.component';\nimport { DevToolbarWindowComponent } from '../window/window.component';\nimport { DevToolbarWindowOptions } from './toolbar-tool.models';\n\n@Component({\n selector: 'ndt-toolbar-tool',\n standalone: true,\n imports: [\n CdkConnectedOverlay,\n OverlayModule,\n DevToolbarWindowComponent,\n DevToolbarToolButtonComponent,\n DevToolbarIconComponent,\n ],\n template: `\n <div #trigger=\"cdkOverlayOrigin\" class=\"ndt-toolbar-tool\" cdkOverlayOrigin>\n <div\n class=\"ndt-toolbar-tool__icon\"\n (click)=\"onOpen()\"\n (keydown.enter)=\"onOpen()\"\n (keydown.space)=\"onOpen()\"\n tabindex=\"0\"\n >\n <div #buttonContainer [attr.data-tooltip]=\"title()\">\n @if (icon()) {\n <ndt-tool-button [title]=\"title()\" [toolId]=\"options().id\">\n <ndt-icon [name]=\"icon()\" />\n </ndt-tool-button>\n } @else {\n <ng-content select=\"ndt-tool-button\"></ng-content>\n }\n </div>\n </div>\n\n @if (isActive()) {\n <ng-template\n #contentTemplate\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isActive()\"\n [cdkConnectedOverlayPositions]=\"positions()\"\n [cdkConnectedOverlayWidth]=\"width()\"\n [cdkConnectedOverlayHeight]=\"height()\"\n [cdkConnectedOverlayPanelClass]=\"['ndt-overlay-panel', 'ndt-tool-overlay']\"\n cdkConnectedOverlay\n >\n <ndt-window [@slideAnimation] [config]=\"options()\" (closed)=\"onClose()\">\n <ng-content />\n </ndt-window>\n </ng-template>\n }\n </div>\n `,\n styleUrl: './toolbar-tool.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('slideAnimation', [\n transition(':enter', [\n style({\n transform: 'translateY(20px)',\n opacity: 0,\n }),\n animate(\n '400ms cubic-bezier(0.4, 0, 0.2, 1)',\n style({\n transform: 'translateY(0)',\n opacity: 1,\n })\n ),\n ]),\n transition(':leave', [\n style({\n transform: 'translateY(0)',\n opacity: 1,\n }),\n animate(\n '400ms cubic-bezier(0.4, 0, 0.2, 1)',\n style({\n transform: 'translateY(20px)',\n opacity: 0,\n })\n ),\n ]),\n ]),\n ],\n})\nexport class DevToolbarToolComponent {\n state = inject(DevToolbarStateService);\n buttonContainer = viewChild.required<ElementRef>('buttonContainer');\n buttonComponent = contentChild(DevToolbarToolButtonComponent);\n\n options = input.required<DevToolbarWindowOptions>();\n icon = input.required<IconName>();\n title = input.required<string>();\n isActive = computed(() => this.state.activeToolId() === this.options().id);\n height = computed(() => {\n switch (this.options().size) {\n case 'small':\n return 320;\n case 'medium':\n return 480;\n case 'tall':\n return 620;\n case 'large':\n return 620;\n default:\n return 480;\n }\n });\n\n width = computed(() => {\n switch (this.options().size) {\n case 'small':\n return 320;\n case 'medium':\n return 480;\n case 'tall':\n return 480;\n case 'large':\n return 620;\n default:\n return 400;\n }\n });\n positions = computed(() => {\n const triggerXPosition = this.getButtonContainerXPosition();\n const windowCenter = window.innerWidth / 2;\n const offsetX = windowCenter - triggerXPosition - 22;\n return [\n {\n originX: 'center' as const,\n originY: 'center' as const,\n overlayX: 'center' as const,\n overlayY: 'center' as const,\n offsetY: -(Math.ceil(this.height() / 2) + 36),\n offsetX,\n },\n ];\n });\n\n onOpen(): void {\n this.state.setActiveTool(this.options().id);\n }\n\n onClose(): void {\n this.state.setActiveTool(null);\n }\n\n getButtonContainerXPosition(): number {\n const buttonContainerRect =\n this.buttonContainer()?.nativeElement?.getBoundingClientRect();\n return buttonContainerRect?.left ?? 0;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n model,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'ndt-input',\n standalone: true,\n imports: [FormsModule],\n template: `\n <input\n [attr.aria-label]=\"ariaLabel()\"\n [type]=\"type()\"\n [class]=\"inputClass()\"\n [ngModel]=\"value()\"\n [placeholder]=\"placeholder()\"\n (ngModelChange)=\"value.set($event)\"\n />\n `,\n styleUrls: ['./input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarInputComponent {\n value = model.required<string>();\n\n type = input<string>('text');\n placeholder = input<string>('');\n ariaLabel = input<string>('');\n inputClass = input<string>('input');\n}\n","import { CdkMenuModule } from '@angular/cdk/menu';\nimport { ConnectedPosition, OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\n\nexport interface SelectOption {\n value: string;\n label: string;\n}\n\n@Component({\n selector: 'ndt-select',\n standalone: true,\n imports: [CommonModule, FormsModule, OverlayModule, CdkMenuModule],\n template: `\n <div\n class=\"ndt-select\"\n [class.small]=\"size() === 'small'\"\n [class.open]=\"isOpen()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"selectMenuId\"\n [attr.data-theme]=\"theme()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\"\n (keydown.space)=\"toggle()\"\n tabindex=\"0\"\n role=\"combobox\"\n >\n <span class=\"select__value\">{{ selectedLabel() }}</span>\n <span class=\"select__arrow\" aria-hidden=\"true\"></span>\n </div>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayPanelClass]=\"['ndt-overlay-panel', 'ndt-select-overlay']\"\n (overlayOutsideClick)=\"close()\"\n >\n <div\n [id]=\"selectMenuId\"\n class=\"ndt-select-menu\"\n cdkMenu\n role=\"listbox\"\n [attr.data-theme]=\"theme()\"\n >\n @for (option of options(); track option.value) {\n <button\n class=\"select-menu-item\"\n [class.selected]=\"option.value === value()\"\n [attr.aria-selected]=\"option.value === value()\"\n cdkMenuItem\n type=\"button\"\n (click)=\"selectOption(option)\"\n >\n {{ option.label }}\n </button>\n }\n </div>\n </ng-template>\n `,\n styleUrls: ['./select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarSelectComponent {\n readonly devToolbarStateService = inject(DevToolbarStateService);\n\n value = model<string>();\n options = input.required<SelectOption[]>();\n ariaLabel = input<string>('');\n label = input<string>('');\n size = input<'small' | 'medium'>('medium');\n readonly theme = computed(() => this.devToolbarStateService.theme());\n\n protected readonly selectMenuId = `select-menu-${Math.random()\n .toString(36)\n .slice(2, 11)}`;\n isOpen = signal(false);\n\n selectedLabel = computed(() => {\n const selected = this.options()?.find((opt) => opt.value === this.value());\n return selected?.label ?? '';\n });\n\n positions: ConnectedPosition[] = [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -4,\n },\n ];\n\n toggle() {\n this.isOpen.update((v) => !v);\n }\n\n close() {\n this.isOpen.set(false);\n }\n\n selectOption(option: SelectOption) {\n this.value.set(option.value);\n this.close();\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class DevToolsStorageService {\n private readonly PREFIX = 'AngularDevTools.';\n private readonly TOOLS_KEY = `${this.PREFIX}keys`;\n private readonly SETTINGS_KEY = `${this.PREFIX}settings`;\n\n public set<T>(key: string, value: T): void {\n const toolKey = this.getToolKey(key);\n this.addToolKey(toolKey);\n localStorage.setItem(toolKey, JSON.stringify(value));\n }\n\n public get<T>(key: string): T | null {\n const toolKey = this.getToolKey(key);\n const item = localStorage.getItem(toolKey);\n return item ? JSON.parse(item) : null;\n }\n\n public remove(key: string): void {\n const toolKey = this.getToolKey(key);\n localStorage.removeItem(toolKey);\n this.removeToolKey(toolKey);\n }\n\n public getAllSettings(): Record<string, unknown> {\n const settings: Record<string, unknown> = {};\n\n const keys = this.getToolKeys();\n keys.forEach((key) => {\n const value = this.get(key);\n if (value !== null) {\n settings[key] = value;\n }\n });\n\n return settings;\n }\n\n public setAllSettings(settings: Record<string, unknown>): void {\n Object.entries(settings).forEach(([key, value]) => {\n this.set(key, value);\n });\n }\n\n public clearAllSettings(): void {\n const keys = this.getToolKeys();\n keys.forEach((key) => {\n this.remove(key);\n });\n }\n\n public getToolKeys(): string[] {\n return JSON.parse(localStorage.getItem(this.TOOLS_KEY) ?? '[]');\n }\n\n private addToolKey(key: string) {\n const currentKeys = this.getToolKeys();\n if (currentKeys.includes(key)) {\n return;\n }\n currentKeys.push(key);\n localStorage.setItem(this.TOOLS_KEY, JSON.stringify(currentKeys));\n }\n\n private removeToolKey(key: string): void {\n const currentKeys = this.getToolKeys();\n const index = currentKeys.indexOf(key);\n if (index !== -1) {\n currentKeys.splice(index, 1);\n }\n localStorage.setItem(this.TOOLS_KEY, JSON.stringify(currentKeys));\n }\n\n private getToolKey(key: string): string {\n return key.includes(this.PREFIX) ? key : this.PREFIX + key;\n }\n\n}\n","import { Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, combineLatest, map } from 'rxjs';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport { DevToolbarAppFeature, ForcedAppFeaturesState } from './app-features.models';\n\n/**\n * Internal service for managing app features state and forced overrides.\n *\n * This service handles:\n * - Feature configuration storage\n * - Forced feature state management\n * - localStorage persistence\n * - State validation and cleanup\n *\n * @internal This service is for internal toolbar use only. Consumers should use DevToolbarAppFeaturesService.\n */\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarInternalAppFeaturesService {\n private readonly STORAGE_KEY = 'app-features';\n private storageService = inject(DevToolsStorageService);\n\n private appFeaturesSubject = new BehaviorSubject<DevToolbarAppFeature[]>([]);\n private forcedFeaturesSubject = new BehaviorSubject<ForcedAppFeaturesState>({\n enabled: [],\n disabled: [],\n });\n\n private readonly forcedFeatures$ = this.forcedFeaturesSubject.asObservable();\n\n /**\n * Observable stream of all features with merged forced state\n */\n public features$: Observable<DevToolbarAppFeature[]> = combineLatest([\n this.appFeaturesSubject.asObservable(),\n this.forcedFeatures$,\n ]).pipe(\n map(([appFeatures, forcedState]) => this.mergeForcedState(appFeatures, forcedState))\n );\n\n /**\n * Signal containing current features with merged forced state\n */\n public features = toSignal(this.features$, { initialValue: [] });\n\n constructor() {\n this.loadForcedFeatures();\n }\n\n /**\n * Set available app features for the application.\n * Validates features, trims whitespace, and triggers validation of forced state.\n *\n * @param features - Array of app features to configure\n * @throws Error if duplicate feature IDs or empty IDs are detected\n */\n setAppFeatures(features: DevToolbarAppFeature[]): void {\n // Validate for empty IDs\n const emptyIdFeature = features.find((f) => !f.id || f.id.trim() === '');\n if (emptyIdFeature) {\n throw new Error('Feature ID cannot be empty');\n }\n\n // Validate for duplicate IDs\n const ids = features.map((f) => f.id);\n const duplicateIds = ids.filter((id, index) => ids.indexOf(id) !== index);\n if (duplicateIds.length > 0) {\n throw new Error(`Duplicate feature IDs detected: ${duplicateIds.join(', ')}`);\n }\n\n // Trim whitespace from names and warn about empty names\n const processedFeatures = features.map((feature) => {\n const trimmedName = feature.name.trim();\n if (!trimmedName) {\n console.warn(`Feature '${feature.id}' has empty name`);\n }\n return {\n ...feature,\n name: trimmedName || feature.name,\n };\n });\n\n this.appFeaturesSubject.next(processedFeatures);\n this.validateAndCleanForcedState();\n }\n\n /**\n * Get observable stream of app features (natural state, no forced state merged)\n */\n getAppFeatures(): Observable<DevToolbarAppFeature[]> {\n return this.appFeaturesSubject.asObservable();\n }\n\n /**\n * Get observable stream of features that have forced overrides\n */\n getForcedFeatures(): Observable<DevToolbarAppFeature[]> {\n return this.features$.pipe(\n map((features) => features.filter((feature) => feature.isForced))\n );\n }\n\n /**\n * Force a feature to enabled or disabled state.\n * Persists the forced state to localStorage.\n *\n * @param featureId - ID of the feature to force\n * @param isEnabled - Whether to force feature to enabled (true) or disabled (false)\n */\n setFeature(featureId: string, isEnabled: boolean): void {\n const { enabled, disabled } = this.forcedFeaturesSubject.value;\n\n // Remove feature from both arrays\n const newEnabled = enabled.filter((id) => id !== featureId);\n const newDisabled = disabled.filter((id) => id !== featureId);\n\n // Add to appropriate array\n if (isEnabled) {\n newEnabled.push(featureId);\n } else {\n newDisabled.push(featureId);\n }\n\n const newState = { enabled: newEnabled, disabled: newDisabled };\n this.forcedFeaturesSubject.next(newState);\n this.saveForcedFeatures(newState);\n }\n\n /**\n * Remove forced override for a feature, returning it to natural state.\n * Persists the change to localStorage.\n *\n * @param featureId - ID of the feature to unforce\n */\n removeFeatureOverride(featureId: string): void {\n const { enabled, disabled } = this.forcedFeaturesSubject.value;\n\n const newState = {\n enabled: enabled.filter((id) => id !== featureId),\n disabled: disabled.filter((id) => id !== featureId),\n };\n\n this.forcedFeaturesSubject.next(newState);\n this.saveForcedFeatures(newState);\n }\n\n /**\n * Apply a preset forced state (for preset integration).\n * Validates and cleans invalid feature IDs before applying.\n *\n * @param state - Forced features state from preset\n */\n applyForcedState(state: ForcedAppFeaturesState): void {\n const configuredFeatureIds = this.appFeaturesSubject.value.map((f) => f.id);\n\n // Validate and filter to only valid IDs\n const validEnabled = state.enabled.filter((id) => configuredFeatureIds.includes(id));\n const validDisabled = state.disabled.filter((id) => configuredFeatureIds.includes(id));\n\n const invalidIds = [\n ...state.enabled.filter((id) => !configuredFeatureIds.includes(id)),\n ...state.disabled.filter((id) => !configuredFeatureIds.includes(id)),\n ];\n\n if (invalidIds.length > 0) {\n console.warn(`Preset contains invalid feature IDs (ignored): ${invalidIds.join(', ')}`);\n }\n\n const cleanedState = { enabled: validEnabled, disabled: validDisabled };\n this.forcedFeaturesSubject.next(cleanedState);\n this.saveForcedFeatures(cleanedState);\n }\n\n /**\n * Get current forced state as a snapshot (defensive copy).\n * Useful for preset exports and debugging.\n *\n * @returns Current forced features state\n */\n getCurrentForcedState(): ForcedAppFeaturesState {\n const state = this.forcedFeaturesSubject.value;\n return {\n enabled: [...state.enabled],\n disabled: [...state.disabled],\n };\n }\n\n /**\n * Merge natural app features with forced state.\n *\n * @param appFeatures - Natural feature configuration\n * @param forcedState - Forced overrides from localStorage/toolbar\n * @returns Features with merged forced state\n */\n private mergeForcedState(\n appFeatures: DevToolbarAppFeature[],\n forcedState: ForcedAppFeaturesState\n ): DevToolbarAppFeature[] {\n return appFeatures.map((feature) => {\n const isInEnabled = forcedState.enabled.includes(feature.id);\n const isInDisabled = forcedState.disabled.includes(feature.id);\n const isForced = isInEnabled || isInDisabled;\n\n return {\n ...feature,\n isEnabled: isInEnabled ? true : isInDisabled ? false : feature.isEnabled,\n isForced,\n originalValue: isForced ? feature.isEnabled : undefined,\n };\n });\n }\n\n /**\n * Load forced features state from localStorage on initialization.\n * Handles missing or corrupted data gracefully.\n */\n private loadForcedFeatures(): void {\n try {\n const savedState = this.storageService.get<ForcedAppFeaturesState>(this.STORAGE_KEY);\n\n if (savedState) {\n this.forcedFeaturesSubject.next(savedState);\n }\n } catch (error) {\n console.error('Failed to load forced app features from localStorage:', error);\n // Use default empty state on error\n }\n }\n\n /**\n * Persist forced features state to localStorage.\n * Handles quota exceeded errors gracefully.\n *\n * @param state - Forced state to persist\n */\n private saveForcedFeatures(state: ForcedAppFeaturesState): void {\n try {\n this.storageService.set(this.STORAGE_KEY, state);\n } catch (error) {\n console.error('Failed to persist app features to localStorage:', error);\n // Continue execution - state is still valid in memory for current session\n }\n }\n\n /**\n * Validate forced feature IDs against configured features and clean up invalid ones.\n * Called after setAppFeatures() to ensure forced state references valid features.\n */\n private validateAndCleanForcedState(): void {\n const configuredFeatureIds = this.appFeaturesSubject.value.map((f) => f.id);\n const currentForcedState = this.forcedFeaturesSubject.value;\n\n const validEnabled = currentForcedState.enabled.filter((id) =>\n configuredFeatureIds.includes(id)\n );\n const validDisabled = currentForcedState.disabled.filter((id) =>\n configuredFeatureIds.includes(id)\n );\n\n const removedIds = [\n ...currentForcedState.enabled.filter((id) => !configuredFeatureIds.includes(id)),\n ...currentForcedState.disabled.filter((id) => !configuredFeatureIds.includes(id)),\n ];\n\n if (removedIds.length > 0) {\n console.warn(`Removed invalid feature IDs from forced state: ${removedIds.join(', ')}`);\n\n const cleanedState = { enabled: validEnabled, disabled: validDisabled };\n this.forcedFeaturesSubject.next(cleanedState);\n this.saveForcedFeatures(cleanedState);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarIconComponent } from '../../components/icons/icon.component';\nimport { DevToolbarInputComponent } from '../../components/input/input.component';\nimport { DevToolbarListComponent } from '../../components/list/list.component';\nimport { DevToolbarListItemComponent } from '../../components/list-item/list-item.component';\nimport { DevToolbarSelectComponent } from '../../components/select/select.component';\nimport { DevToolbarToolComponent } from '../../components/toolbar-tool/toolbar-tool.component';\nimport { DevToolbarWindowOptions } from '../../components/toolbar-tool/toolbar-tool.models';\nimport { DevToolbarInternalAppFeaturesService } from './app-features-internal.service';\nimport { AppFeatureFilter, DevToolbarAppFeature } from './app-features.models';\n\n/**\n * Component for managing app features in the dev toolbar.\n *\n * Provides UI for:\n * - Searching features by name and description\n * - Filtering features by state (all/forced/enabled/disabled)\n * - Forcing features to enabled/disabled state via 3-state dropdown\n * - Viewing feature descriptions and current state\n *\n * @example\n * ```html\n * <ndt-app-features-tool />\n * ```\n */\n@Component({\n selector: 'ndt-app-features-tool',\n standalone: true,\n imports: [\n FormsModule,\n DevToolbarToolComponent,\n DevToolbarInputComponent,\n DevToolbarSelectComponent,\n DevToolbarIconComponent,\n DevToolbarListComponent,\n DevToolbarListItemComponent,\n ],\n template: `\n <ndt-toolbar-tool\n [options]=\"options\"\n title=\"App Features\"\n icon=\"puzzle\"\n >\n <div class=\"container\">\n <div class=\"header\">\n <ndt-input\n [value]=\"searchQuery()\"\n (valueChange)=\"onSearchChange($event)\"\n placeholder=\"Search features...\"\n />\n <div class=\"filter-wrapper\">\n <ndt-icon name=\"filter\" class=\"filter-icon\" />\n <ndt-select\n [value]=\"activeFilter()\"\n [options]=\"filterOptions\"\n [size]=\"'medium'\"\n (valueChange)=\"onFilterChange($event)\"\n />\n </div>\n </div>\n\n <ndt-list\n [hasItems]=\"!hasNoFeatures()\"\n [hasResults]=\"!hasNoFilteredFeatures()\"\n emptyMessage=\"No app features found\"\n [emptyHint]=\"'Call setAvailableOptions() to configure features'\"\n noResultsMessage=\"No features match your filter\"\n >\n @for (feature of filteredFeatures(); track feature.id) {\n <ndt-list-item\n [title]=\"feature.name\"\n [description]=\"feature.description\"\n [isForced]=\"feature.isForced\"\n [currentValue]=\"feature.isEnabled\"\n [originalValue]=\"feature.originalValue\"\n >\n <ndt-select\n [value]=\"getFeatureValue(feature)\"\n [options]=\"featureValueOptions\"\n [ariaLabel]=\"'Set value for ' + feature.name\"\n (valueChange)=\"onFeatureChange(feature.id, $event ?? '')\"\n size=\"small\"\n />\n </ndt-list-item>\n }\n </ndt-list>\n </div>\n </ndt-toolbar-tool>\n `,\n styles: [\n `\n .container {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .header {\n flex-shrink: 0;\n display: flex;\n gap: var(--ndt-spacing-sm);\n margin-bottom: var(--ndt-spacing-md);\n\n ndt-input {\n flex: 1;\n }\n\n .filter-wrapper {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n gap: var(--ndt-spacing-md);\n\n .filter-icon {\n width: 18px;\n height: 18px;\n flex-shrink: 0;\n opacity: 0.6;\n }\n\n ndt-select {\n flex: 0 0 auto;\n min-width: 180px;\n }\n }\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarAppFeaturesToolComponent {\n // Injects\n private readonly appFeaturesService = inject(DevToolbarInternalAppFeaturesService);\n\n // Signals\n protected readonly activeFilter = signal<AppFeatureFilter>('all');\n protected readonly searchQuery = signal<string>('');\n\n protected readonly features = this.appFeaturesService.features;\n protected readonly hasNoFeatures = computed(() => this.features().length === 0);\n protected readonly filteredFeatures = computed(() => {\n const filtered = this.features().filter((feature) => {\n const searchTerm = this.searchQuery().toLowerCase();\n const featureName = feature.name.toLowerCase();\n const featureDescription = feature.description?.toLowerCase() ?? '';\n\n const matchesSearch =\n !this.searchQuery() ||\n featureName.includes(searchTerm) ||\n featureDescription.includes(searchTerm);\n\n const matchesFilter =\n this.activeFilter() === 'all' ||\n (this.activeFilter() === 'forced' && feature.isForced) ||\n (this.activeFilter() === 'enabled' && feature.isEnabled) ||\n (this.activeFilter() === 'disabled' && !feature.isEnabled);\n\n return matchesSearch && matchesFilter;\n });\n\n // Sort alphabetically by name\n return filtered.sort((a, b) => a.name.localeCompare(b.name));\n });\n protected readonly hasNoFilteredFeatures = computed(\n () => this.filteredFeatures().length === 0\n );\n\n // Other properties\n protected readonly options = {\n title: 'App Features',\n description: 'Override product features to test different tiers and configurations',\n isClosable: true,\n size: 'tall',\n id: 'ndt-app-features',\n } as DevToolbarWindowOptions;\n\n protected readonly filterOptions = [\n { value: 'all', label: 'All Features' },\n { value: 'forced', label: 'Forced' },\n { value: 'enabled', label: 'Enabled' },\n { value: 'disabled', label: 'Disabled' },\n ];\n\n protected readonly featureValueOptions = [\n { value: 'not-forced', label: 'Not Forced' },\n { value: 'off', label: 'Disabled' },\n { value: 'on', label: 'Enabled' },\n ];\n\n // Public methods\n /**\n * Handle filter dropdown change.\n * Updates the active filter to show all/forced/enabled/disabled features.\n */\n onFilterChange(value: string | undefined): void {\n const filter = this.filterOptions.find((f) => f.value === value);\n if (filter) {\n this.activeFilter.set(filter.value as AppFeatureFilter);\n }\n }\n\n /**\n * Handle feature value change from 3-state dropdown.\n * - 'not-forced': Remove forced override\n * - 'on': Force feature to enabled\n * - 'off': Force feature to disabled\n */\n onFeatureChange(featureId: string, value: string): void {\n switch (value) {\n case 'not-forced':\n this.appFeaturesService.removeFeatureOverride(featureId);\n break;\n case 'on':\n this.appFeaturesService.setFeature(featureId, true);\n break;\n case 'off':\n this.appFeaturesService.setFeature(featureId, false);\n break;\n }\n }\n\n /**\n * Handle search input change.\n * Updates the search query to filter features by name/description.\n */\n onSearchChange(query: string): void {\n this.searchQuery.set(query);\n }\n\n // Protected methods\n /**\n * Get the dropdown value for a feature's current state.\n * - Returns empty string if not forced (natural state)\n * - Returns 'on' if forced to enabled\n * - Returns 'off' if forced to disabled\n */\n protected getFeatureValue(feature: DevToolbarAppFeature): string {\n if (!feature.isForced) return '';\n return feature.isEnabled ? 'on' : 'off';\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, combineLatest, map } from 'rxjs';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport { DevToolbarFlag } from './feature-flags.models';\n\ninterface ForcedFlagsState {\n enabled: string[];\n disabled: string[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarInternalFeatureFlagService {\n private readonly STORAGE_KEY = 'feature-flags';\n private storageService = inject(DevToolsStorageService);\n\n private appFlags$ = new BehaviorSubject<DevToolbarFlag[]>([]);\n private forcedFlagsSubject = new BehaviorSubject<ForcedFlagsState>({\n enabled: [],\n disabled: [],\n });\n\n private readonly forcedFlags$ = this.forcedFlagsSubject.asObservable();\n\n public flags$: Observable<DevToolbarFlag[]> = combineLatest([\n this.appFlags$,\n this.forcedFlags$,\n ]).pipe(\n map(([appFlags, { enabled, disabled }]) => {\n return appFlags.map((flag) => {\n const isForced = enabled.includes(flag.id) || disabled.includes(flag.id);\n return {\n ...flag,\n isForced,\n isEnabled: enabled.includes(flag.id)\n ? true\n : disabled.includes(flag.id)\n ? false\n : flag.isEnabled,\n originalValue: isForced ? flag.isEnabled : undefined,\n };\n });\n })\n );\n\n public flags = toSignal(this.flags$, { initialValue: [] });\n\n constructor() {\n this.loadForcedFlags();\n }\n\n setAppFlags(flags: DevToolbarFlag[]): void {\n this.appFlags$.next(flags);\n }\n\n getAppFlags(): Observable<DevToolbarFlag[]> {\n return this.appFlags$.asObservable();\n }\n\n getForcedFlags(): Observable<DevToolbarFlag[]> {\n return this.flags$.pipe(\n map((flags) => flags.filter((flag) => flag.isForced))\n );\n }\n\n setFlag(flagId: string, isEnabled: boolean): void {\n const { enabled, disabled } = this.forcedFlagsSubject.value;\n\n const newEnabled = enabled.filter((id) => id !== flagId);\n const newDisabled = disabled.filter((id) => id !== flagId);\n\n if (isEnabled) {\n newEnabled.push(flagId);\n } else {\n newDisabled.push(flagId);\n }\n\n const newState = { enabled: newEnabled, disabled: newDisabled };\n this.forcedFlagsSubject.next(newState);\n this.storageService.set(this.STORAGE_KEY, newState);\n }\n\n removeFlagOverride(flagId: string): void {\n const { enabled, disabled } = this.forcedFlagsSubject.value;\n\n const newState = {\n enabled: enabled.filter((id) => id !== flagId),\n disabled: disabled.filter((id) => id !== flagId),\n };\n\n this.forcedFlagsSubject.next(newState);\n this.storageService.set(this.STORAGE_KEY, newState);\n }\n\n private loadForcedFlags(): void {\n const savedFlags = this.storageService.get<ForcedFlagsState>(\n this.STORAGE_KEY\n );\n\n if (savedFlags) {\n this.forcedFlagsSubject.next(savedFlags);\n }\n }\n\n /**\n * Apply feature flags from a preset (used by Presets Tool)\n * This method directly sets the forced flags state without user interaction\n */\n applyPresetFlags(presetState: ForcedFlagsState): void {\n this.forcedFlagsSubject.next(presetState);\n this.storageService.set(this.STORAGE_KEY, presetState);\n }\n\n /**\n * Get current forced state for saving to preset\n * Returns the raw state of enabled and disabled flag IDs\n */\n getCurrentForcedState(): ForcedFlagsState {\n return this.forcedFlagsSubject.value;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarIconComponent } from '../../components/icons/icon.component';\nimport { DevToolbarInputComponent } from '../../components/input/input.component';\nimport { DevToolbarListComponent } from '../../components/list/list.component';\nimport { DevToolbarListItemComponent } from '../../components/list-item/list-item.component';\nimport { DevToolbarSelectComponent } from '../../components/select/select.component';\nimport { DevToolbarToolComponent } from '../../components/toolbar-tool/toolbar-tool.component';\nimport { DevToolbarWindowOptions } from '../../components/toolbar-tool/toolbar-tool.models';\nimport { DevToolbarInternalFeatureFlagService } from './feature-flags-internal.service';\nimport { DevToolbarFlag, FeatureFlagFilter } from './feature-flags.models';\n@Component({\n selector: 'ndt-feature-flags-tool',\n standalone: true,\n imports: [\n FormsModule,\n DevToolbarToolComponent,\n DevToolbarInputComponent,\n DevToolbarSelectComponent,\n DevToolbarIconComponent,\n DevToolbarListComponent,\n DevToolbarListItemComponent,\n ],\n template: `\n <ndt-toolbar-tool\n [options]=\"options\"\n title=\"Feature Flags\"\n icon=\"toggle-left\"\n >\n <div class=\"container\">\n <div class=\"header\">\n <ndt-input\n [value]=\"searchQuery()\"\n (valueChange)=\"onSearchChange($event)\"\n placeholder=\"Search...\"\n />\n <div class=\"filter-wrapper\">\n <ndt-icon name=\"filter\" class=\"filter-icon\" />\n <ndt-select\n [value]=\"activeFilter()\"\n [options]=\"filterOptions\"\n [size]=\"'medium'\"\n (valueChange)=\"onFilterChange($event)\"\n />\n </div>\n </div>\n\n <ndt-list\n [hasItems]=\"!hasNoFlags()\"\n [hasResults]=\"!hasNoFilteredFlags()\"\n emptyMessage=\"No flags found\"\n noResultsMessage=\"No flags found matching your filter\"\n >\n @for (flag of filteredFlags(); track flag.id) {\n <ndt-list-item\n [title]=\"flag.name\"\n [description]=\"flag.description\"\n [isForced]=\"flag.isForced\"\n [currentValue]=\"flag.isEnabled\"\n [originalValue]=\"flag.originalValue\"\n >\n <ndt-select\n [value]=\"getFlagValue(flag)\"\n [options]=\"flagValueOptions\"\n [ariaLabel]=\"'Set value for ' + flag.name\"\n (valueChange)=\"onFlagChange(flag.id, $event ?? '')\"\n size=\"small\"\n />\n </ndt-list-item>\n }\n </ndt-list>\n </div>\n </ndt-toolbar-tool>\n `,\n styles: [\n `\n .container {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .header {\n flex-shrink: 0;\n display: flex;\n gap: var(--ndt-spacing-sm);\n margin-bottom: var(--ndt-spacing-md);\n\n ndt-input {\n flex: 1;\n }\n\n .filter-wrapper {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n gap: var(--ndt-spacing-md);\n\n .filter-icon {\n width: 18px;\n height: 18px;\n flex-shrink: 0;\n opacity: 0.6;\n }\n\n ndt-select {\n flex: 0 0 auto;\n min-width: 180px;\n }\n }\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarFeatureFlagsToolComponent {\n // Injects\n private readonly featureFlags = inject(DevToolbarInternalFeatureFlagService);\n\n // Signals\n protected readonly activeFilter = signal<FeatureFlagFilter>('all');\n protected readonly searchQuery = signal<string>('');\n\n protected readonly flags = this.featureFlags.flags;\n protected readonly hasNoFlags = computed(() => this.flags().length === 0);\n protected readonly filteredFlags = computed(() => {\n const filtered = this.flags().filter((flag) => {\n const searchTerm = this.searchQuery().toLowerCase();\n const flagName = flag.name.toLowerCase();\n const flagDescription = flag.description?.toLowerCase() ?? '';\n\n const matchesSearch =\n !this.searchQuery() ||\n flagName.toLowerCase().includes(searchTerm.toLowerCase()) ||\n flagDescription.toLowerCase().includes(searchTerm.toLowerCase());\n\n const matchesFilter =\n this.activeFilter() === 'all' ||\n (this.activeFilter() === 'forced' && flag.isForced) ||\n (this.activeFilter() === 'enabled' && flag.isEnabled) ||\n (this.activeFilter() === 'disabled' && !flag.isEnabled);\n\n return matchesSearch && matchesFilter;\n });\n\n // Sort alphabetically by name\n return filtered.sort((a, b) => a.name.localeCompare(b.name));\n });\n protected readonly hasNoFilteredFlags = computed(\n () => this.filteredFlags().length === 0\n );\n\n // Other properties\n protected readonly options = {\n title: 'Feature Flags',\n description: 'Manage the feature flags for your current session',\n isClosable: true,\n size: 'tall',\n id: 'ndt-feature-flags',\n isBeta: true,\n } as DevToolbarWindowOptions;\n\n protected readonly filterOptions = [\n { value: 'all', label: 'All Flags' },\n { value: 'forced', label: 'Forced' },\n { value: 'enabled', label: 'Enabled' },\n { value: 'disabled', label: 'Disabled' },\n ];\n\n protected readonly flagValueOptions = [\n { value: 'not-forced', label: 'Not Forced' },\n { value: 'off', label: 'Forced Off' },\n { value: 'on', label: 'Forced On' },\n ];\n\n // Public methods\n onFilterChange(value: string | undefined): void {\n const filter = this.filterOptions.find((f) => f.value === value);\n if (filter) {\n this.activeFilter.set(filter.value as FeatureFlagFilter);\n }\n }\n\n onFlagChange(flagId: string, value: string): void {\n switch (value) {\n case 'not-forced':\n this.featureFlags.removeFlagOverride(flagId);\n break;\n case 'on':\n this.featureFlags.setFlag(flagId, true);\n break;\n case 'off':\n this.featureFlags.setFlag(flagId, false);\n break;\n }\n }\n\n onSearchChange(query: string): void {\n this.searchQuery.set(query);\n }\n\n // Protected methods\n protected getFlagValue(flag: DevToolbarFlag): string {\n if (!flag.isForced) return '';\n return flag.isEnabled ? 'on' : 'off';\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { DevToolbarIconComponent } from '../icons/icon.component';\nimport { IconName } from '../icons/icon.models';\n\n@Component({\n selector: 'ndt-button',\n standalone: true,\n imports: [DevToolbarIconComponent],\n template: `\n <button\n class=\"button\"\n [attr.aria-label]=\"ariaLabel()\"\n [type]=\"type()\"\n [class.button--active]=\"isActive()\"\n [class.button--icon]=\"variant() === 'icon'\"\n >\n @if (icon()) {\n <ndt-icon [name]=\"icon() || 'star'\" />\n }\n @if (label()) {\n <span class=\"button__label\">{{ label() }}</span>\n }\n <ng-content />\n </button>\n `,\n styleUrls: ['./button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarButtonComponent {\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n readonly variant = input<'default' | 'icon'>('default');\n readonly icon = input<IconName>();\n readonly label = input<string>();\n readonly ariaLabel = input<string>();\n readonly isActive = input<boolean>(false);\n}\n","import { ChangeDetectionStrategy, Component, signal } from '@angular/core';\n\n@Component({\n selector: 'ndt-card',\n standalone: true,\n template: `\n <div\n class=\"card\"\n role=\"button\"\n tabindex=\"0\"\n (click)=\"onClick()\"\n (keydown.enter)=\"onClick()\"\n (keydown.space)=\"onClick()\"\n [class.card--hover]=\"isHovered()\"\n (mouseenter)=\"isHovered.set(true)\"\n (mouseleave)=\"isHovered.set(false)\"\n >\n <ng-content></ng-content>\n </div>\n `,\n styleUrls: ['./card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarCardComponent {\n readonly click = signal<void>(undefined);\n protected readonly isHovered = signal(false);\n\n onClick(): void {\n this.click.set();\n }\n}\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { DevToolbarCardComponent } from '../card/card.component';\nimport { DevToolbarIconComponent } from '../icons/icon.component';\nimport { IconName } from '../icons/icon.models';\n\n@Component({\n selector: 'ndt-clickable-card',\n standalone: true,\n imports: [DevToolbarCardComponent, DevToolbarIconComponent],\n template: `\n <ndt-card (clicked)=\"onClick()\">\n <div class=\"clickable-card\">\n <div class=\"clickable-card__icon\">\n <ndt-icon [name]=\"icon()\" />\n </div>\n <div class=\"clickable-card__content\">\n <div class=\"clickable-card__title\">{{ title() }}</div>\n <div class=\"clickable-card__subtitle\">{{ subtitle() }}</div>\n </div>\n </div>\n </ndt-card>\n `,\n styleUrls: ['./clickable-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarClickableCardComponent {\n readonly icon = input.required<IconName>();\n readonly title = input.required<string>();\n readonly subtitle = input.required<string>();\n readonly click = signal<void>(undefined);\n\n onClick(): void {\n this.click.set();\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { DevToolbarIconComponent } from '../icons/icon.component';\nimport { IconName } from '../icons/icon.models';\n\n@Component({\n selector: 'ndt-link-button',\n standalone: true,\n imports: [DevToolbarIconComponent],\n template: `\n <a\n [href]=\"url()\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"link-button\"\n >\n <div class=\"link-button__icon\">\n <ndt-icon [name]=\"icon()\" />\n </div>\n <span class=\"link-button__text\">\n <ng-content></ng-content>\n </span>\n </a>\n `,\n styleUrls: ['./link-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarLinkButtonComponent {\n readonly url = input.required<string>();\n readonly icon = input.required<IconName>();\n}\n","import { Injectable, inject } from '@angular/core';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport { Settings } from './settings.models';\n\n@Injectable({ providedIn: 'root' })\nexport class SettingsService {\n private readonly STORAGE_KEY = 'settings';\n private readonly storageService = inject(DevToolsStorageService);\n\n public getSettings(): Settings {\n return (\n this.storageService.get<Settings>(this.STORAGE_KEY) || {\n isDarkMode: false,\n }\n );\n }\n\n public setSettings(settings: Settings): void {\n this.storageService.set(this.STORAGE_KEY, settings);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarButtonComponent } from '../../components/button/button.component';\nimport { DevToolbarClickableCardComponent } from '../../components/clickable-card/clickable-card.component';\nimport { DevToolbarLinkButtonComponent } from '../../components/link-button/link-button.component';\nimport { DevToolbarToolComponent } from '../../components/toolbar-tool/toolbar-tool.component';\nimport { DevToolbarWindowOptions } from '../../components/toolbar-tool/toolbar-tool.models';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport { SettingsService } from './settings.service';\n\ntype ThemeType = 'light' | 'dark';\n\n@Component({\n selector: 'ndt-home-tool',\n standalone: true,\n imports: [\n DevToolbarToolComponent,\n FormsModule,\n DevToolbarButtonComponent,\n DevToolbarClickableCardComponent,\n DevToolbarLinkButtonComponent,\n ],\n template: `\n <ndt-toolbar-tool [options]=\"options\" title=\"Home\" icon=\"angular\">\n <section class=\"settings\">\n <div class=\"settings-container\">\n <div class=\"instruction\">\n <div class=\"instruction__label\">\n <span class=\"instruction__label-text\">Reset Settings</span>\n <span class=\"instruction__label-description\">\n Reset all settings to their default values\n </span>\n </div>\n <div class=\"instruction__control\">\n <div class=\"instruction__control-button\">\n <ndt-button\n variant=\"icon\"\n icon=\"trash\"\n ariaLabel=\"Reset all settings\"\n (click)=\"onResetSettings()\"\n />\n </div>\n </div>\n </div>\n <div class=\"settings-actions\">\n <ndt-clickable-card\n icon=\"export\"\n title=\"Export Settings\"\n subtitle=\"Export the current settings to share with other devs or use in your tests\"\n (click)=\"onExportSettings()\"\n />\n <ndt-clickable-card\n icon=\"import\"\n title=\"Import Settings\"\n subtitle=\"Import settings to reproduce a scenario\"\n (click)=\"onImportSettings()\"\n />\n </div>\n </div>\n\n <div class=\"footer-links\">\n @for (link of links; track link.url) {\n <ndt-link-button [icon]=\"link.icon\" [url]=\"link.url\">\n {{ link.label }}\n </ndt-link-button>\n }\n </div>\n </section>\n </ndt-toolbar-tool>\n `,\n styleUrls: ['./home-tool.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarHomeToolComponent {\n protected readonly state = inject(DevToolbarStateService);\n private readonly settingsService = inject(SettingsService);\n private readonly storageService = inject(DevToolsStorageService);\n\n readonly badge = input<string | number>();\n readonly title = `Angular Dev Toolbar`;\n readonly options: DevToolbarWindowOptions = {\n title: this.title,\n isClosable: true,\n id: 'ndt-home',\n size: 'medium',\n description: '',\n isBeta: true,\n };\n\n readonly links = [\n {\n icon: 'bug',\n url: 'https://github.com/alfredoperez/ngx-dev-toolbar/issues',\n label: 'Bug report',\n },\n {\n icon: 'lightbulb',\n url: 'https://github.com/alfredoperez/ngx-dev-toolbar/discussions',\n label: 'Suggestions',\n },\n {\n icon: 'docs',\n url: 'https://alfredoperez.github.io/ngx-dev-toolbar/',\n label: 'Docs',\n },\n {\n icon: 'star',\n url: 'https://github.com/alfredoperez/ngx-dev-toolbar',\n label: 'Star on GitHub',\n },\n {\n icon: 'discord',\n url: 'https://discord.com/invite/angular',\n label: 'Community',\n },\n ] as const;\n\n onExportSettings(): void {\n const settings = this.storageService.getAllSettings();\n const blob = new Blob([JSON.stringify(settings, null, 2)], {\n type: 'application/json',\n });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n const timestamp = new Date().toISOString().split('T')[0];\n link.href = url;\n link.download = `ngx-dev-toolbar-settings-${timestamp}.json`;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n }\n\n onImportSettings(): void {\n const input = document.createElement('input');\n input.type = 'file';\n input.accept = 'application/json';\n input.onchange = (event) => {\n const file = (event.target as HTMLInputElement).files?.[0];\n if (file) {\n const reader = new FileReader();\n reader.onload = (e) => {\n try {\n const settings = JSON.parse(e.target?.result as string);\n this.storageService.setAllSettings(settings);\n window.location.reload();\n } catch (error) {\n console.error('Error importing settings:', error);\n }\n };\n reader.readAsText(file);\n }\n };\n input.click();\n }\n\n onResetSettings(): void {\n this.storageService.clearAllSettings();\n window.location.reload();\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, firstValueFrom, map } from 'rxjs';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport { Language } from './language.models';\n\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarInternalLanguageService {\n private readonly STORAGE_KEY = 'language';\n private readonly storageService = inject(DevToolsStorageService);\n\n private languages$ = new BehaviorSubject<Language[]>([]);\n private forcedLanguage$ = new BehaviorSubject<Language | null>(null);\n\n public languages = toSignal(this.languages$, { initialValue: [] });\n\n constructor() {\n this.loadForcedLanguage();\n }\n\n setAppLanguages(languages: Language[]): void {\n this.languages$.next(languages);\n }\n\n getAppLanguages(): Observable<Language[]> {\n return this.languages$.asObservable();\n }\n\n setForcedLanguage(language: Language): void {\n this.forcedLanguage$.next(language);\n this.storageService.set(this.STORAGE_KEY, language);\n }\n\n getForcedLanguage(): Observable<Language[]> {\n return this.forcedLanguage$.pipe(\n map((language) => (language ? [language] : []))\n );\n }\n\n removeForcedLanguage(): void {\n this.forcedLanguage$.next(null);\n this.storageService.remove(this.STORAGE_KEY);\n }\n\n private loadForcedLanguage(): void {\n const savedLanguage = this.storageService.get<Language>(this.STORAGE_KEY);\n if (savedLanguage) {\n this.forcedLanguage$.next(savedLanguage);\n }\n }\n\n /**\n * Apply language from a preset (used by Presets Tool)\n * Accepts a language ID and finds the corresponding Language object from available languages\n */\n async applyPresetLanguage(languageId: string | null): Promise<void> {\n if (languageId === null) {\n this.removeForcedLanguage();\n return;\n }\n\n // Get available languages and find matching one\n const languages = await firstValueFrom(this.languages$);\n const language = languages.find((lang) => lang.id === languageId);\n\n if (language) {\n this.setForcedLanguage(language);\n } else {\n console.warn(\n `Language ${languageId} not found in available languages. Skipping.`\n );\n }\n }\n\n /**\n * Get current forced language ID for saving to preset\n * Returns the language ID or null if no language is forced\n */\n getCurrentForcedLanguage(): string | null {\n return this.forcedLanguage$.value?.id ?? null;\n }\n}\n","import { Component, inject, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { firstValueFrom, map } from 'rxjs';\nimport { DevToolbarSelectComponent } from '../../components/select/select.component';\nimport { DevToolbarToolComponent } from '../../components/toolbar-tool/toolbar-tool.component';\nimport { DevToolbarWindowOptions } from '../../components/toolbar-tool/toolbar-tool.models';\nimport { DevToolbarInternalLanguageService } from './language-internal.service';\nimport { Language } from './language.models';\n\n@Component({\n selector: 'ndt-language-tool',\n standalone: true,\n imports: [DevToolbarToolComponent, DevToolbarSelectComponent],\n styleUrls: ['./language-tool.component.scss'],\n template: `\n <ndt-toolbar-tool title=\"Languages\" icon=\"translate\" [options]=\"options\">\n <div class=\"language-select\">\n <label for=\"language-select\">Language</label>\n <ndt-select\n id=\"language-select\"\n [value]=\"activeLanguage()\"\n [options]=\"languageOptions()\"\n [size]=\"'medium'\"\n (valueChange)=\"onLanguageChange($event ?? '')\"\n />\n </div>\n </ndt-toolbar-tool>\n `,\n})\nexport class DevToolbarLanguageToolComponent {\n private readonly languageService = inject(DevToolbarInternalLanguageService);\n\n protected readonly options = {\n title: 'Languages',\n description: 'Set the language for your current session',\n size: 'small',\n id: 'ndt-language',\n isBeta: true,\n isClosable: true,\n } as DevToolbarWindowOptions;\n\n activeLanguage = signal<string>('not-forced');\n\n languageOptions = toSignal(\n this.languageService.getAppLanguages().pipe(\n map((languages) => [\n { value: 'not-forced', label: 'Not Forced' },\n ...languages.map(({ id: value, name: label }) => ({\n value,\n label,\n })),\n ])\n ),\n { initialValue: [] }\n );\n\n async onLanguageChange(language: string): Promise<void> {\n if (language === 'not-forced' || !language) {\n this.languageService.removeForcedLanguage();\n return;\n }\n\n const languages = await firstValueFrom(\n this.languageService.getAppLanguages()\n );\n const selectedLanguage = languages.find(({ id }) => id === language);\n if (selectedLanguage) {\n this.languageService.setForcedLanguage(selectedLanguage as Language);\n }\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, combineLatest, map } from 'rxjs';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport {\n DevToolbarPermission,\n ForcedPermissionsState,\n} from './permissions.models';\n\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarInternalPermissionsService {\n private readonly STORAGE_KEY = 'permissions';\n private storageService = inject(DevToolsStorageService);\n\n private appPermissions$ = new BehaviorSubject<DevToolbarPermission[]>([]);\n private forcedStateSubject = new BehaviorSubject<ForcedPermissionsState>({\n granted: [],\n denied: [],\n });\n\n private readonly forcedState$ = this.forcedStateSubject.asObservable();\n\n public permissions$: Observable<DevToolbarPermission[]> = combineLatest([\n this.appPermissions$,\n this.forcedState$,\n ]).pipe(\n map(([appPermissions, { granted, denied }]) => {\n return appPermissions.map((permission) => {\n const isForced = granted.includes(permission.id) || denied.includes(permission.id);\n return {\n ...permission,\n isForced,\n isGranted: granted.includes(permission.id)\n ? true\n : denied.includes(permission.id)\n ? false\n : permission.isGranted,\n originalValue: isForced ? permission.isGranted : undefined,\n };\n });\n })\n );\n\n public permissions = toSignal(this.permissions$, { initialValue: [] });\n\n constructor() {\n this.loadForcedState();\n }\n\n setAppPermissions(permissions: DevToolbarPermission[]): void {\n this.appPermissions$.next(permissions);\n this.validateAndCleanForcedState(permissions);\n }\n\n setPermission(id: string, granted: boolean): void {\n const { granted: grantedIds, denied: deniedIds } = this.forcedStateSubject.value;\n\n const newGranted = grantedIds.filter((permId) => permId !== id);\n const newDenied = deniedIds.filter((permId) => permId !== id);\n\n if (granted) {\n newGranted.push(id);\n } else {\n newDenied.push(id);\n }\n\n const newState = { granted: newGranted, denied: newDenied };\n this.forcedStateSubject.next(newState);\n this.storageService.set(this.STORAGE_KEY, newState);\n }\n\n removePermissionOverride(id: string): void {\n const { granted, denied } = this.forcedStateSubject.value;\n\n const newState = {\n granted: granted.filter((permId) => permId !== id),\n denied: denied.filter((permId) => permId !== id),\n };\n\n this.forcedStateSubject.next(newState);\n this.storageService.set(this.STORAGE_KEY, newState);\n }\n\n getForcedPermissions(): Observable<DevToolbarPermission[]> {\n return this.permissions$.pipe(\n map((permissions) => permissions.filter((permission) => permission.isForced))\n );\n }\n\n /**\n * Apply a preset permissions state, replacing the current forced state.\n * Useful for automated testing or restoring saved configurations.\n * @param state The preset forced permissions state to apply\n */\n applyPresetPermissions(state: ForcedPermissionsState): void {\n this.forcedStateSubject.next(state);\n this.storageService.set(this.STORAGE_KEY, state);\n }\n\n /**\n * Get the current forced permissions state.\n * Returns a deep copy to prevent external mutations.\n * @returns Current forced permissions state\n */\n getCurrentForcedState(): ForcedPermissionsState {\n const currentState = this.forcedStateSubject.value;\n return {\n granted: [...currentState.granted],\n denied: [...currentState.denied],\n };\n }\n\n private loadForcedState(): void {\n try {\n const savedState = this.storageService.get<ForcedPermissionsState>(\n this.STORAGE_KEY\n );\n\n if (savedState && this.isValidForcedState(savedState)) {\n this.forcedStateSubject.next(savedState);\n }\n } catch (error) {\n console.warn('Error loading forced permissions state from localStorage:', error);\n }\n }\n\n private isValidForcedState(state: unknown): state is ForcedPermissionsState {\n if (!state || typeof state !== 'object') {\n return false;\n }\n\n const candidate = state as Record<string, unknown>;\n return (\n Array.isArray(candidate['granted']) &&\n Array.isArray(candidate['denied'])\n );\n }\n\n private validateAndCleanForcedState(permissions: DevToolbarPermission[]): void {\n const currentState = this.forcedStateSubject.value;\n const validIds = new Set(permissions.map((p) => p.id));\n\n const cleanedGranted = currentState.granted.filter((id) => validIds.has(id));\n const cleanedDenied = currentState.denied.filter((id) => validIds.has(id));\n\n const hasInvalidIds =\n cleanedGranted.length !== currentState.granted.length ||\n cleanedDenied.length !== currentState.denied.length;\n\n if (hasInvalidIds) {\n const cleanedState = {\n granted: cleanedGranted,\n denied: cleanedDenied,\n };\n this.forcedStateSubject.next(cleanedState);\n this.storageService.set(this.STORAGE_KEY, cleanedState);\n\n const invalidIds = [\n ...currentState.granted.filter((id) => !validIds.has(id)),\n ...currentState.denied.filter((id) => !validIds.has(id)),\n ];\n if (invalidIds.length > 0) {\n console.warn(\n 'Removed invalid permission IDs from forced state:',\n invalidIds\n );\n }\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarIconComponent } from '../../components/icons/icon.component';\nimport { DevToolbarInputComponent } from '../../components/input/input.component';\nimport { DevToolbarListComponent } from '../../components/list/list.component';\nimport { DevToolbarListItemComponent } from '../../components/list-item/list-item.component';\nimport { DevToolbarSelectComponent } from '../../components/select/select.component';\nimport { DevToolbarToolComponent } from '../../components/toolbar-tool/toolbar-tool.component';\nimport { DevToolbarWindowOptions } from '../../components/toolbar-tool/toolbar-tool.models';\nimport { DevToolbarInternalPermissionsService } from './permissions-internal.service';\nimport {\n DevToolbarPermission,\n PermissionFilter,\n} from './permissions.models';\n\n@Component({\n selector: 'ndt-permissions-tool',\n standalone: true,\n imports: [\n FormsModule,\n DevToolbarToolComponent,\n DevToolbarInputComponent,\n DevToolbarSelectComponent,\n DevToolbarIconComponent,\n DevToolbarListComponent,\n DevToolbarListItemComponent,\n ],\n template: `\n <ndt-toolbar-tool\n [options]=\"options\"\n title=\"Permissions\"\n icon=\"lock\"\n >\n <div class=\"container\">\n <div class=\"header\">\n <ndt-input\n [value]=\"searchQuery()\"\n (valueChange)=\"onSearchChange($event)\"\n placeholder=\"Search permissions...\"\n [ariaLabel]=\"'Search permissions'\"\n />\n <div class=\"filter-wrapper\">\n <ndt-icon name=\"filter\" class=\"filter-icon\" />\n <ndt-select\n [value]=\"activeFilter()\"\n [options]=\"filterOptions\"\n [size]=\"'medium'\"\n (valueChange)=\"onFilterChange($event)\"\n [ariaLabel]=\"'Filter permissions by state'\"\n />\n </div>\n </div>\n\n <ndt-list\n [hasItems]=\"!hasNoPermissions()\"\n [hasResults]=\"!hasNoFilteredPermissions()\"\n emptyMessage=\"No permissions found\"\n [emptyHint]=\"'Call setAvailableOptions() to configure permissions'\"\n noResultsMessage=\"No permissions match your filter\"\n >\n @for (permission of filteredPermissions(); track permission.id) {\n <ndt-list-item\n [title]=\"permission.name\"\n [description]=\"permission.description\"\n [isForced]=\"permission.isForced\"\n [currentValue]=\"permission.isGranted\"\n [originalValue]=\"permission.originalValue\"\n >\n <ndt-select\n [value]=\"getPermissionValue(permission)\"\n [options]=\"permissionValueOptions\"\n [ariaLabel]=\"'Override state for ' + permission.name\"\n (valueChange)=\"onPermissionChange(permission.id, $event ?? '')\"\n size=\"small\"\n />\n </ndt-list-item>\n }\n </ndt-list>\n </div>\n </ndt-toolbar-tool>\n `,\n styles: [\n `\n .container {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .header {\n flex-shrink: 0;\n display: flex;\n gap: var(--ndt-spacing-sm);\n margin-bottom: var(--ndt-spacing-md);\n\n ndt-input {\n flex: 1;\n }\n\n .filter-wrapper {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n gap: var(--ndt-spacing-md);\n\n .filter-icon {\n width: 18px;\n height: 18px;\n flex-shrink: 0;\n opacity: 0.6;\n }\n\n ndt-select {\n flex: 0 0 auto;\n min-width: 180px;\n }\n }\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarPermissionsToolComponent {\n // Injects\n private readonly permissionsService = inject(\n DevToolbarInternalPermissionsService\n );\n\n // Signals\n protected readonly activeFilter = signal<PermissionFilter>('all');\n protected readonly searchQuery = signal<string>('');\n\n protected readonly permissions = this.permissionsService.permissions;\n protected readonly hasNoPermissions = computed(\n () => this.permissions().length === 0\n );\n protected readonly filteredPermissions = computed(() => {\n const filtered = this.permissions().filter((permission) => {\n const searchTerm = this.searchQuery().toLowerCase();\n const permissionName = permission.name.toLowerCase();\n const permissionDescription = permission.description?.toLowerCase() ?? '';\n\n const matchesSearch =\n !this.searchQuery() ||\n permissionName.includes(searchTerm) ||\n permissionDescription.includes(searchTerm);\n\n const matchesFilter =\n this.activeFilter() === 'all' ||\n (this.activeFilter() === 'forced' && permission.isForced) ||\n (this.activeFilter() === 'granted' && permission.isGranted) ||\n (this.activeFilter() === 'denied' && !permission.isGranted);\n\n return matchesSearch && matchesFilter;\n });\n\n // Sort alphabetically by name\n return filtered.sort((a, b) => a.name.localeCompare(b.name));\n });\n protected readonly hasNoFilteredPermissions = computed(\n () => this.filteredPermissions().length === 0\n );\n\n // Other properties\n protected readonly options = {\n title: 'Permissions',\n description: 'Manage permission overrides for your current session',\n isClosable: true,\n size: 'tall',\n id: 'ndt-permissions',\n isBeta: true,\n } as DevToolbarWindowOptions;\n\n protected readonly filterOptions = [\n { value: 'all', label: 'All Permissions' },\n { value: 'forced', label: 'Forced' },\n { value: 'granted', label: 'Granted' },\n { value: 'denied', label: 'Denied' },\n ];\n\n protected readonly permissionValueOptions = [\n { value: 'not-forced', label: 'Not Forced' },\n { value: 'denied', label: 'Forced Denied' },\n { value: 'granted', label: 'Forced Granted' },\n ];\n\n // Public methods\n onFilterChange(value: string | undefined): void {\n const filter = this.filterOptions.find((f) => f.value === value);\n if (filter) {\n this.activeFilter.set(filter.value as PermissionFilter);\n }\n }\n\n onPermissionChange(id: string, value: string): void {\n switch (value) {\n case 'not-forced':\n this.permissionsService.removePermissionOverride(id);\n break;\n case 'granted':\n this.permissionsService.setPermission(id, true);\n break;\n case 'denied':\n this.permissionsService.setPermission(id, false);\n break;\n }\n }\n\n onSearchChange(query: string): void {\n this.searchQuery.set(query);\n }\n\n // Protected methods\n protected getPermissionValue(permission: DevToolbarPermission): string {\n if (!permission.isForced) return '';\n return permission.isGranted ? 'granted' : 'denied';\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport { DevToolbarInternalFeatureFlagService } from '../feature-flags-tool/feature-flags-internal.service';\nimport { DevToolbarInternalLanguageService } from '../language-tool/language-internal.service';\nimport { DevToolbarInternalPermissionsService } from '../permissions-tool/permissions-internal.service';\nimport { DevToolbarInternalAppFeaturesService } from '../app-features-tool/app-features-internal.service';\nimport {\n DevToolbarPreset,\n DevToolbarPresetConfig,\n PresetCategoryOptions,\n} from './presets.models';\n\n/**\n * Internal service for managing presets state.\n * Handles CRUD operations, captures current toolbar config, and applies presets.\n */\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarInternalPresetsService {\n private readonly STORAGE_KEY = 'presets';\n private storageService = inject(DevToolsStorageService);\n\n // Inject all other tool internal services (for reading/writing state)\n private featureFlagsService = inject(DevToolbarInternalFeatureFlagService);\n private languageService = inject(DevToolbarInternalLanguageService);\n private permissionsService = inject(DevToolbarInternalPermissionsService);\n private appFeaturesService = inject(DevToolbarInternalAppFeaturesService);\n\n private presetsSubject = new BehaviorSubject<DevToolbarPreset[]>([]);\n public presets$: Observable<DevToolbarPreset[]> =\n this.presetsSubject.asObservable();\n public presets = toSignal(this.presets$, { initialValue: [] });\n\n constructor() {\n this.loadPresets();\n }\n\n /**\n * Capture current toolbar state as a new preset\n */\n saveCurrentAsPreset(\n name: string,\n description?: string,\n categoryOptions?: PresetCategoryOptions\n ): DevToolbarPreset {\n const preset: DevToolbarPreset = {\n id: this.generateId(),\n name,\n description,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n config: this.captureCurrentConfig(categoryOptions),\n };\n\n const presets = [...this.presetsSubject.value, preset];\n this.presetsSubject.next(presets);\n this.storageService.set(this.STORAGE_KEY, presets);\n\n return preset;\n }\n\n /**\n * Apply a preset to all tools (THIS IS THE KEY METHOD)\n */\n async applyPreset(presetId: string): Promise<void> {\n const preset = this.presetsSubject.value.find((p) => p.id === presetId);\n if (!preset) return;\n\n // Apply to each tool's internal service\n this.featureFlagsService.applyPresetFlags(preset.config.featureFlags);\n await this.languageService.applyPresetLanguage(preset.config.language);\n this.permissionsService.applyPresetPermissions(preset.config.permissions);\n this.appFeaturesService.applyForcedState(preset.config.appFeatures);\n }\n\n /**\n * Update an existing preset with current toolbar state\n */\n updatePreset(presetId: string): void {\n const presets = this.presetsSubject.value.map((preset) => {\n if (preset.id === presetId) {\n return {\n ...preset,\n updatedAt: new Date().toISOString(),\n config: this.captureCurrentConfig(),\n };\n }\n return preset;\n });\n\n this.presetsSubject.next(presets);\n this.storageService.set(this.STORAGE_KEY, presets);\n }\n\n /**\n * Delete a preset\n */\n deletePreset(presetId: string): void {\n const presets = this.presetsSubject.value.filter(\n (p) => p.id !== presetId\n );\n this.presetsSubject.next(presets);\n this.storageService.set(this.STORAGE_KEY, presets);\n }\n\n /**\n * Add a preset (used for import)\n */\n addPreset(preset: DevToolbarPreset): DevToolbarPreset {\n // Generate new ID to avoid conflicts\n const newPreset: DevToolbarPreset = {\n ...preset,\n id: this.generateId(),\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n\n const presets = [...this.presetsSubject.value, newPreset];\n this.presetsSubject.next(presets);\n this.storageService.set(this.STORAGE_KEY, presets);\n\n return newPreset;\n }\n\n /**\n * Get a preset by ID\n */\n getPresetById(presetId: string): DevToolbarPreset | undefined {\n return this.presetsSubject.value.find((p) => p.id === presetId);\n }\n\n /**\n * Capture current configuration from all tools\n */\n private captureCurrentConfig(\n categoryOptions?: PresetCategoryOptions\n ): DevToolbarPresetConfig {\n // Default to including all categories if not specified\n const options = {\n includeFeatureFlags: categoryOptions?.includeFeatureFlags ?? true,\n includePermissions: categoryOptions?.includePermissions ?? true,\n includeAppFeatures: categoryOptions?.includeAppFeatures ?? true,\n includeLanguage: categoryOptions?.includeLanguage ?? true,\n };\n\n // Get current forced states\n const currentFlags = this.featureFlagsService.getCurrentForcedState();\n const currentPerms = this.permissionsService.getCurrentForcedState();\n const currentFeatures = this.appFeaturesService.getCurrentForcedState();\n\n // Filter by selected IDs if provided\n const filterById = (ids: string[], selected?: string[]) =>\n selected && selected.length > 0 ? ids.filter((id) => selected.includes(id)) : ids;\n\n return {\n featureFlags: options.includeFeatureFlags\n ? {\n enabled: filterById(\n currentFlags.enabled,\n categoryOptions?.selectedFlagIds\n ),\n disabled: filterById(\n currentFlags.disabled,\n categoryOptions?.selectedFlagIds\n ),\n }\n : { enabled: [], disabled: [] },\n language: options.includeLanguage\n ? this.languageService.getCurrentForcedLanguage()\n : null,\n permissions: options.includePermissions\n ? {\n granted: filterById(\n currentPerms.granted,\n categoryOptions?.selectedPermissionIds\n ),\n denied: filterById(\n currentPerms.denied,\n categoryOptions?.selectedPermissionIds\n ),\n }\n : { granted: [], denied: [] },\n appFeatures: options.includeAppFeatures\n ? {\n enabled: filterById(\n currentFeatures.enabled,\n categoryOptions?.selectedFeatureIds\n ),\n disabled: filterById(\n currentFeatures.disabled,\n categoryOptions?.selectedFeatureIds\n ),\n }\n : { enabled: [], disabled: [] },\n };\n }\n\n /**\n * Load presets from localStorage\n */\n private loadPresets(): void {\n try {\n const saved =\n this.storageService.get<DevToolbarPreset[]>(this.STORAGE_KEY);\n if (saved && Array.isArray(saved)) {\n this.presetsSubject.next(saved);\n }\n } catch (error) {\n console.error('Failed to load presets from localStorage:', error);\n }\n }\n\n /**\n * Generate unique preset ID\n */\n private generateId(): string {\n return `preset-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarButtonComponent } from '../../components/button/button.component';\nimport { DevToolbarIconComponent } from '../../components/icons/icon.component';\nimport { DevToolbarInputComponent } from '../../components/input/input.component';\nimport { DevToolbarToolComponent } from '../../components/toolbar-tool/toolbar-tool.component';\nimport { DevToolbarWindowOptions } from '../../components/toolbar-tool/toolbar-tool.models';\nimport { DevToolbarInternalPresetsService } from './presets-internal.service';\nimport { DevToolbarInternalFeatureFlagService } from '../feature-flags-tool/feature-flags-internal.service';\nimport { DevToolbarInternalPermissionsService } from '../permissions-tool/permissions-internal.service';\nimport { DevToolbarInternalAppFeaturesService } from '../app-features-tool/app-features-internal.service';\nimport { DevToolbarInternalLanguageService } from '../language-tool/language-internal.service';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\n\n@Component({\n selector: 'ndt-presets-tool',\n standalone: true,\n imports: [\n FormsModule,\n DevToolbarToolComponent,\n DevToolbarInputComponent,\n DevToolbarButtonComponent,\n DevToolbarIconComponent,\n ],\n template: `\n <ndt-toolbar-tool [options]=\"options\" title=\"Presets\" icon=\"layout\">\n <div class=\"container\">\n <!-- Mode Toggle -->\n @if (!hasNoPresets() || viewMode() === 'create') {\n <div class=\"header\">\n @if (viewMode() === 'list') {\n <ndt-input\n [value]=\"searchQuery()\"\n (valueChange)=\"onSearchChange($event)\"\n placeholder=\"Search presets...\"\n [ariaLabel]=\"'Search presets'\"\n />\n <ndt-button\n (click)=\"onSwitchToCreateMode()\"\n [ariaLabel]=\"'Create new preset'\"\n >\n New Preset\n </ndt-button>\n } @else {\n <ndt-button\n (click)=\"onSwitchToListMode()\"\n [ariaLabel]=\"'Back to list'\"\n >\n ← Back to List\n </ndt-button>\n }\n </div>\n }\n\n <!-- Create Form -->\n @if (viewMode() === 'create') {\n <form (submit)=\"onSavePreset($event)\" class=\"preset-form\">\n <ndt-input\n label=\"Preset Name\"\n [value]=\"presetName()\"\n (valueChange)=\"presetName.set($event)\"\n placeholder=\"e.g., Admin User - Full Access\"\n [ariaLabel]=\"'Preset name'\"\n />\n <ndt-input\n label=\"Description (optional)\"\n [value]=\"presetDescription()\"\n (valueChange)=\"presetDescription.set($event)\"\n placeholder=\"Brief description of this preset\"\n [ariaLabel]=\"'Preset description'\"\n />\n\n <!-- Category selection checkboxes -->\n <div class=\"preset-summary\">\n <h4>Select what to include:</h4>\n\n @if (isFeatureFlagsEnabled()) {\n <div class=\"category-section\">\n <label class=\"checkbox-option\">\n <input\n type=\"checkbox\"\n [checked]=\"includeFeatureFlags()\"\n (change)=\"includeFeatureFlags.set(!includeFeatureFlags())\"\n [disabled]=\"getCurrentFlagsCount() === 0\"\n />\n <span>Feature Flags ({{ getCurrentFlagsCount() }} forced)</span>\n </label>\n @if (forcedFlags().length > 0) {\n <ul class=\"forced-items-list\">\n @for (flag of forcedFlags(); track flag.id) {\n <li>\n <label class=\"item-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"isItemSelected(selectedFlagIds(), flag.id)\"\n (change)=\"toggleItemSelection(selectedFlagIds, flag.id)\"\n />\n <span class=\"item-name\">{{ flag.name }}</span>\n <span class=\"item-status\" [class.enabled]=\"flag.isEnabled\" [class.disabled]=\"!flag.isEnabled\">\n {{ flag.isEnabled ? 'ON' : 'OFF' }}\n </span>\n </label>\n </li>\n }\n </ul>\n }\n </div>\n }\n\n @if (isPermissionsEnabled()) {\n <div class=\"category-section\">\n <label class=\"checkbox-option\">\n <input\n type=\"checkbox\"\n [checked]=\"includePermissions()\"\n (change)=\"includePermissions.set(!includePermissions())\"\n [disabled]=\"getCurrentPermissionsCount() === 0\"\n />\n <span>Permissions ({{ getCurrentPermissionsCount() }} forced)</span>\n </label>\n @if (forcedPermissions().length > 0) {\n <ul class=\"forced-items-list\">\n @for (perm of forcedPermissions(); track perm.id) {\n <li>\n <label class=\"item-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"isItemSelected(selectedPermissionIds(), perm.id)\"\n (change)=\"toggleItemSelection(selectedPermissionIds, perm.id)\"\n />\n <span class=\"item-name\">{{ perm.name }}</span>\n <span class=\"item-status\" [class.enabled]=\"perm.isGranted\" [class.disabled]=\"!perm.isGranted\">\n {{ perm.isGranted ? 'GRANTED' : 'DENIED' }}\n </span>\n </label>\n </li>\n }\n </ul>\n }\n </div>\n }\n\n @if (isAppFeaturesEnabled()) {\n <div class=\"category-section\">\n <label class=\"checkbox-option\">\n <input\n type=\"checkbox\"\n [checked]=\"includeAppFeatures()\"\n (change)=\"includeAppFeatures.set(!includeAppFeatures())\"\n [disabled]=\"getCurrentAppFeaturesCount() === 0\"\n />\n <span>App Features ({{ getCurrentAppFeaturesCount() }} forced)</span>\n </label>\n @if (forcedAppFeatures().length > 0) {\n <ul class=\"forced-items-list\">\n @for (feat of forcedAppFeatures(); track feat.id) {\n <li>\n <label class=\"item-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"isItemSelected(selectedFeatureIds(), feat.id)\"\n (change)=\"toggleItemSelection(selectedFeatureIds, feat.id)\"\n />\n <span class=\"item-name\">{{ feat.name }}</span>\n <span class=\"item-status\" [class.enabled]=\"feat.isEnabled\" [class.disabled]=\"!feat.isEnabled\">\n {{ feat.isEnabled ? 'ON' : 'OFF' }}\n </span>\n </label>\n </li>\n }\n </ul>\n }\n </div>\n }\n\n @if (isLanguageEnabled()) {\n <div class=\"category-section\">\n <label class=\"checkbox-option\">\n <input\n type=\"checkbox\"\n [checked]=\"includeLanguage()\"\n (change)=\"includeLanguage.set(!includeLanguage())\"\n [disabled]=\"!getCurrentLanguage() || getCurrentLanguage() === 'Not Forced'\"\n />\n <span>Language ({{ getCurrentLanguage() }})</span>\n </label>\n </div>\n }\n </div>\n\n <div class=\"form-actions\">\n <ndt-button type=\"submit\">Save Preset</ndt-button>\n </div>\n </form>\n }\n\n <!-- Empty State -->\n @if (viewMode() === 'list' && hasNoPresets()) {\n <div class=\"empty\">\n <p>No presets saved yet</p>\n <p class=\"hint\">\n Save the current toolbar configuration as a preset for quick access\n </p>\n <ndt-button (click)=\"onSwitchToCreateMode()\">\n Create Your First Preset\n </ndt-button>\n </div>\n } @else if (viewMode() === 'list' && hasNoFilteredPresets()) {\n <div class=\"empty\">\n <p>No presets match your search</p>\n </div>\n } @else if (viewMode() === 'list') {\n <!-- Preset List -->\n <div class=\"preset-list\">\n @for (preset of filteredPresets(); track preset.id) {\n <div class=\"preset-card\">\n <div class=\"preset-card__header\">\n <h3>{{ preset.name }}</h3>\n <div class=\"preset-card__actions\">\n <button\n class=\"icon-button\"\n (click)=\"onApplyPreset(preset.id)\"\n [attr.aria-label]=\"'Apply preset ' + preset.name\"\n title=\"Apply preset\"\n >\n <ndt-icon name=\"refresh\" />\n </button>\n <button\n class=\"icon-button\"\n (click)=\"onUpdatePreset(preset.id)\"\n [attr.aria-label]=\"'Update preset ' + preset.name\"\n title=\"Update with current state\"\n >\n <ndt-icon name=\"gear\" />\n </button>\n <button\n class=\"icon-button\"\n (click)=\"onExportPreset(preset.id)\"\n [attr.aria-label]=\"'Export preset ' + preset.name\"\n title=\"Export as JSON\"\n >\n <ndt-icon name=\"export\" />\n </button>\n <button\n class=\"icon-button\"\n (click)=\"onDeletePreset(preset.id)\"\n [attr.aria-label]=\"'Delete preset ' + preset.name\"\n title=\"Delete preset\"\n >\n <ndt-icon name=\"trash\" />\n </button>\n </div>\n </div>\n @if (preset.description) {\n <p class=\"preset-card__description\">{{ preset.description }}</p>\n }\n <div class=\"preset-card__meta\">\n <span>Updated: {{ formatDate(preset.updatedAt) }}</span>\n </div>\n <!-- Preview of preset config -->\n <div class=\"preset-card__preview\">\n @if (preset.config.featureFlags.enabled.length > 0 ||\n preset.config.featureFlags.disabled.length > 0) {\n <span class=\"badge\">\n {{\n preset.config.featureFlags.enabled.length +\n preset.config.featureFlags.disabled.length\n }}\n flags\n </span>\n } @if (preset.config.permissions.granted.length > 0 ||\n preset.config.permissions.denied.length > 0) {\n <span class=\"badge\">\n {{\n preset.config.permissions.granted.length +\n preset.config.permissions.denied.length\n }}\n perms\n </span>\n } @if (preset.config.appFeatures.enabled.length > 0 ||\n preset.config.appFeatures.disabled.length > 0) {\n <span class=\"badge\">\n {{\n preset.config.appFeatures.enabled.length +\n preset.config.appFeatures.disabled.length\n }}\n features\n </span>\n } @if (preset.config.language) {\n <span class=\"badge\">{{ preset.config.language }}</span>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n </ndt-toolbar-tool>\n `,\n styles: [\n `\n .container {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .header {\n flex-shrink: 0;\n display: flex;\n gap: var(--ndt-spacing-sm);\n margin-bottom: var(--ndt-spacing-md);\n\n ndt-input {\n flex: 1;\n }\n\n ndt-button {\n flex-shrink: 0;\n }\n }\n\n .empty {\n display: flex;\n flex-direction: column;\n gap: var(--ndt-spacing-md);\n flex: 1;\n min-height: 0;\n justify-content: center;\n align-items: center;\n border: 1px solid var(--ndt-border-subtle);\n border-radius: var(--ndt-border-radius-medium);\n padding: var(--ndt-spacing-md);\n background: transparent;\n color: var(--ndt-text-muted);\n text-align: center;\n\n p {\n margin: 0;\n }\n\n .hint {\n font-size: var(--ndt-font-size-xs);\n }\n }\n\n .preset-list {\n display: flex;\n flex-direction: column;\n gap: var(--ndt-spacing-md);\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding-right: var(--ndt-spacing-sm);\n\n &::-webkit-scrollbar {\n width: 8px;\n }\n\n &::-webkit-scrollbar-track {\n background: var(--ndt-background-secondary);\n border-radius: 4px;\n }\n\n &::-webkit-scrollbar-thumb {\n background: var(--ndt-border-primary);\n border-radius: 4px;\n\n &:hover {\n background: var(--ndt-hover-bg);\n }\n }\n\n scrollbar-width: thin;\n scrollbar-color: var(--ndt-border-primary)\n var(--ndt-background-secondary);\n }\n\n .preset-card {\n background: var(--ndt-background-secondary);\n padding: var(--ndt-spacing-md);\n border-radius: var(--ndt-border-radius-medium);\n display: flex;\n flex-direction: column;\n gap: var(--ndt-spacing-sm);\n }\n\n .preset-card__header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--ndt-spacing-sm);\n\n h3 {\n margin: 0;\n font-size: var(--ndt-font-size-md);\n color: var(--ndt-text-primary);\n flex: 1;\n }\n }\n\n .preset-card__actions {\n display: flex;\n gap: var(--ndt-spacing-xs);\n }\n\n .icon-button {\n background: transparent;\n border: none;\n cursor: pointer;\n padding: var(--ndt-spacing-xs);\n border-radius: var(--ndt-border-radius-small);\n color: var(--ndt-text-secondary);\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:hover {\n background: var(--ndt-hover-bg);\n color: var(--ndt-text-primary);\n }\n\n ndt-icon {\n width: 16px;\n height: 16px;\n }\n }\n\n .preset-card__description {\n margin: 0;\n font-size: var(--ndt-font-size-sm);\n color: var(--ndt-text-secondary);\n }\n\n .preset-card__meta {\n font-size: var(--ndt-font-size-xs);\n color: var(--ndt-text-muted);\n\n span {\n margin-right: var(--ndt-spacing-sm);\n }\n }\n\n .preset-card__preview {\n display: flex;\n gap: var(--ndt-spacing-xs);\n flex-wrap: wrap;\n }\n\n .badge {\n background: var(--ndt-primary-color);\n color: white;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: var(--ndt-font-size-xs);\n font-weight: 500;\n }\n\n .preset-form {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: var(--ndt-spacing-md);\n padding: var(--ndt-spacing-md);\n\n ndt-input {\n width: 100%;\n }\n }\n\n .preset-summary {\n background: var(--ndt-background-secondary);\n padding: var(--ndt-spacing-md);\n border-radius: var(--ndt-border-radius-medium);\n display: flex;\n flex-direction: column;\n gap: var(--ndt-spacing-sm);\n\n h4 {\n margin: 0;\n font-size: var(--ndt-font-size-sm);\n color: var(--ndt-text-primary);\n }\n }\n\n .category-section {\n display: flex;\n flex-direction: column;\n gap: var(--ndt-spacing-xs);\n }\n\n .checkbox-option {\n display: flex;\n align-items: center;\n gap: var(--ndt-spacing-sm);\n cursor: pointer;\n color: var(--ndt-text-secondary);\n font-size: var(--ndt-font-size-sm);\n\n input[type='checkbox'] {\n cursor: pointer;\n width: 16px;\n height: 16px;\n accent-color: var(--ndt-primary);\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n\n &:has(input:disabled) {\n opacity: 0.6;\n cursor: not-allowed;\n }\n }\n\n .forced-items-list {\n list-style: none;\n padding: 0;\n margin: 0 0 0 var(--ndt-spacing-lg);\n display: flex;\n flex-direction: column;\n gap: var(--ndt-spacing-xs);\n font-size: var(--ndt-font-size-xs);\n\n li {\n background: rgba(var(--ndt-primary-rgb), 0.05);\n border-radius: var(--ndt-border-radius-small);\n border-left: 2px solid rgba(var(--ndt-primary-rgb), 0.3);\n }\n\n .item-checkbox {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--ndt-spacing-xs) var(--ndt-spacing-sm);\n cursor: pointer;\n gap: var(--ndt-spacing-sm);\n\n input[type='checkbox'] {\n cursor: pointer;\n width: 14px;\n height: 14px;\n accent-color: var(--ndt-primary);\n flex-shrink: 0;\n }\n\n &:hover {\n background: rgba(var(--ndt-primary-rgb), 0.08);\n }\n }\n\n .item-name {\n color: var(--ndt-text-primary);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .item-status {\n font-weight: 600;\n padding: 2px 6px;\n border-radius: var(--ndt-border-radius-small);\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n flex-shrink: 0;\n\n &.enabled {\n background: rgba(34, 197, 94, 0.15);\n color: rgb(34, 197, 94);\n }\n\n &.disabled {\n background: rgba(239, 68, 68, 0.15);\n color: rgb(239, 68, 68);\n }\n }\n }\n\n .form-actions {\n display: flex;\n justify-content: flex-end;\n gap: var(--ndt-spacing-sm);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarPresetsToolComponent {\n // Injects\n private readonly presetsService = inject(DevToolbarInternalPresetsService);\n private readonly featureFlagsService = inject(\n DevToolbarInternalFeatureFlagService\n );\n private readonly permissionsService = inject(\n DevToolbarInternalPermissionsService\n );\n private readonly appFeaturesService = inject(\n DevToolbarInternalAppFeaturesService\n );\n private readonly languageService = inject(DevToolbarInternalLanguageService);\n protected readonly state = inject(DevToolbarStateService);\n\n // Signals\n protected readonly viewMode = signal<'list' | 'create'>('list');\n protected readonly searchQuery = signal<string>('');\n protected readonly presetName = signal<string>('');\n protected readonly presetDescription = signal<string>('');\n protected readonly includeFeatureFlags = signal<boolean>(true);\n protected readonly includePermissions = signal<boolean>(true);\n protected readonly includeAppFeatures = signal<boolean>(true);\n protected readonly includeLanguage = signal<boolean>(true);\n\n // Track selected individual items\n protected readonly selectedFlagIds = signal<Set<string>>(new Set());\n protected readonly selectedPermissionIds = signal<Set<string>>(new Set());\n protected readonly selectedFeatureIds = signal<Set<string>>(new Set());\n\n protected readonly presets = this.presetsService.presets;\n protected readonly filteredPresets = computed(() => {\n const query = this.searchQuery().toLowerCase();\n return this.presets().filter(\n (preset) =>\n preset.name.toLowerCase().includes(query) ||\n preset.description?.toLowerCase().includes(query)\n );\n });\n\n protected readonly hasNoPresets = computed(\n () => this.presets().length === 0\n );\n protected readonly hasNoFilteredPresets = computed(\n () => this.filteredPresets().length === 0\n );\n\n // Tool availability (based on config)\n protected readonly isFeatureFlagsEnabled = computed(\n () => this.state.config().showFeatureFlagsTool ?? true\n );\n protected readonly isPermissionsEnabled = computed(\n () => this.state.config().showPermissionsTool ?? true\n );\n protected readonly isAppFeaturesEnabled = computed(\n () => this.state.config().showAppFeaturesTool ?? true\n );\n protected readonly isLanguageEnabled = computed(\n () => this.state.config().showLanguageTool ?? true\n );\n\n // Forced items details\n protected readonly forcedFlags = computed(() => {\n return this.featureFlagsService.flags().filter((flag) => flag.isForced);\n });\n protected readonly forcedPermissions = computed(() => {\n return this.permissionsService.permissions().filter((perm) => perm.isForced);\n });\n protected readonly forcedAppFeatures = computed(() => {\n return this.appFeaturesService.features().filter((feat) => feat.isForced);\n });\n\n // Other properties\n protected readonly options: DevToolbarWindowOptions = {\n title: 'Presets',\n description: 'Save and load toolbar configurations',\n isClosable: true,\n size: 'tall',\n id: 'ndt-presets',\n isBeta: true,\n };\n\n // Public methods\n onSearchChange(query: string): void {\n this.searchQuery.set(query);\n }\n\n onSwitchToCreateMode(): void {\n this.viewMode.set('create');\n this.presetName.set('');\n this.presetDescription.set('');\n // Reset checkboxes - only enable categories that have forced items\n this.includeFeatureFlags.set(this.getCurrentFlagsCount() > 0);\n this.includePermissions.set(this.getCurrentPermissionsCount() > 0);\n this.includeAppFeatures.set(this.getCurrentAppFeaturesCount() > 0);\n const currentLang = this.getCurrentLanguage();\n this.includeLanguage.set(!!currentLang && currentLang !== 'Not Forced');\n\n // Initialize selected items - select all by default\n this.selectedFlagIds.set(new Set(this.forcedFlags().map((f) => f.id)));\n this.selectedPermissionIds.set(\n new Set(this.forcedPermissions().map((p) => p.id))\n );\n this.selectedFeatureIds.set(\n new Set(this.forcedAppFeatures().map((f) => f.id))\n );\n }\n\n onSwitchToListMode(): void {\n this.viewMode.set('list');\n }\n\n onSavePreset(event: Event): void {\n event.preventDefault();\n if (!this.presetName()) return;\n this.presetsService.saveCurrentAsPreset(\n this.presetName(),\n this.presetDescription(),\n {\n includeFeatureFlags: this.includeFeatureFlags(),\n includePermissions: this.includePermissions(),\n includeAppFeatures: this.includeAppFeatures(),\n includeLanguage: this.includeLanguage(),\n selectedFlagIds: Array.from(this.selectedFlagIds()),\n selectedPermissionIds: Array.from(this.selectedPermissionIds()),\n selectedFeatureIds: Array.from(this.selectedFeatureIds()),\n }\n );\n this.onSwitchToListMode();\n }\n\n onApplyPreset(presetId: string): void {\n this.presetsService.applyPreset(presetId);\n }\n\n onUpdatePreset(presetId: string): void {\n this.presetsService.updatePreset(presetId);\n }\n\n onExportPreset(presetId: string): void {\n const preset = this.presets().find((p) => p.id === presetId);\n if (!preset) return;\n\n const json = JSON.stringify(preset, null, 2);\n const blob = new Blob([json], { type: 'application/json' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = `preset-${preset.name.toLowerCase().replace(/\\s+/g, '-')}.json`;\n link.click();\n URL.revokeObjectURL(url);\n }\n\n onDeletePreset(presetId: string): void {\n if (confirm('Are you sure you want to delete this preset?')) {\n this.presetsService.deletePreset(presetId);\n }\n }\n\n // Protected methods\n protected getCurrentFlagsCount(): number {\n const state = this.featureFlagsService.getCurrentForcedState();\n return state.enabled.length + state.disabled.length;\n }\n\n protected getCurrentPermissionsCount(): number {\n const state = this.permissionsService.getCurrentForcedState();\n return state.granted.length + state.denied.length;\n }\n\n protected getCurrentAppFeaturesCount(): number {\n const state = this.appFeaturesService.getCurrentForcedState();\n return state.enabled.length + state.disabled.length;\n }\n\n protected getCurrentLanguage(): string {\n return this.languageService.getCurrentForcedLanguage() || 'Not Forced';\n }\n\n protected formatDate(isoString: string): string {\n return new Date(isoString).toLocaleDateString();\n }\n\n /**\n * Toggle selection of an individual item\n */\n protected toggleItemSelection(\n signal: typeof this.selectedFlagIds,\n itemId: string\n ): void {\n const current = new Set(signal());\n if (current.has(itemId)) {\n current.delete(itemId);\n } else {\n current.add(itemId);\n }\n signal.set(current);\n }\n\n /**\n * Check if an item is selected\n */\n protected isItemSelected(selectedSet: Set<string>, itemId: string): boolean {\n return selectedSet.has(itemId);\n }\n}\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport { DOCUMENT } from '@angular/common';\nimport {\n Component,\n DestroyRef,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n effect,\n inject,\n input,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\nimport { filter, throttleTime } from 'rxjs/operators';\nimport { DevToolbarStateService } from './dev-toolbar-state.service';\nimport { DevToolbarConfig } from './models/dev-toolbar-config.interface';\nimport { DevToolbarAppFeaturesToolComponent } from './tools/app-features-tool/app-features-tool.component';\nimport { DevToolbarFeatureFlagsToolComponent } from './tools/feature-flags-tool/feature-flags-tool.component';\nimport { DevToolbarHomeToolComponent } from './tools/home-tool/home-tool.component';\nimport { SettingsService } from './tools/home-tool/settings.service';\nimport { DevToolbarLanguageToolComponent } from './tools/language-tool/language-tool.component';\nimport { DevToolbarPermissionsToolComponent } from './tools/permissions-tool/permissions-tool.component';\nimport { DevToolbarPresetsToolComponent } from './tools/presets-tool/presets-tool.component';\n\n@Component({\n standalone: true,\n selector: 'ndt-toolbar',\n styleUrls: ['./dev-toolbar.component.scss'],\n encapsulation: ViewEncapsulation.ShadowDom,\n imports: [\n DevToolbarHomeToolComponent,\n DevToolbarLanguageToolComponent,\n DevToolbarFeatureFlagsToolComponent,\n DevToolbarAppFeaturesToolComponent,\n DevToolbarPermissionsToolComponent,\n DevToolbarPresetsToolComponent,\n ],\n template: `\n <div\n aria-label=\"Developer tools\"\n role=\"toolbar\"\n class=\"ndt-toolbar\"\n [@toolbarState]=\"state.isVisible() ? 'visible' : 'hidden'\"\n [attr.data-theme]=\"state.theme()\"\n [class.ndt-toolbar--active]=\"state.isVisible()\"\n (mouseenter)=\"onMouseEnter()\"\n >\n <ndt-home-tool />\n <ng-content />\n @if (config().showLanguageTool ?? false) {\n <ndt-language-tool />\n }\n @if (config().showPresetsTool ?? false) {\n <ndt-presets-tool />\n }\n @if (config().showAppFeaturesTool ?? false) {\n <ndt-app-features-tool />\n }\n @if (config().showPermissionsTool ?? false) {\n <ndt-permissions-tool />\n }\n @if (config().showFeatureFlagsTool ?? false) {\n <ndt-feature-flags-tool />\n }\n </div>\n `,\n animations: [\n trigger('toolbarState', [\n state(\n 'hidden',\n style({\n transform: 'translate(-50%, calc(100% + -1.2rem))',\n })\n ),\n state(\n 'visible',\n style({\n transform: 'translate(-50%, -1rem)',\n })\n ),\n transition('hidden <=> visible', [\n animate('300ms cubic-bezier(0.4, 0, 0.2, 1)'),\n ]),\n ]),\n ],\n})\nexport class DevToolbarComponent implements OnInit, OnDestroy {\n private document = inject(DOCUMENT);\n state = inject(DevToolbarStateService);\n destroyRef = inject(DestroyRef);\n settingsService = inject(SettingsService);\n\n config = input<DevToolbarConfig>({});\n private globalStyleElement?: HTMLStyleElement;\n\n private keyboardShortcut = fromEvent<KeyboardEvent>(window, 'keydown')\n .pipe(\n filter((event) => event.ctrlKey && event.shiftKey && event.key === 'D'),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => this.toggleDevTools());\n\n private mouseLeave = fromEvent<MouseEvent>(document, 'mouseleave')\n .pipe(throttleTime(3000), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onMouseLeave());\n\n constructor() {\n // Update state service when config changes\n effect(() => {\n this.state.setConfig(this.config());\n });\n }\n\n ngOnInit(): void {\n this.injectGlobalStyles();\n // Always use light theme\n this.state.setTheme('light');\n }\n\n ngOnDestroy(): void {\n this.globalStyleElement?.remove();\n }\n\n onMouseEnter(): void {\n this.state.setVisibility(true);\n }\n\n onMouseLeave(): void {\n setTimeout(() => this.state.setVisibility(false), this.state.delay());\n }\n\n private toggleDevTools(): void {\n this.state.setVisibility(!this.state.isVisible());\n }\n\n /**\n * Injects global theme styles into the document head to make CSS variables\n * available to CDK overlays and other elements rendered outside Shadow DOM.\n * Uses light theme only.\n */\n private injectGlobalStyles(): void {\n // Check if styles are already injected (e.g., by another toolbar instance)\n if (this.document.getElementById('ndt-global-theme')) {\n return;\n }\n\n this.globalStyleElement = this.document.createElement('style');\n this.globalStyleElement.id = 'ndt-global-theme';\n this.globalStyleElement.textContent = `\n /* Global Light Theme for ngx-dev-toolbar overlays */\n :where(ndt-toolbar),\n .ndt-overlay-panel,\n .cdk-overlay-container {\n --ndt-border-radius-small: 4px;\n --ndt-border-radius-medium: 8px;\n --ndt-border-radius-large: 12px;\n --ndt-transition-default: all 0.2s ease-out;\n --ndt-transition-smooth: all 0.2s ease-in-out;\n --ndt-spacing-xs: 4px;\n --ndt-spacing-sm: 6px;\n --ndt-spacing-md: 12px;\n --ndt-spacing-lg: 16px;\n --ndt-window-padding: 16px;\n --ndt-font-size-xxs: 0.65rem;\n --ndt-font-size-xs: 0.75rem;\n --ndt-font-size-sm: 0.875rem;\n --ndt-font-size-md: 1rem;\n --ndt-font-size-lg: 1.25rem;\n --ndt-font-size-xl: 2rem;\n --ndt-primary: #df30d4;\n --ndt-primary-rgb: 223, 48, 212;\n --ndt-text-on-primary: rgb(255, 255, 255);\n --ndt-bg-primary: rgb(255, 255, 255);\n --ndt-bg-gradient: linear-gradient(180deg, rgb(243, 244, 246) 0%, rgba(243, 244, 246, 0.88) 100%);\n --ndt-text-primary: rgb(17, 24, 39);\n --ndt-text-secondary: rgb(55, 65, 81);\n --ndt-text-muted: rgb(107, 114, 128);\n --ndt-border-primary: #e5e7eb;\n --ndt-border-subtle: rgba(17, 24, 39, 0.1);\n --ndt-hover-bg: rgba(17, 24, 39, 0.05);\n --ndt-hover-danger: rgb(239, 68, 68);\n --ndt-shadow-toolbar: 0 2px 8px rgba(156, 163, 175, 0.2);\n --ndt-shadow-tooltip: 0 0 0 1px rgba(17, 24, 39, 0.05), 0 4px 8px rgba(107, 114, 128, 0.15), 0 2px 4px rgba(107, 114, 128, 0.1);\n --ndt-shadow-window: 0px 0px 0px 0px rgba(156, 163, 175, 0.1), 0px 1px 2px 0px rgba(156, 163, 175, 0.12), 0px 4px 4px 0px rgba(156, 163, 175, 0.1), 0px 10px 6px 0px rgba(156, 163, 175, 0.08), 0px 17px 7px 0px rgba(156, 163, 175, 0.05), 0px 26px 7px 0px rgba(156, 163, 175, 0.02);\n --ndt-background-secondary: var(--ndt-bg-primary);\n --ndt-background-hover: var(--ndt-hover-bg);\n --ndt-border-color: var(--ndt-border-primary);\n --ndt-note-background: rgb(219, 234, 254);\n --ndt-note-border: rgba(37, 99, 235, 0.2);\n --ndt-warning-background: rgb(254, 249, 195);\n --ndt-warning-border: rgba(202, 138, 4, 0.2);\n --ndt-error-background: rgb(254, 226, 226);\n --ndt-error-border: rgba(220, 38, 38, 0.2);\n }\n .ndt-overlay-panel {\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif;\n box-sizing: border-box;\n isolation: isolate;\n z-index: 999999999;\n }\n .ndt-overlay-panel *, .ndt-overlay-panel *::before, .ndt-overlay-panel *::after {\n box-sizing: border-box;\n }\n .cdk-overlay-backdrop.ndt-overlay-backdrop {\n background: transparent;\n }\n `;\n\n this.document.head.appendChild(this.globalStyleElement);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DevToolsService } from '../../models/dev-tools.interface';\nimport { DevToolbarInternalFeatureFlagService } from './feature-flags-internal.service';\nimport { DevToolbarFlag } from './feature-flags.models';\n\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarFeatureFlagService\n implements DevToolsService<DevToolbarFlag>\n{\n private internalService = inject(DevToolbarInternalFeatureFlagService);\n\n /**\n * Sets the available flags that will be displayed in the tool on the dev toolbar\n * @param flags The flags to be displayed\n */\n setAvailableOptions(flags: DevToolbarFlag[]): void {\n this.internalService.setAppFlags(flags);\n }\n\n /**\n * Gets the flags that were forced/modified through the tool on the dev toolbar\n * @returns Observable of forced flags array\n */\n getForcedValues(): Observable<DevToolbarFlag[]> {\n return this.internalService.getForcedFlags();\n }\n\n /**\n * Gets ALL flag values with overrides already applied.\n * Returns the complete set of flags where overridden values replace base values.\n * Each flag includes an `isForced` property indicating if it was overridden.\n *\n * This method simplifies integration by eliminating the need to manually merge\n * base flags with overrides using combineLatest.\n *\n * @returns Observable of all flags with overrides applied\n *\n * @example\n * ```typescript\n * // Get a specific flag value with overrides applied\n * this.featureFlagsService.getValues().pipe(\n * map(flags => flags.find(f => f.id === 'newFeature')),\n * map(flag => flag?.isEnabled ?? false)\n * ).subscribe(isEnabled => {\n * if (isEnabled) {\n * // Enable feature\n * }\n * });\n * ```\n */\n getValues(): Observable<DevToolbarFlag[]> {\n return this.internalService.flags$;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DevToolsService } from '../../models/dev-tools.interface';\nimport { DevToolbarInternalLanguageService } from './language-internal.service';\nimport { Language } from './language.models';\n\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarLanguageService implements DevToolsService<Language> {\n private internalService = inject(DevToolbarInternalLanguageService);\n\n /**\n * Sets the available languages that will be displayed in the tool on the dev toolbar\n * @param languages The languages to be displayed\n */\n setAvailableOptions(languages: Language[]): void {\n this.internalService.setAppLanguages(languages);\n }\n\n /**\n * Gets the languages that were forced/modified through the tool on the dev toolbar\n * @returns Observable of forced languages array\n */\n getForcedValues(): Observable<Language[]> {\n return this.internalService.getForcedLanguage();\n }\n\n /**\n * Gets the forced language value.\n * For the language tool, this returns the same as getForcedValues() since\n * only one language can be selected at a time.\n * @returns Observable of forced language array (single item or empty)\n */\n getValues(): Observable<Language[]> {\n return this.internalService.getForcedLanguage();\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DevToolsService } from '../../models/dev-tools.interface';\nimport { DevToolbarInternalAppFeaturesService } from './app-features-internal.service';\nimport { DevToolbarAppFeature, ForcedAppFeaturesState } from './app-features.models';\n\n/**\n * Public service for managing app features in the dev toolbar.\n *\n * This service implements the DevToolsService interface and provides methods for:\n * - Configuring available product features\n * - Retrieving forced feature overrides\n * - Applying preset feature configurations\n * - Exporting current forced state for presets\n *\n * @example\n * ```typescript\n * import { DevToolbarAppFeaturesService } from 'ngx-dev-toolbar';\n *\n * @Component({...})\n * export class AppComponent implements OnInit {\n * private appFeaturesService = inject(DevToolbarAppFeaturesService);\n *\n * ngOnInit() {\n * // Configure available features based on current tier\n * const features: DevToolbarAppFeature[] = [\n * { id: 'analytics', name: 'Analytics Dashboard', isEnabled: true, isForced: false },\n * { id: 'multi-user', name: 'Multi-User Support', isEnabled: false, isForced: false }\n * ];\n * this.appFeaturesService.setAvailableOptions(features);\n *\n * // Subscribe to forced overrides\n * this.appFeaturesService.getForcedValues().subscribe(forcedFeatures => {\n * forcedFeatures.forEach(feature => {\n * // Apply forced feature state to application logic\n * this.applyFeatureState(feature.id, feature.isEnabled);\n * });\n * });\n * }\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarAppFeaturesService implements DevToolsService<DevToolbarAppFeature> {\n private internalService = inject(DevToolbarInternalAppFeaturesService);\n\n /**\n * Set available app features for the application.\n *\n * Configures the list of product features that can be toggled in the dev toolbar.\n * Features should represent product-level capabilities like license tiers,\n * deployment configurations, or environment flags.\n *\n * @param features - Array of app features to display in the toolbar\n * @throws Error if duplicate feature IDs or empty IDs are detected\n *\n * @example\n * ```typescript\n * const features: DevToolbarAppFeature[] = [\n * {\n * id: 'advanced-analytics',\n * name: 'Advanced Analytics Dashboard',\n * description: 'Access premium reporting and data visualization',\n * isEnabled: false, // Not available in current tier\n * isForced: false\n * },\n * {\n * id: 'multi-user-support',\n * name: 'Multi-User Collaboration',\n * description: 'Enable team features and user management',\n * isEnabled: true, // Available in current tier\n * isForced: false\n * }\n * ];\n * this.appFeaturesService.setAvailableOptions(features);\n * ```\n */\n setAvailableOptions(features: DevToolbarAppFeature[]): void {\n this.internalService.setAppFeatures(features);\n }\n\n /**\n * Get observable stream of features that have forced overrides.\n *\n * Emits an array of features that have been forced via the dev toolbar.\n * Only features with `isForced = true` are included in the emissions.\n * Use this to react to feature override changes and update application behavior.\n *\n * @returns Observable that emits array of forced features whenever state changes\n *\n * @example\n * ```typescript\n * this.appFeaturesService.getForcedValues()\n * .pipe(takeUntilDestroyed())\n * .subscribe(forcedFeatures => {\n * forcedFeatures.forEach(feature => {\n * if (feature.isEnabled) {\n * this.enableFeature(feature.id);\n * } else {\n * this.disableFeature(feature.id);\n * }\n * });\n * });\n * ```\n */\n getForcedValues(): Observable<DevToolbarAppFeature[]> {\n return this.internalService.getForcedFeatures();\n }\n\n /**\n * Gets ALL app feature values with overrides already applied.\n * Returns the complete set of features where overridden values replace base values.\n * Each feature includes an `isForced` property indicating if it was overridden.\n *\n * This method simplifies integration by eliminating the need to manually merge\n * base features with overrides using combineLatest.\n *\n * @returns Observable of all features with overrides applied\n *\n * @example\n * ```typescript\n * // Check if a feature is enabled with overrides applied\n * this.appFeaturesService.getValues().pipe(\n * map(features => features.find(f => f.id === 'premium-analytics')),\n * map(feature => feature?.isEnabled ?? false)\n * ).subscribe(isEnabled => {\n * if (isEnabled) {\n * // Enable premium analytics\n * }\n * });\n * ```\n */\n getValues(): Observable<DevToolbarAppFeature[]> {\n return this.internalService.features$;\n }\n\n /**\n * Apply a preset feature configuration (for preset tool integration).\n *\n * Accepts a forced features state object and applies it to the current configuration.\n * Invalid feature IDs (not in configured features) are filtered out with a warning.\n *\n * @param state - Forced features state containing enabled/disabled arrays\n *\n * @example\n * ```typescript\n * // Apply \"Enterprise Tier\" preset\n * const enterprisePreset: ForcedAppFeaturesState = {\n * enabled: ['analytics', 'multi-user', 'white-label', 'sso'],\n * disabled: []\n * };\n * this.appFeaturesService.applyPresetFeatures(enterprisePreset);\n *\n * // Apply \"Basic Tier\" preset\n * const basicPreset: ForcedAppFeaturesState = {\n * enabled: [],\n * disabled: ['analytics', 'multi-user', 'white-label', 'sso']\n * };\n * this.appFeaturesService.applyPresetFeatures(basicPreset);\n * ```\n */\n applyPresetFeatures(state: ForcedAppFeaturesState): void {\n this.internalService.applyForcedState(state);\n }\n\n /**\n * Get current forced feature state as a snapshot (for preset export).\n *\n * Returns the current forced features state with enabled/disabled arrays.\n * Useful for exporting toolbar state to save as a preset or for debugging.\n * Returns a defensive copy - mutations will not affect internal state.\n *\n * @returns Current forced features state\n *\n * @example\n * ```typescript\n * // Export current toolbar state to save as preset\n * const currentState = this.appFeaturesService.getCurrentForcedState();\n * this.presetsService.savePreset('my-config', {\n * appFeatures: currentState,\n * // ... other tool states\n * });\n *\n * console.log(currentState);\n * // { enabled: ['analytics'], disabled: ['white-label'] }\n * ```\n */\n getCurrentForcedState(): ForcedAppFeaturesState {\n return this.internalService.getCurrentForcedState();\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DevToolsService } from '../../models/dev-tools.interface';\nimport { DevToolbarInternalPermissionsService } from './permissions-internal.service';\nimport { DevToolbarPermission, ForcedPermissionsState } from './permissions.models';\n\n/**\n * Public service for integrating the Permissions Tool with your application.\n * Use this service to:\n * 1. Register your application's permissions with setAvailableOptions()\n * 2. Listen for toolbar permission overrides with getForcedValues()\n * 3. Apply preset permission states for testing with applyPreset()\n *\n * @example\n * ```typescript\n * constructor(private permissionsService: DevToolbarPermissionsService) {\n * // Register permissions\n * this.permissionsService.setAvailableOptions([\n * { id: 'can-edit', name: 'Can Edit', isGranted: false, isForced: false }\n * ]);\n *\n * // Listen for overrides\n * this.permissionsService.getForcedValues().subscribe(forcedPermissions => {\n * // Update your app's permission state\n * });\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarPermissionsService\n implements DevToolsService<DevToolbarPermission>\n{\n private internalService = inject(DevToolbarInternalPermissionsService);\n\n /**\n * Sets the available permissions that will be displayed in the toolbar tool.\n * Call this in your app initialization to register permissions.\n *\n * @param permissions Array of permissions to display in the toolbar\n *\n * @example\n * ```typescript\n * this.permissionsService.setAvailableOptions([\n * {\n * id: 'can-edit-posts',\n * name: 'Edit Posts',\n * description: 'Can edit blog posts',\n * isGranted: false,\n * isForced: false\n * }\n * ]);\n * ```\n */\n setAvailableOptions(permissions: DevToolbarPermission[]): void {\n this.internalService.setAppPermissions(permissions);\n }\n\n /**\n * Gets an observable of permissions that were forced/overridden through the toolbar.\n * Subscribe to this to update your application's permission state.\n *\n * @returns Observable emitting array of forced permissions whenever changes occur\n *\n * @example\n * ```typescript\n * this.permissionsService.getForcedValues().subscribe(forcedPermissions => {\n * forcedPermissions.forEach(permission => {\n * this.updatePermission(permission.id, permission.isGranted);\n * });\n * });\n * ```\n */\n getForcedValues(): Observable<DevToolbarPermission[]> {\n return this.internalService.getForcedPermissions();\n }\n\n /**\n * Gets ALL permission values with overrides already applied.\n * Returns the complete set of permissions where overridden values replace base values.\n * Each permission includes an `isForced` property indicating if it was overridden.\n *\n * This method simplifies integration by eliminating the need to manually merge\n * base permissions with overrides using combineLatest.\n *\n * @returns Observable of all permissions with overrides applied\n *\n * @example\n * ```typescript\n * // Simple permission check with overrides applied\n * this.permissionsService.getValues().pipe(\n * map(permissions => permissions.find(p => p.id === 'can-edit')),\n * map(permission => permission?.isGranted ?? false)\n * ).subscribe(canEdit => {\n * if (canEdit) {\n * // Enable edit functionality\n * }\n * });\n * ```\n */\n getValues(): Observable<DevToolbarPermission[]> {\n return this.internalService.permissions$;\n }\n\n /**\n * Apply a preset permission state. Useful for automated testing scenarios.\n *\n * @param state The forced permissions state to apply\n *\n * @example\n * ```typescript\n * this.permissionsService.applyPreset({\n * granted: ['can-edit-posts'],\n * denied: ['can-delete-posts']\n * });\n * ```\n */\n applyPreset(state: ForcedPermissionsState): void {\n this.internalService.applyPresetPermissions(state);\n }\n\n /**\n * Get the current forced permission state.\n *\n * @returns Current forced permissions state\n */\n getCurrentState(): ForcedPermissionsState {\n return this.internalService.getCurrentForcedState();\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DevToolbarInternalPresetsService } from './presets-internal.service';\nimport {\n DevToolbarPreset,\n DevToolbarPresetConfig,\n} from './presets.models';\n\n/**\n * Partial preset for initialization (without generated fields)\n */\nexport interface InitialPreset {\n name: string;\n description?: string;\n config: DevToolbarPresetConfig;\n}\n\n/**\n * Public service for managing dev toolbar presets.\n * Allows developers to programmatically save, load, and manage presets.\n */\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarPresetsService {\n private internalService = inject(DevToolbarInternalPresetsService);\n\n /**\n * Get all saved presets as an Observable\n */\n getPresets(): Observable<DevToolbarPreset[]> {\n return this.internalService.presets$;\n }\n\n /**\n * Save current toolbar state as a preset\n * @param name - Name for the preset\n * @param description - Optional description\n * @returns The created preset\n */\n savePreset(name: string, description?: string): DevToolbarPreset {\n return this.internalService.saveCurrentAsPreset(name, description);\n }\n\n /**\n * Apply a preset (load its configuration into all tools)\n * @param presetId - ID of the preset to apply\n */\n async applyPreset(presetId: string): Promise<void> {\n return this.internalService.applyPreset(presetId);\n }\n\n /**\n * Update a preset with current toolbar state\n * @param presetId - ID of the preset to update\n */\n updatePreset(presetId: string): void {\n this.internalService.updatePreset(presetId);\n }\n\n /**\n * Delete a preset\n * @param presetId - ID of the preset to delete\n */\n deletePreset(presetId: string): void {\n this.internalService.deletePreset(presetId);\n }\n\n /**\n * Export a preset as JSON string\n * @param presetId - ID of the preset to export\n * @returns JSON string representation of the preset\n */\n exportPreset(presetId: string): string | null {\n const preset = this.internalService.getPresetById(presetId);\n if (!preset) return null;\n return JSON.stringify(preset, null, 2);\n }\n\n /**\n * Import a preset from JSON string\n * @param json - JSON string representation of a preset\n * @returns The imported preset\n * @throws Error if JSON is invalid\n */\n importPreset(json: string): DevToolbarPreset {\n const preset = JSON.parse(json) as DevToolbarPreset;\n return this.internalService.addPreset(preset);\n }\n\n /**\n * Initialize presets with predefined configurations.\n * Useful for setting up default presets that all developers can use.\n *\n * @param presets - Array of preset configurations to initialize\n * @returns Array of created presets\n *\n * @example\n * ```typescript\n * const presetsService = inject(DevToolbarPresetsService);\n *\n * presetsService.initializePresets([\n * {\n * name: 'Admin User',\n * description: 'Full access admin configuration',\n * config: {\n * featureFlags: {\n * enabled: ['admin-panel', 'advanced-features'],\n * disabled: []\n * },\n * permissions: {\n * granted: ['admin', 'write', 'delete'],\n * denied: []\n * },\n * appFeatures: {\n * enabled: ['analytics', 'reporting'],\n * disabled: []\n * },\n * language: 'en'\n * }\n * },\n * {\n * name: 'Read-Only User',\n * description: 'Limited access for viewing only',\n * config: {\n * featureFlags: {\n * enabled: [],\n * disabled: ['admin-panel', 'advanced-features']\n * },\n * permissions: {\n * granted: ['read'],\n * denied: ['write', 'delete']\n * },\n * appFeatures: {\n * enabled: [],\n * disabled: ['analytics', 'reporting']\n * },\n * language: null\n * }\n * }\n * ]);\n * ```\n */\n initializePresets(presets: InitialPreset[]): DevToolbarPreset[] {\n return presets.map((preset) =>\n this.internalService.addPreset({\n id: '', // Will be generated\n createdAt: '', // Will be generated\n updatedAt: '', // Will be generated\n ...preset,\n })\n );\n }\n\n /**\n * Clear all existing presets and set new initial presets.\n * Use this to replace all presets with a fresh set of configurations.\n *\n * @param presets - Array of preset configurations to set as initial\n * @returns Array of created presets\n */\n setInitialPresets(presets: InitialPreset[]): DevToolbarPreset[] {\n // Clear existing presets\n const currentPresets = this.internalService.presets();\n currentPresets.forEach((preset) => {\n this.internalService.deletePreset(preset.id);\n });\n\n // Add new presets\n return this.initializePresets(presets);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-dev-toolbar.mjs","sources":["../../../../libs/ngx-dev-toolbar/src/dev-toolbar-state.service.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/angular-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/bolt-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/bug-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/code-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/database-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/discord-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/docs-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/export-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/filter-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/gauge-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/gear-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/git-branch-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/import-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/layout-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/lightbulb-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/lighting-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/lock-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/moon-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/network-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/puzzle-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/refresh-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/star-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/sun-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/terminal-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/toggle-left-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/translate-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/trash-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/users-icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/icons/icon.component.ts","../../../../libs/ngx-dev-toolbar/src/components/list/list.component.ts","../../../../libs/ngx-dev-toolbar/src/components/list-item/list-item.component.ts","../../../../libs/ngx-dev-toolbar/src/components/tool-button/tool-button.component.ts","../../../../libs/ngx-dev-toolbar/src/components/window/window.component.ts","../../../../libs/ngx-dev-toolbar/src/components/toolbar-tool/toolbar-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/components/input/input.component.ts","../../../../libs/ngx-dev-toolbar/src/components/select/select.component.ts","../../../../libs/ngx-dev-toolbar/src/utils/storage.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/app-features-tool/app-features-internal.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/app-features-tool/app-features-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/tools/feature-flags-tool/feature-flags-internal.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/feature-flags-tool/feature-flags-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/components/button/button.component.ts","../../../../libs/ngx-dev-toolbar/src/components/card/card.component.ts","../../../../libs/ngx-dev-toolbar/src/components/clickable-card/clickable-card.component.ts","../../../../libs/ngx-dev-toolbar/src/components/link-button/link-button.component.ts","../../../../libs/ngx-dev-toolbar/src/tools/home-tool/settings.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/home-tool/home-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/tools/language-tool/language-internal.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/language-tool/language-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/tools/permissions-tool/permissions-internal.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/permissions-tool/permissions-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/tools/presets-tool/presets-internal.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/presets-tool/presets-tool.component.ts","../../../../libs/ngx-dev-toolbar/src/dev-toolbar.component.ts","../../../../libs/ngx-dev-toolbar/src/tools/feature-flags-tool/feature-flags.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/language-tool/language.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/app-features-tool/app-features.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/permissions-tool/permissions.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/presets-tool/presets.service.ts","../../../../libs/ngx-dev-toolbar/src/ngx-dev-toolbar.ts"],"sourcesContent":["import { Injectable, computed, signal } from '@angular/core';\nimport { DevToolbarConfig } from './models/dev-toolbar-config.interface';\n\ninterface DevToolbarState {\n isHidden: boolean;\n activeToolId: string | null;\n error: string | null;\n theme: 'light' | 'dark';\n delay: number;\n config: DevToolbarConfig;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DevToolbarStateService {\n // Initial state\n private state = signal<DevToolbarState>({\n isHidden: true,\n activeToolId: null,\n delay: 3000,\n error: null,\n theme: 'dark',\n config: {},\n });\n\n // Selectors\n readonly isVisible = computed(\n () => !this.state().isHidden || this.hasActiveTool()\n );\n readonly isDarkTheme = computed(() => this.state().theme === 'dark');\n readonly activeToolId = computed(() => this.state().activeToolId);\n readonly hasActiveTool = computed(() => this.state().activeToolId !== null);\n readonly error = computed(() => this.state().error);\n readonly theme = computed(() => this.state().theme);\n /**\n * The delay to hide the toolbar\n */\n readonly delay = computed(() => this.state().delay);\n readonly config = computed(() => this.state().config);\n\n // State updates\n setVisibility(isVisible: boolean): void {\n if (isVisible) {\n this.state.update((state) => ({\n ...state,\n isHidden: false,\n }));\n } else {\n if (this.activeToolId() === null) {\n setTimeout(() => {\n this.state.update((state) => ({\n ...state,\n isHidden: true,\n }));\n }, this.state().delay);\n }\n }\n }\n\n setTheme(theme: 'light' | 'dark'): void {\n this.state.update((state) => ({\n ...state,\n theme,\n }));\n }\n\n setActiveTool(toolId: string | null): void {\n this.state.update((state) => ({\n ...state,\n activeToolId: toolId,\n }));\n\n if (toolId === null) {\n this.setVisibility(false);\n } else {\n this.setVisibility(true);\n }\n }\n\n // Public actions\n toggleTool(toolId: string | null): void {\n const currentToolId = this.activeToolId();\n this.setActiveTool(currentToolId === toolId ? null : toolId);\n }\n\n toggleVisibility(): void {\n this.state.update((state) => ({\n ...state,\n isHidden: !state.isHidden,\n }));\n }\n\n setConfig(config: DevToolbarConfig): void {\n this.state.update((state) => ({\n ...state,\n config,\n }));\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ndt-angular-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <defs>\n <linearGradient\n id=\"angular-gradient\"\n x1=\"6\"\n x2=\"18\"\n y1=\"20\"\n y2=\"4\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0\" stop-color=\"#E40035\" />\n <stop offset=\".24\" stop-color=\"#F60A48\" />\n <stop offset=\".352\" stop-color=\"#F20755\" />\n <stop offset=\".494\" stop-color=\"#DC087D\" />\n <stop offset=\".745\" stop-color=\"#9717E7\" />\n <stop offset=\"1\" stop-color=\"#6C00F5\" />\n </linearGradient>\n </defs>\n <g fill=\"url(#angular-gradient)\">\n <polygon points=\"14.1,2.7 20.1,15.7 20.7,5.8\" />\n <polygon points=\"15.6,16.4 8.4,16.4 7.4,18.6 12,21.2 16.6,18.6\" />\n <polygon points=\"9.6,13.5 14.4,13.5 12,7.7\" />\n <polygon points=\"9.9,2.7 3.3,5.8 3.9,15.7\" />\n </g>\n </svg>\n `,\n})\nexport class AngularIconComponent {}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-bolt-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M160,16,144,96H208l-96,144,16-80H64Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M215.79,118.17a8,8,0,0,0-5-5.66L153.18,90.9l14.66-73.33a8,8,0,0,0-13.69-7l-112,120a8,8,0,0,0,3,13l57.63,21.61L88.16,238.43a8,8,0,0,0,13.69,7l112-120A8,8,0,0,0,215.79,118.17ZM109.37,214l10.47-52.38a8,8,0,0,0-5-9.06L62,132.71l84.62-90.66L136.16,94.43a8,8,0,0,0,5,9.06l52.8,19.8Z\"\n ></path>\n </svg>\n `,\n})\nexport class BoltIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-bug-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M140,88a16,16,0,1,1,16,16A16,16,0,0,1,140,88ZM100,72a16,16,0,1,0,16,16A16,16,0,0,0,100,72Zm120,72a91.84,91.84,0,0,1-2.34,20.64L236.81,173a12,12,0,0,1-9.62,22l-18-7.85a92,92,0,0,1-162.46,0l-18,7.85a12,12,0,1,1-9.62-22l19.15-8.36A91.84,91.84,0,0,1,36,144v-4H16a12,12,0,0,1,0-24H36v-4a91.84,91.84,0,0,1,2.34-20.64L19.19,83a12,12,0,0,1,9.62-22l18,7.85a92,92,0,0,1,162.46,0l18-7.85a12,12,0,1,1,9.62,22l-19.15,8.36A91.84,91.84,0,0,1,220,112v4h20a12,12,0,0,1,0,24H220ZM60,116H196v-4a68,68,0,0,0-136,0Zm56,94.92V140H60v4A68.1,68.1,0,0,0,116,210.92ZM196,144v-4H140v70.92A68.1,68.1,0,0,0,196,144Z\"\n ></path>\n </svg>\n `,\n})\nexport class BugIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-code-icon',\n standalone: true,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M240,128l-48,40H64L16,128,64,88H192Z\" opacity=\"0.2\"></path>\n <path\n d=\"M69.12,94.15,28.5,128l40.62,33.85a8,8,0,1,1-10.24,12.29l-48-40a8,8,0,0,1,0-12.29l48-40a8,8,0,0,1,10.24,12.3Zm176,27.7-48-40a8,8,0,1,0-10.24,12.3L227.5,128l-40.62,33.85a8,8,0,1,0,10.24,12.29l48-40a8,8,0,0,0,0-12.29ZM162.73,32.48a8,8,0,0,0-10.25,4.79l-64,176a8,8,0,0,0,4.79,10.26A8.14,8.14,0,0,0,96,224a8,8,0,0,0,7.52-5.27l64-176A8,8,0,0,0,162.73,32.48Z\"\n ></path>\n </svg>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CodeIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-database-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M216,80c0,26.51-39.4,48-88,48S40,106.51,40,80s39.4-48,88-48S216,53.49,216,80Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M128,24C74.17,24,32,48.6,32,80v96c0,31.4,42.17,56,96,56s96-24.6,96-56V80C224,48.6,181.83,24,128,24Zm80,104c0,9.62-7.88,19.43-21.61,26.92C170.93,163.35,150.19,168,128,168s-42.93-4.65-58.39-13.08C55.88,147.43,48,137.62,48,128V111.36c17.06,15,46.23,24.64,80,24.64s62.94-9.68,80-24.64ZM69.61,53.08C85.07,44.65,105.81,40,128,40s42.93,4.65,58.39,13.08C200.12,60.57,208,70.38,208,80s-7.88,19.43-21.61,26.92C170.93,115.35,150.19,120,128,120s-42.93-4.65-58.39-13.08C55.88,99.43,48,89.62,48,80S55.88,60.57,69.61,53.08ZM186.39,202.92C170.93,211.35,150.19,216,128,216s-42.93-4.65-58.39-13.08C55.88,195.43,48,185.62,48,176V159.36c17.06,15,46.23,24.64,80,24.64s62.94-9.68,80-24.64V176C208,185.62,200.12,195.43,186.39,202.92Z\"\n ></path>\n </svg>\n `,\n})\nexport class DatabaseIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-discord-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M104,140a12,12,0,1,1-12-12A12,12,0,0,1,104,140Zm60-12a12,12,0,1,0,12,12A12,12,0,0,0,164,128Zm74.45,64.9-67,29.71a16.17,16.17,0,0,1-21.71-9.1l-8.11-22q-6.72.45-13.63.46t-13.63-.46l-8.11,22a16.18,16.18,0,0,1-21.71,9.1l-67-29.71a15.93,15.93,0,0,1-9.06-18.51L38,58A16.07,16.07,0,0,1,51,46.14l36.06-5.93a16.22,16.22,0,0,1,18.26,11.88l3.26,12.84Q118.11,64,128,64t19.4.93l3.26-12.84a16.21,16.21,0,0,1,18.26-11.88L205,46.14A16.07,16.07,0,0,1,218,58l29.53,116.38A15.93,15.93,0,0,1,238.45,192.9ZM232,178.28,202.47,62s0,0-.08,0L166.33,56a.17.17,0,0,0-.17,0l-2.83,11.14c5,.94,10,2.06,14.83,3.42A8,8,0,0,1,176,86.31a8.09,8.09,0,0,1-2.16-.3A172.25,172.25,0,0,0,128,80a172.25,172.25,0,0,0-45.84,6,8,8,0,1,1-4.32-15.4c4.82-1.36,9.78-2.48,14.82-3.42L89.83,56s0,0-.12,0h0L53.61,61.93a.17.17,0,0,0-.09,0L24,178.33,91,208a.23.23,0,0,0,.22,0L98,189.72a173.2,173.2,0,0,1-20.14-4.32A8,8,0,0,1,82.16,170,171.85,171.85,0,0,0,128,176a171.85,171.85,0,0,0,45.84-6,8,8,0,0,1,4.32,15.41A173.2,173.2,0,0,1,158,189.72L164.75,208a.22.22,0,0,0,.21,0Z\"\n ></path>\n </svg>\n `,\n})\nexport class DiscordIconComponent {\n fill = input<string>('#000000');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-docs-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M213.66,66.34l-40-40A8,8,0,0,0,168,24H88A16,16,0,0,0,72,40V56H56A16,16,0,0,0,40,72V216a16,16,0,0,0,16,16H168a16,16,0,0,0,16-16V200h16a16,16,0,0,0,16-16V72A8,8,0,0,0,213.66,66.34ZM168,216H56V72h76.69L168,107.31v84.53c0,.06,0,.11,0,.16s0,.1,0,.16V216Zm32-32H184V104a8,8,0,0,0-2.34-5.66l-40-40A8,8,0,0,0,136,56H88V40h76.69L200,75.31Zm-56-32a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h48A8,8,0,0,1,144,152Zm0,32a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h48A8,8,0,0,1,144,184Z\"\n ></path>\n </svg>\n `,\n})\nexport class DocsIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-export-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M216,112v96a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V112A16,16,0,0,1,56,96H80a8,8,0,0,1,0,16H56v96H200V112H176a8,8,0,0,1,0-16h24A16,16,0,0,1,216,112ZM93.66,69.66,120,43.31V136a8,8,0,0,0,16,0V43.31l26.34,26.35a8,8,0,0,0,11.32-11.32l-40-40a8,8,0,0,0-11.32,0l-40,40A8,8,0,0,0,93.66,69.66Z\"\n ></path>\n </svg>\n `,\n})\nexport class ExportIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-filter-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M227.81,66.76l-.08.09L160,139.17v55.49A8,8,0,0,1,156.94,201l-32,21.33A8,8,0,0,1,112,216V139.17L44.27,66.85l-.08-.09A16,16,0,0,1,56,40H200a16,16,0,0,1,11.84,26.76Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M230.6,49.53A23.94,23.94,0,0,0,200,32H56A24,24,0,0,0,38.15,65.67L104,139.37V216a8,8,0,0,0,11.58,7.16l32-16A8,8,0,0,0,152,200V139.37l65.85-73.7A23.93,23.93,0,0,0,230.6,49.53ZM203.36,54.86a8,8,0,0,1,.07,9.12L136,139.17V196.58l-16,8V139.17L52.57,64A8,8,0,0,1,56,48H200A8,8,0,0,1,203.36,54.86Z\"\n ></path>\n </svg>\n `,\n})\nexport class FilterIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-gauge-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M232,152a103.93,103.93,0,0,1-5.9,34.63,8,8,0,0,1-7.57,5.37H37.46a8.05,8.05,0,0,1-7.57-5.41A104.06,104.06,0,0,1,24,151.19C24.44,94,71.73,47.49,129,48A104,104,0,0,1,232,152Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M114.34,154.34l96-96a8,8,0,0,1,11.32,11.32l-96,96a8,8,0,0,1-11.32-11.32ZM128,88a63.9,63.9,0,0,1,20.44,3.33,8,8,0,1,0,5.11-15.16A80,80,0,0,0,48.49,160.88,8,8,0,0,0,56.43,168c.29,0,.59,0,.89-.05a8,8,0,0,0,7.07-8.83A64.92,64.92,0,0,1,64,152,64.07,64.07,0,0,1,128,88Zm99.74,13a8,8,0,0,0-14.24,7.3,96.27,96.27,0,0,1,5,75.71l-181.1-.07A96.24,96.24,0,0,1,128,56h.88a95,95,0,0,1,42.82,10.5A8,8,0,1,0,179,52.27,110.8,110.8,0,0,0,129,40h-1A112.05,112.05,0,0,0,22.35,189.25,16.07,16.07,0,0,0,37.46,200H218.53a16,16,0,0,0,15.11-10.71,112.35,112.35,0,0,0-5.9-88.3Z\"\n ></path>\n </svg>\n `,\n})\nexport class GaugeIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-gear-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M207.86,123.18l16.78-21a99.14,99.14,0,0,0-10.07-24.29l-26.7-3a81,81,0,0,0-6.81-6.81l-3-26.71a99.43,99.43,0,0,0-24.3-10l-21,16.77a81.59,81.59,0,0,0-9.64,0l-21-16.78A99.14,99.14,0,0,0,77.91,41.43l-3,26.7a81,81,0,0,0-6.81,6.81l-26.71,3a99.43,99.43,0,0,0-10,24.3l16.77,21a81.59,81.59,0,0,0,0,9.64l-16.78,21a99.14,99.14,0,0,0,10.07,24.29l26.7,3a81,81,0,0,0,6.81,6.81l3,26.71a99.43,99.43,0,0,0,24.3,10l21-16.77a81.59,81.59,0,0,0,9.64,0l21,16.78a99.14,99.14,0,0,0,24.29-10.07l3-26.7a81,81,0,0,0,6.81-6.81l26.71-3a99.43,99.43,0,0,0,10-24.3l-16.77-21A81.59,81.59,0,0,0,207.86,123.18ZM128,168a40,40,0,1,1,40-40A40,40,0,0,1,128,168Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M128,80a48,48,0,1,0,48,48A48.05,48.05,0,0,0,128,80Zm0,80a32,32,0,1,1,32-32A32,32,0,0,1,128,160Zm88-29.84q.06-2.16,0-4.32l14.92-18.64a8,8,0,0,0,1.48-7.06,107.6,107.6,0,0,0-10.88-26.25,8,8,0,0,0-6-3.93l-23.72-2.64q-1.48-1.56-3-3L186,40.54a8,8,0,0,0-3.94-6,107.29,107.29,0,0,0-26.25-10.86,8,8,0,0,0-7.06,1.48L130.16,40Q128,40,125.84,40L107.2,25.11a8,8,0,0,0-7.06-1.48A107.6,107.6,0,0,0,73.89,34.51a8,8,0,0,0-3.93,6L67.32,64.27q-1.56,1.49-3,3L40.54,70a8,8,0,0,0-6,3.94,107.71,107.71,0,0,0-10.87,26.25,8,8,0,0,0,1.49,7.06L40,125.84Q40,128,40,130.16L25.11,148.8a8,8,0,0,0-1.48,7.06,107.6,107.6,0,0,0,10.88,26.25,8,8,0,0,0,6,3.93l23.72,2.64q1.49,1.56,3,3L70,215.46a8,8,0,0,0,3.94,6,107.71,107.71,0,0,0,26.25,10.87,8,8,0,0,0,7.06-1.49L125.84,216q2.16.06,4.32,0l18.64,14.92a8,8,0,0,0,7.06,1.48,107.21,107.21,0,0,0,26.25-10.88,8,8,0,0,0,3.93-6l2.64-23.72q1.56-1.48,3-3L215.46,186a8,8,0,0,0,6-3.94,107.71,107.71,0,0,0,10.87-26.25,8,8,0,0,0-1.49-7.06Zm-16.1-6.5a73.93,73.93,0,0,1,0,8.68,8,8,0,0,0,1.74,5.48l14.19,17.73a91.57,91.57,0,0,1-6.23,15L187,173.11a8,8,0,0,0-5.1,2.64,74.11,74.11,0,0,1-6.14,6.14,8,8,0,0,0-2.64,5.1l-2.51,22.58a91.32,91.32,0,0,1-15,6.23l-17.74-14.19a8,8,0,0,0-5-1.75h-.48a73.93,73.93,0,0,1-8.68,0,8.06,8.06,0,0,0-5.48,1.74L100.45,215.8a91.57,91.57,0,0,1-15-6.23L82.89,187a8,8,0,0,0-2.64-5.1,74.11,74.11,0,0,1-6.14-6.14,8,8,0,0,0-5.1-2.64L46.43,170.6a91.32,91.32,0,0,1-6.23-15l14.19-17.74a8,8,0,0,0,1.74-5.48,73.93,73.93,0,0,1,0-8.68,8,8,0,0,0-1.74-5.48L40.2,100.45a91.57,91.57,0,0,1,6.23-15L69,82.89a8,8,0,0,0,5.1-2.64,74.11,74.11,0,0,1,6.14-6.14A8,8,0,0,0,82.89,69L85.4,46.43a91.32,91.32,0,0,1,15-6.23l17.74,14.19a8,8,0,0,0,5.48,1.74,73.93,73.93,0,0,1,8.68,0,8.06,8.06,0,0,0,5.48-1.74L155.55,40.2a91.57,91.57,0,0,1,15,6.23L173.11,69a8,8,0,0,0,2.64,5.1,74.11,74.11,0,0,1,6.14,6.14,8,8,0,0,0,5.1,2.64l22.58,2.51a91.32,91.32,0,0,1,6.23,15l-14.19,17.74A8,8,0,0,0,199.87,123.66Z\"\n ></path>\n </svg>\n `,\n})\nexport class GearIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-git-branch-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M224,64a24,24,0,1,1-24-24A24,24,0,0,1,224,64Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M232,64a32,32,0,1,0-40,31v17a8,8,0,0,1-8,8H96a23.84,23.84,0,0,0-8,1.38V95a32,32,0,1,0-16,0v66a32,32,0,1,0,16,0V144a8,8,0,0,1,8-8h88a24,24,0,0,0,24-24V95A32.06,32.06,0,0,0,232,64ZM64,64A16,16,0,1,1,80,80,16,16,0,0,1,64,64ZM96,192a16,16,0,1,1-16-16A16,16,0,0,1,96,192ZM200,80a16,16,0,1,1,16-16A16,16,0,0,1,200,80Z\"\n ></path>\n </svg>\n `,\n})\nexport class GitBranchIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-import-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z\"\n ></path>\n </svg>\n `,\n})\nexport class ImportIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-layout-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M104,104V208H40a8,8,0,0,1-8-8V104Z\" opacity=\"0.2\"></path>\n <path\n d=\"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40Zm0,16V96H40V56ZM40,112H96v88H40Zm176,88H112V112H216v88Z\"\n ></path>\n </svg>\n `,\n})\nexport class LayoutIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-lightbulb-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M176,232a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h80A8,8,0,0,1,176,232Zm40-128a87.55,87.55,0,0,1-33.64,69.21A16.24,16.24,0,0,0,176,186v6a16,16,0,0,1-16,16H96a16,16,0,0,1-16-16v-6a16,16,0,0,0-6.23-12.66A87.59,87.59,0,0,1,40,104.49C39.74,56.83,78.26,17.14,125.88,16A88,88,0,0,1,216,104Zm-16,0a72,72,0,0,0-73.74-72c-39,.92-70.47,33.39-70.26,72.39a71.65,71.65,0,0,0,27.64,56.3A32,32,0,0,1,96,186v6h64v-6a32.15,32.15,0,0,1,12.47-25.35A71.65,71.65,0,0,0,200,104Zm-16.11-9.34a57.6,57.6,0,0,0-46.56-46.55,8,8,0,0,0-2.66,15.78c16.57,2.79,30.63,16.85,33.44,33.45A8,8,0,0,0,176,104a9,9,0,0,0,1.35-.11A8,8,0,0,0,183.89,94.66Z\"\n ></path>\n </svg>\n `,\n})\nexport class LightbulbIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-lighting-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path d=\"M96,240l16-80L48,136,160,16,144,96l64,24Z\" opacity=\"0.2\"></path>\n <path\n d=\"M215.79,118.17a8,8,0,0,0-5-5.66L153.18,90.9l14.66-73.33a8,8,0,0,0-13.69-7l-112,120a8,8,0,0,0,3,13l57.63,21.61L88.16,238.43a8,8,0,0,0,13.69,7l112-120A8,8,0,0,0,215.79,118.17ZM109.37,214l10.47-52.38a8,8,0,0,0-5-9.06L62,132.71l84.62-90.66L136.16,94.43a8,8,0,0,0,5,9.06l52.8,19.8Z\"\n ></path>\n </svg>\n `,\n})\nexport class LightingIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-lock-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M208,80H176V56a48,48,0,0,0-96,0V80H48A16,16,0,0,0,32,96V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V96A16,16,0,0,0,208,80ZM96,56a32,32,0,0,1,64,0V80H96ZM208,208H48V96H208V208Zm-68-56a12,12,0,1,1-12-12A12,12,0,0,1,140,152Z\"\n ></path>\n </svg>\n `,\n})\nexport class LockIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-moon-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M224.3,150.3a8.1,8.1,0,0,0-7.8-5.7l-2.2.4A84,84,0,0,1,111,41.6a5.7,5.7,0,0,0,.3-1.8A7.9,7.9,0,0,0,109,33a8.1,8.1,0,0,0-8.1-1.1A104,104,0,1,0,225.4,156.9,8.1,8.1,0,0,0,224.3,150.3Z\"\n opacity=\"0.2\"\n />\n <path\n d=\"M233.5,137.3a12.1,12.1,0,0,0-11.8-8.6,7.9,7.9,0,0,0-1.3.1,80,80,0,0,1-98.2-98.2,12,12,0,0,0-15.6-14A104.2,104.2,0,0,0,32,120c0,57.4,46.6,104,104,104A104.2,104.2,0,0,0,239.4,149.6,12,12,0,0,0,233.5,137.3ZM136,208A88,88,0,0,1,48,120a87.6,87.6,0,0,1,64.8-84.7,96,96,0,0,0,111.9,112A87.6,87.6,0,0,1,136,208Z\"\n />\n </svg>\n `,\n})\nexport class MoonIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-network-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M152,40V72a8,8,0,0,1-8,8H112a8,8,0,0,1-8-8V40a8,8,0,0,1,8-8h32A8,8,0,0,1,152,40ZM80,168H48a8,8,0,0,0-8,8v32a8,8,0,0,0,8,8H80a8,8,0,0,0,8-8V176A8,8,0,0,0,80,168Zm128,0H176a8,8,0,0,0-8,8v32a8,8,0,0,0,8,8h32a8,8,0,0,0,8-8V176A8,8,0,0,0,208,168Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M232,112H136V88h8a16,16,0,0,0,16-16V40a16,16,0,0,0-16-16H112A16,16,0,0,0,96,40V72a16,16,0,0,0,16,16h8v24H24a8,8,0,0,0,0,16H56v32H48a16,16,0,0,0-16,16v32a16,16,0,0,0,16,16H80a16,16,0,0,0,16-16V176a16,16,0,0,0-16-16H72V128H184v32h-8a16,16,0,0,0-16,16v32a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V176a16,16,0,0,0-16-16h-8V128h32a8,8,0,0,0,0-16ZM112,40h32V72H112ZM80,208H48V176H80Zm128,0H176V176h32Z\"\n ></path>\n </svg>\n `,\n})\nexport class NetworkIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-puzzle-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M204,168a28,28,0,0,0,12-2.69V208a8,8,0,0,1-8,8H64a8,8,0,0,1-8-8V165.31a28,28,0,1,1,0-50.62V72a8,8,0,0,1,8-8h46.69a28,28,0,1,1,50.61,0H208a8,8,0,0,1,8,8v42.69A28,28,0,1,0,204,168Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M220.27,158.54a8,8,0,0,0-7.7-.46,20,20,0,1,1,0-36.16A8,8,0,0,0,224,114.69V72a16,16,0,0,0-16-16H171.78a35.36,35.36,0,0,0,.22-4,36.15,36.15,0,0,0-11.36-26.25,36,36,0,0,0-60.55,23.63,36.56,36.56,0,0,0,.14,6.62H64A16,16,0,0,0,48,72v32.22a35.36,35.36,0,0,0-4-.22,36.12,36.12,0,0,0-26.24,11.36,35.7,35.7,0,0,0-9.69,27,36.08,36.08,0,0,0,33.31,33.6,36.56,36.56,0,0,0,6.62-.14V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V165.31A8,8,0,0,0,220.27,158.54ZM208,208H64V165.31a8,8,0,0,0-11.43-7.23,20,20,0,1,1,0-36.16A8,8,0,0,0,64,114.69V72h46.69a8,8,0,0,0,7.23-11.43,20,20,0,1,1,36.16,0A8,8,0,0,0,161.31,72H208v32.23a35.68,35.68,0,0,0-6.62-.14A36,36,0,0,0,204,176a35.36,35.36,0,0,0,4-.22Z\"\n ></path>\n </svg>\n `,\n})\nexport class PuzzleIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-refresh-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M216,128a88,88,0,1,1-88-88A88,88,0,0,1,216,128Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M224,48V96a8,8,0,0,1-8,8H168a8,8,0,0,1,0-16h28.69L182.06,73.37a79.56,79.56,0,0,0-56.13-23.43h-.45A79.52,79.52,0,0,0,69.59,72.71,8,8,0,0,1,58.41,61.27a96,96,0,0,1,135,.79L208,76.69V48a8,8,0,0,1,16,0ZM186.41,183.29a80,80,0,0,1-112.47-.66L59.31,168H88a8,8,0,0,0,0-16H40a8,8,0,0,0-8,8v48a8,8,0,0,0,16,0V179.31l14.63,14.63A95.43,95.43,0,0,0,130,222.06h.53a95.36,95.36,0,0,0,67.07-27.33,8,8,0,0,0-11.18-11.44Z\"\n ></path>\n </svg>\n `,\n})\nexport class RefreshIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-star-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M229.06,108.79l-48.7,42,14.88,62.79a8.4,8.4,0,0,1-12.52,9.17L128,189.09,73.28,222.74a8.4,8.4,0,0,1-12.52-9.17l14.88-62.79-48.7-42A8.46,8.46,0,0,1,31.73,94L95.64,88.8l24.62-59.6a8.36,8.36,0,0,1,15.48,0l24.62,59.6L224.27,94A8.46,8.46,0,0,1,229.06,108.79Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M239.18,97.26A16.38,16.38,0,0,0,224.92,86l-59-4.76L143.14,26.15a16.36,16.36,0,0,0-30.27,0L90.11,81.23,31.08,86a16.46,16.46,0,0,0-9.37,28.86l45,38.83L53,211.75a16.38,16.38,0,0,0,24.5,17.82L128,198.49l50.53,31.08A16.4,16.4,0,0,0,203,211.75l-13.76-58.07,45-38.83A16.43,16.43,0,0,0,239.18,97.26Zm-15.34,5.47-48.7,42a8,8,0,0,0-2.56,7.91l14.88,62.8a.37.37,0,0,1-.17.48c-.18.14-.23.11-.38,0l-54.72-33.65a8,8,0,0,0-8.38,0L69.09,215.94c-.15.09-.19.12-.38,0a.37.37,0,0,1-.17-.48l14.88-62.8a8,8,0,0,0-2.56-7.91l-48.7-42c-.12-.1-.23-.19-.13-.5s.18-.27.33-.29l63.92-5.16A8,8,0,0,0,103,91.86l24.62-59.61c.08-.17.11-.25.35-.25s.27.08.35.25L153,91.86a8,8,0,0,0,6.75,4.92l63.92,5.16c.15,0,.24,0,.33.29S224,102.63,223.84,102.73Z\"\n ></path>\n </svg>\n `,\n})\nexport class StarIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-sun-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M128,60a68,68,0,1,0,68,68A68.07,68.07,0,0,0,128,60Z\"\n opacity=\"0.2\"\n />\n <path\n d=\"M128,44a8,8,0,0,0,8-8V16a8,8,0,0,0-16,0V36A8,8,0,0,0,128,44ZM57.31,68.69a8,8,0,0,0,11.32-11.32L54.63,43.37A8,8,0,0,0,43.31,54.69ZM44,128a8,8,0,0,0-8-8H16a8,8,0,0,0,0,16H36A8,8,0,0,0,44,128Zm24.63,59.31-14,14a8,8,0,0,0,11.32,11.32l14-14a8,8,0,0,0-11.32-11.32ZM128,212a8,8,0,0,0-8,8v20a8,8,0,0,0,16,0V220A8,8,0,0,0,128,212Zm70.69-24.69a8,8,0,0,0-11.32,11.32l14,14a8,8,0,0,0,11.32-11.32ZM240,120H220a8,8,0,0,0,0,16h20a8,8,0,0,0,0-16Zm-24.69-62.63-14,14a8,8,0,0,0,11.32,11.32l14-14a8,8,0,0,0-11.32-11.32ZM128,76a52,52,0,1,0,52,52A52.06,52.06,0,0,0,128,76Zm0,88a36,36,0,1,1,36-36A36,36,0,0,1,128,164Z\"\n />\n </svg>\n `,\n})\nexport class SunIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-terminal-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M224,56V200a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V56a8,8,0,0,1,8-8H216A8,8,0,0,1,224,56Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M128,128a8,8,0,0,1-3,6.25l-40,32a8,8,0,1,1-10-12.5L107.19,128,75,102.25a8,8,0,1,1,10-12.5l40,32A8,8,0,0,1,128,128Zm48,24H136a8,8,0,0,0,0,16h40a8,8,0,0,0,0-16Zm56-96V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216A16,16,0,0,1,232,56ZM216,200V56H40V200H216Z\"\n ></path>\n </svg>\n `,\n})\nexport class TerminalIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-toggle-left-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M112,128A32,32,0,1,1,80,96,32,32,0,0,1,112,128Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M176,56H80a72,72,0,0,0,0,144h96a72,72,0,0,0,0-144Zm0,128H80A56,56,0,0,1,80,72h96a56,56,0,0,1,0,112ZM80,88a40,40,0,1,0,40,40A40,40,0,0,0,80,88Zm0,64a24,24,0,1,1,24-24A24,24,0,0,1,80,152Z\"\n ></path>\n </svg>\n `,\n})\nexport class ToggleLeftIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-translate-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M250.73,210.63l-56-112a12,12,0,0,0-21.46,0l-20.52,41A84.2,84.2,0,0,1,114,126.22,107.48,107.48,0,0,0,139.33,68H160a12,12,0,0,0,0-24H108V32a12,12,0,0,0-24,0V44H32a12,12,0,0,0,0,24h83.13A83.69,83.69,0,0,1,96,110.35,84,84,0,0,1,83.6,91a12,12,0,1,0-21.81,10A107.55,107.55,0,0,0,78,126.24,83.54,83.54,0,0,1,32,140a12,12,0,0,0,0,24,107.47,107.47,0,0,0,64-21.07,108.4,108.4,0,0,0,45.39,19.44l-24.13,48.26a12,12,0,1,0,21.46,10.73L151.41,196h65.17l12.68,25.36a12,12,0,1,0,21.47-10.73ZM163.41,172,184,130.83,204.58,172Z\"\n ></path>\n </svg>\n `,\n})\nexport class TranslateIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-trash-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z\"\n ></path>\n </svg>\n `,\n})\nexport class TrashIconComponent {\n fill = input<string>('#FFFF');\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n@Component({\n selector: 'ndt-users-icon',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <svg\n [attr.fill]=\"fill()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 256 256\"\n >\n <path\n d=\"M224,128a95.76,95.76,0,0,1-31.8,71.37A72,72,0,0,0,128,160a40,40,0,1,0-40-40,40,40,0,0,0,40,40,72,72,0,0,0-64.2,39.37h0A96,96,0,1,1,224,128Z\"\n opacity=\"0.2\"\n ></path>\n <path\n d=\"M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24ZM74.08,197.5a64,64,0,0,1,107.84,0,87.83,87.83,0,0,1-107.84,0ZM96,120a32,32,0,1,1,32,32A32,32,0,0,1,96,120Zm97.76,66.41a79.66,79.66,0,0,0-36.06-28.75,48,48,0,1,0-59.4,0,79.66,79.66,0,0,0-36.06,28.75,88,88,0,1,1,131.52,0Z\"\n ></path>\n </svg>\n `,\n})\nexport class UsersIconComponent {\n fill = input<string>('#FFFF');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n} from '@angular/core';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\nimport { AngularIconComponent } from './angular-icon.component';\nimport { BoltIconComponent } from './bolt-icon.component';\nimport { BugIconComponent } from './bug-icon.component';\nimport { CodeIconComponent } from './code-icon.component';\nimport { DatabaseIconComponent } from './database-icon.component';\nimport { DiscordIconComponent } from './discord-icon.component';\nimport { DocsIconComponent } from './docs-icon.component';\nimport { ExportIconComponent } from './export-icon.component';\nimport { FilterIconComponent } from './filter-icon.component';\nimport { GaugeIconComponent } from './gauge-icon.component';\nimport { GearIconComponent } from './gear-icon.component';\nimport { GitBranchIconComponent } from './git-branch-icon.component';\nimport { IconName } from './icon.models';\nimport { ImportIconComponent } from './import-icon.component';\nimport { LayoutIconComponent } from './layout-icon.component';\nimport { LightbulbIconComponent } from './lightbulb-icon.component';\nimport { LightingIconComponent } from './lighting-icon.component';\nimport { LockIconComponent } from './lock-icon.component';\nimport { MoonIconComponent } from './moon-icon.component';\nimport { NetworkIconComponent } from './network-icon.component';\nimport { PuzzleIconComponent } from './puzzle-icon.component';\nimport { RefreshIconComponent } from './refresh-icon.component';\nimport { StarIconComponent } from './star-icon.component';\nimport { SunIconComponent } from './sun-icon.component';\nimport { TerminalIconComponent } from './terminal-icon.component';\nimport { ToggleLeftIconComponent } from './toggle-left-icon.component';\nimport { TranslateIconComponent } from './translate-icon.component';\nimport { TrashIconComponent } from './trash-icon.component';\nimport { UsersIconComponent } from './users-icon.component';\n\n@Component({\n selector: 'ndt-icon',\n standalone: true,\n imports: [\n AngularIconComponent,\n BoltIconComponent,\n BugIconComponent,\n CodeIconComponent,\n DatabaseIconComponent,\n DocsIconComponent,\n DiscordIconComponent,\n ExportIconComponent,\n FilterIconComponent,\n GaugeIconComponent,\n GearIconComponent,\n GitBranchIconComponent,\n ImportIconComponent,\n LayoutIconComponent,\n LightbulbIconComponent,\n LightingIconComponent,\n LockIconComponent,\n NetworkIconComponent,\n PuzzleIconComponent,\n RefreshIconComponent,\n StarIconComponent,\n TerminalIconComponent,\n ToggleLeftIconComponent,\n UsersIconComponent,\n SunIconComponent,\n MoonIconComponent,\n TranslateIconComponent,\n TrashIconComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @switch (name()) { @case ('angular') {\n <ndt-angular-icon />\n } @case ('bolt') {\n <ndt-bolt-icon [fill]=\"fill()\" />\n } @case ('bug') {\n <ndt-bug-icon [fill]=\"fill()\" />\n } @case ('code') {\n <ndt-code-icon [fill]=\"fill()\" />\n } @case ('database') {\n <ndt-database-icon [fill]=\"fill()\" />\n } @case ('docs') {\n <ndt-docs-icon [fill]=\"fill()\" />\n } @case ('export') {\n <ndt-export-icon [fill]=\"fill()\" />\n } @case ('filter') {\n <ndt-filter-icon [fill]=\"fill()\" />\n } @case ('gauge') {\n <ndt-gauge-icon [fill]=\"fill()\" />\n } @case ('gear') {\n <ndt-gear-icon [fill]=\"fill()\" />\n } @case ('git-branch') {\n <ndt-git-branch-icon [fill]=\"fill()\" />\n } @case ('import') {\n <ndt-import-icon [fill]=\"fill()\" />\n } @case ('layout') {\n <ndt-layout-icon [fill]=\"fill()\" />\n } @case ('lighting') {\n <ndt-lighting-icon [fill]=\"fill()\" />\n } @case ('lightbulb') {\n <ndt-lightbulb-icon [fill]=\"fill()\" />\n } @case ('lock') {\n <ndt-lock-icon [fill]=\"fill()\" />\n } @case ('network') {\n <ndt-network-icon [fill]=\"fill()\" />\n } @case ('puzzle') {\n <ndt-puzzle-icon [fill]=\"fill()\" />\n } @case ('refresh') {\n <ndt-refresh-icon [fill]=\"fill()\" />\n } @case ('star') {\n <ndt-star-icon [fill]=\"fill()\" />\n } @case ('terminal') {\n <ndt-terminal-icon [fill]=\"fill()\" />\n } @case ('toggle-left') {\n <ndt-toggle-left-icon [fill]=\"fill()\" />\n } @case ('user') {\n <ndt-users-icon [fill]=\"fill()\" />\n } @case ('sun') {\n <ndt-sun-icon [fill]=\"fill()\" />\n } @case ('moon') {\n <ndt-moon-icon [fill]=\"fill()\" />\n } @case ('translate') {\n <ndt-translate-icon [fill]=\"fill()\" />\n } @case ('discord') {\n <ndt-discord-icon [fill]=\"fill()\" />\n } @case ('trash') {\n <ndt-trash-icon [fill]=\"fill()\" />\n } }\n `,\n})\nexport class DevToolbarIconComponent {\n private readonly stateService = inject(DevToolbarStateService);\n\n name = input.required<IconName>();\n\n fill = computed(() =>\n this.stateService.theme() === 'dark' ? '#FFFFFF' : '#000000'\n );\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * Container component for displaying lists of items with consistent scrolling,\n * empty states, and layout across all tools.\n *\n * @example\n * ```html\n * <ndt-list\n * [hasItems]=\"items().length > 0\"\n * [hasResults]=\"filteredItems().length > 0\"\n * emptyMessage=\"No items found\"\n * noResultsMessage=\"No items match your filter\"\n * >\n * @for (item of filteredItems(); track item.id) {\n * <ndt-list-item ... />\n * }\n * </ndt-list>\n * ```\n */\n@Component({\n selector: 'ndt-list',\n standalone: true,\n imports: [CommonModule],\n template: `\n @if (!hasItems()) {\n <div class=\"empty-state\">\n <p>{{ emptyMessage() }}</p>\n @if (emptyHint()) {\n <p class=\"hint\">{{ emptyHint() }}</p>\n }\n </div>\n } @else if (!hasResults()) {\n <div class=\"empty-state\">\n <p>{{ noResultsMessage() }}</p>\n </div>\n } @else {\n <div class=\"list-container\">\n <ng-content />\n </div>\n }\n `,\n styleUrls: ['./list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarListComponent {\n /**\n * Whether the list has any items at all (before filtering).\n * When false, shows the emptyMessage.\n */\n hasItems = input<boolean>(true);\n\n /**\n * Whether the list has any results after filtering.\n * When false (but hasItems is true), shows the noResultsMessage.\n */\n hasResults = input<boolean>(true);\n\n /**\n * Message to display when there are no items at all.\n * @example \"No feature flags found\"\n */\n emptyMessage = input<string>('No items found');\n\n /**\n * Optional hint text to display below the empty message.\n * @example \"Call setAvailableOptions() to configure features\"\n */\n emptyHint = input<string | undefined>(undefined);\n\n /**\n * Message to display when items exist but none match the current filter.\n * @example \"No flags match your filter\"\n */\n noResultsMessage = input<string>('No results match your filter');\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * List item component with consistent layout, dot badge indicator,\n * and forced state highlighting.\n *\n * @example\n * ```html\n * <ndt-list-item\n * title=\"Analytics Dashboard\"\n * description=\"Advanced reporting tools\"\n * [isForced]=\"false\"\n * [currentValue]=\"true\"\n * [originalValue]=\"undefined\"\n * >\n * <ndt-select ... />\n * </ndt-list-item>\n * ```\n */\n@Component({\n selector: 'ndt-list-item',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div class=\"list-item\" [class.list-item--forced]=\"isForced()\">\n <div class=\"info\">\n <h3>{{ title() }}</h3>\n @if (description()) {\n <div class=\"description-wrapper\">\n <span\n class=\"dot-indicator\"\n [class.dot-indicator--on]=\"displayValue()\"\n [class.dot-indicator--off]=\"!displayValue()\"\n [title]=\"tooltipText()\"\n ></span>\n <p>{{ description() }}</p>\n </div>\n }\n </div>\n <div class=\"actions\">\n <ng-content />\n </div>\n </div>\n `,\n styleUrls: ['./list-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarListItemComponent {\n /**\n * Display title for the list item\n * @example \"Analytics Dashboard\"\n */\n title = input.required<string>();\n\n /**\n * Optional description text\n * @example \"Advanced reporting and data visualization tools\"\n */\n description = input<string | undefined>(undefined);\n\n /**\n * Whether this item's state is forced via the dev toolbar\n */\n isForced = input<boolean>(false);\n\n /**\n * Current enabled/granted state of the item\n */\n currentValue = input.required<boolean>();\n\n /**\n * Original value before forcing (only present when isForced is true)\n */\n originalValue = input<boolean | undefined>(undefined);\n\n /**\n * Value to display in the dot indicator.\n * For forced items: shows originalValue\n * For non-forced items: shows currentValue\n */\n protected displayValue = computed(() => {\n const originalValue = this.originalValue();\n return this.isForced() && originalValue !== undefined\n ? originalValue\n : this.currentValue();\n });\n\n /**\n * Tooltip text explaining the indicator state\n */\n protected tooltipText = computed(() => {\n const value = this.displayValue();\n const state = value ? 'enabled' : 'disabled';\n\n if (this.isForced() && this.originalValue() !== undefined) {\n return `Originally: ${state}`;\n }\n\n return `Current state: ${state}`;\n });\n}\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\n\n@Component({\n selector: 'ndt-tool-button',\n standalone: true,\n template: `\n <button\n class=\"tool-button\"\n [class.tool-button--active]=\"isActive()\"\n [class.tool-button--focus]=\"isFocused()\"\n (mouseenter)=\"onMouseEnter()\"\n (focusin)=\"onFocus()\"\n (focusout)=\"onBlur()\"\n (mouseleave)=\"onMouseLeave()\"\n (keydown.escape)=\"onEscape()\"\n >\n @if (isTooltipVisible()) {\n <span\n class=\"tooltip\"\n [@tooltipAnimation]=\"tooltipState ? 'visible' : 'hidden'\"\n >\n {{ tooltip() }}\n </span>\n }\n <ng-content />\n </button>\n `,\n styleUrls: ['./tool-button.component.scss'],\n animations: [\n trigger('tooltipAnimation', [\n state(\n 'hidden',\n style({\n opacity: 0,\n transform: 'translateX(-50%) translateY(1rem)',\n })\n ),\n state(\n 'visible',\n style({\n opacity: 1,\n transform: 'translateX(-50%) translateY(0)',\n })\n ),\n transition('hidden => visible', [animate('200ms ease-out')]),\n transition('visible => hidden', [animate('150ms ease-in')]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarToolButtonComponent {\n // Injects\n private readonly state = inject(DevToolbarStateService);\n private readonly elementRef = inject(ElementRef);\n\n // Inputs\n readonly title = input.required<string>();\n readonly toolId = input.required<string>();\n\n // Outputs\n readonly open = output<void>();\n\n // Signals\n readonly isActive = computed(\n () => this.state.activeToolId() === this.toolId()\n );\n readonly isToolbarVisible = this.state.isVisible;\n\n readonly isFocused = signal(false);\n readonly tooltip = computed(\n () =>\n this.elementRef.nativeElement.parentElement?.getAttribute(\n 'data-tooltip'\n ) ?? ''\n );\n readonly isTooltipVisible = computed(\n () => this.tooltip() && !this.isActive()\n );\n\n // Properties\n protected tooltipState = false;\n private readonly hideDelay = 3000;\n\n // Public methods\n onClick(): void {\n this.isFocused.set(false);\n this.open.emit();\n }\n\n onMouseEnter(): void {\n this.tooltipState = true;\n }\n\n onMouseLeave(): void {\n this.tooltipState = false;\n }\n\n onEscape(): void {\n this.isFocused.set(false);\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\nimport { DevToolbarWindowOptions } from '../toolbar-tool/toolbar-tool.models';\n\n@Component({\n selector: 'ndt-window',\n standalone: true,\n template: `\n <div class=\"ndt-window\" [attr.data-theme]=\"theme()\">\n <div class=\"header\">\n <div class=\"header__content\">\n <div class=\"header__title\">\n <h1>{{ config().title }}</h1>\n @if (config().isBeta) {\n <span class=\"beta-tag\">BETA</span>\n }\n </div>\n @if (config().description) {\n <p class=\"header__description\">{{ config().description }}</p>\n }\n </div>\n <div class=\"header__controls\">\n @if (config().isMinimizable) {\n <button aria-label=\"Minimize\" class=\"control\" (click)=\"onMinimize()\">\n −\n </button>\n } @if (config().isMaximizable) {\n <button aria-label=\"Maximize\" class=\"control\" (click)=\"onMaximize()\">\n □\n </button>\n } @if (config().isClosable) {\n <button\n aria-label=\"Close\"\n class=\"control control--close\"\n (click)=\"onClose()\"\n >\n ×\n </button>\n }\n </div>\n </div>\n\n <div class=\"divider\"></div>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n </div>\n `,\n styleUrls: ['./window.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarWindowComponent {\n readonly devToolbarStateService = inject(DevToolbarStateService);\n readonly config = input.required<DevToolbarWindowOptions>();\n readonly closed = output<void>();\n readonly maximize = output<void>();\n readonly minimize = output<void>();\n\n readonly theme = computed(() => this.devToolbarStateService.theme());\n\n protected onClose(): void {\n this.closed.emit();\n }\n\n protected onMaximize(): void {\n this.maximize.emit();\n }\n\n protected onMinimize(): void {\n this.minimize.emit();\n }\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n computed,\n contentChild,\n inject,\n input,\n viewChild,\n} from '@angular/core';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\nimport { DevToolbarIconComponent } from '../icons/icon.component';\nimport { IconName } from '../icons/icon.models';\nimport { DevToolbarToolButtonComponent } from '../tool-button/tool-button.component';\nimport { DevToolbarWindowComponent } from '../window/window.component';\nimport { DevToolbarWindowOptions } from './toolbar-tool.models';\n\n@Component({\n selector: 'ndt-toolbar-tool',\n standalone: true,\n imports: [\n CdkConnectedOverlay,\n OverlayModule,\n DevToolbarWindowComponent,\n DevToolbarToolButtonComponent,\n DevToolbarIconComponent,\n ],\n template: `\n <div #trigger=\"cdkOverlayOrigin\" class=\"ndt-toolbar-tool\" cdkOverlayOrigin>\n <div\n class=\"ndt-toolbar-tool__icon\"\n (click)=\"onOpen()\"\n (keydown.enter)=\"onOpen()\"\n (keydown.space)=\"onOpen()\"\n tabindex=\"0\"\n >\n <div #buttonContainer [attr.data-tooltip]=\"title()\">\n @if (icon()) {\n <ndt-tool-button [title]=\"title()\" [toolId]=\"options().id\">\n <ndt-icon [name]=\"icon()\" />\n </ndt-tool-button>\n } @else {\n <ng-content select=\"ndt-tool-button\"></ng-content>\n }\n </div>\n </div>\n\n @if (isActive()) {\n <ng-template\n #contentTemplate\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isActive()\"\n [cdkConnectedOverlayPositions]=\"positions()\"\n [cdkConnectedOverlayWidth]=\"width()\"\n [cdkConnectedOverlayHeight]=\"height()\"\n [cdkConnectedOverlayPanelClass]=\"['ndt-overlay-panel', 'ndt-tool-overlay']\"\n cdkConnectedOverlay\n >\n <ndt-window [@slideAnimation] [config]=\"options()\" (closed)=\"onClose()\">\n <ng-content />\n </ndt-window>\n </ng-template>\n }\n </div>\n `,\n styleUrl: './toolbar-tool.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('slideAnimation', [\n transition(':enter', [\n style({\n transform: 'translateY(20px)',\n opacity: 0,\n }),\n animate(\n '400ms cubic-bezier(0.4, 0, 0.2, 1)',\n style({\n transform: 'translateY(0)',\n opacity: 1,\n })\n ),\n ]),\n transition(':leave', [\n style({\n transform: 'translateY(0)',\n opacity: 1,\n }),\n animate(\n '400ms cubic-bezier(0.4, 0, 0.2, 1)',\n style({\n transform: 'translateY(20px)',\n opacity: 0,\n })\n ),\n ]),\n ]),\n ],\n})\nexport class DevToolbarToolComponent {\n state = inject(DevToolbarStateService);\n buttonContainer = viewChild.required<ElementRef>('buttonContainer');\n buttonComponent = contentChild(DevToolbarToolButtonComponent);\n\n options = input.required<DevToolbarWindowOptions>();\n icon = input.required<IconName>();\n title = input.required<string>();\n isActive = computed(() => this.state.activeToolId() === this.options().id);\n height = computed(() => {\n switch (this.options().size) {\n case 'small':\n return 320;\n case 'medium':\n return 480;\n case 'tall':\n return 620;\n case 'large':\n return 620;\n default:\n return 480;\n }\n });\n\n width = computed(() => {\n switch (this.options().size) {\n case 'small':\n return 320;\n case 'medium':\n return 480;\n case 'tall':\n return 480;\n case 'large':\n return 620;\n default:\n return 400;\n }\n });\n positions = computed(() => {\n const triggerXPosition = this.getButtonContainerXPosition();\n const windowCenter = window.innerWidth / 2;\n const offsetX = windowCenter - triggerXPosition - 22;\n return [\n {\n originX: 'center' as const,\n originY: 'center' as const,\n overlayX: 'center' as const,\n overlayY: 'center' as const,\n offsetY: -(Math.ceil(this.height() / 2) + 36),\n offsetX,\n },\n ];\n });\n\n onOpen(): void {\n this.state.setActiveTool(this.options().id);\n }\n\n onClose(): void {\n this.state.setActiveTool(null);\n }\n\n getButtonContainerXPosition(): number {\n const buttonContainerRect =\n this.buttonContainer()?.nativeElement?.getBoundingClientRect();\n return buttonContainerRect?.left ?? 0;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n model,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n selector: 'ndt-input',\n standalone: true,\n imports: [FormsModule],\n template: `\n <input\n [attr.aria-label]=\"ariaLabel()\"\n [type]=\"type()\"\n [class]=\"inputClass()\"\n [ngModel]=\"value()\"\n [placeholder]=\"placeholder()\"\n (ngModelChange)=\"value.set($event)\"\n />\n `,\n styleUrls: ['./input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarInputComponent {\n value = model.required<string>();\n\n type = input<string>('text');\n placeholder = input<string>('');\n ariaLabel = input<string>('');\n inputClass = input<string>('input');\n}\n","import { CdkMenuModule } from '@angular/cdk/menu';\nimport { ConnectedPosition, OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\n\nexport interface SelectOption {\n value: string;\n label: string;\n}\n\n@Component({\n selector: 'ndt-select',\n standalone: true,\n imports: [CommonModule, FormsModule, OverlayModule, CdkMenuModule],\n template: `\n <div\n class=\"ndt-select\"\n [class.small]=\"size() === 'small'\"\n [class.open]=\"isOpen()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"selectMenuId\"\n [attr.data-theme]=\"theme()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n (click)=\"toggle()\"\n (keydown.enter)=\"toggle()\"\n (keydown.space)=\"toggle()\"\n tabindex=\"0\"\n role=\"combobox\"\n >\n <span class=\"select__value\">{{ selectedLabel() }}</span>\n <span class=\"select__arrow\" aria-hidden=\"true\"></span>\n </div>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayPanelClass]=\"['ndt-overlay-panel', 'ndt-select-overlay']\"\n (overlayOutsideClick)=\"close()\"\n >\n <div\n [id]=\"selectMenuId\"\n class=\"ndt-select-menu\"\n cdkMenu\n role=\"listbox\"\n [attr.data-theme]=\"theme()\"\n >\n @for (option of options(); track option.value) {\n <button\n class=\"select-menu-item\"\n [class.selected]=\"option.value === value()\"\n [attr.aria-selected]=\"option.value === value()\"\n cdkMenuItem\n type=\"button\"\n (click)=\"selectOption(option)\"\n >\n {{ option.label }}\n </button>\n }\n </div>\n </ng-template>\n `,\n styleUrls: ['./select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarSelectComponent {\n readonly devToolbarStateService = inject(DevToolbarStateService);\n\n value = model<string>();\n options = input.required<SelectOption[]>();\n ariaLabel = input<string>('');\n label = input<string>('');\n size = input<'small' | 'medium'>('medium');\n readonly theme = computed(() => this.devToolbarStateService.theme());\n\n protected readonly selectMenuId = `select-menu-${Math.random()\n .toString(36)\n .slice(2, 11)}`;\n isOpen = signal(false);\n\n selectedLabel = computed(() => {\n const selected = this.options()?.find((opt) => opt.value === this.value());\n return selected?.label ?? '';\n });\n\n positions: ConnectedPosition[] = [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 4,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -4,\n },\n ];\n\n toggle() {\n this.isOpen.update((v) => !v);\n }\n\n close() {\n this.isOpen.set(false);\n }\n\n selectOption(option: SelectOption) {\n this.value.set(option.value);\n this.close();\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class DevToolsStorageService {\n private readonly PREFIX = 'AngularDevTools.';\n private readonly TOOLS_KEY = `${this.PREFIX}keys`;\n private readonly SETTINGS_KEY = `${this.PREFIX}settings`;\n\n public set<T>(key: string, value: T): void {\n const toolKey = this.getToolKey(key);\n this.addToolKey(toolKey);\n localStorage.setItem(toolKey, JSON.stringify(value));\n }\n\n public get<T>(key: string): T | null {\n const toolKey = this.getToolKey(key);\n const item = localStorage.getItem(toolKey);\n return item ? JSON.parse(item) : null;\n }\n\n public remove(key: string): void {\n const toolKey = this.getToolKey(key);\n localStorage.removeItem(toolKey);\n this.removeToolKey(toolKey);\n }\n\n public getAllSettings(): Record<string, unknown> {\n const settings: Record<string, unknown> = {};\n\n const keys = this.getToolKeys();\n keys.forEach((key) => {\n const value = this.get(key);\n if (value !== null) {\n settings[key] = value;\n }\n });\n\n return settings;\n }\n\n public setAllSettings(settings: Record<string, unknown>): void {\n Object.entries(settings).forEach(([key, value]) => {\n this.set(key, value);\n });\n }\n\n public clearAllSettings(): void {\n const keys = this.getToolKeys();\n keys.forEach((key) => {\n this.remove(key);\n });\n }\n\n public getToolKeys(): string[] {\n return JSON.parse(localStorage.getItem(this.TOOLS_KEY) ?? '[]');\n }\n\n private addToolKey(key: string) {\n const currentKeys = this.getToolKeys();\n if (currentKeys.includes(key)) {\n return;\n }\n currentKeys.push(key);\n localStorage.setItem(this.TOOLS_KEY, JSON.stringify(currentKeys));\n }\n\n private removeToolKey(key: string): void {\n const currentKeys = this.getToolKeys();\n const index = currentKeys.indexOf(key);\n if (index !== -1) {\n currentKeys.splice(index, 1);\n }\n localStorage.setItem(this.TOOLS_KEY, JSON.stringify(currentKeys));\n }\n\n private getToolKey(key: string): string {\n return key.includes(this.PREFIX) ? key : this.PREFIX + key;\n }\n\n}\n","import { Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, combineLatest, map } from 'rxjs';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport { DevToolbarAppFeature, ForcedAppFeaturesState } from './app-features.models';\n\n/**\n * Internal service for managing app features state and forced overrides.\n *\n * This service handles:\n * - Feature configuration storage\n * - Forced feature state management\n * - localStorage persistence\n * - State validation and cleanup\n *\n * @internal This service is for internal toolbar use only. Consumers should use DevToolbarAppFeaturesService.\n */\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarInternalAppFeaturesService {\n private readonly STORAGE_KEY = 'app-features';\n private storageService = inject(DevToolsStorageService);\n\n private appFeaturesSubject = new BehaviorSubject<DevToolbarAppFeature[]>([]);\n private forcedFeaturesSubject = new BehaviorSubject<ForcedAppFeaturesState>({\n enabled: [],\n disabled: [],\n });\n\n private readonly forcedFeatures$ = this.forcedFeaturesSubject.asObservable();\n\n /**\n * Observable stream of all features with merged forced state\n */\n public features$: Observable<DevToolbarAppFeature[]> = combineLatest([\n this.appFeaturesSubject.asObservable(),\n this.forcedFeatures$,\n ]).pipe(\n map(([appFeatures, forcedState]) => this.mergeForcedState(appFeatures, forcedState))\n );\n\n /**\n * Signal containing current features with merged forced state\n */\n public features = toSignal(this.features$, { initialValue: [] });\n\n constructor() {\n this.loadForcedFeatures();\n }\n\n /**\n * Set available app features for the application.\n * Validates features, trims whitespace, and triggers validation of forced state.\n *\n * @param features - Array of app features to configure\n * @throws Error if duplicate feature IDs or empty IDs are detected\n */\n setAppFeatures(features: DevToolbarAppFeature[]): void {\n // Validate for empty IDs\n const emptyIdFeature = features.find((f) => !f.id || f.id.trim() === '');\n if (emptyIdFeature) {\n throw new Error('Feature ID cannot be empty');\n }\n\n // Validate for duplicate IDs\n const ids = features.map((f) => f.id);\n const duplicateIds = ids.filter((id, index) => ids.indexOf(id) !== index);\n if (duplicateIds.length > 0) {\n throw new Error(`Duplicate feature IDs detected: ${duplicateIds.join(', ')}`);\n }\n\n // Trim whitespace from names and warn about empty names\n const processedFeatures = features.map((feature) => {\n const trimmedName = feature.name.trim();\n if (!trimmedName) {\n console.warn(`Feature '${feature.id}' has empty name`);\n }\n return {\n ...feature,\n name: trimmedName || feature.name,\n };\n });\n\n this.appFeaturesSubject.next(processedFeatures);\n this.validateAndCleanForcedState();\n }\n\n /**\n * Get observable stream of app features (natural state, no forced state merged)\n */\n getAppFeatures(): Observable<DevToolbarAppFeature[]> {\n return this.appFeaturesSubject.asObservable();\n }\n\n /**\n * Get observable stream of features that have forced overrides\n */\n getForcedFeatures(): Observable<DevToolbarAppFeature[]> {\n return this.features$.pipe(\n map((features) => features.filter((feature) => feature.isForced))\n );\n }\n\n /**\n * Force a feature to enabled or disabled state.\n * Persists the forced state to localStorage.\n *\n * @param featureId - ID of the feature to force\n * @param isEnabled - Whether to force feature to enabled (true) or disabled (false)\n */\n setFeature(featureId: string, isEnabled: boolean): void {\n const { enabled, disabled } = this.forcedFeaturesSubject.value;\n\n // Remove feature from both arrays\n const newEnabled = enabled.filter((id) => id !== featureId);\n const newDisabled = disabled.filter((id) => id !== featureId);\n\n // Add to appropriate array\n if (isEnabled) {\n newEnabled.push(featureId);\n } else {\n newDisabled.push(featureId);\n }\n\n const newState = { enabled: newEnabled, disabled: newDisabled };\n this.forcedFeaturesSubject.next(newState);\n this.saveForcedFeatures(newState);\n }\n\n /**\n * Remove forced override for a feature, returning it to natural state.\n * Persists the change to localStorage.\n *\n * @param featureId - ID of the feature to unforce\n */\n removeFeatureOverride(featureId: string): void {\n const { enabled, disabled } = this.forcedFeaturesSubject.value;\n\n const newState = {\n enabled: enabled.filter((id) => id !== featureId),\n disabled: disabled.filter((id) => id !== featureId),\n };\n\n this.forcedFeaturesSubject.next(newState);\n this.saveForcedFeatures(newState);\n }\n\n /**\n * Apply a preset forced state (for preset integration).\n * Validates and cleans invalid feature IDs before applying.\n *\n * @param state - Forced features state from preset\n */\n applyForcedState(state: ForcedAppFeaturesState): void {\n const configuredFeatureIds = this.appFeaturesSubject.value.map((f) => f.id);\n\n // Validate and filter to only valid IDs\n const validEnabled = state.enabled.filter((id) => configuredFeatureIds.includes(id));\n const validDisabled = state.disabled.filter((id) => configuredFeatureIds.includes(id));\n\n const invalidIds = [\n ...state.enabled.filter((id) => !configuredFeatureIds.includes(id)),\n ...state.disabled.filter((id) => !configuredFeatureIds.includes(id)),\n ];\n\n if (invalidIds.length > 0) {\n console.warn(`Preset contains invalid feature IDs (ignored): ${invalidIds.join(', ')}`);\n }\n\n const cleanedState = { enabled: validEnabled, disabled: validDisabled };\n this.forcedFeaturesSubject.next(cleanedState);\n this.saveForcedFeatures(cleanedState);\n }\n\n /**\n * Get current forced state as a snapshot (defensive copy).\n * Useful for preset exports and debugging.\n *\n * @returns Current forced features state\n */\n getCurrentForcedState(): ForcedAppFeaturesState {\n const state = this.forcedFeaturesSubject.value;\n return {\n enabled: [...state.enabled],\n disabled: [...state.disabled],\n };\n }\n\n /**\n * Merge natural app features with forced state.\n *\n * @param appFeatures - Natural feature configuration\n * @param forcedState - Forced overrides from localStorage/toolbar\n * @returns Features with merged forced state\n */\n private mergeForcedState(\n appFeatures: DevToolbarAppFeature[],\n forcedState: ForcedAppFeaturesState\n ): DevToolbarAppFeature[] {\n return appFeatures.map((feature) => {\n const isInEnabled = forcedState.enabled.includes(feature.id);\n const isInDisabled = forcedState.disabled.includes(feature.id);\n const isForced = isInEnabled || isInDisabled;\n\n return {\n ...feature,\n isEnabled: isInEnabled ? true : isInDisabled ? false : feature.isEnabled,\n isForced,\n originalValue: isForced ? feature.isEnabled : undefined,\n };\n });\n }\n\n /**\n * Load forced features state from localStorage on initialization.\n * Handles missing or corrupted data gracefully.\n */\n private loadForcedFeatures(): void {\n try {\n const savedState = this.storageService.get<ForcedAppFeaturesState>(this.STORAGE_KEY);\n\n if (savedState) {\n this.forcedFeaturesSubject.next(savedState);\n }\n } catch (error) {\n console.error('Failed to load forced app features from localStorage:', error);\n // Use default empty state on error\n }\n }\n\n /**\n * Persist forced features state to localStorage.\n * Handles quota exceeded errors gracefully.\n *\n * @param state - Forced state to persist\n */\n private saveForcedFeatures(state: ForcedAppFeaturesState): void {\n try {\n this.storageService.set(this.STORAGE_KEY, state);\n } catch (error) {\n console.error('Failed to persist app features to localStorage:', error);\n // Continue execution - state is still valid in memory for current session\n }\n }\n\n /**\n * Validate forced feature IDs against configured features and clean up invalid ones.\n * Called after setAppFeatures() to ensure forced state references valid features.\n */\n private validateAndCleanForcedState(): void {\n const configuredFeatureIds = this.appFeaturesSubject.value.map((f) => f.id);\n const currentForcedState = this.forcedFeaturesSubject.value;\n\n const validEnabled = currentForcedState.enabled.filter((id) =>\n configuredFeatureIds.includes(id)\n );\n const validDisabled = currentForcedState.disabled.filter((id) =>\n configuredFeatureIds.includes(id)\n );\n\n const removedIds = [\n ...currentForcedState.enabled.filter((id) => !configuredFeatureIds.includes(id)),\n ...currentForcedState.disabled.filter((id) => !configuredFeatureIds.includes(id)),\n ];\n\n if (removedIds.length > 0) {\n console.warn(`Removed invalid feature IDs from forced state: ${removedIds.join(', ')}`);\n\n const cleanedState = { enabled: validEnabled, disabled: validDisabled };\n this.forcedFeaturesSubject.next(cleanedState);\n this.saveForcedFeatures(cleanedState);\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarIconComponent } from '../../components/icons/icon.component';\nimport { DevToolbarInputComponent } from '../../components/input/input.component';\nimport { DevToolbarListComponent } from '../../components/list/list.component';\nimport { DevToolbarListItemComponent } from '../../components/list-item/list-item.component';\nimport { DevToolbarSelectComponent } from '../../components/select/select.component';\nimport { DevToolbarToolComponent } from '../../components/toolbar-tool/toolbar-tool.component';\nimport { DevToolbarWindowOptions } from '../../components/toolbar-tool/toolbar-tool.models';\nimport { DevToolbarInternalAppFeaturesService } from './app-features-internal.service';\nimport { AppFeatureFilter, DevToolbarAppFeature } from './app-features.models';\n\n/**\n * Component for managing app features in the dev toolbar.\n *\n * Provides UI for:\n * - Searching features by name and description\n * - Filtering features by state (all/forced/enabled/disabled)\n * - Forcing features to enabled/disabled state via 3-state dropdown\n * - Viewing feature descriptions and current state\n *\n * @example\n * ```html\n * <ndt-app-features-tool />\n * ```\n */\n@Component({\n selector: 'ndt-app-features-tool',\n standalone: true,\n imports: [\n FormsModule,\n DevToolbarToolComponent,\n DevToolbarInputComponent,\n DevToolbarSelectComponent,\n DevToolbarIconComponent,\n DevToolbarListComponent,\n DevToolbarListItemComponent,\n ],\n template: `\n <ndt-toolbar-tool\n [options]=\"options\"\n title=\"App Features\"\n icon=\"puzzle\"\n >\n <div class=\"container\">\n <div class=\"header\">\n <ndt-input\n [value]=\"searchQuery()\"\n (valueChange)=\"onSearchChange($event)\"\n placeholder=\"Search features...\"\n />\n <div class=\"filter-wrapper\">\n <ndt-icon name=\"filter\" class=\"filter-icon\" />\n <ndt-select\n [value]=\"activeFilter()\"\n [options]=\"filterOptions\"\n [size]=\"'medium'\"\n (valueChange)=\"onFilterChange($event)\"\n />\n </div>\n </div>\n\n <ndt-list\n [hasItems]=\"!hasNoFeatures()\"\n [hasResults]=\"!hasNoFilteredFeatures()\"\n emptyMessage=\"No app features found\"\n [emptyHint]=\"'Call setAvailableOptions() to configure features'\"\n noResultsMessage=\"No features match your filter\"\n >\n @for (feature of filteredFeatures(); track feature.id) {\n <ndt-list-item\n [title]=\"feature.name\"\n [description]=\"feature.description\"\n [isForced]=\"feature.isForced\"\n [currentValue]=\"feature.isEnabled\"\n [originalValue]=\"feature.originalValue\"\n >\n <ndt-select\n [value]=\"getFeatureValue(feature)\"\n [options]=\"featureValueOptions\"\n [ariaLabel]=\"'Set value for ' + feature.name\"\n (valueChange)=\"onFeatureChange(feature.id, $event ?? '')\"\n size=\"small\"\n />\n </ndt-list-item>\n }\n </ndt-list>\n </div>\n </ndt-toolbar-tool>\n `,\n styles: [\n `\n .container {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .header {\n flex-shrink: 0;\n display: flex;\n gap: var(--ndt-spacing-sm);\n margin-bottom: var(--ndt-spacing-sm);\n\n ndt-input {\n flex: 1;\n }\n\n .filter-wrapper {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n gap: var(--ndt-spacing-md);\n\n .filter-icon {\n width: 18px;\n height: 18px;\n flex-shrink: 0;\n opacity: 0.6;\n }\n\n ndt-select {\n flex: 0 0 auto;\n min-width: 180px;\n }\n }\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarAppFeaturesToolComponent {\n // Injects\n private readonly appFeaturesService = inject(DevToolbarInternalAppFeaturesService);\n\n // Signals\n protected readonly activeFilter = signal<AppFeatureFilter>('all');\n protected readonly searchQuery = signal<string>('');\n\n protected readonly features = this.appFeaturesService.features;\n protected readonly hasNoFeatures = computed(() => this.features().length === 0);\n protected readonly filteredFeatures = computed(() => {\n const filtered = this.features().filter((feature) => {\n const searchTerm = this.searchQuery().toLowerCase();\n const featureName = feature.name.toLowerCase();\n const featureDescription = feature.description?.toLowerCase() ?? '';\n\n const matchesSearch =\n !this.searchQuery() ||\n featureName.includes(searchTerm) ||\n featureDescription.includes(searchTerm);\n\n const matchesFilter =\n this.activeFilter() === 'all' ||\n (this.activeFilter() === 'forced' && feature.isForced) ||\n (this.activeFilter() === 'enabled' && feature.isEnabled) ||\n (this.activeFilter() === 'disabled' && !feature.isEnabled);\n\n return matchesSearch && matchesFilter;\n });\n\n // Sort alphabetically by name\n return filtered.sort((a, b) => a.name.localeCompare(b.name));\n });\n protected readonly hasNoFilteredFeatures = computed(\n () => this.filteredFeatures().length === 0\n );\n\n // Other properties\n protected readonly options = {\n title: 'App Features',\n description: 'Override product features to test different tiers and configurations',\n isClosable: true,\n size: 'tall',\n id: 'ndt-app-features',\n } as DevToolbarWindowOptions;\n\n protected readonly filterOptions = [\n { value: 'all', label: 'All Features' },\n { value: 'forced', label: 'Forced' },\n { value: 'enabled', label: 'Enabled' },\n { value: 'disabled', label: 'Disabled' },\n ];\n\n protected readonly featureValueOptions = [\n { value: 'not-forced', label: 'Not Forced' },\n { value: 'off', label: 'Disabled' },\n { value: 'on', label: 'Enabled' },\n ];\n\n // Public methods\n /**\n * Handle filter dropdown change.\n * Updates the active filter to show all/forced/enabled/disabled features.\n */\n onFilterChange(value: string | undefined): void {\n const filter = this.filterOptions.find((f) => f.value === value);\n if (filter) {\n this.activeFilter.set(filter.value as AppFeatureFilter);\n }\n }\n\n /**\n * Handle feature value change from 3-state dropdown.\n * - 'not-forced': Remove forced override\n * - 'on': Force feature to enabled\n * - 'off': Force feature to disabled\n */\n onFeatureChange(featureId: string, value: string): void {\n switch (value) {\n case 'not-forced':\n this.appFeaturesService.removeFeatureOverride(featureId);\n break;\n case 'on':\n this.appFeaturesService.setFeature(featureId, true);\n break;\n case 'off':\n this.appFeaturesService.setFeature(featureId, false);\n break;\n }\n }\n\n /**\n * Handle search input change.\n * Updates the search query to filter features by name/description.\n */\n onSearchChange(query: string): void {\n this.searchQuery.set(query);\n }\n\n // Protected methods\n /**\n * Get the dropdown value for a feature's current state.\n * - Returns empty string if not forced (natural state)\n * - Returns 'on' if forced to enabled\n * - Returns 'off' if forced to disabled\n */\n protected getFeatureValue(feature: DevToolbarAppFeature): string {\n if (!feature.isForced) return '';\n return feature.isEnabled ? 'on' : 'off';\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, combineLatest, map } from 'rxjs';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport { DevToolbarFlag } from './feature-flags.models';\n\ninterface ForcedFlagsState {\n enabled: string[];\n disabled: string[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarInternalFeatureFlagService {\n private readonly STORAGE_KEY = 'feature-flags';\n private storageService = inject(DevToolsStorageService);\n\n private appFlags$ = new BehaviorSubject<DevToolbarFlag[]>([]);\n private forcedFlagsSubject = new BehaviorSubject<ForcedFlagsState>({\n enabled: [],\n disabled: [],\n });\n\n private readonly forcedFlags$ = this.forcedFlagsSubject.asObservable();\n\n public flags$: Observable<DevToolbarFlag[]> = combineLatest([\n this.appFlags$,\n this.forcedFlags$,\n ]).pipe(\n map(([appFlags, { enabled, disabled }]) => {\n return appFlags.map((flag) => {\n const isForced = enabled.includes(flag.id) || disabled.includes(flag.id);\n return {\n ...flag,\n isForced,\n isEnabled: enabled.includes(flag.id)\n ? true\n : disabled.includes(flag.id)\n ? false\n : flag.isEnabled,\n originalValue: isForced ? flag.isEnabled : undefined,\n };\n });\n })\n );\n\n public flags = toSignal(this.flags$, { initialValue: [] });\n\n constructor() {\n this.loadForcedFlags();\n }\n\n setAppFlags(flags: DevToolbarFlag[]): void {\n this.appFlags$.next(flags);\n }\n\n getAppFlags(): Observable<DevToolbarFlag[]> {\n return this.appFlags$.asObservable();\n }\n\n getForcedFlags(): Observable<DevToolbarFlag[]> {\n return this.flags$.pipe(\n map((flags) => flags.filter((flag) => flag.isForced))\n );\n }\n\n setFlag(flagId: string, isEnabled: boolean): void {\n const { enabled, disabled } = this.forcedFlagsSubject.value;\n\n const newEnabled = enabled.filter((id) => id !== flagId);\n const newDisabled = disabled.filter((id) => id !== flagId);\n\n if (isEnabled) {\n newEnabled.push(flagId);\n } else {\n newDisabled.push(flagId);\n }\n\n const newState = { enabled: newEnabled, disabled: newDisabled };\n this.forcedFlagsSubject.next(newState);\n this.storageService.set(this.STORAGE_KEY, newState);\n }\n\n removeFlagOverride(flagId: string): void {\n const { enabled, disabled } = this.forcedFlagsSubject.value;\n\n const newState = {\n enabled: enabled.filter((id) => id !== flagId),\n disabled: disabled.filter((id) => id !== flagId),\n };\n\n this.forcedFlagsSubject.next(newState);\n this.storageService.set(this.STORAGE_KEY, newState);\n }\n\n private loadForcedFlags(): void {\n const savedFlags = this.storageService.get<ForcedFlagsState>(\n this.STORAGE_KEY\n );\n\n if (savedFlags) {\n this.forcedFlagsSubject.next(savedFlags);\n }\n }\n\n /**\n * Apply feature flags from a preset (used by Presets Tool)\n * This method directly sets the forced flags state without user interaction\n */\n applyPresetFlags(presetState: ForcedFlagsState): void {\n this.forcedFlagsSubject.next(presetState);\n this.storageService.set(this.STORAGE_KEY, presetState);\n }\n\n /**\n * Get current forced state for saving to preset\n * Returns the raw state of enabled and disabled flag IDs\n */\n getCurrentForcedState(): ForcedFlagsState {\n return this.forcedFlagsSubject.value;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarIconComponent } from '../../components/icons/icon.component';\nimport { DevToolbarInputComponent } from '../../components/input/input.component';\nimport { DevToolbarListComponent } from '../../components/list/list.component';\nimport { DevToolbarListItemComponent } from '../../components/list-item/list-item.component';\nimport { DevToolbarSelectComponent } from '../../components/select/select.component';\nimport { DevToolbarToolComponent } from '../../components/toolbar-tool/toolbar-tool.component';\nimport { DevToolbarWindowOptions } from '../../components/toolbar-tool/toolbar-tool.models';\nimport { DevToolbarInternalFeatureFlagService } from './feature-flags-internal.service';\nimport { DevToolbarFlag, FeatureFlagFilter } from './feature-flags.models';\n@Component({\n selector: 'ndt-feature-flags-tool',\n standalone: true,\n imports: [\n FormsModule,\n DevToolbarToolComponent,\n DevToolbarInputComponent,\n DevToolbarSelectComponent,\n DevToolbarIconComponent,\n DevToolbarListComponent,\n DevToolbarListItemComponent,\n ],\n template: `\n <ndt-toolbar-tool\n [options]=\"options\"\n title=\"Feature Flags\"\n icon=\"toggle-left\"\n >\n <div class=\"container\">\n <div class=\"header\">\n <ndt-input\n [value]=\"searchQuery()\"\n (valueChange)=\"onSearchChange($event)\"\n placeholder=\"Search...\"\n />\n <div class=\"filter-wrapper\">\n <ndt-icon name=\"filter\" class=\"filter-icon\" />\n <ndt-select\n [value]=\"activeFilter()\"\n [options]=\"filterOptions\"\n [size]=\"'medium'\"\n (valueChange)=\"onFilterChange($event)\"\n />\n </div>\n </div>\n\n <ndt-list\n [hasItems]=\"!hasNoFlags()\"\n [hasResults]=\"!hasNoFilteredFlags()\"\n emptyMessage=\"No flags found\"\n noResultsMessage=\"No flags found matching your filter\"\n >\n @for (flag of filteredFlags(); track flag.id) {\n <ndt-list-item\n [title]=\"flag.name\"\n [description]=\"flag.description\"\n [isForced]=\"flag.isForced\"\n [currentValue]=\"flag.isEnabled\"\n [originalValue]=\"flag.originalValue\"\n >\n <ndt-select\n [value]=\"getFlagValue(flag)\"\n [options]=\"flagValueOptions\"\n [ariaLabel]=\"'Set value for ' + flag.name\"\n (valueChange)=\"onFlagChange(flag.id, $event ?? '')\"\n size=\"small\"\n />\n </ndt-list-item>\n }\n </ndt-list>\n </div>\n </ndt-toolbar-tool>\n `,\n styles: [\n `\n .container {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .header {\n flex-shrink: 0;\n display: flex;\n gap: var(--ndt-spacing-sm);\n margin-bottom: var(--ndt-spacing-sm);\n\n ndt-input {\n flex: 1;\n }\n\n .filter-wrapper {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n gap: var(--ndt-spacing-md);\n\n .filter-icon {\n width: 18px;\n height: 18px;\n flex-shrink: 0;\n opacity: 0.6;\n }\n\n ndt-select {\n flex: 0 0 auto;\n min-width: 180px;\n }\n }\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarFeatureFlagsToolComponent {\n // Injects\n private readonly featureFlags = inject(DevToolbarInternalFeatureFlagService);\n\n // Signals\n protected readonly activeFilter = signal<FeatureFlagFilter>('all');\n protected readonly searchQuery = signal<string>('');\n\n protected readonly flags = this.featureFlags.flags;\n protected readonly hasNoFlags = computed(() => this.flags().length === 0);\n protected readonly filteredFlags = computed(() => {\n const filtered = this.flags().filter((flag) => {\n const searchTerm = this.searchQuery().toLowerCase();\n const flagName = flag.name.toLowerCase();\n const flagDescription = flag.description?.toLowerCase() ?? '';\n\n const matchesSearch =\n !this.searchQuery() ||\n flagName.toLowerCase().includes(searchTerm.toLowerCase()) ||\n flagDescription.toLowerCase().includes(searchTerm.toLowerCase());\n\n const matchesFilter =\n this.activeFilter() === 'all' ||\n (this.activeFilter() === 'forced' && flag.isForced) ||\n (this.activeFilter() === 'enabled' && flag.isEnabled) ||\n (this.activeFilter() === 'disabled' && !flag.isEnabled);\n\n return matchesSearch && matchesFilter;\n });\n\n // Sort alphabetically by name\n return filtered.sort((a, b) => a.name.localeCompare(b.name));\n });\n protected readonly hasNoFilteredFlags = computed(\n () => this.filteredFlags().length === 0\n );\n\n // Other properties\n protected readonly options = {\n title: 'Feature Flags',\n description: 'Manage the feature flags for your current session',\n isClosable: true,\n size: 'tall',\n id: 'ndt-feature-flags',\n isBeta: true,\n } as DevToolbarWindowOptions;\n\n protected readonly filterOptions = [\n { value: 'all', label: 'All Flags' },\n { value: 'forced', label: 'Forced' },\n { value: 'enabled', label: 'Enabled' },\n { value: 'disabled', label: 'Disabled' },\n ];\n\n protected readonly flagValueOptions = [\n { value: 'not-forced', label: 'Not Forced' },\n { value: 'off', label: 'Forced Off' },\n { value: 'on', label: 'Forced On' },\n ];\n\n // Public methods\n onFilterChange(value: string | undefined): void {\n const filter = this.filterOptions.find((f) => f.value === value);\n if (filter) {\n this.activeFilter.set(filter.value as FeatureFlagFilter);\n }\n }\n\n onFlagChange(flagId: string, value: string): void {\n switch (value) {\n case 'not-forced':\n this.featureFlags.removeFlagOverride(flagId);\n break;\n case 'on':\n this.featureFlags.setFlag(flagId, true);\n break;\n case 'off':\n this.featureFlags.setFlag(flagId, false);\n break;\n }\n }\n\n onSearchChange(query: string): void {\n this.searchQuery.set(query);\n }\n\n // Protected methods\n protected getFlagValue(flag: DevToolbarFlag): string {\n if (!flag.isForced) return '';\n return flag.isEnabled ? 'on' : 'off';\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { DevToolbarIconComponent } from '../icons/icon.component';\nimport { IconName } from '../icons/icon.models';\n\n@Component({\n selector: 'ndt-button',\n standalone: true,\n imports: [DevToolbarIconComponent],\n template: `\n <button\n class=\"button\"\n [attr.aria-label]=\"ariaLabel()\"\n [type]=\"type()\"\n [class.button--active]=\"isActive()\"\n [class.button--icon]=\"variant() === 'icon'\"\n >\n @if (icon()) {\n <ndt-icon [name]=\"icon() || 'star'\" />\n }\n @if (label()) {\n <span class=\"button__label\">{{ label() }}</span>\n }\n <ng-content />\n </button>\n `,\n styleUrls: ['./button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarButtonComponent {\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n readonly variant = input<'default' | 'icon'>('default');\n readonly icon = input<IconName>();\n readonly label = input<string>();\n readonly ariaLabel = input<string>();\n readonly isActive = input<boolean>(false);\n}\n","import { ChangeDetectionStrategy, Component, signal } from '@angular/core';\n\n@Component({\n selector: 'ndt-card',\n standalone: true,\n template: `\n <div\n class=\"card\"\n role=\"button\"\n tabindex=\"0\"\n (click)=\"onClick()\"\n (keydown.enter)=\"onClick()\"\n (keydown.space)=\"onClick()\"\n [class.card--hover]=\"isHovered()\"\n (mouseenter)=\"isHovered.set(true)\"\n (mouseleave)=\"isHovered.set(false)\"\n >\n <ng-content></ng-content>\n </div>\n `,\n styleUrls: ['./card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarCardComponent {\n readonly click = signal<void>(undefined);\n protected readonly isHovered = signal(false);\n\n onClick(): void {\n this.click.set();\n }\n}\n","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { DevToolbarCardComponent } from '../card/card.component';\nimport { DevToolbarIconComponent } from '../icons/icon.component';\nimport { IconName } from '../icons/icon.models';\n\n@Component({\n selector: 'ndt-clickable-card',\n standalone: true,\n imports: [DevToolbarCardComponent, DevToolbarIconComponent],\n template: `\n <ndt-card (clicked)=\"onClick()\">\n <div class=\"clickable-card\">\n <div class=\"clickable-card__icon\">\n <ndt-icon [name]=\"icon()\" />\n </div>\n <div class=\"clickable-card__content\">\n <div class=\"clickable-card__title\">{{ title() }}</div>\n <div class=\"clickable-card__subtitle\">{{ subtitle() }}</div>\n </div>\n </div>\n </ndt-card>\n `,\n styleUrls: ['./clickable-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarClickableCardComponent {\n readonly icon = input.required<IconName>();\n readonly title = input.required<string>();\n readonly subtitle = input.required<string>();\n readonly click = signal<void>(undefined);\n\n onClick(): void {\n this.click.set();\n }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { DevToolbarIconComponent } from '../icons/icon.component';\nimport { IconName } from '../icons/icon.models';\n\n@Component({\n selector: 'ndt-link-button',\n standalone: true,\n imports: [DevToolbarIconComponent],\n template: `\n <a\n [href]=\"url()\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"link-button\"\n >\n <div class=\"link-button__icon\">\n <ndt-icon [name]=\"icon()\" />\n </div>\n <span class=\"link-button__text\">\n <ng-content></ng-content>\n </span>\n </a>\n `,\n styleUrls: ['./link-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarLinkButtonComponent {\n readonly url = input.required<string>();\n readonly icon = input.required<IconName>();\n}\n","import { Injectable, inject } from '@angular/core';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport { Settings } from './settings.models';\n\n@Injectable({ providedIn: 'root' })\nexport class SettingsService {\n private readonly STORAGE_KEY = 'settings';\n private readonly storageService = inject(DevToolsStorageService);\n\n public getSettings(): Settings {\n return (\n this.storageService.get<Settings>(this.STORAGE_KEY) || {\n isDarkMode: false,\n }\n );\n }\n\n public setSettings(settings: Settings): void {\n this.storageService.set(this.STORAGE_KEY, settings);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarButtonComponent } from '../../components/button/button.component';\nimport { DevToolbarClickableCardComponent } from '../../components/clickable-card/clickable-card.component';\nimport { DevToolbarLinkButtonComponent } from '../../components/link-button/link-button.component';\nimport { DevToolbarToolComponent } from '../../components/toolbar-tool/toolbar-tool.component';\nimport { DevToolbarWindowOptions } from '../../components/toolbar-tool/toolbar-tool.models';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport { SettingsService } from './settings.service';\n\ntype ThemeType = 'light' | 'dark';\n\n@Component({\n selector: 'ndt-home-tool',\n standalone: true,\n imports: [\n DevToolbarToolComponent,\n FormsModule,\n DevToolbarButtonComponent,\n DevToolbarClickableCardComponent,\n DevToolbarLinkButtonComponent,\n ],\n template: `\n <ndt-toolbar-tool [options]=\"options\" title=\"Home\" icon=\"angular\">\n <section class=\"settings\">\n <div class=\"settings-container\">\n <div class=\"instruction\">\n <div class=\"instruction__label\">\n <span class=\"instruction__label-text\">Reset Settings</span>\n <span class=\"instruction__label-description\">\n Reset all settings to their default values\n </span>\n </div>\n <div class=\"instruction__control\">\n <div class=\"instruction__control-button\">\n <ndt-button\n variant=\"icon\"\n icon=\"trash\"\n ariaLabel=\"Reset all settings\"\n (click)=\"onResetSettings()\"\n />\n </div>\n </div>\n </div>\n <div class=\"settings-actions\">\n <ndt-clickable-card\n icon=\"export\"\n title=\"Export Settings\"\n subtitle=\"Export the current settings to share with other devs or use in your tests\"\n (click)=\"onExportSettings()\"\n />\n <ndt-clickable-card\n icon=\"import\"\n title=\"Import Settings\"\n subtitle=\"Import settings to reproduce a scenario\"\n (click)=\"onImportSettings()\"\n />\n </div>\n </div>\n\n <div class=\"footer-links\">\n @for (link of links; track link.url) {\n <ndt-link-button [icon]=\"link.icon\" [url]=\"link.url\">\n {{ link.label }}\n </ndt-link-button>\n }\n </div>\n </section>\n </ndt-toolbar-tool>\n `,\n styleUrls: ['./home-tool.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarHomeToolComponent {\n protected readonly state = inject(DevToolbarStateService);\n private readonly settingsService = inject(SettingsService);\n private readonly storageService = inject(DevToolsStorageService);\n\n readonly badge = input<string | number>();\n readonly title = `Angular Dev Toolbar`;\n readonly options: DevToolbarWindowOptions = {\n title: this.title,\n isClosable: true,\n id: 'ndt-home',\n size: 'medium',\n description: '',\n isBeta: true,\n };\n\n readonly links = [\n {\n icon: 'bug',\n url: 'https://github.com/alfredoperez/ngx-dev-toolbar/issues',\n label: 'Bug report',\n },\n {\n icon: 'lightbulb',\n url: 'https://github.com/alfredoperez/ngx-dev-toolbar/discussions',\n label: 'Suggestions',\n },\n {\n icon: 'docs',\n url: 'https://alfredoperez.github.io/ngx-dev-toolbar/',\n label: 'Docs',\n },\n {\n icon: 'star',\n url: 'https://github.com/alfredoperez/ngx-dev-toolbar',\n label: 'Star on GitHub',\n },\n {\n icon: 'discord',\n url: 'https://discord.com/invite/angular',\n label: 'Community',\n },\n ] as const;\n\n onExportSettings(): void {\n const settings = this.storageService.getAllSettings();\n const blob = new Blob([JSON.stringify(settings, null, 2)], {\n type: 'application/json',\n });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n const timestamp = new Date().toISOString().split('T')[0];\n link.href = url;\n link.download = `ngx-dev-toolbar-settings-${timestamp}.json`;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n }\n\n onImportSettings(): void {\n const input = document.createElement('input');\n input.type = 'file';\n input.accept = 'application/json';\n input.onchange = (event) => {\n const file = (event.target as HTMLInputElement).files?.[0];\n if (file) {\n const reader = new FileReader();\n reader.onload = (e) => {\n try {\n const settings = JSON.parse(e.target?.result as string);\n this.storageService.setAllSettings(settings);\n window.location.reload();\n } catch (error) {\n console.error('Error importing settings:', error);\n }\n };\n reader.readAsText(file);\n }\n };\n input.click();\n }\n\n onResetSettings(): void {\n this.storageService.clearAllSettings();\n window.location.reload();\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, firstValueFrom, map } from 'rxjs';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport { Language } from './language.models';\n\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarInternalLanguageService {\n private readonly STORAGE_KEY = 'language';\n private readonly storageService = inject(DevToolsStorageService);\n\n private languages$ = new BehaviorSubject<Language[]>([]);\n private forcedLanguage$ = new BehaviorSubject<Language | null>(null);\n\n public languages = toSignal(this.languages$, { initialValue: [] });\n\n constructor() {\n this.loadForcedLanguage();\n }\n\n setAppLanguages(languages: Language[]): void {\n this.languages$.next(languages);\n }\n\n getAppLanguages(): Observable<Language[]> {\n return this.languages$.asObservable();\n }\n\n setForcedLanguage(language: Language): void {\n this.forcedLanguage$.next(language);\n this.storageService.set(this.STORAGE_KEY, language);\n }\n\n getForcedLanguage(): Observable<Language[]> {\n return this.forcedLanguage$.pipe(\n map((language) => (language ? [language] : []))\n );\n }\n\n removeForcedLanguage(): void {\n this.forcedLanguage$.next(null);\n this.storageService.remove(this.STORAGE_KEY);\n }\n\n private loadForcedLanguage(): void {\n const savedLanguage = this.storageService.get<Language>(this.STORAGE_KEY);\n if (savedLanguage) {\n this.forcedLanguage$.next(savedLanguage);\n }\n }\n\n /**\n * Apply language from a preset (used by Presets Tool)\n * Accepts a language ID and finds the corresponding Language object from available languages\n */\n async applyPresetLanguage(languageId: string | null): Promise<void> {\n if (languageId === null) {\n this.removeForcedLanguage();\n return;\n }\n\n // Get available languages and find matching one\n const languages = await firstValueFrom(this.languages$);\n const language = languages.find((lang) => lang.id === languageId);\n\n if (language) {\n this.setForcedLanguage(language);\n } else {\n console.warn(\n `Language ${languageId} not found in available languages. Skipping.`\n );\n }\n }\n\n /**\n * Get current forced language ID for saving to preset\n * Returns the language ID or null if no language is forced\n */\n getCurrentForcedLanguage(): string | null {\n return this.forcedLanguage$.value?.id ?? null;\n }\n}\n","import { Component, inject, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { firstValueFrom, map } from 'rxjs';\nimport { DevToolbarSelectComponent } from '../../components/select/select.component';\nimport { DevToolbarToolComponent } from '../../components/toolbar-tool/toolbar-tool.component';\nimport { DevToolbarWindowOptions } from '../../components/toolbar-tool/toolbar-tool.models';\nimport { DevToolbarInternalLanguageService } from './language-internal.service';\nimport { Language } from './language.models';\n\n@Component({\n selector: 'ndt-language-tool',\n standalone: true,\n imports: [DevToolbarToolComponent, DevToolbarSelectComponent],\n styleUrls: ['./language-tool.component.scss'],\n template: `\n <ndt-toolbar-tool title=\"Languages\" icon=\"translate\" [options]=\"options\">\n <div class=\"language-select\">\n <label for=\"language-select\">Language</label>\n <ndt-select\n id=\"language-select\"\n [value]=\"activeLanguage()\"\n [options]=\"languageOptions()\"\n [size]=\"'medium'\"\n (valueChange)=\"onLanguageChange($event ?? '')\"\n />\n </div>\n </ndt-toolbar-tool>\n `,\n})\nexport class DevToolbarLanguageToolComponent {\n private readonly languageService = inject(DevToolbarInternalLanguageService);\n\n protected readonly options = {\n title: 'Languages',\n description: 'Set the language for your current session',\n size: 'small',\n id: 'ndt-language',\n isBeta: true,\n isClosable: true,\n } as DevToolbarWindowOptions;\n\n activeLanguage = signal<string>('not-forced');\n\n languageOptions = toSignal(\n this.languageService.getAppLanguages().pipe(\n map((languages) => [\n { value: 'not-forced', label: 'Not Forced' },\n ...languages.map(({ id: value, name: label }) => ({\n value,\n label,\n })),\n ])\n ),\n { initialValue: [] }\n );\n\n async onLanguageChange(language: string): Promise<void> {\n if (language === 'not-forced' || !language) {\n this.languageService.removeForcedLanguage();\n return;\n }\n\n const languages = await firstValueFrom(\n this.languageService.getAppLanguages()\n );\n const selectedLanguage = languages.find(({ id }) => id === language);\n if (selectedLanguage) {\n this.languageService.setForcedLanguage(selectedLanguage as Language);\n }\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, combineLatest, map } from 'rxjs';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport {\n DevToolbarPermission,\n ForcedPermissionsState,\n} from './permissions.models';\n\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarInternalPermissionsService {\n private readonly STORAGE_KEY = 'permissions';\n private storageService = inject(DevToolsStorageService);\n\n private appPermissions$ = new BehaviorSubject<DevToolbarPermission[]>([]);\n private forcedStateSubject = new BehaviorSubject<ForcedPermissionsState>({\n granted: [],\n denied: [],\n });\n\n private readonly forcedState$ = this.forcedStateSubject.asObservable();\n\n public permissions$: Observable<DevToolbarPermission[]> = combineLatest([\n this.appPermissions$,\n this.forcedState$,\n ]).pipe(\n map(([appPermissions, { granted, denied }]) => {\n return appPermissions.map((permission) => {\n const isForced = granted.includes(permission.id) || denied.includes(permission.id);\n return {\n ...permission,\n isForced,\n isGranted: granted.includes(permission.id)\n ? true\n : denied.includes(permission.id)\n ? false\n : permission.isGranted,\n originalValue: isForced ? permission.isGranted : undefined,\n };\n });\n })\n );\n\n public permissions = toSignal(this.permissions$, { initialValue: [] });\n\n constructor() {\n this.loadForcedState();\n }\n\n setAppPermissions(permissions: DevToolbarPermission[]): void {\n this.appPermissions$.next(permissions);\n this.validateAndCleanForcedState(permissions);\n }\n\n setPermission(id: string, granted: boolean): void {\n const { granted: grantedIds, denied: deniedIds } = this.forcedStateSubject.value;\n\n const newGranted = grantedIds.filter((permId) => permId !== id);\n const newDenied = deniedIds.filter((permId) => permId !== id);\n\n if (granted) {\n newGranted.push(id);\n } else {\n newDenied.push(id);\n }\n\n const newState = { granted: newGranted, denied: newDenied };\n this.forcedStateSubject.next(newState);\n this.storageService.set(this.STORAGE_KEY, newState);\n }\n\n removePermissionOverride(id: string): void {\n const { granted, denied } = this.forcedStateSubject.value;\n\n const newState = {\n granted: granted.filter((permId) => permId !== id),\n denied: denied.filter((permId) => permId !== id),\n };\n\n this.forcedStateSubject.next(newState);\n this.storageService.set(this.STORAGE_KEY, newState);\n }\n\n getForcedPermissions(): Observable<DevToolbarPermission[]> {\n return this.permissions$.pipe(\n map((permissions) => permissions.filter((permission) => permission.isForced))\n );\n }\n\n /**\n * Apply a preset permissions state, replacing the current forced state.\n * Useful for automated testing or restoring saved configurations.\n * @param state The preset forced permissions state to apply\n */\n applyPresetPermissions(state: ForcedPermissionsState): void {\n this.forcedStateSubject.next(state);\n this.storageService.set(this.STORAGE_KEY, state);\n }\n\n /**\n * Get the current forced permissions state.\n * Returns a deep copy to prevent external mutations.\n * @returns Current forced permissions state\n */\n getCurrentForcedState(): ForcedPermissionsState {\n const currentState = this.forcedStateSubject.value;\n return {\n granted: [...currentState.granted],\n denied: [...currentState.denied],\n };\n }\n\n private loadForcedState(): void {\n try {\n const savedState = this.storageService.get<ForcedPermissionsState>(\n this.STORAGE_KEY\n );\n\n if (savedState && this.isValidForcedState(savedState)) {\n this.forcedStateSubject.next(savedState);\n }\n } catch (error) {\n console.warn('Error loading forced permissions state from localStorage:', error);\n }\n }\n\n private isValidForcedState(state: unknown): state is ForcedPermissionsState {\n if (!state || typeof state !== 'object') {\n return false;\n }\n\n const candidate = state as Record<string, unknown>;\n return (\n Array.isArray(candidate['granted']) &&\n Array.isArray(candidate['denied'])\n );\n }\n\n private validateAndCleanForcedState(permissions: DevToolbarPermission[]): void {\n const currentState = this.forcedStateSubject.value;\n const validIds = new Set(permissions.map((p) => p.id));\n\n const cleanedGranted = currentState.granted.filter((id) => validIds.has(id));\n const cleanedDenied = currentState.denied.filter((id) => validIds.has(id));\n\n const hasInvalidIds =\n cleanedGranted.length !== currentState.granted.length ||\n cleanedDenied.length !== currentState.denied.length;\n\n if (hasInvalidIds) {\n const cleanedState = {\n granted: cleanedGranted,\n denied: cleanedDenied,\n };\n this.forcedStateSubject.next(cleanedState);\n this.storageService.set(this.STORAGE_KEY, cleanedState);\n\n const invalidIds = [\n ...currentState.granted.filter((id) => !validIds.has(id)),\n ...currentState.denied.filter((id) => !validIds.has(id)),\n ];\n if (invalidIds.length > 0) {\n console.warn(\n 'Removed invalid permission IDs from forced state:',\n invalidIds\n );\n }\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarIconComponent } from '../../components/icons/icon.component';\nimport { DevToolbarInputComponent } from '../../components/input/input.component';\nimport { DevToolbarListComponent } from '../../components/list/list.component';\nimport { DevToolbarListItemComponent } from '../../components/list-item/list-item.component';\nimport { DevToolbarSelectComponent } from '../../components/select/select.component';\nimport { DevToolbarToolComponent } from '../../components/toolbar-tool/toolbar-tool.component';\nimport { DevToolbarWindowOptions } from '../../components/toolbar-tool/toolbar-tool.models';\nimport { DevToolbarInternalPermissionsService } from './permissions-internal.service';\nimport {\n DevToolbarPermission,\n PermissionFilter,\n} from './permissions.models';\n\n@Component({\n selector: 'ndt-permissions-tool',\n standalone: true,\n imports: [\n FormsModule,\n DevToolbarToolComponent,\n DevToolbarInputComponent,\n DevToolbarSelectComponent,\n DevToolbarIconComponent,\n DevToolbarListComponent,\n DevToolbarListItemComponent,\n ],\n template: `\n <ndt-toolbar-tool\n [options]=\"options\"\n title=\"Permissions\"\n icon=\"lock\"\n >\n <div class=\"container\">\n <div class=\"header\">\n <ndt-input\n [value]=\"searchQuery()\"\n (valueChange)=\"onSearchChange($event)\"\n placeholder=\"Search permissions...\"\n [ariaLabel]=\"'Search permissions'\"\n />\n <div class=\"filter-wrapper\">\n <ndt-icon name=\"filter\" class=\"filter-icon\" />\n <ndt-select\n [value]=\"activeFilter()\"\n [options]=\"filterOptions\"\n [size]=\"'medium'\"\n (valueChange)=\"onFilterChange($event)\"\n [ariaLabel]=\"'Filter permissions by state'\"\n />\n </div>\n </div>\n\n <ndt-list\n [hasItems]=\"!hasNoPermissions()\"\n [hasResults]=\"!hasNoFilteredPermissions()\"\n emptyMessage=\"No permissions found\"\n [emptyHint]=\"'Call setAvailableOptions() to configure permissions'\"\n noResultsMessage=\"No permissions match your filter\"\n >\n @for (permission of filteredPermissions(); track permission.id) {\n <ndt-list-item\n [title]=\"permission.name\"\n [description]=\"permission.description\"\n [isForced]=\"permission.isForced\"\n [currentValue]=\"permission.isGranted\"\n [originalValue]=\"permission.originalValue\"\n >\n <ndt-select\n [value]=\"getPermissionValue(permission)\"\n [options]=\"permissionValueOptions\"\n [ariaLabel]=\"'Override state for ' + permission.name\"\n (valueChange)=\"onPermissionChange(permission.id, $event ?? '')\"\n size=\"small\"\n />\n </ndt-list-item>\n }\n </ndt-list>\n </div>\n </ndt-toolbar-tool>\n `,\n styles: [\n `\n .container {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .header {\n flex-shrink: 0;\n display: flex;\n gap: var(--ndt-spacing-sm);\n margin-bottom: var(--ndt-spacing-sm);\n\n ndt-input {\n flex: 1;\n }\n\n .filter-wrapper {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n gap: var(--ndt-spacing-md);\n\n .filter-icon {\n width: 18px;\n height: 18px;\n flex-shrink: 0;\n opacity: 0.6;\n }\n\n ndt-select {\n flex: 0 0 auto;\n min-width: 180px;\n }\n }\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarPermissionsToolComponent {\n // Injects\n private readonly permissionsService = inject(\n DevToolbarInternalPermissionsService\n );\n\n // Signals\n protected readonly activeFilter = signal<PermissionFilter>('all');\n protected readonly searchQuery = signal<string>('');\n\n protected readonly permissions = this.permissionsService.permissions;\n protected readonly hasNoPermissions = computed(\n () => this.permissions().length === 0\n );\n protected readonly filteredPermissions = computed(() => {\n const filtered = this.permissions().filter((permission) => {\n const searchTerm = this.searchQuery().toLowerCase();\n const permissionName = permission.name.toLowerCase();\n const permissionDescription = permission.description?.toLowerCase() ?? '';\n\n const matchesSearch =\n !this.searchQuery() ||\n permissionName.includes(searchTerm) ||\n permissionDescription.includes(searchTerm);\n\n const matchesFilter =\n this.activeFilter() === 'all' ||\n (this.activeFilter() === 'forced' && permission.isForced) ||\n (this.activeFilter() === 'granted' && permission.isGranted) ||\n (this.activeFilter() === 'denied' && !permission.isGranted);\n\n return matchesSearch && matchesFilter;\n });\n\n // Sort alphabetically by name\n return filtered.sort((a, b) => a.name.localeCompare(b.name));\n });\n protected readonly hasNoFilteredPermissions = computed(\n () => this.filteredPermissions().length === 0\n );\n\n // Other properties\n protected readonly options = {\n title: 'Permissions',\n description: 'Manage permission overrides for your current session',\n isClosable: true,\n size: 'tall',\n id: 'ndt-permissions',\n isBeta: true,\n } as DevToolbarWindowOptions;\n\n protected readonly filterOptions = [\n { value: 'all', label: 'All Permissions' },\n { value: 'forced', label: 'Forced' },\n { value: 'granted', label: 'Granted' },\n { value: 'denied', label: 'Denied' },\n ];\n\n protected readonly permissionValueOptions = [\n { value: 'not-forced', label: 'Not Forced' },\n { value: 'denied', label: 'Forced Denied' },\n { value: 'granted', label: 'Forced Granted' },\n ];\n\n // Public methods\n onFilterChange(value: string | undefined): void {\n const filter = this.filterOptions.find((f) => f.value === value);\n if (filter) {\n this.activeFilter.set(filter.value as PermissionFilter);\n }\n }\n\n onPermissionChange(id: string, value: string): void {\n switch (value) {\n case 'not-forced':\n this.permissionsService.removePermissionOverride(id);\n break;\n case 'granted':\n this.permissionsService.setPermission(id, true);\n break;\n case 'denied':\n this.permissionsService.setPermission(id, false);\n break;\n }\n }\n\n onSearchChange(query: string): void {\n this.searchQuery.set(query);\n }\n\n // Protected methods\n protected getPermissionValue(permission: DevToolbarPermission): string {\n if (!permission.isForced) return '';\n return permission.isGranted ? 'granted' : 'denied';\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { DevToolsStorageService } from '../../utils/storage.service';\nimport { DevToolbarInternalFeatureFlagService } from '../feature-flags-tool/feature-flags-internal.service';\nimport { DevToolbarInternalLanguageService } from '../language-tool/language-internal.service';\nimport { DevToolbarInternalPermissionsService } from '../permissions-tool/permissions-internal.service';\nimport { DevToolbarInternalAppFeaturesService } from '../app-features-tool/app-features-internal.service';\nimport {\n DevToolbarPreset,\n DevToolbarPresetConfig,\n PresetCategoryOptions,\n} from './presets.models';\n\n/**\n * Internal service for managing presets state.\n * Handles CRUD operations, captures current toolbar config, and applies presets.\n */\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarInternalPresetsService {\n private readonly STORAGE_KEY = 'presets';\n private storageService = inject(DevToolsStorageService);\n\n // Inject all other tool internal services (for reading/writing state)\n private featureFlagsService = inject(DevToolbarInternalFeatureFlagService);\n private languageService = inject(DevToolbarInternalLanguageService);\n private permissionsService = inject(DevToolbarInternalPermissionsService);\n private appFeaturesService = inject(DevToolbarInternalAppFeaturesService);\n\n private presetsSubject = new BehaviorSubject<DevToolbarPreset[]>([]);\n public presets$: Observable<DevToolbarPreset[]> =\n this.presetsSubject.asObservable();\n public presets = toSignal(this.presets$, { initialValue: [] });\n\n constructor() {\n this.loadPresets();\n }\n\n /**\n * Capture current toolbar state as a new preset\n */\n saveCurrentAsPreset(\n name: string,\n description?: string,\n categoryOptions?: PresetCategoryOptions\n ): DevToolbarPreset {\n const preset: DevToolbarPreset = {\n id: this.generateId(),\n name,\n description,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n config: this.captureCurrentConfig(categoryOptions),\n };\n\n const presets = [...this.presetsSubject.value, preset];\n this.presetsSubject.next(presets);\n this.storageService.set(this.STORAGE_KEY, presets);\n\n return preset;\n }\n\n /**\n * Apply a preset to all tools (THIS IS THE KEY METHOD)\n */\n async applyPreset(presetId: string): Promise<void> {\n const preset = this.presetsSubject.value.find((p) => p.id === presetId);\n if (!preset) return;\n\n // Apply to each tool's internal service\n this.featureFlagsService.applyPresetFlags(preset.config.featureFlags);\n await this.languageService.applyPresetLanguage(preset.config.language);\n this.permissionsService.applyPresetPermissions(preset.config.permissions);\n this.appFeaturesService.applyForcedState(preset.config.appFeatures);\n }\n\n /**\n * Update an existing preset with current toolbar state\n */\n updatePreset(presetId: string): void {\n const presets = this.presetsSubject.value.map((preset) => {\n if (preset.id === presetId) {\n return {\n ...preset,\n updatedAt: new Date().toISOString(),\n config: this.captureCurrentConfig(),\n };\n }\n return preset;\n });\n\n this.presetsSubject.next(presets);\n this.storageService.set(this.STORAGE_KEY, presets);\n }\n\n /**\n * Delete a preset\n */\n deletePreset(presetId: string): void {\n const presets = this.presetsSubject.value.filter(\n (p) => p.id !== presetId\n );\n this.presetsSubject.next(presets);\n this.storageService.set(this.STORAGE_KEY, presets);\n }\n\n /**\n * Add a preset (used for import)\n */\n addPreset(preset: DevToolbarPreset): DevToolbarPreset {\n // Generate new ID to avoid conflicts\n const newPreset: DevToolbarPreset = {\n ...preset,\n id: this.generateId(),\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n\n const presets = [...this.presetsSubject.value, newPreset];\n this.presetsSubject.next(presets);\n this.storageService.set(this.STORAGE_KEY, presets);\n\n return newPreset;\n }\n\n /**\n * Get a preset by ID\n */\n getPresetById(presetId: string): DevToolbarPreset | undefined {\n return this.presetsSubject.value.find((p) => p.id === presetId);\n }\n\n /**\n * Capture current configuration from all tools\n */\n private captureCurrentConfig(\n categoryOptions?: PresetCategoryOptions\n ): DevToolbarPresetConfig {\n // Default to including all categories if not specified\n const options = {\n includeFeatureFlags: categoryOptions?.includeFeatureFlags ?? true,\n includePermissions: categoryOptions?.includePermissions ?? true,\n includeAppFeatures: categoryOptions?.includeAppFeatures ?? true,\n includeLanguage: categoryOptions?.includeLanguage ?? true,\n };\n\n // Get current forced states\n const currentFlags = this.featureFlagsService.getCurrentForcedState();\n const currentPerms = this.permissionsService.getCurrentForcedState();\n const currentFeatures = this.appFeaturesService.getCurrentForcedState();\n\n // Filter by selected IDs if provided\n const filterById = (ids: string[], selected?: string[]) =>\n selected && selected.length > 0 ? ids.filter((id) => selected.includes(id)) : ids;\n\n return {\n featureFlags: options.includeFeatureFlags\n ? {\n enabled: filterById(\n currentFlags.enabled,\n categoryOptions?.selectedFlagIds\n ),\n disabled: filterById(\n currentFlags.disabled,\n categoryOptions?.selectedFlagIds\n ),\n }\n : { enabled: [], disabled: [] },\n language: options.includeLanguage\n ? this.languageService.getCurrentForcedLanguage()\n : null,\n permissions: options.includePermissions\n ? {\n granted: filterById(\n currentPerms.granted,\n categoryOptions?.selectedPermissionIds\n ),\n denied: filterById(\n currentPerms.denied,\n categoryOptions?.selectedPermissionIds\n ),\n }\n : { granted: [], denied: [] },\n appFeatures: options.includeAppFeatures\n ? {\n enabled: filterById(\n currentFeatures.enabled,\n categoryOptions?.selectedFeatureIds\n ),\n disabled: filterById(\n currentFeatures.disabled,\n categoryOptions?.selectedFeatureIds\n ),\n }\n : { enabled: [], disabled: [] },\n };\n }\n\n /**\n * Load presets from localStorage\n */\n private loadPresets(): void {\n try {\n const saved =\n this.storageService.get<DevToolbarPreset[]>(this.STORAGE_KEY);\n if (saved && Array.isArray(saved)) {\n this.presetsSubject.next(saved);\n }\n } catch (error) {\n console.error('Failed to load presets from localStorage:', error);\n }\n }\n\n /**\n * Generate unique preset ID\n */\n private generateId(): string {\n return `preset-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarButtonComponent } from '../../components/button/button.component';\nimport { DevToolbarIconComponent } from '../../components/icons/icon.component';\nimport { DevToolbarInputComponent } from '../../components/input/input.component';\nimport { DevToolbarToolComponent } from '../../components/toolbar-tool/toolbar-tool.component';\nimport { DevToolbarWindowOptions } from '../../components/toolbar-tool/toolbar-tool.models';\nimport { DevToolbarInternalPresetsService } from './presets-internal.service';\nimport { DevToolbarInternalFeatureFlagService } from '../feature-flags-tool/feature-flags-internal.service';\nimport { DevToolbarInternalPermissionsService } from '../permissions-tool/permissions-internal.service';\nimport { DevToolbarInternalAppFeaturesService } from '../app-features-tool/app-features-internal.service';\nimport { DevToolbarInternalLanguageService } from '../language-tool/language-internal.service';\nimport { DevToolbarStateService } from '../../dev-toolbar-state.service';\n\n@Component({\n selector: 'ndt-presets-tool',\n standalone: true,\n imports: [\n FormsModule,\n DevToolbarToolComponent,\n DevToolbarInputComponent,\n DevToolbarButtonComponent,\n DevToolbarIconComponent,\n ],\n template: `\n <ndt-toolbar-tool [options]=\"options\" title=\"Presets\" icon=\"layout\">\n <div class=\"container\">\n <!-- Mode Toggle -->\n @if (!hasNoPresets() || viewMode() === 'create') {\n <div class=\"header\">\n @if (viewMode() === 'list') {\n <ndt-input\n [value]=\"searchQuery()\"\n (valueChange)=\"onSearchChange($event)\"\n placeholder=\"Search presets...\"\n [ariaLabel]=\"'Search presets'\"\n />\n <ndt-button\n (click)=\"onSwitchToCreateMode()\"\n [ariaLabel]=\"'Create new preset'\"\n >\n New Preset\n </ndt-button>\n } @else {\n <ndt-button\n (click)=\"onSwitchToListMode()\"\n [ariaLabel]=\"'Back to list'\"\n >\n ← Back to List\n </ndt-button>\n }\n </div>\n }\n\n <!-- Create Form -->\n @if (viewMode() === 'create') {\n <form (submit)=\"onSavePreset($event)\" class=\"preset-form\">\n <ndt-input\n label=\"Preset Name\"\n [value]=\"presetName()\"\n (valueChange)=\"presetName.set($event)\"\n placeholder=\"e.g., Admin User - Full Access\"\n [ariaLabel]=\"'Preset name'\"\n />\n <ndt-input\n label=\"Description (optional)\"\n [value]=\"presetDescription()\"\n (valueChange)=\"presetDescription.set($event)\"\n placeholder=\"Brief description of this preset\"\n [ariaLabel]=\"'Preset description'\"\n />\n\n <!-- Category selection checkboxes -->\n <div class=\"preset-summary\">\n <h4>Select what to include:</h4>\n\n @if (isFeatureFlagsEnabled()) {\n <div class=\"category-section\">\n <label class=\"checkbox-option\">\n <input\n type=\"checkbox\"\n [checked]=\"includeFeatureFlags()\"\n (change)=\"includeFeatureFlags.set(!includeFeatureFlags())\"\n [disabled]=\"getCurrentFlagsCount() === 0\"\n />\n <span>Feature Flags ({{ getCurrentFlagsCount() }} forced)</span>\n </label>\n @if (forcedFlags().length > 0) {\n <ul class=\"forced-items-list\">\n @for (flag of forcedFlags(); track flag.id) {\n <li>\n <label class=\"item-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"isItemSelected(selectedFlagIds(), flag.id)\"\n (change)=\"toggleItemSelection(selectedFlagIds, flag.id)\"\n />\n <span class=\"item-name\">{{ flag.name }}</span>\n <span class=\"item-status\" [class.enabled]=\"flag.isEnabled\" [class.disabled]=\"!flag.isEnabled\">\n {{ flag.isEnabled ? 'ON' : 'OFF' }}\n </span>\n </label>\n </li>\n }\n </ul>\n }\n </div>\n }\n\n @if (isPermissionsEnabled()) {\n <div class=\"category-section\">\n <label class=\"checkbox-option\">\n <input\n type=\"checkbox\"\n [checked]=\"includePermissions()\"\n (change)=\"includePermissions.set(!includePermissions())\"\n [disabled]=\"getCurrentPermissionsCount() === 0\"\n />\n <span>Permissions ({{ getCurrentPermissionsCount() }} forced)</span>\n </label>\n @if (forcedPermissions().length > 0) {\n <ul class=\"forced-items-list\">\n @for (perm of forcedPermissions(); track perm.id) {\n <li>\n <label class=\"item-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"isItemSelected(selectedPermissionIds(), perm.id)\"\n (change)=\"toggleItemSelection(selectedPermissionIds, perm.id)\"\n />\n <span class=\"item-name\">{{ perm.name }}</span>\n <span class=\"item-status\" [class.enabled]=\"perm.isGranted\" [class.disabled]=\"!perm.isGranted\">\n {{ perm.isGranted ? 'GRANTED' : 'DENIED' }}\n </span>\n </label>\n </li>\n }\n </ul>\n }\n </div>\n }\n\n @if (isAppFeaturesEnabled()) {\n <div class=\"category-section\">\n <label class=\"checkbox-option\">\n <input\n type=\"checkbox\"\n [checked]=\"includeAppFeatures()\"\n (change)=\"includeAppFeatures.set(!includeAppFeatures())\"\n [disabled]=\"getCurrentAppFeaturesCount() === 0\"\n />\n <span>App Features ({{ getCurrentAppFeaturesCount() }} forced)</span>\n </label>\n @if (forcedAppFeatures().length > 0) {\n <ul class=\"forced-items-list\">\n @for (feat of forcedAppFeatures(); track feat.id) {\n <li>\n <label class=\"item-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"isItemSelected(selectedFeatureIds(), feat.id)\"\n (change)=\"toggleItemSelection(selectedFeatureIds, feat.id)\"\n />\n <span class=\"item-name\">{{ feat.name }}</span>\n <span class=\"item-status\" [class.enabled]=\"feat.isEnabled\" [class.disabled]=\"!feat.isEnabled\">\n {{ feat.isEnabled ? 'ON' : 'OFF' }}\n </span>\n </label>\n </li>\n }\n </ul>\n }\n </div>\n }\n\n @if (isLanguageEnabled()) {\n <div class=\"category-section\">\n <label class=\"checkbox-option\">\n <input\n type=\"checkbox\"\n [checked]=\"includeLanguage()\"\n (change)=\"includeLanguage.set(!includeLanguage())\"\n [disabled]=\"!getCurrentLanguage() || getCurrentLanguage() === 'Not Forced'\"\n />\n <span>Language ({{ getCurrentLanguage() }})</span>\n </label>\n </div>\n }\n </div>\n\n <div class=\"form-actions\">\n <ndt-button type=\"submit\">Save Preset</ndt-button>\n </div>\n </form>\n }\n\n <!-- Empty State -->\n @if (viewMode() === 'list' && hasNoPresets()) {\n <div class=\"empty\">\n <p>No presets saved yet</p>\n <p class=\"hint\">\n Save the current toolbar configuration as a preset for quick access\n </p>\n <ndt-button (click)=\"onSwitchToCreateMode()\">\n Create Your First Preset\n </ndt-button>\n </div>\n } @else if (viewMode() === 'list' && hasNoFilteredPresets()) {\n <div class=\"empty\">\n <p>No presets match your search</p>\n </div>\n } @else if (viewMode() === 'list') {\n <!-- Preset List -->\n <div class=\"preset-list\">\n @for (preset of filteredPresets(); track preset.id) {\n <div class=\"preset-card\">\n <div class=\"preset-card__header\">\n <h3>{{ preset.name }}</h3>\n <div class=\"preset-card__actions\">\n <button\n class=\"icon-button\"\n (click)=\"onApplyPreset(preset.id)\"\n [attr.aria-label]=\"'Apply preset ' + preset.name\"\n title=\"Apply preset\"\n >\n <ndt-icon name=\"refresh\" />\n </button>\n <button\n class=\"icon-button\"\n (click)=\"onUpdatePreset(preset.id)\"\n [attr.aria-label]=\"'Update preset ' + preset.name\"\n title=\"Update with current state\"\n >\n <ndt-icon name=\"gear\" />\n </button>\n <button\n class=\"icon-button\"\n (click)=\"onExportPreset(preset.id)\"\n [attr.aria-label]=\"'Export preset ' + preset.name\"\n title=\"Export as JSON\"\n >\n <ndt-icon name=\"export\" />\n </button>\n <button\n class=\"icon-button\"\n (click)=\"onDeletePreset(preset.id)\"\n [attr.aria-label]=\"'Delete preset ' + preset.name\"\n title=\"Delete preset\"\n >\n <ndt-icon name=\"trash\" />\n </button>\n </div>\n </div>\n @if (preset.description) {\n <p class=\"preset-card__description\">{{ preset.description }}</p>\n }\n <div class=\"preset-card__meta\">\n <span>Updated: {{ formatDate(preset.updatedAt) }}</span>\n </div>\n <!-- Preview of preset config -->\n <div class=\"preset-card__preview\">\n @if (preset.config.featureFlags.enabled.length > 0 ||\n preset.config.featureFlags.disabled.length > 0) {\n <span class=\"badge\">\n {{\n preset.config.featureFlags.enabled.length +\n preset.config.featureFlags.disabled.length\n }}\n flags\n </span>\n } @if (preset.config.permissions.granted.length > 0 ||\n preset.config.permissions.denied.length > 0) {\n <span class=\"badge\">\n {{\n preset.config.permissions.granted.length +\n preset.config.permissions.denied.length\n }}\n perms\n </span>\n } @if (preset.config.appFeatures.enabled.length > 0 ||\n preset.config.appFeatures.disabled.length > 0) {\n <span class=\"badge\">\n {{\n preset.config.appFeatures.enabled.length +\n preset.config.appFeatures.disabled.length\n }}\n features\n </span>\n } @if (preset.config.language) {\n <span class=\"badge\">{{ preset.config.language }}</span>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n </ndt-toolbar-tool>\n `,\n styles: [\n `\n .container {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .header {\n flex-shrink: 0;\n display: flex;\n gap: var(--ndt-spacing-sm);\n margin-bottom: var(--ndt-spacing-md);\n\n ndt-input {\n flex: 1;\n }\n\n ndt-button {\n flex-shrink: 0;\n }\n }\n\n .empty {\n display: flex;\n flex-direction: column;\n gap: var(--ndt-spacing-md);\n flex: 1;\n min-height: 0;\n justify-content: center;\n align-items: center;\n border: 1px solid var(--ndt-border-subtle);\n border-radius: var(--ndt-border-radius-medium);\n padding: var(--ndt-spacing-md);\n background: transparent;\n color: var(--ndt-text-muted);\n text-align: center;\n\n p {\n margin: 0;\n }\n\n .hint {\n font-size: var(--ndt-font-size-xs);\n }\n }\n\n .preset-list {\n display: flex;\n flex-direction: column;\n gap: var(--ndt-spacing-md);\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding-right: var(--ndt-spacing-sm);\n\n &::-webkit-scrollbar {\n width: 8px;\n }\n\n &::-webkit-scrollbar-track {\n background: var(--ndt-background-secondary);\n border-radius: 4px;\n }\n\n &::-webkit-scrollbar-thumb {\n background: var(--ndt-border-primary);\n border-radius: 4px;\n\n &:hover {\n background: var(--ndt-hover-bg);\n }\n }\n\n scrollbar-width: thin;\n scrollbar-color: var(--ndt-border-primary)\n var(--ndt-background-secondary);\n }\n\n .preset-card {\n background: var(--ndt-background-secondary);\n padding: var(--ndt-spacing-md);\n border-radius: var(--ndt-border-radius-medium);\n display: flex;\n flex-direction: column;\n gap: var(--ndt-spacing-sm);\n }\n\n .preset-card__header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--ndt-spacing-sm);\n\n h3 {\n margin: 0;\n font-size: var(--ndt-font-size-md);\n color: var(--ndt-text-primary);\n flex: 1;\n }\n }\n\n .preset-card__actions {\n display: flex;\n gap: var(--ndt-spacing-xs);\n }\n\n .icon-button {\n background: transparent;\n border: none;\n cursor: pointer;\n padding: var(--ndt-spacing-xs);\n border-radius: var(--ndt-border-radius-small);\n color: var(--ndt-text-secondary);\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:hover {\n background: var(--ndt-hover-bg);\n color: var(--ndt-text-primary);\n }\n\n ndt-icon {\n width: 16px;\n height: 16px;\n }\n }\n\n .preset-card__description {\n margin: 0;\n font-size: var(--ndt-font-size-sm);\n color: var(--ndt-text-secondary);\n }\n\n .preset-card__meta {\n font-size: var(--ndt-font-size-xs);\n color: var(--ndt-text-muted);\n\n span {\n margin-right: var(--ndt-spacing-sm);\n }\n }\n\n .preset-card__preview {\n display: flex;\n gap: var(--ndt-spacing-xs);\n flex-wrap: wrap;\n }\n\n .badge {\n background: var(--ndt-primary-color);\n color: white;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: var(--ndt-font-size-xs);\n font-weight: 500;\n }\n\n .preset-form {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: var(--ndt-spacing-md);\n padding: var(--ndt-spacing-md);\n\n ndt-input {\n width: 100%;\n }\n }\n\n .preset-summary {\n background: var(--ndt-background-secondary);\n padding: var(--ndt-spacing-md);\n border-radius: var(--ndt-border-radius-medium);\n display: flex;\n flex-direction: column;\n gap: var(--ndt-spacing-sm);\n\n h4 {\n margin: 0;\n font-size: var(--ndt-font-size-sm);\n color: var(--ndt-text-primary);\n }\n }\n\n .category-section {\n display: flex;\n flex-direction: column;\n gap: var(--ndt-spacing-xs);\n }\n\n .checkbox-option {\n display: flex;\n align-items: center;\n gap: var(--ndt-spacing-sm);\n cursor: pointer;\n color: var(--ndt-text-secondary);\n font-size: var(--ndt-font-size-sm);\n\n input[type='checkbox'] {\n cursor: pointer;\n width: 16px;\n height: 16px;\n accent-color: var(--ndt-primary);\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n\n &:has(input:disabled) {\n opacity: 0.6;\n cursor: not-allowed;\n }\n }\n\n .forced-items-list {\n list-style: none;\n padding: 0;\n margin: 0 0 0 var(--ndt-spacing-lg);\n display: flex;\n flex-direction: column;\n gap: var(--ndt-spacing-xs);\n font-size: var(--ndt-font-size-xs);\n\n li {\n background: rgba(var(--ndt-primary-rgb), 0.05);\n border-radius: var(--ndt-border-radius-small);\n border-left: 2px solid rgba(var(--ndt-primary-rgb), 0.3);\n }\n\n .item-checkbox {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--ndt-spacing-xs) var(--ndt-spacing-sm);\n cursor: pointer;\n gap: var(--ndt-spacing-sm);\n\n input[type='checkbox'] {\n cursor: pointer;\n width: 14px;\n height: 14px;\n accent-color: var(--ndt-primary);\n flex-shrink: 0;\n }\n\n &:hover {\n background: rgba(var(--ndt-primary-rgb), 0.08);\n }\n }\n\n .item-name {\n color: var(--ndt-text-primary);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .item-status {\n font-weight: 600;\n padding: 2px 6px;\n border-radius: var(--ndt-border-radius-small);\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n flex-shrink: 0;\n\n &.enabled {\n background: rgba(34, 197, 94, 0.15);\n color: rgb(34, 197, 94);\n }\n\n &.disabled {\n background: rgba(239, 68, 68, 0.15);\n color: rgb(239, 68, 68);\n }\n }\n }\n\n .form-actions {\n display: flex;\n justify-content: flex-end;\n gap: var(--ndt-spacing-sm);\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarPresetsToolComponent {\n // Injects\n private readonly presetsService = inject(DevToolbarInternalPresetsService);\n private readonly featureFlagsService = inject(\n DevToolbarInternalFeatureFlagService\n );\n private readonly permissionsService = inject(\n DevToolbarInternalPermissionsService\n );\n private readonly appFeaturesService = inject(\n DevToolbarInternalAppFeaturesService\n );\n private readonly languageService = inject(DevToolbarInternalLanguageService);\n protected readonly state = inject(DevToolbarStateService);\n\n // Signals\n protected readonly viewMode = signal<'list' | 'create'>('list');\n protected readonly searchQuery = signal<string>('');\n protected readonly presetName = signal<string>('');\n protected readonly presetDescription = signal<string>('');\n protected readonly includeFeatureFlags = signal<boolean>(true);\n protected readonly includePermissions = signal<boolean>(true);\n protected readonly includeAppFeatures = signal<boolean>(true);\n protected readonly includeLanguage = signal<boolean>(true);\n\n // Track selected individual items\n protected readonly selectedFlagIds = signal<Set<string>>(new Set());\n protected readonly selectedPermissionIds = signal<Set<string>>(new Set());\n protected readonly selectedFeatureIds = signal<Set<string>>(new Set());\n\n protected readonly presets = this.presetsService.presets;\n protected readonly filteredPresets = computed(() => {\n const query = this.searchQuery().toLowerCase();\n return this.presets().filter(\n (preset) =>\n preset.name.toLowerCase().includes(query) ||\n preset.description?.toLowerCase().includes(query)\n );\n });\n\n protected readonly hasNoPresets = computed(\n () => this.presets().length === 0\n );\n protected readonly hasNoFilteredPresets = computed(\n () => this.filteredPresets().length === 0\n );\n\n // Tool availability (based on config)\n protected readonly isFeatureFlagsEnabled = computed(\n () => this.state.config().showFeatureFlagsTool ?? true\n );\n protected readonly isPermissionsEnabled = computed(\n () => this.state.config().showPermissionsTool ?? true\n );\n protected readonly isAppFeaturesEnabled = computed(\n () => this.state.config().showAppFeaturesTool ?? true\n );\n protected readonly isLanguageEnabled = computed(\n () => this.state.config().showLanguageTool ?? true\n );\n\n // Forced items details\n protected readonly forcedFlags = computed(() => {\n return this.featureFlagsService.flags().filter((flag) => flag.isForced);\n });\n protected readonly forcedPermissions = computed(() => {\n return this.permissionsService.permissions().filter((perm) => perm.isForced);\n });\n protected readonly forcedAppFeatures = computed(() => {\n return this.appFeaturesService.features().filter((feat) => feat.isForced);\n });\n\n // Other properties\n protected readonly options: DevToolbarWindowOptions = {\n title: 'Presets',\n description: 'Save and load toolbar configurations',\n isClosable: true,\n size: 'tall',\n id: 'ndt-presets',\n isBeta: true,\n };\n\n // Public methods\n onSearchChange(query: string): void {\n this.searchQuery.set(query);\n }\n\n onSwitchToCreateMode(): void {\n this.viewMode.set('create');\n this.presetName.set('');\n this.presetDescription.set('');\n // Reset checkboxes - only enable categories that have forced items\n this.includeFeatureFlags.set(this.getCurrentFlagsCount() > 0);\n this.includePermissions.set(this.getCurrentPermissionsCount() > 0);\n this.includeAppFeatures.set(this.getCurrentAppFeaturesCount() > 0);\n const currentLang = this.getCurrentLanguage();\n this.includeLanguage.set(!!currentLang && currentLang !== 'Not Forced');\n\n // Initialize selected items - select all by default\n this.selectedFlagIds.set(new Set(this.forcedFlags().map((f) => f.id)));\n this.selectedPermissionIds.set(\n new Set(this.forcedPermissions().map((p) => p.id))\n );\n this.selectedFeatureIds.set(\n new Set(this.forcedAppFeatures().map((f) => f.id))\n );\n }\n\n onSwitchToListMode(): void {\n this.viewMode.set('list');\n }\n\n onSavePreset(event: Event): void {\n event.preventDefault();\n if (!this.presetName()) return;\n this.presetsService.saveCurrentAsPreset(\n this.presetName(),\n this.presetDescription(),\n {\n includeFeatureFlags: this.includeFeatureFlags(),\n includePermissions: this.includePermissions(),\n includeAppFeatures: this.includeAppFeatures(),\n includeLanguage: this.includeLanguage(),\n selectedFlagIds: Array.from(this.selectedFlagIds()),\n selectedPermissionIds: Array.from(this.selectedPermissionIds()),\n selectedFeatureIds: Array.from(this.selectedFeatureIds()),\n }\n );\n this.onSwitchToListMode();\n }\n\n onApplyPreset(presetId: string): void {\n this.presetsService.applyPreset(presetId);\n }\n\n onUpdatePreset(presetId: string): void {\n this.presetsService.updatePreset(presetId);\n }\n\n onExportPreset(presetId: string): void {\n const preset = this.presets().find((p) => p.id === presetId);\n if (!preset) return;\n\n const json = JSON.stringify(preset, null, 2);\n const blob = new Blob([json], { type: 'application/json' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = `preset-${preset.name.toLowerCase().replace(/\\s+/g, '-')}.json`;\n link.click();\n URL.revokeObjectURL(url);\n }\n\n onDeletePreset(presetId: string): void {\n if (confirm('Are you sure you want to delete this preset?')) {\n this.presetsService.deletePreset(presetId);\n }\n }\n\n // Protected methods\n protected getCurrentFlagsCount(): number {\n const state = this.featureFlagsService.getCurrentForcedState();\n return state.enabled.length + state.disabled.length;\n }\n\n protected getCurrentPermissionsCount(): number {\n const state = this.permissionsService.getCurrentForcedState();\n return state.granted.length + state.denied.length;\n }\n\n protected getCurrentAppFeaturesCount(): number {\n const state = this.appFeaturesService.getCurrentForcedState();\n return state.enabled.length + state.disabled.length;\n }\n\n protected getCurrentLanguage(): string {\n return this.languageService.getCurrentForcedLanguage() || 'Not Forced';\n }\n\n protected formatDate(isoString: string): string {\n return new Date(isoString).toLocaleDateString();\n }\n\n /**\n * Toggle selection of an individual item\n */\n protected toggleItemSelection(\n signal: typeof this.selectedFlagIds,\n itemId: string\n ): void {\n const current = new Set(signal());\n if (current.has(itemId)) {\n current.delete(itemId);\n } else {\n current.add(itemId);\n }\n signal.set(current);\n }\n\n /**\n * Check if an item is selected\n */\n protected isItemSelected(selectedSet: Set<string>, itemId: string): boolean {\n return selectedSet.has(itemId);\n }\n}\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport { DOCUMENT } from '@angular/common';\nimport {\n Component,\n DestroyRef,\n OnDestroy,\n OnInit,\n ViewEncapsulation,\n effect,\n inject,\n input,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\nimport { filter, throttleTime } from 'rxjs/operators';\nimport { DevToolbarStateService } from './dev-toolbar-state.service';\nimport { DevToolbarConfig } from './models/dev-toolbar-config.interface';\nimport { DevToolbarAppFeaturesToolComponent } from './tools/app-features-tool/app-features-tool.component';\nimport { DevToolbarFeatureFlagsToolComponent } from './tools/feature-flags-tool/feature-flags-tool.component';\nimport { DevToolbarHomeToolComponent } from './tools/home-tool/home-tool.component';\nimport { SettingsService } from './tools/home-tool/settings.service';\nimport { DevToolbarLanguageToolComponent } from './tools/language-tool/language-tool.component';\nimport { DevToolbarPermissionsToolComponent } from './tools/permissions-tool/permissions-tool.component';\nimport { DevToolbarPresetsToolComponent } from './tools/presets-tool/presets-tool.component';\n\n@Component({\n standalone: true,\n selector: 'ndt-toolbar',\n styleUrls: ['./dev-toolbar.component.scss'],\n encapsulation: ViewEncapsulation.ShadowDom,\n imports: [\n DevToolbarHomeToolComponent,\n DevToolbarLanguageToolComponent,\n DevToolbarFeatureFlagsToolComponent,\n DevToolbarAppFeaturesToolComponent,\n DevToolbarPermissionsToolComponent,\n DevToolbarPresetsToolComponent,\n ],\n template: `\n <div\n aria-label=\"Developer tools\"\n role=\"toolbar\"\n class=\"ndt-toolbar\"\n [@toolbarState]=\"state.isVisible() ? 'visible' : 'hidden'\"\n [attr.data-theme]=\"state.theme()\"\n [class.ndt-toolbar--active]=\"state.isVisible()\"\n (mouseenter)=\"onMouseEnter()\"\n >\n <ndt-home-tool />\n <ng-content />\n @if (config().showLanguageTool ?? false) {\n <ndt-language-tool />\n }\n @if (config().showPresetsTool ?? false) {\n <ndt-presets-tool />\n }\n @if (config().showAppFeaturesTool ?? false) {\n <ndt-app-features-tool />\n }\n @if (config().showPermissionsTool ?? false) {\n <ndt-permissions-tool />\n }\n @if (config().showFeatureFlagsTool ?? false) {\n <ndt-feature-flags-tool />\n }\n </div>\n `,\n animations: [\n trigger('toolbarState', [\n state(\n 'hidden',\n style({\n transform: 'translate(-50%, calc(100% + -1.2rem))',\n })\n ),\n state(\n 'visible',\n style({\n transform: 'translate(-50%, -1rem)',\n })\n ),\n transition('hidden <=> visible', [\n animate('300ms cubic-bezier(0.4, 0, 0.2, 1)'),\n ]),\n ]),\n ],\n})\nexport class DevToolbarComponent implements OnInit, OnDestroy {\n private document = inject(DOCUMENT);\n state = inject(DevToolbarStateService);\n destroyRef = inject(DestroyRef);\n settingsService = inject(SettingsService);\n\n config = input<DevToolbarConfig>({});\n private globalStyleElement?: HTMLStyleElement;\n\n private keyboardShortcut = fromEvent<KeyboardEvent>(window, 'keydown')\n .pipe(\n filter((event) => event.ctrlKey && event.shiftKey && event.key === 'D'),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => this.toggleDevTools());\n\n private mouseLeave = fromEvent<MouseEvent>(document, 'mouseleave')\n .pipe(throttleTime(3000), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onMouseLeave());\n\n constructor() {\n // Update state service when config changes\n effect(() => {\n this.state.setConfig(this.config());\n });\n }\n\n ngOnInit(): void {\n this.injectGlobalStyles();\n // Always use light theme\n this.state.setTheme('light');\n }\n\n ngOnDestroy(): void {\n this.globalStyleElement?.remove();\n }\n\n onMouseEnter(): void {\n this.state.setVisibility(true);\n }\n\n onMouseLeave(): void {\n setTimeout(() => this.state.setVisibility(false), this.state.delay());\n }\n\n private toggleDevTools(): void {\n this.state.setVisibility(!this.state.isVisible());\n }\n\n /**\n * Injects global theme styles into the document head to make CSS variables\n * available to CDK overlays and other elements rendered outside Shadow DOM.\n * Uses light theme only.\n */\n private injectGlobalStyles(): void {\n // Check if styles are already injected (e.g., by another toolbar instance)\n if (this.document.getElementById('ndt-global-theme')) {\n return;\n }\n\n this.globalStyleElement = this.document.createElement('style');\n this.globalStyleElement.id = 'ndt-global-theme';\n this.globalStyleElement.textContent = `\n /* Global Light Theme for ngx-dev-toolbar overlays */\n :where(ndt-toolbar),\n .ndt-overlay-panel,\n .cdk-overlay-container {\n --ndt-border-radius-small: 4px;\n --ndt-border-radius-medium: 8px;\n --ndt-border-radius-large: 12px;\n --ndt-transition-default: all 0.2s ease-out;\n --ndt-transition-smooth: all 0.2s ease-in-out;\n --ndt-spacing-xs: 4px;\n --ndt-spacing-sm: 6px;\n --ndt-spacing-md: 12px;\n --ndt-spacing-lg: 16px;\n --ndt-window-padding: 16px;\n --ndt-font-size-xxs: 0.65rem;\n --ndt-font-size-xs: 0.75rem;\n --ndt-font-size-sm: 0.875rem;\n --ndt-font-size-md: 1rem;\n --ndt-font-size-lg: 1.25rem;\n --ndt-font-size-xl: 2rem;\n --ndt-primary: #df30d4;\n --ndt-primary-rgb: 223, 48, 212;\n --ndt-text-on-primary: rgb(255, 255, 255);\n --ndt-bg-primary: rgb(255, 255, 255);\n --ndt-bg-gradient: linear-gradient(180deg, rgb(243, 244, 246) 0%, rgba(243, 244, 246, 0.88) 100%);\n --ndt-text-primary: rgb(17, 24, 39);\n --ndt-text-secondary: rgb(55, 65, 81);\n --ndt-text-muted: rgb(107, 114, 128);\n --ndt-border-primary: #e5e7eb;\n --ndt-border-subtle: rgba(17, 24, 39, 0.1);\n --ndt-hover-bg: rgba(17, 24, 39, 0.05);\n --ndt-hover-danger: rgb(239, 68, 68);\n --ndt-shadow-toolbar: 0 2px 8px rgba(156, 163, 175, 0.2);\n --ndt-shadow-tooltip: 0 0 0 1px rgba(17, 24, 39, 0.05), 0 4px 8px rgba(107, 114, 128, 0.15), 0 2px 4px rgba(107, 114, 128, 0.1);\n --ndt-shadow-window: 0px 0px 0px 0px rgba(156, 163, 175, 0.1), 0px 1px 2px 0px rgba(156, 163, 175, 0.12), 0px 4px 4px 0px rgba(156, 163, 175, 0.1), 0px 10px 6px 0px rgba(156, 163, 175, 0.08), 0px 17px 7px 0px rgba(156, 163, 175, 0.05), 0px 26px 7px 0px rgba(156, 163, 175, 0.02);\n --ndt-background-secondary: var(--ndt-bg-primary);\n --ndt-background-hover: var(--ndt-hover-bg);\n --ndt-border-color: var(--ndt-border-primary);\n --ndt-note-background: rgb(219, 234, 254);\n --ndt-note-border: rgba(37, 99, 235, 0.2);\n --ndt-warning-background: rgb(254, 249, 195);\n --ndt-warning-border: rgba(202, 138, 4, 0.2);\n --ndt-error-background: rgb(254, 226, 226);\n --ndt-error-border: rgba(220, 38, 38, 0.2);\n }\n .ndt-overlay-panel {\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif;\n box-sizing: border-box;\n isolation: isolate;\n z-index: 999999999;\n }\n .ndt-overlay-panel *, .ndt-overlay-panel *::before, .ndt-overlay-panel *::after {\n box-sizing: border-box;\n }\n .cdk-overlay-backdrop.ndt-overlay-backdrop {\n background: transparent;\n }\n `;\n\n this.document.head.appendChild(this.globalStyleElement);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DevToolsService } from '../../models/dev-tools.interface';\nimport { DevToolbarInternalFeatureFlagService } from './feature-flags-internal.service';\nimport { DevToolbarFlag } from './feature-flags.models';\n\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarFeatureFlagService\n implements DevToolsService<DevToolbarFlag>\n{\n private internalService = inject(DevToolbarInternalFeatureFlagService);\n\n /**\n * Sets the available flags that will be displayed in the tool on the dev toolbar\n * @param flags The flags to be displayed\n */\n setAvailableOptions(flags: DevToolbarFlag[]): void {\n this.internalService.setAppFlags(flags);\n }\n\n /**\n * Gets the flags that were forced/modified through the tool on the dev toolbar\n * @returns Observable of forced flags array\n */\n getForcedValues(): Observable<DevToolbarFlag[]> {\n return this.internalService.getForcedFlags();\n }\n\n /**\n * Gets ALL flag values with overrides already applied.\n * Returns the complete set of flags where overridden values replace base values.\n * Each flag includes an `isForced` property indicating if it was overridden.\n *\n * This method simplifies integration by eliminating the need to manually merge\n * base flags with overrides using combineLatest.\n *\n * @returns Observable of all flags with overrides applied\n *\n * @example\n * ```typescript\n * // Get a specific flag value with overrides applied\n * this.featureFlagsService.getValues().pipe(\n * map(flags => flags.find(f => f.id === 'newFeature')),\n * map(flag => flag?.isEnabled ?? false)\n * ).subscribe(isEnabled => {\n * if (isEnabled) {\n * // Enable feature\n * }\n * });\n * ```\n */\n getValues(): Observable<DevToolbarFlag[]> {\n return this.internalService.flags$;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DevToolsService } from '../../models/dev-tools.interface';\nimport { DevToolbarInternalLanguageService } from './language-internal.service';\nimport { Language } from './language.models';\n\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarLanguageService implements DevToolsService<Language> {\n private internalService = inject(DevToolbarInternalLanguageService);\n\n /**\n * Sets the available languages that will be displayed in the tool on the dev toolbar\n * @param languages The languages to be displayed\n */\n setAvailableOptions(languages: Language[]): void {\n this.internalService.setAppLanguages(languages);\n }\n\n /**\n * Gets the languages that were forced/modified through the tool on the dev toolbar\n * @returns Observable of forced languages array\n */\n getForcedValues(): Observable<Language[]> {\n return this.internalService.getForcedLanguage();\n }\n\n /**\n * Gets the forced language value.\n * For the language tool, this returns the same as getForcedValues() since\n * only one language can be selected at a time.\n * @returns Observable of forced language array (single item or empty)\n */\n getValues(): Observable<Language[]> {\n return this.internalService.getForcedLanguage();\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DevToolsService } from '../../models/dev-tools.interface';\nimport { DevToolbarInternalAppFeaturesService } from './app-features-internal.service';\nimport { DevToolbarAppFeature, ForcedAppFeaturesState } from './app-features.models';\n\n/**\n * Public service for managing app features in the dev toolbar.\n *\n * This service implements the DevToolsService interface and provides methods for:\n * - Configuring available product features\n * - Retrieving forced feature overrides\n * - Applying preset feature configurations\n * - Exporting current forced state for presets\n *\n * @example\n * ```typescript\n * import { DevToolbarAppFeaturesService } from 'ngx-dev-toolbar';\n *\n * @Component({...})\n * export class AppComponent implements OnInit {\n * private appFeaturesService = inject(DevToolbarAppFeaturesService);\n *\n * ngOnInit() {\n * // Configure available features based on current tier\n * const features: DevToolbarAppFeature[] = [\n * { id: 'analytics', name: 'Analytics Dashboard', isEnabled: true, isForced: false },\n * { id: 'multi-user', name: 'Multi-User Support', isEnabled: false, isForced: false }\n * ];\n * this.appFeaturesService.setAvailableOptions(features);\n *\n * // Subscribe to forced overrides\n * this.appFeaturesService.getForcedValues().subscribe(forcedFeatures => {\n * forcedFeatures.forEach(feature => {\n * // Apply forced feature state to application logic\n * this.applyFeatureState(feature.id, feature.isEnabled);\n * });\n * });\n * }\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarAppFeaturesService implements DevToolsService<DevToolbarAppFeature> {\n private internalService = inject(DevToolbarInternalAppFeaturesService);\n\n /**\n * Set available app features for the application.\n *\n * Configures the list of product features that can be toggled in the dev toolbar.\n * Features should represent product-level capabilities like license tiers,\n * deployment configurations, or environment flags.\n *\n * @param features - Array of app features to display in the toolbar\n * @throws Error if duplicate feature IDs or empty IDs are detected\n *\n * @example\n * ```typescript\n * const features: DevToolbarAppFeature[] = [\n * {\n * id: 'advanced-analytics',\n * name: 'Advanced Analytics Dashboard',\n * description: 'Access premium reporting and data visualization',\n * isEnabled: false, // Not available in current tier\n * isForced: false\n * },\n * {\n * id: 'multi-user-support',\n * name: 'Multi-User Collaboration',\n * description: 'Enable team features and user management',\n * isEnabled: true, // Available in current tier\n * isForced: false\n * }\n * ];\n * this.appFeaturesService.setAvailableOptions(features);\n * ```\n */\n setAvailableOptions(features: DevToolbarAppFeature[]): void {\n this.internalService.setAppFeatures(features);\n }\n\n /**\n * Get observable stream of features that have forced overrides.\n *\n * Emits an array of features that have been forced via the dev toolbar.\n * Only features with `isForced = true` are included in the emissions.\n * Use this to react to feature override changes and update application behavior.\n *\n * @returns Observable that emits array of forced features whenever state changes\n *\n * @example\n * ```typescript\n * this.appFeaturesService.getForcedValues()\n * .pipe(takeUntilDestroyed())\n * .subscribe(forcedFeatures => {\n * forcedFeatures.forEach(feature => {\n * if (feature.isEnabled) {\n * this.enableFeature(feature.id);\n * } else {\n * this.disableFeature(feature.id);\n * }\n * });\n * });\n * ```\n */\n getForcedValues(): Observable<DevToolbarAppFeature[]> {\n return this.internalService.getForcedFeatures();\n }\n\n /**\n * Gets ALL app feature values with overrides already applied.\n * Returns the complete set of features where overridden values replace base values.\n * Each feature includes an `isForced` property indicating if it was overridden.\n *\n * This method simplifies integration by eliminating the need to manually merge\n * base features with overrides using combineLatest.\n *\n * @returns Observable of all features with overrides applied\n *\n * @example\n * ```typescript\n * // Check if a feature is enabled with overrides applied\n * this.appFeaturesService.getValues().pipe(\n * map(features => features.find(f => f.id === 'premium-analytics')),\n * map(feature => feature?.isEnabled ?? false)\n * ).subscribe(isEnabled => {\n * if (isEnabled) {\n * // Enable premium analytics\n * }\n * });\n * ```\n */\n getValues(): Observable<DevToolbarAppFeature[]> {\n return this.internalService.features$;\n }\n\n /**\n * Apply a preset feature configuration (for preset tool integration).\n *\n * Accepts a forced features state object and applies it to the current configuration.\n * Invalid feature IDs (not in configured features) are filtered out with a warning.\n *\n * @param state - Forced features state containing enabled/disabled arrays\n *\n * @example\n * ```typescript\n * // Apply \"Enterprise Tier\" preset\n * const enterprisePreset: ForcedAppFeaturesState = {\n * enabled: ['analytics', 'multi-user', 'white-label', 'sso'],\n * disabled: []\n * };\n * this.appFeaturesService.applyPresetFeatures(enterprisePreset);\n *\n * // Apply \"Basic Tier\" preset\n * const basicPreset: ForcedAppFeaturesState = {\n * enabled: [],\n * disabled: ['analytics', 'multi-user', 'white-label', 'sso']\n * };\n * this.appFeaturesService.applyPresetFeatures(basicPreset);\n * ```\n */\n applyPresetFeatures(state: ForcedAppFeaturesState): void {\n this.internalService.applyForcedState(state);\n }\n\n /**\n * Get current forced feature state as a snapshot (for preset export).\n *\n * Returns the current forced features state with enabled/disabled arrays.\n * Useful for exporting toolbar state to save as a preset or for debugging.\n * Returns a defensive copy - mutations will not affect internal state.\n *\n * @returns Current forced features state\n *\n * @example\n * ```typescript\n * // Export current toolbar state to save as preset\n * const currentState = this.appFeaturesService.getCurrentForcedState();\n * this.presetsService.savePreset('my-config', {\n * appFeatures: currentState,\n * // ... other tool states\n * });\n *\n * console.log(currentState);\n * // { enabled: ['analytics'], disabled: ['white-label'] }\n * ```\n */\n getCurrentForcedState(): ForcedAppFeaturesState {\n return this.internalService.getCurrentForcedState();\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DevToolsService } from '../../models/dev-tools.interface';\nimport { DevToolbarInternalPermissionsService } from './permissions-internal.service';\nimport { DevToolbarPermission, ForcedPermissionsState } from './permissions.models';\n\n/**\n * Public service for integrating the Permissions Tool with your application.\n * Use this service to:\n * 1. Register your application's permissions with setAvailableOptions()\n * 2. Listen for toolbar permission overrides with getForcedValues()\n * 3. Apply preset permission states for testing with applyPreset()\n *\n * @example\n * ```typescript\n * constructor(private permissionsService: DevToolbarPermissionsService) {\n * // Register permissions\n * this.permissionsService.setAvailableOptions([\n * { id: 'can-edit', name: 'Can Edit', isGranted: false, isForced: false }\n * ]);\n *\n * // Listen for overrides\n * this.permissionsService.getForcedValues().subscribe(forcedPermissions => {\n * // Update your app's permission state\n * });\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarPermissionsService\n implements DevToolsService<DevToolbarPermission>\n{\n private internalService = inject(DevToolbarInternalPermissionsService);\n\n /**\n * Sets the available permissions that will be displayed in the toolbar tool.\n * Call this in your app initialization to register permissions.\n *\n * @param permissions Array of permissions to display in the toolbar\n *\n * @example\n * ```typescript\n * this.permissionsService.setAvailableOptions([\n * {\n * id: 'can-edit-posts',\n * name: 'Edit Posts',\n * description: 'Can edit blog posts',\n * isGranted: false,\n * isForced: false\n * }\n * ]);\n * ```\n */\n setAvailableOptions(permissions: DevToolbarPermission[]): void {\n this.internalService.setAppPermissions(permissions);\n }\n\n /**\n * Gets an observable of permissions that were forced/overridden through the toolbar.\n * Subscribe to this to update your application's permission state.\n *\n * @returns Observable emitting array of forced permissions whenever changes occur\n *\n * @example\n * ```typescript\n * this.permissionsService.getForcedValues().subscribe(forcedPermissions => {\n * forcedPermissions.forEach(permission => {\n * this.updatePermission(permission.id, permission.isGranted);\n * });\n * });\n * ```\n */\n getForcedValues(): Observable<DevToolbarPermission[]> {\n return this.internalService.getForcedPermissions();\n }\n\n /**\n * Gets ALL permission values with overrides already applied.\n * Returns the complete set of permissions where overridden values replace base values.\n * Each permission includes an `isForced` property indicating if it was overridden.\n *\n * This method simplifies integration by eliminating the need to manually merge\n * base permissions with overrides using combineLatest.\n *\n * @returns Observable of all permissions with overrides applied\n *\n * @example\n * ```typescript\n * // Simple permission check with overrides applied\n * this.permissionsService.getValues().pipe(\n * map(permissions => permissions.find(p => p.id === 'can-edit')),\n * map(permission => permission?.isGranted ?? false)\n * ).subscribe(canEdit => {\n * if (canEdit) {\n * // Enable edit functionality\n * }\n * });\n * ```\n */\n getValues(): Observable<DevToolbarPermission[]> {\n return this.internalService.permissions$;\n }\n\n /**\n * Apply a preset permission state. Useful for automated testing scenarios.\n *\n * @param state The forced permissions state to apply\n *\n * @example\n * ```typescript\n * this.permissionsService.applyPreset({\n * granted: ['can-edit-posts'],\n * denied: ['can-delete-posts']\n * });\n * ```\n */\n applyPreset(state: ForcedPermissionsState): void {\n this.internalService.applyPresetPermissions(state);\n }\n\n /**\n * Get the current forced permission state.\n *\n * @returns Current forced permissions state\n */\n getCurrentState(): ForcedPermissionsState {\n return this.internalService.getCurrentForcedState();\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DevToolbarInternalPresetsService } from './presets-internal.service';\nimport {\n DevToolbarPreset,\n DevToolbarPresetConfig,\n} from './presets.models';\n\n/**\n * Partial preset for initialization (without generated fields)\n */\nexport interface InitialPreset {\n name: string;\n description?: string;\n config: DevToolbarPresetConfig;\n}\n\n/**\n * Public service for managing dev toolbar presets.\n * Allows developers to programmatically save, load, and manage presets.\n */\n@Injectable({ providedIn: 'root' })\nexport class DevToolbarPresetsService {\n private internalService = inject(DevToolbarInternalPresetsService);\n\n /**\n * Get all saved presets as an Observable\n */\n getPresets(): Observable<DevToolbarPreset[]> {\n return this.internalService.presets$;\n }\n\n /**\n * Save current toolbar state as a preset\n * @param name - Name for the preset\n * @param description - Optional description\n * @returns The created preset\n */\n savePreset(name: string, description?: string): DevToolbarPreset {\n return this.internalService.saveCurrentAsPreset(name, description);\n }\n\n /**\n * Apply a preset (load its configuration into all tools)\n * @param presetId - ID of the preset to apply\n */\n async applyPreset(presetId: string): Promise<void> {\n return this.internalService.applyPreset(presetId);\n }\n\n /**\n * Update a preset with current toolbar state\n * @param presetId - ID of the preset to update\n */\n updatePreset(presetId: string): void {\n this.internalService.updatePreset(presetId);\n }\n\n /**\n * Delete a preset\n * @param presetId - ID of the preset to delete\n */\n deletePreset(presetId: string): void {\n this.internalService.deletePreset(presetId);\n }\n\n /**\n * Export a preset as JSON string\n * @param presetId - ID of the preset to export\n * @returns JSON string representation of the preset\n */\n exportPreset(presetId: string): string | null {\n const preset = this.internalService.getPresetById(presetId);\n if (!preset) return null;\n return JSON.stringify(preset, null, 2);\n }\n\n /**\n * Import a preset from JSON string\n * @param json - JSON string representation of a preset\n * @returns The imported preset\n * @throws Error if JSON is invalid\n */\n importPreset(json: string): DevToolbarPreset {\n const preset = JSON.parse(json) as DevToolbarPreset;\n return this.internalService.addPreset(preset);\n }\n\n /**\n * Initialize presets with predefined configurations.\n * Useful for setting up default presets that all developers can use.\n *\n * @param presets - Array of preset configurations to initialize\n * @returns Array of created presets\n *\n * @example\n * ```typescript\n * const presetsService = inject(DevToolbarPresetsService);\n *\n * presetsService.initializePresets([\n * {\n * name: 'Admin User',\n * description: 'Full access admin configuration',\n * config: {\n * featureFlags: {\n * enabled: ['admin-panel', 'advanced-features'],\n * disabled: []\n * },\n * permissions: {\n * granted: ['admin', 'write', 'delete'],\n * denied: []\n * },\n * appFeatures: {\n * enabled: ['analytics', 'reporting'],\n * disabled: []\n * },\n * language: 'en'\n * }\n * },\n * {\n * name: 'Read-Only User',\n * description: 'Limited access for viewing only',\n * config: {\n * featureFlags: {\n * enabled: [],\n * disabled: ['admin-panel', 'advanced-features']\n * },\n * permissions: {\n * granted: ['read'],\n * denied: ['write', 'delete']\n * },\n * appFeatures: {\n * enabled: [],\n * disabled: ['analytics', 'reporting']\n * },\n * language: null\n * }\n * }\n * ]);\n * ```\n */\n initializePresets(presets: InitialPreset[]): DevToolbarPreset[] {\n return presets.map((preset) =>\n this.internalService.addPreset({\n id: '', // Will be generated\n createdAt: '', // Will be generated\n updatedAt: '', // Will be generated\n ...preset,\n })\n );\n }\n\n /**\n * Clear all existing presets and set new initial presets.\n * Use this to replace all presets with a fresh set of configurations.\n *\n * @param presets - Array of preset configurations to set as initial\n * @returns Array of created presets\n */\n setInitialPresets(presets: InitialPreset[]): DevToolbarPreset[] {\n // Clear existing presets\n const currentPresets = this.internalService.presets();\n currentPresets.forEach((preset) => {\n this.internalService.deletePreset(preset.id);\n });\n\n // Add new presets\n return this.initializePresets(presets);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}