@rogieking/figui3 8.9.31 → 8.9.32

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
@@ -362,6 +362,7 @@ fig-content:has(> propskit-group[name]:last-child) {
362
362
  propskit-point-point,
363
363
  propskit-group,
364
364
  propskit-slider,
365
+ propskit-wheel,
365
366
  propskit-oscillator
366
367
  ) :is(fig-input-text, fig-input-number)[disabled]:not([disabled="false"]) {
367
368
  border: 0;
@@ -369,8 +370,8 @@ fig-content:has(> propskit-group[name]:last-child) {
369
370
  box-shadow: none;
370
371
  }
371
372
 
372
- /* Large size: more left field padding; nudge trailing controls in from
373
- the right. propskit-select uses shared label padding instead. */
373
+ /* Large is the default size: use wider field padding and nudge trailing
374
+ controls in from the right. propskit-select uses shared label padding. */
374
375
  :is(
375
376
  propskit-switch,
376
377
  propskit-color,
@@ -379,27 +380,27 @@ fig-content:has(> propskit-group[name]:last-child) {
379
380
  propskit-text,
380
381
  propskit-number,
381
382
  propskit-slider
382
- )[size="large"] {
383
+ ):not([size="small"]) {
383
384
  fig-field:not([direction="vertical"]) {
384
385
  padding-left: var(--spacer-2-5);
385
386
  }
386
387
  }
387
388
 
388
389
  /* Flex-positioned numbers — margin works. Absolute numbers use right: calc(...) below. */
389
- propskit-number[size="large"] {
390
+ propskit-number {
390
391
  fig-field fig-input-number {
391
392
  margin-right: var(--spacer-1);
392
393
  }
393
394
  }
394
395
 
395
- propskit-text[size="large"] {
396
+ propskit-text {
396
397
  fig-field > fig-input-text {
397
398
  margin-right: var(--spacer-1);
398
399
  }
399
400
  }
400
401
 
401
402
  propskit-switch {
402
- --propskit-switch-height: 1.5rem;
403
+ --propskit-switch-height: 2rem;
403
404
  --propskit-switch-vertical-padding: var(--spacer-1);
404
405
  --propskit-switch-horizontal-padding: var(--spacer-3);
405
406
 
@@ -411,11 +412,15 @@ propskit-switch {
411
412
  padding: var(--propskit-switch-vertical-padding)
412
413
  var(--propskit-switch-horizontal-padding);
413
414
 
414
- &[size="large"] {
415
- --propskit-switch-height: 2rem;
415
+ &:not([size="small"]) fig-field:not([direction="vertical"]) {
416
+ padding-right: var(--spacer-1);
417
+ }
418
+
419
+ &[size="small"] {
420
+ --propskit-switch-height: 1.5rem;
416
421
 
417
422
  fig-field:not([direction="vertical"]) {
418
- padding-right: var(--spacer-1);
423
+ padding-right: 0;
419
424
  }
420
425
  }
421
426
 
@@ -477,7 +482,7 @@ propskit-switch {
477
482
 
478
483
  propskit-color,
479
484
  propskit-fill {
480
- --propskit-color-height: 1.5rem;
485
+ --propskit-color-height: 2rem;
481
486
  --propskit-color-vertical-padding: var(--spacer-1);
482
487
  --propskit-color-horizontal-padding: var(--spacer-3);
483
488
  --figma-focus-outline-offset: 1px;
@@ -490,8 +495,8 @@ propskit-fill {
490
495
  padding: var(--propskit-color-vertical-padding)
491
496
  var(--propskit-color-horizontal-padding);
492
497
 
493
- &[size="large"] {
494
- --propskit-color-height: 2rem;
498
+ &[size="small"] {
499
+ --propskit-color-height: 1.5rem;
495
500
  }
496
501
 
497
502
  &[disabled]:not([disabled="false"]) {
@@ -568,7 +573,7 @@ propskit-fill {
568
573
  }
569
574
 
570
575
  propskit-gradient {
571
- --propskit-gradient-height: 1.5rem;
576
+ --propskit-gradient-height: 2rem;
572
577
  --propskit-gradient-vertical-padding: var(--spacer-1);
573
578
  --propskit-gradient-horizontal-padding: var(--spacer-3);
574
579
  --figma-focus-outline-offset: 1px;
@@ -581,18 +586,18 @@ propskit-gradient {
581
586
  padding: var(--propskit-gradient-vertical-padding)
582
587
  var(--propskit-gradient-horizontal-padding);
583
588
 
584
- &[size="large"] {
585
- --propskit-gradient-height: 2rem;
589
+ &[size="small"] {
590
+ --propskit-gradient-height: 1.5rem;
591
+ }
586
592
 
587
- fig-input-gradient {
588
- --fig-input-gradient-height: var(--propskit-gradient-height);
589
- height: var(--propskit-gradient-height);
593
+ fig-input-gradient {
594
+ --fig-input-gradient-height: var(--propskit-gradient-height);
595
+ height: var(--propskit-gradient-height);
590
596
 
591
- fig-swatch {
592
- --height: var(--propskit-gradient-height);
593
- --size: var(--propskit-gradient-height);
594
- height: var(--propskit-gradient-height);
595
- }
597
+ fig-swatch {
598
+ --height: var(--propskit-gradient-height);
599
+ --size: var(--propskit-gradient-height);
600
+ height: var(--propskit-gradient-height);
596
601
  }
597
602
  }
598
603
 
@@ -654,6 +659,7 @@ propskit-gradient {
654
659
  min-width: 0;
655
660
  margin-left: auto;
656
661
  border-radius: var(--radius-medium);
662
+ background-color: transparent;
657
663
  }
658
664
  }
659
665
  }
@@ -661,6 +667,10 @@ propskit-gradient {
661
667
  :is(propskit-color, propskit-fill, propskit-gradient) {
662
668
  outline: none;
663
669
 
670
+ fig-swatch {
671
+ background-color: transparent !important;
672
+ }
673
+
664
674
  fig-field:not([direction="vertical"]) {
665
675
  outline: none;
666
676
  }
@@ -698,7 +708,7 @@ propskit-gradient {
698
708
  }
699
709
 
700
710
  propskit-select {
701
- --propskit-select-height: 1.5rem;
711
+ --propskit-select-height: 2rem;
702
712
  --propskit-select-vertical-padding: var(--spacer-1);
703
713
  --propskit-select-horizontal-padding: var(--spacer-3);
704
714
  --figma-focus-outline-offset: 1px;
@@ -711,24 +721,42 @@ propskit-select {
711
721
  padding: var(--propskit-select-vertical-padding)
712
722
  var(--propskit-select-horizontal-padding);
713
723
 
714
- &[size="large"] {
715
- --propskit-select-height: 2rem;
724
+ fig-field:not([direction="vertical"]) {
725
+ :is(fig-select, fig-dropdown) {
726
+ padding-right: var(--spacer-1);
727
+
728
+ &::after {
729
+ right: calc(0.25rem + var(--spacer-1));
730
+ }
731
+ }
732
+
733
+ fig-select::part(trigger) {
734
+ padding-left: var(--spacer-2-5);
735
+ }
736
+
737
+ fig-dropdown > select {
738
+ padding-left: var(--spacer-2-5);
739
+ }
740
+ }
741
+
742
+ &[size="small"] {
743
+ --propskit-select-height: 1.5rem;
716
744
 
717
745
  fig-field:not([direction="vertical"]) {
718
746
  :is(fig-select, fig-dropdown) {
719
- padding-right: var(--spacer-1);
747
+ padding-right: 0;
720
748
 
721
749
  &::after {
722
- right: calc(0.25rem + var(--spacer-1));
750
+ right: 0.25rem;
723
751
  }
724
752
  }
725
753
 
726
754
  fig-select::part(trigger) {
727
- padding-left: var(--spacer-2-5);
755
+ padding-left: var(--spacer-2);
728
756
  }
729
757
 
730
758
  fig-dropdown > select {
731
- padding-left: var(--spacer-2-5);
759
+ padding-left: var(--spacer-2);
732
760
  }
733
761
  }
734
762
  }
@@ -812,7 +840,7 @@ propskit-select {
812
840
  }
813
841
 
814
842
  propskit-text {
815
- --propskit-text-height: 1.5rem;
843
+ --propskit-text-height: 2rem;
816
844
  --propskit-text-vertical-padding: var(--spacer-1);
817
845
  --propskit-text-horizontal-padding: var(--spacer-3);
818
846
  --figma-focus-outline-offset: 1px;
@@ -825,8 +853,8 @@ propskit-text {
825
853
  padding: var(--propskit-text-vertical-padding)
826
854
  var(--propskit-text-horizontal-padding);
827
855
 
828
- &[size="large"] {
829
- --propskit-text-height: 2rem;
856
+ &[size="small"] {
857
+ --propskit-text-height: 1.5rem;
830
858
  }
831
859
 
832
860
  &[disabled]:not([disabled="false"]) {
@@ -921,7 +949,7 @@ propskit-text {
921
949
  }
922
950
 
923
951
  propskit-number {
924
- --propskit-number-height: 1.5rem;
952
+ --propskit-number-height: 2rem;
925
953
  --propskit-number-vertical-padding: var(--spacer-1);
926
954
  --propskit-number-horizontal-padding: var(--spacer-3);
927
955
  --figma-focus-outline-offset: 1px;
@@ -934,8 +962,8 @@ propskit-number {
934
962
  padding: var(--propskit-number-vertical-padding)
935
963
  var(--propskit-number-horizontal-padding);
936
964
 
937
- &[size="large"] {
938
- --propskit-number-height: 2rem;
965
+ &[size="small"] {
966
+ --propskit-number-height: 1.5rem;
939
967
  }
940
968
 
941
969
  &[disabled]:not([disabled="false"]) {
@@ -992,7 +1020,7 @@ propskit-number {
992
1020
  width: fit-content;
993
1021
  min-width: 0;
994
1022
  margin-left: auto;
995
- height: var(--propskit-number-height);
1023
+ height: var(--control-height);
996
1024
  border-radius: var(--radius-medium);
997
1025
  background-color: transparent;
998
1026
  box-shadow: none;
@@ -1020,7 +1048,7 @@ propskit-slider {
1020
1048
  --propskit-slider-elastic-scale: 1;
1021
1049
  --propskit-slider-elastic-origin: left center;
1022
1050
  --propskit-slider-elastic-transition: 0.18s cubic-bezier(0.2, 1.45, 0.35, 1);
1023
- --propskit-slider-height: 1.5rem;
1051
+ --propskit-slider-height: 2rem;
1024
1052
  --propskit-slider-vertical-padding: var(--spacer-1);
1025
1053
  --propskit-slider-horizontal-padding: var(--spacer-3);
1026
1054
  --figma-focus-outline-offset: 1px;
@@ -1028,8 +1056,10 @@ propskit-slider {
1028
1056
  --field-text-shadow: 0 1px 1.5px
1029
1057
  light-dark(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2));
1030
1058
  --propskit-slider-fig-slider-height: var(--propskit-slider-height);
1031
- --propskit-slider-fig-slider-thumb-height: calc(var(--propskit-slider-fig-slider-height) - var(--spacer-2-5));
1032
- --propskit-slider-number-right: 2px;
1059
+ --propskit-slider-fig-slider-thumb-height: calc(
1060
+ var(--propskit-slider-fig-slider-height) - var(--spacer-3)
1061
+ );
1062
+ --propskit-slider-number-right: calc(2px + var(--spacer-1));
1033
1063
 
1034
1064
  display: block;
1035
1065
  position: relative;
@@ -1045,12 +1075,12 @@ propskit-slider {
1045
1075
  padding-left: var(--propskit-slider-horizontal-padding);
1046
1076
  padding-right: var(--propskit-slider-horizontal-padding);
1047
1077
 
1048
- &[size="large"] {
1049
- --propskit-slider-height: 2rem;
1078
+ &[size="small"] {
1079
+ --propskit-slider-height: 1.5rem;
1050
1080
  --propskit-slider-fig-slider-thumb-height: calc(
1051
- var(--propskit-slider-fig-slider-height) - var(--spacer-3)
1081
+ var(--propskit-slider-fig-slider-height) - var(--spacer-2-5)
1052
1082
  );
1053
- --propskit-slider-number-right: calc(2px + var(--spacer-1));
1083
+ --propskit-slider-number-right: 2px;
1054
1084
  }
1055
1085
 
1056
1086
  label {
@@ -1071,8 +1101,10 @@ propskit-slider {
1071
1101
  &[type="hue"] {
1072
1102
  label,
1073
1103
  input {
1074
- text-shadow: var(--field-text-shadow);
1075
- color: white;
1104
+ color: var(
1105
+ --propskit-slider-filled-text-color,
1106
+ var(--figma-color-text-oninverse)
1107
+ ) !important;
1076
1108
  }
1077
1109
  }
1078
1110
 
@@ -1266,22 +1298,75 @@ propskit-slider {
1266
1298
  }
1267
1299
  }
1268
1300
 
1269
- &[type="hue"] .fig-slider-input-container::after {
1270
- background: var(--bg-hue);
1271
- mask-image: none;
1272
- -webkit-mask-image: none;
1301
+ &[type="hue"] .fig-slider-input-container {
1302
+ --propskit-slider-hue-color: hsl(
1303
+ calc(var(--slider-complete) * 360deg) 100% 50%
1304
+ );
1305
+ background: var(--propskit-slider-hue-color) !important;
1306
+
1307
+ &::after {
1308
+ box-sizing: border-box;
1309
+ inset: auto 0 0;
1310
+ height: 3px;
1311
+ border: 0;
1312
+ border-radius: 0;
1313
+ background: var(--bg-hue);
1314
+ box-shadow: none !important;
1315
+ mask-image: none;
1316
+ -webkit-mask-image: none;
1317
+ }
1318
+
1273
1319
  }
1274
1320
 
1275
- &[type="opacity"] .fig-slider-input-container::before {
1276
- display: block;
1277
- width: 100% !important;
1278
- clip-path: inset(
1279
- 0 calc(100% - var(--propskit-slider-progress-percent)) 0 0 round
1280
- var(--slider-border-radius)
1321
+ &[type="opacity"] .fig-slider-input-container {
1322
+ --propskit-slider-opacity-color: color-mix(
1323
+ in srgb,
1324
+ var(--color) calc(var(--slider-complete) * 100%),
1325
+ transparent
1326
+ );
1327
+ --propskit-slider-strip-effective-color: color-mix(
1328
+ in srgb,
1329
+ var(--color) calc(var(--slider-complete) * 100%),
1330
+ var(--figma-color-bg-secondary)
1331
+ );
1332
+ --propskit-slider-strip-border-color: color-mix(
1333
+ in srgb,
1334
+ var(--propskit-slider-strip-effective-color) 90%,
1335
+ light-dark(#000, #fff) 10%
1281
1336
  );
1282
- background:
1283
- linear-gradient(to right, transparent, var(--color)),
1284
- var(--slider-checkerboard) !important;
1337
+ --propskit-slider-strip-border-color: light-dark(
1338
+ oklch(
1339
+ from var(--propskit-slider-strip-effective-color)
1340
+ clamp(0, calc(l - 0.08), 0.85) c h
1341
+ ),
1342
+ oklch(
1343
+ from var(--propskit-slider-strip-effective-color)
1344
+ clamp(0.4, calc(l + 0.08), 1) c h
1345
+ )
1346
+ );
1347
+
1348
+ &::before {
1349
+ display: block;
1350
+ opacity: 1;
1351
+ box-shadow: none !important;
1352
+ background:
1353
+ linear-gradient(
1354
+ var(--propskit-slider-opacity-color),
1355
+ var(--propskit-slider-opacity-color)
1356
+ ),
1357
+ var(--slider-checkerboard) !important;
1358
+ }
1359
+
1360
+ &::after {
1361
+ box-sizing: border-box;
1362
+ inset: 0 auto 0 0;
1363
+ width: var(--propskit-slider-progress-percent);
1364
+ border: 1px solid var(--propskit-slider-strip-border-color);
1365
+ background: transparent;
1366
+ box-shadow: none !important;
1367
+ mix-blend-mode: normal;
1368
+ opacity: clamp(0, var(--slider-complete) * 1000, 1);
1369
+ }
1285
1370
  }
1286
1371
  }
1287
1372
  datalist {
@@ -1299,9 +1384,10 @@ propskit-slider {
1299
1384
  box-shadow: none !important;
1300
1385
  position: absolute;
1301
1386
  right: var(--propskit-slider-number-right);
1302
- top: 2px;
1303
- bottom: 2px;
1387
+ top: 50%;
1388
+ bottom: auto;
1304
1389
  z-index: 2;
1390
+ height: var(--control-height);
1305
1391
  width: fit-content;
1306
1392
  min-width: fit-content;
1307
1393
  max-width: max-content;
@@ -1309,14 +1395,7 @@ propskit-slider {
1309
1395
  border-left: 0;
1310
1396
  border-radius: var(--radius-medium);
1311
1397
  outline: none !important;
1312
-
1313
- &[theme="light"] {
1314
- --propskit-slider-filled-text-color: #fff;
1315
- }
1316
-
1317
- &[theme="dark"] {
1318
- --propskit-slider-filled-text-color: #000;
1319
- }
1398
+ transform: translateY(-50%);
1320
1399
 
1321
1400
  &:hover,
1322
1401
  &:has(input:focus) {
@@ -1331,10 +1410,10 @@ propskit-slider {
1331
1410
  flex: 0 0 auto;
1332
1411
  text-align: right;
1333
1412
  color: var(--field-text-color);
1334
- cursor: default;
1413
+ cursor: ew-resize;
1335
1414
  touch-action: none;
1336
1415
 
1337
- &:focus {
1416
+ &:is(:focus, :active) {
1338
1417
  cursor: text;
1339
1418
  touch-action: auto;
1340
1419
  }
@@ -1347,6 +1426,25 @@ propskit-slider {
1347
1426
  container-type: inline-size;
1348
1427
  }
1349
1428
 
1429
+ fig-field:not([direction="vertical"]) > label {
1430
+ --propskit-slider-label-fill-edge: clamp(
1431
+ 0%,
1432
+ calc(var(--propskit-slider-complete, 0) * 133.333333%),
1433
+ 100%
1434
+ );
1435
+ background-image: linear-gradient(
1436
+ to right,
1437
+ var(--propskit-slider-filled-text-color) 0
1438
+ var(--propskit-slider-label-fill-edge),
1439
+ var(--figma-color-text-secondary)
1440
+ var(--propskit-slider-label-fill-edge) 100%
1441
+ );
1442
+ background-clip: text;
1443
+ -webkit-background-clip: text;
1444
+ color: transparent !important;
1445
+ -webkit-text-fill-color: transparent;
1446
+ }
1447
+
1350
1448
  fig-input-number[theme] input {
1351
1449
  --propskit-slider-number-fill-edge: clamp(
1352
1450
  0px,
@@ -1375,6 +1473,258 @@ propskit-slider {
1375
1473
  }
1376
1474
  }
1377
1475
 
1476
+ propskit-wheel {
1477
+ --propskit-wheel-elastic-distance: calc(var(--spacer-2) + 0.25rem);
1478
+ --propskit-wheel-elastic-scale: 1;
1479
+ --propskit-wheel-elastic-origin: left center;
1480
+ --propskit-wheel-elastic-transition: 0.28s
1481
+ cubic-bezier(0.34, 1.56, 0.64, 1);
1482
+ --propskit-wheel-handle-drag-max: 0.5rem;
1483
+ --propskit-wheel-handle-drag-offset: 0px;
1484
+ --propskit-wheel-handle-spring: 0.28s
1485
+ cubic-bezier(0.34, 1.56, 0.64, 1);
1486
+ --propskit-wheel-keyboard-handle-spring: 0.14s
1487
+ cubic-bezier(0.34, 1.56, 0.64, 1);
1488
+ --propskit-wheel-height: 2rem;
1489
+ --propskit-wheel-vertical-padding: var(--spacer-1);
1490
+ --propskit-wheel-horizontal-padding: var(--spacer-3);
1491
+ --propskit-wheel-number-right: calc(2px + var(--spacer-1));
1492
+ --propskit-wheel-handle-width: var(--spacer-1);
1493
+ --propskit-wheel-handle-height: calc(
1494
+ var(--propskit-wheel-height) - var(--spacer-3)
1495
+ );
1496
+ --propskit-wheel-handle-color: light-dark(
1497
+ var(--figma-color-text-secondary),
1498
+ var(--figma-color-text)
1499
+ );
1500
+ --propskit-wheel-tick-width: 0.125rem;
1501
+ --propskit-wheel-tick-width-min: 1px;
1502
+ --propskit-wheel-tick-height: calc(
1503
+ var(--propskit-wheel-handle-height) - 4px
1504
+ );
1505
+ --propskit-wheel-tick-height-min: 8px;
1506
+ --propskit-wheel-tick-inset: 3rem;
1507
+ --propskit-wheel-tick-fade: 1rem;
1508
+ --propskit-wheel-tick-opacity: 0.5;
1509
+ --propskit-wheel-tick-opacity-min: 0.1;
1510
+ --figma-focus-outline-offset: 1px;
1511
+
1512
+ display: block;
1513
+ position: relative;
1514
+ box-sizing: border-box;
1515
+ width: 100%;
1516
+ height: calc(
1517
+ var(--propskit-wheel-height) + var(--propskit-wheel-vertical-padding) * 2
1518
+ );
1519
+ transform-origin: var(--propskit-wheel-elastic-origin);
1520
+ transition: transform var(--propskit-wheel-elastic-transition);
1521
+ padding: var(--propskit-wheel-vertical-padding)
1522
+ var(--propskit-wheel-horizontal-padding);
1523
+
1524
+ &[size="small"] {
1525
+ --propskit-wheel-height: 1.5rem;
1526
+ --propskit-wheel-handle-height: calc(
1527
+ var(--propskit-wheel-height) - var(--spacer-2-5)
1528
+ );
1529
+ --propskit-wheel-number-right: 2px;
1530
+
1531
+ .propskit-wheel-surface > label {
1532
+ padding-left: var(--spacer-2);
1533
+ }
1534
+ }
1535
+
1536
+ &[disabled]:not([disabled="false"]) {
1537
+ pointer-events: none;
1538
+
1539
+ label,
1540
+ input {
1541
+ color: var(--figma-color-text-disabled);
1542
+ }
1543
+
1544
+ .propskit-wheel-wheel {
1545
+ opacity: 0.5;
1546
+ }
1547
+ }
1548
+
1549
+ .propskit-wheel-surface {
1550
+ position: relative;
1551
+ display: block;
1552
+ box-sizing: border-box;
1553
+ width: 100%;
1554
+ height: 100%;
1555
+ border-radius: var(--radius-medium);
1556
+ background-color: var(--figma-color-bg-secondary);
1557
+ overflow: hidden;
1558
+
1559
+ &:focus-within {
1560
+ outline: var(--figma-focus-outline);
1561
+ outline-offset: var(--figma-focus-outline-offset);
1562
+ }
1563
+
1564
+ &::after {
1565
+ content: "";
1566
+ position: absolute;
1567
+ inset: 0;
1568
+ border-radius: inherit;
1569
+ pointer-events: none;
1570
+ }
1571
+
1572
+ &:hover::after {
1573
+ box-shadow: inset 0 0 0 1px var(--figma-color-bordertranslucent);
1574
+ }
1575
+
1576
+ > label {
1577
+ position: absolute;
1578
+ inset: 0;
1579
+ z-index: 1;
1580
+ display: block;
1581
+ box-sizing: border-box;
1582
+ width: 75%;
1583
+ max-width: 75%;
1584
+ padding: 0 0 0 var(--spacer-2-5);
1585
+ overflow: hidden;
1586
+ color: var(--figma-color-text-secondary);
1587
+ text-overflow: ellipsis;
1588
+ white-space: nowrap;
1589
+ align-content: center;
1590
+ pointer-events: none;
1591
+ }
1592
+ }
1593
+
1594
+ .propskit-wheel-wheel {
1595
+ position: absolute;
1596
+ inset: 0;
1597
+ z-index: 0;
1598
+ outline: none;
1599
+ cursor: ew-resize;
1600
+ mask-image: linear-gradient(
1601
+ to right,
1602
+ rgb(0 0 0 / var(--propskit-wheel-tick-opacity-min))
1603
+ var(--propskit-wheel-tick-inset),
1604
+ rgb(0 0 0 / var(--propskit-wheel-tick-opacity))
1605
+ calc(
1606
+ var(--propskit-wheel-tick-inset) + var(--propskit-wheel-tick-fade)
1607
+ ),
1608
+ rgb(0 0 0 / var(--propskit-wheel-tick-opacity))
1609
+ calc(
1610
+ 100% - var(--propskit-wheel-tick-inset) -
1611
+ var(--propskit-wheel-tick-fade)
1612
+ ),
1613
+ rgb(0 0 0 / var(--propskit-wheel-tick-opacity-min))
1614
+ calc(100% - var(--propskit-wheel-tick-inset))
1615
+ );
1616
+
1617
+ &:focus {
1618
+ outline: none;
1619
+ }
1620
+ }
1621
+
1622
+ .propskit-wheel-wheel-svg {
1623
+ display: block;
1624
+ width: 100%;
1625
+ height: 100%;
1626
+ overflow: visible;
1627
+ color: var(--figma-color-icon-tertiary);
1628
+ }
1629
+
1630
+ .propskit-wheel-tick {
1631
+ fill: currentColor;
1632
+ stroke: none;
1633
+ }
1634
+
1635
+ .propskit-wheel-handle {
1636
+ position: absolute;
1637
+ top: 50%;
1638
+ left: 50%;
1639
+ z-index: 1;
1640
+ width: var(--propskit-wheel-handle-width);
1641
+ height: var(--propskit-wheel-handle-height);
1642
+ border-radius: calc(var(--propskit-wheel-handle-width) / 2);
1643
+ background: transparent;
1644
+ pointer-events: none;
1645
+ transform: translate(
1646
+ calc(-50% + var(--propskit-wheel-handle-drag-offset)),
1647
+ -50%
1648
+ );
1649
+ transition: transform var(--propskit-wheel-handle-spring);
1650
+ box-shadow:
1651
+ inset 0 0 0 var(--propskit-wheel-handle-height)
1652
+ var(--propskit-wheel-handle-color),
1653
+ var(--handle-shadow);
1654
+ }
1655
+
1656
+ fig-input-number {
1657
+ background-color: transparent;
1658
+ box-shadow: none !important;
1659
+ position: absolute;
1660
+ right: var(--propskit-wheel-number-right);
1661
+ top: 50%;
1662
+ bottom: auto;
1663
+ z-index: 2;
1664
+ height: var(--control-height);
1665
+ width: fit-content;
1666
+ min-width: fit-content;
1667
+ max-width: max-content;
1668
+ flex: 0 0 auto;
1669
+ border: 0;
1670
+ border-radius: var(--radius-medium);
1671
+ outline: none !important;
1672
+ transform: translateY(-50%);
1673
+
1674
+ &:hover,
1675
+ &:has(input:focus) {
1676
+ box-shadow: none !important;
1677
+ outline: none !important;
1678
+ }
1679
+
1680
+ input {
1681
+ field-sizing: content;
1682
+ font-variant-numeric: tabular-nums;
1683
+ width: auto;
1684
+ flex: 0 0 auto;
1685
+ text-align: right;
1686
+ cursor: ew-resize;
1687
+ touch-action: none;
1688
+
1689
+ &:is(:focus, :active) {
1690
+ cursor: text;
1691
+ touch-action: auto;
1692
+ }
1693
+ }
1694
+ }
1695
+
1696
+ &[data-elastic-dragging="true"] {
1697
+ transform: scaleX(var(--propskit-wheel-elastic-scale));
1698
+ transition: none;
1699
+
1700
+ .propskit-wheel-handle {
1701
+ transition: none;
1702
+ }
1703
+ }
1704
+
1705
+ &[data-keyboard-moving] .propskit-wheel-handle {
1706
+ transition: none;
1707
+ }
1708
+
1709
+ &[data-keyboard-settling] .propskit-wheel-handle {
1710
+ transition: transform var(--propskit-wheel-keyboard-handle-spring);
1711
+ }
1712
+ }
1713
+
1714
+ body.fig-propskit-wheel-dragging,
1715
+ body.fig-propskit-wheel-dragging * {
1716
+ cursor: grabbing !important;
1717
+ user-select: none !important;
1718
+ -webkit-user-select: none !important;
1719
+ }
1720
+
1721
+ @media (prefers-reduced-motion: reduce) {
1722
+ propskit-wheel,
1723
+ propskit-wheel .propskit-wheel-handle {
1724
+ transition: none;
1725
+ }
1726
+ }
1727
+
1378
1728
  :is(
1379
1729
  propskit-switch,
1380
1730
  propskit-color,
@@ -1409,7 +1759,7 @@ propskit-slider {
1409
1759
  propskit-text,
1410
1760
  propskit-number,
1411
1761
  propskit-slider
1412
- )[size="large"] {
1762
+ ) {
1413
1763
  fig-field {
1414
1764
  --fig-field-label-max-height: var(--spacer-5);
1415
1765
  }
@@ -1419,6 +1769,45 @@ propskit-slider {
1419
1769
  }
1420
1770
  }
1421
1771
 
1772
+ :is(
1773
+ propskit-switch,
1774
+ propskit-color,
1775
+ propskit-fill,
1776
+ propskit-gradient,
1777
+ propskit-select,
1778
+ propskit-text,
1779
+ propskit-number,
1780
+ propskit-slider
1781
+ )[size="small"] {
1782
+ fig-field {
1783
+ --fig-field-label-max-height: var(--spacer-4);
1784
+ }
1785
+
1786
+ fig-field:not([direction="vertical"]) > label {
1787
+ padding-left: var(--spacer-2);
1788
+ }
1789
+ }
1790
+
1791
+ :is(
1792
+ propskit-switch,
1793
+ propskit-color,
1794
+ propskit-fill,
1795
+ propskit-gradient,
1796
+ propskit-text,
1797
+ propskit-number,
1798
+ propskit-slider
1799
+ )[size="small"] {
1800
+ fig-field:not([direction="vertical"]) {
1801
+ padding-left: var(--spacer-2);
1802
+ }
1803
+ }
1804
+
1805
+ :is(propskit-text, propskit-number)[size="small"] {
1806
+ fig-field > :is(fig-input-text, fig-input-number) {
1807
+ margin-right: 0;
1808
+ }
1809
+ }
1810
+
1422
1811
  propskit-color-point,
1423
1812
  propskit-point-point,
1424
1813
  propskit-point-radius,
@@ -1427,7 +1816,7 @@ propskit-point-radius-angle {
1427
1816
  }
1428
1817
 
1429
1818
  propskit-position {
1430
- --propskit-position-height: 1.5rem;
1819
+ --propskit-position-height: 2rem;
1431
1820
  --propskit-position-vertical-padding: var(--spacer-1);
1432
1821
  --propskit-position-horizontal-padding: var(--spacer-3);
1433
1822
  --figma-focus-outline-offset: 1px;
@@ -1440,12 +1829,12 @@ propskit-position {
1440
1829
  padding: var(--propskit-position-vertical-padding)
1441
1830
  var(--propskit-position-horizontal-padding);
1442
1831
 
1443
- &[size="large"] {
1444
- --propskit-position-height: 2rem;
1832
+ &[size="small"] {
1833
+ --propskit-position-height: 1.5rem;
1445
1834
 
1446
1835
  .propskit-position-row {
1447
- --fig-field-label-max-height: var(--spacer-5);
1448
- padding-left: var(--spacer-2-5);
1836
+ --fig-field-label-max-height: var(--spacer-4);
1837
+ padding-left: var(--spacer-2);
1449
1838
  }
1450
1839
  }
1451
1840
 
@@ -1458,6 +1847,7 @@ propskit-position {
1458
1847
  }
1459
1848
 
1460
1849
  .propskit-position-row {
1850
+ --fig-field-label-max-height: var(--spacer-5);
1461
1851
  position: relative;
1462
1852
  display: flex;
1463
1853
  align-items: center;
@@ -1466,7 +1856,7 @@ propskit-position {
1466
1856
  min-width: 0;
1467
1857
  height: var(--propskit-position-height);
1468
1858
  min-height: var(--propskit-position-height);
1469
- padding: 0 var(--spacer-1) 0 var(--spacer-2);
1859
+ padding: 0 var(--spacer-1) 0 var(--spacer-2-5);
1470
1860
  padding-right: 0;
1471
1861
  border-radius: var(--radius-medium);
1472
1862
  background-color: var(--figma-color-bg-secondary);
@@ -1509,6 +1899,7 @@ propskit-position {
1509
1899
 
1510
1900
  fig-input-number {
1511
1901
  width: 3.85rem;
1902
+ height: var(--control-height);
1512
1903
  border: 0;
1513
1904
  background-color: transparent;
1514
1905
  box-shadow: none;
@@ -1528,6 +1919,74 @@ propskit-position {
1528
1919
  }
1529
1920
  }
1530
1921
 
1922
+ :is(
1923
+ propskit-number,
1924
+ propskit-slider,
1925
+ propskit-wheel,
1926
+ propskit-position
1927
+ ) fig-input-number:is(:focus-within, :active, :has(input:active)) {
1928
+ background-color: var(--figma-color-bg);
1929
+ }
1930
+
1931
+ :is(
1932
+ propskit-switch,
1933
+ propskit-color,
1934
+ propskit-fill,
1935
+ propskit-gradient,
1936
+ propskit-select,
1937
+ propskit-text,
1938
+ propskit-number,
1939
+ propskit-slider,
1940
+ propskit-position,
1941
+ propskit-wheel
1942
+ )[variant="minimal"] {
1943
+ --propskit-switch-vertical-padding: 0px;
1944
+ --propskit-color-vertical-padding: 0px;
1945
+ --propskit-gradient-vertical-padding: 0px;
1946
+ --propskit-select-vertical-padding: 0px;
1947
+ --propskit-text-vertical-padding: 0px;
1948
+ --propskit-number-vertical-padding: 0px;
1949
+ --propskit-slider-vertical-padding: 0px;
1950
+ --propskit-position-vertical-padding: 0px;
1951
+ --propskit-wheel-vertical-padding: 0px;
1952
+
1953
+ & > fig-field {
1954
+ background-color: transparent;
1955
+
1956
+ &:hover {
1957
+ background-color: var(--figma-color-bg-secondary);
1958
+
1959
+ &::after {
1960
+ box-shadow: none;
1961
+ }
1962
+ }
1963
+ }
1964
+ }
1965
+
1966
+ propskit-wheel[variant="minimal"] {
1967
+ .propskit-wheel-surface {
1968
+ background-color: transparent;
1969
+
1970
+ &:hover {
1971
+ background-color: var(--figma-color-bg-secondary);
1972
+
1973
+ &::after {
1974
+ box-shadow: none;
1975
+ }
1976
+ }
1977
+ }
1978
+ }
1979
+
1980
+ propskit-slider[variant="minimal"] {
1981
+ & > fig-field fig-slider .fig-slider-input-container {
1982
+ background-color: transparent !important;
1983
+
1984
+ &:hover::after {
1985
+ box-shadow: none !important;
1986
+ }
1987
+ }
1988
+ }
1989
+
1531
1990
  /* Canvas Control */
1532
1991
  body {
1533
1992
  --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;