← back to Sdcc Awards

cypressaward/frontend/app/register-organization/page.tsx

322 lines

'use client'

import { useState } from 'react'
import { Card } from '@/components/ui/card'
import { Button } from '@/components/ui/button'
import { CheckCircle, Building, FileText, Users, DollarSign } from 'lucide-react'

export default function RegisterOrganizationPage() {
  const [formData, setFormData] = useState({
    orgName: '',
    ein: '',
    address: '',
    city: '',
    state: '',
    zip: '',
    website: '',
    contactName: '',
    contactEmail: '',
    contactPhone: '',
    missionStatement: '',
    focusAreas: [],
    annualBudget: '',
    cypresExperience: ''
  })

  const focusAreaOptions = [
    'Consumer Protection',
    'Privacy & Data Security',
    'Environmental Protection',
    'Healthcare Access',
    'Education & Student Rights',
    'Civil Rights & Liberties',
    'Workers Rights',
    'Financial Literacy',
    'Legal Aid Services',
    'Technology & Innovation'
  ]

  const handleSubmit = (e: React.FormEvent) => {
    e.preventDefault()
    // Handle form submission
    alert('Registration submitted! We will review your application and contact you within 3-5 business days.')
  }

  return (
    <div className="min-h-screen bg-gray-50 py-12">
      <div className="max-w-4xl mx-auto px-4">
        <div className="text-center mb-8">
          <h1 className="text-4xl font-bold mb-4">Register Your Organization</h1>
          <p className="text-xl text-gray-600">
            Join our network of qualified nonprofits eligible for cy pres awards
          </p>
        </div>

        {/* Benefits Section */}
        <div className="grid md:grid-cols-2 gap-6 mb-12">
          <Card className="p-6">
            <Building className="h-8 w-8 text-blue-600 mb-3" />
            <h3 className="font-bold text-lg mb-2">Why Register?</h3>
            <ul className="space-y-2 text-sm text-gray-600">
              <li className="flex items-start">
                <CheckCircle className="h-4 w-4 text-green-500 mr-2 mt-0.5" />
                Access to cy pres funding opportunities
              </li>
              <li className="flex items-start">
                <CheckCircle className="h-4 w-4 text-green-500 mr-2 mt-0.5" />
                Direct notifications about relevant settlements
              </li>
              <li className="flex items-start">
                <CheckCircle className="h-4 w-4 text-green-500 mr-2 mt-0.5" />
                Visibility to law firms and courts
              </li>
              <li className="flex items-start">
                <CheckCircle className="h-4 w-4 text-green-500 mr-2 mt-0.5" />
                Simplified application process
              </li>
            </ul>
          </Card>

          <Card className="p-6">
            <FileText className="h-8 w-8 text-green-600 mb-3" />
            <h3 className="font-bold text-lg mb-2">Eligibility Requirements</h3>
            <ul className="space-y-2 text-sm text-gray-600">
              <li className="flex items-start">
                <CheckCircle className="h-4 w-4 text-green-500 mr-2 mt-0.5" />
                501(c)(3) tax-exempt status
              </li>
              <li className="flex items-start">
                <CheckCircle className="h-4 w-4 text-green-500 mr-2 mt-0.5" />
                Mission aligned with class action remedies
              </li>
              <li className="flex items-start">
                <CheckCircle className="h-4 w-4 text-green-500 mr-2 mt-0.5" />
                Established track record (2+ years)
              </li>
              <li className="flex items-start">
                <CheckCircle className="h-4 w-4 text-green-500 mr-2 mt-0.5" />
                Financial transparency and reporting
              </li>
            </ul>
          </Card>
        </div>

        {/* Registration Form */}
        <Card className="p-8">
          <h2 className="text-2xl font-bold mb-6">Organization Registration Form</h2>
          
          <form onSubmit={handleSubmit} className="space-y-6">
            {/* Organization Information */}
            <div>
              <h3 className="font-semibold text-lg mb-4 flex items-center">
                <Building className="h-5 w-5 mr-2" />
                Organization Information
              </h3>
              <div className="grid md:grid-cols-2 gap-4">
                <div>
                  <label className="block text-sm font-medium mb-2">Organization Name *</label>
                  <input
                    type="text"
                    required
                    className="w-full p-2 border rounded-md"
                    value={formData.orgName}
                    onChange={(e) => setFormData({...formData, orgName: e.target.value})}
                  />
                </div>
                <div>
                  <label className="block text-sm font-medium mb-2">EIN (Tax ID) *</label>
                  <input
                    type="text"
                    required
                    placeholder="XX-XXXXXXX"
                    className="w-full p-2 border rounded-md"
                    value={formData.ein}
                    onChange={(e) => setFormData({...formData, ein: e.target.value})}
                  />
                </div>
                <div>
                  <label className="block text-sm font-medium mb-2">Website</label>
                  <input
                    type="url"
                    className="w-full p-2 border rounded-md"
                    value={formData.website}
                    onChange={(e) => setFormData({...formData, website: e.target.value})}
                  />
                </div>
                <div>
                  <label className="block text-sm font-medium mb-2">Annual Budget</label>
                  <select 
                    className="w-full p-2 border rounded-md"
                    value={formData.annualBudget}
                    onChange={(e) => setFormData({...formData, annualBudget: e.target.value})}
                  >
                    <option value="">Select range</option>
                    <option value="<500k">Less than $500,000</option>
                    <option value="500k-1m">$500,000 - $1 million</option>
                    <option value="1m-5m">$1 million - $5 million</option>
                    <option value="5m-10m">$5 million - $10 million</option>
                    <option value=">10m">More than $10 million</option>
                  </select>
                </div>
              </div>
            </div>

            {/* Address */}
            <div>
              <h3 className="font-semibold text-lg mb-4">Address</h3>
              <div className="space-y-4">
                <input
                  type="text"
                  placeholder="Street Address"
                  className="w-full p-2 border rounded-md"
                  value={formData.address}
                  onChange={(e) => setFormData({...formData, address: e.target.value})}
                />
                <div className="grid grid-cols-3 gap-4">
                  <input
                    type="text"
                    placeholder="City"
                    className="w-full p-2 border rounded-md"
                    value={formData.city}
                    onChange={(e) => setFormData({...formData, city: e.target.value})}
                  />
                  <input
                    type="text"
                    placeholder="State"
                    className="w-full p-2 border rounded-md"
                    value={formData.state}
                    onChange={(e) => setFormData({...formData, state: e.target.value})}
                  />
                  <input
                    type="text"
                    placeholder="ZIP Code"
                    className="w-full p-2 border rounded-md"
                    value={formData.zip}
                    onChange={(e) => setFormData({...formData, zip: e.target.value})}
                  />
                </div>
              </div>
            </div>

            {/* Contact Information */}
            <div>
              <h3 className="font-semibold text-lg mb-4 flex items-center">
                <Users className="h-5 w-5 mr-2" />
                Primary Contact
              </h3>
              <div className="grid md:grid-cols-3 gap-4">
                <div>
                  <label className="block text-sm font-medium mb-2">Full Name *</label>
                  <input
                    type="text"
                    required
                    className="w-full p-2 border rounded-md"
                    value={formData.contactName}
                    onChange={(e) => setFormData({...formData, contactName: e.target.value})}
                  />
                </div>
                <div>
                  <label className="block text-sm font-medium mb-2">Email *</label>
                  <input
                    type="email"
                    required
                    className="w-full p-2 border rounded-md"
                    value={formData.contactEmail}
                    onChange={(e) => setFormData({...formData, contactEmail: e.target.value})}
                  />
                </div>
                <div>
                  <label className="block text-sm font-medium mb-2">Phone *</label>
                  <input
                    type="tel"
                    required
                    className="w-full p-2 border rounded-md"
                    value={formData.contactPhone}
                    onChange={(e) => setFormData({...formData, contactPhone: e.target.value})}
                  />
                </div>
              </div>
            </div>

            {/* Mission & Focus */}
            <div>
              <h3 className="font-semibold text-lg mb-4">Mission & Focus Areas</h3>
              <div className="space-y-4">
                <div>
                  <label className="block text-sm font-medium mb-2">Mission Statement *</label>
                  <textarea
                    required
                    rows={4}
                    className="w-full p-2 border rounded-md"
                    value={formData.missionStatement}
                    onChange={(e) => setFormData({...formData, missionStatement: e.target.value})}
                    placeholder="Describe your organization's mission and primary activities..."
                  />
                </div>
                
                <div>
                  <label className="block text-sm font-medium mb-2">Focus Areas (select all that apply)</label>
                  <div className="grid md:grid-cols-2 gap-2">
                    {focusAreaOptions.map(area => (
                      <label key={area} className="flex items-center space-x-2">
                        <input
                          type="checkbox"
                          value={area}
                          onChange={(e) => {
                            if (e.target.checked) {
                              setFormData({...formData, focusAreas: [...formData.focusAreas, area]})
                            } else {
                              setFormData({...formData, focusAreas: formData.focusAreas.filter(a => a !== area)})
                            }
                          }}
                        />
                        <span className="text-sm">{area}</span>
                      </label>
                    ))}
                  </div>
                </div>

                <div>
                  <label className="block text-sm font-medium mb-2">Previous Cy Pres Experience</label>
                  <textarea
                    rows={3}
                    className="w-full p-2 border rounded-md"
                    value={formData.cypresExperience}
                    onChange={(e) => setFormData({...formData, cypresExperience: e.target.value})}
                    placeholder="Have you received cy pres awards before? If yes, please describe..."
                  />
                </div>
              </div>
            </div>

            {/* Submit */}
            <div className="flex justify-between items-center pt-6 border-t">
              <p className="text-sm text-gray-600">
                * Required fields
              </p>
              <Button type="submit" className="px-8 py-3">
                Submit Registration
              </Button>
            </div>
          </form>
        </Card>

        {/* Additional Information */}
        <div className="mt-8 text-center text-sm text-gray-600">
          <p>
            By registering, you agree to our{' '}
            <a href="/terms" className="text-blue-600 hover:underline">Terms of Service</a>
            {' '}and{' '}
            <a href="/privacy" className="text-blue-600 hover:underline">Privacy Policy</a>
          </p>
          <p className="mt-2">
            Need help? Contact us at{' '}
            <a href="mailto:support@cypresawards.org" className="text-blue-600 hover:underline">
              support@cypresawards.org
            </a>
          </p>
        </div>
      </div>
    </div>
  )
}