Room Type Card
A dorm or a room: who it sleeps, the price per night, open or full.
Preview
Bunks, lockers, a reading light each.
Sleeps 6
For women travellers.
Sleeps 4
A room of your own, the common room downstairs.
Sleeps 2
Amounts are samples, not prices.
Usage
import { RoomTypeCard } from "zostel-ui";
<RoomTypeCard
type="Mixed dorm"
description="Bunks, lockers, a reading light each."
capacity={6}
pricePerNight={1234}
onSelect={() => pick("mixed-dorm")}
/>
<RoomTypeCard type="Private room" capacity={2} pricePerNight={3456} available={false} />Props
| Prop | Type | Default | Description |
|---|---|---|---|
type | string | — | “Mixed dorm”, “Female dorm”, “Private room”… |
description | string | — | One line. |
capacity | number | — | Sleeps n. |
pricePerNight | number | — | Per night. |
currency | string | "INR" | ISO 4217 code: INR (₹1,23,456), NPR, THB (฿12,345)… Printed with formatPrice. |
available | boolean | true | false greys it out and shows Full. |
imageUrl | string | — | Optional picture. |
onSelect | () => void | — | Shows the Select button (disabled when full). |
className | string | — | More classes, merged with the component’s own (tailwind-merge). |
typestring“Mixed dorm”, “Female dorm”, “Private room”…
descriptionstringOne line.
capacitynumberSleeps n.
pricePerNightnumberPer night.
currencystring"INR"ISO 4217 code: INR (₹1,23,456), NPR, THB (฿12,345)… Printed with formatPrice.
availablebooleantruefalse greys it out and shows Full.
imageUrlstringOptional picture.
onSelect() => voidShows the Select button (disabled when full).
classNamestringMore classes, merged with the component’s own (tailwind-merge).
Samples
The amounts, ratings and reviews in these demos are samples, not offers — the places are real (every Zostel place, from /brand/places/index.json).