import React from 'react'; import { motion } from 'framer-motion'; import { Check, X } from '@phosphor-icons/react'; const CustomToggle = ({ id, checked, onChange, label, disabled, colorTheme = 'rose', fontClass = '', labelColorClass = 'text-gray-300', hoverColorClass = 'group-hover:text-white', }) => { const themes = { rose: { track: 'bg-rose-500/20 border-rose-500/50 shadow-[0_0_15px_rgba(244,63,94,0.2)]', knob: 'bg-rose-500 border-rose-400 shadow-[0_0_10px_rgba(244,63,94,0.4)]', }, blue: { track: 'bg-blue-500/20 border-blue-500/50 shadow-[0_0_15px_rgba(59,130,246,0.2)]', knob: 'bg-blue-500 border-blue-400 shadow-[0_0_10px_rgba(59,130,246,0.4)]', }, green: { track: 'bg-emerald-500/20 border-emerald-500/50 shadow-[0_0_15px_rgba(16,185,129,0.2)]', knob: 'bg-emerald-500 border-emerald-400 shadow-[0_0_10px_rgba(16,185,129,0.4)]', }, amber: { track: 'bg-amber-500/20 border-amber-500/50 shadow-[0_0_15px_rgba(245,158,11,0.2)]', knob: 'bg-amber-500 border-amber-400 shadow-[0_0_10px_rgba(245,158,11,0.4)]', }, purple: { track: 'bg-purple-500/20 border-purple-500/50 shadow-[0_0_15px_rgba(168,85,247,0.2)]', knob: 'bg-purple-500 border-purple-400 shadow-[0_0_10px_rgba(168,85,247,0.4)]', }, cyan: { track: 'bg-cyan-500/20 border-cyan-500/50 shadow-[0_0_15px_rgba(6,182,212,0.2)]', knob: 'bg-cyan-500 border-cyan-400 shadow-[0_0_10px_rgba(6,182,212,0.4)]', }, indigo: { track: 'bg-indigo-500/20 border-indigo-500/50 shadow-[0_0_15px_rgba(99,102,241,0.2)]', knob: 'bg-indigo-500 border-indigo-400 shadow-[0_0_10px_rgba(99,102,241,0.4)]', }, }; const activeTheme = themes[colorTheme] || themes.rose; return (
!disabled && onChange({ target: { checked: !checked } })} >
{/* Track */}
{/* Background sheen effect */}
{/* Knob */} {checked ? ( ) : ( )}
); }; export default CustomToggle;