import type { Metadata } from "next"; import Link from "next/link"; import Image from "next/image"; import { tripService } from "@/server/services/trip.service"; import { TripCard } from "@/features/trip/components/trip-card"; import { siteConfig, siteUrl, absoluteUrl } from "@/lib/site"; export const metadata: Metadata = { title: "Cari Teman Trip & Aktivitas — Pergi Bareng, Bukan Sendiri", description: `${siteConfig.slogan} ${siteConfig.description}`, alternates: { canonical: "/" }, openGraph: { title: `${siteConfig.name} — Cari Teman Trip & Aktivitas, Gabung Bareng`, description: siteConfig.slogan, url: "/", }, }; export default async function HomePage() { const trips = await tripService.getOpenTrips(); const now = new Date(); const nextWeek = new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000); const upcomingTrips = trips .filter((t) => new Date(t.date) <= nextWeek) .slice(0, 3); const upcomingIds = new Set(upcomingTrips.map((t) => t.id)); const latestTrips = trips .filter((t) => !upcomingIds.has(t.id)) .slice(0, 6); const shownIds = new Set([...upcomingIds, ...latestTrips.map((t) => t.id)]); const budgetTrips = trips .filter((t) => !shownIds.has(t.id) && t.price <= 300000) .slice(0, 3); const orgJsonLd = { "@context": "https://schema.org", "@graph": [ { "@type": "Organization", "@id": `${siteUrl}/#organization`, name: siteConfig.name, url: siteUrl, logo: absoluteUrl("/images/SeTrip.png"), slogan: siteConfig.slogan, description: siteConfig.description, }, { "@type": "WebSite", "@id": `${siteUrl}/#website`, url: siteUrl, name: siteConfig.name, description: siteConfig.description, publisher: { "@id": `${siteUrl}/#organization` }, inLanguage: "id-ID", potentialAction: { "@type": "SearchAction", target: `${siteUrl}/trips?q={search_term_string}`, "query-input": "required name=search_term_string", }, }, ], }; return (