File size: 1,764 Bytes
e50b7ef
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

"use client";
import type { SyllabusUnit } from '@/types/syllabus';
import {
  Accordion,
  AccordionContent,
  AccordionItem,
  AccordionTrigger,
} from '@/components/ui/accordion';
import { NotebookText } from 'lucide-react';
import { HierarchicalContentDisplay } from './HierarchicalContentDisplay'; // Import the new component

interface UnitDetailsProps {
  units: SyllabusUnit[];
}

export function UnitDetails({ units }: UnitDetailsProps) {
  if (!units || units.length === 0) {
    return null;
  }

  return (
    <div className="mt-6">
      <h3 className="text-xl font-semibold mb-3 flex items-center font-headline text-primary">
        <NotebookText className="mr-2 h-5 w-5" />
        Units
      </h3>
      <Accordion type="single" collapsible className="w-full">
        {units.map((unit, index) => (
          <AccordionItem value={`unit-${index + 1}`} key={`unit-${index + 1}-${unit.title}`} className="border-accent/20">
            <AccordionTrigger className="text-md font-medium hover:text-accent transition-colors duration-200 py-3 text-left">
              {unit.title}
            </AccordionTrigger>
            <AccordionContent>
              <div className="pt-2 pb-4">
                {unit.structuredContent ? (
                  <HierarchicalContentDisplay nodes={unit.structuredContent} />
                ) : (
                  // Fallback for any old data that might not have structuredContent
                  <p className="text-sm leading-relaxed text-foreground/80 whitespace-pre-line">
                    Content not available in structured format.
                  </p>
                )}
              </div>
            </AccordionContent>
          </AccordionItem>
        ))}
      </Accordion>
    </div>
  );
}