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) => )}
)}
) }