Zum Hauptinhalt springen
Version: latest
Universell einsetzbar

Calendly funktioniert sowohl auf dem Server als auch im Browser. Nutze immer den Standard-Import (z. B. @prokodo/ui/calendly) — die Library erkennt die Umgebung automatisch.

Calendly

Calendly bindet Calendly-Buchungsflows als Komponente ein und ermöglicht Terminvereinbarungen direkt im UI-Kontext. Das Embed-Skript wird lazy-geladen — erst beim ersten Client-Render eingefügt.


Übersicht

import { Calendly } from "@prokodo/ui/calendly"
;<Calendly
calendlyId="your-org/30min"
colors={{ button: "#1E90FF", background: "#FFFFFF" }}
hideCookieSettings
/>

Import

import { Calendly } from "@prokodo/ui/calendly"

Styling wird über Design-Tokens gesteuert — kein separater CSS-Import erforderlich.


Styling

Die Widget-Höhe wird über den CSS-Custom-Property --pk-calendly-height gesteuert (Standard: 700px). Überschreibe ihn auf einem übergeordneten Element:

.my-section {
--pk-calendly-height: 550px;
}

Props

PropTypStandardPflichtBeschreibung
calendlyIdstringCalendly-URL-Kennung ("username/schedule-name").
dataCalendlyDataVorbefüllungsdaten (Name, E-Mail, UTM-Parameter).
colorsCalendlyColorOptionsFarbkonfiguration für das Calendly-Widget (text, button, background).
animationPropsAnimatedPropsEingangsanimation.
hideLoadingbooleanfalseLade-Spinner ausblenden.
hideCookieSettingsbooleanfalseCalendly-DSGVO-Banner ausblenden.
hideEventTypeDetailsbooleanfalseEvent-Typ-Seitenleiste im Widget ausblenden.
hideDetailsbooleanfalseBuchungsdetails auf der Landing-Page ausblenden.
LoadingComponentReact.ComponentType<Loading />Eigene Lade-Komponente während Calendly lädt.
classNamestringCSS-Klasse am Root-Element.

Siehe src/components/calendly/Calendly.model.ts für den vollständigen CalendlyProps-Typ.


AIC-Hinweis

Verwende im Anwendungscode immer den Standard-Importpfad:

import { Calendly } from "@prokodo/ui/calendly"

Eine separate Auswahl von /client oder /lazy ist im Consumer-Code nicht erforderlich.


WCAG-2.2-Status

KriteriumBezeichnungStatusHinweis
1.1.1Nicht-Text-Inhalt (A)🔍 Manuell prüfenAlle Bilder, Icons und Medien benötigen eine Textalternative (alt, aria-label oder aria-labelledby). Rein dekorative Elemente müssen aria-hidden tragen.
2.1.1Tastatur (A)🔍 Manuell prüfenAlle Funktionalität muss allein über Tastatur bedienbar sein, ohne Timing-Anforderungen.
2.4.1Blöcke überspringen (A)🔍 Manuell prüfenEingebettete Frames oder wiederholte Navigationsblöcke müssen einen Skip-to-Content-Mechanismus bieten (z. B. iframe-Titel, Skip-Link).
4.1.2Name, Rolle, Wert (A)🔍 Manuell prüfenName, Rolle und Zustand aller interaktiven UI-Komponenten müssen via nativer HTML-Semantik oder ARIA programmatisch bestimmbar sein.

Testabdeckung: 2 jest-axe-Assertion(s) in 4 Testdatei(en) · 0 ARIA-Attribut-Vorkommen im Quellcode-Scan. Kriterien mit 🔍 erfordern manuelle Prüfung im finalen Integrations- und Theme-Kontext.

Storybook

👉 Calendly in Storybook öffnen


Quellcode

src/components/calendly/Calendly.model.ts