"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button"; import { BottomSheet } from "@/components/ui/bottom-sheet"; import { Card } from "@/components/ui/card"; import { ErrorState } from "@/components/feedback/error-state"; import { Modal } from "@/components/ui/modal"; import { MonthCalendar } from "@/components/ui/month-calendar"; import { ProfileCard } from "@/components/ui/profile-card"; import { Switch } from "@/components/ui/switch"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Textarea } from "@/components/ui/textarea"; /** * Client-only demo for components that need interaction state — kept * separate so the style guide page itself stays a Server Component. This * is also the reason `ProfileCard`'s `onEdit` and `ErrorState`'s * `onRetry` are demonstrated here rather than in page.tsx: a Server * Component can't pass a live event-handler closure as a prop to a * Client Component (Next.js build error "Event handlers cannot be passed * to Client Component props") — the handler has to originate from * somewhere already client-side, which this component is. */ export function StyleGuideInteractive() { const [switchOn, setSwitchOn] = useState(true); const [modalOpen, setModalOpen] = useState(false); const [sheetOpen, setSheetOpen] = useState(false); const [month, setMonth] = useState(() => new Date()); const [selectedDate, setSelectedDate] = useState(); const [editCount, setEditCount] = useState(0); const [retryCount, setRetryCount] = useState(0); return (
Upcoming Past

Upcoming appointments render here.

Past appointments render here.

setModalOpen(false)} title="Cancel Appointment?">

This is within the free cancellation window. Are you sure you want to cancel?

setSheetOpen(false)} title="Add a Note">