From ad9be1ab158e48527edab48e163cd52332ce01a3 Mon Sep 17 00:00:00 2001 From: Ashwin Kumar Date: Fri, 10 Apr 2026 19:57:23 +0200 Subject: [PATCH] fix(build): restore missing admin imports and api client --- src/lib/api.ts | 50 +++++++++++++++++++++++++++ src/routes/admin/email-management.tsx | 6 ++-- 2 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 src/lib/api.ts diff --git a/src/lib/api.ts b/src/lib/api.ts new file mode 100644 index 0000000..6e8804f --- /dev/null +++ b/src/lib/api.ts @@ -0,0 +1,50 @@ +type ApiRequestOptions = { + method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE"; + body?: unknown; + headers?: HeadersInit; +}; + +type ApiResponse = { + data: T; + status: number; + headers: Headers; +}; + +const API_BASE = ""; + +async function request(path: string, options: ApiRequestOptions = {}): Promise> { + const headers: HeadersInit = { + Accept: "application/json", + ...options.headers, + }; + + const init: RequestInit = { + method: options.method ?? "GET", + credentials: "include", + headers, + }; + + if (options.body !== undefined) { + init.body = JSON.stringify(options.body); + (init.headers as Record)["Content-Type"] = "application/json"; + } + + const res = await fetch(`${API_BASE}${path}`, init); + const raw = await res.text(); + const data = raw ? JSON.parse(raw) : null; + + if (!res.ok) { + const message = (data && (data.message || data.error)) || `Request failed (${res.status})`; + throw new Error(message); + } + + return { data: data as T, status: res.status, headers: res.headers }; +} + +export const api = { + get: (path: string, headers?: HeadersInit) => request(path, { method: "GET", headers }), + post: (path: string, body?: unknown, headers?: HeadersInit) => request(path, { method: "POST", body, headers }), + put: (path: string, body?: unknown, headers?: HeadersInit) => request(path, { method: "PUT", body, headers }), + patch: (path: string, body?: unknown, headers?: HeadersInit) => request(path, { method: "PATCH", body, headers }), + delete: (path: string, headers?: HeadersInit) => request(path, { method: "DELETE", headers }), +}; diff --git a/src/routes/admin/email-management.tsx b/src/routes/admin/email-management.tsx index 10f0471..5fa9a02 100644 --- a/src/routes/admin/email-management.tsx +++ b/src/routes/admin/email-management.tsx @@ -1,6 +1,6 @@ import { createResource, createSignal, Show, For } from "solid-js"; import { useNavigate } from "@solidjs/router"; -import AdminLayout from "~/components/AdminLayout"; +import AdminShell from "~/components/AdminShell"; import { api } from "~/lib/api"; interface EmailTemplate { @@ -70,7 +70,7 @@ export default function EmailManagementPage() { }; return ( - +

📧 Email Management

@@ -231,6 +231,6 @@ export default function EmailManagementPage() {
-
+ ); }