Knit UI
GitHub

Playground

Loading playground…

true
false
Playground
<MonthsList
  year="2026-06-15"
  size="md"
  withCellSpacing
  fullWidth={false}
  monthsListFormat="MMM"
/>

Examples

Default

Default month grid with a selected month.

Loading example…

DefaultSourceStorybook

Custom Format

Custom label format — full month names.

Loading example…

Custom FormatSourceStorybook

Bounded

Bounded — months outside [minDate, maxDate] are disabled.

Loading example…

BoundedSourceStorybook

Full Width

Full-width grid stretched to its container's width (controls share each row equally).

Loading example…

Full WidthSourceStorybook

Full Width Filled

fullWidth fills BOTH axes — in a fixed-height box the rows distribute the height and the controls grow taller.

Loading example…

Full Width FilledSourceStorybook

Styled Slots

Per-slot styles sugar — recolour every control via the control slot.

Loading example…

Styled SlotsSourceStorybook

Sizes

Every size token.

Loading example…

SizesSourceStorybook

Props

PropTypeDefaultDescription
year requiredstring2026-06-15Year for which the months list is displayed, any date within it (`YYYY-MM-DD`).
disabled systemboolean | undefined
fullWidth systemboolean | undefinedfalseStretch the grid to its container width.
getMonthControlProps((date: DateStringValue) => Partial<PickerControlProps>) | undefinedPasses props down to each month `PickerControl`, keyed by date (wins over `styles.control`).
localestring | undefineddayjs locale; falls back to the value defined in `DatesProvider`.
maxDatestring | Date | undefinedMaximum possible date in `YYYY-MM-DD` format or a `Date` object.
minDatestring | Date | undefinedMinimum possible date in `YYYY-MM-DD` format or a `Date` object.
monthsListFormatstring | undefined'MMM'dayjs format for the month labels.
shadow system"xs" | "sm" | "md" | "lg" | "xl" | "xxs" | "xxl" | undefined
size systemCalendarSize | undefined
xxs · xs · sm · md · lg · xl · xxl
'md'Width/font of the controls.
styles systemSlotStyles<MonthsListStyles> | undefinedPer-slot style sugar — props spread onto the matching styled part. Lives on `MonthsListProps` (not the inherited `MonthsListSettings`) so the `styles` shape does not flow up the shared Calendar settings chain and collide with sibling components' own `styles` props.
theme systemThemeName | null | undefinedApplies a theme to this element
withCellSpacingboolean | undefinedtrueSeparate controls/rows with spacing.

Style slots

Every part of MonthsList can be styled through the styles prop. Explicit props on the component always win over slot styles.

SlotUsage
cellstyles={{ cell: { … } }}
controlstyles={{ control: { … } }}
rootstyles={{ root: { … } }}
rowstyles={{ row: { … } }}
Accessibility & DOM props (2)
PropType
keyKey | null | undefined
refRef<TamaguiElement> | undefined

Plus 498 inherited style props from Box — the full Tamagui/React Native style surface, including token shorthands like p, mx, bg and c. See Tokens for the scales they accept, or the full list.