@hed-hog/lms 0.0.330 → 0.0.331
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/hedhog/frontend/app/_components/course-form-sheet.tsx.ejs +3 -3
- package/hedhog/frontend/app/certificates/models/page.tsx.ejs +1 -1
- package/hedhog/frontend/app/classes/[id]/page.tsx.ejs +17 -17
- package/hedhog/frontend/app/courses/[id]/_components/CourseMultiEntityPicker.tsx.ejs +2 -2
- package/hedhog/frontend/app/courses/[id]/page.tsx.ejs +3 -3
- package/hedhog/frontend/app/courses/[id]/structure/_components/course-tree-dnd.tsx.ejs +1 -1
- package/hedhog/frontend/app/courses/[id]/structure/_components/editor-lesson.tsx.ejs +228 -152
- package/hedhog/frontend/app/courses/[id]/structure/_components/shortcuts-help.tsx.ejs +71 -31
- package/hedhog/frontend/app/enterprise/[id]/page.tsx.ejs +37 -41
- package/hedhog/frontend/app/evaluations/_components/evaluation-topic-form-sheet.tsx.ejs +1 -1
- package/hedhog/frontend/app/exams/page.tsx.ejs +6 -2
- package/hedhog/frontend/app/instructors/_components/instructor-form-sheet.tsx.ejs +145 -119
- package/hedhog/frontend/app/instructors/page.tsx.ejs +71 -52
- package/hedhog/frontend/app/paths/page.tsx.ejs +11 -7
- 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/page.tsx.ejs +7 -7
- package/hedhog/frontend/app/reports/students/page.tsx.ejs +6 -6
- package/hedhog/frontend/app/training/page.tsx.ejs +5 -5
- package/hedhog/frontend/messages/en.json +294 -46
- package/hedhog/frontend/messages/pt.json +289 -39
- 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/instructor_qualification.yaml +1 -1
- package/hedhog/table/instructor_skill.yaml +1 -1
- package/package.json +7 -7
|
@@ -526,14 +526,14 @@ export function CourseFormSheet({
|
|
|
526
526
|
</Field>
|
|
527
527
|
|
|
528
528
|
<Field>
|
|
529
|
-
<FieldLabel htmlFor="descricao">
|
|
529
|
+
<FieldLabel htmlFor="descricao">
|
|
530
530
|
{t('form.fields.description.label')}
|
|
531
531
|
</FieldLabel>
|
|
532
532
|
<Textarea
|
|
533
|
-
id="descricao"
|
|
533
|
+
id="descricao"
|
|
534
534
|
rows={3}
|
|
535
535
|
placeholder={t('form.fields.description.placeholder')}
|
|
536
|
-
{...form.register('descricao')}
|
|
536
|
+
{...form.register('descricao')}
|
|
537
537
|
/>
|
|
538
538
|
<FieldError>{form.formState.errors.descricao?.message}</FieldError>
|
|
539
539
|
</Field>
|
|
@@ -789,7 +789,7 @@ export default function ModelsPage() {
|
|
|
789
789
|
}
|
|
790
790
|
}}
|
|
791
791
|
>
|
|
792
|
-
<SheetContent className="overflow-y-auto sm:max-w-xl">
|
|
792
|
+
<SheetContent className="overflow-y-auto sm:max-w-xl">
|
|
793
793
|
<SheetHeader>
|
|
794
794
|
<SheetTitle>{t('editSheet.title')}</SheetTitle>
|
|
795
795
|
<SheetDescription>{t('editSheet.description')}</SheetDescription>
|
|
@@ -2452,13 +2452,13 @@ export default function TurmaDetalhePage() {
|
|
|
2452
2452
|
},
|
|
2453
2453
|
{
|
|
2454
2454
|
key: 'next-session',
|
|
2455
|
-
title: '
|
|
2455
|
+
title: t('kpis.nextClass'),
|
|
2456
2456
|
value: nextSession
|
|
2457
2457
|
? format(nextSessionStartsAt!, 'dd/MM', { locale: dateLocale })
|
|
2458
|
-
: '
|
|
2458
|
+
: t('kpis.noClass'),
|
|
2459
2459
|
description: nextSession
|
|
2460
2460
|
? `${nextSession.horaInicio} - ${nextSession.horaFim}`
|
|
2461
|
-
: '
|
|
2461
|
+
: t('kpis.createNext'),
|
|
2462
2462
|
icon: Clock,
|
|
2463
2463
|
iconContainerClassName: 'bg-emerald-500/10 text-emerald-700',
|
|
2464
2464
|
accentClassName: 'from-emerald-500/25 via-green-500/10 to-transparent',
|
|
@@ -2466,9 +2466,9 @@ export default function TurmaDetalhePage() {
|
|
|
2466
2466
|
},
|
|
2467
2467
|
{
|
|
2468
2468
|
key: 'calendar',
|
|
2469
|
-
title: '
|
|
2469
|
+
title: t('kpis.calendar'),
|
|
2470
2470
|
value: totalSessionsCount,
|
|
2471
|
-
description:
|
|
2471
|
+
description: t('kpis.completed', { count: completedSessionsCount }),
|
|
2472
2472
|
icon: CalendarIcon,
|
|
2473
2473
|
iconContainerClassName: 'bg-violet-500/10 text-violet-700',
|
|
2474
2474
|
accentClassName: 'from-violet-500/25 via-violet-500/10 to-transparent',
|
|
@@ -2582,7 +2582,7 @@ export default function TurmaDetalhePage() {
|
|
|
2582
2582
|
variant: 'outline',
|
|
2583
2583
|
},
|
|
2584
2584
|
{
|
|
2585
|
-
label: '
|
|
2585
|
+
label: t('actions.editClass'),
|
|
2586
2586
|
onClick: () => setEditSheetOpen(true),
|
|
2587
2587
|
variant: 'default',
|
|
2588
2588
|
},
|
|
@@ -2660,7 +2660,7 @@ export default function TurmaDetalhePage() {
|
|
|
2660
2660
|
key={i}
|
|
2661
2661
|
className="overflow-hidden border-border/70 py-0"
|
|
2662
2662
|
>
|
|
2663
|
-
<div className="h-1 w-full bg-
|
|
2663
|
+
<div className="h-1 w-full bg-linear-to-r from-slate-300/70 via-slate-200 to-transparent" />
|
|
2664
2664
|
<CardContent className="p-4">
|
|
2665
2665
|
<Skeleton className="mb-2 h-8 w-16" />
|
|
2666
2666
|
<Skeleton className="h-4 w-28" />
|
|
@@ -2803,7 +2803,7 @@ export default function TurmaDetalhePage() {
|
|
|
2803
2803
|
#
|
|
2804
2804
|
</TableHead>
|
|
2805
2805
|
<TableHead>Sessão</TableHead>
|
|
2806
|
-
<TableHead className="w-
|
|
2806
|
+
<TableHead className="w-30">Data</TableHead>
|
|
2807
2807
|
<TableHead className="w-[105px]">Horário</TableHead>
|
|
2808
2808
|
<TableHead className="w-[90px]">Tipo</TableHead>
|
|
2809
2809
|
<TableHead>Instrutor</TableHead>
|
|
@@ -2814,7 +2814,7 @@ export default function TurmaDetalhePage() {
|
|
|
2814
2814
|
Materiais
|
|
2815
2815
|
</TableHead>
|
|
2816
2816
|
<TableHead className="w-[90px]">Link</TableHead>
|
|
2817
|
-
<TableHead className="w-
|
|
2817
|
+
<TableHead className="w-11" />
|
|
2818
2818
|
</TableRow>
|
|
2819
2819
|
</TableHeader>
|
|
2820
2820
|
<TableBody>
|
|
@@ -3359,7 +3359,7 @@ export default function TurmaDetalhePage() {
|
|
|
3359
3359
|
src={getPersonAvatarUrl(aluno.avatarId)}
|
|
3360
3360
|
alt={aluno.nome}
|
|
3361
3361
|
/>
|
|
3362
|
-
<AvatarFallback className="bg-
|
|
3362
|
+
<AvatarFallback className="bg-linear-to-br from-blue-100 to-blue-200 text-[11px] font-medium text-blue-700">
|
|
3363
3363
|
{getPersonInitials(aluno.nome)}
|
|
3364
3364
|
</AvatarFallback>
|
|
3365
3365
|
</Avatar>
|
|
@@ -3616,7 +3616,7 @@ export default function TurmaDetalhePage() {
|
|
|
3616
3616
|
{tClasses(`type.${aula.tipo}`)}
|
|
3617
3617
|
</Badge>
|
|
3618
3618
|
</TableCell>
|
|
3619
|
-
<TableCell className="max-w-
|
|
3619
|
+
<TableCell className="max-w-45 truncate text-sm text-muted-foreground">
|
|
3620
3620
|
{aula.meetingUrl || aula.local || '—'}
|
|
3621
3621
|
</TableCell>
|
|
3622
3622
|
<TableCell className="text-sm text-muted-foreground">
|
|
@@ -3857,7 +3857,7 @@ export default function TurmaDetalhePage() {
|
|
|
3857
3857
|
<Table>
|
|
3858
3858
|
<TableHeader>
|
|
3859
3859
|
<TableRow className="bg-muted/40 hover:bg-muted/40">
|
|
3860
|
-
<TableHead className="sticky left-0 z-10 min-w-
|
|
3860
|
+
<TableHead className="sticky left-0 z-10 min-w-65 bg-muted/40 font-semibold">
|
|
3861
3861
|
{t('tabs.students')}
|
|
3862
3862
|
</TableHead>
|
|
3863
3863
|
{aulasState.map((aula) => {
|
|
@@ -3886,14 +3886,14 @@ export default function TurmaDetalhePage() {
|
|
|
3886
3886
|
key={aluno.id}
|
|
3887
3887
|
className="hover:bg-muted/30"
|
|
3888
3888
|
>
|
|
3889
|
-
<TableCell className="sticky left-0 z-10 min-w-
|
|
3889
|
+
<TableCell className="sticky left-0 z-10 min-w-65 border-r border-border/40 bg-background">
|
|
3890
3890
|
<div className="flex min-w-0 items-center gap-3">
|
|
3891
3891
|
<Avatar className="size-8 shrink-0">
|
|
3892
3892
|
<AvatarImage
|
|
3893
3893
|
src={getPersonAvatarUrl(aluno.avatarId)}
|
|
3894
3894
|
alt={aluno.nome}
|
|
3895
3895
|
/>
|
|
3896
|
-
<AvatarFallback className="bg-
|
|
3896
|
+
<AvatarFallback className="bg-linear-to-br from-blue-100 to-blue-200 text-[11px] font-medium text-blue-700">
|
|
3897
3897
|
{getPersonInitials(aluno.nome)}
|
|
3898
3898
|
</AvatarFallback>
|
|
3899
3899
|
</Avatar>
|
|
@@ -4195,7 +4195,7 @@ export default function TurmaDetalhePage() {
|
|
|
4195
4195
|
globalLinkTitleEditedRef.current =
|
|
4196
4196
|
e.target.value.length > 0;
|
|
4197
4197
|
}}
|
|
4198
|
-
placeholder=
|
|
4198
|
+
placeholder={t('links.studyRefPlaceholder')}
|
|
4199
4199
|
/>
|
|
4200
4200
|
</Field>
|
|
4201
4201
|
<div className="flex gap-2">
|
|
@@ -4615,7 +4615,7 @@ export default function TurmaDetalhePage() {
|
|
|
4615
4615
|
src={getPersonAvatarUrl(selectedStudentProfile.avatarId)}
|
|
4616
4616
|
alt={selectedStudentProfile.nome}
|
|
4617
4617
|
/>
|
|
4618
|
-
<AvatarFallback className="bg-
|
|
4618
|
+
<AvatarFallback className="bg-linear-to-br from-blue-100 to-blue-200 text-xs font-medium text-blue-700">
|
|
4619
4619
|
{getPersonInitials(selectedStudentProfile.nome)}
|
|
4620
4620
|
</AvatarFallback>
|
|
4621
4621
|
</Avatar>
|
|
@@ -5655,7 +5655,7 @@ export default function TurmaDetalhePage() {
|
|
|
5655
5655
|
linkTitleEditedRef.current =
|
|
5656
5656
|
e.target.value.length > 0;
|
|
5657
5657
|
}}
|
|
5658
|
-
placeholder=
|
|
5658
|
+
placeholder={t('links.lessonSlidesPlaceholder')}
|
|
5659
5659
|
/>
|
|
5660
5660
|
</Field>
|
|
5661
5661
|
<div className="flex gap-2">
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';
|
|
2
|
+
import { Badge } from '@/components/ui/badge';
|
|
2
3
|
import { Button } from '@/components/ui/button';
|
|
3
4
|
import { EntityPicker } from '@/components/ui/entity-picker';
|
|
4
|
-
import { Badge } from '@/components/ui/badge';
|
|
5
5
|
import { cn } from '@/lib/utils';
|
|
6
6
|
import { Grip, Plus, X } from 'lucide-react';
|
|
7
7
|
import { useMemo, useState } from 'react';
|
|
@@ -211,7 +211,7 @@ export function CourseMultiEntityPicker({
|
|
|
211
211
|
variant="secondary"
|
|
212
212
|
className="flex items-center gap-1.5 rounded-full border border-border/60 bg-background px-3 py-1.5 text-xs font-medium text-foreground"
|
|
213
213
|
>
|
|
214
|
-
<span className="max-w-
|
|
214
|
+
<span className="max-w-45 truncate">{option.label}</span>
|
|
215
215
|
<button
|
|
216
216
|
type="button"
|
|
217
217
|
className="cursor-pointer text-muted-foreground transition-colors hover:text-foreground"
|
|
@@ -30,6 +30,7 @@ import {
|
|
|
30
30
|
import { useTranslations } from 'next-intl';
|
|
31
31
|
import { useRouter } from 'next/navigation';
|
|
32
32
|
|
|
33
|
+
import { CourseAvatar } from '../../_components/course-avatar';
|
|
33
34
|
import { ConfirmDialog } from './structure/_components/confirm-dialog';
|
|
34
35
|
import { CourseTreePanel } from './structure/_components/course-tree-panel';
|
|
35
36
|
import { CourseTreeSkeleton } from './structure/_components/course-tree-skeleton';
|
|
@@ -43,7 +44,6 @@ import {
|
|
|
43
44
|
import { useStructureStore } from './structure/_components/store';
|
|
44
45
|
import { TreeDisplaySettingsPopover } from './structure/_components/tree-display-settings-popover';
|
|
45
46
|
import { useCourseStructureShortcuts } from './structure/_components/use-course-structure-shortcuts';
|
|
46
|
-
import { CourseAvatar } from '../../_components/course-avatar';
|
|
47
47
|
import {
|
|
48
48
|
useDuplicateLessonMutation,
|
|
49
49
|
useDuplicateSessionMutation,
|
|
@@ -261,8 +261,8 @@ export default function CourseStructurePage({ params }: Props) {
|
|
|
261
261
|
<Page>
|
|
262
262
|
<PageHeader
|
|
263
263
|
breadcrumbs={[
|
|
264
|
-
{ label: '
|
|
265
|
-
{ label: '
|
|
264
|
+
{ label: t('breadcrumbs.lms'), href: '/lms' },
|
|
265
|
+
{ label: t('breadcrumbs.courses'), href: '/lms/courses' },
|
|
266
266
|
{ label: course.name },
|
|
267
267
|
]}
|
|
268
268
|
title={
|
|
@@ -295,7 +295,7 @@ export function CourseTreeDnd() {
|
|
|
295
295
|
<p className="text-sm font-medium text-foreground/70">
|
|
296
296
|
Nenhuma sessão
|
|
297
297
|
</p>
|
|
298
|
-
<p className="text-xs text-muted-foreground leading-relaxed max-w-
|
|
298
|
+
<p className="text-xs text-muted-foreground leading-relaxed max-w-45">
|
|
299
299
|
Adicione a primeira sessão para começar a organizar o conteúdo
|
|
300
300
|
do curso.
|
|
301
301
|
</p>
|