import { useState } from 'preact/hooks'; import { Dialog, DialogPanel, DialogTitle, Tab, TabGroup, TabList, TabPanel, TabPanels, Transition, TransitionChild } from '@headlessui/react'; export interface FacilityItem { text: string; } export interface FacilityCategory { title: string; items: FacilityItem[]; } interface FacilitiesCardProps { title?: string; left: FacilityCategory[]; middle: FacilityCategory[]; right: FacilityCategory[]; seeMoreShow?: boolean; } function CategorySection({ category }: { category: FacilityCategory }) { return (

{category.title}

    {category.items.map((item, i) => (
  1. {item.text}
  2. ))}
); } export function FacilitiesCard({ title = 'Facilities & Amenities', left, middle, right, seeMoreShow }: FacilitiesCardProps) { const [dialogOpen, setDialogOpen] = useState(false); // Flatten all categories from the 3 columns into a single ordered list for tabs const allCategories = [...left, ...middle, ...right]; function handleSeeMore() { setDialogOpen(true); } return ( <>

{title}

{left.map((cat, i) => )}
{middle.map((cat, i) => )}
{right.map((cat, i) => )}
{seeMoreShow !== undefined && (
)}
{/* Dialog */} setDialogOpen(false)} className="relative z-50"> {/* Backdrop */}
{/* Panel container */}
{/* Close button — top right */} {/* Header */}
{title} {/* Pill tabs */} {allCategories.map((cat, i) => ( {cat.title} ))} {/* Tab panels */} {allCategories.map((cat, i) => (
{cat.items.map((item, j) => (
{item.text}
))}
))}
); } export default FacilitiesCard;