import { A } from '@solidjs/router'; import { createMemo, createResource, createSignal, For, Show } from 'solid-js'; import AdminShell from '~/components/AdminShell'; const API = '/api/gateway'; interface Company { id: string; company_name?: string; companyName?: string; name?: string; industry?: string; city?: string; email?: string; status: 'ACTIVE' | 'INACTIVE' | 'PENDING' | 'SUSPENDED' | 'REJECTED'; created_at?: string; createdAt?: string; } async function fetchCompanies(): Promise { try { const res = await fetch(`${API}/api/admin/companies`); if (!res.ok) throw new Error('Failed to load'); const data = await res.json(); return Array.isArray(data) ? data : (data.companies || []); } catch { return []; } } function StatusBadge(props: { status: string }) { if (props.status === 'ACTIVE') { return ACTIVE; } if (props.status === 'PENDING') { return PENDING; } return {props.status}; } export default function CompanyPage() { const [companies, { refetch }] = createResource(fetchCompanies); const [search, setSearch] = createSignal(''); const [deleting, setDeleting] = createSignal(''); const [actionError, setActionError] = createSignal(''); const filtered = createMemo(() => { const list = companies() ?? []; const q = search().toLowerCase(); if (!q) return list; return list.filter((c) => { const name = (c.company_name || c.companyName || c.name || '').toLowerCase(); const email = (c.email || '').toLowerCase(); return name.includes(q) || email.includes(q); }); }); const handleDelete = async (id: string, name: string) => { if (!confirm(`Delete ${name}?`)) return; try { setDeleting(id); setActionError(''); const res = await fetch(`${API}/api/admin/companies/${id}`, { method: 'DELETE' }); if (!res.ok) throw new Error('Failed to delete'); refetch(); } catch (err: any) { setActionError(err.message || 'Failed to delete company'); } finally { setDeleting(''); } }; return (

Company Management

Manage all company accounts on the platform.

{actionError()}
{/* Search */}
setSearch(e.currentTarget.value)} style="border:1px solid #cbd5e1;border-radius:6px;padding:7px 12px;font-size:14px;width:260px;outline:none;" />
0}> {(item) => { const displayName = item.company_name || item.companyName || item.name || '—'; return ( ); }}
Company Name Industry City Email Status Actions
Loading...
Failed to load. Is the backend running?
No companies found.
{displayName} {item.industry || '—'} {item.city || '—'} {item.email || '—'}
View
); }