diff --git a/app/(content)/(home)/home/page.tsx b/app/(content)/(home)/home/page.tsx index d159dec93d31a425d2d95cafcdb5c7c75e31e0e3..b7970be4f3db3b3072bd47797e64a6b733213891 100644 --- a/app/(content)/(home)/home/page.tsx +++ b/app/(content)/(home)/home/page.tsx @@ -1,11 +1,15 @@ import { CreateGweet } from "@/components/create-gweet/components/create-gweet" import { GlobalLayout } from "@/components/global-layout" import { Gweets } from "@/components/gweets/components/gweets" +import { Connect } from "@/components/profile/components/connect" import ScrollToTop from "@/components/scroll-to-top" import { Trends } from "@/components/trends/components/trends" import { Card } from "@/components/ui/card" +import { getCurrentUser } from "@/lib/session" export default async function HomePage() { + const session = await getCurrentUser() + return ( <GlobalLayout mainContent={ @@ -20,9 +24,16 @@ export default async function HomePage() { </> } sideContent={ - <Card className="p-5 bg-secondary"> - <Trends /> - </Card> + <> + <Card className="p-5 bg-secondary"> + <Trends /> + </Card> + + <Card className="p-6 bg-secondary"> + <Connect session={session} /> + </Card> + </> + } /> ) diff --git a/app/(content)/(home)/people/page.tsx b/app/(content)/(home)/people/page.tsx new file mode 100644 index 0000000000000000000000000000000000000000..03cf4264b68a558f098fc68676f0dbe4e116361f --- /dev/null +++ b/app/(content)/(home)/people/page.tsx @@ -0,0 +1,26 @@ +import { BackHeader } from "@/components/back-header" +import { GlobalLayout } from "@/components/global-layout" +import { Connect } from "@/components/profile/components/connect" +import { Card } from "@/components/ui/card" +import { getCurrentUser } from "@/lib/session" + +export default async function PeoplePage() { + const session = await getCurrentUser() + + return ( + <GlobalLayout + mainContent={ + <Card className="w-full overflow-hidden"> + <div className="p-3"> + <BackHeader> + <h1 className="font-bold">People</h1> + </BackHeader> + </div> + <div className="px-5"> + <Connect title="" session={session} /> + </div> + </Card> + } + /> + ) +} \ No newline at end of file diff --git a/components/filter-sort-games.tsx b/components/filter-sort-games.tsx index 12ef0c9e5a3184add9d30ad75d8a87fd0106a8e0..1d209973b41afef083406dc9f0950c25b90b21ea 100644 --- a/components/filter-sort-games.tsx +++ b/components/filter-sort-games.tsx @@ -58,7 +58,7 @@ export default function Sort() { return ( <Card className="p-6 grid items-start gap-2 bg-secondary"> - <h1>Filter</h1> + <h1 className="font-bold">Filter</h1> <Select value={selectedCategory ? selectedCategory : undefined} key={selectedCategory[0]} onValueChange={(value) => setSelectedCategory(value)}> <SelectTrigger className={`bg-background border-none w-full ${selectedCategory[0] ? 'font-extrabold' : ''}`}> <SelectValue placeholder="By category..." /> @@ -123,7 +123,7 @@ export default function Sort() { </SelectContent> </Select> - <h1 className="pt-6">Sort by</h1> + <h1 className="pt-6 font-bold">Sort by</h1> <div className="flex space-x-2 pb-1"> <Select value={selectedSortMethod} onValueChange={(value) => setSelectedSortMethod(value)}> <SelectTrigger className="bg-background border-none w-full"> diff --git a/components/global-layout.tsx b/components/global-layout.tsx index 8d669c2238cc5aa585982df6d731679ba88fe3cf..0fc932445287c4d7b75503578d51178fadfb3202 100644 --- a/components/global-layout.tsx +++ b/components/global-layout.tsx @@ -4,7 +4,7 @@ export const GlobalLayout = ({ mainContent, sideContent }: { mainContent: JSX.El <div className="col-span-3 flex justify-center"> {mainContent} </div> - <aside className="self-start sticky top-[89px] col-span-1"> + <aside className="self-start sticky top-[89px] col-span-1 space-y-6"> {sideContent} </aside> </div> diff --git a/components/profile/components/connect.tsx b/components/profile/components/connect.tsx new file mode 100644 index 0000000000000000000000000000000000000000..fe00a65e436833ac63dc075bb11d0e7a502498a3 --- /dev/null +++ b/components/profile/components/connect.tsx @@ -0,0 +1,37 @@ +"use client" + +import LoadingItem from "@/components/loading-item" +import { TryAgain } from "@/components/try-again" +import { Card } from "@/components/ui/card" +import { User } from "next-auth" +import Link from "next/link" +import { useUsers } from "../hooks/use-users" +import { UserItem } from "./user-item" + +export const Connect = ({ title = "Who to follow", session }: { title?: string, session: User | undefined }) => { + const { data: people, isLoading, isError, isSuccess } = useUsers() + + return ( + <div className="space-y-5 flex flex-col"> + {title && <h1 className="font-bold p-1">{title}</h1>} + {isLoading ? ( + <LoadingItem /> + ) : isError ? ( + <TryAgain /> + ) : people?.length <= 0 ? ( + <Card className="p-1"> + <h1 className="text-center">{"Empty :("}</h1> + </Card> + ) : isSuccess && + people?.slice(title ? 0 : undefined, title ? 3 : undefined).map((person) => { + return <UserItem + key={person?.id} + user={person} + sessionId={session?.id} + showBio={title ? false : true} /> + })} + + {title && <Link href={"/people"} className="self-end hover:bg-accent p-1 rounded-lg">Show more</Link>} + </div> + ) +} \ No newline at end of file diff --git a/components/profile/components/profile-side-content.tsx b/components/profile/components/profile-side-content.tsx index 2027f4072f97dbb22b883d1f277845bc8d3ea753..71a6930e034e207cc622e51cb3ef9318e54e4ea1 100644 --- a/components/profile/components/profile-side-content.tsx +++ b/components/profile/components/profile-side-content.tsx @@ -1,17 +1,27 @@ +import { Trends } from "@/components/trends/components/trends" import { Card } from "@/components/ui/card" import { Skeleton } from "@/components/ui/skeleton" +import { getCurrentUser } from "@/lib/session" +import { Connect } from "./connect" + +export const ProfileSideContent = async () => { + const session = await getCurrentUser() -export const ProfileSideContent = () => { return ( - <Card className="p-6 grid items-start gap-2 bg-secondary"> - <h1>Media</h1> - <div className="grid grid-cols-1 gap-4"> - {Array.from({ length: 2 }, (_, i) => i + 1).map((i) => { - return ( - <Skeleton key={i} className="aspect-[264/374] bg-gray-300" /> - ) - })} - </div> - </Card> + <div className="space-y-6"> + <Card className="p-6 bg-secondary"> + <div className="grid grid-cols-2 gap-3"> + {Array.from({ length: 4 }, (_, i) => i + 1).map((i) => { + return ( + <Skeleton key={i} className="aspect-[1/1] bg-gray-300" /> + ) + })} + </div> + </Card> + + <Card className="p-6 bg-secondary"> + <Connect session={session} /> + </Card> + </div> ) } \ No newline at end of file diff --git a/components/profile/components/user-item.tsx b/components/profile/components/user-item.tsx index 20fa31d8ae804283844d11b0c2a3fff8f4d208af..f49ed9c80549ec1acd51c91a0660a375714616f1 100644 --- a/components/profile/components/user-item.tsx +++ b/components/profile/components/user-item.tsx @@ -4,7 +4,7 @@ import Link from "next/link" import { IUser } from "../types" import { following } from "../utils/following" -export const UserItem = async ({ user, sessionId }: { user: IUser, sessionId: string | undefined }) => { +export const UserItem = async ({ user, sessionId, showBio = true }: { user: IUser, sessionId: string | undefined, showBio?: Boolean }) => { const isFollowing = following({ user, sessionUserId: sessionId ? sessionId : "", @@ -37,7 +37,7 @@ export const UserItem = async ({ user, sessionId }: { user: IUser, sessionId: st } */} </div> - {user.bio ? (<p className="truncate w-full">{user.bio}</p>) : <p> </p>} + {showBio && (user.bio ? (<p className="truncate w-full">{user.bio}</p>) : <p> </p>)} </div> </Link> ) diff --git a/components/trends/components/trends.tsx b/components/trends/components/trends.tsx index 2fef530fb34ffd2e4156ec85815dddd9b1e08883..27fd41cd44729207658098104bba1dcb492708a0 100644 --- a/components/trends/components/trends.tsx +++ b/components/trends/components/trends.tsx @@ -22,7 +22,7 @@ export const Trends = ({ title = "Trends" }: { title?: string }) => { <h1 className="text-center">No trends yet</h1> </Card> ) : isSuccess && - hashtags?.map((hashtag, index) => { + hashtags?.slice(title ? 0 : undefined, title ? 3 : undefined).map((hashtag, index) => { return ( <Trend key={hashtag.id}