@thanh01.pmt/interactive-quiz-kit 1.0.58 → 1.0.60

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.
@@ -100510,6 +100510,21 @@ var Textarea = React95__namespace.forwardRef(
100510
100510
  );
100511
100511
  Textarea.displayName = "Textarea";
100512
100512
 
100513
+ // src/react-ui/components/elements/skeleton.tsx
100514
+ init_react_shim();
100515
+ function Skeleton({
100516
+ className,
100517
+ ...props
100518
+ }) {
100519
+ return /* @__PURE__ */ React95__namespace.default.createElement(
100520
+ "div",
100521
+ {
100522
+ className: cn("animate-pulse rounded-md bg-muted", className),
100523
+ ...props
100524
+ }
100525
+ );
100526
+ }
100527
+
100513
100528
  // src/react-ui/components/common/SimpleMarkdownEditor.tsx
100514
100529
  var SimpleMarkdownEditor = ({
100515
100530
  value,
@@ -100518,6 +100533,10 @@ var SimpleMarkdownEditor = ({
100518
100533
  minHeight = "150px",
100519
100534
  placeholder: placeholder2 = "Enter content here... Markdown is supported."
100520
100535
  }) => {
100536
+ const [isMounted, setIsMounted] = React95.useState(false);
100537
+ React95.useEffect(() => {
100538
+ setIsMounted(true);
100539
+ }, []);
100521
100540
  return /* @__PURE__ */ React95__namespace.default.createElement("div", { className: `simple-markdown-editor ${className}` }, /* @__PURE__ */ React95__namespace.default.createElement(Tabs2, { defaultValue: "write", className: "w-full" }, /* @__PURE__ */ React95__namespace.default.createElement(TabsList2, { className: "grid w-full grid-cols-2" }, /* @__PURE__ */ React95__namespace.default.createElement(TabsTrigger2, { value: "write" }, "Write"), /* @__PURE__ */ React95__namespace.default.createElement(TabsTrigger2, { value: "preview" }, "Preview")), /* @__PURE__ */ React95__namespace.default.createElement(TabsContent2, { value: "write", className: "mt-2" }, /* @__PURE__ */ React95__namespace.default.createElement(
100522
100541
  Textarea,
100523
100542
  {
@@ -100533,7 +100552,7 @@ var SimpleMarkdownEditor = ({
100533
100552
  className: "p-3 border rounded-md bg-muted/20",
100534
100553
  style: { minHeight }
100535
100554
  },
100536
- value ? /* @__PURE__ */ React95__namespace.default.createElement(MarkdownRenderer, { content: value }) : /* @__PURE__ */ React95__namespace.default.createElement("p", { className: "text-muted-foreground" }, "Preview will appear here.")
100555
+ isMounted ? value ? /* @__PURE__ */ React95__namespace.default.createElement(MarkdownRenderer, { content: value }) : /* @__PURE__ */ React95__namespace.default.createElement("p", { className: "text-muted-foreground" }, "Preview will appear here.") : /* @__PURE__ */ React95__namespace.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React95__namespace.default.createElement(Skeleton, { className: "h-4 w-3/4" }), /* @__PURE__ */ React95__namespace.default.createElement(Skeleton, { className: "h-4 w-1/2" }))
100537
100556
  ))));
100538
100557
  };
100539
100558
 
@@ -105332,7 +105351,7 @@ function QuestionList({
105332
105351
  if (questions.length === 0) {
105333
105352
  return /* @__PURE__ */ React95__namespace.default.createElement("p", { className: "text-center text-muted-foreground py-8" }, "No questions match the current filters. Try adjusting your search or add new questions.");
105334
105353
  }
105335
- return /* @__PURE__ */ React95__namespace.default.createElement("div", { className: "overflow-x-auto" }, /* @__PURE__ */ React95__namespace.default.createElement(Table2, null, /* @__PURE__ */ React95__namespace.default.createElement(TableHeader, null, /* @__PURE__ */ React95__namespace.default.createElement(TableRow, null, /* @__PURE__ */ React95__namespace.default.createElement(TableHead, { className: "w-[30%]" }, "Question Text"), /* @__PURE__ */ React95__namespace.default.createElement(TableHead, null, "Code"), /* @__PURE__ */ React95__namespace.default.createElement(TableHead, null, "Type"), /* @__PURE__ */ React95__namespace.default.createElement(TableHead, null, "Subject"), /* @__PURE__ */ React95__namespace.default.createElement(TableHead, null, "Topic"), /* @__PURE__ */ React95__namespace.default.createElement(TableHead, null, "Grade"), /* @__PURE__ */ React95__namespace.default.createElement(TableHead, null, "Bloom's"), /* @__PURE__ */ React95__namespace.default.createElement(TableHead, null, "Last Modified"), /* @__PURE__ */ React95__namespace.default.createElement(TableHead, { className: "text-right w-[120px]" }, "Actions"))), /* @__PURE__ */ React95__namespace.default.createElement(TableBody, null, questions.map((question2) => /* @__PURE__ */ React95__namespace.default.createElement(TableRow, { key: question2.id }, /* @__PURE__ */ React95__namespace.default.createElement(TableCell, { className: "font-medium max-w-xs truncate", title: question2.text }, question2.text), /* @__PURE__ */ React95__namespace.default.createElement(TableCell, { className: "font-mono text-xs" }, question2.code), /* @__PURE__ */ React95__namespace.default.createElement(TableCell, null, /* @__PURE__ */ React95__namespace.default.createElement(Badge, { variant: "secondary" }, getLookupName(question2.questionTypeCode, metadata.questionTypes))), /* @__PURE__ */ React95__namespace.default.createElement(TableCell, null, getLookupName(question2.subjectCode, metadata.subjects)), /* @__PURE__ */ React95__namespace.default.createElement(TableCell, null, getLookupName(question2.topicCode, metadata.topics)), /* @__PURE__ */ React95__namespace.default.createElement(TableCell, null, getLookupName(question2.gradeLevelCode, metadata.gradeLevels)), /* @__PURE__ */ React95__namespace.default.createElement(TableCell, null, /* @__PURE__ */ React95__namespace.default.createElement(Badge, { variant: "outline" }, getLookupName(question2.bloomLevelCode, metadata.bloomLevels))), /* @__PURE__ */ React95__namespace.default.createElement(TableCell, null, format(new Date(question2.lastModified), "MMM d, yyyy")), /* @__PURE__ */ React95__namespace.default.createElement(TableCell, { className: "text-right" }, onView && /* @__PURE__ */ React95__namespace.default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onView(question2), className: "mr-1" }, /* @__PURE__ */ React95__namespace.default.createElement(Eye, { className: "h-4 w-4" })), /* @__PURE__ */ React95__namespace.default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onEdit(question2), className: "mr-1" }, /* @__PURE__ */ React95__namespace.default.createElement(PenLine, { className: "h-4 w-4" })), /* @__PURE__ */ React95__namespace.default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onDelete(question2), className: "text-destructive hover:text-destructive" }, /* @__PURE__ */ React95__namespace.default.createElement(Trash2, { className: "h-4 w-4" }))))))));
105354
+ return /* @__PURE__ */ React95__namespace.default.createElement("div", { className: "overflow-x-auto" }, /* @__PURE__ */ React95__namespace.default.createElement(Table2, null, /* @__PURE__ */ React95__namespace.default.createElement(TableHeader, null, /* @__PURE__ */ React95__namespace.default.createElement(TableRow, null, /* @__PURE__ */ React95__namespace.default.createElement(TableHead, { className: "w-[30%]" }, "Question Text"), /* @__PURE__ */ React95__namespace.default.createElement(TableHead, null, "Code"), /* @__PURE__ */ React95__namespace.default.createElement(TableHead, null, "Type"), /* @__PURE__ */ React95__namespace.default.createElement(TableHead, null, "Subject"), /* @__PURE__ */ React95__namespace.default.createElement(TableHead, null, "Topic"), /* @__PURE__ */ React95__namespace.default.createElement(TableHead, null, "Grade"), /* @__PURE__ */ React95__namespace.default.createElement(TableHead, null, "Bloom's"), /* @__PURE__ */ React95__namespace.default.createElement(TableHead, null, "Last Modified"), /* @__PURE__ */ React95__namespace.default.createElement(TableHead, { className: "text-right w-[120px]" }, "Actions"))), /* @__PURE__ */ React95__namespace.default.createElement(TableBody, null, questions.map((question2) => /* @__PURE__ */ React95__namespace.default.createElement(TableRow, { key: question2.id }, /* @__PURE__ */ React95__namespace.default.createElement(TableCell, { className: "font-medium max-w-xs truncate", title: question2.text }, /* @__PURE__ */ React95__namespace.default.createElement(MarkdownRenderer, { content: question2.questionConfig.prompt })), /* @__PURE__ */ React95__namespace.default.createElement(TableCell, { className: "font-mono text-xs" }, question2.code), /* @__PURE__ */ React95__namespace.default.createElement(TableCell, null, /* @__PURE__ */ React95__namespace.default.createElement(Badge, { variant: "secondary" }, getLookupName(question2.questionTypeCode, metadata.questionTypes))), /* @__PURE__ */ React95__namespace.default.createElement(TableCell, null, getLookupName(question2.subjectCode, metadata.subjects)), /* @__PURE__ */ React95__namespace.default.createElement(TableCell, null, getLookupName(question2.topicCode, metadata.topics)), /* @__PURE__ */ React95__namespace.default.createElement(TableCell, null, getLookupName(question2.gradeLevelCode, metadata.gradeLevels)), /* @__PURE__ */ React95__namespace.default.createElement(TableCell, null, /* @__PURE__ */ React95__namespace.default.createElement(Badge, { variant: "outline" }, getLookupName(question2.bloomLevelCode, metadata.bloomLevels))), /* @__PURE__ */ React95__namespace.default.createElement(TableCell, null, format(new Date(question2.lastModified), "MMM d, yyyy")), /* @__PURE__ */ React95__namespace.default.createElement(TableCell, { className: "text-right" }, onView && /* @__PURE__ */ React95__namespace.default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onView(question2), className: "mr-1" }, /* @__PURE__ */ React95__namespace.default.createElement(Eye, { className: "h-4 w-4" })), /* @__PURE__ */ React95__namespace.default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onEdit(question2), className: "mr-1" }, /* @__PURE__ */ React95__namespace.default.createElement(PenLine, { className: "h-4 w-4" })), /* @__PURE__ */ React95__namespace.default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onDelete(question2), className: "text-destructive hover:text-destructive" }, /* @__PURE__ */ React95__namespace.default.createElement(Trash2, { className: "h-4 w-4" }))))))));
105336
105355
  }
105337
105356
 
105338
105357
  // src/react-ui/components/authoring/QuestionFilters.tsx
@@ -105770,21 +105789,6 @@ var AlertDialogCancel2 = React95__namespace.forwardRef(({ className, ...props },
105770
105789
  ));
105771
105790
  AlertDialogCancel2.displayName = Cancel.displayName;
105772
105791
 
105773
- // src/react-ui/components/elements/skeleton.tsx
105774
- init_react_shim();
105775
- function Skeleton({
105776
- className,
105777
- ...props
105778
- }) {
105779
- return /* @__PURE__ */ React95__namespace.default.createElement(
105780
- "div",
105781
- {
105782
- className: cn("animate-pulse rounded-md bg-muted", className),
105783
- ...props
105784
- }
105785
- );
105786
- }
105787
-
105788
105792
  // src/react-ui/components/metadata/MetadataTabs.tsx
105789
105793
  init_react_shim();
105790
105794
 
@@ -100484,6 +100484,21 @@ var Textarea = React95.forwardRef(
100484
100484
  );
100485
100485
  Textarea.displayName = "Textarea";
100486
100486
 
100487
+ // src/react-ui/components/elements/skeleton.tsx
100488
+ init_react_shim();
100489
+ function Skeleton({
100490
+ className,
100491
+ ...props
100492
+ }) {
100493
+ return /* @__PURE__ */ React95__default.createElement(
100494
+ "div",
100495
+ {
100496
+ className: cn("animate-pulse rounded-md bg-muted", className),
100497
+ ...props
100498
+ }
100499
+ );
100500
+ }
100501
+
100487
100502
  // src/react-ui/components/common/SimpleMarkdownEditor.tsx
100488
100503
  var SimpleMarkdownEditor = ({
100489
100504
  value,
@@ -100492,6 +100507,10 @@ var SimpleMarkdownEditor = ({
100492
100507
  minHeight = "150px",
100493
100508
  placeholder: placeholder2 = "Enter content here... Markdown is supported."
100494
100509
  }) => {
100510
+ const [isMounted, setIsMounted] = useState(false);
100511
+ useEffect(() => {
100512
+ setIsMounted(true);
100513
+ }, []);
100495
100514
  return /* @__PURE__ */ React95__default.createElement("div", { className: `simple-markdown-editor ${className}` }, /* @__PURE__ */ React95__default.createElement(Tabs2, { defaultValue: "write", className: "w-full" }, /* @__PURE__ */ React95__default.createElement(TabsList2, { className: "grid w-full grid-cols-2" }, /* @__PURE__ */ React95__default.createElement(TabsTrigger2, { value: "write" }, "Write"), /* @__PURE__ */ React95__default.createElement(TabsTrigger2, { value: "preview" }, "Preview")), /* @__PURE__ */ React95__default.createElement(TabsContent2, { value: "write", className: "mt-2" }, /* @__PURE__ */ React95__default.createElement(
100496
100515
  Textarea,
100497
100516
  {
@@ -100507,7 +100526,7 @@ var SimpleMarkdownEditor = ({
100507
100526
  className: "p-3 border rounded-md bg-muted/20",
100508
100527
  style: { minHeight }
100509
100528
  },
100510
- value ? /* @__PURE__ */ React95__default.createElement(MarkdownRenderer, { content: value }) : /* @__PURE__ */ React95__default.createElement("p", { className: "text-muted-foreground" }, "Preview will appear here.")
100529
+ isMounted ? value ? /* @__PURE__ */ React95__default.createElement(MarkdownRenderer, { content: value }) : /* @__PURE__ */ React95__default.createElement("p", { className: "text-muted-foreground" }, "Preview will appear here.") : /* @__PURE__ */ React95__default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React95__default.createElement(Skeleton, { className: "h-4 w-3/4" }), /* @__PURE__ */ React95__default.createElement(Skeleton, { className: "h-4 w-1/2" }))
100511
100530
  ))));
100512
100531
  };
100513
100532
 
@@ -105306,7 +105325,7 @@ function QuestionList({
105306
105325
  if (questions.length === 0) {
105307
105326
  return /* @__PURE__ */ React95__default.createElement("p", { className: "text-center text-muted-foreground py-8" }, "No questions match the current filters. Try adjusting your search or add new questions.");
105308
105327
  }
105309
- return /* @__PURE__ */ React95__default.createElement("div", { className: "overflow-x-auto" }, /* @__PURE__ */ React95__default.createElement(Table2, null, /* @__PURE__ */ React95__default.createElement(TableHeader, null, /* @__PURE__ */ React95__default.createElement(TableRow, null, /* @__PURE__ */ React95__default.createElement(TableHead, { className: "w-[30%]" }, "Question Text"), /* @__PURE__ */ React95__default.createElement(TableHead, null, "Code"), /* @__PURE__ */ React95__default.createElement(TableHead, null, "Type"), /* @__PURE__ */ React95__default.createElement(TableHead, null, "Subject"), /* @__PURE__ */ React95__default.createElement(TableHead, null, "Topic"), /* @__PURE__ */ React95__default.createElement(TableHead, null, "Grade"), /* @__PURE__ */ React95__default.createElement(TableHead, null, "Bloom's"), /* @__PURE__ */ React95__default.createElement(TableHead, null, "Last Modified"), /* @__PURE__ */ React95__default.createElement(TableHead, { className: "text-right w-[120px]" }, "Actions"))), /* @__PURE__ */ React95__default.createElement(TableBody, null, questions.map((question2) => /* @__PURE__ */ React95__default.createElement(TableRow, { key: question2.id }, /* @__PURE__ */ React95__default.createElement(TableCell, { className: "font-medium max-w-xs truncate", title: question2.text }, question2.text), /* @__PURE__ */ React95__default.createElement(TableCell, { className: "font-mono text-xs" }, question2.code), /* @__PURE__ */ React95__default.createElement(TableCell, null, /* @__PURE__ */ React95__default.createElement(Badge, { variant: "secondary" }, getLookupName(question2.questionTypeCode, metadata.questionTypes))), /* @__PURE__ */ React95__default.createElement(TableCell, null, getLookupName(question2.subjectCode, metadata.subjects)), /* @__PURE__ */ React95__default.createElement(TableCell, null, getLookupName(question2.topicCode, metadata.topics)), /* @__PURE__ */ React95__default.createElement(TableCell, null, getLookupName(question2.gradeLevelCode, metadata.gradeLevels)), /* @__PURE__ */ React95__default.createElement(TableCell, null, /* @__PURE__ */ React95__default.createElement(Badge, { variant: "outline" }, getLookupName(question2.bloomLevelCode, metadata.bloomLevels))), /* @__PURE__ */ React95__default.createElement(TableCell, null, format(new Date(question2.lastModified), "MMM d, yyyy")), /* @__PURE__ */ React95__default.createElement(TableCell, { className: "text-right" }, onView && /* @__PURE__ */ React95__default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onView(question2), className: "mr-1" }, /* @__PURE__ */ React95__default.createElement(Eye, { className: "h-4 w-4" })), /* @__PURE__ */ React95__default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onEdit(question2), className: "mr-1" }, /* @__PURE__ */ React95__default.createElement(PenLine, { className: "h-4 w-4" })), /* @__PURE__ */ React95__default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onDelete(question2), className: "text-destructive hover:text-destructive" }, /* @__PURE__ */ React95__default.createElement(Trash2, { className: "h-4 w-4" }))))))));
105328
+ return /* @__PURE__ */ React95__default.createElement("div", { className: "overflow-x-auto" }, /* @__PURE__ */ React95__default.createElement(Table2, null, /* @__PURE__ */ React95__default.createElement(TableHeader, null, /* @__PURE__ */ React95__default.createElement(TableRow, null, /* @__PURE__ */ React95__default.createElement(TableHead, { className: "w-[30%]" }, "Question Text"), /* @__PURE__ */ React95__default.createElement(TableHead, null, "Code"), /* @__PURE__ */ React95__default.createElement(TableHead, null, "Type"), /* @__PURE__ */ React95__default.createElement(TableHead, null, "Subject"), /* @__PURE__ */ React95__default.createElement(TableHead, null, "Topic"), /* @__PURE__ */ React95__default.createElement(TableHead, null, "Grade"), /* @__PURE__ */ React95__default.createElement(TableHead, null, "Bloom's"), /* @__PURE__ */ React95__default.createElement(TableHead, null, "Last Modified"), /* @__PURE__ */ React95__default.createElement(TableHead, { className: "text-right w-[120px]" }, "Actions"))), /* @__PURE__ */ React95__default.createElement(TableBody, null, questions.map((question2) => /* @__PURE__ */ React95__default.createElement(TableRow, { key: question2.id }, /* @__PURE__ */ React95__default.createElement(TableCell, { className: "font-medium max-w-xs truncate", title: question2.text }, /* @__PURE__ */ React95__default.createElement(MarkdownRenderer, { content: question2.questionConfig.prompt })), /* @__PURE__ */ React95__default.createElement(TableCell, { className: "font-mono text-xs" }, question2.code), /* @__PURE__ */ React95__default.createElement(TableCell, null, /* @__PURE__ */ React95__default.createElement(Badge, { variant: "secondary" }, getLookupName(question2.questionTypeCode, metadata.questionTypes))), /* @__PURE__ */ React95__default.createElement(TableCell, null, getLookupName(question2.subjectCode, metadata.subjects)), /* @__PURE__ */ React95__default.createElement(TableCell, null, getLookupName(question2.topicCode, metadata.topics)), /* @__PURE__ */ React95__default.createElement(TableCell, null, getLookupName(question2.gradeLevelCode, metadata.gradeLevels)), /* @__PURE__ */ React95__default.createElement(TableCell, null, /* @__PURE__ */ React95__default.createElement(Badge, { variant: "outline" }, getLookupName(question2.bloomLevelCode, metadata.bloomLevels))), /* @__PURE__ */ React95__default.createElement(TableCell, null, format(new Date(question2.lastModified), "MMM d, yyyy")), /* @__PURE__ */ React95__default.createElement(TableCell, { className: "text-right" }, onView && /* @__PURE__ */ React95__default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onView(question2), className: "mr-1" }, /* @__PURE__ */ React95__default.createElement(Eye, { className: "h-4 w-4" })), /* @__PURE__ */ React95__default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onEdit(question2), className: "mr-1" }, /* @__PURE__ */ React95__default.createElement(PenLine, { className: "h-4 w-4" })), /* @__PURE__ */ React95__default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onDelete(question2), className: "text-destructive hover:text-destructive" }, /* @__PURE__ */ React95__default.createElement(Trash2, { className: "h-4 w-4" }))))))));
105310
105329
  }
105311
105330
 
105312
105331
  // src/react-ui/components/authoring/QuestionFilters.tsx
@@ -105744,21 +105763,6 @@ var AlertDialogCancel2 = React95.forwardRef(({ className, ...props }, ref) => /*
105744
105763
  ));
105745
105764
  AlertDialogCancel2.displayName = Cancel.displayName;
105746
105765
 
105747
- // src/react-ui/components/elements/skeleton.tsx
105748
- init_react_shim();
105749
- function Skeleton({
105750
- className,
105751
- ...props
105752
- }) {
105753
- return /* @__PURE__ */ React95__default.createElement(
105754
- "div",
105755
- {
105756
- className: cn("animate-pulse rounded-md bg-muted", className),
105757
- ...props
105758
- }
105759
- );
105760
- }
105761
-
105762
105766
  // src/react-ui/components/metadata/MetadataTabs.tsx
105763
105767
  init_react_shim();
105764
105768
 
package/dist/react-ui.cjs CHANGED
@@ -127083,6 +127083,21 @@ var Textarea = React169__namespace.forwardRef(
127083
127083
  );
127084
127084
  Textarea.displayName = "Textarea";
127085
127085
 
127086
+ // src/react-ui/components/elements/skeleton.tsx
127087
+ init_react_shim();
127088
+ function Skeleton({
127089
+ className,
127090
+ ...props
127091
+ }) {
127092
+ return /* @__PURE__ */ React169__namespace.default.createElement(
127093
+ "div",
127094
+ {
127095
+ className: cn("animate-pulse rounded-md bg-muted", className),
127096
+ ...props
127097
+ }
127098
+ );
127099
+ }
127100
+
127086
127101
  // src/react-ui/components/common/SimpleMarkdownEditor.tsx
127087
127102
  var SimpleMarkdownEditor = ({
127088
127103
  value,
@@ -127091,6 +127106,10 @@ var SimpleMarkdownEditor = ({
127091
127106
  minHeight = "150px",
127092
127107
  placeholder: placeholder2 = "Enter content here... Markdown is supported."
127093
127108
  }) => {
127109
+ const [isMounted, setIsMounted] = React169.useState(false);
127110
+ React169.useEffect(() => {
127111
+ setIsMounted(true);
127112
+ }, []);
127094
127113
  return /* @__PURE__ */ React169__namespace.default.createElement("div", { className: `simple-markdown-editor ${className}` }, /* @__PURE__ */ React169__namespace.default.createElement(Tabs2, { defaultValue: "write", className: "w-full" }, /* @__PURE__ */ React169__namespace.default.createElement(TabsList2, { className: "grid w-full grid-cols-2" }, /* @__PURE__ */ React169__namespace.default.createElement(TabsTrigger2, { value: "write" }, "Write"), /* @__PURE__ */ React169__namespace.default.createElement(TabsTrigger2, { value: "preview" }, "Preview")), /* @__PURE__ */ React169__namespace.default.createElement(TabsContent2, { value: "write", className: "mt-2" }, /* @__PURE__ */ React169__namespace.default.createElement(
127095
127114
  Textarea,
127096
127115
  {
@@ -127106,7 +127125,7 @@ var SimpleMarkdownEditor = ({
127106
127125
  className: "p-3 border rounded-md bg-muted/20",
127107
127126
  style: { minHeight }
127108
127127
  },
127109
- value ? /* @__PURE__ */ React169__namespace.default.createElement(MarkdownRenderer, { content: value }) : /* @__PURE__ */ React169__namespace.default.createElement("p", { className: "text-muted-foreground" }, "Preview will appear here.")
127128
+ isMounted ? value ? /* @__PURE__ */ React169__namespace.default.createElement(MarkdownRenderer, { content: value }) : /* @__PURE__ */ React169__namespace.default.createElement("p", { className: "text-muted-foreground" }, "Preview will appear here.") : /* @__PURE__ */ React169__namespace.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React169__namespace.default.createElement(Skeleton, { className: "h-4 w-3/4" }), /* @__PURE__ */ React169__namespace.default.createElement(Skeleton, { className: "h-4 w-1/2" }))
127110
127129
  ))));
127111
127130
  };
127112
127131
 
@@ -135572,7 +135591,7 @@ function QuestionList({
135572
135591
  if (questions.length === 0) {
135573
135592
  return /* @__PURE__ */ React169__namespace.default.createElement("p", { className: "text-center text-muted-foreground py-8" }, "No questions match the current filters. Try adjusting your search or add new questions.");
135574
135593
  }
135575
- return /* @__PURE__ */ React169__namespace.default.createElement("div", { className: "overflow-x-auto" }, /* @__PURE__ */ React169__namespace.default.createElement(Table3, null, /* @__PURE__ */ React169__namespace.default.createElement(TableHeader, null, /* @__PURE__ */ React169__namespace.default.createElement(TableRow, null, /* @__PURE__ */ React169__namespace.default.createElement(TableHead, { className: "w-[30%]" }, "Question Text"), /* @__PURE__ */ React169__namespace.default.createElement(TableHead, null, "Code"), /* @__PURE__ */ React169__namespace.default.createElement(TableHead, null, "Type"), /* @__PURE__ */ React169__namespace.default.createElement(TableHead, null, "Subject"), /* @__PURE__ */ React169__namespace.default.createElement(TableHead, null, "Topic"), /* @__PURE__ */ React169__namespace.default.createElement(TableHead, null, "Grade"), /* @__PURE__ */ React169__namespace.default.createElement(TableHead, null, "Bloom's"), /* @__PURE__ */ React169__namespace.default.createElement(TableHead, null, "Last Modified"), /* @__PURE__ */ React169__namespace.default.createElement(TableHead, { className: "text-right w-[120px]" }, "Actions"))), /* @__PURE__ */ React169__namespace.default.createElement(TableBody, null, questions.map((question2) => /* @__PURE__ */ React169__namespace.default.createElement(TableRow, { key: question2.id }, /* @__PURE__ */ React169__namespace.default.createElement(TableCell, { className: "font-medium max-w-xs truncate", title: question2.text }, question2.text), /* @__PURE__ */ React169__namespace.default.createElement(TableCell, { className: "font-mono text-xs" }, question2.code), /* @__PURE__ */ React169__namespace.default.createElement(TableCell, null, /* @__PURE__ */ React169__namespace.default.createElement(Badge2, { variant: "secondary" }, getLookupName(question2.questionTypeCode, metadata.questionTypes))), /* @__PURE__ */ React169__namespace.default.createElement(TableCell, null, getLookupName(question2.subjectCode, metadata.subjects)), /* @__PURE__ */ React169__namespace.default.createElement(TableCell, null, getLookupName(question2.topicCode, metadata.topics)), /* @__PURE__ */ React169__namespace.default.createElement(TableCell, null, getLookupName(question2.gradeLevelCode, metadata.gradeLevels)), /* @__PURE__ */ React169__namespace.default.createElement(TableCell, null, /* @__PURE__ */ React169__namespace.default.createElement(Badge2, { variant: "outline" }, getLookupName(question2.bloomLevelCode, metadata.bloomLevels))), /* @__PURE__ */ React169__namespace.default.createElement(TableCell, null, format(new Date(question2.lastModified), "MMM d, yyyy")), /* @__PURE__ */ React169__namespace.default.createElement(TableCell, { className: "text-right" }, onView && /* @__PURE__ */ React169__namespace.default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onView(question2), className: "mr-1" }, /* @__PURE__ */ React169__namespace.default.createElement(Eye, { className: "h-4 w-4" })), /* @__PURE__ */ React169__namespace.default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onEdit(question2), className: "mr-1" }, /* @__PURE__ */ React169__namespace.default.createElement(PenLine, { className: "h-4 w-4" })), /* @__PURE__ */ React169__namespace.default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onDelete(question2), className: "text-destructive hover:text-destructive" }, /* @__PURE__ */ React169__namespace.default.createElement(Trash2, { className: "h-4 w-4" }))))))));
135594
+ return /* @__PURE__ */ React169__namespace.default.createElement("div", { className: "overflow-x-auto" }, /* @__PURE__ */ React169__namespace.default.createElement(Table3, null, /* @__PURE__ */ React169__namespace.default.createElement(TableHeader, null, /* @__PURE__ */ React169__namespace.default.createElement(TableRow, null, /* @__PURE__ */ React169__namespace.default.createElement(TableHead, { className: "w-[30%]" }, "Question Text"), /* @__PURE__ */ React169__namespace.default.createElement(TableHead, null, "Code"), /* @__PURE__ */ React169__namespace.default.createElement(TableHead, null, "Type"), /* @__PURE__ */ React169__namespace.default.createElement(TableHead, null, "Subject"), /* @__PURE__ */ React169__namespace.default.createElement(TableHead, null, "Topic"), /* @__PURE__ */ React169__namespace.default.createElement(TableHead, null, "Grade"), /* @__PURE__ */ React169__namespace.default.createElement(TableHead, null, "Bloom's"), /* @__PURE__ */ React169__namespace.default.createElement(TableHead, null, "Last Modified"), /* @__PURE__ */ React169__namespace.default.createElement(TableHead, { className: "text-right w-[120px]" }, "Actions"))), /* @__PURE__ */ React169__namespace.default.createElement(TableBody, null, questions.map((question2) => /* @__PURE__ */ React169__namespace.default.createElement(TableRow, { key: question2.id }, /* @__PURE__ */ React169__namespace.default.createElement(TableCell, { className: "font-medium max-w-xs truncate", title: question2.text }, /* @__PURE__ */ React169__namespace.default.createElement(MarkdownRenderer, { content: question2.questionConfig.prompt })), /* @__PURE__ */ React169__namespace.default.createElement(TableCell, { className: "font-mono text-xs" }, question2.code), /* @__PURE__ */ React169__namespace.default.createElement(TableCell, null, /* @__PURE__ */ React169__namespace.default.createElement(Badge2, { variant: "secondary" }, getLookupName(question2.questionTypeCode, metadata.questionTypes))), /* @__PURE__ */ React169__namespace.default.createElement(TableCell, null, getLookupName(question2.subjectCode, metadata.subjects)), /* @__PURE__ */ React169__namespace.default.createElement(TableCell, null, getLookupName(question2.topicCode, metadata.topics)), /* @__PURE__ */ React169__namespace.default.createElement(TableCell, null, getLookupName(question2.gradeLevelCode, metadata.gradeLevels)), /* @__PURE__ */ React169__namespace.default.createElement(TableCell, null, /* @__PURE__ */ React169__namespace.default.createElement(Badge2, { variant: "outline" }, getLookupName(question2.bloomLevelCode, metadata.bloomLevels))), /* @__PURE__ */ React169__namespace.default.createElement(TableCell, null, format(new Date(question2.lastModified), "MMM d, yyyy")), /* @__PURE__ */ React169__namespace.default.createElement(TableCell, { className: "text-right" }, onView && /* @__PURE__ */ React169__namespace.default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onView(question2), className: "mr-1" }, /* @__PURE__ */ React169__namespace.default.createElement(Eye, { className: "h-4 w-4" })), /* @__PURE__ */ React169__namespace.default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onEdit(question2), className: "mr-1" }, /* @__PURE__ */ React169__namespace.default.createElement(PenLine, { className: "h-4 w-4" })), /* @__PURE__ */ React169__namespace.default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onDelete(question2), className: "text-destructive hover:text-destructive" }, /* @__PURE__ */ React169__namespace.default.createElement(Trash2, { className: "h-4 w-4" }))))))));
135576
135595
  }
135577
135596
 
135578
135597
  // src/react-ui/components/authoring/QuestionFilters.tsx
@@ -143180,21 +143199,6 @@ var M = React169__namespace.default.forwardRef(({ id: t4, anchorId: l2, anchorSe
143180
143199
  .styles-module_tooltip__mnnfp{padding:8px 16px;border-radius:3px;font-size:90%;width:max-content}.styles-module_arrow__K0L3T{width:var(--rt-arrow-size);height:var(--rt-arrow-size)}[class*='react-tooltip__place-top']>.styles-module_arrow__K0L3T{transform:rotate(45deg)}[class*='react-tooltip__place-right']>.styles-module_arrow__K0L3T{transform:rotate(135deg)}[class*='react-tooltip__place-bottom']>.styles-module_arrow__K0L3T{transform:rotate(225deg)}[class*='react-tooltip__place-left']>.styles-module_arrow__K0L3T{transform:rotate(315deg)}.styles-module_dark__xNqje{background:var(--rt-color-dark);color:var(--rt-color-white)}.styles-module_light__Z6W-X{background-color:var(--rt-color-white);color:var(--rt-color-dark)}.styles-module_success__A2AKt{background-color:var(--rt-color-success);color:var(--rt-color-white)}.styles-module_warning__SCK0X{background-color:var(--rt-color-warning);color:var(--rt-color-white)}.styles-module_error__JvumD{background-color:var(--rt-color-error);color:var(--rt-color-white)}.styles-module_info__BWdHW{background-color:var(--rt-color-info);color:var(--rt-color-white)}`, type: "base" });
143181
143200
  });
143182
143201
 
143183
- // src/react-ui/components/elements/skeleton.tsx
143184
- init_react_shim();
143185
- function Skeleton({
143186
- className,
143187
- ...props
143188
- }) {
143189
- return /* @__PURE__ */ React169__namespace.default.createElement(
143190
- "div",
143191
- {
143192
- className: cn("animate-pulse rounded-md bg-muted", className),
143193
- ...props
143194
- }
143195
- );
143196
- }
143197
-
143198
143202
  // src/react-ui/components/dashboard/ActivityCalendar.tsx
143199
143203
  var ActivityCalendar = ({ stats }) => {
143200
143204
  const { t: t4, i18n } = useTranslation();
package/dist/react-ui.mjs CHANGED
@@ -127056,6 +127056,21 @@ var Textarea = React169.forwardRef(
127056
127056
  );
127057
127057
  Textarea.displayName = "Textarea";
127058
127058
 
127059
+ // src/react-ui/components/elements/skeleton.tsx
127060
+ init_react_shim();
127061
+ function Skeleton({
127062
+ className,
127063
+ ...props
127064
+ }) {
127065
+ return /* @__PURE__ */ React169__default.createElement(
127066
+ "div",
127067
+ {
127068
+ className: cn("animate-pulse rounded-md bg-muted", className),
127069
+ ...props
127070
+ }
127071
+ );
127072
+ }
127073
+
127059
127074
  // src/react-ui/components/common/SimpleMarkdownEditor.tsx
127060
127075
  var SimpleMarkdownEditor = ({
127061
127076
  value,
@@ -127064,6 +127079,10 @@ var SimpleMarkdownEditor = ({
127064
127079
  minHeight = "150px",
127065
127080
  placeholder: placeholder2 = "Enter content here... Markdown is supported."
127066
127081
  }) => {
127082
+ const [isMounted, setIsMounted] = useState(false);
127083
+ useEffect(() => {
127084
+ setIsMounted(true);
127085
+ }, []);
127067
127086
  return /* @__PURE__ */ React169__default.createElement("div", { className: `simple-markdown-editor ${className}` }, /* @__PURE__ */ React169__default.createElement(Tabs2, { defaultValue: "write", className: "w-full" }, /* @__PURE__ */ React169__default.createElement(TabsList2, { className: "grid w-full grid-cols-2" }, /* @__PURE__ */ React169__default.createElement(TabsTrigger2, { value: "write" }, "Write"), /* @__PURE__ */ React169__default.createElement(TabsTrigger2, { value: "preview" }, "Preview")), /* @__PURE__ */ React169__default.createElement(TabsContent2, { value: "write", className: "mt-2" }, /* @__PURE__ */ React169__default.createElement(
127068
127087
  Textarea,
127069
127088
  {
@@ -127079,7 +127098,7 @@ var SimpleMarkdownEditor = ({
127079
127098
  className: "p-3 border rounded-md bg-muted/20",
127080
127099
  style: { minHeight }
127081
127100
  },
127082
- value ? /* @__PURE__ */ React169__default.createElement(MarkdownRenderer, { content: value }) : /* @__PURE__ */ React169__default.createElement("p", { className: "text-muted-foreground" }, "Preview will appear here.")
127101
+ isMounted ? value ? /* @__PURE__ */ React169__default.createElement(MarkdownRenderer, { content: value }) : /* @__PURE__ */ React169__default.createElement("p", { className: "text-muted-foreground" }, "Preview will appear here.") : /* @__PURE__ */ React169__default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React169__default.createElement(Skeleton, { className: "h-4 w-3/4" }), /* @__PURE__ */ React169__default.createElement(Skeleton, { className: "h-4 w-1/2" }))
127083
127102
  ))));
127084
127103
  };
127085
127104
 
@@ -135545,7 +135564,7 @@ function QuestionList({
135545
135564
  if (questions.length === 0) {
135546
135565
  return /* @__PURE__ */ React169__default.createElement("p", { className: "text-center text-muted-foreground py-8" }, "No questions match the current filters. Try adjusting your search or add new questions.");
135547
135566
  }
135548
- return /* @__PURE__ */ React169__default.createElement("div", { className: "overflow-x-auto" }, /* @__PURE__ */ React169__default.createElement(Table3, null, /* @__PURE__ */ React169__default.createElement(TableHeader, null, /* @__PURE__ */ React169__default.createElement(TableRow, null, /* @__PURE__ */ React169__default.createElement(TableHead, { className: "w-[30%]" }, "Question Text"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Code"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Type"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Subject"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Topic"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Grade"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Bloom's"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Last Modified"), /* @__PURE__ */ React169__default.createElement(TableHead, { className: "text-right w-[120px]" }, "Actions"))), /* @__PURE__ */ React169__default.createElement(TableBody, null, questions.map((question2) => /* @__PURE__ */ React169__default.createElement(TableRow, { key: question2.id }, /* @__PURE__ */ React169__default.createElement(TableCell, { className: "font-medium max-w-xs truncate", title: question2.text }, question2.text), /* @__PURE__ */ React169__default.createElement(TableCell, { className: "font-mono text-xs" }, question2.code), /* @__PURE__ */ React169__default.createElement(TableCell, null, /* @__PURE__ */ React169__default.createElement(Badge2, { variant: "secondary" }, getLookupName(question2.questionTypeCode, metadata.questionTypes))), /* @__PURE__ */ React169__default.createElement(TableCell, null, getLookupName(question2.subjectCode, metadata.subjects)), /* @__PURE__ */ React169__default.createElement(TableCell, null, getLookupName(question2.topicCode, metadata.topics)), /* @__PURE__ */ React169__default.createElement(TableCell, null, getLookupName(question2.gradeLevelCode, metadata.gradeLevels)), /* @__PURE__ */ React169__default.createElement(TableCell, null, /* @__PURE__ */ React169__default.createElement(Badge2, { variant: "outline" }, getLookupName(question2.bloomLevelCode, metadata.bloomLevels))), /* @__PURE__ */ React169__default.createElement(TableCell, null, format(new Date(question2.lastModified), "MMM d, yyyy")), /* @__PURE__ */ React169__default.createElement(TableCell, { className: "text-right" }, onView && /* @__PURE__ */ React169__default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onView(question2), className: "mr-1" }, /* @__PURE__ */ React169__default.createElement(Eye, { className: "h-4 w-4" })), /* @__PURE__ */ React169__default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onEdit(question2), className: "mr-1" }, /* @__PURE__ */ React169__default.createElement(PenLine, { className: "h-4 w-4" })), /* @__PURE__ */ React169__default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onDelete(question2), className: "text-destructive hover:text-destructive" }, /* @__PURE__ */ React169__default.createElement(Trash2, { className: "h-4 w-4" }))))))));
135567
+ return /* @__PURE__ */ React169__default.createElement("div", { className: "overflow-x-auto" }, /* @__PURE__ */ React169__default.createElement(Table3, null, /* @__PURE__ */ React169__default.createElement(TableHeader, null, /* @__PURE__ */ React169__default.createElement(TableRow, null, /* @__PURE__ */ React169__default.createElement(TableHead, { className: "w-[30%]" }, "Question Text"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Code"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Type"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Subject"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Topic"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Grade"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Bloom's"), /* @__PURE__ */ React169__default.createElement(TableHead, null, "Last Modified"), /* @__PURE__ */ React169__default.createElement(TableHead, { className: "text-right w-[120px]" }, "Actions"))), /* @__PURE__ */ React169__default.createElement(TableBody, null, questions.map((question2) => /* @__PURE__ */ React169__default.createElement(TableRow, { key: question2.id }, /* @__PURE__ */ React169__default.createElement(TableCell, { className: "font-medium max-w-xs truncate", title: question2.text }, /* @__PURE__ */ React169__default.createElement(MarkdownRenderer, { content: question2.questionConfig.prompt })), /* @__PURE__ */ React169__default.createElement(TableCell, { className: "font-mono text-xs" }, question2.code), /* @__PURE__ */ React169__default.createElement(TableCell, null, /* @__PURE__ */ React169__default.createElement(Badge2, { variant: "secondary" }, getLookupName(question2.questionTypeCode, metadata.questionTypes))), /* @__PURE__ */ React169__default.createElement(TableCell, null, getLookupName(question2.subjectCode, metadata.subjects)), /* @__PURE__ */ React169__default.createElement(TableCell, null, getLookupName(question2.topicCode, metadata.topics)), /* @__PURE__ */ React169__default.createElement(TableCell, null, getLookupName(question2.gradeLevelCode, metadata.gradeLevels)), /* @__PURE__ */ React169__default.createElement(TableCell, null, /* @__PURE__ */ React169__default.createElement(Badge2, { variant: "outline" }, getLookupName(question2.bloomLevelCode, metadata.bloomLevels))), /* @__PURE__ */ React169__default.createElement(TableCell, null, format(new Date(question2.lastModified), "MMM d, yyyy")), /* @__PURE__ */ React169__default.createElement(TableCell, { className: "text-right" }, onView && /* @__PURE__ */ React169__default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onView(question2), className: "mr-1" }, /* @__PURE__ */ React169__default.createElement(Eye, { className: "h-4 w-4" })), /* @__PURE__ */ React169__default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onEdit(question2), className: "mr-1" }, /* @__PURE__ */ React169__default.createElement(PenLine, { className: "h-4 w-4" })), /* @__PURE__ */ React169__default.createElement(Button, { variant: "ghost", size: "icon", onClick: () => onDelete(question2), className: "text-destructive hover:text-destructive" }, /* @__PURE__ */ React169__default.createElement(Trash2, { className: "h-4 w-4" }))))))));
135549
135568
  }
135550
135569
 
135551
135570
  // src/react-ui/components/authoring/QuestionFilters.tsx
@@ -143153,21 +143172,6 @@ var M = React169__default.forwardRef(({ id: t4, anchorId: l2, anchorSelect: n2,
143153
143172
  .styles-module_tooltip__mnnfp{padding:8px 16px;border-radius:3px;font-size:90%;width:max-content}.styles-module_arrow__K0L3T{width:var(--rt-arrow-size);height:var(--rt-arrow-size)}[class*='react-tooltip__place-top']>.styles-module_arrow__K0L3T{transform:rotate(45deg)}[class*='react-tooltip__place-right']>.styles-module_arrow__K0L3T{transform:rotate(135deg)}[class*='react-tooltip__place-bottom']>.styles-module_arrow__K0L3T{transform:rotate(225deg)}[class*='react-tooltip__place-left']>.styles-module_arrow__K0L3T{transform:rotate(315deg)}.styles-module_dark__xNqje{background:var(--rt-color-dark);color:var(--rt-color-white)}.styles-module_light__Z6W-X{background-color:var(--rt-color-white);color:var(--rt-color-dark)}.styles-module_success__A2AKt{background-color:var(--rt-color-success);color:var(--rt-color-white)}.styles-module_warning__SCK0X{background-color:var(--rt-color-warning);color:var(--rt-color-white)}.styles-module_error__JvumD{background-color:var(--rt-color-error);color:var(--rt-color-white)}.styles-module_info__BWdHW{background-color:var(--rt-color-info);color:var(--rt-color-white)}`, type: "base" });
143154
143173
  });
143155
143174
 
143156
- // src/react-ui/components/elements/skeleton.tsx
143157
- init_react_shim();
143158
- function Skeleton({
143159
- className,
143160
- ...props
143161
- }) {
143162
- return /* @__PURE__ */ React169__default.createElement(
143163
- "div",
143164
- {
143165
- className: cn("animate-pulse rounded-md bg-muted", className),
143166
- ...props
143167
- }
143168
- );
143169
- }
143170
-
143171
143175
  // src/react-ui/components/dashboard/ActivityCalendar.tsx
143172
143176
  var ActivityCalendar = ({ stats }) => {
143173
143177
  const { t: t4, i18n } = useTranslation();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thanh01.pmt/interactive-quiz-kit",
3
- "version": "1.0.58",
3
+ "version": "1.0.60",
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",