"use client"; import { useState } from "react"; import { Icon } from "@iconify/react"; import { format, differenceInYears, formatDistanceToNow } from "date-fns"; export default function Details() { const [open, setOpen] = useState(false); const [limit, setLimit] = useState(2); const showMore = () => { setLimit((prev) => prev + 2); }; const birthday = new Date("2014-12-8"); const birthdayStr = format(birthday, "MMMM d, yyyy"); const age = differenceInYears(new Date(), birthday); const startday = new Date("2025-5-31"); const startdayStr = format(startday, "MMMM d, yyyy"); const activitytimes = formatDistanceToNow(startday, { addSuffix: true }); type DetailItem = { icon: string; name: string; value?: string; }; const details: DetailItem[] = [ { icon: "iconoir:calendar", name: "Start of activities", value: `${startdayStr}(${activitytimes})`, }, { icon: "iconoir:birthday-cake", name: "Birthday", value: `${birthdayStr}(${age}years old)`, }, { icon: "guidance:children-must-be-supervised", name: "Age", value: `${age}years old`, }, { icon: "iconoir:map-pin", name: "Location", value: "Kanagawa, Japan", }, { icon: "guidance:unisex-restroom", name: "Gender", value: "Male", }, { icon: "iconoir:globe", name: "From", value: "Japan", }, { icon: "iconoir:translate", name: "Language", value: "Japanese / English", }, ]; const visibleDetails = details.slice(0, limit); const hasMore = limit < details.length; return (
Details setOpen((prev) => !prev)} >
{open && (
{visibleDetails.map((item, idx) => (
{item.name} {item.value && ( {item.value} )}
))} {hasMore && (
)}
)}
); }