import { HeroBanner } from "@/app/components/HeroBanner"; import HorizontalCardScroller from "@/app/components/HorizontalCardScroller"; import { PostList } from "@/app/components/PostList"; import ProfileLabelIcon from "@/app/svgs/profilelableicon"; import SearchIcon from "@/app/svgs/SearchIcon"; import prisma from "@/lib/prisma"; export default async function Home({ searchParams }: { searchParams: Promise<{ sort?: "recent" | "popular" } | undefined> }) { const sp = await searchParams; const sort = sp?.sort ?? "recent"; // 메인페이지 설정 불러오기 const SETTINGS_KEY = "mainpage_settings" as const; const settingRow = await prisma.setting.findUnique({ where: { key: SETTINGS_KEY } }); const parsed = settingRow ? JSON.parse(settingRow.value as string) : {}; const showBanner: boolean = parsed.showBanner ?? true; const showPartnerShops: boolean = parsed.showPartnerShops ?? true; const visibleBoardIds: string[] = Array.isArray(parsed.visibleBoardIds) ? parsed.visibleBoardIds : []; // 보드 메타데이터 (이름 표시용) const boardsMeta = visibleBoardIds.length ? await prisma.board.findMany({ where: { id: { in: visibleBoardIds } }, select: { id: true, name: true } }) : []; const idToMeta = new Map(boardsMeta.map((b) => [b.id, b] as const)); const orderedBoards = visibleBoardIds .map((id) => idToMeta.get(id)) .filter((v): v is { id: string; name: string } => Boolean(v)); const firstTwo = orderedBoards.slice(0, 2); const restBoards = orderedBoards.slice(2); const renderBoardPanel = (board: { id: string; name: string }) => (
); return (