'use client'; import { useState, useCallback } from 'react'; import { Card, CardContent, CardHeader, CardTitle, CardDescription } from '@/components/ui/card'; import { Label } from '@/components/ui/label'; import { Slider } from '@/components/ui/slider'; import { Textarea } from '@/components/ui/textarea'; import { Button } from '@/components/ui/button'; import { cn } from '@/lib/utils'; import { type LifeDomainScore, type LifeDomain, type Priority, LIFE_DOMAIN_META, LIFE_DOMAINS, createDefaultLifeDomainScores, getScoreColor, } from '@/lib/types/leefgebieden'; interface DomainFormRowProps { score: LifeDomainScore; onChange: (score: LifeDomainScore) => void; expanded?: boolean; onToggleExpand?: () => void; } const SCORE_LABELS: Record = { 1: 'Zeer laag', 2: 'Laag', 3: 'Gemiddeld', 4: 'Goed', 5: 'Uitstekend', }; const PRIORITY_OPTIONS: { value: Priority; label: string; color: string }[] = [ { value: 'laag', label: 'Laag', color: 'bg-gray-200 text-gray-700' }, { value: 'middel', label: 'Middel', color: 'bg-blue-100 text-blue-700' }, { value: 'hoog', label: 'Hoog', color: 'bg-orange-100 text-orange-700' }, ]; /** * Single domain row in the form */ function DomainFormRow({ score, onChange, expanded = false, onToggleExpand, }: DomainFormRowProps) { const meta = LIFE_DOMAIN_META[score.domain]; const handleBaselineChange = (values: number[]) => { onChange({ ...score, baseline: values[0], current: values[0] }); }; const handleTargetChange = (values: number[]) => { onChange({ ...score, target: values[0] }); }; const handlePriorityChange = (priority: Priority) => { onChange({ ...score, priority }); }; const handleNotesChange = (notes: string) => { onChange({ ...score, notes }); }; return (
{/* Header Row */}
{meta.emoji}

{meta.label}

{meta.description}

{score.baseline} {score.target}
{SCORE_LABELS[score.baseline]}
{/* Expanded Content */} {expanded && (
{/* Baseline Score Slider */}
{score.baseline}
Zeer laag Uitstekend
{/* Target Score Slider */}
{score.target}
Zeer laag Uitstekend
{/* Priority Selection */}
{PRIORITY_OPTIONS.map((option) => ( ))}
{/* Notes */}