// app/components/admin/CommonComponents/FormToggle.tsx
'use client';

import React from 'react';

interface FormToggleProps {
  id: string;
  name: string;
  label: string;
  description?: string;
  checked: boolean;
  onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
  activeLabel?: string;
  inactiveLabel?: string;
  disabled?: boolean;
  className?: string;
}

export default function FormToggle({
  id,
  name,
  label,
  description,
  checked,
  onChange,
  activeLabel = 'Enabled',
  inactiveLabel = 'Disabled',
  disabled = false,
  className = '',
}: FormToggleProps) {
  return (
    <div className={`flex items-center justify-between p-4 border border-var-border rounded-xl bg-var-surface-hover ${className}`}>
      <div>
        <h4 className="font-medium text-var-text">{label}</h4>
        {description && (
          <p className="text-sm text-var-text-muted mt-1">{description}</p>
        )}
      </div>

      <div className="flex items-center shrink-0 ml-4">
        <input
          type="checkbox"
          id={id}
          name={name}
          checked={checked}
          onChange={onChange}
          disabled={disabled}
          className="w-4 h-4 text-var-primary border-var-border rounded focus:ring-var-primary disabled:opacity-50 disabled:cursor-not-allowed"
        />
        <label
          htmlFor={id}
          className={`ml-3 block text-sm font-medium select-none ${
            disabled ? 'text-var-text-muted cursor-not-allowed' : 'text-var-text cursor-pointer'
          }`}
        >
          {checked ? activeLabel : inactiveLabel}
        </label>
      </div>
    </div>
  );
}