<script setup lang="ts">
import { useTheme } from '@/composables/useTheme'
import { usePostHog } from '@/composables/usePostHog'

const { mode, label, cycle } = useTheme()
const { track } = usePostHog()

function toggle() {
  cycle()
  track('theme_toggled', { theme: mode.value })
}
</script>

<template>
  <div class="relative group">
    <button
      type="button"
      class="p-1.5 rounded-md text-slate-500 hover:text-slate-700 dark:hover:text-slate-300 hover:bg-surface-light-elevated dark:hover:bg-slate-700 transition-colors"
      :aria-label="`Theme: ${label}. Click to switch.`"
      @click="toggle"
    >
      <!-- Sun (light mode) -->
      <svg v-if="mode === 'light'" class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
        <path stroke-linecap="round" stroke-linejoin="round" d="M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z" />
      </svg>
      <!-- Moon (dark mode) -->
      <svg v-else-if="mode === 'dark'" class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
        <path stroke-linecap="round" stroke-linejoin="round" d="M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z" />
      </svg>
      <!-- Monitor (system) -->
      <svg v-else class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
        <path stroke-linecap="round" stroke-linejoin="round" d="M9 17.25v1.007a3 3 0 0 1-.879 2.122L7.5 21h9l-.621-.621A3 3 0 0 1 15 18.257V17.25m6-12V15a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 15V5.25A2.25 2.25 0 0 1 5.25 3h13.5A2.25 2.25 0 0 1 21 5.25Z" />
      </svg>
    </button>

    <!-- Tooltip -->
    <span class="pointer-events-none absolute left-1/2 -translate-x-1/2 top-full mt-2 whitespace-nowrap rounded-md px-2.5 py-1 text-xs font-medium opacity-0 group-hover:opacity-100 transition-opacity bg-slate-800 text-white dark:bg-slate-200 dark:text-slate-900 shadow-lg">
      {{ label }}
    </span>
  </div>
</template>
