@delightui/components 0.1.10 → 0.1.11

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/dist/cjs/App.d.ts CHANGED
@@ -1,6 +1,4 @@
1
1
  import React from 'react';
2
2
  import './resources/themes/base.css';
3
- import './resources/themes/light.css';
4
- import './resources/themes/dark.css';
5
3
  declare function App(): React.JSX.Element;
6
4
  export default App;
@@ -73,5 +73,13 @@ export type DatePickerProps = {
73
73
  * this function will be used to parse initial date string and date string from input field.
74
74
  */
75
75
  parseDate?: (date: string) => Date;
76
+ /**
77
+ * Allow user to type date/time in input.
78
+ * @default false
79
+ */
80
+ allowInput?: boolean;
81
+ };
82
+ export type CustomTimePickerConfig = {
83
+ minuteStep: number;
76
84
  };
77
85
  export {};
@@ -0,0 +1,4 @@
1
+ import { Plugin } from "flatpickr/dist/types/options";
2
+ import { CustomTimePickerConfig } from "../DatePicker.types";
3
+ declare const dateTimeDropdownPlugin: (config: CustomTimePickerConfig) => Plugin;
4
+ export default dateTimeDropdownPlugin;
@@ -0,0 +1,4 @@
1
+ import { Plugin } from "flatpickr/dist/types/options";
2
+ import { CustomTimePickerConfig } from "../DatePicker.types";
3
+ declare const timeDropdownPlugin: (config: CustomTimePickerConfig) => Plugin;
4
+ export default timeDropdownPlugin;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Creates a dropdown element with a specific className.
3
+ * @param className - The class to add to the dropdown element.
4
+ * @returns The created dropdown element.
5
+ */
6
+ export declare const createDropdownElement: (className: string) => HTMLDivElement;
7
+ /**
8
+ * Filters the dropdown options based on the query string.
9
+ * @param dropdown - The dropdown element to populate.
10
+ * @param query - The query string to filter options by.
11
+ * @param options - Array of string options to display in the dropdown.
12
+ */
13
+ export declare const filterDropdownOptions: (dropdown: HTMLDivElement, query: string, options: string[], handleTimeOptionClick: (option: string) => void, closeDropdown?: () => void) => void;
14
+ /**
15
+ * Positions the dropdown relative to the input field.
16
+ * @param dropdown - The dropdown element to position.
17
+ * @param inputElement - The input element to base the dropdown positioning on.
18
+ */
19
+ export declare const positionDropdownRelativeToInput: (dropdown: HTMLDivElement, inputElement: HTMLInputElement) => void;
20
+ /**
21
+ * Formats a Date object into a time string (HH:MM AM/PM).
22
+ * @param date - The Date object to format.
23
+ * @returns The formatted time string (e.g., "12:00 PM").
24
+ */
25
+ export declare const formatTime: (date: Date) => string;
26
+ /**
27
+ * Toggles the visibility of a dropdown element.
28
+ * @param dropdown - The dropdown element to show or hide.
29
+ * @param isVisible - A boolean indicating whether the dropdown should be visible.
30
+ */
31
+ export declare const toggleDropdownVisibility: (dropdown: HTMLDivElement, isVisible: boolean) => void;
32
+ export declare const generateTimeOptions: (minuteStep: number) => string[];
@@ -3152,7 +3152,7 @@ span.flatpickr-weekday {
3152
3152
  --form-field-message-icon__fill: var(--form-field-message-icon--error__fill);
3153
3153
  }
3154
3154
  .flatpickr-calendar {
3155
- --datePicker-background-color: var(--background-2);
3155
+ --datePicker-background-color: var(--background-3);
3156
3156
  --datePicker-border-color: var(--border-grey-3);
3157
3157
  --datePicker-border-size: 1px;
3158
3158
  --datePicker-selected-color: var(--surface-primary);
@@ -3176,25 +3176,27 @@ span.flatpickr-weekday {
3176
3176
  --datePicker-day-border-color--focus-visible: var(--border-grey-1);
3177
3177
  --datePicker-day-border-color--disabled: transparent;
3178
3178
  --datePicker-day-font: "inter";
3179
- --datePicker-day-font-size: var(--font-size-1);
3179
+ --datePicker-day-font-size: var(--font-size-2);
3180
3180
  --datePicker-day-font-weight: var(--font-weight-4);
3181
3181
  --datePicker-weekday-color: var(--text-primary);
3182
3182
  --datePicker-weekday-font: "inter";
3183
- --datePicker-weekday-font-size: var(--font-size-1);
3183
+ --datePicker-weekday-font-size: var(--font-size-2);
3184
3184
  --datePicker-weekday-font-weight: var(--font-weight-4);
3185
3185
  --datePicker-next-month-icon-color: var(--text-primary);
3186
3186
  --datePicker-prev-month-icon-color: var(--text-primary);
3187
3187
  --datePicker-cur-month-color: var(--text-primary);
3188
- --datePicker-hour-color: var(--text-primary);
3189
- --datePicker-hour-color--hover: var(--surface-secondary--hover);
3190
- --datePicker-minute-color: var(--text-primary);
3191
- --datePicker-minute-color--hover: var(--surface-secondary--hover);
3192
- --datePicker-am-pm-color: var(--text-primary);
3193
- --datePicker-am-pm-color--hover: var(--surface-secondary--hover);
3188
+ --datePicker-time-color: var(--text-primary);
3189
+ --datePicker-time-color--hover: var(--surface-secondary--hover);
3190
+ --datePicker-time-dropdown-max-height: 160px;
3194
3191
  background-color: var(--datePicker-background-color);
3195
3192
  border: 1px solid var(--datePicker-border-color);
3196
3193
  border: var(--datePicker-border-size) solid var(--datePicker-border-color);
3197
- box-shadow: none;
3194
+ box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.3490196078);
3195
+ width: -moz-fit-content;
3196
+ width: fit-content;
3197
+ height: -moz-fit-content;
3198
+ height: fit-content;
3199
+ padding: var(--spacing-large);
3198
3200
  }
3199
3201
  .flatpickr-calendar .flatpickr-day {
3200
3202
  color: var(--datePicker-day-color);
@@ -3204,6 +3206,11 @@ span.flatpickr-weekday {
3204
3206
  font-family: var(--datePicker-day-font);
3205
3207
  font-size: var(--datePicker-day-font-size);
3206
3208
  font-weight: var(--datePicker-day-font-weight);
3209
+ height: 30px;
3210
+ display: flex;
3211
+ align-items: center;
3212
+ justify-self: center;
3213
+ width: 100%;
3207
3214
  }
3208
3215
  .flatpickr-calendar .flatpickr-day.flatpickr-disabled {
3209
3216
  color: var(--datePicker-day-color--disabled);
@@ -3248,55 +3255,80 @@ span.flatpickr-weekday {
3248
3255
  font-family: var(--datePicker-weekday-font);
3249
3256
  font-size: var(--datePicker-weekday-font-size);
3250
3257
  font-weight: var(--datePicker-weekday-font-weight);
3258
+ padding: var(--spacing-medium);
3259
+ }
3260
+ .flatpickr-calendar .flatpickr-months {
3261
+ width: 250px;
3251
3262
  }
3252
3263
  .flatpickr-calendar .flatpickr-months .flatpickr-next-month {
3253
3264
  fill: var(--datePicker-next-month-icon-color);
3265
+ position: relative;
3254
3266
  }
3255
3267
  .flatpickr-calendar .flatpickr-months .flatpickr-next-month:hover svg {
3256
3268
  fill: inherit;
3257
3269
  }
3258
3270
  .flatpickr-calendar .flatpickr-months .flatpickr-prev-month {
3259
3271
  fill: var(--datePicker-prev-month-icon-color);
3272
+ position: relative;
3260
3273
  }
3261
3274
  .flatpickr-calendar .flatpickr-months .flatpickr-prev-month:hover svg {
3262
3275
  fill: inherit;
3263
3276
  }
3264
3277
  .flatpickr-calendar .flatpickr-months .flatpickr-current-month {
3265
3278
  color: var(--datePicker-cur-month-color);
3279
+ display: contents;
3266
3280
  }
3267
- .flatpickr-calendar .flatpickr-months .flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
3268
- background-color: var(--datePicker-background-color);
3281
+ .flatpickr-calendar .flatpickr-months .flatpickr-current-month .flatpickr-monthDropdown-months {
3282
+ -webkit-appearance: none;
3283
+ /* Hides the arrow in WebKit browsers */
3284
+ -moz-appearance: none;
3285
+ /* Hides the arrow in Firefox */
3286
+ appearance: none;
3287
+ /* Hides the arrow in modern browsers */
3288
+ text-align: center;
3269
3289
  }
3270
- .flatpickr-calendar .flatpickr-months .arrowUp,
3271
- .flatpickr-calendar .flatpickr-months .arrowDown {
3290
+ .flatpickr-calendar .flatpickr-months .flatpickr-current-month .flatpickr-monthDropdown-months::-ms-expand {
3272
3291
  display: none;
3273
3292
  }
3274
- .flatpickr-calendar .flatpickr-time .flatpickr-hour {
3275
- color: var(--datePicker-hour-color);
3293
+ .flatpickr-calendar .flatpickr-months .flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
3294
+ background-color: var(--datePicker-background-color);
3276
3295
  }
3277
- .flatpickr-calendar .flatpickr-time .flatpickr-hour:focus {
3278
- background: inherit;
3296
+ .flatpickr-calendar .flatpickr-months .flatpickr-prev-month.flatpickr-disabled {
3297
+ display: block;
3298
+ visibility: hidden;
3279
3299
  }
3280
- .flatpickr-calendar .flatpickr-time .flatpickr-hour:hover {
3281
- background-color: var(--datePicker-hour-color--hover);
3300
+ .flatpickr-calendar .flatpickr-months .flatpickr-next-month.flatpickr-disabled {
3301
+ display: block;
3302
+ visibility: hidden;
3282
3303
  }
3283
- .flatpickr-calendar .flatpickr-time .flatpickr-minute {
3284
- color: var(--datePicker-minute-color);
3304
+ .flatpickr-calendar .flatpickr-months .flatpickr-month {
3305
+ justify-content: center;
3306
+ align-items: center;
3307
+ display: flex;
3308
+ font-size: var(--font-size-2);
3309
+ font-weight: var(--font-weight-bold);
3310
+ line-height: var(--line-height-body-small);
3285
3311
  }
3286
- .flatpickr-calendar .flatpickr-time .flatpickr-minute:focus {
3287
- background: inherit;
3312
+ .flatpickr-calendar .flatpickr-months .arrowUp,
3313
+ .flatpickr-calendar .flatpickr-months .arrowDown {
3314
+ display: none;
3288
3315
  }
3289
- .flatpickr-calendar .flatpickr-time .flatpickr-minute:hover {
3290
- background-color: var(--datePicker-minute-color--hover);
3316
+ .flatpickr-calendar .flatpickr-days {
3317
+ width: 250px;
3291
3318
  }
3292
- .flatpickr-calendar .flatpickr-time .flatpickr-am-pm {
3293
- color: var(--datePicker-am-pm-color);
3319
+ .flatpickr-calendar .flatpickr-innerContainer {
3320
+ width: -moz-fit-content;
3321
+ width: fit-content;
3294
3322
  }
3295
- .flatpickr-calendar .flatpickr-time .flatpickr-am-pm:focus {
3296
- background: inherit;
3323
+ .flatpickr-calendar .dayContainer {
3324
+ display: grid;
3325
+ grid-template-columns: repeat(7, 1fr);
3326
+ width: 250px;
3327
+ min-width: 250px;
3328
+ max-width: 250px;
3297
3329
  }
3298
- .flatpickr-calendar .flatpickr-time .flatpickr-am-pm:hover {
3299
- background-color: var(--datePicker-am-pm-color--hover);
3330
+ .flatpickr-calendar .flatpickr-time {
3331
+ display: none !important;
3300
3332
  }
3301
3333
  .flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
3302
3334
  .flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
@@ -3304,6 +3336,92 @@ span.flatpickr-weekday {
3304
3336
  /* prevent edge case where 2 consecutive dates are selected in range mode */
3305
3337
  box-shadow: -8px 0 0 var(--datePicker-day-inRange-color), 8px 0 0 var(--datePicker-day-inRange-color);
3306
3338
  }
3339
+ .flatpickr-calendar.hasTime.noCalendar {
3340
+ padding: 0px;
3341
+ }
3342
+ .custom-time-selector-input {
3343
+ height: var(--input-inputElement-height);
3344
+ width: 100%;
3345
+ color: var(--text-primary);
3346
+ caret-color: var(--text-primary);
3347
+ }
3348
+ .custom-time-wrapper {
3349
+ display: flex;
3350
+ flex-direction: column;
3351
+ position: relative;
3352
+ width: 100%;
3353
+ gap: var(--spacing-extra-small);
3354
+ }
3355
+ .custom-time-wrapper .custom-time-label {
3356
+ width: 100%;
3357
+ height: auto;
3358
+ font-family: var(--font-family-body);
3359
+ font-size: var(--font-size-body-small);
3360
+ font-weight: 700;
3361
+ line-height: var(--line-height-body-small);
3362
+ text-align: left;
3363
+ color: var(--text-primary);
3364
+ }
3365
+ .custom-time-input-wrapper {
3366
+ display: flex;
3367
+ width: 100%;
3368
+ height: auto;
3369
+ gap: var(--spacing-medium);
3370
+ border-radius: var(--corner-radius-extra-small);
3371
+ border: 1px solid var(--border-primary);
3372
+ background: var(--interactive-surface-secondary-default);
3373
+ align-items: center;
3374
+ padding-left: var(--spacing-medium);
3375
+ }
3376
+ .custom-time-input-wrapper .custom-time-input-icon {
3377
+ width: -moz-fit-content;
3378
+ width: fit-content;
3379
+ height: -moz-fit-content;
3380
+ height: fit-content;
3381
+ }
3382
+ .custom-time-input-wrapper .custom-time-input {
3383
+ width: 100%;
3384
+ font-family: var(--font-family-body);
3385
+ font-size: var(--font-size-body-small);
3386
+ font-weight: 400;
3387
+ line-height: var(--line-height-body-small);
3388
+ text-align: left;
3389
+ padding: var(--spacing-medium);
3390
+ padding-left: 0px;
3391
+ color: var(--text-primary);
3392
+ caret-color: var(--text-primary);
3393
+ }
3394
+ .time-dropdown {
3395
+ display: flex;
3396
+ flex-direction: column;
3397
+ z-index: 99999;
3398
+ gap: var(--spacing-extra-small);
3399
+ color: #fff;
3400
+ font-size: var(--font-size-body-small);
3401
+ font-family: var(--font-family-body-small);
3402
+ line-height: var(--line-height-body-small);
3403
+ background: var(--surface-background-4);
3404
+ outline: 1px solid var(--border-border-grey-3);
3405
+ width: 250px;
3406
+ max-height: 156px;
3407
+ overflow: auto;
3408
+ padding: var(--spacing-medium);
3409
+ border-radius: var(--corner-radius-extra-small);
3410
+ }
3411
+ .time-dropdown .dropdown-option {
3412
+ align-items: center;
3413
+ display: flex;
3414
+ cursor: pointer;
3415
+ padding: var(--spacing-medium);
3416
+ gap: var(--spacing-extra-small);
3417
+ color: var(--datePicker-time-color);
3418
+ }
3419
+ .time-dropdown .dropdown-option:focus {
3420
+ background: inherit;
3421
+ }
3422
+ .time-dropdown .dropdown-option:hover {
3423
+ background-color: var(--datePicker-time-color--hover);
3424
+ }
3307
3425
  /**
3308
3426
  * @mixin set-css-vars
3309
3427
  *
@@ -28371,3 +28489,78 @@ span.flatpickr-weekday {
28371
28489
  --date-picker__row-gap: 12px;
28372
28490
  --date-picker__column-gap: var(--spacing-large)
28373
28491
  }
28492
+
28493
+ [data-theme='light'] {
28494
+ /* Semantic [Colours] */
28495
+ --surface-background-1: var(--colours-grey-0);
28496
+ --surface-background-2: var(--colours-grey-50);
28497
+ --surface-background-3: var(--colours-grey-100);
28498
+ --surface-background-4: var(--colours-grey-200);
28499
+ --surface-background-5: var(--colours-grey-300);
28500
+ --surface-background-6: var(--colours-grey-400);
28501
+ --surface-background-success: var(--colours-green-1000);
28502
+ --interactive-surface-primary-default: var(--colours-purple-500);
28503
+ --interactive-surface-primary-hover: var(--colours-purple-400);
28504
+ --border-border-grey-1: var(--colours-grey-50);
28505
+ --interactive-surface-primary-pressed: var(--colours-purple-400);
28506
+ --interactive-surface-secondary-default: var(--colours-grey-50);
28507
+ --interactive-surface-secondary-hover: var(--colours-grey-100);
28508
+ --interactive-surface-secondary-pressed: var(--colours-grey-100);
28509
+ --interactive-surface-destructive-default: var(--colours-red-700);
28510
+ --border-border-grey-2: var(--colours-grey-100);
28511
+ --border-border-grey-3: var(--colours-grey-200);
28512
+ --interactive-surface-destructive-hover: var(--colours-red-800);
28513
+ --interactive-surface-destructive-pressed: var(--colours-red-900);
28514
+ --interactive-surface-primary-disabled: var(--colours-grey-400);
28515
+ --border-destructive: var(--colours-red-700);
28516
+ --interactive-surface-secondary-disabled: var(--colours-grey-200);
28517
+ --interactive-surface-destructive-disabled: var(--colours-grey-200);
28518
+ --border-primary: var(--colours-purple-500);
28519
+ --border-success: var(--colours-green-800);
28520
+ --text-primary: var(--colours-grey-700);
28521
+ --text-secondary: var(--colours-grey-500);
28522
+ --icon-primary: var(--colours-grey-700);
28523
+ --text-tertiary: var(--colours-grey-450);
28524
+ --icon-secondary: var(--colours-grey-500);
28525
+ --icon-tertiary: var(--colours-grey-450);
28526
+ --icon-destructive: var(--colours-red-600);
28527
+ --text-destructive: var(--colours-red-600);
28528
+ --text-button-text: var(--colours-grey-50)
28529
+ }
28530
+ [data-theme='dark'] {
28531
+ /* Semantic [Colours] */
28532
+ --surface-background-1: var(--colours-grey-900);
28533
+ --surface-background-2: var(--colours-grey-800);
28534
+ --surface-background-3: var(--colours-grey-700);
28535
+ --surface-background-4: var(--colours-grey-500);
28536
+ --surface-background-5: var(--colours-grey-600);
28537
+ --surface-background-6: var(--colours-grey-450);
28538
+ --surface-background-success: var(--colours-green-1000);
28539
+ --interactive-surface-primary-default: var(--colours-purple-500);
28540
+ --interactive-surface-primary-hover: var(--colours-purple-400);
28541
+ --border-border-grey-1: var(--colours-grey-100);
28542
+ --interactive-surface-primary-pressed: var(--colours-purple-400);
28543
+ --interactive-surface-secondary-default: var(--colours-grey-500);
28544
+ --interactive-surface-secondary-hover: var(--colours-grey-450);
28545
+ --interactive-surface-secondary-pressed: var(--colours-grey-400);
28546
+ --interactive-surface-destructive-default: var(--colours-red-700);
28547
+ --border-border-grey-2: var(--colours-grey-400);
28548
+ --border-border-grey-3: var(--colours-grey-450);
28549
+ --interactive-surface-destructive-hover: var(--colours-red-800);
28550
+ --interactive-surface-destructive-pressed: var(--colours-red-900);
28551
+ --interactive-surface-primary-disabled: var(--colours-grey-450);
28552
+ --border-destructive: var(--colours-red-700);
28553
+ --interactive-surface-secondary-disabled: var(--colours-grey-450);
28554
+ --interactive-surface-destructive-disabled: var(--colours-grey-450);
28555
+ --border-primary: var(--colours-purple-500);
28556
+ --border-success: var(--colours-green-800);
28557
+ --text-primary: var(--colours-grey-50);
28558
+ --text-secondary: var(--colours-grey-100);
28559
+ --icon-primary: var(--colours-grey-50);
28560
+ --text-tertiary: var(--colours-grey-200);
28561
+ --icon-secondary: var(--colours-grey-100);
28562
+ --icon-tertiary: var(--colours-grey-200);
28563
+ --icon-destructive: var(--colours-red-600);
28564
+ --text-destructive: var(--colours-red-600);
28565
+ --text-button-text: var(--colours-grey-50)
28566
+ }