From edd0a9ccba2fb981f6d0e33e26881a9caa4df490 Mon Sep 17 00:00:00 2001 From: Gib Date: Thu, 3 Jul 2025 17:00:32 -0500 Subject: [PATCH] blah blah --- bun.lockb | Bin 374172 -> 374532 bytes package.json | 8 +- src/app/page.tsx | 2 + .../default/auth/buttons/client/sign-out.tsx | 48 +++++ .../default/auth/buttons/server/sign-out.tsx | 0 .../auth/cards/client/forgot-password.tsx | 177 ++++++++++++++++++ .../default/auth/cards/client/profile.tsx | 4 + .../default/auth/cards/client/sign-in.tsx | 1 - .../auth/forms/profile/avatar-upload.tsx | 0 .../auth/forms/profile/profile-form.tsx | 0 .../forms/profile/reset-password-form.tsx | 0 .../default/forms/submit-button.tsx | 3 +- 12 files changed, 236 insertions(+), 7 deletions(-) create mode 100644 src/components/default/auth/buttons/client/sign-out.tsx create mode 100644 src/components/default/auth/buttons/server/sign-out.tsx create mode 100644 src/components/default/auth/forms/profile/avatar-upload.tsx create mode 100644 src/components/default/auth/forms/profile/profile-form.tsx create mode 100644 src/components/default/auth/forms/profile/reset-password-form.tsx diff --git a/bun.lockb b/bun.lockb index ab5f3b737be88eb436f7a23b0445e19a1132bd22..331110fd4277f407490d44684f7d7cc2b8d99a6c 100755 GIT binary patch delta 55593 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 delta 54985 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 J!**Gx{2wQ>N#Oth diff --git a/package.json b/package.json index 74d8edd..be95821 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "@sentry/nextjs": "^9.34.0", "@supabase-cache-helpers/postgrest-react-query": "^1.13.4", "@supabase/ssr": "^0.6.1", - "@supabase/supabase-js": "^2.50.2", + "@supabase/supabase-js": "^2.50.3", "@t3-oss/env-nextjs": "^0.12.0", "@tanstack/react-query": "^5.81.5", "@tanstack/react-table": "^8.21.3", @@ -75,10 +75,10 @@ "react-icons": "^5.5.0", "react-resizable-panels": "^3.0.3", "recharts": "^3.0.2", - "sonner": "^2.0.5", + "sonner": "^2.0.6", "tailwind-merge": "^3.3.1", "vaul": "^1.1.2", - "zod": "^3.25.67" + "zod": "^3.25.71" }, "devDependencies": { "@eslint/eslintrc": "^3.3.1", @@ -98,7 +98,7 @@ "prettier": "^3.6.2", "prettier-plugin-tailwindcss": "^0.6.13", "tailwindcss": "^4.1.11", - "tw-animate-css": "^1.3.4", + "tw-animate-css": "^1.3.5", "typescript": "^5.8.3", "typescript-eslint": "^8.35.1" }, diff --git a/src/app/page.tsx b/src/app/page.tsx index 6ec30b1..a7dc76a 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,4 +1,5 @@ import { SignInCard } from '@/components/default/auth/cards/client/sign-in'; +import { ForgotPasswordCard } from '@/components/default/auth/cards/client/forgot-password'; import { ThemeToggle } from '@/lib/hooks/context'; export default function HomePage() { @@ -9,6 +10,7 @@ export default function HomePage() { Create T3 App + diff --git a/src/components/default/auth/buttons/client/sign-out.tsx b/src/components/default/auth/buttons/client/sign-out.tsx new file mode 100644 index 0000000..2ee273f --- /dev/null +++ b/src/components/default/auth/buttons/client/sign-out.tsx @@ -0,0 +1,48 @@ +'use client'; +import { SubmitButton, type SubmitButtonProps } from '@/components/default/forms'; +import { useRouter } from 'next/navigation'; +import { useAuth } from '@/lib/hooks/context'; +import { signOut } from '@/lib/queries'; +import { useSupabaseClient } from '@/utils/supabase'; +import { cn } from '@/lib/utils'; + +type SignOutProps = Omit + +export const SignOut = ({ + className, + pendingText = 'Signing out...', + ...props +}: SignOutProps) => { + + const supabase = useSupabaseClient(); + const { loading, refreshUser } = useAuth(); + const router = useRouter(); + + const handleSignOut = async () => { + try { + if (!supabase) throw new Error('Supabase client not found'); + const result = await signOut(supabase); + if (result.error) throw new Error(result.error.message); + await refreshUser(); + router.push('/sign-in'); + } catch (error) { + console.error(error); + } + }; + + return ( + + Sign Out + + ); +}; diff --git a/src/components/default/auth/buttons/server/sign-out.tsx b/src/components/default/auth/buttons/server/sign-out.tsx new file mode 100644 index 0000000..e69de29 diff --git a/src/components/default/auth/cards/client/forgot-password.tsx b/src/components/default/auth/cards/client/forgot-password.tsx index e69de29..5775411 100644 --- a/src/components/default/auth/cards/client/forgot-password.tsx +++ b/src/components/default/auth/cards/client/forgot-password.tsx @@ -0,0 +1,177 @@ +'use client'; +import { z } from 'zod'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { useForm } from 'react-hook-form'; +import { + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, + Input, +} from '@/components/ui'; +import Link from 'next/link'; +import { forgotPassword } from '@/lib/queries'; +import { useAuth } from '@/lib/hooks/context'; +import { useEffect, useState, type ComponentProps } from 'react'; +import { useRouter } from 'next/navigation'; +import { useSupabaseClient } from '@/utils/supabase'; +import { StatusMessage, SubmitButton } from '@/components/default/forms'; +import { cn } from '@/lib/utils'; + +const forgotPasswordFormSchema = z.object({ + email: z.string().email({ + message: 'Please enter a valid email address.' + }), +}); + +type ForgotPasswordCardProps = { + cardClassName?: ComponentProps['className']; + cardProps?: Omit, 'className'>; + cardTitleClassName?: ComponentProps['className']; + cardTitleProps?: Omit, 'className'>; + cardDescriptionClassName?: ComponentProps['className']; + cardDescriptionProps?: Omit, 'className'>; + signUpLinkClassName?: ComponentProps['className']; + signUpLinkProps?: Omit, 'className' | 'href'>; + formClassName?: ComponentProps<'form'>['className']; + formProps?: Omit, 'className' | 'onSubmit'>; + formLabelClassName?: ComponentProps['className']; + formLabelProps?: Omit, 'className'>; + buttonProps?: ComponentProps; +}; + +export const ForgotPasswordCard = ({ + cardClassName, + cardProps, + cardTitleClassName, + cardTitleProps, + cardDescriptionClassName, + cardDescriptionProps, + signUpLinkClassName, + signUpLinkProps, + formClassName, + formProps, + formLabelClassName, + formLabelProps, + buttonProps = { + pendingText: 'Sending Reset Link...', + }, +}: ForgotPasswordCardProps) => { + const router = useRouter(); + const { isAuthenticated, loading, refreshUser } = useAuth(); + const [statusMessage, setStatusMessage] = useState(''); + const supabase = useSupabaseClient(); + + const form = useForm>({ + resolver: zodResolver(forgotPasswordFormSchema), + defaultValues: { + email: '', + }, + }); + + useEffect(() => { + if (isAuthenticated) router.push('/') + }, [isAuthenticated, router]); + + const handleForgotPassword = async (values: z.infer) => { + try { + setStatusMessage(''); + const formData = new FormData(); + formData.append('email', values.email); + if (!supabase) throw new Error('Supabase client not found'); + const result = await forgotPassword(supabase, formData); + if (result.error) throw new Error(result.error.message); + await refreshUser(); + setStatusMessage('Check your email for a link to reset your password.'); + form.reset(); + router.push(''); + } catch (error) { + setStatusMessage( + `Error: ${error instanceof Error ? error.message : 'Could not sign in!'}`, + ); + } + }; + + return ( + + + + Forgot Password + + + Don't have an account?{' '} + + Sign up! + + + + +
+ + ( + + + Email + + + + + + + )} + /> + + Reset Password + + {statusMessage && + (statusMessage.includes('Error') || + statusMessage.includes('error') || + statusMessage.includes('failed') || + statusMessage.includes('invalid') ? ( + + ) : ( + + ))} + + +
+
+ ); +}; diff --git a/src/components/default/auth/cards/client/profile.tsx b/src/components/default/auth/cards/client/profile.tsx index e69de29..c9495b3 100644 --- a/src/components/default/auth/cards/client/profile.tsx +++ b/src/components/default/auth/cards/client/profile.tsx @@ -0,0 +1,4 @@ +'use client'; +import { useAuth } from '@/lib/hooks/context'; +import { useEffect } from 'react'; +import { useRouter } from 'next/navigation'; diff --git a/src/components/default/auth/cards/client/sign-in.tsx b/src/components/default/auth/cards/client/sign-in.tsx index 9569c39..57e0208 100755 --- a/src/components/default/auth/cards/client/sign-in.tsx +++ b/src/components/default/auth/cards/client/sign-in.tsx @@ -1,5 +1,4 @@ 'use client'; - import { z } from 'zod'; import { zodResolver } from '@hookform/resolvers/zod'; import { useForm } from 'react-hook-form'; diff --git a/src/components/default/auth/forms/profile/avatar-upload.tsx b/src/components/default/auth/forms/profile/avatar-upload.tsx new file mode 100644 index 0000000..e69de29 diff --git a/src/components/default/auth/forms/profile/profile-form.tsx b/src/components/default/auth/forms/profile/profile-form.tsx new file mode 100644 index 0000000..e69de29 diff --git a/src/components/default/auth/forms/profile/reset-password-form.tsx b/src/components/default/auth/forms/profile/reset-password-form.tsx new file mode 100644 index 0000000..e69de29 diff --git a/src/components/default/forms/submit-button.tsx b/src/components/default/forms/submit-button.tsx index 94e3d90..8cdd63f 100644 --- a/src/components/default/forms/submit-button.tsx +++ b/src/components/default/forms/submit-button.tsx @@ -7,9 +7,8 @@ import { cn } from '@/lib/utils'; export type SubmitButtonProps = Omit< ComponentProps, - 'type' | 'aria-disabled' | 'className', + 'type' | 'aria-disabled' > & { - className?: ComponentProps['className']; pendingText?: string; pendingTextClassName?: ComponentProps<'p'>['className']; pendingTextProps?: Omit, 'className'>;