@rogieking/figui3 8.9.17 → 8.9.19
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/SKILL.md +5 -6
- package/.cursor/skills/figui3/SKILL.md +1 -1
- package/components.css +22 -4
- package/dist/components.css +1 -1
- package/dist/fig-editor.css +1 -1
- package/dist/fig-editor.js +3 -3
- package/dist/fig.css +1 -1
- package/dist/fig.js +5 -5
- package/fig-editor.css +14 -7
- package/fig-editor.js +35 -77
- package/fig.js +103 -13
- package/package.json +1 -1
|
@@ -128,7 +128,7 @@ Full fill editor. Core `fig-input-color` / `fig-input-fill` auto-open it when re
|
|
|
128
128
|
</fig-fill-picker>
|
|
129
129
|
```
|
|
130
130
|
|
|
131
|
-
Playground: `#fill-picker` — `all-modes`, `solid`, `gradient`, `image`, `video`, `webcam
|
|
131
|
+
Playground: `#fill-picker` — `all-modes`, `solid`, `gradient`, `image`, `video`, `webcam`, `shader` (custom `slot="mode-shader"`).
|
|
132
132
|
|
|
133
133
|
| Attr | Notes |
|
|
134
134
|
|---|---|
|
|
@@ -161,13 +161,12 @@ Do not use `picker` or `picker-anchor` on `fig-input-color`. Forward picker chro
|
|
|
161
161
|
### Custom modes (vanilla)
|
|
162
162
|
|
|
163
163
|
```html
|
|
164
|
-
<fig-fill
|
|
165
|
-
<fig-swatch></fig-swatch>
|
|
164
|
+
<fig-input-fill mode="solid,tokens" value='{"type":"tokens"}'>
|
|
166
165
|
<div slot="mode-tokens" label="Tokens">Token UI</div>
|
|
167
|
-
</fig-fill
|
|
166
|
+
</fig-input-fill>
|
|
168
167
|
```
|
|
169
168
|
|
|
170
|
-
Child `slot="mode-<name>"` plus `<name>` in `mode`. Custom content must dispatch `input` / `change` with `detail` so the picker stores mode data.
|
|
169
|
+
Child `slot="mode-<name>"` plus `<name>` in `mode`. `fig-input-fill` forwards those slots to the inner picker and uses image-style chrome (type label + opacity). Custom content must dispatch `input` / `change` with `detail` so the picker stores mode data.
|
|
171
170
|
|
|
172
171
|
### Custom modes (React)
|
|
173
172
|
|
|
@@ -178,7 +177,7 @@ Child `slot="mode-<name>"` plus `<name>` in `mode`. Custom content must dispatch
|
|
|
178
177
|
|
|
179
178
|
## `fig-interpolation-swatch`
|
|
180
179
|
|
|
181
|
-
Preview for gradient interpolation (linear or polar hue arc). Playground attrs: `size="small|large"`.
|
|
180
|
+
Preview for gradient interpolation (linear or polar hue arc). Playground attrs: `size="small|large"`. Can be used standalone with a gradient `value`. The fill picker interpolation row is hidden for now and locks to `srgb`.
|
|
182
181
|
|
|
183
182
|
## Maintainer notes
|
|
184
183
|
|
|
@@ -138,7 +138,7 @@ Playground hashes: `/figui3#{id}`. Full attrs: [reference.md](reference.md).
|
|
|
138
138
|
| Tag | Playground | Notes |
|
|
139
139
|
|---|---|---|
|
|
140
140
|
| `fig-input-color` | (propkit `#color`) | Solid color. `text`, `alpha`. Auto-detects `fig-fill-picker` |
|
|
141
|
-
| `fig-input-fill` | `#fill-input` | Solid/gradient/image/video/webcam JSON `value`. Same `webcam` / `video.poster` shape as the picker. `webcam-mode`, `default-video`, `picker-*` forwarded if picker registered |
|
|
141
|
+
| `fig-input-fill` | `#fill-input` | Solid/gradient/image/video/webcam/custom JSON `value`. Custom `mode-*` slots forward to the inner picker and use image-style chrome. Same `webcam` / `video.poster` shape as the picker. `webcam-mode`, `default-video`, `picker-*` forwarded if picker registered |
|
|
142
142
|
| `fig-input-palette` | (propkit `#palette`) | Multi-color. `fixed`, `open` |
|
|
143
143
|
| `fig-input-gradient` | (propkit `#gradient`) | Stops. `edit`, `mode="handle\|tip"` |
|
|
144
144
|
| `fig-swatch` | `#swatch` | `size`, `selected`, `alpha` |
|
package/components.css
CHANGED
|
@@ -436,7 +436,7 @@
|
|
|
436
436
|
0px 10px 16px 0px light-dark(rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.35)),
|
|
437
437
|
0px 2px 5px 0px light-dark(rgba(0, 0, 0, 0.15), rgba(0, 0, 0, 0.35)),
|
|
438
438
|
inset 0px 0.5px 0px 0px light-dark(transparent, rgba(255, 255, 255, 0.08)),
|
|
439
|
-
inset 0px 0.75px 0px 0px light-dark(transparent, rgba(255, 255, 255, 0.
|
|
439
|
+
inset 0px 0.75px 0px 0px light-dark(transparent, rgba(255, 255, 255, 0.1));
|
|
440
440
|
|
|
441
441
|
--fig-popover-shadow:
|
|
442
442
|
drop-shadow(0px 1px 1.5px light-dark(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.4)))
|
|
@@ -1495,7 +1495,8 @@ input[type="color"] {
|
|
|
1495
1495
|
}
|
|
1496
1496
|
&::before {
|
|
1497
1497
|
content: "";
|
|
1498
|
-
background:
|
|
1498
|
+
background-color: transparent;
|
|
1499
|
+
background-image: var(--swatch-background);
|
|
1499
1500
|
background-size: var(--swatch-bg-size);
|
|
1500
1501
|
background-position: var(--swatch-bg-position);
|
|
1501
1502
|
background-repeat: no-repeat;
|
|
@@ -1780,6 +1781,18 @@ fig-media-controls {
|
|
|
1780
1781
|
gap: var(--spacer-1);
|
|
1781
1782
|
width: 100%;
|
|
1782
1783
|
|
|
1784
|
+
/* display:contents on fig-tooltip drops the play button out of this flex
|
|
1785
|
+
row until hover/reflow. Keep a real box so the control is always visible. */
|
|
1786
|
+
> fig-tooltip {
|
|
1787
|
+
display: inline-flex;
|
|
1788
|
+
flex-shrink: 0;
|
|
1789
|
+
align-items: center;
|
|
1790
|
+
}
|
|
1791
|
+
|
|
1792
|
+
fig-icon {
|
|
1793
|
+
contain: none;
|
|
1794
|
+
}
|
|
1795
|
+
|
|
1783
1796
|
&[overlay]:not([overlay="false"]) {
|
|
1784
1797
|
border-radius: var(--radius-medium);
|
|
1785
1798
|
background-color: var(--figma-color-bg);
|
|
@@ -3153,7 +3166,6 @@ dialog[is="fig-popup"] {
|
|
|
3153
3166
|
position: sticky;
|
|
3154
3167
|
top: 0;
|
|
3155
3168
|
z-index: 2;
|
|
3156
|
-
background: var(--fig-popup-bg-color, var(--figma-color-bg));
|
|
3157
3169
|
}
|
|
3158
3170
|
|
|
3159
3171
|
&:has(> fig-header) {
|
|
@@ -3923,6 +3935,10 @@ fig-input-number {
|
|
|
3923
3935
|
}
|
|
3924
3936
|
|
|
3925
3937
|
fig-input-fill {
|
|
3938
|
+
& > [slot^="mode-"] {
|
|
3939
|
+
display: none;
|
|
3940
|
+
}
|
|
3941
|
+
|
|
3926
3942
|
& > .input-combo > fig-fill-picker {
|
|
3927
3943
|
display: contents;
|
|
3928
3944
|
}
|
|
@@ -4891,7 +4907,9 @@ fig-skeleton {
|
|
|
4891
4907
|
|
|
4892
4908
|
.fig-mask-icon,
|
|
4893
4909
|
fig-icon {
|
|
4894
|
-
|
|
4910
|
+
/* size only — paint containment skips mask-image when `name` / `--icon` updates
|
|
4911
|
+
until a sibling hover (e.g. fig-preview) forces a repaint. */
|
|
4912
|
+
contain: size;
|
|
4895
4913
|
--size: var(--spacer-4);
|
|
4896
4914
|
--icon: var(--icon-24-add);
|
|
4897
4915
|
|