+ {/* Brand badge */}
+
+ 🏔️
+
Open Trip Pendakian Gunung
-
+
SeTrip
-
+
Masa cowok sejati, cewek seimut nggak{" "}
SeTrip bareng?
-
+
Yuk mulai dari sini. Cari open trip pendakian, gabung bareng, nikmati
petualangan ke gunung-gunung Jawa Barat.
@@ -45,41 +44,41 @@ export default async function HomePage() {
{/* Stats */}
-
+
-
+
{trips.length}
-
Trip Tersedia
+
Trip Tersedia
-
+
-
8
-
Gunung Jabar
+
8
+
Gunung Jabar
-
+
-
100%
-
Seru
+
100%
+
Seru
{/* ========== CONTENT ========== */}
-
+
{/* Trip Terdekat */}
{upcomingTrips.length > 0 && (
-
-
+
+
🔥
-
+
Trip Terdekat
-
+
Berangkat dalam 7 hari ke depan
@@ -108,42 +107,42 @@ export default async function HomePage() {
{/* Open Trip */}
-
+
-
+
🏔️
-
+
Open Trip
-
+
Pendakian gunung bareng teman baru
Lihat semua
{latestTrips.length === 0 ? (
-
-
+
+
🏕️
-
+
Belum ada trip tersedia
-
+
Jadilah yang pertama buat open trip pendakian!
+ Buat Trip Baru
@@ -173,15 +172,15 @@ export default async function HomePage() {
{/* Budget Friendly */}
{budgetTrips.length > 0 && (
-
-
+
+
💸
-
+
Budget Friendly
-
+
Trip di bawah Rp 300.000
@@ -208,15 +207,15 @@ export default async function HomePage() {
)}
{/* CTA Bottom */}
-
-
+
+
Siap naik gunung?
-
+
Buat trip sendiri atau gabung trip yang sudah ada. Seru bareng teman
baru!
-
+
+
diff --git a/app/register/page.tsx b/app/register/page.tsx
index f78cccf..d88f5e4 100644
--- a/app/register/page.tsx
+++ b/app/register/page.tsx
@@ -42,10 +42,10 @@ export default function RegisterPage() {
}
return (
-
+
{/* Header */}
-
+
Se
Trip
diff --git a/app/trips/[id]/page.tsx b/app/trips/[id]/page.tsx
index 6c0397f..1e3f3e5 100644
--- a/app/trips/[id]/page.tsx
+++ b/app/trips/[id]/page.tsx
@@ -39,14 +39,14 @@ export default async function TripDetailPage({
: null;
return (
-
+
{/* Breadcrumb */}
-
+
Open Trip
/
- {trip.mountain}
+ {trip.mountain}
@@ -54,10 +54,10 @@ export default async function TripDetailPage({
{/* Title bar */}
-
-
-
-
+
+
+
+
{trip.title}
@@ -65,7 +65,7 @@ export default async function TripDetailPage({
-
+
{/* Info Grid */}
-
-
-
+
+
+
📍
-
-
Lokasi
-
{trip.location}
+
+
Lokasi
+
{trip.location}
-
-
+
+
📅
-
-
Tanggal
-
+
+
Tanggal
+
{formatDate(trip.date)}
-
-
+
+
💰
-
-
Harga
-
+
+
Harga
+
{formatRupiah(trip.price)}
-
-
+
+
👤
-
-
- Organizer
-
-
+
+
Organizer
+
{trip.organizer.name}
@@ -131,19 +129,19 @@ export default async function TripDetailPage({
{/* Participant Progress */}
-
+
-
+
Peserta
-
+
{participantCount}{" "}
/ {trip.maxParticipants}
-
+
= 100
@@ -155,7 +153,7 @@ export default async function TripDetailPage({
style={{ width: `${fillPercent}%` }}
/>
-
+
{spotsLeft > 0
? `${spotsLeft} slot tersisa — yuk gabung!`
: "Trip sudah penuh"}
@@ -165,10 +163,10 @@ export default async function TripDetailPage({
{/* Description */}
{trip.description && (
-
+
Deskripsi Trip
-
+
{trip.description}
@@ -186,24 +184,24 @@ export default async function TripDetailPage({
{/* Participants List */}
-
+
Peserta ({participantCount})
{participantCount === 0 ? (
-
+
Belum ada peserta. Jadilah yang pertama! 🎒
) : (
-
+
{activeParticipants.map((p) => (
-
+
{p.user.name.charAt(0).toUpperCase()}
-
+
{p.user.name}
diff --git a/app/trips/page.tsx b/app/trips/page.tsx
index 0b6f6b9..fa738dc 100644
--- a/app/trips/page.tsx
+++ b/app/trips/page.tsx
@@ -6,38 +6,38 @@ export default async function TripsPage() {
const trips = await tripService.getOpenTrips();
return (
-
-
+
+
-
+
Open Trip Pendakian
-
+
{trips.length} trip tersedia — pilih dan langsung join
+ Buat Trip
{trips.length === 0 ? (
-
-
+
+
🏕️
-
+
Belum ada trip tersedia
-
+
Jadilah yang pertama membuat open trip pendakian!
Buat Trip Baru
diff --git a/components/shared/navbar.tsx b/components/shared/navbar.tsx
index 45c8fca..a41c7a4 100644
--- a/components/shared/navbar.tsx
+++ b/components/shared/navbar.tsx
@@ -1,14 +1,17 @@
"use client";
+import { useState } from "react";
import Link from "next/link";
import { useSession, signOut } from "next-auth/react";
export function Navbar() {
const { data: session } = useSession();
+ const [menuOpen, setMenuOpen] = useState(false);
return (