Files
pn-new-crm/src/stores/file-browser-store.ts
Matt 67d7e6e3d5
Some checks failed
Build & Push Docker Images / build-and-push (push) Has been cancelled
Build & Push Docker Images / deploy (push) Has been cancelled
Build & Push Docker Images / lint (push) Has been cancelled
Initial commit: Port Nimara CRM (Layers 0-4)
Full CRM rebuild with Next.js 15, TypeScript, Tailwind, Drizzle ORM,
PostgreSQL, Redis, BullMQ, MinIO, and Socket.io. Includes 461 source
files covering clients, berths, interests/pipeline, documents/EOI,
expenses/invoices, email, notifications, dashboard, admin, and
client portal. CI/CD via Gitea Actions with Docker builds.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 11:52:51 +01:00

27 lines
873 B
TypeScript

import { create } from 'zustand';
interface FileBrowserStore {
viewMode: 'grid' | 'list';
currentFolder: string;
selectedFiles: string[];
setViewMode: (mode: 'grid' | 'list') => void;
setCurrentFolder: (folder: string) => void;
toggleFileSelection: (fileId: string) => void;
clearSelection: () => void;
}
export const useFileBrowserStore = create<FileBrowserStore>((set) => ({
viewMode: 'grid',
currentFolder: '',
selectedFiles: [],
setViewMode: (mode) => set({ viewMode: mode }),
setCurrentFolder: (folder) => set({ currentFolder: folder, selectedFiles: [] }),
toggleFileSelection: (fileId) =>
set((state) => ({
selectedFiles: state.selectedFiles.includes(fileId)
? state.selectedFiles.filter((id) => id !== fileId)
: [...state.selectedFiles, fileId],
})),
clearSelection: () => set({ selectedFiles: [] }),
}));