// src/stores/useThemeStore.ts
import { defineStore } from "pinia";
import { ref } from "vue";

export const useThemeStore = defineStore("theme", () => {
  // 默认从 localStorage 读取，如果没有则根据系统偏好或默认 'light'
  const theme = ref<"light" | "dark">(
    (localStorage.getItem("theme") as "light" | "dark") || "dark",
  );

  const setTheme = (newTheme: "light" | "dark") => {
    theme.value = newTheme;
    localStorage.setItem("theme", newTheme);
    updateHtmlAttribute();
  };

  const toggleTheme = () => {
    setTheme(theme.value === "light" ? "dark" : "light");
  };

  // 更新 html 标签的 data-theme 属性，以便 CSS 选择器生效
  const updateHtmlAttribute = () => {
    if (theme.value === "dark") {
      document.documentElement.setAttribute("data-theme", "dark");
    } else {
      document.documentElement.removeAttribute("data-theme");
    }
  };

  // 初始化时执行一次
  updateHtmlAttribute();

  return {
    theme,
    setTheme,
    toggleTheme,
  };
});
