{"version":3,"file":"camp2gether-c2g-ui-theme.mjs","sources":["../../../projects/c2g-ui/theme/theme/theme.service.ts","../../../projects/c2g-ui/theme/theme/theme-switcher.component.ts","../../../projects/c2g-ui/theme/theme/theme.providers.ts","../../../projects/c2g-ui/theme/i18n/translations.ts","../../../projects/c2g-ui/theme/camp2gether-c2g-ui-theme.ts"],"sourcesContent":["import { Injectable, PLATFORM_ID, inject, signal, computed, effect, DestroyRef } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\nexport type ThemeMode = 'light' | 'dark' | 'auto' | 'season' | 'high-contrast';\nexport type SeasonalTheme = 'spring' | 'summer' | 'autumn' | 'winter';\n\n// Astronomical season boundaries (month is 1-based, day is inclusive start)\nconst SEASON_BOUNDARIES: { season: SeasonalTheme; month: number; day: number }[] = [\n  { season: 'spring', month: 3,  day: 20 },\n  { season: 'summer', month: 6,  day: 21 },\n  { season: 'autumn', month: 9,  day: 23 },\n  { season: 'winter', month: 12, day: 21 },\n];\n\nfunction currentSeason(date = new Date()): SeasonalTheme {\n  const m = date.getMonth() + 1;\n  const d = date.getDate();\n  // Walk backwards through boundaries to find the last one we've passed\n  for (let i = SEASON_BOUNDARIES.length - 1; i >= 0; i--) {\n    const b = SEASON_BOUNDARIES[i];\n    if (m > b.month || (m === b.month && d >= b.day)) {\n      return b.season;\n    }\n  }\n  return 'winter'; // Jan/Feb before spring — still winter\n}\n\nconst VALID_THEMES: ThemeMode[] = ['light', 'dark', 'auto', 'season', 'high-contrast'];\nconst ALL_THEME_CLASSES = [\n  'theme-light', 'theme-dark', 'theme-auto', 'theme-season',\n  'theme-high-contrast', 'theme-spring', 'theme-summer', 'theme-autumn', 'theme-winter',\n];\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService {\n  private readonly platformId = inject(PLATFORM_ID);\n  private readonly destroyRef = inject(DestroyRef);\n\n  private readonly _currentTheme = signal<ThemeMode>(this.getInitialTheme());\n  private readonly _isSystemDark = signal<boolean>(this.getInitialSystemPreference());\n\n  private mediaQueryCleanup?: () => void;\n\n  readonly currentTheme = this._currentTheme.asReadonly();\n  readonly isSystemDark = this._isSystemDark.asReadonly();\n\n  // The season that is currently active (only meaningful when mode is 'season')\n  readonly currentSeason = computed<SeasonalTheme>(() => currentSeason());\n\n  readonly effectiveTheme = computed<ThemeMode | SeasonalTheme>(() => {\n    const current = this._currentTheme();\n    if (current === 'auto') return this._isSystemDark() ? 'dark' : 'light';\n    if (current === 'season') return this.currentSeason();\n    return current;\n  });\n\n  readonly isLightTheme       = computed(() => this.effectiveTheme() === 'light');\n  readonly isDarkTheme        = computed(() => this.effectiveTheme() === 'dark');\n  readonly isHighContrastTheme = computed(() => this._currentTheme() === 'high-contrast');\n  readonly isSeasonTheme      = computed(() => this._currentTheme() === 'season');\n\n  constructor() {\n    if (isPlatformBrowser(this.platformId)) {\n      this.initializeBrowserFeatures();\n    }\n    this.destroyRef.onDestroy(() => this.cleanup());\n  }\n\n  private initializeBrowserFeatures(): void {\n    effect(() => this.applyThemeToDOM(this._currentTheme()));\n    effect(() => localStorage.setItem('c2g-theme', this._currentTheme()));\n    this.watchSystemPreference();\n  }\n\n  private getInitialTheme(): ThemeMode {\n    if (!isPlatformBrowser(this.platformId)) return 'light';\n    try {\n      const stored = localStorage.getItem('c2g-theme') as ThemeMode;\n      return VALID_THEMES.includes(stored) ? stored : 'light';\n    } catch {\n      return 'light';\n    }\n  }\n\n  private getInitialSystemPreference(): boolean {\n    if (!isPlatformBrowser(this.platformId)) return false;\n    try {\n      return window.matchMedia('(prefers-color-scheme: dark)').matches;\n    } catch {\n      return false;\n    }\n  }\n\n  private watchSystemPreference(): void {\n    try {\n      const mq = window.matchMedia('(prefers-color-scheme: dark)');\n      const handler = (e: MediaQueryListEvent) => this._isSystemDark.set(e.matches);\n      this._isSystemDark.set(mq.matches);\n      mq.addEventListener('change', handler);\n      this.mediaQueryCleanup = () => mq.removeEventListener('change', handler);\n    } catch (e) {\n      console.warn('Failed to watch system preference:', e);\n    }\n  }\n\n  private applyThemeToDOM(mode: ThemeMode): void {\n    try {\n      const body = document.body;\n      body.classList.remove(...ALL_THEME_CLASSES);\n      if (mode === 'season') {\n        // Apply the concrete seasonal class so CSS picks it up directly\n        body.classList.add(`theme-${currentSeason()}`);\n      } else {\n        body.classList.add(`theme-${mode}`);\n      }\n    } catch (e) {\n      console.warn('Failed to apply theme to DOM:', e);\n    }\n  }\n\n  setTheme(theme: ThemeMode): void {\n    this._currentTheme.set(theme);\n  }\n\n  toggleTheme(): void {\n    this.setTheme(this._currentTheme() === 'light' ? 'dark' : 'light');\n  }\n\n  resetToSystemPreference(): void {\n    this.setTheme('auto');\n  }\n\n  getCurrentTheme(): ThemeMode { return this._currentTheme(); }\n  getEffectiveTheme(): ThemeMode | SeasonalTheme { return this.effectiveTheme(); }\n\n  private cleanup(): void {\n    this.mediaQueryCleanup?.();\n    this.mediaQueryCleanup = undefined;\n  }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonComponent, PopupComponent } from '@camp2gether/c2g-ui';\nimport { ThemeService, ThemeMode, SeasonalTheme } from './theme.service';\n\n@Component({\n  selector: 'c2g-theme-switcher',\n  standalone: true,\n  imports: [MatIconModule, TranslateModule, ButtonComponent, PopupComponent],\n  template: `\n    <c2g-popup align=\"end\">\n      <c2g-button\n        trigger\n        variant=\"icon\"\n        [icon]=\"themeIcon()\"\n        [iconOnly]=\"true\"\n        [bordered]=\"false\"\n        iconSize=\"1.5rem\"\n        [ariaLabel]=\"'theme.switcher.tooltip' | translate\"\n      ></c2g-button>\n\n      <div panel class=\"theme-menu\">\n        @for (option of themeOptions; track option.value) {\n          <button\n            class=\"theme-menu__item\"\n            [class.theme-menu__item--active]=\"currentTheme() === option.value\"\n            (click)=\"selectTheme(option.value)\"\n          >\n            <mat-icon>{{ option.value === 'season' ? seasonIcon() : option.icon }}</mat-icon>\n            <span>{{ option.label | translate }}</span>\n            @if (currentTheme() === option.value) {\n              <mat-icon class=\"theme-menu__check\">check</mat-icon>\n            }\n          </button>\n        }\n      </div>\n    </c2g-popup>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: [`\n    .theme-menu {\n      padding: var(--c2g-space-1, 0.25rem) 0;\n    }\n\n    .theme-menu__item {\n      display: flex;\n      align-items: center;\n      gap: var(--c2g-space-2, 0.5rem);\n      width: 100%;\n      padding: var(--c2g-space-2, 0.5rem) var(--c2g-space-4, 1rem);\n      border: none;\n      background: transparent;\n      color: var(--c2g-color-text-primary);\n      font-size: var(--c2g-font-size-sm, 0.875rem);\n      font-family: var(--c2g-font-family-base, sans-serif);\n      cursor: pointer;\n      text-align: left;\n      transition: background 120ms ease;\n\n      &:hover {\n        background: var(--c2g-color-bg-secondary, #efe9e0);\n      }\n\n      &--active {\n        background: var(--c2g-color-primary-container, #ffede6);\n        color: var(--c2g-color-on-primary-container, #4a1800);\n      }\n    }\n\n    .theme-menu__check {\n      margin-left: auto;\n      color: var(--c2g-color-primary, #ff6b35);\n      font-size: 1rem;\n      width: 1rem;\n      height: 1rem;\n    }\n  `]\n})\nexport class ThemeSwitcherComponent {\n  protected readonly themeService = inject(ThemeService);\n\n  // Use signals for reactive updates\n  protected readonly currentTheme = this.themeService.currentTheme;\n  \n  private static readonly SEASON_ICONS: Record<SeasonalTheme, string> = {\n    spring: 'local_florist',\n    summer: 'wb_sunny',\n    autumn: 'energy_savings_leaf',\n    winter: 'ac_unit',\n  };\n\n  protected readonly seasonIcon = computed(() =>\n    ThemeSwitcherComponent.SEASON_ICONS[this.themeService.currentSeason()]\n  );\n\n  protected readonly themeIcon = computed(() => {\n    const current = this.currentTheme();\n    if (current === 'season') return this.seasonIcon();\n    const option = this.themeOptions.find(opt => opt.value === current);\n    return option?.icon ?? 'brightness_auto';\n  });\n\n  protected readonly themeOptions = [\n    { value: 'light'         as ThemeMode, label: 'theme.options.light',        icon: 'light_mode' },\n    { value: 'dark'          as ThemeMode, label: 'theme.options.dark',         icon: 'dark_mode' },\n    { value: 'auto'          as ThemeMode, label: 'theme.options.auto',         icon: 'brightness_auto' },\n    { value: 'season'        as ThemeMode, label: 'theme.options.season',       icon: 'calendar_month' },\n    { value: 'high-contrast' as ThemeMode, label: 'theme.options.highContrast', icon: 'contrast' },\n  ];\n\n  protected selectTheme(theme: ThemeMode): void {\n    this.themeService.setTheme(theme);\n  }\n}","import { Provider } from '@angular/core';\nimport { HighContrastModeDetector } from '@angular/cdk/a11y';\n\n/**\n * Providers for the C2G Theme system that includes all necessary CDK dependencies\n */\nexport const C2G_THEME_PROVIDERS: Provider[] = [\n  HighContrastModeDetector,\n];\n\n/**\n * Mock providers for testing or SSR environments where CDK might not be needed\n */\nexport const C2G_THEME_MOCK_PROVIDERS: Provider[] = [\n  {\n    provide: HighContrastModeDetector,\n    useValue: {\n      _platform: { isBrowser: false },\n      isHighContrast: () => false\n    }\n  }\n];\n\n/**\n * Smart provider factory that chooses appropriate providers based on environment\n */\nexport function getC2GThemeProviders(): Provider[] {\n  try {\n    // Try to create HighContrastModeDetector - if it fails, use mock\n    return C2G_THEME_PROVIDERS;\n  } catch {\n    return C2G_THEME_MOCK_PROVIDERS;\n  }\n}","const de = {\n  c2g: {\n    loader: { label: 'Laden...' },\n    skeleton: { loading: 'Inhalt wird geladen...' },\n    alert: {\n      close: 'Schliessen',\n      demo: {\n        info_title: 'Reisehinweis',\n        info_message: 'Deine Packliste wurde mit den aktuellen Wetterdaten synchronisiert.',\n        success_title: 'Liste gespeichert',\n        success_message: 'Deine Packliste wurde erfolgreich gespeichert.',\n        warning_title: 'Reisepass erforderlich',\n        warning_message: 'Denke daran, deine Reisedokumente einzupacken.',\n        danger_title: 'Artikel fehlt',\n        danger_message: 'Drei erforderliche Artikel sind noch nicht eingepackt.',\n      },\n    },\n    progress: { label: 'Fortschritt' },\n    lottie: { label: 'Ladeanimation' },\n    button: {\n      submit: 'Absenden',\n      cancel: 'Abbrechen',\n      save: 'Speichern',\n      add_item: 'Artikel hinzufügen',\n      invite: 'Mitglied einladen',\n    },\n    danger_zone: {\n      default: { heading: 'Gefahrenzone' },\n      group: {\n        transfer_ownership: { title: 'Eigentümerschaft übertragen', description: 'Gruppe an ein anderes Mitglied übergeben', action: 'Übertragen', aria_label: 'Eigentümerschaft übertragen' },\n        delete_group: { title: 'Gruppe löschen', description: 'Löscht die Gruppe dauerhaft. Diese Aktion kann nicht rückgängig gemacht werden.', action: 'Löschen', aria_label: 'Gruppe löschen' },\n        leave_group: { title: 'Gruppe verlassen', description: 'Du verlässt diese Gruppe. Du kannst später wieder beitreten.', action: 'Verlassen', aria_label: 'Gruppe verlassen' },\n      },\n    },\n    input: {\n      destination: { label: 'Reiseziel', placeholder: 'z.B. Barcelona', hint: 'Gib die Stadt oder Region deiner Reise ein' },\n      email: { label: 'E-Mail-Adresse', placeholder: 'du@beispiel.com', hint: 'Wir senden deine Reisebestätigung hierher' },\n    },\n    textarea: {\n      notes: { label: 'Packnotizen', placeholder: 'Notizen zur Packliste hinzufügen...', hint: 'Wird mit allen Gruppenmitgliedern geteilt' },\n    },\n    badge: { new: 'Neu', required: 'Pflichtangabe', optional: 'Optional', packed: 'Eingepackt', missing: 'Fehlt' },\n    chip: { remove_label: 'Entfernen' },\n    tag: { clothing: 'Kleidung', documents: 'Dokumente', electronics: 'Elektronik', toiletries: 'Pflegeartikel' },\n    switch: { label: 'Aktiv', notifications: 'Reise-Benachrichtigungen', shared: 'Geteilte Liste' },\n    checkbox: { packed: 'Als eingepackt markieren', agree: 'Ich stimme den Bedingungen zu', required: 'Pflichtartikel' },\n    radio: {\n      legend: 'Optionen',\n      trip_type: { legend: 'Reiseart', beach: 'Strand', city: 'Städtereise', hiking: 'Wandern', business: 'Geschäftsreise' },\n    },\n    segmented_toggle: { view_list: 'Liste', view_grid: 'Raster', view_map: 'Karte' },\n  },\n  packingList: {\n    search: { placeholder: 'Artikel suchen...' },\n    filters: {\n      essentialsOnly: 'Nur Pflichtartikel',\n      visibility: { all: 'Alle', shared: 'Geteilt', personal: 'Persönlich', private: 'Privat' },\n    },\n    private: { title: 'Private Artikel' },\n    empty: 'Keine Artikel vorhanden',\n    category: { stats: '{{packed}}/{{total}} eingepackt' },\n    delete: { confirm: 'Artikel wirklich löschen?' },\n    addItem: 'Artikel hinzufügen',\n    createItem: 'Artikel erstellen',\n    itemName: 'Bezeichnung',\n    category_label: 'Kategorie',\n    visibility: 'Sichtbarkeit',\n    essential: 'Pflichtartikel',\n    quantity: 'Menge',\n    weight: 'Gewicht (kg)',\n    volume: 'Volumen (L)',\n    hint: 'Hinweis',\n    cancel: 'Abbrechen',\n    create: 'Erstellen',\n    categories: {\n      shelter: 'Unterkunft',\n      sleeping: 'Schlafen',\n      cooking: 'Kochen',\n      clothing: 'Kleidung',\n      safety: 'Sicherheit',\n      navigation: 'Navigation',\n      hygiene: 'Hygiene',\n      medical: 'Medizin',\n      electronics: 'Elektronik',\n      documents: 'Dokumente',\n      entertainment: 'Unterhaltung',\n      other: 'Sonstiges',\n    },\n  },\n};\n\nconst en = {\n  c2g: {\n    loader: { label: 'Loading...' },\n    skeleton: { loading: 'Content loading...' },\n    alert: {\n      close: 'Dismiss',\n      demo: {\n        info_title: 'Trip Update',\n        info_message: 'Your packing list has been synced with the latest weather data.',\n        success_title: 'List Saved',\n        success_message: 'Your packing list was saved successfully.',\n        warning_title: 'Passport Required',\n        warning_message: 'Remember to pack your travel documents.',\n        danger_title: 'Item Missing',\n        danger_message: 'Three required items are still unpacked.',\n      },\n    },\n    progress: { label: 'Progress' },\n    lottie: { label: 'Loading animation' },\n    button: {\n      submit: 'Submit',\n      cancel: 'Cancel',\n      save: 'Save',\n      add_item: 'Add Item',\n      invite: 'Invite Member',\n    },\n    danger_zone: {\n      default: { heading: 'Danger Zone' },\n      group: {\n        transfer_ownership: { title: 'Transfer ownership', description: 'Hand the group over to another member.', action: 'Transfer', aria_label: 'Transfer ownership' },\n        delete_group: { title: 'Delete group', description: 'Deletes the group permanently. This action cannot be undone.', action: 'Delete', aria_label: 'Delete group' },\n        leave_group: { title: 'Leave group', description: 'You leave this group. You can join again later.', action: 'Leave', aria_label: 'Leave group' },\n      },\n    },\n    input: {\n      destination: { label: 'Destination', placeholder: 'e.g. Barcelona', hint: 'Enter the city or region of your trip' },\n      email: { label: 'Email address', placeholder: 'you@example.com', hint: 'We will send your trip confirmation here' },\n    },\n    textarea: {\n      notes: { label: 'Packing notes', placeholder: 'Add notes about your packing list...', hint: 'Shared with all group members' },\n    },\n    badge: { new: 'New', required: 'Required', optional: 'Optional', packed: 'Packed', missing: 'Missing' },\n    chip: { remove_label: 'Remove' },\n    tag: { clothing: 'Clothing', documents: 'Documents', electronics: 'Electronics', toiletries: 'Toiletries' },\n    switch: { label: 'Active', notifications: 'Trip notifications', shared: 'Shared list' },\n    checkbox: { packed: 'Marked as packed', agree: 'I agree to the terms', required: 'Required item' },\n    radio: {\n      legend: 'Options',\n      trip_type: { legend: 'Trip type', beach: 'Beach', city: 'City trip', hiking: 'Hiking', business: 'Business' },\n    },\n    segmented_toggle: { view_list: 'List', view_grid: 'Grid', view_map: 'Map' },\n  },\n  packingList: {\n    search: { placeholder: 'Search items...' },\n    filters: {\n      essentialsOnly: 'Essentials only',\n      visibility: { all: 'All', shared: 'Shared', personal: 'Personal', private: 'Private' },\n    },\n    private: { title: 'Private Items' },\n    empty: 'No items yet',\n    category: { stats: '{{packed}}/{{total}} packed' },\n    delete: { confirm: 'Delete this item?' },\n    addItem: 'Add item',\n    createItem: 'Create item',\n    itemName: 'Name',\n    category_label: 'Category',\n    visibility: 'Visibility',\n    essential: 'Essential',\n    quantity: 'Quantity',\n    weight: 'Weight (kg)',\n    volume: 'Volume (L)',\n    hint: 'Hint',\n    cancel: 'Cancel',\n    create: 'Create',\n    categories: {\n      shelter: 'Shelter',\n      sleeping: 'Sleeping',\n      cooking: 'Cooking',\n      clothing: 'Clothing',\n      safety: 'Safety',\n      navigation: 'Navigation',\n      hygiene: 'Hygiene',\n      medical: 'Medical',\n      electronics: 'Electronics',\n      documents: 'Documents',\n      entertainment: 'Entertainment',\n      other: 'Other',\n    },\n  },\n};\n\nexport const C2G_TRANSLATIONS: Record<string, Record<string, unknown>> = { de, en };\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}