best-react-datepicker 0.2.1 → 0.2.3

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/styles.css CHANGED
@@ -193,6 +193,61 @@
193
193
  flex-shrink: 0;
194
194
  }
195
195
 
196
+ /* === Unified Range Input (antd-style) === */
197
+ .brdp-unified {
198
+ display: flex;
199
+ align-items: center;
200
+ height: var(--brdp-input-height);
201
+ border: 1px solid var(--brdp-color-border-input);
202
+ border-radius: var(--brdp-radius-input);
203
+ background: var(--brdp-color-bg);
204
+ transition: border-color var(--brdp-transition-duration) var(--brdp-transition-timing),
205
+ box-shadow var(--brdp-transition-duration) var(--brdp-transition-timing);
206
+ box-sizing: border-box;
207
+ overflow: hidden;
208
+ }
209
+
210
+ .brdp-unified:hover {
211
+ border-color: var(--brdp-color-border-input-focus);
212
+ }
213
+
214
+ .brdp-unified--focused {
215
+ border-color: var(--brdp-color-border-input-focus);
216
+ box-shadow: var(--brdp-shadow-input-focus);
217
+ }
218
+
219
+ .brdp-unified__input {
220
+ flex: 1;
221
+ min-width: 0;
222
+ height: 100%;
223
+ padding: 0 var(--brdp-spacing-md);
224
+ border: none;
225
+ background: transparent;
226
+ color: var(--brdp-color-text);
227
+ font-family: var(--brdp-font-family);
228
+ font-size: var(--brdp-font-size);
229
+ outline: none;
230
+ box-sizing: border-box;
231
+ text-align: center;
232
+ }
233
+
234
+ .brdp-unified__input::placeholder {
235
+ color: var(--brdp-color-text-placeholder);
236
+ }
237
+
238
+ .brdp-unified__separator {
239
+ display: flex;
240
+ align-items: center;
241
+ justify-content: center;
242
+ flex-shrink: 0;
243
+ color: var(--brdp-color-text-disabled);
244
+ padding: 0 2px;
245
+ }
246
+
247
+ .brdp-unified__arrow-icon {
248
+ display: block;
249
+ }
250
+
196
251
  /* === Footer === */
197
252
  .brdp-footer {
198
253
  display: flex;
@@ -309,14 +364,15 @@
309
364
  display: inline-flex;
310
365
  align-items: center;
311
366
  justify-content: center;
312
- width: 32px;
313
- height: 32px;
367
+ width: var(--brdp-cell-size);
368
+ height: var(--brdp-cell-size);
314
369
  padding: 0;
315
370
  border: none;
316
371
  border-radius: var(--brdp-radius-full);
317
372
  background: none;
318
373
  color: var(--brdp-color-text-muted);
319
374
  cursor: pointer;
375
+ flex-shrink: 0;
320
376
  transition: background var(--brdp-transition-duration) var(--brdp-transition-timing),
321
377
  color var(--brdp-transition-duration) var(--brdp-transition-timing);
322
378
  }
@@ -331,56 +387,129 @@
331
387
  cursor: not-allowed;
332
388
  }
333
389
 
334
- /* === Month/Year Dropdowns === */
390
+ /* === Month/Year Dropdown Triggers === */
335
391
  .brdp-header__selects {
336
392
  display: flex;
337
393
  align-items: center;
338
394
  gap: 2px;
395
+ min-width: 0;
396
+ overflow: visible;
339
397
  }
340
398
 
341
- .brdp-header__select-wrapper {
399
+ .brdp-header__dropdown-anchor {
342
400
  position: relative;
343
- display: inline-flex;
344
- align-items: center;
345
401
  }
346
402
 
347
- .brdp-header__select {
403
+ .brdp-header__trigger {
404
+ display: inline-flex;
405
+ align-items: center;
406
+ gap: 2px;
348
407
  font-size: var(--brdp-font-size);
349
408
  font-weight: var(--brdp-font-weight-bold);
350
409
  font-family: var(--brdp-font-family);
351
410
  color: var(--brdp-color-text-header);
352
411
  background: transparent;
353
- border: 1px solid transparent;
412
+ border: none;
354
413
  border-radius: var(--brdp-radius-md);
355
- padding: 4px 20px 4px 8px;
414
+ padding: var(--brdp-spacing-xs) var(--brdp-spacing-sm);
356
415
  cursor: pointer;
357
416
  outline: none;
358
417
  transition: background var(--brdp-transition-duration) var(--brdp-transition-timing),
359
- border-color var(--brdp-transition-duration) var(--brdp-transition-timing);
360
- -webkit-appearance: none;
361
- -moz-appearance: none;
362
- appearance: none;
418
+ color var(--brdp-transition-duration) var(--brdp-transition-timing);
363
419
  line-height: 1.4;
420
+ white-space: nowrap;
364
421
  }
365
422
 
366
- .brdp-header__select:hover {
423
+ .brdp-header__trigger:hover {
367
424
  background: var(--brdp-color-bg-hover);
368
425
  }
369
426
 
370
- .brdp-header__select:focus {
371
- border-color: var(--brdp-color-accent);
427
+ .brdp-header__trigger--open {
372
428
  background: var(--brdp-color-bg-hover);
429
+ color: var(--brdp-color-accent);
373
430
  }
374
431
 
375
- .brdp-header__select-chevron {
432
+ /* === Dropdown Panel === */
433
+ .brdp-dropdown {
376
434
  position: absolute;
377
- right: 6px;
378
- top: 50%;
379
- transform: translateY(-50%);
380
- pointer-events: none;
381
- color: var(--brdp-color-text-muted);
435
+ top: calc(100% + 4px);
436
+ left: 50%;
437
+ transform: translateX(-50%);
438
+ z-index: 10;
439
+ background: var(--brdp-color-bg-popover);
440
+ border: 1px solid var(--brdp-color-border-popover);
441
+ border-radius: var(--brdp-radius-lg);
442
+ box-shadow: var(--brdp-shadow-popover);
443
+ padding: var(--brdp-spacing-sm);
444
+ animation: brdp-dropdown-in var(--brdp-transition-duration) var(--brdp-transition-timing);
445
+ }
446
+
447
+ @keyframes brdp-dropdown-in {
448
+ from {
449
+ opacity: 0;
450
+ transform: translateX(-50%) translateY(-4px);
451
+ }
452
+ to {
453
+ opacity: 1;
454
+ transform: translateX(-50%) translateY(0);
455
+ }
456
+ }
457
+
458
+ /* === Dropdown Grid === */
459
+ .brdp-dropdown__grid {
460
+ display: grid;
461
+ gap: 2px;
462
+ }
463
+
464
+ .brdp-dropdown__grid--months {
465
+ grid-template-columns: repeat(3, 1fr);
466
+ width: 180px;
467
+ }
468
+
469
+ .brdp-dropdown__grid--years {
470
+ grid-template-columns: repeat(4, 1fr);
471
+ width: 220px;
472
+ max-height: 200px;
473
+ overflow-y: auto;
474
+ }
475
+
476
+ /* === Dropdown Item === */
477
+ .brdp-dropdown__item {
382
478
  display: flex;
383
479
  align-items: center;
480
+ justify-content: center;
481
+ padding: 6px 4px;
482
+ border: none;
483
+ border-radius: var(--brdp-radius-sm);
484
+ background: transparent;
485
+ color: var(--brdp-color-text);
486
+ font-family: var(--brdp-font-family);
487
+ font-size: var(--brdp-font-size-sm);
488
+ font-weight: var(--brdp-font-weight-normal);
489
+ cursor: pointer;
490
+ transition: background var(--brdp-transition-duration) var(--brdp-transition-timing),
491
+ color var(--brdp-transition-duration) var(--brdp-transition-timing);
492
+ white-space: nowrap;
493
+ }
494
+
495
+ .brdp-dropdown__item:hover {
496
+ background: var(--brdp-color-bg-hover);
497
+ }
498
+
499
+ .brdp-dropdown__item--active {
500
+ background: var(--brdp-color-accent);
501
+ color: var(--brdp-color-text-selected);
502
+ font-weight: var(--brdp-font-weight-medium);
503
+ }
504
+
505
+ .brdp-dropdown__item--active:hover {
506
+ background: var(--brdp-color-accent-dark);
507
+ }
508
+
509
+ .brdp-dropdown__item--disabled {
510
+ color: var(--brdp-color-text-disabled);
511
+ cursor: not-allowed;
512
+ pointer-events: none;
384
513
  }
385
514
 
386
515
  /* === Calendar === */
@@ -394,13 +523,17 @@
394
523
  }
395
524
 
396
525
  .brdp-calendar__month {
397
- min-width: calc(var(--brdp-cell-size) * 7 + var(--brdp-cell-gap) * 6);
526
+ min-width: max(
527
+ calc(var(--brdp-cell-size) * 7 + var(--brdp-cell-gap) * 6),
528
+ 280px
529
+ );
398
530
  }
399
531
 
400
532
  /* === Grid === */
401
533
  .brdp-grid {
402
534
  border-collapse: separate;
403
535
  border-spacing: var(--brdp-cell-gap);
536
+ width: 100%;
404
537
  }
405
538
 
406
539
  .brdp-grid__weekdays {
@@ -517,15 +650,25 @@
517
650
  .brdp-day--range-start .brdp-day__btn {
518
651
  background: var(--brdp-color-bg-selected);
519
652
  color: var(--brdp-color-text-selected);
653
+ font-weight: var(--brdp-font-weight-medium);
520
654
  border-radius: var(--brdp-radius-day) 0 0 var(--brdp-radius-day);
521
655
  }
522
656
 
657
+ .brdp-day--range-start .brdp-day__btn:hover {
658
+ background: var(--brdp-color-bg-selected-hover);
659
+ }
660
+
523
661
  .brdp-day--range-end .brdp-day__btn {
524
662
  background: var(--brdp-color-bg-selected);
525
663
  color: var(--brdp-color-text-selected);
664
+ font-weight: var(--brdp-font-weight-medium);
526
665
  border-radius: 0 var(--brdp-radius-day) var(--brdp-radius-day) 0;
527
666
  }
528
667
 
668
+ .brdp-day--range-end .brdp-day__btn:hover {
669
+ background: var(--brdp-color-bg-selected-hover);
670
+ }
671
+
529
672
  .brdp-day--range-start.brdp-day--range-end .brdp-day__btn {
530
673
  border-radius: var(--brdp-radius-day);
531
674
  }
@@ -540,12 +683,40 @@
540
683
  background: var(--brdp-color-bg-range-hover);
541
684
  }
542
685
 
686
+ /* Preview range (hover while picking second date) */
543
687
  .brdp-day--range-preview .brdp-day__btn {
544
688
  background: var(--brdp-color-bg-range);
689
+ color: var(--brdp-color-text-range);
545
690
  border-radius: 0;
546
691
  opacity: 0.6;
547
692
  }
548
693
 
694
+ /* Range start must always stay solid during preview — never dim */
695
+ .brdp-day--range-start.brdp-day--range-preview .brdp-day__btn,
696
+ .brdp-day--range-start .brdp-day__btn {
697
+ background: var(--brdp-color-bg-selected);
698
+ color: var(--brdp-color-text-selected);
699
+ opacity: 1;
700
+ border-radius: var(--brdp-radius-day);
701
+ }
702
+
703
+ .brdp-day--range-end.brdp-day--range-preview .brdp-day__btn,
704
+ .brdp-day--range-end .brdp-day__btn {
705
+ background: var(--brdp-color-bg-selected);
706
+ color: var(--brdp-color-text-selected);
707
+ opacity: 1;
708
+ border-radius: var(--brdp-radius-day);
709
+ }
710
+
711
+ /* When both start and end exist, use directional radius */
712
+ .brdp-day--range-start:not(.brdp-day--range-end) .brdp-day__btn {
713
+ border-radius: var(--brdp-radius-day) 0 0 var(--brdp-radius-day);
714
+ }
715
+
716
+ .brdp-day--range-end:not(.brdp-day--range-start) .brdp-day__btn {
717
+ border-radius: 0 var(--brdp-radius-day) var(--brdp-radius-day) 0;
718
+ }
719
+
549
720
  /* === Time Picker === */
550
721
  .brdp-time {
551
722
  display: flex;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "best-react-datepicker",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "The most customizable, accessible, zero-dependency React date picker",
5
5
  "license": "MIT",
6
6
  "type": "module",