Spaces:
Running
Running
import classNames from "classnames"; | |
import { Code, XCircle } from "lucide-react"; | |
import { Collapsible, CollapsibleTrigger } from "@/components/ui/collapsible"; | |
import { htmlTagToText } from "@/lib/html-tag-to-text"; | |
export const SelectedHtmlElement = ({ | |
element, | |
isAiWorking = false, | |
onDelete, | |
}: { | |
element: HTMLElement | null; | |
isAiWorking: boolean; | |
onDelete?: () => void; | |
}) => { | |
if (!element) return null; | |
const tagName = element.tagName.toLowerCase(); | |
return ( | |
<Collapsible | |
className={classNames( | |
"border border-neutral-700 rounded-xl p-1.5 pr-3 max-w-max hover:brightness-110 transition-all duration-200 ease-in-out !cursor-pointer", | |
{ | |
"!cursor-pointer": !isAiWorking, | |
"opacity-50 !cursor-not-allowed": isAiWorking, | |
} | |
)} | |
disabled={isAiWorking} | |
onClick={() => { | |
if (!isAiWorking && onDelete) { | |
onDelete(); | |
} | |
}} | |
> | |
<CollapsibleTrigger className="flex items-center justify-start gap-2 cursor-pointer"> | |
<div className="rounded-lg bg-neutral-700 size-6 flex items-center justify-center"> | |
<Code className="text-neutral-300 size-3.5" /> | |
</div> | |
<p className="text-sm font-semibold text-neutral-300"> | |
{element.textContent?.trim().split(/\s+/)[0]} {htmlTagToText(tagName)} | |
</p> | |
<XCircle className="text-neutral-300 size-4" /> | |
</CollapsibleTrigger> | |
{/* <CollapsibleContent className="border-t border-neutral-700 pt-2 mt-2"> | |
<div className="text-xs text-neutral-400"> | |
<p> | |
<span className="font-semibold">ID:</span> {element.id || "No ID"} | |
</p> | |
<p> | |
<span className="font-semibold">Classes:</span>{" "} | |
{element.className || "No classes"} | |
</p> | |
</div> | |
</CollapsibleContent> */} | |
</Collapsible> | |
); | |
}; | |