import { createContext, useContext } from "react"; import type { TablerIcon } from "@tabler/icons-react"; const AccessContext = createContext<{ permissions: readonly string[]; icons: Record; translate: (key: string) => string; defaultPermission: string; } | null>(null); export const useAccessContext = () => { const context = useContext(AccessContext); if (!context) { throw new Error("useAccessContext must be used within a AccessProvider"); } return { icons: context.icons as Record, getSelectData: () => context.permissions.map((permission) => ({ value: permission, label: context.translate(permission) })), permissions: context.permissions as readonly TPermission[], translate: context.translate as (key: TPermission) => string, defaultPermission: context.defaultPermission as TPermission, }; }; export const AccessProvider = ({ defaultPermission, permissions, icons, translate, children, }: { defaultPermission: TPermission; permissions: readonly TPermission[]; icons: Record; translate: (key: TPermission) => string; children: React.ReactNode; }) => { return ( string, }} > {children} ); };