const API_URL = '/api'; export const getAuthToken = () => localStorage.getItem('token'); export const setAuthToken = (token: string) => localStorage.setItem('token', token); export const removeAuthToken = () => localStorage.removeItem('token'); const headers = () => { const token = getAuthToken(); return { 'Content-Type': 'application/json', ...(token ? { Authorization: `Bearer ${token}` } : {}) }; }; export const api = { get: async (endpoint: string): Promise => { const res = await fetch(`${API_URL}${endpoint}`, { headers: headers() }); if (!res.ok) throw new Error(await res.text()); return res.json(); }, post: async (endpoint: string, data: any): Promise => { const res = await fetch(`${API_URL}${endpoint}`, { method: 'POST', headers: headers(), body: JSON.stringify(data) }); if (!res.ok) throw new Error(await res.text()); return res.json(); }, put: async (endpoint: string, data: any): Promise => { const res = await fetch(`${API_URL}${endpoint}`, { method: 'PUT', headers: headers(), body: JSON.stringify(data) }); if (!res.ok) throw new Error(await res.text()); return res.json(); }, delete: async (endpoint: string): Promise => { const res = await fetch(`${API_URL}${endpoint}`, { method: 'DELETE', headers: headers() }); if (!res.ok) throw new Error(await res.text()); return res.json(); }, patch: async (endpoint: string, data: any): Promise => { const res = await fetch(`${API_URL}${endpoint}`, { method: 'PATCH', headers: headers(), body: JSON.stringify(data) }); if (!res.ok) throw new Error(await res.text()); return res.json(); } };