import { AuthCard } from '@/components/auth/AuthCard'; import { AuthFooterLinks } from '@/components/auth/AuthFooterLinks'; import { AuthForm } from '@/components/auth/AuthForm'; import { checkPasswordStrength } from '@/lib/utils/validation'; import { SignupViewData } from '@/lib/view-data/SignupViewData'; import { Button } from '@/ui/Button'; import { Grid } from '@/ui/Grid'; import { Group } from '@/ui/Group'; import { Icon } from '@/ui/Icon'; import { Input } from '@/ui/Input'; import { Link } from '@/ui/Link'; import { LoadingSpinner } from '@/ui/LoadingSpinner'; import { PasswordField } from '@/ui/PasswordField'; import { ProgressBar } from '@/ui/ProgressBar'; import { Text } from '@/ui/Text'; import { AlertCircle, Check, Mail, User, UserPlus, X } from 'lucide-react'; import React from 'react'; interface SignupTemplateProps { viewData: SignupViewData; formActions: { handleChange: (e: React.ChangeEvent) => void; handleSubmit: (e: React.FormEvent) => Promise; setShowPassword: (show: boolean) => void; setShowConfirmPassword: (show: boolean) => void; }; uiState: { showPassword: boolean; showConfirmPassword: boolean; }; mutationState: { isPending: boolean; error: string | null; }; } export function SignupTemplate({ viewData, formActions, uiState, mutationState }: SignupTemplateProps) { const isSubmitting = mutationState.isPending; const passwordValue = viewData.formState.fields.password.value || ''; const passwordStrength = checkPasswordStrength(passwordValue); const passwordRequirements = [ { met: passwordValue.length >= 8, label: '8+ characters' }, { met: /[a-z]/.test(passwordValue) && /[A-Z]/.test(passwordValue), label: 'Case mix' }, { met: /\d/.test(passwordValue), label: 'Number' }, { met: /[^a-zA-Z\d]/.test(passwordValue), label: 'Special' }, ]; const getStrengthIntent = () => { if (passwordStrength.score <= 2) return 'critical'; if (passwordStrength.score <= 4) return 'warning'; return 'success'; }; return ( Personal Information } /> } /> Note: Your name cannot be changed after signup. } /> Security formActions.setShowPassword(!uiState.showPassword)} /> {passwordValue && ( {passwordStrength.label} {passwordRequirements.map((req, index) => ( {req.label} ))} )} formActions.setShowConfirmPassword(!uiState.showConfirmPassword)} /> {mutationState.error && ( {mutationState.error} )} Already have an account?{' '} Sign in By creating an account, you agree to our{' '} Terms {' '}and{' '} Privacy ); }