@giddaa-housing/ui 3.1.0 → 3.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 (63) hide show
  1. package/css/generated/shared.css +1 -1
  2. package/css/giddaa.css +12 -3
  3. package/css/theme.css +4 -1
  4. package/dist/accordion.js +2 -2
  5. package/dist/activity-timeline.js +2 -2
  6. package/dist/alert.js +1 -1
  7. package/dist/breadcrumb.js +3 -3
  8. package/dist/button.js +2 -2
  9. package/dist/calendar.js +3 -3
  10. package/dist/call-card.js +1 -1
  11. package/dist/carousel.js +3 -3
  12. package/dist/chart.js +1 -1
  13. package/dist/chat.js +1 -1
  14. package/dist/checkbox.js +2 -2
  15. package/dist/combobox.js +6 -6
  16. package/dist/cta.js +3 -3
  17. package/dist/currency-selector.d.ts +10 -8
  18. package/dist/currency-selector.js +247 -28
  19. package/dist/data-table.js +2 -2
  20. package/dist/date-picker.js +6 -6
  21. package/dist/dialog.js +2 -2
  22. package/dist/dropdown-menu.js +20 -20
  23. package/dist/dropzone.js +1 -1
  24. package/dist/editorial-card.d.ts +20 -11
  25. package/dist/editorial-card.js +67 -2
  26. package/dist/file-upload.js +1 -1
  27. package/dist/filter.js +1 -1
  28. package/dist/footer.js +1 -1
  29. package/dist/icons.d.ts +93 -0
  30. package/dist/icons.js +905 -0
  31. package/dist/infinite-scroll.js +1 -1
  32. package/dist/input-otp.js +2 -2
  33. package/dist/kpi-card.js +1 -1
  34. package/dist/match.js +1 -1
  35. package/dist/media-gallery-hero.js +1 -1
  36. package/dist/media-player.js +59 -48
  37. package/dist/message.js +1 -1
  38. package/dist/mobile-sidebar.js +4 -4
  39. package/dist/multi-step-form.js +2 -2
  40. package/dist/number-input.js +3 -3
  41. package/dist/pagination.js +4 -4
  42. package/dist/password-input.js +1 -1
  43. package/dist/phone-input.js +4 -4
  44. package/dist/photo-gallery.js +3 -3
  45. package/dist/price-tag.js +1 -1
  46. package/dist/rich-text-editor.js +4 -4
  47. package/dist/search-input.js +1 -1
  48. package/dist/select.js +6 -6
  49. package/dist/sheet.js +2 -2
  50. package/dist/sidebar.js +1 -1
  51. package/dist/stepper.js +2 -2
  52. package/dist/styles.css +176 -17
  53. package/dist/tag.js +1 -1
  54. package/dist/testimonial-block.js +1 -1
  55. package/dist/theme-switcher.d.ts +31 -0
  56. package/dist/theme-switcher.js +78 -0
  57. package/dist/time-picker.js +2 -2
  58. package/dist/toast.d.ts +38 -10
  59. package/dist/toast.js +55 -52
  60. package/dist/top-navbar.js +3 -3
  61. package/dist/video-player-dialog.d.ts +57 -0
  62. package/dist/video-player-dialog.js +188 -0
  63. package/package.json +13 -2
package/dist/styles.css CHANGED
@@ -143,7 +143,8 @@
143
143
  --color-action-danger: #ef4444;
144
144
  --color-action-danger-hover: #dc2626;
145
145
  --color-action-danger-pressed: #b91c1c;
146
- --color-whatsapp-button: #00d158;
146
+ --color-whatsapp-green: #00d158;
147
+ --color-whatsapp-button: var(--color-whatsapp-green);
147
148
  --color-status-success: #16a34a;
148
149
  --color-status-warning: #d97706;
149
150
  --color-status-danger: #ef4444;
@@ -879,6 +880,10 @@
879
880
  width: calc(var(--spacing) * 24);
880
881
  height: calc(var(--spacing) * 24);
881
882
  }
883
+ .size-\[14px\] {
884
+ width: 14px;
885
+ height: 14px;
886
+ }
882
887
  .size-\[34px\] {
883
888
  width: 34px;
884
889
  height: 34px;
@@ -995,6 +1000,9 @@
995
1000
  .h-dvh {
996
1001
  height: 100dvh;
997
1002
  }
1003
+ .h-fit {
1004
+ height: fit-content;
1005
+ }
998
1006
  .h-full {
999
1007
  height: 100%;
1000
1008
  }
@@ -1019,12 +1027,18 @@
1019
1027
  .max-h-\[68vh\] {
1020
1028
  max-height: 68vh;
1021
1029
  }
1030
+ .max-h-\[calc\(100dvh-4rem\)\] {
1031
+ max-height: calc(100dvh - 4rem);
1032
+ }
1022
1033
  .max-h-\[calc\(100dvh-5rem\)\] {
1023
1034
  max-height: calc(100dvh - 5rem);
1024
1035
  }
1025
1036
  .max-h-full {
1026
1037
  max-height: 100%;
1027
1038
  }
1039
+ .max-h-none {
1040
+ max-height: none;
1041
+ }
1028
1042
  .min-h-0 {
1029
1043
  min-height: 0;
1030
1044
  }
@@ -1301,6 +1315,15 @@
1301
1315
  .max-w-\[520px\] {
1302
1316
  max-width: 520px;
1303
1317
  }
1318
+ .max-w-\[584px\] {
1319
+ max-width: 584px;
1320
+ }
1321
+ .max-w-\[752px\] {
1322
+ max-width: 752px;
1323
+ }
1324
+ .max-w-\[920px\] {
1325
+ max-width: 920px;
1326
+ }
1304
1327
  .max-w-\[calc\(100vw-2\.5rem\)\] {
1305
1328
  max-width: calc(100vw - 2.5rem);
1306
1329
  }
@@ -1492,6 +1515,10 @@
1492
1515
  --tw-translate-y: var(--active-tab-top);
1493
1516
  translate: var(--tw-translate-x) var(--tw-translate-y);
1494
1517
  }
1518
+ .translate-y-0 {
1519
+ --tw-translate-y: 0;
1520
+ translate: var(--tw-translate-x) var(--tw-translate-y);
1521
+ }
1495
1522
  .translate-y-\[-2\.5rem\] {
1496
1523
  --tw-translate-y: -2.5rem;
1497
1524
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -1751,6 +1778,13 @@
1751
1778
  margin-block-end: calc(calc(var(--spacing) * 0.5) * calc(1 - var(--tw-space-y-reverse)));
1752
1779
  }
1753
1780
  }
1781
+ .space-y-1 {
1782
+ :where(& > :not(:last-child)) {
1783
+ --tw-space-y-reverse: 0;
1784
+ margin-block-start: calc(var(--spacing) * var(--tw-space-y-reverse));
1785
+ margin-block-end: calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)));
1786
+ }
1787
+ }
1754
1788
  .space-y-2 {
1755
1789
  :where(& > :not(:last-child)) {
1756
1790
  --tw-space-y-reverse: 0;
@@ -1963,6 +1997,10 @@
1963
1997
  border-top-left-radius: var(--radius-4xl);
1964
1998
  border-top-right-radius: var(--radius-4xl);
1965
1999
  }
2000
+ .rounded-t-\[inherit\] {
2001
+ border-top-left-radius: inherit;
2002
+ border-top-right-radius: inherit;
2003
+ }
1966
2004
  .rounded-l-full {
1967
2005
  border-top-left-radius: calc(infinity * 1px);
1968
2006
  border-bottom-left-radius: calc(infinity * 1px);
@@ -2118,6 +2156,12 @@
2118
2156
  .border-r-transparent {
2119
2157
  border-right-color: transparent;
2120
2158
  }
2159
+ .bg-\[\#2c3329\] {
2160
+ background-color: #2c3329;
2161
+ }
2162
+ .bg-\[\#11160f\] {
2163
+ background-color: #11160f;
2164
+ }
2121
2165
  .bg-action-danger {
2122
2166
  background-color: var(--color-action-danger);
2123
2167
  }
@@ -2277,6 +2321,9 @@
2277
2321
  .bg-whatsapp-button {
2278
2322
  background-color: var(--color-whatsapp-button);
2279
2323
  }
2324
+ .bg-whatsapp-green {
2325
+ background-color: var(--color-whatsapp-green);
2326
+ }
2280
2327
  .\[background-image\:radial-gradient\(circle\,color-mix\(in_srgb\,var\(--color-line\)_55\%\,transparent\)_0\.75px\,transparent_0\.75px\)\] {
2281
2328
  background-image: radial-gradient(circle,color-mix(in srgb,#cbd5e1 55%,transparent) 0.75px,transparent 0.75px);
2282
2329
  @supports (color: color-mix(in lab, red, red)) {
@@ -2292,9 +2339,6 @@
2292
2339
  .\[background-size\:24px_24px\] {
2293
2340
  background-size: 24px 24px;
2294
2341
  }
2295
- .bg-cover {
2296
- background-size: cover;
2297
- }
2298
2342
  .bg-clip-padding {
2299
2343
  background-clip: padding-box;
2300
2344
  }
@@ -2559,6 +2603,9 @@
2559
2603
  .pt-14 {
2560
2604
  padding-top: calc(var(--spacing) * 14);
2561
2605
  }
2606
+ .pt-\[18px\] {
2607
+ padding-top: 18px;
2608
+ }
2562
2609
  .pt-gdt-5xl {
2563
2610
  padding-top: var(--spacing-gdt-5xl);
2564
2611
  }
@@ -2840,6 +2887,9 @@
2840
2887
  .whitespace-nowrap {
2841
2888
  white-space: nowrap;
2842
2889
  }
2890
+ .text-\[\#ecf2ea\] {
2891
+ color: #ecf2ea;
2892
+ }
2843
2893
  .text-action-primary {
2844
2894
  color: var(--color-action-primary);
2845
2895
  }
@@ -2986,12 +3036,20 @@
2986
3036
  --tw-shadow: var(--shadow-3);
2987
3037
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2988
3038
  }
3039
+ .shadow-\[0_0_4px_rgb\(0_0_0\/0\.1\)\] {
3040
+ --tw-shadow: 0 0 4px var(--tw-shadow-color, rgb(0 0 0/0.1));
3041
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3042
+ }
3043
+ .shadow-\[0_0_8px_2px_rgb\(23_48_22\/0\.06\)\] {
3044
+ --tw-shadow: 0 0 8px 2px var(--tw-shadow-color, rgb(23 48 22/0.06));
3045
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
3046
+ }
2989
3047
  .shadow-\[0px_0px_4px_0px_rgba\(0\,0\,0\,0\.1\)\] {
2990
3048
  --tw-shadow: 0px 0px 4px 0px var(--tw-shadow-color, rgba(0,0,0,0.1));
2991
3049
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2992
3050
  }
2993
- .shadow-\[inset_0_0_0_1px_rgb\(0_0_0\/0\.04\)\] {
2994
- --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, rgb(0 0 0/0.04));
3051
+ .shadow-\[inset_0_0_0_1px_rgb\(0_0_0\/0\.08\)\] {
3052
+ --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, rgb(0 0 0/0.08));
2995
3053
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2996
3054
  }
2997
3055
  .shadow-\[inset_0_0_0_1px_var\(--color-line-subtle\)\] {
@@ -3073,9 +3131,6 @@
3073
3131
  --tw-ring-color: color-mix(in oklab, var(--color-line-focus) 40%, transparent);
3074
3132
  }
3075
3133
  }
3076
- .ring-surface-brand {
3077
- --tw-ring-color: var(--color-surface-brand);
3078
- }
3079
3134
  .inset-ring-line-focus {
3080
3135
  --tw-inset-ring-color: var(--color-line-focus);
3081
3136
  }
@@ -3173,6 +3228,11 @@
3173
3228
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
3174
3229
  transition-duration: var(--tw-duration, var(--default-transition-duration));
3175
3230
  }
3231
+ .transition-\[background-color\,box-shadow\,scale\] {
3232
+ transition-property: background-color,box-shadow,scale;
3233
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
3234
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
3235
+ }
3176
3236
  .transition-\[background-color\,box-shadow\,transform\] {
3177
3237
  transition-property: background-color,box-shadow,transform;
3178
3238
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -3228,6 +3288,11 @@
3228
3288
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
3229
3289
  transition-duration: var(--tw-duration, var(--default-transition-duration));
3230
3290
  }
3291
+ .transition-\[background-color\,transform\] {
3292
+ transition-property: background-color,transform;
3293
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
3294
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
3295
+ }
3231
3296
  .transition-\[background-color\,translate\] {
3232
3297
  transition-property: background-color,translate;
3233
3298
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -3278,6 +3343,11 @@
3278
3343
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
3279
3344
  transition-duration: var(--tw-duration, var(--default-transition-duration));
3280
3345
  }
3346
+ .transition-\[inset-inline-start\] {
3347
+ transition-property: inset-inline-start;
3348
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
3349
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
3350
+ }
3281
3351
  .transition-\[left\,right\,width\] {
3282
3352
  transition-property: left,right,width;
3283
3353
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -3376,6 +3446,10 @@
3376
3446
  .transition-none {
3377
3447
  transition-property: none;
3378
3448
  }
3449
+ .duration-\(--duration-motion-popup\) {
3450
+ --tw-duration: var(--duration-motion-popup);
3451
+ transition-duration: var(--duration-motion-popup);
3452
+ }
3379
3453
  .duration-\(--duration-motion-press\) {
3380
3454
  --tw-duration: var(--duration-motion-press);
3381
3455
  transition-duration: var(--duration-motion-press);
@@ -3509,6 +3583,9 @@
3509
3583
  .\[--collapsed-y\:calc\(var\(--anchor-y\)\+var\(--toast-swipe-movement-y\)-\(var\(--toast-placement-index\)\*var\(--peek\)\)-\(var\(--shrink\)\*var\(--height\)\)\)\] {
3510
3584
  --collapsed-y: calc(var(--anchor-y) + var(--toast-swipe-movement-y) - (var(--toast-placement-index) * var(--peek)) - (var(--shrink) * var(--height)));
3511
3585
  }
3586
+ .\[--dialog-padding\:0px\] {
3587
+ --dialog-padding: 0px;
3588
+ }
3512
3589
  .\[--dialog-padding\:1\.25rem\] {
3513
3590
  --dialog-padding: 1.25rem;
3514
3591
  }
@@ -3641,6 +3718,9 @@
3641
3718
  .\[transition\:transform_var\(--duration-motion-surface\)_var\(--ease-gdt-out\)\,opacity_var\(--duration-motion-surface\)_var\(--ease-gdt-out\)\] {
3642
3719
  transition: transform var(--duration-motion-surface) var(--ease-gdt-out),opacity var(--duration-motion-surface) var(--ease-gdt-out);
3643
3720
  }
3721
+ .duration-\(--duration-motion-popup\) {
3722
+ animation-duration: var(--duration-motion-popup);
3723
+ }
3644
3724
  .duration-\(--duration-motion-press\) {
3645
3725
  animation-duration: var(--duration-motion-press);
3646
3726
  }
@@ -3895,6 +3975,11 @@
3895
3975
  display: none;
3896
3976
  }
3897
3977
  }
3978
+ .group-has-\[\:focus-visible\]\/seek-thumb\:\[filter\:drop-shadow\(0_0_0\.25rem_var\(--color-line-focus\)\)\] {
3979
+ &:is(:where(.group\/seek-thumb):has(*:is(:focus-visible)) *) {
3980
+ filter: drop-shadow(0 0 0.25rem var(--color-line-focus));
3981
+ }
3982
+ }
3898
3983
  .group-has-\[\[aria-invalid\=true\]\]\/input-group\:bg-line-danger {
3899
3984
  &:is(:where(.group\/input-group):has(*:is([aria-invalid=true])) *) {
3900
3985
  background-color: var(--color-line-danger);
@@ -4210,6 +4295,14 @@
4210
4295
  color: var(--color-fg-caption-placeholder);
4211
4296
  }
4212
4297
  }
4298
+ .group-data-\[dragging\]\/seek-thumb\:scale-125 {
4299
+ &:is(:where(.group\/seek-thumb)[data-dragging] *) {
4300
+ --tw-scale-x: 125%;
4301
+ --tw-scale-y: 125%;
4302
+ --tw-scale-z: 125%;
4303
+ scale: var(--tw-scale-x) var(--tw-scale-y);
4304
+ }
4305
+ }
4213
4306
  .group-data-\[focused\=true\]\/day\:border-line-focus {
4214
4307
  &:is(:where(.group\/day)[data-focused="true"] *) {
4215
4308
  border-color: var(--color-line-focus);
@@ -4333,6 +4426,11 @@
4333
4426
  rotate: 180deg;
4334
4427
  }
4335
4428
  }
4429
+ .group-data-\[popup-open\]\/theme-switcher\:rotate-180 {
4430
+ &:is(:where(.group\/theme-switcher)[data-popup-open] *) {
4431
+ rotate: 180deg;
4432
+ }
4433
+ }
4336
4434
  .group-data-\[selected\=true\]\/list-item\:text-fg-brand {
4337
4435
  &:is(:where(.group\/list-item)[data-selected="true"] *) {
4338
4436
  color: var(--color-fg-brand);
@@ -6751,6 +6849,11 @@
6751
6849
  scale: 0.97;
6752
6850
  }
6753
6851
  }
6852
+ .active\:scale-\[0\.99\] {
6853
+ &:active {
6854
+ scale: 0.99;
6855
+ }
6856
+ }
6754
6857
  .active\:border-line-strong {
6755
6858
  &:active {
6756
6859
  border-color: var(--color-line-strong);
@@ -7306,6 +7409,11 @@
7306
7409
  height: auto;
7307
7410
  }
7308
7411
  }
7412
+ .aria-current\:bg-surface-brand-subtle {
7413
+ &[aria-current="true"] {
7414
+ background-color: var(--color-surface-brand-subtle);
7415
+ }
7416
+ }
7309
7417
  .aria-disabled\:pointer-events-none {
7310
7418
  &[aria-disabled="true"] {
7311
7419
  pointer-events: none;
@@ -7869,6 +7977,11 @@
7869
7977
  background-color: var(--color-action-tertiary-hover);
7870
7978
  }
7871
7979
  }
7980
+ .data-popup-open\:bg-action-tertiary-pressed {
7981
+ &[data-popup-open] {
7982
+ background-color: var(--color-action-tertiary-pressed);
7983
+ }
7984
+ }
7872
7985
  .data-popup-open\:bg-surface {
7873
7986
  &[data-popup-open] {
7874
7987
  background-color: var(--color-surface);
@@ -8138,14 +8251,6 @@
8138
8251
  scale: var(--tw-scale-x) var(--tw-scale-y);
8139
8252
  }
8140
8253
  }
8141
- .data-\[dragging\]\:scale-125 {
8142
- &[data-dragging] {
8143
- --tw-scale-x: 125%;
8144
- --tw-scale-y: 125%;
8145
- --tw-scale-z: 125%;
8146
- scale: var(--tw-scale-x) var(--tw-scale-y);
8147
- }
8148
- }
8149
8254
  .data-\[dragging\]\:transition-none {
8150
8255
  &[data-dragging] {
8151
8256
  transition-property: none;
@@ -9525,6 +9630,16 @@
9525
9630
  transition: opacity var(--duration-motion-surface) var(--ease-gdt-out);
9526
9631
  }
9527
9632
  }
9633
+ .motion-reduce\:group-data-\[dragging\]\/seek-thumb\:scale-100 {
9634
+ @media (prefers-reduced-motion: reduce) {
9635
+ &:is(:where(.group\/seek-thumb)[data-dragging] *) {
9636
+ --tw-scale-x: 100%;
9637
+ --tw-scale-y: 100%;
9638
+ --tw-scale-z: 100%;
9639
+ scale: var(--tw-scale-x) var(--tw-scale-y);
9640
+ }
9641
+ }
9642
+ }
9528
9643
  .motion-reduce\:active\:translate-y-0 {
9529
9644
  @media (prefers-reduced-motion: reduce) {
9530
9645
  &:active {
@@ -10013,6 +10128,11 @@
10013
10128
  width: calc(var(--spacing) * 120);
10014
10129
  }
10015
10130
  }
10131
+ .sm\:w-full {
10132
+ @media (width >= 40rem) {
10133
+ width: 100%;
10134
+ }
10135
+ }
10016
10136
  .sm\:max-w-\[26\.5rem\] {
10017
10137
  @media (width >= 40rem) {
10018
10138
  max-width: 26.5rem;
@@ -11435,6 +11555,12 @@
11435
11555
  }
11436
11556
  }
11437
11557
  }
11558
+ .\[\&_svg\:not\(\[data-slot\=currency-flag\]\)\]\:size-3\.5 {
11559
+ & svg:not([data-slot=currency-flag]) {
11560
+ width: calc(var(--spacing) * 3.5);
11561
+ height: calc(var(--spacing) * 3.5);
11562
+ }
11563
+ }
11438
11564
  .\[\&_tr\:last-child\]\:border-0 {
11439
11565
  & tr:last-child {
11440
11566
  border-style: var(--tw-border-style);
@@ -11770,6 +11896,23 @@
11770
11896
  margin-left: -1px;
11771
11897
  }
11772
11898
  }
11899
+ .\[\&\>\[data-slot\=media-player\]\]\:size-full {
11900
+ &>[data-slot=media-player] {
11901
+ width: 100%;
11902
+ height: 100%;
11903
+ }
11904
+ }
11905
+ .\[\&\>\[data-slot\=media-player\]\]\:rounded-none {
11906
+ &>[data-slot=media-player] {
11907
+ border-radius: 0;
11908
+ }
11909
+ }
11910
+ .\[\&\>\[data-slot\=media-player\]\]\:shadow-none {
11911
+ &>[data-slot=media-player] {
11912
+ --tw-shadow: 0 0 #0000;
11913
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
11914
+ }
11915
+ }
11773
11916
  .has-\[select\[aria-hidden\=true\]\:last-child\]\:\[\&\>\[data-slot\=select-trigger\]\:last-of-type\]\:rounded-r-lg {
11774
11917
  &:has(*:is(select[aria-hidden=true]:last-child)) {
11775
11918
  &>[data-slot=select-trigger]:last-of-type {
@@ -12075,6 +12218,14 @@
12075
12218
  color: var(--color-fg-caption-placeholder);
12076
12219
  }
12077
12220
  }
12221
+ .group-data-\[size\=lg\]\/editorial-card\:\[\&\>svg\]\:size-5 {
12222
+ &:is(:where(.group\/editorial-card)[data-size="lg"] *) {
12223
+ &>svg {
12224
+ width: calc(var(--spacing) * 5);
12225
+ height: calc(var(--spacing) * 5);
12226
+ }
12227
+ }
12228
+ }
12078
12229
  .group-data-\[size\=lg\]\/editorial-card\:\[\&\>svg\]\:size-8 {
12079
12230
  &:is(:where(.group\/editorial-card)[data-size="lg"] *) {
12080
12231
  &>svg {
@@ -12099,6 +12250,14 @@
12099
12250
  }
12100
12251
  }
12101
12252
  }
12253
+ .group-data-\[size\=md\]\/editorial-card\:\[\&\>svg\]\:size-4\.5 {
12254
+ &:is(:where(.group\/editorial-card)[data-size="md"] *) {
12255
+ &>svg {
12256
+ width: calc(var(--spacing) * 4.5);
12257
+ height: calc(var(--spacing) * 4.5);
12258
+ }
12259
+ }
12260
+ }
12102
12261
  .group-data-\[size\=md\]\/editorial-card\:\[\&\>svg\]\:size-7 {
12103
12262
  &:is(:where(.group\/editorial-card)[data-size="md"] *) {
12104
12263
  &>svg {
package/dist/tag.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use client";
2
+ import { X } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { useComponentSize } from "./size-context.js";
4
- import { X } from "lucide-react";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  import { cva } from "class-variance-authority";
7
7
  //#region src/tag.tsx
@@ -1,8 +1,8 @@
1
1
  "use client";
2
+ import { ArrowUpRight, Play, Star } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { Avatar, AvatarFallback, AvatarImage } from "./avatar.js";
4
5
  import { buttonVariants } from "./button.js";
5
- import { ArrowUpRight, Play, Star } from "lucide-react";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
7
  import { mergeProps } from "@base-ui/react/merge-props";
8
8
  import { useRender } from "@base-ui/react/use-render";
@@ -0,0 +1,31 @@
1
+ import { DropdownMenuTrigger } from "./dropdown-menu.js";
2
+ import { VariantProps } from "class-variance-authority";
3
+ import * as React from "react";
4
+ //#region src/theme-switcher.d.ts
5
+ type ThemeSwitcherValue = "light" | "dark" | "system";
6
+ type ThemeSwitcherOption = {
7
+ value: ThemeSwitcherValue;
8
+ label: string;
9
+ icon?: React.ReactNode;
10
+ };
11
+ declare const themeSwitcherVariants: (props?: ({
12
+ size?: "lg" | "md" | "sm" | null | undefined;
13
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
14
+ declare const defaultThemeSwitcherOptions: readonly ThemeSwitcherOption[];
15
+ type ThemeSwitcherProps = Omit<React.ComponentProps<typeof DropdownMenuTrigger>, "children"> & VariantProps<typeof themeSwitcherVariants> & {
16
+ /** The selected theme. Pass this with `onValueChange` for controlled use. */
17
+ value?: ThemeSwitcherValue;
18
+ /** The initial theme when the switcher is uncontrolled. */
19
+ defaultValue?: ThemeSwitcherValue;
20
+ /** Called when a theme is selected. Applying the theme remains app-owned. */
21
+ onValueChange?: (value: ThemeSwitcherValue) => void;
22
+ /** Available modes, in menu order. Defaults to Light, Dark, and System. */
23
+ options?: readonly ThemeSwitcherOption[];
24
+ showIcon?: boolean;
25
+ showLabel?: boolean;
26
+ /** Accessible label used when the visible theme label is hidden. */
27
+ "aria-label"?: string;
28
+ };
29
+ declare function ThemeSwitcher({ className, size, value, defaultValue, onValueChange, options, showIcon, showLabel, "aria-label": ariaLabel, ...props }: ThemeSwitcherProps): React.JSX.Element;
30
+ //#endregion
31
+ export { ThemeSwitcher, type ThemeSwitcherOption, type ThemeSwitcherProps, type ThemeSwitcherValue, defaultThemeSwitcherOptions, themeSwitcherVariants };
@@ -0,0 +1,78 @@
1
+ "use client";
2
+ import { ChevronDown, Monitor, Moon, Sun } from "./icons.js";
3
+ import { t as cn } from "./cn-BI_4DMBf.js";
4
+ import { useComponentSize } from "./size-context.js";
5
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger } from "./dropdown-menu.js";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { cva } from "class-variance-authority";
8
+ import * as React from "react";
9
+ //#region src/theme-switcher.tsx
10
+ const themeSwitcherVariants = cva("group/theme-switcher inline-flex shrink-0 items-center justify-center rounded-full bg-action-tertiary font-bold text-fg-primary outline-none transition-[background-color,box-shadow,scale] duration-(--duration-motion-press) ease-gdt-out hover:bg-action-tertiary-hover active:scale-[0.97] active:bg-action-tertiary-pressed focus-visible:shadow-[0_0_0_2px_var(--color-line-focus)] data-popup-open:bg-action-tertiary-pressed motion-reduce:active:scale-100 [&_svg]:shrink-0", {
11
+ variants: { size: {
12
+ sm: "h-8 gap-1.5 px-3 text-gdt-xs [&_svg]:size-3.5",
13
+ md: "h-10 gap-2 px-3.5 text-gdt-sm [&_svg]:size-4",
14
+ lg: "h-12 gap-2.5 px-4.5 text-gdt-md [&_svg]:size-4.5"
15
+ } },
16
+ defaultVariants: { size: "md" }
17
+ });
18
+ const defaultThemeSwitcherOptions = [
19
+ {
20
+ value: "light",
21
+ label: "Light",
22
+ icon: /* @__PURE__ */ jsx(Sun, { "aria-hidden": "true" })
23
+ },
24
+ {
25
+ value: "dark",
26
+ label: "Dark",
27
+ icon: /* @__PURE__ */ jsx(Moon, { "aria-hidden": "true" })
28
+ },
29
+ {
30
+ value: "system",
31
+ label: "System",
32
+ icon: /* @__PURE__ */ jsx(Monitor, { "aria-hidden": "true" })
33
+ }
34
+ ];
35
+ function ThemeSwitcher({ className, size, value, defaultValue = "system", onValueChange, options = defaultThemeSwitcherOptions, showIcon = true, showLabel = true, "aria-label": ariaLabel, ...props }) {
36
+ const resolvedSize = useComponentSize(size);
37
+ const resolvedOptions = options.length ? options : defaultThemeSwitcherOptions;
38
+ const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);
39
+ const requestedValue = value ?? uncontrolledValue;
40
+ const selectedTheme = resolvedOptions.find((option) => option.value === requestedValue) ?? resolvedOptions[0];
41
+ const selectedValue = selectedTheme.value;
42
+ function handleValueChange(nextValue) {
43
+ const nextTheme = nextValue;
44
+ if (value === void 0) setUncontrolledValue(nextTheme);
45
+ onValueChange?.(nextTheme);
46
+ }
47
+ return /* @__PURE__ */ jsxs(DropdownMenu, {
48
+ size: resolvedSize,
49
+ children: [/* @__PURE__ */ jsxs(DropdownMenuTrigger, {
50
+ "data-slot": "theme-switcher",
51
+ className: cn(themeSwitcherVariants({ size: resolvedSize }), className),
52
+ "aria-label": ariaLabel ?? (!showLabel ? `Theme: ${selectedTheme.label}` : void 0),
53
+ ...props,
54
+ children: [
55
+ showIcon && selectedTheme.icon,
56
+ showLabel && /* @__PURE__ */ jsx("span", { children: selectedTheme.label }),
57
+ /* @__PURE__ */ jsx(ChevronDown, {
58
+ "aria-hidden": "true",
59
+ className: "text-fg-secondary transition-transform duration-(--duration-motion-popup) group-data-[popup-open]/theme-switcher:rotate-180 motion-reduce:transition-none"
60
+ })
61
+ ]
62
+ }), /* @__PURE__ */ jsx(DropdownMenuContent, {
63
+ align: "end",
64
+ className: "w-auto min-w-36",
65
+ children: /* @__PURE__ */ jsx(DropdownMenuRadioGroup, {
66
+ value: selectedValue,
67
+ onValueChange: handleValueChange,
68
+ children: resolvedOptions.map(({ value: optionValue, label, icon }) => /* @__PURE__ */ jsxs(DropdownMenuRadioItem, {
69
+ value: optionValue,
70
+ closeOnClick: true,
71
+ children: [icon, label]
72
+ }, optionValue))
73
+ })
74
+ })]
75
+ });
76
+ }
77
+ //#endregion
78
+ export { ThemeSwitcher, defaultThemeSwitcherOptions, themeSwitcherVariants };
@@ -1,9 +1,9 @@
1
1
  "use client";
2
+ import { Clock } from "./icons.js";
2
3
  import { t as cn } from "./cn-BI_4DMBf.js";
3
4
  import { t as useReducedMotion } from "./use-reduced-motion-BDvOK14x.js";
4
5
  import { Popover, PopoverContent } from "./popover.js";
5
6
  import { n as PickerFooter, r as PickerTrigger, t as PICKER_COLLISION_AVOIDANCE } from "./picker-xSTzeYhc.js";
6
- import { ClockIcon } from "lucide-react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  import * as React from "react";
9
9
  //#region src/lib/time-picker-paint.ts
@@ -264,7 +264,7 @@ function TimePicker({ value, onChange, format = "12h", disabled = false, size, p
264
264
  open,
265
265
  onOpenChange: handleOpenChange,
266
266
  children: [/* @__PURE__ */ jsx(PickerTrigger, {
267
- icon: ClockIcon,
267
+ icon: Clock,
268
268
  displayValue: value ?? "",
269
269
  placeholder,
270
270
  disabled,
package/dist/toast.d.ts CHANGED
@@ -1,21 +1,49 @@
1
- import { PropsWithChildren } from "react";
2
- import { ToastManagerAddOptions, ToastManagerUpdateOptions } from "@base-ui/react/toast";
1
+ import { PropsWithChildren, ReactNode } from "react";
2
+ import { ToastManagerAddOptions, ToastManagerUpdateOptions, ToastObject } from "@base-ui/react/toast";
3
3
  //#region src/toast.d.ts
4
4
  type ToastVariant = "success" | "info" | "warning" | "error" | "loading";
5
+ type ToastRenderProps = {
6
+ /** The live toast object, including `id`, `title`, and `description`. */
7
+ toast: ToastObject<ToastData>;
8
+ /** Dismisses this toast, playing the usual exit transition. */
9
+ close: () => void;
10
+ };
5
11
  type ToastData = {
6
- type: ToastVariant;
12
+ type?: ToastVariant;
13
+ render?: (props: ToastRenderProps) => ReactNode;
14
+ className?: string;
15
+ };
16
+ /**
17
+ * Options for `toast.add`. `render` and `className` are lifted to the top level
18
+ * for convenience and stored on the toast's `data` under the hood.
19
+ */
20
+ type ToastAddOptions = Omit<ToastManagerAddOptions<ToastData>, "data"> & {
21
+ /**
22
+ * Replaces the default icon/title/description layout with your own markup.
23
+ * The toast keeps its stacking, swipe, and timeout behavior.
24
+ */
25
+ render?: (props: ToastRenderProps) => ReactNode;
26
+ /** Merged into the toast surface classes — restyle padding, width, colors. */
27
+ className?: string;
28
+ data?: ToastData;
7
29
  };
8
30
  declare const toastManager: import("@base-ui/react").ToastManager<any>;
9
- declare const toast: ((options: ToastManagerAddOptions<ToastData>) => string) & {
10
- success: (options: ToastManagerAddOptions<ToastData>) => string;
11
- info: (options: ToastManagerAddOptions<ToastData>) => string;
12
- warning: (options: ToastManagerAddOptions<ToastData>) => string;
13
- error: (options: ToastManagerAddOptions<ToastData>) => string;
14
- loading: (options: ToastManagerAddOptions<ToastData>) => string;
31
+ declare function addToast({ render, className, data, ...options }: ToastAddOptions): string;
32
+ declare const toast: ((options: ToastAddOptions) => string) & {
33
+ /**
34
+ * Adds a toast without a preset variant. Pass `render` to take over the
35
+ * toast body entirely, or just `title`/`description` for the stock layout.
36
+ */
37
+ add: typeof addToast;
38
+ success: ({ data, ...options }: ToastAddOptions) => string;
39
+ info: ({ data, ...options }: ToastAddOptions) => string;
40
+ warning: ({ data, ...options }: ToastAddOptions) => string;
41
+ error: ({ data, ...options }: ToastAddOptions) => string;
42
+ loading: ({ data, ...options }: ToastAddOptions) => string;
15
43
  dismiss: (toastId?: string | number) => void;
16
44
  update: (toastId: string | number, options: ToastManagerUpdateOptions<ToastData>) => void;
17
45
  promise: <Value, T extends any = any>(promiseValue: Promise<Value>, options: import("@base-ui/react").ToastManagerPromiseOptions<Value, T>) => Promise<Value>;
18
46
  };
19
47
  declare function ToastProvider({ children }: PropsWithChildren): import("react").JSX.Element;
20
48
  //#endregion
21
- export { ToastProvider, toast, toastManager };
49
+ export { type ToastAddOptions, type ToastData, ToastProvider, type ToastRenderProps, type ToastVariant, toast, toastManager };