import React from 'react' import { Link, router, usePage } from '@inertiajs/react' import SeoHead from '../../components/seo/SeoHead' import NovaSelect from '../../components/ui/NovaSelect' function academyHref(section, slug) { return `/academy/${section}/${encodeURIComponent(slug)}` } function QueryFilters({ pageType, filters, categories }) { if (pageType !== 'lessons' && pageType !== 'prompts') { return null } const categoryOptions = [{ value: '', label: 'All categories' }, ...(categories || []).map((category) => ({ value: category.slug, label: category.name }))] const difficultyOptions = [ { value: '', label: 'All levels' }, { value: 'beginner', label: 'Beginner' }, { value: 'intermediate', label: 'Intermediate' }, { value: 'advanced', label: 'Advanced' }, { value: 'pro', label: 'Pro' }, ] return (
{ if (event.key !== 'Enter') return router.get(window.location.pathname, { ...filters, q: event.currentTarget.value }, { preserveState: true, preserveScroll: true }) }} /> router.get(window.location.pathname, { ...filters, category: nextValue || undefined }, { preserveState: true, preserveScroll: true })} options={categoryOptions} searchable={false} className="rounded-2xl bg-white/[0.04]" placeholder="All categories" /> router.get(window.location.pathname, { ...filters, difficulty: nextValue || undefined }, { preserveState: true, preserveScroll: true })} options={difficultyOptions} searchable={false} className="rounded-2xl bg-white/[0.04]" placeholder="All levels" />
) } function LockBadge({ item }) { if (!item?.locked) return {item.access_level} return Locked · {item.access_level} } function itemHref(pageType, item) { if (pageType === 'lessons') return academyHref('lessons', item.slug) if (pageType === 'prompts') return academyHref('prompts', item.slug) if (pageType === 'packs') return academyHref('packs', item.slug) return academyHref('challenges', item.slug) } function AcademyCard({ pageType, item }) { return (

{pageType.slice(0, -1)}

{item.title}

{item.excerpt || item.description || item.prompt_preview || item.content_preview || 'No description yet.'}

{pageType === 'prompts' && item.tags?.length ?

{item.tags.slice(0, 4).join(' · ')}

: null} {pageType === 'challenges' ?

{item.status} · {item.submission_count ?? 0} submissions

: null} ) } export default function AcademyList({ pageType, title, description, seo, items, filters, categories, pricingUrl }) { const flash = usePage().props.flash || {} return (

Skinbase AI Academy

{title}

{description}

Upgrade preview
{flash.success ?
{flash.success}
: null} {flash.error ?
{flash.error}
: null} {(items?.data || []).length === 0 ? (
Nothing matched this Academy view yet.
) : (
{items.data.map((item) => )}
)}
) }