@thanh01.pmt/interactive-quiz-kit 1.0.79 → 1.0.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/react-ui.mjs CHANGED
@@ -139643,200 +139643,194 @@ function LearningObjectiveManager({
139643
139643
  console.log("[LO Manager] No valid records to import.");
139644
139644
  }
139645
139645
  };
139646
- return (
139647
- // --- START: FIX ---
139648
- /* @__PURE__ */ React169__default.createElement(Card, { className: "flex flex-col h-full" }, /* @__PURE__ */ React169__default.createElement(CardHeader, null, /* @__PURE__ */ React169__default.createElement(CardTitle, { className: "flex justify-between items-center" }, /* @__PURE__ */ React169__default.createElement("span", { className: "flex items-center" }, /* @__PURE__ */ React169__default.createElement(Lightbulb, { className: "mr-2 h-5 w-5 text-primary" }), " ", "Manage Learning Objectives"), /* @__PURE__ */ React169__default.createElement("div", { className: "flex items-center gap-2" }, onBulkAdd && /* @__PURE__ */ React169__default.createElement(
139649
- MetadataImportControls,
139650
- {
139651
- metadataName: "Learning Objectives",
139652
- onImport: handleImport
139653
- }
139654
- ), /* @__PURE__ */ React169__default.createElement(Button, { onClick: handleAddItem, size: "sm" }, /* @__PURE__ */ React169__default.createElement(CirclePlus, { className: "mr-2 h-4 w-4" }), " Add Learning Objective")))), /* @__PURE__ */ React169__default.createElement(CardContent, { className: "flex-1 flex flex-col min-h-0" }, isLoading ? /* @__PURE__ */ React169__default.createElement("div", { className: "flex justify-center items-center h-full" }, /* @__PURE__ */ React169__default.createElement(LoaderCircle, { className: "h-8 w-8 animate-spin text-primary" })) : items.length === 0 ? /* @__PURE__ */ React169__default.createElement("p", { className: "text-center text-muted-foreground py-4" }, "No Learning Objectives found.") : (
139655
- // --- START: FIX ---
139656
- /* @__PURE__ */ React169__default.createElement("div", { className: "flex-1 relative border rounded-md" }, /* @__PURE__ */ React169__default.createElement(ScrollArea2, { className: "absolute inset-0" }, /* @__PURE__ */ React169__default.createElement(Table3, null, /* @__PURE__ */ React169__default.createElement(TableHeader, { className: "sticky top-0 bg-card z-10" }, /* @__PURE__ */ React169__default.createElement(TableRow, null, /* @__PURE__ */ React169__default.createElement(TableHead, null, "Code"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Name"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Subject"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Topic"), /* @__PURE__ */ React169__default.createElement(TableHead, { className: "text-right w-[120px]" }, "Actions"))), /* @__PURE__ */ React169__default.createElement(TableBody, null, items.map((item) => /* @__PURE__ */ React169__default.createElement(TableRow, { key: item.id }, /* @__PURE__ */ React169__default.createElement(TableCell, { className: "font-mono text-xs" }, item.code), /* @__PURE__ */ React169__default.createElement(TableCell, { className: "font-medium" }, item.name), /* @__PURE__ */ React169__default.createElement(TableCell, null, item.subject || item.subjectCode), /* @__PURE__ */ React169__default.createElement(TableCell, null, item.topic || item.topicCode), /* @__PURE__ */ React169__default.createElement(TableCell, { className: "text-right" }, /* @__PURE__ */ React169__default.createElement(
139657
- Button,
139658
- {
139659
- variant: "ghost",
139660
- size: "icon",
139661
- onClick: () => handleEditItem(item),
139662
- className: "mr-2"
139663
- },
139664
- /* @__PURE__ */ React169__default.createElement(PenLine, { className: "h-4 w-4" })
139665
- ), /* @__PURE__ */ React169__default.createElement(
139666
- Button,
139667
- {
139668
- variant: "ghost",
139669
- size: "icon",
139670
- onClick: () => handleDeleteItem(item),
139671
- className: "text-destructive hover:text-destructive"
139672
- },
139673
- /* @__PURE__ */ React169__default.createElement(Trash2, { className: "h-4 w-4" })
139674
- ))))))))
139675
- ), /* @__PURE__ */ React169__default.createElement(Dialog2, { open: isDialogOpen, onOpenChange: setIsDialogOpen }, /* @__PURE__ */ React169__default.createElement(DialogContent2, { className: "sm:max-w-2xl max-h-[90vh] overflow-y-auto" }, /* @__PURE__ */ React169__default.createElement(DialogHeader, null, /* @__PURE__ */ React169__default.createElement(DialogTitle2, null, currentItem ? "Edit Learning Objective" : "Add New Learning Objective")), /* @__PURE__ */ React169__default.createElement("div", { className: "grid gap-4 py-4" }, /* @__PURE__ */ React169__default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "code" }, "Code"), /* @__PURE__ */ React169__default.createElement(
139676
- Input,
139677
- {
139678
- id: "code",
139679
- value: formState.code || "",
139680
- onChange: (e3) => handleFormChange(
139681
- "code",
139682
- e3.target.value.toUpperCase()
139683
- ),
139684
- disabled: !!currentItem
139685
- }
139686
- )), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "name" }, "Name (Description)"), /* @__PURE__ */ React169__default.createElement(
139687
- Input,
139688
- {
139689
- id: "name",
139690
- value: formState.name || "",
139691
- onChange: (e3) => handleFormChange(
139692
- "name",
139693
- e3.target.value
139694
- )
139695
- }
139696
- ))), /* @__PURE__ */ React169__default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "subject" }, "Subject Name"), /* @__PURE__ */ React169__default.createElement(
139697
- Input,
139698
- {
139699
- id: "subject",
139700
- value: formState.subject || "",
139701
- onChange: (e3) => handleFormChange(
139702
- "subject",
139703
- e3.target.value
139704
- )
139705
- }
139706
- )), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "subjectCode" }, "Subject Code"), /* @__PURE__ */ React169__default.createElement(
139707
- EditableCombobox,
139708
- {
139709
- options: subjects.map((s4) => ({
139710
- value: s4.code,
139711
- label: s4.name
139712
- })),
139713
- value: formState.subjectCode || "",
139714
- onChange: (val) => handleFormChange("subjectCode", val),
139715
- placeholder: "Select a subject..."
139716
- }
139717
- ))), /* @__PURE__ */ React169__default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "category" }, "Category Name"), /* @__PURE__ */ React169__default.createElement(
139718
- Input,
139719
- {
139720
- id: "category",
139721
- value: formState.category || "",
139722
- onChange: (e3) => handleFormChange(
139723
- "category",
139724
- e3.target.value
139725
- )
139726
- }
139727
- )), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "categoryCode" }, "Category Code"), /* @__PURE__ */ React169__default.createElement(
139728
- Input,
139729
- {
139730
- id: "categoryCode",
139731
- value: formState.categoryCode || "",
139732
- onChange: (e3) => handleFormChange(
139733
- "categoryCode",
139734
- e3.target.value
139735
- )
139736
- }
139737
- ))), /* @__PURE__ */ React169__default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "topic" }, "Topic Name"), /* @__PURE__ */ React169__default.createElement(
139738
- Input,
139739
- {
139740
- id: "topic",
139741
- value: formState.topic || "",
139742
- onChange: (e3) => handleFormChange(
139743
- "topic",
139744
- e3.target.value
139745
- )
139746
- }
139747
- )), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "topicCode" }, "Topic Code"), /* @__PURE__ */ React169__default.createElement(
139748
- Input,
139749
- {
139750
- id: "topicCode",
139751
- value: formState.topicCode || "",
139752
- onChange: (e3) => handleFormChange(
139753
- "topicCode",
139754
- e3.target.value
139755
- )
139756
- }
139757
- ))), /* @__PURE__ */ React169__default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "grade" }, "Grade Name"), /* @__PURE__ */ React169__default.createElement(
139758
- Input,
139759
- {
139760
- id: "grade",
139761
- value: formState.grade || "",
139762
- onChange: (e3) => handleFormChange(
139763
- "grade",
139764
- e3.target.value
139765
- )
139766
- }
139767
- )), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "gradeCode" }, "Grade Code"), /* @__PURE__ */ React169__default.createElement(
139768
- Input,
139769
- {
139770
- id: "gradeCode",
139771
- value: formState.gradeCode || "",
139772
- onChange: (e3) => handleFormChange(
139773
- "gradeCode",
139774
- e3.target.value
139775
- )
139776
- }
139777
- ))), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "keywords" }, "Keywords (comma-separated)"), /* @__PURE__ */ React169__default.createElement(
139778
- Textarea,
139779
- {
139780
- id: "keywords",
139781
- value: formState.keywords?.join(", ") || "",
139782
- onChange: (e3) => handleFormChange(
139783
- "keywords",
139784
- e3.target.value.split(",").map((s4) => s4.trim())
139785
- )
139786
- }
139787
- )), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "stemElements" }, "STEM Elements (comma-separated)"), /* @__PURE__ */ React169__default.createElement(
139788
- Textarea,
139789
- {
139790
- id: "stemElements",
139791
- value: formState.stemElements?.join(", ") || "",
139792
- onChange: (e3) => handleFormChange(
139793
- "stemElements",
139794
- e3.target.value.split(",").map((s4) => s4.trim())
139795
- )
139796
- }
139797
- )), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "bloomLevelsGuideline" }, "Bloom's Guideline (comma-separated)"), /* @__PURE__ */ React169__default.createElement(
139798
- Textarea,
139799
- {
139800
- id: "bloomLevelsGuideline",
139801
- value: formState.bloomLevelsGuideline?.join(
139802
- ", "
139803
- ) || "",
139804
- onChange: (e3) => handleFormChange(
139805
- "bloomLevelsGuideline",
139806
- e3.target.value.split(",").map((s4) => s4.trim())
139807
- )
139808
- }
139809
- ))), /* @__PURE__ */ React169__default.createElement(DialogFooter, null, /* @__PURE__ */ React169__default.createElement(
139810
- Button,
139811
- {
139812
- type: "button",
139813
- variant: "outline",
139814
- onClick: () => setIsDialogOpen(false),
139815
- disabled: isPending
139816
- },
139817
- "Cancel"
139818
- ), /* @__PURE__ */ React169__default.createElement(
139819
- Button,
139820
- {
139821
- type: "submit",
139822
- onClick: handleSubmit,
139823
- disabled: isPending || !formState.name?.trim() || !formState.code?.trim()
139824
- },
139825
- isPending && /* @__PURE__ */ React169__default.createElement(LoaderCircle, { className: "mr-2 h-4 w-4 animate-spin" }),
139826
- " ",
139827
- "Save"
139828
- )))), /* @__PURE__ */ React169__default.createElement(AlertDialog2, { open: isAlertOpen, onOpenChange: setIsAlertOpen }, /* @__PURE__ */ React169__default.createElement(AlertDialogContent2, null, /* @__PURE__ */ React169__default.createElement(AlertDialogHeader, null, /* @__PURE__ */ React169__default.createElement(AlertDialogTitle2, null, "Are you sure?"), /* @__PURE__ */ React169__default.createElement(AlertDialogDescription2, null, 'This will permanently delete "', itemToDelete?.name, '".')), /* @__PURE__ */ React169__default.createElement(AlertDialogFooter, null, /* @__PURE__ */ React169__default.createElement(AlertDialogCancel2, { disabled: isPending }, "Cancel"), /* @__PURE__ */ React169__default.createElement(
139829
- AlertDialogAction2,
139830
- {
139831
- onClick: confirmDelete,
139832
- disabled: isPending,
139833
- className: "bg-destructive hover:bg-destructive/90"
139834
- },
139835
- isPending && /* @__PURE__ */ React169__default.createElement(LoaderCircle, { className: "mr-2 h-4 w-4 animate-spin" }),
139836
- " ",
139837
- "Delete"
139838
- ))))))
139839
- );
139646
+ return /* @__PURE__ */ React169__default.createElement(Card, { className: "flex flex-col h-full" }, /* @__PURE__ */ React169__default.createElement(CardHeader, null, /* @__PURE__ */ React169__default.createElement(CardTitle, { className: "flex justify-between items-center" }, /* @__PURE__ */ React169__default.createElement("span", { className: "flex items-center" }, /* @__PURE__ */ React169__default.createElement(Lightbulb, { className: "mr-2 h-5 w-5 text-primary" }), " ", "Manage Learning Objectives"), /* @__PURE__ */ React169__default.createElement("div", { className: "flex items-center gap-2" }, onBulkAdd && /* @__PURE__ */ React169__default.createElement(
139647
+ MetadataImportControls,
139648
+ {
139649
+ metadataName: "Learning Objectives",
139650
+ onImport: handleImport
139651
+ }
139652
+ ), /* @__PURE__ */ React169__default.createElement(Button, { onClick: handleAddItem, size: "sm" }, /* @__PURE__ */ React169__default.createElement(CirclePlus, { className: "mr-2 h-4 w-4" }), " Add Learning Objective")))), /* @__PURE__ */ React169__default.createElement(CardContent, { className: "flex-1 flex flex-col min-h-0" }, isLoading ? /* @__PURE__ */ React169__default.createElement("div", { className: "flex justify-center items-center h-full" }, /* @__PURE__ */ React169__default.createElement(LoaderCircle, { className: "h-8 w-8 animate-spin text-primary" })) : items.length === 0 ? /* @__PURE__ */ React169__default.createElement("div", { className: "flex flex-col items-center justify-center h-full text-center p-8 border rounded-lg bg-muted/50" }, /* @__PURE__ */ React169__default.createElement(Lightbulb, { className: "h-12 w-12 text-muted-foreground mb-4" }), /* @__PURE__ */ React169__default.createElement("h3", { className: "text-xl font-semibold" }, "No Learning Objectives"), /* @__PURE__ */ React169__default.createElement("p", { className: "text-muted-foreground mt-2" }, "Get started by adding a new learning objective or importing a list.")) : /* @__PURE__ */ React169__default.createElement("div", { className: "flex-1 relative border rounded-md" }, /* @__PURE__ */ React169__default.createElement(ScrollArea2, { className: "absolute inset-0" }, /* @__PURE__ */ React169__default.createElement(Table3, null, /* @__PURE__ */ React169__default.createElement(TableHeader, { className: "sticky top-0 bg-card z-10" }, /* @__PURE__ */ React169__default.createElement(TableRow, null, /* @__PURE__ */ React169__default.createElement(TableHead, null, "Code"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Name"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Subject"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Topic"), /* @__PURE__ */ React169__default.createElement(TableHead, { className: "text-right w-[120px]" }, "Actions"))), /* @__PURE__ */ React169__default.createElement(TableBody, null, items.map((item) => /* @__PURE__ */ React169__default.createElement(TableRow, { key: item.id }, /* @__PURE__ */ React169__default.createElement(TableCell, { className: "font-mono text-xs" }, item.code), /* @__PURE__ */ React169__default.createElement(TableCell, { className: "font-medium" }, item.name), /* @__PURE__ */ React169__default.createElement(TableCell, null, item.subject || item.subjectCode), /* @__PURE__ */ React169__default.createElement(TableCell, null, item.topic || item.topicCode), /* @__PURE__ */ React169__default.createElement(TableCell, { className: "text-right" }, /* @__PURE__ */ React169__default.createElement(
139653
+ Button,
139654
+ {
139655
+ variant: "ghost",
139656
+ size: "icon",
139657
+ onClick: () => handleEditItem(item),
139658
+ className: "mr-2"
139659
+ },
139660
+ /* @__PURE__ */ React169__default.createElement(PenLine, { className: "h-4 w-4" })
139661
+ ), /* @__PURE__ */ React169__default.createElement(
139662
+ Button,
139663
+ {
139664
+ variant: "ghost",
139665
+ size: "icon",
139666
+ onClick: () => handleDeleteItem(item),
139667
+ className: "text-destructive hover:text-destructive"
139668
+ },
139669
+ /* @__PURE__ */ React169__default.createElement(Trash2, { className: "h-4 w-4" })
139670
+ ))))))))), /* @__PURE__ */ React169__default.createElement(Dialog2, { open: isDialogOpen, onOpenChange: setIsDialogOpen }, /* @__PURE__ */ React169__default.createElement(DialogContent2, { className: "sm:max-w-2xl" }, /* @__PURE__ */ React169__default.createElement(ScrollArea2, { className: "max-h-[85vh]" }, /* @__PURE__ */ React169__default.createElement("div", { className: "p-6" }, /* @__PURE__ */ React169__default.createElement(DialogHeader, null, /* @__PURE__ */ React169__default.createElement(DialogTitle2, null, currentItem ? "Edit Learning Objective" : "Add New Learning Objective")), /* @__PURE__ */ React169__default.createElement("div", { className: "grid gap-4 py-4" }, /* @__PURE__ */ React169__default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "code" }, "Code"), /* @__PURE__ */ React169__default.createElement(
139671
+ Input,
139672
+ {
139673
+ id: "code",
139674
+ value: formState.code || "",
139675
+ onChange: (e3) => handleFormChange(
139676
+ "code",
139677
+ e3.target.value.toUpperCase()
139678
+ ),
139679
+ disabled: !!currentItem
139680
+ }
139681
+ )), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "name" }, "Name (Description)"), /* @__PURE__ */ React169__default.createElement(
139682
+ Input,
139683
+ {
139684
+ id: "name",
139685
+ value: formState.name || "",
139686
+ onChange: (e3) => handleFormChange(
139687
+ "name",
139688
+ e3.target.value
139689
+ )
139690
+ }
139691
+ ))), /* @__PURE__ */ React169__default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "subject" }, "Subject Name"), /* @__PURE__ */ React169__default.createElement(
139692
+ Input,
139693
+ {
139694
+ id: "subject",
139695
+ value: formState.subject || "",
139696
+ onChange: (e3) => handleFormChange(
139697
+ "subject",
139698
+ e3.target.value
139699
+ )
139700
+ }
139701
+ )), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "subjectCode" }, "Subject Code"), /* @__PURE__ */ React169__default.createElement(
139702
+ EditableCombobox,
139703
+ {
139704
+ options: subjects.map((s4) => ({
139705
+ value: s4.code,
139706
+ label: s4.name
139707
+ })),
139708
+ value: formState.subjectCode || "",
139709
+ onChange: (val) => handleFormChange("subjectCode", val),
139710
+ placeholder: "Select a subject..."
139711
+ }
139712
+ ))), /* @__PURE__ */ React169__default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "category" }, "Category Name"), /* @__PURE__ */ React169__default.createElement(
139713
+ Input,
139714
+ {
139715
+ id: "category",
139716
+ value: formState.category || "",
139717
+ onChange: (e3) => handleFormChange(
139718
+ "category",
139719
+ e3.target.value
139720
+ )
139721
+ }
139722
+ )), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "categoryCode" }, "Category Code"), /* @__PURE__ */ React169__default.createElement(
139723
+ Input,
139724
+ {
139725
+ id: "categoryCode",
139726
+ value: formState.categoryCode || "",
139727
+ onChange: (e3) => handleFormChange(
139728
+ "categoryCode",
139729
+ e3.target.value
139730
+ )
139731
+ }
139732
+ ))), /* @__PURE__ */ React169__default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "topic" }, "Topic Name"), /* @__PURE__ */ React169__default.createElement(
139733
+ Input,
139734
+ {
139735
+ id: "topic",
139736
+ value: formState.topic || "",
139737
+ onChange: (e3) => handleFormChange(
139738
+ "topic",
139739
+ e3.target.value
139740
+ )
139741
+ }
139742
+ )), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "topicCode" }, "Topic Code"), /* @__PURE__ */ React169__default.createElement(
139743
+ Input,
139744
+ {
139745
+ id: "topicCode",
139746
+ value: formState.topicCode || "",
139747
+ onChange: (e3) => handleFormChange(
139748
+ "topicCode",
139749
+ e3.target.value
139750
+ )
139751
+ }
139752
+ ))), /* @__PURE__ */ React169__default.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4" }, /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "grade" }, "Grade Name"), /* @__PURE__ */ React169__default.createElement(
139753
+ Input,
139754
+ {
139755
+ id: "grade",
139756
+ value: formState.grade || "",
139757
+ onChange: (e3) => handleFormChange(
139758
+ "grade",
139759
+ e3.target.value
139760
+ )
139761
+ }
139762
+ )), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "gradeCode" }, "Grade Code"), /* @__PURE__ */ React169__default.createElement(
139763
+ Input,
139764
+ {
139765
+ id: "gradeCode",
139766
+ value: formState.gradeCode || "",
139767
+ onChange: (e3) => handleFormChange(
139768
+ "gradeCode",
139769
+ e3.target.value
139770
+ )
139771
+ }
139772
+ ))), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "keywords" }, "Keywords (comma-separated)"), /* @__PURE__ */ React169__default.createElement(
139773
+ Textarea,
139774
+ {
139775
+ id: "keywords",
139776
+ value: formState.keywords?.join(", ") || "",
139777
+ onChange: (e3) => handleFormChange(
139778
+ "keywords",
139779
+ e3.target.value.split(",").map((s4) => s4.trim())
139780
+ )
139781
+ }
139782
+ )), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "stemElements" }, "STEM Elements (comma-separated)"), /* @__PURE__ */ React169__default.createElement(
139783
+ Textarea,
139784
+ {
139785
+ id: "stemElements",
139786
+ value: formState.stemElements?.join(", ") || "",
139787
+ onChange: (e3) => handleFormChange(
139788
+ "stemElements",
139789
+ e3.target.value.split(",").map((s4) => s4.trim())
139790
+ )
139791
+ }
139792
+ )), /* @__PURE__ */ React169__default.createElement("div", null, /* @__PURE__ */ React169__default.createElement(Label2, { htmlFor: "bloomLevelsGuideline" }, "Bloom's Guideline (comma-separated)"), /* @__PURE__ */ React169__default.createElement(
139793
+ Textarea,
139794
+ {
139795
+ id: "bloomLevelsGuideline",
139796
+ value: formState.bloomLevelsGuideline?.join(
139797
+ ", "
139798
+ ) || "",
139799
+ onChange: (e3) => handleFormChange(
139800
+ "bloomLevelsGuideline",
139801
+ e3.target.value.split(",").map((s4) => s4.trim())
139802
+ )
139803
+ }
139804
+ ))))), /* @__PURE__ */ React169__default.createElement(DialogFooter, { className: "p-6 pt-0" }, /* @__PURE__ */ React169__default.createElement(
139805
+ Button,
139806
+ {
139807
+ type: "button",
139808
+ variant: "outline",
139809
+ onClick: () => setIsDialogOpen(false),
139810
+ disabled: isPending
139811
+ },
139812
+ "Cancel"
139813
+ ), /* @__PURE__ */ React169__default.createElement(
139814
+ Button,
139815
+ {
139816
+ type: "submit",
139817
+ onClick: handleSubmit,
139818
+ disabled: isPending || !formState.name?.trim() || !formState.code?.trim()
139819
+ },
139820
+ isPending && /* @__PURE__ */ React169__default.createElement(LoaderCircle, { className: "mr-2 h-4 w-4 animate-spin" }),
139821
+ " ",
139822
+ "Save"
139823
+ )))), /* @__PURE__ */ React169__default.createElement(AlertDialog2, { open: isAlertOpen, onOpenChange: setIsAlertOpen }, /* @__PURE__ */ React169__default.createElement(AlertDialogContent2, null, /* @__PURE__ */ React169__default.createElement(AlertDialogHeader, null, /* @__PURE__ */ React169__default.createElement(AlertDialogTitle2, null, "Are you sure?"), /* @__PURE__ */ React169__default.createElement(AlertDialogDescription2, null, 'This will permanently delete "', itemToDelete?.name, '".')), /* @__PURE__ */ React169__default.createElement(AlertDialogFooter, null, /* @__PURE__ */ React169__default.createElement(AlertDialogCancel2, { disabled: isPending }, "Cancel"), /* @__PURE__ */ React169__default.createElement(
139824
+ AlertDialogAction2,
139825
+ {
139826
+ onClick: confirmDelete,
139827
+ disabled: isPending,
139828
+ className: "bg-destructive hover:bg-destructive/90"
139829
+ },
139830
+ isPending && /* @__PURE__ */ React169__default.createElement(LoaderCircle, { className: "mr-2 h-4 w-4 animate-spin" }),
139831
+ " ",
139832
+ "Delete"
139833
+ )))));
139840
139834
  }
139841
139835
 
139842
139836
  // src/react-ui/components/metadata/ContextManager.tsx
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thanh01.pmt/interactive-quiz-kit",
3
- "version": "1.0.79",
3
+ "version": "1.0.80",
4
4
  "description": "A comprehensive library for creating, managing, and playing interactive quizzes, with AI generation and SCORM support.",
5
5
  "keywords": [
6
6
  "react",