@rogieking/figui3 9.4.13 → 10.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/.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 +16 -0
- package/README.md +2 -3
- package/components.css +39 -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,22 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [10.0.0]
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Added a vertical separator playground example.
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- `fig-separator` labels now render as child `<label>` elements and preserve authored labels.
|
|
14
|
+
- Removed the `borderless` separator attribute; leading labeled menu and select separators now omit their rule automatically.
|
|
15
|
+
- Refined separator spacing and sticky behavior, and reduced chooser selection-ring thickness.
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- Visual-only `fig-select-option` rows no longer render stray ellipses or extra height.
|
|
20
|
+
|
|
5
21
|
## [9.4.13]
|
|
6
22
|
|
|
7
23
|
### 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
|
@@ -6075,7 +6075,7 @@ fig-chooser {
|
|
|
6075
6075
|
--fig-chooser-inline-padding: var(--spacer-2);
|
|
6076
6076
|
--fig-chooser-block-padding: var(--spacer-2);
|
|
6077
6077
|
--fig-chooser-inline-margin: 0px;
|
|
6078
|
-
--fig-choice-selection-ring-width:
|
|
6078
|
+
--fig-choice-selection-ring-width: 1.5px;
|
|
6079
6079
|
--fig-choice-selection-ring-gutter: calc(
|
|
6080
6080
|
var(--fig-choice-selection-ring-width) * 2
|
|
6081
6081
|
);
|
|
@@ -6850,69 +6850,58 @@ fig-menu-item {
|
|
|
6850
6850
|
:is(fig-separator, fig-menu-separator) {
|
|
6851
6851
|
--fig-separator-color: var(--figma-color-border);
|
|
6852
6852
|
--fig-separator-label-color: var(--figma-color-text-secondary);
|
|
6853
|
-
--fig-separator-
|
|
6853
|
+
--fig-separator-margin-block: var(--spacer-2,0.5rem);
|
|
6854
|
+
--fig-separator-padding-block: 0;
|
|
6855
|
+
--fig-separator-padding-inline: var(--spacer-4,1rem);
|
|
6854
6856
|
|
|
6855
6857
|
display: block;
|
|
6856
6858
|
box-sizing: border-box;
|
|
6857
6859
|
flex-shrink: 0;
|
|
6858
6860
|
width: 100%;
|
|
6859
6861
|
height: 1px;
|
|
6860
|
-
margin: var(--
|
|
6861
|
-
|
|
6862
|
+
margin-block: var(--fig-separator-margin-block);
|
|
6863
|
+
margin-inline: 0;
|
|
6864
|
+
padding-block: var(--fig-separator-padding-block);
|
|
6865
|
+
padding-inline: var(--fig-separator-padding-inline);
|
|
6862
6866
|
border: 0;
|
|
6863
|
-
|
|
6867
|
+
border-block-start: 1px solid var(--fig-separator-color);
|
|
6868
|
+
background: transparent;
|
|
6864
6869
|
color: var(--fig-separator-label-color);
|
|
6865
6870
|
font-weight: var(--body-medium-fontWeight);
|
|
6866
6871
|
pointer-events: none;
|
|
6867
6872
|
user-select: none;
|
|
6868
6873
|
|
|
6869
6874
|
&[direction="vertical"] {
|
|
6875
|
+
--fig-separator-margin-block: 0;
|
|
6870
6876
|
align-self: stretch;
|
|
6871
6877
|
width: 1px;
|
|
6872
6878
|
max-width: 1px;
|
|
6873
6879
|
height: auto;
|
|
6874
6880
|
min-height: var(--spacer-3);
|
|
6875
|
-
margin: 0;
|
|
6876
6881
|
padding: 0;
|
|
6882
|
+
border-block-start: 0;
|
|
6883
|
+
border-inline-start: 1px solid var(--fig-separator-color);
|
|
6877
6884
|
}
|
|
6878
6885
|
|
|
6879
|
-
&
|
|
6880
|
-
|
|
6881
|
-
|
|
6882
|
-
|
|
6883
|
-
|
|
6884
|
-
|
|
6886
|
+
& > label {
|
|
6887
|
+
display: block;
|
|
6888
|
+
line-height: var(--spacer-4,1rem);
|
|
6889
|
+
min-height: var(--spacer-4,1rem);
|
|
6890
|
+
overflow: hidden;
|
|
6891
|
+
text-overflow: ellipsis;
|
|
6892
|
+
white-space: nowrap;
|
|
6885
6893
|
}
|
|
6886
6894
|
|
|
6887
6895
|
/* Labeled: rule, then secondary group label (same pattern as menu optgroups). */
|
|
6888
|
-
|
|
6889
|
-
|
|
6890
|
-
|
|
6891
|
-
gap: var(--spacer-2,0.5rem);
|
|
6896
|
+
&:has(> label) {
|
|
6897
|
+
--fig-separator-margin-block: var(--spacer-2,0.5rem) var(--spacer-1,0.25rem);
|
|
6898
|
+
--fig-separator-padding-block: var(--spacer-2,0.5rem) 0;
|
|
6892
6899
|
height: auto;
|
|
6893
|
-
margin: var(--spacer-2,0.5rem) 0;
|
|
6894
|
-
margin-bottom: var(--spacer-1,0.25rem);
|
|
6895
|
-
background: transparent;
|
|
6896
6900
|
|
|
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);
|
|
6901
|
+
&:first-child{
|
|
6902
|
+
--fig-separator-padding-block: 0;
|
|
6903
|
+
--fig-separator-color: transparent;
|
|
6904
|
+
--fig-separator-margin-block: 0;
|
|
6916
6905
|
}
|
|
6917
6906
|
|
|
6918
6907
|
&[sticky]:not([sticky="false"]) {
|
|
@@ -6922,38 +6911,23 @@ fig-menu-item {
|
|
|
6922
6911
|
background: var(--fig-popup-bg-color, var(--figma-color-bg));
|
|
6923
6912
|
|
|
6924
6913
|
&[stuck] {
|
|
6925
|
-
--fig-separator-padding: var(--
|
|
6926
|
-
|
|
6927
|
-
|
|
6928
|
-
}
|
|
6914
|
+
--fig-separator-padding-block: var(--fig-separator-stuck-padding-block, var(--spacer-2,0.5rem));
|
|
6915
|
+
--fig-separator-padding-inline: var(--spacer-4,1rem);
|
|
6916
|
+
--fig-separator-color: transparent;
|
|
6929
6917
|
}
|
|
6930
6918
|
}
|
|
6931
6919
|
}
|
|
6932
6920
|
}
|
|
6933
6921
|
|
|
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
6922
|
fig-menu > :is(fig-separator, fig-menu-separator) {
|
|
6953
|
-
--fig-separator-padding:
|
|
6923
|
+
--fig-separator-padding-inline: var(--spacer-3,0.75rem) var(--spacer-4,1rem);
|
|
6924
|
+
}
|
|
6954
6925
|
|
|
6955
|
-
|
|
6956
|
-
|
|
6957
|
-
|
|
6958
|
-
|
|
6926
|
+
fig-select-options > :is(fig-separator, fig-menu-separator):has(> label):first-child,
|
|
6927
|
+
fig-select-options > [data-fig-select-nav="start"] + :is(fig-separator, fig-menu-separator):has(> label),
|
|
6928
|
+
fig-menu > [slot="trigger"] + :is(fig-separator, fig-menu-separator):has(> label) {
|
|
6929
|
+
--fig-separator-padding-block: 0;
|
|
6930
|
+
--fig-separator-stuck-padding-block: 0;
|
|
6931
|
+
--fig-separator-color: transparent;
|
|
6932
|
+
--fig-separator-margin-block: 0;
|
|
6959
6933
|
}
|