2025-12-22 15:23:40 +00:00
|
|
|
import { Note } from "@/api/notes";
|
2025-11-30 20:32:22 +00:00
|
|
|
import { create } from "zustand";
|
2025-12-08 22:08:30 +00:00
|
|
|
import { persist } from "zustand/middleware";
|
2025-11-30 20:32:22 +00:00
|
|
|
|
|
|
|
|
interface UIState {
|
|
|
|
|
updating: boolean;
|
|
|
|
|
setUpdating: (update: boolean) => void;
|
2025-12-08 22:08:30 +00:00
|
|
|
|
|
|
|
|
showModal: boolean;
|
|
|
|
|
setShowModal: (show: boolean) => void;
|
|
|
|
|
|
|
|
|
|
sideBarResize: number;
|
|
|
|
|
setSideBarResize: (size: number) => void;
|
2025-12-18 18:12:23 +00:00
|
|
|
|
|
|
|
|
sideBarView: string;
|
|
|
|
|
setSideBarView: (view: string) => void;
|
2025-12-22 15:23:40 +00:00
|
|
|
|
|
|
|
|
selectedNote: Note | null;
|
|
|
|
|
setSelectedNote: (note: Note | null) => void;
|
|
|
|
|
|
|
|
|
|
selectedFolder: number | null;
|
|
|
|
|
setSelectedFolder: (id: number | null) => void;
|
2025-11-30 20:32:22 +00:00
|
|
|
}
|
|
|
|
|
|
2025-12-08 22:08:30 +00:00
|
|
|
export const useUIStore = create<UIState>()(
|
|
|
|
|
persist(
|
|
|
|
|
(set, get) => ({
|
|
|
|
|
updating: false,
|
|
|
|
|
setUpdating: (update) => {
|
|
|
|
|
set({ updating: update });
|
|
|
|
|
},
|
2025-12-15 21:33:00 +00:00
|
|
|
showModal: true,
|
2025-12-08 22:08:30 +00:00
|
|
|
setShowModal: (show) => {
|
|
|
|
|
set({ showModal: show });
|
|
|
|
|
},
|
|
|
|
|
sideBarResize: 300,
|
|
|
|
|
setSideBarResize: (size) => {
|
|
|
|
|
set({ sideBarResize: size });
|
|
|
|
|
},
|
2025-12-18 18:12:23 +00:00
|
|
|
sideBarView: "folders",
|
|
|
|
|
setSideBarView: (view) => {
|
|
|
|
|
set({ sideBarView: view });
|
|
|
|
|
},
|
2025-12-22 15:23:40 +00:00
|
|
|
selectedNote: null,
|
|
|
|
|
|
|
|
|
|
setSelectedNote: (id: Note | null) => {
|
|
|
|
|
set({ selectedNote: id });
|
|
|
|
|
},
|
|
|
|
|
selectedFolder: null,
|
|
|
|
|
|
|
|
|
|
setSelectedFolder: (id: number | null) => {
|
|
|
|
|
set({ selectedFolder: id });
|
|
|
|
|
},
|
2025-12-08 22:08:30 +00:00
|
|
|
}),
|
2025-12-22 15:23:40 +00:00
|
|
|
|
2025-12-08 22:08:30 +00:00
|
|
|
{
|
|
|
|
|
name: "ui-store",
|
|
|
|
|
partialize: (state) => {
|
|
|
|
|
return {
|
|
|
|
|
sideBarResize: state.sideBarResize,
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
);
|