@rovula/ui 0.0.16 → 0.0.18

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 (73) hide show
  1. package/dist/cjs/bundle.css +197 -0
  2. package/dist/cjs/bundle.js +3 -3
  3. package/dist/cjs/bundle.js.map +1 -1
  4. package/dist/cjs/types/components/AlertDialog/Alert.stories.d.ts +1 -1
  5. package/dist/cjs/types/components/Calendar/Calendar.d.ts +8 -0
  6. package/dist/cjs/types/components/Calendar/Calendar.stories.d.ts +272 -0
  7. package/dist/cjs/types/components/Calendar/index.d.ts +1 -0
  8. package/dist/cjs/types/components/Collapsible/Collapsible.d.ts +23 -0
  9. package/dist/cjs/types/components/Collapsible/Collapsible.stories.d.ts +8 -0
  10. package/dist/cjs/types/components/Collapsible/Collapsible.styles.d.ts +11 -0
  11. package/dist/cjs/types/components/Collapsible/CollapsibleContext.d.ts +16 -0
  12. package/dist/cjs/types/components/Collapsible/index.d.ts +1 -0
  13. package/dist/cjs/types/components/DatePicker/DatePicker.d.ts +8 -0
  14. package/dist/cjs/types/components/DatePicker/DatePicker.stories.d.ts +21 -0
  15. package/dist/cjs/types/components/Popover/Popover.d.ts +6 -0
  16. package/dist/cjs/types/components/Popover/Popover.stories.d.ts +21 -0
  17. package/dist/cjs/types/components/TextInput/TextInput.stories.d.ts +7 -0
  18. package/dist/cjs/types/components/TextInput/TextInput.styles.d.ts +5 -0
  19. package/dist/cjs/types/index.d.ts +4 -0
  20. package/dist/components/Calendar/Calendar.js +43 -0
  21. package/dist/components/Calendar/Calendar.stories.js +36 -0
  22. package/dist/components/Calendar/index.js +1 -0
  23. package/dist/components/Collapsible/Collapsible.js +37 -0
  24. package/dist/components/Collapsible/Collapsible.stories.js +44 -0
  25. package/dist/components/Collapsible/Collapsible.styles.js +47 -0
  26. package/dist/components/Collapsible/CollapsibleContext.js +25 -0
  27. package/dist/components/Collapsible/index.js +1 -0
  28. package/dist/components/DatePicker/DatePicker.js +22 -0
  29. package/dist/components/DatePicker/DatePicker.stories.js +36 -0
  30. package/dist/components/Popover/Popover.js +35 -0
  31. package/dist/components/Popover/Popover.stories.js +33 -0
  32. package/dist/components/TextInput/TextInput.js +9 -3
  33. package/dist/components/TextInput/TextInput.stories.js +12 -0
  34. package/dist/components/TextInput/TextInput.styles.js +41 -0
  35. package/dist/esm/bundle.css +197 -0
  36. package/dist/esm/bundle.js +3 -3
  37. package/dist/esm/bundle.js.map +1 -1
  38. package/dist/esm/types/components/AlertDialog/Alert.stories.d.ts +1 -1
  39. package/dist/esm/types/components/Calendar/Calendar.d.ts +8 -0
  40. package/dist/esm/types/components/Calendar/Calendar.stories.d.ts +272 -0
  41. package/dist/esm/types/components/Calendar/index.d.ts +1 -0
  42. package/dist/esm/types/components/Collapsible/Collapsible.d.ts +23 -0
  43. package/dist/esm/types/components/Collapsible/Collapsible.stories.d.ts +8 -0
  44. package/dist/esm/types/components/Collapsible/Collapsible.styles.d.ts +11 -0
  45. package/dist/esm/types/components/Collapsible/CollapsibleContext.d.ts +16 -0
  46. package/dist/esm/types/components/Collapsible/index.d.ts +1 -0
  47. package/dist/esm/types/components/DatePicker/DatePicker.d.ts +8 -0
  48. package/dist/esm/types/components/DatePicker/DatePicker.stories.d.ts +21 -0
  49. package/dist/esm/types/components/Popover/Popover.d.ts +6 -0
  50. package/dist/esm/types/components/Popover/Popover.stories.d.ts +21 -0
  51. package/dist/esm/types/components/TextInput/TextInput.stories.d.ts +7 -0
  52. package/dist/esm/types/components/TextInput/TextInput.styles.d.ts +5 -0
  53. package/dist/esm/types/index.d.ts +4 -0
  54. package/dist/index.d.ts +41 -1
  55. package/dist/index.js +4 -0
  56. package/dist/src/theme/global.css +248 -0
  57. package/package.json +5 -2
  58. package/src/components/Calendar/Calendar.stories.tsx +45 -0
  59. package/src/components/Calendar/Calendar.tsx +66 -0
  60. package/src/components/Calendar/index.ts +1 -0
  61. package/src/components/Collapsible/Collapsible.stories.tsx +65 -0
  62. package/src/components/Collapsible/Collapsible.styles.ts +62 -0
  63. package/src/components/Collapsible/Collapsible.tsx +113 -0
  64. package/src/components/Collapsible/CollapsibleContext.tsx +61 -0
  65. package/src/components/Collapsible/index.ts +1 -0
  66. package/src/components/DatePicker/DatePicker.stories.tsx +40 -0
  67. package/src/components/DatePicker/DatePicker.tsx +57 -0
  68. package/src/components/Popover/Popover.stories.tsx +40 -0
  69. package/src/components/Popover/Popover.tsx +31 -0
  70. package/src/components/TextInput/TextInput.stories.tsx +36 -0
  71. package/src/components/TextInput/TextInput.styles.ts +45 -0
  72. package/src/components/TextInput/TextInput.tsx +13 -3
  73. package/src/index.ts +8 -0
@@ -873,6 +873,10 @@ body {
873
873
  pointer-events: none;
874
874
  }
875
875
 
876
+ .invisible {
877
+ visibility: hidden;
878
+ }
879
+
876
880
  .static {
877
881
  position: static;
878
882
  }
@@ -910,6 +914,10 @@ body {
910
914
  top: -0.375rem;
911
915
  }
912
916
 
917
+ .left-1 {
918
+ left: 0.25rem;
919
+ }
920
+
913
921
  .left-3 {
914
922
  left: 0.75rem;
915
923
  }
@@ -926,6 +934,10 @@ body {
926
934
  right: 0px;
927
935
  }
928
936
 
937
+ .right-1 {
938
+ right: 0.25rem;
939
+ }
940
+
929
941
  .right-4 {
930
942
  right: 1rem;
931
943
  }
@@ -1032,6 +1044,11 @@ body {
1032
1044
  aspect-ratio: 1 / 1;
1033
1045
  }
1034
1046
 
1047
+ .size-14 {
1048
+ width: 3.5rem;
1049
+ height: 3.5rem;
1050
+ }
1051
+
1035
1052
  .size-2 {
1036
1053
  width: 0.5rem;
1037
1054
  height: 0.5rem;
@@ -1062,11 +1079,31 @@ body {
1062
1079
  height: 1.5rem;
1063
1080
  }
1064
1081
 
1082
+ .size-7 {
1083
+ width: 1.75rem;
1084
+ height: 1.75rem;
1085
+ }
1086
+
1065
1087
  .size-\[14px\] {
1066
1088
  width: 14px;
1067
1089
  height: 14px;
1068
1090
  }
1069
1091
 
1092
+ .size-\[30px\] {
1093
+ width: 30px;
1094
+ height: 30px;
1095
+ }
1096
+
1097
+ .size-\[38px\] {
1098
+ width: 38px;
1099
+ height: 38px;
1100
+ }
1101
+
1102
+ .size-full {
1103
+ width: 100%;
1104
+ height: 100%;
1105
+ }
1106
+
1070
1107
  .h-10 {
1071
1108
  height: 2.5rem;
1072
1109
  }
@@ -1079,6 +1116,10 @@ body {
1079
1116
  height: 1rem;
1080
1117
  }
1081
1118
 
1119
+ .h-9 {
1120
+ height: 2.25rem;
1121
+ }
1122
+
1082
1123
  .h-\[18px\] {
1083
1124
  height: 18px;
1084
1125
  }
@@ -1152,10 +1193,18 @@ body {
1152
1193
  width: 1rem;
1153
1194
  }
1154
1195
 
1196
+ .w-72 {
1197
+ width: 18rem;
1198
+ }
1199
+
1155
1200
  .w-8 {
1156
1201
  width: 2rem;
1157
1202
  }
1158
1203
 
1204
+ .w-9 {
1205
+ width: 2.25rem;
1206
+ }
1207
+
1159
1208
  .w-\[100px\] {
1160
1209
  width: 100px;
1161
1210
  }
@@ -1303,6 +1352,10 @@ body {
1303
1352
  flex-wrap: wrap;
1304
1353
  }
1305
1354
 
1355
+ .content-center {
1356
+ align-content: center;
1357
+ }
1358
+
1306
1359
  .items-center {
1307
1360
  align-items: center;
1308
1361
  }
@@ -1367,12 +1420,24 @@ body {
1367
1420
  margin-left: calc(-0.5rem * calc(1 - var(--tw-space-x-reverse)));
1368
1421
  }
1369
1422
 
1423
+ .space-x-1 > :not([hidden]) ~ :not([hidden]) {
1424
+ --tw-space-x-reverse: 0;
1425
+ margin-right: calc(0.25rem * var(--tw-space-x-reverse));
1426
+ margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse)));
1427
+ }
1428
+
1370
1429
  .space-x-2 > :not([hidden]) ~ :not([hidden]) {
1371
1430
  --tw-space-x-reverse: 0;
1372
1431
  margin-right: calc(0.5rem * var(--tw-space-x-reverse));
1373
1432
  margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
1374
1433
  }
1375
1434
 
1435
+ .space-y-1 > :not([hidden]) ~ :not([hidden]) {
1436
+ --tw-space-y-reverse: 0;
1437
+ margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));
1438
+ margin-bottom: calc(0.25rem * var(--tw-space-y-reverse));
1439
+ }
1440
+
1376
1441
  .space-y-2 > :not([hidden]) ~ :not([hidden]) {
1377
1442
  --tw-space-y-reverse: 0;
1378
1443
  margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
@@ -1459,6 +1524,21 @@ body {
1459
1524
  border-radius: 0.75rem;
1460
1525
  }
1461
1526
 
1527
+ .rounded-r-full {
1528
+ border-top-right-radius: 9999px;
1529
+ border-bottom-right-radius: 9999px;
1530
+ }
1531
+
1532
+ .rounded-r-none {
1533
+ border-top-right-radius: 0px;
1534
+ border-bottom-right-radius: 0px;
1535
+ }
1536
+
1537
+ .rounded-r-xl {
1538
+ border-top-right-radius: 0.75rem;
1539
+ border-bottom-right-radius: 0.75rem;
1540
+ }
1541
+
1462
1542
  .border {
1463
1543
  border-width: 1px;
1464
1544
  }
@@ -1479,6 +1559,10 @@ body {
1479
1559
  border-bottom-width: 3px;
1480
1560
  }
1481
1561
 
1562
+ .border-l {
1563
+ border-left-width: 1px;
1564
+ }
1565
+
1482
1566
  .border-t {
1483
1567
  border-top-width: 1px;
1484
1568
  }
@@ -1572,6 +1656,11 @@ body {
1572
1656
  border-bottom-color: rgb(var(--navbar-border-color));
1573
1657
  }
1574
1658
 
1659
+ .border-l-input-stroke {
1660
+ --tw-border-opacity: 1;
1661
+ border-left-color: rgb(var(--input-default-stroke-color) / var(--tw-border-opacity));
1662
+ }
1663
+
1575
1664
  .bg-\[rgb\(var\(--navbar-bg-color\)\)\] {
1576
1665
  background-color: rgb(var(--navbar-bg-color));
1577
1666
  }
@@ -1590,6 +1679,11 @@ body {
1590
1679
  background-color: rgb(var(--error-100) / var(--tw-bg-opacity));
1591
1680
  }
1592
1681
 
1682
+ .bg-gray-100 {
1683
+ --tw-bg-opacity: 1;
1684
+ background-color: rgb(243 244 246 / var(--tw-bg-opacity));
1685
+ }
1686
+
1593
1687
  .bg-gray-200 {
1594
1688
  --tw-bg-opacity: 1;
1595
1689
  background-color: rgb(229 231 235 / var(--tw-bg-opacity));
@@ -1727,6 +1821,10 @@ body {
1727
1821
  fill: rgb(var(--text-default-medium) / 1);
1728
1822
  }
1729
1823
 
1824
+ .p-0 {
1825
+ padding: 0px;
1826
+ }
1827
+
1730
1828
  .p-1 {
1731
1829
  padding: 0.25rem;
1732
1830
  }
@@ -1739,6 +1837,10 @@ body {
1739
1837
  padding: 5rem;
1740
1838
  }
1741
1839
 
1840
+ .p-3 {
1841
+ padding: 0.75rem;
1842
+ }
1843
+
1742
1844
  .p-4 {
1743
1845
  padding: 1rem;
1744
1846
  }
@@ -1779,6 +1881,11 @@ body {
1779
1881
  padding-right: 1rem;
1780
1882
  }
1781
1883
 
1884
+ .px-5 {
1885
+ padding-left: 1.25rem;
1886
+ padding-right: 1.25rem;
1887
+ }
1888
+
1782
1889
  .px-6 {
1783
1890
  padding-left: 1.5rem;
1784
1891
  padding-right: 1.5rem;
@@ -1828,14 +1935,30 @@ body {
1828
1935
  padding-inline-end: 30px;
1829
1936
  }
1830
1937
 
1938
+ .pe-\[38px\] {
1939
+ padding-inline-end: 38px;
1940
+ }
1941
+
1831
1942
  .pe-\[40px\] {
1832
1943
  padding-inline-end: 40px;
1833
1944
  }
1834
1945
 
1946
+ .pe-\[46px\] {
1947
+ padding-inline-end: 46px;
1948
+ }
1949
+
1835
1950
  .pe-\[48px\] {
1836
1951
  padding-inline-end: 48px;
1837
1952
  }
1838
1953
 
1954
+ .pe-\[72px\] {
1955
+ padding-inline-end: 72px;
1956
+ }
1957
+
1958
+ .pt-1 {
1959
+ padding-top: 0.25rem;
1960
+ }
1961
+
1839
1962
  .text-left {
1840
1963
  text-align: left;
1841
1964
  }
@@ -1856,6 +1979,10 @@ body {
1856
1979
  font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
1857
1980
  }
1858
1981
 
1982
+ .text-\[0\.8rem\] {
1983
+ font-size: 0.8rem;
1984
+ }
1985
+
1859
1986
  .text-base {
1860
1987
  font-size: 1rem;
1861
1988
  line-height: 1.5rem;
@@ -2005,6 +2132,10 @@ body {
2005
2132
  font-weight: 500;
2006
2133
  }
2007
2134
 
2135
+ .font-normal {
2136
+ font-weight: 400;
2137
+ }
2138
+
2008
2139
  .capitalize {
2009
2140
  text-transform: capitalize;
2010
2141
  }
@@ -2180,6 +2311,10 @@ body {
2180
2311
  text-underline-offset: 4px;
2181
2312
  }
2182
2313
 
2314
+ .opacity-50 {
2315
+ opacity: 0.5;
2316
+ }
2317
+
2183
2318
  .opacity-70 {
2184
2319
  opacity: 0.7;
2185
2320
  }
@@ -2249,6 +2384,14 @@ body {
2249
2384
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
2250
2385
  }
2251
2386
 
2387
+ .transition {
2388
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;
2389
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
2390
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
2391
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2392
+ transition-duration: 150ms;
2393
+ }
2394
+
2252
2395
  .transition-all {
2253
2396
  transition-property: all;
2254
2397
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
@@ -2267,6 +2410,10 @@ body {
2267
2410
  transition-duration: 150ms;
2268
2411
  }
2269
2412
 
2413
+ .delay-150 {
2414
+ transition-delay: 150ms;
2415
+ }
2416
+
2270
2417
  .duration-200 {
2271
2418
  transition-duration: 200ms;
2272
2419
  }
@@ -2427,6 +2574,14 @@ body {
2427
2574
  color: transparent;
2428
2575
  }
2429
2576
 
2577
+ .focus-within\:relative:focus-within {
2578
+ position: relative;
2579
+ }
2580
+
2581
+ .focus-within\:z-20:focus-within {
2582
+ z-index: 20;
2583
+ }
2584
+
2430
2585
  .hover\:border-error-120:hover {
2431
2586
  --tw-border-opacity: 1;
2432
2587
  border-color: rgb(var(--error-120) / var(--tw-border-opacity));
@@ -2452,6 +2607,11 @@ body {
2452
2607
  background-color: rgb(243 244 246 / var(--tw-bg-opacity));
2453
2608
  }
2454
2609
 
2610
+ .hover\:bg-gray-200:hover {
2611
+ --tw-bg-opacity: 1;
2612
+ background-color: rgb(229 231 235 / var(--tw-bg-opacity));
2613
+ }
2614
+
2455
2615
  .hover\:bg-info-100:hover {
2456
2616
  --tw-bg-opacity: 1;
2457
2617
  background-color: rgb(var(--info-100)) / var(--tw-bg-opacity));
@@ -2465,6 +2625,11 @@ body {
2465
2625
  background-color: rgb(var(--main-transparent-secondary) / 0.8);
2466
2626
  }
2467
2627
 
2628
+ .hover\:bg-primary:hover {
2629
+ --tw-bg-opacity: 1;
2630
+ background-color: rgb(var(--primary-default) / var(--tw-bg-opacity));
2631
+ }
2632
+
2468
2633
  .hover\:bg-primary-100:hover {
2469
2634
  --tw-bg-opacity: 1;
2470
2635
  background-color: rgb(var(--primary-100) / var(--tw-bg-opacity));
@@ -2525,6 +2690,11 @@ body {
2525
2690
  color: rgb(var(--primary-default) / var(--tw-text-opacity));
2526
2691
  }
2527
2692
 
2693
+ .hover\:text-primary-foreground:hover {
2694
+ --tw-text-opacity: 1;
2695
+ color: rgb(var(--primary-foreground) / var(--tw-text-opacity));
2696
+ }
2697
+
2528
2698
  .hover\:text-secondary-5:hover {
2529
2699
  --tw-text-opacity: 1;
2530
2700
  color: rgb(var(--secondary-5) / var(--tw-text-opacity));
@@ -2548,6 +2718,11 @@ body {
2548
2718
  border-color: rgb(var(--input-default-stroke-color) / var(--tw-border-opacity));
2549
2719
  }
2550
2720
 
2721
+ .focus\:bg-primary:focus {
2722
+ --tw-bg-opacity: 1;
2723
+ background-color: rgb(var(--primary-default) / var(--tw-bg-opacity));
2724
+ }
2725
+
2551
2726
  .focus\:pe-10:focus {
2552
2727
  padding-inline-end: 2.5rem;
2553
2728
  }
@@ -2560,6 +2735,11 @@ body {
2560
2735
  padding-inline-end: 2rem;
2561
2736
  }
2562
2737
 
2738
+ .focus\:text-primary-foreground:focus {
2739
+ --tw-text-opacity: 1;
2740
+ color: rgb(var(--primary-foreground) / var(--tw-text-opacity));
2741
+ }
2742
+
2563
2743
  .focus\:outline-none:focus {
2564
2744
  outline: 2px solid transparent;
2565
2745
  outline-offset: 2px;
@@ -2604,16 +2784,31 @@ body {
2604
2784
  outline-offset: 2px;
2605
2785
  }
2606
2786
 
2787
+ .focus-visible\:ring:focus-visible {
2788
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2789
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2790
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2791
+ }
2792
+
2607
2793
  .focus-visible\:ring-2:focus-visible {
2608
2794
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2609
2795
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2610
2796
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2611
2797
  }
2612
2798
 
2799
+ .focus-visible\:ring-gray-500:focus-visible {
2800
+ --tw-ring-opacity: 1;
2801
+ --tw-ring-color: rgb(107 114 128 / var(--tw-ring-opacity));
2802
+ }
2803
+
2613
2804
  .focus-visible\:ring-ring:focus-visible {
2614
2805
  --tw-ring-color: hsl(var(--ring));
2615
2806
  }
2616
2807
 
2808
+ .focus-visible\:ring-opacity-75:focus-visible {
2809
+ --tw-ring-opacity: 0.75;
2810
+ }
2811
+
2617
2812
  .focus-visible\:ring-offset-2:focus-visible {
2618
2813
  --tw-ring-offset-width: 2px;
2619
2814
  }
@@ -2701,6 +2896,10 @@ body {
2701
2896
  font-weight: 400;
2702
2897
  }
2703
2898
 
2899
+ .peer:hover ~ .peer-hover\:fill-input-text-active {
2900
+ fill: rgb(var(--input-active-text-color) / 1);
2901
+ }
2902
+
2704
2903
  .peer:focus ~ .peer-focus\:-top-1 {
2705
2904
  top: -0.25rem;
2706
2905
  }
@@ -2713,6 +2912,11 @@ body {
2713
2912
  display: flex;
2714
2913
  }
2715
2914
 
2915
+ .peer:focus ~ .peer-focus\:border-l-input-stroke-active {
2916
+ --tw-border-opacity: 1;
2917
+ border-left-color: rgb(var(--input-active-stroke-color) / var(--tw-border-opacity));
2918
+ }
2919
+
2716
2920
  .peer:focus ~ .peer-focus\:bg-input-label-background {
2717
2921
  --tw-bg-opacity: 1;
2718
2922
  background-color: rgb(var(--input-label-background-color) / var(--tw-bg-opacity));
@@ -2723,6 +2927,10 @@ body {
2723
2927
  background-color: rgb(239 68 68 / var(--tw-bg-opacity));
2724
2928
  }
2725
2929
 
2930
+ .peer:focus ~ .peer-focus\:fill-input-text-active {
2931
+ fill: rgb(var(--input-active-text-color) / 1);
2932
+ }
2933
+
2726
2934
  .peer:focus ~ .peer-focus\:text-input-text-active {
2727
2935
  --tw-text-opacity: 1;
2728
2936
  color: rgb(var(--input-active-text-color) / var(--tw-text-opacity));
@@ -2744,6 +2952,11 @@ body {
2744
2952
  cursor: not-allowed;
2745
2953
  }
2746
2954
 
2955
+ .peer:disabled ~ .peer-disabled\:border-l-input-stroke-disabled {
2956
+ --tw-border-opacity: 1;
2957
+ border-left-color: rgb(var(--input-disabled-stroke-color) / var(--tw-border-opacity));
2958
+ }
2959
+
2747
2960
  .peer:disabled ~ .peer-disabled\:opacity-70 {
2748
2961
  opacity: 0.7;
2749
2962
  }
@@ -2760,6 +2973,14 @@ body {
2760
2973
  opacity: 0.5;
2761
2974
  }
2762
2975
 
2976
+ .aria-selected\:opacity-100[aria-selected="true"] {
2977
+ opacity: 1;
2978
+ }
2979
+
2980
+ .aria-selected\:opacity-30[aria-selected="true"] {
2981
+ opacity: 0.3;
2982
+ }
2983
+
2763
2984
  .data-\[state\=checked\]\:border-primary[data-state=checked] {
2764
2985
  --tw-border-opacity: 1;
2765
2986
  border-color: rgb(var(--primary-default) / var(--tw-border-opacity));
@@ -2803,6 +3024,18 @@ body {
2803
3024
  margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
2804
3025
  }
2805
3026
 
3027
+ .sm\:space-x-4 > :not([hidden]) ~ :not([hidden]) {
3028
+ --tw-space-x-reverse: 0;
3029
+ margin-right: calc(1rem * var(--tw-space-x-reverse));
3030
+ margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));
3031
+ }
3032
+
3033
+ .sm\:space-y-0 > :not([hidden]) ~ :not([hidden]) {
3034
+ --tw-space-y-reverse: 0;
3035
+ margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));
3036
+ margin-bottom: calc(0px * var(--tw-space-y-reverse));
3037
+ }
3038
+
2806
3039
  .sm\:rounded-\[var\(--popup-rounded\)\] {
2807
3040
  border-radius: var(--popup-rounded);
2808
3041
  }
@@ -2812,6 +3045,21 @@ body {
2812
3045
  }
2813
3046
  }
2814
3047
 
3048
+ .first\:\[\&\:has\(\[aria-selected\]\)\]\:rounded-l-md:has([aria-selected]):first-child {
3049
+ border-top-left-radius: calc(var(--radius) - 2px);
3050
+ border-bottom-left-radius: calc(var(--radius) - 2px);
3051
+ }
3052
+
3053
+ .last\:\[\&\:has\(\[aria-selected\]\)\]\:rounded-r-md:has([aria-selected]):last-child {
3054
+ border-top-right-radius: calc(var(--radius) - 2px);
3055
+ border-bottom-right-radius: calc(var(--radius) - 2px);
3056
+ }
3057
+
3058
+ .\[\&\:has\(\[aria-selected\]\.day-range-end\)\]\:rounded-r-md:has([aria-selected].day-range-end) {
3059
+ border-top-right-radius: calc(var(--radius) - 2px);
3060
+ border-bottom-right-radius: calc(var(--radius) - 2px);
3061
+ }
3062
+
2815
3063
  .\[\&\:has\(\[role\=checkbox\]\)\]\:w-4:has([role=checkbox]) {
2816
3064
  width: 1rem;
2817
3065
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rovula/ui",
3
- "version": "0.0.16",
3
+ "version": "0.0.18",
4
4
  "main": "dist/cjs/bundle.js",
5
5
  "module": "dist/esm/bundle.js",
6
6
  "types": "dist/index.d.ts",
@@ -73,15 +73,18 @@
73
73
  "@radix-ui/react-checkbox": "^1.0.4",
74
74
  "@radix-ui/react-dialog": "^1.0.5",
75
75
  "@radix-ui/react-label": "^2.0.2",
76
+ "@radix-ui/react-popover": "^1.1.1",
76
77
  "@radix-ui/react-radio-group": "^1.1.3",
77
- "@radix-ui/react-slot": "^1.0.2",
78
+ "@radix-ui/react-slot": "^1.1.0",
78
79
  "@tanstack/react-table": "^8.17.3",
79
80
  "@tanstack/react-virtual": "^3.5.0",
80
81
  "@types/react": "^18.3.2",
81
82
  "axios": "^1.6.4",
82
83
  "class-variance-authority": "^0.7.0",
83
84
  "clsx": "^2.1.1",
85
+ "date-fns": "^3.6.0",
84
86
  "react": "^17.0.0 || ^18.0.0",
87
+ "react-day-picker": "^8.10.1",
85
88
  "react-dom": "^17.0.0 || ^18.0.0",
86
89
  "tailwind-merge": "^2.3.0",
87
90
  "tailwindcss-animate": "^1.0.7",
@@ -0,0 +1,45 @@
1
+ import React from "react";
2
+ import type { Meta, StoryObj } from "@storybook/react";
3
+ import Calendar from "./Calendar";
4
+
5
+ // import { Popover, PopoverTrigger, PopoverContent } from "./Popover";
6
+
7
+ const meta = {
8
+ title: "Components/Calendar",
9
+ component: Calendar,
10
+ tags: ["autodocs"],
11
+ parameters: {
12
+ layout: "fullscreen",
13
+ },
14
+ decorators: [
15
+ (Story) => (
16
+ <div className="p-5 flex w-full">
17
+ <Story />
18
+ </div>
19
+ ),
20
+ ],
21
+ } satisfies Meta<typeof Calendar>;
22
+
23
+ export default meta;
24
+
25
+ export const Default = {
26
+ args: {},
27
+ render: (args) => {
28
+ console.log("args ", args);
29
+ const props: typeof args = {
30
+ ...args,
31
+ };
32
+ const [date, setDate] = React.useState<Date | undefined>(new Date());
33
+
34
+ return (
35
+ <div className="flex flex-row gap-4 w-full">
36
+ <Calendar
37
+ mode="single"
38
+ selected={date}
39
+ onSelect={setDate}
40
+ className="rounded-md border"
41
+ />
42
+ </div>
43
+ );
44
+ },
45
+ } satisfies StoryObj;
@@ -0,0 +1,66 @@
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+ import { ChevronLeftIcon, ChevronRightIcon } from "@heroicons/react/16/solid";
5
+ import { DayPicker } from "react-day-picker";
6
+
7
+ import { cn } from "@/utils/cn";
8
+ import { buttonVariants } from "../Button/Button.styles";
9
+
10
+ export type CalendarProps = React.ComponentProps<typeof DayPicker>;
11
+
12
+ function Calendar({
13
+ className,
14
+ classNames,
15
+ showOutsideDays = true,
16
+ ...props
17
+ }: CalendarProps) {
18
+ return (
19
+ <DayPicker
20
+ showOutsideDays={showOutsideDays}
21
+ className={cn("p-3", className)}
22
+ classNames={{
23
+ months: "flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",
24
+ month: "space-y-4",
25
+ caption: "flex justify-center pt-1 relative items-center",
26
+ caption_label: "text-sm font-medium",
27
+ nav: "space-x-1 flex items-center",
28
+ nav_button: cn(
29
+ buttonVariants({ variant: "outline" }),
30
+ "flex items-center justify-center size-7 bg-transparent p-0 opacity-50 hover:opacity-100"
31
+ ),
32
+ nav_button_previous: "absolute left-1",
33
+ nav_button_next: "absolute right-1",
34
+ table: "w-full border-collapse space-y-1",
35
+ head_row: "flex",
36
+ head_cell:
37
+ "text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]",
38
+ row: "flex w-full mt-2",
39
+ cell: "h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20",
40
+ day: cn(
41
+ buttonVariants({ variant: "flat" }),
42
+ "size-7 p-0 font-normal aria-selected:opacity-100"
43
+ ),
44
+ day_range_end: "day-range-end",
45
+ day_selected:
46
+ "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",
47
+ day_today: "bg-accent text-accent-foreground",
48
+ day_outside:
49
+ "day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30",
50
+ day_disabled: "text-muted-foreground opacity-50",
51
+ day_range_middle:
52
+ "aria-selected:bg-accent aria-selected:text-accent-foreground",
53
+ day_hidden: "invisible",
54
+ ...classNames,
55
+ }}
56
+ components={{
57
+ IconLeft: ({ ...props }) => <ChevronLeftIcon className="h-4 w-4" />,
58
+ IconRight: ({ ...props }) => <ChevronRightIcon className="h-4 w-4" />,
59
+ }}
60
+ {...props}
61
+ />
62
+ );
63
+ }
64
+ Calendar.displayName = "Calendar";
65
+
66
+ export default Calendar;
@@ -0,0 +1 @@
1
+ export { default as Calendar } from "./Calendar";