deepsite / components /editor /ask-ai /selected-html-element.tsx
enzostvs's picture
enzostvs HF Staff
ui stuffs
7694ff5
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>
);
};