web3.news/src/app/page.tsx

65 lines
2.1 KiB
TypeScript
Raw Normal View History

2023-12-05 16:06:54 +00:00
import { redirect } from "next/navigation"
import { headers } from "next/headers"
import Feed from "@/components/Feed"
import SearchBar from "@/components/SearchBar"
import { fetchFeedData } from "@/lib/feed.ts"
import * as GraphicSection from "@/components/GraphicSection"
import { ArrowIcon } from "@/components/ArrowIcon"
2023-11-10 13:34:04 +00:00
2023-11-22 11:59:45 +00:00
type Props = {
searchParams?: {
2023-12-05 16:06:54 +00:00
q?: string | undefined
}
}
2023-11-22 11:59:45 +00:00
export default async function Home({ searchParams }: Props) {
2023-12-05 16:06:54 +00:00
const headerList = headers()
const referer = headerList.get("referer")
2023-11-22 11:59:45 +00:00
if (!referer && searchParams?.q) {
2023-12-05 16:06:54 +00:00
redirect(`/search?q=${searchParams.q}`)
2023-11-22 11:59:45 +00:00
}
2023-12-05 16:06:54 +00:00
const data = await fetchFeedData({})
2023-11-10 13:34:04 +00:00
return (
2023-11-14 15:52:42 +00:00
<>
2023-11-10 17:17:30 +00:00
<SearchBar />
2023-11-15 09:35:32 +00:00
<div className="space-y-8 w-full my-10">
<div className="flex flex-row flex-wrap justify-between w-full">
<Feed
title="Latest from the community"
icon={"paper-icon"}
2023-11-22 11:59:45 +00:00
className="w-[calc(33%-20px)] max-w-md"
initialData={data.data}
/>
2023-11-15 09:35:32 +00:00
</div>
2023-12-05 16:06:54 +00:00
<GraphicSection.Root href="https://lumeweb.com" className="h-[100px] border border-gray-800 cursor-pointer [&:hover_.link]:underline [&:hover_.background]:rotate-12 [&:hover_.background]:scale-110">
<GraphicSection.Background>
<img
src="/lume-logo-bg.png"
className="background transition-transform duration-500 transform-gpu absolute -top-[320px] -right-10"
alt=""
aria-hidden
/>
</GraphicSection.Background>
<GraphicSection.Foreground>
<div className="mt-5 flex flex-col items-center justify-center">
<p className="text-white text-lg">
WEB3.NEWS is a project by Lume. Lets build an open, user-owned
web together.
</p>
<div className="link flex text-gray-400">
<span>
Learn more about Lume and join our community
</span>
<ArrowIcon className=" ml-2 mt-2"/>
</div>
</div>
</GraphicSection.Foreground>
</GraphicSection.Root>
2023-11-10 13:34:04 +00:00
</div>
2023-11-14 15:52:42 +00:00
</>
2023-12-05 16:06:54 +00:00
)
}