表单组件
日历
基于 react-day-picker 的日历组件,支持单选、多选、范围选择,可自定义语言、格式化和外观。
安装
bash
pnpm dlx shadcn@latest add calendar -c packages/react基础
6/18/2026
tsx
import { useState } from "react"
import { Calendar } from "@polyui/react/calendar"
export function CalendarBasic() {
const [date, setDate] = useState<Date | undefined>(new Date())
return (
<div className="space-y-2 text-center">
<Calendar mode="single" selected={date} onSelect={setDate} className="rounded-xl border border-border" />
{date && <p className="text-sm text-muted-foreground">{date.toLocaleDateString("en-US")}</p>}
</div>
)
}范围选择
tsx
import { Calendar } from "@polyui/react/calendar"
export function CalendarRange() {
return (
<div className="space-y-2 text-center">
<Calendar mode="range" numberOfMonths={2} className="rounded-xl border border-border" />
</div>
)
}属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
mode | "single" | "multiple" | "range" | — | 选择模式。 |
selected | Date | Date[] | DateRange | undefined | — | 当前选中的日期(受控)。 |
onSelect | (date: ...) => void | — | 日期选择回调。 |
showOutsideDays | boolean | true | 是否显示当月以外的日期。 |
captionLayout | "label" | "dropdown" | "dropdown-months" | "dropdown-years" | "label" | 月份/年份标题的显示方式。 |
locale | Locale | — | date-fns 语言包,用于本地化显示。 |
numberOfMonths | number | 1 | 同时显示的月份数量。 |