feat: Implement content library functionality, allowing users to save and reuse blocks within lessons.
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { cmsApi, Lesson, Block, GradingCategory } from "@/lib/api";
|
import { cmsApi, Lesson, Block, GradingCategory, LibraryBlock, api } from "@/lib/api";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import DescriptionBlock from "@/components/blocks/DescriptionBlock";
|
import DescriptionBlock from "@/components/blocks/DescriptionBlock";
|
||||||
import MediaBlock from "@/components/blocks/MediaBlock";
|
import MediaBlock from "@/components/blocks/MediaBlock";
|
||||||
@@ -16,6 +16,8 @@ import AudioResponseBlock from "@/components/blocks/AudioResponseBlock";
|
|||||||
import HotspotBlock from "@/components/blocks/HotspotBlock";
|
import HotspotBlock from "@/components/blocks/HotspotBlock";
|
||||||
import MemoryBlock from "@/components/blocks/MemoryBlock";
|
import MemoryBlock from "@/components/blocks/MemoryBlock";
|
||||||
import PeerReviewBlock from "@/components/blocks/PeerReviewBlock";
|
import PeerReviewBlock from "@/components/blocks/PeerReviewBlock";
|
||||||
|
import SaveToLibraryModal from "@/components/modals/SaveToLibraryModal";
|
||||||
|
import LibraryPanel from "@/components/LibraryPanel";
|
||||||
import Modal from "@/components/Modal";
|
import Modal from "@/components/Modal";
|
||||||
import {
|
import {
|
||||||
Save,
|
Save,
|
||||||
@@ -23,7 +25,9 @@ import {
|
|||||||
Pencil,
|
Pencil,
|
||||||
ChevronUp,
|
ChevronUp,
|
||||||
ChevronDown,
|
ChevronDown,
|
||||||
Trash2
|
Trash2,
|
||||||
|
BookMarked,
|
||||||
|
Library
|
||||||
} from "lucide-react";
|
} from "lucide-react";
|
||||||
|
|
||||||
export default function LessonEditor({ params }: { params: { id: string; lessonId: string } }) {
|
export default function LessonEditor({ params }: { params: { id: string; lessonId: string } }) {
|
||||||
@@ -50,6 +54,11 @@ export default function LessonEditor({ params }: { params: { id: string; lessonI
|
|||||||
const [aiQuizContext, setAiQuizContext] = useState("");
|
const [aiQuizContext, setAiQuizContext] = useState("");
|
||||||
const [aiQuizType, setAiQuizType] = useState("multiple-choice");
|
const [aiQuizType, setAiQuizType] = useState("multiple-choice");
|
||||||
|
|
||||||
|
// Content Libraries states
|
||||||
|
const [isSaveToLibraryModalOpen, setIsSaveToLibraryModalOpen] = useState(false);
|
||||||
|
const [blockToSave, setBlockToSave] = useState<Block | null>(null);
|
||||||
|
const [isLibraryPanelOpen, setIsLibraryPanelOpen] = useState(false);
|
||||||
|
|
||||||
const [editValue, setEditValue] = useState("");
|
const [editValue, setEditValue] = useState("");
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
import { useState, useEffect } from 'react';
|
import { useState, useEffect } from 'react';
|
||||||
import { LibraryBlock, api } from '@/lib/api';
|
import { LibraryBlock, cmsApi } from '@/lib/api';
|
||||||
|
|
||||||
interface LibraryPanelProps {
|
interface LibraryPanelProps {
|
||||||
isOpen: boolean;
|
isOpen: boolean;
|
||||||
|
|||||||
Reference in New Issue
Block a user