File size: 1,995 Bytes
bcce4a5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import React from 'react';
import { MapPin, CheckCircle } from 'lucide-react';

interface Props {
  formData: { zip_code: string };
  onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
  isValidatingZip: boolean;
  zipError: string;
  userProfile: { city?: string; county?: string; state?: string };
}

const LocationSection: React.FC<Props> = ({ formData, onChange, isValidatingZip, zipError, userProfile }) => (
  <div className="bg-white rounded-2xl shadow-lg p-6 border border-gray-100">
    <div className="flex items-center space-x-3 mb-4">
      <MapPin className="w-5 h-5 text-blue-500" />
      <h3 className="text-lg font-semibold text-gray-900">Location</h3>
    </div>
    <div className="space-y-4">
      <div>
        <label className="block text-sm font-medium text-gray-700 mb-2">
          ZIP Code
        </label>
        <input
          type="text"
          name="zip_code"
          value={formData.zip_code}
          onChange={onChange}
          placeholder="Enter your 5-digit ZIP code"
          className="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-colors"
          maxLength={5}
        />
        {isValidatingZip && (
          <p className="text-sm text-blue-600 mt-1">Validating ZIP code...</p>
        )}
        {zipError && (
          <p className="text-sm text-red-600 mt-1">{zipError}</p>
        )}
      </div>
      {userProfile.city && (
        <div className="bg-green-50 border border-green-200 rounded-lg p-4">
          <div className="flex items-center space-x-2">
            <CheckCircle className="w-5 h-5 text-green-500" />
            <span className="font-medium text-green-800">Location Verified</span>
          </div>
          <p className="text-sm text-green-700 mt-1">
            {userProfile.county} County, {userProfile.city}, {userProfile.state}
          </p>
        </div>
      )}
    </div>
  </div>
);

export default LocationSection;