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>
This commit is contained in:
26
src/stores/file-browser-store.ts
Normal file
26
src/stores/file-browser-store.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
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: [] }),
|
||||
}));
|
||||
Reference in New Issue
Block a user