minerva-design 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/custom-elements.json +663 -0
  3. package/dist/angular/fesm2022/minerva-angular.mjs +1163 -34
  4. package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
  5. package/dist/angular/types/minerva-angular.d.ts +237 -1
  6. package/dist/core/calendar-date.d.cts +5 -0
  7. package/dist/core/calendar-date.d.ts +5 -0
  8. package/dist/core/contracts.cjs +1 -1
  9. package/dist/core/contracts.cjs.map +1 -1
  10. package/dist/core/contracts.js +1 -1
  11. package/dist/core/contracts.js.map +1 -1
  12. package/dist/core/index.cjs +6 -6
  13. package/dist/core/index.cjs.map +1 -1
  14. package/dist/core/index.js +671 -630
  15. package/dist/core/index.js.map +1 -1
  16. package/dist/core/styling-hooks/components/date-picker.d.cts +45 -0
  17. package/dist/core/styling-hooks/components/date-picker.d.ts +45 -0
  18. package/dist/core/styling-hooks/manifest.d.cts +44 -0
  19. package/dist/core/styling-hooks/manifest.d.ts +44 -0
  20. package/dist/core/styling-hooks.cjs +1 -1
  21. package/dist/core/styling-hooks.cjs.map +1 -1
  22. package/dist/core/styling-hooks.js +62 -0
  23. package/dist/core/styling-hooks.js.map +1 -1
  24. package/dist/native/components/Calendar/Calendar.cjs +1 -1
  25. package/dist/native/components/Calendar/Calendar.cjs.map +1 -1
  26. package/dist/native/components/Calendar/Calendar.d.cts +2 -0
  27. package/dist/native/components/Calendar/Calendar.d.ts +2 -0
  28. package/dist/native/components/Calendar/Calendar.js +115 -112
  29. package/dist/native/components/Calendar/Calendar.js.map +1 -1
  30. package/dist/native/components/Checkbox/Checkbox.cjs +1 -1
  31. package/dist/native/components/Checkbox/Checkbox.cjs.map +1 -1
  32. package/dist/native/components/Checkbox/Checkbox.js +8 -8
  33. package/dist/native/components/Checkbox/CheckboxGroup.cjs +1 -1
  34. package/dist/native/components/Checkbox/CheckboxGroup.cjs.map +1 -1
  35. package/dist/native/components/Checkbox/CheckboxGroup.js +6 -6
  36. package/dist/native/components/DatePicker/DatePicker.cjs +2 -0
  37. package/dist/native/components/DatePicker/DatePicker.cjs.map +1 -0
  38. package/dist/native/components/DatePicker/DatePicker.d.cts +40 -0
  39. package/dist/native/components/DatePicker/DatePicker.d.ts +40 -0
  40. package/dist/native/components/DatePicker/DatePicker.js +110 -0
  41. package/dist/native/components/DatePicker/DatePicker.js.map +1 -0
  42. package/dist/native/components/DatePicker/index.cjs +1 -0
  43. package/dist/native/components/DatePicker/index.d.cts +2 -0
  44. package/dist/native/components/DatePicker/index.d.ts +2 -0
  45. package/dist/native/components/DatePicker/index.js +2 -0
  46. package/dist/native/components/Radio/RadioGroup.cjs +1 -1
  47. package/dist/native/components/Radio/RadioGroup.cjs.map +1 -1
  48. package/dist/native/components/Radio/RadioGroup.js +9 -9
  49. package/dist/native/components/Switch/Switch.cjs +1 -1
  50. package/dist/native/components/Switch/Switch.cjs.map +1 -1
  51. package/dist/native/components/Switch/Switch.js +23 -23
  52. package/dist/native/components/Switch/Switch.js.map +1 -1
  53. package/dist/native/index.cjs +1 -1
  54. package/dist/native/index.d.cts +1 -0
  55. package/dist/native/index.d.ts +1 -0
  56. package/dist/native/index.js +70 -68
  57. package/dist/native/source/components/Calendar/Calendar.tsx +14 -6
  58. package/dist/native/source/components/DatePicker/DatePicker.tsx +201 -0
  59. package/dist/native/source/components/DatePicker/index.ts +2 -0
  60. package/dist/native/source/index.ts +1 -0
  61. package/dist/native/source/manifest.ts +6 -0
  62. package/dist/react/components/DatePicker/DatePicker.cjs +2 -0
  63. package/dist/react/components/DatePicker/DatePicker.cjs.map +1 -0
  64. package/dist/react/components/DatePicker/DatePicker.d.cts +13 -0
  65. package/dist/react/components/DatePicker/DatePicker.d.ts +13 -0
  66. package/dist/react/components/DatePicker/DatePicker.js +315 -0
  67. package/dist/react/components/DatePicker/DatePicker.js.map +1 -0
  68. package/dist/react/components/DatePicker/datePicker.module.scss.cjs +2 -0
  69. package/dist/react/components/DatePicker/datePicker.module.scss.cjs.map +1 -0
  70. package/dist/react/components/DatePicker/datePicker.module.scss.js +23 -0
  71. package/dist/react/components/DatePicker/datePicker.module.scss.js.map +1 -0
  72. package/dist/react/components/DatePicker/index.cjs +1 -0
  73. package/dist/react/components/DatePicker/index.d.cts +5 -0
  74. package/dist/react/components/DatePicker/index.d.ts +5 -0
  75. package/dist/react/components/DatePicker/index.js +3 -0
  76. package/dist/react/components/DatePicker/types.d.cts +97 -0
  77. package/dist/react/components/DatePicker/types.d.ts +97 -0
  78. package/dist/react/components/Tooltip/Tooltip.cjs +1 -1
  79. package/dist/react/components/Tooltip/Tooltip.cjs.map +1 -1
  80. package/dist/react/components/Tooltip/Tooltip.js +5 -5
  81. package/dist/react/components/Tooltip/Tooltip.js.map +1 -1
  82. package/dist/react/components/index.cjs +1 -1
  83. package/dist/react/components/index.d.cts +1 -0
  84. package/dist/react/components/index.d.ts +1 -0
  85. package/dist/react/components/index.js +3 -1
  86. package/dist/react/index.cjs +1 -1
  87. package/dist/react/index.js +7 -6
  88. package/dist/react/style.css +1 -0
  89. package/dist/react/styles/date-picker.css +7 -0
  90. package/dist/taro/date-picker.d.ts +20 -0
  91. package/dist/taro/index.d.ts +1 -0
  92. package/dist/taro/index.js +1155 -990
  93. package/dist/uni/DatePicker.vue +225 -0
  94. package/dist/uni/DatePicker.vue.d.ts +36 -0
  95. package/dist/uni/MonthCalendar.vue +2 -0
  96. package/dist/uni/MonthCalendar.vue.d.ts +2 -0
  97. package/dist/uni/index.d.ts +1 -0
  98. package/dist/uni/index.js +1 -0
  99. package/dist/uni/manifest.d.ts +7 -0
  100. package/dist/uni/manifest.js +8 -0
  101. package/dist/vue/components/DatePicker/DatePicker.vue.d.ts +36 -0
  102. package/dist/vue/components/DatePicker/DatePicker.vue.js +7 -0
  103. package/dist/vue/components/DatePicker/DatePicker.vue.js.map +1 -0
  104. package/dist/vue/components/DatePicker/DatePicker.vue_vue_type_script_setup_true_lang.js +380 -0
  105. package/dist/vue/components/DatePicker/DatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  106. package/dist/vue/components/DatePicker/index.d.ts +2 -0
  107. package/dist/vue/components/DatePicker/index.js +2 -0
  108. package/dist/vue/components/DatePicker/types.d.ts +26 -0
  109. package/dist/vue/components/MonthCalendar/MonthCalendar.vue.d.ts +1 -1
  110. package/dist/vue/global.d.ts +108 -0
  111. package/dist/vue/groups/forms-pickers.d.ts +1 -0
  112. package/dist/vue/groups/forms-pickers.js +5 -2
  113. package/dist/vue/groups/forms-pickers.js.map +1 -1
  114. package/dist/vue/index.js +95 -94
  115. package/dist/weapp/controls.js +259 -76
  116. package/dist/weapp/date-picker/index.js +1 -0
  117. package/dist/weapp/date-picker/index.json +1 -0
  118. package/dist/weapp/date-picker/index.wxml +1 -0
  119. package/dist/weapp/date-picker/index.wxss +1 -0
  120. package/dist/weapp/types.d.ts +19 -0
  121. package/dist/web-components/cdn/minerva.js +461 -335
  122. package/dist/web-components/cdn/minerva.js.map +1 -1
  123. package/dist/web-components/components/date-picker/date-picker.d.ts +110 -0
  124. package/dist/web-components/components/date-picker/date-picker.js +378 -0
  125. package/dist/web-components/components/date-picker/date-picker.js.map +1 -0
  126. package/dist/web-components/elements/date-picker.d.ts +1 -0
  127. package/dist/web-components/elements/date-picker.js +8 -0
  128. package/dist/web-components/elements/date-picker.js.map +1 -0
  129. package/dist/web-components/html-custom-data.json +85 -0
  130. package/dist/web-components/index.d.ts +1 -0
  131. package/dist/web-components/index.js +8 -6
  132. package/dist/web-components/styles/DatePicker/datePicker.css.js +6 -0
  133. package/dist/web-components/styles/DatePicker/datePicker.css.js.map +1 -0
  134. package/dist/web-components/types/react.d.ts +12 -0
  135. package/dist/web-components/types/solid.d.ts +9 -0
  136. package/dist/web-components/types/svelte.d.ts +9 -0
  137. package/dist/web-components/types/vue.d.ts +10 -0
  138. package/package.json +9 -1
@@ -69,6 +69,8 @@ export interface CalendarProps extends Omit<ViewProps, "style" | "children"> {
69
69
  minDate?: Date;
70
70
  /** Latest selectable day (later days are disabled) */
71
71
  maxDate?: Date;
72
+ /** Locale of calendar month and accessible date names. */
73
+ locale?: string;
72
74
  /** Extra disabled days */
73
75
  disabledDate?: (date: Date) => boolean;
74
76
  /**
@@ -286,6 +288,7 @@ function CalendarView({
286
288
  maxDate,
287
289
  disabledDate,
288
290
  firstDayOfWeek = 0,
291
+ locale,
289
292
  size = "medium",
290
293
  disabled = false,
291
294
  previousMonthLabel,
@@ -380,7 +383,7 @@ function CalendarView({
380
383
 
381
384
  const fullDate = useMemo(() => {
382
385
  try {
383
- const format = new Intl.DateTimeFormat(language, {
386
+ const format = new Intl.DateTimeFormat(locale ?? language, {
384
387
  weekday: "long",
385
388
  year: "numeric",
386
389
  month: "long",
@@ -390,7 +393,7 @@ function CalendarView({
390
393
  } catch {
391
394
  return (date: Date) => date.toDateString();
392
395
  }
393
- }, [language]);
396
+ }, [language, locale]);
394
397
 
395
398
  const lead = (first.getDay() - firstDayOfWeek + 7) % 7;
396
399
  const daysInMonth = localDate(
@@ -587,10 +590,15 @@ function CalendarView({
587
590
  ]}
588
591
  {...part("calendar", "month-title")}
589
592
  >
590
- {translate("calendar.monthTitle", {
591
- year: first.getFullYear(),
592
- month: first.getMonth() + 1,
593
- })}
593
+ {locale
594
+ ? new Intl.DateTimeFormat(locale, {
595
+ year: "numeric",
596
+ month: "long",
597
+ }).format(first)
598
+ : translate("calendar.monthTitle", {
599
+ year: first.getFullYear(),
600
+ month: first.getMonth() + 1,
601
+ })}
594
602
  </Text>
595
603
  {navButton(1)}
596
604
  </View>
@@ -0,0 +1,201 @@
1
+ import { useState } from "react";
2
+ import {
3
+ Pressable,
4
+ Text,
5
+ View,
6
+ type StyleProp,
7
+ type ViewStyle,
8
+ } from "react-native";
9
+ import { dayKey, monthStart, parseDayKey } from "../../../../core/index.js";
10
+ import { useI18n, useTheme } from "../../theme/MinervaProvider";
11
+ import { useControllable } from "../../internal/useControllable";
12
+ import { useFormControlProps } from "../../internal/FormControlContext";
13
+ import { bindFormControl } from "../../internal/formControl";
14
+ import { textStyle } from "../../internal/styles";
15
+ import { part } from "../../internal/parts";
16
+ import { Button } from "../Button";
17
+ import { Calendar } from "../Calendar";
18
+ import { Dialog } from "../Dialog";
19
+
20
+ export interface DatePickerProps {
21
+ /** Selected local date, YYYY-MM-DD. null and "" remain controlled empty values. */
22
+ value?: string | null;
23
+ /** Initial local date while uncontrolled. */
24
+ defaultValue?: string;
25
+ /** Selected YYYY-MM-DD day, or "" when cleared. */
26
+ onChange?: (value: string) => void;
27
+ /** Called when the calendar opens or closes. */
28
+ onOpenChange?: (open: boolean) => void;
29
+ placeholder?: string;
30
+ /** Visible label and accessible name. */
31
+ label?: string;
32
+ accessibilityLabel?: string;
33
+ accessibilityHint?: string;
34
+ nativeID?: string;
35
+ /** @default false */
36
+ disabled?: boolean;
37
+ /** Prevents opening, selection and clearing. */
38
+ readOnly?: boolean;
39
+ invalid?: boolean;
40
+ /** @default true */
41
+ clearable?: boolean;
42
+ /** @default "medium" */
43
+ size?: "small" | "medium" | "large";
44
+ /** Earliest selectable local day, YYYY-MM-DD, inclusive. */
45
+ minDate?: string;
46
+ /** Latest selectable local day, YYYY-MM-DD, inclusive. */
47
+ maxDate?: string;
48
+ /** Locale for calendar month and date names; defaults to provider language. */
49
+ locale?: string;
50
+ style?: StyleProp<ViewStyle>;
51
+ testID?: string;
52
+ }
53
+
54
+ /**
55
+ * Native touch date field with an accessible calendar dialog. Selection commits
56
+ * immediately; clearing emits "". Dates use local YYYY-MM-DD strings, matching
57
+ * the web DatePicker value contract; native input uses day buttons, not typing.
58
+ */
59
+ export function DatePicker(props: DatePickerProps) {
60
+ const {
61
+ value,
62
+ defaultValue,
63
+ onChange,
64
+ onOpenChange,
65
+ placeholder,
66
+ label,
67
+ accessibilityLabel,
68
+ accessibilityHint,
69
+ nativeID,
70
+ disabled = false,
71
+ readOnly = false,
72
+ invalid = false,
73
+ clearable = true,
74
+ size = "medium",
75
+ minDate,
76
+ maxDate,
77
+ locale,
78
+ style,
79
+ testID,
80
+ } = useFormControlProps(props);
81
+ const { tokens: t } = useTheme();
82
+ const { t: translate, language } = useI18n();
83
+ const [current, setCurrent] = useControllable<string>(
84
+ value === null ? "" : value,
85
+ defaultValue ?? "",
86
+ onChange,
87
+ );
88
+ const [open, setOpen] = useState(false);
89
+ const [month, setMonth] = useState(() =>
90
+ monthStart(parseDayKey(current) ?? new Date()),
91
+ );
92
+ const locked = disabled || readOnly;
93
+ const accessibleName =
94
+ label ?? accessibilityLabel ?? translate("datePicker.label");
95
+ const displayValue =
96
+ current || placeholder || translate("datePicker.placeholder");
97
+ const outsideRange = (key: string) =>
98
+ !!((minDate && key < minDate) || (maxDate && key > maxDate));
99
+ const show = (next: boolean) => {
100
+ if (next && locked) return;
101
+ if (next === open) return;
102
+ if (next) {
103
+ let date = parseDayKey(current) ?? new Date();
104
+ if (minDate && dayKey(date) < minDate)
105
+ date = parseDayKey(minDate) ?? date;
106
+ if (maxDate && dayKey(date) > maxDate)
107
+ date = parseDayKey(maxDate) ?? date;
108
+ setMonth(monthStart(date));
109
+ }
110
+ setOpen(next);
111
+ onOpenChange?.(next);
112
+ };
113
+ const select = (date: Date) => {
114
+ const key = dayKey(date);
115
+ if (locked || outsideRange(key)) return;
116
+ setCurrent(key);
117
+ show(false);
118
+ };
119
+ const today = new Date();
120
+ return (
121
+ <View
122
+ {...part("date-picker", "root", { disabled, readOnly, size })}
123
+ style={style}
124
+ testID={testID}
125
+ >
126
+ {label && (
127
+ <Text style={[textStyle(t), { marginBottom: t.space["1"] }]}>
128
+ {label}
129
+ </Text>
130
+ )}
131
+ <Pressable
132
+ accessibilityRole="combobox"
133
+ accessibilityLabel={accessibleName}
134
+ accessibilityHint={accessibilityHint}
135
+ nativeID={nativeID}
136
+ accessibilityValue={{ text: displayValue }}
137
+ accessibilityState={{ expanded: open && !locked, disabled: locked }}
138
+ aria-invalid={invalid || undefined}
139
+ disabled={locked}
140
+ onPress={() => show(true)}
141
+ style={{
142
+ minHeight: t.touchTargetMin,
143
+ justifyContent: "center",
144
+ padding:
145
+ t.space[size === "small" ? "2" : size === "large" ? "4" : "3"],
146
+ borderWidth: 1,
147
+ borderColor: t.colors[invalid ? "danger-color" : "border-color"],
148
+ borderRadius: t.radius.md,
149
+ opacity: disabled ? 0.5 : 1,
150
+ }}
151
+ >
152
+ <Text
153
+ style={[
154
+ textStyle(t),
155
+ { color: t.colors[current ? "text-color" : "text-muted-color"] },
156
+ ]}
157
+ >
158
+ {displayValue}
159
+ </Text>
160
+ </Pressable>
161
+ {clearable && current && !locked && (
162
+ <Button
163
+ variant="link"
164
+ accessibilityLabel={translate("datePicker.clear")}
165
+ onPress={() => setCurrent("")}
166
+ >
167
+ {translate("datePicker.clear")}
168
+ </Button>
169
+ )}
170
+ <Dialog
171
+ open={open && !locked}
172
+ onOpenChange={show}
173
+ title={accessibleName}
174
+ footer={
175
+ <Button
176
+ variant="ghost"
177
+ disabled={locked || outsideRange(dayKey(today))}
178
+ onPress={() => select(today)}
179
+ >
180
+ {translate("datePicker.today")}
181
+ </Button>
182
+ }
183
+ >
184
+ <Calendar
185
+ value={parseDayKey(current) ?? null}
186
+ month={month}
187
+ onMonthChange={setMonth}
188
+ onSelect={select}
189
+ minDate={minDate ? (parseDayKey(minDate) ?? undefined) : undefined}
190
+ maxDate={maxDate ? (parseDayKey(maxDate) ?? undefined) : undefined}
191
+ firstDayOfWeek={1}
192
+ disabled={locked}
193
+ size={size}
194
+ locale={locale ?? language}
195
+ />
196
+ </Dialog>
197
+ </View>
198
+ );
199
+ }
200
+
201
+ bindFormControl(DatePicker, { emptyValue: "", commitOnChange: true });
@@ -0,0 +1,2 @@
1
+ export { DatePicker } from "./DatePicker";
2
+ export type { DatePickerProps } from "./DatePicker";
@@ -35,6 +35,7 @@ export * from "./components/ImagePreview";
35
35
  export * from "./components/Alert";
36
36
  export * from "./components/ActionSheet";
37
37
  export * from "./components/DatetimePicker";
38
+ export * from "./components/DatePicker";
38
39
  export * from "./components/Empty";
39
40
  export * from "./components/Loading";
40
41
  export * from "./components/Picker";
@@ -58,6 +58,12 @@ export const NATIVE_COMPONENTS: readonly NativeComponent[] = [
58
58
  },
59
59
  { name: "Picker", contract: null, aliases: ["PickerView"] },
60
60
  { name: "DatetimePicker", contract: null },
61
+ {
62
+ name: "DatePicker",
63
+ contract: "DatePicker",
64
+ notes:
65
+ "Native touch field with calendar dialog: local YYYY-MM-DD values, immediate day selection, bounds and clearing; no text entry or DOM keyboard grid.",
66
+ },
61
67
  { name: "Rating", contract: "Rating" },
62
68
  { name: "SearchBar", contract: null },
63
69
  {
@@ -0,0 +1,2 @@
1
+ "use client";const e=require("../../_virtual/_rolldown/runtime.cjs");require("../../utils/cn.cjs");const t=require("../../hooks/useI18n.cjs"),n=require("../../internal/stylingHooks.cjs"),r=require("../../internal/devWarnings.cjs"),i=require("../../internal/icons.cjs"),a=require("../../internal/mergeRefs.cjs"),ee=require("../../internal/dataAttributes.cjs"),o=require("../../internal/useControllableState.cjs"),s=require("../FormControl/context.cjs"),te=require("../../internal/useDismissableLayer.cjs");require("../../internal/direction.cjs");const ne=require("../../internal/FloatingPanel.cjs"),re=require("../IconButton/IconButton.cjs");require("../IconButton/index.cjs");const ie=require("../Input/Input.cjs");require("../Input/index.cjs");const c=require("../../internal/tabbing.cjs"),l=require("./datePicker.module.scss.cjs");let u=require("react");u=e.__toESM(u,1);let d=require("../../../core/index.cjs"),f=require("react/jsx-runtime"),ae=require("../../../dom/index.cjs");var oe=[`mon`,`tue`,`wed`,`thu`,`fri`,`sat`,`sun`],p=({ref:e,value:p,defaultValue:m,onChange:h,placeholder:se,label:g,"aria-label":_,"aria-labelledby":ce,"aria-describedby":le,id:ue,required:de,readOnly:fe,invalid:pe,name:me=`date-picker`,disabled:he,clearable:v=!0,size:y=`medium`,minDate:b,maxDate:x,locale:ge,className:_e=``,style:ve,onOpenChange:ye,...be})=>{let{t:S,language:xe}=t.default(),C=(0,u.useId)(),w=s.useFormControlContext(),T=s.useFormControlProps({id:ue,"aria-describedby":le}),E=he??w?.disabled??!1,D=fe??w?.readOnly??!1,Se=de??w?.required??!1,O=pe??w?.invalid??!1,k=g??_??S(`datePicker.label`),A=ce??(w&&!g&&!_?w.labelId:void 0);process.env.NODE_ENV!==`production`&&r.warnControlledProps(`DatePicker`,{prop:`value`,value:p===null?``:p,defaultProp:`defaultValue`,defaultValue:m,handlerProp:`onChange`,handler:h,locked:E||D,lockHint:"set `disabled` / `readOnly`"});let[j,Ce]=o.useControllableState({value:p===null?``:p,defaultValue:m??``,name:`DatePicker`}),[M,N]=o.useControllableState({defaultValue:!1,onChange:ye,name:`DatePicker`,prop:`open`}),[P,F]=(0,u.useState)(null),[I,we]=(0,u.useState)(null),[Te,Ee]=(0,u.useState)(null),De=a.useMergedRefs(we,e),L=(0,u.useRef)(null),Oe=te.useLayerParent(),ke=(0,d.parseDayKey)(j||``)??new Date,[R,z]=(0,u.useState)(()=>(0,d.monthStart)(ke)),[B,V]=(0,u.useState)(``),[Ae,H]=(0,u.useState)(!1),U=(0,u.useRef)(new Map),W=(0,u.useRef)(null),G=e=>!!(b&&e<b||x&&e>x),K=e=>{Ce(e),h?.(e)},q=e=>{let t=(0,d.parseDayKey)(e);t&&z((0,d.monthStart)(t))},je=e=>{if(F(e),e===``){K(``);return}let t=(0,d.parseDayKey)(e,!0);if(t){let e=(0,d.dayKey)(t);G(e)||(K(e),z((0,d.monthStart)(t)))}},Me=()=>{if(P===null)return;let e=P.trim();if(e===``)j&&K(``);else{let t=(0,d.parseDayKey)(e,!1);if(t){let e=(0,d.dayKey)(t);!G(e)&&e!==j&&(K(e),z((0,d.monthStart)(t)))}}F(null)},J=()=>{F(null),K(``),I?.focus()},Y=e=>{let t=(0,d.dayKey)(e);E||D||G(t)||(F(null),K(t),z((0,d.monthStart)(e)),N(!1),I?.focus())},Ne=()=>{E||D||(H(!1),M||q(j),N(e=>!e))},X=(0,d.monthStart)(R),Pe=(0,d.addDays)(X,-((X.getDay()+6)%7)),Fe=Array.from({length:42},(e,t)=>(0,d.addDays)(Pe,t)),Ie=Fe.map(d.dayKey),Z=new Date,Q=(0,d.dayKey)(Z),$=[B,j,(0,d.sameMonth)(Z,R)?Q:``,(0,d.dayKey)(X)].find(e=>e&&Ie.includes(e)),Le=(0,d.dayKey)(X);(0,u.useEffect)(()=>{if(!M||E||!W.current)return;let e=U.current.get(W.current);e&&(W.current=null,e.focus())},[M,Le,B,E]);let Re=(e,t)=>{if(E||D)return;if(e.key===`Enter`||e.key===` `){e.preventDefault(),e.repeat||Y(t);return}let n,r=(t.getDay()+6)%7;switch((0,ae.logicalArrowKey)(e.key,e.currentTarget)){case`ArrowLeft`:n=(0,d.addDays)(t,-1);break;case`ArrowRight`:n=(0,d.addDays)(t,1);break;case`ArrowUp`:n=(0,d.addDays)(t,-7);break;case`ArrowDown`:n=(0,d.addDays)(t,7);break;case`Home`:n=(0,d.addDays)(t,-r);break;case`End`:n=(0,d.addDays)(t,6-r);break;case`PageUp`:case`PageDown`:{let r=(e.key===`PageUp`?-1:1)*(e.shiftKey?12:1),i=(0,d.monthStart)(t,r),a=(0,d.addDays)((0,d.monthStart)(i,1),-1).getDate();n=(0,d.localDate)(i.getFullYear(),i.getMonth(),Math.min(t.getDate(),a));break}default:return}e.preventDefault();let i=(0,d.dayKey)(n);W.current=i,V(i),(0,d.sameMonth)(n,R)||z((0,d.monthStart)(n))},ze=e=>{let t=e.currentTarget;!I||e.key!==`Tab`||e.altKey||e.ctrlKey||e.metaKey||!c.tabLeavesPanel(t,e.target,e.shiftKey)||(e.preventDefault(),(e.shiftKey?I:c.adjacentTabbable(I,Oe??I.ownerDocument.body,!1)??I).focus(),N(!1))},Be=new Intl.DateTimeFormat(ge??xe,{year:`numeric`,month:`long`}).format(X),Ve=P??j;return(0,f.jsxs)(`div`,{...ee.pickDataAttributes(be),...n.hooks(`date-picker`,`root`,{state:M&&!E&&!D?`open`:`closed`,disabled:E,readonly:D,invalid:O,size:y}),ref:Ee,className:(0,d.cn)(l.default.datePicker,_e),style:ve,onClick:e=>{e.target===I&&Ne()},children:[(0,f.jsx)(s.FormControlContext.Provider,{value:null,children:(0,f.jsx)(ie.Input,{ref:De,value:Ve,placeholder:se??S(`datePicker.placeholder`),id:T.id,"aria-label":k,"aria-labelledby":A,"aria-describedby":T[`aria-describedby`],"aria-invalid":O||void 0,"aria-readonly":D||void 0,required:Se,readOnly:D,onChange:e=>je(e.target.value),onBlur:Me,onKeyDown:e=>{e.key===`ArrowDown`&&(e.preventDefault(),M?L.current?.querySelector(`[role="gridcell"][tabindex="0"]`)?.focus():(q(j),V(j||Q),H(!0),N(!0)))},name:me,disabled:E,size:y,suffix:v&&j&&!E&&!D?(0,f.jsx)(re.default,{icon:(0,f.jsx)(i.IconX,{"aria-hidden":!0,focusable:!1}),size:`small`,"aria-label":S(`datePicker.clear`),onClick:J,className:l.default.clearButton}):(0,f.jsx)(`span`,{className:l.default.calendarIcon,"aria-hidden":`true`,...n.hooks(`date-picker`,`icon`),children:(0,f.jsx)(i.IconCalendar,{})})})}),(0,f.jsx)(ne.FloatingPanel,{ref:L,open:M&&!E&&!D,anchor:I,placement:`bottom-start`,branches:()=>[Te],onDismiss:()=>N(!1),returnFocusOnEscape:()=>I,focusable:!0,role:`dialog`,tabIndex:-1,"aria-label":k,"aria-labelledby":A,className:l.default.popup,onKeyDown:ze,...n.hooks(`date-picker`,`content`,{state:`open`}),children:(0,f.jsxs)(`div`,{className:l.default.panel,children:[(0,f.jsxs)(`div`,{className:l.default.header,children:[(0,f.jsx)(`h2`,{id:C,className:l.default.heading,"aria-live":`polite`,children:Be}),(0,f.jsxs)(`div`,{className:l.default.navGroup,children:[(0,f.jsx)(`button`,{type:`button`,className:l.default.navButton,"aria-label":S(`monthCalendar.previousMonth`),onClick:()=>z((0,d.monthStart)(R,-1)),children:(0,f.jsx)(i.IconChevronLeft,{"aria-hidden":!0,focusable:!1})}),(0,f.jsx)(`button`,{type:`button`,className:l.default.navButton,"aria-label":S(`monthCalendar.nextMonth`),onClick:()=>z((0,d.monthStart)(R,1)),children:(0,f.jsx)(i.IconChevronRight,{"aria-hidden":!0,focusable:!1})})]})]}),(0,f.jsxs)(`div`,{role:`grid`,"aria-labelledby":C,className:l.default.grid,children:[(0,f.jsx)(`div`,{role:`row`,className:l.default.week,children:oe.map(e=>(0,f.jsx)(`div`,{role:`columnheader`,className:l.default.weekday,children:S(`monthCalendar.weekdays.${e}`)},e))}),Array.from({length:6},(e,t)=>(0,f.jsx)(`div`,{role:`row`,className:l.default.week,children:Fe.slice(t*7,t*7+7).map(e=>{let t=(0,d.dayKey)(e),n=j===t,r=!(0,d.sameMonth)(e,R),i=t===Q,a=G(t);return(0,f.jsx)(`div`,{role:`gridcell`,className:l.default.day,ref:e=>{e?(U.current.set(t,e),(Ae&&t===$||W.current===t)&&(W.current=null,e.focus())):U.current.delete(t)},"data-date":t,"data-outside":r?``:void 0,"aria-label":t,"aria-selected":n,"aria-current":i?`date`:void 0,"aria-disabled":a||void 0,tabIndex:!a&&t===$?0:-1,onFocus:()=>V(t),onClick:()=>Y(e),onKeyDown:t=>Re(t,e),children:e.getDate()},t)})},t))]}),(0,f.jsxs)(`div`,{className:l.default.footer,children:[(0,f.jsx)(`button`,{type:`button`,className:l.default.footerButton,disabled:G(Q),onClick:()=>Y(Z),children:S(`datePicker.today`)}),v&&j&&(0,f.jsx)(`button`,{type:`button`,className:l.default.footerButton,onClick:()=>{J(),N(!1)},children:S(`datePicker.clear`)})]})]})})]})},m=u.default.memo(p);exports.DatePicker=p,exports.default=m;
2
+ //# sourceMappingURL=DatePicker.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePicker.cjs","names":["useI18n","useId","useFormControlContext","useFormControlProps","useControllableState","useState","useMergedRefs","useRef","useLayerParent","parseDayKey","monthStart","dayKey","addDays","sameMonth","logicalArrowKey","localDate","tabLeavesPanel","adjacentTabbable","pickDataAttributes","hooks","cn","styles","FormControlContext","Input","IconButton","IconX","IconCalendar","FloatingPanel","IconChevronLeft","IconChevronRight","React","require_runtime","require_useI18n","require_stylingHooks","require_devWarnings","require_icons","require_mergeRefs","require_dataAttributes","require_useControllableState","require_context","require_useDismissableLayer","require_FloatingPanel","require_IconButton","require_Input","require_tabbing","require_datePicker_module","react","_minerva_core","react_jsx_runtime","_minerva_dom","WEEKDAYS","DatePicker","ariaLabel","ariaLabelledBy","ariaDescribedBy","requiredProp","readOnlyProp","invalidProp","disabledProp","rest","headingId","fc","fieldProps","disabled","readOnly","required","invalid","accessibleName","label","t","labelledBy","value","onChange","current","setCurrent","defaultValue","open","setOpen","onOpenChange","draft","setDraft","input","setInput","field","setField","setInputRef","ref","panelRef","tabContainer","initialDate","month","setMonth","focusedKey","setFocusedKey","focusPanelOnOpen","setFocusPanelOnOpen","cells","pendingFocus","isDayDisabled","minDate","key","maxDate","commit","next","syncMonthFromValue","parsed","val","handleInputChange","text","handleInputBlur","trimmed","handleClear","selectDate","date","toggle","prev","first","start","days","index","visibleKeys","today","todayKey","activeKey","monthKey","cell","handleDayKeyDown","event","target","weekday","offset","lastDay","nextKey","handlePanelKeyDown","panel","heading","locale","language","displayValue","className","placeholder","clearable","day","week","selected","outside","isToday","dayDisabled","element","DatePicker_default"],"sources":["../../../../../react/src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import React, { useEffect, useId, useRef, useState } from \"react\";\nimport {\n addDays,\n dayKey,\n localDate,\n monthStart,\n parseDayKey,\n sameMonth,\n} from \"@minerva/core\";\nimport { cn } from \"../../utils/cn\";\nimport {\n IconCalendar,\n IconChevronLeft,\n IconChevronRight,\n IconX,\n} from \"../../internal/icons\";\nimport { Input } from \"../Input\";\nimport { IconButton } from \"../IconButton\";\nimport { FloatingPanel } from \"../../internal/FloatingPanel\";\nimport { useLayerParent } from \"../../internal/useDismissableLayer\";\nimport { adjacentTabbable, tabLeavesPanel } from \"../../internal/tabbing\";\nimport { useControllableState } from \"../../internal/useControllableState\";\nimport { warnControlledProps } from \"../../internal/devWarnings\";\nimport { useMergedRefs } from \"../../internal/mergeRefs\";\nimport useI18n from \"../../hooks/useI18n\";\nimport { pickDataAttributes } from \"../../internal/dataAttributes\";\nimport { logicalArrowKey } from \"../../internal/direction\";\nimport {\n FormControlContext,\n useFormControlContext,\n useFormControlProps,\n} from \"../FormControl/context\";\nimport type { DatePickerProps } from \"./types\";\nimport { hooks } from \"../../internal/stylingHooks\";\nimport styles from \"./datePicker.module.scss\";\n\nconst WEEKDAYS = [\"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\", \"sun\"] as const;\n\n/**\n * DatePicker: type a `\"YYYY-MM-DD\"` date or pick a day from a popup month\n * calendar grid. Works controlled (`value` + `onChange`) or uncontrolled\n * (`defaultValue`). Inside a FormControl the input picks up the field's id,\n * label, description, invalid, required, disabled and read-only state\n * (explicit props win).\n */\nconst DatePicker = ({\n ref,\n value,\n defaultValue,\n onChange,\n placeholder,\n label,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n id,\n required: requiredProp,\n readOnly: readOnlyProp,\n invalid: invalidProp,\n name = \"date-picker\",\n disabled: disabledProp,\n clearable = true,\n size = \"medium\",\n minDate,\n maxDate,\n locale,\n className = \"\",\n style,\n onOpenChange,\n ...rest\n}: DatePickerProps) => {\n const { t, language } = useI18n();\n const headingId = useId();\n const fc = useFormControlContext();\n const fieldProps = useFormControlProps({\n id,\n \"aria-describedby\": ariaDescribedBy,\n });\n const disabled = disabledProp ?? fc?.disabled ?? false;\n const readOnly = readOnlyProp ?? fc?.readOnly ?? false;\n const required = requiredProp ?? fc?.required ?? false;\n const invalid = invalidProp ?? fc?.invalid ?? false;\n const accessibleName = label ?? ariaLabel ?? t(\"datePicker.label\");\n const labelledBy =\n ariaLabelledBy ?? (fc && !label && !ariaLabel ? fc.labelId : undefined);\n\n if (process.env.NODE_ENV !== \"production\") {\n warnControlledProps(\"DatePicker\", {\n prop: \"value\",\n value: value === null ? \"\" : value,\n defaultProp: \"defaultValue\",\n defaultValue,\n handlerProp: \"onChange\",\n handler: onChange,\n locked: disabled || readOnly,\n lockHint: \"set `disabled` / `readOnly`\",\n });\n }\n\n const normalizedValue = value === null ? \"\" : value;\n const [current, setCurrent] = useControllableState<string>({\n value: normalizedValue,\n defaultValue: defaultValue ?? \"\",\n name: \"DatePicker\",\n });\n const [open, setOpen] = useControllableState({\n defaultValue: false,\n onChange: onOpenChange,\n name: \"DatePicker\",\n prop: \"open\",\n });\n\n const [draft, setDraft] = useState<string | null>(null);\n const [input, setInput] = useState<HTMLInputElement | null>(null);\n const [field, setField] = useState<HTMLDivElement | null>(null);\n const setInputRef = useMergedRefs<HTMLInputElement>(setInput, ref);\n const panelRef = useRef<HTMLDivElement>(null);\n const tabContainer = useLayerParent();\n\n const initialDate = parseDayKey(current || \"\") ?? new Date();\n const [month, setMonth] = useState<Date>(() => monthStart(initialDate));\n const [focusedKey, setFocusedKey] = useState(\"\");\n const [focusPanelOnOpen, setFocusPanelOnOpen] = useState(false);\n const cells = useRef(new Map<string, HTMLDivElement>());\n const pendingFocus = useRef<string | null>(null);\n\n const isDayDisabled = (key: string) => {\n if (minDate && key < minDate) return true;\n if (maxDate && key > maxDate) return true;\n return false;\n };\n\n const commit = (next: string) => {\n setCurrent(next);\n onChange?.(next);\n };\n\n const syncMonthFromValue = (val: string) => {\n const parsed = parseDayKey(val);\n if (parsed) setMonth(monthStart(parsed));\n };\n\n const handleInputChange = (text: string) => {\n setDraft(text);\n if (text === \"\") {\n commit(\"\");\n return;\n }\n const parsed = parseDayKey(text, true);\n if (parsed) {\n const key = dayKey(parsed);\n if (!isDayDisabled(key)) {\n commit(key);\n setMonth(monthStart(parsed));\n }\n }\n };\n\n const handleInputBlur = () => {\n if (draft === null) return;\n const trimmed = draft.trim();\n if (trimmed === \"\") {\n if (current) commit(\"\");\n } else {\n const parsed = parseDayKey(trimmed, false);\n if (parsed) {\n const key = dayKey(parsed);\n if (!isDayDisabled(key) && key !== current) {\n commit(key);\n setMonth(monthStart(parsed));\n }\n }\n }\n setDraft(null);\n };\n\n const handleClear = () => {\n setDraft(null);\n commit(\"\");\n input?.focus();\n };\n\n const selectDate = (date: Date) => {\n const key = dayKey(date);\n if (disabled || readOnly || isDayDisabled(key)) return;\n setDraft(null);\n commit(key);\n setMonth(monthStart(date));\n setOpen(false);\n input?.focus();\n };\n\n const toggle = () => {\n if (disabled || readOnly) return;\n setFocusPanelOnOpen(false);\n if (!open) syncMonthFromValue(current);\n setOpen((prev) => !prev);\n };\n\n const first = monthStart(month);\n const start = addDays(first, -((first.getDay() + 6) % 7));\n const days = Array.from({ length: 42 }, (_, index) => addDays(start, index));\n const visibleKeys = days.map(dayKey);\n const today = new Date();\n const todayKey = dayKey(today);\n const activeKey = [\n focusedKey,\n current,\n sameMonth(today, month) ? todayKey : \"\",\n dayKey(first),\n ].find((key) => key && visibleKeys.includes(key));\n const monthKey = dayKey(first);\n\n useEffect(() => {\n if (!open || disabled || !pendingFocus.current) return;\n const cell = cells.current.get(pendingFocus.current);\n if (cell) {\n pendingFocus.current = null;\n cell.focus();\n }\n }, [open, monthKey, focusedKey, disabled]);\n\n const handleDayKeyDown = (\n event: React.KeyboardEvent<HTMLDivElement>,\n date: Date,\n ) => {\n if (disabled || readOnly) return;\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n if (!event.repeat) selectDate(date);\n return;\n }\n let target: Date;\n const weekday = (date.getDay() + 6) % 7;\n switch (logicalArrowKey(event.key, event.currentTarget)) {\n case \"ArrowLeft\":\n target = addDays(date, -1);\n break;\n case \"ArrowRight\":\n target = addDays(date, 1);\n break;\n case \"ArrowUp\":\n target = addDays(date, -7);\n break;\n case \"ArrowDown\":\n target = addDays(date, 7);\n break;\n case \"Home\":\n target = addDays(date, -weekday);\n break;\n case \"End\":\n target = addDays(date, 6 - weekday);\n break;\n case \"PageUp\":\n case \"PageDown\": {\n const offset =\n (event.key === \"PageUp\" ? -1 : 1) * (event.shiftKey ? 12 : 1);\n const next = monthStart(date, offset);\n const lastDay = addDays(monthStart(next, 1), -1).getDate();\n target = localDate(\n next.getFullYear(),\n next.getMonth(),\n Math.min(date.getDate(), lastDay),\n );\n break;\n }\n default:\n return;\n }\n event.preventDefault();\n const nextKey = dayKey(target);\n pendingFocus.current = nextKey;\n setFocusedKey(nextKey);\n if (!sameMonth(target, month)) setMonth(monthStart(target));\n };\n\n const handlePanelKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n const panel = event.currentTarget;\n if (\n !input ||\n event.key !== \"Tab\" ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n !tabLeavesPanel(panel, event.target as Element, event.shiftKey)\n )\n return;\n event.preventDefault();\n const next = event.shiftKey\n ? input\n : (adjacentTabbable(\n input,\n tabContainer ?? input.ownerDocument.body,\n false,\n ) ?? input);\n next.focus();\n setOpen(false);\n };\n\n const heading = new Intl.DateTimeFormat(locale ?? language, {\n year: \"numeric\",\n month: \"long\",\n }).format(first);\n\n const displayValue = draft ?? current;\n\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions\n <div\n {...pickDataAttributes(rest)}\n {...hooks(\"date-picker\", \"root\", {\n state: open && !disabled && !readOnly ? \"open\" : \"closed\",\n disabled,\n readonly: readOnly,\n invalid,\n size,\n })}\n ref={setField}\n className={cn(styles.datePicker, className)}\n style={style}\n onClick={(e) => {\n if (e.target === input) toggle();\n }}\n >\n <FormControlContext.Provider value={null}>\n <Input\n ref={setInputRef}\n value={displayValue}\n placeholder={placeholder ?? t(\"datePicker.placeholder\")}\n id={fieldProps.id}\n aria-label={accessibleName}\n aria-labelledby={labelledBy}\n aria-describedby={fieldProps[\"aria-describedby\"]}\n aria-invalid={invalid || undefined}\n aria-readonly={readOnly || undefined}\n required={required}\n readOnly={readOnly}\n onChange={(e) => handleInputChange(e.target.value)}\n onBlur={handleInputBlur}\n onKeyDown={(e) => {\n if (e.key !== \"ArrowDown\") return;\n e.preventDefault();\n if (!open) {\n syncMonthFromValue(current);\n const focusTarget = current || todayKey;\n setFocusedKey(focusTarget);\n setFocusPanelOnOpen(true);\n setOpen(true);\n } else {\n panelRef.current\n ?.querySelector<HTMLElement>('[role=\"gridcell\"][tabindex=\"0\"]')\n ?.focus();\n }\n }}\n name={name}\n disabled={disabled}\n size={size}\n suffix={\n clearable && current && !disabled && !readOnly ? (\n <IconButton\n icon={<IconX aria-hidden focusable={false} />}\n size=\"small\"\n aria-label={t(\"datePicker.clear\")}\n onClick={handleClear}\n className={styles.clearButton}\n />\n ) : (\n <span\n className={styles.calendarIcon}\n aria-hidden=\"true\"\n {...hooks(\"date-picker\", \"icon\")}\n >\n <IconCalendar />\n </span>\n )\n }\n />\n </FormControlContext.Provider>\n <FloatingPanel\n ref={panelRef}\n open={open && !disabled && !readOnly}\n anchor={input}\n placement=\"bottom-start\"\n branches={() => [field]}\n onDismiss={() => setOpen(false)}\n returnFocusOnEscape={() => input}\n focusable\n role=\"dialog\"\n tabIndex={-1}\n aria-label={accessibleName}\n aria-labelledby={labelledBy}\n className={styles.popup}\n onKeyDown={handlePanelKeyDown}\n {...hooks(\"date-picker\", \"content\", { state: \"open\" })}\n >\n <div className={styles.panel}>\n <div className={styles.header}>\n <h2 id={headingId} className={styles.heading} aria-live=\"polite\">\n {heading}\n </h2>\n <div className={styles.navGroup}>\n <button\n type=\"button\"\n className={styles.navButton}\n aria-label={t(\"monthCalendar.previousMonth\")}\n onClick={() => setMonth(monthStart(month, -1))}\n >\n <IconChevronLeft aria-hidden focusable={false} />\n </button>\n <button\n type=\"button\"\n className={styles.navButton}\n aria-label={t(\"monthCalendar.nextMonth\")}\n onClick={() => setMonth(monthStart(month, 1))}\n >\n <IconChevronRight aria-hidden focusable={false} />\n </button>\n </div>\n </div>\n <div role=\"grid\" aria-labelledby={headingId} className={styles.grid}>\n <div role=\"row\" className={styles.week}>\n {WEEKDAYS.map((day) => (\n <div role=\"columnheader\" key={day} className={styles.weekday}>\n {t(`monthCalendar.weekdays.${day}`)}\n </div>\n ))}\n </div>\n {Array.from({ length: 6 }, (_, week) => (\n <div role=\"row\" className={styles.week} key={week}>\n {days.slice(week * 7, week * 7 + 7).map((date) => {\n const key = dayKey(date);\n const selected = current === key;\n const outside = !sameMonth(date, month);\n const isToday = key === todayKey;\n const dayDisabled = isDayDisabled(key);\n return (\n <div\n role=\"gridcell\"\n key={key}\n className={styles.day}\n ref={(element) => {\n if (element) {\n cells.current.set(key, element);\n if (\n (focusPanelOnOpen && key === activeKey) ||\n pendingFocus.current === key\n ) {\n pendingFocus.current = null;\n element.focus();\n }\n } else {\n cells.current.delete(key);\n }\n }}\n data-date={key}\n data-outside={outside ? \"\" : undefined}\n aria-label={key}\n aria-selected={selected}\n aria-current={isToday ? \"date\" : undefined}\n aria-disabled={dayDisabled || undefined}\n tabIndex={!dayDisabled && key === activeKey ? 0 : -1}\n onFocus={() => setFocusedKey(key)}\n onClick={() => selectDate(date)}\n onKeyDown={(event) => handleDayKeyDown(event, date)}\n >\n {date.getDate()}\n </div>\n );\n })}\n </div>\n ))}\n </div>\n <div className={styles.footer}>\n <button\n type=\"button\"\n className={styles.footerButton}\n disabled={isDayDisabled(todayKey)}\n onClick={() => selectDate(today)}\n >\n {t(\"datePicker.today\")}\n </button>\n {clearable && current && (\n <button\n type=\"button\"\n className={styles.footerButton}\n onClick={() => {\n handleClear();\n setOpen(false);\n }}\n >\n {t(\"datePicker.clear\")}\n </button>\n )}\n </div>\n </div>\n </FloatingPanel>\n </div>\n );\n};\n\nexport { DatePicker };\nexport default React.memo(DatePicker);\n"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { default as React } from 'react';
2
+ import { DatePickerProps } from './types.cjs';
3
+ /**
4
+ * DatePicker: type a `"YYYY-MM-DD"` date or pick a day from a popup month
5
+ * calendar grid. Works controlled (`value` + `onChange`) or uncontrolled
6
+ * (`defaultValue`). Inside a FormControl the input picks up the field's id,
7
+ * label, description, invalid, required, disabled and read-only state
8
+ * (explicit props win).
9
+ */
10
+ declare const DatePicker: ({ ref, value, defaultValue, onChange, placeholder, label, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, id, required: requiredProp, readOnly: readOnlyProp, invalid: invalidProp, name, disabled: disabledProp, clearable, size, minDate, maxDate, locale, className, style, onOpenChange, ...rest }: DatePickerProps) => React.JSX.Element;
11
+ export { DatePicker };
12
+ declare const _default: React.MemoExoticComponent<({ ref, value, defaultValue, onChange, placeholder, label, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, id, required: requiredProp, readOnly: readOnlyProp, invalid: invalidProp, name, disabled: disabledProp, clearable, size, minDate, maxDate, locale, className, style, onOpenChange, ...rest }: DatePickerProps) => React.JSX.Element>;
13
+ export default _default;
@@ -0,0 +1,13 @@
1
+ import { default as React } from 'react';
2
+ import { DatePickerProps } from './types.js';
3
+ /**
4
+ * DatePicker: type a `"YYYY-MM-DD"` date or pick a day from a popup month
5
+ * calendar grid. Works controlled (`value` + `onChange`) or uncontrolled
6
+ * (`defaultValue`). Inside a FormControl the input picks up the field's id,
7
+ * label, description, invalid, required, disabled and read-only state
8
+ * (explicit props win).
9
+ */
10
+ declare const DatePicker: ({ ref, value, defaultValue, onChange, placeholder, label, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, id, required: requiredProp, readOnly: readOnlyProp, invalid: invalidProp, name, disabled: disabledProp, clearable, size, minDate, maxDate, locale, className, style, onOpenChange, ...rest }: DatePickerProps) => React.JSX.Element;
11
+ export { DatePicker };
12
+ declare const _default: React.MemoExoticComponent<({ ref, value, defaultValue, onChange, placeholder, label, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, id, required: requiredProp, readOnly: readOnlyProp, invalid: invalidProp, name, disabled: disabledProp, clearable, size, minDate, maxDate, locale, className, style, onOpenChange, ...rest }: DatePickerProps) => React.JSX.Element>;
13
+ export default _default;