// =============================================================================
// 企微IT智能服务台 — 主题切换 composable
// =============================================================================
// 说明：提供浅色/深色主题切换功能
// 核心功能：
//   1. applyTheme(theme) — 设置 document.documentElement data-theme + localStorage
//   2. getInitialTheme() — 从 localStorage 读取，默认 'light'
//   3. 初始化时自动调用 applyTheme
// =============================================================================

/** 主题类型 */
export type ThemeMode = 'light' | 'dark'

/** localStorage 存储键 */
const THEME_STORAGE_KEY = 'it_desk_theme'

/**
 * 应用主题到 DOM
 * 设置 document.documentElement 的 data-theme 属性，并持久化到 localStorage
 *
 * @param theme - 目标主题 ('light' | 'dark')
 */
export function applyTheme(theme: ThemeMode): void {
  document.documentElement.setAttribute('data-theme', theme)
  localStorage.setItem(THEME_STORAGE_KEY, theme)
}

/**
 * 获取初始主题
 * 从 localStorage 读取已保存的主题偏好，默认返回 'light'
 *
 * @returns 当前主题模式
 */
export function getInitialTheme(): ThemeMode {
  const saved = localStorage.getItem(THEME_STORAGE_KEY)
  if (saved === 'dark' || saved === 'light') {
    return saved
  }
  // 检测系统偏好
  if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
    return 'dark'
  }
  return 'light'
}

/**
 * 主题切换 composable
 * 封装主题切换逻辑，初始化时自动应用已保存的主题
 *
 * @returns { applyTheme, getInitialTheme }
 */
export function useTheme() {
  // 初始化时立即应用已保存的主题
  const initialTheme = getInitialTheme()
  applyTheme(initialTheme)

  return {
    applyTheme,
    getInitialTheme,
  }
}
