"use client"; import { useEffect, useState } from "react"; import { LogoutButton } from "@/components/logout-button"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { Checkbox } from "@/components/ui/checkbox"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { avatarVibeOptions, defaultProfilePreferences, focusTopicOptions, getProfilePreferences, saveProfilePreferences, type ProfilePreferences, } from "@/lib/profile-preferences-storage"; type ProfilePreferencesFormProps = { email?: string | null; }; export function ProfilePreferencesForm({ email }: ProfilePreferencesFormProps) { const [preferences, setPreferences] = useState( defaultProfilePreferences, ); const [isReady, setIsReady] = useState(false); useEffect(() => { setPreferences(getProfilePreferences()); setIsReady(true); }, []); const updatePreferences = (updates: Partial) => { const nextPreferences = { ...preferences, ...updates }; setPreferences(nextPreferences); saveProfilePreferences(nextPreferences); }; const toggleFocusTopic = (topic: string) => { const focusTopics = preferences.focusTopics.includes(topic) ? preferences.focusTopics.filter((item) => item !== topic) : [...preferences.focusTopics, topic]; updatePreferences({ focusTopics }); }; if (!isReady) { return (

Loading profile...

); } return (
Profile information Your account details.
Focus topic preferences Choose the areas you want your pet and daily tasks to focus on. {focusTopicOptions.map((topic) => (
toggleFocusTopic(topic)} />
))}
Avatar preferences Personalize your pet's vibe. {avatarVibeOptions.map((vibe) => ( ))} Notification preferences Control reminders for your daily quiz and habits.
updatePreferences({ dailyReminderEnabled: checked === true }) } />
updatePreferences({ dailyReminderTime: event.target.value }) } />
Account settings Session and onboarding status.
Onboarding Complete
); }