@altimateai/ui-components 0.0.23-beta.3 → 0.0.23-beta.5

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.
@@ -0,0 +1,103 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import { addDays } from "date-fns";
3
+ import { TZDate } from "react-day-picker";
4
+
5
+ import { Calendar } from "./Calendar.tsx";
6
+ import { action } from "@storybook/addon-actions";
7
+
8
+ /**
9
+ * A date field component that allows users to enter and edit date.
10
+ */
11
+ const meta = {
12
+ title: "Shadcn/Components/Calendar",
13
+ component: Calendar,
14
+ argTypes: {
15
+ mode: {
16
+ control: { type: "select" },
17
+ options: ["single", "multiple", "range"],
18
+ },
19
+ showOutsideDays: { control: "boolean" },
20
+ captionLayout: {
21
+ control: { type: "select" },
22
+ options: ["label", "dropdown"],
23
+ },
24
+ buttonVariant: {
25
+ control: { type: "select" },
26
+ options: ["ghost", "outline", "solid"],
27
+ },
28
+ numberOfMonths: {
29
+ control: { type: "number" },
30
+ description: "Number of months to display in the calendar.",
31
+ },
32
+ timeZone: {
33
+ control: { type: "text" },
34
+ description: "The time zone for the calendar. Default is 'Asia/Kolkata'.",
35
+ },
36
+ onSelect: { action: "date selected" },
37
+ },
38
+ args: {
39
+ mode: "single",
40
+ numberOfMonths: 2,
41
+ selected: new Date(),
42
+ showOutsideDays: true,
43
+ captionLayout: "label",
44
+ buttonVariant: "ghost",
45
+ timeZone: "Asia/Kolkata", // Default time zone
46
+ onSelect: action("onDayClick"),
47
+ },
48
+ parameters: {
49
+ layout: "centered",
50
+ },
51
+ } satisfies Meta<typeof Calendar>;
52
+
53
+ export default meta;
54
+
55
+ type Story = StoryObj<typeof meta>;
56
+
57
+ /**
58
+ * The default form of the calendar.
59
+ */
60
+ export const Default: Story = {};
61
+
62
+ /**
63
+ * Use the `multiple` mode to select multiple dates.
64
+ */
65
+ export const Multiple: Story = {
66
+ args: {
67
+ mode: "multiple",
68
+ selected: [new Date(), addDays(new Date(), 2), addDays(new Date(), 8)],
69
+ numberOfMonths: 2,
70
+ },
71
+ };
72
+
73
+ /**
74
+ * Use the `range` mode to select a range of dates.
75
+ */
76
+ export const Range: Story = {
77
+ args: {
78
+ mode: "range",
79
+ selected: { from: new Date(), to: addDays(new Date(), 5) },
80
+ numberOfMonths: 2, // Number of months displayed for range selection
81
+ },
82
+ };
83
+
84
+ /**
85
+ * Customize the button variant and caption layout.
86
+ */
87
+ export const CustomStyle: Story = {
88
+ args: {
89
+ buttonVariant: "outline",
90
+ captionLayout: "dropdown",
91
+ },
92
+ };
93
+
94
+ /**
95
+ * Use timezone-specific dates for the calendar.
96
+ */
97
+ export const TimeZone: Story = {
98
+ args: {
99
+ mode: "single",
100
+ selected: new TZDate(new Date(), "Pacific/Kiritimati"), // TZDate for Pacific/Kiritimati
101
+ timeZone: "Pacific/Kiritimati",
102
+ },
103
+ };
@@ -0,0 +1,540 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import { TZDateRange, PREDEFINED_RANGES } from "./DateRange";
3
+ import { action } from "@storybook/addon-actions";
4
+
5
+ const timeZones: string[] = [
6
+ "Africa/Abidjan",
7
+ "Africa/Accra",
8
+ "Africa/Addis_Ababa",
9
+ "Africa/Algiers",
10
+ "Africa/Asmara",
11
+ "Africa/Bamako",
12
+ "Africa/Bangui",
13
+ "Africa/Banjul",
14
+ "Africa/Bissau",
15
+ "Africa/Blantyre",
16
+ "Africa/Brazzaville",
17
+ "Africa/Bujumbura",
18
+ "Africa/Cairo",
19
+ "Africa/Casablanca",
20
+ "Africa/Ceuta",
21
+ "Africa/Conakry",
22
+ "Africa/Dakar",
23
+ "Africa/Dar_es_Salaam",
24
+ "Africa/Djibouti",
25
+ "Africa/Douala",
26
+ "Africa/El_Aaiun",
27
+ "Africa/Freetown",
28
+ "Africa/Gaborone",
29
+ "Africa/Harare",
30
+ "Africa/Johannesburg",
31
+ "Africa/Juba",
32
+ "Africa/Kampala",
33
+ "Africa/Khartoum",
34
+ "Africa/Kigali",
35
+ "Africa/Kinshasa",
36
+ "Africa/Lagos",
37
+ "Africa/Libreville",
38
+ "Africa/Lome",
39
+ "Africa/Luanda",
40
+ "Africa/Lubumbashi",
41
+ "Africa/Lusaka",
42
+ "Africa/Malabo",
43
+ "Africa/Maputo",
44
+ "Africa/Maseru",
45
+ "Africa/Mbabane",
46
+ "Africa/Mogadishu",
47
+ "Africa/Monrovia",
48
+ "Africa/Nairobi",
49
+ "Africa/Ndjamena",
50
+ "Africa/Niamey",
51
+ "Africa/Nouakchott",
52
+ "Africa/Ouagadougou",
53
+ "Africa/Porto-Novo",
54
+ "Africa/Sao_Tome",
55
+ "Africa/Tripoli",
56
+ "Africa/Tunis",
57
+ "Africa/Windhoek",
58
+ "America/Adak",
59
+ "America/Anchorage",
60
+ "America/Anguilla",
61
+ "America/Antigua",
62
+ "America/Araguaina",
63
+ "America/Argentina/Buenos_Aires",
64
+ "America/Argentina/Catamarca",
65
+ "America/Argentina/Cordoba",
66
+ "America/Argentina/Jujuy",
67
+ "America/Argentina/La_Rioja",
68
+ "America/Argentina/Mendoza",
69
+ "America/Argentina/Rio_Gallegos",
70
+ "America/Argentina/Salta",
71
+ "America/Argentina/San_Juan",
72
+ "America/Argentina/San_Luis",
73
+ "America/Argentina/Tucuman",
74
+ "America/Argentina/Ushuaia",
75
+ "America/Aruba",
76
+ "America/Asuncion",
77
+ "America/Atikokan",
78
+ "America/Bahia",
79
+ "America/Bahia_Banderas",
80
+ "America/Barbados",
81
+ "America/Belem",
82
+ "America/Belize",
83
+ "America/Blanc-Sablon",
84
+ "America/Boa_Vista",
85
+ "America/Bogota",
86
+ "America/Boise",
87
+ "America/Cambridge_Bay",
88
+ "America/Campo_Grande",
89
+ "America/Cancun",
90
+ "America/Caracas",
91
+ "America/Cayenne",
92
+ "America/Cayman",
93
+ "America/Chicago",
94
+ "America/Chihuahua",
95
+ "America/Costa_Rica",
96
+ "America/Creston",
97
+ "America/Cuiaba",
98
+ "America/Curacao",
99
+ "America/Danmarkshavn",
100
+ "America/Dawson",
101
+ "America/Dawson_Creek",
102
+ "America/Denver",
103
+ "America/Detroit",
104
+ "America/Dominica",
105
+ "America/Edmonton",
106
+ "America/Eirunepe",
107
+ "America/El_Salvador",
108
+ "America/Fort_Nelson",
109
+ "America/Fortaleza",
110
+ "America/Glace_Bay",
111
+ "America/Godthab",
112
+ "America/Goose_Bay",
113
+ "America/Grand_Turk",
114
+ "America/Grenada",
115
+ "America/Guadeloupe",
116
+ "America/Guatemala",
117
+ "America/Guayaquil",
118
+ "America/Guyana",
119
+ "America/Halifax",
120
+ "America/Havana",
121
+ "America/Hermosillo",
122
+ "America/Indiana/Indianapolis",
123
+ "America/Indiana/Knox",
124
+ "America/Indiana/Marengo",
125
+ "America/Indiana/Petersburg",
126
+ "America/Indiana/Tell_City",
127
+ "America/Indiana/Vevay",
128
+ "America/Indiana/Vincennes",
129
+ "America/Indiana/Winamac",
130
+ "America/Inuvik",
131
+ "America/Iqaluit",
132
+ "America/Jamaica",
133
+ "America/Juneau",
134
+ "America/Kentucky/Louisville",
135
+ "America/Kentucky/Monticello",
136
+ "America/La_Paz",
137
+ "America/Lima",
138
+ "America/Los_Angeles",
139
+ "America/Lower_Princes",
140
+ "America/Maceio",
141
+ "America/Managua",
142
+ "America/Manaus",
143
+ "America/Marigot",
144
+ "America/Martinique",
145
+ "America/Matamoros",
146
+ "America/Mazatlan",
147
+ "America/Menominee",
148
+ "America/Merida",
149
+ "America/Metlakatla",
150
+ "America/Mexico_City",
151
+ "America/Miquelon",
152
+ "America/Moncton",
153
+ "America/Monterrey",
154
+ "America/Montevideo",
155
+ "America/Montserrat",
156
+ "America/Nassau",
157
+ "America/New_York",
158
+ "America/Nipigon",
159
+ "America/Nome",
160
+ "America/Noronha",
161
+ "America/North_Dakota/Beulah",
162
+ "America/North_Dakota/Center",
163
+ "America/North_Dakota/New_Salem",
164
+ "America/Nuuk",
165
+ "America/Ojinaga",
166
+ "America/Panama",
167
+ "America/Pangnirtung",
168
+ "America/Paramaribo",
169
+ "America/Phoenix",
170
+ "America/Port-au-Prince",
171
+ "America/Port_of_Spain",
172
+ "America/Porto_Velho",
173
+ "America/Puerto_Rico",
174
+ "America/Punta_Arenas",
175
+ "America/Rainy_River",
176
+ "America/Rankin_Inlet",
177
+ "America/Recife",
178
+ "America/Regina",
179
+ "America/Resolute",
180
+ "America/Rio_Branco",
181
+ "America/Santarem",
182
+ "America/Santiago",
183
+ "America/Santo_Domingo",
184
+ "America/Sao_Paulo",
185
+ "America/Scoresbysund",
186
+ "America/Sitka",
187
+ "America/St_Barthelemy",
188
+ "America/St_Johns",
189
+ "America/St_Kitts",
190
+ "America/St_Lucia",
191
+ "America/St_Thomas",
192
+ "America/St_Vincent",
193
+ "America/Swift_Current",
194
+ "America/Tegucigalpa",
195
+ "America/Thule",
196
+ "America/Thunder_Bay",
197
+ "America/Tijuana",
198
+ "America/Toronto",
199
+ "America/Tortola",
200
+ "America/Vancouver",
201
+ "America/Whitehorse",
202
+ "America/Winnipeg",
203
+ "America/Yakutat",
204
+ "America/Yellowknife",
205
+ "Antarctica/Casey",
206
+ "Antarctica/Davis",
207
+ "Antarctica/DumontDUrville",
208
+ "Antarctica/Macquarie",
209
+ "Antarctica/Mawson",
210
+ "Antarctica/McMurdo",
211
+ "Antarctica/Palmer",
212
+ "Antarctica/Rothera",
213
+ "Antarctica/Syowa",
214
+ "Antarctica/Troll",
215
+ "Antarctica/Vostok",
216
+ "Arctic/Longyearbyen",
217
+ "Asia/Aden",
218
+ "Asia/Almaty",
219
+ "Asia/Amman",
220
+ "Asia/Anadyr",
221
+ "Asia/Aqtau",
222
+ "Asia/Aqtobe",
223
+ "Asia/Ashgabat",
224
+ "Asia/Atyrau",
225
+ "Asia/Baghdad",
226
+ "Asia/Bahrain",
227
+ "Asia/Baku",
228
+ "Asia/Bangkok",
229
+ "Asia/Barnaul",
230
+ "Asia/Beirut",
231
+ "Asia/Bishkek",
232
+ "Asia/Brunei",
233
+ "Asia/Chita",
234
+ "Asia/Choibalsan",
235
+ "Asia/Colombo",
236
+ "Asia/Damascus",
237
+ "Asia/Dhaka",
238
+ "Asia/Dili",
239
+ "Asia/Dubai",
240
+ "Asia/Dushanbe",
241
+ "Asia/Famagusta",
242
+ "Asia/Gaza",
243
+ "Asia/Hebron",
244
+ "Asia/Ho_Chi_Minh",
245
+ "Asia/Hong_Kong",
246
+ "Asia/Hovd",
247
+ "Asia/Irkutsk",
248
+ "Asia/Jakarta",
249
+ "Asia/Jayapura",
250
+ "Asia/Jerusalem",
251
+ "Asia/Kabul",
252
+ "Asia/Kamchatka",
253
+ "Asia/Karachi",
254
+ "Asia/Kathmandu",
255
+ "Asia/Khandyga",
256
+ "Asia/Kolkata",
257
+ "Asia/Krasnoyarsk",
258
+ "Asia/Kuala_Lumpur",
259
+ "Asia/Kuching",
260
+ "Asia/Kuwait",
261
+ "Asia/Macau",
262
+ "Asia/Magadan",
263
+ "Asia/Makassar",
264
+ "Asia/Manila",
265
+ "Asia/Muscat",
266
+ "Asia/Nicosia",
267
+ "Asia/Novokuznetsk",
268
+ "Asia/Novosibirsk",
269
+ "Asia/Omsk",
270
+ "Asia/Oral",
271
+ "Asia/Phnom_Penh",
272
+ "Asia/Pontianak",
273
+ "Asia/Pyongyang",
274
+ "Asia/Qatar",
275
+ "Asia/Qostanay",
276
+ "Asia/Qyzylorda",
277
+ "Asia/Riyadh",
278
+ "Asia/Sakhalin",
279
+ "Asia/Samarkand",
280
+ "Asia/Seoul",
281
+ "Asia/Shanghai",
282
+ "Asia/Singapore",
283
+ "Asia/Srednekolymsk",
284
+ "Asia/Taipei",
285
+ "Asia/Tashkent",
286
+ "Asia/Tbilisi",
287
+ "Asia/Tehran",
288
+ "Asia/Thimphu",
289
+ "Asia/Tokyo",
290
+ "Asia/Tomsk",
291
+ "Asia/Ulaanbaatar",
292
+ "Asia/Urumqi",
293
+ "Asia/Ust-Nera",
294
+ "Asia/Vientiane",
295
+ "Asia/Vladivostok",
296
+ "Asia/Yakutsk",
297
+ "Asia/Yangon",
298
+ "Asia/Yekaterinburg",
299
+ "Asia/Yerevan",
300
+ "Atlantic/Azores",
301
+ "Atlantic/Bermuda",
302
+ "Atlantic/Canary",
303
+ "Atlantic/Cape_Verde",
304
+ "Atlantic/Faroe",
305
+ "Atlantic/Madeira",
306
+ "Atlantic/Reykjavik",
307
+ "Atlantic/South_Georgia",
308
+ "Atlantic/St_Helena",
309
+ "Atlantic/Stanley",
310
+ "Australia/Adelaide",
311
+ "Australia/Brisbane",
312
+ "Australia/Broken_Hill",
313
+ "Australia/Darwin",
314
+ "Australia/Eucla",
315
+ "Australia/Hobart",
316
+ "Australia/Lindeman",
317
+ "Australia/Lord_Howe",
318
+ "Australia/Melbourne",
319
+ "Australia/Perth",
320
+ "Australia/Sydney",
321
+ "Europe/Amsterdam",
322
+ "Europe/Andorra",
323
+ "Europe/Astrakhan",
324
+ "Europe/Athens",
325
+ "Europe/Belgrade",
326
+ "Europe/Berlin",
327
+ "Europe/Bratislava",
328
+ "Europe/Brussels",
329
+ "Europe/Bucharest",
330
+ "Europe/Budapest",
331
+ "Europe/Busingen",
332
+ "Europe/Chisinau",
333
+ "Europe/Copenhagen",
334
+ "Europe/Dublin",
335
+ "Europe/Gibraltar",
336
+ "Europe/Guernsey",
337
+ "Europe/Helsinki",
338
+ "Europe/Isle_of_Man",
339
+ "Europe/Istanbul",
340
+ "Europe/Jersey",
341
+ "Europe/Kaliningrad",
342
+ "Europe/Kiev",
343
+ "Europe/Kirov",
344
+ "Europe/Lisbon",
345
+ "Europe/Ljubljana",
346
+ "Europe/London",
347
+ "Europe/Luxembourg",
348
+ "Europe/Madrid",
349
+ "Europe/Malta",
350
+ "Europe/Mariehamn",
351
+ "Europe/Minsk",
352
+ "Europe/Monaco",
353
+ "Europe/Moscow",
354
+ "Europe/Oslo",
355
+ "Europe/Paris",
356
+ "Europe/Podgorica",
357
+ "Europe/Prague",
358
+ "Europe/Riga",
359
+ "Europe/Rome",
360
+ "Europe/Samara",
361
+ "Europe/San_Marino",
362
+ "Europe/Sarajevo",
363
+ "Europe/Saratov",
364
+ "Europe/Skopje",
365
+ "Europe/Sofia",
366
+ "Europe/Stockholm",
367
+ "Europe/Tallinn",
368
+ "Europe/Tirane",
369
+ "Europe/Ulyanovsk",
370
+ "Europe/Uzhgorod",
371
+ "Europe/Vaduz",
372
+ "Europe/Vatican",
373
+ "Europe/Vienna",
374
+ "Europe/Vilnius",
375
+ "Europe/Volgograd",
376
+ "Europe/Warsaw",
377
+ "Europe/Zagreb",
378
+ "Europe/Zaporozhye",
379
+ "Europe/Zurich",
380
+ "Indian/Antananarivo",
381
+ "Indian/Chagos",
382
+ "Indian/Christmas",
383
+ "Indian/Cocos",
384
+ "Indian/Comoro",
385
+ "Indian/Kerguelen",
386
+ "Indian/Mahe",
387
+ "Indian/Maldives",
388
+ "Indian/Mauritius",
389
+ "Indian/Mayotte",
390
+ "Indian/Reunion",
391
+ "Pacific/Apia",
392
+ "Pacific/Auckland",
393
+ "Pacific/Bougainville",
394
+ "Pacific/Chatham",
395
+ "Pacific/Chuuk",
396
+ "Pacific/Easter",
397
+ "Pacific/Efate",
398
+ "Pacific/Enderbury",
399
+ "Pacific/Fakaofo",
400
+ "Pacific/Fiji",
401
+ "Pacific/Funafuti",
402
+ "Pacific/Galapagos",
403
+ "Pacific/Gambier",
404
+ "Pacific/Guadalcanal",
405
+ "Pacific/Guam",
406
+ "Pacific/Honolulu",
407
+ "Pacific/Kanton",
408
+ "Pacific/Kiritimati",
409
+ "Pacific/Kosrae",
410
+ "Pacific/Kwajalein",
411
+ "Pacific/Majuro",
412
+ "Pacific/Marquesas",
413
+ "Pacific/Midway",
414
+ "Pacific/Nauru",
415
+ "Pacific/Niue",
416
+ "Pacific/Norfolk",
417
+ "Pacific/Noumea",
418
+ "Pacific/Pago_Pago",
419
+ "Pacific/Palau",
420
+ "Pacific/Pitcairn",
421
+ "Pacific/Pohnpei",
422
+ "Pacific/Port_Moresby",
423
+ "Pacific/Rarotonga",
424
+ "Pacific/Saipan",
425
+ "Pacific/Tahiti",
426
+ "Pacific/Tarawa",
427
+ "Pacific/Tongatapu",
428
+ "Pacific/Wake",
429
+ "Pacific/Wallis",
430
+ ];
431
+
432
+ /**
433
+ * A date range picker component that allows users to select a range of dates or predefined ranges.
434
+ */
435
+ const meta = {
436
+ title: "Shadcn/Components/DateRange",
437
+ component: TZDateRange,
438
+ argTypes: {
439
+ tz: {
440
+ control: { type: "select" },
441
+ options: timeZones,
442
+ description: "The time zone for the date range picker. Default is the user's local timezone.",
443
+ },
444
+ predefinedRanges: {
445
+ control: { type: "multi-select" }, // Use multi-select for predefined ranges
446
+ options: Object.values(PREDEFINED_RANGES), // Provide options for multi-select
447
+ description: "Predefined ranges for quick selection.",
448
+ },
449
+ disableCalendarSelection: {
450
+ control: { type: "boolean" },
451
+ description: "Disables calendar-based range selection.",
452
+ },
453
+ disableBefore: {
454
+ control: { type: "date" },
455
+ description: "Disables selection of dates before this date.",
456
+ },
457
+ disableAfter: {
458
+ control: { type: "date" },
459
+ description: "Disables selection of dates after this date.",
460
+ },
461
+ selectedRange: {
462
+ control: { type: "object" },
463
+ description: "The currently selected date range.",
464
+ },
465
+ onChange: { action: "range changed" },
466
+ },
467
+ args: {
468
+ tz: Intl.DateTimeFormat().resolvedOptions().timeZone, // Default to user's local timezone
469
+ predefinedRanges: Object.values(PREDEFINED_RANGES),
470
+ disableCalendarSelection: false,
471
+ disableBefore: undefined,
472
+ disableAfter: undefined,
473
+ selectedRange: {
474
+ from: new Date("2025-06-01"),
475
+ to: new Date("2025-06-07"),
476
+ },
477
+ onChange: action("onChange"),
478
+ },
479
+ parameters: {
480
+ layout: "centered",
481
+ },
482
+ } satisfies Meta<typeof TZDateRange>;
483
+
484
+ export default meta;
485
+
486
+ type Story = StoryObj<typeof meta>;
487
+
488
+ /**
489
+ * Default usage of the date range picker.
490
+ */
491
+ export const Default: Story = {};
492
+
493
+ /**
494
+ * Date range picker with a custom timezone.
495
+ */
496
+ export const CustomTimeZone: Story = {
497
+ args: {
498
+ tz: "America/Los_Angeles", // Example of a custom timezone
499
+ },
500
+ };
501
+
502
+ /**
503
+ * Date range picker with limited predefined ranges.
504
+ */
505
+ export const LimitedPredefinedRanges: Story = {
506
+ args: {
507
+ predefinedRanges: [PREDEFINED_RANGES.LAST_DAY, PREDEFINED_RANGES.LAST_7_DAYS],
508
+ },
509
+ };
510
+
511
+ /**
512
+ * Date range picker with disabled calendar selection.
513
+ */
514
+ export const DisabledCalendarSelection: Story = {
515
+ args: {
516
+ disableCalendarSelection: true,
517
+ },
518
+ };
519
+
520
+ /**
521
+ * Date range picker with restricted date selection.
522
+ */
523
+ export const RestrictedDateSelection: Story = {
524
+ args: {
525
+ disableBefore: new Date("2025-06-01"),
526
+ disableAfter: new Date("2025-06-30"),
527
+ },
528
+ };
529
+
530
+ /**
531
+ * Date range picker with a predefined selected range.
532
+ */
533
+ export const PredefinedSelectedRange: Story = {
534
+ args: {
535
+ selectedRange: {
536
+ from: new Date("2025-06-01"),
537
+ to: new Date("2025-06-07"),
538
+ },
539
+ },
540
+ };