import Tabs from '@/components/tabs'; import { TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import DashboardLayout from '@/layouts/dashboard/layout'; import { SharedData } from '@/types/global'; import { router } from '@inertiajs/react'; import { BookText, CircleDollarSign, FileText, FlaskConical, FolderInput, HelpCircle, ListTodo, Settings } from 'lucide-react'; import { nanoid } from 'nanoid'; import { ReactNode } from 'react'; import ExamUpdateHeader from './partials/exam-update-header'; import Attempts from './partials/tabs-content/attempts'; import Basic from './partials/tabs-content/basic'; import Info from './partials/tabs-content/info'; import Media from './partials/tabs-content/media'; import Pricing from './partials/tabs-content/pricing'; import Questions from './partials/tabs-content/questions'; import Resources from './partials/tabs-content/resources'; import SEO from './partials/tabs-content/seo'; import ExamSettings from './partials/tabs-content/settings'; export interface ExamUpdateProps extends SharedData { tab?: string; exam: Exam; attempt: ExamAttempt | null; attempts: Pagination; categories: ExamCategory[]; instructors: Instructor[] | null; } const Update = (props: ExamUpdateProps) => { const { tab, exam } = props; const tabs = [ { id: nanoid(), name: 'Questions', slug: 'questions', Icon: HelpCircle, Component: Questions, }, { id: nanoid(), name: 'Resources', slug: 'resources', Icon: ListTodo, Component: Resources, }, { id: nanoid(), name: 'Attempts', slug: 'attempts', Icon: ListTodo, Component: Attempts, }, { id: nanoid(), name: 'Basic', slug: 'basic', Icon: Settings, Component: Basic, }, { id: nanoid(), name: 'Pricing', slug: 'pricing', Icon: CircleDollarSign, Component: Pricing, }, { id: nanoid(), name: 'Settings', slug: 'settings', Icon: BookText, Component: ExamSettings, }, { id: nanoid(), name: 'Info', slug: 'info', Icon: FileText, Component: Info, }, { id: nanoid(), name: 'Media', slug: 'media', Icon: FolderInput, Component: Media, }, { id: nanoid(), name: 'SEO', slug: 'seo', Icon: FlaskConical, Component: SEO, }, ]; return (
{tabs.map(({ id, name, slug, Icon }) => ( router.get( route('exams.edit', { exam: exam.id, tab: slug, }), ) } > {name} ))}
{tabs.map(({ id, slug, Component }) => ( ))}
); }; Update.layout = (page: ReactNode) => ; export default Update;