"use client"; import { useConfiguratorStore, type Finish, type GlassColor, type Handle, type FrameSize } from "@/lib/store"; import { glassPatternOptions, type GlassPattern } from "@/lib/glass-patterns"; import { Check } from "lucide-react"; // ============================================ // OPTIONS DATA // ============================================ const finishOptions: Array<{ value: Finish; label: string; description: string; swatch: string; }> = [ { value: "zwart", label: "Mat Zwart", description: "Klassiek en tijdloos", swatch: "#1A1A1A" }, { value: "brons", label: "Brons", description: "Warm en industrieel", swatch: "#8B6F47" }, { value: "grijs", label: "Antraciet", description: "Modern en neutraal", swatch: "#525252" }, { value: "goud", label: "Goud", description: "Luxe en opvallend", swatch: "#B8860B" }, { value: "beige", label: "Beige", description: "Zacht en natuurlijk", swatch: "#C8B88A" }, { value: "ral", label: "RAL Kleur", description: "Op maat, +EUR 200", swatch: "#4A6741" }, ]; const glassColorOptions: Array<{ value: GlassColor; label: string; description: string; swatch: string; }> = [ { value: "helder", label: "Helder", description: "Maximale transparantie", swatch: "#dbeafe" }, { value: "grijs", label: "Rookglas", description: "Getint grijs glas", swatch: "#4B5563" }, { value: "brons", label: "Bronsglas", description: "Warm getint glas", swatch: "#92764A" }, { value: "mat-blank", label: "Mat Blank", description: "Zacht diffuus licht", swatch: "#e2e2e2" }, { value: "mat-brons", label: "Mat Brons", description: "Warm en gedempd", swatch: "#A0845C" }, { value: "mat-zwart", label: "Mat Zwart", description: "Privacy glas", swatch: "#2D2D2D" }, ]; const handleOptions: Array<{ value: Handle; label: string; description: string; }> = [ { value: "beugelgreep", label: "Beugelgreep", description: "Verticale staaf met montageblokken" }, { value: "hoekgreep", label: "Hoekgreep", description: "L-vormige minimalistisch design" }, { value: "maangreep", label: "Maangreep", description: "Gebogen half-maanvormige greep" }, { value: "ovaalgreep", label: "Ovaalgreep", description: "Moderne ovale trekgreep" }, { value: "klink", label: "Deurklink", description: "Klassieke deurklink met hendel" }, { value: "u-greep", label: "U-Greep", description: "Eenvoudige rechte staaf" }, { value: "geen", label: "Geen greep", description: "Voor vaste panelen" }, ]; const frameSizeOptions: Array<{ value: FrameSize; label: string; description: string; }> = [ { value: 20, label: "Smal (20mm)", description: "Minimalistisch profiel" }, { value: 30, label: "Standaard (30mm)", description: "Populairste keuze" }, { value: 40, label: "Robuust (40mm)", description: "Industrieel karakter" }, ]; // ============================================ // SHARED SELECTION COMPONENTS // ============================================ function SelectionButton({ selected, onClick, children, }: { selected: boolean; onClick: () => void; children: React.ReactNode; }) { return ( ); } // ============================================ // MAIN COMPONENT // ============================================ export function StepOptions() { const { finish, handle, glassPattern, glassColor, frameSize, setFinish, setHandle, setGlassPattern, setGlassColor, setFrameSize, } = useConfiguratorStore(); return (
{/* Finish Selection */}

Afwerking

Kies de kleur en afwerking van het staal.

{finishOptions.map((option) => { const selected = finish === option.value; return ( ); })}
{/* Glass Color Selection */}

Glaskleur

Kies het type en de kleur van het glas.

{glassColorOptions.map((option) => { const selected = glassColor === option.value; return ( ); })}
{/* Frame Size Selection */}

Profielbreedte

Kies de breedte van het stalen profiel.

{frameSizeOptions.map((option) => { const selected = frameSize === option.value; return ( ); })}
{/* Glass Pattern Selection */}

Glaspatroon

Kies het decoratieve patroon voor de glaspanelen.

{glassPatternOptions.map((option) => { const selected = glassPattern === option.value; return ( setGlassPattern(option.value)} >

{option.label}

{option.description}

); })}
{/* Handle Selection */}

Greep

Selecteer het type handgreep.

{handleOptions.map((option) => { const selected = handle === option.value; return ( setHandle(option.value)} >

{option.label}

{option.description}

); })}
); }