Team and specialist introductions — spa therapists, clinic doctors, an agency team. Card-less: 4:5 portraits with a name and a small mono role, a typographic list with a hover portrait, or a founder feature with the name set like a signature. Honorifics (“Dr.”, “Op. Dr.”) are a separate field because their order varies by locale. Profile links are short text links, never rows of social icons.
Therapists
Hands you can trust
Every therapist at Hamam Moda has at least eight years of practice. Book any of them by name.
Elif Aydın
Instagram (opens in a new tab)Lead therapist
Mert Kaya
Hammam master
Dr. Selin Öztürk
LinkedIn (opens in a new tab)Dermatologist
Deniz Uçar
Reflexologist
Installation
The whole kit as one package — get updates by bumping the version. Add the styles to globals.css: @import "@vamos-ui/react/styles.css";
Usage
import { Team } from "@vamos-ui/react/blocks";
<Team
title="Hands you can *trust*"
members={[
{ name: "Elif Aydın", role: "Lead therapist", photo: { src, alt, width: 800, height: 1000 } },
{ name: "Selin Öztürk", title: "Dr.", role: "Dermatologist", links: [{ network: "linkedin", href: "…" }] },
]}
/>Examples
List with hover portrait (clinic)
Name · role · specialty rows; on wide screens a decorative portrait appears on hover (CSS only); phones get a small leading portrait.
Clinic
Our specialists
Dr. Selin Öztürk
Dermatologist
Acne scars · Laser · Microneedling
LinkedIn (opens in a new tab)Op. Dr. Kerem Yıldız
Plastic surgeon
Rhinoplasty · Blepharoplasty
Elif Aydın
Aesthetician
Facials · Chemical peels
Mert Kaya
Physiotherapist
Lymphatic drainage · Post-op care
Feature (founder)
5/7 layout, long bio (blank line = new paragraph), signature-style name. One member always renders as feature.
Founder
Started in a one-room studio
Kerem designed his first restaurant website in 2011 for his uncle’s fish place in Ayvalık. It took bookings by email and crashed every Friday.
Fifteen years later the studio builds sites and booking systems for forty restaurants, spas and clinics across Istanbul — still from the same desk by the window in Maltepe.
API
Team
| Prop | Type | Default |
|---|---|---|
variantLayout. | "portrait" | "list" | "feature" | "portrait" |
members{ name, title?, role, specialty?, photo?, bio?, links? }. No photo = an empty inset area, never initials. | TeamMember[] | — |
members[].linksUp to 3, rendered as text (“LinkedIn”) with an aria-label “Elif Aydın on LinkedIn”. | { network: SocialNetwork; href }[] | — |
eyebrow / title / leadSection header (split alignment in portrait). | ReactNode | — |
labels / localeprofileOf template. | Partial<Site2Labels> / string | — |
theme / anchor / id / className / headingLevel / components / editModeShared block props. | BlockBaseProps | — |