import { create } from 'zustand';
import { persist, createJSONStorage } from 'zustand/middleware';

interface SidebarState {
  collapsed: boolean;
  userPreference: boolean | null; // null = 自动模式, true/false = 用户手动设置
  setCollapsed: (collapsed: boolean, isUserAction?: boolean) => void;
  toggleCollapsed: () => void;
  resetToAuto: () => void;
}

export const useSidebar = create<SidebarState>()(
  persist(
    (set) => ({
      collapsed: false,
      userPreference: null, // 默认为自动模式
      
      setCollapsed: (collapsed, isUserAction = false) => 
        set((state) => ({ 
          collapsed,
          // 如果是用户手动操作，记录用户偏好；否则保持原有偏好
          userPreference: isUserAction ? collapsed : state.userPreference
        })),
      
      toggleCollapsed: () => 
        set((state) => ({ 
          collapsed: !state.collapsed,
          userPreference: !state.collapsed // 切换时记录为用户偏好
        })),
      
      // 重置为自动模式
      resetToAuto: () => set({ userPreference: null }),
    }),
    {
      name: 'sidebar-storage', // localStorage key
      storage: createJSONStorage(() => localStorage),
    }
  )
);

