'use client' import { createContext, useContext, useState, type ReactNode } from 'react' export type Role = 'admin' | 'warehouse' | 'sales' export interface MockUser { id: string fullName: string username: string roleId: string role: Role } interface AuthContextValue { user: MockUser permissions: string[] setRole: (role: Role) => void } // Mock permissions per role — replace with real API call once auth is implemented const MOCK_PERMISSIONS: Record = { admin: ['*'], warehouse: [ 'items.view', 'categories.view', 'regions.view', 'routes.view', 'vehicles.view', 'warehouses.view', 'loading.view', 'loading.dispatch', 'loading.receive', 'loading.resolve', 'rides.view', 'rides.manage', 'rides.cancel.request', 'driver_profiles.view', 'compliance.manage', ], sales: [ 'stores.view', 'stores.create', 'stores.update', 'orders.view', 'orders.create', 'orders.update', 'items.view', 'categories.view', 'regions.view', 'routes.view', 'rides.view', 'driver_profiles.view', 'sales_visits.checkin', ], } const MOCK_USERS: Record = { admin: { id: '00000000-0000-0000-0000-000000000001', fullName: 'Admin User', username: 'admin', roleId: '00000000-0000-0000-0000-000000000010', role: 'admin', }, warehouse: { id: '00000000-0000-0000-0000-000000000002', fullName: 'Warehouse Staff', username: 'warehouse', roleId: '00000000-0000-0000-0000-000000000011', role: 'warehouse', }, sales: { id: '00000000-0000-0000-0000-000000000003', fullName: 'Sales Rep', username: 'sales', roleId: '00000000-0000-0000-0000-000000000012', role: 'sales', }, } const AuthContext = createContext(null) export function AuthProvider({ children }: { children: ReactNode }) { const [role, setRoleState] = useState('admin') function setRole(newRole: Role) { setRoleState(newRole) } return ( {children} ) } export function useAuth(): AuthContextValue { const ctx = useContext(AuthContext) if (!ctx) throw new Error('useAuth must be used inside AuthProvider') return ctx }