import { OPTIONS } from "../utils/formatters";

export function ScenarioForm({ formData, onChange, onSubmit, loading }) {
  return (
    <form className="scenario-form" onSubmit={onSubmit}>
      <div className="form-grid">
        <label>
          Product Category
          <select name="product_category" value={formData.product_category} onChange={onChange}>
            {OPTIONS.category.map(({ value, label }) => (
              <option key={value} value={value}>
                {label}
              </option>
            ))}
          </select>
        </label>
        <label>
          pH
          <input name="ph" type="number" step="0.01" value={formData.ph} onChange={onChange} />
        </label>
        <label>
          Water Activity (aw)
          <input name="aw" type="number" step="0.001" value={formData.aw} onChange={onChange} />
        </label>
        <label>
          Salt %
          <input name="salt_percent" type="number" step="0.01" value={formData.salt_percent} onChange={onChange} />
        </label>
        <label>
          Sugar %
          <input name="sugar_percent" type="number" step="0.01" value={formData.sugar_percent} onChange={onChange} />
        </label>
        <label>
          Fat %
          <input name="fat_percent" type="number" step="0.01" value={formData.fat_percent} onChange={onChange} />
        </label>
        <label>
          Preservative Enabled
          <select name="preservative_flag" value={String(formData.preservative_flag)} onChange={onChange}>
            <option value="false">No</option>
            <option value="true">Yes</option>
          </select>
        </label>
        <label>
          Preservative Type
          <select name="preservative_type" value={formData.preservative_type} onChange={onChange}>
            {OPTIONS.preservative.map(({ value, label }) => (
              <option key={value} value={value}>
                {label}
              </option>
            ))}
          </select>
        </label>
        <label>
          Acidulant
          <select name="acidulant_type" value={formData.acidulant_type} onChange={onChange}>
            {OPTIONS.acidulant.map(({ value, label }) => (
              <option key={value} value={value}>
                {label}
              </option>
            ))}
          </select>
        </label>
        <label>
          Packaging
          <select name="packaging_type" value={formData.packaging_type} onChange={onChange}>
            {OPTIONS.packaging.map(({ value, label }) => (
              <option key={value} value={value}>
                {label}
              </option>
            ))}
          </select>
        </label>
        <label>
          Oxygen Condition
          <select name="oxygen_condition" value={formData.oxygen_condition} onChange={onChange}>
            {OPTIONS.oxygen.map(({ value, label }) => (
              <option key={value} value={value}>
                {label}
              </option>
            ))}
          </select>
        </label>
        <label>
          Storage Temperature (°C)
          <input
            name="storage_temperature_c"
            type="number"
            step="0.1"
            value={formData.storage_temperature_c}
            onChange={onChange}
          />
        </label>
        <label>
          Inoculation Type
          <select name="inoculation_type" value={formData.inoculation_type} onChange={onChange}>
            {OPTIONS.inoculation.map(({ value, label }) => (
              <option key={value} value={value}>
                {label}
              </option>
            ))}
          </select>
        </label>
        <label>
          Initial Inoculum (log CFU/g)
          <input
            name="initial_inoculum_log_cfu_g"
            type="number"
            step="0.01"
            value={formData.initial_inoculum_log_cfu_g}
            onChange={onChange}
          />
        </label>
        <label>
          Target Shelf Life (days)
          <input name="target_shelf_life_days" type="number" value={formData.target_shelf_life_days} onChange={onChange} />
        </label>
        <label>
          Curve Mode
          <select name="curve_mode" value={formData.curve_mode} onChange={onChange}>
            {OPTIONS.curveMode.map(({ value, label }) => (
              <option key={value} value={value}>
                {label}
              </option>
            ))}
          </select>
        </label>
      </div>
      <button className="primary-button" type="submit" disabled={loading}>
        {loading ? "Running simulation..." : "Run Shelf-Life Simulation"}
      </button>
    </form>
  );
}
