+ {/* Door Type Selection */}
+
+
Kies uw deurtype
+
+ Selecteer het type stalen deur dat u wilt configureren.
+
-
- {productTypes.map((type) => {
- const selected = formData.productType === type;
+
+ {doorTypes.map((type) => {
+ const selected = doorType === type.value;
- return (
-
- );
- })}
+ return (
+
+ );
+ })}
+
+
+ {/* Grid Type Selection */}
+
+
Verdeling
+
+ Kies het aantal horizontale vlakken.
+
+
+
+ {gridTypes.map((type) => {
+ const selected = gridType === type.value;
+
+ return (
+
+ );
+ })}
+
+
+
+ {/* Continue Button */}
+
);
}
diff --git a/lib/store.ts b/lib/store.ts
new file mode 100644
index 0000000..eafd9ab
--- /dev/null
+++ b/lib/store.ts
@@ -0,0 +1,36 @@
+import { create } from 'zustand';
+
+export type DoorType = 'taats' | 'scharnier' | 'paneel';
+export type GridType = '3-vlak' | '4-vlak' | 'geen';
+export type Finish = 'zwart' | 'brons' | 'grijs';
+export type Handle = 'u-greep' | 'klink' | 'geen';
+
+interface ConfiguratorState {
+ doorType: DoorType;
+ gridType: GridType;
+ finish: Finish;
+ handle: Handle;
+ width: number;
+ height: number;
+
+ setDoorType: (type: DoorType) => void;
+ setGridType: (type: GridType) => void;
+ setFinish: (finish: Finish) => void;
+ setHandle: (handle: Handle) => void;
+ setDimensions: (width: number, height: number) => void;
+}
+
+export const useConfiguratorStore = create
((set) => ({
+ doorType: 'taats',
+ gridType: '3-vlak',
+ finish: 'zwart',
+ handle: 'u-greep',
+ width: 1000,
+ height: 2400,
+
+ setDoorType: (doorType) => set({ doorType }),
+ setGridType: (gridType) => set({ gridType }),
+ setFinish: (finish) => set({ finish }),
+ setHandle: (handle) => set({ handle }),
+ setDimensions: (width, height) => set({ width, height }),
+}));
diff --git a/package-lock.json b/package-lock.json
index 56dbb9a..2a4ece6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -18,7 +18,8 @@
"react-dom": "19.2.3",
"react-hook-form": "^7.71.1",
"tailwind-merge": "^3.4.0",
- "zod": "^4.3.6"
+ "zod": "^4.3.6",
+ "zustand": "^5.0.11"
},
"devDependencies": {
"@tailwindcss/postcss": "^4",
@@ -12243,6 +12244,35 @@
"peerDependencies": {
"zod": "^3.25.0 || ^4.0.0"
}
+ },
+ "node_modules/zustand": {
+ "version": "5.0.11",
+ "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.11.tgz",
+ "integrity": "sha512-fdZY+dk7zn/vbWNCYmzZULHRrss0jx5pPFiOuMZ/5HJN6Yv3u+1Wswy/4MpZEkEGhtNH+pwxZB8OKgUBPzYAGg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20.0"
+ },
+ "peerDependencies": {
+ "@types/react": ">=18.0.0",
+ "immer": ">=9.0.6",
+ "react": ">=18.0.0",
+ "use-sync-external-store": ">=1.2.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "immer": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "use-sync-external-store": {
+ "optional": true
+ }
+ }
}
}
}
diff --git a/package.json b/package.json
index 85f93bd..09a191d 100644
--- a/package.json
+++ b/package.json
@@ -19,7 +19,8 @@
"react-dom": "19.2.3",
"react-hook-form": "^7.71.1",
"tailwind-merge": "^3.4.0",
- "zod": "^4.3.6"
+ "zod": "^4.3.6",
+ "zustand": "^5.0.11"
},
"devDependencies": {
"@tailwindcss/postcss": "^4",