@rogieking/figui3 6.9.5 → 6.9.6

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-lab.css CHANGED
@@ -113,6 +113,13 @@ fig-field-slider {
113
113
  0px
114
114
  );
115
115
  --slider-thumb-travel-offset: var(--slider-thumb-edge-offset);
116
+ --fig-field-slider-progress-offset: calc(
117
+ min(var(--slider-complete), calc(1 - var(--slider-complete))) *
118
+ var(--spacer-2)
119
+ );
120
+ --fig-field-slider-progress-percent: calc(
121
+ var(--slider-percent) + var(--fig-field-slider-progress-offset)
122
+ );
116
123
  --slider-handle-shadow:
117
124
  inset 0 0 0 var(--slider-thumb-height) var(--slider-thumb-color),
118
125
  var(--handle-shadow) !important;
@@ -127,9 +134,8 @@ fig-field-slider {
127
134
  calc(var(--slider-percent) - var(--start-percent)),
128
135
  calc(var(--start-percent) - var(--slider-percent))
129
136
  );
130
- --slider-delta-right-inset: max(var(--slider-delta-direction, 1), 0);
131
137
  --slider-thumb-travel-offset: calc(
132
- var(--slider-thumb-edge-offset) * var(--slider-delta-right-inset)
138
+ (var(--slider-complete) - 1) * var(--spacer-2)
133
139
  );
134
140
  }
135
141
 
@@ -181,7 +187,7 @@ fig-field-slider {
181
187
  }
182
188
 
183
189
  &:not([type="delta"]) .fig-slider-input-container::before {
184
- width: var(--slider-percent) !important;
190
+ width: var(--fig-field-slider-progress-percent) !important;
185
191
  }
186
192
 
187
193
  &[type="delta"] .fig-slider-input-container::before {
@@ -240,17 +246,17 @@ fig-field-slider {
240
246
  mask-image: linear-gradient(
241
247
  to right,
242
248
  transparent 0%,
243
- rgba(0, 0, 0, 0.16) calc(var(--slider-percent) - var(--fig-field-slider-hue-fade-size)),
244
- black var(--slider-percent),
245
- rgba(0, 0, 0, 0.16) calc(var(--slider-percent) + var(--fig-field-slider-hue-fade-size)),
249
+ rgba(0, 0, 0, 0.16) calc(var(--fig-field-slider-progress-percent) - var(--fig-field-slider-hue-fade-size)),
250
+ black var(--fig-field-slider-progress-percent),
251
+ rgba(0, 0, 0, 0.16) calc(var(--fig-field-slider-progress-percent) + var(--fig-field-slider-hue-fade-size)),
246
252
  transparent 100%
247
253
  );
248
254
  -webkit-mask-image: linear-gradient(
249
255
  to right,
250
256
  transparent 0%,
251
- rgba(0, 0, 0, 0.16) calc(var(--slider-percent) - var(--fig-field-slider-hue-fade-size)),
252
- black var(--slider-percent),
253
- rgba(0, 0, 0, 0.16) calc(var(--slider-percent) + var(--fig-field-slider-hue-fade-size)),
257
+ rgba(0, 0, 0, 0.16) calc(var(--fig-field-slider-progress-percent) - var(--fig-field-slider-hue-fade-size)),
258
+ black var(--fig-field-slider-progress-percent),
259
+ rgba(0, 0, 0, 0.16) calc(var(--fig-field-slider-progress-percent) + var(--fig-field-slider-hue-fade-size)),
254
260
  transparent 100%
255
261
  );
256
262
  }
@@ -523,3 +529,149 @@ fig-input-angle {
523
529
  }
524
530
  }
525
531
 
532
+ /* Oscillator Input */
533
+ fig-input-oscillator {
534
+ display: flex;
535
+ flex-direction: column;
536
+ width: 100%;
537
+ --aspect-ratio: 2 / 1;
538
+ --oscillator-stroke-width: 1;
539
+ --fig-input-oscillator-playhead-radius: 4px;
540
+
541
+ .fig-input-oscillator-svg-container {
542
+ border-radius: var(--radius-medium);
543
+ background: var(--figma-color-bg-secondary);
544
+ padding: var(--spacer-3) var(--spacer-2);
545
+ margin-bottom: var(--spacer-2);
546
+ overflow: hidden;
547
+
548
+ &:is(:hover, :active, :focus, :focus-visible, :focus-within) {
549
+ overflow: visible;
550
+ }
551
+ path{
552
+ stroke: var(--figma-color-border-strong);
553
+ }
554
+ }
555
+
556
+ .fig-input-oscillator-svg {
557
+ display: block;
558
+ width: 100%;
559
+ aspect-ratio: var(--aspect-ratio);
560
+ overflow: visible;
561
+
562
+ .fig-input-oscillator-handle{
563
+ opacity: 0;
564
+ }
565
+ &:hover,
566
+ &:focus-within,
567
+ &.dragging{
568
+ .fig-input-oscillator-handle{
569
+ opacity: 1;
570
+ }
571
+ }
572
+ }
573
+
574
+ .fig-input-oscillator-bounds {
575
+ fill: transparent;
576
+ }
577
+
578
+ .fig-input-oscillator-baseline {
579
+ pointer-events: none;
580
+ stroke: var(--figma-color-bordertranslucent);
581
+ stroke-width: var(--oscillator-stroke-width);
582
+ stroke-linecap: round;
583
+ }
584
+
585
+ .fig-input-oscillator-path {
586
+ pointer-events: none;
587
+ fill: none;
588
+ stroke: var(--figma-color-text);
589
+ stroke-width: var(--oscillator-stroke-width);
590
+ stroke-linejoin: round;
591
+ stroke-linecap: round;
592
+ }
593
+
594
+ .fig-input-oscillator-playhead {
595
+ pointer-events: none;
596
+ r: var(--fig-input-oscillator-playhead-radius);
597
+ fill: var(--handle-color);
598
+ stroke: var(--figma-color-bg);
599
+ stroke-width: 1px;
600
+ }
601
+
602
+ .fig-input-oscillator-handle {
603
+ overflow: visible;
604
+ pointer-events: all;
605
+ cursor: default;
606
+
607
+ .fig-input-oscillator-handle-inner {
608
+ display: grid;
609
+ place-items: center;
610
+ width: 100%;
611
+ height: 100%;
612
+ overflow: visible;
613
+ }
614
+ }
615
+
616
+ .fig-input-oscillator-waves {
617
+ display: flex;
618
+ flex-direction: column;
619
+ gap: var(--spacer-2);
620
+ }
621
+
622
+ .fig-input-oscillator-wave {
623
+ padding: 0;
624
+
625
+ > .fig-input-oscillator-wave-summary {
626
+ min-height: var(--control-height);
627
+ padding: 0;
628
+
629
+ > label {
630
+ display: inline-flex;
631
+ align-items: center;
632
+ gap: var(--spacer-1);
633
+ min-width: 0;
634
+
635
+ > svg {
636
+ flex: 0 0 auto;
637
+ }
638
+ }
639
+
640
+ > .fig-input-oscillator-remove-button {
641
+ margin-left: auto;
642
+ }
643
+ }
644
+ }
645
+
646
+ .fig-input-oscillator-field {
647
+ --fig-field-left-padding: 0;
648
+ --fig-field-right-padding: 0;
649
+
650
+ > fig-slider {
651
+ min-width: 0;
652
+ }
653
+ }
654
+
655
+ .fig-input-oscillator-add-wave {
656
+ display: grid;
657
+ grid-template-columns: auto;
658
+ justify-content: end;
659
+ width: 100%;
660
+
661
+ > fig-button[type="select"] {
662
+ > fig-dropdown,
663
+ > fig-dropdown > select {
664
+ width: 100%;
665
+ height: 100%;
666
+ min-width: 100%;
667
+ padding: 0;
668
+ }
669
+ }
670
+ }
671
+
672
+ &[disabled]:not([disabled="false"]) {
673
+ pointer-events: none;
674
+ opacity: 0.6;
675
+ }
676
+ }
677
+