Spaces:
Running
Running
import { HtmlHistory } from "../../../utils/types"; | |
import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover"; | |
import { Button } from "../ui/button"; | |
export default function History({ | |
history, | |
setHtml, | |
}: { | |
history: HtmlHistory[]; | |
setHtml: (html: string) => void; | |
}) { | |
return ( | |
<Popover> | |
<PopoverTrigger asChild> | |
<Button variant="ghost" size="sm" className="max-lg:hidden"> | |
{history?.length} versions | |
</Button> | |
</PopoverTrigger> | |
<PopoverContent | |
className="!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"> | |
Version 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 | |
className="bg-pink-500 text-white text-xs font-medium rounded-md px-2 py-1 transition-all duration-100 hover:bg-pink-600 cursor-pointer" | |
onClick={() => { | |
setHtml(item.html); | |
}} | |
> | |
Select | |
</button> | |
</li> | |
))} | |
</ul> | |
</main> | |
</PopoverContent> | |
</Popover> | |
// <div | |
// className="relative" | |
// onMouseEnter={() => setVisible(true)} | |
// onMouseLeave={() => setVisible(false)} | |
// > | |
// <button | |
// className={classNames( | |
// "text-gray-400 hover:text-gray-300 cursor-pointer text-sm nderline flex items-center justify-start gap-1", | |
// { | |
// "!text-gray-300": visible, | |
// } | |
// )} | |
// > | |
// <IoTimeOutline /> | |
// {htmlHistory?.length} versions | |
// </button> | |
// <div | |
// className={classNames( | |
// "absolute bottom-0 left-0 min-w-sm w-full z-10 translate-y-full pt-2 transition-all duration-200", | |
// { | |
// "opacity-0 pointer-events-none": !visible, | |
// } | |
// )} | |
// > | |
// <div className="bg-gray-950 border border-gray-800 rounded-xl shadow-2xs p-4"> | |
// <p className="text-xs font-bold text-white">Version History</p> | |
// <p className="text-gray-400 text-xs mt-1"> | |
// This is a list of the full history of what AI has done to | |
// this. | |
// </p> | |
// <ul className="mt-2 max-h-[250px] overflow-y-auto"> | |
// {htmlHistory?.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 | |
// className="bg-pink-500 text-white text-xs font-medium rounded-md px-2 py-1 transition-all duration-100 hover:bg-pink-600 cursor-pointer" | |
// onClick={() => { | |
// setHtml(item.html); | |
// }} | |
// > | |
// Select | |
// </button> | |
// </li> | |
// ))} | |
// </ul> | |
// </div> | |
// </div> | |
// </div> | |
); | |
} | |