@hed-hog/lms 0.0.330 → 0.0.338
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/class-group/class-group.controller.d.ts +3 -3
- package/dist/class-group/class-group.service.d.ts +3 -3
- package/dist/course/course.service.d.ts.map +1 -1
- package/dist/course/course.service.js +12 -20
- package/dist/course/course.service.js.map +1 -1
- package/dist/enterprise/enterprise.controller.d.ts +72 -0
- package/dist/enterprise/enterprise.controller.d.ts.map +1 -1
- package/dist/enterprise/enterprise.controller.js +10 -0
- package/dist/enterprise/enterprise.controller.js.map +1 -1
- package/dist/enterprise/enterprise.service.d.ts +78 -0
- package/dist/enterprise/enterprise.service.d.ts.map +1 -1
- package/dist/enterprise/enterprise.service.js +413 -40
- package/dist/enterprise/enterprise.service.js.map +1 -1
- package/dist/enterprise/training/training-admin.controller.d.ts +6 -3
- package/dist/enterprise/training/training-admin.controller.d.ts.map +1 -1
- package/dist/enterprise/training/training-admin.controller.js +10 -6
- package/dist/enterprise/training/training-admin.controller.js.map +1 -1
- package/dist/enterprise/training/training-admin.service.d.ts +8 -2
- package/dist/enterprise/training/training-admin.service.d.ts.map +1 -1
- package/dist/enterprise/training/training-admin.service.js +108 -52
- package/dist/enterprise/training/training-admin.service.js.map +1 -1
- package/dist/enterprise/training/training-viewer.controller.d.ts +3 -0
- package/dist/enterprise/training/training-viewer.controller.d.ts.map +1 -1
- package/dist/evaluation/evaluation.controller.d.ts +4 -4
- package/dist/evaluation/evaluation.service.d.ts +4 -4
- package/dist/instructor/dto/create-instructor-skill.dto.d.ts +0 -4
- package/dist/instructor/dto/create-instructor-skill.dto.d.ts.map +1 -1
- package/dist/instructor/dto/create-instructor-skill.dto.js +0 -21
- package/dist/instructor/dto/create-instructor-skill.dto.js.map +1 -1
- package/dist/instructor/dto/update-instructor-skill.dto.d.ts +0 -4
- package/dist/instructor/dto/update-instructor-skill.dto.d.ts.map +1 -1
- package/dist/instructor/dto/update-instructor-skill.dto.js +0 -22
- package/dist/instructor/dto/update-instructor-skill.dto.js.map +1 -1
- package/dist/instructor/instructor-skill.controller.d.ts +4 -4
- package/dist/instructor/instructor-skill.service.d.ts +4 -7
- package/dist/instructor/instructor-skill.service.d.ts.map +1 -1
- package/dist/instructor/instructor-skill.service.js +2 -89
- package/dist/instructor/instructor-skill.service.js.map +1 -1
- package/dist/instructor/instructor.controller.d.ts +20 -0
- package/dist/instructor/instructor.controller.d.ts.map +1 -1
- package/dist/instructor/instructor.controller.js +19 -0
- package/dist/instructor/instructor.controller.js.map +1 -1
- package/dist/instructor/instructor.service.d.ts +25 -0
- package/dist/instructor/instructor.service.d.ts.map +1 -1
- package/dist/instructor/instructor.service.js +70 -18
- package/dist/instructor/instructor.service.js.map +1 -1
- package/dist/lms.module.d.ts.map +1 -1
- package/dist/lms.module.js.map +1 -1
- package/hedhog/data/route.yaml +23 -1
- package/hedhog/frontend/app/_components/class-form-sheet.tsx.ejs +42 -24
- package/hedhog/frontend/app/_components/create-lms-instructor-sheet.tsx.ejs +591 -0
- package/hedhog/frontend/app/certificates/issued/page.tsx.ejs +6 -1
- package/hedhog/frontend/app/certificates/models/page.tsx.ejs +7 -2
- package/hedhog/frontend/app/classes/[id]/page.tsx.ejs +17 -17
- package/hedhog/frontend/app/classes/page.tsx.ejs +6 -1
- package/hedhog/frontend/app/courses/[id]/_components/CourseClassificationCard.tsx.ejs +3 -33
- package/hedhog/frontend/app/courses/[id]/_components/CourseContentCard.tsx.ejs +9 -9
- package/hedhog/frontend/app/courses/[id]/_components/CourseMainInfoCard.tsx.ejs +109 -0
- package/hedhog/frontend/app/courses/[id]/_components/CourseMultiEntityPicker.tsx.ejs +42 -15
- package/hedhog/frontend/app/courses/[id]/_components/CourseRelationsCard.tsx.ejs +76 -81
- package/hedhog/frontend/app/courses/[id]/_components/CourseSummaryCard.tsx.ejs +60 -0
- package/hedhog/frontend/app/courses/[id]/page.tsx.ejs +3 -3
- package/hedhog/frontend/app/courses/[id]/structure/_components/course-scheduled-classes-tab.tsx.ejs +406 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/course-tree-dnd.tsx.ejs +1 -1
- package/hedhog/frontend/app/courses/[id]/structure/_components/course-tree.tsx.ejs +134 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/detail-course.tsx.ejs +113 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/detail-lesson.tsx.ejs +314 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/detail-session.tsx.ejs +174 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/editor-course.tsx.ejs +242 -33
- package/hedhog/frontend/app/courses/[id]/structure/_components/editor-lesson.tsx.ejs +228 -152
- package/hedhog/frontend/app/courses/[id]/structure/_components/mock-data.ts.ejs +185 -0
- package/hedhog/frontend/app/courses/[id]/structure/_components/shortcuts-help.tsx.ejs +71 -31
- package/hedhog/frontend/app/courses/page.tsx.ejs +6 -1
- package/hedhog/frontend/app/enterprise/[id]/page.tsx.ejs +37 -41
- package/hedhog/frontend/app/enterprise/_components/enterprise-activity-timeline.tsx.ejs +87 -0
- package/hedhog/frontend/app/enterprise/_components/enterprise-admin-create-sheet.tsx.ejs +4 -0
- package/hedhog/frontend/app/enterprise/_components/enterprise-administrators-tab.tsx.ejs +31 -5
- package/hedhog/frontend/app/enterprise/_components/enterprise-classes-tab.tsx.ejs +79 -20
- package/hedhog/frontend/app/enterprise/_components/enterprise-company-identity-card.tsx.ejs +11 -2
- package/hedhog/frontend/app/enterprise/_components/enterprise-course-edit-sheet.tsx.ejs +201 -0
- package/hedhog/frontend/app/enterprise/_components/enterprise-courses-tab.tsx.ejs +55 -24
- package/hedhog/frontend/app/enterprise/_components/enterprise-detail-sheet.tsx.ejs +430 -296
- package/hedhog/frontend/app/enterprise/_components/enterprise-mocks.ts.ejs +277 -0
- package/hedhog/frontend/app/enterprise/_components/enterprise-overview-analytics.tsx.ejs +205 -0
- package/hedhog/frontend/app/enterprise/_components/enterprise-person-edit-sheet.tsx.ejs +97 -0
- package/hedhog/frontend/app/enterprise/_components/enterprise-sheet.tsx.ejs +82 -57
- package/hedhog/frontend/app/enterprise/_components/enterprise-student-create-sheet.tsx.ejs +4 -0
- package/hedhog/frontend/app/enterprise/_components/enterprise-students-tab.tsx.ejs +60 -22
- package/hedhog/frontend/app/enterprise/_components/enterprise-types.ts.ejs +54 -0
- package/hedhog/frontend/app/enterprise/_components/enterprise-user-create-sheet.tsx.ejs +211 -0
- package/hedhog/frontend/app/enterprise/page.tsx.ejs +39 -7
- package/hedhog/frontend/app/evaluations/_components/evaluation-topic-form-sheet.tsx.ejs +1 -1
- package/hedhog/frontend/app/exams/[id]/questions/page.tsx.ejs +6 -1
- package/hedhog/frontend/app/exams/page.tsx.ejs +12 -3
- package/hedhog/frontend/app/instructor-skills/page.tsx.ejs +51 -104
- package/hedhog/frontend/app/instructors/_components/instructor-form-sheet.tsx.ejs +712 -427
- package/hedhog/frontend/app/instructors/page.tsx.ejs +77 -53
- package/hedhog/frontend/app/paths/page.tsx.ejs +14 -5
- package/hedhog/frontend/app/reports/courses/page.tsx.ejs +5 -5
- package/hedhog/frontend/app/reports/dashboard/page.tsx.ejs +8 -8
- package/hedhog/frontend/app/reports/evaluations/page.tsx.ejs +6 -1
- package/hedhog/frontend/app/reports/page.tsx.ejs +7 -7
- package/hedhog/frontend/app/reports/students/page.tsx.ejs +6 -6
- package/hedhog/frontend/app/training/page.tsx.ejs +8 -3
- package/hedhog/frontend/messages/en.json +394 -55
- package/hedhog/frontend/messages/pt.json +389 -48
- package/hedhog/frontend/widgets/active-classes-kpi.tsx.ejs +1 -1
- package/hedhog/frontend/widgets/active-courses-kpi.tsx.ejs +1 -1
- package/hedhog/frontend/widgets/approval-rate-kpi.tsx.ejs +1 -1
- package/hedhog/frontend/widgets/class-calendar.tsx.ejs +2 -2
- package/hedhog/frontend/widgets/completion-rate-kpi.tsx.ejs +1 -1
- package/hedhog/frontend/widgets/issued-certificates-kpi.tsx.ejs +1 -1
- package/hedhog/frontend/widgets/total-students-kpi.tsx.ejs +1 -1
- package/hedhog/table/enterprise_student_license_event.yaml +30 -0
- package/hedhog/table/instructor_qualification.yaml +1 -1
- package/hedhog/table/instructor_skill.yaml +0 -11
- package/package.json +8 -8
- package/src/course/course.service.ts +12 -24
- package/src/enterprise/enterprise.controller.ts +5 -0
- package/src/enterprise/enterprise.service.ts +507 -29
- package/src/enterprise/training/training-admin.controller.ts +4 -0
- package/src/enterprise/training/training-admin.service.ts +115 -51
- package/src/instructor/dto/create-instructor-skill.dto.ts +0 -17
- package/src/instructor/dto/update-instructor-skill.dto.ts +0 -18
- package/src/instructor/instructor-skill.service.ts +2 -97
- package/src/instructor/instructor.controller.ts +16 -0
- package/src/instructor/instructor.service.ts +85 -10
- package/src/lms.module.ts +1 -0
|
@@ -102,6 +102,7 @@ import {
|
|
|
102
102
|
import { useTranslations } from 'next-intl';
|
|
103
103
|
import { useRouter } from 'next/navigation';
|
|
104
104
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
105
|
+
import { usePersistedPageSize } from '@/hooks/use-persisted-page-size';
|
|
105
106
|
import { Controller, useForm, useWatch } from 'react-hook-form';
|
|
106
107
|
import { toast } from 'sonner';
|
|
107
108
|
import { z } from 'zod';
|
|
@@ -560,7 +561,11 @@ export default function TrainingPage() {
|
|
|
560
561
|
|
|
561
562
|
// Pagination
|
|
562
563
|
const [currentPage, setCurrentPage] = useState(1);
|
|
563
|
-
const [pageSize, setPageSize] =
|
|
564
|
+
const [pageSize, setPageSize] = usePersistedPageSize({
|
|
565
|
+
storageKey: 'pagination:global:pageSize',
|
|
566
|
+
defaultValue: 12,
|
|
567
|
+
allowedValues: PAGE_SIZES,
|
|
568
|
+
});
|
|
564
569
|
|
|
565
570
|
// Double-click tracking
|
|
566
571
|
const clickTimers = useRef<Map<number, ReturnType<typeof setTimeout>>>(
|
|
@@ -1887,13 +1892,13 @@ export default function TrainingPage() {
|
|
|
1887
1892
|
</Field>
|
|
1888
1893
|
<Field>
|
|
1889
1894
|
<FieldLabel htmlFor="descricao">
|
|
1890
|
-
{t('form.fields.
|
|
1895
|
+
{t('form.fields.description.label')}{' '}
|
|
1891
1896
|
<span className="text-destructive">*</span>
|
|
1892
1897
|
</FieldLabel>
|
|
1893
1898
|
<Textarea
|
|
1894
1899
|
id="descricao"
|
|
1895
1900
|
rows={3}
|
|
1896
|
-
placeholder={t('form.fields.
|
|
1901
|
+
placeholder={t('form.fields.description.placeholder')}
|
|
1897
1902
|
{...form.register('descricao')}
|
|
1898
1903
|
/>
|
|
1899
1904
|
<FieldError>
|
|
@@ -723,6 +723,36 @@
|
|
|
723
723
|
"footer": "Shortcuts are disabled while focus is in inputs, except Ctrl+S, Ctrl+F, and Ctrl+/ which work in any context.",
|
|
724
724
|
"triggerTitle": "Keyboard shortcuts (Ctrl+/)",
|
|
725
725
|
"triggerLabel": "Shortcuts",
|
|
726
|
+
"groups": {
|
|
727
|
+
"navigation": {
|
|
728
|
+
"heading": "Navigation",
|
|
729
|
+
"items": {
|
|
730
|
+
"navigate": "Navigate between items",
|
|
731
|
+
"expand": "Expand selected session",
|
|
732
|
+
"collapse": "Collapse session / go to parent",
|
|
733
|
+
"focusEditor": "Focus the first editor field"
|
|
734
|
+
}
|
|
735
|
+
},
|
|
736
|
+
"actions": {
|
|
737
|
+
"heading": "Actions",
|
|
738
|
+
"items": {
|
|
739
|
+
"savePanel": "Save the panel form",
|
|
740
|
+
"createItem": "Create a new session or lesson",
|
|
741
|
+
"copyItem": "Copy selected item",
|
|
742
|
+
"pasteItem": "Paste into the current context",
|
|
743
|
+
"duplicateItem": "Duplicate item",
|
|
744
|
+
"deleteItems": "Delete selected item(s)"
|
|
745
|
+
}
|
|
746
|
+
},
|
|
747
|
+
"search": {
|
|
748
|
+
"heading": "Search & Interface",
|
|
749
|
+
"items": {
|
|
750
|
+
"focusSearch": "Focus the search field",
|
|
751
|
+
"openHelp": "Open shortcut help",
|
|
752
|
+
"clearState": "Clear search / selection / focus"
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
},
|
|
726
756
|
"deleteTitle": "Delete {label}?",
|
|
727
757
|
"deleteDescription": "This action cannot be undone.",
|
|
728
758
|
"items": "items",
|
|
@@ -933,6 +963,73 @@
|
|
|
933
963
|
"providers": {
|
|
934
964
|
"custom": "Custom"
|
|
935
965
|
},
|
|
966
|
+
"questionEditor": {
|
|
967
|
+
"identification": "Identification",
|
|
968
|
+
"publication": "Publication",
|
|
969
|
+
"productionStatus": "Production status",
|
|
970
|
+
"visibility": "Visibility",
|
|
971
|
+
"restricted": "Restricted",
|
|
972
|
+
"addInstructor": "Add instructor...",
|
|
973
|
+
"searchInstructor": "Search instructor...",
|
|
974
|
+
"noInstructorsAvailable": "No instructors available",
|
|
975
|
+
"instructorEntity": "Instructor",
|
|
976
|
+
"removeInstructor": "Remove {name}",
|
|
977
|
+
"uploading": "Uploading...",
|
|
978
|
+
"dropFile": "Drop the file here",
|
|
979
|
+
"clickToSelect": "or click to select",
|
|
980
|
+
"noLinkedResources": "No linked resources.",
|
|
981
|
+
"openInNewTab": "Open {name} in a new tab",
|
|
982
|
+
"downloadResource": "Download {name}",
|
|
983
|
+
"removeResource": "Remove {name}",
|
|
984
|
+
"resourceUploadFailed": "{count} file(s) could not be uploaded",
|
|
985
|
+
"resourceRemoveError": "Error removing file",
|
|
986
|
+
"resourceDownloadSoon": "Download for {name} coming soon",
|
|
987
|
+
"newQuestion": "New question",
|
|
988
|
+
"editQuestion": "Edit question",
|
|
989
|
+
"selectQuestion": "Select question...",
|
|
990
|
+
"searchQuestion": "Search question...",
|
|
991
|
+
"noQuestionsFound": "No questions found",
|
|
992
|
+
"questionEntity": "Question",
|
|
993
|
+
"pointsSuffix": "pt",
|
|
994
|
+
"statement": "Statement",
|
|
995
|
+
"type": "Type",
|
|
996
|
+
"points": "Points",
|
|
997
|
+
"alternatives": "Alternatives",
|
|
998
|
+
"add": "Add",
|
|
999
|
+
"dragAlternative": "Drag alternative",
|
|
1000
|
+
"alternativeTextPlaceholder": "Alternative text...",
|
|
1001
|
+
"markAsIncorrect": "Mark as incorrect",
|
|
1002
|
+
"markAsCorrect": "Mark as correct",
|
|
1003
|
+
"removeAlternative": "Remove alternative",
|
|
1004
|
+
"correctAnswer": "Correct answer",
|
|
1005
|
+
"blanks": "Blanks",
|
|
1006
|
+
"blankLabel": "Blank {count}",
|
|
1007
|
+
"removeBlank": "Remove blank",
|
|
1008
|
+
"correctAnswerPlaceholder": "Correct answer",
|
|
1009
|
+
"alternativesPlaceholder": "Alternatives separated by comma (optional)",
|
|
1010
|
+
"matchingPairs": "Matching pairs",
|
|
1011
|
+
"left": "Left",
|
|
1012
|
+
"right": "Right",
|
|
1013
|
+
"removePair": "Remove pair",
|
|
1014
|
+
"essayHelp": "Essay question — the student will answer in free text.",
|
|
1015
|
+
"saveChanges": "Save changes",
|
|
1016
|
+
"createQuestion": "Create question",
|
|
1017
|
+
"created": "Question created",
|
|
1018
|
+
"updated": "Question updated",
|
|
1019
|
+
"validation": {
|
|
1020
|
+
"codeRequired": "Code is required",
|
|
1021
|
+
"titleRequired": "Title is required",
|
|
1022
|
+
"statementRequired": "Statement is required",
|
|
1023
|
+
"correctAnswerRequired": "Select at least one correct answer"
|
|
1024
|
+
},
|
|
1025
|
+
"types": {
|
|
1026
|
+
"multipleChoice": "Multiple choice",
|
|
1027
|
+
"trueFalse": "True / False",
|
|
1028
|
+
"essay": "Essay",
|
|
1029
|
+
"fillBlank": "Fill in the blank",
|
|
1030
|
+
"matching": "Matching"
|
|
1031
|
+
}
|
|
1032
|
+
},
|
|
936
1033
|
"mockExams": {
|
|
937
1034
|
"hooksBasic": "Assessment: Basic Hooks",
|
|
938
1035
|
"hooksAdvanced": "Assessment: Advanced Hooks",
|
|
@@ -1145,6 +1242,16 @@
|
|
|
1145
1242
|
"description": "In minutes",
|
|
1146
1243
|
"required": true
|
|
1147
1244
|
},
|
|
1245
|
+
"primaryColor": {
|
|
1246
|
+
"label": "Primary Color",
|
|
1247
|
+
"description": "Select the primary color",
|
|
1248
|
+
"required": true
|
|
1249
|
+
},
|
|
1250
|
+
"secondaryColor": {
|
|
1251
|
+
"label": "Secondary Color",
|
|
1252
|
+
"description": "Select the secondary color",
|
|
1253
|
+
"required": true
|
|
1254
|
+
},
|
|
1148
1255
|
"status": {
|
|
1149
1256
|
"label": "Status",
|
|
1150
1257
|
"placeholder": "Select status",
|
|
@@ -1425,7 +1532,7 @@
|
|
|
1425
1532
|
"placeholder": "Full Stack Developer",
|
|
1426
1533
|
"required": true
|
|
1427
1534
|
},
|
|
1428
|
-
"
|
|
1535
|
+
"description": {
|
|
1429
1536
|
"label": "Description",
|
|
1430
1537
|
"placeholder": "Describe the training...",
|
|
1431
1538
|
"required": true
|
|
@@ -1452,6 +1559,14 @@
|
|
|
1452
1559
|
"label": "Prerequisites",
|
|
1453
1560
|
"placeholder": "Ex: Basic JavaScript"
|
|
1454
1561
|
},
|
|
1562
|
+
"primaryColor": {
|
|
1563
|
+
"label": "Primary Color",
|
|
1564
|
+
"placeholder": "#1D4ED8"
|
|
1565
|
+
},
|
|
1566
|
+
"secondaryColor": {
|
|
1567
|
+
"label": "Secondary Color",
|
|
1568
|
+
"placeholder": "#111827"
|
|
1569
|
+
},
|
|
1455
1570
|
"cursos": {
|
|
1456
1571
|
"label": "Training Courses",
|
|
1457
1572
|
"description": "Select the courses for the training",
|
|
@@ -1493,7 +1608,7 @@
|
|
|
1493
1608
|
"label": "Name",
|
|
1494
1609
|
"placeholder": "Ex: React for Beginners"
|
|
1495
1610
|
},
|
|
1496
|
-
"
|
|
1611
|
+
"description": {
|
|
1497
1612
|
"label": "Description",
|
|
1498
1613
|
"placeholder": "Describe the course content..."
|
|
1499
1614
|
},
|
|
@@ -2760,6 +2875,16 @@
|
|
|
2760
2875
|
"classSaveError": "Failed to save class.",
|
|
2761
2876
|
"classDeleteError": "Failed to delete class."
|
|
2762
2877
|
},
|
|
2878
|
+
"sheet": {
|
|
2879
|
+
"lessonForm": {
|
|
2880
|
+
"createInstructor": "Register instructor",
|
|
2881
|
+
"createInstructorTitle": "Register Instructor",
|
|
2882
|
+
"createInstructorDescription": "Create a new instructor to select for this lesson.",
|
|
2883
|
+
"createInstructorSubmit": "Register",
|
|
2884
|
+
"createInstructorSuccess": "Instructor registered successfully.",
|
|
2885
|
+
"createInstructorError": "Could not register the instructor."
|
|
2886
|
+
}
|
|
2887
|
+
},
|
|
2763
2888
|
"DetailPage": {
|
|
2764
2889
|
"breadcrumbs": {
|
|
2765
2890
|
"home": "Home",
|
|
@@ -2769,7 +2894,36 @@
|
|
|
2769
2894
|
},
|
|
2770
2895
|
"actions": {
|
|
2771
2896
|
"viewCourse": "View Course",
|
|
2772
|
-
"newLesson": "New Lesson"
|
|
2897
|
+
"newLesson": "New Lesson",
|
|
2898
|
+
"editClass": "Edit class"
|
|
2899
|
+
},
|
|
2900
|
+
"kpis": {
|
|
2901
|
+
"enrolledStudents": {
|
|
2902
|
+
"label": "Enrolled Students",
|
|
2903
|
+
"sub": "of {vagas} spots"
|
|
2904
|
+
},
|
|
2905
|
+
"occupancyRate": {
|
|
2906
|
+
"label": "Occupancy Rate",
|
|
2907
|
+
"subFree": "{count} spots available",
|
|
2908
|
+
"subFull": "Full"
|
|
2909
|
+
},
|
|
2910
|
+
"nextClass": "Next Class",
|
|
2911
|
+
"noClass": "No class",
|
|
2912
|
+
"createNext": "Create next class",
|
|
2913
|
+
"calendar": "Calendar",
|
|
2914
|
+
"completed": "{count} completed",
|
|
2915
|
+
"avgAttendance": {
|
|
2916
|
+
"label": "Average Attendance",
|
|
2917
|
+
"sub": "overall attendance"
|
|
2918
|
+
},
|
|
2919
|
+
"completedLessons": {
|
|
2920
|
+
"label": "Completed Lessons",
|
|
2921
|
+
"sub": "of {total} total"
|
|
2922
|
+
}
|
|
2923
|
+
},
|
|
2924
|
+
"links": {
|
|
2925
|
+
"studyRefPlaceholder": "E.g.: Study reference",
|
|
2926
|
+
"lessonSlidesPlaceholder": "E.g.: Lesson slides"
|
|
2773
2927
|
},
|
|
2774
2928
|
"calendar": {
|
|
2775
2929
|
"today": "Today",
|
|
@@ -2928,11 +3082,11 @@
|
|
|
2928
3082
|
"titleEdit": "Edit Lesson",
|
|
2929
3083
|
"descriptionCreate": "Fill in the data to create a new lesson.",
|
|
2930
3084
|
"descriptionEdit": "Update the lesson data.",
|
|
2931
|
-
"createInstructorTitle": "Register
|
|
2932
|
-
"createInstructorDescription": "Create a new
|
|
3085
|
+
"createInstructorTitle": "Register Instructor",
|
|
3086
|
+
"createInstructorDescription": "Create a new instructor to select for this lesson.",
|
|
2933
3087
|
"createInstructorSubmit": "Register",
|
|
2934
|
-
"createInstructorSuccess": "
|
|
2935
|
-
"createInstructorError": "Could not register the
|
|
3088
|
+
"createInstructorSuccess": "Instructor registered successfully.",
|
|
3089
|
+
"createInstructorError": "Could not register the instructor.",
|
|
2936
3090
|
"fields": {
|
|
2937
3091
|
"title": "Title",
|
|
2938
3092
|
"titlePlaceholder": "E.g.: Introduction to Hooks",
|
|
@@ -2941,10 +3095,10 @@
|
|
|
2941
3095
|
"select": "Select",
|
|
2942
3096
|
"startTime": "Start Time",
|
|
2943
3097
|
"endTime": "End Time",
|
|
2944
|
-
"instructor": "
|
|
2945
|
-
"instructorPlaceholder": "Select the
|
|
2946
|
-
"instructorNotFound": "No
|
|
2947
|
-
"createInstructor": "Register
|
|
3098
|
+
"instructor": "Instructor",
|
|
3099
|
+
"instructorPlaceholder": "Select the instructor",
|
|
3100
|
+
"instructorNotFound": "No instructor found.",
|
|
3101
|
+
"createInstructor": "Register instructor",
|
|
2948
3102
|
"location": "Location / Link",
|
|
2949
3103
|
"locationPlaceholder": "Room 201 or https://meet.google.com/...",
|
|
2950
3104
|
"color": "Color",
|
|
@@ -3004,25 +3158,6 @@
|
|
|
3004
3158
|
"save": "Save Attendance"
|
|
3005
3159
|
}
|
|
3006
3160
|
},
|
|
3007
|
-
"kpis": {
|
|
3008
|
-
"enrolledStudents": {
|
|
3009
|
-
"label": "Enrolled Students",
|
|
3010
|
-
"sub": "of {vagas} spots"
|
|
3011
|
-
},
|
|
3012
|
-
"occupancyRate": {
|
|
3013
|
-
"label": "Occupancy Rate",
|
|
3014
|
-
"subFree": "{count} spots available",
|
|
3015
|
-
"subFull": "Full"
|
|
3016
|
-
},
|
|
3017
|
-
"avgAttendance": {
|
|
3018
|
-
"label": "Average Attendance",
|
|
3019
|
-
"sub": "overall attendance"
|
|
3020
|
-
},
|
|
3021
|
-
"completedLessons": {
|
|
3022
|
-
"label": "Completed Lessons",
|
|
3023
|
-
"sub": "of {total} total"
|
|
3024
|
-
}
|
|
3025
|
-
},
|
|
3026
3161
|
"quickCreate": {
|
|
3027
3162
|
"title": "New Lesson",
|
|
3028
3163
|
"titlePlaceholder": "Lesson title",
|
|
@@ -3105,6 +3240,18 @@
|
|
|
3105
3240
|
"lessonRemovedSuccess": "Lesson removed successfully.",
|
|
3106
3241
|
"classCourseNotFound": "Could not find the course for this class."
|
|
3107
3242
|
}
|
|
3243
|
+
},
|
|
3244
|
+
"components": {
|
|
3245
|
+
"entityPicker": {
|
|
3246
|
+
"courses": {
|
|
3247
|
+
"empty": "No courses found.",
|
|
3248
|
+
"loading": "Loading courses..."
|
|
3249
|
+
},
|
|
3250
|
+
"instructors": {
|
|
3251
|
+
"empty": "No instructors found.",
|
|
3252
|
+
"loading": "Loading instructors..."
|
|
3253
|
+
}
|
|
3254
|
+
}
|
|
3108
3255
|
}
|
|
3109
3256
|
},
|
|
3110
3257
|
"EvaluationTopicsPage": {
|
|
@@ -3396,13 +3543,158 @@
|
|
|
3396
3543
|
"studentRemoveError": "Failed to remove student."
|
|
3397
3544
|
},
|
|
3398
3545
|
"form": {
|
|
3546
|
+
"title": {
|
|
3547
|
+
"create": "Create New Course",
|
|
3548
|
+
"edit": "Edit Course"
|
|
3549
|
+
},
|
|
3550
|
+
"description": {
|
|
3551
|
+
"create": "Fill in the details to create a new course. After creating, you will be redirected to the course page.",
|
|
3552
|
+
"edit": "Update the course information below."
|
|
3553
|
+
},
|
|
3554
|
+
"fields": {
|
|
3555
|
+
"internalName": {
|
|
3556
|
+
"label": "Internal Name",
|
|
3557
|
+
"placeholder": "Ex: Advanced React",
|
|
3558
|
+
"description": "Internal course name for administrative use"
|
|
3559
|
+
},
|
|
3560
|
+
"slug": {
|
|
3561
|
+
"label": "Slug",
|
|
3562
|
+
"placeholder": "Ex: advanced-react",
|
|
3563
|
+
"description": "Unique URL identifier (lowercase letters, numbers, and hyphens)"
|
|
3564
|
+
},
|
|
3565
|
+
"commercialTitle": {
|
|
3566
|
+
"label": "Commercial Title",
|
|
3567
|
+
"placeholder": "Ex: Advanced React"
|
|
3568
|
+
},
|
|
3569
|
+
"description": {
|
|
3570
|
+
"label": "Description",
|
|
3571
|
+
"placeholder": "Describe the course content and objectives..."
|
|
3572
|
+
},
|
|
3573
|
+
"level": {
|
|
3574
|
+
"label": "Level",
|
|
3575
|
+
"placeholder": "Select"
|
|
3576
|
+
},
|
|
3577
|
+
"status": {
|
|
3578
|
+
"label": "Status",
|
|
3579
|
+
"placeholder": "Select"
|
|
3580
|
+
},
|
|
3581
|
+
"categories": {
|
|
3582
|
+
"label": "Categories",
|
|
3583
|
+
"description": "Select one or more categories",
|
|
3584
|
+
"createAction": "Create category",
|
|
3585
|
+
"selectPlaceholder": "Select a category",
|
|
3586
|
+
"removeAction": "Remove category",
|
|
3587
|
+
"searchPlaceholder": "Type to search category...",
|
|
3588
|
+
"noResults": "No categories found",
|
|
3589
|
+
"selectedCount": "selected category(ies)"
|
|
3590
|
+
},
|
|
3591
|
+
"primaryColor": {
|
|
3592
|
+
"label": "Primary Color",
|
|
3593
|
+
"placeholder": "#1D4ED8"
|
|
3594
|
+
},
|
|
3595
|
+
"secondaryColor": {
|
|
3596
|
+
"label": "Secondary Color",
|
|
3597
|
+
"placeholder": "#111827"
|
|
3598
|
+
},
|
|
3599
|
+
"logo": {
|
|
3600
|
+
"label": "Course Logo",
|
|
3601
|
+
"alt": "Course logo",
|
|
3602
|
+
"upload": "Upload logo",
|
|
3603
|
+
"replace": "Replace logo",
|
|
3604
|
+
"remove": "Remove",
|
|
3605
|
+
"description": "Optional image to identify the course"
|
|
3606
|
+
}
|
|
3607
|
+
},
|
|
3608
|
+
"validation": {
|
|
3609
|
+
"internalNameMinLength": "Internal name must have at least 3 characters",
|
|
3610
|
+
"slugPattern": "Slug must contain only lowercase letters, numbers and hyphens"
|
|
3611
|
+
},
|
|
3612
|
+
"actions": {
|
|
3613
|
+
"cancel": "Cancel",
|
|
3614
|
+
"save": "Save Changes",
|
|
3615
|
+
"create": "Create Course"
|
|
3616
|
+
},
|
|
3399
3617
|
"toasts": {
|
|
3400
3618
|
"courseCreated": "Course created successfully! Redirecting...",
|
|
3401
3619
|
"courseCreateError": "Failed to create the course."
|
|
3402
3620
|
}
|
|
3621
|
+
},
|
|
3622
|
+
"levels": {
|
|
3623
|
+
"beginner": "Beginner",
|
|
3624
|
+
"intermediate": "Intermediate",
|
|
3625
|
+
"advanced": "Advanced"
|
|
3626
|
+
},
|
|
3627
|
+
"status": {
|
|
3628
|
+
"active": "Active",
|
|
3629
|
+
"inactive": "Inactive",
|
|
3630
|
+
"draft": "Draft",
|
|
3631
|
+
"archived": "Archived"
|
|
3403
3632
|
}
|
|
3404
3633
|
},
|
|
3405
3634
|
"InstructorsPage": {
|
|
3635
|
+
"breadcrumbs": {
|
|
3636
|
+
"home": "Home",
|
|
3637
|
+
"lms": "LMS",
|
|
3638
|
+
"instructors": "Instructors"
|
|
3639
|
+
},
|
|
3640
|
+
"header": {
|
|
3641
|
+
"title": "Instructors",
|
|
3642
|
+
"description": "Manage instructor profiles on the platform."
|
|
3643
|
+
},
|
|
3644
|
+
"kpis": {
|
|
3645
|
+
"total": "Total instructors",
|
|
3646
|
+
"active": "Active",
|
|
3647
|
+
"inactive": "Inactive"
|
|
3648
|
+
},
|
|
3649
|
+
"search": {
|
|
3650
|
+
"placeholder": "Search by name or email..."
|
|
3651
|
+
},
|
|
3652
|
+
"filters": {
|
|
3653
|
+
"statusPlaceholder": "Filter by status",
|
|
3654
|
+
"allStatuses": "All statuses",
|
|
3655
|
+
"qualificationPlaceholder": "Filter by qualification",
|
|
3656
|
+
"allQualifications": "All qualifications"
|
|
3657
|
+
},
|
|
3658
|
+
"viewMode": {
|
|
3659
|
+
"label": "View",
|
|
3660
|
+
"ariaLabel": "View mode",
|
|
3661
|
+
"table": "Table",
|
|
3662
|
+
"tableAriaLabel": "Table",
|
|
3663
|
+
"cards": "Cards",
|
|
3664
|
+
"cardsAriaLabel": "Cards"
|
|
3665
|
+
},
|
|
3666
|
+
"table": {
|
|
3667
|
+
"instructor": "Instructor",
|
|
3668
|
+
"email": "Email",
|
|
3669
|
+
"phone": "Phone",
|
|
3670
|
+
"qualifications": "Qualifications",
|
|
3671
|
+
"skills": "Skills",
|
|
3672
|
+
"hourlyRate": "Hourly rate",
|
|
3673
|
+
"training": "Training",
|
|
3674
|
+
"status": "Status"
|
|
3675
|
+
},
|
|
3676
|
+
"emptyState": {
|
|
3677
|
+
"title": "No instructors found",
|
|
3678
|
+
"description": "Create a new instructor or adjust the search filters."
|
|
3679
|
+
},
|
|
3680
|
+
"qualificationLabels": {
|
|
3681
|
+
"courseLessons": "Course lessons",
|
|
3682
|
+
"classSessions": "Class sessions"
|
|
3683
|
+
},
|
|
3684
|
+
"actions": {
|
|
3685
|
+
"edit": "Edit",
|
|
3686
|
+
"delete": "Delete",
|
|
3687
|
+
"cancel": "Cancel",
|
|
3688
|
+
"deleting": "Deleting..."
|
|
3689
|
+
},
|
|
3690
|
+
"training": {
|
|
3691
|
+
"active": "Active",
|
|
3692
|
+
"disabled": "Disabled"
|
|
3693
|
+
},
|
|
3694
|
+
"deleteDialog": {
|
|
3695
|
+
"title": "Delete instructor",
|
|
3696
|
+
"description": "Are you sure you want to delete the instructor {name}? This action cannot be undone."
|
|
3697
|
+
},
|
|
3406
3698
|
"messages": {
|
|
3407
3699
|
"instructorRemovedSuccess": "Instructor removed successfully.",
|
|
3408
3700
|
"instructorRemoveError": "Failed to remove instructor. Please try again."
|
|
@@ -3419,6 +3711,7 @@
|
|
|
3419
3711
|
"fields": {
|
|
3420
3712
|
"person": "Person",
|
|
3421
3713
|
"personRequired": "Select a person",
|
|
3714
|
+
"qualificationsRequired": "Select at least one qualification",
|
|
3422
3715
|
"searchPerson": "Search or select a person...",
|
|
3423
3716
|
"editPerson": "Edit person's record",
|
|
3424
3717
|
"status": "Status",
|
|
@@ -3433,6 +3726,35 @@
|
|
|
3433
3726
|
"noUserLinked": "No user linked to this record. Link a user to enable.",
|
|
3434
3727
|
"qualifications": "Qualifications"
|
|
3435
3728
|
},
|
|
3729
|
+
"qualificationDescriptions": {
|
|
3730
|
+
"courseLessons": "Can work on recorded lessons and course structure.",
|
|
3731
|
+
"classSessions": "Can work in live contexts and classes."
|
|
3732
|
+
},
|
|
3733
|
+
"classStatuses": {
|
|
3734
|
+
"inProgress": "In progress",
|
|
3735
|
+
"upcoming": "Upcoming",
|
|
3736
|
+
"completed": "Completed",
|
|
3737
|
+
"cancelled": "Cancelled"
|
|
3738
|
+
},
|
|
3739
|
+
"classes": {
|
|
3740
|
+
"emptyTitle": "No classes found",
|
|
3741
|
+
"emptyDescription": "This instructor is not linked to any classes yet.",
|
|
3742
|
+
"searchPlaceholder": "Search class by name, code or course...",
|
|
3743
|
+
"statusFilterPlaceholder": "Filter by status",
|
|
3744
|
+
"allStatuses": "All statuses",
|
|
3745
|
+
"start": "Start:",
|
|
3746
|
+
"end": "End:",
|
|
3747
|
+
"students": "{count} student(s)",
|
|
3748
|
+
"studentsOfCapacity": "{count} / {total} student(s)",
|
|
3749
|
+
"actions": {
|
|
3750
|
+
"editAriaLabel": "Edit class",
|
|
3751
|
+
"openAriaLabel": "Open class page"
|
|
3752
|
+
}
|
|
3753
|
+
},
|
|
3754
|
+
"evaluations": {
|
|
3755
|
+
"comingSoonTitle": "Evaluations — feature coming soon",
|
|
3756
|
+
"comingSoonDescription": "Soon you will be able to view the evaluations submitted by students."
|
|
3757
|
+
},
|
|
3436
3758
|
"skills": {
|
|
3437
3759
|
"title": "Manage Skills",
|
|
3438
3760
|
"description": "Manage the skills associated with this instructor.",
|
|
@@ -3441,11 +3763,19 @@
|
|
|
3441
3763
|
"noSkills": "No skills available",
|
|
3442
3764
|
"newSkill": "New skill",
|
|
3443
3765
|
"newSkillDescription": "Register a new skill to link to the instructor.",
|
|
3444
|
-
"removeSkill": "Remove skill {skill}"
|
|
3766
|
+
"removeSkill": "Remove skill {skill}",
|
|
3767
|
+
"createFields": {
|
|
3768
|
+
"name": "Name",
|
|
3769
|
+
"namePlaceholder": "E.g. JavaScript",
|
|
3770
|
+
"slug": "Slug (optional)",
|
|
3771
|
+
"slugPlaceholder": "E.g. javascript"
|
|
3772
|
+
}
|
|
3445
3773
|
},
|
|
3446
3774
|
"buttons": {
|
|
3447
3775
|
"cancel": "Cancel",
|
|
3448
|
-
"save": "Save changes"
|
|
3776
|
+
"save": "Save changes",
|
|
3777
|
+
"create": "Create instructor",
|
|
3778
|
+
"saveSkills": "Save skills"
|
|
3449
3779
|
},
|
|
3450
3780
|
"toasts": {
|
|
3451
3781
|
"skillsSaved": "Skills updated successfully.",
|
|
@@ -3469,23 +3799,17 @@
|
|
|
3469
3799
|
"current": "Instructor Skills"
|
|
3470
3800
|
},
|
|
3471
3801
|
"filters": {
|
|
3472
|
-
"searchPlaceholder": "Search by slug
|
|
3802
|
+
"searchPlaceholder": "Search by slug..."
|
|
3473
3803
|
},
|
|
3474
3804
|
"table": {
|
|
3475
3805
|
"slug": "Slug",
|
|
3476
|
-
"namePt": "Name (PT)",
|
|
3477
|
-
"nameEn": "Name (EN)",
|
|
3478
3806
|
"status": "Status"
|
|
3479
3807
|
},
|
|
3480
3808
|
"form": {
|
|
3481
3809
|
"slug": "Slug",
|
|
3482
3810
|
"slugPlaceholder": "e.g. javascript, react-js",
|
|
3483
|
-
"namePt": "Name (PT)",
|
|
3484
|
-
"namePtPlaceholder": "Portuguese name",
|
|
3485
|
-
"nameEn": "Name (EN)",
|
|
3486
|
-
"nameEnPlaceholder": "Name in English (optional)",
|
|
3487
3811
|
"status": "Status",
|
|
3488
|
-
"statusPlaceholder": "Select status",
|
|
3812
|
+
"statusPlaceholder": "Select a status",
|
|
3489
3813
|
"validation": {
|
|
3490
3814
|
"required": "Required",
|
|
3491
3815
|
"max100": "Maximum 100 characters",
|
|
@@ -3560,8 +3884,18 @@
|
|
|
3560
3884
|
"contractedClasses": {
|
|
3561
3885
|
"label": "Classes",
|
|
3562
3886
|
"description": "Contracted classes"
|
|
3887
|
+
},
|
|
3888
|
+
"users": {
|
|
3889
|
+
"label": "Users",
|
|
3890
|
+
"description": "Total linked users"
|
|
3563
3891
|
}
|
|
3564
3892
|
},
|
|
3893
|
+
"status": {
|
|
3894
|
+
"active": "Active",
|
|
3895
|
+
"trial": "Trial",
|
|
3896
|
+
"inactive": "Inactive",
|
|
3897
|
+
"suspended": "Suspended"
|
|
3898
|
+
},
|
|
3565
3899
|
"tabs": {
|
|
3566
3900
|
"overview": "Overview",
|
|
3567
3901
|
"users": "Users",
|
|
@@ -3570,12 +3904,27 @@
|
|
|
3570
3904
|
"billing": "Billing",
|
|
3571
3905
|
"students": "Students",
|
|
3572
3906
|
"administrators": "Administrators",
|
|
3573
|
-
"empresa": "Company"
|
|
3907
|
+
"empresa": "Company",
|
|
3908
|
+
"crm": "CRM"
|
|
3574
3909
|
},
|
|
3575
3910
|
"overview": {
|
|
3576
3911
|
"accountInfo": "Account Information",
|
|
3577
3912
|
"contactDetails": "Contact Details",
|
|
3578
|
-
"crmAccount": "CRM Account"
|
|
3913
|
+
"crmAccount": "CRM Account",
|
|
3914
|
+
"slug": "Slug:",
|
|
3915
|
+
"created": "Created:",
|
|
3916
|
+
"updated": "Updated:",
|
|
3917
|
+
"portalEnabled": "Portal enabled"
|
|
3918
|
+
},
|
|
3919
|
+
"crm": {
|
|
3920
|
+
"noLinked": "No CRM account linked",
|
|
3921
|
+
"noLinkedDesc": "This enterprise account is not yet associated with a CRM commercial account. Link one to keep both records in sync.",
|
|
3922
|
+
"linkButton": "Link CRM account",
|
|
3923
|
+
"openButton": "Open in CRM",
|
|
3924
|
+
"accountRef": "CRM Account #{id}",
|
|
3925
|
+
"accountNameLabel": "Account name",
|
|
3926
|
+
"crmIdLabel": "CRM ID",
|
|
3927
|
+
"readNote": "Data is read from the CRM. Use Open in CRM to manage the commercial account directly."
|
|
3579
3928
|
},
|
|
3580
3929
|
"users": {
|
|
3581
3930
|
"title": "Enrolled Users",
|
|
@@ -3673,7 +4022,8 @@
|
|
|
3673
4022
|
},
|
|
3674
4023
|
"actions": {
|
|
3675
4024
|
"create": "Create new class",
|
|
3676
|
-
"add": "Add"
|
|
4025
|
+
"add": "Add",
|
|
4026
|
+
"edit": "Edit"
|
|
3677
4027
|
},
|
|
3678
4028
|
"empty": {
|
|
3679
4029
|
"title": "No classes found.",
|
|
@@ -3681,6 +4031,7 @@
|
|
|
3681
4031
|
},
|
|
3682
4032
|
"table": {
|
|
3683
4033
|
"class": "Class",
|
|
4034
|
+
"instructor": "Instructor",
|
|
3684
4035
|
"status": "Status",
|
|
3685
4036
|
"period": "Period",
|
|
3686
4037
|
"capacity": "Capacity"
|
|
@@ -3692,18 +4043,6 @@
|
|
|
3692
4043
|
}
|
|
3693
4044
|
}
|
|
3694
4045
|
},
|
|
3695
|
-
"components": {
|
|
3696
|
-
"entityPicker": {
|
|
3697
|
-
"courses": {
|
|
3698
|
-
"empty": "No courses found.",
|
|
3699
|
-
"loading": "Loading courses..."
|
|
3700
|
-
},
|
|
3701
|
-
"instructors": {
|
|
3702
|
-
"empty": "No instructors found.",
|
|
3703
|
-
"loading": "Loading instructors..."
|
|
3704
|
-
}
|
|
3705
|
-
}
|
|
3706
|
-
},
|
|
3707
4046
|
"courseStructure": {
|
|
3708
4047
|
"contextMenu": {
|
|
3709
4048
|
"expandedAll": "All expanded",
|