ngx-dev-toolbar 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +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/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/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/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/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/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/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/ngx-dev-toolbar.ts"],"sourcesContent":["import { Injectable, computed, signal } from '@angular/core';\n\ninterface DevToolbarState {\n isHidden: boolean;\n activeToolId: string | null;\n error: string | null;\n theme: 'light' | 'dark';\n delay: number;\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 });\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\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","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-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-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-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 { 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 { 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 { 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 BugIconComponent,\n CodeIconComponent,\n DatabaseIconComponent,\n DocsIconComponent,\n DiscordIconComponent,\n ExportIconComponent,\n GaugeIconComponent,\n GearIconComponent,\n GitBranchIconComponent,\n ImportIconComponent,\n LayoutIconComponent,\n LightbulbIconComponent,\n LightingIconComponent,\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 ('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 ('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 ('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 {\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 { 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=\"window dev-toolbar\" [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})\nexport class DevToolbarWindowComponent {\n readonly devToolbarStateService = inject(DevToolbarStateService);\n readonly config = input.required<DevToolbarWindowOptions>();\n readonly close = 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.close.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 ContentChild,\n ElementRef,\n ViewChild,\n computed,\n inject,\n input,\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=\"dev-toolbar-tool\" cdkOverlayOrigin>\n <div\n class=\"dev-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 cdkConnectedOverlay\n >\n <ndt-window [@slideAnimation] [config]=\"options()\" (close)=\"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 @ViewChild('buttonContainer') buttonContainer!: ElementRef;\n\n @ContentChild(DevToolbarToolButtonComponent)\n buttonComponent!: 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 styles: [\n `\n :host {\n display: block;\n }\n\n .input {\n width: 100%;\n padding: var(--ndt-spacing-sm) var(--ndt-spacing-md);\n border: 1px solid var(--ndt-border-primary);\n border-radius: var(--ndt-border-radius-small);\n background-color: var(--ndt-bg-primary);\n color: var(--ndt-text-primary);\n font-size: var(--ndt-font-size-sm);\n transition: var(--ndt-transition-default);\n box-sizing: border-box;\n\n &::placeholder {\n color: var(--ndt-text-muted);\n }\n\n &:focus {\n outline: none;\n border-color: var(--ndt-primary);\n box-shadow: 0 0 0 2px rgba(var(--ndt-primary-rgb), 0.2);\n }\n\n &:disabled {\n background-color: var(--ndt-bg-secondary);\n cursor: not-allowed;\n color: var(--ndt-text-muted);\n }\n }\n `,\n ],\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=\"dev-toolbar 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 (overlayOutsideClick)=\"close()\"\n >\n <div\n [id]=\"selectMenuId\"\n class=\"dev-toolbar 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 { 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 ...flag,\n isForced: enabled.includes(flag.id) || disabled.includes(flag.id),\n isEnabled: enabled.includes(flag.id),\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","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DevToolbarInputComponent } from '../../components/input/input.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 ],\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 <ndt-select\n [value]=\"activeFilter()\"\n [options]=\"filterOptions\"\n [size]=\"'medium'\"\n (valueChange)=\"onFilterChange($event)\"\n />\n </div>\n\n @if (hasNoFlags()) {\n <div class=\"empty\">\n <p>No flags found</p>\n </div>\n } @else if (hasNoFilteredFlags()) {\n <div class=\"empty\">\n <p>No flags found matching your filter</p>\n </div>\n } @else {\n <div class=\"flag-list\">\n @for (flag of filteredFlags(); track flag.id) {\n <div class=\"flag\">\n <div class=\"info\">\n <h3>{{ flag.name }}</h3>\n <p>{{ flag?.description }}</p>\n </div>\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 </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: 0.65;\n }\n\n ndt-select {\n flex: 0.35;\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-warning-border);\n border-radius: var(--ndt-border-radius-medium);\n padding: var(--ndt-spacing-md);\n background: var(--ndt-warning-background);\n color: var(--ndt-text-muted);\n }\n\n .flag-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 .flag {\n display: flex;\n flex-direction: row;\n gap: var(--ndt-spacing-sm);\n background: var(--ndt-background-secondary);\n .info {\n flex: 0 0 65%;\n h3 {\n margin: 0;\n font-size: var(--ndt-font-size-md);\n color: var(--ndt-text-primary);\n }\n\n p {\n font-size: var(--ndt-font-size-xs);\n color: var(--ndt-text-muted);\n }\n }\n\n ndt-select {\n flex: 0 0 35%;\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 return 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 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 { 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})\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 { 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})\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 { 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})\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=\"instruction\">\n <div class=\"instruction__label\">\n <span class=\"instruction__label-text\">Theme</span>\n <span class=\"instruction__label-description\">\n Switch between light and dark mode\n </span>\n </div>\n <div class=\"instruction__control\">\n <div class=\"instruction__control-button\">\n <ndt-button\n [isActive]=\"true\"\n (click)=\"onToggleTheme()\"\n variant=\"icon\"\n [ariaLabel]=\"\n state.isDarkTheme()\n ? 'Switch to light theme'\n : 'Switch to dark theme'\n \"\n [icon]=\"state.isDarkTheme() ? 'sun' : 'moon'\"\n />\n </div>\n </div>\n </div>\n\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 onToggleTheme(): void {\n const newTheme: ThemeType = this.state.isDarkTheme() ? 'light' : 'dark';\n this.settingsService.setSettings({ isDarkMode: newTheme === 'dark' });\n this.state.setTheme(newTheme);\n }\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, 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","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 {\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n Component,\n DestroyRef,\n OnInit,\n inject,\n isDevMode,\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 { 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';\n\n@Component({\n standalone: true,\n selector: 'ndt-toolbar',\n styleUrls: ['./dev-toolbar.component.scss'],\n imports: [\n DevToolbarHomeToolComponent,\n DevToolbarLanguageToolComponent,\n DevToolbarFeatureFlagsToolComponent,\n ],\n template: `\n @if (isDevMode) {\n <div\n aria-label=\"Developer tools\"\n role=\"toolbar\"\n class=\"dev-toolbar\"\n [@toolbarState]=\"state.isVisible() ? 'visible' : 'hidden'\"\n [attr.data-theme]=\"state.theme()\"\n [class.dev-toolbar--active]=\"state.isVisible()\"\n (mouseenter)=\"onMouseEnter()\"\n >\n <ndt-home-tool />\n <ndt-language-tool />\n <ndt-feature-flags-tool />\n <ng-content />\n </div>\n }\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 {\n state = inject(DevToolbarStateService);\n destroyRef = inject(DestroyRef);\n settingsService = inject(SettingsService);\n\n isDevMode = isDevMode();\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 ngOnInit(): void {\n const settings = this.settingsService.getSettings();\n this.state.setTheme(settings.isDarkMode ? 'dark' : 'light');\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","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","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 * 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/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/network-mocker-tool/network-mocker.service.ts","../../../../libs/ngx-dev-toolbar/src/tools/network-mocker-tool/network-mocker-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/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/ngx-dev-toolbar.ts"],"sourcesContent":["import { Injectable, computed, signal } from '@angular/core';\n\ninterface DevToolbarState {\n isHidden: boolean;\n activeToolId: string | null;\n error: string | null;\n theme: 'light' | 'dark';\n delay: number;\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 });\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\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","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 {\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 { 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=\"window dev-toolbar\" [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})\nexport class DevToolbarWindowComponent {\n readonly devToolbarStateService = inject(DevToolbarStateService);\n readonly config = input.required<DevToolbarWindowOptions>();\n readonly close = 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.close.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 ContentChild,\n ElementRef,\n ViewChild,\n computed,\n inject,\n input,\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=\"dev-toolbar-tool\" cdkOverlayOrigin>\n <div\n class=\"dev-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 cdkConnectedOverlay\n >\n <ndt-window [@slideAnimation] [config]=\"options()\" (close)=\"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 @ViewChild('buttonContainer') buttonContainer!: ElementRef;\n\n @ContentChild(DevToolbarToolButtonComponent)\n buttonComponent!: 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 styles: [\n `\n :host {\n display: block;\n }\n\n .input {\n width: 100%;\n padding: var(--ndt-spacing-sm) var(--ndt-spacing-md);\n border: 1px solid var(--ndt-border-primary);\n border-radius: var(--ndt-border-radius-small);\n background-color: var(--ndt-bg-primary);\n color: var(--ndt-text-primary);\n font-size: var(--ndt-font-size-sm);\n transition: var(--ndt-transition-default);\n box-sizing: border-box;\n\n &::placeholder {\n color: var(--ndt-text-muted);\n }\n\n &:focus {\n outline: none;\n border-color: var(--ndt-primary);\n box-shadow: 0 0 0 2px rgba(var(--ndt-primary-rgb), 0.2);\n }\n\n &:disabled {\n background-color: var(--ndt-bg-secondary);\n cursor: not-allowed;\n color: var(--ndt-text-muted);\n }\n }\n `,\n ],\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=\"dev-toolbar 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 (overlayOutsideClick)=\"close()\"\n >\n <div\n [id]=\"selectMenuId\"\n class=\"dev-toolbar 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 };\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 { 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 ],\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 @if (hasNoFeatures()) {\n <div class=\"empty\">\n <p>No app features found</p>\n <small>Call setAvailableOptions() to configure features</small>\n </div>\n } @else if (hasNoFilteredFeatures()) {\n <div class=\"empty\">\n <p>No features match your filter</p>\n </div>\n } @else {\n <div class=\"feature-list\">\n @for (feature of filteredFeatures(); track feature.id) {\n <div class=\"feature\">\n <div class=\"info\">\n <h3>{{ feature.name }}</h3>\n @if (feature.description) {\n <p>{{ feature.description }}</p>\n }\n </div>\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 </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: 0.65;\n }\n\n .filter-wrapper {\n flex: 0.35;\n display: flex;\n align-items: center;\n gap: var(--ndt-spacing-xs);\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: 1;\n }\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-warning-border);\n border-radius: var(--ndt-border-radius-medium);\n padding: var(--ndt-spacing-md);\n background: var(--ndt-warning-background);\n color: var(--ndt-text-muted);\n\n p {\n margin: 0;\n font-size: var(--ndt-font-size-md);\n }\n\n small {\n font-size: var(--ndt-font-size-xs);\n opacity: 0.8;\n }\n }\n\n .feature-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 .feature {\n display: flex;\n flex-direction: row;\n gap: var(--ndt-spacing-sm);\n background: var(--ndt-background-secondary);\n padding: var(--ndt-spacing-md);\n border-radius: var(--ndt-border-radius-medium);\n\n .info {\n flex: 0 0 65%;\n\n h3 {\n margin: 0;\n font-size: var(--ndt-font-size-md);\n color: var(--ndt-text-primary);\n }\n\n p {\n margin: var(--ndt-spacing-xs) 0 0 0;\n font-size: var(--ndt-font-size-xs);\n color: var(--ndt-text-muted);\n }\n }\n\n ndt-select {\n flex: 0 0 35%;\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 return 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 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: '', 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' (empty string): 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 '':\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 ...flag,\n isForced: enabled.includes(flag.id) || disabled.includes(flag.id),\n isEnabled: enabled.includes(flag.id),\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","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 { 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 ],\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 @if (hasNoFlags()) {\n <div class=\"empty\">\n <p>No flags found</p>\n </div>\n } @else if (hasNoFilteredFlags()) {\n <div class=\"empty\">\n <p>No flags found matching your filter</p>\n </div>\n } @else {\n <div class=\"flag-list\">\n @for (flag of filteredFlags(); track flag.id) {\n <div class=\"flag\">\n <div class=\"info\">\n <h3>{{ flag.name }}</h3>\n <p>{{ flag?.description }}</p>\n </div>\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 </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: 0.65;\n }\n\n .filter-wrapper {\n flex: 0.35;\n display: flex;\n align-items: center;\n gap: var(--ndt-spacing-xs);\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: 1;\n }\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-warning-border);\n border-radius: var(--ndt-border-radius-medium);\n padding: var(--ndt-spacing-md);\n background: var(--ndt-warning-background);\n color: var(--ndt-text-muted);\n }\n\n .flag-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 .flag {\n display: flex;\n flex-direction: row;\n gap: var(--ndt-spacing-sm);\n background: var(--ndt-background-secondary);\n .info {\n flex: 0 0 65%;\n h3 {\n margin: 0;\n font-size: var(--ndt-font-size-md);\n color: var(--ndt-text-primary);\n }\n\n p {\n font-size: var(--ndt-font-size-xs);\n color: var(--ndt-text-muted);\n }\n }\n\n ndt-select {\n flex: 0 0 35%;\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 return 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 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 { 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})\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 { 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})\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 { 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})\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=\"instruction\">\n <div class=\"instruction__label\">\n <span class=\"instruction__label-text\">Theme</span>\n <span class=\"instruction__label-description\">\n Switch between light and dark mode\n </span>\n </div>\n <div class=\"instruction__control\">\n <div class=\"instruction__control-button\">\n <ndt-button\n [isActive]=\"true\"\n (click)=\"onToggleTheme()\"\n variant=\"icon\"\n [ariaLabel]=\"\n state.isDarkTheme()\n ? 'Switch to light theme'\n : 'Switch to dark theme'\n \"\n [icon]=\"state.isDarkTheme() ? 'sun' : 'moon'\"\n />\n </div>\n </div>\n </div>\n\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 onToggleTheme(): void {\n const newTheme: ThemeType = this.state.isDarkTheme() ? 'light' : 'dark';\n this.settingsService.setSettings({ isDarkMode: newTheme === 'dark' });\n this.state.setTheme(newTheme);\n }\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, 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","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, signal } from '@angular/core';\nimport { MockRequest, MockRequestConfig } from './network-mocker.models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DevToolbarNetworkMockerService {\n private readonly mockRequests = signal<MockRequest[]>([]);\n private readonly isMockingEnabled = signal(false);\n\n getMockRequests() {\n return this.mockRequests.asReadonly();\n }\n\n getIsMockingEnabled() {\n return this.isMockingEnabled.asReadonly();\n }\n\n addMockRequest(config: MockRequestConfig): void {\n const mockRequest: MockRequest = {\n id: crypto.randomUUID(),\n url: config.url,\n method: config.method,\n status: config.status || 200,\n response: config.response || {},\n isActive: true,\n createdAt: new Date(),\n };\n\n this.mockRequests.update((requests) => [mockRequest, ...requests]);\n }\n\n removeMockRequest(id: string): void {\n this.mockRequests.update((requests) =>\n requests.filter((request) => request.id !== id)\n );\n }\n\n toggleMockRequest(id: string): void {\n this.mockRequests.update((requests) =>\n requests.map((request) =>\n request.id === id\n ? { ...request, isActive: !request.isActive }\n : request\n )\n );\n }\n\n enableMocking(): void {\n this.isMockingEnabled.set(true);\n console.log('Network mocking enabled');\n }\n\n disableMocking(): void {\n this.isMockingEnabled.set(false);\n console.log('Network mocking disabled');\n }\n\n clearAllMocks(): void {\n this.mockRequests.set([]);\n this.isMockingEnabled.set(false);\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 { DevToolbarInputComponent } from '../../components/input/input.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 { MockRequestConfig } from './network-mocker.models';\nimport { DevToolbarNetworkMockerService } from './network-mocker.service';\n\n@Component({\n selector: 'ndt-network-mocker-tool',\n standalone: true,\n imports: [\n FormsModule,\n DevToolbarToolComponent,\n DevToolbarButtonComponent,\n DevToolbarInputComponent,\n DevToolbarSelectComponent,\n ],\n template: `\n <ndt-toolbar-tool [options]=\"options\" title=\"Network Mocker\" icon=\"network\">\n <div class=\"container\">\n <div class=\"header\">\n <h3>Mock Network Requests</h3>\n <p>Intercept and mock HTTP requests for testing and development.</p>\n </div>\n\n <div class=\"form\">\n <div class=\"form-row\">\n <ndt-input\n [(value)]=\"newMockUrl\"\n placeholder=\"Enter URL pattern (e.g., /api/users/*)\"\n ariaLabel=\"Mock URL\"\n />\n <ndt-select\n [(value)]=\"newMockMethod\"\n [options]=\"httpMethods\"\n size=\"small\"\n ariaLabel=\"HTTP Method\"\n />\n </div>\n\n <div class=\"form-row\">\n <ndt-input\n [(value)]=\"newMockStatus\"\n placeholder=\"Status code (default: 200)\"\n type=\"number\"\n ariaLabel=\"Status Code\"\n />\n <ndt-input\n [(value)]=\"newMockResponse\"\n placeholder=\"Response JSON (optional)\"\n ariaLabel=\"Response JSON\"\n />\n </div>\n\n <div class=\"actions\">\n <ndt-button label=\"Add Mock\" icon=\"import\" (click)=\"onAddMock()\" />\n <ndt-button\n [label]=\"\n isMockingEnabled() ? 'Disable Mocking' : 'Enable Mocking'\n \"\n [icon]=\"isMockingEnabled() ? 'trash' : 'network'\"\n (click)=\"onToggleMocking()\"\n />\n </div>\n </div>\n\n @if (hasNoMocks()) {\n <div class=\"empty\">\n <p>No mock requests configured. Add your first mock above.</p>\n </div>\n } @else {\n <div class=\"mocks-list\">\n <h4>Configured Mocks</h4>\n @for (mock of mockRequests(); track mock.id) {\n <div class=\"mock-item\">\n <div class=\"mock-info\">\n <div class=\"mock-method\">{{ mock.method }}</div>\n <div class=\"mock-url\">{{ mock.url }}</div>\n <div class=\"mock-status\">{{ mock.status }}</div>\n </div>\n <div class=\"mock-actions\">\n <ndt-button\n variant=\"icon\"\n [icon]=\"mock.isActive ? 'star' : 'moon'\"\n [ariaLabel]=\"mock.isActive ? 'Disable mock' : 'Enable mock'\"\n (click)=\"onToggleMock(mock.id)\"\n />\n <ndt-button\n variant=\"icon\"\n icon=\"trash\"\n ariaLabel=\"Remove mock\"\n (click)=\"onRemoveMock(mock.id)\"\n />\n </div>\n </div>\n }\n </div>\n } @if (isMockingEnabled()) {\n <div class=\"status\">\n <p>✅ Network mocking is active</p>\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 gap: var(--ndt-spacing-md);\n padding: var(--ndt-spacing-md);\n }\n\n .header {\n text-align: center;\n flex-shrink: 0;\n\n h3 {\n margin: 0 0 var(--ndt-spacing-sm) 0;\n font-size: var(--ndt-font-size-lg);\n color: var(--ndt-text-primary);\n font-weight: 600;\n }\n\n p {\n margin: 0;\n font-size: var(--ndt-font-size-sm);\n color: var(--ndt-text-muted);\n }\n }\n\n .form {\n display: flex;\n flex-direction: column;\n gap: var(--ndt-spacing-sm);\n flex-shrink: 0;\n padding: var(--ndt-spacing-md);\n background: var(--ndt-background-secondary);\n border: 1px solid var(--ndt-border-primary);\n border-radius: var(--ndt-border-radius-medium);\n }\n\n .form-row {\n display: flex;\n gap: var(--ndt-spacing-sm);\n\n ndt-input {\n flex: 1;\n }\n\n ndt-select {\n flex: 0 0 120px;\n }\n }\n\n .actions {\n display: flex;\n gap: var(--ndt-spacing-sm);\n margin-top: var(--ndt-spacing-sm);\n }\n\n .empty {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n color: var(--ndt-text-muted);\n text-align: center;\n font-size: var(--ndt-font-size-sm);\n }\n\n .mocks-list {\n display: flex;\n flex-direction: column;\n gap: var(--ndt-spacing-sm);\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n\n h4 {\n margin: 0 0 var(--ndt-spacing-sm) 0;\n font-size: var(--ndt-font-size-md);\n color: var(--ndt-text-primary);\n font-weight: 600;\n }\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\n .mock-item {\n display: flex;\n align-items: center;\n gap: var(--ndt-spacing-sm);\n padding: var(--ndt-spacing-sm);\n background: var(--ndt-background-secondary);\n border: 1px solid var(--ndt-border-primary);\n border-radius: var(--ndt-border-radius-small);\n\n .mock-info {\n flex: 1;\n display: flex;\n align-items: center;\n gap: var(--ndt-spacing-sm);\n }\n\n .mock-method {\n font-weight: 600;\n font-size: var(--ndt-font-size-xs);\n color: var(--ndt-primary);\n background: var(--ndt-primary-background);\n padding: 2px 6px;\n border-radius: var(--ndt-border-radius-small);\n min-width: 40px;\n text-align: center;\n }\n\n .mock-url {\n flex: 1;\n font-size: var(--ndt-font-size-sm);\n color: var(--ndt-text-primary);\n font-family: monospace;\n }\n\n .mock-status {\n font-size: var(--ndt-font-size-xs);\n color: var(--ndt-text-muted);\n min-width: 30px;\n text-align: center;\n }\n\n .mock-actions {\n display: flex;\n gap: var(--ndt-spacing-xs);\n }\n }\n\n .status {\n text-align: center;\n padding: var(--ndt-spacing-sm) var(--ndt-spacing-md);\n background: var(--ndt-success-background);\n border: 1px solid var(--ndt-success-border);\n border-radius: var(--ndt-border-radius-small);\n color: var(--ndt-success-text);\n font-size: var(--ndt-font-size-sm);\n flex-shrink: 0;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DevToolbarNetworkMockerToolComponent {\n // Injects\n private readonly networkMockerService = inject(\n DevToolbarNetworkMockerService\n );\n\n // Signals\n protected readonly newMockUrl = signal('');\n protected readonly newMockMethod = signal('GET');\n protected readonly newMockStatus = signal('200');\n protected readonly newMockResponse = signal('');\n\n // Computed values\n protected readonly mockRequests = this.networkMockerService.getMockRequests();\n protected readonly isMockingEnabled =\n this.networkMockerService.getIsMockingEnabled();\n protected readonly hasNoMocks = computed(\n () => this.mockRequests().length === 0\n );\n\n // Window options\n protected readonly options = {\n title: 'Network Mocker',\n description: 'Intercept and mock HTTP requests for testing and development',\n isClosable: true,\n size: 'tall',\n id: 'ndt-network-mocker',\n isBeta: true,\n } as DevToolbarWindowOptions;\n\n // Other properties\n protected readonly httpMethods = [\n { value: 'GET', label: 'GET' },\n { value: 'POST', label: 'POST' },\n { value: 'PUT', label: 'PUT' },\n { value: 'DELETE', label: 'DELETE' },\n { value: 'PATCH', label: 'PATCH' },\n ];\n\n // Public methods\n protected onAddMock(): void {\n const url = this.newMockUrl().trim();\n if (!url) return;\n\n const config: MockRequestConfig = {\n url,\n method: this.newMockMethod() as any,\n status: parseInt(this.newMockStatus()) || 200,\n response: this.newMockResponse()\n ? JSON.parse(this.newMockResponse())\n : {},\n };\n\n this.networkMockerService.addMockRequest(config);\n\n // Reset form\n this.newMockUrl.set('');\n this.newMockMethod.set('GET');\n this.newMockStatus.set('200');\n this.newMockResponse.set('');\n }\n\n protected onToggleMocking(): void {\n if (this.isMockingEnabled()) {\n this.networkMockerService.disableMocking();\n } else {\n this.networkMockerService.enableMocking();\n }\n }\n\n protected onToggleMock(mockId: string): void {\n this.networkMockerService.toggleMockRequest(mockId);\n }\n\n protected onRemoveMock(mockId: string): void {\n this.networkMockerService.removeMockRequest(mockId);\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 ...permission,\n isForced: granted.includes(permission.id) || denied.includes(permission.id),\n isGranted: granted.includes(permission.id)\n ? true\n : denied.includes(permission.id)\n ? false\n : permission.isGranted,\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: any): state is ForcedPermissionsState {\n return (\n state &&\n typeof state === 'object' &&\n Array.isArray(state.granted) &&\n Array.isArray(state.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 { 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 PermissionValue,\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 ],\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 @if (hasNoPermissions()) {\n <div class=\"empty\">\n <p>No permissions found</p>\n <p class=\"hint\">Call setAvailableOptions() to configure permissions</p>\n </div>\n } @else if (hasNoFilteredPermissions()) {\n <div class=\"empty\">\n <p>No permissions match your filter</p>\n </div>\n } @else {\n <div class=\"permission-list\">\n @for (permission of filteredPermissions(); track permission.id) {\n <div class=\"permission\">\n <div class=\"info\">\n <h3>{{ permission.name }}</h3>\n <p>{{ permission?.description }}</p>\n </div>\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 </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: 0.65;\n }\n\n .filter-wrapper {\n flex: 0.35;\n display: flex;\n align-items: center;\n gap: var(--ndt-spacing-xs);\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: 1;\n }\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-warning-border);\n border-radius: var(--ndt-border-radius-medium);\n padding: var(--ndt-spacing-md);\n background: var(--ndt-warning-background);\n color: var(--ndt-text-muted);\n\n p {\n margin: 0;\n }\n\n .hint {\n font-size: var(--ndt-font-size-xs);\n }\n }\n\n .permission-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 .permission {\n display: flex;\n flex-direction: row;\n gap: var(--ndt-spacing-sm);\n background: var(--ndt-background-secondary);\n\n .info {\n flex: 0 0 65%;\n\n h3 {\n margin: 0;\n font-size: var(--ndt-font-size-md);\n color: var(--ndt-text-primary);\n }\n\n p {\n font-size: var(--ndt-font-size-xs);\n color: var(--ndt-text-muted);\n }\n }\n\n ndt-select {\n flex: 0 0 35%;\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 return 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 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 {\n animate,\n state,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n Component,\n DestroyRef,\n OnInit,\n inject,\n isDevMode,\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 { 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 { DevToolbarNetworkMockerToolComponent } from './tools/network-mocker-tool/network-mocker-tool.component';\nimport { DevToolbarPermissionsToolComponent } from './tools/permissions-tool/permissions-tool.component';\n\n@Component({\n standalone: true,\n selector: 'ndt-toolbar',\n styleUrls: ['./dev-toolbar.component.scss'],\n imports: [\n DevToolbarHomeToolComponent,\n DevToolbarLanguageToolComponent,\n DevToolbarFeatureFlagsToolComponent,\n DevToolbarAppFeaturesToolComponent,\n DevToolbarNetworkMockerToolComponent,\n DevToolbarPermissionsToolComponent,\n ],\n template: `\n @if (isDevMode) {\n <div\n aria-label=\"Developer tools\"\n role=\"toolbar\"\n class=\"dev-toolbar\"\n [@toolbarState]=\"state.isVisible() ? 'visible' : 'hidden'\"\n [attr.data-theme]=\"state.theme()\"\n [class.dev-toolbar--active]=\"state.isVisible()\"\n (mouseenter)=\"onMouseEnter()\"\n >\n <ndt-home-tool />\n <ndt-language-tool />\n <ndt-feature-flags-tool />\n <ndt-app-features-tool />\n <ndt-permissions-tool />\n <ndt-network-mocker-tool />\n <ng-content />\n </div>\n }\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 {\n state = inject(DevToolbarStateService);\n destroyRef = inject(DestroyRef);\n settingsService = inject(SettingsService);\n\n isDevMode = isDevMode();\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 ngOnInit(): void {\n const settings = this.settingsService.getSettings();\n this.state.setTheme(settings.isDarkMode ? 'dark' : 'light');\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","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","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","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 * 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 * 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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}