From d02e35cc8e5780d2ca5536edc7cf7008938a6e6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Rafael=20Siqueira?= Date: Mon, 15 Dec 2025 10:00:33 -0300 Subject: [PATCH] finish timeline --- .../route.tsx | 9 +- .../app/routes/_.$orgid.scheduled/route.tsx | 102 ++++++++++++++---- 2 files changed, 88 insertions(+), 23 deletions(-) diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.$id.submitted/route.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.$id.submitted/route.tsx index 1031e6c..a7f8706 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.$id.submitted/route.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.$id.submitted/route.tsx @@ -90,8 +90,7 @@ export default function Route({ loaderData: { data } }: Route.ComponentProps) { - {/*}>*/} - + }> {({ enrolled, scheduled, sk, created_by }) => { const succeed = enrolled?.filter( ({ status }) => status === 'success' @@ -197,12 +196,12 @@ export default function Route({ loaderData: { data } }: Route.ComponentProps) {
  • - {formatted.format(new Date(sk))} + {datetime.format(new Date(sk))}
  • {created_by.name} @@ -219,7 +218,7 @@ export default function Route({ loaderData: { data } }: Route.ComponentProps) { ) } -const formatted = new Intl.DateTimeFormat('pt-BR', { +const datetime = new Intl.DateTimeFormat('pt-BR', { day: '2-digit', month: '2-digit', year: 'numeric', diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.scheduled/route.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.scheduled/route.tsx index f931afc..abe66e4 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.scheduled/route.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.scheduled/route.tsx @@ -1,12 +1,27 @@ import type { Route } from './+types/route' -import { EllipsisIcon } from 'lucide-react' +import { + BanIcon, + CalendarIcon, + EllipsisIcon, + PlusIcon, + UserIcon +} from 'lucide-react' import { DateTime } from 'luxon' import { Fragment, Suspense } from 'react' import { Await } from 'react-router' -import { Skeleton } from '@repo/ui/components/skeleton' import { request as req } from '@repo/util/request' +import { Button } from '@repo/ui/components/ui/button' +import { + Empty, + EmptyContent, + EmptyDescription, + EmptyHeader, + EmptyMedia, + EmptyTitle +} from '@repo/ui/components/ui/empty' +import { Skeleton } from '@repo/ui/components/skeleton' import { Card, CardContent } from '@repo/ui/components/ui/card' import { Item, @@ -17,7 +32,7 @@ import { ItemSeparator, ItemTitle } from '@repo/ui/components/ui/item' -import { Button } from '@repo/ui/components/ui/button' +import { Link } from 'react-router' export function meta({}: Route.MetaArgs) { return [{ title: 'Matrículas agendadas' }] @@ -52,34 +67,85 @@ export default function Route({ {({ items }) => { + const scheduled = grouping(items) + + if (scheduled.length === 0) { + return ( + + + + + + Nenhum agendamento ainda + + Agende a matrícula dos seus colaboradores de forma rápida e + organizada. + + + + + + + ) + } + return (
    - {grouping(items).map(([run_at, items]) => ( -
    + {scheduled.map(([run_at, items], index) => ( +
    {DateTime.fromISO(run_at) .setLocale('pt-BR') .toFormat('cccc, dd LLL yyyy')}
    + - {items.map(({ user, course, scheduled_at }, index) => ( - - - - {course.name} - {user.name} - - + {items.map( + ( + { user, course, created_by, scheduled_at }, + index + ) => ( + + + + {course.name} + {user.name} + {/**/} +
    +
      +
    • + {' '} + {datetime.format( + new Date(scheduled_at) + )} +
    • +
    • + {' '} + {created_by.name} +
    • +
    +
    +
    + {/* - -
    - {index !== items.length - 1 && } -
    - ))} +
    */} +
    + + {index !== items.length - 1 && } +
    + ) + )}