Skip to main content

PeriodCalendar

PeriodCalendar composes the shared Calendar component and marks inclusive date ranges supplied by the host application. The app remains responsible for collecting and storing the data.

import { PeriodCalendar, type PeriodDateRange } from "@ovok/native/ui";

const periods: PeriodDateRange[] = [
{ startDate: "2026-05-03", endDate: "2026-05-07" },
];

<PeriodCalendar
periods={periods}
selectedDate={selectedDate}
onDateSelect={setSelectedDate}
locale="en-GB"
/>

The start and end dates are inclusive. Overlapping and adjacent intervals are merged for display. The shared calendar provides navigation, selection, localization, accessibility, and theme/slot handling. This component does not infer cycle length, predict future periods or fertility windows, persist health data, request platform permissions, or provide medical advice.

PropTypeDefaultDescription
periodsreadonly PeriodDateRange[]requiredHost-supplied { startDate, endDate } intervals
periodLabelstringPeriodComplete accessible marker and legend label; supply translated text when needed
labelForPeriodDate(date: Date) => stringperiodLabelOptional date-specific accessible marker label
showLegendbooleantrueShow the marker legend
Calendar propsCalendarProps except markers and getMarkerForDate—Selection, month, locale, bounds, theme, and slots