@rogieking/figui3 9.4.5 → 9.4.7
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/.cursor/skills/fig-lab/components.md +1 -0
- package/.cursor/skills/fig-lab/reference.md +2 -0
- package/.cursor/skills/figui3/components.md +7 -0
- package/.cursor/skills/figui3/reference.md +1 -0
- package/CHANGELOG.md +22 -0
- package/README.md +4 -1
- package/components.css +318 -240
- package/dist/components.css +1 -1
- package/dist/fig-lab.js +1 -1
- package/dist/fig.css +1 -1
- package/dist/fig.js +4 -4
- package/fig-lab.js +5 -4
- package/fig.js +84 -8
- package/package.json +1 -1
|
@@ -83,6 +83,7 @@ useEffect(() => {
|
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
- `display: contents`. Reorders **direct children**. `axis` `vertical` | `horizontal`. `items` selector limits which children reorder (e.g. `items=".row"` to skip headers); `refresh()` re-syncs. Omit `handle` to drag whole rows; set it when rows contain sliders/handles.
|
|
86
|
+
- With fewer than two matching items, children keep `role="listitem"` but drag cursors, handles, focus, and move labels stay inactive until another item is added.
|
|
86
87
|
- Event `reorder`: `{ oldIndex, newIndex, item }` (indices among matching items). Nested drag is ignored for sliders, handles, and canvas controls.
|
|
87
88
|
|
|
88
89
|
## AI composer
|
|
@@ -59,6 +59,8 @@ Observed: `axis`, `handle`, `items`, `disabled`.
|
|
|
59
59
|
|
|
60
60
|
`items`: CSS selector for which direct children are reorderable (default: all). Non-matching children stay in place and get `role="none"` unless they have a role. Class/attribute changes on children re-sync automatically; call `refresh()` to force it.
|
|
61
61
|
|
|
62
|
+
With fewer than two matching items, matching children retain `role="listitem"` but remain non-draggable and receive no generated focus or move label.
|
|
63
|
+
|
|
62
64
|
Event `reorder`: `{ oldIndex, newIndex, item }`. Indices count matching items, not DOM positions.
|
|
63
65
|
|
|
64
66
|
Nested drag is ignored for sliders, handles, and canvas controls so inner gestures still work. If a row is still stolen, set `handle` to a drag-affordance selector.
|
|
@@ -380,12 +380,18 @@ Handlers below assume `onInput` / `onChange` / `onClick` from [react.md](react.m
|
|
|
380
380
|
aria-label="Design tools"
|
|
381
381
|
onChange={onChange}
|
|
382
382
|
>
|
|
383
|
+
<fig-toolbelt-item slot="prepend" value="select">
|
|
384
|
+
Select
|
|
385
|
+
</fig-toolbelt-item>
|
|
383
386
|
<fig-toolbelt-group aria-label="Transform tools">
|
|
384
387
|
<fig-toolbelt-item value="move" selected={tool === "move" || undefined}>
|
|
385
388
|
Move
|
|
386
389
|
</fig-toolbelt-item>
|
|
387
390
|
<fig-toolbelt-item value="frame">Frame</fig-toolbelt-item>
|
|
388
391
|
</fig-toolbelt-group>
|
|
392
|
+
<fig-toolbelt-item slot="append" value="settings">
|
|
393
|
+
Settings
|
|
394
|
+
</fig-toolbelt-item>
|
|
389
395
|
</fig-toolbelt>
|
|
390
396
|
```
|
|
391
397
|
|
|
@@ -394,6 +400,7 @@ Handlers below assume `onInput` / `onChange` / `onClick` from [react.md](react.m
|
|
|
394
400
|
- Item attrs: `value`, `selected`, `disabled`
|
|
395
401
|
- ArrowLeft/ArrowRight move focus horizontally; ArrowUp/ArrowDown move focus vertically; Enter/Space selects
|
|
396
402
|
- Items stay in light DOM; the internal `part="viewport"` owns scrolling and overflow fades
|
|
403
|
+
- `slot="prepend"` and `slot="append"` keep authored content fixed outside the viewport; slotted items remain selectable and keyboard-navigable
|
|
397
404
|
- Overflow buttons are generated outside the viewport for `overflow="buttons"`
|
|
398
405
|
- Events: `input` / `change` → `currentTarget.value`
|
|
399
406
|
|
|
@@ -79,6 +79,7 @@ Public API: `README.md`. React recipes: [components.md](components.md).
|
|
|
79
79
|
- Events: bubbling `input` and `change` with the selected value
|
|
80
80
|
- `overflow="scrollbar"` is the default and uses buttonless scrolling with the scrollbar hidden; `overflow="buttons"` adds direction-aware paging controls
|
|
81
81
|
- Internal `part="viewport"` owns scrolling and fades; authored items remain direct light-DOM children
|
|
82
|
+
- `slot="prepend"` and `slot="append"` keep authored items, groups, or custom content fixed outside the viewport; slotted items remain in selection and roving keyboard order
|
|
82
83
|
|
|
83
84
|
## `.fig-overflow-fade`
|
|
84
85
|
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [9.4.7]
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Empty `fig-toolbelt` prepend and append slots no longer reserve inline space.
|
|
10
|
+
- The playground now reflects `scrollbar` as the default toolbelt overflow mode.
|
|
11
|
+
|
|
12
|
+
## [9.4.6]
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- Added fixed `prepend` and `append` slots to `fig-toolbelt`; slotted items remain selectable and keyboard-navigable outside the scrolling fade viewport.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- Toolbelt items now delegate horizontal padding to nested controls and preserve variant-aware selected button colors.
|
|
21
|
+
- Toolbelt paging controls honor padding tokens, and slotted groups receive direction-aware separator borders.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- Single-item `fig-reorder` lists retain list semantics without exposing inactive drag handles, cursors, focus, or move labels.
|
|
26
|
+
|
|
5
27
|
## [9.4.5]
|
|
6
28
|
|
|
7
29
|
### Fixed
|
package/README.md
CHANGED
|
@@ -785,17 +785,20 @@ A selectable horizontal or vertical toolbar that keeps authored items in the lig
|
|
|
785
785
|
|
|
786
786
|
Wrap related items in `fig-toolbelt-group`; adjacent groups receive a direction-aware separator. Add `aria-label` to groups when the grouping has a meaningful name. Items support `value`, `selected`, and `disabled`. `input` and `change` bubble from the toolbelt with the selected value. ArrowLeft/ArrowRight navigate horizontal toolbelts; ArrowUp/ArrowDown navigate vertical toolbelts. Home and End move to the edges; Enter or Space selects the focused item.
|
|
787
787
|
|
|
788
|
+
Place an item, group, or custom element in `slot="prepend"` or `slot="append"` to keep it fixed outside the scrolling and faded viewport. Slotted toolbelt items remain part of selection and keyboard navigation.
|
|
789
|
+
|
|
788
790
|
Use `--fig-toolbelt-gap`, `--fig-toolbelt-group-gap`, `--fig-toolbelt-group-separator-color`, `--fig-toolbelt-overflow-fade-size`, `--fig-toolbelt-padding-block`, `--fig-toolbelt-padding-inline`, `--fig-toolbelt-item-height`, and `--fig-toolbelt-item-padding` to customize layout. The toolbelt fade defaults to `calc(var(--spacer-6) + var(--spacer-2))`.
|
|
789
791
|
|
|
790
792
|
```html
|
|
791
793
|
<fig-toolbelt layout="horizontal" overflow="buttons" value="move" aria-label="Design tools">
|
|
794
|
+
<fig-toolbelt-item slot="prepend" value="move" selected>Move</fig-toolbelt-item>
|
|
792
795
|
<fig-toolbelt-group aria-label="Transform tools">
|
|
793
|
-
<fig-toolbelt-item value="move" selected>Move</fig-toolbelt-item>
|
|
794
796
|
<fig-toolbelt-item value="frame">Frame</fig-toolbelt-item>
|
|
795
797
|
</fig-toolbelt-group>
|
|
796
798
|
<fig-toolbelt-group aria-label="Shape tools">
|
|
797
799
|
<fig-toolbelt-item value="shape">Shape</fig-toolbelt-item>
|
|
798
800
|
</fig-toolbelt-group>
|
|
801
|
+
<fig-toolbelt-item slot="append" value="settings">Settings</fig-toolbelt-item>
|
|
799
802
|
</fig-toolbelt>
|
|
800
803
|
```
|
|
801
804
|
|
package/components.css
CHANGED
|
@@ -1290,70 +1290,6 @@ fig-tab {
|
|
|
1290
1290
|
cursor: default;
|
|
1291
1291
|
}
|
|
1292
1292
|
}
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
fig-toolbelt-item {
|
|
1297
|
-
display: inline-flex;
|
|
1298
|
-
flex-shrink: 0;
|
|
1299
|
-
align-items: center;
|
|
1300
|
-
justify-content: center;
|
|
1301
|
-
height: var(--fig-toolbelt-item-height, var(--control-height));
|
|
1302
|
-
padding-inline: var(--fig-toolbelt-item-padding, var(--spacer-2));
|
|
1303
|
-
border-radius: var(--radius-medium);
|
|
1304
|
-
color: var(--figma-color-text-secondary);
|
|
1305
|
-
line-height: var(--line-height);
|
|
1306
|
-
cursor: default;
|
|
1307
|
-
user-select: none;
|
|
1308
|
-
|
|
1309
|
-
&:has(> fig-tooltip > fig-button[icon]:not([icon="false"])) {
|
|
1310
|
-
padding-inline: 0;
|
|
1311
|
-
}
|
|
1312
|
-
|
|
1313
|
-
&[selected]:not([selected="false"]) {
|
|
1314
|
-
color: var(--figma-color-text);
|
|
1315
|
-
background-color: var(--figma-color-bg-secondary);
|
|
1316
|
-
|
|
1317
|
-
fig-button{
|
|
1318
|
-
color: var(--figma-color-icon-onbrand);
|
|
1319
|
-
background-color: var(--figma-color-bg-brand);
|
|
1320
|
-
}
|
|
1321
|
-
}
|
|
1322
|
-
|
|
1323
|
-
&:hover {
|
|
1324
|
-
background-color: var(--figma-color-bg-secondary);
|
|
1325
|
-
}
|
|
1326
|
-
|
|
1327
|
-
&:focus-visible,
|
|
1328
|
-
&[data-focus-visible] {
|
|
1329
|
-
outline: var(--figma-focus-outline);
|
|
1330
|
-
outline-offset: var(--figma-focus-outline-offset);
|
|
1331
|
-
}
|
|
1332
|
-
|
|
1333
|
-
&[disabled]:not([disabled="false"]) {
|
|
1334
|
-
opacity: 0.4;
|
|
1335
|
-
pointer-events: none;
|
|
1336
|
-
}
|
|
1337
|
-
}
|
|
1338
|
-
|
|
1339
|
-
fig-toolbelt-group {
|
|
1340
|
-
display: inline-flex;
|
|
1341
|
-
flex-flow: row nowrap;
|
|
1342
|
-
flex-shrink: 0;
|
|
1343
|
-
align-items: stretch;
|
|
1344
|
-
gap: var(--fig-toolbelt-gap);
|
|
1345
|
-
min-width: 0;
|
|
1346
|
-
|
|
1347
|
-
& + fig-toolbelt-group {
|
|
1348
|
-
margin-inline-start: calc(
|
|
1349
|
-
var(--fig-toolbelt-group-gap) - var(--fig-toolbelt-gap)
|
|
1350
|
-
);
|
|
1351
|
-
padding-inline-start: var(--fig-toolbelt-group-gap);
|
|
1352
|
-
border-inline-start: 1px solid
|
|
1353
|
-
var(--fig-toolbelt-group-separator-color);
|
|
1354
|
-
}
|
|
1355
|
-
}
|
|
1356
|
-
|
|
1357
1293
|
fig-tab-content {
|
|
1358
1294
|
display: block;
|
|
1359
1295
|
width: 100%;
|
|
@@ -1474,171 +1410,6 @@ fig-tabs,
|
|
|
1474
1410
|
}
|
|
1475
1411
|
}
|
|
1476
1412
|
|
|
1477
|
-
fig-toolbelt {
|
|
1478
|
-
--fig-toolbelt-gap: var(--spacer-1);
|
|
1479
|
-
--fig-toolbelt-group-gap: var(--spacer-2);
|
|
1480
|
-
--fig-toolbelt-group-separator-color: var(--figma-color-border);
|
|
1481
|
-
--fig-toolbelt-overflow-fade-size: calc(var(--spacer-6) + var(--spacer-2));
|
|
1482
|
-
--fig-toolbelt-padding-block: var(--spacer-2);
|
|
1483
|
-
--fig-toolbelt-padding-inline: var(--spacer-2);
|
|
1484
|
-
|
|
1485
|
-
position: relative;
|
|
1486
|
-
display: inline-block;
|
|
1487
|
-
box-sizing: border-box;
|
|
1488
|
-
width: 100%;
|
|
1489
|
-
min-width: 0;
|
|
1490
|
-
margin: 0;
|
|
1491
|
-
background: var(--figma-color-bg) !important;
|
|
1492
|
-
border-radius: var(--radius-large);
|
|
1493
|
-
|
|
1494
|
-
&::after{
|
|
1495
|
-
content: "";
|
|
1496
|
-
position: absolute;
|
|
1497
|
-
inset: 0;
|
|
1498
|
-
pointer-events: none;
|
|
1499
|
-
z-index: 10;
|
|
1500
|
-
box-shadow: var(--figma-elevation-100-canvas);
|
|
1501
|
-
border-radius: var(--radius-large);
|
|
1502
|
-
}
|
|
1503
|
-
|
|
1504
|
-
&[disabled]:not([disabled="false"]) {
|
|
1505
|
-
pointer-events: none;
|
|
1506
|
-
}
|
|
1507
|
-
|
|
1508
|
-
&::part(frame) {
|
|
1509
|
-
position: relative;
|
|
1510
|
-
display: flex;
|
|
1511
|
-
flex-flow: row nowrap;
|
|
1512
|
-
width: 100%;
|
|
1513
|
-
height: 100%;
|
|
1514
|
-
min-width: 0;
|
|
1515
|
-
min-height: 0;
|
|
1516
|
-
}
|
|
1517
|
-
|
|
1518
|
-
&::part(viewport) {
|
|
1519
|
-
display: flex;
|
|
1520
|
-
flex: 1 1 auto;
|
|
1521
|
-
flex-flow: row nowrap;
|
|
1522
|
-
box-sizing: border-box;
|
|
1523
|
-
gap: var(--fig-toolbelt-gap);
|
|
1524
|
-
width: 100%;
|
|
1525
|
-
min-width: 0;
|
|
1526
|
-
padding: var(--fig-toolbelt-padding-block)
|
|
1527
|
-
var(--fig-toolbelt-padding-inline);
|
|
1528
|
-
overflow: auto hidden;
|
|
1529
|
-
scrollbar-width: none;
|
|
1530
|
-
}
|
|
1531
|
-
|
|
1532
|
-
&::part(viewport)::-webkit-scrollbar {
|
|
1533
|
-
display: none;
|
|
1534
|
-
}
|
|
1535
|
-
|
|
1536
|
-
> .fig-overflow {
|
|
1537
|
-
position: absolute;
|
|
1538
|
-
top: 0;
|
|
1539
|
-
bottom: 0;
|
|
1540
|
-
z-index: 3;
|
|
1541
|
-
width: var(--control-height);
|
|
1542
|
-
height: auto;
|
|
1543
|
-
margin: 0;
|
|
1544
|
-
}
|
|
1545
|
-
|
|
1546
|
-
> .fig-overflow-start {
|
|
1547
|
-
left: 0;
|
|
1548
|
-
right: auto;
|
|
1549
|
-
box-shadow: 1px 0 0 0 var(--figma-color-bordertranslucent);
|
|
1550
|
-
|
|
1551
|
-
&::before {
|
|
1552
|
-
border-radius: var(--radius-medium) 0 0 var(--radius-medium);
|
|
1553
|
-
}
|
|
1554
|
-
|
|
1555
|
-
.fig-overflow-chevron {
|
|
1556
|
-
rotate: 90deg;
|
|
1557
|
-
}
|
|
1558
|
-
}
|
|
1559
|
-
|
|
1560
|
-
> .fig-overflow-end {
|
|
1561
|
-
right: 0;
|
|
1562
|
-
left: auto;
|
|
1563
|
-
box-shadow: -1px 0 0 0 var(--figma-color-bordertranslucent);
|
|
1564
|
-
|
|
1565
|
-
&::before {
|
|
1566
|
-
border-radius: 0 var(--radius-medium) var(--radius-medium) 0;
|
|
1567
|
-
}
|
|
1568
|
-
|
|
1569
|
-
.fig-overflow-chevron {
|
|
1570
|
-
rotate: -90deg;
|
|
1571
|
-
}
|
|
1572
|
-
}
|
|
1573
|
-
|
|
1574
|
-
&[layout="vertical"] {
|
|
1575
|
-
width: fit-content;
|
|
1576
|
-
max-width: 100%;
|
|
1577
|
-
|
|
1578
|
-
&::part(frame),
|
|
1579
|
-
&::part(viewport) {
|
|
1580
|
-
flex-flow: column nowrap;
|
|
1581
|
-
}
|
|
1582
|
-
|
|
1583
|
-
&::part(viewport) {
|
|
1584
|
-
overflow: hidden auto;
|
|
1585
|
-
}
|
|
1586
|
-
|
|
1587
|
-
fig-toolbelt-group {
|
|
1588
|
-
flex-flow: column nowrap;
|
|
1589
|
-
width: 100%;
|
|
1590
|
-
|
|
1591
|
-
& + fig-toolbelt-group {
|
|
1592
|
-
margin-block-start: calc(
|
|
1593
|
-
var(--fig-toolbelt-group-gap) - var(--fig-toolbelt-gap)
|
|
1594
|
-
);
|
|
1595
|
-
margin-inline-start: 0;
|
|
1596
|
-
padding-block-start: var(--fig-toolbelt-group-gap);
|
|
1597
|
-
padding-inline-start: 0;
|
|
1598
|
-
border-block-start: 1px solid
|
|
1599
|
-
var(--fig-toolbelt-group-separator-color);
|
|
1600
|
-
border-inline-start: 0;
|
|
1601
|
-
}
|
|
1602
|
-
}
|
|
1603
|
-
|
|
1604
|
-
> .fig-overflow {
|
|
1605
|
-
top: auto;
|
|
1606
|
-
right: 0;
|
|
1607
|
-
left: 0;
|
|
1608
|
-
width: auto;
|
|
1609
|
-
height: var(--control-height);
|
|
1610
|
-
}
|
|
1611
|
-
|
|
1612
|
-
> .fig-overflow-start {
|
|
1613
|
-
top: 0;
|
|
1614
|
-
bottom: auto;
|
|
1615
|
-
box-shadow: 0 1px 0 0 var(--figma-color-bordertranslucent);
|
|
1616
|
-
|
|
1617
|
-
&::before {
|
|
1618
|
-
border-radius: var(--radius-medium) var(--radius-medium) 0 0;
|
|
1619
|
-
}
|
|
1620
|
-
|
|
1621
|
-
.fig-overflow-chevron {
|
|
1622
|
-
rotate: 180deg;
|
|
1623
|
-
}
|
|
1624
|
-
}
|
|
1625
|
-
|
|
1626
|
-
> .fig-overflow-end {
|
|
1627
|
-
top: auto;
|
|
1628
|
-
bottom: 0;
|
|
1629
|
-
box-shadow: 0 -1px 0 0 var(--figma-color-bordertranslucent);
|
|
1630
|
-
|
|
1631
|
-
&::before {
|
|
1632
|
-
border-radius: 0 0 var(--radius-medium) var(--radius-medium);
|
|
1633
|
-
}
|
|
1634
|
-
|
|
1635
|
-
.fig-overflow-chevron {
|
|
1636
|
-
rotate: 0deg;
|
|
1637
|
-
}
|
|
1638
|
-
}
|
|
1639
|
-
}
|
|
1640
|
-
}
|
|
1641
|
-
|
|
1642
1413
|
/* Avatar */
|
|
1643
1414
|
fig-avatar,
|
|
1644
1415
|
.fig-avatar {
|
|
@@ -5609,13 +5380,6 @@ fig-skeleton {
|
|
|
5609
5380
|
overflow-y: auto;
|
|
5610
5381
|
}
|
|
5611
5382
|
|
|
5612
|
-
fig-toolbelt::part(viewport) {
|
|
5613
|
-
--fig-overflow-fade-size: var(--fig-toolbelt-overflow-fade-size);
|
|
5614
|
-
--fig-overflow-fade-clear-top: 0px;
|
|
5615
|
-
|
|
5616
|
-
overflow-y: auto;
|
|
5617
|
-
}
|
|
5618
|
-
|
|
5619
5383
|
.fig-overflow-fade.fig-overflow-fade-horizontal {
|
|
5620
5384
|
--fig-overflow-fade-clear-left: 0px;
|
|
5621
5385
|
|
|
@@ -5623,11 +5387,325 @@ fig-toolbelt::part(viewport) {
|
|
|
5623
5387
|
overflow-y: hidden;
|
|
5624
5388
|
}
|
|
5625
5389
|
|
|
5626
|
-
|
|
5627
|
-
|
|
5390
|
+
/* Toolbelt */
|
|
5391
|
+
fig-toolbelt-item {
|
|
5392
|
+
display: inline-flex;
|
|
5393
|
+
flex-shrink: 0;
|
|
5394
|
+
align-items: center;
|
|
5395
|
+
justify-content: center;
|
|
5396
|
+
height: var(--fig-toolbelt-item-height, var(--control-height));
|
|
5397
|
+
padding-inline: 0;
|
|
5398
|
+
border-radius: var(--radius-medium);
|
|
5399
|
+
color: var(--figma-color-text-secondary);
|
|
5400
|
+
line-height: var(--line-height);
|
|
5401
|
+
cursor: default;
|
|
5402
|
+
user-select: none;
|
|
5628
5403
|
|
|
5629
|
-
|
|
5630
|
-
|
|
5404
|
+
&:has(> fig-tooltip > fig-button[icon]:not([icon="false"])) {
|
|
5405
|
+
padding-inline: 0;
|
|
5406
|
+
}
|
|
5407
|
+
|
|
5408
|
+
&[selected]:not([selected="false"]) {
|
|
5409
|
+
color: var(--figma-color-text);
|
|
5410
|
+
background-color: var(--figma-color-bg-secondary);
|
|
5411
|
+
|
|
5412
|
+
fig-button,
|
|
5413
|
+
fig-button:hover {
|
|
5414
|
+
color: var(--figma-color-icon-onbrand);
|
|
5415
|
+
background-color: var(--figma-color-bg-brand);
|
|
5416
|
+
}
|
|
5417
|
+
fig-button[variant="secondary"],
|
|
5418
|
+
fig-button[variant="ghost"],
|
|
5419
|
+
fig-button[variant="secondary"]:hover,
|
|
5420
|
+
fig-button[variant="ghost"]:hover {
|
|
5421
|
+
color: var(--figma-color-icon-selected);
|
|
5422
|
+
background-color: var(--figma-color-bg-selected);
|
|
5423
|
+
}
|
|
5424
|
+
}
|
|
5425
|
+
|
|
5426
|
+
&:hover {
|
|
5427
|
+
background-color: var(--figma-color-bg-secondary);
|
|
5428
|
+
}
|
|
5429
|
+
|
|
5430
|
+
&:focus-visible,
|
|
5431
|
+
&[data-focus-visible] {
|
|
5432
|
+
outline: var(--figma-focus-outline);
|
|
5433
|
+
outline-offset: var(--figma-focus-outline-offset);
|
|
5434
|
+
}
|
|
5435
|
+
|
|
5436
|
+
&[disabled]:not([disabled="false"]) {
|
|
5437
|
+
opacity: 0.4;
|
|
5438
|
+
pointer-events: none;
|
|
5439
|
+
}
|
|
5440
|
+
}
|
|
5441
|
+
|
|
5442
|
+
fig-toolbelt-group {
|
|
5443
|
+
display: inline-flex;
|
|
5444
|
+
flex-flow: row nowrap;
|
|
5445
|
+
flex-shrink: 0;
|
|
5446
|
+
align-items: stretch;
|
|
5447
|
+
gap: var(--fig-toolbelt-gap);
|
|
5448
|
+
min-width: 0;
|
|
5449
|
+
|
|
5450
|
+
&:is(:not([slot]), [slot=""])
|
|
5451
|
+
+ fig-toolbelt-group:is(:not([slot]), [slot=""]),
|
|
5452
|
+
&[slot="prepend"] + fig-toolbelt-group[slot="prepend"],
|
|
5453
|
+
&[slot="append"] + fig-toolbelt-group[slot="append"] {
|
|
5454
|
+
margin-inline-start: calc(
|
|
5455
|
+
var(--fig-toolbelt-group-gap) - var(--fig-toolbelt-gap)
|
|
5456
|
+
);
|
|
5457
|
+
padding-inline-start: var(--fig-toolbelt-group-gap);
|
|
5458
|
+
border-inline-start: 1px solid
|
|
5459
|
+
var(--fig-toolbelt-group-separator-color);
|
|
5460
|
+
}
|
|
5461
|
+
|
|
5462
|
+
&[slot="prepend"] {
|
|
5463
|
+
padding-inline-end: var(--fig-toolbelt-group-gap);
|
|
5464
|
+
border-inline-end: 1px solid
|
|
5465
|
+
var(--fig-toolbelt-group-separator-color);
|
|
5466
|
+
}
|
|
5467
|
+
|
|
5468
|
+
&[slot="append"] {
|
|
5469
|
+
padding-inline-start: var(--fig-toolbelt-group-gap);
|
|
5470
|
+
border-inline-start: 1px solid
|
|
5471
|
+
var(--fig-toolbelt-group-separator-color);
|
|
5472
|
+
}
|
|
5473
|
+
}
|
|
5474
|
+
|
|
5475
|
+
fig-toolbelt {
|
|
5476
|
+
--fig-toolbelt-gap: var(--spacer-1);
|
|
5477
|
+
--fig-toolbelt-group-gap: var(--spacer-2);
|
|
5478
|
+
--fig-toolbelt-group-separator-color: var(--figma-color-border);
|
|
5479
|
+
--fig-toolbelt-overflow-fade-size: calc(var(--spacer-6) + var(--spacer-2));
|
|
5480
|
+
--fig-toolbelt-padding-block: var(--spacer-2);
|
|
5481
|
+
--fig-toolbelt-padding-inline: var(--spacer-2);
|
|
5482
|
+
|
|
5483
|
+
position: relative;
|
|
5484
|
+
display: inline-block;
|
|
5485
|
+
box-sizing: border-box;
|
|
5486
|
+
width: 100%;
|
|
5487
|
+
min-width: 0;
|
|
5488
|
+
margin: 0;
|
|
5489
|
+
background: var(--figma-color-bg) !important;
|
|
5490
|
+
border-radius: var(--radius-large);
|
|
5491
|
+
|
|
5492
|
+
&::after {
|
|
5493
|
+
content: "";
|
|
5494
|
+
position: absolute;
|
|
5495
|
+
inset: 0;
|
|
5496
|
+
pointer-events: none;
|
|
5497
|
+
z-index: 10;
|
|
5498
|
+
box-shadow: var(--figma-elevation-100-canvas);
|
|
5499
|
+
border-radius: var(--radius-large);
|
|
5500
|
+
}
|
|
5501
|
+
|
|
5502
|
+
&[disabled]:not([disabled="false"]) {
|
|
5503
|
+
pointer-events: none;
|
|
5504
|
+
}
|
|
5505
|
+
|
|
5506
|
+
&::part(frame),
|
|
5507
|
+
&::part(scroll-region) {
|
|
5508
|
+
position: relative;
|
|
5509
|
+
display: flex;
|
|
5510
|
+
flex-flow: row nowrap;
|
|
5511
|
+
width: 100%;
|
|
5512
|
+
height: 100%;
|
|
5513
|
+
min-width: 0;
|
|
5514
|
+
min-height: 0;
|
|
5515
|
+
}
|
|
5516
|
+
|
|
5517
|
+
&::part(scroll-region) {
|
|
5518
|
+
flex: 1 1 auto;
|
|
5519
|
+
}
|
|
5520
|
+
|
|
5521
|
+
&::part(prepend),
|
|
5522
|
+
&::part(append) {
|
|
5523
|
+
display: flex;
|
|
5524
|
+
flex: 0 0 auto;
|
|
5525
|
+
align-items: stretch;
|
|
5526
|
+
gap: var(--fig-toolbelt-gap);
|
|
5527
|
+
padding-block: var(--fig-toolbelt-padding-block);
|
|
5528
|
+
}
|
|
5529
|
+
|
|
5530
|
+
&::part(prepend) {
|
|
5531
|
+
padding-inline-start: var(--fig-toolbelt-padding-inline);
|
|
5532
|
+
}
|
|
5533
|
+
|
|
5534
|
+
&::part(append) {
|
|
5535
|
+
padding-inline-end: var(--fig-toolbelt-padding-inline);
|
|
5536
|
+
}
|
|
5537
|
+
|
|
5538
|
+
&::part(viewport) {
|
|
5539
|
+
--fig-overflow-fade-size: var(--fig-toolbelt-overflow-fade-size);
|
|
5540
|
+
--fig-overflow-fade-clear-top: 0px;
|
|
5541
|
+
|
|
5542
|
+
display: flex;
|
|
5543
|
+
flex: 1 1 auto;
|
|
5544
|
+
flex-flow: row nowrap;
|
|
5545
|
+
box-sizing: border-box;
|
|
5546
|
+
gap: var(--fig-toolbelt-gap);
|
|
5547
|
+
width: 100%;
|
|
5548
|
+
min-width: 0;
|
|
5549
|
+
padding: var(--fig-toolbelt-padding-block)
|
|
5550
|
+
var(--fig-toolbelt-padding-inline);
|
|
5551
|
+
overflow: auto;
|
|
5552
|
+
scrollbar-width: none;
|
|
5553
|
+
}
|
|
5554
|
+
|
|
5555
|
+
&::part(viewport)::-webkit-scrollbar {
|
|
5556
|
+
display: none;
|
|
5557
|
+
}
|
|
5558
|
+
|
|
5559
|
+
&:not([layout="vertical"])::part(viewport) {
|
|
5560
|
+
--fig-overflow-fade-clear-left: 0px;
|
|
5561
|
+
|
|
5562
|
+
overflow-x: auto;
|
|
5563
|
+
overflow-y: hidden;
|
|
5564
|
+
}
|
|
5565
|
+
|
|
5566
|
+
> .fig-overflow {
|
|
5567
|
+
position: absolute;
|
|
5568
|
+
top: var(--fig-toolbelt-padding-block);
|
|
5569
|
+
bottom: var(--fig-toolbelt-padding-block);
|
|
5570
|
+
z-index: 3;
|
|
5571
|
+
width: var(--control-height);
|
|
5572
|
+
height: auto;
|
|
5573
|
+
margin: 0;
|
|
5574
|
+
}
|
|
5575
|
+
|
|
5576
|
+
> .fig-overflow-start {
|
|
5577
|
+
left: 0;
|
|
5578
|
+
right: auto;
|
|
5579
|
+
box-shadow: 1px 0 0 0 var(--figma-color-bordertranslucent);
|
|
5580
|
+
|
|
5581
|
+
&::before {
|
|
5582
|
+
border-radius: var(--radius-medium) 0 0 var(--radius-medium);
|
|
5583
|
+
}
|
|
5584
|
+
|
|
5585
|
+
.fig-overflow-chevron {
|
|
5586
|
+
rotate: 90deg;
|
|
5587
|
+
}
|
|
5588
|
+
}
|
|
5589
|
+
|
|
5590
|
+
> .fig-overflow-end {
|
|
5591
|
+
right: 0;
|
|
5592
|
+
left: auto;
|
|
5593
|
+
box-shadow: -1px 0 0 0 var(--figma-color-bordertranslucent);
|
|
5594
|
+
|
|
5595
|
+
&::before {
|
|
5596
|
+
border-radius: 0 var(--radius-medium) var(--radius-medium) 0;
|
|
5597
|
+
}
|
|
5598
|
+
|
|
5599
|
+
.fig-overflow-chevron {
|
|
5600
|
+
rotate: -90deg;
|
|
5601
|
+
}
|
|
5602
|
+
}
|
|
5603
|
+
|
|
5604
|
+
&[layout="vertical"] {
|
|
5605
|
+
width: fit-content;
|
|
5606
|
+
max-width: 100%;
|
|
5607
|
+
|
|
5608
|
+
&::part(frame),
|
|
5609
|
+
&::part(scroll-region),
|
|
5610
|
+
&::part(viewport) {
|
|
5611
|
+
flex-flow: column nowrap;
|
|
5612
|
+
}
|
|
5613
|
+
|
|
5614
|
+
&::part(prepend),
|
|
5615
|
+
&::part(append) {
|
|
5616
|
+
flex-flow: column nowrap;
|
|
5617
|
+
padding-block: 0;
|
|
5618
|
+
padding-inline: var(--fig-toolbelt-padding-inline);
|
|
5619
|
+
}
|
|
5620
|
+
|
|
5621
|
+
&::part(prepend) {
|
|
5622
|
+
padding-block-start: var(--fig-toolbelt-padding-block);
|
|
5623
|
+
}
|
|
5624
|
+
|
|
5625
|
+
&::part(append) {
|
|
5626
|
+
padding-block-end: var(--fig-toolbelt-padding-block);
|
|
5627
|
+
}
|
|
5628
|
+
|
|
5629
|
+
&::part(viewport) {
|
|
5630
|
+
overflow: hidden auto;
|
|
5631
|
+
}
|
|
5632
|
+
|
|
5633
|
+
fig-toolbelt-group {
|
|
5634
|
+
flex-flow: column nowrap;
|
|
5635
|
+
width: 100%;
|
|
5636
|
+
|
|
5637
|
+
&:is(:not([slot]), [slot=""])
|
|
5638
|
+
+ fig-toolbelt-group:is(:not([slot]), [slot=""]),
|
|
5639
|
+
&[slot="prepend"] + fig-toolbelt-group[slot="prepend"],
|
|
5640
|
+
&[slot="append"] + fig-toolbelt-group[slot="append"] {
|
|
5641
|
+
margin-block-start: calc(
|
|
5642
|
+
var(--fig-toolbelt-group-gap) - var(--fig-toolbelt-gap)
|
|
5643
|
+
);
|
|
5644
|
+
margin-inline-start: 0;
|
|
5645
|
+
padding-block-start: var(--fig-toolbelt-group-gap);
|
|
5646
|
+
padding-inline-start: 0;
|
|
5647
|
+
border-block-start: 1px solid
|
|
5648
|
+
var(--fig-toolbelt-group-separator-color);
|
|
5649
|
+
border-inline-start: 0;
|
|
5650
|
+
}
|
|
5651
|
+
|
|
5652
|
+
&[slot="prepend"] {
|
|
5653
|
+
padding-block-end: calc(
|
|
5654
|
+
var(--fig-toolbelt-group-gap) - var(--fig-toolbelt-gap)
|
|
5655
|
+
);
|
|
5656
|
+
padding-inline-end: 0;
|
|
5657
|
+
border-block-end: 1px solid
|
|
5658
|
+
var(--fig-toolbelt-group-separator-color);
|
|
5659
|
+
border-inline-end: 0;
|
|
5660
|
+
}
|
|
5661
|
+
|
|
5662
|
+
&[slot="append"] {
|
|
5663
|
+
padding-block-start: calc(
|
|
5664
|
+
var(--fig-toolbelt-group-gap) - var(--fig-toolbelt-gap)
|
|
5665
|
+
);
|
|
5666
|
+
padding-inline-start: 0;
|
|
5667
|
+
border-block-start: 1px solid
|
|
5668
|
+
var(--fig-toolbelt-group-separator-color);
|
|
5669
|
+
border-inline-start: 0;
|
|
5670
|
+
}
|
|
5671
|
+
}
|
|
5672
|
+
|
|
5673
|
+
> .fig-overflow {
|
|
5674
|
+
top: auto;
|
|
5675
|
+
right: var(--fig-toolbelt-padding-inline);
|
|
5676
|
+
left: var(--fig-toolbelt-padding-inline);
|
|
5677
|
+
width: auto;
|
|
5678
|
+
height: var(--control-height);
|
|
5679
|
+
}
|
|
5680
|
+
|
|
5681
|
+
> .fig-overflow-start {
|
|
5682
|
+
top: 0;
|
|
5683
|
+
bottom: auto;
|
|
5684
|
+
box-shadow: 0 1px 0 0 var(--figma-color-bordertranslucent);
|
|
5685
|
+
|
|
5686
|
+
&::before {
|
|
5687
|
+
border-radius: var(--radius-medium) var(--radius-medium) 0 0;
|
|
5688
|
+
}
|
|
5689
|
+
|
|
5690
|
+
.fig-overflow-chevron {
|
|
5691
|
+
rotate: 180deg;
|
|
5692
|
+
}
|
|
5693
|
+
}
|
|
5694
|
+
|
|
5695
|
+
> .fig-overflow-end {
|
|
5696
|
+
top: auto;
|
|
5697
|
+
bottom: 0;
|
|
5698
|
+
box-shadow: 0 -1px 0 0 var(--figma-color-bordertranslucent);
|
|
5699
|
+
|
|
5700
|
+
&::before {
|
|
5701
|
+
border-radius: 0 0 var(--radius-medium) var(--radius-medium);
|
|
5702
|
+
}
|
|
5703
|
+
|
|
5704
|
+
.fig-overflow-chevron {
|
|
5705
|
+
rotate: 0deg;
|
|
5706
|
+
}
|
|
5707
|
+
}
|
|
5708
|
+
}
|
|
5631
5709
|
}
|
|
5632
5710
|
|
|
5633
5711
|
@supports (animation-timeline: scroll(self block)) {
|