@hed-hog/lms 0.0.268 → 0.0.270

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.
Files changed (52) hide show
  1. package/hedhog/data/menu.yaml +8 -1
  2. package/hedhog/frontend/app/classes/[id]/page.tsx.ejs +1387 -0
  3. package/hedhog/frontend/app/classes/page.tsx.ejs +4 -4
  4. package/hedhog/frontend/app/courses/[id]/page.tsx.ejs +1237 -0
  5. package/hedhog/frontend/app/courses/[id]/structure/page.tsx.ejs +2642 -0
  6. package/hedhog/frontend/app/courses/page.tsx.ejs +825 -727
  7. package/hedhog/frontend/app/exams/[id]/attempt/page.tsx.ejs +976 -0
  8. package/hedhog/frontend/app/exams/[id]/questions/page.tsx.ejs +931 -0
  9. package/hedhog/frontend/app/exams/page.tsx.ejs +9 -7
  10. package/hedhog/frontend/app/training/page.tsx.ejs +3 -3
  11. package/hedhog/frontend/messages/en.json +703 -14
  12. package/hedhog/frontend/messages/pt.json +863 -174
  13. package/hedhog/query/triggers.sql +0 -0
  14. package/hedhog/table/certificate.yaml +89 -0
  15. package/hedhog/table/certificate_template.yaml +24 -0
  16. package/hedhog/table/course.yaml +67 -1
  17. package/hedhog/table/course_category.yaml +22 -0
  18. package/hedhog/table/course_class_attendance.yaml +34 -0
  19. package/hedhog/table/course_class_group.yaml +58 -0
  20. package/hedhog/table/course_class_session.yaml +38 -0
  21. package/hedhog/table/course_class_session_instructor.yaml +27 -0
  22. package/hedhog/table/course_enrollment.yaml +45 -0
  23. package/hedhog/table/course_image.yaml +33 -0
  24. package/hedhog/table/course_lesson.yaml +35 -0
  25. package/hedhog/table/course_lesson_file.yaml +23 -0
  26. package/hedhog/table/course_lesson_instructor.yaml +27 -0
  27. package/hedhog/table/course_lesson_progress.yaml +40 -0
  28. package/hedhog/table/course_lesson_question.yaml +24 -0
  29. package/hedhog/table/course_module.yaml +25 -0
  30. package/hedhog/table/course_prerequisite.yaml +48 -0
  31. package/hedhog/table/evaluation_rating.yaml +30 -0
  32. package/hedhog/table/evaluation_topic.yaml +68 -0
  33. package/hedhog/table/exam.yaml +91 -0
  34. package/hedhog/table/exam_answer.yaml +40 -0
  35. package/hedhog/table/exam_attempt.yaml +51 -0
  36. package/hedhog/table/exam_image.yaml +33 -0
  37. package/hedhog/table/exam_option.yaml +25 -0
  38. package/hedhog/table/exam_question.yaml +24 -0
  39. package/hedhog/table/image_type.yaml +28 -0
  40. package/hedhog/table/instructor.yaml +23 -0
  41. package/hedhog/table/learning_path.yaml +49 -0
  42. package/hedhog/table/learning_path_enrollment.yaml +33 -0
  43. package/hedhog/table/learning_path_image.yaml +33 -0
  44. package/hedhog/table/learning_path_step.yaml +43 -0
  45. package/hedhog/table/question.yaml +15 -0
  46. package/package.json +9 -6
  47. package/src/index.ts +1 -1
  48. package/src/lms.module.ts +15 -15
  49. package/hedhog/table/classes.yaml +0 -3
  50. package/hedhog/table/exams.yaml +0 -3
  51. package/hedhog/table/reports.yaml +0 -3
  52. package/hedhog/table/training.yaml +0 -3
@@ -389,7 +389,7 @@ export default function ExamesPage() {
389
389
  if (existing) {
390
390
  clearTimeout(existing);
391
391
  clickTimers.current.delete(exame.id);
392
- router.push(`/exames/${exame.id}/questoes`);
392
+ router.push(`/lms/exams/${exame.id}/questions`);
393
393
  } else {
394
394
  const t = setTimeout(() => clickTimers.current.delete(exame.id), 300);
395
395
  clickTimers.current.set(exame.id, t);
@@ -451,7 +451,7 @@ export default function ExamesPage() {
451
451
  toast.success(t('toasts.examCreated'));
452
452
  setSaving(false);
453
453
  setSheetOpen(false);
454
- setTimeout(() => router.push(`/exames/${newExame.id}/questoes`), 400);
454
+ setTimeout(() => router.push(`/lms/exams/${newExame.id}/questions`), 400);
455
455
  return;
456
456
  }
457
457
  setSaving(false);
@@ -585,7 +585,7 @@ export default function ExamesPage() {
585
585
  </div>
586
586
 
587
587
  {/* Search bar */}
588
- <form onSubmit={handleSearch} className="mb-6">
588
+ <form onSubmit={handleSearch} className="-mt-4 mb-2">
589
589
  <div className="flex flex-col gap-3 sm:flex-row sm:items-center">
590
590
  <div className="relative flex-1">
591
591
  <Search className="absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" />
@@ -704,7 +704,7 @@ export default function ExamesPage() {
704
704
  <Button
705
705
  variant="ghost"
706
706
  size="icon"
707
- className="size-8 shrink-0 opacity-0 transition-opacity group-hover:opacity-100 -mr-2 -mt-1"
707
+ className="size-8 shrink-0 -mr-2 -mt-1"
708
708
  onClick={(e) => e.stopPropagation()}
709
709
  aria-label={t('cards.actions.label')}
710
710
  >
@@ -715,7 +715,9 @@ export default function ExamesPage() {
715
715
  <DropdownMenuItem
716
716
  onClick={(e) => {
717
717
  e.stopPropagation();
718
- router.push(`/exames/${exame.id}/questoes`);
718
+ router.push(
719
+ `/lms/exams/${exame.id}/questions`
720
+ );
719
721
  }}
720
722
  >
721
723
  <ListChecks className="mr-2 size-4" />{' '}
@@ -724,7 +726,7 @@ export default function ExamesPage() {
724
726
  <DropdownMenuItem
725
727
  onClick={(e) => {
726
728
  e.stopPropagation();
727
- router.push(`/exames/${exame.id}/tentativa`);
729
+ router.push(`/lms/exams/${exame.id}/attempt`);
728
730
  }}
729
731
  >
730
732
  <Play className="mr-2 size-4" />{' '}
@@ -1068,7 +1070,7 @@ export default function ExamesPage() {
1068
1070
  )}
1069
1071
  />
1070
1072
  </label>
1071
- <SheetFooter className="mt-auto shrink-0 gap-2 pt-4">
1073
+ <SheetFooter className="mt-auto shrink-0 gap-2 pt-4 px-0">
1072
1074
  <Button type="submit" disabled={saving} className="gap-2">
1073
1075
  {saving && <Loader2 className="size-4 animate-spin" />}
1074
1076
  {editingExame
@@ -604,7 +604,7 @@ export default function TrainingPage() {
604
604
  </div>
605
605
 
606
606
  {/* Search bar */}
607
- <form onSubmit={handleSearch} className="mb-6">
607
+ <form onSubmit={handleSearch} className="-mt-4 mb-2">
608
608
  <div className="flex flex-col gap-3 sm:flex-row sm:items-center">
609
609
  <div className="relative flex-1">
610
610
  <Search className="absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" />
@@ -741,7 +741,7 @@ export default function TrainingPage() {
741
741
  <Button
742
742
  variant="ghost"
743
743
  size="icon"
744
- className="size-7 shrink-0 opacity-0 transition-opacity group-hover:opacity-100"
744
+ className="size-8 shrink-0 -mr-2 -mt-1"
745
745
  onClick={(e) => e.stopPropagation()}
746
746
  aria-label={t('cards.actions.label')}
747
747
  >
@@ -1110,7 +1110,7 @@ export default function TrainingPage() {
1110
1110
  )}
1111
1111
  </Field>
1112
1112
 
1113
- <SheetFooter className="mt-auto shrink-0 gap-2 pt-4">
1113
+ <SheetFooter className="mt-auto shrink-0 gap-2 pt-4 px-0">
1114
1114
  <Button type="submit" disabled={saving} className="gap-2">
1115
1115
  {saving && <Loader2 className="size-4 animate-spin" />}
1116
1116
  {editingFormacao