website refactor
This commit is contained in:
@@ -13,6 +13,7 @@ import { SponsorHero } from '@/components/sponsors/SponsorHero';
|
||||
import { SponsorWorkflowMockup } from '@/components/sponsors/SponsorWorkflowMockup';
|
||||
import { SponsorBenefitCard } from '@/components/sponsors/SponsorBenefitCard';
|
||||
import { siteConfig } from '@/lib/siteConfig';
|
||||
import { SponsorSignupCommandModel } from '@/lib/command-models/sponsors/SponsorSignupCommandModel';
|
||||
import {
|
||||
Building2,
|
||||
Mail,
|
||||
@@ -127,10 +128,8 @@ const PLATFORM_STATS = [
|
||||
export default function SponsorSignupPage() {
|
||||
const shouldReduceMotion = useReducedMotion();
|
||||
const [mode, setMode] = useState<'landing' | 'signup' | 'login'>('landing');
|
||||
const [form, setForm] = useState(() => new SponsorSignupCommandModel());
|
||||
const [formData, setFormData] = useState({
|
||||
companyName: '',
|
||||
contactEmail: '',
|
||||
websiteUrl: '',
|
||||
logoFile: null as File | null,
|
||||
password: '',
|
||||
confirmPassword: '',
|
||||
@@ -144,18 +143,9 @@ export default function SponsorSignupPage() {
|
||||
const handleSubmit = async (e: React.FormEvent) => {
|
||||
e.preventDefault();
|
||||
|
||||
const newErrors: Record<string, string> = {};
|
||||
const validationErrors = form.validate();
|
||||
const newErrors: Record<string, string> = { ...validationErrors };
|
||||
|
||||
if (!formData.companyName.trim()) {
|
||||
newErrors.companyName = 'Company name required';
|
||||
}
|
||||
|
||||
if (!formData.contactEmail.trim()) {
|
||||
newErrors.contactEmail = 'Contact email required';
|
||||
} else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(formData.contactEmail)) {
|
||||
newErrors.contactEmail = 'Invalid email format';
|
||||
}
|
||||
|
||||
if (mode === 'signup') {
|
||||
if (!formData.password.trim()) {
|
||||
newErrors.password = 'Password required';
|
||||
@@ -184,18 +174,19 @@ export default function SponsorSignupPage() {
|
||||
setSubmitting(true);
|
||||
|
||||
try {
|
||||
const command = form.toCommand();
|
||||
// Note: Business logic for auth should be moved to a mutation
|
||||
// This is a temporary implementation for contract compliance
|
||||
const response = await fetch('/api/auth/signup', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
email: formData.contactEmail,
|
||||
email: command.contactEmail,
|
||||
password: formData.password,
|
||||
displayName: formData.companyName,
|
||||
displayName: command.companyName,
|
||||
sponsorData: {
|
||||
companyName: formData.companyName,
|
||||
websiteUrl: formData.websiteUrl,
|
||||
companyName: command.companyName,
|
||||
websiteUrl: command.websiteUrl,
|
||||
interests: formData.interests,
|
||||
},
|
||||
}),
|
||||
@@ -210,7 +201,7 @@ export default function SponsorSignupPage() {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
email: formData.contactEmail,
|
||||
email: command.contactEmail,
|
||||
password: formData.password,
|
||||
}),
|
||||
});
|
||||
@@ -468,8 +459,11 @@ export default function SponsorSignupPage() {
|
||||
</Text>
|
||||
<Input
|
||||
type="email"
|
||||
value={formData.contactEmail}
|
||||
onChange={(e) => setFormData({ ...formData, contactEmail: e.target.value })}
|
||||
value={form.contactEmail}
|
||||
onChange={(e) => {
|
||||
form.contactEmail = e.target.value;
|
||||
setForm(new SponsorSignupCommandModel(form.toCommand()));
|
||||
}}
|
||||
placeholder="sponsor@company.com"
|
||||
variant={errors.contactEmail ? 'error' : 'default'}
|
||||
errorMessage={errors.contactEmail}
|
||||
@@ -566,8 +560,11 @@ export default function SponsorSignupPage() {
|
||||
</Text>
|
||||
<Input
|
||||
type="text"
|
||||
value={formData.companyName}
|
||||
onChange={(e) => setFormData({ ...formData, companyName: e.target.value })}
|
||||
value={form.companyName}
|
||||
onChange={(e) => {
|
||||
form.companyName = e.target.value;
|
||||
setForm(new SponsorSignupCommandModel(form.toCommand()));
|
||||
}}
|
||||
placeholder="Your company name"
|
||||
variant={errors.companyName ? 'error' : 'default'}
|
||||
errorMessage={errors.companyName}
|
||||
@@ -583,8 +580,11 @@ export default function SponsorSignupPage() {
|
||||
</Text>
|
||||
<Input
|
||||
type="email"
|
||||
value={formData.contactEmail}
|
||||
onChange={(e) => setFormData({ ...formData, contactEmail: e.target.value })}
|
||||
value={form.contactEmail}
|
||||
onChange={(e) => {
|
||||
form.contactEmail = e.target.value;
|
||||
setForm(new SponsorSignupCommandModel(form.toCommand()));
|
||||
}}
|
||||
placeholder="sponsor@company.com"
|
||||
variant={errors.contactEmail ? 'error' : 'default'}
|
||||
errorMessage={errors.contactEmail}
|
||||
@@ -600,9 +600,14 @@ export default function SponsorSignupPage() {
|
||||
</Text>
|
||||
<Input
|
||||
type="url"
|
||||
value={formData.websiteUrl}
|
||||
onChange={(e) => setFormData({ ...formData, websiteUrl: e.target.value })}
|
||||
value={form.websiteUrl}
|
||||
onChange={(e) => {
|
||||
form.websiteUrl = e.target.value;
|
||||
setForm(new SponsorSignupCommandModel(form.toCommand()));
|
||||
}}
|
||||
placeholder="https://company.com"
|
||||
variant={errors.websiteUrl ? 'error' : 'default'}
|
||||
errorMessage={errors.websiteUrl}
|
||||
/>
|
||||
</Box>
|
||||
</Box>
|
||||
@@ -782,4 +787,4 @@ export default function SponsorSignupPage() {
|
||||
</Box>
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user