Wellness
Open to every guest at no charge. Bring nothing; robes, slippers and linen pestemals wait in your room.

A domed stone room with a heated marble platform and light falling through small round skylights.

A long, still pool under a whitewashed vault, kept at 29 degrees all year.

Two rooms of lime plaster and linen, each with a deep window onto the olive grove.

The outdoor pool at the edge of the terrace, lit with lanterns once the sun has gone.
A row of tall photographic panels for a hotel's wellness spaces: hovering, focusing or tapping a panel widens it while the others narrow, its photograph eases back to full size and a description with small detail pills unfolds under the serif name. On phones the panels stack with everything visible.
A row of tall numbered photo panels where the active one widens while the others narrow, its photograph eases back from a slight zoom, and a description with small detail pills unfolds under the serif name.
Upgrade to Pro
Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.
Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.
Radix flavor
npx shadcn add "https://beste.dev/r/hotel10?email=YOUR_EMAIL&license_key=YOUR_KEY"Base UI flavor
npx shadcn add "https://beste.dev/r-base/hotel10?email=YOUR_EMAIL&license_key=YOUR_KEY"This installs the block to components/beste/block/hotel10.tsx plus the text1 word stagger behind the heading.
The installed file exports hotel10Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.
import { Hotel10, hotel10Demo } from "@/components/beste/block/hotel10";
export default function Page() {
return <Hotel10 {...hotel10Demo} />;
}Then replace the demo with your own props. Written out, a trimmed setup looks like this:
import { Hotel10 } from "@/components/beste/block/hotel10";
export default function Page() {
return (
<Hotel10
eyebrow="Wellness"
heading="Four quiet rooms for the body."
description="Open to every guest at no charge. Robes and slippers wait in your room."
spaces={[
{
name: "Hammam",
description: "A domed stone room with a heated marble platform.",
details: ["Heated marble", "Private sessions", "10:00 to 20:00"],
image: { src: "https://oud.pics/b/hotel/ostria-hammam.webp", alt: "A domed stone hammam with light falling through steam" },
},
{
name: "Vaulted pool",
description: "A long, still pool under a whitewashed vault, warm all year.",
details: ["16 meters", "Warm all year", "7:00 to 22:00"],
image: { src: "https://oud.pics/b/hotel/ostria-indoor-pool.webp", alt: "A long indoor pool under a white stone vault" },
},
{
name: "Sea pool",
description: "The outdoor pool at the edge of the terrace, lit with lanterns at night.",
details: ["Salt water", "Open late"],
image: { src: "https://oud.pics/b/hotel/ostria-pool-dusk.webp", alt: "An infinity pool meeting the sea at dusk" },
},
]}
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
eyebrow | string | – | Uppercase line above the heading |
heading | string | – | Serif <h2>, staggered word by word through Text1 |
description | string | – | Paragraph to the right of the heading |
spaces | Space[] | [] | One panel per space |
className | string | – | Extra classes for the outer <section> |
type Space = {
name: string;
description: string;
details: string[];
image: { src: string; alt: string };
};