Date Picker
親が選択値を管理します。nameを指定するとUTC変換せず、現地日付をYYYY-MM-DDで送信します。リセットも親の状態を更新します。
@neumorphism-ui/date-pickerプレビュー
インストール
インストール: date-picker
npx shadcn@latest add @neumorphism-ui/date-pickerCLI が npm 依存関係、base token、utils、コンポーネントソースを順番に処理します。
この Registry を初めて使う場合は、先に namespace の設定 を完了してください。
使い方
使い方: インストール
npx shadcn@latest add @neumorphism-ui/date-picker @neumorphism-ui/buttonImport
Date Picker の import コード
"use client";
import * as React from "react";
import { enUS, ko, ja, zhCN } from "@daypicker/react/locale";
import { DatePicker } from "@/components/ui/date-picker";
import { Button } from "@/components/ui/button";Example
Date Picker の使用コード
const locales = { en: enUS, ko, ja, zh: zhCN };
const copy = {
en: { label: "Due date", choose: "Select date", clear: "Clear date", locked: "Locked date", reset: "Reset date", hint: "Dates are stored as local calendar dates, not UTC timestamps." },
ko: { label: "마감일", choose: "날짜 선택", clear: "날짜 지우기", locked: "변경 불가 날짜", reset: "날짜 초기화", hint: "날짜는 UTC 시각이 아닌 현지 달력의 날짜로 저장됩니다." },
ja: { label: "期限", choose: "日付を選択", clear: "日付をクリア", locked: "変更不可の日付", reset: "日付をリセット", hint: "UTC時刻ではなく、現地のカレンダー日付として保存します。" },
zh: { label: "截止日期", choose: "选择日期", clear: "清除日期", locked: "锁定日期", reset: "重置日期", hint: "日期按本地日历保存,而非 UTC 时间戳。" },
};
export default function DatePickerExample({ locale = "ja" }: { locale?: keyof typeof copy }) {
const text = copy[locale];
const id = React.useId();
const [date, setDate] = React.useState<Date | undefined>(new Date(2026, 8, 15));
return <form className="grid w-full max-w-sm gap-4" onSubmit={event => event.preventDefault()} onReset={() => setDate(new Date(2026, 8, 15))}>
<label htmlFor={id} className="text-sm font-semibold">{text.label}</label>
<DatePicker id={id} name="dueDate" label={text.label} value={date} onValueChange={setDate} locale={locales[locale]} placeholder={text.choose} clearLabel={text.clear} describedBy={`${id}-hint`} disabledDates={{ before: new Date(2026, 8, 10) }} startMonth={new Date(2026, 8)} endMonth={new Date(2027, 11)} />
<p id={`${id}-hint`} className="text-sm leading-relaxed text-[var(--muted-foreground)]">{text.hint}</p>
<Button type="reset" size="sm" className="w-fit">{text.reset}</Button>
<DatePicker label={text.locked} value={new Date(2026, 8, 15)} onValueChange={() => {}} disabled locale={locales[locale]} clearLabel={text.clear} />
</form>;
}API リファレンス
| コンポーネント | プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|---|
DatePicker | value / onValueChange | Date | undefined / callback | — | 現在の日付と変更コールバック。空値はundefinedです。 |
DatePicker | label / name / describedBy | string | — | ボタン名、フォーム名、説明要素のIDです。 |
DatePicker | disabledDates / startMonth / endMonth | Matcher | Matcher[] / Date | — | 無効な日付と移動可能な月の範囲です。 |
アクセシビリティ
- 01
開くとカレンダーに、閉じるとトリガーにフォーカスが移ります。
- 02
必須値は親フォームで検証し、invalidとdescribedByでエラーを接続してください。