diff --git a/.cursor/mcp.json b/.cursor/mcp.json index f11c9e6..61837fc 100644 --- a/.cursor/mcp.json +++ b/.cursor/mcp.json @@ -1,18 +1,18 @@ { - "mcpServers": { - "context7": { - "command": "npx", - "args": ["-y", "@upstash/context7-mcp"] - }, - "cloudflare-docs": { - "url": "https://docs.mcp.cloudflare.com/sse" - }, - "shadcn": { - "command": "npx", - "args": ["-y", "shadcn@latest", "mcp"] - }, - "better-auth": { - "url": "https://mcp.inkeep.com/better-auth/mcp" - } - } + "mcpServers": { + "context7": { + "command": "npx", + "args": ["-y", "@upstash/context7-mcp"] + }, + "cloudflare-docs": { + "url": "https://docs.mcp.cloudflare.com/sse" + }, + "shadcn": { + "command": "npx", + "args": ["-y", "shadcn@latest", "mcp"] + }, + "better-auth": { + "url": "https://mcp.inkeep.com/better-auth/mcp" + } + } } diff --git a/.mcp.json b/.mcp.json index 14798a8..c4c07b1 100644 --- a/.mcp.json +++ b/.mcp.json @@ -1,20 +1,20 @@ { - "mcpServers": { - "context7": { - "command": "npx", - "args": ["-y", "@upstash/context7-mcp"] - }, - "cloudflare-docs": { - "type": "sse", - "url": "https://docs.mcp.cloudflare.com/sse" - }, - "shadcn": { - "command": "npx", - "args": ["-y", "shadcn@latest", "mcp"] - }, - "better-auth": { - "type": "http", - "url": "https://mcp.inkeep.com/better-auth/mcp" - } - } + "mcpServers": { + "context7": { + "command": "npx", + "args": ["-y", "@upstash/context7-mcp"] + }, + "cloudflare-docs": { + "type": "sse", + "url": "https://docs.mcp.cloudflare.com/sse" + }, + "shadcn": { + "command": "npx", + "args": ["-y", "shadcn@latest", "mcp"] + }, + "better-auth": { + "type": "http", + "url": "https://mcp.inkeep.com/better-auth/mcp" + } + } } diff --git a/apps/web/components.json b/apps/web/components.json index d94dbff..af7481b 100644 --- a/apps/web/components.json +++ b/apps/web/components.json @@ -1,24 +1,24 @@ { - "$schema": "https://ui.shadcn.com/schema.json", - "style": "base-lyra", - "rsc": false, - "tsx": true, - "tailwind": { - "config": "", - "css": "src/index.css", - "baseColor": "neutral", - "cssVariables": true, - "prefix": "" - }, - "iconLibrary": "lucide", - "aliases": { - "components": "@/components", - "utils": "@/lib/utils", - "ui": "@/components/ui", - "lib": "@/lib", - "hooks": "@/hooks" - }, - "menuColor": "default", - "menuAccent": "subtle", - "registries": {} + "$schema": "https://ui.shadcn.com/schema.json", + "style": "base-lyra", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/index.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "iconLibrary": "lucide", + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "menuColor": "default", + "menuAccent": "subtle", + "registries": {} } diff --git a/apps/web/package.json b/apps/web/package.json index 6fcbc60..c248634 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,62 +1,66 @@ { - "name": "web", - "private": true, - "type": "module", - "scripts": { - "build": "vite build", - "serve": "vite preview", - "dev:bare": "vite dev" - }, - "dependencies": { - "@base-ui/react": "^1.0.0", - "@kk/api": "workspace:*", - "@kk/auth": "workspace:*", - "@kk/env": "workspace:*", - "@libsql/client": "catalog:", - "@orpc/client": "catalog:", - "@orpc/openapi": "catalog:", - "@orpc/server": "catalog:", - "@orpc/tanstack-query": "^1.12.2", - "@orpc/zod": "catalog:", - "@tailwindcss/vite": "^4.1.8", - "@tanstack/react-form": "^1.28.0", - "@tanstack/react-query": "^5.80.6", - "@tanstack/react-router": "^1.141.1", - "@tanstack/react-router-with-query": "^1.130.17", - "@tanstack/react-start": "^1.141.1", - "@tanstack/router-plugin": "^1.141.1", - "better-auth": "catalog:", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "dotenv": "catalog:", - "libsql": "catalog:", - "lucide-react": "^0.525.0", - "next-themes": "^0.4.6", - "react": "19.2.3", - "react-dom": "19.2.3", - "shadcn": "^3.6.2", - "sonner": "^2.0.3", - "tailwind-merge": "^3.3.1", - "tailwindcss": "^4.1.3", - "tw-animate-css": "^1.2.5", - "vite-tsconfig-paths": "^5.1.4", - "zod": "catalog:" - }, - "devDependencies": { - "@cloudflare/vite-plugin": "^1.17.1", - "@kk/config": "workspace:*", - "@tanstack/react-query-devtools": "^5.91.1", - "@tanstack/react-router-devtools": "^1.141.1", - "@testing-library/dom": "^10.4.0", - "@testing-library/react": "^16.2.0", - "@types/react": "19.2.7", - "@types/react-dom": "19.2.3", - "@vitejs/plugin-react": "^5.0.4", - "alchemy": "catalog:", - "jsdom": "^26.0.0", - "typescript": "catalog:", - "vite": "^7.0.2", - "web-vitals": "^5.0.3", - "wrangler": "^4.54.0" - } + "name": "web", + "private": true, + "type": "module", + "scripts": { + "build": "vite build", + "serve": "vite preview", + "dev:bare": "vite dev" + }, + "dependencies": { + "@base-ui/react": "^1.0.0", + "@kk/api": "workspace:*", + "@kk/auth": "workspace:*", + "@kk/env": "workspace:*", + "@libsql/client": "catalog:", + "@orpc/client": "catalog:", + "@orpc/openapi": "catalog:", + "@orpc/server": "catalog:", + "@orpc/tanstack-query": "^1.12.2", + "@orpc/zod": "catalog:", + "@react-three/drei": "^10.7.7", + "@react-three/fiber": "^9.5.0", + "@tailwindcss/vite": "^4.1.8", + "@tanstack/react-form": "^1.28.0", + "@tanstack/react-query": "^5.80.6", + "@tanstack/react-router": "^1.141.1", + "@tanstack/react-router-with-query": "^1.130.17", + "@tanstack/react-start": "^1.141.1", + "@tanstack/router-plugin": "^1.141.1", + "better-auth": "catalog:", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "dotenv": "catalog:", + "libsql": "catalog:", + "lucide-react": "^0.525.0", + "next-themes": "^0.4.6", + "react": "19.2.3", + "react-dom": "19.2.3", + "shadcn": "^3.6.2", + "sonner": "^2.0.3", + "tailwind-merge": "^3.3.1", + "tailwindcss": "^4.1.3", + "three": "^0.183.1", + "tw-animate-css": "^1.2.5", + "vite-tsconfig-paths": "^5.1.4", + "zod": "catalog:" + }, + "devDependencies": { + "@cloudflare/vite-plugin": "^1.17.1", + "@kk/config": "workspace:*", + "@tanstack/react-query-devtools": "^5.91.1", + "@tanstack/react-router-devtools": "^1.141.1", + "@testing-library/dom": "^10.4.0", + "@testing-library/react": "^16.2.0", + "@types/react": "19.2.7", + "@types/react-dom": "19.2.3", + "@types/three": "^0.183.1", + "@vitejs/plugin-react": "^5.0.4", + "alchemy": "catalog:", + "jsdom": "^26.0.0", + "typescript": "catalog:", + "vite": "^7.0.2", + "web-vitals": "^5.0.3", + "wrangler": "^4.54.0" + } } diff --git a/apps/web/public/assets/mic.png b/apps/web/public/assets/mic.png new file mode 100644 index 0000000..6ab79da Binary files /dev/null and b/apps/web/public/assets/mic.png differ diff --git a/apps/web/src/components/homepage/ArtForms.tsx b/apps/web/src/components/homepage/ArtForms.tsx new file mode 100644 index 0000000..c9c87b5 --- /dev/null +++ b/apps/web/src/components/homepage/ArtForms.tsx @@ -0,0 +1,115 @@ +import { Camera, Drama, Mic2, Music, Palette, PenTool } from "lucide-react"; + +const artForms = [ + { + icon: Music, + title: "Muziek", + description: + "Van akoestische singer-songwriter sets tot volledige band optredens. Ontdek je sound en deel je muziek met een warm publiek.", + trajectory: "Muziek Traject", + color: "#d82560", + }, + { + icon: Drama, + title: "Theater", + description: + "Monologen, sketches, improvisatie of mime. Het podium is van jou — breng karakters tot leven en vertel verhalen die raken.", + trajectory: "Theater Traject", + color: "#52979b", + }, + { + icon: Palette, + title: "Beeldende Kunst", + description: + "Live schilderen, illustraties maken, of mixed media performances. Toon je creatieve proces terwijl het publiek toekijkt.", + trajectory: "Beeldende Kunst Traject", + color: "#d09035", + }, + { + icon: PenTool, + title: "Woordkunst", + description: + "Poëzie, spoken word, storytelling of rap. Laat je woorden dansen en raak het publiek met de kracht van taal.", + trajectory: "Woordkunst Traject", + color: "#214e51", + }, + { + icon: Camera, + title: "Dans", + description: + "Contemporary, ballet, hiphop of freestyle. Beweging vertelt verhalen die woorden niet kunnen vangen.", + trajectory: "Dans Traject", + color: "#d82560", + }, + { + icon: Mic2, + title: "Comedy", + description: + "Stand-up, improv of cabaret. Maak het publiek aan het lachen met je unieke kijk op de wereld.", + trajectory: "Comedy Traject", + color: "#52979b", + }, +]; + +export default function ArtForms() { + return ( +
+
+

+ Kies Je Traject +

+

+ Kunstenkamp biedt trajecten aan voor verschillende kunstvormen. Ontdek + waar jouw passie ligt en ontwikkel je talent onder begeleiding van + ervaringsdeskundigen. +

+ +
+ {artForms.map((art) => { + const IconComponent = art.icon; + return ( +
+ {/* Color bar at top */} +
+ +
+
+ +
+

+ {art.title} +

+
+ +

+ {art.description} +

+ +
+ + {art.trajectory} + + + → + +
+
+ ); + })} +
+
+
+ ); +} diff --git a/apps/web/src/components/homepage/EventRegistrationForm.tsx b/apps/web/src/components/homepage/EventRegistrationForm.tsx index c0c8eb7..475e08c 100644 --- a/apps/web/src/components/homepage/EventRegistrationForm.tsx +++ b/apps/web/src/components/homepage/EventRegistrationForm.tsx @@ -4,11 +4,12 @@ import { useState } from "react"; export default function EventRegistrationForm() { const [formData, setFormData] = useState({ - name: "", + firstName: "", + lastName: "", email: "", phone: "", - company: "", - dietaryRequirements: "", + artForm: "", + experience: "", }); const handleSubmit = (e: React.FormEvent) => { @@ -27,85 +28,156 @@ export default function EventRegistrationForm() { return (
-

Register for the Event

+
+

+ Schrijf je nu in! +

+

+ Doet dit jouw creatieve geest borellen? Vul nog even dit formulier in +

-
-
- - -
+ +
+ {/* Row 1: First Name + Last Name */} +
+
+ + +
-
- - -
+
+ + +
+
-
- - -
+ {/* Row 2: Email + Phone */} +
+
+ + +
-
- - -
+
+ + +
+
-
- -