"use client"; import { useRef } from "react"; import { useConfiguratorStore } from "@/lib/store"; import { RoundedBox } from "@react-three/drei"; import * as THREE from "three"; // Steel material configuration const SteelMaterial = ({ color }: { color: string }) => ( ); // Glass material configuration const GlassMaterial = () => ( ); export function Door3D() { const { doorType, gridType, finish, handle, doorLeafWidth, height } = useConfiguratorStore(); const doorRef = useRef(null); // Frame color based on finish const frameColor = ({ zwart: "#1a1a1a", brons: "#8B6F47", grijs: "#525252", goud: "#b8960c", beige: "#c8b88a", ral: "#2a2a2a", } as Record)[finish] ?? "#1a1a1a"; // Convert mm to meters for 3D scene const doorWidth = doorLeafWidth / 1000; // Convert mm to m const doorHeight = height / 1000; // Convert mm to m // Profile dimensions (in meters) const stileWidth = 0.04; // 40mm vertical profiles const stileDepth = 0.04; // 40mm depth const railHeight = 0.02; // 20mm horizontal profiles const railDepth = 0.04; // 40mm depth const glassThickness = 0.008; // 8mm glass const profileRadius = 0.001; // 1mm rounded corners // Calculate positions for grid dividers const getDividerPositions = () => { if (gridType === "3-vlak") { return [-doorHeight / 3, doorHeight / 3]; } else if (gridType === "4-vlak") { return [-doorHeight / 2, 0, doorHeight / 2]; } return []; }; const dividerPositions = getDividerPositions(); return ( {/* LEFT STILE - Vertical profile */} {/* RIGHT STILE - Vertical profile */} {/* TOP RAIL - Horizontal profile */} {/* BOTTOM RAIL - Horizontal profile */} {/* INTERMEDIATE RAILS (Grid dividers) */} {dividerPositions.map((yPos, index) => ( ))} {/* VERTICAL DIVIDER for Paneel */} {doorType === "paneel" && ( )} {/* GLASS PANEL - Sits inside the frame */} {/* HANDLE - U-Greep for Taats */} {doorType === "taats" && handle === "u-greep" && ( )} {/* HANDLE - Klink for Scharnier */} {doorType === "scharnier" && handle === "klink" && ( )} ); }