modcomms/frontend/components/ToggleSwitch.tsx
2025-12-18 16:51:27 +00:00

28 lines
No EOL
980 B
TypeScript
Executable file

import React from 'react';
interface ToggleSwitchProps {
enabled: boolean;
onChange: (enabled: boolean) => void;
}
export const ToggleSwitch: React.FC<ToggleSwitchProps> = ({ enabled, onChange }) => {
return (
<button
type="button"
className={`relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-brand-accent focus:ring-offset-2 ${
enabled ? 'bg-brand-accent' : 'bg-gray-300'
}`}
role="switch"
aria-checked={enabled}
onClick={() => onChange(!enabled)}
>
<span className="sr-only">Use setting</span>
<span
aria-hidden="true"
className={`pointer-events-none inline-block h-5 w-5 transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out ${
enabled ? 'translate-x-5' : 'translate-x-0'
}`}
/>
</button>
);
};