@duskmoon-dev/components 0.3.3 → 0.4.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 (82) hide show
  1. package/README.md +61 -2
  2. package/dist/classes/chat.d.ts +9 -1
  3. package/dist/classes/console-page.d.ts +16 -0
  4. package/dist/classes/dropdown.d.ts +5 -5
  5. package/dist/classes/fab.d.ts +11 -0
  6. package/dist/classes/index.d.ts +5 -0
  7. package/dist/classes/index.js +180 -34
  8. package/dist/classes/megamenu.d.ts +10 -0
  9. package/dist/classes/otp-input.d.ts +12 -0
  10. package/dist/classes/popover.d.ts +1 -3
  11. package/dist/classes/swap.d.ts +12 -0
  12. package/dist/classes/tree-select.d.ts +6 -6
  13. package/dist/components/app/index.js +128 -68
  14. package/dist/components/avatar/Avatar.types.d.ts +1 -1
  15. package/dist/components/avatar/index.js +2 -1
  16. package/dist/components/badge/index.js +1 -1
  17. package/dist/components/button/Button.d.ts +1 -1
  18. package/dist/components/button/Button.types.d.ts +8 -0
  19. package/dist/components/button/index.js +253 -24
  20. package/dist/components/calendar/index.js +44 -19
  21. package/dist/components/chat/Chat.d.ts +9 -1
  22. package/dist/components/chat/Chat.types.d.ts +26 -0
  23. package/dist/components/chat/index.js +92 -3
  24. package/dist/components/color-picker/ColorPicker.types.d.ts +2 -1
  25. package/dist/components/color-picker/index.js +206 -9
  26. package/dist/components/console-page/ConsolePage.d.ts +2 -0
  27. package/dist/components/console-page/ConsolePage.types.d.ts +29 -0
  28. package/dist/components/console-page/index.d.ts +2 -0
  29. package/dist/components/console-page/index.js +205 -0
  30. package/dist/components/date-picker/DatePicker.types.d.ts +1 -0
  31. package/dist/components/date-picker/index.js +537 -35
  32. package/dist/components/date-picker/usePickerDropdown.d.ts +17 -0
  33. package/dist/components/dm-date-picker/index.js +545 -43
  34. package/dist/components/dm-drawer/index.js +253 -24
  35. package/dist/components/dm-layout/index.js +391 -24
  36. package/dist/components/dm-menu/index.js +380 -13
  37. package/dist/components/dm-page-header/index.js +404 -114
  38. package/dist/components/dm-pro-table/index.js +1183 -368
  39. package/dist/components/dm-query/DmQuery.types.d.ts +1 -1
  40. package/dist/components/dm-query/index.js +931 -188
  41. package/dist/components/dm-search/DmSearch.types.d.ts +4 -0
  42. package/dist/components/dm-search/index.js +917 -163
  43. package/dist/components/dm-table/index.js +1001 -247
  44. package/dist/components/dm-toolbar/index.js +400 -110
  45. package/dist/components/dm-truncate/index.js +115 -35
  46. package/dist/components/dropdown/Dropdown.types.d.ts +1 -1
  47. package/dist/components/dropdown/index.js +400 -110
  48. package/dist/components/fab/Fab.d.ts +4 -0
  49. package/dist/components/fab/Fab.types.d.ts +25 -0
  50. package/dist/components/fab/index.d.ts +2 -0
  51. package/dist/components/fab/index.js +480 -0
  52. package/dist/components/form/Form.types.d.ts +1 -0
  53. package/dist/components/form/index.js +14 -3
  54. package/dist/components/megamenu/Megamenu.d.ts +2 -0
  55. package/dist/components/megamenu/Megamenu.types.d.ts +32 -0
  56. package/dist/components/megamenu/index.d.ts +2 -0
  57. package/dist/components/megamenu/index.js +214 -0
  58. package/dist/components/modal/index.js +128 -68
  59. package/dist/components/otp-input/OtpInput.d.ts +2 -0
  60. package/dist/components/otp-input/OtpInput.types.d.ts +16 -0
  61. package/dist/components/otp-input/index.d.ts +2 -0
  62. package/dist/components/otp-input/index.js +112 -0
  63. package/dist/components/popconfirm/index.js +255 -26
  64. package/dist/components/popover/index.js +24 -4
  65. package/dist/components/swap/Swap.d.ts +3 -0
  66. package/dist/components/swap/Swap.types.d.ts +22 -0
  67. package/dist/components/swap/index.d.ts +2 -0
  68. package/dist/components/swap/index.js +109 -0
  69. package/dist/components/time-picker/TimePicker.types.d.ts +1 -0
  70. package/dist/components/time-picker/index.js +167 -29
  71. package/dist/components/tooltip/Tooltip.types.d.ts +4 -0
  72. package/dist/components/tooltip/index.js +107 -27
  73. package/dist/components/tour/index.js +253 -24
  74. package/dist/components/tree-select/index.js +8 -8
  75. package/dist/components/upload/Upload.types.d.ts +1 -0
  76. package/dist/components/upload/index.js +2 -0
  77. package/dist/generated/version.d.ts +1 -1
  78. package/dist/index.d.ts +5 -0
  79. package/dist/index.js +3330 -1632
  80. package/dist/infrastructure.js +1 -1
  81. package/dist/styles.css +1190 -906
  82. package/package.json +23 -3
package/dist/styles.css CHANGED
@@ -483,68 +483,68 @@ html {
483
483
  --theme-mode: "light";
484
484
  --theme-family: "duskmoon";
485
485
  --theme-pair: "moonlight";
486
- --theme-description: "Warm amber/coral";
487
- --color-primary: oklch(52% 0.17 75);
488
- --color-primary-content: oklch(100% 0 0);
489
- --color-primary-container: oklch(95% 0.035 95.91);
490
- --color-on-primary-container: oklch(25% 0.03 95.91);
491
- --color-secondary: oklch(55% 0.19 20);
492
- --color-secondary-content: oklch(100% 0 0);
493
- --color-secondary-container: oklch(94% 0.05 87.01);
494
- --color-on-secondary-container: oklch(25% 0.05 87.01);
495
- --color-tertiary: oklch(52% 0.085 235);
496
- --color-tertiary-content: oklch(100% 0 0);
497
- --color-tertiary-container: oklch(95% 0.035 235);
498
- --color-on-tertiary-container: oklch(22% 0.012 235);
499
- --color-accent: oklch(52% 0.14 327);
500
- --color-accent-content: oklch(100% 0 0);
501
- --color-neutral: oklch(0% 0 0);
502
- --color-neutral-content: oklch(80% 0.015 50);
503
- --color-neutral-variant: oklch(50% 0.02 260);
504
- --color-surface: oklch(100% 0 0);
505
- --color-surface-dim: oklch(96% 0.01 85);
506
- --color-surface-bright: oklch(100% 0 0);
507
- --color-surface-container-lowest: oklch(100% 0 0);
508
- --color-surface-container-low: oklch(99% 0.01 85);
509
- --color-surface-container: oklch(97% 0.01 85);
510
- --color-surface-container-high: oklch(96% 0.01 85);
511
- --color-surface-container-highest: oklch(94% 0.01 85);
512
- --color-surface-variant: oklch(94% 0.02 85);
513
- --color-on-surface: oklch(27% 0.02 260);
514
- --color-on-surface-variant: oklch(50% 0.02 260);
515
- --color-base-100: oklch(100% 0.005 255);
516
- --color-base-200: oklch(95% 0.008 255);
517
- --color-base-300: oklch(90% 0.01 255);
518
- --color-base-400: oklch(55% 0.06 255);
519
- --color-base-500: oklch(45% 0.05 255);
520
- --color-base-600: oklch(35% 0.04 255);
521
- --color-base-700: oklch(25% 0.03 255);
522
- --color-base-800: oklch(18% 0.02 255);
523
- --color-base-900: oklch(12% 0.01 255);
524
- --color-base-content: oklch(10% 0 255);
525
- --color-outline: oklch(75% 0.01 260);
526
- --color-outline-variant: oklch(85% 0.01 260);
527
- --color-inverse-surface: oklch(25% 0.02 260);
528
- --color-inverse-on-surface: oklch(95% 0.01 260);
529
- --color-inverse-primary: oklch(80% 0.14 55);
530
- --color-shadow: oklch(0% 0 0);
531
- --color-scrim: oklch(0% 0 0 / 50%);
532
- --color-info: oklch(41.94% 0.114 254.39);
533
- --color-info-content: oklch(91.94% 0.114 254.39);
534
- --color-info-container: oklch(95% 0.03 235);
535
- --color-on-info-container: oklch(35% 0.08 235);
536
- --color-success: oklch(50% 0.19 133.55);
537
- --color-success-content: oklch(100% 0 0);
538
- --color-success-container: oklch(93% 0.04 150);
539
- --color-on-success-container: oklch(30% 0.08 150);
540
- --color-warning: oklch(52% 0.203 42.44);
541
- --color-warning-content: oklch(100% 0 0);
542
- --color-warning-container: oklch(93% 0.05 80);
543
- --color-on-warning-container: oklch(38% 0.10 80);
544
- --color-error: oklch(52% 0.237 28.15);
545
- --color-error-content: oklch(100% 0 0);
546
- --color-error-container: oklch(93% 0.04 25);
547
- --color-on-error-container: oklch(32% 0.10 25);
486
+ --theme-description: "Sunlit ivory with golden amber, muted lavender and sky blue";
487
+ --color-primary: oklch(82.60893044% 0.1414340166 83.31858015);
488
+ --color-primary-content: oklch(28.28953512% 0.0448991160 80.63639668);
489
+ --color-primary-container: oklch(95.57475591% 0.0614713639 92.12872653);
490
+ --color-on-primary-container: oklch(38.72869883% 0.0701556434 81.75114485);
491
+ --color-secondary: oklch(75.54657159% 0.0738680191 298.09280514);
492
+ --color-secondary-content: oklch(30.09347875% 0.0578718110 298.71400821);
493
+ --color-secondary-container: oklch(94.77129416% 0.0180917690 303.41223942);
494
+ --color-on-secondary-container: oklch(37.75435631% 0.0773343740 301.23088405);
495
+ --color-tertiary: oklch(76.94385339% 0.0640284924 221.04480848);
496
+ --color-tertiary-content: oklch(30.82709477% 0.0391899830 225.86055898);
497
+ --color-tertiary-container: oklch(95.11671506% 0.0167909766 215.45868624);
498
+ --color-on-tertiary-container: oklch(37.64053450% 0.0461503944 221.94991006);
499
+ --color-accent: oklch(90.26749798% 0.1105427306 93.87593258);
500
+ --color-accent-content: oklch(35.60101539% 0.0588941318 87.79310558);
501
+ --color-neutral: oklch(34.78392925% 0.0173048639 78.03949200);
502
+ --color-neutral-content: oklch(98.35030566% 0.0170577608 84.58657624);
503
+ --color-neutral-variant: oklch(48.47267982% 0.0259043741 73.78871657);
504
+ --color-surface: oklch(99.14473089% 0.0097633072 87.46952653);
505
+ --color-surface-dim: oklch(93.02387608% 0.0258398160 84.59321482);
506
+ --color-surface-bright: oklch(99.99999935% 0 0);
507
+ --color-surface-container-lowest: oklch(99.99999935% 0 0);
508
+ --color-surface-container-low: oklch(97.37543141% 0.0167153184 87.99753171);
509
+ --color-surface-container: oklch(95.32878442% 0.0224695782 87.15156842);
510
+ --color-surface-container-high: oklch(93.02387608% 0.0258398160 84.59321482);
511
+ --color-surface-container-highest: oklch(90.04844636% 0.0317371513 84.59011110);
512
+ --color-surface-variant: oklch(90.04844636% 0.0317371513 84.59011110);
513
+ --color-on-surface: oklch(28.54323950% 0.0202535180 76.57676498);
514
+ --color-on-surface-variant: oklch(48.47267982% 0.0259043741 73.78871657);
515
+ --color-base-100: oklch(99.14473089% 0.0097633072 87.46952653);
516
+ --color-base-200: oklch(97.37543141% 0.0167153184 87.99753171);
517
+ --color-base-300: oklch(93.02387608% 0.0258398160 84.59321482);
518
+ --color-base-400: oklch(55.01199157% 0.0351909086 74.88191474);
519
+ --color-base-500: oklch(44.93783706% 0.0295877832 74.85638734);
520
+ --color-base-600: oklch(35.00292970% 0.0249407737 76.85509951);
521
+ --color-base-700: oklch(24.86662243% 0.0194041154 73.70277146);
522
+ --color-base-800: oklch(18.07521115% 0.0118517040 73.14319887);
523
+ --color-base-900: oklch(11.73198826% 0.0090103504 73.47505765);
524
+ --color-base-content: oklch(28.54323950% 0.0202535180 76.57676498);
525
+ --color-outline: oklch(57.87187705% 0.0396997009 75.20078373);
526
+ --color-outline-variant: oklch(85.83658493% 0.0325359084 82.75783875);
527
+ --color-inverse-surface: oklch(28.54323950% 0.0202535180 76.57676498);
528
+ --color-inverse-on-surface: oklch(98.35030566% 0.0170577608 84.58657624);
529
+ --color-inverse-primary: oklch(90.26749798% 0.1105427306 93.87593258);
530
+ --color-shadow: oklch(0.00000000% 0 0);
531
+ --color-scrim: oklch(0.00000000% 0 0 / 50%);
532
+ --color-info: oklch(50.82237171% 0.0901951310 235.77699072);
533
+ --color-info-content: oklch(99.99999935% 0 0);
534
+ --color-info-container: oklch(95.09147873% 0.0151283794 228.96415080);
535
+ --color-on-info-container: oklch(39.58659448% 0.0609008792 232.98919080);
536
+ --color-success: oklch(52.17594416% 0.0995342775 154.56738341);
537
+ --color-success-content: oklch(99.99999935% 0 0);
538
+ --color-success-container: oklch(94.93242285% 0.0208030926 140.89790892);
539
+ --color-on-success-container: oklch(39.51234051% 0.0596350615 156.43156459);
540
+ --color-warning: oklch(55.13077016% 0.1354192110 53.04846323);
541
+ --color-warning-content: oklch(99.99999935% 0 0);
542
+ --color-warning-container: oklch(94.03448323% 0.0406430766 74.46372929);
543
+ --color-on-warning-container: oklch(40.76011391% 0.0954501128 54.71444706);
544
+ --color-error: oklch(54.21677601% 0.1543098528 27.29045200);
545
+ --color-error-content: oklch(99.99999935% 0 0);
546
+ --color-error-container: oklch(93.88397486% 0.0266133029 34.97748526);
547
+ --color-on-error-container: oklch(38.73080591% 0.0993593486 27.58854513);
548
548
 
549
549
  --radius-selector: 0.25rem;
550
550
  --radius-field: 0.625rem;
@@ -648,68 +648,68 @@ html {
648
648
  --theme-mode: "light";
649
649
  --theme-family: "duskmoon";
650
650
  --theme-pair: "moonlight";
651
- --theme-description: "Warm amber/coral";
652
- --color-primary: oklch(52% 0.17 75);
653
- --color-primary-content: oklch(100% 0 0);
654
- --color-primary-container: oklch(95% 0.035 95.91);
655
- --color-on-primary-container: oklch(25% 0.03 95.91);
656
- --color-secondary: oklch(55% 0.19 20);
657
- --color-secondary-content: oklch(100% 0 0);
658
- --color-secondary-container: oklch(94% 0.05 87.01);
659
- --color-on-secondary-container: oklch(25% 0.05 87.01);
660
- --color-tertiary: oklch(52% 0.085 235);
661
- --color-tertiary-content: oklch(100% 0 0);
662
- --color-tertiary-container: oklch(95% 0.035 235);
663
- --color-on-tertiary-container: oklch(22% 0.012 235);
664
- --color-accent: oklch(52% 0.14 327);
665
- --color-accent-content: oklch(100% 0 0);
666
- --color-neutral: oklch(0% 0 0);
667
- --color-neutral-content: oklch(80% 0.015 50);
668
- --color-neutral-variant: oklch(50% 0.02 260);
669
- --color-surface: oklch(100% 0 0);
670
- --color-surface-dim: oklch(96% 0.01 85);
671
- --color-surface-bright: oklch(100% 0 0);
672
- --color-surface-container-lowest: oklch(100% 0 0);
673
- --color-surface-container-low: oklch(99% 0.01 85);
674
- --color-surface-container: oklch(97% 0.01 85);
675
- --color-surface-container-high: oklch(96% 0.01 85);
676
- --color-surface-container-highest: oklch(94% 0.01 85);
677
- --color-surface-variant: oklch(94% 0.02 85);
678
- --color-on-surface: oklch(27% 0.02 260);
679
- --color-on-surface-variant: oklch(50% 0.02 260);
680
- --color-base-100: oklch(100% 0.005 255);
681
- --color-base-200: oklch(95% 0.008 255);
682
- --color-base-300: oklch(90% 0.01 255);
683
- --color-base-400: oklch(55% 0.06 255);
684
- --color-base-500: oklch(45% 0.05 255);
685
- --color-base-600: oklch(35% 0.04 255);
686
- --color-base-700: oklch(25% 0.03 255);
687
- --color-base-800: oklch(18% 0.02 255);
688
- --color-base-900: oklch(12% 0.01 255);
689
- --color-base-content: oklch(10% 0 255);
690
- --color-outline: oklch(75% 0.01 260);
691
- --color-outline-variant: oklch(85% 0.01 260);
692
- --color-inverse-surface: oklch(25% 0.02 260);
693
- --color-inverse-on-surface: oklch(95% 0.01 260);
694
- --color-inverse-primary: oklch(80% 0.14 55);
695
- --color-shadow: oklch(0% 0 0);
696
- --color-scrim: oklch(0% 0 0 / 50%);
697
- --color-info: oklch(41.94% 0.114 254.39);
698
- --color-info-content: oklch(91.94% 0.114 254.39);
699
- --color-info-container: oklch(95% 0.03 235);
700
- --color-on-info-container: oklch(35% 0.08 235);
701
- --color-success: oklch(50% 0.19 133.55);
702
- --color-success-content: oklch(100% 0 0);
703
- --color-success-container: oklch(93% 0.04 150);
704
- --color-on-success-container: oklch(30% 0.08 150);
705
- --color-warning: oklch(52% 0.203 42.44);
706
- --color-warning-content: oklch(100% 0 0);
707
- --color-warning-container: oklch(93% 0.05 80);
708
- --color-on-warning-container: oklch(38% 0.10 80);
709
- --color-error: oklch(52% 0.237 28.15);
710
- --color-error-content: oklch(100% 0 0);
711
- --color-error-container: oklch(93% 0.04 25);
712
- --color-on-error-container: oklch(32% 0.10 25);
651
+ --theme-description: "Sunlit ivory with golden amber, muted lavender and sky blue";
652
+ --color-primary: oklch(82.60893044% 0.1414340166 83.31858015);
653
+ --color-primary-content: oklch(28.28953512% 0.0448991160 80.63639668);
654
+ --color-primary-container: oklch(95.57475591% 0.0614713639 92.12872653);
655
+ --color-on-primary-container: oklch(38.72869883% 0.0701556434 81.75114485);
656
+ --color-secondary: oklch(75.54657159% 0.0738680191 298.09280514);
657
+ --color-secondary-content: oklch(30.09347875% 0.0578718110 298.71400821);
658
+ --color-secondary-container: oklch(94.77129416% 0.0180917690 303.41223942);
659
+ --color-on-secondary-container: oklch(37.75435631% 0.0773343740 301.23088405);
660
+ --color-tertiary: oklch(76.94385339% 0.0640284924 221.04480848);
661
+ --color-tertiary-content: oklch(30.82709477% 0.0391899830 225.86055898);
662
+ --color-tertiary-container: oklch(95.11671506% 0.0167909766 215.45868624);
663
+ --color-on-tertiary-container: oklch(37.64053450% 0.0461503944 221.94991006);
664
+ --color-accent: oklch(90.26749798% 0.1105427306 93.87593258);
665
+ --color-accent-content: oklch(35.60101539% 0.0588941318 87.79310558);
666
+ --color-neutral: oklch(34.78392925% 0.0173048639 78.03949200);
667
+ --color-neutral-content: oklch(98.35030566% 0.0170577608 84.58657624);
668
+ --color-neutral-variant: oklch(48.47267982% 0.0259043741 73.78871657);
669
+ --color-surface: oklch(99.14473089% 0.0097633072 87.46952653);
670
+ --color-surface-dim: oklch(93.02387608% 0.0258398160 84.59321482);
671
+ --color-surface-bright: oklch(99.99999935% 0 0);
672
+ --color-surface-container-lowest: oklch(99.99999935% 0 0);
673
+ --color-surface-container-low: oklch(97.37543141% 0.0167153184 87.99753171);
674
+ --color-surface-container: oklch(95.32878442% 0.0224695782 87.15156842);
675
+ --color-surface-container-high: oklch(93.02387608% 0.0258398160 84.59321482);
676
+ --color-surface-container-highest: oklch(90.04844636% 0.0317371513 84.59011110);
677
+ --color-surface-variant: oklch(90.04844636% 0.0317371513 84.59011110);
678
+ --color-on-surface: oklch(28.54323950% 0.0202535180 76.57676498);
679
+ --color-on-surface-variant: oklch(48.47267982% 0.0259043741 73.78871657);
680
+ --color-base-100: oklch(99.14473089% 0.0097633072 87.46952653);
681
+ --color-base-200: oklch(97.37543141% 0.0167153184 87.99753171);
682
+ --color-base-300: oklch(93.02387608% 0.0258398160 84.59321482);
683
+ --color-base-400: oklch(55.01199157% 0.0351909086 74.88191474);
684
+ --color-base-500: oklch(44.93783706% 0.0295877832 74.85638734);
685
+ --color-base-600: oklch(35.00292970% 0.0249407737 76.85509951);
686
+ --color-base-700: oklch(24.86662243% 0.0194041154 73.70277146);
687
+ --color-base-800: oklch(18.07521115% 0.0118517040 73.14319887);
688
+ --color-base-900: oklch(11.73198826% 0.0090103504 73.47505765);
689
+ --color-base-content: oklch(28.54323950% 0.0202535180 76.57676498);
690
+ --color-outline: oklch(57.87187705% 0.0396997009 75.20078373);
691
+ --color-outline-variant: oklch(85.83658493% 0.0325359084 82.75783875);
692
+ --color-inverse-surface: oklch(28.54323950% 0.0202535180 76.57676498);
693
+ --color-inverse-on-surface: oklch(98.35030566% 0.0170577608 84.58657624);
694
+ --color-inverse-primary: oklch(90.26749798% 0.1105427306 93.87593258);
695
+ --color-shadow: oklch(0.00000000% 0 0);
696
+ --color-scrim: oklch(0.00000000% 0 0 / 50%);
697
+ --color-info: oklch(50.82237171% 0.0901951310 235.77699072);
698
+ --color-info-content: oklch(99.99999935% 0 0);
699
+ --color-info-container: oklch(95.09147873% 0.0151283794 228.96415080);
700
+ --color-on-info-container: oklch(39.58659448% 0.0609008792 232.98919080);
701
+ --color-success: oklch(52.17594416% 0.0995342775 154.56738341);
702
+ --color-success-content: oklch(99.99999935% 0 0);
703
+ --color-success-container: oklch(94.93242285% 0.0208030926 140.89790892);
704
+ --color-on-success-container: oklch(39.51234051% 0.0596350615 156.43156459);
705
+ --color-warning: oklch(55.13077016% 0.1354192110 53.04846323);
706
+ --color-warning-content: oklch(99.99999935% 0 0);
707
+ --color-warning-container: oklch(94.03448323% 0.0406430766 74.46372929);
708
+ --color-on-warning-container: oklch(40.76011391% 0.0954501128 54.71444706);
709
+ --color-error: oklch(54.21677601% 0.1543098528 27.29045200);
710
+ --color-error-content: oklch(99.99999935% 0 0);
711
+ --color-error-container: oklch(93.88397486% 0.0266133029 34.97748526);
712
+ --color-on-error-container: oklch(38.73080591% 0.0993593486 27.58854513);
713
713
 
714
714
  --radius-selector: 0.25rem;
715
715
  --radius-field: 0.625rem;
@@ -2355,7 +2355,7 @@ html {
2355
2355
  .validator-hint { font-size: 0.75rem; color: var(--color-on-surface-variant); }
2356
2356
  .validator-error { display: none; font-size: 0.75rem; color: var(--color-error); }
2357
2357
  /* Keep OTP actions stationary when blur reveals an error during a click. */
2358
- .otp-code ~ .validator-error { display: block; visibility: hidden; }
2358
+ :is(.otp-code, .otp-input) ~ .validator-error { display: block; visibility: hidden; }
2359
2359
  :is(.form-group, .form-control):has(:is([aria-invalid="true"], .validator:user-invalid, .validate :invalid, .validate:invalid):not(:disabled)) > .validator-error,
2360
2360
  :is(.form-group-error, .form-control.error) > .validator-error { display: block; visibility: visible; }
2361
2361
 
@@ -4170,10 +4170,20 @@ html {
4170
4170
  }
4171
4171
  }
4172
4172
 
4173
- @supports (position-area: block-end) {
4173
+ @supports (position-area: block-end) and (anchor-scope: --dm-dropdown-trigger) {
4174
+ /* Keep the shared anchor name local to each dropdown, including nested ones. */
4175
+ .dropdown {
4176
+ anchor-scope: --dm-dropdown-trigger;
4177
+ }
4178
+
4179
+ .dropdown > [popovertarget] {
4180
+ anchor-name: --dm-dropdown-trigger;
4181
+ }
4182
+
4174
4183
  .dropdown > .dropdown-content[popover] {
4175
4184
  inset: auto;
4176
4185
  margin: 0.25rem;
4186
+ position-anchor: --dm-dropdown-trigger;
4177
4187
  position-area: block-end span-inline-end;
4178
4188
  position-try-fallbacks: flip-block, flip-inline, flip-block flip-inline;
4179
4189
  }
@@ -5368,33 +5378,39 @@ html {
5368
5378
  */
5369
5379
 
5370
5380
  @layer components {
5371
- /* Modal Container */
5372
- .modal {
5381
+ /* Native HTML dialog owns visibility and modal behavior. */
5382
+ dialog.modal {
5373
5383
  position: fixed;
5374
5384
  inset: 0;
5375
- z-index: 999;
5376
- display: flex;
5377
- align-items: center;
5378
- justify-content: center;
5379
- padding: 1rem;
5380
- visibility: hidden;
5385
+ margin: auto;
5386
+ padding: 0;
5387
+ border: none;
5388
+ width: calc(100% - 2rem);
5389
+ max-width: 32rem;
5390
+ max-height: calc(100dvh - 2rem);
5391
+ box-sizing: border-box;
5392
+ background-color: transparent;
5393
+ color: var(--color-on-surface);
5394
+ border-radius: var(--radius-lg);
5395
+ overflow: visible;
5381
5396
  opacity: 0;
5382
- transition: visibility 200ms ease-out, opacity 200ms ease-out;
5397
+ transition: opacity 200ms ease-out, display 200ms allow-discrete, overlay 200ms allow-discrete;
5383
5398
  }
5384
5399
 
5385
- /* Modal Open State */
5386
- .modal.modal-open,
5387
- .modal:target {
5388
- visibility: visible;
5400
+ dialog.modal[open] {
5389
5401
  opacity: 1;
5390
5402
  }
5391
5403
 
5404
+ dialog.modal:not([open]) {
5405
+ display: none;
5406
+ }
5407
+
5392
5408
  /* Modal Box */
5393
5409
  .modal-box {
5394
5410
  position: relative;
5395
- z-index: 1;
5396
- max-width: 32rem;
5397
- max-height: calc(100dvh - 5rem);
5411
+ width: 100%;
5412
+ box-sizing: border-box;
5413
+ max-height: calc(100dvh - 2rem);
5398
5414
  padding: 1.5rem;
5399
5415
  background-color: var(--color-surface);
5400
5416
  color: var(--color-on-surface);
@@ -5405,24 +5421,19 @@ html {
5405
5421
  transition: transform 200ms ease-out;
5406
5422
  }
5407
5423
 
5408
- .modal.modal-open .modal-box,
5409
- .modal:target .modal-box {
5424
+ dialog.modal[open] .modal-box {
5410
5425
  transform: scale(1);
5411
5426
  }
5412
5427
 
5413
- /* Modal Backdrop */
5414
- .modal-backdrop {
5415
- position: fixed;
5416
- inset: 0;
5417
- z-index: -1;
5428
+ /* The browser renders the backdrop in the top layer. */
5429
+ dialog.modal::backdrop {
5418
5430
  background-color: color-mix(in srgb, var(--color-scrim) 50%, transparent);
5419
- cursor: pointer;
5431
+ opacity: 0;
5432
+ transition: opacity 200ms ease-out, display 200ms allow-discrete, overlay 200ms allow-discrete;
5420
5433
  }
5421
5434
 
5422
- .modal-backdrop::before {
5423
- content: '';
5424
- position: absolute;
5425
- inset: 0;
5435
+ dialog.modal[open]::backdrop {
5436
+ opacity: 1;
5426
5437
  }
5427
5438
 
5428
5439
  /* Modal Action */
@@ -5436,61 +5447,47 @@ html {
5436
5447
  padding-top: 1rem;
5437
5448
  }
5438
5449
 
5439
- /* Modal Toggle (CSS-only) */
5440
- .modal-toggle {
5441
- position: fixed;
5442
- width: 0;
5443
- height: 0;
5444
- appearance: none;
5445
- opacity: 0;
5446
- }
5447
-
5448
- .modal-toggle:checked + .modal {
5449
- visibility: visible;
5450
- opacity: 1;
5451
- }
5452
-
5453
- .modal-toggle:checked + .modal .modal-box {
5454
- transform: scale(1);
5455
- }
5456
-
5457
5450
  /* Modal Sizes */
5458
- .modal-sm .modal-box {
5451
+ dialog.modal.modal-sm {
5459
5452
  max-width: 20rem;
5460
5453
  }
5461
5454
 
5462
- .modal-md .modal-box {
5455
+ dialog.modal.modal-md {
5463
5456
  max-width: 32rem;
5464
5457
  }
5465
5458
 
5466
- .modal-lg .modal-box {
5459
+ dialog.modal.modal-lg {
5467
5460
  max-width: 48rem;
5468
5461
  }
5469
5462
 
5470
- .modal-xl .modal-box {
5463
+ dialog.modal.modal-xl {
5471
5464
  max-width: 64rem;
5472
5465
  }
5473
5466
 
5474
- .modal-full .modal-box {
5467
+ dialog.modal.modal-full {
5475
5468
  max-width: calc(100vw - 2rem);
5476
- max-height: calc(100vh - 2rem);
5477
- width: 100%;
5469
+ max-height: calc(100dvh - 2rem);
5470
+ width: calc(100% - 2rem);
5471
+ height: calc(100dvh - 2rem);
5472
+ }
5473
+
5474
+ dialog.modal.modal-full .modal-box {
5478
5475
  height: 100%;
5479
5476
  }
5480
5477
 
5481
5478
  /* Modal Positions */
5482
- .modal-top {
5483
- align-items: flex-start;
5484
- padding-top: 2rem;
5479
+ dialog.modal.modal-top {
5480
+ margin-top: 2rem;
5481
+ margin-bottom: auto;
5485
5482
  }
5486
5483
 
5487
- .modal-bottom {
5488
- align-items: flex-end;
5489
- padding-bottom: 2rem;
5484
+ dialog.modal.modal-bottom {
5485
+ margin-top: auto;
5486
+ margin-bottom: 2rem;
5490
5487
  }
5491
5488
 
5492
- .modal-middle {
5493
- align-items: center;
5489
+ dialog.modal.modal-middle {
5490
+ margin: auto;
5494
5491
  }
5495
5492
 
5496
5493
  /* Animation Variants */
@@ -5506,22 +5503,21 @@ html {
5506
5503
  transform: scale(0.75);
5507
5504
  }
5508
5505
 
5509
- :is(.modal-slide-up, .modal-slide-down, .modal-zoom).modal-open .modal-box,
5510
- :is(.modal-slide-up, .modal-slide-down, .modal-zoom):target .modal-box {
5506
+ dialog.modal:is(.modal-slide-up, .modal-slide-down, .modal-zoom)[open] .modal-box {
5511
5507
  transform: translateY(0) scale(1);
5512
5508
  }
5513
5509
 
5514
5510
  /* Backdrop Variants */
5515
- .modal-backdrop-light {
5511
+ dialog.modal.modal-backdrop-light::backdrop {
5516
5512
  background-color: color-mix(in srgb, white 80%, transparent);
5517
5513
  }
5518
5514
 
5519
- .modal-backdrop-blur {
5515
+ dialog.modal.modal-backdrop-blur::backdrop {
5520
5516
  background-color: color-mix(in srgb, var(--color-scrim) 30%, transparent);
5521
5517
  backdrop-filter: blur(8px);
5522
5518
  }
5523
5519
 
5524
- .modal-no-backdrop {
5520
+ dialog.modal.modal-no-backdrop::backdrop {
5525
5521
  background-color: transparent;
5526
5522
  }
5527
5523
 
@@ -5591,55 +5587,50 @@ html {
5591
5587
 
5592
5588
  /* Responsive Modal */
5593
5589
  @media (max-width: 640px) {
5594
- .modal-box {
5595
- max-width: calc(100vw - 2rem);
5596
- margin: 1rem;
5597
- }
5598
-
5599
- .modal-responsive {
5600
- align-items: flex-end;
5601
- padding: 0;
5590
+ dialog.modal.modal-responsive {
5591
+ width: 100%;
5592
+ max-width: 100%;
5593
+ max-height: 90dvh;
5594
+ margin: auto 0 0;
5595
+ border-radius: var(--radius-lg) var(--radius-lg) 0 0;
5602
5596
  }
5603
5597
 
5604
5598
  .modal-responsive .modal-box {
5605
- max-width: 100%;
5606
5599
  max-height: 90dvh;
5607
- margin: 0;
5608
5600
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
5609
5601
  }
5610
5602
  }
5611
5603
 
5612
5604
  /* Drawer Modal */
5613
- .drawer-modal {
5614
- align-items: stretch;
5615
- justify-content: flex-end;
5616
- padding: 0;
5605
+ dialog.modal.drawer-modal {
5606
+ width: min(20rem, 100%);
5607
+ max-width: 20rem;
5608
+ max-height: 100dvh;
5609
+ height: 100dvh;
5610
+ margin: 0 0 0 auto;
5611
+ border-radius: 0;
5617
5612
  }
5618
5613
 
5619
5614
  .drawer-modal .modal-box {
5620
- max-width: 20rem;
5621
5615
  max-height: 100dvh;
5622
5616
  height: 100%;
5623
- margin: 0;
5624
5617
  border-radius: 0;
5625
5618
  transform: translateX(100%);
5626
5619
  }
5627
5620
 
5628
- .drawer-modal.modal-open .modal-box,
5629
- .drawer-modal:target .modal-box {
5621
+ dialog.modal.drawer-modal[open] .modal-box {
5630
5622
  transform: translateX(0);
5631
5623
  }
5632
5624
 
5633
- .drawer-modal-left {
5634
- justify-content: flex-start;
5625
+ dialog.modal.drawer-modal-left {
5626
+ margin: 0 auto 0 0;
5635
5627
  }
5636
5628
 
5637
5629
  .drawer-modal-left .modal-box {
5638
5630
  transform: translateX(-100%);
5639
5631
  }
5640
5632
 
5641
- .drawer-modal-left.modal-open .modal-box,
5642
- .drawer-modal-left:target .modal-box {
5633
+ dialog.modal.drawer-modal-left[open] .modal-box {
5643
5634
  transform: translateX(0);
5644
5635
  }
5645
5636
 
@@ -5648,7 +5639,7 @@ html {
5648
5639
  text-align: center;
5649
5640
  }
5650
5641
 
5651
- .alert-dialog .modal-box {
5642
+ dialog.modal.alert-dialog {
5652
5643
  max-width: 24rem;
5653
5644
  }
5654
5645
 
@@ -5687,32 +5678,45 @@ html {
5687
5678
  justify-content: center;
5688
5679
  }
5689
5680
 
5690
- /* Reduce Motion */
5691
- @media (prefers-reduced-motion: reduce) {
5692
- .modal {
5693
- transition: visibility 0ms, opacity 0ms;
5681
+ /* Entry styles retain motion without changing native visibility. */
5682
+ @starting-style {
5683
+ dialog.modal[open],
5684
+ dialog.modal[open]::backdrop {
5685
+ opacity: 0;
5694
5686
  }
5695
5687
 
5696
- .modal-box {
5697
- transition: transform 0ms;
5688
+ dialog.modal[open] .modal-box {
5689
+ transform: scale(0.95);
5698
5690
  }
5699
- }
5700
5691
 
5701
- /* Focus Trap Helper */
5702
- .modal-focus-trap {
5703
- position: absolute;
5704
- width: 1px;
5705
- height: 1px;
5706
- padding: 0;
5707
- margin: -1px;
5708
- overflow: hidden;
5709
- clip: rect(0, 0, 0, 0);
5710
- white-space: nowrap;
5711
- border: 0;
5692
+ dialog.modal.modal-slide-up[open] .modal-box {
5693
+ transform: translateY(6rem) scale(0.95);
5694
+ }
5695
+
5696
+ dialog.modal.modal-slide-down[open] .modal-box {
5697
+ transform: translateY(-6rem) scale(0.95);
5698
+ }
5699
+
5700
+ dialog.modal.modal-zoom[open] .modal-box {
5701
+ transform: scale(0.75);
5702
+ }
5703
+
5704
+ dialog.modal.drawer-modal[open] .modal-box {
5705
+ transform: translateX(100%);
5706
+ }
5707
+
5708
+ dialog.modal.drawer-modal-left[open] .modal-box {
5709
+ transform: translateX(-100%);
5710
+ }
5712
5711
  }
5713
5712
 
5714
- body.modal-open {
5715
- overflow: hidden;
5713
+ /* Reduce Motion */
5714
+ @media (prefers-reduced-motion: reduce) {
5715
+ dialog.modal,
5716
+ dialog.modal::backdrop,
5717
+ .modal-box {
5718
+ transition: none;
5719
+ }
5716
5720
  }
5717
5721
  }
5718
5722
 
@@ -5793,6 +5797,12 @@ html {
5793
5797
  font-size: 2rem;
5794
5798
  }
5795
5799
 
5800
+ .avatar-2xl {
5801
+ width: 6rem;
5802
+ height: 6rem;
5803
+ font-size: 2rem;
5804
+ }
5805
+
5796
5806
  /* Shape Variants */
5797
5807
  .avatar-rounded {
5798
5808
  border-radius: var(--radius-sm);
@@ -6272,7 +6282,7 @@ html {
6272
6282
  flex-direction: column;
6273
6283
  justify-content: center;
6274
6284
  align-items: center;
6275
- gap: var(--chat-scroll-indicator-gap);
6285
+ gap: 0;
6276
6286
  width: calc(
6277
6287
  var(--chat-scroll-indicator-active-size) * var(--chat-scroll-indicator-hover-scale)
6278
6288
  );
@@ -6291,21 +6301,33 @@ html {
6291
6301
  }
6292
6302
 
6293
6303
  .chat-scroll-indicator {
6294
- display: block;
6304
+ display: flex;
6305
+ align-items: center;
6306
+ justify-content: center;
6295
6307
  flex-shrink: 0;
6296
- width: var(--chat-scroll-indicator-size);
6297
- height: var(--chat-scroll-indicator-thickness);
6308
+ width: 100%;
6309
+ height: calc(var(--chat-scroll-indicator-thickness) + var(--chat-scroll-indicator-gap));
6298
6310
  border: 0;
6299
- border-radius: 999px;
6300
6311
  padding: 0;
6312
+ margin: 0;
6313
+ box-sizing: border-box;
6301
6314
  appearance: none;
6302
- background-color: color-mix(in oklch, var(--color-on-surface) 28%, transparent);
6315
+ background-color: transparent;
6303
6316
  color: inherit;
6304
6317
  font: inherit;
6305
- opacity: 0.45;
6306
6318
  pointer-events: auto;
6307
6319
  text-decoration: none;
6308
6320
  cursor: pointer;
6321
+ }
6322
+
6323
+ .chat-scroll-indicator::before {
6324
+ content: "";
6325
+ width: var(--chat-scroll-indicator-size);
6326
+ height: var(--chat-scroll-indicator-thickness);
6327
+ border-radius: 999px;
6328
+ background-color: color-mix(in oklch, var(--color-on-surface) 28%, transparent);
6329
+ opacity: 0.45;
6330
+ pointer-events: none;
6309
6331
  transform: scaleX(1);
6310
6332
  transform-origin: center;
6311
6333
  transition:
@@ -6314,15 +6336,17 @@ html {
6314
6336
  background-color 140ms ease;
6315
6337
  }
6316
6338
 
6317
- .chat-scroll-indicator:hover,
6318
- .chat-scroll-indicator:focus-visible {
6339
+ .chat-scroll-indicator:hover::before,
6340
+ .chat-scroll-indicator:focus-visible::before {
6341
+ animation: none;
6319
6342
  transform: scaleX(var(--chat-scroll-indicator-hover-scale)) scaleY(1.35);
6320
6343
  background-color: var(--color-on-surface);
6321
6344
  opacity: 1;
6322
6345
  }
6323
6346
 
6324
- .chat-scroll-indicator:hover + .chat-scroll-indicator,
6325
- .chat-scroll-indicator:has(+ .chat-scroll-indicator:hover) {
6347
+ .chat-scroll-indicator:hover + .chat-scroll-indicator::before,
6348
+ .chat-scroll-indicator:has(+ .chat-scroll-indicator:hover)::before {
6349
+ animation: none;
6326
6350
  transform: scaleX(var(--chat-scroll-indicator-neighbor-scale)) scaleY(1.15);
6327
6351
  background-color: color-mix(in oklch, var(--color-on-surface) 55%, transparent);
6328
6352
  opacity: 0.75;
@@ -6338,7 +6362,7 @@ html {
6338
6362
  }
6339
6363
 
6340
6364
  @supports (animation-timeline: --chat-1) {
6341
- .chat-scroll-indicator {
6365
+ .chat-scroll-indicator::before {
6342
6366
  animation-name: chat-scroll-indicator-activate;
6343
6367
  animation-duration: 1ms;
6344
6368
  animation-timing-function: linear;
@@ -6467,99 +6491,99 @@ html {
6467
6491
  view-timeline-axis: block;
6468
6492
  }
6469
6493
 
6470
- .chat-scroll-indicator[data-chat-tl="1"] {
6494
+ .chat-scroll-indicator[data-chat-tl="1"]::before {
6471
6495
  animation-timeline: --chat-1;
6472
6496
  }
6473
6497
 
6474
- .chat-scroll-indicator[data-chat-tl="2"] {
6498
+ .chat-scroll-indicator[data-chat-tl="2"]::before {
6475
6499
  animation-timeline: --chat-2;
6476
6500
  }
6477
6501
 
6478
- .chat-scroll-indicator[data-chat-tl="3"] {
6502
+ .chat-scroll-indicator[data-chat-tl="3"]::before {
6479
6503
  animation-timeline: --chat-3;
6480
6504
  }
6481
6505
 
6482
- .chat-scroll-indicator[data-chat-tl="4"] {
6506
+ .chat-scroll-indicator[data-chat-tl="4"]::before {
6483
6507
  animation-timeline: --chat-4;
6484
6508
  }
6485
6509
 
6486
- .chat-scroll-indicator[data-chat-tl="5"] {
6510
+ .chat-scroll-indicator[data-chat-tl="5"]::before {
6487
6511
  animation-timeline: --chat-5;
6488
6512
  }
6489
6513
 
6490
- .chat-scroll-indicator[data-chat-tl="6"] {
6514
+ .chat-scroll-indicator[data-chat-tl="6"]::before {
6491
6515
  animation-timeline: --chat-6;
6492
6516
  }
6493
6517
 
6494
- .chat-scroll-indicator[data-chat-tl="7"] {
6518
+ .chat-scroll-indicator[data-chat-tl="7"]::before {
6495
6519
  animation-timeline: --chat-7;
6496
6520
  }
6497
6521
 
6498
- .chat-scroll-indicator[data-chat-tl="8"] {
6522
+ .chat-scroll-indicator[data-chat-tl="8"]::before {
6499
6523
  animation-timeline: --chat-8;
6500
6524
  }
6501
6525
 
6502
- .chat-scroll-indicator[data-chat-tl="9"] {
6526
+ .chat-scroll-indicator[data-chat-tl="9"]::before {
6503
6527
  animation-timeline: --chat-9;
6504
6528
  }
6505
6529
 
6506
- .chat-scroll-indicator[data-chat-tl="10"] {
6530
+ .chat-scroll-indicator[data-chat-tl="10"]::before {
6507
6531
  animation-timeline: --chat-10;
6508
6532
  }
6509
6533
 
6510
- .chat-scroll-indicator[data-chat-tl="11"] {
6534
+ .chat-scroll-indicator[data-chat-tl="11"]::before {
6511
6535
  animation-timeline: --chat-11;
6512
6536
  }
6513
6537
 
6514
- .chat-scroll-indicator[data-chat-tl="12"] {
6538
+ .chat-scroll-indicator[data-chat-tl="12"]::before {
6515
6539
  animation-timeline: --chat-12;
6516
6540
  }
6517
6541
 
6518
- .chat-scroll-indicator[data-chat-tl="13"] {
6542
+ .chat-scroll-indicator[data-chat-tl="13"]::before {
6519
6543
  animation-timeline: --chat-13;
6520
6544
  }
6521
6545
 
6522
- .chat-scroll-indicator[data-chat-tl="14"] {
6546
+ .chat-scroll-indicator[data-chat-tl="14"]::before {
6523
6547
  animation-timeline: --chat-14;
6524
6548
  }
6525
6549
 
6526
- .chat-scroll-indicator[data-chat-tl="15"] {
6550
+ .chat-scroll-indicator[data-chat-tl="15"]::before {
6527
6551
  animation-timeline: --chat-15;
6528
6552
  }
6529
6553
 
6530
- .chat-scroll-indicator[data-chat-tl="16"] {
6554
+ .chat-scroll-indicator[data-chat-tl="16"]::before {
6531
6555
  animation-timeline: --chat-16;
6532
6556
  }
6533
6557
 
6534
- .chat-scroll-indicator[data-chat-tl="17"] {
6558
+ .chat-scroll-indicator[data-chat-tl="17"]::before {
6535
6559
  animation-timeline: --chat-17;
6536
6560
  }
6537
6561
 
6538
- .chat-scroll-indicator[data-chat-tl="18"] {
6562
+ .chat-scroll-indicator[data-chat-tl="18"]::before {
6539
6563
  animation-timeline: --chat-18;
6540
6564
  }
6541
6565
 
6542
- .chat-scroll-indicator[data-chat-tl="19"] {
6566
+ .chat-scroll-indicator[data-chat-tl="19"]::before {
6543
6567
  animation-timeline: --chat-19;
6544
6568
  }
6545
6569
 
6546
- .chat-scroll-indicator[data-chat-tl="20"] {
6570
+ .chat-scroll-indicator[data-chat-tl="20"]::before {
6547
6571
  animation-timeline: --chat-20;
6548
6572
  }
6549
6573
 
6550
- .chat-scroll-indicator[data-chat-tl="21"] {
6574
+ .chat-scroll-indicator[data-chat-tl="21"]::before {
6551
6575
  animation-timeline: --chat-21;
6552
6576
  }
6553
6577
 
6554
- .chat-scroll-indicator[data-chat-tl="22"] {
6578
+ .chat-scroll-indicator[data-chat-tl="22"]::before {
6555
6579
  animation-timeline: --chat-22;
6556
6580
  }
6557
6581
 
6558
- .chat-scroll-indicator[data-chat-tl="23"] {
6582
+ .chat-scroll-indicator[data-chat-tl="23"]::before {
6559
6583
  animation-timeline: --chat-23;
6560
6584
  }
6561
6585
 
6562
- .chat-scroll-indicator[data-chat-tl="24"] {
6586
+ .chat-scroll-indicator[data-chat-tl="24"]::before {
6563
6587
  animation-timeline: --chat-24;
6564
6588
  }
6565
6589
 
@@ -6635,6 +6659,54 @@ html {
6635
6659
  margin-bottom: 0;
6636
6660
  }
6637
6661
 
6662
+ .chat-status {
6663
+ display: flex;
6664
+ flex-wrap: wrap;
6665
+ align-items: center;
6666
+ gap: 0.25rem 0.75rem;
6667
+ color: var(--color-on-surface-variant);
6668
+ font-size: 0.75rem;
6669
+ line-height: 1rem;
6670
+ font-variant-numeric: tabular-nums;
6671
+ }
6672
+
6673
+ .chat-status-item {
6674
+ display: inline-flex;
6675
+ align-items: baseline;
6676
+ gap: 0.25rem;
6677
+ }
6678
+
6679
+ .chat-status-value {
6680
+ color: var(--color-on-surface);
6681
+ font-weight: 500;
6682
+ }
6683
+
6684
+ .chat-actions {
6685
+ display: flex;
6686
+ flex-wrap: wrap;
6687
+ align-items: center;
6688
+ gap: 0.25rem;
6689
+ }
6690
+
6691
+ .chat-actions-hover {
6692
+ opacity: 0;
6693
+ pointer-events: none;
6694
+ transition: opacity 140ms ease;
6695
+ }
6696
+
6697
+ .chat:hover .chat-actions-hover,
6698
+ .chat:focus-within .chat-actions-hover {
6699
+ opacity: 1;
6700
+ pointer-events: auto;
6701
+ }
6702
+
6703
+ @media (hover: none) {
6704
+ .chat-actions-hover {
6705
+ opacity: 1;
6706
+ pointer-events: auto;
6707
+ }
6708
+ }
6709
+
6638
6710
  .chat-bubble {
6639
6711
  --chat-bubble-bg: var(--color-surface-container-highest);
6640
6712
  --chat-bubble-fg: var(--color-on-surface);
@@ -6651,7 +6723,6 @@ html {
6651
6723
  border-radius: 1rem;
6652
6724
  background-color: var(--chat-bubble-bg);
6653
6725
  color: var(--chat-bubble-fg);
6654
- box-shadow: inset 0 0 0 1px var(--color-outline-variant);
6655
6726
  font-size: 0.875rem;
6656
6727
  line-height: 1.45;
6657
6728
  overflow-wrap: anywhere;
@@ -6670,7 +6741,7 @@ html {
6670
6741
  position: absolute;
6671
6742
  inset-block-start: 0;
6672
6743
  inline-size: 0.75rem;
6673
- block-size: 1rem;
6744
+ block-size: 0.75rem;
6674
6745
  background-color: var(--chat-bubble-bg);
6675
6746
  mask-image: radial-gradient(ellipse at 0 100%, transparent 68%, black 72%);
6676
6747
  pointer-events: none;
@@ -7031,11 +7102,15 @@ html {
7031
7102
  scroll-behavior: auto;
7032
7103
  }
7033
7104
 
7034
- .chat-scroll-indicator {
7105
+ .chat-scroll-indicator::before {
7035
7106
  animation: none;
7036
7107
  transition: none;
7037
7108
  }
7038
7109
 
7110
+ .chat-actions-hover {
7111
+ transition: none;
7112
+ }
7113
+
7039
7114
  .chat-typing::before,
7040
7115
  .chat-typing::after,
7041
7116
  .chat-typing span,
@@ -11162,256 +11237,168 @@ html {
11162
11237
  }
11163
11238
  @media (forced-colors: active) { .otp-code { background-image: none; } }
11164
11239
 
11165
- @media (prefers-reduced-motion: reduce) {
11166
- .otp-input-field {
11167
- transition: none;
11168
- }
11169
- }
11170
- }
11171
-
11172
- /**
11173
- * PIN Input Component Styles
11174
- * DuskMoonUI - Secure PIN/password entry input
11175
- */
11176
-
11177
- @layer components {
11178
- /* Base PIN Container */
11179
- .pin-input {
11240
+ /* One native input over decorative cells, following the daisyUI OTP layout.
11241
+ The spans must precede the input; their count matches maxlength/pattern. */
11242
+ .otp-input:has(> .otp-code) {
11243
+ --otp-count: 6;
11244
+ --otp-cell: 2ch;
11245
+ --otp-gap-ratio: 0.25;
11246
+ --otp-gap: calc(var(--otp-cell) * var(--otp-gap-ratio));
11247
+ --otp-stride: calc(var(--otp-cell) + var(--otp-gap));
11248
+ --otp-width-units: calc(var(--otp-count) * (1 + var(--otp-gap-ratio)) + 0.25);
11249
+ --otp-height: 3rem;
11250
+ position: relative;
11180
11251
  display: inline-flex;
11252
+ flex-wrap: nowrap;
11181
11253
  align-items: center;
11182
- gap: 0.5rem;
11183
- }
11184
-
11185
- /* PIN Input Field */
11186
- .pin-input-field {
11187
- width: 3rem;
11188
- height: 3.5rem;
11189
- padding: 0;
11190
- font-size: 1.5rem;
11191
- font-weight: 600;
11192
- text-align: center;
11193
- color: var(--color-on-surface);
11194
- background-color: var(--color-surface);
11195
- border: 2px solid currentColor;
11254
+ gap: 0;
11255
+ inline-size: calc(var(--otp-cell) * var(--otp-width-units) + 2px);
11256
+ max-inline-size: 100%;
11257
+ container-type: inline-size;
11258
+ block-size: var(--otp-height);
11259
+ font: 1.5rem / 1 ui-monospace, monospace;
11260
+ direction: ltr;
11261
+ color: var(--dm-validation-color, var(--color-on-surface));
11196
11262
  border-radius: var(--radius-sm);
11197
- outline: none;
11198
- transition: border-color 150ms ease-in-out, box-shadow 150ms ease-in-out;
11199
- caret-color: var(--color-primary);
11200
- -webkit-text-security: disc;
11263
+ /* Reserve space for the trailing native caret and cell focus rings. */
11264
+ clip-path: inset(-4px -4px -4px -4px);
11201
11265
  }
11202
11266
 
11203
- .pin-input-field::placeholder {
11204
- color: var(--color-on-surface-variant);
11205
- opacity: 0.3;
11267
+ /* Scale cells to the actual wrapper width, including inside narrow forms. */
11268
+ .otp-input > :is(span, .otp-code), .otp-input:has(> .otp-code)::after {
11269
+ --otp-cell: calc((100cqi - 2px) / var(--otp-width-units));
11270
+ --otp-gap: calc(var(--otp-cell) * var(--otp-gap-ratio));
11271
+ --otp-stride: calc(var(--otp-cell) + var(--otp-gap));
11206
11272
  }
11207
11273
 
11208
- .pin-input-field:hover:not(:disabled):not(:focus) {
11209
- background-color: var(--color-surface-container);
11274
+ .otp-input:has(> span:nth-child(1)) { --otp-count: 1; }
11275
+ .otp-input:has(> span:nth-child(2)) { --otp-count: 2; }
11276
+ .otp-input:has(> span:nth-child(3)) { --otp-count: 3; }
11277
+ .otp-input:has(> span:nth-child(4)) { --otp-count: 4; }
11278
+ .otp-input:has(> span:nth-child(5)) { --otp-count: 5; }
11279
+ .otp-input:has(> span:nth-child(6)) { --otp-count: 6; }
11280
+ .otp-input:has(> span:nth-child(7)) { --otp-count: 7; }
11281
+ .otp-input:has(> span:nth-child(8)) { --otp-count: 8; }
11282
+
11283
+ .otp-input > span[aria-hidden="true"] {
11284
+ position: absolute;
11285
+ inset-block: 0;
11286
+ inline-size: var(--otp-cell);
11287
+ box-sizing: border-box;
11288
+ background-color: var(--color-surface);
11289
+ border: 1px solid currentColor;
11290
+ border-radius: inherit;
11291
+ pointer-events: none;
11292
+ transition: background-color 150ms ease-in-out;
11210
11293
  }
11294
+ .otp-input > span:nth-child(1) { left: 0; }
11295
+ .otp-input > span:nth-child(2) { left: var(--otp-stride); }
11296
+ .otp-input > span:nth-child(3) { left: calc(var(--otp-stride) * 2); }
11297
+ .otp-input > span:nth-child(4) { left: calc(var(--otp-stride) * 3); }
11298
+ .otp-input > span:nth-child(5) { left: calc(var(--otp-stride) * 4); }
11299
+ .otp-input > span:nth-child(6) { left: calc(var(--otp-stride) * 5); }
11300
+ .otp-input > span:nth-child(7) { left: calc(var(--otp-stride) * 6); }
11301
+ .otp-input > span:nth-child(8) { left: calc(var(--otp-stride) * 7); }
11211
11302
 
11212
- .pin-input-field:focus {
11213
- box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
11303
+ .otp-input > .otp-code {
11304
+ position: relative;
11305
+ z-index: 1;
11306
+ field-sizing: content;
11307
+ flex-shrink: 0;
11308
+ inline-size: auto;
11309
+ min-inline-size: 0;
11310
+ max-inline-size: none;
11311
+ block-size: 100%;
11312
+ margin: 0;
11313
+ padding: 0 0 0 calc((var(--otp-cell) - 1ch) / 2);
11314
+ border: 0;
11315
+ border-radius: 0;
11316
+ font: inherit;
11317
+ font-size: min(1em, var(--otp-cell));
11318
+ letter-spacing: calc(var(--otp-stride) - 1ch);
11319
+ color: inherit;
11320
+ background: transparent;
11321
+ outline: none;
11322
+ box-shadow: none;
11323
+ appearance: none;
11214
11324
  }
11215
11325
 
11216
- .pin-input-field:disabled {
11217
- opacity: 0.38;
11218
- cursor: not-allowed;
11219
- background-color: var(--color-surface-container);
11220
- }
11221
-
11222
- /* Show PIN (toggle visibility) */
11223
- .pin-input-visible .pin-input-field {
11224
- -webkit-text-security: none;
11225
- }
11226
-
11227
- /* Size Variants */
11228
- .pin-input-sm .pin-input-field {
11229
- width: 2.5rem;
11230
- height: 3rem;
11231
- font-size: 1.25rem;
11232
- border-radius: var(--radius-xs);
11233
- }
11234
-
11235
- .pin-input-lg .pin-input-field {
11236
- width: 3.5rem;
11237
- height: 4rem;
11238
- font-size: 1.75rem;
11239
- border-radius: var(--radius-sm);
11240
- }
11241
-
11242
- /* Compact Gap */
11243
- .pin-input-compact {
11244
- gap: 0.25rem;
11245
- }
11246
-
11247
- /* Filled Variant */
11248
- .pin-input-filled .pin-input-field {
11249
- background-color: var(--color-surface-container);
11250
- border: none;
11251
- border-bottom: 2px solid var(--color-outline);
11252
- border-radius: var(--radius-sm) var(--radius-sm) 0 0;
11253
- }
11254
-
11255
- .pin-input-filled .pin-input-field:focus {
11256
- border-bottom-color: var(--color-primary);
11257
- box-shadow: none;
11258
- }
11259
-
11260
- /* Circle Variant */
11261
- .pin-input-circle .pin-input-field {
11262
- width: 3rem;
11263
- height: 3rem;
11264
- border-radius: var(--radius-full);
11265
- }
11266
-
11267
- .pin-input-circle.pin-input-sm .pin-input-field {
11268
- width: 2.5rem;
11269
- height: 2.5rem;
11270
- }
11271
-
11272
- .pin-input-circle.pin-input-lg .pin-input-field {
11273
- width: 3.5rem;
11274
- height: 3.5rem;
11275
- }
11276
-
11277
- /* Dot Display (shows dots instead of numbers) */
11278
- .pin-input-dots .pin-input-field {
11279
- font-size: 2rem;
11280
- letter-spacing: -0.25rem;
11281
- }
11282
-
11283
- /* Color Variants */
11284
- .pin-input-primary .pin-input-field {
11285
- color: var(--color-primary);
11286
- }
11287
-
11288
- .pin-input-primary .pin-input-field:focus {
11289
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary) 10%, transparent);
11290
- }
11291
-
11292
- .pin-input-secondary .pin-input-field {
11293
- color: var(--color-secondary);
11294
- }
11295
-
11296
- .pin-input-secondary .pin-input-field:focus {
11297
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-secondary) 10%, transparent);
11298
- }
11299
-
11300
- .pin-input-tertiary .pin-input-field {
11301
- color: var(--color-tertiary);
11302
- }
11303
-
11304
- .pin-input-tertiary .pin-input-field:focus {
11305
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-tertiary) 10%, transparent);
11306
- }
11307
-
11308
- .pin-input-info .pin-input-field {
11309
- color: var(--color-info);
11310
- }
11311
-
11312
- .pin-input-info .pin-input-field:focus {
11313
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-info) 10%, transparent);
11314
- }
11315
-
11316
- .pin-input-success .pin-input-field {
11317
- color: var(--color-success);
11318
- }
11319
-
11320
- .pin-input-success .pin-input-field:focus {
11321
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-success) 10%, transparent);
11322
- }
11323
-
11324
- .pin-input-warning .pin-input-field {
11325
- color: var(--color-warning);
11326
- }
11327
-
11328
- .pin-input-warning .pin-input-field:focus {
11329
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-warning) 10%, transparent);
11330
- }
11331
-
11332
- .pin-input-error .pin-input-field {
11333
- color: var(--color-error);
11334
- animation: pin-shake 300ms ease-in-out;
11335
- }
11336
-
11337
- .pin-input-error .pin-input-field:focus {
11338
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-error) 10%, transparent);
11339
- }
11340
-
11341
- .pin-input-accent .pin-input-field {
11342
- color: var(--color-accent);
11343
- }
11344
-
11345
- .pin-input-accent .pin-input-field:focus {
11346
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-accent) 10%, transparent);
11347
- }
11348
-
11349
- .pin-input-neutral .pin-input-field {
11350
- color: var(--color-neutral);
11351
- }
11352
-
11353
- .pin-input-neutral .pin-input-field:focus {
11354
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-neutral) 10%, transparent);
11355
- }
11356
-
11357
- .pin-input-base .pin-input-field {
11358
- color: var(--color-base-content);
11359
- }
11360
-
11361
- .pin-input-base .pin-input-field:focus {
11362
- box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-base-content) 10%, transparent);
11363
- }
11364
-
11365
- @keyframes pin-shake {
11366
- 0%, 100% { transform: translateX(0); }
11367
- 20%, 60% { transform: translateX(-4px); }
11368
- 40%, 80% { transform: translateX(4px); }
11369
- }
11370
-
11371
- /* Ghost Variant */
11372
- .pin-input-ghost .pin-input-field {
11373
- background-color: transparent;
11374
- border-color: transparent;
11326
+ /* Intrinsic input width follows the entered characters, positioning the next cell. */
11327
+ .otp-input:has(> .otp-code)::after {
11328
+ content: "";
11329
+ flex-shrink: 0;
11330
+ inline-size: var(--otp-cell);
11331
+ block-size: var(--otp-height);
11332
+ margin-inline-start: calc(-0.25 * var(--otp-cell));
11333
+ border-radius: inherit;
11334
+ pointer-events: none;
11375
11335
  }
11376
-
11377
- .pin-input-ghost .pin-input-field:focus {
11378
- background-color: var(--color-surface-container);
11379
- border-color: transparent;
11336
+ .otp-input:focus-within::after,
11337
+ .otp-input:has(> .otp-code:focus) > span {
11380
11338
  box-shadow: 0 0 0 3px color-mix(in oklch, currentColor 20%, transparent);
11339
+ outline: 1px solid currentColor;
11340
+ }
11341
+ .otp-input:has(> .otp-code:valid:focus)::after { visibility: hidden; }
11342
+ /* Cell indicators replace the reset's unlayered native focus outline. */
11343
+ .otp-input > .otp-code:focus {
11344
+ outline: none !important;
11345
+ box-shadow: none !important;
11346
+ }
11347
+
11348
+ .otp-input-xs:has(> .otp-code) { font-size: 1rem; --otp-height: 2rem; }
11349
+ .otp-input-sm:has(> .otp-code) { font-size: 1.25rem; --otp-height: 2.5rem; }
11350
+ .otp-input-md:has(> .otp-code) { font-size: 1.5rem; --otp-height: 3rem; }
11351
+ .otp-input-lg:has(> .otp-code) { font-size: 1.75rem; --otp-height: 3.5rem; }
11352
+ .otp-input-xl:has(> .otp-code) { font-size: 2rem; --otp-height: 4rem; }
11353
+ .otp-input-joined:has(> .otp-code) { --otp-gap-ratio: 0; }
11354
+ .otp-input-joined > span:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; }
11355
+ .otp-input-joined > span:not(:nth-last-child(2)) { border-top-right-radius: 0; border-bottom-right-radius: 0; border-right: 0; }
11356
+ .otp-input-ghost > span { border-color: transparent; }
11357
+ .otp-input-filled > span { background-color: var(--color-surface-container); }
11358
+ .otp-input-underline > span { border-width: 0 0 1px; border-radius: 0; background-color: transparent; }
11359
+
11360
+ .otp-input-primary:has(> .otp-code) { color: var(--dm-validation-color, var(--color-primary)); }
11361
+ .otp-input-secondary:has(> .otp-code) { color: var(--dm-validation-color, var(--color-secondary)); }
11362
+ .otp-input-tertiary:has(> .otp-code) { color: var(--dm-validation-color, var(--color-tertiary)); }
11363
+ .otp-input-info:has(> .otp-code) { color: var(--dm-validation-color, var(--color-info)); }
11364
+ .otp-input-success:has(> .otp-code) { color: var(--dm-validation-color, var(--color-success)); }
11365
+ .otp-input-warning:has(> .otp-code) { color: var(--dm-validation-color, var(--color-warning)); }
11366
+ .otp-input-error:has(> .otp-code) { color: var(--dm-validation-color, var(--color-error)); }
11367
+ .otp-input-accent:has(> .otp-code) { color: var(--dm-validation-color, var(--color-accent)); }
11368
+ .otp-input-neutral:has(> .otp-code) { color: var(--dm-validation-color, var(--color-neutral)); }
11369
+ .otp-input-base:has(> .otp-code) { color: var(--dm-validation-color, var(--color-base-content)); }
11370
+
11371
+ .otp-input:has(> .otp-code:is(.validate :valid, .validate:valid, .validator.validator-success:user-valid):not([aria-invalid="true"]):not(:disabled)):not(:where(.form-group-error *, .form-control.error *)) {
11372
+ --dm-validation-color: var(--color-success);
11381
11373
  }
11382
-
11383
- /* PIN Group with Label */
11384
- .pin-group {
11385
- display: flex;
11386
- flex-direction: column;
11387
- gap: 0.5rem;
11374
+ .otp-input:has(> .otp-code:is([aria-invalid="true"], .validator:user-invalid, .validate :invalid, .validate:invalid):not(:disabled)),
11375
+ :is(.form-group-error, .form-control.error) .otp-input {
11376
+ --dm-validation-color: var(--color-error);
11388
11377
  }
11389
-
11390
- .pin-label {
11391
- font-size: 0.875rem;
11392
- font-weight: 500;
11393
- color: var(--color-on-surface);
11378
+ .otp-input:has(> .otp-code:is([aria-invalid="true"], .validator:user-invalid, .validate :invalid, .validate:invalid):not(:disabled)) > span,
11379
+ :is(.form-group-error, .form-control.error) .otp-input > span {
11380
+ border-color: currentColor;
11394
11381
  }
11395
-
11396
- .pin-helper {
11397
- font-size: 0.75rem;
11398
- color: var(--color-on-surface-variant);
11382
+ .otp-input:has(> .otp-code:disabled) {
11383
+ opacity: 0.38;
11384
+ cursor: not-allowed;
11399
11385
  }
11386
+ .otp-input > .otp-code:disabled { opacity: 1; }
11400
11387
 
11401
- .pin-error-message {
11402
- font-size: 0.75rem;
11403
- color: var(--color-error);
11388
+ /* Engines without content sizing retain a usable single native input. */
11389
+ @supports not (field-sizing: content) {
11390
+ .otp-input > .otp-code { inline-size: 100%; letter-spacing: normal; padding: 0.75rem; background-color: var(--color-surface); border: 1px solid currentColor; border-radius: inherit; }
11391
+ .otp-input > span, .otp-input:has(> .otp-code)::after { display: none; }
11392
+ .otp-input > .otp-code:focus { outline: 2px solid currentColor !important; outline-offset: 2px; }
11393
+ }
11394
+ @media (forced-colors: active) {
11395
+ .otp-input:focus-within { outline: 2px solid Highlight; outline-offset: 2px; }
11404
11396
  }
11405
11397
 
11406
- /* Reduce Motion */
11407
11398
  @media (prefers-reduced-motion: reduce) {
11408
- .pin-input-field {
11399
+ .otp-input-field, .otp-input > span {
11409
11400
  transition: none;
11410
11401
  }
11411
-
11412
- .pin-input-error .pin-input-field {
11413
- animation: none;
11414
- }
11415
11402
  }
11416
11403
  }
11417
11404
 
@@ -15423,6 +15410,12 @@ html {
15423
15410
  border-radius: var(--radius-sm);
15424
15411
  }
15425
15412
 
15413
+ .skeleton-input {
15414
+ height: 2.75rem;
15415
+ width: 100%;
15416
+ border-radius: var(--radius-xs);
15417
+ }
15418
+
15426
15419
  .skeleton-image {
15427
15420
  aspect-ratio: 16 / 9;
15428
15421
  width: 100%;
@@ -18062,20 +18055,20 @@ html {
18062
18055
  z-index: 1;
18063
18056
  }
18064
18057
 
18065
- :is(.join, .join-horizontal) > .join-item:not(:first-child) {
18058
+ :is(.join, .join-horizontal):not(.join-vertical) > .join-item:not(:first-child) {
18066
18059
  margin-inline-start: -1px;
18067
18060
  }
18068
18061
 
18069
- :is(.join, .join-horizontal) > .join-item:not(:first-child):not(:last-child) {
18062
+ :is(.join, .join-horizontal):not(.join-vertical) > .join-item:not(:first-child):not(:last-child) {
18070
18063
  border-radius: 0;
18071
18064
  }
18072
18065
 
18073
- :is(.join, .join-horizontal) > .join-item:first-child:not(:last-child) {
18066
+ :is(.join, .join-horizontal):not(.join-vertical) > .join-item:first-child:not(:last-child) {
18074
18067
  border-start-end-radius: 0;
18075
18068
  border-end-end-radius: 0;
18076
18069
  }
18077
18070
 
18078
- :is(.join, .join-horizontal) > .join-item:last-child:not(:first-child) {
18071
+ :is(.join, .join-horizontal):not(.join-vertical) > .join-item:last-child:not(:first-child) {
18079
18072
  border-start-start-radius: 0;
18080
18073
  border-end-start-radius: 0;
18081
18074
  }
@@ -22092,6 +22085,47 @@ html {
22092
22085
  .timeline-marker-tertiary { border-color: var(--color-tertiary); background: var(--color-tertiary-container); }
22093
22086
  .timeline-marker-success { border-color: var(--color-success); background: var(--color-success-container); }
22094
22087
  .timeline-marker-error { border-color: var(--color-error); background: var(--color-error-container); }
22088
+ .timeline-marker-accent {
22089
+ border-color: var(--color-accent);
22090
+ background-color: var(--color-accent);
22091
+ color: var(--color-accent-content);
22092
+ }
22093
+
22094
+ .timeline-marker-accent .timeline-marker-icon {
22095
+ color: var(--color-accent-content);
22096
+ }
22097
+
22098
+ .timeline-marker-accent .timeline-marker-dot {
22099
+ background-color: var(--color-accent-content);
22100
+ }
22101
+
22102
+ .timeline-marker-neutral {
22103
+ border-color: var(--color-neutral);
22104
+ background-color: var(--color-neutral);
22105
+ color: var(--color-neutral-content);
22106
+ }
22107
+
22108
+ .timeline-marker-neutral .timeline-marker-icon {
22109
+ color: var(--color-neutral-content);
22110
+ }
22111
+
22112
+ .timeline-marker-neutral .timeline-marker-dot {
22113
+ background-color: var(--color-neutral-content);
22114
+ }
22115
+
22116
+ .timeline-marker-base {
22117
+ border-color: var(--color-base-300);
22118
+ background-color: var(--color-base-300);
22119
+ color: var(--color-base-content);
22120
+ }
22121
+
22122
+ .timeline-marker-base .timeline-marker-icon {
22123
+ color: var(--color-base-content);
22124
+ }
22125
+
22126
+ .timeline-marker-base .timeline-marker-dot {
22127
+ background-color: var(--color-base-content);
22128
+ }
22095
22129
  .timeline-item-active > .timeline-marker { border-color: var(--color-primary); background: var(--color-primary-container); }
22096
22130
  .timeline-item-pending > .timeline-marker { border-style: dashed; }
22097
22131
  .timeline-compact > .timeline-item { padding-block-end: 0.75rem; gap: 0.5rem; }
@@ -23327,6 +23361,10 @@ html {
23327
23361
  0 16px 40px rgb(15 23 42 / 0.12);
23328
23362
  }
23329
23363
 
23364
+ .cascader-container.cascader-open > .cascader-dropdown {
23365
+ display: block;
23366
+ }
23367
+
23330
23368
  .cascader-search {
23331
23369
  box-sizing: border-box;
23332
23370
  display: block;
@@ -23451,11 +23489,10 @@ html {
23451
23489
  }
23452
23490
 
23453
23491
  .calendar-header {
23454
- display: flex;
23455
- flex-wrap: wrap;
23492
+ display: grid;
23493
+ grid-template-columns: 2rem minmax(0, 1fr) 2rem;
23456
23494
  gap: 0.75rem;
23457
23495
  align-items: center;
23458
- justify-content: space-between;
23459
23496
  padding: 0.875rem;
23460
23497
  border-bottom: 1px solid var(--color-outline-variant);
23461
23498
  }
@@ -23466,10 +23503,16 @@ html {
23466
23503
  }
23467
23504
 
23468
23505
  .calendar-controls {
23469
- display: flex;
23470
- flex-wrap: wrap;
23506
+ display: grid;
23507
+ min-width: 0;
23471
23508
  gap: 0.5rem;
23472
- align-items: center;
23509
+ justify-items: center;
23510
+ text-align: center;
23511
+ }
23512
+
23513
+ .calendar-header > .calendar-nav {
23514
+ width: 2rem;
23515
+ padding: 0;
23473
23516
  }
23474
23517
 
23475
23518
  .calendar-nav,
@@ -23682,7 +23725,9 @@ html {
23682
23725
  display: flex;
23683
23726
  flex-direction: column;
23684
23727
  gap: 0.75rem;
23685
- min-width: 16rem;
23728
+ box-sizing: border-box;
23729
+ width: 18rem;
23730
+ min-width: 0;
23686
23731
  max-width: min(20rem, calc(100vw - 2rem));
23687
23732
  padding: 0.75rem;
23688
23733
  background-color: var(--color-surface);
@@ -23699,49 +23744,161 @@ html {
23699
23744
  0 16px 40px rgb(15 23 42 / 0.12);
23700
23745
  }
23701
23746
 
23702
- .color-picker-panel .color-picker-input {
23747
+ .color-picker .color-picker-area {
23748
+ position: relative;
23749
+ flex: none;
23703
23750
  width: 100%;
23704
- height: 2.5rem;
23705
- padding: 0 0.75rem;
23706
- font-family:
23707
- ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
23708
- "Courier New", monospace;
23709
- font-size: 0.875rem;
23751
+ aspect-ratio: 4 / 3;
23752
+ border-radius: var(--radius-sm);
23753
+ background:
23754
+ linear-gradient(to top, #000, transparent),
23755
+ linear-gradient(to right, #fff, transparent),
23756
+ hsl(var(--color-picker-hue) 100% 50%);
23757
+ cursor: crosshair;
23758
+ touch-action: none;
23710
23759
  }
23711
23760
 
23712
- .color-picker-presets {
23713
- display: grid;
23714
- gap: 0.75rem;
23761
+ .color-picker-area:focus-visible {
23762
+ outline: 2px solid var(--color-primary);
23763
+ outline-offset: 3px;
23715
23764
  }
23716
23765
 
23717
- .color-picker-preset {
23718
- display: grid;
23719
- gap: 0.5rem;
23766
+ .color-picker-area[aria-disabled="true"] {
23767
+ cursor: not-allowed;
23720
23768
  }
23721
23769
 
23722
- .color-picker-preset-label {
23723
- color: var(--color-on-surface-variant);
23724
- font-size: 0.75rem;
23725
- font-weight: 600;
23726
- line-height: 1rem;
23770
+ .color-picker-area-indicator {
23771
+ position: absolute;
23772
+ width: 0.875rem;
23773
+ height: 0.875rem;
23774
+ border: 2px solid #fff;
23775
+ border-radius: 50%;
23776
+ box-shadow: 0 0 0 1px #000;
23777
+ transform: translate(-50%, -50%);
23778
+ pointer-events: none;
23727
23779
  }
23728
23780
 
23729
- .color-picker-preset-colors {
23730
- display: flex;
23731
- flex-wrap: wrap;
23732
- gap: 0.5rem;
23781
+ .color-picker-instructions {
23782
+ position: absolute;
23783
+ width: 1px;
23784
+ height: 1px;
23785
+ padding: 0;
23786
+ overflow: hidden;
23787
+ clip-path: inset(50%);
23788
+ white-space: nowrap;
23733
23789
  }
23734
23790
 
23735
- .color-picker-preset-colors .color-picker-swatch {
23736
- --color-picker-swatch-size: 1.5rem;
23737
-
23738
- border-radius: 999px;
23791
+ .color-picker .color-picker-hue {
23792
+ width: 100%;
23793
+ height: 1.5rem;
23794
+ margin: 0;
23795
+ background: transparent;
23796
+ appearance: none;
23797
+ cursor: pointer;
23739
23798
  }
23740
23799
 
23741
- .descriptions {
23742
- box-sizing: border-box;
23743
- width: 100%;
23744
- color: var(--color-on-surface);
23800
+ .color-picker-hue::-webkit-slider-runnable-track {
23801
+ height: 0.75rem;
23802
+ border-radius: var(--radius-full);
23803
+ background: linear-gradient(
23804
+ to right,
23805
+ #f00,
23806
+ #ff0,
23807
+ #0f0,
23808
+ #0ff,
23809
+ #00f,
23810
+ #f0f,
23811
+ #f00
23812
+ );
23813
+ }
23814
+
23815
+ .color-picker-hue::-moz-range-track {
23816
+ height: 0.75rem;
23817
+ border-radius: var(--radius-full);
23818
+ background: linear-gradient(
23819
+ to right,
23820
+ #f00,
23821
+ #ff0,
23822
+ #0f0,
23823
+ #0ff,
23824
+ #00f,
23825
+ #f0f,
23826
+ #f00
23827
+ );
23828
+ }
23829
+
23830
+ .color-picker-hue::-webkit-slider-thumb {
23831
+ width: 1rem;
23832
+ height: 1rem;
23833
+ margin-top: -0.125rem;
23834
+ border: 2px solid var(--color-surface);
23835
+ border-radius: 50%;
23836
+ background: var(--color-on-surface);
23837
+ box-shadow: 0 0 0 1px var(--color-outline);
23838
+ appearance: none;
23839
+ }
23840
+
23841
+ .color-picker-hue::-moz-range-thumb {
23842
+ width: 0.75rem;
23843
+ height: 0.75rem;
23844
+ border: 2px solid var(--color-surface);
23845
+ border-radius: 50%;
23846
+ background: var(--color-on-surface);
23847
+ box-shadow: 0 0 0 1px var(--color-outline);
23848
+ }
23849
+
23850
+ .color-picker-hue:disabled {
23851
+ cursor: not-allowed;
23852
+ }
23853
+
23854
+ .color-picker-hue:focus-visible {
23855
+ outline: 2px solid var(--color-primary);
23856
+ outline-offset: 3px;
23857
+ border-radius: var(--radius-full);
23858
+ }
23859
+ .color-picker-panel .color-picker-input {
23860
+ width: 100%;
23861
+ height: 2.5rem;
23862
+ padding: 0 0.75rem;
23863
+ font-family:
23864
+ ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
23865
+ "Courier New", monospace;
23866
+ font-size: 0.875rem;
23867
+ }
23868
+
23869
+ .color-picker-presets {
23870
+ display: grid;
23871
+ gap: 0.75rem;
23872
+ }
23873
+
23874
+ .color-picker-preset {
23875
+ display: grid;
23876
+ gap: 0.5rem;
23877
+ }
23878
+
23879
+ .color-picker-preset-label {
23880
+ color: var(--color-on-surface-variant);
23881
+ font-size: 0.75rem;
23882
+ font-weight: 600;
23883
+ line-height: 1rem;
23884
+ }
23885
+
23886
+ .color-picker-preset-colors {
23887
+ display: flex;
23888
+ flex-wrap: wrap;
23889
+ gap: 0.5rem;
23890
+ }
23891
+
23892
+ .color-picker-preset-colors .color-picker-swatch {
23893
+ --color-picker-swatch-size: 1.5rem;
23894
+
23895
+ border-radius: 999px;
23896
+ }
23897
+
23898
+ .descriptions {
23899
+ box-sizing: border-box;
23900
+ width: 100%;
23901
+ color: var(--color-on-surface);
23745
23902
  font-size: 0.875rem;
23746
23903
  line-height: 1.375rem;
23747
23904
  }
@@ -23857,133 +24014,29 @@ html {
23857
24014
  background-color: var(--color-tertiary);
23858
24015
  }
23859
24016
 
23860
- .dropdown-wrapper {
23861
- position: relative;
23862
- display: inline-flex;
23863
- align-items: center;
23864
- vertical-align: middle;
23865
- }
23866
-
23867
- .dropdown-wrapper > [role="button"] {
23868
- display: inline-flex;
23869
- align-items: center;
23870
- justify-content: center;
23871
- min-height: 2.25rem;
23872
- padding: 0 0.875rem;
23873
- color: var(--color-on-surface);
23874
- font: inherit;
23875
- font-size: 0.875rem;
23876
- font-weight: 600;
23877
- line-height: 1;
23878
- background-color: var(--color-surface);
23879
- border: 1px solid var(--color-outline-variant);
23880
- border-radius: var(--radius-sm);
23881
- cursor: pointer;
23882
- transition:
23883
- background-color 150ms ease-in-out,
23884
- border-color 150ms ease-in-out,
23885
- color 150ms ease-in-out;
23886
- }
23887
-
23888
- .dropdown-wrapper > [role="button"]:hover,
23889
- .dropdown-wrapper > [role="button"]:focus-visible {
23890
- color: var(--color-primary);
23891
- background-color: var(--color-surface-container);
23892
- border-color: var(--color-primary);
23893
- outline: none;
23894
- }
23895
-
23896
- .dropdown-wrapper > .popover.dropdown {
23897
- position: absolute;
23898
- z-index: 1050;
23899
- display: block;
23900
- min-width: 12rem;
23901
- max-width: calc(100vw - 2rem);
23902
- padding: 0.375rem;
23903
- color: var(--color-on-surface);
23904
- background-color: var(--color-surface);
23905
- border: 1px solid var(--color-outline-variant);
23906
- border-radius: var(--radius-md);
23907
- box-shadow:
23908
- 0 4px 12px rgb(15 23 42 / 0.1),
23909
- 0 16px 40px rgb(15 23 42 / 0.12);
23910
- opacity: 0;
23911
- visibility: hidden;
23912
- transform: translateY(-0.25rem);
23913
- transition:
23914
- opacity 150ms ease-out,
23915
- visibility 150ms ease-out,
23916
- transform 150ms ease-out;
23917
- }
23918
-
23919
- .dropdown-wrapper > .popover.dropdown.dropdown-open {
23920
- opacity: 1;
23921
- visibility: visible;
23922
- transform: none;
23923
- }
23924
-
23925
- .dropdown-wrapper > .popover.dropdown.dropdown-bottom,
23926
- .dropdown-wrapper > .popover.dropdown.dropdown-bottom-left {
23927
- top: calc(100% + 0.5rem);
23928
- left: 0;
23929
- }
23930
-
23931
- .dropdown-wrapper > .popover.dropdown.dropdown-bottom-right {
23932
- top: calc(100% + 0.5rem);
23933
- right: 0;
23934
- left: auto;
23935
- }
23936
-
23937
- .dropdown-wrapper > .popover.dropdown.dropdown-top,
23938
- .dropdown-wrapper > .popover.dropdown.dropdown-top-left {
23939
- bottom: calc(100% + 0.5rem);
23940
- left: 0;
23941
- }
23942
-
23943
- .dropdown-wrapper > .popover.dropdown.dropdown-top-right {
23944
- right: 0;
23945
- bottom: calc(100% + 0.5rem);
23946
- left: auto;
23947
- }
23948
-
23949
- .dropdown-wrapper > .popover.dropdown.dropdown-left {
23950
- top: 50%;
23951
- right: calc(100% + 0.5rem);
23952
- transform: translate(0.25rem, -50%);
23953
- }
23954
-
23955
- .dropdown-wrapper > .popover.dropdown.dropdown-left.dropdown-open {
23956
- transform: translateY(-50%);
23957
- }
23958
-
23959
- .dropdown-wrapper > .popover.dropdown.dropdown-right {
23960
- top: 50%;
23961
- left: calc(100% + 0.5rem);
23962
- transform: translate(-0.25rem, -50%);
23963
- }
23964
-
23965
- .dropdown-wrapper > .popover.dropdown.dropdown-right.dropdown-open {
23966
- transform: translateY(-50%);
23967
- }
23968
-
23969
- .dropdown-menu {
24017
+ .dropdown-menu.menu {
23970
24018
  display: grid;
23971
- gap: 0.125rem;
24019
+ width: 100%;
24020
+ gap: 0.25rem;
23972
24021
  padding: 0;
23973
24022
  margin: 0;
23974
24023
  list-style: none;
24024
+ background: transparent;
24025
+ border: 0;
24026
+ border-radius: 0;
23975
24027
  }
23976
24028
 
23977
24029
  .dropdown-menu .menu-item {
23978
24030
  display: flex;
23979
- gap: 0.625rem;
24031
+ gap: 0.5rem;
23980
24032
  align-items: center;
23981
24033
  width: 100%;
23982
24034
  min-height: 2rem;
23983
- padding: 0.375rem 0.625rem;
24035
+ padding: 0.375rem 0.5rem;
23984
24036
  color: var(--color-on-surface);
23985
24037
  font: inherit;
23986
24038
  font-size: 0.875rem;
24039
+ font-weight: 400;
23987
24040
  text-align: left;
23988
24041
  background-color: transparent;
23989
24042
  border: 0;
@@ -24001,6 +24054,17 @@ html {
24001
24054
  color: var(--color-error);
24002
24055
  }
24003
24056
 
24057
+ .dropdown-menu .menu-item:disabled {
24058
+ color: var(--color-on-surface-variant);
24059
+ cursor: not-allowed;
24060
+ opacity: 0.55;
24061
+ }
24062
+
24063
+ .dropdown-menu .menu-item:disabled:hover,
24064
+ .dropdown-menu .menu-item:disabled:focus-visible {
24065
+ background-color: transparent;
24066
+ }
24067
+
24004
24068
  .dropdown-menu .menu-divider {
24005
24069
  height: 1px;
24006
24070
  margin: 0.25rem 0;
@@ -24008,21 +24072,51 @@ html {
24008
24072
  }
24009
24073
 
24010
24074
  .dropdown-button {
24075
+ position: relative;
24011
24076
  display: inline-flex;
24012
24077
  align-items: center;
24013
24078
  }
24014
24079
 
24015
- .dropdown-button > *:first-child {
24080
+ .dropdown-button-block {
24081
+ display: flex;
24082
+ width: 100%;
24083
+ }
24084
+
24085
+ .dropdown-button-block > .btn:first-child {
24086
+ flex: 1;
24087
+ }
24088
+
24089
+ .dropdown-button > .dropdown {
24090
+ position: static;
24091
+ margin-left: -1px;
24092
+ }
24093
+
24094
+ .dropdown-button .btn-base.btn-outline {
24095
+ border-color: var(--color-outline-variant);
24096
+ }
24097
+
24098
+ .dropdown-button > .btn:first-child {
24016
24099
  border-start-end-radius: 0;
24017
24100
  border-end-end-radius: 0;
24018
24101
  }
24019
24102
 
24020
- .dropdown-button > *:last-child {
24021
- margin-left: -1px;
24103
+ .dropdown-button > .dropdown .btn {
24104
+ inline-size: calc(1lh + var(--btn-py) + var(--btn-py) + 2px);
24105
+ padding-inline: 0;
24022
24106
  border-start-start-radius: 0;
24023
24107
  border-end-start-radius: 0;
24024
24108
  }
24025
24109
 
24110
+ .dropdown-button > .dropdown .btn-content {
24111
+ display: inline-flex;
24112
+ align-items: center;
24113
+ block-size: 1lh;
24114
+ }
24115
+
24116
+ .dropdown-button > .dropdown .btn-content svg {
24117
+ display: block;
24118
+ }
24119
+
24026
24120
  .empty {
24027
24121
  box-sizing: border-box;
24028
24122
  display: grid;
@@ -24828,6 +24922,157 @@ html {
24828
24922
  }
24829
24923
  }
24830
24924
 
24925
+ .dm-layout {
24926
+ min-width: 0;
24927
+ min-height: 0;
24928
+ background: var(--color-surface);
24929
+ }
24930
+
24931
+ .dm-layout > .dm-layout-shell,
24932
+ .dm-layout .dm-layout-main {
24933
+ flex: 1 1 auto;
24934
+ min-width: 0;
24935
+ min-height: 0;
24936
+ background: transparent;
24937
+ border: 0;
24938
+ border-radius: 0;
24939
+ }
24940
+
24941
+ .dm-layout .dm-layout-sider {
24942
+ min-height: 0;
24943
+ padding: 0;
24944
+ color: var(--color-on-surface);
24945
+ background: var(--color-surface-container-low);
24946
+ border-inline-end: 1px solid var(--color-outline-variant);
24947
+ }
24948
+
24949
+ .dm-layout .dm-layout-breadcrumb {
24950
+ min-width: 0;
24951
+ padding: 0.875rem 1rem;
24952
+ border-bottom: 1px solid var(--color-outline-variant);
24953
+ }
24954
+
24955
+ .dm-layout .dm-layout-body {
24956
+ display: block;
24957
+ min-height: 0;
24958
+ padding: 1rem;
24959
+ background: transparent;
24960
+ }
24961
+
24962
+ .dm-layout .dm-layout-content {
24963
+ min-width: 0;
24964
+ max-width: 100%;
24965
+ overflow: auto;
24966
+ overflow-wrap: anywhere;
24967
+ }
24968
+
24969
+ .dm-layout .dm-layout-auxiliary {
24970
+ margin-bottom: 1rem;
24971
+ color: var(--color-on-surface-variant);
24972
+ }
24973
+
24974
+ .dm-menu {
24975
+ display: flex;
24976
+ flex: 1 1 auto;
24977
+ flex-direction: column;
24978
+ width: 100%;
24979
+ min-width: 0;
24980
+ color: var(--color-on-surface);
24981
+ background: var(--color-surface-container-low);
24982
+ }
24983
+
24984
+ .dm-menu-header,
24985
+ .dm-menu-content,
24986
+ .dm-menu-footer {
24987
+ min-width: 0;
24988
+ padding: 0.5rem;
24989
+ }
24990
+
24991
+ .dm-menu-header {
24992
+ font-weight: 700;
24993
+ border-bottom: 1px solid var(--color-outline-variant);
24994
+ }
24995
+
24996
+ .dm-menu-content {
24997
+ flex: 1 1 auto;
24998
+ }
24999
+
25000
+ .dm-menu-footer {
25001
+ display: flex;
25002
+ justify-content: flex-end;
25003
+ border-top: 1px solid var(--color-outline-variant);
25004
+ }
25005
+
25006
+ .dm-menu-collapse-button svg {
25007
+ display: block;
25008
+ }
25009
+
25010
+ .dm-menu .menu {
25011
+ width: 100%;
25012
+ min-width: 0;
25013
+ padding: 0;
25014
+ background: transparent;
25015
+ border: 0;
25016
+ border-radius: 0;
25017
+ }
25018
+
25019
+ .dm-menu .menu-item > span:not(.menu-item-icon),
25020
+ .dm-menu .menu-item-submenu > span:not(.menu-item-icon) {
25021
+ min-width: 0;
25022
+ overflow: hidden;
25023
+ }
25024
+
25025
+ .dm-menu-item-label {
25026
+ display: block;
25027
+ overflow: hidden;
25028
+ text-overflow: ellipsis;
25029
+ white-space: nowrap;
25030
+ }
25031
+
25032
+ .dm-menu-item-symbol {
25033
+ display: inline-flex;
25034
+ width: 1.125rem;
25035
+ height: 1.125rem;
25036
+ align-items: center;
25037
+ justify-content: center;
25038
+ }
25039
+
25040
+ .dm-menu-item-symbol > svg {
25041
+ max-width: 100%;
25042
+ max-height: 100%;
25043
+ }
25044
+
25045
+ .dm-menu-collapsed .menu-item,
25046
+ .dm-menu-collapsed .menu-item-submenu {
25047
+ position: relative;
25048
+ justify-content: center;
25049
+ gap: 0;
25050
+ padding-inline: 0;
25051
+ }
25052
+
25053
+ .dm-menu-collapsed .dm-menu-item-label {
25054
+ position: absolute;
25055
+ width: 1px;
25056
+ height: 1px;
25057
+ overflow: hidden;
25058
+ clip-path: inset(50%);
25059
+ }
25060
+
25061
+ .dm-menu-collapsed .menu-submenu {
25062
+ padding-inline-start: 0;
25063
+ }
25064
+
25065
+ .dm-menu-collapsed .dm-menu-footer {
25066
+ justify-content: center;
25067
+ }
25068
+
25069
+ @media (max-width: 640px) {
25070
+ .dm-layout .dm-layout-sider {
25071
+ border-inline-end: 0;
25072
+ border-bottom: 1px solid var(--color-outline-variant);
25073
+ }
25074
+ }
25075
+
24831
25076
  .list {
24832
25077
  display: flex;
24833
25078
  flex-direction: column;
@@ -25254,7 +25499,7 @@ html {
25254
25499
  opacity: 1;
25255
25500
  }
25256
25501
 
25257
- .modal-backdrop {
25502
+ .modal-backdrop:not(dialog) {
25258
25503
  position: fixed;
25259
25504
  inset: 0;
25260
25505
  z-index: 1000;
@@ -25266,16 +25511,16 @@ html {
25266
25511
  background: color-mix(in oklch, var(--color-scrim) 42%, transparent);
25267
25512
  }
25268
25513
 
25269
- .modal-backdrop.modal-open {
25514
+ .modal-backdrop:not(dialog).modal-open {
25270
25515
  display: flex;
25271
25516
  }
25272
25517
 
25273
- .modal-backdrop-center {
25518
+ .modal-backdrop-center:not(dialog) {
25274
25519
  align-items: center;
25275
25520
  padding-top: 16px;
25276
25521
  }
25277
25522
 
25278
- .modal-backdrop > .modal {
25523
+ .modal-backdrop:not(dialog) > .modal:not(dialog) {
25279
25524
  position: relative;
25280
25525
  display: flex;
25281
25526
  width: min(100%, 32rem);
@@ -25291,7 +25536,14 @@ html {
25291
25536
  color-mix(in oklch, var(--color-scrim) 35%, transparent);
25292
25537
  }
25293
25538
 
25294
- .modal-header {
25539
+ dialog.modal > .react-modal-box {
25540
+ display: flex;
25541
+ flex-direction: column;
25542
+ padding: 0;
25543
+ overflow: hidden;
25544
+ }
25545
+
25546
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box) .modal-header {
25295
25547
  display: flex;
25296
25548
  align-items: flex-start;
25297
25549
  gap: 16px;
@@ -25299,7 +25551,7 @@ html {
25299
25551
  border-block-end: 1px solid var(--color-outline-variant);
25300
25552
  }
25301
25553
 
25302
- .modal-title {
25554
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box) .modal-title {
25303
25555
  margin: 0;
25304
25556
  color: var(--color-on-surface);
25305
25557
  font-size: 1rem;
@@ -25307,7 +25559,7 @@ html {
25307
25559
  line-height: 1.4;
25308
25560
  }
25309
25561
 
25310
- .modal-body {
25562
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box) .modal-body {
25311
25563
  flex: 1 1 auto;
25312
25564
  min-height: 0;
25313
25565
  padding: 20px;
@@ -25316,7 +25568,7 @@ html {
25316
25568
  line-height: 1.5;
25317
25569
  }
25318
25570
 
25319
- .modal-footer {
25571
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box) .modal-footer {
25320
25572
  display: flex;
25321
25573
  justify-content: flex-end;
25322
25574
  gap: 8px;
@@ -25324,7 +25576,11 @@ html {
25324
25576
  border-block-start: 1px solid var(--color-outline-variant);
25325
25577
  }
25326
25578
 
25327
- .modal-footer > button {
25579
+ .react-modal-box .modal-footer {
25580
+ margin-top: 0;
25581
+ }
25582
+
25583
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box) .modal-footer > button {
25328
25584
  min-height: 2.25rem;
25329
25585
  padding: 0 14px;
25330
25586
  color: var(--color-on-surface);
@@ -25336,18 +25592,18 @@ html {
25336
25592
  cursor: pointer;
25337
25593
  }
25338
25594
 
25339
- .modal-footer > button:last-child {
25595
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box) .modal-footer > button:last-child {
25340
25596
  color: var(--color-primary-content);
25341
25597
  background: var(--color-primary);
25342
25598
  border-color: var(--color-primary);
25343
25599
  }
25344
25600
 
25345
- .modal-footer > button:disabled {
25601
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box) .modal-footer > button:disabled {
25346
25602
  cursor: not-allowed;
25347
25603
  opacity: 0.55;
25348
25604
  }
25349
25605
 
25350
- .modal-close {
25606
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box) .modal-close {
25351
25607
  position: absolute;
25352
25608
  top: 12px;
25353
25609
  right: 12px;
@@ -25366,8 +25622,8 @@ html {
25366
25622
  cursor: pointer;
25367
25623
  }
25368
25624
 
25369
- .modal-close:hover,
25370
- .modal-close:focus-visible {
25625
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box) .modal-close:hover,
25626
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box) .modal-close:focus-visible {
25371
25627
  color: var(--color-on-surface);
25372
25628
  background: var(--color-surface-container);
25373
25629
  outline: none;
@@ -25554,184 +25810,61 @@ html {
25554
25810
  transform: translateY(-50%);
25555
25811
  }
25556
25812
 
25557
- .datepicker-icon::before {
25558
- width: 0.875rem;
25559
- height: 0.8125rem;
25560
- border: 1.75px solid currentcolor;
25561
- border-radius: 0.1875rem;
25562
- content: "";
25563
- }
25564
-
25565
- .datepicker-icon::after {
25566
- position: absolute;
25567
- top: 0.3125rem;
25568
- left: 0.1875rem;
25569
- width: 0.625rem;
25570
- border-top: 1.75px solid currentcolor;
25571
- content: "";
25572
- }
25573
-
25574
25813
  .datepicker-clear {
25575
25814
  position: absolute;
25576
25815
  top: 50%;
25577
25816
  right: 2.25rem;
25578
- display: inline-flex;
25579
- width: 1.25rem;
25580
- height: 1.25rem;
25581
- align-items: center;
25582
- justify-content: center;
25583
- padding: 0;
25584
- color: var(--color-on-surface-variant);
25585
- font-size: 0.8125rem;
25586
- line-height: 1;
25587
- background: transparent;
25588
- border: 0;
25589
- border-radius: var(--radius-full);
25590
- cursor: pointer;
25591
- transform: translateY(-50%);
25592
- }
25593
-
25594
- .datepicker-clear:hover,
25595
- .datepicker-clear:focus-visible {
25596
- color: var(--color-on-surface);
25597
- background-color: var(--color-surface-container);
25598
- outline: none;
25599
- }
25600
-
25601
- .datepicker-range .datepicker-clear {
25602
- right: 0.5rem;
25603
- }
25604
-
25605
- .datepicker-range-separator {
25606
- flex: 0 0 auto;
25607
- color: var(--color-on-surface-variant);
25608
- }
25609
-
25610
- .popover-wrapper {
25611
- position: relative;
25612
- display: inline-flex;
25613
- align-items: center;
25614
- vertical-align: middle;
25615
- }
25616
-
25617
- .popover-wrapper > .popover {
25618
- position: absolute;
25619
- z-index: 1050;
25620
- min-width: 12rem;
25621
- max-width: min(20rem, calc(100vw - 2rem));
25622
- padding: 0.875rem 1rem;
25623
- color: var(--color-on-surface);
25624
- font-size: 0.875rem;
25625
- line-height: 1.375rem;
25626
- background-color: var(--color-surface);
25627
- border: 1px solid var(--color-outline-variant);
25628
- border-radius: var(--radius-md);
25629
- box-shadow: var(--shadow-lg);
25630
- opacity: 0;
25631
- visibility: hidden;
25632
- pointer-events: none;
25633
- transition:
25634
- opacity 150ms ease-out,
25635
- visibility 150ms ease-out,
25636
- transform 150ms ease-out;
25637
- }
25638
-
25639
- .popover-wrapper > .popover.popover-show {
25640
- opacity: 1;
25641
- visibility: visible;
25642
- pointer-events: auto;
25643
- }
25644
-
25645
- .popover-wrapper > .popover strong {
25646
- display: block;
25647
- margin-bottom: 0.25rem;
25648
- color: var(--color-on-surface);
25649
- font-weight: 600;
25650
- }
25651
-
25652
- .popover-wrapper > .popover-top {
25653
- bottom: calc(100% + 0.75rem);
25654
- left: 50%;
25655
- transform: translateX(-50%) translateY(0.25rem);
25656
- }
25657
-
25658
- .popover-wrapper > .popover-top.popover-show {
25659
- transform: translateX(-50%);
25660
- }
25661
-
25662
- .popover-wrapper > .popover-bottom {
25663
- top: calc(100% + 0.75rem);
25664
- left: 50%;
25665
- transform: translateX(-50%) translateY(-0.25rem);
25666
- }
25667
-
25668
- .popover-wrapper > .popover-bottom.popover-show {
25669
- transform: translateX(-50%);
25670
- }
25671
-
25672
- .popover-wrapper > .popover-left {
25673
- top: 50%;
25674
- right: calc(100% + 0.75rem);
25675
- transform: translate(0.25rem, -50%);
25676
- }
25677
-
25678
- .popover-wrapper > .popover-left.popover-show {
25679
- transform: translateY(-50%);
25680
- }
25681
-
25682
- .popover-wrapper > .popover-right {
25683
- top: 50%;
25684
- left: calc(100% + 0.75rem);
25685
- transform: translate(-0.25rem, -50%);
25686
- }
25687
-
25688
- .popover-wrapper > .popover-right.popover-show {
25817
+ display: inline-flex;
25818
+ width: 1.25rem;
25819
+ height: 1.25rem;
25820
+ align-items: center;
25821
+ justify-content: center;
25822
+ padding: 0;
25823
+ color: var(--color-on-surface-variant);
25824
+ font-size: 0.8125rem;
25825
+ line-height: 1;
25826
+ background: transparent;
25827
+ border: 0;
25828
+ border-radius: var(--radius-full);
25829
+ cursor: pointer;
25689
25830
  transform: translateY(-50%);
25690
25831
  }
25691
25832
 
25692
- .popover-wrapper > .popover > .popover-arrow {
25693
- position: absolute;
25694
- width: 0.75rem;
25695
- height: 0.75rem;
25696
- background-color: var(--color-surface);
25697
- border: 1px solid var(--color-outline-variant);
25698
- transform: rotate(45deg);
25833
+ .datepicker-clear:hover,
25834
+ .datepicker-clear:focus-visible {
25835
+ color: var(--color-on-surface);
25836
+ background-color: var(--color-surface-container);
25837
+ outline: none;
25699
25838
  }
25700
25839
 
25701
- .popover-wrapper > .popover-top > .popover-arrow {
25702
- bottom: -0.4375rem;
25703
- left: 50%;
25704
- border-top: 0;
25705
- border-left: 0;
25706
- transform: translateX(-50%) rotate(45deg);
25840
+ .datepicker-range .datepicker-clear {
25841
+ right: 0.5rem;
25707
25842
  }
25708
25843
 
25709
- .popover-wrapper > .popover-bottom > .popover-arrow {
25710
- top: -0.4375rem;
25711
- left: 50%;
25712
- border-right: 0;
25713
- border-bottom: 0;
25714
- transform: translateX(-50%) rotate(45deg);
25844
+ .datepicker-range-separator {
25845
+ flex: 0 0 auto;
25846
+ color: var(--color-on-surface-variant);
25715
25847
  }
25716
25848
 
25717
- .popover-wrapper > .popover-left > .popover-arrow {
25718
- top: 50%;
25719
- right: -0.4375rem;
25720
- border-bottom: 0;
25721
- border-left: 0;
25722
- transform: translateY(-50%) rotate(45deg);
25849
+ .popover-wrapper {
25850
+ position: relative;
25851
+ display: inline-flex;
25852
+ align-items: center;
25853
+ vertical-align: middle;
25723
25854
  }
25724
25855
 
25725
- .popover-wrapper > .popover-right > .popover-arrow {
25726
- top: 50%;
25727
- left: -0.4375rem;
25728
- border-top: 0;
25729
- border-right: 0;
25730
- transform: translateY(-50%) rotate(45deg);
25856
+ .popover-wrapper > .popover[popover] {
25857
+ max-width: min(20rem, calc(100vw - 2rem));
25858
+ color: var(--color-on-surface);
25859
+ font-size: 0.875rem;
25860
+ line-height: 1.375rem;
25731
25861
  }
25732
25862
 
25733
- .popover-wrapper > .popover-no-arrow > .popover-arrow {
25734
- display: none;
25863
+ .popover-wrapper > .popover > strong {
25864
+ display: block;
25865
+ margin-bottom: 0.25rem;
25866
+ color: var(--color-on-surface);
25867
+ font-weight: 600;
25735
25868
  }
25736
25869
 
25737
25870
  .popconfirm {
@@ -26751,6 +26884,11 @@ html {
26751
26884
  --switch-content-color: var(--color-tertiary-content);
26752
26885
  }
26753
26886
 
26887
+ .switch:has(.switch-error) {
26888
+ --switch-color: var(--color-error);
26889
+ --switch-content-color: var(--color-error-content);
26890
+ }
26891
+
26754
26892
  .switch-input {
26755
26893
  position: absolute;
26756
26894
  width: 1px;
@@ -26816,6 +26954,10 @@ html {
26816
26954
  background-color: var(--color-surface);
26817
26955
  }
26818
26956
 
26957
+ .switch:has(.switch-input[aria-invalid="true"]) .switch-track {
26958
+ border-color: var(--color-error);
26959
+ }
26960
+
26819
26961
  .switch:has(.switch-input:focus-visible) .switch-track {
26820
26962
  box-shadow: 0 0 0 3px
26821
26963
  color-mix(in oklch, var(--switch-color) 22%, transparent);
@@ -27052,7 +27194,6 @@ html {
27052
27194
  .tab:hover:not(:disabled),
27053
27195
  .tab:focus-visible {
27054
27196
  color: var(--color-primary);
27055
- outline: none;
27056
27197
  }
27057
27198
 
27058
27199
  .tab-active,
@@ -27675,6 +27816,154 @@ html {
27675
27816
  }
27676
27817
  }
27677
27818
 
27819
+ .datepicker > button.datepicker-icon,
27820
+ .time-picker > button.time-picker-icon {
27821
+ padding: 0;
27822
+ background: transparent;
27823
+ cursor: pointer;
27824
+ pointer-events: auto;
27825
+ }
27826
+
27827
+ .datepicker > button.datepicker-icon {
27828
+ right: 0.375rem;
27829
+ width: 2rem;
27830
+ height: 2rem;
27831
+ border: 0;
27832
+ }
27833
+
27834
+ .datepicker > button.datepicker-icon:focus-visible,
27835
+ .time-picker > button.time-picker-icon:focus-visible {
27836
+ outline: 2px solid var(--color-primary);
27837
+ outline-offset: 3px;
27838
+ }
27839
+
27840
+ .datepicker > button.datepicker-icon:disabled,
27841
+ .time-picker > button.time-picker-icon:disabled {
27842
+ cursor: not-allowed;
27843
+ }
27844
+
27845
+ .datepicker > .datepicker-dropdown {
27846
+ position: absolute;
27847
+ top: calc(100% + 0.375rem);
27848
+ left: 0;
27849
+ z-index: 1050;
27850
+ display: block;
27851
+ box-sizing: border-box;
27852
+ width: 100%;
27853
+ min-width: 0;
27854
+ max-width: calc(100vw - 2rem);
27855
+ padding: 0;
27856
+ color: var(--color-on-surface);
27857
+ background: var(--color-surface);
27858
+ border: 1px solid var(--color-outline-variant);
27859
+ border-radius: var(--radius-md);
27860
+ box-shadow: var(--shadow-lg);
27861
+ }
27862
+
27863
+ .datepicker-dropdown > .calendar {
27864
+ width: 100%;
27865
+ border: 0;
27866
+ box-shadow: none;
27867
+ }
27868
+
27869
+ .datepicker-dropdown .calendar-header,
27870
+ .datepicker-dropdown .calendar-body {
27871
+ padding: 0.5rem;
27872
+ }
27873
+
27874
+ .datepicker-dropdown .calendar-header,
27875
+ .datepicker-dropdown .calendar-controls {
27876
+ gap: 0.375rem;
27877
+ }
27878
+
27879
+ .datepicker-dropdown .calendar-header button {
27880
+ padding-inline: 0.375rem;
27881
+ font-size: 0.75rem;
27882
+ }
27883
+
27884
+ .datepicker-dropdown .datepicker-footer,
27885
+ .datepicker-dropdown .datepicker-preset {
27886
+ padding: 0.5rem;
27887
+ }
27888
+
27889
+ .time-picker > .time-picker-panel {
27890
+ box-sizing: border-box;
27891
+ width: 100%;
27892
+ min-width: 0;
27893
+ max-width: calc(100vw - 2rem);
27894
+ }
27895
+
27896
+ .time-picker-columns {
27897
+ display: flex;
27898
+ gap: 0.25rem;
27899
+ }
27900
+
27901
+ .time-picker-column {
27902
+ flex: 1 1 0;
27903
+ min-width: 0;
27904
+ max-height: 12rem;
27905
+ overflow-y: auto;
27906
+ overscroll-behavior: contain;
27907
+ scrollbar-width: thin;
27908
+ }
27909
+
27910
+ .time-picker-option {
27911
+ display: block;
27912
+ width: 100%;
27913
+ min-height: 2rem;
27914
+ padding: 0.25rem;
27915
+ color: var(--color-on-surface);
27916
+ font: inherit;
27917
+ font-size: 0.8125rem;
27918
+ background: transparent;
27919
+ border: 0;
27920
+ border-radius: var(--radius-sm);
27921
+ cursor: pointer;
27922
+ }
27923
+
27924
+ .time-picker-option:hover:not(:disabled),
27925
+ .time-picker-option:focus-visible {
27926
+ color: var(--color-primary);
27927
+ background: var(--color-primary-container);
27928
+ outline: 2px solid var(--color-primary);
27929
+ outline-offset: -2px;
27930
+ }
27931
+
27932
+ .time-picker-option[aria-selected="true"] {
27933
+ color: var(--color-primary-content);
27934
+ background: var(--color-primary);
27935
+ }
27936
+
27937
+ .time-picker-option:disabled {
27938
+ color: var(--color-on-surface-variant);
27939
+ opacity: 0.5;
27940
+ cursor: not-allowed;
27941
+ }
27942
+
27943
+ .time-picker-panel .time-picker-footer {
27944
+ gap: 0.375rem;
27945
+ margin-top: 0.375rem;
27946
+ padding-top: 0.375rem;
27947
+ border-top: 1px solid var(--color-outline-variant);
27948
+ }
27949
+
27950
+ .time-picker-confirm {
27951
+ min-height: 2rem;
27952
+ padding: 0 0.625rem;
27953
+ color: var(--color-primary-content);
27954
+ font: inherit;
27955
+ font-size: 0.8125rem;
27956
+ background: var(--color-primary);
27957
+ border: 0;
27958
+ border-radius: var(--radius-sm);
27959
+ cursor: pointer;
27960
+ }
27961
+
27962
+ .time-picker-confirm:focus-visible {
27963
+ outline: 2px solid var(--color-primary);
27964
+ outline-offset: 2px;
27965
+ }
27966
+
27678
27967
  @media (prefers-reduced-motion: reduce) {
27679
27968
  .timeline-item-pending .timeline-marker {
27680
27969
  animation: none;
@@ -27691,7 +27980,7 @@ html {
27691
27980
  vertical-align: middle;
27692
27981
  }
27693
27982
 
27694
- .tooltip {
27983
+ .tooltip:where(:not([popover])) {
27695
27984
  position: absolute;
27696
27985
  z-index: 1070;
27697
27986
  display: inline-flex;
@@ -27716,61 +28005,61 @@ html {
27716
28005
  transform 150ms ease-in-out;
27717
28006
  }
27718
28007
 
27719
- .tooltip-show {
28008
+ .tooltip-show:where(:not([popover])) {
27720
28009
  opacity: 1;
27721
28010
  }
27722
28011
 
27723
- .tooltip-sm {
28012
+ .tooltip-sm:where(:not([popover])) {
27724
28013
  padding: 0.25rem 0.5rem;
27725
28014
  font-size: 0.6875rem;
27726
28015
  }
27727
28016
 
27728
- .tooltip-lg {
28017
+ .tooltip-lg:where(:not([popover])) {
27729
28018
  padding: 0.5rem 0.75rem;
27730
28019
  font-size: 0.8125rem;
27731
28020
  }
27732
28021
 
27733
- .tooltip-top {
28022
+ .tooltip-top:where(:not([popover])) {
27734
28023
  bottom: calc(100% + 0.5rem);
27735
28024
  left: 50%;
27736
28025
  transform: translate(-50%, 0.25rem);
27737
28026
  }
27738
28027
 
27739
- .tooltip-top.tooltip-show {
28028
+ .tooltip-top.tooltip-show:where(:not([popover])) {
27740
28029
  transform: translate(-50%, 0);
27741
28030
  }
27742
28031
 
27743
- .tooltip-bottom {
28032
+ .tooltip-bottom:where(:not([popover])) {
27744
28033
  top: calc(100% + 0.5rem);
27745
28034
  left: 50%;
27746
28035
  transform: translate(-50%, -0.25rem);
27747
28036
  }
27748
28037
 
27749
- .tooltip-bottom.tooltip-show {
28038
+ .tooltip-bottom.tooltip-show:where(:not([popover])) {
27750
28039
  transform: translate(-50%, 0);
27751
28040
  }
27752
28041
 
27753
- .tooltip-left {
28042
+ .tooltip-left:where(:not([popover])) {
27754
28043
  top: 50%;
27755
28044
  right: calc(100% + 0.5rem);
27756
28045
  transform: translate(0.25rem, -50%);
27757
28046
  }
27758
28047
 
27759
- .tooltip-left.tooltip-show {
28048
+ .tooltip-left.tooltip-show:where(:not([popover])) {
27760
28049
  transform: translate(0, -50%);
27761
28050
  }
27762
28051
 
27763
- .tooltip-right {
28052
+ .tooltip-right:where(:not([popover])) {
27764
28053
  top: 50%;
27765
28054
  left: calc(100% + 0.5rem);
27766
28055
  transform: translate(-0.25rem, -50%);
27767
28056
  }
27768
28057
 
27769
- .tooltip-right.tooltip-show {
28058
+ .tooltip-right.tooltip-show:where(:not([popover])) {
27770
28059
  transform: translate(0, -50%);
27771
28060
  }
27772
28061
 
27773
- .tooltip-arrow {
28062
+ :where(.tooltip:not([popover])) .tooltip-arrow {
27774
28063
  position: absolute;
27775
28064
  display: block;
27776
28065
  width: 0.5rem;
@@ -27780,43 +28069,53 @@ html {
27780
28069
  transform: rotate(45deg);
27781
28070
  }
27782
28071
 
27783
- .tooltip-top .tooltip-arrow {
28072
+ .tooltip-top:where(:not([popover])) .tooltip-arrow {
27784
28073
  bottom: -0.25rem;
27785
28074
  left: 50%;
27786
28075
  transform: translateX(-50%) rotate(45deg);
27787
28076
  }
27788
28077
 
27789
- .tooltip-bottom .tooltip-arrow {
28078
+ .tooltip-bottom:where(:not([popover])) .tooltip-arrow {
27790
28079
  top: -0.25rem;
27791
28080
  left: 50%;
27792
28081
  transform: translateX(-50%) rotate(45deg);
27793
28082
  }
27794
28083
 
27795
- .tooltip-left .tooltip-arrow {
28084
+ .tooltip-left:where(:not([popover])) .tooltip-arrow {
27796
28085
  top: 50%;
27797
28086
  right: -0.25rem;
27798
28087
  transform: translateY(-50%) rotate(45deg);
27799
28088
  }
27800
28089
 
27801
- .tooltip-right .tooltip-arrow {
28090
+ .tooltip-right:where(:not([popover])) .tooltip-arrow {
27802
28091
  top: 50%;
27803
28092
  left: -0.25rem;
27804
28093
  transform: translateY(-50%) rotate(45deg);
27805
28094
  }
27806
28095
 
27807
- .tooltip-no-arrow {
28096
+ .tooltip-no-arrow:where(:not([popover])) {
27808
28097
  margin: 0;
27809
28098
  }
27810
28099
 
27811
- .tooltip-no-arrow .tooltip-arrow {
28100
+ .tooltip-no-arrow:where(:not([popover])) .tooltip-arrow {
27812
28101
  display: none;
27813
28102
  }
27814
28103
 
27815
28104
  @media (prefers-reduced-motion: reduce) {
27816
- .tooltip {
28105
+ .tooltip:where(:not([popover])) {
27817
28106
  transition: none;
27818
28107
  }
27819
28108
  }
28109
+
28110
+ .tooltip-sm[popover] {
28111
+ padding: 0.25rem 0.5rem;
28112
+ font-size: 0.6875rem;
28113
+ }
28114
+
28115
+ .tooltip-lg[popover] {
28116
+ padding: 0.5rem 0.75rem;
28117
+ font-size: 0.8125rem;
28118
+ }
27820
28119
  }
27821
28120
 
27822
28121
  @layer components {
@@ -28274,6 +28573,42 @@ html {
28274
28573
  opacity: 0.55;
28275
28574
  }
28276
28575
 
28576
+ .tree-select-container > .tree-select-dropdown > .tree-select-search-input {
28577
+ box-sizing: border-box;
28578
+ display: block;
28579
+ width: 100%;
28580
+ min-width: 0;
28581
+ }
28582
+
28583
+ .tree-select-title {
28584
+ padding: 0;
28585
+ color: inherit;
28586
+ font: inherit;
28587
+ text-align: start;
28588
+ background: transparent;
28589
+ border: 0;
28590
+ cursor: pointer;
28591
+ }
28592
+
28593
+ .tree-select-title:focus-visible {
28594
+ outline: 2px solid var(--color-primary);
28595
+ outline-offset: 2px;
28596
+ }
28597
+
28598
+ .tree-select-title:disabled {
28599
+ cursor: not-allowed;
28600
+ }
28601
+
28602
+ .tree-select .tree-select-switcher {
28603
+ transform: none;
28604
+ }
28605
+
28606
+ .tree-select > .tree-select-clear {
28607
+ position: absolute;
28608
+ top: 1rem;
28609
+ right: 2.75rem;
28610
+ }
28611
+
28277
28612
  .tree-node-switcher {
28278
28613
  display: inline-grid;
28279
28614
  width: 1.5rem;
@@ -28745,6 +29080,7 @@ html {
28745
29080
  border-right-color: var(--dm-color-solid);
28746
29081
  }
28747
29082
 
29083
+ /* WORKAROUND(upstream): duskmoon-dev/duskmoonui#65 adds the missing accent, neutral, and base timeline marker classes. */
28748
29084
  :is(
28749
29085
  .timeline-marker-primary,
28750
29086
  .timeline-marker-secondary,
@@ -28826,56 +29162,4 @@ html {
28826
29162
  transparent 50%
28827
29163
  );
28828
29164
  }
28829
-
28830
- /* WORKAROUND(upstream): duskmoon-dev/duskmoonui#50 keeps the tail and caret separate. */
28831
- .chat-bubble-streaming::after {
28832
- content: none;
28833
- }
28834
-
28835
- .chat-start .chat-bubble-streaming::after {
28836
- content: "";
28837
- position: absolute;
28838
- top: 1px;
28839
- left: -0.5rem;
28840
- display: block;
28841
- width: calc(1rem - 2px);
28842
- height: calc(1rem - 2px);
28843
- margin-left: 0;
28844
- background-color: var(--chat-bubble-bg);
28845
- clip-path: polygon(0 0, 100% 0, 100% 100%);
28846
- vertical-align: initial;
28847
- animation: none;
28848
- }
28849
-
28850
- .chat-end .chat-bubble-streaming::after {
28851
- content: "";
28852
- position: absolute;
28853
- top: 1px;
28854
- right: -0.5rem;
28855
- display: block;
28856
- width: calc(1rem - 2px);
28857
- height: calc(1rem - 2px);
28858
- margin-left: 0;
28859
- background-color: var(--chat-bubble-bg);
28860
- clip-path: polygon(0 0, 100% 0, 100% 100%);
28861
- vertical-align: initial;
28862
- transform: scaleX(-1);
28863
- animation: none;
28864
- }
28865
-
28866
- .chat-streaming-caret {
28867
- display: inline-block;
28868
- width: 1px;
28869
- height: 1em;
28870
- margin-left: 0.25rem;
28871
- background-color: currentcolor;
28872
- vertical-align: -0.125em;
28873
- animation: chat-stream-caret 1s step-end infinite;
28874
- }
28875
-
28876
- @media (prefers-reduced-motion: reduce) {
28877
- .chat-streaming-caret {
28878
- animation: none;
28879
- }
28880
- }
28881
29165
  }