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, FilePenLine, FileText, FlaskConical, FolderInput, Settings, TvMinimalPlay } from 'lucide-react'; import { nanoid } from 'nanoid'; import { ReactNode } from 'react'; import Assignment from './partials/assignment'; import Basic from './partials/basic'; import CourseUpdateHeader from './partials/course-update-header'; import Curriculum from './partials/curriculum'; import Info from './partials/info'; import LiveClass from './partials/live-class'; import Media from './partials/media'; import Pricing from './partials/pricing'; import SEO from './partials/seo'; import Submissions from './partials/submissions'; export interface CourseUpdateProps extends SharedData { tab?: string; assignment?: string; course: Course; prices: string[]; lastSectionSort: number; lastLessonSort: number; statuses: string[]; labels: string[]; expiries: string[]; categories: CourseCategory[]; submissions: Pagination; watchHistory: WatchHistory | null; approvalStatus: CourseApprovalValidation; zoomConfig: ZoomConfigFields; assignments: CourseAssignment[]; instructors: Instructor[] | null; } const Update = (props: CourseUpdateProps) => { const { tab, assignment, course, translate } = props; const { button } = translate; const tabs = [ { id: nanoid(), name: button.curriculum, slug: 'curriculum', Icon: FilePenLine, Component: Curriculum, }, { id: nanoid(), name: button.live_class, slug: 'live-class', Icon: TvMinimalPlay, Component: LiveClass, }, { id: nanoid(), name: 'Assignment', slug: 'assignment', Icon: FileText, Component: assignment ? Submissions : Assignment, }, { id: nanoid(), name: button.basic, slug: 'basic', Icon: Settings, Component: Basic, }, { id: nanoid(), name: button.pricing, slug: 'pricing', Icon: CircleDollarSign, Component: Pricing, }, { id: nanoid(), name: button.info, slug: 'info', Icon: BookText, Component: Info, }, { id: nanoid(), name: button.media, slug: 'media', Icon: FolderInput, Component: Media, }, { id: nanoid(), name: button.seo, slug: 'seo', Icon: FlaskConical, Component: SEO, }, ]; return (
{tabs.map(({ id, name, slug, Icon }) => ( router.get( route('courses.edit', { course: course.id, tab: slug, }), ) } > {name} ))}
{tabs.map(({ id, slug, Component }) => ( ))}
); }; Update.layout = (page: ReactNode) => ; export default Update;