Next visit
A fictional booking with a supplied timezone and confirmation status.
Care team check-in
Confirmed- Clinician
- Alex Morgan
- Location
- Room 04, demo clinic
Booking reference: Demo 204. This example does not connect to a clinic.
Groups supplied appointment time, timezone, clinician, location, and status with an optional action slot.
Care check-in
ConfirmedA fictional booking with a supplied timezone and confirmation status.
Care team check-in
ConfirmedBooking reference: Demo 204. This example does not connect to a clinic.
Three ways in. They share one source, so the pixels match whichever you pick.
npm install @noorddev/vlak-react
// once, next to your app's root
import "@noorddev/vlak-react/css";
import { AppointmentCard } from "@noorddev/vlak-react";Precompiled React and one stylesheet. No compiler to configure. Per-component imports work too: @noorddev/vlak-react/components/appointment-card.
npx @noorddev/vlak-cli add appointment-card
The StyleX leaf lands in components/vlak/, for your own compiler to own. See StyleX.
npx shadcn add https://vlak.dev/r/appointment-card.json
The same registry item, installed by shadcn's CLI.
<link rel="stylesheet" href="node_modules/@noorddev/vlak/css/vlak.css" />
No React. Link vlak.css and use the markup and classes below.
import { AppointmentCard } from "@noorddev/vlak-react";
<AppointmentCard appointmentTitle="Care team check-in" dateLabel="18 September 2026" timeLabel="10:30–11:00" timeZone="Europe/Amsterdam, UTC+02:00" dateTime="2026-09-18T10:30:00+02:00" clinician="Alex Morgan" location="Room 04, demo clinic" status="Confirmed" />
// Supply children for real navigation links or application-owned actions.Appointment details exactly as supplied, with an application-owned action slot.
| Prop | Type | Default | Description |
|---|---|---|---|
appointmentTitlerequired | string | ||
dateLabelrequired | ReactNode | ||
timeLabelrequired | ReactNode | ||
timeZonerequired | ReactNode | Supplied display timezone; the component performs no date conversion. | |
dateTime | string | ||
clinician | ReactNode | ||
location | ReactNode | ||
statusrequired | ReactNode | ||
children | ReactNode | Actual links or buttons whose actions are owned by the application. |
Also accepts HTMLAttributes<HTMLDivElement>.
| Keys | Does |
|---|---|
| Tab, Enter, Space | Supplied links and buttons retain their native keyboard interactions. The card adds no tab stop. |
<div class="rs-appointment-card" role="group" aria-label="Care team check-in"><div class="rs-appointment-card-header"><p class="rs-appointment-card-title">Care team check-in</p><span class="rs-appointment-card-status">Confirmed</span></div><div class="rs-appointment-card-when"><span class="rs-appointment-card-date">18 September 2026</span><span class="rs-appointment-card-time">10:30–11:00 · Europe/Amsterdam, UTC+02:00</span></div><dl class="rs-appointment-card-details"><div class="rs-appointment-card-field"><dt class="rs-appointment-card-label">Clinician</dt><dd class="rs-appointment-card-value">Alex Morgan</dd></div><div class="rs-appointment-card-field"><dt class="rs-appointment-card-label">Location</dt><dd class="rs-appointment-card-value">Room 04, demo clinic</dd></div></dl></div>