Skip to content
UI Kit
Accent color

Classes and schedules

A weekly schedule with filters, class cards with places left, trainers, memberships, a free trial and today’s timeline.

6 variants
Switch category

Classes and schedules

Weekly schedule

The week by day with category filters, one day at a time on phones.

Class cards

Time, trainer, intensity and places left, book or join the waitlist in one tap.

Trainers

Portraits with specialties, the quote appears on hover, a swipe row on phones.

Memberships

Monthly notice or twelve months, the saving shown, what every plan includes.

Free trial

Pick a goal and times, leave your details, the studio calls back.

Today

A timeline of the day: over, live now with progress, next and later.

Details

What Classes and schedules brings along, read from the registry and the source.

Variants
6
Version
1.0.1 · since 1.0.0
File
components/ui/fitness.tsx
Brings along
utilskitbuttoniconsectionrevealinput
npm packages
None
Languages
English and German, 46 texts of its own
Studio
Adjust in code

Props

The FitnessProps interface from components/ui/fitness.tsx, with the comments from the code.

  • variantoptional
    FitnessVariant

    scheduleclass-cardstrainersmembershipstrialtoday

  • eyebrowoptional
    React.ReactNode
  • titleoptional
    React.ReactNode
  • descriptionoptional
    React.ReactNode
  • classesoptional
    FitnessClass[]
  • trainersoptional
    FitnessTrainer[]
  • plansoptional
    FitnessPlan[]
  • includedoptional
    { icon: IconName; label: string }[]

    memberships: one line per thing that every plan includes

  • joiningFeeoptional
    number

    memberships: joining fee for monthly notice

  • goalsoptional
    { id: string; label: string; icon: IconName }[]

    trial: goals to pick from

  • benefitsoptional
    string[]

    trial: what a trial includes

  • mediaoptional
    React.ReactNode

    trial: the picture

  • dayoptional
    number

    class-cards, today: the day to show, 0 is Monday. Defaults to today in the browser.

  • nowoptional
    string

    today: the time to measure against, HH:MM. Defaults to the browser clock.

  • currencyoptional
    string
  • onBookoptional
    (data: Record<string, string>) => void

Built-in texts

Classes and schedules writes these texts itself. The language follows the KitProvider, the labels prop replaces single ones.

Show all 46 texts
daysEnglish Mon,Tue,Wed,Thu,Fri,Sat,SunGerman Mo,Di,Mi,Do,Fr,Sa,So
daysLongEnglish Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,SundayGerman Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Samstag,Sonntag
weekEnglish WeekGerman Woche
categoriesEnglish CategoriesGerman Kategorien
allEnglish AllGerman Alle
minEnglish {n} minGerman {n} Min.
freeNEnglish {n} of {total} freeGerman {n} von {total} frei
fullEnglish FullGerman Ausgebucht
fewEnglish Few placesGerman Wenige Plätze
bookEnglish Book a placeGerman Platz buchen
bookedEnglish BookedGerman Gebucht
waitlistEnglish Join the waitlistGerman Auf die Warteliste
onWaitlistEnglish On the waitlistGerman Auf der Warteliste
noClassesEnglish No classes this day.German An diesem Tag gibt es keine Kurse.
intensityEnglish Intensity {n} of 3German Intensität {n} von 3
withEnglish with {name}German mit {name}
monthlyEnglish Monthly noticeGerman Monatlich kündbar
yearlyEnglish 12 monthsGerman 12 Monate
saveEnglish save {n}German {n} sparen
perMonthEnglish / monthGerman / Monat
joiningEnglish One-time joining fee {price}, waived for a 12 month term.German Einmalige Aufnahmegebühr {price}, entfällt bei 12 Monaten Laufzeit.
allPlansEnglish In every membershipGerman In jeder Mitgliedschaft
popularEnglish Most chosenGerman Am häufigsten gewählt
goalEnglish What would you like to reach?German Was möchtest du erreichen?
whenEnglish When suits you best?German Wann passt es dir am besten?
morningEnglish MorningsGerman Morgens
noonEnglish LunchtimeGerman Mittags
eveningEnglish EveningsGerman Abends
weekendEnglish WeekendsGerman Am Wochenende
nameEnglish NameGerman Name
emailEnglish EmailGerman E-Mail
phoneEnglish PhoneGerman Telefon
requiredEnglish Please fill in this field.German Bitte fülle dieses Feld aus.
invalidEmailEnglish Please enter a valid email address.German Bitte gib eine gültige E-Mail-Adresse ein.
goalRequiredEnglish Please pick a goal.German Bitte wähle ein Ziel.
sendEnglish Book a free trialGerman Kostenloses Probetraining buchen
sentEnglish See you on the matGerman Bis bald auf der Matte
sentTextEnglish We will call you within a day to find a time. Bring sports clothes and a towel, we have the rest.German Wir rufen dich innerhalb eines Tages an und finden einen Termin. Bring Sportsachen und ein Handtuch mit, den Rest haben wir.
againEnglish Book for someone elseGerman Für jemand anderen buchen
liveEnglish Live nowGerman Läuft gerade
nextEnglish NextGerman Als Nächstes
laterEnglish Later todayGerman Später heute
doneEnglish OverGerman Vorbei
todayEnglish Today in the studioGerman Heute im Studio
optionalEnglish optionalGerman optional
levelEnglish LevelGerman Niveau

Accessibility

Read from the source of the component.

  • Sets aria-describedby, aria-label, aria-live, aria-pressed, aria-selected, aria-valuemax, aria-valuemin and aria-valuenow, so screen readers announce purpose and state.
  • Uses the roles group, progressbar, radiogroup, status, tab, tablist and tabpanel.
  • Announces changes through a live region without moving focus.
  • Every field has a label, visible or for screen readers.
  • Adds text for screen readers where icons and graphics stand alone.
  • Shows a visible focus ring when used with the keyboard.
  • The server renders the starting state in full, JavaScript only adds the interaction.

Motion

  • Rises in briefly the first time it comes into view (kit-rise, useInView).
  • Moves with the scroll, its progress follows the position on the page.
  • Brings animations of its own, calmly timed and without wobble.
  • With reduced motion (prefers-reduced-motion) it stays still. 16 places in the code switch motion off then.

Frequent questions

How do I install Classes and schedules?

With aiw add @ai-website/fitness. The command puts components/ui/fitness.tsx into your project, the code is yours from then on. It brings along button, icon, section, reveal and input. It needs no further npm packages.

Which variants does Classes and schedules have?

6 variants, Weekly schedule, Class cards, Trainers, Memberships, Free trial and Today. You pick one with the variant prop, for example variant="class-cards".

Can I translate the texts of Classes and schedules?

Yes. Classes and schedules carries 46 texts of its own in English and German, such as “Mon,Tue,Wed,Thu,Fri,Sat,Sun”, “Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday” and “Week”. The language follows the KitProvider, single texts change through the labels prop.

Can an AI assistant build with Classes and schedules?

Yes. Through the MCP server of the aiw CLI, Claude, Cursor, GitHub Copilot, Windsurf, Codex and Gemini find Classes and schedules with aiw_components and install it with aiw_add @ai-website/fitness. Name the variant in your prompt, for example variant="schedule", and the assistant writes your content straight into the props.

Often searched

Jump to

Copied to the clipboard