@hyphen/hyphen-components 6.14.0 → 7.0.0-beta.1

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 (34) hide show
  1. package/dist/components/Calendar/Calendar.d.ts +5 -0
  2. package/dist/components/Calendar/Calendar.stories.d.ts +12 -0
  3. package/dist/components/Modal/components/ModalHeader/ModalHeader.d.ts +6 -1
  4. package/dist/css/index.css +2 -3
  5. package/dist/css/utilities.css +8 -0
  6. package/dist/hyphen-components.cjs.development.js +633 -788
  7. package/dist/hyphen-components.cjs.development.js.map +1 -1
  8. package/dist/hyphen-components.cjs.production.min.js +1 -1
  9. package/dist/hyphen-components.cjs.production.min.js.map +1 -1
  10. package/dist/hyphen-components.esm.js +634 -787
  11. package/dist/hyphen-components.esm.js.map +1 -1
  12. package/dist/index.d.ts +1 -2
  13. package/package.json +2 -3
  14. package/src/components/Calendar/Calendar.mdx +28 -0
  15. package/src/components/Calendar/Calendar.stories.tsx +217 -0
  16. package/src/components/Calendar/Calendar.tsx +117 -0
  17. package/src/components/Formik/Formik.stories.tsx +10 -21
  18. package/src/components/Modal/Modal.stories.tsx +3 -1
  19. package/src/components/Modal/components/ModalHeader/ModalHeader.tsx +27 -9
  20. package/src/index.ts +1 -2
  21. package/src/styles/utilities.scss +8 -0
  22. package/dist/components/DateInput/DateInput.d.ts +0 -57
  23. package/dist/components/DateInput/DateInput.stories.d.ts +0 -11
  24. package/dist/components/DatePicker/DatePicker.d.ts +0 -86
  25. package/dist/components/DatePicker/DatePicker.stories.d.ts +0 -13
  26. package/src/components/DateInput/DateInput.mdx +0 -61
  27. package/src/components/DateInput/DateInput.stories.tsx +0 -168
  28. package/src/components/DateInput/DateInput.test.tsx +0 -176
  29. package/src/components/DateInput/DateInput.tsx +0 -212
  30. package/src/components/DatePicker/DatePicker.mdx +0 -52
  31. package/src/components/DatePicker/DatePicker.module.scss +0 -603
  32. package/src/components/DatePicker/DatePicker.stories.tsx +0 -199
  33. package/src/components/DatePicker/DatePicker.test.tsx +0 -26
  34. package/src/components/DatePicker/DatePicker.tsx +0 -138
package/dist/index.d.ts CHANGED
@@ -3,12 +3,11 @@ export * from './components/AspectRatio/AspectRatio';
3
3
  export * from './components/Badge/Badge';
4
4
  export * from './components/Box/Box';
5
5
  export * from './components/Button/Button';
6
+ export * from './components/Calendar/Calendar';
6
7
  export * from './components/Card/Card';
7
8
  export * from './components/CheckboxInput/components/Checkbox';
8
9
  export * from './components/CheckboxInput/CheckboxInput';
9
10
  export * from './components/Collapsible/Collapsible';
10
- export * from './components/DateInput/DateInput';
11
- export * from './components/DatePicker/DatePicker';
12
11
  export * from './components/Details/Details';
13
12
  export * from './components/Details/DetailsSummary';
14
13
  export * from './components/Drawer/Drawer';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyphen/hyphen-components",
3
- "version": "6.14.0",
3
+ "version": "7.0.0-beta.1",
4
4
  "license": "MIT",
5
5
  "author": {
6
6
  "name": "@hyphen"
@@ -75,7 +75,7 @@
75
75
  "classnames": "^2.5.1",
76
76
  "date-fns": "^2.30.0",
77
77
  "formik": "^2.4.6",
78
- "react-datepicker": "^6.9.0",
78
+ "react-day-picker": "^9.11.3",
79
79
  "react-focus-lock": "^2.13.2",
80
80
  "react-modal": "^3.16.3",
81
81
  "react-remove-scroll": "^2.6.3",
@@ -100,7 +100,6 @@
100
100
  "@tsconfig/vite-react": "^3.0.2",
101
101
  "@types/node": "^22.9.0",
102
102
  "@types/react": "^18.3.5",
103
- "@types/react-datepicker": "^6.2.0",
104
103
  "@types/react-dom": "^18.3.0",
105
104
  "@types/react-modal": "^3.16.3",
106
105
  "autoprefixer": "^10.4.20",
@@ -0,0 +1,28 @@
1
+ import { Canvas, Meta, ArgTypes } from '@storybook/addon-docs/blocks';
2
+ import * as Stories from './Calendar.stories';
3
+
4
+ <Meta of={Stories} />
5
+
6
+ # Calendar
7
+
8
+ Calendar component for selecting dates and date ranges.
9
+
10
+ This component is extended from [React DayPicker](https://daypicker.dev/).
11
+
12
+ [API Reference](https://daypicker.dev/api)
13
+
14
+ ## Basic Usage
15
+
16
+ <Canvas of={Stories.BasicUsage} sourceState="shown"/>
17
+
18
+ ## Range Selection
19
+
20
+ <Canvas of={Stories.RangeSelection} sourceState="shown" />
21
+
22
+ ## Month/Year Dropdown
23
+
24
+ <Canvas of={Stories.Dropdown} sourceState="shown" />
25
+
26
+ ## Footer Content
27
+
28
+ <Canvas of={Stories.FooterContent} sourceState="shown" />
@@ -0,0 +1,217 @@
1
+ import Calendar from './Calendar';
2
+
3
+ import type { Meta } from '@storybook/react-vite';
4
+ import React, { useState, ChangeEvent } from 'react';
5
+ import { type DateRange } from 'react-day-picker';
6
+ import { TextInput } from '../TextInput/TextInput';
7
+ import { format, isValid, parse } from 'date-fns';
8
+
9
+ const meta: Meta<typeof Calendar> = {
10
+ title: 'Components/Calendar',
11
+ component: Calendar,
12
+ parameters: {
13
+ controls: { hideNoControlsWarning: true },
14
+ },
15
+ };
16
+
17
+ export default meta;
18
+
19
+ export const BasicUsage = () => {
20
+ const [date, setDate] = useState<Date | undefined>(new Date(2025, 11, 12));
21
+
22
+ return (
23
+ <Calendar
24
+ mode="single"
25
+ selected={date}
26
+ defaultMonth={date}
27
+ onSelect={setDate}
28
+ disabled={{
29
+ before: new Date(2025, 11, 12),
30
+ }}
31
+ />
32
+ );
33
+ };
34
+
35
+ export const RangeSelection = () => {
36
+ const [dateRange, setDateRange] = useState<DateRange | undefined>({
37
+ from: new Date(2025, 5, 21),
38
+ to: new Date(2025, 6, 15),
39
+ });
40
+
41
+ return (
42
+ <Calendar
43
+ mode="range"
44
+ defaultMonth={dateRange?.from}
45
+ selected={dateRange}
46
+ onSelect={setDateRange}
47
+ numberOfMonths={2}
48
+ />
49
+ );
50
+ };
51
+
52
+ export const MultipleSelection = () => {
53
+ const [dates, setDates] = useState<Date[] | undefined>([
54
+ new Date(2025, 5, 21),
55
+ new Date(2025, 6, 15),
56
+ new Date(2025, 6, 16),
57
+ ]);
58
+
59
+ return (
60
+ <Calendar
61
+ mode="multiple"
62
+ selected={dates}
63
+ onSelect={setDates}
64
+ defaultMonth={dates ? dates[0] : undefined}
65
+ numberOfMonths={2}
66
+ />
67
+ );
68
+ };
69
+
70
+ export const Dropdown = () => {
71
+ const [date, setDate] = useState<Date | undefined>(new Date(2025, 5, 16));
72
+
73
+ return (
74
+ <Calendar
75
+ mode="single"
76
+ captionLayout="dropdown"
77
+ selected={date}
78
+ defaultMonth={date}
79
+ onSelect={setDate}
80
+ />
81
+ );
82
+ };
83
+
84
+ export const FooterContent = () => {
85
+ const [date, setDate] = useState<Date | undefined>(new Date(2025, 5, 16));
86
+
87
+ return (
88
+ <Calendar
89
+ mode="single"
90
+ selected={date}
91
+ defaultMonth={date}
92
+ onSelect={setDate}
93
+ footer={
94
+ date
95
+ ? `You picked ${date.toLocaleDateString()}.`
96
+ : 'Please pick a date.'
97
+ }
98
+ />
99
+ );
100
+ };
101
+
102
+ export const DateInput = () => {
103
+ const [selectedDate, setSelectedDate] = useState<Date | undefined>(
104
+ new Date(2017, 4, 21)
105
+ );
106
+ const [inputValue, setInputValue] = useState('05/21/2017');
107
+
108
+ // Hold the month in state to control the calendar when the input changes
109
+ const [month, setMonth] = useState(new Date(2017, 4, 21));
110
+
111
+ // Update input when calendar changes
112
+ const handleCalendarSelect = (date: Date | undefined) => {
113
+ if (!date) {
114
+ setInputValue('');
115
+ setSelectedDate(undefined);
116
+ } else {
117
+ setSelectedDate(date);
118
+ setMonth(date);
119
+ setInputValue(format(date, 'MM/dd/yyyy'));
120
+ }
121
+ };
122
+
123
+ // Update calendar when input changes
124
+ const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {
125
+ setInputValue(e.target.value); // Keep the input value in sync
126
+
127
+ const parsedDate = parse(e.target.value, 'MM/dd/yyyy', new Date());
128
+
129
+ if (isValid(parsedDate)) {
130
+ setSelectedDate(parsedDate);
131
+ setMonth(parsedDate);
132
+ } else {
133
+ setSelectedDate(undefined);
134
+ }
135
+ };
136
+
137
+ return (
138
+ <div>
139
+ <TextInput
140
+ id="date-input"
141
+ label="Date"
142
+ type="text"
143
+ value={inputValue}
144
+ onChange={handleInputChange}
145
+ />
146
+ <div style={{ marginTop: 16 }}>
147
+ <Calendar
148
+ month={month}
149
+ onMonthChange={setMonth}
150
+ mode="single"
151
+ selected={selectedDate}
152
+ onSelect={handleCalendarSelect}
153
+ />
154
+ </div>
155
+ </div>
156
+ );
157
+ };
158
+
159
+ export const DateRangeInput = () => {
160
+ const [range, setRange] = useState<DateRange>({
161
+ from: undefined,
162
+ to: undefined,
163
+ });
164
+ const [inputValue, setInputValue] = useState('');
165
+
166
+ // Format range as string using date-fns
167
+ const formatRange = (from?: Date, to?: Date) => {
168
+ if (!from && !to) return '';
169
+ const fromStr = from && isValid(from) ? format(from, 'MM/dd/yyyy') : '';
170
+ const toStr = to && isValid(to) ? format(to, 'MM/dd/yyyy') : '';
171
+ return fromStr && toStr ? `${fromStr} - ${toStr}` : fromStr || toStr;
172
+ };
173
+
174
+ // Parse string to range using date-fns
175
+ const parseRange = (value: string): DateRange => {
176
+ const [fromStr, toStr] = value.split('-').map((s) => s.trim());
177
+ const from = fromStr ? parse(fromStr, 'MM/dd/yyyy', new Date()) : undefined;
178
+ const to = toStr ? parse(toStr, 'MM/dd/yyyy', new Date()) : undefined;
179
+ return {
180
+ from: from && isValid(from) ? from : undefined,
181
+ to: to && isValid(to) ? to : undefined,
182
+ };
183
+ };
184
+
185
+ // Update input when calendar changes
186
+ const handleCalendarSelect = (selected: DateRange | undefined) => {
187
+ setRange(selected ?? { from: undefined, to: undefined });
188
+ setInputValue(formatRange(selected?.from, selected?.to));
189
+ };
190
+
191
+ // Update calendar when input changes
192
+ const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {
193
+ const value = e.target.value;
194
+ setInputValue(value);
195
+ setRange(parseRange(value));
196
+ };
197
+
198
+ return (
199
+ <div style={{ maxWidth: 320 }}>
200
+ <TextInput
201
+ id="date-range-input"
202
+ label="Date Range"
203
+ type="text"
204
+ value={inputValue}
205
+ onChange={handleInputChange}
206
+ placeholder="MM/DD/YYYY - MM/DD/YYYY"
207
+ />
208
+ <div style={{ marginTop: 16 }}>
209
+ <Calendar
210
+ mode="range"
211
+ selected={range}
212
+ onSelect={handleCalendarSelect}
213
+ />
214
+ </div>
215
+ </div>
216
+ );
217
+ };
@@ -0,0 +1,117 @@
1
+ import React from 'react';
2
+ import classNames from 'classnames';
3
+ import { DayPicker, getDefaultClassNames } from 'react-day-picker';
4
+ import 'react-day-picker/style.css';
5
+ import { Icon } from '../Icon/Icon';
6
+
7
+ function Calendar({
8
+ captionLayout = 'label',
9
+ className,
10
+ ...props
11
+ }: React.ComponentProps<typeof DayPicker>) {
12
+ const defaultClassNames = getDefaultClassNames();
13
+
14
+ return (
15
+ <DayPicker
16
+ className={className ? className : 'p-lg bw-sm br-sm'}
17
+ captionLayout={captionLayout}
18
+ style={
19
+ {
20
+ '--rdp-accent-color': 'var(--color-font-base)',
21
+ '--rdp-accent-background-color':
22
+ 'var(--color-background-color-button-primary)',
23
+ '--rdp-day-height': 'var(--size-dimension-4xl)',
24
+ '--rdp-day-width': 'var(--size-dimension-4xl)',
25
+ '--rdp-day_button-height': 'var(--size-dimension-4xl)',
26
+ '--rdp-day_button-width': 'var(--size-dimension-4xl)',
27
+ '--rdp-day_button-border-radius': '0',
28
+ '--rdp-selected-border': '1px solid var(--color-font-base)',
29
+ '--rdp-today-color': 'var(--rdp-accent-color)',
30
+ '--rdp-nav-height': 'var(--size-dimension-4xl)',
31
+ '--rdp-range_middle-background-color':
32
+ 'var(--color-background-tertiary)',
33
+ '--rdp-range_middle-color': 'var(--color-font-base)',
34
+ '--rdp-range_start-color': 'var(--color-font-inverse)',
35
+ '--rdp-range_end-color': 'var(--color-font-inverse)',
36
+ } as React.CSSProperties
37
+ }
38
+ classNames={{
39
+ root: classNames(
40
+ defaultClassNames.root,
41
+ 'w-fit font-color-secondary font-size-sm'
42
+ ),
43
+ months: classNames(
44
+ defaultClassNames.months,
45
+ 'display-flex flex-direction-column flex-direction-row-tablet g-md position-relative'
46
+ ),
47
+ nav: classNames(
48
+ defaultClassNames.nav,
49
+ 'display-flex flex-direction-row w-100 g-md position-absolute h-4xl align-items-center justify-content-space-between'
50
+ ),
51
+ button_previous: classNames(
52
+ 'p-0 select-none background-color-transparent bw-0',
53
+ defaultClassNames.button_previous
54
+ ),
55
+ button_next: classNames(
56
+ 'p-0 select-none background-color-transparent bw-0',
57
+ defaultClassNames.button_next
58
+ ),
59
+ month_caption: classNames(
60
+ 'display-flex align-items-center justify-content-center font-size-sm h-4xl'
61
+ ),
62
+ weekday: classNames(
63
+ defaultClassNames.weekday,
64
+ 'font-weight-normal font-color-secondary'
65
+ ),
66
+ today: 'font-weight-bold',
67
+ selected: classNames(
68
+ 'font-color-inverse background-color-inverse hover:font-color-inverse'
69
+ ),
70
+ month_grid: classNames(defaultClassNames.month_grid, 'm-top-lg'),
71
+ day: classNames(defaultClassNames.day, 'hover:font-color-base'),
72
+ day_button: classNames(defaultClassNames.day_button),
73
+ range_middle: classNames(defaultClassNames.range_middle),
74
+ table: classNames('w-100'),
75
+ dropdowns: classNames(defaultClassNames.dropdowns, 'h-100'),
76
+ caption_label: classNames(defaultClassNames.caption_label, 'g-2xs'),
77
+ }}
78
+ components={{
79
+ Chevron: ({ className, orientation, ...props }) => {
80
+ if (orientation === 'left') {
81
+ return (
82
+ <Icon
83
+ name="caret-left"
84
+ className={classNames(className)}
85
+ {...props}
86
+ size="md"
87
+ />
88
+ );
89
+ }
90
+
91
+ if (orientation === 'right') {
92
+ return (
93
+ <Icon
94
+ name="caret-right"
95
+ className={classNames(className)}
96
+ {...props}
97
+ size="md"
98
+ />
99
+ );
100
+ }
101
+
102
+ return (
103
+ <Icon
104
+ name="caret-sm-down"
105
+ className={classNames(className)}
106
+ {...props}
107
+ size="md"
108
+ />
109
+ );
110
+ },
111
+ }}
112
+ {...props}
113
+ />
114
+ );
115
+ }
116
+
117
+ export default Calendar;
@@ -6,7 +6,6 @@ import { FormikSelectInput } from './FormikSelectInput/FormikSelectInput';
6
6
  import { FormikSelectInputNative } from './FormikSelectInputNative/FormikSelectInputNative';
7
7
  import { FormikRadioGroup } from './FormikRadioGroup/FormikRadioGroup';
8
8
  import { FormikTextareaInput } from './FormikTextareaInput/FormikTextareaInput';
9
- import { DateInput } from '../DateInput/DateInput';
10
9
  import { FormikSwitch } from './FormikSwitch/FormikSwitch';
11
10
  import { Button } from '../Button/Button';
12
11
  import { Box } from '../Box/Box';
@@ -21,6 +20,7 @@ import { Tooltip, TooltipContent, TooltipProvider } from '../Tooltip/Tooltip';
21
20
  import { TooltipTrigger } from '@radix-ui/react-tooltip';
22
21
  import { FormikToggleGroupMulti } from './FormikToggleGroupMulti/FormikToggleGroupMulti';
23
22
  import { Icon } from '../Icon/Icon';
23
+ import Calendar from '../Calendar/Calendar';
24
24
 
25
25
  const meta = {
26
26
  title: 'Patterns/Formik Form',
@@ -185,7 +185,7 @@ export const FormikForm = () =>
185
185
  sizes: null,
186
186
  timePicker: null,
187
187
  timePickerNative: null,
188
- dateInput: '',
188
+ dateInput: new Date(2017, 4, 21),
189
189
  message: '',
190
190
  country: '',
191
191
  availability: '99',
@@ -194,7 +194,7 @@ export const FormikForm = () =>
194
194
  validate={handleValidation}
195
195
  onSubmit={handleSubmit}
196
196
  >
197
- {({ isSubmitting, values, setFieldValue, handleBlur, errors }) => (
197
+ {({ isSubmitting, values, setFieldValue, errors }) => (
198
198
  <Form noValidate>
199
199
  <Box gap="3xl">
200
200
  <Field
@@ -371,25 +371,14 @@ export const FormikForm = () =>
371
371
  </ToggleGroupItem>
372
372
  ))}
373
373
  </FormikToggleGroupMulti>
374
-
375
- <DateInput
376
- datePickerProps={{
377
- onChange: (date) => {
378
- setFieldValue('dateInput', date as Date);
379
- },
380
- selected: values.dateInput as unknown as Date,
381
- }}
382
- textInputProps={{
383
- label: 'Date Input',
384
- name: 'dateInput',
385
- id: 'dateInput',
386
- error: errors.dateInput,
387
- isRequired: true,
388
- onClear: () => {
389
- setFieldValue('dateInput', null);
390
- },
391
- onBlur: handleBlur,
374
+ <Calendar
375
+ mode="single"
376
+ required={true}
377
+ selected={values.dateInput}
378
+ onSelect={(date: Date | undefined) => {
379
+ setFieldValue('dateInput', date);
392
380
  }}
381
+ month={values.dateInput}
393
382
  />
394
383
  <Button type="submit" isLoading={isSubmitting}>
395
384
  Submit
@@ -37,7 +37,9 @@ export const BasicUsage = () => {
37
37
  id="titleBasic"
38
38
  title="The Modal Title"
39
39
  onDismiss={closeModal}
40
- />
40
+ >
41
+ additional content in header
42
+ </Modal.Header>
41
43
  <Modal.Body>Modal content</Modal.Body>
42
44
  <Modal.Footer>
43
45
  <Button variant="secondary" onClick={closeModal} shadow="sm">
@@ -1,8 +1,11 @@
1
1
  import React, { FC } from 'react';
2
- import { Box } from '../../../Box/Box';
2
+ import { Box, BoxProps } from '../../../Box/Box';
3
3
  import { Button } from '../../../Button/Button';
4
4
 
5
- export type ModalHeaderProps = {
5
+ export type ModalHeaderProps = Omit<
6
+ BoxProps,
7
+ 'as' | 'radius' | 'justifyContent'
8
+ > & {
6
9
  /**
7
10
  * id of the element containing the title, used by the Modal `aria-labelledby` prop
8
11
  */
@@ -11,6 +14,10 @@ export type ModalHeaderProps = {
11
14
  * Modal's header title
12
15
  */
13
16
  title?: string;
17
+ /**
18
+ * Additional content to render in the modal header, displayed alongside the title.
19
+ */
20
+ children?: React.ReactNode;
14
21
  /**
15
22
  * If defined, will render a 'x' close button on the right side of the ModalHeader
16
23
  */
@@ -20,24 +27,35 @@ export type ModalHeaderProps = {
20
27
  export const ModalHeader: FC<ModalHeaderProps> = ({
21
28
  id,
22
29
  onDismiss,
30
+ direction = 'row',
31
+ alignItems = 'center',
23
32
  title = undefined,
33
+ children,
34
+ style,
35
+ ...restProps
24
36
  }) => {
25
- const justifyContentValue =
26
- title === undefined && onDismiss ? 'flex-end' : 'space-between';
37
+ const justifyContentValue = title || children ? 'space-between' : 'flex-end';
27
38
 
28
39
  return (
29
40
  <Box
30
- direction="row"
31
- alignItems="center"
41
+ direction={direction}
42
+ alignItems={alignItems}
32
43
  justifyContent={justifyContentValue}
33
44
  gap="3xl"
34
45
  style={{
35
46
  flexShrink: 0,
47
+ ...style,
36
48
  }}
49
+ {...restProps}
37
50
  >
38
- {title && (
39
- <Box as="h4" fontSize={{ base: 'md', tablet: 'lg' }} id={id}>
40
- {title}
51
+ {(title || children) && (
52
+ <Box gap="2xs">
53
+ {title && (
54
+ <Box as="h4" fontSize={{ base: 'md', tablet: 'lg' }} id={id}>
55
+ {title}
56
+ </Box>
57
+ )}
58
+ {children}
41
59
  </Box>
42
60
  )}
43
61
  {onDismiss && (
package/src/index.ts CHANGED
@@ -3,12 +3,11 @@ export * from './components/AspectRatio/AspectRatio';
3
3
  export * from './components/Badge/Badge';
4
4
  export * from './components/Box/Box';
5
5
  export * from './components/Button/Button';
6
+ export * from './components/Calendar/Calendar';
6
7
  export * from './components/Card/Card';
7
8
  export * from './components/CheckboxInput/components/Checkbox';
8
9
  export * from './components/CheckboxInput/CheckboxInput';
9
10
  export * from './components/Collapsible/Collapsible';
10
- export * from './components/DateInput/DateInput';
11
- export * from './components/DatePicker/DatePicker';
12
11
  export * from './components/Details/Details';
13
12
  export * from './components/Details/DetailsSummary';
14
13
  export * from './components/Drawer/Drawer';
@@ -39,3 +39,11 @@
39
39
  .hover-show-child:hover .hover-child {
40
40
  opacity: 1;
41
41
  }
42
+
43
+ .top-0 {
44
+ top: 0;
45
+ }
46
+
47
+ .inset-x-0 {
48
+ inset-inline: 0;
49
+ }
@@ -1,57 +0,0 @@
1
- import { FC } from 'react';
2
- import { DatePickerProps } from '../DatePicker/DatePicker';
3
- import { TextInputProps } from '../TextInput/TextInput';
4
- export interface DateInputProps {
5
- /**
6
- * Props object for DatePicker component.
7
- */
8
- datePickerProps: DatePickerProps;
9
- /**
10
- * Props object for TextInput component.
11
- */
12
- textInputProps: Omit<TextInputProps, 'onChange'>;
13
- /**
14
- * Format for final date to be displayed.
15
- * Relies on date-fns/format --> https://date-fns.org/v1.9.0/docs/format
16
- */
17
- dateFormat?: string;
18
- /**
19
- * Additional settings for formatting date.
20
- */
21
- dateOptions?: {
22
- /**
23
- * The user's locale.
24
- */
25
- locale?: globalThis.Locale | undefined;
26
- /**
27
- * Start of week.
28
- */
29
- weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined;
30
- /**
31
- * Should determine which week is week 1 of a new year.
32
- */
33
- firstWeekContainsDate?: number | undefined;
34
- /**
35
- * Whether to accept unicode tokens in format.
36
- * See here --> https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md
37
- */
38
- useAdditionalWeekYearTokens?: boolean | undefined;
39
- /**
40
- * Whether to accept unicode tokens in format.
41
- * See here --> https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md
42
- */
43
- useAdditionalDayOfYearTokens?: boolean | undefined;
44
- };
45
- /**
46
- * Props to pass down to the Popover component.
47
- */
48
- popoverProps?: {
49
- side: 'top' | 'bottom' | 'left' | 'right';
50
- align: 'start' | 'center' | 'end';
51
- };
52
- /**
53
- * Additional props to be spread to the `TextInput` element.
54
- */
55
- [x: string]: any;
56
- }
57
- export declare const DateInput: FC<DateInputProps>;
@@ -1,11 +0,0 @@
1
- import React from 'react';
2
- import type { Meta } from '@storybook/react-vite';
3
- import { DateInput } from './DateInput';
4
- declare const meta: Meta<typeof DateInput>;
5
- export default meta;
6
- export declare const Basic: () => React.JSX.Element;
7
- export declare const Default: () => React.JSX.Element;
8
- export declare const DateRange: () => React.JSX.Element;
9
- export declare const WithMinAndMaxDates: () => React.JSX.Element;
10
- export declare const CustomDateFormat: () => React.JSX.Element;
11
- export declare const InputBlurEvent: () => React.JSX.Element;