import React from 'react'
import { Head, router } from '@inertiajs/react'
import AdminLayout from '../../Layouts/AdminLayout'
function badgeTone(status) {
if (status === 'published') return 'border-emerald-300/20 bg-emerald-400/12 text-emerald-100'
if (status === 'scheduled') return 'border-sky-300/20 bg-sky-400/12 text-sky-100'
if (status === 'pending_review') return 'border-amber-300/20 bg-amber-400/12 text-amber-100'
if (status === 'archived' || status === 'rejected') return 'border-rose-300/20 bg-rose-400/12 text-rose-100'
return 'border-white/10 bg-white/[0.06] text-slate-200'
}
function StatCard({ label, value }) {
return (
{label}
{Number(value || 0).toLocaleString()}
)
}
export default function Stories({ title, stories, filters, stats, endpoints }) {
const [state, setState] = React.useState(filters || { q: '', status: 'all' })
React.useEffect(() => {
setState(filters || { q: '', status: 'all' })
}, [filters])
function update(key, value) {
setState((current) => ({ ...current, [key]: value }))
}
function applyFilters(event) {
event.preventDefault()
router.get(endpoints.index, state, { preserveState: true, replace: true, preserveScroll: true })
}
const items = stories?.data || []
return (
Moderation surface
Stories
Browse creator stories, filter by status, and jump straight to the public view when it exists.
Page {stories?.current_page || 1} / {stories?.last_page || 1}
{Number(stories?.total || 0).toLocaleString()} stories
{items.length === 0 ? (
No stories matched the current filters.
) : items.map((story) => (
{story.cover_url ? (

) : (
)}
{String(story.status || 'draft').replaceAll('_', ' ')}
{story.creator ? (
@{story.creator.username}
) : null}
{story.title}
/{story.slug}{story.creator ? ` • ${story.creator.name}` : ''}
{story.excerpt ?
{story.excerpt}
: null}
{story.published_at ? new Date(story.published_at).toLocaleDateString() : 'Unpublished'}
{story.created_at ? new Date(story.created_at).toLocaleDateString() : '—'}
{story.open_url ? (
Open
) : (
No public view
)}
))}
{stories?.prev_page_url || stories?.next_page_url ? (
Showing page {stories?.current_page || 1} of {stories?.last_page || 1}
{stories?.prev_page_url ? (
) : null}
{stories?.next_page_url ? (
) : null}
) : null}
)
}