From 45f3531a2a75b6f9db4cee3a780b1dddec463ad7 Mon Sep 17 00:00:00 2001 From: Dominik Stahl Date: Wed, 25 Jun 2025 20:13:17 +0200 Subject: [PATCH 01/23] fix(deps): revert nextjs to latest stable version --- package.json | 2 +- yarn.lock | 111 +++++++++++++++++++++++++++++++-------------------- 2 files changed, 69 insertions(+), 44 deletions(-) diff --git a/package.json b/package.json index 158f342..71bc8ea 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-react": "^0.515.0", - "next": "15.4.0-canary.96", + "next": "15.3.4", "next-auth": "^5.0.0-beta.25", "next-themes": "^0.4.6", "react": "^19.0.0", diff --git a/yarn.lock b/yarn.lock index 31cf7fd..fdbfaa1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -975,10 +975,10 @@ __metadata: languageName: node linkType: hard -"@next/env@npm:15.4.0-canary.96": - version: 15.4.0-canary.96 - resolution: "@next/env@npm:15.4.0-canary.96" - checksum: 10c0/069432deddf2c4c34dff181507ad40bf0717371de4c20c3eeb523942a492d9e6d16b10f470a5097ea5bb0841b55c284b75131180be163d39a15058a1d09346f5 +"@next/env@npm:15.3.4": + version: 15.3.4 + resolution: "@next/env@npm:15.3.4" + checksum: 10c0/43d37896e1422c9c353d9ded1d1b01545aa30b2bb125bcc40ffd4474dbc6e0ba603a77fc2a598616964a925379bb5a39eb1a242f0c49fc933e39e099fb2f7d75 languageName: node linkType: hard @@ -991,58 +991,58 @@ __metadata: languageName: node linkType: hard -"@next/swc-darwin-arm64@npm:15.4.0-canary.96": - version: 15.4.0-canary.96 - resolution: "@next/swc-darwin-arm64@npm:15.4.0-canary.96" +"@next/swc-darwin-arm64@npm:15.3.4": + version: 15.3.4 + resolution: "@next/swc-darwin-arm64@npm:15.3.4" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@next/swc-darwin-x64@npm:15.4.0-canary.96": - version: 15.4.0-canary.96 - resolution: "@next/swc-darwin-x64@npm:15.4.0-canary.96" +"@next/swc-darwin-x64@npm:15.3.4": + version: 15.3.4 + resolution: "@next/swc-darwin-x64@npm:15.3.4" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@next/swc-linux-arm64-gnu@npm:15.4.0-canary.96": - version: 15.4.0-canary.96 - resolution: "@next/swc-linux-arm64-gnu@npm:15.4.0-canary.96" +"@next/swc-linux-arm64-gnu@npm:15.3.4": + version: 15.3.4 + resolution: "@next/swc-linux-arm64-gnu@npm:15.3.4" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-arm64-musl@npm:15.4.0-canary.96": - version: 15.4.0-canary.96 - resolution: "@next/swc-linux-arm64-musl@npm:15.4.0-canary.96" +"@next/swc-linux-arm64-musl@npm:15.3.4": + version: 15.3.4 + resolution: "@next/swc-linux-arm64-musl@npm:15.3.4" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@next/swc-linux-x64-gnu@npm:15.4.0-canary.96": - version: 15.4.0-canary.96 - resolution: "@next/swc-linux-x64-gnu@npm:15.4.0-canary.96" +"@next/swc-linux-x64-gnu@npm:15.3.4": + version: 15.3.4 + resolution: "@next/swc-linux-x64-gnu@npm:15.3.4" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-x64-musl@npm:15.4.0-canary.96": - version: 15.4.0-canary.96 - resolution: "@next/swc-linux-x64-musl@npm:15.4.0-canary.96" +"@next/swc-linux-x64-musl@npm:15.3.4": + version: 15.3.4 + resolution: "@next/swc-linux-x64-musl@npm:15.3.4" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@next/swc-win32-arm64-msvc@npm:15.4.0-canary.96": - version: 15.4.0-canary.96 - resolution: "@next/swc-win32-arm64-msvc@npm:15.4.0-canary.96" +"@next/swc-win32-arm64-msvc@npm:15.3.4": + version: 15.3.4 + resolution: "@next/swc-win32-arm64-msvc@npm:15.3.4" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@next/swc-win32-x64-msvc@npm:15.4.0-canary.96": - version: 15.4.0-canary.96 - resolution: "@next/swc-win32-x64-msvc@npm:15.4.0-canary.96" +"@next/swc-win32-x64-msvc@npm:15.3.4": + version: 15.3.4 + resolution: "@next/swc-win32-x64-msvc@npm:15.3.4" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -2961,6 +2961,13 @@ __metadata: languageName: node linkType: hard +"@swc/counter@npm:0.1.3": + version: 0.1.3 + resolution: "@swc/counter@npm:0.1.3" + checksum: 10c0/8424f60f6bf8694cfd2a9bca45845bce29f26105cda8cf19cdb9fd3e78dc6338699e4db77a89ae449260bafa1cc6bec307e81e7fb96dbf7dcfce0eea55151356 + languageName: node + linkType: hard + "@swc/helpers@npm:0.5.15": version: 0.5.15 resolution: "@swc/helpers@npm:0.5.15" @@ -4192,6 +4199,15 @@ __metadata: languageName: node linkType: hard +"busboy@npm:1.6.0": + version: 1.6.0 + resolution: "busboy@npm:1.6.0" + dependencies: + streamsearch: "npm:^1.1.0" + checksum: 10c0/fa7e836a2b82699b6e074393428b91ae579d4f9e21f5ac468e1b459a244341d722d2d22d10920cdd849743dbece6dca11d72de939fb75a7448825cf2babfba1f + languageName: node + linkType: hard + "cac@npm:^6.7.14": version: 6.7.14 resolution: "cac@npm:6.7.14" @@ -7392,7 +7408,7 @@ __metadata: eslint-config-next: "npm:15.3.4" eslint-config-prettier: "npm:10.1.5" lucide-react: "npm:^0.515.0" - next: "npm:15.4.0-canary.96" + next: "npm:15.3.4" next-auth: "npm:^5.0.0-beta.25" next-themes: "npm:^0.4.6" orval: "npm:7.10.0" @@ -7675,27 +7691,29 @@ __metadata: languageName: node linkType: hard -"next@npm:15.4.0-canary.96": - version: 15.4.0-canary.96 - resolution: "next@npm:15.4.0-canary.96" +"next@npm:15.3.4": + version: 15.3.4 + resolution: "next@npm:15.3.4" dependencies: - "@next/env": "npm:15.4.0-canary.96" - "@next/swc-darwin-arm64": "npm:15.4.0-canary.96" - "@next/swc-darwin-x64": "npm:15.4.0-canary.96" - "@next/swc-linux-arm64-gnu": "npm:15.4.0-canary.96" - "@next/swc-linux-arm64-musl": "npm:15.4.0-canary.96" - "@next/swc-linux-x64-gnu": "npm:15.4.0-canary.96" - "@next/swc-linux-x64-musl": "npm:15.4.0-canary.96" - "@next/swc-win32-arm64-msvc": "npm:15.4.0-canary.96" - "@next/swc-win32-x64-msvc": "npm:15.4.0-canary.96" + "@next/env": "npm:15.3.4" + "@next/swc-darwin-arm64": "npm:15.3.4" + "@next/swc-darwin-x64": "npm:15.3.4" + "@next/swc-linux-arm64-gnu": "npm:15.3.4" + "@next/swc-linux-arm64-musl": "npm:15.3.4" + "@next/swc-linux-x64-gnu": "npm:15.3.4" + "@next/swc-linux-x64-musl": "npm:15.3.4" + "@next/swc-win32-arm64-msvc": "npm:15.3.4" + "@next/swc-win32-x64-msvc": "npm:15.3.4" + "@swc/counter": "npm:0.1.3" "@swc/helpers": "npm:0.5.15" + busboy: "npm:1.6.0" caniuse-lite: "npm:^1.0.30001579" postcss: "npm:8.4.31" sharp: "npm:^0.34.1" styled-jsx: "npm:5.1.6" peerDependencies: "@opentelemetry/api": ^1.1.0 - "@playwright/test": ^1.51.1 + "@playwright/test": ^1.41.2 babel-plugin-react-compiler: "*" react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 @@ -7730,7 +7748,7 @@ __metadata: optional: true bin: next: dist/bin/next - checksum: 10c0/b3c3d3ccef2b7e86bfdfbe3d6047dd09232d968c53130a7393cc45bed9410cc27e06bfa8f6c70178c806228c1c279c07b49de24b25c9ce8edba6e01f7a817585 + checksum: 10c0/52d3fba6f53d5d2a339cbde433ab360301e9a0a0d9b95a656bf29ce1af43f02e9cc32571d5d4095bcb8ab7a795207d6e75c64b33fc1f90d21f2f9b157cc9a503 languageName: node linkType: hard @@ -9468,6 +9486,13 @@ __metadata: languageName: node linkType: hard +"streamsearch@npm:^1.1.0": + version: 1.1.0 + resolution: "streamsearch@npm:1.1.0" + checksum: 10c0/fbd9aecc2621364384d157f7e59426f4bfd385e8b424b5aaa79c83a6f5a1c8fd2e4e3289e95de1eb3511cb96bb333d6281a9919fafce760e4edb35b2cd2facab + languageName: node + linkType: hard + "string-argv@npm:^0.3.2": version: 0.3.2 resolution: "string-argv@npm:0.3.2" From 51fe42374d7fbb8a33db7675490d4da66709b3f7 Mon Sep 17 00:00:00 2001 From: Micha Date: Wed, 25 Jun 2025 13:10:27 +0200 Subject: [PATCH 02/23] feat(events): add event creation form components --- package.json | 10 +- src/app/globals.css | 63 +++- src/app/layout.tsx | 21 +- .../default/default-user-icon_dark.svg | 5 + .../default/default-user-icon_light.svg | 5 + .../default/defaultusericon-export.tsx | 2 + src/components/buttons/redirect-button.tsx | 6 +- src/components/custom-ui/labeled-input.tsx | 38 +- .../custom-ui/participant-list-entry.tsx | 28 ++ src/components/forms/event-form.tsx | 344 +++++++++++++++++ src/components/misc/logo.tsx | 4 +- src/components/misc/toast-inner.tsx | 160 ++++++++ src/components/misc/user-search.tsx | 96 +++++ src/components/time-picker.tsx | 86 +++++ src/components/ui/button.tsx | 5 +- src/components/ui/calendar.tsx | 213 +++++++++++ src/components/ui/card.tsx | 2 +- src/components/ui/command.tsx | 184 +++++++++ src/components/ui/dialog.tsx | 143 +++++++ src/components/ui/input.tsx | 45 ++- src/components/ui/label.tsx | 15 +- src/components/ui/popover.tsx | 48 +++ src/components/ui/sonner.tsx | 54 +++ yarn.lock | 352 ++++++++++++++++-- 24 files changed, 1868 insertions(+), 61 deletions(-) create mode 100644 src/assets/usericon/default/default-user-icon_dark.svg create mode 100644 src/assets/usericon/default/default-user-icon_light.svg create mode 100644 src/assets/usericon/default/defaultusericon-export.tsx create mode 100644 src/components/custom-ui/participant-list-entry.tsx create mode 100644 src/components/forms/event-form.tsx create mode 100644 src/components/misc/toast-inner.tsx create mode 100644 src/components/misc/user-search.tsx create mode 100644 src/components/time-picker.tsx create mode 100644 src/components/ui/calendar.tsx create mode 100644 src/components/ui/command.tsx create mode 100644 src/components/ui/dialog.tsx create mode 100644 src/components/ui/popover.tsx create mode 100644 src/components/ui/sonner.tsx diff --git a/package.json b/package.json index 71bc8ea..e18c3c4 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,8 @@ "@radix-ui/react-dropdown-menu": "^2.1.15", "@radix-ui/react-hover-card": "^1.1.13", "@radix-ui/react-label": "^2.1.6", - "@radix-ui/react-scroll-area": "^1.2.8", + "@radix-ui/react-popover": "^1.1.14", + "@radix-ui/react-scroll-area": "^1.2.9", "@radix-ui/react-select": "^2.2.4", "@radix-ui/react-separator": "^1.1.7", "@radix-ui/react-slot": "^1.2.3", @@ -48,13 +49,18 @@ "bcryptjs": "^3.0.2", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", + "cmdk": "^1.1.1", + "date-fns": "^4.1.0", "lucide-react": "^0.515.0", "next": "15.3.4", "next-auth": "^5.0.0-beta.25", + "next-swagger-doc": "^0.4.1", "next-themes": "^0.4.6", "react": "^19.0.0", + "react-day-picker": "^9.7.0", "react-dom": "^19.0.0", "react-hook-form": "^7.56.4", + "sonner": "^2.0.5", "swagger-ui-react": "^5.24.1", "tailwind-merge": "^3.2.0", "zod": "^3.25.60" @@ -80,7 +86,7 @@ "ts-node": "10.9.2", "tsconfig-paths": "4.2.0", "tw-animate-css": "1.3.4", - "typescript": "5.8.3" + "typescript": "^5.8.3" }, "packageManager": "yarn@4.9.2" } diff --git a/src/app/globals.css b/src/app/globals.css index 93a24ce..1707398 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -9,6 +9,7 @@ --font-heading: 'Comfortaa', sans-serif; --font-label: 'Varela Round', sans-serif; --font-button: 'Varela Round', sans-serif; + --font-sans: var(--font-label); --transparent: transparent; @@ -28,7 +29,7 @@ --background: var(--neutral-800); --background-reversed: var(--neutral-000); - --base: var(--neutral-800); + --basecl: var(--neutral-800); --text: var(--neutral-000); --text-alt: var(--neutral-900); --text-input: var(--text); @@ -115,6 +116,62 @@ --sidebar-ring: oklch(0.707 0.022 261.325); } +h1 { + font-family: var(--font-heading); + font-size: 40px; + font-style: normal; + font-weight: 700; + line-height: normal; +} + +h2 { + font-family: var(--font-heading); + font-size: 36px; + font-style: normal; + font-weight: 600; + line-height: normal; +} + +h3 { + font-family: var(--font-heading); + font-size: 32px; + font-style: normal; + font-weight: 600; + line-height: normal; +} + +h4 { + font-family: var(--font-heading); + font-size: 28px; + font-style: normal; + font-weight: 600; + line-height: normal; +} + +h5 { + font-family: var(--font-heading); + font-size: 26px; + font-style: normal; + font-weight: 600; + line-height: normal; +} + +h6 { + font-family: var(--font-heading); + font-size: 20px; + font-style: normal; + font-weight: 600; + line-height: normal; +} + +p { + font-family: var(--font-label); + font-size: 16px; + font-style: normal; + font-weight: 400; + line-height: normal; +} + @font-face { font-family: 'Comfortaa'; font-style: normal; @@ -153,7 +210,7 @@ --color-background: var(--neutral-750); --color-background-reversed: var(--background-reversed); - --color-base: var(--neutral-800); + --color-basecl: var(--neutral-800); --color-text: var(--text); --color-text-alt: var(--text-alt); --color-text-input: var(--text-input); @@ -277,7 +334,7 @@ --background: var(--neutral-750); --background-reversed: var(--neutral-000); - --base: var(--neutral-750); + --basecl: var(--neutral-750); --text: var(--neutral-000); --text-alt: var(--neutral-900); --text-input: var(--text); diff --git a/src/app/layout.tsx b/src/app/layout.tsx index af40867..47cec2d 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -3,6 +3,8 @@ import { ThemeProvider } from '@/components/wrappers/theme-provider'; import type { Metadata } from 'next'; import './globals.css'; import { QueryProvider } from '@/components/wrappers/query-provider'; +import { Toaster } from '@/components/ui/sonner'; +import { SessionProvider } from 'next-auth/react'; export const metadata: Metadata = { title: 'MeetUp', @@ -50,14 +52,17 @@ export default function RootLayout({ - - {children} - + + + {children} + + + ); diff --git a/src/assets/usericon/default/default-user-icon_dark.svg b/src/assets/usericon/default/default-user-icon_dark.svg new file mode 100644 index 0000000..b2a1cfb --- /dev/null +++ b/src/assets/usericon/default/default-user-icon_dark.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/usericon/default/default-user-icon_light.svg b/src/assets/usericon/default/default-user-icon_light.svg new file mode 100644 index 0000000..60ba6d0 --- /dev/null +++ b/src/assets/usericon/default/default-user-icon_light.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/usericon/default/defaultusericon-export.tsx b/src/assets/usericon/default/defaultusericon-export.tsx new file mode 100644 index 0000000..d1b482d --- /dev/null +++ b/src/assets/usericon/default/defaultusericon-export.tsx @@ -0,0 +1,2 @@ +export { default as user_default_dark } from '@/assets/usericon/default/default-user-icon_dark.svg'; +export { default as user_default_light } from '@/assets/usericon/default/default-user-icon_light.svg'; diff --git a/src/components/buttons/redirect-button.tsx b/src/components/buttons/redirect-button.tsx index c4bf997..e67acc1 100644 --- a/src/components/buttons/redirect-button.tsx +++ b/src/components/buttons/redirect-button.tsx @@ -1,16 +1,18 @@ -import { Button } from '../ui/button'; +import { Button } from '@/components/ui/button'; import Link from 'next/link'; export function RedirectButton({ redirectUrl, buttonText, + className, }: { redirectUrl: string; buttonText: string; + className?: string; }) { return ( - + ); } diff --git a/src/components/custom-ui/labeled-input.tsx b/src/components/custom-ui/labeled-input.tsx index ea26e51..4746a31 100644 --- a/src/components/custom-ui/labeled-input.tsx +++ b/src/components/custom-ui/labeled-input.tsx @@ -1,4 +1,4 @@ -import { Input } from '@/components/ui/input'; +import { Input, Textarea } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; export default function LabeledInput({ @@ -7,6 +7,7 @@ export default function LabeledInput({ placeholder, value, name, + variantSize = 'default', autocomplete, error, ...rest @@ -16,22 +17,37 @@ export default function LabeledInput({ placeholder?: string; value?: string; name?: string; + variantSize?: 'default' | 'big' | 'textarea'; autocomplete?: string; error?: string; } & React.InputHTMLAttributes) { return (
- - + {variantSize === 'textarea' ? ( +