import React, { useMemo, useState } from "react";
import { Search, Star, ShieldCheck, Clock3, Coins, MapPin, MessageCircle, Send, Info, Building2, HelpCircle, ChevronRight, Menu, X, Image as ImageIcon, Heart } from "lucide-react";
const cities = ["호치민", "다낭", "하노이", "나트랑"];
const categories = [
{ group: "밤문화", items: [{ name: "한인 가라오케", count: 8 }, { name: "로컬 가라오케", count: 8 }, { name: "클럽", count: 19 }, { name: "바", count: 11 }, { name: "라운지", count: 3 }] },
{ group: "힐링", items: [{ name: "남성전용마사지", count: 18 }, { name: "건전마사지", count: 8 }, { name: "이발소", count: 13 }, { name: "스파", count: 19 }] },
{ group: "레저", items: [{ name: "골프", count: 8 }, { name: "카지노", count: 7 }] },
];
const listings = [
{
id: 1,
name: "22스파",
city: "호치민",
category: "스파",
subtitle: "호치민 알러진마사지, 프리미엄, 호치민3대마사지 스파",
rating: 4.6,
service: 4.8,
safety: 4.8,
verified: true,
hours: "10:00–23:00",
price: "700,000–3,000,000 VND",
date: "2026-03-26",
tags: ["알러진마사지", "프리미엄", "호치민3대마사지", "단골많음"],
},
{
id: 2,
name: "골든 릴렉스",
city: "다낭",
category: "건전마사지",
subtitle: "다낭 여행객에게 인기 있는 깔끔한 마사지 샵",
rating: 4.4,
service: 4.5,
safety: 4.7,
verified: true,
hours: "11:00–24:00",
price: "500,000–1,800,000 VND",
date: "2026-03-18",
tags: ["예약가능", "청결", "커플룸", "픽업문의"],
},
];
function Pill({ children, active = false, className = "" }) {
return (
{children}
);
}
function Header({ mobileOpen, setMobileOpen }) {
return (
V
VIETNER
);
}
function Sidebar({ selectedCategory, setSelectedCategory, mobileOpen }) {
return (
);
}
function Gallery() {
return (
{[1, 2, 3].map((n) => (
))}
);
}
function ListingCard({ listing }) {
return (
{listing.name}
22 Spa
{listing.city}
{listing.category}
{listing.subtitle}
{listing.rating}
VIETNER 검증 평가
시설 {listing.rating} · 서비스 {listing.service} · 안전 {listing.safety}
베트너 직접 검증
{listing.hours}
{listing.price}
검증됨
{listing.date}
│
위치 문의
{listing.tags.map((tag) => {tag})}
);
}
function ContactBox() {
return (
22스파가 궁금하신가요?
가격·예약·위치 정보를 상담으로 안내해드립니다.
);
}
function RightPanel() {
return (
);
}
export default function App() {
const [selectedCategory, setSelectedCategory] = useState("스파");
const [query, setQuery] = useState("");
const [mobileOpen, setMobileOpen] = useState(false);
const filteredListings = useMemo(() => {
return listings.filter((item) => {
const matchesCategory = selectedCategory ? item.category === selectedCategory || item.tags.join(" ").includes(selectedCategory) || selectedCategory === "스파" : true;
const matchesQuery = query.trim() ? `${item.name} ${item.subtitle} ${item.city} ${item.category} ${item.tags.join(" ")}`.toLowerCase().includes(query.toLowerCase()) : true;
return matchesCategory && matchesQuery;
});
}, [selectedCategory, query]);
return (
{filteredListings.length > 0 ? filteredListings.map((listing) => ) : (
검색 결과가 없습니다.
)}
);
}