import React from 'react'
import { Link, router, usePage } from '@inertiajs/react'
import SeoHead from '../../components/seo/SeoHead'
import NovaSelect from '../../components/ui/NovaSelect'
import { trackAcademySearchResultClick, trackUpgradeClick, useAcademyPageAnalytics } from '../../lib/academyAnalytics'
function CourseCard({ course, variant = 'default', analytics = null, searchContext = null, position = null }) {
const isFeatured = variant === 'featured'
const progress = course?.progress || null
const cover = course?.cover_image_url || course?.teaser_image_url || course?.cover_image || course?.teaser_image || ''
const trackSearchClick = () => {
if (!searchContext?.query) {
return
}
trackAcademySearchResultClick(analytics, searchContext, {
contentType: 'academy_course',
contentId: course?.id,
position,
})
}
return (
{cover ?

:
}
{course.difficulty}
{course.access_level}
{course.is_featured ? Featured : null}
{course.title}
{course.subtitle ?
{course.subtitle}
: null}
{course.excerpt || course.description || 'Structured Academy course.'}
Lessons
{course.lessons_count || 0}
Duration
{course.estimated_minutes ? `${course.estimated_minutes} min` : 'Flexible'}
Progress
{progress ? `${progress.percent}%` : 'Start fresh'}
)
}
export default function AcademyCoursesIndex({ seo, title, description, items, featuredCourses = [], filters = {}, pricingUrl, analytics }) {
const flash = usePage().props.flash || {}
useAcademyPageAnalytics(analytics)
const searchContext = analytics?.search ? {
query: analytics.search.query,
normalizedQuery: analytics.search.normalizedQuery,
resultsCount: analytics.search.resultsCount,
filters,
} : null
const difficultyOptions = [
{ value: '', label: 'All levels' },
{ value: 'beginner', label: 'Beginner' },
{ value: 'intermediate', label: 'Intermediate' },
{ value: 'advanced', label: 'Advanced' },
]
const accessOptions = [
{ value: '', label: 'All access' },
{ value: 'free', label: 'Free' },
{ value: 'premium', label: 'Premium' },
{ value: 'mixed', label: 'Mixed' },
]
return (
Skinbase AI Academy
{title}
{description}
trackUpgradeClick(analytics, { source: 'academy_courses_index_hero' })} className="rounded-full border border-amber-300/25 bg-amber-300/12 px-5 py-3 text-sm font-semibold text-amber-100">See Academy plans
{flash.success ?
{flash.success}
: null}
{flash.error ?
{flash.error}
: null}
{featuredCourses.length ? (
{featuredCourses.slice(1, 3).map((course, index) => )}
) : null}
router.get(window.location.pathname, { ...filters, difficulty: nextValue || undefined }, { preserveScroll: true, preserveState: true })}
options={difficultyOptions}
searchable={false}
className="rounded-2xl bg-white/[0.04]"
/>
router.get(window.location.pathname, { ...filters, access: nextValue || undefined }, { preserveScroll: true, preserveState: true })}
options={accessOptions}
searchable={false}
className="rounded-2xl bg-white/[0.04]"
/>
{(items?.data || []).length === 0 ? (
No published Academy courses matched these filters.
) : (
{items.data.map((course, index) => )}
)}
)
}