@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.
Files changed (207) hide show
  1. package/assets/images/noData.webp +0 -0
  2. package/dist/index.js +15237 -650
  3. package/dist/index.js.map +1 -1
  4. package/dist/noData-XPRHKMFR.webp +0 -0
  5. package/package.json +21 -7
  6. package/src/ThemeProvider/ThemeContext.tsx +75 -0
  7. package/src/ThemeProvider/index.ts +7 -0
  8. package/src/assets/images/noData.webp +0 -0
  9. package/src/assets.d.ts +10 -0
  10. package/src/components/Accordion/Accordion.stories.tsx +64 -0
  11. package/src/components/Accordion/Accordion.tsx +219 -0
  12. package/src/components/Accordion/Accordion.types.ts +16 -0
  13. package/src/components/Avatar/Avatar.stories.tsx +304 -0
  14. package/src/components/Avatar/Avatar.tsx +211 -0
  15. package/src/components/Avatar/Avatar.types.ts +33 -0
  16. package/src/components/Badge/Badge.stories.tsx +143 -0
  17. package/src/components/Badge/Badge.tsx +138 -0
  18. package/src/components/Badge/Badge.types.ts +24 -0
  19. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +114 -0
  20. package/src/components/Breadcrumb/Breadcrumb.tsx +120 -0
  21. package/src/components/Breadcrumb/Breadcrumb.types.ts +22 -0
  22. package/src/components/Button/Button.stories.tsx +457 -0
  23. package/src/components/Button/Button.tsx +202 -0
  24. package/src/components/Button/Button.types.ts +18 -0
  25. package/src/components/Checkbox/Checkbox.stories.tsx +254 -0
  26. package/src/components/Checkbox/Checkbox.tsx +352 -0
  27. package/src/components/Checkbox/Checkbox.types.ts +123 -0
  28. package/src/components/CloseButton/CloseButton.stories.tsx +100 -0
  29. package/src/components/CloseButton/CloseButton.tsx +117 -0
  30. package/src/components/CloseButton/CloseButton.types.ts +15 -0
  31. package/src/components/CollapsibleSearch/CollapsibleSearch.tsx +120 -0
  32. package/src/components/DataTable/DataTable.stories.tsx +233 -0
  33. package/src/components/DataTable/DataTable.tsx +968 -0
  34. package/src/components/DataTable/DataTable.types.ts +49 -0
  35. package/src/components/DatePicker/DatePicker.stories.tsx +341 -0
  36. package/src/components/DatePicker/DatePicker.tsx +669 -0
  37. package/src/components/DatePicker/DatePicker.types.ts +105 -0
  38. package/src/components/DatePicker/DateTimePicker.tsx +35 -0
  39. package/src/components/DateRangePicker/DateRangePicker.tsx +179 -0
  40. package/src/components/DateRangePicker/DateRangePicker.types.ts +34 -0
  41. package/src/components/Drawer/Drawer.stories.tsx +243 -0
  42. package/src/components/Drawer/Drawer.tsx +196 -0
  43. package/src/components/Drawer/Drawer.types.ts +60 -0
  44. package/src/components/FileUpload/FileUpload.stories.tsx +162 -0
  45. package/src/components/FileUpload/FileUpload.tsx +216 -0
  46. package/src/components/FileUpload/FileUpload.types.ts +80 -0
  47. package/src/components/FilterPopover/FilterPopover.stories.tsx +173 -0
  48. package/src/components/FilterPopover/FilterPopover.tsx +310 -0
  49. package/src/components/FilterPopover/FilterPopover.types.ts +26 -0
  50. package/src/components/ImageViewer/ImageViewerToolbar.jsx +81 -0
  51. package/src/components/ImageViewer/useImagePanRotate.js +102 -0
  52. package/src/components/IpWhitelistField/IpWhitelistField.stories.tsx +138 -0
  53. package/src/components/IpWhitelistField/IpWhitelistField.tsx +164 -0
  54. package/src/components/IpWhitelistField/IpWhitelistField.types.ts +42 -0
  55. package/src/components/Loader/Loader.stories.tsx +95 -0
  56. package/src/components/Loader/Loader.tsx +132 -0
  57. package/src/components/Loader/Loader.types.ts +6 -0
  58. package/src/components/Menu/Menu.tsx +143 -0
  59. package/src/components/Menu/Menu.types.ts +28 -0
  60. package/src/components/MenuButton/MenuButton.stories.tsx +140 -0
  61. package/src/components/MenuButton/MenuButton.tsx +45 -0
  62. package/src/components/MenuButton/MenuButton.types.ts +21 -0
  63. package/src/components/Modal/Modal.stories.tsx +266 -0
  64. package/src/components/Modal/Modal.tsx +399 -0
  65. package/src/components/Modal/index.ts +2 -0
  66. package/src/components/Modal/types.ts +126 -0
  67. package/src/components/Pagination/Pagination.stories.tsx +167 -0
  68. package/src/components/Pagination/Pagination.tsx +266 -0
  69. package/src/components/Pagination/Pagination.types.ts +20 -0
  70. package/src/components/PeriodSelector/PeriodSelector.stories.tsx +50 -0
  71. package/src/components/PeriodSelector/PeriodSelector.tsx +47 -0
  72. package/src/components/PeriodSelector/PeriodSelector.types.ts +10 -0
  73. package/src/components/PhoneField/PhoneField.stories.tsx +141 -0
  74. package/src/components/PhoneField/PhoneField.tsx +284 -0
  75. package/src/components/PhoneField/PhoneField.types.ts +89 -0
  76. package/src/components/PhoneField/countryCodes.ts +236 -0
  77. package/src/components/Progress/Progress.stories.tsx +83 -0
  78. package/src/components/Progress/Progress.tsx +91 -0
  79. package/src/components/Progress/Progress.types.ts +22 -0
  80. package/src/components/RadioButton/RadioButton.stories.tsx +332 -0
  81. package/src/components/RadioButton/RadioButton.tsx +427 -0
  82. package/src/components/RadioButton/RadioButton.types.ts +117 -0
  83. package/src/components/ReportCard/ReportCard.tsx +183 -0
  84. package/src/components/ReportCard/ReportCard.types.ts +17 -0
  85. package/src/components/SectionIcon/SectionIcon.tsx +87 -0
  86. package/src/components/SectionIcon/SectionIcon.types.ts +23 -0
  87. package/src/components/SegmentedInputField/SegmentedInputField.stories.tsx +165 -0
  88. package/src/components/SegmentedInputField/SegmentedInputField.tsx +174 -0
  89. package/src/components/SegmentedInputField/SegmentedInputField.types.ts +51 -0
  90. package/src/components/SelectScroll/SelectScroll.stories.tsx +336 -0
  91. package/src/components/SelectScroll/SelectScroll.tsx +1119 -0
  92. package/src/components/SelectScroll/SelectScroll.types.ts +60 -0
  93. package/src/components/Selector/Selector.stories.tsx +382 -0
  94. package/src/components/Selector/Selector.tsx +1310 -0
  95. package/src/components/Selector/Selector.types.ts +71 -0
  96. package/src/components/Skeleton/Skeleton.stories.tsx +133 -0
  97. package/src/components/Skeleton/Skeleton.tsx +20 -0
  98. package/src/components/Skeleton/Skeleton.types.ts +3 -0
  99. package/src/components/Spinner/Spinner.stories.tsx +84 -0
  100. package/src/components/Spinner/Spinner.tsx +79 -0
  101. package/src/components/Spinner/Spinner.types.ts +8 -0
  102. package/src/components/StatCard/StatCard.stories.tsx +125 -0
  103. package/src/components/StatCard/StatCard.tsx +167 -0
  104. package/src/components/StatCard/StatCard.types.ts +20 -0
  105. package/src/components/StatusBadge/StatusBadge.stories.tsx +179 -0
  106. package/src/components/StatusBadge/StatusBadge.tsx +74 -0
  107. package/src/components/StatusBadge/StatusBadge.types.ts +23 -0
  108. package/src/components/Stepper/Stepper.stories.tsx +85 -0
  109. package/src/components/Stepper/Stepper.tsx +138 -0
  110. package/src/components/Stepper/Stepper.types.ts +16 -0
  111. package/src/components/SubTabs/SubTabs.stories.tsx +128 -0
  112. package/src/components/SubTabs/SubTabs.tsx +279 -0
  113. package/src/components/SubTabs/SubTabs.types.ts +44 -0
  114. package/src/components/SummaryCard/SummaryCard.stories.tsx +100 -0
  115. package/src/components/SummaryCard/SummaryCard.tsx +141 -0
  116. package/src/components/SummaryCard/SummaryCard.types.ts +22 -0
  117. package/src/components/Switch/Switch.stories.tsx +59 -0
  118. package/src/components/Switch/Switch.tsx +217 -0
  119. package/src/components/Switch/Switch.types.ts +22 -0
  120. package/src/components/Tabs/Tabs.stories.tsx +178 -0
  121. package/src/components/Tabs/Tabs.tsx +197 -0
  122. package/src/components/Tabs/Tabs.types.ts +34 -0
  123. package/src/components/TextField/TextField.stories.tsx +249 -0
  124. package/src/components/TextField/TextField.tsx +462 -0
  125. package/src/components/TextField/TextField.types.ts +141 -0
  126. package/src/components/Toast/Toast.stories.tsx +237 -0
  127. package/src/components/Toast/Toast.tsx +246 -0
  128. package/src/components/Toast/Toast.types.ts +31 -0
  129. package/src/components/ToggleButton/ToggleButton.stories.tsx +105 -0
  130. package/src/components/ToggleButton/ToggleButton.tsx +267 -0
  131. package/src/components/ToggleButton/ToggleButton.types.ts +19 -0
  132. package/src/components/UploadDropzone/UploadDropzone.jsx +78 -0
  133. package/src/components/UploadDropzone2/UploadDropzone.stories.tsx +94 -0
  134. package/src/components/UploadDropzone2/UploadDropzone.tsx +222 -0
  135. package/src/components/UploadDropzone2/UploadDropzone.types.ts +54 -0
  136. package/src/components/ViewEditToggle/ViewEditToggle.stories.tsx +40 -0
  137. package/src/components/ViewEditToggle/ViewEditToggle.tsx +239 -0
  138. package/src/components/ViewEditToggle/ViewEditToggle.types.ts +27 -0
  139. package/src/components/index.ts +157 -0
  140. package/src/icons/ReportDollarIcon.tsx +71 -0
  141. package/src/icons/index.ts +27 -0
  142. package/src/index.ts +214 -0
  143. package/src/storybook/preview.tsx +64 -0
  144. package/src/theme/index.ts +4 -0
  145. package/src/theme/types.d.ts +1 -0
  146. package/src/themes/cpc.ts +4 -0
  147. package/src/themes/firebird.ts +4 -0
  148. package/src/tokens/brands/cpc/themes/dark.json +82 -0
  149. package/src/tokens/brands/cpc/themes/light.json +1 -0
  150. package/src/tokens/brands/default/brand.json +20 -0
  151. package/src/tokens/brands/firebird/themes/dark.json +28 -0
  152. package/src/tokens/brands/firebird/themes/light.json +20 -0
  153. package/src/tokens/button.ts +24 -0
  154. package/src/tokens/components/accordion.json +52 -0
  155. package/src/tokens/components/avatar.json +40 -0
  156. package/src/tokens/components/badge.json +41 -0
  157. package/src/tokens/components/breadcrumb.json +13 -0
  158. package/src/tokens/components/button.json +67 -0
  159. package/src/tokens/components/card.json +39 -0
  160. package/src/tokens/components/checkbox.json +64 -0
  161. package/src/tokens/components/closebutton.json +55 -0
  162. package/src/tokens/components/datatable.json +40 -0
  163. package/src/tokens/components/datepicker.json +99 -0
  164. package/src/tokens/components/drawer.json +23 -0
  165. package/src/tokens/components/field.json +29 -0
  166. package/src/tokens/components/fileupload.json +57 -0
  167. package/src/tokens/components/filterpopover.json +29 -0
  168. package/src/tokens/components/input.json +31 -0
  169. package/src/tokens/components/ipwhitelistfield.json +16 -0
  170. package/src/tokens/components/loader.json +15 -0
  171. package/src/tokens/components/menu.json +21 -0
  172. package/src/tokens/components/modal.json +25 -0
  173. package/src/tokens/components/pagination.json +45 -0
  174. package/src/tokens/components/phonefield.json +41 -0
  175. package/src/tokens/components/progress.json +12 -0
  176. package/src/tokens/components/radio.json +87 -0
  177. package/src/tokens/components/reportcard.json +17 -0
  178. package/src/tokens/components/selector.json +87 -0
  179. package/src/tokens/components/selectscroll.json +65 -0
  180. package/src/tokens/components/skeleton.json +6 -0
  181. package/src/tokens/components/stepper.json +38 -0
  182. package/src/tokens/components/subtabs.json +45 -0
  183. package/src/tokens/components/switch.json +55 -0
  184. package/src/tokens/components/tabs.json +38 -0
  185. package/src/tokens/components/textfield.json +59 -0
  186. package/src/tokens/components/togglebutton.json +48 -0
  187. package/src/tokens/components/uploaddropzone.json +61 -0
  188. package/src/tokens/drawer.ts +37 -0
  189. package/src/tokens/foundation/breakpoints.json +10 -0
  190. package/src/tokens/foundation/colors.json +122 -0
  191. package/src/tokens/foundation/opacity.json +16 -0
  192. package/src/tokens/foundation/radius.json +14 -0
  193. package/src/tokens/foundation/size.json +38 -0
  194. package/src/tokens/foundation/spacing.json +19 -0
  195. package/src/tokens/foundation/typography.json +43 -0
  196. package/src/tokens/index.ts +3665 -0
  197. package/src/tokens/modal.ts +42 -0
  198. package/src/tokens/semantic/color.json +148 -0
  199. package/src/tokens/semantic/field.json +28 -0
  200. package/src/tokens/semantic/opacity.json +5 -0
  201. package/src/tokens/semantic/size.json +722 -0
  202. package/src/tokens/semantic/spacing.json +27 -0
  203. package/src/tokens/semantic/typography.json +87 -0
  204. package/src/utils/scrollLock.ts +44 -0
  205. package/dist/index.css +0 -514
  206. package/dist/index.css.map +0 -1
  207. 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
+ };