{"version":3,"file":"mayvio-ui-angular-theme-toggle.mjs","sources":["../../src/theme-toggle/theme-toggle.component.ts","../../src/theme-toggle/mayvio-ui-angular-theme-toggle.ts"],"sourcesContent":["import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  inject,\n  OnInit,\n  PLATFORM_ID,\n} from '@angular/core';\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\n\n@Component({\n  selector: 'mayvio-theme-toggle',\n  standalone: true,\n  imports: [CommonModule],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  template: `\n    <button\n      type=\"button\"\n      class=\"mv-theme-toggle\"\n      [ngClass]=\"className\"\n      [attr.aria-label]=\"isDark ? 'Switch to light mode' : 'Switch to dark mode'\"\n      (click)=\"toggleTheme()\"\n    >\n      <svg\n        class=\"mv-theme-toggle__icon mv-theme-toggle__icon--sun\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"2\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n        aria-hidden=\"true\"\n      >\n        <circle cx=\"12\" cy=\"12\" r=\"5\" />\n        <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" />\n        <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" />\n        <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" />\n        <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" />\n        <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" />\n        <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" />\n        <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" />\n        <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" />\n      </svg>\n      <svg\n        class=\"mv-theme-toggle__icon mv-theme-toggle__icon--moon\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        viewBox=\"0 0 24 24\"\n        fill=\"none\"\n        stroke=\"currentColor\"\n        stroke-width=\"2\"\n        stroke-linecap=\"round\"\n        stroke-linejoin=\"round\"\n        aria-hidden=\"true\"\n      >\n        <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />\n      </svg>\n    </button>\n  `,\n})\nexport class ThemeToggleComponent implements OnInit {\n  private cdr = inject(ChangeDetectorRef);\n  private platformId = inject(PLATFORM_ID);\n\n  @Input() className = '';\n\n  private _theme?: 'light' | 'dark';\n  @Input()\n  set theme(value: 'light' | 'dark' | undefined) {\n    this._theme = value;\n    this.cdr.markForCheck();\n  }\n  get theme(): 'light' | 'dark' | undefined {\n    return this._theme;\n  }\n\n  @Output() themeToggled = new EventEmitter<void>();\n\n  private internalTheme: 'light' | 'dark' = 'light';\n\n  get isDark(): boolean {\n    return (this.theme || this.internalTheme) === 'dark';\n  }\n\n  ngOnInit() {\n    if (this.theme === undefined && isPlatformBrowser(this.platformId)) {\n      const isDark = document.documentElement.classList.contains('dark');\n      this.internalTheme = isDark ? 'dark' : 'light';\n      this.cdr.markForCheck();\n    }\n  }\n\n  toggleTheme() {\n    if (this.themeToggled.observed) {\n      this.themeToggled.emit();\n    } else {\n      if (isPlatformBrowser(this.platformId)) {\n        const root = document.documentElement;\n        if (root.classList.contains('dark')) {\n          root.classList.remove('dark');\n          this.internalTheme = 'light';\n        } else {\n          root.classList.add('dark');\n          this.internalTheme = 'dark';\n        }\n        this.cdr.markForCheck();\n      }\n    }\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}