import { forwardRef } from "react"; /** * Checkbox * * size: "lg" | "xl" | (default) * label: string | ReactNode - visible label; omit and pass aria-label via props instead * labelHidden: boolean - visually hides the label (sr-only) while keeping it accessible * indeterminate: boolean - sets the indeterminate DOM property */ const Checkbox = forwardRef(function Checkbox( { size, label, labelHidden = false, indeterminate = false, className = "", ...props }, ref ) { const inputClasses = [ "prs-checkbox", size === "lg" && "prs-checkbox-lg", size === "xl" && "prs-checkbox-xl", indeterminate && "prs-checkbox_indeterminate", className, ] .filter(Boolean) .join(" "); // sync the indeterminate DOM property - can't be set via HTML attribute const setRef = (el) => { if (el) el.indeterminate = indeterminate; if (typeof ref === "function") ref(el); else if (ref) ref.current = el; }; const input = ( ); if (!label) return input; return ( ); }); export default Checkbox;