"use client"; import React from "react"; import { Switch as HeroSwitch, Label, Description, } from "@heroui/react"; export interface SwitchProps { label?: React.ReactNode; description?: string; checked?: boolean; onChange?: (checked: boolean) => void; disabled?: boolean; size?: "sm" | "md" | "lg"; checkedIcon?: React.ReactNode; uncheckedIcon?: React.ReactNode; id?: string; name?: string; className?: string; } const trackSizes = { sm: "w-8 h-[18px]", md: "w-11 h-6", lg: "w-14 h-[30px]", }; const thumbSizes = { sm: "size-3.5", md: "size-5", lg: "size-[26px]", }; const translateSizes = { sm: "translate-x-3.5", md: "translate-x-5", lg: "translate-x-[26px]", }; export const Switch: React.FC = ({ label, description, checked = false, onChange, disabled = false, size = "md", checkedIcon, uncheckedIcon, id, name, className = "", }) => { const switchId = id || name || (typeof label === "string" ? label.toLowerCase().replace(/\s+/g, "-") : undefined); return ( { if (!onChange || disabled) return; const val = typeof e === "boolean" ? e : Boolean(e?.target?.checked); onChange(val); }} > {(checkedIcon || uncheckedIcon) && ( {checked ? checkedIcon : uncheckedIcon} )} {/* TEXTOS */} {(label || description) && (
{label && ( )} {description && ( {description} )}
)}
); };