figma-kit 1.0.0-beta.2 → 1.0.0-beta.23

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/dist/styles.css CHANGED
@@ -5,28 +5,28 @@
5
5
  --font-family-monospace: 'Roboto Mono', monospace;
6
6
  }
7
7
  :root {
8
- --space-0: 0px;
9
- --space-px: 1px;
10
- --space-0_5: 2px;
11
- --space-1: 4px;
12
- --space-1_5: 6px;
13
- --space-2: 8px;
14
- --space-2_5: 10px;
15
- --space-3: 12px;
16
- --space-3_5: 14px;
17
- --space-4: 16px;
18
- --space-5: 20px;
19
- --space-6: 24px;
20
- --space-7: 28px;
21
- --space-8: 32px;
22
- --space-9: 36px;
23
- --space-10: 40px;
24
- --space-11: 44px;
25
- --space-12: 48px;
26
- --space-13: 52px;
27
- --space-14: 56px;
28
- --space-15: 60px;
29
- --space-16: 64px;
8
+ --space-0: 0rem;
9
+ --space-px: 0.0625rem;
10
+ --space-0_5: 0.125rem;
11
+ --space-1: 0.25rem;
12
+ --space-1_5: 0.375rem;
13
+ --space-2: 0.5rem;
14
+ --space-2_5: 0.625rem;
15
+ --space-3: 0.75rem;
16
+ --space-3_5: 0.875rem;
17
+ --space-4: 1rem;
18
+ --space-5: 1.25rem;
19
+ --space-6: 1.5rem;
20
+ --space-7: 1.75rem;
21
+ --space-8: 2rem;
22
+ --space-9: 2.25rem;
23
+ --space-10: 2.5rem;
24
+ --space-11: 2.75rem;
25
+ --space-12: 3rem;
26
+ --space-13: 3.25rem;
27
+ --space-14: 3.5rem;
28
+ --space-15: 3.75rem;
29
+ --space-16: 4rem;
30
30
  }
31
31
  :root {
32
32
  --radius-extra-small: 0.0625rem;
@@ -79,15 +79,16 @@
79
79
  --letter-spacing-10: -0.0255rem;
80
80
  --letter-spacing-default: var(--letter-spacing-3);
81
81
  }
82
- :root {
82
+ :root,
83
+ .light,
84
+ .light-theme {
83
85
  --elevation-100: 0px 0px 0.5px rgba(0, 0, 0, 0.3), 0px 1px 3px rgba(0, 0, 0, 0.15);
84
86
  --elevation-200: 0px 0px 0.5px rgba(0, 0, 0, 0.18), 0px 3px 8px rgba(0, 0, 0, 0.1), 0px 1px 3px rgba(0, 0, 0, 0.1);
85
87
  --elevation-300: 0px 0px 0.5px rgba(0, 0, 0, 0.15), 0px 5px 12px rgba(0, 0, 0, 0.13), 0px 1px 3px rgba(0, 0, 0, 0.1);
86
88
  --elevation-400: 0px 0px 0.5px rgba(0, 0, 0, 0.12), 0px 10px 16px rgba(0, 0, 0, 0.12), 0px 2px 5px rgba(0, 0, 0, 0.15);
87
89
  --elevation-500: 0px 0px 0.5px rgba(0, 0, 0, 0.08), 0px 10px 24px rgba(0, 0, 0, 0.18), 0px 2px 5px rgba(0, 0, 0, 0.15);
88
90
  }
89
- .dark,
90
- .dark-theme {
91
+ .figma-dark {
91
92
  --elevation-100: 0px 0px 0.5px rgba(0, 0, 0, 0.5), 0px 1px 3px rgba(0, 0, 0, 0.4),
92
93
  inset 0px 0.5px 0px rgba(255, 255, 255, 0.1), inset 0px 0px 0.5px rgba(255, 255, 255, 0.3);
93
94
 
@@ -399,7 +400,7 @@
399
400
  .fp-Text:where(.fp-size-medium) {
400
401
  --font-size: var(--font-size-3);
401
402
  --line-height: var(--line-height-3);
402
- --letter-spacing: --letter-spacing-3;
403
+ --letter-spacing: var(--letter-spacing-3);
403
404
  }
404
405
  .fp-Text:where(.fp-size-large) {
405
406
  --font-size: var(--font-size-5);
@@ -429,7 +430,7 @@
429
430
  }
430
431
  .fp-Text code {
431
432
  font-family: var(--font-family-monospace);
432
- font-size: var(var(--font-size-2));
433
+ font-size: var(--font-size-2);
433
434
  background-color: var(--figma-color-bg-brand-tertiary);
434
435
  padding: 0.05rem 0.15rem;
435
436
  border-radius: var(--radius-extra-small);
@@ -626,15 +627,19 @@
626
627
  font-weight: var(--font-weight-default);
627
628
  letter-spacing: var(--letter-spacing-default);
628
629
  line-height: var(--line-height-default);
629
- height: var(--space-6);
630
+ min-height: var(--space-6);
630
631
  color: var(--color-text-tooltip);
631
632
  white-space: pre-wrap;
632
633
  word-break: break-word;
633
634
  border-radius: var(--radius-medium);
634
- box-shadow: var(--elevation-300-tooltip, 0 2px 7px rgba(0, 0, 0, 0.15));
635
+ box-shadow: var(--elevation-300, 0 2px 7px rgba(0, 0, 0, 0.15));
635
636
  }
636
- .fp-arrow {
637
+ .fp-tooltip-arrow {
637
638
  fill: var(--color-bg-tooltip);
639
+ width: var(--space-3_5);
640
+ height: 7px;
641
+ position: relative;
642
+ bottom: 1px;
638
643
  }
639
644
  .fp-textarea {
640
645
  all: unset;
@@ -717,6 +722,9 @@
717
722
  padding: 0 var(--space-4);
718
723
  color: var(--color-text-menu-tertiary);
719
724
  }
725
+ .fp-MenuLabel:where(.fp-MenuContent:has(.fp-MenuCheckboxItem, .fp-MenuRadioItem) .fp-MenuLabel) {
726
+ padding-left: var(--space-6);
727
+ }
720
728
  .fp-MenuGroup {
721
729
  padding: var(--space-2) 0;
722
730
  }
@@ -812,6 +820,7 @@
812
820
  letter-spacing: var(--letter-spacing-default);
813
821
  line-height: var(--line-height-default);
814
822
  border-radius: var(--radius-medium);
823
+ --color-icon: currentColor;
815
824
  }
816
825
  .fp-Button:where(.fp-variant-secondary) {
817
826
  --button-color-bg: transparent;
@@ -970,51 +979,65 @@
970
979
  box-sizing: border-box;
971
980
  position: relative;
972
981
  display: block;
973
- width: var(--space-6);
974
- height: var(--space-3);
982
+ width: var(--space-8);
983
+ height: var(--space-4);
975
984
  padding: 0;
976
- background: linear-gradient(90deg, var(--figma-color-bg-brand) 0px 24px, var(--figma-color-icon-tertiary) 24px 48px);
977
- background-repeat: no-repeat;
978
- background-size: 200% 100%;
985
+ background: none;
979
986
  background-clip: padding-box;
980
987
  border-radius: var(--radius-full);
981
988
  border: 0;
982
- transition: background-position 0.1s ease-out;
989
+ transition: background-position 0.08s ease-out;
990
+
991
+ /* Using ::before to render the background to create the real gap between the
992
+ outline and the background in the focused mode as it is in Figma. */
983
993
  }
984
- .fp-switchRoot:focus-visible {
985
- outline-offset: 2px;
986
- outline: 2px solid var(--figma-color-border-selected);
994
+ .fp-switchRoot::before {
995
+ position: absolute;
996
+ inset: 0;
997
+ border-radius: var(--radius-full);
998
+ background: none;
999
+ content: '';
987
1000
  }
988
- .fp-switchRoot[data-disabled] {
989
- background: var(--figma-color-icon-disabled);
990
- border-color: var(--figma-color-icon-disabled);
1001
+ .fp-switchRoot[data-state='unchecked']::before {
1002
+ background: var(--figma-color-bg-tertiary);
991
1003
  }
992
- .fp-switchRoot[data-state='unchecked'] {
993
- background-position: -24px;
1004
+ .fp-switchRoot[data-state='checked']::before {
1005
+ background: var(--figma-color-bg-brand);
994
1006
  }
995
- .fp-switchRoot[data-state='checked'] {
996
- background-position: 0;
1007
+ .fp-switchRoot:focus-visible {
1008
+ outline-offset: -1px;
1009
+ outline: 1px solid var(--figma-color-border-selected-strong);
997
1010
  }
1011
+ .fp-switchRoot:focus-visible::before {
1012
+ inset: 2px;
1013
+ }
1014
+ .fp-switchRoot[data-disabled][data-state='unchecked']::before {
1015
+ /* This gives it more contrast than the disabled checked state but this is
1016
+ how it is in Figma. ¯\_(ツ)_/¯ */
1017
+ background: var(--figma-color-bg-disabled);
1018
+ }
1019
+ .fp-switchRoot[data-disabled][data-state='checked']::before {
1020
+ background: var(--figma-color-bg-tertiary);
1021
+ }
998
1022
  .fp-switchThumb {
999
1023
  box-sizing: border-box;
1000
1024
  position: absolute;
1001
1025
  top: 1px;
1002
1026
  left: 1px;
1003
- height: var(--space-2_5);
1004
- width: var(--space-2_5);
1027
+ height: var(--space-3_5);
1028
+ width: var(--space-3_5);
1005
1029
  border-radius: var(--radius-full);
1006
1030
  background: var(--figma-color-icon-onbrand);
1007
- transition: all 0.1s ease-out;
1031
+ transition: all 0.08s ease-out;
1008
1032
  }
1009
1033
  .fp-switchThumb[data-disabled] {
1010
- background-color: var(--figma-color-bg);
1011
- border-color: var(--figma-color-bg);
1034
+ background-color: var(--figma-color-icon-ondisabled);
1012
1035
  }
1013
1036
  .fp-switchThumb[data-state='unchecked'] {
1014
1037
  left: 1px;
1015
1038
  }
1016
1039
  .fp-switchThumb[data-state='checked'] {
1017
- left: calc(100% - var(--space-2_5) - 1px);
1040
+ left: calc(100% - var(--space-3_5) - 1px);
1018
1041
  }
1019
1042
  :root,
1020
1043
  .light,
@@ -1022,11 +1045,12 @@
1022
1045
  --slider-root-size: var(--space-6);
1023
1046
  --slider-track-size: var(--space-4);
1024
1047
  --slider-thumb-width: var(--space-4);
1025
- --color-border-slider-track: #0000001a;
1048
+ --slider-track-border-color: #0000001a;
1049
+ --slider-track-bg: var(--figma-color-bg-secondary);
1050
+ --slider-thumb-bg: transparent;
1026
1051
  }
1027
- .dark,
1028
- .dark-theme {
1029
- --color-border-slider-track: #ffffff1a;
1052
+ .figma-dark {
1053
+ --slider-track-border-color: #ffffff1a;
1030
1054
  }
1031
1055
  .fp-SliderRoot {
1032
1056
  position: relative;
@@ -1051,9 +1075,9 @@
1051
1075
  position: relative;
1052
1076
  overflow: hidden;
1053
1077
  flex-grow: 1;
1054
- background-color: var(--figma-color-bg-secondary);
1078
+ background: var(--slider-track-bg);
1055
1079
  border-radius: var(--radius-full);
1056
- outline: 1px solid var(--color-border-slider-track);
1080
+ outline: 1px solid var(--slider-track-border-color);
1057
1081
  outline-offset: -1px;
1058
1082
  }
1059
1083
  .fp-SliderTrack[data-orientation='horizontal'] {
@@ -1090,7 +1114,7 @@
1090
1114
  display: block;
1091
1115
  width: var(--slider-track-size);
1092
1116
  height: var(--slider-track-size);
1093
- background-color: var(--figma-color-icon-onbrand);
1117
+ background-color: var(--slider-thumb-bg);
1094
1118
  border: 4px solid var(--figma-color-icon-onbrand);
1095
1119
  border-radius: var(--radius-full);
1096
1120
  box-shadow: var(--elevation-200);
@@ -1104,8 +1128,8 @@
1104
1128
  .fp-SliderThumb.fp-SliderThumb-focusVisible:focus-visible {
1105
1129
  outline: 1px solid var(--figma-color-border-selected);
1106
1130
  }
1107
- .fp-SliderThumb.fp-SliderThumb-modified {
1108
- background-color: transparent;
1131
+ .fp-SliderThumb.fp-SliderThumb-baseValue {
1132
+ --slider-thumb-bg: var(--figma-color-icon-onbrand);
1109
1133
  }
1110
1134
  .fp-SliderHint {
1111
1135
  position: absolute;
@@ -1250,6 +1274,7 @@
1250
1274
  display: flex;
1251
1275
  align-items: center;
1252
1276
  justify-content: center;
1277
+ flex-shrink: 0;
1253
1278
  height: var(--space-6);
1254
1279
  padding: 0 var(--space-2);
1255
1280
  font-family: var(--font-family-default);
@@ -1257,6 +1282,7 @@
1257
1282
  font-weight: var(--font-weight-default);
1258
1283
  letter-spacing: var(--letter-spacing-default);
1259
1284
  line-height: var(--line-height-default);
1285
+ white-space: nowrap;
1260
1286
  }
1261
1287
  .fp-TabsTrigger:where([data-state='inactive']) {
1262
1288
  color: var(--figma-color-text-secondary);
@@ -1442,6 +1468,10 @@
1442
1468
  font-weight: var(--font-weight-default);
1443
1469
  letter-spacing: var(--letter-spacing-default);
1444
1470
  line-height: var(--line-height-default);
1471
+ color: var(--figma-color-text-secondary);
1472
+ }
1473
+ .fp-CollapsibleIndicator {
1474
+ --color-icon: var(--figma-color-icon-secondary);
1445
1475
  }
1446
1476
  [data-state='open'] > .fp-CollapsibleIndicator {
1447
1477
  transform: rotate(90deg);
@@ -1449,3 +1479,176 @@
1449
1479
  .fp-CollapsibleContent {
1450
1480
  margin-left: var(--space-4);
1451
1481
  }
1482
+ .fp-ColorPickerHueSlider:where(.fp-color-model-hsv, .fp-color-model-hsl, .fp-color-model-rgb, .fp-color-model-hex) {
1483
+ --slider-track-bg: linear-gradient(
1484
+ 90deg,
1485
+ rgba(255, 0, 0, 1) calc(var(--slider-track-size) / 2),
1486
+ rgba(255, 48, 0, 1),
1487
+ rgba(255, 96, 0, 1),
1488
+ rgba(255, 143, 0, 1),
1489
+ rgba(255, 191, 0, 1),
1490
+ rgba(255, 239, 0, 1),
1491
+ rgba(223, 255, 0, 1),
1492
+ rgba(175, 255, 0, 1),
1493
+ rgba(128, 255, 0, 1),
1494
+ rgba(80, 255, 0, 1),
1495
+ rgba(32, 255, 0, 1),
1496
+ rgba(0, 255, 16, 1),
1497
+ rgba(0, 255, 64, 1),
1498
+ rgba(0, 255, 112, 1),
1499
+ rgba(0, 255, 159, 1),
1500
+ rgba(0, 255, 207, 1),
1501
+ rgba(0, 255, 255, 1),
1502
+ rgba(0, 207, 255, 1),
1503
+ rgba(0, 159, 255, 1),
1504
+ rgba(0, 112, 255, 1),
1505
+ rgba(0, 64, 255, 1),
1506
+ rgba(0, 16, 255, 1),
1507
+ rgba(32, 0, 255, 1),
1508
+ rgba(80, 0, 255, 1),
1509
+ rgba(127, 0, 255, 1),
1510
+ rgba(175, 0, 255, 1),
1511
+ rgba(223, 0, 255, 1),
1512
+ rgba(255, 0, 239, 1),
1513
+ rgba(255, 0, 191, 1),
1514
+ rgba(255, 0, 143, 1),
1515
+ rgba(255, 0, 96, 1),
1516
+ rgba(255, 0, 48, 1) calc(100% - calc(var(--slider-track-size) / 2))
1517
+ );
1518
+ }
1519
+ @supports (color: color(display-p3 1 1 1)) {
1520
+ @media (color-gamut: p3) {
1521
+ .fp-ColorPickerHueSlider:where(.fp-color-model-hsv, .fp-color-model-hsl):where(.fp-color-space-display-p3) {
1522
+ --slider-track-bg: linear-gradient(
1523
+ 90deg,
1524
+ color(display-p3 1 0 0) calc(var(--slider-track-size) / 2),
1525
+ color(display-p3 1 0.1875 0),
1526
+ color(display-p3 1 0.375 0),
1527
+ color(display-p3 1 0.5625 0),
1528
+ color(display-p3 1 0.75 0),
1529
+ color(display-p3 1 0.9375 0),
1530
+ color(display-p3 0.875 1 0),
1531
+ color(display-p3 0.6875 1 0),
1532
+ color(display-p3 0.5 1 0),
1533
+ color(display-p3 0.3125 1 0),
1534
+ color(display-p3 0.125 1 0),
1535
+ color(display-p3 0 1 0.0625),
1536
+ color(display-p3 0 1 0.25),
1537
+ color(display-p3 0 1 0.4375),
1538
+ color(display-p3 0 1 0.625),
1539
+ color(display-p3 0 1 0.8125),
1540
+ color(display-p3 0 1 1),
1541
+ color(display-p3 0 0.8125 1),
1542
+ color(display-p3 0 0.625 1),
1543
+ color(display-p3 0 0.4375 1),
1544
+ color(display-p3 0 0.25 1),
1545
+ color(display-p3 0 0.0625 1),
1546
+ color(display-p3 0.125 0 1),
1547
+ color(display-p3 0.3125 0 1),
1548
+ color(display-p3 0.5 0 1),
1549
+ color(display-p3 0.6875 0 1),
1550
+ color(display-p3 0.875 0 1),
1551
+ color(display-p3 1 0 0.9375),
1552
+ color(display-p3 1 0 0.75),
1553
+ color(display-p3 1 0 0.5625),
1554
+ color(display-p3 1 0 0.375),
1555
+ color(display-p3 1 0 0.1875) calc(100% - calc(var(--slider-track-size) / 2))
1556
+ );
1557
+ }
1558
+ }
1559
+ }
1560
+ .fp-ColorPickerAlphaSlider {
1561
+ --track-bg-step-1: var(--track-bg-transparent-srgb);
1562
+ --track-bg-step-2: var(--track-bg-opaque-srgb);
1563
+ --slider-thumb-bg: var(--thumb-bg-srgb);
1564
+
1565
+ --slider-track-bg: linear-gradient(
1566
+ to right,
1567
+ var(--track-bg-step-1) 0 calc(var(--slider-track-size) / 2),
1568
+ var(--track-bg-step-2) calc(100% - calc(var(--slider-track-size) / 2)) 100%
1569
+ ),
1570
+ url('data:image/svg+xml;utf8,%3Csvg%20width%3D%222%22%20height%3D%222%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M0%200h1v2h1V1H0%22%20fill-rule%3D%22nonzero%22%20fill%3D%22%23e1e1e1%22/%3E%3C/svg%3E')
1571
+ 0 0 / auto 66.66%,
1572
+ #fff;
1573
+ }
1574
+ @supports (color: color(display-p3 1 1 1)) {
1575
+ @media (color-gamut: p3) {
1576
+ .fp-ColorPickerAlphaSlider:where(.fp-color-space-display-p3) {
1577
+ --slider-thumb-bg: var(--thumb-bg-p3);
1578
+ --track-bg-step-1: var(--track-bg-transparent-p3);
1579
+ --track-bg-step-2: var(--track-bg-opaque-p3);
1580
+ }
1581
+ }
1582
+ }
1583
+ .fp-ColorPickerArea {
1584
+ position: relative;
1585
+ width: 100%;
1586
+ aspect-ratio: 1 / 1;
1587
+ }
1588
+ .fp-ColorPickerAreaCanvas {
1589
+ width: 100%;
1590
+ height: 100%;
1591
+ outline-width: 1px;
1592
+ outline-style: solid;
1593
+ outline-color: #0000001a; /*TODO: color-bordertranslucent*/
1594
+ outline-offset: -1px;
1595
+ --base-color: var(--base-color-srgb);
1596
+ --gradient-step-black: rgb(0 0 0);
1597
+ --gradient-step-black-transparent: rgb(0 0 0 / 0);
1598
+ --gradient-step-white: rgb(255 255 255);
1599
+ --gradient-step-white-transparent: rgb(255 255 255 / 0);
1600
+ --gradient-step-gray: rgb(128 128 128);
1601
+ --gradient-step-gray-transparent: rgb(128 128 128 / 0);
1602
+ }
1603
+ @supports (color: color(display-p3 1 1 1)) {
1604
+ @media (color-gamut: p3) {
1605
+ .fp-ColorPickerAreaCanvas:where(.fp-color-space-display-p3) {
1606
+ --base-color: var(--base-color-p3);
1607
+ --gradient-step-black: color(display-p3 0 0 0);
1608
+ --gradient-step-black-transparent: color(display-p3 0 0 0 / 0);
1609
+ --gradient-step-white: color(display-p3 1 1 1);
1610
+ --gradient-step-white-transparent: color(display-p3 1 1 1 / 0);
1611
+ --gradient-step-gray: color(display-p3 0.5 0.5 0.5);
1612
+ --gradient-step-gray-transparent: color(display-p3 0.5 0.5 0.5 / 0);
1613
+ }
1614
+ }
1615
+ }
1616
+ .fp-ColorPickerAreaCanvas:where(.fp-color-model-hsv, .fp-color-model-hex, .fp-color-model-rgb) {
1617
+ background: linear-gradient(to bottom, var(--gradient-step-black-transparent) 0%, var(--gradient-step-black) 100%),
1618
+ linear-gradient(to right, var(--gradient-step-white) 0%, var(--base-color) 100%);
1619
+ }
1620
+ .fp-ColorPickerAreaCanvas:where(.fp-color-model-hsl) {
1621
+ background: linear-gradient(
1622
+ to bottom,
1623
+ var(--gradient-step-white) 0%,
1624
+ var(--gradient-step-white-transparent) 49.99%,
1625
+ var(--gradient-step-black-transparent) 50.01%,
1626
+ var(--gradient-step-black) 100%
1627
+ ),
1628
+ linear-gradient(to right, var(--gradient-step-gray) 0%, var(--gradient-step-gray-transparent) 100%),
1629
+ var(--base-color);
1630
+ }
1631
+ .fp-ColorPickerThumb {
1632
+ position: absolute;
1633
+ box-sizing: border-box;
1634
+ box-shadow: var(--elevation-200);
1635
+ left: 0;
1636
+ transform: translate(-50%, -50%);
1637
+ width: 16px;
1638
+ height: 16px;
1639
+ border-radius: 8px;
1640
+ border-style: solid;
1641
+ border-width: 4px;
1642
+ border-color: white;
1643
+ background: var(--thumb-bg-srgb);
1644
+ }
1645
+ .fp-ColorPickerThumb:focus-visible {
1646
+ outline: 1px solid var(--figma-color-border-selected);
1647
+ }
1648
+ @supports (color: color(display-p3 1 1 1)) {
1649
+ @media (color-gamut: p3) {
1650
+ .fp-ColorPickerThumb:where(.fp-color-space-display-p3) {
1651
+ background: var(--thumb-bg-p3);
1652
+ }
1653
+ }
1654
+ }