Calendar

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

Single date

type="single" binds one DateValue while the grid exposes selection and today states

Selected date Monday, August 31, 2026
SunMonTueWedThuFriSat
26
27
28
29
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
31
1
2
3
4
5

Two-month planning

numberOfMonths renders adjacent grids; pagedNavigation advances them as one view

Roadmap planning

Navigation advances by both visible months.

Sep 10, 2026
SMTWTFS
26
27
28
29
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
31
1
2
3
4
5
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

Bounded availability

minValue and maxValue bound the window while isDateUnavailable marks individual dates

Installation window

Sep 7

Book from Aug 31 through Sep 21.

Selected Unavailable Out of window
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

Calendar state uses immutable DateValue objects from @internationalized/date, not native Date instances. The required type prop also changes the value shape: "single" uses one value, while "multiple" uses an array.

placeholder is navigation state: it chooses the visible month when no selection exists and updates as the user pages. It is independent from value, which is the actual selection. Convert to a native date with an explicit time zone only at the formatting or integration boundary.