@flux-ui/components 3.0.0-next.72 → 3.0.0-next.74

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 (55) hide show
  1. package/dist/component/FluxFormField.vue.d.ts +2 -2
  2. package/dist/component/FluxKanbanColumn.vue.d.ts +1 -1
  3. package/dist/component/FluxSegmentedControl.vue.d.ts +18 -8
  4. package/dist/component/FluxSegmentedControlItem.vue.d.ts +20 -0
  5. package/dist/component/FluxSpacing.vue.d.ts +2 -1
  6. package/dist/component/index.d.ts +1 -1
  7. package/dist/component/primitive/FilterMenuRenderer.d.ts +3 -3
  8. package/dist/composable/index.d.ts +1 -0
  9. package/dist/composable/useSegmentedControlInjection.d.ts +2 -0
  10. package/dist/data/di.d.ts +10 -1
  11. package/dist/index.css +398 -368
  12. package/dist/index.js +1264 -1164
  13. package/dist/index.js.map +1 -1
  14. package/dist/util/index.d.ts +1 -0
  15. package/dist/util/sanitizeUrl.d.ts +7 -0
  16. package/package.json +9 -9
  17. package/src/component/FluxBoxedIcon.vue +1 -1
  18. package/src/component/FluxCalendar.vue +6 -6
  19. package/src/component/FluxColorPicker.vue +6 -6
  20. package/src/component/FluxDropZone.vue +0 -1
  21. package/src/component/FluxDynamicView.vue +2 -2
  22. package/src/component/FluxExpandableGroup.vue +0 -1
  23. package/src/component/FluxFilterBase.vue +11 -11
  24. package/src/component/FluxFormField.vue +4 -2
  25. package/src/component/FluxFormFieldAddition.vue +2 -2
  26. package/src/component/FluxInfo.vue +2 -2
  27. package/src/component/FluxInfoStack.vue +2 -2
  28. package/src/component/FluxKanbanColumn.vue +3 -5
  29. package/src/component/FluxLayerPane.vue +1 -1
  30. package/src/component/FluxPagination.vue +4 -4
  31. package/src/component/FluxPressable.vue +14 -5
  32. package/src/component/FluxSegmentedControl.vue +64 -67
  33. package/src/component/FluxSegmentedControlItem.vue +98 -0
  34. package/src/component/FluxSpacing.vue +5 -1
  35. package/src/component/FluxSplitButton.vue +2 -2
  36. package/src/component/FluxTable.vue +3 -1
  37. package/src/component/FluxToolbar.vue +1 -1
  38. package/src/component/index.ts +1 -1
  39. package/src/component/primitive/DialogLayout.vue +3 -3
  40. package/src/component/primitive/FilterBadge.vue +11 -2
  41. package/src/component/primitive/FilterMenuRenderer.ts +4 -4
  42. package/src/composable/index.ts +1 -0
  43. package/src/composable/useSegmentedControlInjection.ts +13 -0
  44. package/src/css/component/Form.module.scss +2 -2
  45. package/src/css/component/SegmentedControl.module.scss +53 -24
  46. package/src/css/component/Spinner.module.scss +1 -0
  47. package/src/css/component/Visual.module.scss +1 -0
  48. package/src/css/mixin/tree-node.scss +3 -3
  49. package/src/data/di.ts +13 -1
  50. package/src/data/iconRegistry.ts +1 -1
  51. package/src/util/createDialogRenderer.ts +1 -1
  52. package/src/util/index.ts +1 -0
  53. package/src/util/sanitizeUrl.ts +40 -0
  54. package/dist/component/FluxSegmentedView.vue.d.ts +0 -9
  55. package/src/component/FluxSegmentedView.vue +0 -15
package/dist/index.css CHANGED
@@ -440,6 +440,179 @@
440
440
  .icon-boxed-warning {
441
441
  background: var(--warning-100);
442
442
  color: var(--warning-900);
443
+ }.overlay-view {
444
+ position: fixed;
445
+ inset: 0;
446
+ height: 100dvh;
447
+ width: 100dvw;
448
+ }
449
+
450
+ .overlay-provider {
451
+ pointer-events: none;
452
+ z-index: 10000;
453
+ }
454
+
455
+ .overlay-shade {
456
+ background: var(--overlay);
457
+ backdrop-filter: blur(3px) grayscale(0.5) saturate(180%);
458
+ pointer-events: none;
459
+ transition: opacity 600ms var(--swift-out);
460
+ }
461
+
462
+ .overlay-provider:not(:has(.overlay:not(.overlay-transition-leave-active):not(.slide-over-transition-leave-active))) .overlay-shade {
463
+ opacity: 0;
464
+ }
465
+
466
+ .overlay {
467
+ position: fixed;
468
+ display: flex;
469
+ inset: 0;
470
+ height: 100dvh;
471
+ width: 100dvw;
472
+ outline: 0;
473
+ }
474
+ .overlay > .base-pane-structure {
475
+ display: flex;
476
+ margin: auto;
477
+ max-height: min(840px, 100dvh - 180px);
478
+ width: calc(100dvw - 90px);
479
+ flex-flow: column nowrap;
480
+ box-shadow: var(--shadow-lg);
481
+ overflow: auto;
482
+ transition: 420ms var(--swift-out);
483
+ transition-property: filter, scale;
484
+ }
485
+ .overlay > .base-pane-structure .pane-footer {
486
+ position: sticky;
487
+ bottom: 0;
488
+ margin-top: auto;
489
+ }
490
+ .overlay > .base-pane-structure::after {
491
+ position: absolute;
492
+ display: block;
493
+ inset: 0;
494
+ content: "";
495
+ background: var(--overlay-secondary);
496
+ opacity: 0;
497
+ pointer-events: none;
498
+ transition: opacity 600ms var(--swift-out);
499
+ z-index: 1000;
500
+ }
501
+ .overlay.is-current > .base-pane-structure {
502
+ pointer-events: auto;
503
+ }
504
+ .overlay:not(.is-current) > .base-pane-structure {
505
+ filter: blur(3px);
506
+ scale: 0.95;
507
+ }
508
+ .overlay:not(.is-current) > .base-pane-structure::after {
509
+ opacity: 1;
510
+ }
511
+
512
+ .overlay-small {
513
+ }
514
+ .overlay-small > .base-pane-structure {
515
+ max-width: 420px;
516
+ }
517
+
518
+ .overlay-medium {
519
+ }
520
+ .overlay-medium > .base-pane-structure {
521
+ max-width: 540px;
522
+ }
523
+
524
+ .overlay-large {
525
+ }
526
+ .overlay-large > .base-pane-structure {
527
+ max-width: 720px;
528
+ }
529
+
530
+ .slide-over {
531
+ justify-content: flex-end;
532
+ }
533
+ .slide-over > .base-pane-structure {
534
+ margin: 9px;
535
+ max-height: calc(100% - 18px);
536
+ width: min(100dvw, 720px);
537
+ contain: paint;
538
+ transition-duration: 600ms;
539
+ overflow: auto;
540
+ }
541
+ .slide-over > .base-pane-structure > .pane-header,
542
+ .slide-over > .base-pane-structure > .pane-footer {
543
+ position: sticky;
544
+ z-index: 100;
545
+ }
546
+ .slide-over > .base-pane-structure > .pane-header {
547
+ top: 0;
548
+ padding-bottom: 18px;
549
+ border-bottom: 1px solid var(--gray-100);
550
+ box-shadow: var(--shadow-xs);
551
+ }
552
+ .slide-over > .base-pane-structure > .pane-header:has(+ :where(.tabs, .tab-bar-default)) {
553
+ padding-bottom: 0;
554
+ border-bottom: 0;
555
+ box-shadow: none;
556
+ }
557
+ .slide-over > .base-pane-structure > .pane-header:not(:has(+ :where(.tabs, .tab-bar-default))) {
558
+ background: inherit;
559
+ }
560
+ .slide-over > .base-pane-structure > .pane-header + .tab-bar-default {
561
+ position: sticky;
562
+ top: 60px;
563
+ z-index: 100;
564
+ }
565
+ .slide-over > .base-pane-structure > .pane-header:has(.pane-header-caption > :is(span)) + .tab-bar-default {
566
+ top: 66px;
567
+ }
568
+ .slide-over > .base-pane-structure > .pane-footer {
569
+ bottom: 0;
570
+ }
571
+
572
+ .overlay-transition-enter-active,
573
+ .overlay-transition-leave-active {
574
+ transition: opacity 300ms var(--swift-out);
575
+ }
576
+ .overlay-transition-enter-active > .base-pane-structure,
577
+ .overlay-transition-leave-active > .base-pane-structure {
578
+ transition: 300ms var(--swift-out);
579
+ transition-property: opacity, scale;
580
+ }
581
+
582
+ .overlay-transition-enter-from {
583
+ opacity: 0;
584
+ }
585
+ .overlay-transition-enter-from > .base-pane-structure {
586
+ opacity: 0;
587
+ scale: 0.9;
588
+ }
589
+
590
+ .overlay-transition-leave-to {
591
+ opacity: 0;
592
+ }
593
+ .overlay-transition-leave-to > .base-pane-structure {
594
+ opacity: 0;
595
+ scale: 0.95;
596
+ }
597
+
598
+ .slide-over-transition-enter-active,
599
+ .slide-over-transition-leave-active {
600
+ transition: opacity 480ms var(--swift-out);
601
+ }
602
+ .slide-over-transition-enter-active > .base-pane-structure,
603
+ .slide-over-transition-leave-active > .base-pane-structure {
604
+ transition: 480ms var(--swift-out);
605
+ transition-property: opacity, transform;
606
+ }
607
+
608
+ .slide-over-transition-enter-from,
609
+ .slide-over-transition-leave-to {
610
+ opacity: 0;
611
+ transition-delay: 210ms;
612
+ }
613
+ .slide-over-transition-enter-from > .base-pane-structure,
614
+ .slide-over-transition-leave-to > .base-pane-structure {
615
+ transform: translate3d(100%, 0, 0);
443
616
  }.spinner {
444
617
  --track: var(--gray-100);
445
618
  --value: var(--primary-600);
@@ -665,179 +838,6 @@
665
838
  }
666
839
  .action-pane-body.pane-body {
667
840
  padding: 0;
668
- }.overlay-view {
669
- position: fixed;
670
- inset: 0;
671
- height: 100dvh;
672
- width: 100dvw;
673
- }
674
-
675
- .overlay-provider {
676
- pointer-events: none;
677
- z-index: 10000;
678
- }
679
-
680
- .overlay-shade {
681
- background: var(--overlay);
682
- backdrop-filter: blur(3px) grayscale(0.5) saturate(180%);
683
- pointer-events: none;
684
- transition: opacity 600ms var(--swift-out);
685
- }
686
-
687
- .overlay-provider:not(:has(.overlay:not(.overlay-transition-leave-active):not(.slide-over-transition-leave-active))) .overlay-shade {
688
- opacity: 0;
689
- }
690
-
691
- .overlay {
692
- position: fixed;
693
- display: flex;
694
- inset: 0;
695
- height: 100dvh;
696
- width: 100dvw;
697
- outline: 0;
698
- }
699
- .overlay > .base-pane-structure {
700
- display: flex;
701
- margin: auto;
702
- max-height: min(840px, 100dvh - 180px);
703
- width: calc(100dvw - 90px);
704
- flex-flow: column nowrap;
705
- box-shadow: var(--shadow-lg);
706
- overflow: auto;
707
- transition: 420ms var(--swift-out);
708
- transition-property: filter, scale;
709
- }
710
- .overlay > .base-pane-structure .pane-footer {
711
- position: sticky;
712
- bottom: 0;
713
- margin-top: auto;
714
- }
715
- .overlay > .base-pane-structure::after {
716
- position: absolute;
717
- display: block;
718
- inset: 0;
719
- content: "";
720
- background: var(--overlay-secondary);
721
- opacity: 0;
722
- pointer-events: none;
723
- transition: opacity 600ms var(--swift-out);
724
- z-index: 1000;
725
- }
726
- .overlay.is-current > .base-pane-structure {
727
- pointer-events: auto;
728
- }
729
- .overlay:not(.is-current) > .base-pane-structure {
730
- filter: blur(3px);
731
- scale: 0.95;
732
- }
733
- .overlay:not(.is-current) > .base-pane-structure::after {
734
- opacity: 1;
735
- }
736
-
737
- .overlay-small {
738
- }
739
- .overlay-small > .base-pane-structure {
740
- max-width: 420px;
741
- }
742
-
743
- .overlay-medium {
744
- }
745
- .overlay-medium > .base-pane-structure {
746
- max-width: 540px;
747
- }
748
-
749
- .overlay-large {
750
- }
751
- .overlay-large > .base-pane-structure {
752
- max-width: 720px;
753
- }
754
-
755
- .slide-over {
756
- justify-content: flex-end;
757
- }
758
- .slide-over > .base-pane-structure {
759
- margin: 9px;
760
- max-height: calc(100% - 18px);
761
- width: min(100dvw, 720px);
762
- contain: paint;
763
- transition-duration: 600ms;
764
- overflow: auto;
765
- }
766
- .slide-over > .base-pane-structure > .pane-header,
767
- .slide-over > .base-pane-structure > .pane-footer {
768
- position: sticky;
769
- z-index: 100;
770
- }
771
- .slide-over > .base-pane-structure > .pane-header {
772
- top: 0;
773
- padding-bottom: 18px;
774
- border-bottom: 1px solid var(--gray-100);
775
- box-shadow: var(--shadow-xs);
776
- }
777
- .slide-over > .base-pane-structure > .pane-header:has(+ :where(.tabs, .tab-bar-default)) {
778
- padding-bottom: 0;
779
- border-bottom: 0;
780
- box-shadow: none;
781
- }
782
- .slide-over > .base-pane-structure > .pane-header:not(:has(+ :where(.tabs, .tab-bar-default))) {
783
- background: inherit;
784
- }
785
- .slide-over > .base-pane-structure > .pane-header + .tab-bar-default {
786
- position: sticky;
787
- top: 60px;
788
- z-index: 100;
789
- }
790
- .slide-over > .base-pane-structure > .pane-header:has(.pane-header-caption > :is(span)) + .tab-bar-default {
791
- top: 66px;
792
- }
793
- .slide-over > .base-pane-structure > .pane-footer {
794
- bottom: 0;
795
- }
796
-
797
- .overlay-transition-enter-active,
798
- .overlay-transition-leave-active {
799
- transition: opacity 300ms var(--swift-out);
800
- }
801
- .overlay-transition-enter-active > .base-pane-structure,
802
- .overlay-transition-leave-active > .base-pane-structure {
803
- transition: 300ms var(--swift-out);
804
- transition-property: opacity, scale;
805
- }
806
-
807
- .overlay-transition-enter-from {
808
- opacity: 0;
809
- }
810
- .overlay-transition-enter-from > .base-pane-structure {
811
- opacity: 0;
812
- scale: 0.9;
813
- }
814
-
815
- .overlay-transition-leave-to {
816
- opacity: 0;
817
- }
818
- .overlay-transition-leave-to > .base-pane-structure {
819
- opacity: 0;
820
- scale: 0.95;
821
- }
822
-
823
- .slide-over-transition-enter-active,
824
- .slide-over-transition-leave-active {
825
- transition: opacity 480ms var(--swift-out);
826
- }
827
- .slide-over-transition-enter-active > .base-pane-structure,
828
- .slide-over-transition-leave-active > .base-pane-structure {
829
- transition: 480ms var(--swift-out);
830
- transition-property: opacity, transform;
831
- }
832
-
833
- .slide-over-transition-enter-from,
834
- .slide-over-transition-leave-to {
835
- opacity: 0;
836
- transition-delay: 210ms;
837
- }
838
- .slide-over-transition-enter-from > .base-pane-structure,
839
- .slide-over-transition-leave-to > .base-pane-structure {
840
- transform: translate3d(100%, 0, 0);
841
841
  }.primary-button {
842
842
  background: var(--primary-600);
843
843
  border-color: var(--primary-700);
@@ -2723,8 +2723,8 @@
2723
2723
 
2724
2724
  .form-field-header {
2725
2725
  display: flex;
2726
- margin-bottom: 0;
2727
2726
  width: 100%;
2727
+ margin-bottom: 0;
2728
2728
  align-items: center;
2729
2729
  align-self: flex-start;
2730
2730
  gap: 6px;
@@ -2889,9 +2889,9 @@
2889
2889
  border-radius: var(--radius-half);
2890
2890
  }
2891
2891
  .form-input-native::-webkit-color-swatch-wrapper {
2892
+ width: calc(100% + 24px);
2892
2893
  margin: 0 -12px;
2893
2894
  padding: 3px;
2894
- width: calc(100% + 24px);
2895
2895
  }
2896
2896
 
2897
2897
  .form-input-native-has-icon-leading {
@@ -3858,187 +3858,64 @@
3858
3858
  }
3859
3859
 
3860
3860
  .comment:not(.is-received) .comment-content {
3861
- border-bottom-right-radius: var(--radius);
3862
- }
3863
-
3864
- .comment.is-received .comment-content {
3865
- background: var(--gray-50);
3866
- border-color: var(--gray-200);
3867
- border-bottom-left-radius: var(--radius);
3868
- }
3869
-
3870
- .comment.is-typing .comment-content {
3871
- width: min-content;
3872
- }
3873
-
3874
- .comment-typing {
3875
- display: block;
3876
- margin: 6px;
3877
- height: 6px;
3878
- width: 6px;
3879
- border-radius: 6px;
3880
- animation: comment-typing 1s linear infinite both;
3881
- }
3882
-
3883
- .comment-footer {
3884
- display: flex;
3885
- align-items: center;
3886
- gap: 12px;
3887
- justify-content: flex-end;
3888
- font-size: 12px;
3889
- font-weight: 500;
3890
- }
3891
- .comment-footer span {
3892
- margin-right: auto;
3893
- }
3894
- .comment-footer time {
3895
- color: var(--foreground-secondary);
3896
- }
3897
-
3898
- @keyframes comment-typing {
3899
- 0%, 80%, 100% {
3900
- background: var(--gray-200);
3901
- box-shadow: -9px 0 var(--gray-200), 9px 0 var(--gray-200);
3902
- translate: 0 0;
3903
- }
3904
- 20% {
3905
- background: var(--gray-200);
3906
- box-shadow: -9px -4px var(--gray-300), 9px 0 var(--gray-200);
3907
- translate: 0 0;
3908
- }
3909
- 40% {
3910
- background: var(--gray-300);
3911
- box-shadow: -9px 4px var(--gray-200), 9px 4px var(--gray-200);
3912
- translate: 0 -4px;
3913
- }
3914
- 60% {
3915
- background: var(--gray-200);
3916
- box-shadow: -9px 0 var(--gray-200), 9px -4px var(--gray-300);
3917
- translate: 0 0;
3918
- }
3919
- }.slider {
3920
- position: relative;
3921
- display: flex;
3922
- margin: 6px;
3923
- flex-flow: column;
3924
- gap: 9px;
3925
- touch-action: pan-y;
3926
- }
3927
- .slider.is-disabled {
3928
- cursor: not-allowed;
3929
- }
3930
- .slider.is-dragging {
3931
- cursor: grabbing;
3932
- }
3933
-
3934
- .slider-thumb {
3935
- position: absolute;
3936
- top: 50%;
3937
- height: 24px;
3938
- width: 24px;
3939
- padding: 0;
3940
- background: var(--surface);
3941
- background-clip: padding-box;
3942
- border: 1px solid var(--surface-stroke-out);
3943
- border-radius: var(--radius-full);
3944
- box-shadow: var(--shadow-sm);
3945
- cursor: grab;
3946
- outline: 0;
3947
- translate: -50% -50%;
3948
- transition: var(--transition-default);
3949
- transition-property: outline-color, outline-offset;
3950
- outline: 2px solid rgb(from var(--primary-600) r g b/0);
3951
- outline-offset: 0;
3952
- }
3953
- .slider-thumb:focus-visible {
3954
- outline-color: var(--primary-600);
3955
- outline-offset: 2px;
3956
- }
3957
- @media (hover: hover) {
3958
- .slider-thumb:hover {
3959
- background-color: var(--surface-hover);
3960
- }
3961
- }
3962
- .slider-thumb.is-disabled {
3963
- background-color: var(--surface-disabled);
3964
- box-shadow: none;
3965
- pointer-events: none;
3966
- }
3967
- .slider-thumb.is-dragging {
3968
- box-shadow: var(--shadow-md);
3969
- cursor: grabbing;
3970
- }
3971
-
3972
- .slider-track {
3973
- position: relative;
3974
- height: 12px;
3975
- background: var(--gray-50);
3976
- background-clip: padding-box;
3977
- border-radius: var(--radius-half);
3978
- box-shadow: inset 0 0 0 1px var(--surface-stroke-out);
3979
- }
3980
-
3981
- .slider-track-value {
3982
- position: absolute;
3983
- display: block;
3984
- top: 0;
3985
- height: inherit;
3986
- background: var(--primary-600);
3987
- border-radius: inherit;
3988
- }
3989
-
3990
- .slider.is-disabled .slider-track-value {
3991
- background: var(--gray-300);
3992
- }
3993
-
3994
- .tick {
3995
- position: absolute;
3996
- left: calc(var(--position) * 100% - 1px);
3997
- bottom: 0;
3998
- height: 9px;
3999
- width: 2px;
4000
- background: var(--gray-300);
4001
- border-radius: var(--radius-full);
4002
- color: var(--foreground-prominent);
4003
- font-size: 10px;
4004
- font-weight: 600;
4005
- pointer-events: none;
3861
+ border-bottom-right-radius: var(--radius);
4006
3862
  }
4007
3863
 
4008
- .tick-large {
4009
- }
4010
- .tick-large :is(span) {
4011
- position: relative;
4012
- display: inline-block;
4013
- translate: -50% -100%;
3864
+ .comment.is-received .comment-content {
3865
+ background: var(--gray-50);
3866
+ border-color: var(--gray-200);
3867
+ border-bottom-left-radius: var(--radius);
4014
3868
  }
4015
3869
 
4016
- .tick-small {
4017
- height: 6px;
4018
- opacity: 0.5;
3870
+ .comment.is-typing .comment-content {
3871
+ width: min-content;
4019
3872
  }
4020
3873
 
4021
- .ticks {
4022
- position: relative;
3874
+ .comment-typing {
4023
3875
  display: block;
4024
- height: 21px;
4025
- }.coordinate-picker {
4026
- position: relative;
4027
- aspect-ratio: 5/3;
4028
- background: var(--gray-50);
4029
- border: 1px solid var(--surface-stroke-out);
4030
- border-radius: var(--radius-half);
4031
- z-index: 0;
3876
+ margin: 6px;
3877
+ height: 6px;
3878
+ width: 6px;
3879
+ border-radius: 6px;
3880
+ animation: comment-typing 1s linear infinite both;
4032
3881
  }
4033
3882
 
4034
- .coordinate-picker-thumb {
4035
- z-index: 1;
3883
+ .comment-footer {
3884
+ display: flex;
3885
+ align-items: center;
3886
+ gap: 12px;
3887
+ justify-content: flex-end;
3888
+ font-size: 12px;
3889
+ font-weight: 500;
4036
3890
  }
4037
- .coordinate-picker-thumb.is-disabled {
4038
- counter-reset: t;
3891
+ .comment-footer span {
3892
+ margin-right: auto;
4039
3893
  }
4040
- .coordinate-picker-thumb.is-dragging {
4041
- counter-reset: t;
3894
+ .comment-footer time {
3895
+ color: var(--foreground-secondary);
3896
+ }
3897
+
3898
+ @keyframes comment-typing {
3899
+ 0%, 80%, 100% {
3900
+ background: var(--gray-200);
3901
+ box-shadow: -9px 0 var(--gray-200), 9px 0 var(--gray-200);
3902
+ translate: 0 0;
3903
+ }
3904
+ 20% {
3905
+ background: var(--gray-200);
3906
+ box-shadow: -9px -4px var(--gray-300), 9px 0 var(--gray-200);
3907
+ translate: 0 0;
3908
+ }
3909
+ 40% {
3910
+ background: var(--gray-300);
3911
+ box-shadow: -9px 4px var(--gray-200), 9px 4px var(--gray-200);
3912
+ translate: 0 -4px;
3913
+ }
3914
+ 60% {
3915
+ background: var(--gray-200);
3916
+ box-shadow: -9px 0 var(--gray-200), 9px -4px var(--gray-300);
3917
+ translate: 0 0;
3918
+ }
4042
3919
  }.filter {
4043
3920
  max-height: 50dvh;
4044
3921
  max-width: 100%;
@@ -4455,6 +4332,112 @@
4455
4332
  .expandable-body > .menu > :where(.divider, .separator) {
4456
4333
  margin-left: 18px;
4457
4334
  margin-right: 18px;
4335
+ }.slider {
4336
+ position: relative;
4337
+ display: flex;
4338
+ margin: 6px;
4339
+ flex-flow: column;
4340
+ gap: 9px;
4341
+ touch-action: pan-y;
4342
+ }
4343
+ .slider.is-disabled {
4344
+ cursor: not-allowed;
4345
+ }
4346
+ .slider.is-dragging {
4347
+ cursor: grabbing;
4348
+ }
4349
+
4350
+ .slider-thumb {
4351
+ position: absolute;
4352
+ top: 50%;
4353
+ height: 24px;
4354
+ width: 24px;
4355
+ padding: 0;
4356
+ background: var(--surface);
4357
+ background-clip: padding-box;
4358
+ border: 1px solid var(--surface-stroke-out);
4359
+ border-radius: var(--radius-full);
4360
+ box-shadow: var(--shadow-sm);
4361
+ cursor: grab;
4362
+ outline: 0;
4363
+ translate: -50% -50%;
4364
+ transition: var(--transition-default);
4365
+ transition-property: outline-color, outline-offset;
4366
+ outline: 2px solid rgb(from var(--primary-600) r g b/0);
4367
+ outline-offset: 0;
4368
+ }
4369
+ .slider-thumb:focus-visible {
4370
+ outline-color: var(--primary-600);
4371
+ outline-offset: 2px;
4372
+ }
4373
+ @media (hover: hover) {
4374
+ .slider-thumb:hover {
4375
+ background-color: var(--surface-hover);
4376
+ }
4377
+ }
4378
+ .slider-thumb.is-disabled {
4379
+ background-color: var(--surface-disabled);
4380
+ box-shadow: none;
4381
+ pointer-events: none;
4382
+ }
4383
+ .slider-thumb.is-dragging {
4384
+ box-shadow: var(--shadow-md);
4385
+ cursor: grabbing;
4386
+ }
4387
+
4388
+ .slider-track {
4389
+ position: relative;
4390
+ height: 12px;
4391
+ background: var(--gray-50);
4392
+ background-clip: padding-box;
4393
+ border-radius: var(--radius-half);
4394
+ box-shadow: inset 0 0 0 1px var(--surface-stroke-out);
4395
+ }
4396
+
4397
+ .slider-track-value {
4398
+ position: absolute;
4399
+ display: block;
4400
+ top: 0;
4401
+ height: inherit;
4402
+ background: var(--primary-600);
4403
+ border-radius: inherit;
4404
+ }
4405
+
4406
+ .slider.is-disabled .slider-track-value {
4407
+ background: var(--gray-300);
4408
+ }
4409
+
4410
+ .tick {
4411
+ position: absolute;
4412
+ left: calc(var(--position) * 100% - 1px);
4413
+ bottom: 0;
4414
+ height: 9px;
4415
+ width: 2px;
4416
+ background: var(--gray-300);
4417
+ border-radius: var(--radius-full);
4418
+ color: var(--foreground-prominent);
4419
+ font-size: 10px;
4420
+ font-weight: 600;
4421
+ pointer-events: none;
4422
+ }
4423
+
4424
+ .tick-large {
4425
+ }
4426
+ .tick-large :is(span) {
4427
+ position: relative;
4428
+ display: inline-block;
4429
+ translate: -50% -100%;
4430
+ }
4431
+
4432
+ .tick-small {
4433
+ height: 6px;
4434
+ opacity: 0.5;
4435
+ }
4436
+
4437
+ .ticks {
4438
+ position: relative;
4439
+ display: block;
4440
+ height: 21px;
4458
4441
  }.tree-node {
4459
4442
  display: flex;
4460
4443
  width: 100%;
@@ -4485,12 +4468,12 @@
4485
4468
  pointer-events: none;
4486
4469
  }
4487
4470
  .tree-indent.has-line::before {
4488
- content: "";
4489
4471
  position: absolute;
4490
4472
  top: 0;
4491
4473
  bottom: 0;
4492
4474
  left: 9px;
4493
4475
  width: 1px;
4476
+ content: "";
4494
4477
  background: var(--surface-stroke);
4495
4478
  }
4496
4479
 
@@ -4502,21 +4485,21 @@
4502
4485
  pointer-events: none;
4503
4486
  }
4504
4487
  .tree-connector:not(.is-last)::before {
4505
- content: "";
4506
4488
  position: absolute;
4507
4489
  top: 0;
4508
4490
  bottom: 0;
4509
4491
  left: 9px;
4510
4492
  width: 1px;
4493
+ content: "";
4511
4494
  background: var(--surface-stroke);
4512
4495
  }
4513
4496
  .tree-connector::after {
4514
- content: "";
4515
4497
  position: absolute;
4516
4498
  top: 0;
4517
4499
  bottom: 50%;
4518
4500
  left: 9px;
4519
4501
  right: 0;
4502
+ content: "";
4520
4503
  border-left: 1px solid var(--surface-stroke);
4521
4504
  border-bottom: 1px solid var(--surface-stroke);
4522
4505
  border-bottom-left-radius: 6px;
@@ -4616,6 +4599,23 @@
4616
4599
 
4617
4600
  .separator-vertical {
4618
4601
  width: 1px;
4602
+ }.coordinate-picker {
4603
+ position: relative;
4604
+ aspect-ratio: 5/3;
4605
+ background: var(--gray-50);
4606
+ border: 1px solid var(--surface-stroke-out);
4607
+ border-radius: var(--radius-half);
4608
+ z-index: 0;
4609
+ }
4610
+
4611
+ .coordinate-picker-thumb {
4612
+ z-index: 1;
4613
+ }
4614
+ .coordinate-picker-thumb.is-disabled {
4615
+ counter-reset: t;
4616
+ }
4617
+ .coordinate-picker-thumb.is-dragging {
4618
+ counter-reset: t;
4619
4619
  }.color-picker {
4620
4620
  --transparent: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMElEQVQ4T2N89uzZfwY8QFJSEp80A+OoAcMiDP7//483HTx//hx/Ohg1gIFx6IcBALl+VXknOCvFAAAAAElFTkSuQmCC);
4621
4621
  display: flex;
@@ -6645,10 +6645,11 @@ tfoot .table-cell {
6645
6645
  }.segmented-control {
6646
6646
  position: relative;
6647
6647
  align-items: center;
6648
- gap: 1px;
6648
+ gap: 3px;
6649
+ padding: 3px;
6649
6650
  background: var(--gray-50);
6650
6651
  border: 1px solid var(--surface-stroke);
6651
- border-radius: var(--radius);
6652
+ border-radius: var(--radius-full);
6652
6653
  }
6653
6654
 
6654
6655
  .segmented-control-fill {
@@ -6662,60 +6663,89 @@ tfoot .table-cell {
6662
6663
 
6663
6664
  .segmented-control-highlight {
6664
6665
  position: absolute;
6665
- top: 0;
6666
- bottom: 0;
6666
+ top: 3px;
6667
+ bottom: 3px;
6667
6668
  background: var(--surface);
6668
- border-radius: calc(var(--radius) - 2px);
6669
- box-shadow: var(--shadow-sm);
6669
+ border-radius: var(--radius-full);
6670
+ box-shadow: var(--shadow-md);
6670
6671
  outline: 1px solid var(--surface-stroke);
6671
6672
  pointer-events: none;
6672
6673
  transition: 300ms var(--swift-out);
6673
6674
  transition-property: left, width;
6674
- translate: -1px 0;
6675
6675
  }
6676
6676
 
6677
6677
  .segmented-control-item {
6678
+ position: relative;
6678
6679
  display: flex;
6679
- height: 36px;
6680
- padding-left: 12px;
6681
- padding-right: 12px;
6682
6680
  align-items: center;
6683
6681
  flex: 1 1 0;
6684
- gap: 9px;
6685
6682
  justify-content: center;
6686
6683
  background: none;
6687
6684
  border: 0;
6688
- border-radius: var(--radius);
6685
+ border-radius: var(--radius-full);
6689
6686
  color: var(--foreground);
6690
6687
  cursor: pointer;
6691
6688
  font-weight: 500;
6692
6689
  text-align: center;
6693
- transition: 300ms var(--swift-out);
6694
- transition-property: background, color;
6690
+ transition: color 300ms var(--swift-out);
6691
+ white-space: nowrap;
6695
6692
  }
6696
6693
  @media (hover: hover) {
6697
6694
  .segmented-control-item:hover {
6698
- background: var(--gray-100);
6695
+ color: var(--foreground-prominent);
6699
6696
  }
6700
6697
  }
6698
+ .segmented-control-item {
6699
+ outline: 2px solid rgb(from var(--primary-600) r g b/0);
6700
+ outline-offset: 0;
6701
+ }
6702
+ .segmented-control-item:focus-visible {
6703
+ outline-color: var(--primary-600);
6704
+ outline-offset: 3px;
6705
+ }
6701
6706
  .segmented-control-item.is-active {
6702
- background: none;
6703
6707
  color: var(--foreground-prominent);
6704
6708
  cursor: default;
6705
6709
  }
6710
+ .segmented-control-item:disabled {
6711
+ opacity: 0.5;
6712
+ pointer-events: none;
6713
+ }
6706
6714
  .segmented-control-item > * {
6707
6715
  position: relative;
6716
+ z-index: 1;
6708
6717
  }
6709
-
6710
- .segmented-control-separator {
6718
+ .segmented-control-item + .segmented-control-item::before {
6719
+ content: "";
6720
+ position: absolute;
6721
+ top: 50%;
6722
+ left: -2px;
6711
6723
  height: 15px;
6712
6724
  width: 1px;
6713
- flex-shrink: 0;
6714
6725
  background: var(--surface-stroke);
6715
6726
  transition: opacity 300ms var(--swift-out);
6727
+ translate: 0 -50%;
6716
6728
  }
6717
- .segmented-control-separator.is-active {
6729
+ .segmented-control-item.is-active::before, .segmented-control-item.is-active + .segmented-control-item::before {
6718
6730
  opacity: 0;
6731
+ }
6732
+
6733
+ .is-small {
6734
+ height: 30px;
6735
+ padding: 0 12px;
6736
+ gap: 9px;
6737
+ }
6738
+
6739
+ .is-medium {
6740
+ height: 36px;
6741
+ padding: 0 15px;
6742
+ gap: 9px;
6743
+ }
6744
+
6745
+ .is-large {
6746
+ height: 48px;
6747
+ padding: 0 21px;
6748
+ gap: 12px;
6719
6749
  }.split-view {
6720
6750
  display: grid;
6721
6751
  width: 100%;