SurfSense/surfsense_web/components/ui/toggle-node.tsx

33 lines
1 KiB
TypeScript
Raw Normal View History

2026-02-17 12:47:39 +05:30
"use client";
2026-02-17 12:47:39 +05:30
import { useToggleButton, useToggleButtonState } from "@platejs/toggle/react";
import { ChevronRightIcon } from "lucide-react";
2026-02-20 22:44:56 -08:00
import { PlateElement, type PlateElementProps } from "platejs/react";
import * as React from "react";
2026-02-17 12:47:39 +05:30
import { cn } from "@/lib/utils";
2026-02-17 12:47:39 +05:30
export function ToggleElement({ children, ...props }: PlateElementProps) {
const element = props.element;
const state = useToggleButtonState(element.id as string);
const { buttonProps, open } = useToggleButton(state);
2026-02-17 12:47:39 +05:30
return (
<PlateElement {...props} className="relative py-1 pl-6">
<button
className={cn(
"absolute top-1.5 left-0 flex size-6 cursor-pointer select-none items-center justify-center rounded-sm text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground"
)}
contentEditable={false}
type="button"
{...buttonProps}
>
<ChevronRightIcon
className={cn("size-4 transition-transform duration-200", open && "rotate-90")}
/>
</button>
<div>{children}</div>
</PlateElement>
);
}