Files
AOS/src/store/aos.ts
T

54 lines
1.3 KiB
TypeScript

'use client'
import { create } from 'zustand'
import { persist } from 'zustand/middleware'
export type ViewId =
| 'dashboard'
| 'crm'
| 'leads'
| 'estimates'
| 'projects'
| 'support'
| 'licenses'
| 'contracts'
| 'expenses'
| 'finance'
| 'accounting'
| 'audit'
| 'api'
| 'reporting'
| 'settings'
| 'setup'
interface AosState {
view: ViewId
setView: (v: ViewId) => void
selectedCompanyId: string | null
setSelectedCompany: (id: string | null) => void
selectedLeadId: string | null
setSelectedLead: (id: string | null) => void
sidebarOpen: boolean
setSidebarOpen: (open: boolean) => void
commandOpen: boolean
setCommandOpen: (open: boolean) => void
}
export const useAos = create<AosState>()(
persist(
(set) => ({
view: 'dashboard',
setView: (view) => set({ view }),
selectedCompanyId: null,
setSelectedCompany: (selectedCompanyId) => set({ selectedCompanyId }),
selectedLeadId: null,
setSelectedLead: (selectedLeadId) => set({ selectedLeadId }),
sidebarOpen: false,
setSidebarOpen: (sidebarOpen) => set({ sidebarOpen }),
commandOpen: false,
setCommandOpen: (commandOpen) => set({ commandOpen }),
}),
{ name: 'aos-ui', partialize: (s) => ({ view: s.view }) }
)
)