@rogieking/figui3 8.11.0 → 9.0.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-lab.css CHANGED
@@ -217,3250 +217,129 @@ fig-chat-message {
217
217
  }
218
218
  }
219
219
 
220
- :is(
221
- propskit-switch,
222
- propskit-color,
223
- propskit-fill,
224
- propskit-gradient,
225
- propskit-palette,
226
- propskit-image,
227
- propskit-editable-select,
228
- propskit-select,
229
- propskit-easing,
230
- propskit-text,
231
- propskit-number,
232
- propskit-origin,
233
- propskit-position,
234
- propskit-joystick,
235
- propskit-spring,
236
- propskit-color-point,
237
- propskit-point-radius,
238
- propskit-point-radius-angle,
239
- propskit-point-point,
240
- propskit-group,
241
- propskit-slider,
242
- propskit-wheel,
243
- propskit-oscillator
244
- ) {
245
- --figma-focus-outline-radius: var(--radius-medium-large);
246
- user-select: none;
247
-
248
- :is(
249
- input:not([type]),
250
- input[type="text"],
251
- input[type="number"],
252
- input[type="email"],
253
- input[type="password"],
254
- input[type="search"],
255
- input[type="tel"],
256
- input[type="url"],
257
- textarea,
258
- [contenteditable="true"]
259
- ) {
260
- user-select: text;
261
- }
262
- }
263
-
264
- propskit-group {
265
- display: block;
266
- width: 100%;
267
- margin-bottom: var(--spacer-2-5);
268
-
269
- p {
270
- margin: 0 var(--spacer-3) var(--spacer-2) var(--spacer-3);
271
- }
272
-
273
- & + propskit-group {
274
- box-shadow: inset 0 1px 0 0 var(--figma-color-border);
275
-
276
- &:not([name]) {
277
- padding-top: var(--spacer-2-5);
278
- }
279
- }
280
-
281
- &[borderless]:not([borderless="false"]) + propskit-group {
282
- box-shadow: none;
283
-
284
- &:not([name]) {
285
- padding-top: 0;
286
- }
287
- }
288
-
289
- &[compact]:not([compact="false"]) > fig-header {
290
- --fig-header-height: var(--spacer-5);
291
- height: var(--fig-header-height);
292
- }
293
-
294
- & > fig-header {
295
- cursor: default;
296
- gap: 0;
297
-
298
- &:focus-visible {
299
- --figma-focus-outline-radius: var(--radius-medium);
300
- outline: var(--figma-focus-outline);
301
- outline-offset: var(--figma-focus-outline-offset);
302
- border-radius: var(--figma-focus-outline-radius);
303
- }
304
-
305
- & > h3 {
306
- flex: 1 1 auto;
307
- min-width: 0;
308
- display: block;
309
- margin: 0;
310
- padding-left: 0;
311
- text-overflow: ellipsis;
312
- overflow: hidden;
313
- white-space: nowrap;
314
- max-width: 100%;
315
- user-select: none;
316
- }
317
-
318
- & > .propskit-group-chevron {
319
- --icon: var(--icon-16-chevron);
320
- --size: 1rem;
321
- flex: 0 0 auto;
322
- color: var(--figma-color-text-tertiary);
323
- transform: rotate(-90deg);
324
- transition: transform var(--transition-duration)
325
- var(--transition-timing-function);
326
- margin-left: calc(var(--spacer-2) * -1);
327
- }
328
- }
329
-
330
- &:not([open]):not([open="true"]),
331
- &[open="false"] {
332
- margin-bottom: 0;
333
-
334
- & > fig-header {
335
- color: var(--figma-color-text-secondary);
336
-
337
- &:hover {
338
- color: var(--figma-color-text);
339
-
340
- .propskit-group-chevron {
341
- color: inherit;
342
- }
343
- }
344
- }
345
-
346
- & > :not(fig-header) {
347
- display: none;
348
- }
349
- }
350
-
351
- &[open]:not([open="false"]) > fig-header .propskit-group-chevron {
352
- transform: rotate(0deg);
353
- }
354
-
355
- & > fig-header > .propskit-group-reset-tooltip {
356
- flex-shrink: 0;
357
- opacity: 0;
358
- visibility: hidden;
359
- pointer-events: none;
360
- color: var(--figma-color-icon-tertiary);
361
- transition:
362
- opacity var(--transition-duration) var(--transition-timing-function),
363
- visibility var(--transition-duration) var(--transition-timing-function),
364
- color var(--transition-duration) var(--transition-timing-function);
365
-
366
- fig-icon {
367
- color: var(--figma-color-icon-tertiary);
368
- }
369
-
370
- &:hover,
371
- &:focus-within {
372
- fig-icon {
373
- color: var(--figma-color-icon-primary, var(--figma-color-icon));
374
- }
375
- }
376
- }
377
-
378
- /* Reset only when a child control differs from its captured default. */
379
- &[data-dirty]:not([data-dirty="false"]):not([show-reset="false"])
380
- > fig-header
381
- > .propskit-group-reset-tooltip:not([hidden]) {
382
- opacity: 1;
383
- visibility: visible;
384
- pointer-events: auto;
385
- }
386
-
387
- &[show-reset="false"] > fig-header > .propskit-group-reset-tooltip {
388
- display: none;
389
- }
390
- }
391
-
392
- main:has(> propskit-group[name]:first-child),
393
- fig-content:has(> propskit-group[name]:first-child) {
394
- padding-top: 0;
395
- }
396
-
397
- main:has(> propskit-group[name]:last-child),
398
- fig-content:has(> propskit-group[name]:last-child) {
399
- padding-bottom: 0;
400
- }
401
-
402
- /* Disabled PropsKit text and number inputs should render without input chrome. */
403
- :is(
404
- propskit-switch,
405
- propskit-color,
406
- propskit-fill,
407
- propskit-gradient,
408
- propskit-image,
409
- propskit-editable-select,
410
- propskit-select,
411
- propskit-easing,
412
- propskit-text,
413
- propskit-number,
414
- propskit-origin,
415
- propskit-position,
416
- propskit-joystick,
417
- propskit-spring,
418
- propskit-color-point,
419
- propskit-point-radius,
420
- propskit-point-radius-angle,
421
- propskit-point-point,
422
- propskit-group,
423
- propskit-slider,
424
- propskit-wheel,
425
- propskit-oscillator
426
- ) :is(fig-input-text, fig-input-number)[disabled]:not([disabled="false"]) {
427
- border: 0;
428
- background: transparent;
429
- box-shadow: none;
430
- }
431
-
432
- propskit-switch {
433
- --propskit-switch-height: 2rem;
434
- --_propskit-padding-block: var(
435
- --propskit-switch-padding-block,
436
- var(--propskit-padding-block, var(--spacer-1))
437
- );
438
- --_propskit-padding-inline: var(
439
- --propskit-switch-padding-inline,
440
- var(--propskit-padding-inline, var(--spacer-3))
441
- );
442
- --_propskit-background: var(
443
- --propskit-switch-background,
444
- var(--propskit-background, var(--figma-color-bg-secondary))
445
- );
446
- --_propskit-border: var(
447
- --propskit-switch-border,
448
- var(--propskit-border, 0 solid transparent)
449
- );
450
- --_propskit-color: var(
451
- --propskit-switch-color,
452
- var(--propskit-color, var(--figma-color-text-secondary))
453
- );
454
- --_propskit-hover-background: var(
455
- --propskit-switch-hover-background,
456
- var(--propskit-hover-background, var(--_propskit-background))
457
- );
458
- --_propskit-hover-border: var(
459
- --propskit-switch-hover-border,
460
- var(
461
- --propskit-hover-border,
462
- 1px solid var(--figma-color-bordertranslucent)
463
- )
464
- );
465
- --_propskit-hover-color: var(
466
- --propskit-switch-hover-color,
467
- var(--propskit-hover-color, var(--_propskit-color))
468
- );
469
- --_propskit-label-inline-size: var(
470
- --propskit-switch-label-inline-size,
471
- var(--propskit-label-inline-size, 75%)
472
- );
473
- --_propskit-input-inline-size: var(
474
- --propskit-switch-input-inline-size,
475
- var(
476
- --propskit-input-inline-size,
477
- var(--_propskit-switch-control-inline-size, 2rem)
478
- )
479
- );
480
-
481
- display: block;
482
- box-sizing: border-box;
483
- width: 100%;
484
- height: calc(
485
- var(--propskit-switch-height) + var(--_propskit-padding-block) * 2
486
- );
487
- padding-block: var(--_propskit-padding-block);
488
- padding-inline: var(--_propskit-padding-inline);
489
-
490
- &[variant="segmented-control"] {
491
- --_propskit-switch-control-inline-size: 4.5rem;
492
- }
493
-
494
- &:not([variant="segmented-control"]) .propskit-switch-surface {
495
- padding-inline-end: var(--spacer-2);
496
- }
497
-
498
- &[disabled]:not([disabled="false"]) {
499
- pointer-events: none;
500
-
501
- label {
502
- color: var(--figma-color-text-disabled);
503
- }
504
- }
505
-
506
- .propskit-switch-surface {
507
- position: relative;
508
- display: flex;
509
- align-items: center;
510
- height: 100%;
511
- padding-inline: var(--spacer-2-5) var(--spacer-1);
512
- border-radius: var(--radius-medium-large);
513
- background: var(--_propskit-background);
514
- color: var(--_propskit-color);
515
- cursor: default;
516
-
517
- &::after {
518
- content: "";
519
- position: absolute;
520
- inset: 0;
521
- border-radius: inherit;
522
- border: var(--_propskit-border);
523
- pointer-events: none;
524
- }
525
-
526
- &:hover {
527
- background: var(--_propskit-hover-background);
528
- color: var(--_propskit-hover-color);
529
-
530
- &::after {
531
- border: var(--_propskit-hover-border);
532
- }
533
- }
534
-
535
- & > label {
536
- z-index: 1;
537
- display: flex;
538
- align-items: center;
539
- flex: 1 1 auto;
540
- min-width: 0;
541
- margin: 0;
542
- overflow: hidden;
543
- max-inline-size: var(--_propskit-label-inline-size);
544
- color: inherit;
545
- text-overflow: ellipsis;
546
- white-space: nowrap;
547
- pointer-events: none;
548
-
549
- fig-icon:first-child {
550
- margin-left: calc(var(--spacer-1) * -1);
551
- }
552
- }
553
-
554
- :is(fig-switch, fig-segmented-control) {
555
- flex: 0 0 auto;
556
- margin-inline-start: auto;
557
- inline-size: var(--_propskit-input-inline-size);
558
- min-inline-size: var(--_propskit-input-inline-size);
559
- }
560
-
561
- fig-switch {
562
- justify-content: flex-end;
563
- padding-block: 0;
564
- }
565
- }
566
- }
567
-
568
- propskit-color {
569
- --_propskit-padding-block: var(
570
- --propskit-color-padding-block,
571
- var(--propskit-padding-block, var(--spacer-1))
572
- );
573
- --_propskit-padding-inline: var(
574
- --propskit-color-padding-inline,
575
- var(--propskit-padding-inline, var(--spacer-3))
576
- );
577
- --_propskit-background: var(
578
- --propskit-color-background,
579
- var(--propskit-background, var(--figma-color-bg-secondary))
580
- );
581
- --_propskit-border: var(
582
- --propskit-color-border,
583
- var(--propskit-border, 0 solid transparent)
584
- );
585
- --_propskit-color: var(
586
- --propskit-color-color,
587
- var(--propskit-color, var(--figma-color-text-secondary))
588
- );
589
- --_propskit-hover-background: var(
590
- --propskit-color-hover-background,
591
- var(--propskit-hover-background, var(--_propskit-background))
592
- );
593
- --_propskit-hover-border: var(
594
- --propskit-color-hover-border,
595
- var(
596
- --propskit-hover-border,
597
- 1px solid var(--figma-color-bordertranslucent)
598
- )
599
- );
600
- --_propskit-hover-color: var(
601
- --propskit-color-hover-color,
602
- var(--propskit-hover-color, var(--_propskit-color))
603
- );
604
- --_propskit-label-inline-size: var(
605
- --propskit-color-label-inline-size,
606
- var(--propskit-label-inline-size, 40%)
607
- );
608
- --_propskit-input-inline-size: var(
609
- --propskit-color-input-inline-size,
610
- var(--propskit-input-inline-size, 33%)
611
- );
612
- }
613
-
614
- propskit-fill {
615
- --_propskit-padding-block: var(
616
- --propskit-fill-padding-block,
617
- var(--propskit-padding-block, var(--spacer-1))
618
- );
619
- --_propskit-padding-inline: var(
620
- --propskit-fill-padding-inline,
621
- var(--propskit-padding-inline, var(--spacer-3))
622
- );
623
- --_propskit-background: var(
624
- --propskit-fill-background,
625
- var(--propskit-background, var(--figma-color-bg-secondary))
626
- );
627
- --_propskit-border: var(
628
- --propskit-fill-border,
629
- var(--propskit-border, 0 solid transparent)
630
- );
631
- --_propskit-color: var(
632
- --propskit-fill-color,
633
- var(--propskit-color, var(--figma-color-text-secondary))
634
- );
635
- --_propskit-hover-background: var(
636
- --propskit-fill-hover-background,
637
- var(--propskit-hover-background, var(--_propskit-background))
638
- );
639
- --_propskit-hover-border: var(
640
- --propskit-fill-hover-border,
641
- var(
642
- --propskit-hover-border,
643
- 1px solid var(--figma-color-bordertranslucent)
644
- )
645
- );
646
- --_propskit-hover-color: var(
647
- --propskit-fill-hover-color,
648
- var(--propskit-hover-color, var(--_propskit-color))
649
- );
650
- --_propskit-label-inline-size: var(
651
- --propskit-fill-label-inline-size,
652
- var(--propskit-label-inline-size, 40%)
653
- );
654
- --_propskit-input-inline-size: var(
655
- --propskit-fill-input-inline-size,
656
- var(--propskit-input-inline-size, 33%)
657
- );
658
- }
659
-
660
- propskit-color,
661
- propskit-fill {
662
- --propskit-color-height: 2rem;
663
- --figma-focus-outline-offset: 1px;
664
-
665
- display: block;
666
- box-sizing: border-box;
667
- width: 100%;
668
- height: calc(
669
- var(--propskit-color-height) + var(--_propskit-padding-block) * 2
670
- );
671
- padding-block: var(--_propskit-padding-block);
672
- padding-inline: var(--_propskit-padding-inline);
673
-
674
- &[disabled]:not([disabled="false"]) {
675
- pointer-events: none;
676
-
677
- label {
678
- color: var(--figma-color-text-disabled);
679
- }
680
- }
681
-
682
- :is(.propskit-color-surface, .propskit-fill-surface) {
683
- position: relative;
684
- display: flex;
685
- align-items: center;
686
- gap: var(--spacer-2);
687
- height: 100%;
688
- padding-inline-start: var(--spacer-2-5);
689
- border-radius: var(--radius-medium-large);
690
- background: var(--_propskit-background);
691
- color: var(--_propskit-color);
692
-
693
- &::after {
694
- content: "";
695
- position: absolute;
696
- inset: 0;
697
- border-radius: inherit;
698
- border: var(--_propskit-border);
699
- pointer-events: none;
700
- }
701
-
702
- &:hover {
703
- background: var(--_propskit-hover-background);
704
- color: var(--_propskit-hover-color);
705
-
706
- &::after {
707
- border: var(--_propskit-hover-border);
708
- }
709
- }
710
-
711
- & > label {
712
- position: relative;
713
- z-index: 1;
714
- display: flex;
715
- align-items: center;
716
- flex: 0 1 auto;
717
- max-inline-size: var(--_propskit-label-inline-size);
718
- min-width: 0;
719
- margin: 0;
720
- padding: 0;
721
- overflow: hidden;
722
- color: inherit;
723
- text-overflow: ellipsis;
724
- white-space: nowrap;
725
- pointer-events: none;
726
-
727
- fig-icon:first-child {
728
- margin-left: calc(var(--spacer-1) * -1);
729
- }
730
- }
731
-
732
- fig-fill-picker {
733
- display: contents;
734
- }
735
-
736
- fig-swatch {
737
- position: relative;
738
- flex: 0 0 var(--_propskit-input-inline-size);
739
- inline-size: var(--_propskit-input-inline-size);
740
- min-width: 0;
741
- margin-inline-start: auto;
742
- overflow: hidden;
743
- contain: paint;
744
- --width: 100%;
745
- --height: var(--propskit-color-height);
746
- --size: var(--propskit-color-height);
747
- --border-radius: var(--radius-medium);
748
- height: var(--propskit-color-height);
749
- border-radius: var(--radius-medium);
750
- }
751
- }
752
- }
753
-
754
- propskit-gradient {
755
- --propskit-gradient-height: 2rem;
756
- --_propskit-padding-block: var(
757
- --propskit-gradient-padding-block,
758
- var(--propskit-padding-block, var(--spacer-1))
759
- );
760
- --_propskit-padding-inline: var(
761
- --propskit-gradient-padding-inline,
762
- var(--propskit-padding-inline, var(--spacer-3))
763
- );
764
- --_propskit-background: var(
765
- --propskit-gradient-background,
766
- var(--propskit-background, var(--figma-color-bg-secondary))
767
- );
768
- --_propskit-border: var(
769
- --propskit-gradient-border,
770
- var(--propskit-border, 0 solid transparent)
771
- );
772
- --_propskit-color: var(
773
- --propskit-gradient-color,
774
- var(--propskit-color, var(--figma-color-text-secondary))
775
- );
776
- --_propskit-hover-background: var(
777
- --propskit-gradient-hover-background,
778
- var(--propskit-hover-background, var(--_propskit-background))
779
- );
780
- --_propskit-hover-border: var(
781
- --propskit-gradient-hover-border,
782
- var(
783
- --propskit-hover-border,
784
- 1px solid var(--figma-color-bordertranslucent)
785
- )
786
- );
787
- --_propskit-hover-color: var(
788
- --propskit-gradient-hover-color,
789
- var(--propskit-hover-color, var(--_propskit-color))
790
- );
791
- --_propskit-label-inline-size: var(
792
- --propskit-gradient-label-inline-size,
793
- var(--propskit-label-inline-size, 40%)
794
- );
795
- --_propskit-input-inline-size: var(
796
- --propskit-gradient-input-inline-size,
797
- var(--propskit-input-inline-size, 33%)
798
- );
799
- --figma-focus-outline-offset: 1px;
800
-
801
- display: block;
802
- box-sizing: border-box;
803
- width: 100%;
804
- height: calc(
805
- var(--propskit-gradient-height) + var(--_propskit-padding-block) * 2
806
- );
807
- padding-block: var(--_propskit-padding-block);
808
- padding-inline: var(--_propskit-padding-inline);
809
-
810
- fig-input-gradient {
811
- --fig-input-gradient-height: var(--propskit-gradient-height);
812
- --fig-input-gradient-swatch-border-radius: var(--radius-medium);
813
- height: var(--propskit-gradient-height);
814
-
815
- fig-swatch {
816
- --height: var(--propskit-gradient-height);
817
- --size: var(--propskit-gradient-height);
818
- height: var(--propskit-gradient-height);
819
- }
820
- }
821
-
822
- &[disabled]:not([disabled="false"]) {
823
- pointer-events: none;
824
-
825
- label {
826
- color: var(--figma-color-text-disabled);
827
- }
828
- }
829
-
830
- .propskit-gradient-surface {
831
- position: relative;
832
- display: flex;
833
- align-items: center;
834
- gap: var(--spacer-2);
835
- height: 100%;
836
- padding-inline-start: var(--spacer-2-5);
837
- border-radius: var(--radius-medium-large);
838
- background: var(--_propskit-background);
839
- color: var(--_propskit-color);
840
-
841
- &::after {
842
- content: "";
843
- position: absolute;
844
- inset: 0;
845
- border-radius: inherit;
846
- border: var(--_propskit-border);
847
- pointer-events: none;
848
- }
849
-
850
- &:hover {
851
- background: var(--_propskit-hover-background);
852
- color: var(--_propskit-hover-color);
853
-
854
- &::after {
855
- border: var(--_propskit-hover-border);
856
- }
857
- }
858
-
859
- & > label {
860
- position: relative;
861
- z-index: 1;
862
- display: flex;
863
- align-items: center;
864
- flex: 0 1 auto;
865
- max-inline-size: var(--_propskit-label-inline-size);
866
- min-width: 0;
867
- margin: 0;
868
- padding: 0;
869
- overflow: hidden;
870
- color: inherit;
871
- text-overflow: ellipsis;
872
- white-space: nowrap;
873
- pointer-events: none;
874
-
875
- fig-icon:first-child {
876
- margin-left: calc(var(--spacer-1) * -1);
877
- }
878
- }
879
-
880
- fig-input-gradient {
881
- position: relative;
882
- flex: 0 0 var(--_propskit-input-inline-size);
883
- inline-size: var(--_propskit-input-inline-size);
884
- min-width: 0;
885
- margin-inline-start: auto;
886
- border-radius: var(--radius-medium);
887
- background-color: transparent;
888
- }
889
- }
890
- }
891
-
892
- :is(propskit-color, propskit-fill, propskit-gradient) {
893
- outline: none;
894
-
895
- fig-swatch {
896
- --border-radius: var(--radius-medium);
897
- --fig-swatch-border-radius: var(--radius-medium);
898
-
899
- border-radius: var(--radius-medium);
900
- background-color: transparent !important;
901
- }
902
-
903
- :is(.propskit-color-surface, .propskit-fill-surface, .propskit-gradient-surface) {
904
- outline: none;
905
- }
906
-
907
- &:focus-within
908
- :is(.propskit-color-surface, .propskit-fill-surface, .propskit-gradient-surface),
909
- &.has-popup-open
910
- :is(.propskit-color-surface, .propskit-fill-surface, .propskit-gradient-surface) {
911
- outline: var(--figma-focus-outline);
912
- outline-offset: var(--figma-focus-outline-offset);
913
- }
914
-
915
- /* Same split as fig-input-gradient: chrome outlines, inner focus does not. */
916
- :is(fig-swatch, fig-chit, fig-input-gradient, fig-input-fill, fig-fill-picker) {
917
- --selected: 0 !important;
918
-
919
- &:hover,
920
- &:focus,
921
- &:active {
922
- outline: 0 !important;
923
- }
924
-
925
- &:focus-within:not(:focus) {
926
- outline: 0 !important;
927
- }
928
-
929
- &:focus-within:not(:focus) :is(input, fig-swatch, fig-chit) {
930
- outline: 0 !important;
931
- outline-offset: 0 !important;
932
- }
933
- }
934
-
935
- input[type="color"]:is(:focus, :focus-visible) {
936
- outline: 0 !important;
937
- outline-offset: 0 !important;
938
- }
939
- }
940
-
941
- propskit-palette {
942
- --propskit-palette-height: 2rem;
943
- --_propskit-padding-block: var(
944
- --propskit-palette-padding-block,
945
- var(--propskit-padding-block, var(--spacer-1))
946
- );
947
- --_propskit-padding-inline: var(
948
- --propskit-palette-padding-inline,
949
- var(--propskit-padding-inline, var(--spacer-3))
950
- );
951
- --_propskit-background: var(
952
- --propskit-palette-background,
953
- var(--propskit-background, var(--figma-color-bg-secondary))
954
- );
955
- --_propskit-border: var(
956
- --propskit-palette-border,
957
- var(--propskit-border, 0 solid transparent)
958
- );
959
- --_propskit-color: var(
960
- --propskit-palette-color,
961
- var(--propskit-color, var(--figma-color-text-secondary))
962
- );
963
- --_propskit-hover-background: var(
964
- --propskit-palette-hover-background,
965
- var(--propskit-hover-background, var(--_propskit-background))
966
- );
967
- --_propskit-hover-border: var(
968
- --propskit-palette-hover-border,
969
- var(
970
- --propskit-hover-border,
971
- 1px solid var(--figma-color-bordertranslucent)
972
- )
973
- );
974
- --_propskit-hover-color: var(
975
- --propskit-palette-hover-color,
976
- var(--propskit-hover-color, var(--_propskit-color))
977
- );
978
- --_propskit-label-inline-size: var(
979
- --propskit-palette-label-inline-size,
980
- var(--propskit-label-inline-size, 40%)
981
- );
982
- --_propskit-input-inline-size: var(
983
- --propskit-palette-input-inline-size,
984
- var(--propskit-input-inline-size, 60%)
985
- );
986
- --figma-focus-outline-offset: 1px;
987
-
988
- display: block;
989
- box-sizing: border-box;
990
- width: 100%;
991
- height: calc(
992
- var(--propskit-palette-height) + var(--_propskit-padding-block) * 2
993
- );
994
- padding-block: var(--_propskit-padding-block);
995
- padding-inline: var(--_propskit-padding-inline);
996
-
997
- &[disabled]:not([disabled="false"]) {
998
- pointer-events: none;
999
-
1000
- label {
1001
- color: var(--figma-color-text-disabled);
1002
- }
1003
- }
1004
-
1005
- .propskit-palette-surface {
1006
- position: relative;
1007
- display: flex;
1008
- align-items: center;
1009
- gap: var(--spacer-2);
1010
- box-sizing: border-box;
1011
- height: 100%;
1012
- padding-inline-start: var(--spacer-2-5);
1013
- border-radius: var(--radius-medium-large);
1014
- background: var(--_propskit-background);
1015
- color: var(--_propskit-color);
1016
- cursor: default;
1017
-
1018
- &::after {
1019
- content: "";
1020
- position: absolute;
1021
- inset: 0;
1022
- border: var(--_propskit-border);
1023
- border-radius: inherit;
1024
- pointer-events: none;
1025
- }
1026
-
1027
- &:hover {
1028
- background: var(--_propskit-hover-background);
1029
- color: var(--_propskit-hover-color);
1030
-
1031
- &::after {
1032
- border: var(--_propskit-hover-border);
1033
- }
1034
- }
1035
-
1036
- &:focus-within {
1037
- outline: var(--figma-focus-outline);
1038
- outline-offset: var(--figma-focus-outline-offset);
1039
- }
1040
-
1041
- & > label {
1042
- position: relative;
1043
- z-index: 1;
1044
- display: flex;
1045
- align-items: center;
1046
- flex: 0 1 auto;
1047
- max-inline-size: var(--_propskit-label-inline-size);
1048
- min-width: 0;
1049
- margin: 0;
1050
- padding: 0;
1051
- overflow: hidden;
1052
- color: inherit;
1053
- text-overflow: ellipsis;
1054
- white-space: nowrap;
1055
- pointer-events: none;
1056
-
1057
- fig-icon:first-child {
1058
- margin-left: calc(var(--spacer-1) * -1);
1059
- }
1060
- }
1061
-
1062
- & > fig-select {
1063
- --fig-select-trigger-width: 100%;
1064
-
1065
- position: absolute;
1066
- inset: 0;
1067
- z-index: 1;
1068
- display: flex;
1069
- width: 100%;
1070
- min-width: 0;
1071
- max-width: none;
1072
- height: 100%;
1073
- margin: 0;
1074
- border-radius: inherit;
1075
- background: transparent;
1076
- box-shadow: none;
1077
-
1078
- &::part(trigger) {
1079
- gap: var(--spacer-1);
1080
- min-width: 0;
1081
- padding-left: calc(
1082
- var(--_propskit-label-inline-size) + var(--spacer-2)
1083
- );
1084
- background: transparent;
1085
- }
1086
-
1087
- &::part(prepend) {
1088
- display: flex;
1089
- flex: 1 1 auto;
1090
- min-width: 0;
1091
- margin: 0;
1092
- }
1093
- }
1094
- }
1095
-
1096
- .propskit-palette-preview {
1097
- --fig-input-palette-height: calc(
1098
- var(--propskit-palette-height) - var(--spacer-2)
1099
- );
1100
- --fig-input-palette-padding: 0px;
1101
-
1102
- width: 100%;
1103
- min-width: 0;
1104
- border-radius: var(--radius-medium);
1105
- opacity: 1;
1106
- pointer-events: none;
1107
-
1108
- &[hidden] {
1109
- display: none !important;
1110
- }
1111
-
1112
- & > .palette-colors-inline {
1113
- padding: 0;
1114
- border-radius: var(--radius-medium);
1115
- background: transparent;
1116
-
1117
- & > .palette-colors {
1118
- border-radius: var(--radius-medium);
1119
- }
1120
- }
1121
- }
1122
-
1123
- .propskit-palette-options {
1124
- fig-select-option {
1125
- min-height: var(--propskit-palette-height);
1126
- cursor: default;
1127
-
1128
- & > .propskit-palette-option-preview {
1129
- display: flex;
1130
- flex: 1 1 auto;
1131
- min-width: 0;
1132
- margin-block: 0;
1133
- margin-inline-end: 0;
1134
- }
1135
-
1136
- .propskit-palette-preview {
1137
- --fig-input-palette-height: var(--spacer-4);
1138
- --fig-input-palette-padding: 0px;
1139
- }
1140
- }
1141
- }
1142
- }
1143
-
1144
- propskit-select {
1145
- --propskit-select-height: 2rem;
1146
- --_propskit-padding-block: var(
1147
- --propskit-select-padding-block,
1148
- var(--propskit-padding-block, var(--spacer-1))
1149
- );
1150
- --_propskit-padding-inline: var(
1151
- --propskit-select-padding-inline,
1152
- var(--propskit-padding-inline, var(--spacer-3))
1153
- );
1154
- --_propskit-background: var(
1155
- --propskit-select-background,
1156
- var(--propskit-background, var(--figma-color-bg-secondary))
1157
- );
1158
- --_propskit-border: var(
1159
- --propskit-select-border,
1160
- var(--propskit-border, 0 solid transparent)
1161
- );
1162
- --_propskit-color: var(
1163
- --propskit-select-color,
1164
- var(--propskit-color, var(--figma-color-text-secondary))
1165
- );
1166
- --_propskit-hover-background: var(
1167
- --propskit-select-hover-background,
1168
- var(--propskit-hover-background, var(--_propskit-background))
1169
- );
1170
- --_propskit-hover-border: var(
1171
- --propskit-select-hover-border,
1172
- var(
1173
- --propskit-hover-border,
1174
- 1px solid var(--figma-color-bordertranslucent)
1175
- )
1176
- );
1177
- --_propskit-hover-color: var(
1178
- --propskit-select-hover-color,
1179
- var(--propskit-hover-color, var(--_propskit-color))
1180
- );
1181
- --_propskit-label-inline-size: var(
1182
- --propskit-select-label-inline-size,
1183
- var(--propskit-label-inline-size, 75%)
1184
- );
1185
- --_propskit-input-inline-size: var(
1186
- --propskit-select-input-inline-size,
1187
- var(--propskit-input-inline-size, 100%)
1188
- );
1189
- --figma-focus-outline-offset: 1px;
1190
-
1191
- display: block;
1192
- box-sizing: border-box;
1193
- width: 100%;
1194
- height: calc(
1195
- var(--propskit-select-height) + var(--_propskit-padding-block) * 2
1196
- );
1197
- padding-block: var(--_propskit-padding-block);
1198
- padding-inline: var(--_propskit-padding-inline);
1199
-
1200
- .propskit-select-surface {
1201
- fig-select {
1202
- padding-right: var(--spacer-1);
1203
-
1204
- &::after {
1205
- right: calc(0.25rem + var(--spacer-1));
1206
- }
1207
- }
1208
-
1209
- fig-select::part(trigger) {
1210
- padding-left: var(--spacer-2-5);
1211
- }
1212
-
1213
- }
1214
-
1215
- &[disabled]:not([disabled="false"]) {
1216
- pointer-events: none;
1217
-
1218
- label {
1219
- color: var(--figma-color-text-disabled);
1220
- }
1221
- }
1222
-
1223
- .propskit-select-surface {
1224
- position: relative;
1225
- display: flex;
1226
- align-items: center;
1227
- height: 100%;
1228
- padding: 0;
1229
- border-radius: var(--radius-medium-large);
1230
- background: var(--_propskit-background);
1231
- color: var(--_propskit-color);
1232
-
1233
- &::after {
1234
- content: "";
1235
- position: absolute;
1236
- inset: 0;
1237
- border-radius: inherit;
1238
- border: var(--_propskit-border);
1239
- pointer-events: none;
1240
- }
1241
-
1242
- &:hover {
1243
- background: var(--_propskit-hover-background);
1244
- color: var(--_propskit-hover-color);
1245
-
1246
- &::after {
1247
- border: var(--_propskit-hover-border);
1248
- }
1249
- }
1250
-
1251
- /* Label geometry comes from the shared propskit horizontal-label rules. */
1252
- & > label {
1253
- fig-icon:first-child {
1254
- margin-left: calc(var(--spacer-1) * -1);
1255
- }
1256
- }
1257
-
1258
- fig-select {
1259
- position: relative;
1260
- display: flex;
1261
- flex: 1 1 auto;
1262
- align-self: stretch;
1263
- align-items: stretch;
1264
- inline-size: var(--_propskit-input-inline-size);
1265
- min-width: 0;
1266
- height: 100%;
1267
- border-radius: inherit;
1268
- background: transparent;
1269
- box-shadow: none;
1270
- }
1271
-
1272
- fig-select {
1273
- --fig-select-trigger-width: 100%;
1274
-
1275
- &::part(label) {
1276
- text-align: right;
1277
- }
1278
- }
1279
-
1280
- }
1281
- }
1282
-
1283
- propskit-editable-select {
1284
- --propskit-editable-select-height: 2rem;
1285
- --propskit-editable-select-gap: var(--spacer-1);
1286
- --propskit-editable-select-control-padding-inline: var(--spacer-1);
1287
- --_propskit-padding-block: var(
1288
- --propskit-editable-select-padding-block,
1289
- var(--propskit-padding-block, var(--spacer-1))
1290
- );
1291
- --_propskit-padding-inline: var(
1292
- --propskit-editable-select-padding-inline,
1293
- var(--propskit-padding-inline, var(--spacer-3))
1294
- );
1295
- --_propskit-background: var(
1296
- --propskit-editable-select-background,
1297
- var(--propskit-background, var(--figma-color-bg-secondary))
1298
- );
1299
- --_propskit-border: var(
1300
- --propskit-editable-select-border,
1301
- var(--propskit-border, 0 solid transparent)
1302
- );
1303
- --_propskit-color: var(
1304
- --propskit-editable-select-color,
1305
- var(--propskit-color, var(--figma-color-text-secondary))
1306
- );
1307
- --_propskit-hover-background: var(
1308
- --propskit-editable-select-hover-background,
1309
- var(--propskit-hover-background, var(--_propskit-background))
1310
- );
1311
- --_propskit-hover-border: var(
1312
- --propskit-editable-select-hover-border,
1313
- var(
1314
- --propskit-hover-border,
1315
- 1px solid var(--figma-color-bordertranslucent)
1316
- )
1317
- );
1318
- --_propskit-hover-color: var(
1319
- --propskit-editable-select-hover-color,
1320
- var(--propskit-hover-color, var(--_propskit-color))
1321
- );
1322
- --figma-focus-outline-offset: 1px;
1323
-
1324
- display: block;
1325
- box-sizing: border-box;
1326
- width: 100%;
1327
- min-height: calc(
1328
- var(--propskit-editable-select-height) + var(--_propskit-padding-block) * 2
1329
- );
1330
- padding-block: var(--_propskit-padding-block);
1331
- padding-inline: var(--_propskit-padding-inline);
1332
-
1333
- .propskit-editable-select-surface {
1334
- position: relative;
1335
- display: flex;
1336
- align-items: center;
1337
- gap: var(--propskit-editable-select-gap);
1338
- box-sizing: border-box;
1339
- width: 100%;
1340
- min-width: 0;
1341
- min-height: var(--propskit-editable-select-height);
1342
- padding-block: var(--spacer-1);
1343
- padding-inline: 0 var(--spacer-1);
1344
- padding-inline-start: var(--propskit-editable-select-control-padding-inline);
1345
- border-radius: var(--radius-medium-large);
1346
- background: var(--_propskit-background);
1347
- color: var(--_propskit-color);
1348
- outline: none;
1349
-
1350
- &:focus-within {
1351
- outline: var(--figma-focus-outline);
1352
- outline-offset: var(--figma-focus-outline-offset);
1353
- }
1354
-
1355
- &::after {
1356
- content: "";
1357
- position: absolute;
1358
- inset: 0;
1359
- border: var(--_propskit-border);
1360
- border-radius: inherit;
1361
- pointer-events: none;
1362
- }
1363
-
1364
- &:hover {
1365
- background: var(--_propskit-hover-background);
1366
- color: var(--_propskit-hover-color);
1367
-
1368
- &::after {
1369
- border: var(--_propskit-hover-border);
1370
- }
1371
- }
1372
-
1373
- & > fig-select {
1374
- flex: 0 1 auto;
1375
- width: auto;
1376
- max-width: 100%;
1377
- min-width: 0;
1378
- margin-inline-end: auto;
1379
- background-color: transparent;
1380
- box-shadow: none;
1381
- }
1382
-
1383
- & > fig-input-text {
1384
- flex: 1 1 0 !important;
1385
- align-self: center;
1386
- align-items: center;
1387
- width: auto !important;
1388
- min-width: 0;
1389
- min-height: var(--control-height);
1390
- margin-inline-end: auto;
1391
- background-color: transparent;
1392
- box-shadow: none;
1393
- outline: none !important;
1394
-
1395
- & > input[type="text"] {
1396
- box-sizing: border-box;
1397
- height: 100%;
1398
- }
1399
- }
1400
- }
1401
-
1402
- fig-select {
1403
- --fig-select-trigger-width: 100%;
1404
-
1405
- &::after {
1406
- right: calc(0.25rem + var(--spacer-1));
1407
- }
1408
-
1409
- &::part(trigger) {
1410
- outline: none;
1411
- }
1412
-
1413
- &::part(label) {
1414
- text-align: left;
1415
- }
1416
- }
1417
- }
1418
-
1419
- propskit-text {
1420
- --propskit-text-height: 2rem;
1421
- --_propskit-padding-block: var(
1422
- --propskit-text-padding-block,
1423
- var(--propskit-padding-block, var(--spacer-1))
1424
- );
1425
- --_propskit-padding-inline: var(
1426
- --propskit-text-padding-inline,
1427
- var(--propskit-padding-inline, var(--spacer-3))
1428
- );
1429
- --_propskit-background: var(
1430
- --propskit-text-background,
1431
- var(--propskit-background, var(--figma-color-bg-secondary))
1432
- );
1433
- --_propskit-border: var(
1434
- --propskit-text-border,
1435
- var(--propskit-border, 0 solid transparent)
1436
- );
1437
- --_propskit-color: var(
1438
- --propskit-text-color,
1439
- var(--propskit-color, var(--figma-color-text-secondary))
1440
- );
1441
- --_propskit-hover-background: var(
1442
- --propskit-text-hover-background,
1443
- var(--propskit-hover-background, var(--_propskit-background))
1444
- );
1445
- --_propskit-hover-border: var(
1446
- --propskit-text-hover-border,
1447
- var(
1448
- --propskit-hover-border,
1449
- 1px solid var(--figma-color-bordertranslucent)
1450
- )
1451
- );
1452
- --_propskit-hover-color: var(
1453
- --propskit-text-hover-color,
1454
- var(--propskit-hover-color, var(--_propskit-color))
1455
- );
1456
- --_propskit-label-inline-size: var(
1457
- --propskit-text-label-inline-size,
1458
- var(--propskit-label-inline-size, 50%)
1459
- );
1460
- --_propskit-input-inline-size: var(
1461
- --propskit-text-input-inline-size,
1462
- var(--propskit-input-inline-size, fit-content)
1463
- );
1464
- --figma-focus-outline-offset: 1px;
1465
-
1466
- display: block;
1467
- box-sizing: border-box;
1468
- width: 100%;
1469
- min-height: calc(
1470
- var(--propskit-text-height) + var(--_propskit-padding-block) * 2
1471
- );
1472
- padding-block: var(--_propskit-padding-block);
1473
- padding-inline: var(--_propskit-padding-inline);
1474
-
1475
- &[disabled]:not([disabled="false"]) {
1476
- pointer-events: none;
1477
-
1478
- label,
1479
- :is(input, textarea) {
1480
- color: var(--figma-color-text-disabled);
1481
- }
1482
- }
1483
-
1484
- .propskit-text-surface {
1485
- position: relative;
1486
- display: flex;
1487
- align-items: center;
1488
- gap: var(--spacer-2);
1489
- box-sizing: border-box;
1490
- min-height: var(--propskit-text-height);
1491
- padding-block: var(--spacer-1);
1492
- padding-inline: var(--spacer-2-5) var(--spacer-1);
1493
- border-radius: var(--radius-medium-large);
1494
- background: var(--_propskit-background);
1495
- color: var(--_propskit-color);
1496
- outline: none;
1497
-
1498
- &:focus-within {
1499
- outline: var(--figma-focus-outline);
1500
- outline-offset: var(--figma-focus-outline-offset);
1501
- }
1502
-
1503
- &::after {
1504
- content: "";
1505
- position: absolute;
1506
- inset: 0;
1507
- border-radius: inherit;
1508
- border: var(--_propskit-border);
1509
- pointer-events: none;
1510
- }
1511
-
1512
- &:hover {
1513
- background: var(--_propskit-hover-background);
1514
- color: var(--_propskit-hover-color);
1515
-
1516
- &::after {
1517
- border: var(--_propskit-hover-border);
1518
- }
1519
- }
1520
-
1521
- & > label {
1522
- position: relative;
1523
- z-index: 1;
1524
- display: flex;
1525
- align-items: center;
1526
- align-self: flex-start;
1527
- flex: 0 0 auto;
1528
- min-width: 0;
1529
- margin: var(--spacer-1) 0 0;
1530
- padding: 0;
1531
- max-inline-size: var(--_propskit-label-inline-size);
1532
- overflow: hidden;
1533
- color: inherit;
1534
- text-overflow: ellipsis;
1535
- white-space: nowrap;
1536
- pointer-events: none;
1537
-
1538
- fig-icon:first-child {
1539
- margin-left: calc(var(--spacer-1) * -1);
1540
- }
1541
- }
1542
-
1543
- fig-input-text {
1544
- --figma-focus-outline-offset: 1px;
1545
-
1546
- position: relative;
1547
- align-self: center;
1548
- flex: 0 1 auto !important;
1549
- width: var(--_propskit-input-inline-size) !important;
1550
- max-width: none;
1551
- min-width: 0;
1552
- margin-inline-start: auto;
1553
- min-height: var(--control-height);
1554
- border-radius: var(--radius-medium);
1555
- background-color: transparent;
1556
- box-shadow: none;
1557
- outline: none !important;
1558
-
1559
- &:has(:is(input, textarea):focus) {
1560
- outline: none !important;
1561
- }
1562
-
1563
- :is(input, textarea) {
1564
- width: auto;
1565
- max-width: 100%;
1566
- min-width: 0;
1567
- flex: 0 0 auto;
1568
- text-align: right;
1569
- }
1570
-
1571
- input:not(:focus) {
1572
- overflow: hidden;
1573
- text-overflow: ellipsis;
1574
- white-space: nowrap;
1575
- }
1576
-
1577
- textarea {
1578
- min-height: 1lh;
1579
- max-height: calc(4lh + var(--spacer-2));
1580
- overflow-y: auto;
1581
- white-space: pre-wrap;
1582
- }
1583
- }
1584
- }
1585
- }
1586
-
1587
- propskit-number {
1588
- --propskit-number-height: 2rem;
1589
- --_propskit-padding-block: var(
1590
- --propskit-number-padding-block,
1591
- var(--propskit-padding-block, var(--spacer-1))
1592
- );
1593
- --_propskit-padding-inline: var(
1594
- --propskit-number-padding-inline,
1595
- var(--propskit-padding-inline, var(--spacer-3))
1596
- );
1597
- --_propskit-background: var(
1598
- --propskit-number-background,
1599
- var(--propskit-background, var(--figma-color-bg-secondary))
1600
- );
1601
- --_propskit-border: var(
1602
- --propskit-number-border,
1603
- var(--propskit-border, 0 solid transparent)
1604
- );
1605
- --_propskit-color: var(
1606
- --propskit-number-color,
1607
- var(--propskit-color, var(--figma-color-text-secondary))
1608
- );
1609
- --_propskit-hover-background: var(
1610
- --propskit-number-hover-background,
1611
- var(--propskit-hover-background, var(--_propskit-background))
1612
- );
1613
- --_propskit-hover-border: var(
1614
- --propskit-number-hover-border,
1615
- var(
1616
- --propskit-hover-border,
1617
- 1px solid var(--figma-color-bordertranslucent)
1618
- )
1619
- );
1620
- --_propskit-hover-color: var(
1621
- --propskit-number-hover-color,
1622
- var(--propskit-hover-color, var(--_propskit-color))
1623
- );
1624
- --_propskit-label-inline-size: var(
1625
- --propskit-number-label-inline-size,
1626
- var(--propskit-label-inline-size, 75%)
1627
- );
1628
- --_propskit-input-inline-size: var(
1629
- --propskit-number-input-inline-size,
1630
- var(--propskit-input-inline-size, fit-content)
1631
- );
1632
- --figma-focus-outline-offset: 1px;
1633
-
1634
- display: block;
1635
- box-sizing: border-box;
1636
- width: 100%;
1637
- height: calc(
1638
- var(--propskit-number-height) + var(--_propskit-padding-block) * 2
1639
- );
1640
- padding-block: var(--_propskit-padding-block);
1641
- padding-inline: var(--_propskit-padding-inline);
1642
-
1643
- &[disabled]:not([disabled="false"]) {
1644
- pointer-events: none;
1645
-
1646
- label,
1647
- input {
1648
- color: var(--figma-color-text-disabled);
1649
- }
1650
- }
1651
-
1652
- &[steppers]:not([steppers="false"]) fig-input-number input {
1653
- padding-right: 0;
1654
- }
1655
-
1656
- .propskit-number-surface {
1657
- position: relative;
1658
- display: flex;
1659
- align-items: center;
1660
- gap: var(--spacer-2);
1661
- box-sizing: border-box;
1662
- height: 100%;
1663
- padding-inline: var(--spacer-2-5) var(--spacer-1);
1664
- border-radius: var(--radius-medium-large);
1665
- background: var(--_propskit-background);
1666
- color: var(--_propskit-color);
1667
- outline: none;
1668
-
1669
- &:focus-within {
1670
- outline: var(--figma-focus-outline);
1671
- outline-offset: var(--figma-focus-outline-offset);
1672
- }
1673
-
1674
- &::after {
1675
- content: "";
1676
- position: absolute;
1677
- inset: 0;
1678
- border-radius: inherit;
1679
- border: var(--_propskit-border);
1680
- pointer-events: none;
1681
- }
1682
-
1683
- &:hover {
1684
- background: var(--_propskit-hover-background);
1685
- color: var(--_propskit-hover-color);
1686
-
1687
- &::after {
1688
- border: var(--_propskit-hover-border);
1689
- }
1690
- }
1691
-
1692
- & > label {
1693
- position: relative;
1694
- z-index: 1;
1695
- display: flex;
1696
- align-items: center;
1697
- flex: 0 0 auto;
1698
- min-width: 0;
1699
- padding: 0;
1700
- max-inline-size: var(--_propskit-label-inline-size);
1701
- overflow: hidden;
1702
- color: inherit;
1703
- text-overflow: ellipsis;
1704
- white-space: nowrap;
1705
- pointer-events: none;
1706
-
1707
- fig-icon:first-child {
1708
- margin-left: calc(var(--spacer-1) * -1);
1709
- }
1710
- }
1711
-
1712
- fig-input-number {
1713
- --figma-focus-outline-offset: 1px;
1714
-
1715
- position: relative;
1716
- align-self: center;
1717
- flex: 0 1 auto !important;
1718
- width: var(--_propskit-input-inline-size) !important;
1719
- max-width: none;
1720
- min-width: 0;
1721
- margin-inline-start: auto;
1722
- height: var(--control-height);
1723
- border-radius: var(--radius-medium);
1724
- background-color: transparent;
1725
- box-shadow: none;
1726
- outline: none !important;
1727
-
1728
- &:has(input:focus) {
1729
- outline: none !important;
1730
- }
1731
-
1732
- input {
1733
- field-sizing: content;
1734
- width: auto;
1735
- max-width: 100%;
1736
- min-width: 0;
1737
- flex: 0 0 auto;
1738
- text-align: right;
1739
- font-variant-numeric: tabular-nums;
1740
- }
1741
- }
1742
- }
1743
- }
1744
-
1745
- propskit-slider {
1746
- --propskit-slider-elastic-distance: calc(var(--spacer-2) + 0.25rem);
1747
- --propskit-slider-elastic-size: 0px;
1748
- --propskit-slider-elastic-scale: 1;
1749
- --propskit-slider-elastic-origin: left center;
1750
- --propskit-slider-elastic-transition: 0.18s cubic-bezier(0.2, 1.45, 0.35, 1);
1751
- --propskit-slider-height: 2rem;
1752
- --_propskit-padding-block: var(
1753
- --propskit-slider-padding-block,
1754
- var(--propskit-padding-block, var(--spacer-1))
1755
- );
1756
- --_propskit-padding-inline: var(
1757
- --propskit-slider-padding-inline,
1758
- var(--propskit-padding-inline, var(--spacer-3))
1759
- );
1760
- --_propskit-background: var(
1761
- --propskit-slider-background,
1762
- var(--propskit-background, var(--figma-color-bg-secondary))
1763
- );
1764
- --_propskit-border: var(
1765
- --propskit-slider-border,
1766
- var(--propskit-border, 0 solid transparent)
1767
- );
1768
- --_propskit-color: var(
1769
- --propskit-slider-color,
1770
- var(--propskit-color, var(--figma-color-text-secondary))
1771
- );
1772
- --_propskit-hover-background: var(
1773
- --propskit-slider-hover-background,
1774
- var(--propskit-hover-background, var(--_propskit-background))
1775
- );
1776
- --_propskit-hover-border: var(
1777
- --propskit-slider-hover-border,
1778
- var(
1779
- --propskit-hover-border,
1780
- 1px solid var(--figma-color-bordertranslucent)
1781
- )
1782
- );
1783
- --_propskit-hover-color: var(
1784
- --propskit-slider-hover-color,
1785
- var(--propskit-hover-color, var(--_propskit-color))
1786
- );
1787
- --_propskit-label-inline-size: var(
1788
- --propskit-slider-label-inline-size,
1789
- var(--propskit-label-inline-size, 75%)
1790
- );
1791
- --_propskit-input-inline-size: var(
1792
- --propskit-slider-input-inline-size,
1793
- var(--propskit-input-inline-size, 100%)
1794
- );
1795
- --figma-focus-outline-offset: 1px;
1796
- --propskit-slider-progress-shadow: inset 0px 0.75px 0px 0px light-dark(transparent, rgba(255, 255, 255, 0.1));
1797
- --field-text-shadow: 0 1px 1.5px
1798
- light-dark(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2));
1799
- --propskit-slider-fig-slider-height: var(--propskit-slider-height);
1800
- --propskit-slider-fig-slider-thumb-height: calc(
1801
- var(--propskit-slider-fig-slider-height) - var(--spacer-3)
1802
- );
1803
- --propskit-slider-number-right: calc(2px + var(--spacer-1));
1804
- --propskit-slider-handle-fade-start-threshold: var(--spacer-3);
1805
- --propskit-slider-handle-fade-end-threshold: var(--spacer-2);
1806
- --propskit-slider-handle-proximity: 1;
1807
- --propskit-slider-handle-reveal: 0;
1808
- --propskit-slider-handle-scale: var(--propskit-slider-handle-proximity);
1809
- --propskit-slider-handle-color: light-dark(#222, var(--figma-color-text));
1810
-
1811
- display: block;
1812
- position: relative;
1813
- box-sizing: border-box;
1814
- width: 100%;
1815
- height: calc(
1816
- var(--propskit-slider-height) + var(--_propskit-padding-block) * 2
1817
- );
1818
- border-radius: var(--radius-medium-large);
1819
- transform-origin: var(--propskit-slider-elastic-origin);
1820
- transition: transform var(--propskit-slider-elastic-transition);
1821
- padding-block: var(--_propskit-padding-block);
1822
- padding-inline: var(--_propskit-padding-inline);
1823
-
1824
- &:hover,
1825
- &:focus-within {
1826
- --propskit-slider-handle-reveal: 1;
1827
- }
1828
-
1829
- label {
1830
- pointer-events: none;
1831
- z-index: 1;
1832
- }
1833
-
1834
- &[disabled]:not([disabled="false"]) {
1835
- pointer-events: none;
1836
- label,
1837
- input {
1838
- color: var(--figma-color-text-disabled);
1839
- }
1840
- fig-slider {
1841
- filter: grayscale(100%) opacity(0.5);
1842
- }
1843
- }
1844
- &[type="hue"] {
1845
- label,
1846
- input {
1847
- color: var(
1848
- --propskit-slider-filled-text-color,
1849
- var(--figma-color-text-oninverse)
1850
- ) !important;
1851
- }
1852
- }
1853
-
1854
- &[type="opacity"] fig-slider {
1855
- --slider-checkerboard: var(--checkerboard);
1856
- }
1857
-
1858
-
1859
- .propskit-slider-surface {
1860
- position: relative;
1861
- padding-inline-start: var(--spacer-2-5);
1862
- display: flex;
1863
- height: 100%;
1864
- border-radius: var(--figma-focus-outline-radius);
1865
- background: var(--_propskit-background);
1866
- color: var(--_propskit-color);
1867
- outline: none;
1868
-
1869
- &:focus-within {
1870
- outline: var(--figma-focus-outline);
1871
- outline-offset: var(--figma-focus-outline-offset);
1872
- }
1873
-
1874
- & > label {
1875
- min-width: 0;
1876
- max-width: var(--_propskit-label-inline-size);
1877
- width: var(--_propskit-label-inline-size);
1878
- flex: 1 1 auto;
1879
- color: inherit;
1880
- display: flex;
1881
- align-items: center;
1882
- gap: var(--spacer-1);
1883
- margin:0;
1884
- height: 100%;
1885
- fig-icon:first-child{
1886
- margin-left: calc(var(--spacer-1) * -1);
1887
- }
1888
- }
1889
-
1890
- fig-slider {
1891
- position: absolute;
1892
- inset-block: 0;
1893
- inset-inline-end: 0;
1894
- inline-size: var(--_propskit-input-inline-size);
1895
- padding: 0;
1896
- background-color: transparent;
1897
- border-radius: inherit;
1898
- outline: none;
1899
- --slider-height: var(--propskit-slider-fig-slider-height);
1900
-
1901
- &:focus-within,
1902
- &:has(input[type="range"]:focus-visible) {
1903
- outline: none;
1904
- }
1905
- --slider-field-height: var(--propskit-slider-height);
1906
- --slider-thumb-width: var(--spacer-1);
1907
- --slider-thumb-color: var(--propskit-slider-handle-color);
1908
- /*--slider-thumb-height: calc(
1909
- var(--spacer-2) + (var(--spacer-3) - var(--spacer-2)) *
1910
- min(var(--slider-complete), calc(1 - var(--slider-complete))) * 2
1911
- );*/
1912
- --slider-thumb-height: var(--propskit-slider-fig-slider-thumb-height);
1913
- --slider-border-radius: var(--radius-medium-large);
1914
- --slider-tick-width: 0.125rem;
1915
- --slider-tick-height: var(--spacer-2);
1916
- --slider-tick-radius: var(--radius-medium);
1917
- --slider-stepper-padding: 0;
1918
- /*
1919
- Progress = --slider-percent (0 → 100%).
1920
- Native range: thumbRight = complete * (100% - thumbWidth) + thumbWidth.
1921
- Wanted: thumbRight = progress - inset = complete * 100% - inset.
1922
- Compensate with a constant-gap margin on the thumb.
1923
- */
1924
- --propskit-slider-thumb-inset: var(--spacer-2);
1925
- --propskit-slider-progress-percent: var(--slider-percent);
1926
- --propskit-slider-thumb-travel-offset: calc(
1927
- (var(--slider-complete) - 1) * var(--slider-thumb-width) -
1928
- var(--propskit-slider-thumb-inset)
1929
- );
1930
- --slider-handle-shadow:
1931
- inset 0 0 0 var(--slider-thumb-height) var(--slider-thumb-color) !important;
1932
- --slider-thumb-opacity: calc(
1933
- var(--propskit-slider-handle-proximity) *
1934
- var(--propskit-slider-handle-proximity) *
1935
- var(--propskit-slider-handle-reveal)
1936
- );
1937
- --slider-tick-opacity: 0.5;
1938
-
1939
- &[type="delta"],
1940
- &[type="stepper"],
1941
- &[type="hue"] {
1942
- --propskit-slider-thumb-inset: 0;
1943
- }
1944
-
1945
- &[type="stepper"] {
1946
- datalist{
1947
- opacity: 0;
1948
- }
1949
- &:hover, &:focus-within {
1950
- datalist{
1951
- opacity: 1;
1952
- }
1953
- }
1954
- }
1955
-
1956
- &[type="stepper"] .fig-slider-input-container input[type="range"] {
1957
- width: 100% !important;
1958
- margin-left: 0;
1959
- }
1960
-
1961
- .fig-slider-input-container {
1962
- box-shadow: none !important;
1963
- background-color: var(--_propskit-background) !important;
1964
- overflow: hidden;
1965
-
1966
- &::after {
1967
- border: var(--_propskit-border);
1968
- }
1969
-
1970
- &:hover,
1971
- &:focus-within {
1972
- background-color: var(--_propskit-hover-background) !important;
1973
- color: var(--_propskit-hover-color);
1974
-
1975
- &::after {
1976
- content: "";
1977
- position: absolute;
1978
- inset: 0;
1979
- pointer-events: none;
1980
- border-radius: var(--slider-border-radius);
1981
- border: var(--_propskit-hover-border);
1982
- box-shadow: none !important;
1983
- }
1984
- }
1985
- &::before {
1986
- box-shadow: var(--propskit-slider-progress-shadow) !important;
1987
- background: var(--figma-color-bordertranslucent) !important;
1988
- min-width: 0 !important;
1989
- box-shadow: none !important;
1990
- }
1991
- input[type="range"] {
1992
- border-radius: 0 !important;
1993
- width: 100% !important;
1994
- margin-left: 0;
1995
- &::-webkit-slider-thumb {
1996
- margin-left: var(--propskit-slider-thumb-travel-offset);
1997
- }
1998
- &::-moz-range-thumb {
1999
- margin-left: var(--propskit-slider-thumb-travel-offset);
2000
- }
2001
- }
2002
- }
2003
-
2004
- &:not([type="delta"]) .fig-slider-input-container::before {
2005
- width: var(--propskit-slider-progress-percent) !important;
2006
- max-width: 100%;
2007
- }
2008
-
2009
- &[type="delta"] .fig-slider-input-container::before {
2010
- background: var(--figma-color-bordertranslucent) !important;
2011
- --left-start: calc(
2012
- var(--start-percent) - var(--slider-thumb-width) / 2
2013
- ) !important;
2014
- left: min(
2015
- var(--left-start),
2016
- calc(
2017
- var(--slider-percent) - var(--slider-complete) *
2018
- var(--slider-thumb-width)
2019
- )
2020
- ) !important;
2021
- --width: calc(var(--slider-percent) - var(--start-percent)) !important;
2022
- --abs-width: max(
2023
- calc(
2024
- var(--width) + var(--slider-thumb-width) / 2 +
2025
- (1 - var(--slider-complete)) * var(--slider-thumb-width)
2026
- ),
2027
- calc(
2028
- -1 * var(--width) + var(--slider-thumb-width) / 2 +
2029
- var(--slider-complete) * var(--slider-thumb-width)
2030
- )
2031
- ) !important;
2032
- width: var(--abs-width) !important;
2033
- }
2034
-
2035
- &:is([type="hue"], [type="opacity"]) {
2036
- .fig-slider-input-container {
2037
- &::after {
2038
- content: "";
2039
- position: absolute;
2040
- inset: 0;
2041
- z-index: 0;
2042
- pointer-events: none;
2043
- border-radius: var(--slider-border-radius);
2044
- }
2045
-
2046
- input[type="range"] {
2047
- position: relative;
2048
- z-index: 1;
2049
- &::-webkit-slider-runnable-track {
2050
- background: transparent;
2051
- }
2052
- &::-moz-range-track {
2053
- background: transparent;
2054
- }
2055
- }
2056
- }
2057
- }
2058
-
2059
- &[type="hue"] .fig-slider-input-container {
2060
- --propskit-slider-hue-color: hsl(
2061
- calc(var(--slider-complete) * 360deg) 100% 50%
2062
- );
2063
- background: var(--propskit-slider-hue-color) !important;
2064
-
2065
- &::after {
2066
- box-sizing: border-box;
2067
- inset: auto 0 0;
2068
- height: 3px;
2069
- border: 0;
2070
- border-radius: 0;
2071
- background: var(--bg-hue);
2072
- box-shadow: none !important;
2073
- mask-image: none;
2074
- -webkit-mask-image: none;
2075
- }
2076
-
2077
- }
2078
-
2079
- &[type="opacity"] .fig-slider-input-container {
2080
- --propskit-slider-opacity-color: color-mix(
2081
- in srgb,
2082
- var(--color) calc(var(--slider-complete) * 100%),
2083
- transparent
2084
- );
2085
- --propskit-slider-strip-effective-color: color-mix(
2086
- in srgb,
2087
- var(--color) calc(var(--slider-complete) * 100%),
2088
- var(--figma-color-bg-secondary)
2089
- );
2090
- --propskit-slider-strip-border-color: color-mix(
2091
- in srgb,
2092
- var(--propskit-slider-strip-effective-color) 90%,
2093
- light-dark(#000, #fff) 10%
2094
- );
2095
- --propskit-slider-strip-border-color: light-dark(
2096
- oklch(
2097
- from var(--propskit-slider-strip-effective-color)
2098
- clamp(0, calc(l - 0.08), 0.85) c h
2099
- ),
2100
- oklch(
2101
- from var(--propskit-slider-strip-effective-color)
2102
- clamp(0.4, calc(l + 0.08), 1) c h
2103
- )
2104
- );
2105
-
2106
- &::before {
2107
- display: block;
2108
- opacity: 1;
2109
- box-shadow: none !important;
2110
- background:
2111
- linear-gradient(
2112
- var(--propskit-slider-opacity-color),
2113
- var(--propskit-slider-opacity-color)
2114
- ),
2115
- var(--slider-checkerboard) !important;
2116
- }
2117
-
2118
- &::after {
2119
- box-sizing: border-box;
2120
- inset: 0 auto 0 0;
2121
- width: var(--propskit-slider-progress-percent);
2122
- border: 1px solid var(--propskit-slider-strip-border-color);
2123
- background: transparent;
2124
- box-shadow: none !important;
2125
- mix-blend-mode: normal;
2126
- opacity: clamp(0, var(--slider-complete) * 1000, 1);
2127
- }
2128
- }
2129
- }
2130
- datalist {
2131
- mask-image: linear-gradient(
2132
- to right,
2133
- transparent 0,
2134
- transparent var(--spacer-4),
2135
- white,
2136
- transparent calc(100% - var(--spacer-4)),
2137
- transparent 100%
2138
- );
2139
- }
2140
- fig-input-number {
2141
- background-color: transparent;
2142
- box-shadow: none !important;
2143
- position: absolute;
2144
- right: var(--propskit-slider-number-right);
2145
- top: 50%;
2146
- bottom: auto;
2147
- z-index: 2;
2148
- height: var(--control-height);
2149
- width: fit-content;
2150
- min-width: fit-content;
2151
- max-width: max-content;
2152
- flex: 0 0 auto;
2153
- border-left: 0;
2154
- border-radius: var(--radius-medium);
2155
- outline: none !important;
2156
- transform: translateY(-50%);
2157
-
2158
- &:hover,
2159
- &:has(input:focus) {
2160
- box-shadow: none !important;
2161
- outline: none !important;
2162
- }
2163
- input {
2164
- field-sizing: content;
2165
- font-variant-numeric: tabular-nums;
2166
- border-radius: var(--radius-medium);
2167
- width: auto;
2168
- flex: 0 0 auto;
2169
- text-align: right;
2170
- color: var(--field-text-color);
2171
- cursor: ew-resize;
2172
- touch-action: none;
2173
-
2174
- &:focus {
2175
- cursor: text;
2176
- touch-action: auto;
2177
- }
2178
- }
2179
- }
2180
- }
2181
-
2182
- &[type="opacity"][color] {
2183
- fig-slider {
2184
- container-type: inline-size;
2185
- }
2186
-
2187
- .propskit-slider-surface > label {
2188
- --propskit-slider-label-fill-edge: clamp(
2189
- 0%,
2190
- calc(var(--propskit-slider-complete, 0) * 133.333333%),
2191
- 100%
2192
- );
2193
- background-image: linear-gradient(
2194
- to right,
2195
- var(--propskit-slider-filled-text-color) 0
2196
- var(--propskit-slider-label-fill-edge),
2197
- var(--figma-color-text-secondary)
2198
- var(--propskit-slider-label-fill-edge) 100%
2199
- );
2200
- background-clip: text;
2201
- -webkit-background-clip: text;
2202
- color: transparent !important;
2203
- -webkit-text-fill-color: transparent;
2204
- }
2205
-
2206
- fig-input-number[theme] input {
2207
- --propskit-slider-number-fill-edge: clamp(
2208
- 0px,
2209
- calc(
2210
- 100% + var(--propskit-slider-number-right) -
2211
- (1 - var(--slider-complete)) * 100cqw
2212
- ),
2213
- 100%
2214
- );
2215
- background-image: linear-gradient(
2216
- to right,
2217
- var(--propskit-slider-filled-text-color) 0
2218
- var(--propskit-slider-number-fill-edge),
2219
- var(--figma-color-text) var(--propskit-slider-number-fill-edge) 100%
2220
- ) !important;
2221
- background-clip: text;
2222
- -webkit-background-clip: text;
2223
- color: transparent !important;
2224
- -webkit-text-fill-color: transparent;
2225
- }
2226
- }
2227
-
2228
- &[data-elastic-dragging="true"] {
2229
- transform: scaleX(var(--propskit-slider-elastic-scale));
2230
- transition: none;
2231
- }
2232
- }
2233
-
2234
- propskit-slider input[type="range"]:active::-webkit-slider-thumb {
2235
- cursor: ew-resize;
2236
- }
2237
-
2238
- propskit-slider input[type="range"]:active::-moz-range-thumb {
2239
- cursor: ew-resize;
2240
- }
2241
-
2242
- propskit-slider input[type="range"]::-webkit-slider-thumb {
2243
- transform: scale(var(--propskit-slider-handle-scale));
2244
- transform-origin: center;
2245
- }
2246
-
2247
- propskit-slider input[type="range"]::-moz-range-thumb {
2248
- transform: scale(var(--propskit-slider-handle-scale));
2249
- transform-origin: center;
2250
- }
2251
-
2252
- fig-input-wheel {
2253
- --fig-input-wheel-handle-drag-max: 0.5rem;
2254
- --fig-input-wheel-handle-drag-offset: 0px;
2255
- --fig-input-wheel-handle-spring: 0.28s
2256
- cubic-bezier(0.34, 1.56, 0.64, 1);
2257
- --fig-input-wheel-keyboard-handle-spring: 0.14s
2258
- cubic-bezier(0.34, 1.56, 0.64, 1);
2259
- --fig-input-wheel-tick-width: 0.125rem;
2260
- --fig-input-wheel-tick-width-min: 1px;
2261
- --fig-input-wheel-tick-height: calc(
2262
- var(--fig-input-wheel-handle-height) - 4px
2263
- );
2264
- --fig-input-wheel-tick-height-min: 8px;
2265
- --fig-input-wheel-tick-fade: 1rem;
2266
- --fig-input-wheel-tick-opacity: 0.5;
2267
- --fig-input-wheel-tick-opacity-min: 0.1;
2268
- --fig-input-wheel-fast-tick-blur: 2px;
2269
- --fig-input-wheel-handle-width: var(--spacer-1);
2270
- --fig-input-wheel-handle-height: calc(
2271
- var(--control-height) - var(--spacer-2)
2272
- );
2273
- --fig-input-wheel-handle-color: light-dark(
2274
- var(--figma-color-text-secondary),
2275
- var(--figma-color-text)
2276
- );
2277
-
2278
- position: relative;
2279
- display: block;
2280
- box-sizing: border-box;
2281
- width: 100%;
2282
- height: var(--control-height);
2283
- border-radius: var(--radius-medium);
2284
- background-color: var(--figma-color-bg-secondary);
2285
- outline: none;
2286
- cursor: ew-resize;
2287
-
2288
- &:focus-visible {
2289
- outline: var(--figma-focus-outline);
2290
- outline-offset: var(--figma-focus-outline-offset);
2291
- }
2292
-
2293
- &[disabled]:not([disabled="false"]) {
2294
- pointer-events: none;
2295
- opacity: 0.5;
2296
- }
2297
-
2298
- .fig-input-wheel-svg {
2299
- display: block;
2300
- width: calc(100% - var(--spacer-3));
2301
- height: 100%;
2302
- margin-inline: var(--spacer-2);
2303
- overflow: visible;
2304
- color: var(--figma-color-icon-tertiary);
2305
- mask-image: linear-gradient(
2306
- to right,
2307
- rgb(0 0 0 / var(--fig-input-wheel-tick-opacity-min)) 0,
2308
- rgb(0 0 0 / var(--fig-input-wheel-tick-opacity))
2309
- var(--fig-input-wheel-tick-fade),
2310
- rgb(0 0 0 / var(--fig-input-wheel-tick-opacity))
2311
- calc(100% - var(--fig-input-wheel-tick-fade)),
2312
- rgb(0 0 0 / var(--fig-input-wheel-tick-opacity-min)) 100%
2313
- );
2314
- }
2315
-
2316
- .fig-input-wheel-tick {
2317
- fill: currentColor;
2318
- stroke: none;
2319
- transition: filter 0.12s ease-out;
2320
- }
2321
-
2322
- .fig-input-wheel-handle {
2323
- position: absolute;
2324
- top: 50%;
2325
- left: 50%;
2326
- z-index: 1;
2327
- width: var(--fig-input-wheel-handle-width);
2328
- height: var(--fig-input-wheel-handle-height);
2329
- border-radius: calc(var(--fig-input-wheel-handle-width) / 2);
2330
- background: transparent;
2331
- pointer-events: none;
2332
- transform: translate(
2333
- calc(-50% + var(--fig-input-wheel-handle-drag-offset)),
2334
- -50%
2335
- );
2336
- transition: transform var(--fig-input-wheel-handle-spring);
2337
- box-shadow:
2338
- inset 0 0 0 var(--fig-input-wheel-handle-height)
2339
- var(--fig-input-wheel-handle-color);
2340
- }
2341
-
2342
- &[data-fig-input-wheel-active] .fig-input-wheel-handle {
2343
- transition: none;
2344
- }
2345
-
2346
- &[data-fig-input-wheel-fast] .fig-input-wheel-tick {
2347
- filter: blur(var(--fig-input-wheel-fast-tick-blur));
2348
- transition: none;
2349
- }
2350
-
2351
- &[data-fig-input-wheel-keyboard-moving] .fig-input-wheel-handle {
2352
- transition: none;
2353
- }
2354
-
2355
- &[data-fig-input-wheel-keyboard-settling] .fig-input-wheel-handle {
2356
- transition: transform var(--fig-input-wheel-keyboard-handle-spring);
2357
- }
2358
- }
2359
-
2360
- propskit-wheel {
2361
- --propskit-wheel-elastic-distance: calc(var(--spacer-2) + 0.25rem);
2362
- --propskit-wheel-elastic-scale: 1;
2363
- --propskit-wheel-elastic-origin: left center;
2364
- --propskit-wheel-elastic-transition: 0.28s
2365
- cubic-bezier(0.34, 1.56, 0.64, 1);
2366
- --propskit-wheel-height: 2rem;
2367
- --_propskit-padding-block: var(
2368
- --propskit-wheel-padding-block,
2369
- var(--propskit-padding-block, var(--spacer-1))
2370
- );
2371
- --_propskit-padding-inline: var(
2372
- --propskit-wheel-padding-inline,
2373
- var(--propskit-padding-inline, var(--spacer-3))
2374
- );
2375
- --_propskit-background: var(
2376
- --propskit-wheel-background,
2377
- var(--propskit-background, var(--figma-color-bg-secondary))
2378
- );
2379
- --_propskit-border: var(
2380
- --propskit-wheel-border,
2381
- var(--propskit-border, 0 solid transparent)
2382
- );
2383
- --_propskit-color: var(
2384
- --propskit-wheel-color,
2385
- var(--propskit-color, var(--figma-color-text-secondary))
2386
- );
2387
- --_propskit-hover-background: var(
2388
- --propskit-wheel-hover-background,
2389
- var(--propskit-hover-background, var(--_propskit-background))
2390
- );
2391
- --_propskit-hover-border: var(
2392
- --propskit-wheel-hover-border,
2393
- var(
2394
- --propskit-hover-border,
2395
- 1px solid var(--figma-color-bordertranslucent)
2396
- )
2397
- );
2398
- --_propskit-hover-color: var(
2399
- --propskit-wheel-hover-color,
2400
- var(--propskit-hover-color, var(--_propskit-color))
2401
- );
2402
- --_propskit-label-inline-size: var(
2403
- --propskit-wheel-label-inline-size,
2404
- var(--propskit-label-inline-size, 75%)
2405
- );
2406
- --_propskit-input-inline-size: var(
2407
- --propskit-wheel-input-inline-size,
2408
- var(--propskit-input-inline-size, fit-content)
2409
- );
2410
- --propskit-wheel-number-right: calc(2px + var(--spacer-1));
2411
- --propskit-wheel-track-inset: 3rem;
2412
- --propskit-wheel-track-inset-left: var(--propskit-wheel-track-inset);
2413
- --propskit-wheel-track-inset-right: var(--propskit-wheel-track-inset);
2414
- --figma-focus-outline-offset: 1px;
2415
-
2416
- display: block;
2417
- position: relative;
2418
- box-sizing: border-box;
2419
- width: 100%;
2420
- height: calc(
2421
- var(--propskit-wheel-height) + var(--_propskit-padding-block) * 2
2422
- );
2423
- transform-origin: var(--propskit-wheel-elastic-origin);
2424
- transition: transform var(--propskit-wheel-elastic-transition);
2425
- padding-block: var(--_propskit-padding-block);
2426
- padding-inline: var(--_propskit-padding-inline);
2427
-
2428
- &[data-label-empty] {
2429
- --propskit-wheel-track-inset-left: var(--spacer-2);
2430
- }
2431
-
2432
- &[text="false"] {
2433
- --propskit-wheel-track-inset-right: var(--spacer-2);
2434
- }
2435
-
2436
- &[disabled]:not([disabled="false"]) {
2437
- pointer-events: none;
2438
-
2439
- label,
2440
- input {
2441
- color: var(--figma-color-text-disabled);
2442
- }
2443
- }
2444
-
2445
- .propskit-wheel-surface {
2446
- position: relative;
2447
- display: block;
2448
- box-sizing: border-box;
2449
- width: 100%;
2450
- height: 100%;
2451
- border-radius: var(--radius-medium-large);
2452
- background: var(--_propskit-background);
2453
- color: var(--_propskit-color);
2454
- overflow: hidden;
2455
- cursor: ew-resize;
2456
- touch-action: none;
2457
- user-select: none;
2458
-
2459
- &:focus-within {
2460
- outline: var(--figma-focus-outline);
2461
- outline-offset: var(--figma-focus-outline-offset);
2462
- }
2463
-
2464
- &::after {
2465
- content: "";
2466
- position: absolute;
2467
- inset: 0;
2468
- border-radius: inherit;
2469
- border: var(--_propskit-border);
2470
- pointer-events: none;
2471
- }
2472
-
2473
- &:hover {
2474
- background: var(--_propskit-hover-background);
2475
- color: var(--_propskit-hover-color);
2476
-
2477
- &::after {
2478
- border: var(--_propskit-hover-border);
2479
- }
2480
- }
2481
-
2482
- > label {
2483
- position: absolute;
2484
- inset: 0;
2485
- z-index: 1;
2486
- display: block;
2487
- box-sizing: border-box;
2488
- width: var(--_propskit-label-inline-size);
2489
- max-width: var(--_propskit-label-inline-size);
2490
- padding-inline-start: var(--spacer-2-5);
2491
- overflow: hidden;
2492
- color: inherit;
2493
- text-overflow: ellipsis;
2494
- white-space: nowrap;
2495
- align-content: center;
2496
- pointer-events: none;
2497
- }
2498
- }
2499
-
2500
- .propskit-wheel-surface > fig-input-wheel {
2501
- --fig-input-wheel-handle-height: calc(
2502
- var(--propskit-wheel-height) - var(--spacer-3)
2503
- );
2504
-
2505
- position: absolute;
2506
- inset: 0 var(--propskit-wheel-track-inset-right) 0
2507
- var(--propskit-wheel-track-inset-left);
2508
- z-index: 0;
2509
- width: auto;
2510
- height: 100%;
2511
- background-color: transparent;
2512
- outline: none;
2513
- transform: none;
2514
- transition: none;
2515
- }
2516
-
2517
- fig-input-number {
2518
- background-color: transparent;
2519
- box-shadow: none !important;
2520
- font-variant-numeric: var(--font-variant-numeric);
2521
- position: absolute;
2522
- inset-inline-end: var(--propskit-wheel-number-right);
2523
- top: 50%;
2524
- bottom: auto;
2525
- z-index: 2;
2526
- height: var(--control-height);
2527
- width: var(--_propskit-input-inline-size);
2528
- min-width: fit-content;
2529
- max-width: max-content;
2530
- flex: 0 0 auto;
2531
- border: 0;
2532
- border-radius: var(--radius-medium);
2533
- outline: none !important;
2534
- transform: translateY(-50%);
2535
-
2536
- &:hover,
2537
- &:has(input:focus) {
2538
- box-shadow: none !important;
2539
- outline: none !important;
2540
- }
2541
-
2542
- input {
2543
- field-sizing: content;
2544
- width: auto;
2545
- flex: 0 0 auto;
2546
- text-align: right;
2547
- cursor: ew-resize;
2548
- touch-action: none;
2549
- user-select: text;
2550
-
2551
- &:focus {
2552
- cursor: text;
2553
- touch-action: auto;
2554
- }
2555
- }
2556
- }
2557
-
2558
- &[data-propskit-wheel-elastic-dragging] {
2559
- transform: scaleX(var(--propskit-wheel-elastic-scale));
2560
- transition: none;
2561
- }
2562
- }
2563
-
2564
- body.fig-input-wheel-dragging,
2565
- body.fig-input-wheel-dragging *,
2566
- body.propskit-slider-dragging,
2567
- body.propskit-slider-dragging * {
2568
- cursor: grabbing !important;
2569
- user-select: none !important;
2570
- -webkit-user-select: none !important;
2571
- }
2572
-
2573
- @media (prefers-reduced-motion: reduce) {
2574
- propskit-wheel,
2575
- fig-input-wheel .fig-input-wheel-tick,
2576
- fig-input-wheel .fig-input-wheel-handle {
2577
- transition: none;
2578
- }
2579
- }
2580
-
2581
- :is(
2582
- .propskit-switch-surface,
2583
- .propskit-color-surface,
2584
- .propskit-fill-surface,
2585
- .propskit-gradient-surface,
2586
- .propskit-select-surface,
2587
- .propskit-slider-surface
2588
- ) > label {
2589
- position: absolute;
2590
- inset: 0;
2591
- z-index: 1;
2592
- display: block;
2593
- align-content: center;
2594
- box-sizing: border-box;
2595
- width: var(--_propskit-label-inline-size);
2596
- max-width: var(--_propskit-label-inline-size);
2597
- padding-inline-start: var(--spacer-2-5);
2598
- overflow: hidden;
2599
- text-overflow: ellipsis;
2600
- white-space: nowrap;
2601
- pointer-events: none;
2602
- }
2603
-
2604
- propskit-color-point,
2605
- propskit-point-point,
2606
- propskit-point-radius,
2607
- propskit-point-radius-angle {
2608
- display: contents;
2609
- }
2610
-
2611
- propskit-position {
2612
- --propskit-position-height: 2rem;
2613
- --_propskit-padding-block: var(
2614
- --propskit-position-padding-block,
2615
- var(--propskit-padding-block, var(--spacer-1))
2616
- );
2617
- --_propskit-padding-inline: var(
2618
- --propskit-position-padding-inline,
2619
- var(--propskit-padding-inline, var(--spacer-3))
2620
- );
2621
- --_propskit-background: var(
2622
- --propskit-position-background,
2623
- var(--propskit-background, var(--figma-color-bg-secondary))
2624
- );
2625
- --_propskit-border: var(
2626
- --propskit-position-border,
2627
- var(--propskit-border, 0 solid transparent)
2628
- );
2629
- --_propskit-color: var(
2630
- --propskit-position-color,
2631
- var(--propskit-color, var(--figma-color-text-secondary))
2632
- );
2633
- --_propskit-hover-background: var(
2634
- --propskit-position-hover-background,
2635
- var(--propskit-hover-background, var(--_propskit-background))
2636
- );
2637
- --_propskit-hover-border: var(
2638
- --propskit-position-hover-border,
2639
- var(
2640
- --propskit-hover-border,
2641
- 1px solid var(--figma-color-bordertranslucent)
2642
- )
2643
- );
2644
- --_propskit-hover-color: var(
2645
- --propskit-position-hover-color,
2646
- var(--propskit-hover-color, var(--_propskit-color))
2647
- );
2648
- --_propskit-label-inline-size: var(
2649
- --propskit-position-label-inline-size,
2650
- var(--propskit-label-inline-size, auto)
2651
- );
2652
- --_propskit-input-inline-size: var(
2653
- --propskit-position-input-inline-size,
2654
- var(--propskit-input-inline-size, 3.85rem)
2655
- );
2656
- --figma-focus-outline-offset: 1px;
2657
-
2658
- display: flex;
2659
- flex-direction: column;
2660
- gap: var(--spacer-1);
2661
- box-sizing: border-box;
2662
- width: 100%;
2663
- padding-block: var(--_propskit-padding-block);
2664
- padding-inline: var(--_propskit-padding-inline);
2665
-
2666
- &[disabled]:not([disabled="false"]) {
2667
- pointer-events: none;
2668
-
2669
- .propskit-position-surface > label {
2670
- color: var(--figma-color-text-disabled);
2671
- }
2672
- }
2673
-
2674
- .propskit-position-surface {
2675
- position: relative;
2676
- display: flex;
2677
- align-items: center;
2678
- box-sizing: border-box;
2679
- width: 100%;
2680
- min-width: 0;
2681
- height: var(--propskit-position-height);
2682
- min-height: var(--propskit-position-height);
2683
- padding-inline: var(--spacer-2-5) var(--spacer-1);
2684
- border-radius: var(--radius-medium-large);
2685
- background: var(--_propskit-background);
2686
- color: var(--_propskit-color);
2687
-
2688
- &::after {
2689
- content: "";
2690
- position: absolute;
2691
- inset: 0;
2692
- border-radius: inherit;
2693
- border: var(--_propskit-border);
2694
- pointer-events: none;
2695
- }
2696
-
2697
- &:hover {
2698
- background: var(--_propskit-hover-background);
2699
- color: var(--_propskit-hover-color);
2700
-
2701
- &::after {
2702
- border: var(--_propskit-hover-border);
2703
- }
2704
- }
2705
-
2706
- & > label {
2707
- position: relative;
2708
- z-index: 1;
2709
- display: flex;
2710
- align-items: center;
2711
- flex: 1 1 auto;
2712
- inline-size: var(--_propskit-label-inline-size);
2713
- min-width: 0;
2714
- margin: 0 auto 0 0;
2715
- padding: 0;
2716
- overflow: hidden;
2717
- color: inherit;
2718
- text-overflow: ellipsis;
2719
- white-space: nowrap;
2720
- pointer-events: none;
2721
- }
2722
-
2723
- & > [data-propskit-position-axis] {
2724
- position: relative;
2725
- z-index: 1;
2726
- flex: 0 1 auto;
2727
- min-width: 0;
2728
- }
2729
- }
2730
-
2731
- fig-input-number {
2732
- width: var(--_propskit-input-inline-size);
2733
- height: var(--control-height);
2734
- border: 0;
2735
- background-color: transparent;
2736
- box-shadow: none;
2737
- outline: none !important;
2738
-
2739
- &:hover,
2740
- &:focus-within {
2741
- border: 0;
2742
- background-color: transparent;
2743
- box-shadow: none;
2744
- outline: none !important;
2745
- }
2746
- }
2747
-
2748
- }
2749
-
2750
- propskit-joystick {
2751
- --_propskit-padding-block: var(
2752
- --propskit-joystick-padding-block,
2753
- var(--propskit-padding-block, var(--spacer-1))
2754
- );
2755
- --_propskit-padding-inline: var(
2756
- --propskit-joystick-padding-inline,
2757
- var(--propskit-padding-inline, var(--spacer-3))
2758
- );
2759
- --_propskit-background: var(
2760
- --propskit-joystick-background,
2761
- var(--propskit-background, var(--figma-color-bg-secondary))
2762
- );
2763
- --_propskit-border: var(
2764
- --propskit-joystick-border,
2765
- var(--propskit-border, 0 solid transparent)
2766
- );
2767
- --_propskit-color: var(
2768
- --propskit-joystick-color,
2769
- var(--propskit-color, var(--figma-color-text-secondary))
2770
- );
2771
- --_propskit-hover-background: var(
2772
- --propskit-joystick-hover-background,
2773
- var(--propskit-hover-background, var(--_propskit-background))
2774
- );
2775
- --_propskit-hover-border: var(
2776
- --propskit-joystick-hover-border,
2777
- var(
2778
- --propskit-hover-border,
2779
- 1px solid var(--figma-color-bordertranslucent)
2780
- )
2781
- );
2782
- --_propskit-hover-color: var(
2783
- --propskit-joystick-hover-color,
2784
- var(--propskit-hover-color, var(--_propskit-color))
2785
- );
2786
- --_propskit-label-inline-size: var(
2787
- --propskit-joystick-label-inline-size,
2788
- var(--propskit-label-inline-size, 100%)
2789
- );
2790
- --_propskit-input-inline-size: var(
2791
- --propskit-joystick-input-inline-size,
2792
- var(--propskit-input-inline-size, 100%)
2793
- );
2794
-
2795
- display: block;
2796
- box-sizing: border-box;
2797
- width: 100%;
2798
- padding-block: var(--_propskit-padding-block);
2799
- padding-inline: var(--_propskit-padding-inline);
2800
-
2801
- .propskit-joystick-surface {
2802
- position: relative;
2803
- display: flex;
2804
- flex-direction: column;
2805
- align-items: stretch;
2806
- gap: var(--spacer-2);
2807
- box-sizing: border-box;
2808
- width: 100%;
2809
- min-width: 0;
2810
- padding: var(--spacer-2);
2811
- border-radius: var(--radius-medium-large);
2812
- background: var(--_propskit-background);
2813
- color: var(--_propskit-color);
2814
-
2815
- &::after {
2816
- content: "";
2817
- position: absolute;
2818
- inset: 0;
2819
- border: var(--_propskit-border);
2820
- border-radius: inherit;
2821
- pointer-events: none;
2822
- }
2823
-
2824
- &:hover {
2825
- background: var(--_propskit-hover-background);
2826
- color: var(--_propskit-hover-color);
2827
-
2828
- &::after {
2829
- border: var(--_propskit-hover-border);
2830
- }
2831
- }
2832
-
2833
- & > label {
2834
- display: block;
2835
- width: var(--_propskit-label-inline-size);
2836
- min-width: 0;
2837
- margin: 0;
2838
- padding: 0;
2839
- padding-inline-start: calc(var(--spacer-2-5) - var(--spacer-2));
2840
- overflow: hidden;
2841
- color: inherit;
2842
- text-overflow: ellipsis;
2843
- white-space: nowrap;
2844
- pointer-events: none;
2845
- }
2846
- }
2847
-
2848
- fig-joystick {
2849
- --size: 100%;
2850
- align-self: flex-end;
2851
- width: var(--_propskit-input-inline-size);
2852
- min-width: 0;
2853
-
2854
- .fig-input-joystick-guides {
2855
- background-color: var(
2856
- --propskit-bg-subfield,
2857
- rgba(255, 255, 255, 0.05)
2858
- );
2859
- --figma-color-border: var(
2860
- --propskit-color-border-subfield,
2861
- var(--figma-color-bordertranslucent)
2862
- );
2863
- }
2864
-
2865
- .joystick-values > fig-input-number {
2866
- border: 0;
2867
- background-color: var(
2868
- --propskit-bg-subfield,
2869
- rgba(255, 255, 255, 0.05)
2870
- );
2871
- box-shadow: none;
2872
- }
2873
-
2874
- .fig-joystick-reset {
2875
- display: none;
2876
- }
2877
- }
2878
-
2879
- &[variant="minimal"] .propskit-joystick-surface {
2880
- background: transparent;
2881
- }
2882
-
2883
- &[disabled]:not([disabled="false"]) {
2884
- .propskit-joystick-surface {
2885
- color: var(--figma-color-text-disabled);
2886
- }
2887
-
2888
- fig-joystick {
2889
- filter: grayscale(100%);
2890
- opacity: 0.5;
2891
- }
2892
- }
2893
- }
2894
-
2895
- propskit-origin {
2896
- --_propskit-padding-block: var(
2897
- --propskit-origin-padding-block,
2898
- var(--propskit-padding-block, var(--spacer-1))
2899
- );
2900
- --_propskit-padding-inline: var(
2901
- --propskit-origin-padding-inline,
2902
- var(--propskit-padding-inline, var(--spacer-3))
2903
- );
2904
- --_propskit-background: var(
2905
- --propskit-origin-background,
2906
- var(--propskit-background, var(--figma-color-bg-secondary))
2907
- );
2908
- --_propskit-border: var(
2909
- --propskit-origin-border,
2910
- var(--propskit-border, 0 solid transparent)
2911
- );
2912
- --_propskit-color: var(
2913
- --propskit-origin-color,
2914
- var(--propskit-color, var(--figma-color-text-secondary))
2915
- );
2916
- --_propskit-hover-background: var(
2917
- --propskit-origin-hover-background,
2918
- var(--propskit-hover-background, var(--_propskit-background))
2919
- );
2920
- --_propskit-hover-border: var(
2921
- --propskit-origin-hover-border,
2922
- var(
2923
- --propskit-hover-border,
2924
- 1px solid var(--figma-color-bordertranslucent)
2925
- )
2926
- );
2927
- --_propskit-hover-color: var(
2928
- --propskit-origin-hover-color,
2929
- var(--propskit-hover-color, var(--_propskit-color))
2930
- );
2931
- --_propskit-label-inline-size: var(
2932
- --propskit-origin-label-inline-size,
2933
- var(--propskit-label-inline-size, 100%)
2934
- );
2935
- --_propskit-input-inline-size: var(
2936
- --propskit-origin-input-inline-size,
2937
- var(--propskit-input-inline-size, 100%)
2938
- );
2939
- }
2940
-
2941
- propskit-easing {
2942
- --_propskit-padding-block: var(
2943
- --propskit-easing-padding-block,
2944
- var(--propskit-padding-block, var(--spacer-1))
2945
- );
2946
- --_propskit-padding-inline: var(
2947
- --propskit-easing-padding-inline,
2948
- var(--propskit-padding-inline, var(--spacer-3))
2949
- );
2950
- --_propskit-background: var(
2951
- --propskit-easing-background,
2952
- var(--propskit-background, var(--figma-color-bg-secondary))
2953
- );
2954
- --_propskit-border: var(
2955
- --propskit-easing-border,
2956
- var(--propskit-border, 0 solid transparent)
2957
- );
2958
- --_propskit-color: var(
2959
- --propskit-easing-color,
2960
- var(--propskit-color, var(--figma-color-text-secondary))
2961
- );
2962
- --_propskit-hover-background: var(
2963
- --propskit-easing-hover-background,
2964
- var(--propskit-hover-background, var(--_propskit-background))
2965
- );
2966
- --_propskit-hover-border: var(
2967
- --propskit-easing-hover-border,
2968
- var(
2969
- --propskit-hover-border,
2970
- 1px solid var(--figma-color-bordertranslucent)
2971
- )
2972
- );
2973
- --_propskit-hover-color: var(
2974
- --propskit-easing-hover-color,
2975
- var(--propskit-hover-color, var(--_propskit-color))
2976
- );
2977
- --_propskit-label-inline-size: var(
2978
- --propskit-easing-label-inline-size,
2979
- var(--propskit-label-inline-size, 100%)
2980
- );
2981
- --_propskit-input-inline-size: var(
2982
- --propskit-easing-input-inline-size,
2983
- var(--propskit-input-inline-size, 100%)
2984
- );
2985
- }
2986
-
2987
- propskit-spring {
2988
- --_propskit-padding-block: var(
2989
- --propskit-spring-padding-block,
2990
- var(--propskit-padding-block, var(--spacer-1))
2991
- );
2992
- --_propskit-padding-inline: var(
2993
- --propskit-spring-padding-inline,
2994
- var(--propskit-padding-inline, var(--spacer-3))
2995
- );
2996
- --_propskit-background: var(
2997
- --propskit-spring-background,
2998
- var(--propskit-background, var(--figma-color-bg-secondary))
2999
- );
3000
- --_propskit-border: var(
3001
- --propskit-spring-border,
3002
- var(--propskit-border, 0 solid transparent)
3003
- );
3004
- --_propskit-color: var(
3005
- --propskit-spring-color,
3006
- var(--propskit-color, var(--figma-color-text-secondary))
3007
- );
3008
- --_propskit-hover-background: var(
3009
- --propskit-spring-hover-background,
3010
- var(--propskit-hover-background, var(--_propskit-background))
3011
- );
3012
- --_propskit-hover-border: var(
3013
- --propskit-spring-hover-border,
3014
- var(
3015
- --propskit-hover-border,
3016
- 1px solid var(--figma-color-bordertranslucent)
3017
- )
3018
- );
3019
- --_propskit-hover-color: var(
3020
- --propskit-spring-hover-color,
3021
- var(--propskit-hover-color, var(--_propskit-color))
3022
- );
3023
- --_propskit-label-inline-size: var(
3024
- --propskit-spring-label-inline-size,
3025
- var(--propskit-label-inline-size, 100%)
3026
- );
3027
- --_propskit-input-inline-size: var(
3028
- --propskit-spring-input-inline-size,
3029
- var(--propskit-input-inline-size, 100%)
3030
- );
3031
- }
3032
-
3033
- propskit-image {
3034
- --_propskit-padding-block: var(
3035
- --propskit-image-padding-block,
3036
- var(--propskit-padding-block, var(--spacer-1))
3037
- );
3038
- --_propskit-padding-inline: var(
3039
- --propskit-image-padding-inline,
3040
- var(--propskit-padding-inline, var(--spacer-3))
3041
- );
3042
- --_propskit-background: var(
3043
- --propskit-image-background,
3044
- var(--propskit-background, var(--figma-color-bg-secondary))
3045
- );
3046
- --_propskit-border: var(
3047
- --propskit-image-border,
3048
- var(--propskit-border, 0 solid transparent)
3049
- );
3050
- --_propskit-color: var(
3051
- --propskit-image-color,
3052
- var(--propskit-color, var(--figma-color-text-secondary))
3053
- );
3054
- --_propskit-hover-background: var(
3055
- --propskit-image-hover-background,
3056
- var(--propskit-hover-background, var(--_propskit-background))
3057
- );
3058
- --_propskit-hover-border: var(
3059
- --propskit-image-hover-border,
3060
- var(
3061
- --propskit-hover-border,
3062
- 1px solid var(--figma-color-bordertranslucent)
3063
- )
3064
- );
3065
- --_propskit-hover-color: var(
3066
- --propskit-image-hover-color,
3067
- var(--propskit-hover-color, var(--_propskit-color))
220
+ fig-input-wheel {
221
+ --fig-input-wheel-handle-drag-max: 0.5rem;
222
+ --fig-input-wheel-handle-drag-offset: 0px;
223
+ --fig-input-wheel-handle-spring: 0.28s
224
+ cubic-bezier(0.34, 1.56, 0.64, 1);
225
+ --fig-input-wheel-keyboard-handle-spring: 0.14s
226
+ cubic-bezier(0.34, 1.56, 0.64, 1);
227
+ --fig-input-wheel-tick-width: 0.125rem;
228
+ --fig-input-wheel-tick-width-min: 1px;
229
+ --fig-input-wheel-tick-height: calc(
230
+ var(--fig-input-wheel-handle-height) - 4px
3068
231
  );
3069
- --_propskit-label-inline-size: var(
3070
- --propskit-image-label-inline-size,
3071
- var(--propskit-label-inline-size, 100%)
232
+ --fig-input-wheel-tick-height-min: 8px;
233
+ --fig-input-wheel-tick-fade: 1rem;
234
+ --fig-input-wheel-tick-opacity: 0.5;
235
+ --fig-input-wheel-tick-opacity-min: 0.1;
236
+ --fig-input-wheel-fast-tick-blur: 2px;
237
+ --fig-input-wheel-handle-width: var(--spacer-1);
238
+ --fig-input-wheel-handle-height: calc(
239
+ var(--control-height) - var(--spacer-2)
3072
240
  );
3073
- --_propskit-input-inline-size: var(
3074
- --propskit-image-input-inline-size,
3075
- var(--propskit-input-inline-size, 100%)
241
+ --fig-input-wheel-handle-color: light-dark(
242
+ var(--figma-color-text-secondary),
243
+ var(--figma-color-text)
3076
244
  );
3077
- }
3078
245
 
3079
- :is(propskit-origin, propskit-easing, propskit-spring, propskit-image) {
246
+ position: relative;
3080
247
  display: block;
3081
248
  box-sizing: border-box;
3082
249
  width: 100%;
3083
- padding-block: var(--_propskit-padding-block);
3084
- padding-inline: var(--_propskit-padding-inline);
3085
-
3086
- & > :is(
3087
- .propskit-origin-surface,
3088
- .propskit-easing-surface,
3089
- .propskit-spring-surface,
3090
- .propskit-image-surface
3091
- ) {
3092
- position: relative;
3093
- display: flex;
3094
- flex-direction: column;
3095
- align-items: stretch;
3096
- gap: var(--spacer-2);
3097
- box-sizing: border-box;
3098
- width: 100%;
3099
- min-width: 0;
3100
- padding: var(--spacer-2);
3101
- border-radius: var(--radius-medium-large);
3102
- background: var(--_propskit-background);
3103
- color: var(--_propskit-color);
3104
-
3105
- &::after {
3106
- content: "";
3107
- position: absolute;
3108
- inset: 0;
3109
- border: var(--_propskit-border);
3110
- border-radius: inherit;
3111
- pointer-events: none;
3112
- }
3113
-
3114
- &:hover {
3115
- background: var(--_propskit-hover-background);
3116
- color: var(--_propskit-hover-color);
3117
-
3118
- &::after {
3119
- border: var(--_propskit-hover-border);
3120
- }
3121
- }
3122
-
3123
- & > label {
3124
- display: block;
3125
- width: var(--_propskit-label-inline-size);
3126
- min-width: 0;
3127
- margin: 0;
3128
- padding: 0;
3129
- padding-inline-start: calc(var(--spacer-2-5) - var(--spacer-2));
3130
- overflow: hidden;
3131
- color: inherit;
3132
- text-overflow: ellipsis;
3133
- white-space: nowrap;
3134
- pointer-events: none;
3135
- }
3136
- }
250
+ height: var(--control-height);
251
+ border-radius: var(--radius-medium);
252
+ background-color: var(--figma-color-bg-secondary);
253
+ outline: none;
254
+ cursor: ew-resize;
3137
255
 
3138
- &[variant="minimal"] > :is(
3139
- .propskit-origin-surface,
3140
- .propskit-easing-surface,
3141
- .propskit-spring-surface,
3142
- .propskit-image-surface
3143
- ) {
3144
- background: transparent;
256
+ &:focus-visible {
257
+ outline: var(--figma-focus-outline);
258
+ outline-offset: var(--figma-focus-outline-offset);
3145
259
  }
3146
260
 
3147
261
  &[disabled]:not([disabled="false"]) {
3148
- & > :is(
3149
- .propskit-origin-surface,
3150
- .propskit-easing-surface,
3151
- .propskit-spring-surface,
3152
- .propskit-image-surface
3153
- ) {
3154
- color: var(--figma-color-text-disabled);
3155
- }
3156
-
3157
- :is(fig-origin-grid, fig-easing-curve) {
3158
- filter: grayscale(100%);
3159
- opacity: 0.5;
3160
- }
3161
- }
3162
- }
3163
-
3164
- propskit-image {
3165
- .propskit-image-header {
3166
- position: relative;
3167
- z-index: 1;
3168
- display: flex;
3169
- align-items: center;
3170
- gap: var(--spacer-2);
3171
- width: 100%;
3172
- min-width: 0;
3173
- min-height: var(--control-height);
3174
-
3175
- & > label {
3176
- display: block;
3177
- flex: 1 1 auto;
3178
- width: var(--_propskit-label-inline-size);
3179
- min-width: 0;
3180
- margin: 0;
3181
- padding: 0;
3182
- padding-inline-start: calc(var(--spacer-2-5) - var(--spacer-2));
3183
- transform: translateY(calc(-1 * var(--spacer-1)));
3184
- overflow: hidden;
3185
- color: inherit;
3186
- text-overflow: ellipsis;
3187
- white-space: nowrap;
3188
- pointer-events: none;
3189
- }
3190
- }
3191
-
3192
- .propskit-image-upload-tooltip {
3193
- flex: 0 0 auto;
3194
- margin-inline-start: auto;
3195
- }
3196
-
3197
- .propskit-image-upload {
3198
- flex: 0 0 auto;
262
+ pointer-events: none;
263
+ opacity: 0.5;
3199
264
  }
3200
265
 
3201
- .propskit-image-chooser {
3202
- --fig-chooser-inline-margin: 0px;
3203
-
3204
- position: relative;
3205
- z-index: 1;
3206
- align-self: flex-end;
3207
- width: var(--_propskit-input-inline-size);
3208
- max-width: none;
3209
- max-height: 15rem;
3210
- margin: calc(-1 * var(--spacer-1)) 0;
3211
- margin-top: calc(-1 * var(--spacer-2));
3212
- padding: 0 var(--spacer-1);
3213
-
3214
- &[hidden] {
3215
- display: none;
3216
- }
3217
-
3218
- & > .fig-overflow::before {
3219
- background: var(--figma-color-bg-secondary) !important;
3220
- }
266
+ .fig-input-wheel-svg {
267
+ display: block;
268
+ width: calc(100% - var(--spacer-3));
269
+ height: 100%;
270
+ margin-inline: var(--spacer-2);
271
+ overflow: visible;
272
+ color: var(--figma-color-icon-tertiary);
273
+ mask-image: linear-gradient(
274
+ to right,
275
+ rgb(0 0 0 / var(--fig-input-wheel-tick-opacity-min)) 0,
276
+ rgb(0 0 0 / var(--fig-input-wheel-tick-opacity))
277
+ var(--fig-input-wheel-tick-fade),
278
+ rgb(0 0 0 / var(--fig-input-wheel-tick-opacity))
279
+ calc(100% - var(--fig-input-wheel-tick-fade)),
280
+ rgb(0 0 0 / var(--fig-input-wheel-tick-opacity-min)) 100%
281
+ );
3221
282
  }
3222
283
 
3223
- fig-choice {
3224
- --fig-choice-border-radius: var(--radius-medium);
3225
-
3226
- position: relative;
3227
- min-width: 0;
284
+ .fig-input-wheel-tick {
285
+ fill: currentColor;
286
+ stroke: none;
287
+ transition: filter 0.12s ease-out;
3228
288
  }
3229
289
 
3230
- .propskit-image-remove {
3231
- display: flex;
290
+ .fig-input-wheel-handle {
3232
291
  position: absolute;
3233
- z-index: 3;
3234
- top: var(--spacer-1);
3235
- right: var(--spacer-1);
3236
- box-sizing: border-box;
3237
- align-items: center;
3238
- justify-content: center;
3239
- width: 1.25rem;
3240
- min-width: 1.25rem;
3241
- height: 1.25rem;
3242
- padding: 0;
3243
- border-radius: var(--radius-medium);
3244
- opacity: 0;
292
+ top: 50%;
293
+ left: 50%;
294
+ z-index: 1;
295
+ width: var(--fig-input-wheel-handle-width);
296
+ height: var(--fig-input-wheel-handle-height);
297
+ border-radius: calc(var(--fig-input-wheel-handle-width) / 2);
298
+ background: transparent;
3245
299
  pointer-events: none;
3246
- color: var(--figma-color-text);
3247
- color-scheme: light;
3248
- background-color: var(--figma-color-bg);
3249
- box-shadow: 0 0 0 1px var(--figma-color-bordertranslucent);
3250
-
3251
- &:active {
3252
- background-color: var(--figma-color-bg-secondary);
3253
- }
3254
- }
3255
-
3256
- fig-choice:hover .propskit-image-remove {
3257
- opacity: 1;
3258
- pointer-events: auto;
3259
- }
3260
-
3261
- fig-image {
3262
- width: 100%;
3263
- max-width: none;
3264
- min-width: 0;
3265
- gap: 0;
3266
- border-radius: var(--radius-medium);
3267
-
3268
- & > fig-preview {
3269
- min-height: 0;
3270
- border-radius: var(--radius-medium);
3271
- }
3272
- }
3273
- }
3274
-
3275
- propskit-origin {
3276
- fig-origin-grid {
3277
- --figma-color-border: var(
3278
- --propskit-color-border-subfield,
3279
- var(--figma-color-bordertranslucent)
300
+ transform: translate(
301
+ calc(-50% + var(--fig-input-wheel-handle-drag-offset)),
302
+ -50%
3280
303
  );
3281
-
3282
- align-self: flex-end;
3283
- width: var(--_propskit-input-inline-size);
3284
- min-width: 0;
3285
-
3286
- .origin-grid,
3287
- .origin-values > fig-input-number {
3288
- background-color: var(
3289
- --propskit-bg-subfield,
3290
- rgba(255, 255, 255, 0.05)
3291
- );
3292
- }
304
+ transition: transform var(--fig-input-wheel-handle-spring);
305
+ box-shadow:
306
+ inset 0 0 0 var(--fig-input-wheel-handle-height)
307
+ var(--fig-input-wheel-handle-color);
3293
308
  }
3294
- }
3295
-
3296
- :is(propskit-easing, propskit-spring) {
3297
- fig-easing-curve {
3298
- --figma-color-border: var(
3299
- --propskit-color-border-subfield,
3300
- var(--figma-color-bordertranslucent)
3301
- );
3302
-
3303
- align-self: flex-end;
3304
- width: var(--_propskit-input-inline-size);
3305
- min-width: 0;
3306
309
 
3307
- .fig-easing-curve-svg-container,
3308
- .fig-easing-curve-value-input {
3309
- background-color: var(
3310
- --propskit-bg-subfield,
3311
- rgba(255, 255, 255, 0.05)
3312
- );
3313
- }
3314
-
3315
- .fig-easing-curve-boundary,
3316
- .fig-easing-curve-target {
3317
- stroke: var(
3318
- --propskit-color-border-subfield,
3319
- var(--figma-color-bordertranslucent)
3320
- );
3321
- }
3322
-
3323
- fig-handle::after {
3324
- --fig-handle-inner-bg: light-dark(
3325
- #ffffff,
3326
- var(--figma-color-bg-secondary)
3327
- );
3328
- }
310
+ &[data-fig-input-wheel-active] .fig-input-wheel-handle {
311
+ transition: none;
3329
312
  }
3330
- }
3331
313
 
3332
- :is(propskit-easing, propskit-spring)
3333
- fig-easing-curve
3334
- .fig-easing-curve-select {
3335
- background-color: var(
3336
- --propskit-bg-subfield,
3337
- rgba(255, 255, 255, 0.05)
3338
- );
3339
-
3340
- &:hover:not([disabled]):not([disabled="false"]) {
3341
- background-color: var(
3342
- --propskit-bg-subfield,
3343
- rgba(255, 255, 255, 0.05)
3344
- );
314
+ &[data-fig-input-wheel-fast] .fig-input-wheel-tick {
315
+ filter: blur(var(--fig-input-wheel-fast-tick-blur));
316
+ transition: none;
3345
317
  }
3346
- }
3347
-
3348
- :is(
3349
- propskit-switch,
3350
- propskit-color,
3351
- propskit-fill,
3352
- propskit-gradient,
3353
- propskit-palette,
3354
- propskit-image,
3355
- propskit-editable-select,
3356
- propskit-select,
3357
- propskit-easing,
3358
- propskit-text,
3359
- propskit-number,
3360
- propskit-origin,
3361
- propskit-position,
3362
- propskit-joystick,
3363
- propskit-spring,
3364
- propskit-color-point,
3365
- propskit-point-radius,
3366
- propskit-point-radius-angle,
3367
- propskit-point-point,
3368
- propskit-group,
3369
- propskit-slider,
3370
- propskit-wheel,
3371
- propskit-oscillator
3372
- ) fig-button[variant="secondary"] {
3373
- background-color: var(
3374
- --propskit-bg-subfield,
3375
- rgba(255, 255, 255, 0.05)
3376
- );
3377
- box-shadow: none;
3378
318
 
3379
- &:hover:not([disabled]):not([disabled="false"]),
3380
- &[disabled]:not([disabled="false"]) {
3381
- background-color: var(
3382
- --propskit-bg-subfield,
3383
- rgba(255, 255, 255, 0.05)
3384
- );
319
+ &[data-fig-input-wheel-keyboard-moving] .fig-input-wheel-handle {
320
+ transition: none;
3385
321
  }
3386
- }
3387
322
 
3388
- :is(
3389
- propskit-number,
3390
- propskit-position,
3391
- propskit-joystick,
3392
- propskit-origin
3393
- ) fig-input-number:is(:focus-within, :active, :has(input:active)) {
3394
- background-color: var(--figma-color-bg);
323
+ &[data-fig-input-wheel-keyboard-settling] .fig-input-wheel-handle {
324
+ transition: transform var(--fig-input-wheel-keyboard-handle-spring);
325
+ }
3395
326
  }
3396
327
 
3397
- :is(propskit-text, propskit-editable-select)
3398
- fig-input-text:is(
3399
- :focus-within,
3400
- :active,
3401
- :has(:is(input, textarea):active)
3402
- ) {
3403
- background-color: var(--figma-color-bg);
3404
- }
3405
328
 
3406
- :is(
3407
- propskit-slider,
3408
- propskit-wheel
3409
- ) fig-input-number:has(input:focus) {
3410
- background-color: var(--figma-color-bg);
329
+ body.fig-input-wheel-dragging,
330
+ body.fig-input-wheel-dragging * {
331
+ cursor: grabbing !important;
332
+ user-select: none !important;
333
+ -webkit-user-select: none !important;
3411
334
  }
3412
335
 
3413
- :is(
3414
- propskit-palette,
3415
- propskit-select,
3416
- propskit-editable-select,
3417
- propskit-text,
3418
- propskit-number,
3419
- propskit-slider,
3420
- propskit-wheel
3421
- )
3422
- :is(
3423
- .propskit-palette-surface,
3424
- .propskit-select-surface,
3425
- .propskit-editable-select-surface,
3426
- .propskit-text-surface,
3427
- .propskit-number-surface,
3428
- .propskit-slider-surface,
3429
- .propskit-wheel-surface
3430
- ):focus-within,
3431
- :is(propskit-color, propskit-fill, propskit-gradient):is(
3432
- :focus-within,
3433
- .has-popup-open
3434
- )
3435
- :is(
3436
- .propskit-color-surface,
3437
- .propskit-fill-surface,
3438
- .propskit-gradient-surface
3439
- ) {
3440
- outline: var(--figma-focus-outline);
3441
- outline-offset: var(--figma-focus-outline-offset);
3442
- outline-color: transparent;
3443
- overflow: visible;
3444
-
3445
- &::before {
3446
- content: "";
3447
- position: absolute;
3448
- inset: calc(-1px - var(--figma-focus-outline-offset));
3449
- box-sizing: border-box;
3450
- border: var(--figma-focus-outline);
3451
- border-radius: calc(
3452
- var(--figma-focus-outline-radius) + var(--figma-focus-outline-offset) +
3453
- 1px
3454
- );
3455
- pointer-events: none;
3456
- z-index: 4;
336
+ @media (prefers-reduced-motion: reduce) {
337
+ fig-input-wheel .fig-input-wheel-tick,
338
+ fig-input-wheel .fig-input-wheel-handle {
339
+ transition: none;
3457
340
  }
3458
341
  }
3459
342
 
3460
- :is(.propskit-palette-surface, .propskit-select-surface) fig-select::part(trigger) {
3461
- outline: none;
3462
- }
3463
-
3464
343
  /* Canvas Control */
3465
344
  body {
3466
345
  --fig-lab-cursor: url('data:image/svg+xml,<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(%23clip0_20065_231516)"><g filter="url(%23filter0_d_20065_231516)"><path fill-rule="evenodd" clip-rule="evenodd" d="M2.93938 2.93938C3.35531 2.52345 3.97597 2.38901 4.52673 2.59555L15.5267 6.72055C16.1416 6.95111 16.535 7.55477 16.4976 8.21034C16.4603 8.86592 16.0009 9.421 15.3638 9.58026L10.737 10.737L9.58026 15.3638C9.421 16.0009 8.86592 16.4603 8.21034 16.4976C7.55477 16.535 6.95111 16.1416 6.72055 15.5267L2.59555 4.52673C2.38901 3.97597 2.52345 3.35531 2.93938 2.93938Z" fill="white"/></g><path fill-rule="evenodd" clip-rule="evenodd" d="M4.17558 3.53185C3.99199 3.463 3.7851 3.50782 3.64646 3.64646C3.50782 3.7851 3.463 3.99199 3.53185 4.17558L7.65685 15.1756C7.7337 15.3805 7.93492 15.5117 8.15345 15.4992C8.37197 15.4868 8.557 15.3336 8.61009 15.1213L9.91232 9.91232L15.1213 8.61009C15.3336 8.557 15.4868 8.37197 15.4992 8.15345C15.5117 7.93492 15.3805 7.7337 15.1756 7.65685L4.17558 3.53185Z" fill="black"/></g><defs><filter id="filter0_d_20065_231516" x="-0.5" y="0.5" width="20" height="20" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/><feOffset dy="1"/><feGaussianBlur stdDeviation="1.5"/><feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.35 0"/><feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_20065_231516"/><feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_20065_231516" result="shape"/></filter><clipPath id="clip0_20065_231516"><rect width="32" height="32" fill="white"/></clipPath></defs></svg>') 3 3, default;
@@ -3681,159 +560,6 @@ fig-input-angle {
3681
560
  }
3682
561
 
3683
562
  /* Oscillator Input */
3684
- propskit-oscillator {
3685
- display: flex;
3686
- flex-direction: column;
3687
- width: 100%;
3688
- --aspect-ratio: 2 / 1;
3689
- --oscillator-stroke-width: 2;
3690
- --propskit-oscillator-playhead-radius: 5px;
3691
-
3692
- .propskit-oscillator-svg-container {
3693
- border-radius: var(--radius-medium-large);
3694
- padding: var(--spacer-3) var(--spacer-5);
3695
- margin-bottom: var(--spacer-2);
3696
- overflow: hidden;
3697
- position: relative;
3698
-
3699
- &::before{
3700
- position: absolute;
3701
- inset: 0 var(--spacer-3);
3702
- content: "";
3703
- background: var(--figma-color-bg-secondary);
3704
- border-radius: var(--radius-medium-large);
3705
- }
3706
-
3707
- &:is(:hover, :active, :focus, :focus-visible, :focus-within) {
3708
- overflow: visible;
3709
- }
3710
- path{
3711
- stroke: var(--figma-color-border-strong);
3712
- }
3713
- }
3714
-
3715
- .propskit-oscillator-svg {
3716
- display: block;
3717
- width: 100%;
3718
- aspect-ratio: var(--aspect-ratio);
3719
- overflow: visible;
3720
- position: relative;
3721
- z-index: 1;
3722
-
3723
- .propskit-oscillator-handle{
3724
- opacity: 0;
3725
- }
3726
- &:hover,
3727
- &:focus-within,
3728
- &.dragging{
3729
- .propskit-oscillator-handle{
3730
- opacity: 1;
3731
- }
3732
- }
3733
- }
3734
-
3735
- .propskit-oscillator-bounds {
3736
- fill: transparent;
3737
- }
3738
-
3739
- .propskit-oscillator-baseline {
3740
- pointer-events: none;
3741
- stroke: var(--figma-color-bordertranslucent);
3742
- stroke-width: var(--oscillator-stroke-width);
3743
- stroke-linecap: round;
3744
- }
3745
-
3746
- .propskit-oscillator-path {
3747
- pointer-events: none;
3748
- fill: none;
3749
- stroke: var(--figma-color-text);
3750
- stroke-width: var(--oscillator-stroke-width);
3751
- stroke-linejoin: round;
3752
- stroke-linecap: round;
3753
- }
3754
-
3755
- .propskit-oscillator-playhead {
3756
- pointer-events: none;
3757
- r: var(--propskit-oscillator-playhead-radius);
3758
- fill: var(--handle-color);
3759
- stroke: var(--figma-color-bg);
3760
- stroke-width: 1px;
3761
- }
3762
-
3763
- .propskit-oscillator-handle {
3764
- overflow: visible;
3765
- pointer-events: all;
3766
- cursor: default;
3767
-
3768
- .propskit-oscillator-handle-inner {
3769
- display: grid;
3770
- place-items: center;
3771
- width: 100%;
3772
- height: 100%;
3773
- overflow: visible;
3774
- }
3775
- }
3776
-
3777
- .propskit-oscillator-frequency-handle {
3778
- cursor: ew-resize;
3779
-
3780
- fig-handle,
3781
- fig-handle:hover,
3782
- fig-handle .fig-handle-hit-area,
3783
- fig-handle:hover .fig-handle-hit-area,
3784
- fig-handle:is(:active, .active, .dragging),
3785
- fig-handle:is(:active, .active, .dragging) .fig-handle-hit-area {
3786
- cursor: ew-resize !important;
3787
- }
3788
- }
3789
-
3790
- .propskit-oscillator-amplitude-handle {
3791
- cursor: ns-resize;
3792
-
3793
- fig-handle,
3794
- fig-handle:hover,
3795
- fig-handle .fig-handle-hit-area,
3796
- fig-handle:hover .fig-handle-hit-area,
3797
- fig-handle:is(:active, .active, .dragging),
3798
- fig-handle:is(:active, .active, .dragging) .fig-handle-hit-area {
3799
- cursor: ns-resize !important;
3800
- }
3801
- }
3802
-
3803
- .propskit-oscillator-waves {
3804
- display: flex;
3805
- flex-direction: column;
3806
- gap: 0;
3807
- }
3808
-
3809
- .propskit-oscillator-wave {
3810
- margin-bottom: 0;
3811
-
3812
- > fig-header {
3813
- .propskit-oscillator-remove-button,
3814
- .propskit-oscillator-add-type-button {
3815
- flex-shrink: 0;
3816
- }
3817
- }
3818
- }
3819
-
3820
- .propskit-oscillator-field {
3821
- width: 100%;
3822
- }
3823
-
3824
- .propskit-oscillator-add-type-button {
3825
- width: var(--spacer-4);
3826
- height: var(--spacer-4);
3827
- min-width: var(--spacer-4);
3828
- }
3829
-
3830
- &[disabled]:not([disabled="false"]) {
3831
- pointer-events: none;
3832
- opacity: 0.6;
3833
- }
3834
- }
3835
-
3836
- /* Reorder */
3837
563
  fig-reorder {
3838
564
  display: contents;
3839
565
  }