@altruist03/ui 0.1.0 → 0.2.0
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.
- package/assets/images/noData.webp +0 -0
- package/dist/index.js +15237 -650
- package/dist/index.js.map +1 -1
- package/dist/noData-XPRHKMFR.webp +0 -0
- package/package.json +21 -7
- package/src/ThemeProvider/ThemeContext.tsx +75 -0
- package/src/ThemeProvider/index.ts +7 -0
- package/src/assets/images/noData.webp +0 -0
- package/src/assets.d.ts +10 -0
- package/src/components/Accordion/Accordion.stories.tsx +64 -0
- package/src/components/Accordion/Accordion.tsx +219 -0
- package/src/components/Accordion/Accordion.types.ts +16 -0
- package/src/components/Avatar/Avatar.stories.tsx +304 -0
- package/src/components/Avatar/Avatar.tsx +211 -0
- package/src/components/Avatar/Avatar.types.ts +33 -0
- package/src/components/Badge/Badge.stories.tsx +143 -0
- package/src/components/Badge/Badge.tsx +138 -0
- package/src/components/Badge/Badge.types.ts +24 -0
- package/src/components/Breadcrumb/Breadcrumb.stories.tsx +114 -0
- package/src/components/Breadcrumb/Breadcrumb.tsx +120 -0
- package/src/components/Breadcrumb/Breadcrumb.types.ts +22 -0
- package/src/components/Button/Button.stories.tsx +457 -0
- package/src/components/Button/Button.tsx +202 -0
- package/src/components/Button/Button.types.ts +18 -0
- package/src/components/Checkbox/Checkbox.stories.tsx +254 -0
- package/src/components/Checkbox/Checkbox.tsx +352 -0
- package/src/components/Checkbox/Checkbox.types.ts +123 -0
- package/src/components/CloseButton/CloseButton.stories.tsx +100 -0
- package/src/components/CloseButton/CloseButton.tsx +117 -0
- package/src/components/CloseButton/CloseButton.types.ts +15 -0
- package/src/components/CollapsibleSearch/CollapsibleSearch.tsx +120 -0
- package/src/components/DataTable/DataTable.stories.tsx +233 -0
- package/src/components/DataTable/DataTable.tsx +968 -0
- package/src/components/DataTable/DataTable.types.ts +49 -0
- package/src/components/DatePicker/DatePicker.stories.tsx +341 -0
- package/src/components/DatePicker/DatePicker.tsx +669 -0
- package/src/components/DatePicker/DatePicker.types.ts +105 -0
- package/src/components/DatePicker/DateTimePicker.tsx +35 -0
- package/src/components/DateRangePicker/DateRangePicker.tsx +179 -0
- package/src/components/DateRangePicker/DateRangePicker.types.ts +34 -0
- package/src/components/Drawer/Drawer.stories.tsx +243 -0
- package/src/components/Drawer/Drawer.tsx +196 -0
- package/src/components/Drawer/Drawer.types.ts +60 -0
- package/src/components/FileUpload/FileUpload.stories.tsx +162 -0
- package/src/components/FileUpload/FileUpload.tsx +216 -0
- package/src/components/FileUpload/FileUpload.types.ts +80 -0
- package/src/components/FilterPopover/FilterPopover.stories.tsx +173 -0
- package/src/components/FilterPopover/FilterPopover.tsx +310 -0
- package/src/components/FilterPopover/FilterPopover.types.ts +26 -0
- package/src/components/ImageViewer/ImageViewerToolbar.jsx +81 -0
- package/src/components/ImageViewer/useImagePanRotate.js +102 -0
- package/src/components/IpWhitelistField/IpWhitelistField.stories.tsx +138 -0
- package/src/components/IpWhitelistField/IpWhitelistField.tsx +164 -0
- package/src/components/IpWhitelistField/IpWhitelistField.types.ts +42 -0
- package/src/components/Loader/Loader.stories.tsx +95 -0
- package/src/components/Loader/Loader.tsx +132 -0
- package/src/components/Loader/Loader.types.ts +6 -0
- package/src/components/Menu/Menu.tsx +143 -0
- package/src/components/Menu/Menu.types.ts +28 -0
- package/src/components/MenuButton/MenuButton.stories.tsx +140 -0
- package/src/components/MenuButton/MenuButton.tsx +45 -0
- package/src/components/MenuButton/MenuButton.types.ts +21 -0
- package/src/components/Modal/Modal.stories.tsx +266 -0
- package/src/components/Modal/Modal.tsx +399 -0
- package/src/components/Modal/index.ts +2 -0
- package/src/components/Modal/types.ts +126 -0
- package/src/components/Pagination/Pagination.stories.tsx +167 -0
- package/src/components/Pagination/Pagination.tsx +266 -0
- package/src/components/Pagination/Pagination.types.ts +20 -0
- package/src/components/PeriodSelector/PeriodSelector.stories.tsx +50 -0
- package/src/components/PeriodSelector/PeriodSelector.tsx +47 -0
- package/src/components/PeriodSelector/PeriodSelector.types.ts +10 -0
- package/src/components/PhoneField/PhoneField.stories.tsx +141 -0
- package/src/components/PhoneField/PhoneField.tsx +284 -0
- package/src/components/PhoneField/PhoneField.types.ts +89 -0
- package/src/components/PhoneField/countryCodes.ts +236 -0
- package/src/components/Progress/Progress.stories.tsx +83 -0
- package/src/components/Progress/Progress.tsx +91 -0
- package/src/components/Progress/Progress.types.ts +22 -0
- package/src/components/RadioButton/RadioButton.stories.tsx +332 -0
- package/src/components/RadioButton/RadioButton.tsx +427 -0
- package/src/components/RadioButton/RadioButton.types.ts +117 -0
- package/src/components/ReportCard/ReportCard.tsx +183 -0
- package/src/components/ReportCard/ReportCard.types.ts +17 -0
- package/src/components/SectionIcon/SectionIcon.tsx +87 -0
- package/src/components/SectionIcon/SectionIcon.types.ts +23 -0
- package/src/components/SegmentedInputField/SegmentedInputField.stories.tsx +165 -0
- package/src/components/SegmentedInputField/SegmentedInputField.tsx +174 -0
- package/src/components/SegmentedInputField/SegmentedInputField.types.ts +51 -0
- package/src/components/SelectScroll/SelectScroll.stories.tsx +336 -0
- package/src/components/SelectScroll/SelectScroll.tsx +1119 -0
- package/src/components/SelectScroll/SelectScroll.types.ts +60 -0
- package/src/components/Selector/Selector.stories.tsx +382 -0
- package/src/components/Selector/Selector.tsx +1310 -0
- package/src/components/Selector/Selector.types.ts +71 -0
- package/src/components/Skeleton/Skeleton.stories.tsx +133 -0
- package/src/components/Skeleton/Skeleton.tsx +20 -0
- package/src/components/Skeleton/Skeleton.types.ts +3 -0
- package/src/components/Spinner/Spinner.stories.tsx +84 -0
- package/src/components/Spinner/Spinner.tsx +79 -0
- package/src/components/Spinner/Spinner.types.ts +8 -0
- package/src/components/StatCard/StatCard.stories.tsx +125 -0
- package/src/components/StatCard/StatCard.tsx +167 -0
- package/src/components/StatCard/StatCard.types.ts +20 -0
- package/src/components/StatusBadge/StatusBadge.stories.tsx +179 -0
- package/src/components/StatusBadge/StatusBadge.tsx +74 -0
- package/src/components/StatusBadge/StatusBadge.types.ts +23 -0
- package/src/components/Stepper/Stepper.stories.tsx +85 -0
- package/src/components/Stepper/Stepper.tsx +138 -0
- package/src/components/Stepper/Stepper.types.ts +16 -0
- package/src/components/SubTabs/SubTabs.stories.tsx +128 -0
- package/src/components/SubTabs/SubTabs.tsx +279 -0
- package/src/components/SubTabs/SubTabs.types.ts +44 -0
- package/src/components/SummaryCard/SummaryCard.stories.tsx +100 -0
- package/src/components/SummaryCard/SummaryCard.tsx +141 -0
- package/src/components/SummaryCard/SummaryCard.types.ts +22 -0
- package/src/components/Switch/Switch.stories.tsx +59 -0
- package/src/components/Switch/Switch.tsx +217 -0
- package/src/components/Switch/Switch.types.ts +22 -0
- package/src/components/Tabs/Tabs.stories.tsx +178 -0
- package/src/components/Tabs/Tabs.tsx +197 -0
- package/src/components/Tabs/Tabs.types.ts +34 -0
- package/src/components/TextField/TextField.stories.tsx +249 -0
- package/src/components/TextField/TextField.tsx +462 -0
- package/src/components/TextField/TextField.types.ts +141 -0
- package/src/components/Toast/Toast.stories.tsx +237 -0
- package/src/components/Toast/Toast.tsx +246 -0
- package/src/components/Toast/Toast.types.ts +31 -0
- package/src/components/ToggleButton/ToggleButton.stories.tsx +105 -0
- package/src/components/ToggleButton/ToggleButton.tsx +267 -0
- package/src/components/ToggleButton/ToggleButton.types.ts +19 -0
- package/src/components/UploadDropzone/UploadDropzone.jsx +78 -0
- package/src/components/UploadDropzone2/UploadDropzone.stories.tsx +94 -0
- package/src/components/UploadDropzone2/UploadDropzone.tsx +222 -0
- package/src/components/UploadDropzone2/UploadDropzone.types.ts +54 -0
- package/src/components/ViewEditToggle/ViewEditToggle.stories.tsx +40 -0
- package/src/components/ViewEditToggle/ViewEditToggle.tsx +239 -0
- package/src/components/ViewEditToggle/ViewEditToggle.types.ts +27 -0
- package/src/components/index.ts +157 -0
- package/src/icons/ReportDollarIcon.tsx +71 -0
- package/src/icons/index.ts +27 -0
- package/src/index.ts +214 -0
- package/src/storybook/preview.tsx +64 -0
- package/src/theme/index.ts +4 -0
- package/src/theme/types.d.ts +1 -0
- package/src/themes/cpc.ts +4 -0
- package/src/themes/firebird.ts +4 -0
- package/src/tokens/brands/cpc/themes/dark.json +82 -0
- package/src/tokens/brands/cpc/themes/light.json +1 -0
- package/src/tokens/brands/default/brand.json +20 -0
- package/src/tokens/brands/firebird/themes/dark.json +28 -0
- package/src/tokens/brands/firebird/themes/light.json +20 -0
- package/src/tokens/button.ts +24 -0
- package/src/tokens/components/accordion.json +52 -0
- package/src/tokens/components/avatar.json +40 -0
- package/src/tokens/components/badge.json +41 -0
- package/src/tokens/components/breadcrumb.json +13 -0
- package/src/tokens/components/button.json +67 -0
- package/src/tokens/components/card.json +39 -0
- package/src/tokens/components/checkbox.json +64 -0
- package/src/tokens/components/closebutton.json +55 -0
- package/src/tokens/components/datatable.json +40 -0
- package/src/tokens/components/datepicker.json +99 -0
- package/src/tokens/components/drawer.json +23 -0
- package/src/tokens/components/field.json +29 -0
- package/src/tokens/components/fileupload.json +57 -0
- package/src/tokens/components/filterpopover.json +29 -0
- package/src/tokens/components/input.json +31 -0
- package/src/tokens/components/ipwhitelistfield.json +16 -0
- package/src/tokens/components/loader.json +15 -0
- package/src/tokens/components/menu.json +21 -0
- package/src/tokens/components/modal.json +25 -0
- package/src/tokens/components/pagination.json +45 -0
- package/src/tokens/components/phonefield.json +41 -0
- package/src/tokens/components/progress.json +12 -0
- package/src/tokens/components/radio.json +87 -0
- package/src/tokens/components/reportcard.json +17 -0
- package/src/tokens/components/selector.json +87 -0
- package/src/tokens/components/selectscroll.json +65 -0
- package/src/tokens/components/skeleton.json +6 -0
- package/src/tokens/components/stepper.json +38 -0
- package/src/tokens/components/subtabs.json +45 -0
- package/src/tokens/components/switch.json +55 -0
- package/src/tokens/components/tabs.json +38 -0
- package/src/tokens/components/textfield.json +59 -0
- package/src/tokens/components/togglebutton.json +48 -0
- package/src/tokens/components/uploaddropzone.json +61 -0
- package/src/tokens/drawer.ts +37 -0
- package/src/tokens/foundation/breakpoints.json +10 -0
- package/src/tokens/foundation/colors.json +122 -0
- package/src/tokens/foundation/opacity.json +16 -0
- package/src/tokens/foundation/radius.json +14 -0
- package/src/tokens/foundation/size.json +38 -0
- package/src/tokens/foundation/spacing.json +19 -0
- package/src/tokens/foundation/typography.json +43 -0
- package/src/tokens/index.ts +3665 -0
- package/src/tokens/modal.ts +42 -0
- package/src/tokens/semantic/color.json +148 -0
- package/src/tokens/semantic/field.json +28 -0
- package/src/tokens/semantic/opacity.json +5 -0
- package/src/tokens/semantic/size.json +722 -0
- package/src/tokens/semantic/spacing.json +27 -0
- package/src/tokens/semantic/typography.json +87 -0
- package/src/utils/scrollLock.ts +44 -0
- package/dist/index.css +0 -514
- package/dist/index.css.map +0 -1
- package/dist/index.d.ts +0 -289
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export interface DataTableProps {
|
|
2
|
+
/** react-table props */
|
|
3
|
+
getTableProps: (propGetter?: any) => any;
|
|
4
|
+
getTableBodyProps: (propGetter?: any) => any;
|
|
5
|
+
headerGroups: any[];
|
|
6
|
+
page?: any[];
|
|
7
|
+
rows?: any[];
|
|
8
|
+
prepareRow: (row: any) => void;
|
|
9
|
+
/** If data is loading */
|
|
10
|
+
loading?: boolean;
|
|
11
|
+
/** View Status (pagination state) */
|
|
12
|
+
Status?: {
|
|
13
|
+
pageSize?: number;
|
|
14
|
+
pageNo?: number;
|
|
15
|
+
[key: string]: any;
|
|
16
|
+
};
|
|
17
|
+
/** Total data length */
|
|
18
|
+
length?: number;
|
|
19
|
+
/** Message to display when no records are found */
|
|
20
|
+
emptyMessage?: string;
|
|
21
|
+
/** Height of the empty-state illustration, in pixels. Default 300. */
|
|
22
|
+
emptyStateHeight?: number;
|
|
23
|
+
/** Keep headers fixed at top */
|
|
24
|
+
stickyHeader?: boolean;
|
|
25
|
+
/** Outer container class */
|
|
26
|
+
className?: string;
|
|
27
|
+
/** When set, the body row whose `original.clientId` matches is outlined (e.g. brief return-from-detail highlight). */
|
|
28
|
+
highlightRowClientId?: string | number | null;
|
|
29
|
+
/** Optional accessor for the id compared with `highlightRowClientId`; use when a row's default id field (userId, deviceId, ...) is not the one that was saved. */
|
|
30
|
+
getHighlightRowId?: (original: unknown) => string | number | null | undefined;
|
|
31
|
+
/** Array of column headers whose td should have text-center */
|
|
32
|
+
className_td_center?: string[];
|
|
33
|
+
/** Array of column headers whose td should have text-end */
|
|
34
|
+
className_td_end?: string[];
|
|
35
|
+
/** Prevent horizontal scroll; wraps cell content and uses fixed table layout */
|
|
36
|
+
preventHorizontalScroll?: boolean;
|
|
37
|
+
/** Max width of the frozen left pane when the table is split. Default `42%`. */
|
|
38
|
+
frozenPaneMaxWidth?: string | number;
|
|
39
|
+
/**
|
|
40
|
+
* When the table is split, size scrollable columns so this many fit in the right pane.
|
|
41
|
+
* Pass a number for a fixed count, or `'auto'` to fit as many as the pane width allows
|
|
42
|
+
* (using `minScrollColumnWidth` / `maxScrollColumns`).
|
|
43
|
+
*/
|
|
44
|
+
visibleScrollColumns?: number | 'auto';
|
|
45
|
+
/** Minimum width (px) per scroll column when `visibleScrollColumns` is `'auto'`. Default `104`. */
|
|
46
|
+
minScrollColumnWidth?: number;
|
|
47
|
+
/** Cap on visible scroll columns when `visibleScrollColumns` is `'auto'`. Default `6`. */
|
|
48
|
+
maxScrollColumns?: number;
|
|
49
|
+
}
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
3
|
+
import { DatePicker } from './DatePicker';
|
|
4
|
+
import type { DatePickerWrapperProps } from './DatePicker';
|
|
5
|
+
import { DateRangePicker } from '../DateRangePicker/DateRangePicker';
|
|
6
|
+
|
|
7
|
+
const meta: Meta<typeof DatePicker> = {
|
|
8
|
+
title: 'Design System/DatePicker',
|
|
9
|
+
component: DatePicker,
|
|
10
|
+
tags: [],
|
|
11
|
+
decorators: [
|
|
12
|
+
(Story) => (
|
|
13
|
+
<div style={{ padding: '24px', maxWidth: '420px' }}>
|
|
14
|
+
<Story />
|
|
15
|
+
</div>
|
|
16
|
+
),
|
|
17
|
+
],
|
|
18
|
+
args: {
|
|
19
|
+
label: 'Valid Upto',
|
|
20
|
+
placeholderText: 'Valid Upto',
|
|
21
|
+
dateFormat: 'yyyy-MM-dd',
|
|
22
|
+
isClearable: false,
|
|
23
|
+
error: false,
|
|
24
|
+
helperText: '(Date Format - YYYY-MM-DD)',
|
|
25
|
+
size: 'md',
|
|
26
|
+
required: false,
|
|
27
|
+
} as DatePickerWrapperProps,
|
|
28
|
+
argTypes: {
|
|
29
|
+
label: {
|
|
30
|
+
control: { type: 'text' },
|
|
31
|
+
description: 'Label shown above the input (like TextField)',
|
|
32
|
+
},
|
|
33
|
+
required: {
|
|
34
|
+
control: { type: 'boolean' },
|
|
35
|
+
description: 'Marks the field as required and appends * to the label',
|
|
36
|
+
},
|
|
37
|
+
size: {
|
|
38
|
+
control: { type: 'select' },
|
|
39
|
+
options: ['sm', 'md', 'lg'],
|
|
40
|
+
description: 'Size variant: sm, md, or lg',
|
|
41
|
+
},
|
|
42
|
+
placeholderText: {
|
|
43
|
+
control: { type: 'text' },
|
|
44
|
+
description: 'Placeholder text shown in the input field',
|
|
45
|
+
},
|
|
46
|
+
dateFormat: {
|
|
47
|
+
control: { type: 'text' },
|
|
48
|
+
description: "Format string for displaying the date (e.g., 'yyyy-MM-dd', 'MM/dd/yyyy')",
|
|
49
|
+
},
|
|
50
|
+
isClearable: {
|
|
51
|
+
control: { type: 'boolean' },
|
|
52
|
+
description: 'Whether the date picker can be cleared',
|
|
53
|
+
},
|
|
54
|
+
error: {
|
|
55
|
+
control: { type: 'boolean' },
|
|
56
|
+
description: 'Shows error state (red border and red helper text)',
|
|
57
|
+
},
|
|
58
|
+
helperText: {
|
|
59
|
+
control: { type: 'text' },
|
|
60
|
+
description: 'Helper text displayed below the input (e.g., date format or error message)',
|
|
61
|
+
},
|
|
62
|
+
selected: {
|
|
63
|
+
control: { type: 'date' },
|
|
64
|
+
description: 'Currently selected date (for controlled usage)',
|
|
65
|
+
},
|
|
66
|
+
minDate: {
|
|
67
|
+
control: { type: 'date' },
|
|
68
|
+
description: 'Minimum selectable date',
|
|
69
|
+
},
|
|
70
|
+
maxDate: {
|
|
71
|
+
control: { type: 'date' },
|
|
72
|
+
description: 'Maximum selectable date',
|
|
73
|
+
},
|
|
74
|
+
disabled: {
|
|
75
|
+
control: { type: 'boolean' },
|
|
76
|
+
description: 'Disables the date picker',
|
|
77
|
+
},
|
|
78
|
+
onChange: {
|
|
79
|
+
action: 'changed',
|
|
80
|
+
description: 'Callback fired when the date changes',
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
export default meta;
|
|
86
|
+
|
|
87
|
+
type Story = StoryObj<typeof DatePicker>;
|
|
88
|
+
|
|
89
|
+
const PlaygroundComponent = (args: DatePickerWrapperProps) => {
|
|
90
|
+
const [selectedDate, setSelectedDate] = React.useState<Date | null>(args.selected || null);
|
|
91
|
+
|
|
92
|
+
React.useEffect(() => {
|
|
93
|
+
setSelectedDate(args.selected || null);
|
|
94
|
+
}, [args.selected]);
|
|
95
|
+
|
|
96
|
+
return (
|
|
97
|
+
<DatePicker
|
|
98
|
+
{...args}
|
|
99
|
+
selected={selectedDate}
|
|
100
|
+
onChange={(date) => {
|
|
101
|
+
setSelectedDate(date);
|
|
102
|
+
args.onChange?.(date);
|
|
103
|
+
}}
|
|
104
|
+
showTimeSelect
|
|
105
|
+
timeFormat="HH:mm"
|
|
106
|
+
timeIntervals={15}
|
|
107
|
+
timeCaption="time"
|
|
108
|
+
dateFormat="MMMM d, yyyy h:mm aa"
|
|
109
|
+
/>
|
|
110
|
+
);
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
export const Playground: Story = {
|
|
114
|
+
render: PlaygroundComponent,
|
|
115
|
+
args: {
|
|
116
|
+
label: 'Valid Upto',
|
|
117
|
+
placeholderText: 'Valid Upto',
|
|
118
|
+
dateFormat: 'yyyy-MM-dd',
|
|
119
|
+
helperText: '(Date Format - YYYY-MM-DD)',
|
|
120
|
+
size: 'md',
|
|
121
|
+
required: false,
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
const ShowcaseComponent = () => {
|
|
126
|
+
const [date1, setDate1] = React.useState<Date | null>(null);
|
|
127
|
+
const [date2, setDate2] = React.useState<Date | null>(new Date(1990, 5, 15));
|
|
128
|
+
const [date3, setDate3] = React.useState<Date | null>(new Date(2024, 0, 1));
|
|
129
|
+
const [dateRange, setDateRange] = React.useState<[Date | null, Date | null]>([null, null]);
|
|
130
|
+
const [date5, setDate5] = React.useState<Date | null>(null);
|
|
131
|
+
const [date6, setDate6] = React.useState<Date | null>(null);
|
|
132
|
+
const [date7, setDate7] = React.useState<Date | null>(new Date(2024, 5, 15));
|
|
133
|
+
|
|
134
|
+
return (
|
|
135
|
+
<div style={{ display: 'flex', flexDirection: 'column', gap: '24px' }}>
|
|
136
|
+
{/* Default with label */}
|
|
137
|
+
<DatePicker
|
|
138
|
+
label="Date of Birth"
|
|
139
|
+
placeholderText="Date of Birth"
|
|
140
|
+
dateFormat="yyyy-MM-dd"
|
|
141
|
+
selected={date1}
|
|
142
|
+
onChange={setDate1}
|
|
143
|
+
helperText="(Date Format - YYYY-MM-DD)"
|
|
144
|
+
/>
|
|
145
|
+
|
|
146
|
+
{/* With Value */}
|
|
147
|
+
<DatePicker
|
|
148
|
+
label="Date of Birth"
|
|
149
|
+
placeholderText="Date of Birth"
|
|
150
|
+
dateFormat="yyyy-MM-dd"
|
|
151
|
+
selected={date2}
|
|
152
|
+
onChange={setDate2}
|
|
153
|
+
helperText="(Date Format - YYYY-MM-DD)"
|
|
154
|
+
/>
|
|
155
|
+
|
|
156
|
+
{/* Required */}
|
|
157
|
+
<DatePicker
|
|
158
|
+
label="Appointment Date"
|
|
159
|
+
placeholderText="Select appointment date"
|
|
160
|
+
dateFormat="yyyy-MM-dd"
|
|
161
|
+
selected={null}
|
|
162
|
+
onChange={() => {}}
|
|
163
|
+
required
|
|
164
|
+
helperText="(Date Format - YYYY-MM-DD)"
|
|
165
|
+
/>
|
|
166
|
+
|
|
167
|
+
{/* Error State */}
|
|
168
|
+
<DatePicker
|
|
169
|
+
label="Appointment Date"
|
|
170
|
+
placeholderText="Appointment Date"
|
|
171
|
+
dateFormat="yyyy-MM-dd"
|
|
172
|
+
selected={date3}
|
|
173
|
+
onChange={setDate3}
|
|
174
|
+
error
|
|
175
|
+
helperText="Please select a valid date"
|
|
176
|
+
/>
|
|
177
|
+
|
|
178
|
+
{/* Date Range */}
|
|
179
|
+
<DatePicker
|
|
180
|
+
label="Select Date Range"
|
|
181
|
+
placeholderText="Select Date Range"
|
|
182
|
+
dateFormat="yyyy-MM-dd"
|
|
183
|
+
selectsRange
|
|
184
|
+
startDate={dateRange[0]}
|
|
185
|
+
endDate={dateRange[1]}
|
|
186
|
+
onChange={(update: [Date | null, Date | null] | Date | null) => {
|
|
187
|
+
if (Array.isArray(update)) {
|
|
188
|
+
setDateRange(update);
|
|
189
|
+
}
|
|
190
|
+
}}
|
|
191
|
+
minDate={new Date(2024, 0, 1)}
|
|
192
|
+
maxDate={new Date(2024, 11, 31)}
|
|
193
|
+
helperText="Select a date range between Jan 1, 2024 and Dec 31, 2024"
|
|
194
|
+
/>
|
|
195
|
+
|
|
196
|
+
{/* Clearable */}
|
|
197
|
+
<DatePicker
|
|
198
|
+
label="Select a date"
|
|
199
|
+
placeholderText="Select a date"
|
|
200
|
+
dateFormat="yyyy-MM-dd"
|
|
201
|
+
selected={date5}
|
|
202
|
+
onChange={setDate5}
|
|
203
|
+
isClearable
|
|
204
|
+
helperText="(Date Format - YYYY-MM-DD)"
|
|
205
|
+
/>
|
|
206
|
+
|
|
207
|
+
{/* Custom Date Format */}
|
|
208
|
+
<DatePicker
|
|
209
|
+
label="Select a date"
|
|
210
|
+
placeholderText="Select a date"
|
|
211
|
+
dateFormat="MM/dd/yyyy"
|
|
212
|
+
selected={date6}
|
|
213
|
+
onChange={setDate6}
|
|
214
|
+
helperText="(Date Format - MM/DD/YYYY)"
|
|
215
|
+
/>
|
|
216
|
+
|
|
217
|
+
{/* Disabled */}
|
|
218
|
+
<DatePicker
|
|
219
|
+
label="Select a date"
|
|
220
|
+
placeholderText="Select a date"
|
|
221
|
+
dateFormat="yyyy-MM-dd"
|
|
222
|
+
disabled
|
|
223
|
+
selected={date7}
|
|
224
|
+
onChange={setDate7}
|
|
225
|
+
helperText="(Date Format - YYYY-MM-DD)"
|
|
226
|
+
/>
|
|
227
|
+
|
|
228
|
+
{/* Without label */}
|
|
229
|
+
<div>
|
|
230
|
+
<h3 style={{ fontSize: '18px', fontWeight: 'bold', marginBottom: '16px' }}>
|
|
231
|
+
Without label
|
|
232
|
+
</h3>
|
|
233
|
+
<DatePicker
|
|
234
|
+
placeholderText="Select a date"
|
|
235
|
+
dateFormat="yyyy-MM-dd"
|
|
236
|
+
selected={null}
|
|
237
|
+
onChange={() => {}}
|
|
238
|
+
helperText="(Date Format - YYYY-MM-DD)"
|
|
239
|
+
/>
|
|
240
|
+
</div>
|
|
241
|
+
|
|
242
|
+
{/* Size variants: sm, md, lg */}
|
|
243
|
+
<div>
|
|
244
|
+
<h3 style={{ fontSize: '18px', fontWeight: 'bold', marginBottom: '16px' }}>
|
|
245
|
+
Size Variants (sm, md, lg)
|
|
246
|
+
</h3>
|
|
247
|
+
<div style={{ display: 'flex', flexDirection: 'column', gap: '24px' }}>
|
|
248
|
+
<div>
|
|
249
|
+
<h4 style={{ fontSize: '14px', fontWeight: 600, marginBottom: '8px' }}>Small (sm)</h4>
|
|
250
|
+
<DatePicker
|
|
251
|
+
label="Valid Upto"
|
|
252
|
+
placeholderText="Select a date"
|
|
253
|
+
dateFormat="yyyy-MM-dd"
|
|
254
|
+
size="sm"
|
|
255
|
+
selected={null}
|
|
256
|
+
onChange={() => {}}
|
|
257
|
+
helperText="(Date Format - YYYY-MM-DD)"
|
|
258
|
+
/>
|
|
259
|
+
</div>
|
|
260
|
+
<div>
|
|
261
|
+
<h4 style={{ fontSize: '14px', fontWeight: 600, marginBottom: '8px' }}>Medium (md)</h4>
|
|
262
|
+
<DatePicker
|
|
263
|
+
label="Valid Upto"
|
|
264
|
+
placeholderText="Select a date"
|
|
265
|
+
dateFormat="yyyy-MM-dd"
|
|
266
|
+
size="md"
|
|
267
|
+
selected={null}
|
|
268
|
+
onChange={() => {}}
|
|
269
|
+
helperText="(Date Format - YYYY-MM-DD)"
|
|
270
|
+
/>
|
|
271
|
+
</div>
|
|
272
|
+
<div>
|
|
273
|
+
<h4 style={{ fontSize: '14px', fontWeight: 600, marginBottom: '8px' }}>Large (lg)</h4>
|
|
274
|
+
<DatePicker
|
|
275
|
+
label="Valid Upto"
|
|
276
|
+
placeholderText="Select a date"
|
|
277
|
+
dateFormat="yyyy-MM-dd"
|
|
278
|
+
size="lg"
|
|
279
|
+
selected={null}
|
|
280
|
+
onChange={() => {}}
|
|
281
|
+
helperText="(Date Format - YYYY-MM-DD)"
|
|
282
|
+
/>
|
|
283
|
+
</div>
|
|
284
|
+
</div>
|
|
285
|
+
</div>
|
|
286
|
+
</div>
|
|
287
|
+
);
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
export const Showcase: Story = {
|
|
291
|
+
render: ShowcaseComponent,
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
const DateRangeComponent = () => {
|
|
295
|
+
const [range, setRange] = React.useState<{
|
|
296
|
+
startDate: Date | null;
|
|
297
|
+
endDate: Date | null;
|
|
298
|
+
}>({
|
|
299
|
+
startDate: new Date(2024, 9, 1),
|
|
300
|
+
endDate: new Date(2024, 9, 31),
|
|
301
|
+
});
|
|
302
|
+
|
|
303
|
+
return (
|
|
304
|
+
<div style={{ display: 'flex', flexDirection: 'column', gap: '24px' }}>
|
|
305
|
+
<div>
|
|
306
|
+
<h3 style={{ fontSize: '18px', fontWeight: 'bold', marginBottom: '16px' }}>
|
|
307
|
+
Date Range (From → To)
|
|
308
|
+
</h3>
|
|
309
|
+
<DateRangePicker startDate={range.startDate} endDate={range.endDate} onChange={setRange} />
|
|
310
|
+
</div>
|
|
311
|
+
|
|
312
|
+
<div>
|
|
313
|
+
<h3 style={{ fontSize: '18px', fontWeight: 'bold', marginBottom: '16px' }}>
|
|
314
|
+
With custom labels
|
|
315
|
+
</h3>
|
|
316
|
+
<DateRangePicker
|
|
317
|
+
startDate={range.startDate}
|
|
318
|
+
endDate={range.endDate}
|
|
319
|
+
onChange={setRange}
|
|
320
|
+
startLabel="Start date"
|
|
321
|
+
endLabel="End date"
|
|
322
|
+
size="md"
|
|
323
|
+
/>
|
|
324
|
+
</div>
|
|
325
|
+
|
|
326
|
+
<div>
|
|
327
|
+
<h3 style={{ fontSize: '18px', fontWeight: 'bold', marginBottom: '16px' }}>Disabled</h3>
|
|
328
|
+
<DateRangePicker
|
|
329
|
+
startDate={range.startDate}
|
|
330
|
+
endDate={range.endDate}
|
|
331
|
+
onChange={setRange}
|
|
332
|
+
disabled
|
|
333
|
+
/>
|
|
334
|
+
</div>
|
|
335
|
+
</div>
|
|
336
|
+
);
|
|
337
|
+
};
|
|
338
|
+
|
|
339
|
+
export const DateRange: Story = {
|
|
340
|
+
render: DateRangeComponent,
|
|
341
|
+
};
|