@duskmoon-dev/components 0.3.3 → 0.4.1

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 (89) hide show
  1. package/README.md +142 -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 +1195 -368
  39. package/dist/components/dm-query/DmQuery.types.d.ts +1 -1
  40. package/dist/components/dm-query/index.js +943 -188
  41. package/dist/components/dm-search/DmSearch.types.d.ts +4 -0
  42. package/dist/components/dm-search/index.js +929 -163
  43. package/dist/components/dm-table/index.js +1013 -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/json-schema-form/JsonSchemaForm.d.ts +19 -0
  55. package/dist/components/json-schema-form/JsonSchemaWidget.d.ts +14 -0
  56. package/dist/components/json-schema-form/index.d.ts +8 -0
  57. package/dist/components/json-schema-form/index.js +7661 -0
  58. package/dist/components/json-schema-form/json-form-widgets.d.ts +26 -0
  59. package/dist/components/json-schema-form/json-schema-form.d.ts +50 -0
  60. package/dist/components/megamenu/Megamenu.d.ts +2 -0
  61. package/dist/components/megamenu/Megamenu.types.d.ts +32 -0
  62. package/dist/components/megamenu/index.d.ts +2 -0
  63. package/dist/components/megamenu/index.js +214 -0
  64. package/dist/components/modal/index.js +128 -68
  65. package/dist/components/otp-input/OtpInput.d.ts +2 -0
  66. package/dist/components/otp-input/OtpInput.types.d.ts +16 -0
  67. package/dist/components/otp-input/index.d.ts +2 -0
  68. package/dist/components/otp-input/index.js +112 -0
  69. package/dist/components/popconfirm/index.js +255 -26
  70. package/dist/components/popover/index.js +24 -4
  71. package/dist/components/select/index.js +12 -0
  72. package/dist/components/swap/Swap.d.ts +3 -0
  73. package/dist/components/swap/Swap.types.d.ts +22 -0
  74. package/dist/components/swap/index.d.ts +2 -0
  75. package/dist/components/swap/index.js +109 -0
  76. package/dist/components/time-picker/TimePicker.types.d.ts +1 -0
  77. package/dist/components/time-picker/index.js +167 -29
  78. package/dist/components/tooltip/Tooltip.types.d.ts +4 -0
  79. package/dist/components/tooltip/index.js +107 -27
  80. package/dist/components/tour/index.js +253 -24
  81. package/dist/components/tree-select/index.js +8 -8
  82. package/dist/components/upload/Upload.types.d.ts +1 -0
  83. package/dist/components/upload/index.js +2 -0
  84. package/dist/generated/version.d.ts +1 -1
  85. package/dist/index.d.ts +5 -0
  86. package/dist/index.js +3343 -1633
  87. package/dist/infrastructure.js +1 -1
  88. package/dist/styles.css +1359 -865
  89. package/package.json +31 -5
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,15 @@ 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)
25547
+ .modal-header {
25295
25548
  display: flex;
25296
25549
  align-items: flex-start;
25297
25550
  gap: 16px;
@@ -25299,7 +25552,8 @@ html {
25299
25552
  border-block-end: 1px solid var(--color-outline-variant);
25300
25553
  }
25301
25554
 
25302
- .modal-title {
25555
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box)
25556
+ .modal-title {
25303
25557
  margin: 0;
25304
25558
  color: var(--color-on-surface);
25305
25559
  font-size: 1rem;
@@ -25307,7 +25561,8 @@ html {
25307
25561
  line-height: 1.4;
25308
25562
  }
25309
25563
 
25310
- .modal-body {
25564
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box)
25565
+ .modal-body {
25311
25566
  flex: 1 1 auto;
25312
25567
  min-height: 0;
25313
25568
  padding: 20px;
@@ -25316,7 +25571,8 @@ html {
25316
25571
  line-height: 1.5;
25317
25572
  }
25318
25573
 
25319
- .modal-footer {
25574
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box)
25575
+ .modal-footer {
25320
25576
  display: flex;
25321
25577
  justify-content: flex-end;
25322
25578
  gap: 8px;
@@ -25324,7 +25580,13 @@ html {
25324
25580
  border-block-start: 1px solid var(--color-outline-variant);
25325
25581
  }
25326
25582
 
25327
- .modal-footer > button {
25583
+ .react-modal-box .modal-footer {
25584
+ margin-top: 0;
25585
+ }
25586
+
25587
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box)
25588
+ .modal-footer
25589
+ > button {
25328
25590
  min-height: 2.25rem;
25329
25591
  padding: 0 14px;
25330
25592
  color: var(--color-on-surface);
@@ -25336,18 +25598,23 @@ html {
25336
25598
  cursor: pointer;
25337
25599
  }
25338
25600
 
25339
- .modal-footer > button:last-child {
25601
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box)
25602
+ .modal-footer
25603
+ > button:last-child {
25340
25604
  color: var(--color-primary-content);
25341
25605
  background: var(--color-primary);
25342
25606
  border-color: var(--color-primary);
25343
25607
  }
25344
25608
 
25345
- .modal-footer > button:disabled {
25609
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box)
25610
+ .modal-footer
25611
+ > button:disabled {
25346
25612
  cursor: not-allowed;
25347
25613
  opacity: 0.55;
25348
25614
  }
25349
25615
 
25350
- .modal-close {
25616
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box)
25617
+ .modal-close {
25351
25618
  position: absolute;
25352
25619
  top: 12px;
25353
25620
  right: 12px;
@@ -25366,8 +25633,10 @@ html {
25366
25633
  cursor: pointer;
25367
25634
  }
25368
25635
 
25369
- .modal-close:hover,
25370
- .modal-close:focus-visible {
25636
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box)
25637
+ .modal-close:hover,
25638
+ :is(.modal-backdrop:not(dialog) > .modal:not(dialog), .react-modal-box)
25639
+ .modal-close:focus-visible {
25371
25640
  color: var(--color-on-surface);
25372
25641
  background: var(--color-surface-container);
25373
25642
  outline: none;
@@ -25554,23 +25823,6 @@ html {
25554
25823
  transform: translateY(-50%);
25555
25824
  }
25556
25825
 
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
25826
  .datepicker-clear {
25575
25827
  position: absolute;
25576
25828
  top: 50%;
@@ -25614,126 +25866,20 @@ html {
25614
25866
  vertical-align: middle;
25615
25867
  }
25616
25868
 
25617
- .popover-wrapper > .popover {
25618
- position: absolute;
25619
- z-index: 1050;
25620
- min-width: 12rem;
25869
+ .popover-wrapper > .popover[popover] {
25621
25870
  max-width: min(20rem, calc(100vw - 2rem));
25622
- padding: 0.875rem 1rem;
25623
25871
  color: var(--color-on-surface);
25624
25872
  font-size: 0.875rem;
25625
25873
  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
25874
  }
25644
25875
 
25645
- .popover-wrapper > .popover strong {
25876
+ .popover-wrapper > .popover > strong {
25646
25877
  display: block;
25647
25878
  margin-bottom: 0.25rem;
25648
25879
  color: var(--color-on-surface);
25649
25880
  font-weight: 600;
25650
25881
  }
25651
25882
 
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 {
25689
- transform: translateY(-50%);
25690
- }
25691
-
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);
25699
- }
25700
-
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);
25707
- }
25708
-
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);
25715
- }
25716
-
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);
25723
- }
25724
-
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);
25731
- }
25732
-
25733
- .popover-wrapper > .popover-no-arrow > .popover-arrow {
25734
- display: none;
25735
- }
25736
-
25737
25883
  .popconfirm {
25738
25884
  min-width: 14rem;
25739
25885
  }
@@ -26751,6 +26897,11 @@ html {
26751
26897
  --switch-content-color: var(--color-tertiary-content);
26752
26898
  }
26753
26899
 
26900
+ .switch:has(.switch-error) {
26901
+ --switch-color: var(--color-error);
26902
+ --switch-content-color: var(--color-error-content);
26903
+ }
26904
+
26754
26905
  .switch-input {
26755
26906
  position: absolute;
26756
26907
  width: 1px;
@@ -26816,6 +26967,10 @@ html {
26816
26967
  background-color: var(--color-surface);
26817
26968
  }
26818
26969
 
26970
+ .switch:has(.switch-input[aria-invalid="true"]) .switch-track {
26971
+ border-color: var(--color-error);
26972
+ }
26973
+
26819
26974
  .switch:has(.switch-input:focus-visible) .switch-track {
26820
26975
  box-shadow: 0 0 0 3px
26821
26976
  color-mix(in oklch, var(--switch-color) 22%, transparent);
@@ -27052,7 +27207,6 @@ html {
27052
27207
  .tab:hover:not(:disabled),
27053
27208
  .tab:focus-visible {
27054
27209
  color: var(--color-primary);
27055
- outline: none;
27056
27210
  }
27057
27211
 
27058
27212
  .tab-active,
@@ -27675,6 +27829,154 @@ html {
27675
27829
  }
27676
27830
  }
27677
27831
 
27832
+ .datepicker > button.datepicker-icon,
27833
+ .time-picker > button.time-picker-icon {
27834
+ padding: 0;
27835
+ background: transparent;
27836
+ cursor: pointer;
27837
+ pointer-events: auto;
27838
+ }
27839
+
27840
+ .datepicker > button.datepicker-icon {
27841
+ right: 0.375rem;
27842
+ width: 2rem;
27843
+ height: 2rem;
27844
+ border: 0;
27845
+ }
27846
+
27847
+ .datepicker > button.datepicker-icon:focus-visible,
27848
+ .time-picker > button.time-picker-icon:focus-visible {
27849
+ outline: 2px solid var(--color-primary);
27850
+ outline-offset: 3px;
27851
+ }
27852
+
27853
+ .datepicker > button.datepicker-icon:disabled,
27854
+ .time-picker > button.time-picker-icon:disabled {
27855
+ cursor: not-allowed;
27856
+ }
27857
+
27858
+ .datepicker > .datepicker-dropdown {
27859
+ position: absolute;
27860
+ top: calc(100% + 0.375rem);
27861
+ left: 0;
27862
+ z-index: 1050;
27863
+ display: block;
27864
+ box-sizing: border-box;
27865
+ width: 100%;
27866
+ min-width: 0;
27867
+ max-width: calc(100vw - 2rem);
27868
+ padding: 0;
27869
+ color: var(--color-on-surface);
27870
+ background: var(--color-surface);
27871
+ border: 1px solid var(--color-outline-variant);
27872
+ border-radius: var(--radius-md);
27873
+ box-shadow: var(--shadow-lg);
27874
+ }
27875
+
27876
+ .datepicker-dropdown > .calendar {
27877
+ width: 100%;
27878
+ border: 0;
27879
+ box-shadow: none;
27880
+ }
27881
+
27882
+ .datepicker-dropdown .calendar-header,
27883
+ .datepicker-dropdown .calendar-body {
27884
+ padding: 0.5rem;
27885
+ }
27886
+
27887
+ .datepicker-dropdown .calendar-header,
27888
+ .datepicker-dropdown .calendar-controls {
27889
+ gap: 0.375rem;
27890
+ }
27891
+
27892
+ .datepicker-dropdown .calendar-header button {
27893
+ padding-inline: 0.375rem;
27894
+ font-size: 0.75rem;
27895
+ }
27896
+
27897
+ .datepicker-dropdown .datepicker-footer,
27898
+ .datepicker-dropdown .datepicker-preset {
27899
+ padding: 0.5rem;
27900
+ }
27901
+
27902
+ .time-picker > .time-picker-panel {
27903
+ box-sizing: border-box;
27904
+ width: 100%;
27905
+ min-width: 0;
27906
+ max-width: calc(100vw - 2rem);
27907
+ }
27908
+
27909
+ .time-picker-columns {
27910
+ display: flex;
27911
+ gap: 0.25rem;
27912
+ }
27913
+
27914
+ .time-picker-column {
27915
+ flex: 1 1 0;
27916
+ min-width: 0;
27917
+ max-height: 12rem;
27918
+ overflow-y: auto;
27919
+ overscroll-behavior: contain;
27920
+ scrollbar-width: thin;
27921
+ }
27922
+
27923
+ .time-picker-option {
27924
+ display: block;
27925
+ width: 100%;
27926
+ min-height: 2rem;
27927
+ padding: 0.25rem;
27928
+ color: var(--color-on-surface);
27929
+ font: inherit;
27930
+ font-size: 0.8125rem;
27931
+ background: transparent;
27932
+ border: 0;
27933
+ border-radius: var(--radius-sm);
27934
+ cursor: pointer;
27935
+ }
27936
+
27937
+ .time-picker-option:hover:not(:disabled),
27938
+ .time-picker-option:focus-visible {
27939
+ color: var(--color-primary);
27940
+ background: var(--color-primary-container);
27941
+ outline: 2px solid var(--color-primary);
27942
+ outline-offset: -2px;
27943
+ }
27944
+
27945
+ .time-picker-option[aria-selected="true"] {
27946
+ color: var(--color-primary-content);
27947
+ background: var(--color-primary);
27948
+ }
27949
+
27950
+ .time-picker-option:disabled {
27951
+ color: var(--color-on-surface-variant);
27952
+ opacity: 0.5;
27953
+ cursor: not-allowed;
27954
+ }
27955
+
27956
+ .time-picker-panel .time-picker-footer {
27957
+ gap: 0.375rem;
27958
+ margin-top: 0.375rem;
27959
+ padding-top: 0.375rem;
27960
+ border-top: 1px solid var(--color-outline-variant);
27961
+ }
27962
+
27963
+ .time-picker-confirm {
27964
+ min-height: 2rem;
27965
+ padding: 0 0.625rem;
27966
+ color: var(--color-primary-content);
27967
+ font: inherit;
27968
+ font-size: 0.8125rem;
27969
+ background: var(--color-primary);
27970
+ border: 0;
27971
+ border-radius: var(--radius-sm);
27972
+ cursor: pointer;
27973
+ }
27974
+
27975
+ .time-picker-confirm:focus-visible {
27976
+ outline: 2px solid var(--color-primary);
27977
+ outline-offset: 2px;
27978
+ }
27979
+
27678
27980
  @media (prefers-reduced-motion: reduce) {
27679
27981
  .timeline-item-pending .timeline-marker {
27680
27982
  animation: none;
@@ -27691,7 +27993,7 @@ html {
27691
27993
  vertical-align: middle;
27692
27994
  }
27693
27995
 
27694
- .tooltip {
27996
+ .tooltip:where(:not([popover])) {
27695
27997
  position: absolute;
27696
27998
  z-index: 1070;
27697
27999
  display: inline-flex;
@@ -27716,61 +28018,61 @@ html {
27716
28018
  transform 150ms ease-in-out;
27717
28019
  }
27718
28020
 
27719
- .tooltip-show {
28021
+ .tooltip-show:where(:not([popover])) {
27720
28022
  opacity: 1;
27721
28023
  }
27722
28024
 
27723
- .tooltip-sm {
28025
+ .tooltip-sm:where(:not([popover])) {
27724
28026
  padding: 0.25rem 0.5rem;
27725
28027
  font-size: 0.6875rem;
27726
28028
  }
27727
28029
 
27728
- .tooltip-lg {
28030
+ .tooltip-lg:where(:not([popover])) {
27729
28031
  padding: 0.5rem 0.75rem;
27730
28032
  font-size: 0.8125rem;
27731
28033
  }
27732
28034
 
27733
- .tooltip-top {
28035
+ .tooltip-top:where(:not([popover])) {
27734
28036
  bottom: calc(100% + 0.5rem);
27735
28037
  left: 50%;
27736
28038
  transform: translate(-50%, 0.25rem);
27737
28039
  }
27738
28040
 
27739
- .tooltip-top.tooltip-show {
28041
+ .tooltip-top.tooltip-show:where(:not([popover])) {
27740
28042
  transform: translate(-50%, 0);
27741
28043
  }
27742
28044
 
27743
- .tooltip-bottom {
28045
+ .tooltip-bottom:where(:not([popover])) {
27744
28046
  top: calc(100% + 0.5rem);
27745
28047
  left: 50%;
27746
28048
  transform: translate(-50%, -0.25rem);
27747
28049
  }
27748
28050
 
27749
- .tooltip-bottom.tooltip-show {
28051
+ .tooltip-bottom.tooltip-show:where(:not([popover])) {
27750
28052
  transform: translate(-50%, 0);
27751
28053
  }
27752
28054
 
27753
- .tooltip-left {
28055
+ .tooltip-left:where(:not([popover])) {
27754
28056
  top: 50%;
27755
28057
  right: calc(100% + 0.5rem);
27756
28058
  transform: translate(0.25rem, -50%);
27757
28059
  }
27758
28060
 
27759
- .tooltip-left.tooltip-show {
28061
+ .tooltip-left.tooltip-show:where(:not([popover])) {
27760
28062
  transform: translate(0, -50%);
27761
28063
  }
27762
28064
 
27763
- .tooltip-right {
28065
+ .tooltip-right:where(:not([popover])) {
27764
28066
  top: 50%;
27765
28067
  left: calc(100% + 0.5rem);
27766
28068
  transform: translate(-0.25rem, -50%);
27767
28069
  }
27768
28070
 
27769
- .tooltip-right.tooltip-show {
28071
+ .tooltip-right.tooltip-show:where(:not([popover])) {
27770
28072
  transform: translate(0, -50%);
27771
28073
  }
27772
28074
 
27773
- .tooltip-arrow {
28075
+ :where(.tooltip:not([popover])) .tooltip-arrow {
27774
28076
  position: absolute;
27775
28077
  display: block;
27776
28078
  width: 0.5rem;
@@ -27780,43 +28082,53 @@ html {
27780
28082
  transform: rotate(45deg);
27781
28083
  }
27782
28084
 
27783
- .tooltip-top .tooltip-arrow {
28085
+ .tooltip-top:where(:not([popover])) .tooltip-arrow {
27784
28086
  bottom: -0.25rem;
27785
28087
  left: 50%;
27786
28088
  transform: translateX(-50%) rotate(45deg);
27787
28089
  }
27788
28090
 
27789
- .tooltip-bottom .tooltip-arrow {
28091
+ .tooltip-bottom:where(:not([popover])) .tooltip-arrow {
27790
28092
  top: -0.25rem;
27791
28093
  left: 50%;
27792
28094
  transform: translateX(-50%) rotate(45deg);
27793
28095
  }
27794
28096
 
27795
- .tooltip-left .tooltip-arrow {
28097
+ .tooltip-left:where(:not([popover])) .tooltip-arrow {
27796
28098
  top: 50%;
27797
28099
  right: -0.25rem;
27798
28100
  transform: translateY(-50%) rotate(45deg);
27799
28101
  }
27800
28102
 
27801
- .tooltip-right .tooltip-arrow {
28103
+ .tooltip-right:where(:not([popover])) .tooltip-arrow {
27802
28104
  top: 50%;
27803
28105
  left: -0.25rem;
27804
28106
  transform: translateY(-50%) rotate(45deg);
27805
28107
  }
27806
28108
 
27807
- .tooltip-no-arrow {
28109
+ .tooltip-no-arrow:where(:not([popover])) {
27808
28110
  margin: 0;
27809
28111
  }
27810
28112
 
27811
- .tooltip-no-arrow .tooltip-arrow {
28113
+ .tooltip-no-arrow:where(:not([popover])) .tooltip-arrow {
27812
28114
  display: none;
27813
28115
  }
27814
28116
 
27815
28117
  @media (prefers-reduced-motion: reduce) {
27816
- .tooltip {
28118
+ .tooltip:where(:not([popover])) {
27817
28119
  transition: none;
27818
28120
  }
27819
28121
  }
28122
+
28123
+ .tooltip-sm[popover] {
28124
+ padding: 0.25rem 0.5rem;
28125
+ font-size: 0.6875rem;
28126
+ }
28127
+
28128
+ .tooltip-lg[popover] {
28129
+ padding: 0.5rem 0.75rem;
28130
+ font-size: 0.8125rem;
28131
+ }
27820
28132
  }
27821
28133
 
27822
28134
  @layer components {
@@ -28274,6 +28586,42 @@ html {
28274
28586
  opacity: 0.55;
28275
28587
  }
28276
28588
 
28589
+ .tree-select-container > .tree-select-dropdown > .tree-select-search-input {
28590
+ box-sizing: border-box;
28591
+ display: block;
28592
+ width: 100%;
28593
+ min-width: 0;
28594
+ }
28595
+
28596
+ .tree-select-title {
28597
+ padding: 0;
28598
+ color: inherit;
28599
+ font: inherit;
28600
+ text-align: start;
28601
+ background: transparent;
28602
+ border: 0;
28603
+ cursor: pointer;
28604
+ }
28605
+
28606
+ .tree-select-title:focus-visible {
28607
+ outline: 2px solid var(--color-primary);
28608
+ outline-offset: 2px;
28609
+ }
28610
+
28611
+ .tree-select-title:disabled {
28612
+ cursor: not-allowed;
28613
+ }
28614
+
28615
+ .tree-select .tree-select-switcher {
28616
+ transform: none;
28617
+ }
28618
+
28619
+ .tree-select > .tree-select-clear {
28620
+ position: absolute;
28621
+ top: 1rem;
28622
+ right: 2.75rem;
28623
+ }
28624
+
28277
28625
  .tree-node-switcher {
28278
28626
  display: inline-grid;
28279
28627
  width: 1.5rem;
@@ -28745,6 +29093,7 @@ html {
28745
29093
  border-right-color: var(--dm-color-solid);
28746
29094
  }
28747
29095
 
29096
+ /* WORKAROUND(upstream): duskmoon-dev/duskmoonui#65 adds the missing accent, neutral, and base timeline marker classes. */
28748
29097
  :is(
28749
29098
  .timeline-marker-primary,
28750
29099
  .timeline-marker-secondary,
@@ -28826,56 +29175,201 @@ html {
28826
29175
  transparent 50%
28827
29176
  );
28828
29177
  }
29178
+ }
28829
29179
 
28830
- /* WORKAROUND(upstream): duskmoon-dev/duskmoonui#50 keeps the tail and caret separate. */
28831
- .chat-bubble-streaming::after {
28832
- content: none;
28833
- }
29180
+ /* JSON Schema renderer layout. */
29181
+ .schema-form {
29182
+ max-width: none;
29183
+ }
28834
29184
 
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
- }
29185
+ .schema-form .schema-object,
29186
+ .schema-form .schema-array {
29187
+ display: grid;
29188
+ gap: 1rem;
29189
+ min-width: 0;
29190
+ margin: 0;
29191
+ padding: 1rem;
29192
+ border: 1px solid var(--color-outline, currentColor);
29193
+ border-radius: 8px;
29194
+ }
28849
29195
 
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
- }
29196
+ .schema-form > .schema-object {
29197
+ padding: 0;
29198
+ border: 0;
29199
+ }
28865
29200
 
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
- }
29201
+ .schema-form .schema-object legend,
29202
+ .schema-form .schema-array legend {
29203
+ padding: 0 0.25rem;
29204
+ color: var(--color-on-surface);
29205
+ font-weight: 700;
29206
+ }
28875
29207
 
28876
- @media (prefers-reduced-motion: reduce) {
28877
- .chat-streaming-caret {
28878
- animation: none;
28879
- }
28880
- }
29208
+ .schema-form .schema-choice-group {
29209
+ display: grid;
29210
+ gap: 0.5rem;
29211
+ min-width: 0;
29212
+ margin: 0;
29213
+ padding: 0;
29214
+ border: 0;
29215
+ }
29216
+
29217
+ .schema-form .schema-choice-group legend {
29218
+ margin-bottom: 0.5rem;
29219
+ padding: 0;
29220
+ color: var(--color-on-surface);
29221
+ font-weight: 500;
29222
+ }
29223
+
29224
+ .schema-form .schema-choice-options {
29225
+ display: grid;
29226
+ justify-items: start;
29227
+ gap: 0.75rem;
29228
+ min-width: 0;
29229
+ }
29230
+
29231
+ .schema-form .schema-choice-horizontal .schema-choice-options {
29232
+ display: flex;
29233
+ flex-wrap: wrap;
29234
+ align-items: center;
29235
+ gap: 0.75rem 1rem;
29236
+ }
29237
+
29238
+ .schema-form .schema-choice-options > label {
29239
+ max-width: 100%;
29240
+ overflow-wrap: anywhere;
29241
+ }
29242
+
29243
+ .schema-form .schema-choice-group .schema-field-error {
29244
+ margin: 0;
29245
+ font-size: 0.75rem;
29246
+ }
29247
+
29248
+ .schema-form .schema-required::before {
29249
+ margin-right: 0.25rem;
29250
+ color: var(--color-error);
29251
+ content: "*";
29252
+ }
29253
+
29254
+ .schema-form .schema-description,
29255
+ .schema-form .form-item-extra {
29256
+ margin: 0;
29257
+ color: var(--color-on-surface-variant);
29258
+ font-size: 0.75rem;
29259
+ line-height: 1.4;
29260
+ }
29261
+
29262
+ .schema-form .form-item-extra p,
29263
+ .schema-form .form-item-help p {
29264
+ margin: 0;
29265
+ }
29266
+
29267
+ .schema-form .schema-array-item {
29268
+ display: grid;
29269
+ grid-template-columns: minmax(0, 1fr) auto;
29270
+ align-items: start;
29271
+ gap: 0.5rem;
29272
+ min-width: 0;
29273
+ }
29274
+
29275
+ .schema-form .schema-array-item > .schema-array-remove {
29276
+ grid-column: 2;
29277
+ grid-row: 1;
29278
+ align-self: center;
29279
+ }
29280
+
29281
+ .schema-form .schema-array-remove svg {
29282
+ display: block;
29283
+ }
29284
+
29285
+ /* Share the label and control rows so wrapped labels keep actions aligned. */
29286
+ .schema-form .schema-array-item:has(> .form-item) {
29287
+ grid-template-rows: auto;
29288
+ row-gap: 0.375rem;
29289
+ }
29290
+
29291
+ .schema-form
29292
+ .schema-array-item:has(
29293
+ > .form-item > :is(.form-item-help, .form-item-extra)
29294
+ ) {
29295
+ grid-template-rows: auto auto;
29296
+ }
29297
+
29298
+ .schema-form
29299
+ .schema-array-item:has(> .form-item > .form-item-help):has(
29300
+ > .form-item > .form-item-extra
29301
+ ) {
29302
+ grid-template-rows: auto auto auto;
29303
+ }
29304
+
29305
+ .schema-form .schema-array-item:has(> .form-item > .form-item-label) {
29306
+ grid-template-rows: auto auto;
29307
+ }
29308
+
29309
+ .schema-form
29310
+ .schema-array-item:has(> .form-item > .form-item-label):has(
29311
+ > .form-item > :is(.form-item-help, .form-item-extra)
29312
+ ) {
29313
+ grid-template-rows: auto auto auto;
29314
+ }
29315
+
29316
+ .schema-form
29317
+ .schema-array-item:has(> .form-item > .form-item-label):has(
29318
+ > .form-item > .form-item-help
29319
+ ):has(> .form-item > .form-item-extra) {
29320
+ grid-template-rows: auto auto auto auto;
29321
+ }
29322
+
29323
+ .schema-form .schema-array-item > .form-item {
29324
+ grid-column: 1;
29325
+ grid-row: 1 / -1;
29326
+ grid-template-rows: subgrid;
29327
+ }
29328
+
29329
+ .schema-form .schema-array-item > .form-item > .form-item-control {
29330
+ align-self: center;
29331
+ }
29332
+
29333
+ .schema-form
29334
+ .schema-array-item:has(> .form-item > .form-item-label)
29335
+ > .schema-array-remove {
29336
+ grid-row: 2;
29337
+ }
29338
+
29339
+ .schema-form .schema-array > button {
29340
+ justify-self: start;
29341
+ }
29342
+
29343
+ .schema-form .schema-form-actions {
29344
+ display: flex;
29345
+ flex-wrap: wrap;
29346
+ gap: 0.75rem;
29347
+ }
29348
+
29349
+ .schema-form [role="alert"] {
29350
+ color: var(--color-error, #b42318);
29351
+ }
29352
+
29353
+ /* Schema fields own their labels, including composite workflow controls. */
29354
+ .schema-form .schema-specialized-field {
29355
+ min-width: 0;
29356
+ margin: 0;
29357
+ padding: 0;
29358
+ border: 0;
29359
+ }
29360
+ .schema-form .schema-specialized-field > legend {
29361
+ margin-bottom: 0.5rem;
29362
+ font-weight: 500;
29363
+ }
29364
+ .schema-form .schema-widget {
29365
+ min-width: 0;
29366
+ }
29367
+ .schema-form .schema-widget-value {
29368
+ margin: 0.5rem 0 0;
29369
+ overflow-wrap: anywhere;
29370
+ font-size: 0.75rem;
29371
+ color: var(--color-on-surface-variant);
29372
+ }
29373
+ .schema-form .schema-widget > :is(.cascader-container, .tree-select) {
29374
+ width: 100%;
28881
29375
  }