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:
33
src/stores/pipeline-store.ts
Normal file
33
src/stores/pipeline-store.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import { create } from 'zustand';
|
||||
import { persist } from 'zustand/middleware';
|
||||
|
||||
interface PipelineStore {
|
||||
viewMode: 'board' | 'table';
|
||||
boardFilters: {
|
||||
leadCategory?: string;
|
||||
search?: string;
|
||||
};
|
||||
setViewMode: (mode: 'board' | 'table') => void;
|
||||
setBoardFilter: (key: keyof PipelineStore['boardFilters'], value: string | undefined) => void;
|
||||
clearBoardFilters: () => void;
|
||||
}
|
||||
|
||||
export const usePipelineStore = create<PipelineStore>()(
|
||||
persist(
|
||||
(set) => ({
|
||||
viewMode: 'table',
|
||||
boardFilters: {},
|
||||
setViewMode: (mode) => set({ viewMode: mode }),
|
||||
setBoardFilter: (key, value) =>
|
||||
set((s) => ({ boardFilters: { ...s.boardFilters, [key]: value } })),
|
||||
clearBoardFilters: () => set({ boardFilters: {} }),
|
||||
}),
|
||||
{
|
||||
name: 'pn-crm-pipeline',
|
||||
partialize: (state) => ({
|
||||
viewMode: state.viewMode,
|
||||
boardFilters: state.boardFilters,
|
||||
}),
|
||||
},
|
||||
),
|
||||
);
|
||||
Reference in New Issue
Block a user