import { A, useNavigate, useParams } from '@solidjs/router'; import { createEffect, createResource, createSignal, Show } from 'solid-js'; const API = ''; function getToken(): string { return typeof sessionStorage !== 'undefined' ? sessionStorage.getItem('nxtgauge_admin_access_token') || '' : ''; } type KbArticle = { id: string; title: string; slug?: string; content?: string; body?: string; status?: string; category_id?: string; }; async function loadArticle(id: string): Promise { try { const token = getToken(); const res = await fetch(`${API}/api/admin/kb/articles/${id}`, { headers: { Accept: 'application/json', ...(token ? { Authorization: `Bearer ${token}` } : {}), }, credentials: 'include', }); if (!res.ok) return null; const data = await res.json(); return { ...data, content: data?.content ?? data?.body ?? '', body: data?.body ?? data?.content ?? '', }; } catch { return null; } } export default function KbArticleEditPage() { const navigate = useNavigate(); const params = useParams(); const [article] = createResource(() => params.id, loadArticle); const [title, setTitle] = createSignal(''); const [slug, setSlug] = createSignal(''); const [categoryId, setCategoryId] = createSignal(''); const [status, setStatus] = createSignal('DRAFT'); const [content, setContent] = createSignal(''); const [saving, setSaving] = createSignal(false); const [error, setError] = createSignal(''); const [loaded, setLoaded] = createSignal(false); createEffect(() => { const value = article(); if (!value || loaded()) return; setTitle(value.title || ''); setSlug(value.slug || ''); setCategoryId(value.category_id || ''); setStatus(value.status || 'DRAFT'); setContent(value.content || value.body || ''); setLoaded(true); }); const save = async (e: Event) => { e.preventDefault(); try { setSaving(true); setError(''); const res = await fetch(`${API}/api/admin/kb/articles/${params.id}`, { method: 'PATCH', headers: { 'Content-Type': 'application/json', ...(getToken() ? { Authorization: `Bearer ${getToken()}` } : {}), }, credentials: 'include', body: JSON.stringify({ title: title(), slug: slug(), category_id: categoryId() || null, status: status(), content: content(), }), }); if (!res.ok) throw new Error('Failed to save article'); navigate(`/admin/kb/articles/${params.id}`); } catch (err: any) { setError(err.message || 'Failed to save article'); } finally { setSaving(false); } }; const inputCls = 'w-full rounded-lg border border-gray-200 px-3 py-2 text-sm outline-none focus:border-[#0a1d37] focus:ring-1 focus:ring-[#0a1d37]'; const labelCls = 'mb-1.5 block text-sm font-medium text-gray-700'; return (

Edit KB Article

Update article metadata, status, and content.

Loading article…

Article not found.

setTitle(e.currentTarget.value)} required />
setSlug(e.currentTarget.value)} />
setCategoryId(e.currentTarget.value)} />