the-tip-top-frontend/components/forms/FormCheckbox.tsx
2025-11-17 23:38:02 +01:00

60 lines
1.3 KiB
TypeScript

'use client';
import React, { ChangeEvent } from 'react';
interface FormCheckboxProps {
label: string;
name: string;
checked: boolean;
onChange: (e: ChangeEvent<HTMLInputElement>) => void;
error?: string;
touched?: boolean;
required?: boolean;
disabled?: boolean;
className?: string;
}
/**
* Composant de checkbox de formulaire réutilisable
*/
export default function FormCheckbox({
label,
name,
checked,
onChange,
error,
touched,
required = false,
disabled = false,
className = '',
}: FormCheckboxProps) {
const showError = touched && error;
return (
<div className={`mb-4 ${className}`}>
<div className="flex items-center">
<input
id={name}
name={name}
type="checkbox"
checked={checked}
onChange={onChange}
disabled={disabled}
required={required}
className="w-4 h-4 text-primary-600 border-gray-300 rounded focus:ring-primary-500"
/>
<label
htmlFor={name}
className="ml-2 text-sm text-gray-700 cursor-pointer"
>
{label}
{required && <span className="text-red-500 ml-1">*</span>}
</label>
</div>
{showError && (
<p className="mt-1 text-sm text-red-500">{error}</p>
)}
</div>
);
}