From 027cb8a2fce0f6c6ccb24183aeccb157dad474d3 Mon Sep 17 00:00:00 2001 From: THIS ONE IS A LITTLE BIT TRICKY KRUB Date: Wed, 12 Feb 2025 14:54:39 +0700 Subject: [PATCH] feat: add Forgot Password modal and UI components --- frontend/app/signin/forgot-password-modal.tsx | 54 +++ frontend/app/signin/page.tsx | 51 ++- frontend/components/ui/button.tsx | 57 +++ frontend/components/ui/dialog.tsx | 122 ++++++ frontend/components/ui/label.tsx | 26 ++ frontend/package.json | 3 + frontend/pnpm-lock.yaml | 396 +++++++++++++++++- frontend/public/google-logo.png | Bin 0 -> 47408 bytes 8 files changed, 698 insertions(+), 11 deletions(-) create mode 100644 frontend/app/signin/forgot-password-modal.tsx create mode 100644 frontend/components/ui/button.tsx create mode 100644 frontend/components/ui/dialog.tsx create mode 100644 frontend/components/ui/label.tsx create mode 100644 frontend/public/google-logo.png diff --git a/frontend/app/signin/forgot-password-modal.tsx b/frontend/app/signin/forgot-password-modal.tsx new file mode 100644 index 0000000..5275b91 --- /dev/null +++ b/frontend/app/signin/forgot-password-modal.tsx @@ -0,0 +1,54 @@ +import { + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "@/components/ui/dialog"; +import { Input } from "@/components/ui/input"; +import { Button } from "@/components/ui/button"; +import Link from "next/link"; +import { Label } from "@/components/ui/label"; + +export default function ForgotPasswordModal() { + return ( +
+ + + + + + + What's your email? + + Please verify your email for us. Once you do, we'll send + instructions to reset your password + + +
+
+ + +
+
+ + + + + +
+
+
+ ); +} diff --git a/frontend/app/signin/page.tsx b/frontend/app/signin/page.tsx index 53ca80c..70d9d03 100644 --- a/frontend/app/signin/page.tsx +++ b/frontend/app/signin/page.tsx @@ -1,4 +1,9 @@ import { Input } from "@/components/ui/input"; +import { Button } from "@/components/ui/button"; +import ForgotPasswordModal from "./forgot-password-modal"; + +import Link from "next/link"; +import Image from "next/image"; export default function Signin() { return ( @@ -9,21 +14,51 @@ export default function Signin() { {/* login box */}
-

Login

+

Log In

Don't have an account? - Sign up + + Sign up +
-
-

- EMAIL * -

-
- + {/* OAUTH */} +
+ {/* Google */} +
+ Google Logo
+ +
+
+

+ EMAIL * +

+
+ +
+
+
+

+ PASSWORD * +

+
+ +
+
+ +
+
+ +
diff --git a/frontend/components/ui/button.tsx b/frontend/components/ui/button.tsx new file mode 100644 index 0000000..65d4fcd --- /dev/null +++ b/frontend/components/ui/button.tsx @@ -0,0 +1,57 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", + { + variants: { + variant: { + default: + "bg-primary text-primary-foreground shadow hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", + outline: + "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-9 px-4 py-2", + sm: "h-8 rounded-md px-3 text-xs", + lg: "h-10 rounded-md px-8", + icon: "h-9 w-9", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button" + return ( + + ) + } +) +Button.displayName = "Button" + +export { Button, buttonVariants } diff --git a/frontend/components/ui/dialog.tsx b/frontend/components/ui/dialog.tsx new file mode 100644 index 0000000..1647513 --- /dev/null +++ b/frontend/components/ui/dialog.tsx @@ -0,0 +1,122 @@ +"use client" + +import * as React from "react" +import * as DialogPrimitive from "@radix-ui/react-dialog" +import { X } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Dialog = DialogPrimitive.Root + +const DialogTrigger = DialogPrimitive.Trigger + +const DialogPortal = DialogPrimitive.Portal + +const DialogClose = DialogPrimitive.Close + +const DialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)) +DialogContent.displayName = DialogPrimitive.Content.displayName + +const DialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +DialogHeader.displayName = "DialogHeader" + +const DialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +DialogFooter.displayName = "DialogFooter" + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogTitle.displayName = DialogPrimitive.Title.displayName + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogDescription.displayName = DialogPrimitive.Description.displayName + +export { + Dialog, + DialogPortal, + DialogOverlay, + DialogTrigger, + DialogClose, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +} diff --git a/frontend/components/ui/label.tsx b/frontend/components/ui/label.tsx new file mode 100644 index 0000000..5341821 --- /dev/null +++ b/frontend/components/ui/label.tsx @@ -0,0 +1,26 @@ +"use client" + +import * as React from "react" +import * as LabelPrimitive from "@radix-ui/react-label" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const labelVariants = cva( + "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" +) + +const Label = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & + VariantProps +>(({ className, ...props }, ref) => ( + +)) +Label.displayName = LabelPrimitive.Root.displayName + +export { Label } diff --git a/frontend/package.json b/frontend/package.json index 9ac9920..bef971d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -9,6 +9,9 @@ "lint": "next lint" }, "dependencies": { + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-label": "^2.1.2", + "@radix-ui/react-slot": "^1.1.2", "@tailwindcss/typography": "^0.5.16", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index f866b41..88882cb 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -5,6 +5,15 @@ settings: excludeLinksFromLockfile: false dependencies: + '@radix-ui/react-dialog': + specifier: ^1.1.6 + version: 1.1.6(@types/react-dom@19.0.3)(@types/react@19.0.8)(react-dom@19.0.0)(react@19.0.0) + '@radix-ui/react-label': + specifier: ^2.1.2 + version: 2.1.2(@types/react-dom@19.0.3)(@types/react@19.0.8)(react-dom@19.0.0)(react@19.0.0) + '@radix-ui/react-slot': + specifier: ^1.1.2 + version: 1.1.2(@types/react@19.0.8)(react@19.0.0) '@tailwindcss/typography': specifier: ^0.5.16 version: 0.5.16(tailwindcss@3.4.17) @@ -506,6 +515,292 @@ packages: requiresBuild: true optional: true + /@radix-ui/primitive@1.1.1: + resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==} + dev: false + + /@radix-ui/react-compose-refs@1.1.1(@types/react@19.0.8)(react@19.0.0): + resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.0.8 + react: 19.0.0 + dev: false + + /@radix-ui/react-context@1.1.1(@types/react@19.0.8)(react@19.0.0): + resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.0.8 + react: 19.0.0 + dev: false + + /@radix-ui/react-dialog@1.1.6(@types/react-dom@19.0.3)(@types/react@19.0.8)(react-dom@19.0.0)(react@19.0.0): + resolution: {integrity: sha512-/IVhJV5AceX620DUJ4uYVMymzsipdKBzo3edo+omeskCKGm9FRHM0ebIdbPnlQVJqyuHbuBltQUOG2mOTq2IYw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@19.0.3)(@types/react@19.0.8)(react-dom@19.0.0)(react@19.0.0) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@19.0.3)(@types/react@19.0.8)(react-dom@19.0.0)(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-portal': 1.1.4(@types/react-dom@19.0.3)(@types/react@19.0.8)(react-dom@19.0.0)(react@19.0.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3)(@types/react@19.0.8)(react-dom@19.0.0)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.3)(@types/react@19.0.8)(react-dom@19.0.0)(react@19.0.0) + '@radix-ui/react-slot': 1.1.2(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + aria-hidden: 1.2.4 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-remove-scroll: 2.6.3(@types/react@19.0.8)(react@19.0.0) + dev: false + + /@radix-ui/react-dismissable-layer@1.1.5(@types/react-dom@19.0.3)(@types/react@19.0.8)(react-dom@19.0.0)(react@19.0.0): + resolution: {integrity: sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.3)(@types/react@19.0.8)(react-dom@19.0.0)(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + dev: false + + /@radix-ui/react-focus-guards@1.1.1(@types/react@19.0.8)(react@19.0.0): + resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.0.8 + react: 19.0.0 + dev: false + + /@radix-ui/react-focus-scope@1.1.2(@types/react-dom@19.0.3)(@types/react@19.0.8)(react-dom@19.0.0)(react@19.0.0): + resolution: {integrity: sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.3)(@types/react@19.0.8)(react-dom@19.0.0)(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + dev: false + + /@radix-ui/react-id@1.1.0(@types/react@19.0.8)(react@19.0.0): + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@types/react': 19.0.8 + react: 19.0.0 + dev: false + + /@radix-ui/react-label@2.1.2(@types/react-dom@19.0.3)(@types/react@19.0.8)(react-dom@19.0.0)(react@19.0.0): + resolution: {integrity: sha512-zo1uGMTaNlHehDyFQcDZXRJhUPDuukcnHz0/jnrup0JA6qL+AFpAnty+7VKa9esuU5xTblAZzTGYJKSKaBxBhw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.3)(@types/react@19.0.8)(react-dom@19.0.0)(react@19.0.0) + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + dev: false + + /@radix-ui/react-portal@1.1.4(@types/react-dom@19.0.3)(@types/react@19.0.8)(react-dom@19.0.0)(react@19.0.0): + resolution: {integrity: sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@19.0.3)(@types/react@19.0.8)(react-dom@19.0.0)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + dev: false + + /@radix-ui/react-presence@1.1.2(@types/react-dom@19.0.3)(@types/react@19.0.8)(react-dom@19.0.0)(react@19.0.0): + resolution: {integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + dev: false + + /@radix-ui/react-primitive@2.0.2(@types/react-dom@19.0.3)(@types/react@19.0.8)(react-dom@19.0.0)(react@19.0.0): + resolution: {integrity: sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-slot': 1.1.2(@types/react@19.0.8)(react@19.0.0) + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + dev: false + + /@radix-ui/react-slot@1.1.2(@types/react@19.0.8)(react@19.0.0): + resolution: {integrity: sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@types/react': 19.0.8 + react: 19.0.0 + dev: false + + /@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.0.8)(react@19.0.0): + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.0.8 + react: 19.0.0 + dev: false + + /@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.0.8)(react@19.0.0): + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@types/react': 19.0.8 + react: 19.0.0 + dev: false + + /@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.0.8)(react@19.0.0): + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@types/react': 19.0.8 + react: 19.0.0 + dev: false + + /@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.0.8)(react@19.0.0): + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.0.8 + react: 19.0.0 + dev: false + /@rtsao/scc@1.1.0: resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} dev: true @@ -560,13 +855,11 @@ packages: '@types/react': ^19.0.0 dependencies: '@types/react': 19.0.8 - dev: true /@types/react@19.0.8: resolution: {integrity: sha512-9P/o1IGdfmQxrujGbIMDyYaaCykhLKc0NGCtYcECNUr9UAaDe4gwvV9bR6tvd5Br1SG0j+PBpbKr2UYY8CwqSw==} dependencies: csstype: 3.1.3 - dev: true /@typescript-eslint/eslint-plugin@8.24.0(@typescript-eslint/parser@8.24.0)(eslint@9.20.1)(typescript@5.7.3): resolution: {integrity: sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ==} @@ -742,6 +1035,13 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true + /aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + dependencies: + tslib: 2.8.1 + dev: false + /aria-query@5.3.2: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} @@ -1020,7 +1320,6 @@ packages: /csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - dev: true /damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} @@ -1105,6 +1404,10 @@ packages: dev: false optional: true + /detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + dev: false + /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -1688,6 +1991,11 @@ packages: math-intrinsics: 1.1.0 dev: true + /get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + dev: false + /get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} @@ -2532,6 +2840,57 @@ packages: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: true + /react-remove-scroll-bar@2.3.8(@types/react@19.0.8)(react@19.0.0): + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.0.8 + react: 19.0.0 + react-style-singleton: 2.2.3(@types/react@19.0.8)(react@19.0.0) + tslib: 2.8.1 + dev: false + + /react-remove-scroll@2.6.3(@types/react@19.0.8)(react@19.0.0): + resolution: {integrity: sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.0.8 + react: 19.0.0 + react-remove-scroll-bar: 2.3.8(@types/react@19.0.8)(react@19.0.0) + react-style-singleton: 2.2.3(@types/react@19.0.8)(react@19.0.0) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.0.8)(react@19.0.0) + use-sidecar: 1.1.3(@types/react@19.0.8)(react@19.0.0) + dev: false + + /react-style-singleton@2.2.3(@types/react@19.0.8)(react@19.0.0): + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.0.8 + get-nonce: 1.0.1 + react: 19.0.0 + tslib: 2.8.1 + dev: false + /react@19.0.0: resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} engines: {node: '>=0.10.0'} @@ -3102,6 +3461,37 @@ packages: punycode: 2.3.1 dev: true + /use-callback-ref@1.3.3(@types/react@19.0.8)(react@19.0.0): + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.0.8 + react: 19.0.0 + tslib: 2.8.1 + dev: false + + /use-sidecar@1.1.3(@types/react@19.0.8)(react@19.0.0): + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.0.8 + detect-node-es: 1.1.0 + react: 19.0.0 + tslib: 2.8.1 + dev: false + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} diff --git a/frontend/public/google-logo.png b/frontend/public/google-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..da0976870e323dae26b0b7077b6472354b4149d9 GIT binary patch literal 47408 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