From 2a90b6f2b01615232e9deffac71ede176db372c3 Mon Sep 17 00:00:00 2001 From: Zikil Date: Thu, 21 Nov 2024 23:52:26 +0700 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=20=D0=BE=D0=B1?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=8C=D1=8F=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- @types/next-auth.d.ts | 28 + app/(root)/adt/[id]/page.tsx | 10 +- app/(root)/adt/create/page.tsx | 189 ++--- app/(root)/layout.tsx | 15 +- app/(root)/not-auth/page.tsx | 14 + app/(root)/page.tsx | 1 - app/(root)/profile/page.tsx | 36 +- app/(root)/profile/settings/page.tsx | 33 + app/actions.ts | 97 +++ app/api/auth/[...nextauth]/route.ts | 153 ++++ app/layout.tsx | 14 +- components/Header.tsx | 15 +- components/ListingCard.tsx | 2 +- .../shared/adt-create/adt-create-form.tsx | 133 ++++ components/shared/adt-create/schemas.ts | 17 + components/shared/clear-button.tsx | 21 + components/shared/container.tsx | 10 + components/shared/error-text.tsx | 11 + components/shared/form/form-input.tsx | 48 ++ components/shared/form/form-textarea.tsx | 45 ++ components/shared/form/index.ts | 2 + components/shared/info-block.tsx | 42 ++ .../shared/modals/auth-modal/auth-modal.tsx | 72 ++ .../modals/auth-modal/forms/login-form.tsx | 63 ++ .../modals/auth-modal/forms/register-form.tsx | 67 ++ .../shared/modals/auth-modal/forms/schemas.ts | 21 + components/shared/profile-button.tsx | 36 + components/shared/profile-form.tsx | 84 +++ components/shared/required-symbol.tsx | 5 + components/shared/title.tsx | 36 + components/ui/button.tsx | 12 +- components/ui/checkbox.tsx | 30 + components/ui/dialog.tsx | 122 +++ components/ui/input.tsx | 22 + components/ui/sheet.tsx | 140 ++++ components/ui/skeleton.tsx | 15 + components/ui/textarea.tsx | 22 + data/adt.ts | 74 -- lib/get-user-session.ts | 8 + package-lock.json | 702 +++++++++++++++++- package.json | 8 +- prisma/schema.prisma | 7 +- prisma/seed.ts | 3 + tsconfig.json | 2 +- 44 files changed, 2279 insertions(+), 208 deletions(-) create mode 100644 @types/next-auth.d.ts create mode 100644 app/(root)/not-auth/page.tsx create mode 100644 app/(root)/profile/settings/page.tsx create mode 100644 app/actions.ts create mode 100644 app/api/auth/[...nextauth]/route.ts create mode 100644 components/shared/adt-create/adt-create-form.tsx create mode 100644 components/shared/adt-create/schemas.ts create mode 100644 components/shared/clear-button.tsx create mode 100644 components/shared/container.tsx create mode 100644 components/shared/error-text.tsx create mode 100644 components/shared/form/form-input.tsx create mode 100644 components/shared/form/form-textarea.tsx create mode 100644 components/shared/form/index.ts create mode 100644 components/shared/info-block.tsx create mode 100644 components/shared/modals/auth-modal/auth-modal.tsx create mode 100644 components/shared/modals/auth-modal/forms/login-form.tsx create mode 100644 components/shared/modals/auth-modal/forms/register-form.tsx create mode 100644 components/shared/modals/auth-modal/forms/schemas.ts create mode 100644 components/shared/profile-button.tsx create mode 100644 components/shared/profile-form.tsx create mode 100644 components/shared/required-symbol.tsx create mode 100644 components/shared/title.tsx create mode 100644 components/ui/checkbox.tsx create mode 100644 components/ui/dialog.tsx create mode 100644 components/ui/input.tsx create mode 100644 components/ui/sheet.tsx create mode 100644 components/ui/skeleton.tsx create mode 100644 components/ui/textarea.tsx delete mode 100644 data/adt.ts create mode 100644 lib/get-user-session.ts diff --git a/@types/next-auth.d.ts b/@types/next-auth.d.ts new file mode 100644 index 0000000..118fff6 --- /dev/null +++ b/@types/next-auth.d.ts @@ -0,0 +1,28 @@ +// Ref: https://next-auth.js.org/getting-started/typescript#module-augmentation + +import { DefaultSession, DefaultUser } from 'next-auth'; +import { JWT, DefaultJWT } from 'next-auth/jwt'; +import type { UserRole } from '@prisma/client'; + +declare module 'next-auth' { + interface Session { + user: { + id: string; + role: UserRole; + name: string; + image: string; + }; + } + + interface User extends DefaultUser { + id: number; + role: UserRole; + } +} + +declare module 'next-auth/jwt' { + interface JWT extends DefaultJWT { + id: string; + role: UserRole; + } +} diff --git a/app/(root)/adt/[id]/page.tsx b/app/(root)/adt/[id]/page.tsx index 45e6968..c4005e1 100644 --- a/app/(root)/adt/[id]/page.tsx +++ b/app/(root)/adt/[id]/page.tsx @@ -1,7 +1,7 @@ import React from 'react'; // import { useParams } from 'next/navigation'; import { MapPin, Calendar, Phone, MessageCircle, Share2, Flag, Heart } from 'lucide-react'; -import { adts } from '@/data/adt'; +// import { adts } from '@/data/adt'; import { prisma } from '@/prisma/prisma-client'; import Header from '@/components/Header'; import { notFound } from 'next/navigation'; @@ -27,12 +27,12 @@ export default async function AdtPage({params: { id } }: { params: { id: string return ( <> -
+
- {adt.title} + {adt.title}

{adt.title}

@@ -79,8 +79,8 @@ export default async function AdtPage({params: { id } }: { params: { id: string className="w-12 h-12 rounded-full" />
-

{user.name}

-

Member {String(user.createdAt)}

+

{user?.name}

+

Member {String(user?.createdAt)}

diff --git a/app/(root)/adt/create/page.tsx b/app/(root)/adt/create/page.tsx index 80352b8..db0da10 100644 --- a/app/(root)/adt/create/page.tsx +++ b/app/(root)/adt/create/page.tsx @@ -1,105 +1,112 @@ +// 'use client' + import React from 'react'; import { ImagePlus, X } from 'lucide-react'; +import { AdtCreateForm } from '@/components/shared/adt-create/adt-create-form'; export default function CreateListing() { return ( -
-
-

Create New Listing

+ + + + + //
+ //
+ //

Create New Listing

-
-
- - -
+ // + //
+ // + // + //
-
- - -
+ //
+ // + // + //
-
- -
- $ - -
-
+ //
+ // + //
+ // $ + // + //
+ //
-
- -