{"version":3,"file":"ng-vagabond-lab-ng-dsv-ds-theme.mjs","sources":["../../../projects/ng-dsv/ds/theme/component/dsv.theme.component.ts","../../../projects/ng-dsv/ds/theme/component/dsv.theme.component.html","../../../projects/ng-dsv/ds/theme/component/switch/dsv.theme.switch.component.ts","../../../projects/ng-dsv/ds/theme/component/switch/dsv.theme.switch.component.html","../../../projects/ng-dsv/ds/theme/service/dsv.theme.service.ts","../../../projects/ng-dsv/ds/theme/ng-vagabond-lab-ng-dsv-ds-theme.ts"],"sourcesContent":["import { Component, effect, HostBinding, input } from '@angular/core';\n\nexport type ThemeType = {\n  background?: string;\n  backgroundDark?: string;\n  text?: string;\n  textDark?: string;\n  primary?: string;\n  secondary?: string;\n  success?: string;\n  info?: string;\n  warning?: string;\n  error?: string;\n};\n\n@Component({\n  selector: 'dsv-theme',\n  templateUrl: './dsv.theme.component.html',\n  styleUrls: ['./dsv.theme.component.scss'],\n})\nexport class DsvThemeComponent {\n  theme = input<ThemeType>({});\n\n  @HostBinding('style.--background')\n  background!: string;\n\n  @HostBinding('style.--background-dark')\n  backgroundDark!: string;\n\n  @HostBinding('style.--text')\n  text!: string;\n\n  @HostBinding('style.--text-dark')\n  textDark!: string;\n\n  @HostBinding('style.--primary')\n  primary!: string;\n\n  @HostBinding('style.--secondary')\n  secondary!: string;\n\n  @HostBinding('style.--success')\n  success!: string;\n\n  @HostBinding('style.--info')\n  info!: string;\n\n  @HostBinding('style.--warning')\n  warning!: string;\n\n  @HostBinding('style.--error')\n  error!: string;\n\n  constructor() {\n    effect(() => {\n      this.background = this.theme().background ?? '#dcdcdc';\n      this.backgroundDark = this.theme().backgroundDark ?? '#1f1f1f';\n      this.text = this.theme().text ?? '#000';\n      this.textDark = this.theme().textDark ?? '#fff';\n      this.primary = this.theme().primary ?? '#AAA';\n      this.secondary = this.theme().secondary ?? '#AAA';\n      this.success = this.theme().success ?? '#439746';\n      this.info = this.theme().info ?? '#1b78c4';\n      this.warning = this.theme().warning ?? '#dca603';\n      this.error = this.theme().error ?? '#da1709';\n    });\n  }\n}\n","<ng-content></ng-content>\n<div id=\"collapse\"></div>\n","import { CommonModule } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { DsvButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/button';\nimport { ThemeService } from '../../public-api';\n\nexport type Theme = {\n  primary: string;\n  text: string;\n};\n\n@Component({\n  selector: 'dsv-theme-switch',\n  imports: [CommonModule, DsvButtonComponent],\n  templateUrl: `./dsv.theme.switch.component.html`,\n})\nexport class DsvThemeSwitchComponent {\n  private readonly themeService = inject(ThemeService);\n\n  switchTheme() {\n    this.themeService.switchTheme();\n  }\n\n  isLightMode() {\n    return this.themeService.themeMode() === 'light';\n  }\n}\n","<dsv-button\n  width=\"large\"\n  color=\"inherit\"\n  size=\"small\"\n  [noHover]=\"true\"\n  (callback)=\"switchTheme()\"\n  [icon]=\"isLightMode() ? 'ri-contrast-2-line' : 'ri-contrast-2-fill'\"\n>\n</dsv-button>\n","import { inject, Injectable, signal } from '@angular/core';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { StorageService } from '@ng-vagabond-lab/ng-dsv/storage';\n\nexport type ThemeMode = 'dark' | 'light';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class ThemeService {\n  platformService = inject(PlatformService);\n  storageService = inject(StorageService);\n\n  themeMode = signal<ThemeMode>(\n    (this.storageService.getItem('theme') as ThemeMode) ?? 'light'\n  );\n\n  constructor() {\n    if (this.platformService.isPlatformBrowser()) {\n      let html = document.getElementsByTagName('body')[0];\n      html.classList.add(this.themeMode());\n    }\n  }\n\n  switchTheme() {\n    if (this.platformService.isPlatformBrowser()) {\n      let html = document.getElementsByTagName('body')[0];\n      html.classList.remove(this.themeMode());\n\n      let newMode: ThemeMode = this.themeMode() === 'dark' ? 'light' : 'dark';\n      this.themeMode.set(newMode);\n      this.storageService.setItem('theme', newMode);\n      html.classList.add(newMode);\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}