"use client"; import { RiCheckLine } from "@remixicon/react"; import { useMemo } from "react"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Card } from "../ui/card"; import type { Note } from "./types"; const DATE_FORMATTER = new Intl.DateTimeFormat("pt-BR", { dateStyle: "long", timeStyle: "short", }); interface NoteDetailsDialogProps { note: Note | null; open: boolean; onOpenChange: (open: boolean) => void; } export function NoteDetailsDialog({ note, open, onOpenChange, }: NoteDetailsDialogProps) { const { formattedDate, displayTitle } = useMemo(() => { if (!note) { return { formattedDate: "", displayTitle: "" }; } const title = note.title.trim().length ? note.title : "Anotação sem título"; return { formattedDate: DATE_FORMATTER.format(new Date(note.createdAt)), displayTitle: title, }; }, [note]); if (!note) { return null; } const isTask = note.type === "tarefa"; const tasks = note.tasks || []; const completedCount = tasks.filter((t) => t.completed).length; const totalCount = tasks.length; return ( {displayTitle} {isTask && ( {completedCount}/{totalCount} )} {formattedDate} {isTask ? (
{tasks.map((task) => (
{task.completed && ( )}
{task.text}
))}
) : (
{note.description}
)}
); }