export class ApiClient { private static baseUrl = '/api' static async get(endpoint: string, params?: Record) { const url = new URL(`${this.baseUrl}${endpoint}`, window.location.origin) if (params) { Object.entries(params).forEach(([key, value]) => { url.searchParams.append(key, String(value)) }) } const response = await fetch(url.toString()) if (!response.ok) { const error = new Error(`API Error: ${response.status}`) ;(error as any).status = response.status ;(error as any).url = url.toString() throw error } return response.json() } static async post(endpoint: string, data: any) { const response = await fetch(`${this.baseUrl}${endpoint}`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify(data), }) if (!response.ok) { const errorData = await response.json().catch(() => ({})) const error = new Error(errorData.message || `API Error: ${response.status}`) ;(error as any).status = response.status ;(error as any).url = `${this.baseUrl}${endpoint}` throw error } return response.json() } }