range-calendar

Range Calendar

Lets the shopper pick a start and an end date from one or more months, within a minimum and maximum and up to a set number of days.

States: Default, Hover, Focus, Disabled, Invalid

Parts

PartFileDoes
RangeCalendarRangeCalendar.vueLets the user pick a start and end date from one or more months.
RangeCalendarCellRangeCalendarCell.vueHolds one day of the range calendar grid.
RangeCalendarCellTriggerRangeCalendarCellTrigger.vueLets the user select a day as part of the date range.
RangeCalendarGridRangeCalendarGrid.vueHolds the weekday names and days of one month.
RangeCalendarGridBodyRangeCalendarGridBody.vueHolds the week rows of one month.
RangeCalendarGridHeadRangeCalendarGridHead.vueHolds the row of weekday names above the days.
RangeCalendarGridRowRangeCalendarGridRow.vueGroups the cells of one week, or the weekday names.
RangeCalendarHeadCellRangeCalendarHeadCell.vueLabels one weekday above its column of days.
RangeCalendarHeaderRangeCalendarHeader.vueGroups the heading with the buttons that change the month.
RangeCalendarHeadingRangeCalendarHeading.vueShows the month and year currently displayed.
RangeCalendarNextButtonRangeCalendarNextButton.vueMoves the range calendar to the next month.
RangeCalendarPrevButtonRangeCalendarPrevButton.vueMoves the range calendar to the previous month.

Anatomy

<RangeCalendar>
  <RangeCalendarHeader>
    <RangeCalendarHeading />
    <RangeCalendarPrevButton />
    <RangeCalendarNextButton />
  </RangeCalendarHeader>
  <RangeCalendarGrid>
    <RangeCalendarGridHead>
      <RangeCalendarGridRow>
        <RangeCalendarHeadCell />
      </RangeCalendarGridRow>
    </RangeCalendarGridHead>
    <RangeCalendarGridBody>
      <RangeCalendarGridRow>
        <RangeCalendarCell>
          <RangeCalendarCellTrigger />
        </RangeCalendarCell>
      </RangeCalendarGridRow>
    </RangeCalendarGridBody>
  </RangeCalendarGrid>
</RangeCalendar>

Styling

PartRecipe
RangeCalendarrange-calendar
RangeCalendarCellrange-calendar-cell
RangeCalendarCellTriggerrange-calendar-cell-trigger
RangeCalendarGridRowrange-calendar-grid-row
RangeCalendarHeadCellrange-calendar-head-cell
RangeCalendarHeaderrange-calendar-header
RangeCalendarHeadingrange-calendar-heading
RangeCalendarNextButtonrange-calendar-nav
RangeCalendarPrevButtonrange-calendar-nav

Install

Writes 13 files into components/ui/range-calendar/. For agents, npx @frontic/ui docs range-calendar prints this reference as markdown; the MCP server serves the same.

npm packages
@internationalized/date
@lucide/vue
@vueuse/core
class-variance-authority
reka-ui

API reference

RangeCalendar RangeCalendar.vue

Lets the user pick a start and end date from one or more months. Renders a <div>.

PropTypeDefault
defaultPlaceholderDateValue—
defaultValueDateRange—
modelValueDateRange | null—
placeholderDateValue—
allowNonContiguousRangesbooleanfalse
pagedNavigationbooleanfalse
preventDeselectbooleanfalse
maximumDaysnumber—
weekStartsOnWeekStartsOn—
weekdayFormatWeekDayFormat'narrow'
calendarLabelstring—
fixedWeeksbooleanfalse
maxValueDateValue—
minValueDateValue—
localestring—
numberOfMonthsnumber1
disabledbooleanfalse
readonlybooleanfalse
initialFocusbooleanfalse
isDateDisabledMatcher—
isDateUnavailableMatcher—
isDateHighlightableMatcher—
dirDirection—
nextPage((placeholder: DateValue) => DateValue)—
prevPage((placeholder: DateValue) => DateValue)—
disableDaysOutsideCurrentViewbooleanfalse
fixedDate'start' | 'end'—
asChildbooleanfalse
asAsTag | Component'div'
classClassValue—
EventPayload
update:modelValuedate: DateRange
update:placeholderdate: DateValue
update:startValuedate: DateValue | undefined
update:validModelValuedate: DateRange
Data attributeValues
data-disabled—
data-invalid—
data-readonly—
Recipe range-calendarSets
base: range-calendar 1 property

RangeCalendarCell RangeCalendarCell.vue

RangeCalendarCellTrigger RangeCalendarCellTrigger.vue

RangeCalendarGrid RangeCalendarGrid.vue

RangeCalendarGridBody RangeCalendarGridBody.vue

RangeCalendarGridHead RangeCalendarGridHead.vue

RangeCalendarGridRow RangeCalendarGridRow.vue

RangeCalendarHeadCell RangeCalendarHeadCell.vue

RangeCalendarHeader RangeCalendarHeader.vue

RangeCalendarHeading RangeCalendarHeading.vue

RangeCalendarNextButton RangeCalendarNextButton.vue

RangeCalendarPrevButton RangeCalendarPrevButton.vue

Example
State