import React, { useState } from 'react'; import { Home, MapPin, DollarSign, FileText, CreditCard, Upload, CheckCircle } from 'lucide-react'; export default function PropertyListingForm() { const [currentStep, setCurrentStep] = useState(1); const [formData, setFormData] = useState({ // Personal Information full_name: '', email: '', phone: '', password_hash: '', // Property Details property_name: '', property_type: '', address: '', city: '', country: '', description: '', // Pricing & Capacity price_per_night: '', max_guests: 1, bedrooms: 1, bathrooms: 1, // Amenities & Rules amenities: [], house_rules: '', cancellation_policy: '', // Availability availability: {}, // Payout Information payout_account_name: '', payout_bank: '', payout_account_number: '', payout_frequency: 'weekly', // Files photos: [], verification_files: [], // Additional notes: '' }); const propertyTypes = [ 'Apartment', 'House', 'Villa', 'Condo', 'Townhouse', 'Cottage', 'Cabin', 'Bungalow', 'Studio', 'Loft' ]; const amenitiesList = [ 'WiFi', 'Air Conditioning', 'Heating', 'Kitchen', 'Washer', 'Dryer', 'TV', 'Parking', 'Pool', 'Hot Tub', 'Gym', 'Workspace', 'Fireplace', 'Garden', 'Balcony' ]; const cancellationPolicies = [ 'Flexible', 'Moderate', 'Strict', 'Super Strict' ]; const steps = [ { number: 1, title: 'Personal Info', icon: Home }, { number: 2, title: 'Property Details', icon: MapPin }, { number: 3, title: 'Pricing & Capacity', icon: DollarSign }, { number: 4, title: 'Amenities & Rules', icon: FileText }, { number: 5, title: 'Payout Info', icon: CreditCard }, { number: 6, title: 'Photos & Docs', icon: Upload }, ]; const handleInputChange = (e) => { const { name, value, type, checked } = e.target; if (type === 'checkbox') { if (name === 'amenities') { setFormData(prev => ({ ...prev, amenities: checked ? [...prev.amenities, value] : prev.amenities.filter(a => a !== value) })); } } else { setFormData(prev => ({ ...prev, [name]: value })); } }; const handleFileChange = (e, fieldName) => { const files = Array.from(e.target.files); setFormData(prev => ({ ...prev, [fieldName]: files.map(f => f.name) })); }; const nextStep = () => { if (currentStep < 6) setCurrentStep(currentStep + 1); }; const prevStep = () => { if (currentStep > 1) setCurrentStep(currentStep - 1); }; const handleSubmit = (e) => { e.preventDefault(); console.log('Form submitted:', formData); alert('Property listing submitted successfully! Our team will review it shortly.'); }; const renderStepContent = () => { switch(currentStep) { case 1: return (

Personal Information

); case 2: return (

Property Details