import { type DetailedHTMLProps, type HTMLAttributes, useEffect, useState, } from "react"; import { twMerge } from "tailwind-merge"; export type TWUI_TOGGLE_PROPS = DetailedHTMLProps< HTMLAttributes, HTMLDivElement > & { circleProps?: DetailedHTMLProps< HTMLAttributes, HTMLDivElement >; default_active?: boolean; changeHandler?: (checked: boolean) => void; }; /** * # Toggle Component * @className_wrapper twui-toggle-wrapper * @className_circle twui-toggle-circle */ export default function Toggle({ circleProps, default_active, changeHandler, ...props }: TWUI_TOGGLE_PROPS) { const [active, setActive] = useState(default_active || false); const [ready, setReady] = useState(false); useEffect(() => { if (!ready) return; changeHandler?.(active); }, [active]); useEffect(() => { setTimeout(() => { setReady(true); }, 200); }, []); return ( { setActive(!active); }} > {typeof active == "undefined" ? ( ) : ( )} ); }