|
import { History as HistoryIcon } from "lucide-react"; |
|
import { HtmlHistory } from "@/types"; |
|
import { |
|
Popover, |
|
PopoverContent, |
|
PopoverTrigger, |
|
} from "@/components/ui/popover"; |
|
import { Button } from "@/components/ui/button"; |
|
|
|
export function History({ |
|
history, |
|
setHtml, |
|
}: { |
|
history: HtmlHistory[]; |
|
setHtml: (html: string) => void; |
|
}) { |
|
return ( |
|
<Popover> |
|
<PopoverTrigger asChild> |
|
<Button variant="ghost" size="sm" className="max-lg:hidden"> |
|
<HistoryIcon className="size-4 text-neutral-300" /> |
|
{history?.length} edit{history.length !== 1 ? "s" : ""} |
|
</Button> |
|
</PopoverTrigger> |
|
<PopoverContent |
|
className="!rounded-2xl !p-0 overflow-hidden !bg-neutral-900" |
|
align="start" |
|
> |
|
<header className="text-sm px-4 py-3 border-b gap-2 bg-neutral-950 border-neutral-800 font-semibold text-neutral-200"> |
|
History |
|
</header> |
|
<main className="px-4 space-y-3"> |
|
<ul className="max-h-[250px] overflow-y-auto"> |
|
{history?.map((item, index) => ( |
|
<li |
|
key={index} |
|
className="text-gray-300 text-xs py-2 border-b border-gray-800 last:border-0 flex items-center justify-between gap-2" |
|
> |
|
<div className=""> |
|
<span className="line-clamp-1">{item.prompt}</span> |
|
<span className="text-gray-500 text-[10px]"> |
|
{new Date(item.createdAt).toLocaleDateString("en-US", { |
|
month: "2-digit", |
|
day: "2-digit", |
|
year: "2-digit", |
|
}) + |
|
" " + |
|
new Date(item.createdAt).toLocaleTimeString("en-US", { |
|
hour: "2-digit", |
|
minute: "2-digit", |
|
second: "2-digit", |
|
hour12: false, |
|
})} |
|
</span> |
|
</div> |
|
<Button |
|
variant="sky" |
|
size="xs" |
|
onClick={() => { |
|
setHtml(item.html); |
|
}} |
|
> |
|
Select |
|
</Button> |
|
</li> |
|
))} |
|
</ul> |
|
</main> |
|
</PopoverContent> |
|
</Popover> |
|
); |
|
} |
|
|