import { For, Show, createSignal, onMount } from 'solid-js'; import { BTN_GHOST, CARD } from '~/components/DashboardShell'; const API = '/api/gateway'; type ApplicationItem = { id: string; job_id: string; status: string; applied_at?: string; resume_url?: string | null; cover_letter?: string | null; }; async function apiFetch(path: string, opts?: RequestInit) { return fetch(`${API}${path}`, { ...opts, credentials: 'include', headers: { 'Content-Type': 'application/json', ...(opts?.headers ?? {}) }, }); } export default function JobSeekerApplicationsPage() { const [rows, setRows] = createSignal([]); const [loading, setLoading] = createSignal(true); const [statusFilter, setStatusFilter] = createSignal(''); const [err, setErr] = createSignal(''); const loadRows = async (status = statusFilter()) => { setLoading(true); setErr(''); try { const query = new URLSearchParams(); query.set('page', '1'); query.set('limit', '100'); if (status) query.set('status', status); const res = await apiFetch(`/api/jobseeker/applications?${query.toString()}`); const payload = await res.json().catch(() => ({})); if (!res.ok) { setErr(payload.error || payload.message || 'Failed to load applications.'); setRows([]); return; } setRows(Array.isArray(payload?.data) ? payload.data : []); } catch { setErr('Network error while loading applications.'); setRows([]); } finally { setLoading(false); } }; onMount(() => loadRows()); return (

My Applications

Track all jobs you applied for.

{err()}

Status Filter

Loading applications...

No applications found.

0}>
{(row) => (

Application #{row.id.slice(0, 8)}

Job: {row.job_id?.slice(0, 8) || '—'} {row.applied_at ? `• ${new Date(row.applied_at).toLocaleString('en-IN')}` : ''}

{String(row.status || 'APPLIED').replace(/_/g, ' ')}

{row.cover_letter}

View Resume

)}
); }