import { useCallback, useState } from 'react' import { Loading, ErrorState } from '../../../components/PageState.jsx' import { useAsync } from '../../../lib/useAsync.js' import { shortDate } from '../../../lib/format.js' import { api } from '../../../api/client.js' import WikiEditor from './WikiEditor.jsx' import WikiCategories from './WikiCategories.jsx' export default function WikiAdmin() { const [tick, setTick] = useState(0) const reload = useCallback(() => setTick((t) => t + 1), []) const [q, setQ] = useState('') const { loading, error, data } = useAsync( () => api.admin.listWiki(q.trim() ? `?q=${encodeURIComponent(q.trim())}` : ''), [tick, q], ) const [editing, setEditing] = useState(null) // null | 'new' | slug const [managingCats, setManagingCats] = useState(false) const pages = data || [] return (

{pages.length} page{pages.length === 1 ? '' : 's'} · edit content and structure

setQ(e.target.value)} className="input" placeholder="Search pages…" style={{ width: 200 }} />
{loading && } {error && } {!loading && !error && (
{pages.map((w) => ( ))} {pages.length === 0 && ( )}
Page Section Status Updated
{w.title} {w.slug} {w.category_title || '—'} {shortDate(w.updated_at)} setEditing(w.slug)}> Edit
No wiki pages yet.
)} {editing && ( setEditing(null)} onSaved={() => { setEditing(null) reload() }} /> )} {managingCats && ( { setManagingCats(false) reload() // section titles may have changed }} /> )}
) } function StatusPill({ published }) { const live = Boolean(published) return ( {live ? 'Published' : 'Draft'} ) }