'use client'; import { useTranslations } from 'next-intl'; import { useState, useTransition } from 'react'; import { Button } from '@/components/ui/button'; import { saveTodayCheckIn, type DailyCheckInRow } from './actions'; export function DailyCheckIn({ initial }: { initial: DailyCheckInRow | null }) { const t = useTranslations('Tracking'); const [energy, setEnergy] = useState(initial?.energy ?? 5); const [sleep, setSleep] = useState(initial?.sleep ?? 5); const [hunger, setHunger] = useState(initial?.hunger ?? 5); const [mood, setMood] = useState(initial?.mood ?? 5); const [pending, startTransition] = useTransition(); const [saved, setSaved] = useState(initial != null); function save(): void { startTransition(async () => { const result = await saveTodayCheckIn({ energy, sleep, hunger, mood }); if (result.ok) { setSaved(true); window.setTimeout(() => setSaved(false), 2500); } }); } return (

{t('checkInEyebrow')}

{t('checkInTitle')}

{initial ? ( {t('checkInAlreadyDone')} ) : null}
{saved && !pending ? ( {t('checkInSaved')} ) : null}
); } function Slider({ label, value, onChange, }: { label: string; value: number; onChange: (n: number) => void; }) { return (

{label}

{value}/10

onChange(Number(e.target.value))} className="mt-2 w-full cursor-pointer accent-current" />
); }