"use client" /** * Learning activities hub — secondary panel scope + course offerings table. */ import * as React from "react" import { ListPageTemplate, type ViewTab, } from "@/components/data-views" import { ExportDrawer } from "@/components/export-drawer" import { PageHeader } from "@/components/page-header" import { SecondaryPanelHubTemplate } from "@/components/templates/secondary-panel-hub-template" import { LearningActivitiesTable } from "@/components/learning-activities-table" import { LearningActivitiesFolderBridge } from "@/components/sidebar" import { Button } from "@/components/ui/button" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { Tip } from "@/components/ui/tip" import { useProduct } from "@/contexts/product-context" import { productPersistKey } from "@/stores/app-store" import { useLearningActivitiesHubNav } from "@/hooks/use-learning-activities-hub-nav" import { DEFAULT_LEARNING_ACTIVITY_GROUPS } from "@/lib/mock/learning-activities-folders" import { LEARNING_ACTIVITY_OFFERINGS } from "@/lib/mock/learning-activities-offerings" import type { LibraryFolder } from "@/lib/mock/library-folders" import { filterOfferingsByNav, laHubHeaderModel, laRouteHref, } from "@/lib/learning-activities-nav" const DEFAULT_TABS: ViewTab[] = [ { id: "course-offerings", label: "Course offerings", viewType: "table", icon: "fa-table", filterId: "all", }, ] function ModePlaceholder({ title, description }: { title: string; description: string }) { return (

{description}

) } export function LearningActivitiesClient() { const { product, customProducts, activeCustomIndex } = useProduct() const persistKey = productPersistKey(product, "learning-activities", customProducts, activeCustomIndex) const [folders, setFolders] = React.useState(() => DEFAULT_LEARNING_ACTIVITY_GROUPS.map(f => ({ ...f })), ) const [offerings] = React.useState(() => LEARNING_ACTIVITY_OFFERINGS.map(o => ({ ...o }))) const [exportOpen, setExportOpen] = React.useState(false) const { navState, hubBasePath } = useLearningActivitiesHubNav(folders) const filteredRows = React.useMemo( () => filterOfferingsByNav(offerings, folders, navState), [folders, navState, offerings], ) const hubHeader = React.useMemo( () => laHubHeaderModel(folders, navState), [folders, navState], ) const siteHeader = React.useMemo( () => ({ title: hubHeader.title, breadcrumbs: hubHeader.breadcrumbs?.map(crumb => ({ ...crumb, href: crumb.href ? laRouteHref(crumb.href, hubBasePath) : undefined, })), }), [hubBasePath, hubHeader.breadcrumbs, hubHeader.title], ) const renderBody = () => { if (navState.mode === "reports") { return ( ) } if (navState.mode === "notifications") { return ( ) } return } return ( <> filteredRows.length} header={