Range Calendar

Dates & Time
Local guide ↗ import { RangeCalendar } from "bits-ui"

Booking range

A two-month availability view with formatted start and end values

Check in

Sep 2

Check out

Sep 6
SMTWTFS
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
SMTWTFS
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
Range boundary Stay Sold out

Length and exclusion rules

minDays and maxDays bound the stay; excludeDisabled rejects ranges that cross maintenance

Workshop residency

Sep 2 – Sep 6

Select between 3 and 7 days. The maintenance date cannot be crossed.

3-day minimum 7-day maximum Maintenance: Sep 9
SMTWTFS
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3

The bound value is a pair of immutable DateValue objects from @internationalized/date: { start, end }. Either endpoint can be undefined while a range is being composed. The placeholder is separate navigation state that controls the visible month; it is not either selected endpoint in value.

excludeDisabled resets a candidate range that contains a date returned by isDateDisabled. It does not apply to isDateUnavailable dates; use the disabled predicate when a range must not cross the blocked date. Range boundaries and middle days expose separate data attributes for styling.