import { createContext, useState, useContext, type PropsWithChildren, type Dispatch, type SetStateAction, } from 'react' import { z } from 'zod' export const uploadCategorySchema = z .enum(['featured_image', 'ads', 'content', 'profile_picture']) .optional() export type TUpload = z.infer type AdminContextProperties = { isUploadOpen: TUpload setIsUploadOpen: Dispatch> uploadedFile?: string setUploadedFile: Dispatch> editProfile: boolean setEditProfile: Dispatch> } const AdminContext = createContext( undefined, ) export const AdminProvider = ({ children }: PropsWithChildren) => { const [isUploadOpen, setIsUploadOpen] = useState() const [uploadedFile, setUploadedFile] = useState() const [editProfile, setEditProfile] = useState(false) return ( {children} ) } export const useAdminContext = (): AdminContextProperties => { const context = useContext(AdminContext) if (!context) { throw new Error('useAdminContext must be used within a AdminProvider') } return context }