'use client'; import { useState, useEffect } from 'react'; import { Dialog, DialogTitle, DialogContent, DialogActions, Button, TextField, Box, Alert, Typography, } from '@mui/material'; import { JoinFamilyData } from '@/lib/api/families'; interface JoinFamilyDialogProps { open: boolean; onClose: () => void; onSubmit: (data: JoinFamilyData) => Promise; isLoading?: boolean; } export function JoinFamilyDialog({ open, onClose, onSubmit, isLoading = false, }: JoinFamilyDialogProps) { const [shareCode, setShareCode] = useState(''); const [error, setError] = useState(''); useEffect(() => { if (open) { setShareCode(''); setError(''); } }, [open]); const handleSubmit = async () => { setError(''); // Validation if (!shareCode.trim()) { setError('Please enter a share code'); return; } try { await onSubmit({ shareCode: shareCode.trim() }); onClose(); } catch (err: any) { setError(err.message || 'Failed to join family'); } }; return ( Join a Family {error && ( setError('')}> {error} )} Enter the share code provided by the family administrator to join their family. setShareCode(e.target.value)} fullWidth required autoFocus disabled={isLoading} placeholder="Enter family share code" helperText="Ask a family member for their share code" /> ); }