@rogieking/figui3 6.9.9 → 6.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/fig-editor.css CHANGED
@@ -78,12 +78,6 @@ fig-fill-picker {
78
78
  width: 240px;
79
79
  padding: 0;
80
80
 
81
- & > fig-header {
82
- padding: var(--spacer-2);
83
- min-width: 0;
84
- overflow: hidden;
85
- }
86
-
87
81
  fig-tab {
88
82
  font-size: 0.6875rem;
89
83
  padding: var(--spacer-1) var(--spacer-1);
@@ -91,12 +85,6 @@ fig-fill-picker {
91
85
  & > fig-content {
92
86
  padding-bottom: var(--spacer-2-5);
93
87
  }
94
- .fig-fill-picker-type-label {
95
- font-size: var(--font-size-small);
96
- font-weight: var(--font-weight-medium);
97
- color: var(--figma-color-text);
98
- padding: var(--spacer-1) var(--spacer-2);
99
- }
100
88
 
101
89
  .fig-fill-picker-gamut {
102
90
  margin-left: auto;
package/fig-editor.js CHANGED
@@ -1439,28 +1439,6 @@ class FigFillPicker extends HTMLElement {
1439
1439
  <fig-preview class="fig-fill-picker-gradient-preview">
1440
1440
  <fig-input-gradient class="fig-fill-picker-gradient-bar-input" aria-label="Gradient stops" edit="true" mode="tip" size="large" value='${JSON.stringify({ type: "gradient", gradient: gradientToValueShape(this.#gradient) })}'></fig-input-gradient>
1441
1441
  </fig-preview>
1442
- <fig-field class="fig-fill-picker-gradient-interpolation">
1443
- <label>Mixing</label>
1444
- <fig-dropdown class="fig-fill-picker-gradient-space" label="Gradient mixing" full ${expAttr} value="${
1445
- this.#gradient.interpolationSpace === "oklch"
1446
- ? `oklch-${this.#gradient.hueInterpolation || "shorter"}`
1447
- : this.#gradient.interpolationSpace
1448
- }">
1449
- <optgroup label="sRGB">
1450
- <option value="srgb">Classic</option>
1451
- <option value="srgb-linear">Linear</option>
1452
- </optgroup>
1453
- <optgroup label="OKLab">
1454
- <option value="oklab">Perceptual</option>
1455
- </optgroup>
1456
- <optgroup label="OKLCH">
1457
- <option value="oklch-shorter">Shorter hue</option>
1458
- <option value="oklch-longer">Longer hue</option>
1459
- <option value="oklch-increasing">Increasing hue</option>
1460
- <option value="oklch-decreasing">Decreasing hue</option>
1461
- </optgroup>
1462
- </fig-dropdown>
1463
- </fig-field>
1464
1442
  <div class="fig-fill-picker-gradient-stops">
1465
1443
  <fig-header class="fig-fill-picker-gradient-stops-header" borderless>
1466
1444
  <span>Stops</span>
@@ -1470,6 +1448,32 @@ class FigFillPicker extends HTMLElement {
1470
1448
  </fig-header>
1471
1449
  <div class="fig-fill-picker-gradient-stops-list"></div>
1472
1450
  </div>
1451
+ <div class="fig-fill-picker-gradient-interpolation">
1452
+ <fig-header class="fig-fill-picker-gradient-interpolation-header" borderless>
1453
+ <span>Color interpolation</span>
1454
+ </fig-header>
1455
+ <fig-field class="fig-fill-picker-gradient-interpolation-field">
1456
+ <fig-dropdown class="fig-fill-picker-gradient-space" label="Color interpolation" full ${expAttr} value="${
1457
+ this.#gradient.interpolationSpace === "oklch"
1458
+ ? `oklch-${this.#gradient.hueInterpolation || "shorter"}`
1459
+ : this.#gradient.interpolationSpace
1460
+ }">
1461
+ <optgroup label="sRGB">
1462
+ <option value="srgb">Classic</option>
1463
+ <option value="srgb-linear">Linear</option>
1464
+ </optgroup>
1465
+ <optgroup label="OKLab">
1466
+ <option value="oklab">Perceptual</option>
1467
+ </optgroup>
1468
+ <optgroup label="OKLCH">
1469
+ <option value="oklch-shorter">Shorter hue</option>
1470
+ <option value="oklch-longer">Longer hue</option>
1471
+ <option value="oklch-increasing">Increasing hue</option>
1472
+ <option value="oklch-decreasing">Decreasing hue</option>
1473
+ </optgroup>
1474
+ </fig-dropdown>
1475
+ </fig-field>
1476
+ </div>
1473
1477
  `;
1474
1478
 
1475
1479
  this.#updateGradientUI();
package/fig-lab.css CHANGED
@@ -15,10 +15,15 @@ fig-field-slider {
15
15
  --fig-field-slider-elastic-origin: left center;
16
16
  --fig-field-slider-elastic-transition: 0.18s cubic-bezier(0.2, 1.45, 0.35, 1);
17
17
  --fig-field-slider-height: 2rem;
18
+ --fig-field-slider-vertical-padding: var(--spacer-1);
19
+ --fig-field-slider-horizontal-padding: var(--spacer-3);
18
20
  --figma-focus-outline-offset: 1px;
19
21
  --fig-field-slider-progress-shadow: inset 0px 0.75px 0px 0px light-dark(transparent, rgba(255, 255, 255, 0.1));
20
22
  --field-text-shadow: 0 1px 1.5px
21
23
  light-dark(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2));
24
+ --fig-field-slider-fig-slider-height: calc(var(--fig-field-slider-height) - var(--fig-field-slider-vertical-padding) * 2);
25
+ --fig-field-slider-fig-slider-thumb-height: calc(var(--fig-field-slider-fig-slider-height) - var(--spacer-2-5));
26
+
22
27
  display: block;
23
28
  position: relative;
24
29
  width: 100%;
@@ -26,6 +31,15 @@ fig-field-slider {
26
31
  border-radius: var(--radius-medium);
27
32
  transform-origin: var(--fig-field-slider-elastic-origin);
28
33
  transition: transform var(--fig-field-slider-elastic-transition);
34
+ padding-top: var(--fig-field-slider-vertical-padding);
35
+ padding-bottom: var(--fig-field-slider-vertical-padding);
36
+ padding-left: var(--fig-field-slider-horizontal-padding);
37
+ padding-right: var(--fig-field-slider-horizontal-padding);
38
+
39
+ &[size="large"]{
40
+ --fig-field-slider-vertical-padding: 0px;
41
+ --fig-field-slider-fig-slider-thumb-height: calc(var(--fig-field-slider-fig-slider-height) - var(--spacer-3));
42
+ }
29
43
 
30
44
  label {
31
45
  pointer-events: none;
@@ -57,7 +71,7 @@ fig-field-slider {
57
71
 
58
72
  fig-field:not([direction="vertical"]) {
59
73
  position: relative;
60
- padding-left: var(--spacer-2-5);
74
+ padding-left: var(--spacer-2);
61
75
  display: flex;
62
76
  height: 100%;
63
77
 
@@ -83,8 +97,8 @@ fig-field-slider {
83
97
  inset: 0;
84
98
  padding: 0;
85
99
  background-color: transparent;
86
- --slider-height: 2rem;
87
- --slider-field-height: 2rem;
100
+ --slider-height: var(--fig-field-slider-fig-slider-height);
101
+ --slider-field-height: calc(var(--fig-field-slider-height) - var(--fig-field-slider-vertical-padding) * 2);
88
102
  --slider-thumb-width: var(--spacer-1);
89
103
  --slider-thumb-color: light-dark(
90
104
  var(--figma-color-text-secondary),
@@ -94,7 +108,7 @@ fig-field-slider {
94
108
  var(--spacer-2) + (var(--spacer-3) - var(--spacer-2)) *
95
109
  min(var(--slider-complete), calc(1 - var(--slider-complete))) * 2
96
110
  );*/
97
- --slider-thumb-height: calc(var(--slider-height) - var(--spacer-3));
111
+ --slider-thumb-height: var(--fig-field-slider-fig-slider-thumb-height);
98
112
  --slider-border-radius: var(--radius-medium);
99
113
  --slider-tick-width: 0.125rem;
100
114
  --slider-tick-height: var(--spacer-2);
@@ -288,7 +302,7 @@ fig-field-slider {
288
302
  background-color: transparent;
289
303
  box-shadow: none !important;
290
304
  position: absolute;
291
- right: var(--spacer-1);
305
+ right: 0;
292
306
  width: fit-content;
293
307
  min-width: fit-content;
294
308
  max-width: max-content;
@@ -539,10 +553,18 @@ fig-input-oscillator {
539
553
 
540
554
  .fig-input-oscillator-svg-container {
541
555
  border-radius: var(--radius-medium);
542
- background: var(--figma-color-bg-secondary);
543
- padding: var(--spacer-3) var(--spacer-2);
556
+ padding: var(--spacer-3) var(--spacer-5);
544
557
  margin-bottom: var(--spacer-2);
545
558
  overflow: hidden;
559
+ position: relative;
560
+
561
+ &::before{
562
+ position: absolute;
563
+ inset: 0 var(--spacer-3);
564
+ content: "";
565
+ background: var(--figma-color-bg-secondary);
566
+ border-radius: var(--radius-medium);
567
+ }
546
568
 
547
569
  &:is(:hover, :active, :focus, :focus-visible, :focus-within) {
548
570
  overflow: visible;
@@ -557,6 +579,8 @@ fig-input-oscillator {
557
579
  width: 100%;
558
580
  aspect-ratio: var(--aspect-ratio);
559
581
  overflow: visible;
582
+ position: relative;
583
+ z-index: 1;
560
584
 
561
585
  .fig-input-oscillator-handle{
562
586
  opacity: 0;
@@ -612,59 +636,60 @@ fig-input-oscillator {
612
636
  }
613
637
  }
614
638
 
639
+ .fig-input-oscillator-frequency-handle {
640
+ cursor: ew-resize;
641
+
642
+ fig-handle,
643
+ fig-handle:hover,
644
+ fig-handle .fig-handle-hit-area,
645
+ fig-handle:hover .fig-handle-hit-area,
646
+ fig-handle:is(:active, .active, .dragging),
647
+ fig-handle:is(:active, .active, .dragging) .fig-handle-hit-area {
648
+ cursor: ew-resize !important;
649
+ }
650
+ }
651
+
652
+ .fig-input-oscillator-amplitude-handle {
653
+ cursor: ns-resize;
654
+
655
+ fig-handle,
656
+ fig-handle:hover,
657
+ fig-handle .fig-handle-hit-area,
658
+ fig-handle:hover .fig-handle-hit-area,
659
+ fig-handle:is(:active, .active, .dragging),
660
+ fig-handle:is(:active, .active, .dragging) .fig-handle-hit-area {
661
+ cursor: ns-resize !important;
662
+ }
663
+ }
664
+
615
665
  .fig-input-oscillator-waves {
616
666
  display: flex;
617
667
  flex-direction: column;
618
- gap: var(--spacer-2);
668
+ gap: 0;
619
669
  }
620
670
 
621
671
  .fig-input-oscillator-wave {
622
- padding: 0;
623
-
624
- > .fig-input-oscillator-wave-summary {
625
- min-height: var(--control-height);
626
- padding: 0;
627
-
628
- > label {
629
- display: inline-flex;
630
- align-items: center;
631
- gap: var(--spacer-1);
632
- min-width: 0;
672
+ margin-bottom: 0;
633
673
 
634
- > svg {
635
- flex: 0 0 auto;
636
- }
637
- }
638
-
639
- > .fig-input-oscillator-remove-button {
640
- margin-left: auto;
674
+ > fig-header {
675
+ .fig-input-oscillator-remove-button,
676
+ .fig-input-oscillator-add-type-button {
677
+ flex-shrink: 0;
641
678
  }
642
679
  }
643
680
  }
644
681
 
645
682
  .fig-input-oscillator-field {
646
- --fig-field-left-padding: 0;
647
- --fig-field-right-padding: 0;
648
-
649
- > fig-slider {
650
- min-width: 0;
651
- }
652
- }
653
-
654
- .fig-input-oscillator-add-wave {
655
- display: grid;
656
- grid-template-columns: auto;
657
- justify-content: end;
658
683
  width: 100%;
684
+ }
659
685
 
660
- > fig-button[type="select"] {
661
- > fig-dropdown,
662
- > fig-dropdown > select {
663
- width: 100%;
664
- height: 100%;
665
- min-width: 100%;
666
- padding: 0;
667
- }
686
+ .fig-input-oscillator-add-type-button {
687
+ > fig-dropdown,
688
+ > fig-dropdown > select {
689
+ width: 100%;
690
+ height: 100%;
691
+ min-width: 100%;
692
+ padding: 0;
668
693
  }
669
694
  }
670
695
 
@@ -674,3 +699,52 @@ fig-input-oscillator {
674
699
  }
675
700
  }
676
701
 
702
+ /* Reorder */
703
+ fig-reorder {
704
+ display: contents;
705
+ }
706
+
707
+ fig-reorder:not([handle]):not([disabled]):not([disabled="false"]) > [data-reorder-item] {
708
+ cursor: grab;
709
+ }
710
+
711
+ fig-reorder:not([handle]):not([disabled]):not([disabled="false"]) > [data-reorder-item] > fig-header,
712
+ fig-reorder:not([handle]):not([disabled]):not([disabled="false"]) > [data-reorder-item] > fig-header *,
713
+ fig-reorder:not([handle]):not([disabled]):not([disabled="false"]) > [data-reorder-item] > label {
714
+ cursor: grab;
715
+ }
716
+
717
+ fig-reorder > .dragging {
718
+ opacity: 0.6;
719
+ }
720
+
721
+ [data-reorder-handle] {
722
+ cursor: grab;
723
+ }
724
+
725
+ fig-reorder[disabled]:not([disabled="false"]) [data-reorder-handle] {
726
+ cursor: inherit;
727
+ }
728
+
729
+ body.fig-reorder-dragging,
730
+ body.fig-reorder-dragging * {
731
+ user-select: none !important;
732
+ -webkit-user-select: none !important;
733
+ cursor: grabbing !important;
734
+ }
735
+
736
+ .fig-reorder-indicator {
737
+ position: fixed;
738
+ pointer-events: none;
739
+ z-index: 10000;
740
+ background: var(--figma-color-border-strong);
741
+ }
742
+
743
+ .fig-reorder-indicator[data-axis="vertical"] {
744
+ height: 2px;
745
+ }
746
+
747
+ .fig-reorder-indicator[data-axis="horizontal"] {
748
+ width: 2px;
749
+ }
750
+