@rogieking/figui3 9.4.13 → 10.0.1
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-editor/components.md +1 -1
- package/.cursor/skills/fig-editor/reference.md +1 -1
- package/.cursor/skills/figui3/components.md +2 -1
- package/.cursor/skills/figui3/reference.md +1 -1
- package/CHANGELOG.md +22 -0
- package/README.md +2 -3
- package/components.css +46 -65
- package/dist/components.css +1 -1
- package/dist/fig-editor.css +1 -1
- package/dist/fig-editor.js +1 -1
- package/dist/fig.css +1 -1
- package/dist/fig.js +8 -8
- package/fig-editor.css +0 -5
- package/fig-editor.js +0 -11
- package/fig.js +43 -12
- package/package.json +1 -1
|
@@ -49,7 +49,7 @@ Data-driven (no authored options):
|
|
|
49
49
|
```
|
|
50
50
|
|
|
51
51
|
- Auto `slot="panel"` if missing. Use `slot="panel"` when the panel is slotted (rich / verbose options).
|
|
52
|
-
-
|
|
52
|
+
- A leading labeled `fig-separator` omits its rule. `sticky` pins the label while scrolling.
|
|
53
53
|
- Overflow adds `.overflow-start` / `.overflow-end`. Sticky `top` sits below the overflow chevron (`--fig-vertical-overflow-size`).
|
|
54
54
|
- Methods: `syncOverflow()`, `scrollToOption(option, behavior)`.
|
|
55
55
|
- Options stay in light DOM. Author them as React children.
|
|
@@ -15,7 +15,7 @@ Observed: `value`, `disabled`, `selected`, `label`.
|
|
|
15
15
|
|
|
16
16
|
- Auto `slot="panel"` if missing
|
|
17
17
|
- Unwraps a legacy nested `fig-chooser`
|
|
18
|
-
-
|
|
18
|
+
- A leading labeled `fig-separator` omits its rule
|
|
19
19
|
- Overflow nav buttons: `data-fig-select-nav`, classes `overflow-start` / `overflow-end`
|
|
20
20
|
- Methods: `syncOverflow()`, `scrollToOption(option, behavior)`
|
|
21
21
|
|
|
@@ -455,7 +455,8 @@ Handlers below assume `onInput` / `onChange` / `onClick` from [react.md](react.m
|
|
|
455
455
|
<fig-separator label="Darken" sticky />
|
|
456
456
|
```
|
|
457
457
|
|
|
458
|
-
- Attrs: `label`, `sticky
|
|
458
|
+
- Attrs: `label`, `sticky`.
|
|
459
|
+
- `label` generates a child `<label>`; an authored child `<label>` is preserved instead.
|
|
459
460
|
|
|
460
461
|
### `fig-menu` / `fig-menu-item`
|
|
461
462
|
|
|
@@ -103,7 +103,7 @@ Toast: `theme`, `duration`, `offset`, `dismiss`, `live="polite|assertive"`, `ico
|
|
|
103
103
|
- `position`, `offset`, `closedby="auto|any|none"`, `open`
|
|
104
104
|
- Items stay in light DOM and slot into the popup (do not relocate)
|
|
105
105
|
- Items: `fig-menu-item` (`value`, `disabled`, `subtle`). Also a list row outside `fig-menu` (popup, sticky separators, nested row `fig-menu`).
|
|
106
|
-
- Dividers: `fig-separator` / `fig-menu-separator` (`label`, `sticky
|
|
106
|
+
- Dividers: `fig-separator` / `fig-menu-separator` (`label`, `sticky`)
|
|
107
107
|
- Popup uses `popover="manual"` (top layer) and stays in the menu shadow so slots keep working
|
|
108
108
|
|
|
109
109
|
## Color / fill values
|
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
|
+
## [10.0.1]
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Refined the hue slider handle with an inset thumb-color ring and layered shadow.
|
|
10
|
+
|
|
11
|
+
## [10.0.0]
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- Added a vertical separator playground example.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- `fig-separator` labels now render as child `<label>` elements and preserve authored labels.
|
|
20
|
+
- Removed the `borderless` separator attribute; leading labeled menu and select separators now omit their rule automatically.
|
|
21
|
+
- Refined separator spacing and sticky behavior, and reduced chooser selection-ring thickness.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- Visual-only `fig-select-option` rows no longer render stray ellipses or extra height.
|
|
26
|
+
|
|
5
27
|
## [9.4.13]
|
|
6
28
|
|
|
7
29
|
### Changed
|
package/README.md
CHANGED
|
@@ -1386,12 +1386,11 @@ Escape dismisses an open tooltip and returns focus to its trigger.
|
|
|
1386
1386
|
|
|
1387
1387
|
`<fig-separator>` — [demo](https://rog.ie/figui3/#separator)
|
|
1388
1388
|
|
|
1389
|
-
A visual divider between content groups. The optional `label` attribute adds a group label and accessible name.
|
|
1389
|
+
A visual divider between content groups. The optional `label` attribute adds a group label and accessible name. `<fig-menu-separator>` is a backwards-compatible alias.
|
|
1390
1390
|
|
|
1391
1391
|
```html
|
|
1392
1392
|
<fig-separator></fig-separator>
|
|
1393
1393
|
<fig-separator label="More"></fig-separator>
|
|
1394
|
-
<fig-separator label="First group" borderless></fig-separator>
|
|
1395
1394
|
<fig-menu-separator></fig-menu-separator>
|
|
1396
1395
|
```
|
|
1397
1396
|
|
|
@@ -1451,7 +1450,7 @@ Popup list (no wrapping `fig-menu`):
|
|
|
1451
1450
|
</dialog>
|
|
1452
1451
|
```
|
|
1453
1452
|
|
|
1454
|
-
`fig-separator` and `fig-menu-separator` accept optional `label` — renders the rule, then secondary group text underneath.
|
|
1453
|
+
`fig-separator` and `fig-menu-separator` accept optional `label` — renders the rule, then a generated `<label>` with secondary group text underneath. An authored child `<label>` takes precedence and is preserved.
|
|
1455
1454
|
|
|
1456
1455
|
---
|
|
1457
1456
|
|
package/components.css
CHANGED
|
@@ -3346,6 +3346,13 @@ fig-slider {
|
|
|
3346
3346
|
--slider-checkerboard: var(--checkerboard-slider);
|
|
3347
3347
|
--slider-track-color: var(--figma-color-bg-tertiary);
|
|
3348
3348
|
|
|
3349
|
+
&[type="hue"]{
|
|
3350
|
+
--slider-handle-shadow:
|
|
3351
|
+
inset 0 0 0 3px var(--slider-thumb-color),
|
|
3352
|
+
0 0 0 0.75px rgba(0, 0, 0, 0.075), inset 0 0 0 5px rgba(0, 0, 0, 0.1),
|
|
3353
|
+
var(--figma-elevation-100);
|
|
3354
|
+
}
|
|
3355
|
+
|
|
3349
3356
|
background-color: var(--figma-color-bg-secondary);
|
|
3350
3357
|
border-radius: var(--radius-medium);
|
|
3351
3358
|
padding-left: var(--spacer-2);
|
|
@@ -6075,7 +6082,7 @@ fig-chooser {
|
|
|
6075
6082
|
--fig-chooser-inline-padding: var(--spacer-2);
|
|
6076
6083
|
--fig-chooser-block-padding: var(--spacer-2);
|
|
6077
6084
|
--fig-chooser-inline-margin: 0px;
|
|
6078
|
-
--fig-choice-selection-ring-width:
|
|
6085
|
+
--fig-choice-selection-ring-width: 1.5px;
|
|
6079
6086
|
--fig-choice-selection-ring-gutter: calc(
|
|
6080
6087
|
var(--fig-choice-selection-ring-width) * 2
|
|
6081
6088
|
);
|
|
@@ -6850,69 +6857,58 @@ fig-menu-item {
|
|
|
6850
6857
|
:is(fig-separator, fig-menu-separator) {
|
|
6851
6858
|
--fig-separator-color: var(--figma-color-border);
|
|
6852
6859
|
--fig-separator-label-color: var(--figma-color-text-secondary);
|
|
6853
|
-
--fig-separator-
|
|
6860
|
+
--fig-separator-margin-block: var(--spacer-2,0.5rem);
|
|
6861
|
+
--fig-separator-padding-block: 0;
|
|
6862
|
+
--fig-separator-padding-inline: var(--spacer-4,1rem);
|
|
6854
6863
|
|
|
6855
6864
|
display: block;
|
|
6856
6865
|
box-sizing: border-box;
|
|
6857
6866
|
flex-shrink: 0;
|
|
6858
6867
|
width: 100%;
|
|
6859
6868
|
height: 1px;
|
|
6860
|
-
margin: var(--
|
|
6861
|
-
|
|
6869
|
+
margin-block: var(--fig-separator-margin-block);
|
|
6870
|
+
margin-inline: 0;
|
|
6871
|
+
padding-block: var(--fig-separator-padding-block);
|
|
6872
|
+
padding-inline: var(--fig-separator-padding-inline);
|
|
6862
6873
|
border: 0;
|
|
6863
|
-
|
|
6874
|
+
border-block-start: 1px solid var(--fig-separator-color);
|
|
6875
|
+
background: transparent;
|
|
6864
6876
|
color: var(--fig-separator-label-color);
|
|
6865
6877
|
font-weight: var(--body-medium-fontWeight);
|
|
6866
6878
|
pointer-events: none;
|
|
6867
6879
|
user-select: none;
|
|
6868
6880
|
|
|
6869
6881
|
&[direction="vertical"] {
|
|
6882
|
+
--fig-separator-margin-block: 0;
|
|
6870
6883
|
align-self: stretch;
|
|
6871
6884
|
width: 1px;
|
|
6872
6885
|
max-width: 1px;
|
|
6873
6886
|
height: auto;
|
|
6874
6887
|
min-height: var(--spacer-3);
|
|
6875
|
-
margin: 0;
|
|
6876
6888
|
padding: 0;
|
|
6889
|
+
border-block-start: 0;
|
|
6890
|
+
border-inline-start: 1px solid var(--fig-separator-color);
|
|
6877
6891
|
}
|
|
6878
6892
|
|
|
6879
|
-
&
|
|
6880
|
-
|
|
6881
|
-
|
|
6882
|
-
|
|
6883
|
-
|
|
6884
|
-
|
|
6893
|
+
& > label {
|
|
6894
|
+
display: block;
|
|
6895
|
+
line-height: var(--spacer-4,1rem);
|
|
6896
|
+
min-height: var(--spacer-4,1rem);
|
|
6897
|
+
overflow: hidden;
|
|
6898
|
+
text-overflow: ellipsis;
|
|
6899
|
+
white-space: nowrap;
|
|
6885
6900
|
}
|
|
6886
6901
|
|
|
6887
6902
|
/* Labeled: rule, then secondary group label (same pattern as menu optgroups). */
|
|
6888
|
-
|
|
6889
|
-
|
|
6890
|
-
|
|
6891
|
-
gap: var(--spacer-2,0.5rem);
|
|
6903
|
+
&:has(> label) {
|
|
6904
|
+
--fig-separator-margin-block: var(--spacer-2,0.5rem) var(--spacer-1,0.25rem);
|
|
6905
|
+
--fig-separator-padding-block: var(--spacer-2,0.5rem) 0;
|
|
6892
6906
|
height: auto;
|
|
6893
|
-
margin: var(--spacer-2,0.5rem) 0;
|
|
6894
|
-
margin-bottom: var(--spacer-1,0.25rem);
|
|
6895
|
-
background: transparent;
|
|
6896
6907
|
|
|
6897
|
-
&:first-
|
|
6898
|
-
|
|
6899
|
-
|
|
6900
|
-
|
|
6901
|
-
|
|
6902
|
-
&::before {
|
|
6903
|
-
content: "";
|
|
6904
|
-
display: block;
|
|
6905
|
-
height: 1px;
|
|
6906
|
-
margin-inline: calc(-1 * var(--spacer-4,1rem));
|
|
6907
|
-
background: var(--fig-separator-color);
|
|
6908
|
-
}
|
|
6909
|
-
|
|
6910
|
-
&::after {
|
|
6911
|
-
content: attr(label);
|
|
6912
|
-
display: block;
|
|
6913
|
-
color: var(--fig-separator-label-color);
|
|
6914
|
-
line-height: var(--spacer-4,1rem);
|
|
6915
|
-
min-height: var(--spacer-4,1rem);
|
|
6908
|
+
&:first-child{
|
|
6909
|
+
--fig-separator-padding-block: 0;
|
|
6910
|
+
--fig-separator-color: transparent;
|
|
6911
|
+
--fig-separator-margin-block: 0;
|
|
6916
6912
|
}
|
|
6917
6913
|
|
|
6918
6914
|
&[sticky]:not([sticky="false"]) {
|
|
@@ -6922,38 +6918,23 @@ fig-menu-item {
|
|
|
6922
6918
|
background: var(--fig-popup-bg-color, var(--figma-color-bg));
|
|
6923
6919
|
|
|
6924
6920
|
&[stuck] {
|
|
6925
|
-
--fig-separator-padding: var(--
|
|
6926
|
-
|
|
6927
|
-
|
|
6928
|
-
}
|
|
6921
|
+
--fig-separator-padding-block: var(--fig-separator-stuck-padding-block, var(--spacer-2,0.5rem));
|
|
6922
|
+
--fig-separator-padding-inline: var(--spacer-4,1rem);
|
|
6923
|
+
--fig-separator-color: transparent;
|
|
6929
6924
|
}
|
|
6930
6925
|
}
|
|
6931
6926
|
}
|
|
6932
6927
|
}
|
|
6933
6928
|
|
|
6934
|
-
:is(fig-select-options, .fig-menu-options, fig-menu).overflow-start
|
|
6935
|
-
> :is(fig-separator, fig-menu-separator)[label]:not([label=""])[sticky]:not([sticky="false"]) {
|
|
6936
|
-
top: var(--fig-vertical-overflow-size, var(--spacer-4, 1rem)) !important;
|
|
6937
|
-
}
|
|
6938
|
-
|
|
6939
|
-
dialog[is="fig-popup"][theme="menu"]
|
|
6940
|
-
:is(fig-separator, fig-menu-separator):first-child[label]:not([label=""])::before,
|
|
6941
|
-
fig-select-options > :is(fig-separator, fig-menu-separator):first-child[label]:not([label=""])::before {
|
|
6942
|
-
display: none;
|
|
6943
|
-
}
|
|
6944
|
-
|
|
6945
|
-
dialog[is="fig-popup"][theme="menu"] :is(fig-separator, fig-menu-separator),
|
|
6946
|
-
fig-menu > :is(fig-separator, fig-menu-separator),
|
|
6947
|
-
fig-select-options > :is(fig-separator, fig-menu-separator) {
|
|
6948
|
-
--fig-separator-color: var(--figma-color-border-menu);
|
|
6949
|
-
--fig-separator-label-color: var(--figma-color-text-menu-secondary);
|
|
6950
|
-
}
|
|
6951
|
-
|
|
6952
6929
|
fig-menu > :is(fig-separator, fig-menu-separator) {
|
|
6953
|
-
--fig-separator-padding:
|
|
6930
|
+
--fig-separator-padding-inline: var(--spacer-3,0.75rem) var(--spacer-4,1rem);
|
|
6931
|
+
}
|
|
6954
6932
|
|
|
6955
|
-
|
|
6956
|
-
|
|
6957
|
-
|
|
6958
|
-
|
|
6933
|
+
fig-select-options > :is(fig-separator, fig-menu-separator):has(> label):first-child,
|
|
6934
|
+
fig-select-options > [data-fig-select-nav="start"] + :is(fig-separator, fig-menu-separator):has(> label),
|
|
6935
|
+
fig-menu > [slot="trigger"] + :is(fig-separator, fig-menu-separator):has(> label) {
|
|
6936
|
+
--fig-separator-padding-block: 0;
|
|
6937
|
+
--fig-separator-stuck-padding-block: 0;
|
|
6938
|
+
--fig-separator-color: transparent;
|
|
6939
|
+
--fig-separator-margin-block: 0;
|
|
6959
6940
|
}
|