import { create } from "zustand";

// 일정 관리 페이지 상태 스토어
// 메모리 기반이므로 SPA 내 페이지 이동 시 유지, 새로고침 시 초기화
const useScheduleStore = create((set) => ({
  // 검색 관련
  searchInput: "",
  searchTerm: "",
  isSearchMode: false,

  // 필터 및 선택
  selectedCategories: [],
  selectedDate: undefined, // undefined면 오늘 날짜 사용, null이면 전체보기
  currentDate: new Date(),

  // 스크롤 위치
  scrollPosition: 0,

  // 상태 업데이트 함수
  setSearchInput: (value) => set({ searchInput: value }),
  setSearchTerm: (value) => set({ searchTerm: value }),
  setIsSearchMode: (value) => set({ isSearchMode: value }),
  setSelectedCategories: (value) => set({ selectedCategories: value }),
  setSelectedDate: (value) => set({ selectedDate: value }),
  setCurrentDate: (value) => set({ currentDate: value }),
  setScrollPosition: (value) => set({ scrollPosition: value }),

  // 상태 초기화
  reset: () =>
    set({
      searchInput: "",
      searchTerm: "",
      isSearchMode: false,
      selectedCategories: [],
      selectedDate: undefined,
      currentDate: new Date(),
      scrollPosition: 0,
    }),
}));

export default useScheduleStore;
