import { A } from '@solidjs/router'; import { createMemo, createResource, createSignal, For, Show } from 'solid-js'; import AdminShell from '~/components/AdminShell'; const API = '/api/gateway'; interface User { id: string; name?: string; full_name?: string; email: string; role?: string; role_name?: string; status: 'ACTIVE' | 'INACTIVE' | 'PENDING'; created_at?: string; createdAt?: string; } const ROLE_OPTIONS = [ 'company', 'job_seeker', 'customer', 'photographer', 'video_editor', 'graphic_designer', 'social_media_manager', 'fitness_trainer', 'catering_services', 'makeup_artist', 'tutor', 'developer', ]; async function fetchUsers(): Promise { try { const res = await fetch(`${API}/api/admin/users`); if (res.status === 404) { const res2 = await fetch(`${API}/api/users`); if (!res2.ok) throw new Error('Failed to load'); const data2 = await res2.json(); return Array.isArray(data2) ? data2 : (data2.users || []); } if (!res.ok) throw new Error('Failed to load'); const data = await res.json(); return Array.isArray(data) ? data : (data.users || []); } catch { return []; } } function StatusBadge(props: { status: string }) { if (props.status === 'ACTIVE') { return ACTIVE; } if (props.status === 'PENDING') { return PENDING; } return INACTIVE; } export default function UsersPage() { const [users, { refetch }] = createResource(fetchUsers); const [search, setSearch] = createSignal(''); const [filterRole, setFilterRole] = createSignal(''); const [filterStatus, setFilterStatus] = createSignal(''); const filtered = createMemo(() => { const list = users() ?? []; const q = search().toLowerCase(); const role = filterRole(); const status = filterStatus(); return list.filter((u) => { const name = (u.name || u.full_name || '').toLowerCase(); const email = u.email.toLowerCase(); const matchSearch = !q || name.includes(q) || email.includes(q); const matchRole = !role || u.role === role || u.role_name === role; const matchStatus = !status || u.status === status; return matchSearch && matchRole && matchStatus; }); }); return (

External User Management

Manage all external platform users.

{/* Filters */}
setSearch(e.currentTarget.value)} style="border:1px solid #cbd5e1;border-radius:6px;padding:7px 12px;font-size:14px;width:260px;outline:none;" /> Showing {filtered().length} of {users()?.length ?? 0} users
0}> {(item) => ( )}
Name Email Role Status Created At Actions
Loading...
Failed to load. Is the backend running?
No users found.
{item.name || item.full_name || '—'} {item.email} {item.role_name || item.role || '—'} {(item.created_at || item.createdAt) ? new Date((item.created_at || item.createdAt)!).toLocaleDateString() : '—'}
); }