@rogieking/figui3 9.3.0 → 9.4.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-lab/SKILL.md +3 -3
- package/.cursor/skills/fig-lab/components.md +22 -2
- package/.cursor/skills/fig-lab/reference.md +22 -2
- package/.cursor/skills/figui3/SKILL.md +2 -2
- package/.cursor/skills/figui3/components.md +29 -0
- package/.cursor/skills/figui3/react.md +4 -1
- package/.cursor/skills/figui3/reference.md +10 -0
- package/CHANGELOG.md +3966 -0
- package/README.md +93 -0
- package/components.css +252 -15
- package/dist/components.css +1 -1
- package/dist/fig-lab.css +1 -1
- package/dist/fig-lab.js +1 -1
- package/dist/fig.css +1 -1
- package/dist/fig.js +5 -5
- package/fig-lab.css +115 -0
- package/fig-lab.js +447 -5
- package/fig.js +613 -23
- package/package.json +2 -4
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,3966 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
## [9.4.1]
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Added a playground example for authored `fig-group` headers with independent actions.
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- Collapsible `fig-group` titles and chevrons now own toggle behavior, leaving header actions independent and keeping focus and hover feedback scoped to the toggle.
|
|
14
|
+
- `fig-group compact` now propagates to its direct `fig-header`; playground Compact controls update every group in an example.
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- `fig-truncate` now re-renders when its text changes and keeps tooltip behavior synchronized with content, overflow, and the `tooltip` attribute.
|
|
19
|
+
|
|
20
|
+
## [9.4.0]
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
|
|
24
|
+
- Added `fig-toolbelt`, `fig-toolbelt-group`, and `fig-toolbelt-item`: a selectable horizontal or vertical toolbar with grouped separators, roving keyboard navigation, overflow fades, and optional paging buttons.
|
|
25
|
+
- Added experimental Lab `fig-input-audio` for single-audio uploads with a responsive waveform preview.
|
|
26
|
+
- Added `items` selector support to `fig-reorder` so only matching children are reorderable.
|
|
27
|
+
- Added playground examples and skill docs for toolbelt, audio input, and reorder items.
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
|
|
31
|
+
- Removed the unused `typescript` peer dependency so installs no longer require `--legacy-peer-deps`.
|
|
32
|
+
- `CHANGELOG.md` now ships in the npm package.
|
|
33
|
+
- Lab playground navigation adds an Inputs group and merges same-named nav groups.
|
|
34
|
+
|
|
35
|
+
## [9.3.0]
|
|
36
|
+
|
|
37
|
+
### Changed
|
|
38
|
+
|
|
39
|
+
- Merged all PropsKit examples into the FigUI3 playground with redirects for old `/propskit` routes; Lab now lives at `/lab`.
|
|
40
|
+
- Reorganized playground navigation into focused groups and ordered inputs from common to specialized controls.
|
|
41
|
+
- `fig-reorder` uses the secondary background color for the actively dragged item.
|
|
42
|
+
- Refined migrated examples with clearer names, full-width input fields, and simpler dialog content.
|
|
43
|
+
|
|
44
|
+
### Fixed
|
|
45
|
+
|
|
46
|
+
- Prevented `fig-property-button` from receiving generic leading-SVG padding.
|
|
47
|
+
|
|
48
|
+
## [9.2.3]
|
|
49
|
+
|
|
50
|
+
### Fixed
|
|
51
|
+
|
|
52
|
+
- Secondary button and input combos keep one outer border and divider when controls are wrapped in `fig-tooltip`.
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
|
|
56
|
+
- FigUI3 playground Input Combo Fields example uses `fig-input-combo full`.
|
|
57
|
+
|
|
58
|
+
## [9.2.2]
|
|
59
|
+
|
|
60
|
+
### Added
|
|
61
|
+
|
|
62
|
+
- Added authored `slot="prepend"` icon support to `fig-property-button`, taking precedence over its generated `icon`.
|
|
63
|
+
|
|
64
|
+
## [9.2.1]
|
|
65
|
+
|
|
66
|
+
### Changed
|
|
67
|
+
|
|
68
|
+
- Made all-secondary button and input combos share one outer border and a non-overlapping internal divider.
|
|
69
|
+
- Added `full` width support to button and input combo wrappers.
|
|
70
|
+
- Added FigUI3 playground examples for `fig-input-combo` fields and property actions.
|
|
71
|
+
|
|
72
|
+
## [9.2.0]
|
|
73
|
+
|
|
74
|
+
### Added
|
|
75
|
+
|
|
76
|
+
- `fig-stack` layout element with `direction="horizontal|vertical|grid"`, token-aware `gap`, `align`, `justify`, `wrap`, `full`, and grid `columns` / `min-width`.
|
|
77
|
+
- `fig-property-button`, a full-width secondary trigger with an explicit generated icon, selected/disabled states, and popup ARIA forwarding.
|
|
78
|
+
|
|
79
|
+
### Changed
|
|
80
|
+
|
|
81
|
+
- Deprecated `hstack` / `vstack`; they remain as styling aliases of `fig-stack`. Playground and tests now use `fig-stack`.
|
|
82
|
+
- Changed the default `fig-popup` radius from large to medium.
|
|
83
|
+
|
|
84
|
+
## [9.1.6]
|
|
85
|
+
|
|
86
|
+
### Fixed
|
|
87
|
+
|
|
88
|
+
- Restored the brand icon color on out-of-bounds `fig-origin-grid` handles.
|
|
89
|
+
|
|
90
|
+
## [9.1.5]
|
|
91
|
+
|
|
92
|
+
### Changed
|
|
93
|
+
|
|
94
|
+
- Made `fig-angle` sweeps originate from `default`, preserve signed complete turns, and retain the endpoint arrowhead across all angle units.
|
|
95
|
+
- Made `rotations` display the modulo angle with a signed full-turn counter while preserving the authored value during edits.
|
|
96
|
+
|
|
97
|
+
### Fixed
|
|
98
|
+
|
|
99
|
+
- Kept multi-digit `fig-angle` rotation counts such as `×8` visible in the number input append slot.
|
|
100
|
+
|
|
101
|
+
## [9.1.4]
|
|
102
|
+
|
|
103
|
+
### Fixed
|
|
104
|
+
|
|
105
|
+
- Restored the inset outline on color handles with a valid outline value and offset.
|
|
106
|
+
|
|
107
|
+
## [9.1.3]
|
|
108
|
+
|
|
109
|
+
### Changed
|
|
110
|
+
|
|
111
|
+
- Refined menu-item padding, icon spacing, and prepend-slot alignment.
|
|
112
|
+
- Aligned menu separator labels and rules with menu-item content.
|
|
113
|
+
- Updated the icon Menu example to use full-size prepend icons.
|
|
114
|
+
|
|
115
|
+
## [9.1.2]
|
|
116
|
+
|
|
117
|
+
### Added
|
|
118
|
+
|
|
119
|
+
- Added a Menu playground example with icon-leading actions.
|
|
120
|
+
|
|
121
|
+
### Changed
|
|
122
|
+
|
|
123
|
+
- Scoped secondary `fig-header` text styling to direct `span` and `label` children.
|
|
124
|
+
|
|
125
|
+
## [9.1.1]
|
|
126
|
+
|
|
127
|
+
### Changed
|
|
128
|
+
|
|
129
|
+
- Added live value tooltips to Bézier and spring easing handles, labeled Bézier handles as Start and End, and allowed spring duration to reach 100%.
|
|
130
|
+
- Matched easing-curve handle interiors to the secondary background token.
|
|
131
|
+
|
|
132
|
+
### Fixed
|
|
133
|
+
|
|
134
|
+
- Kept the spring bounce handle on the first overshoot peak at full bounce.
|
|
135
|
+
- Kept the fill-picker saturation and brightness handle above the preview edge highlight.
|
|
136
|
+
- Removed padding from empty `fig-content` containers.
|
|
137
|
+
|
|
138
|
+
## [9.1.0]
|
|
139
|
+
|
|
140
|
+
### Added
|
|
141
|
+
|
|
142
|
+
- Added `variant="ghost"` to `fig-input-number` for a borderless control with secondary hover/focus fill.
|
|
143
|
+
- Added a `tabular` presence attribute to `fig-input-number` that applies Inter tabular numerals (`font-variant-numeric: tabular-nums`).
|
|
144
|
+
- Added core `fig-angle`, replacing the experimental Lab `fig-input-angle` with an instrument-style dial, unit conversion, unbounded winding, reset control, keyboard/scrub input, and reusable rotation icon.
|
|
145
|
+
- Added tertiary dot grids to easing preset icons.
|
|
146
|
+
- Added marked custom fill-picker swatches via `data-fig-fill-picker-swatch`, including solid, gradient, image, video, and webcam previews.
|
|
147
|
+
- Added extra-large and full radius tokens.
|
|
148
|
+
|
|
149
|
+
### Changed
|
|
150
|
+
|
|
151
|
+
- Updated semantic UI3 colors, strong heading weight, and elevation contrast.
|
|
152
|
+
- `fig-angle` now always shows a centered ghost number input, uses a default degree step of `1`, and supports `deg`, `°`, `rad`, `turn`, and `grad`.
|
|
153
|
+
|
|
154
|
+
## [9.0.14]
|
|
155
|
+
|
|
156
|
+
### Fixed
|
|
157
|
+
|
|
158
|
+
- Restored `fig-ai-context` tucking under a following `fig-ai-prompt` so the composer stacks as one surface.
|
|
159
|
+
|
|
160
|
+
## [9.0.13]
|
|
161
|
+
|
|
162
|
+
### Fixed
|
|
163
|
+
|
|
164
|
+
- Corrected `fig-select` `menuAnchor` sizing and alignment, including selected-row overlay geometry, small anchors, viewport clamping, live anchor changes, and all explicit `position` values.
|
|
165
|
+
|
|
166
|
+
## [9.0.12]
|
|
167
|
+
|
|
168
|
+
### Added
|
|
169
|
+
|
|
170
|
+
- Added `menu-anchor` / `menuAnchor` on `fig-select` so the open menu can align against another element.
|
|
171
|
+
|
|
172
|
+
### Fixed
|
|
173
|
+
|
|
174
|
+
- Honored `fig-select` `position` for popup placement instead of always overlaying the selected option on the trigger.
|
|
175
|
+
- Kept `fig-select` menus inside the viewport by capping listbox height and clamping after overlay alignment.
|
|
176
|
+
- Prevented `fig-popup` clamping from pushing oversized menus past the viewport start edge.
|
|
177
|
+
|
|
178
|
+
## [9.0.11]
|
|
179
|
+
|
|
180
|
+
### Changed
|
|
181
|
+
|
|
182
|
+
- Applied playground overflow fading to the sidebar’s inner scroll content so its border remains visible.
|
|
183
|
+
|
|
184
|
+
### Fixed
|
|
185
|
+
|
|
186
|
+
- Prevented native image dragging from overriding `fig-chooser` drag-to-scroll behavior.
|
|
187
|
+
|
|
188
|
+
## [9.0.10]
|
|
189
|
+
|
|
190
|
+
### Added
|
|
191
|
+
|
|
192
|
+
- Added an `optionfocus` event to `fig-select` for previewing keyboard-focused options without changing selection, including playground event output and documentation.
|
|
193
|
+
|
|
194
|
+
## [9.0.9]
|
|
195
|
+
|
|
196
|
+
### Changed
|
|
197
|
+
|
|
198
|
+
- Refined the gradient fill picker with a semantic Stops heading, compact header padding, and a ghost gradient-type select.
|
|
199
|
+
- Added a selection-ring gutter to `fig-chooser` while preserving choice alignment and overflow navigation geometry.
|
|
200
|
+
|
|
201
|
+
### Fixed
|
|
202
|
+
|
|
203
|
+
- Prevented pointer-dragged gradient stop handles from displaying keyboard focus outlines.
|
|
204
|
+
- Prevented selected `fig-choice` rings from being clipped by scrollable choosers.
|
|
205
|
+
|
|
206
|
+
## [9.0.8]
|
|
207
|
+
|
|
208
|
+
### Added
|
|
209
|
+
|
|
210
|
+
- Added `size="large"` support to `fig-segmented-control`, including height-matched segment minimum widths, playground controls, documentation, and component coverage.
|
|
211
|
+
- Added dedicated Inputs and Media groups to `/figui3`, with sections and examples sorted alphabetically within each group.
|
|
212
|
+
- Added standalone `fig-fill-picker` mode examples and expanded `fig-input-fill` examples, including a live WebGPU custom shader preview.
|
|
213
|
+
|
|
214
|
+
### Changed
|
|
215
|
+
|
|
216
|
+
- Removed CSS containment declarations from core, lab, and editor component styles.
|
|
217
|
+
- Applied overflow fades to playground navigation and scrollbar-overflow choosers.
|
|
218
|
+
- Updated icon-only segments to remove inline padding and card labels to inherit font size.
|
|
219
|
+
- Limited the fill input playground section to sessions with editor components enabled.
|
|
220
|
+
|
|
221
|
+
### Fixed
|
|
222
|
+
|
|
223
|
+
- Truncated long `fig-select-option` labels with ellipsis when the menu is width-clamped.
|
|
224
|
+
- Fixed equal segmented-control sizing so every segment remains the same width without clipping its padding.
|
|
225
|
+
- Fixed grid chooser spacing around injected overflow navigation buttons.
|
|
226
|
+
- Fixed labeled separators outside menus and selects hiding their rule, and stopped AI context panels from overlapping prompts.
|
|
227
|
+
|
|
228
|
+
## [9.0.7]
|
|
229
|
+
|
|
230
|
+
### Added
|
|
231
|
+
|
|
232
|
+
- Added `size="large"` support to `fig-input-number`, including large prepend spacing, playground controls and examples, documentation, and component coverage.
|
|
233
|
+
|
|
234
|
+
## [9.0.6]
|
|
235
|
+
|
|
236
|
+
### Added
|
|
237
|
+
|
|
238
|
+
- Added `.fig-overflow-fade` and `.fig-overflow-fade-horizontal`, CSS-only scroll utilities with tokenized, eased, direction-aware edge fades gated behind scroll-timeline support, plus vertical and horizontal playground examples.
|
|
239
|
+
|
|
240
|
+
## [9.0.5]
|
|
241
|
+
|
|
242
|
+
### Changed
|
|
243
|
+
|
|
244
|
+
- Refined padded `fig-choice` spacing, corner radius, and selected-state outline treatment.
|
|
245
|
+
- Added padding to every choice in the image chooser playground example.
|
|
246
|
+
|
|
247
|
+
### Fixed
|
|
248
|
+
|
|
249
|
+
- Playground-only action controls now retain their original position and remain available after example markup updates.
|
|
250
|
+
|
|
251
|
+
## [9.0.4]
|
|
252
|
+
|
|
253
|
+
### Added
|
|
254
|
+
|
|
255
|
+
- Added a `fig-select` playground example with a prepended icon.
|
|
256
|
+
|
|
257
|
+
### Changed
|
|
258
|
+
|
|
259
|
+
- Select prepend regions now span the trigger height, maintain a matching minimum width, and center their content at default and large sizes.
|
|
260
|
+
|
|
261
|
+
## [9.0.3]
|
|
262
|
+
|
|
263
|
+
### Added
|
|
264
|
+
|
|
265
|
+
- Added `size="large"` support to `fig-dropdown` and `fig-select`, including reactive sizing, playground examples, documentation, and component coverage.
|
|
266
|
+
|
|
267
|
+
## [9.0.2]
|
|
268
|
+
|
|
269
|
+
### Added
|
|
270
|
+
|
|
271
|
+
- Added structured object and serialized JSON values, initial velocity, and a `spring` property to `fig-easing-curve`.
|
|
272
|
+
- Added independent `presets` and `text` visibility controls to `fig-easing-curve`.
|
|
273
|
+
|
|
274
|
+
### Changed
|
|
275
|
+
|
|
276
|
+
- Spring curves now use a normalized bounce number input linked to their damping ratio.
|
|
277
|
+
- Easing-curve events now include structured spring detail without leaking internal selector events.
|
|
278
|
+
|
|
279
|
+
### Fixed
|
|
280
|
+
|
|
281
|
+
- Fixed easing SVG clipping at non-square aspect ratios while preserving the editor container padding.
|
|
282
|
+
|
|
283
|
+
## [9.0.1]
|
|
284
|
+
|
|
285
|
+
### Added
|
|
286
|
+
|
|
287
|
+
- Added a repository-native Codex publish skill with release verification for GitHub and npm.
|
|
288
|
+
|
|
289
|
+
### Changed
|
|
290
|
+
|
|
291
|
+
- Easing-curve SVG containers now keep overflow clipped during hover, active, and focus states.
|
|
292
|
+
- Removed the stale nested Cursor publish-rule duplicate.
|
|
293
|
+
|
|
294
|
+
## [9.0.0]
|
|
295
|
+
|
|
296
|
+
### Changed
|
|
297
|
+
|
|
298
|
+
- Removed the legacy Lab property-control wrappers and their examples, tests, JSX types, and documentation.
|
|
299
|
+
- Removed the unused standalone editor scaffold.
|
|
300
|
+
|
|
301
|
+
## [8.11.1]
|
|
302
|
+
|
|
303
|
+
### Added
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
### Changed
|
|
307
|
+
|
|
308
|
+
- Deleting an unselected editable-select option no longer emits unchanged `input` and `change` events.
|
|
309
|
+
- Added `optionschange` output to the playground, React guidance, README, bundled skills, and component contracts.
|
|
310
|
+
|
|
311
|
+
## [8.11.0]
|
|
312
|
+
|
|
313
|
+
### Added
|
|
314
|
+
|
|
315
|
+
- Added the medium checkmark icon and `size="large"` support to `fig-input-text`.
|
|
316
|
+
|
|
317
|
+
### Changed
|
|
318
|
+
|
|
319
|
+
- Refined easing-curve sizing, icon mask rendering, and `fig-choice` selection rings.
|
|
320
|
+
- Expanded playground controls, JSX types, documentation, bundled skills, accessibility coverage, and component contracts for the new components.
|
|
321
|
+
|
|
322
|
+
## [8.10.1]
|
|
323
|
+
|
|
324
|
+
### Fixed
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
## [8.10.0]
|
|
328
|
+
|
|
329
|
+
### Added
|
|
330
|
+
|
|
331
|
+
- Added `mode="bezier|spring"` to `fig-easing-curve`, including filtered presets and constrained manual entry.
|
|
332
|
+
- Added `subtle`, `aria-label`, `slot="trigger"`, and `slot="prepend-trigger"` support to `fig-select`.
|
|
333
|
+
- Added body typography tokens, `--radius-medium-large`, `--fig-swatch-border-radius`, and button-control spacing variables.
|
|
334
|
+
|
|
335
|
+
### Changed
|
|
336
|
+
|
|
337
|
+
- Refined `fig-input-palette` borders, `fig-joystick` axis-label layout, and small body typography.
|
|
338
|
+
- Expanded playground examples, attribute controls, JSX types, README documentation, and bundled skills for the new contracts and components.
|
|
339
|
+
|
|
340
|
+
### Fixed
|
|
341
|
+
|
|
342
|
+
- Rich `fig-select` prepend and custom triggers now render, update after selection, preserve accessible names, and align their menus correctly.
|
|
343
|
+
|
|
344
|
+
## [8.9.49]
|
|
345
|
+
|
|
346
|
+
### Added
|
|
347
|
+
|
|
348
|
+
- Added `trash` to `fig-icon` at medium and small sizes, including playground icon and toast controls.
|
|
349
|
+
|
|
350
|
+
### Changed
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
## [8.9.48]
|
|
354
|
+
|
|
355
|
+
### Added
|
|
356
|
+
|
|
357
|
+
- `fig-canvas-control` now supports configurable precision for positions, radius, angle, and internal handle dragging.
|
|
358
|
+
|
|
359
|
+
### Changed
|
|
360
|
+
|
|
361
|
+
- Canvas-control radius rings and point-to-point lines reveal their shared halo and thicker stroke on hover.
|
|
362
|
+
- Added generic `--fig-canvas-control-stroke-halo` and `--fig-canvas-control-stroke-halo-hover` customization properties while preserving the previous radius halo property.
|
|
363
|
+
|
|
364
|
+
### Fixed
|
|
365
|
+
|
|
366
|
+
- Playground examples and attribute controls now reset reliably when navigating between examples.
|
|
367
|
+
|
|
368
|
+
## [8.9.47]
|
|
369
|
+
|
|
370
|
+
### Added
|
|
371
|
+
|
|
372
|
+
- `fig-handle` now supports `precision` for percentage values and pixel dragging, defaulting to two decimal places.
|
|
373
|
+
|
|
374
|
+
### Fixed
|
|
375
|
+
|
|
376
|
+
- Overflow navigation stays pinned to the edges when React appends delayed options, tabs, or choices.
|
|
377
|
+
|
|
378
|
+
## [8.9.46]
|
|
379
|
+
|
|
380
|
+
### Changed
|
|
381
|
+
|
|
382
|
+
- `fig-header` title styles now apply to all heading children, not only the first child.
|
|
383
|
+
|
|
384
|
+
## [8.9.45]
|
|
385
|
+
|
|
386
|
+
### Changed
|
|
387
|
+
|
|
388
|
+
- Split FigUI3, fig-editor, fig-lab, and propkit skills into thinner entry files with separate component catalogs and React usage docs.
|
|
389
|
+
|
|
390
|
+
## [8.9.44]
|
|
391
|
+
|
|
392
|
+
### Changed
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
### Fixed
|
|
396
|
+
|
|
397
|
+
- Group headings retain ellipsis behavior while keeping disclosure chevrons vertically aligned.
|
|
398
|
+
|
|
399
|
+
## [8.9.43]
|
|
400
|
+
|
|
401
|
+
### Changed
|
|
402
|
+
|
|
403
|
+
- Slider handle fading begins at `--spacer-3` and completes at `--spacer-2`.
|
|
404
|
+
- Removed the inset border from avatar images.
|
|
405
|
+
|
|
406
|
+
### Fixed
|
|
407
|
+
|
|
408
|
+
- Header titles now truncate overflowing text with an ellipsis.
|
|
409
|
+
|
|
410
|
+
## [8.9.42]
|
|
411
|
+
|
|
412
|
+
### Changed
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
## [8.9.41]
|
|
416
|
+
|
|
417
|
+
### Changed
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
### Fixed
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
## [8.9.40]
|
|
424
|
+
|
|
425
|
+
### Added
|
|
426
|
+
|
|
427
|
+
- Added logical `start`, `center`, and `end` content alignment for `fig-button`.
|
|
428
|
+
- Added button playground examples for alignment and prepended icons.
|
|
429
|
+
|
|
430
|
+
### Changed
|
|
431
|
+
|
|
432
|
+
- Refined `fig-button` padding when a prepended icon is present, including large buttons.
|
|
433
|
+
|
|
434
|
+
## [8.9.39]
|
|
435
|
+
|
|
436
|
+
### Fixed
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
## [8.9.38]
|
|
440
|
+
|
|
441
|
+
### Fixed
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
## [8.9.37]
|
|
445
|
+
|
|
446
|
+
### Added
|
|
447
|
+
|
|
448
|
+
- Fast `fig-input-wheel` scrubbing now applies a brief motion blur to its ticks.
|
|
449
|
+
|
|
450
|
+
### Changed
|
|
451
|
+
|
|
452
|
+
- Doubled the horizontal inset around `fig-input-wheel` ticks.
|
|
453
|
+
|
|
454
|
+
## [8.9.36]
|
|
455
|
+
|
|
456
|
+
### Changed
|
|
457
|
+
|
|
458
|
+
- The default font stack now prefers Inter when the consuming app makes it available.
|
|
459
|
+
|
|
460
|
+
## [8.9.35]
|
|
461
|
+
|
|
462
|
+
### Added
|
|
463
|
+
|
|
464
|
+
- Added the shared `--font-variant-numeric` token for lining, tabular, slashed-zero numerals.
|
|
465
|
+
|
|
466
|
+
### Fixed
|
|
467
|
+
|
|
468
|
+
- The playground now loads full Inter 3.19.3 so its slashed-zero OpenType glyph renders correctly.
|
|
469
|
+
|
|
470
|
+
## [8.9.34]
|
|
471
|
+
|
|
472
|
+
### Added
|
|
473
|
+
|
|
474
|
+
- Added `fig-input-wheel.spinTo(value)` plus playground controls and a static-wheel example.
|
|
475
|
+
|
|
476
|
+
### Fixed
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
## [8.9.33]
|
|
480
|
+
|
|
481
|
+
### Added
|
|
482
|
+
|
|
483
|
+
- Added the experimental standalone `fig-input-wheel` numeric scrubber with projected ticks, centered handle, bounds, keyboard and pointer controls, and elastic feedback.
|
|
484
|
+
- Added standalone Input Wheel playground examples, attribute controls, JSX support, and component documentation.
|
|
485
|
+
|
|
486
|
+
### Changed
|
|
487
|
+
|
|
488
|
+
|
|
489
|
+
### Fixed
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
## [8.9.32]
|
|
493
|
+
|
|
494
|
+
### Added
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
### Changed
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
## [8.9.31]
|
|
501
|
+
|
|
502
|
+
### Added
|
|
503
|
+
|
|
504
|
+
- `fig-chooser` supports `auto-scroll`, `scroll-behavior`, and `scrollSelectionIntoView()` for independent selection and scrolling control.
|
|
505
|
+
- Playground chooser controls and a manual-scroll example expose the new APIs.
|
|
506
|
+
|
|
507
|
+
### Changed
|
|
508
|
+
|
|
509
|
+
- Chooser selection and overflow scrolling respect CSS scroll behavior and reduced-motion preferences.
|
|
510
|
+
|
|
511
|
+
## [8.9.30]
|
|
512
|
+
|
|
513
|
+
### Added
|
|
514
|
+
|
|
515
|
+
- `fig-slider.defaultValue` exposes the resolved slider baseline.
|
|
516
|
+
|
|
517
|
+
### Fixed
|
|
518
|
+
|
|
519
|
+
- Slider defaults ignore non-numeric, out-of-range, and off-step values and remain synchronized when constraints change.
|
|
520
|
+
- `fig-group` removes its generated fallback header when authored header content is present.
|
|
521
|
+
|
|
522
|
+
### Changed
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
## [8.9.29]
|
|
526
|
+
|
|
527
|
+
### Added
|
|
528
|
+
|
|
529
|
+
- `fig-button type="select"` automatically generates a small appended chevron; authored append-slot content overrides it.
|
|
530
|
+
|
|
531
|
+
### Fixed
|
|
532
|
+
|
|
533
|
+
- `fig-combo-input` now contains its dropdown events and broadcasts `input` and `change` only from the combo host.
|
|
534
|
+
- Playground button type controls no longer inject sample dropdown markup when switching to `type="select"`.
|
|
535
|
+
|
|
536
|
+
### Changed
|
|
537
|
+
|
|
538
|
+
- Refined select-button spacing for labeled and icon-only layouts.
|
|
539
|
+
|
|
540
|
+
## [8.9.28]
|
|
541
|
+
|
|
542
|
+
### Fixed
|
|
543
|
+
|
|
544
|
+
- Limit `fig-header` flexible title styling to a heading in the first-child position.
|
|
545
|
+
|
|
546
|
+
## [8.9.27]
|
|
547
|
+
|
|
548
|
+
### Changed
|
|
549
|
+
|
|
550
|
+
- Refined `fig-header` padding and title/action alignment.
|
|
551
|
+
- Added long-title, default dropdown, and ghost dropdown header examples.
|
|
552
|
+
|
|
553
|
+
## [8.9.26]
|
|
554
|
+
|
|
555
|
+
### Fixed
|
|
556
|
+
|
|
557
|
+
- Replacing a video fill clears the previous poster and applies the newly captured poster to both the swatch and dialog preview. Posters from `default-video` or an earlier URL cannot remain after the video URL changes.
|
|
558
|
+
|
|
559
|
+
## [8.9.25]
|
|
560
|
+
|
|
561
|
+
### Fixed
|
|
562
|
+
|
|
563
|
+
- Opening `fig-fill-picker` no longer emits `input` when nothing changed. Default-video apply, same-URL preview `loaded`, and the live webcam still are derived UI.
|
|
564
|
+
- `fig-media` / `fig-image` / `fig-video` fire `loaded` when the src actually loads, not only after a file upload. The fill picker and `fig-input-fill` forward it so playground Event output can show it.
|
|
565
|
+
|
|
566
|
+
### Changed
|
|
567
|
+
|
|
568
|
+
- Playground theme switch uses `hstack` and tighter header padding.
|
|
569
|
+
|
|
570
|
+
## [8.9.24]
|
|
571
|
+
|
|
572
|
+
### Changed
|
|
573
|
+
|
|
574
|
+
- Split license: core stays MIT; editor and lab (`fig-editor.js`, `fig-lab.js`, their CSS, dist copies, and those skills) are PolyForm Shield 1.0.0. `package.json` is `SEE LICENSE IN LICENSE`. Copies already shipped under MIT stay MIT.
|
|
575
|
+
|
|
576
|
+
## [8.9.23]
|
|
577
|
+
|
|
578
|
+
### Fixed
|
|
579
|
+
|
|
580
|
+
- Automatic video poster capture paints the swatch without emitting `input`. The still is derived UI, not a fill change.
|
|
581
|
+
|
|
582
|
+
## [8.9.22]
|
|
583
|
+
|
|
584
|
+
### Added
|
|
585
|
+
|
|
586
|
+
- Fill `value` may be a bare video URL (`.mp4`, `.webm`, `.mov`, `.m4v`, `.ogv`, or `data:video/…`). JSON still works.
|
|
587
|
+
|
|
588
|
+
### Changed
|
|
589
|
+
|
|
590
|
+
- Fill picker video preview stays paused after upload. First frame shows; play is opt-in.
|
|
591
|
+
- Lab Fill and Fill Input Video examples use a video URL instead of JSON.
|
|
592
|
+
|
|
593
|
+
### Fixed
|
|
594
|
+
|
|
595
|
+
- Video fills without a poster paint a `createImageBitmap` still on the closed swatch. Capture runs on the picker when the URL is set, not only when the dialog opens.
|
|
596
|
+
|
|
597
|
+
## [8.9.21]
|
|
598
|
+
|
|
599
|
+
### Changed
|
|
600
|
+
|
|
601
|
+
- `fig-swatch` uses the same focus-inside split as `fig-input-gradient` (`:focus-within:not(:focus)`). Nested color inputs no longer draw their own ring.
|
|
602
|
+
|
|
603
|
+
### Fixed
|
|
604
|
+
|
|
605
|
+
|
|
606
|
+
## [8.9.20]
|
|
607
|
+
|
|
608
|
+
### Added
|
|
609
|
+
|
|
610
|
+
|
|
611
|
+
### Changed
|
|
612
|
+
|
|
613
|
+
|
|
614
|
+
### Fixed
|
|
615
|
+
|
|
616
|
+
- Choosing Webcam on `fig-input-fill` paints the closed swatch from the first real camera frame instead of checkerboard or a black boot still.
|
|
617
|
+
- Built-in cameras that start black (FaceTime) keep retrying and prefer `ImageCapture` until the frame has actual pixels. Host writes of `snapshot: null` no longer wipe a live still.
|
|
618
|
+
|
|
619
|
+
## [8.9.19]
|
|
620
|
+
|
|
621
|
+
### Added
|
|
622
|
+
|
|
623
|
+
- `fig-input-fill` forwards custom `mode-*` slots to the inner picker and uses image-style chrome (type label + opacity) for non-built-in types.
|
|
624
|
+
- Fill picker playground **Custom** example: `slot="mode-shader"` tab with preview + source.
|
|
625
|
+
|
|
626
|
+
### Changed
|
|
627
|
+
|
|
628
|
+
- Empty `fig-swatch background=""` shows the checkerboard instead of gray `#D9D9D9`.
|
|
629
|
+
- Webcam and custom fill swatches default to checkerboard unless a background is supplied.
|
|
630
|
+
- Fill picker `fig-preview { overflow: visible }` is limited to solid and gradient tabs.
|
|
631
|
+
- Popup `fig-header` no longer paints an opaque background over the panel.
|
|
632
|
+
- Removed unused `old.html`.
|
|
633
|
+
|
|
634
|
+
### Fixed
|
|
635
|
+
|
|
636
|
+
- Custom mode `swatch-background` is read from the live slot before the picker dialog is created.
|
|
637
|
+
- Webcam camera select can switch when the live stream's `deviceId` is unknown.
|
|
638
|
+
|
|
639
|
+
## [8.9.18]
|
|
640
|
+
|
|
641
|
+
### Changed
|
|
642
|
+
|
|
643
|
+
- `fig-fill-picker` hides the gradient interpolation row and locks interpolation to `srgb`.
|
|
644
|
+
- `fig-fill-picker` dialog `fig-content` top padding is `--spacer-2`.
|
|
645
|
+
- `fig-fill-picker` type select is `variant="ghost"`.
|
|
646
|
+
- `fig-media-controls` play button no longer uses `size="small"`.
|
|
647
|
+
- `fig-icon` uses `contain: size` instead of `contain: strict`.
|
|
648
|
+
|
|
649
|
+
### Fixed
|
|
650
|
+
|
|
651
|
+
- Video fills pass `poster` to `fig-swatch` `background` the same way image fills pass `url`.
|
|
652
|
+
- Fill picker video preview gets the poster while the clip loads. Playground video fills use a live MDN clip (Google sample bucket is 403).
|
|
653
|
+
- `fig-media-controls` play button stays visible without hover (`fig-tooltip` is a real flex item; `.has-media` only hides the replace overlay).
|
|
654
|
+
|
|
655
|
+
## [8.9.17]
|
|
656
|
+
|
|
657
|
+
### Added
|
|
658
|
+
|
|
659
|
+
- `fig-fill-picker` / `fig-input-fill` webcam JSON is now `{ type: "webcam", webcam: { live, snapshot, deviceId, scaleMode, scale, opacity } }`.
|
|
660
|
+
- `webcamStream`, `releaseWebcam()`, and `webcamstream` for the live `MediaStream` (not stored in `value`).
|
|
661
|
+
- `webcam-mode="live|snapshot"`. Choosing Webcam starts the live camera. Capture writes a still and switches to Image.
|
|
662
|
+
- `default-video` plus `video.poster`. Swatches paint the poster, never `url(file.mp4)`.
|
|
663
|
+
|
|
664
|
+
### Changed
|
|
665
|
+
|
|
666
|
+
- Closing the picker no longer stops a live webcam. The stream stops when leaving Webcam, calling `releaseWebcam()`, or disconnecting the element.
|
|
667
|
+
- `fig-input-fill` gradient values include `css`. Solid `alpha` (0–1) stays canonical beside `opacity` (0–100).
|
|
668
|
+
|
|
669
|
+
### Fixed
|
|
670
|
+
|
|
671
|
+
- Restoring `{ webcam }` or the legacy `{ type: "webcam", image: { url } }` snapshot no longer drops the still.
|
|
672
|
+
- `fig-input-fill` copies `detail.webcam` and has a video swatch case.
|
|
673
|
+
- Webcam/video blob URLs stay valid and are quoted onto the inner `fig-swatch` (`url("blob:…")`), including after `fig-input-fill` remounts.
|
|
674
|
+
- Choosing Webcam paints the swatch as soon as the live camera has a frame.
|
|
675
|
+
|
|
676
|
+
## [8.9.16]
|
|
677
|
+
|
|
678
|
+
### Added
|
|
679
|
+
|
|
680
|
+
- `fig-chooser value=""` keeps no choice selected. Omitting `value` still selects the first choice.
|
|
681
|
+
|
|
682
|
+
### Fixed
|
|
683
|
+
|
|
684
|
+
- `fig-choice` selected outline radius includes the ring offset so corners stay concentric.
|
|
685
|
+
|
|
686
|
+
## [8.9.15]
|
|
687
|
+
|
|
688
|
+
### Changed
|
|
689
|
+
|
|
690
|
+
|
|
691
|
+
### Fixed
|
|
692
|
+
|
|
693
|
+
- `fig-field` no longer shows a disclosure chevron when the control is a `fig-fill-picker`.
|
|
694
|
+
- `fig-swatch.focus()` still works when the native color input is gone.
|
|
695
|
+
|
|
696
|
+
## [8.9.14]
|
|
697
|
+
|
|
698
|
+
### Fixed
|
|
699
|
+
|
|
700
|
+
- Vertical `fig-separator`s stay 1px wide instead of picking up labeled-row padding.
|
|
701
|
+
|
|
702
|
+
## [8.9.13]
|
|
703
|
+
|
|
704
|
+
### Fixed
|
|
705
|
+
|
|
706
|
+
- Sticky labeled `fig-separator`s stack above scrolling list items.
|
|
707
|
+
|
|
708
|
+
## [8.9.12]
|
|
709
|
+
|
|
710
|
+
### Added
|
|
711
|
+
|
|
712
|
+
- `fig-popup` `title` auto-generates a header, matching `fig-dialog`.
|
|
713
|
+
- `fig-menu-item` works as a list row outside `fig-menu` — typically in a `fig-popup` with sticky `fig-separator`s and a nested `fig-menu` for row actions.
|
|
714
|
+
|
|
715
|
+
### Changed
|
|
716
|
+
|
|
717
|
+
- `fig-menu` now slots `fig-menu-item` / `fig-separator` into the popup instead of relocating them, matching `fig-select`. Triggers get `slot="trigger"` automatically. React can add or remove items without `removeChild` errors.
|
|
718
|
+
|
|
719
|
+
### Fixed
|
|
720
|
+
|
|
721
|
+
- `fig-menu-item` color inherits from the parent surface instead of always painting menu-white.
|
|
722
|
+
- Nested `fig-menu` inside a `fig-menu-item` only selects its own items and does not fire the parent row.
|
|
723
|
+
- Sticky labeled `fig-separator`s hide the rule (`::before`) while stuck.
|
|
724
|
+
|
|
725
|
+
## [8.9.11]
|
|
726
|
+
|
|
727
|
+
### Added
|
|
728
|
+
|
|
729
|
+
- `variant="ghost"` on `fig-dropdown` and `fig-select` for a borderless control with secondary hover fill.
|
|
730
|
+
- Shipped Cursor skills for the core, editor, and lab bundles (`figui3`, `fig-editor`, `fig-lab`), plus an updated PropKit skill.
|
|
731
|
+
|
|
732
|
+
### Changed
|
|
733
|
+
|
|
734
|
+
- Documented `fig-select` in the README and clarified that `fig-layer` is a separate import, not part of `fig-editor.js`.
|
|
735
|
+
|
|
736
|
+
## [8.9.10]
|
|
737
|
+
|
|
738
|
+
### Added
|
|
739
|
+
|
|
740
|
+
- Select playground Sticky toggle applies `sticky` to each `fig-separator` and persists as `_sticky` in the URL.
|
|
741
|
+
- Expanded the AI models select example with a long grouped model list.
|
|
742
|
+
|
|
743
|
+
### Changed
|
|
744
|
+
|
|
745
|
+
- Removed the Popup "With menu" playground example.
|
|
746
|
+
|
|
747
|
+
### Fixed
|
|
748
|
+
|
|
749
|
+
- Sticky labeled `fig-separator`s in overflowed `fig-select-options` and `.fig-menu-options` sit below the overflow-start button.
|
|
750
|
+
|
|
751
|
+
## [8.9.9]
|
|
752
|
+
|
|
753
|
+
### Added
|
|
754
|
+
|
|
755
|
+
- Added a Popup playground example with a nested `fig-menu`.
|
|
756
|
+
|
|
757
|
+
### Fixed
|
|
758
|
+
|
|
759
|
+
- `fig-menu` now opens on the top layer via `popover`, so nested menus inside `fig-popup` stay anchored to their trigger instead of offsetting by the parent popup.
|
|
760
|
+
|
|
761
|
+
## [8.9.7]
|
|
762
|
+
|
|
763
|
+
### Added
|
|
764
|
+
|
|
765
|
+
- Added subtle menu items with a secondary hover/focus treatment and playground example.
|
|
766
|
+
|
|
767
|
+
## [8.9.6]
|
|
768
|
+
|
|
769
|
+
### Added
|
|
770
|
+
|
|
771
|
+
|
|
772
|
+
## [8.9.5]
|
|
773
|
+
|
|
774
|
+
### Added
|
|
775
|
+
|
|
776
|
+
- Added a theme-aware `--fig-popover-shadow` drop-shadow token for popovers, tooltips, and color tips.
|
|
777
|
+
|
|
778
|
+
### Changed
|
|
779
|
+
|
|
780
|
+
- Popup dialogs now use the menu-panel elevation by default.
|
|
781
|
+
- The popup playground defaults to the inherited theme and removes the `theme` attribute when Default is selected.
|
|
782
|
+
|
|
783
|
+
## [8.9.4]
|
|
784
|
+
|
|
785
|
+
### Added
|
|
786
|
+
|
|
787
|
+
- Added the minimal `fig-handle` type and playground example.
|
|
788
|
+
|
|
789
|
+
### Changed
|
|
790
|
+
|
|
791
|
+
- `fig-easing-curve` uses minimal handles, edge-aligned curve geometry, 45px preview padding, and horizontal boundary snapping while Shift-dragging.
|
|
792
|
+
- Refined handle shadows, outlines, padding, and easing control-arm colors.
|
|
793
|
+
|
|
794
|
+
### Fixed
|
|
795
|
+
|
|
796
|
+
- Handle inner backgrounds now respect the active light or dark color scheme.
|
|
797
|
+
|
|
798
|
+
## [8.9.3]
|
|
799
|
+
|
|
800
|
+
### Added
|
|
801
|
+
|
|
802
|
+
- Added non-removable image attachments to the user message in the Chat Message conversation example.
|
|
803
|
+
|
|
804
|
+
### Changed
|
|
805
|
+
|
|
806
|
+
- Chat messages use column layout and consistent internal spacing for composed content.
|
|
807
|
+
- Removed the standalone Interpolation Swatch playground example.
|
|
808
|
+
|
|
809
|
+
## [8.9.2]
|
|
810
|
+
|
|
811
|
+
### Added
|
|
812
|
+
|
|
813
|
+
- Added a verbose `fig-select` playground example with rich version-history options.
|
|
814
|
+
|
|
815
|
+
### Changed
|
|
816
|
+
|
|
817
|
+
- Added consistent spacing below headings in select and menu options.
|
|
818
|
+
|
|
819
|
+
## [8.9.1]
|
|
820
|
+
|
|
821
|
+
### Fixed
|
|
822
|
+
|
|
823
|
+
- `fig-select-options` now preserves top spacing when its overflow controls are adjacent in the DOM.
|
|
824
|
+
|
|
825
|
+
## [8.9.0]
|
|
826
|
+
|
|
827
|
+
### Added
|
|
828
|
+
|
|
829
|
+
- Added `copy` to `fig-icon` at medium and small sizes, including playground icon and toast controls.
|
|
830
|
+
|
|
831
|
+
## [8.8.1]
|
|
832
|
+
|
|
833
|
+
### Fixed
|
|
834
|
+
|
|
835
|
+
- `fig-icon` with a slotted `<svg>` no longer paints a solid `color` background block behind the SVG, and now applies the `color` attribute to the SVG via `currentColor`.
|
|
836
|
+
|
|
837
|
+
## [8.8.0]
|
|
838
|
+
|
|
839
|
+
### Added
|
|
840
|
+
|
|
841
|
+
- `fig-icon` `color` aliases map semantic names (`primary`, `brand`, `component`, `danger`, `success`, `warning`, `selected`, `onbrand`, …) to `--figma-color-icon*` tokens.
|
|
842
|
+
- Playground icon color controls use those aliases instead of raw CSS variables.
|
|
843
|
+
|
|
844
|
+
### Changed
|
|
845
|
+
|
|
846
|
+
- Renamed the Icon Medium playground example to Default.
|
|
847
|
+
|
|
848
|
+
## [8.7.0]
|
|
849
|
+
|
|
850
|
+
### Added
|
|
851
|
+
|
|
852
|
+
- Added a Processing toast playground example composing a leading `fig-spinner`.
|
|
853
|
+
|
|
854
|
+
### Changed
|
|
855
|
+
|
|
856
|
+
- Toasts pull a leading `fig-spinner` flush to the inline edge like a leading icon.
|
|
857
|
+
|
|
858
|
+
## [8.6.1]
|
|
859
|
+
|
|
860
|
+
### Fixed
|
|
861
|
+
|
|
862
|
+
- Dark-theme toasts no longer force the menu background color.
|
|
863
|
+
|
|
864
|
+
## [8.6.0]
|
|
865
|
+
|
|
866
|
+
### Added
|
|
867
|
+
|
|
868
|
+
- `fig-toast` supports optional `icon` (full-size `fig-icon` name) and `dismiss` (ghost close button).
|
|
869
|
+
- `dismiss="true"` inserts a vertical `fig-separator` before the close control.
|
|
870
|
+
- `fig-separator` supports `direction="vertical"`.
|
|
871
|
+
- Added toast playground examples for actions and error states with Retry.
|
|
872
|
+
|
|
873
|
+
### Fixed
|
|
874
|
+
|
|
875
|
+
- Open toasts keep a horizontal flex row instead of inheriting the generic dialog column layout.
|
|
876
|
+
|
|
877
|
+
### Changed
|
|
878
|
+
|
|
879
|
+
- Toast attribute controls gate the icon name picker behind an Icon switch.
|
|
880
|
+
|
|
881
|
+
## [8.5.0]
|
|
882
|
+
|
|
883
|
+
### Added
|
|
884
|
+
|
|
885
|
+
- Added experimental `fig-ai-context`, a reusable open container for attachments and status rows that can sit above `fig-ai-prompt`.
|
|
886
|
+
- Added AI composer playground examples for attachments, status, and action-needed context.
|
|
887
|
+
|
|
888
|
+
### Changed
|
|
889
|
+
|
|
890
|
+
- Renamed the AI Prompt lab section to AI composer and split attachment vs sending examples.
|
|
891
|
+
|
|
892
|
+
## [8.4.1]
|
|
893
|
+
|
|
894
|
+
### Fixed
|
|
895
|
+
|
|
896
|
+
- `fig-input-fill` swatches preserve linear, radial, and angular gradient types while keeping radial previews centered.
|
|
897
|
+
|
|
898
|
+
## [8.4.0]
|
|
899
|
+
|
|
900
|
+
### Added
|
|
901
|
+
|
|
902
|
+
- Added segmented gradient interpolation presets with tooltips and an overflow menu for advanced hue directions.
|
|
903
|
+
- Added regression coverage that prevents HTML parsing sinks in shipped JavaScript.
|
|
904
|
+
|
|
905
|
+
### Changed
|
|
906
|
+
|
|
907
|
+
- Simplified gradient editing by removing angle and radial center fields, keeping rotation available for radial gradients, and moving interpolation controls before stops.
|
|
908
|
+
- Moved `fig-interpolation-swatch` from core into the editor bundle (`fig-editor.js` / `fig-editor.css`).
|
|
909
|
+
- Rebuilt dynamic component markup with DOM APIs so authored values remain literal text and attributes.
|
|
910
|
+
- Updated dropdown examples with labeled option groups.
|
|
911
|
+
|
|
912
|
+
### Fixed
|
|
913
|
+
|
|
914
|
+
- Fixed fixed-size media collapsing when combined with `full` and `aspect-ratio`.
|
|
915
|
+
- Fixed custom media overlay controls flickering when hovered.
|
|
916
|
+
- Fixed uploaded videos remaining hidden or disabled after selection.
|
|
917
|
+
- Fixed locked webcam pickers failing to report captured snapshots.
|
|
918
|
+
- Fixed disabled slider styling and related component layout regressions.
|
|
919
|
+
|
|
920
|
+
## [8.3.0]
|
|
921
|
+
|
|
922
|
+
### Added
|
|
923
|
+
|
|
924
|
+
- Restored `fig-menu-separator` as a backwards-compatible `FigSeparator` alias.
|
|
925
|
+
|
|
926
|
+
### Changed
|
|
927
|
+
|
|
928
|
+
- The no-fields dialog example shows the footer divider again.
|
|
929
|
+
- Empty `fig-content` collapses padding even when it has no element children.
|
|
930
|
+
|
|
931
|
+
### Fixed
|
|
932
|
+
|
|
933
|
+
- Gradient handle-mode stops stay selected and focused, so Delete/Backspace reliably removes them.
|
|
934
|
+
|
|
935
|
+
## [8.2.1]
|
|
936
|
+
|
|
937
|
+
### Fixed
|
|
938
|
+
|
|
939
|
+
- Non-range `fig-slider` types (`delta`, `hue`, `stepper`, `opacity`) now pass their resolved value through to the number input instead of showing the placeholder.
|
|
940
|
+
|
|
941
|
+
## [8.2.0]
|
|
942
|
+
|
|
943
|
+
### Added
|
|
944
|
+
|
|
945
|
+
|
|
946
|
+
### Changed
|
|
947
|
+
|
|
948
|
+
- Generated image loading indicators use the small spinner size.
|
|
949
|
+
|
|
950
|
+
### Fixed
|
|
951
|
+
|
|
952
|
+
- Disabled oscillators stop and resume their playhead animation correctly.
|
|
953
|
+
- Attachments keep a stable square size while loading, and loading spinners are no longer constrained by overlay sizing.
|
|
954
|
+
|
|
955
|
+
## [8.1.0]
|
|
956
|
+
|
|
957
|
+
### Added
|
|
958
|
+
|
|
959
|
+
- Added numeric spatial control event details with explicit `units`.
|
|
960
|
+
|
|
961
|
+
### Changed
|
|
962
|
+
|
|
963
|
+
- Lab CSS loads only on lab-enabled playground routes instead of through `fig-editor.css`.
|
|
964
|
+
|
|
965
|
+
## [8.0.3]
|
|
966
|
+
|
|
967
|
+
### Changed
|
|
968
|
+
|
|
969
|
+
- `fig-input-gradient` swatches always preview as a left-to-right linear gradient, regardless of type or angle.
|
|
970
|
+
|
|
971
|
+
## [8.0.2]
|
|
972
|
+
|
|
973
|
+
### Fixed
|
|
974
|
+
|
|
975
|
+
|
|
976
|
+
## [8.0.1]
|
|
977
|
+
|
|
978
|
+
### Fixed
|
|
979
|
+
|
|
980
|
+
|
|
981
|
+
## [8.0.0]
|
|
982
|
+
|
|
983
|
+
### Changed
|
|
984
|
+
|
|
985
|
+
- Moved `fig-select`, `fig-select-option`, and `fig-select-options` from core into the editor bundle (`fig-editor.js` / `fig-editor.css`).
|
|
986
|
+
- Select playground docs now live under Editor components.
|
|
987
|
+
|
|
988
|
+
### Breaking
|
|
989
|
+
|
|
990
|
+
- Import `fig-editor.js` (and `fig-editor.css`) to use `fig-select`. Core `fig.js` alone no longer registers it.
|
|
991
|
+
|
|
992
|
+
## [7.1.0]
|
|
993
|
+
|
|
994
|
+
### Added
|
|
995
|
+
|
|
996
|
+
- Added a populated multiline text input example for `fig-field`.
|
|
997
|
+
|
|
998
|
+
### Changed
|
|
999
|
+
|
|
1000
|
+
- Reduced vertical padding for `fig-tabs` and the maximum field-label height.
|
|
1001
|
+
- Dialogs can now grow to the viewport height while retaining outer spacing.
|
|
1002
|
+
|
|
1003
|
+
## [7.0.0]
|
|
1004
|
+
|
|
1005
|
+
### Added
|
|
1006
|
+
|
|
1007
|
+
- Added `fig-chit` as a backwards-compatible alias for `fig-swatch`, including fill-picker support.
|
|
1008
|
+
|
|
1009
|
+
### Changed
|
|
1010
|
+
|
|
1011
|
+
- `fig-card` now renders generated media and footers as direct children without a `.fig-card-link` wrapper.
|
|
1012
|
+
|
|
1013
|
+
### Fixed
|
|
1014
|
+
|
|
1015
|
+
- Long `fig-card` sublabels now truncate with an ellipsis.
|
|
1016
|
+
- Loading spinners stay centered in `fig-card` images and authored previews.
|
|
1017
|
+
|
|
1018
|
+
### Removed
|
|
1019
|
+
|
|
1020
|
+
- Removed the `href` and `target` attributes and built-in link behavior from `fig-card`.
|
|
1021
|
+
|
|
1022
|
+
## [6.40.1]
|
|
1023
|
+
|
|
1024
|
+
### Fixed
|
|
1025
|
+
|
|
1026
|
+
- Empty `fig-content` elements no longer reserve padding.
|
|
1027
|
+
- Full-width `fig-chooser` elements now account for their inline margins.
|
|
1028
|
+
|
|
1029
|
+
### Changed
|
|
1030
|
+
|
|
1031
|
+
- Updated dialog and helper-text examples to demonstrate `fig-content` padding behavior.
|
|
1032
|
+
|
|
1033
|
+
## [6.40.0]
|
|
1034
|
+
|
|
1035
|
+
### Changed
|
|
1036
|
+
|
|
1037
|
+
|
|
1038
|
+
## [6.39.0]
|
|
1039
|
+
|
|
1040
|
+
### Changed
|
|
1041
|
+
|
|
1042
|
+
|
|
1043
|
+
## [6.38.0]
|
|
1044
|
+
|
|
1045
|
+
### Changed
|
|
1046
|
+
|
|
1047
|
+
|
|
1048
|
+
### Fixed
|
|
1049
|
+
|
|
1050
|
+
- Late-set delta slider values now sync to the nested `fig-input-number`.
|
|
1051
|
+
|
|
1052
|
+
## [6.37.1]
|
|
1053
|
+
|
|
1054
|
+
### Fixed
|
|
1055
|
+
|
|
1056
|
+
- Hovering options in an open `fig-select` no longer reopens a wrapping `fig-tooltip`.
|
|
1057
|
+
|
|
1058
|
+
## [6.37.0]
|
|
1059
|
+
|
|
1060
|
+
### Added
|
|
1061
|
+
|
|
1062
|
+
- Added the `borderless` attribute for `fig-separator`.
|
|
1063
|
+
|
|
1064
|
+
### Changed
|
|
1065
|
+
|
|
1066
|
+
- `fig-select-options` now marks a leading separator as borderless.
|
|
1067
|
+
- Replaced the grouped select playground example with grouped AI models.
|
|
1068
|
+
|
|
1069
|
+
## [6.36.0]
|
|
1070
|
+
|
|
1071
|
+
### Added
|
|
1072
|
+
|
|
1073
|
+
- Added the `destructiveLink` variant for `fig-button`.
|
|
1074
|
+
|
|
1075
|
+
### Changed
|
|
1076
|
+
|
|
1077
|
+
- Attribute controls in the playground now use `fig-select` instead of `fig-dropdown`.
|
|
1078
|
+
- Icon button examples now use `fig-icon` with the `visible` icon.
|
|
1079
|
+
|
|
1080
|
+
### Fixed
|
|
1081
|
+
|
|
1082
|
+
- Button type, variant, and icon content now rehydrates correctly from playground URL state.
|
|
1083
|
+
|
|
1084
|
+
## [6.35.0]
|
|
1085
|
+
|
|
1086
|
+
### Added
|
|
1087
|
+
|
|
1088
|
+
- Added the `destructiveGhost` variant for `fig-button`.
|
|
1089
|
+
|
|
1090
|
+
## [6.34.0]
|
|
1091
|
+
|
|
1092
|
+
### Added
|
|
1093
|
+
|
|
1094
|
+
- Added `destructive` and `destructiveSecondary` variants for `fig-button`.
|
|
1095
|
+
|
|
1096
|
+
### Changed
|
|
1097
|
+
|
|
1098
|
+
- Button variant controls in the FigUI3 playground now update the example label and correctly represent the default primary variant.
|
|
1099
|
+
|
|
1100
|
+
## [6.33.1]
|
|
1101
|
+
|
|
1102
|
+
### Fixed
|
|
1103
|
+
|
|
1104
|
+
- Checkbox and switch inputs no longer shrink in flex layouts, and `fig-checkbox` and `fig-switch` align multiline content from the top.
|
|
1105
|
+
|
|
1106
|
+
## [6.33.0]
|
|
1107
|
+
|
|
1108
|
+
### Added
|
|
1109
|
+
|
|
1110
|
+
- `fig-image`, `fig-media`, and `fig-video` now re-emit native image and video load lifecycle events from their host elements.
|
|
1111
|
+
- `fig-image` and image-mode `fig-media` now show a delayed default spinner while generated images load, with `loading-indicator="false"` as an opt-out.
|
|
1112
|
+
- Added a loading-state example for `fig-image`.
|
|
1113
|
+
|
|
1114
|
+
### Fixed
|
|
1115
|
+
|
|
1116
|
+
- Loaded `fig-media` videos now keep upload overlay buttons hidden until hover or keyboard focus.
|
|
1117
|
+
|
|
1118
|
+
## [6.32.2]
|
|
1119
|
+
|
|
1120
|
+
### Changed
|
|
1121
|
+
|
|
1122
|
+
- `fig-preview` now defaults to a `4/3` aspect ratio, and its playground control uses the shared aspect-ratio dropdown.
|
|
1123
|
+
- `fig-avatar` no longer shrinks inside flex layouts.
|
|
1124
|
+
- Adjusted the secondary icon token to 50% black in light mode and 70% white in dark mode.
|
|
1125
|
+
|
|
1126
|
+
## [6.32.1]
|
|
1127
|
+
|
|
1128
|
+
### Changed
|
|
1129
|
+
|
|
1130
|
+
- Updated the 24px globe icon token and encoded it as an SVG data URI.
|
|
1131
|
+
|
|
1132
|
+
## [6.32.0]
|
|
1133
|
+
|
|
1134
|
+
### Added
|
|
1135
|
+
|
|
1136
|
+
- Added an `aspect-ratio` attribute to `fig-preview`.
|
|
1137
|
+
|
|
1138
|
+
### Changed
|
|
1139
|
+
|
|
1140
|
+
- Updated the Card playground descriptions and manual example to document authored media and footer composition.
|
|
1141
|
+
|
|
1142
|
+
## [6.31.2]
|
|
1143
|
+
|
|
1144
|
+
### Changed
|
|
1145
|
+
|
|
1146
|
+
- `fig-card` now renders attribute-driven labels in a compact `fig-footer` and preserves authored footers without generating labels when no label attributes are present.
|
|
1147
|
+
|
|
1148
|
+
## [6.31.1]
|
|
1149
|
+
|
|
1150
|
+
### Fixed
|
|
1151
|
+
|
|
1152
|
+
- `fig-card[size="large"]` no longer adds extra horizontal padding on generated labels and sublabels.
|
|
1153
|
+
|
|
1154
|
+
## [6.31.0]
|
|
1155
|
+
|
|
1156
|
+
### Added
|
|
1157
|
+
|
|
1158
|
+
- Added `size="large"` to `fig-card` for `--spacer-2` card padding and `--spacer-1` label spacing.
|
|
1159
|
+
- Added `globe` icon tokens for `fig-icon` (24px and 16px).
|
|
1160
|
+
|
|
1161
|
+
### Changed
|
|
1162
|
+
|
|
1163
|
+
- The playground Icon name dropdown is now sorted alphabetically.
|
|
1164
|
+
|
|
1165
|
+
## [6.30.0]
|
|
1166
|
+
|
|
1167
|
+
### Added
|
|
1168
|
+
|
|
1169
|
+
- Added experimental `fig-attachment` and `fig-attachments` lab components for removable image previews and wrapping AI prompt attachments.
|
|
1170
|
+
|
|
1171
|
+
### Changed
|
|
1172
|
+
|
|
1173
|
+
- The playground event output now reports attachment `remove` events.
|
|
1174
|
+
|
|
1175
|
+
## [6.29.1]
|
|
1176
|
+
|
|
1177
|
+
### Changed
|
|
1178
|
+
|
|
1179
|
+
|
|
1180
|
+
## [6.29.0]
|
|
1181
|
+
|
|
1182
|
+
### Added
|
|
1183
|
+
|
|
1184
|
+
|
|
1185
|
+
### Changed
|
|
1186
|
+
|
|
1187
|
+
- Large gradient inputs now size their swatch to the full control height.
|
|
1188
|
+
|
|
1189
|
+
## [6.28.1]
|
|
1190
|
+
|
|
1191
|
+
### Changed
|
|
1192
|
+
|
|
1193
|
+
- Horizontal `fig-field` labels now center within a capped large-control height while preserving ellipsis truncation.
|
|
1194
|
+
|
|
1195
|
+
### Fixed
|
|
1196
|
+
|
|
1197
|
+
- `fig-input-gradient[edit="picker"]` now opens the gradient fill editor by pointer or keyboard and upgrades when the optional picker registers later.
|
|
1198
|
+
|
|
1199
|
+
## [6.28.0]
|
|
1200
|
+
|
|
1201
|
+
### Added
|
|
1202
|
+
|
|
1203
|
+
- Added `optionhover` support to the playground event output.
|
|
1204
|
+
|
|
1205
|
+
## [6.27.0]
|
|
1206
|
+
|
|
1207
|
+
### Added
|
|
1208
|
+
|
|
1209
|
+
|
|
1210
|
+
### Changed
|
|
1211
|
+
|
|
1212
|
+
- Refined oscillator wave controls with a menu-based add action, zero-centered delta fields, and stronger waveform styling.
|
|
1213
|
+
|
|
1214
|
+
### Fixed
|
|
1215
|
+
|
|
1216
|
+
- Opacity slider number fields remain directly editable above the range surface.
|
|
1217
|
+
|
|
1218
|
+
## [6.26.0]
|
|
1219
|
+
|
|
1220
|
+
### Added
|
|
1221
|
+
|
|
1222
|
+
- Added `--fig-preview-background` for customizing or removing preview surface backgrounds.
|
|
1223
|
+
- Added a manual `fig-card` example composed from an authored `fig-preview` and spinner.
|
|
1224
|
+
|
|
1225
|
+
### Changed
|
|
1226
|
+
|
|
1227
|
+
- Direct color emitters now share additive `{ color, alpha, opacity }` fields while preserving legacy `fig-input-color` payloads.
|
|
1228
|
+
- `fig-card` now preserves authored children without `src`, generates media without a `.fig-card-media` wrapper, and uses semantic label elements.
|
|
1229
|
+
- Media with an explicit `aspect-ratio` now fills the available width automatically.
|
|
1230
|
+
- Refined tab strip inline margins with independent left and right variables.
|
|
1231
|
+
|
|
1232
|
+
### Fixed
|
|
1233
|
+
|
|
1234
|
+
- `fig-canvas-control` now preserves color alpha aliases from its handle events.
|
|
1235
|
+
- Gradient color adapters now accept either fractional `alpha` or percentage `opacity`.
|
|
1236
|
+
|
|
1237
|
+
## [6.25.0]
|
|
1238
|
+
|
|
1239
|
+
### Changed
|
|
1240
|
+
|
|
1241
|
+
- `fig-reorder` now drags from any child surface while preserving nested controls with their own drag behavior.
|
|
1242
|
+
|
|
1243
|
+
## [6.24.5]
|
|
1244
|
+
|
|
1245
|
+
### Fixed
|
|
1246
|
+
|
|
1247
|
+
- Encoded the 24px chevron icon and added size-specific `fig-icon` mappings and playground coverage.
|
|
1248
|
+
|
|
1249
|
+
## [6.24.4]
|
|
1250
|
+
|
|
1251
|
+
### Added
|
|
1252
|
+
|
|
1253
|
+
- Added an AI prompt sending-state example with disabled controls and a spinner.
|
|
1254
|
+
|
|
1255
|
+
### Fixed
|
|
1256
|
+
|
|
1257
|
+
- Disabled text inputs inside `fig-ai-prompt` no longer show an inner border.
|
|
1258
|
+
|
|
1259
|
+
## [6.24.3]
|
|
1260
|
+
|
|
1261
|
+
### Fixed
|
|
1262
|
+
|
|
1263
|
+
- `fig-ai-prompt` textareas now fill the input height without bottom padding.
|
|
1264
|
+
|
|
1265
|
+
## [6.24.2]
|
|
1266
|
+
|
|
1267
|
+
### Added
|
|
1268
|
+
|
|
1269
|
+
- Added 16px and 24px `send` icons to `fig-icon`, its playground catalogs, and documentation.
|
|
1270
|
+
|
|
1271
|
+
### Changed
|
|
1272
|
+
|
|
1273
|
+
- Refined `fig-ai-prompt` spacing, input-only focus treatment, and footer layout with model selection and send actions.
|
|
1274
|
+
|
|
1275
|
+
## [6.24.1]
|
|
1276
|
+
|
|
1277
|
+
### Fixed
|
|
1278
|
+
|
|
1279
|
+
- `fig-ai-prompt` now lays out its textarea without absolute positioning and keeps it above the footer action area.
|
|
1280
|
+
- AI prompt actions now compose through `fig-footer`.
|
|
1281
|
+
|
|
1282
|
+
## [6.24.0]
|
|
1283
|
+
|
|
1284
|
+
### Added
|
|
1285
|
+
|
|
1286
|
+
- Added `fig-separator`, a reusable labeled divider for menus, selects, and general content.
|
|
1287
|
+
- Added experimental `fig-ai-prompt` and `fig-chat-message` styling components with AI playground examples.
|
|
1288
|
+
|
|
1289
|
+
### Changed
|
|
1290
|
+
|
|
1291
|
+
- Replaced `fig-menu-separator` with `fig-separator` throughout the runtime, docs, and examples.
|
|
1292
|
+
- Improved avatar initials and shimmer text defaults for chat compositions.
|
|
1293
|
+
|
|
1294
|
+
## [6.23.4]
|
|
1295
|
+
|
|
1296
|
+
### Fixed
|
|
1297
|
+
|
|
1298
|
+
- `fig-slider` updates bounds and units in place and defers structural regeneration until pointer release.
|
|
1299
|
+
|
|
1300
|
+
## [6.23.3]
|
|
1301
|
+
|
|
1302
|
+
### Fixed
|
|
1303
|
+
|
|
1304
|
+
|
|
1305
|
+
## [6.23.2]
|
|
1306
|
+
|
|
1307
|
+
### Changed
|
|
1308
|
+
|
|
1309
|
+
|
|
1310
|
+
## [6.23.1]
|
|
1311
|
+
|
|
1312
|
+
### Changed
|
|
1313
|
+
|
|
1314
|
+
- Removed unintended standalone package entry points, generated bundles, isolation tests, and quickstart artifacts.
|
|
1315
|
+
|
|
1316
|
+
## [6.23.0]
|
|
1317
|
+
|
|
1318
|
+
### Added
|
|
1319
|
+
|
|
1320
|
+
- Added viewport-bounded top and bottom overflow controls to `fig-menu`, with paging, keyboard scrolling, and reconnect-safe behavior.
|
|
1321
|
+
- Added core playground examples for `fig-select`, icon-triggered menus, and overflowing menus.
|
|
1322
|
+
|
|
1323
|
+
### Changed
|
|
1324
|
+
|
|
1325
|
+
- Shared vertical overflow helpers and menu chrome between `fig-select` and `fig-menu`.
|
|
1326
|
+
- Moved the `fig-select` playground documentation from Lab to FigUI3 core.
|
|
1327
|
+
|
|
1328
|
+
### Fixed
|
|
1329
|
+
|
|
1330
|
+
- Regular menu separator labels now align with menu items while select separators retain checkmark-column alignment.
|
|
1331
|
+
- Header trailing icon menus now use the same edge alignment as direct icon buttons.
|
|
1332
|
+
|
|
1333
|
+
## [6.22.0]
|
|
1334
|
+
|
|
1335
|
+
### Added
|
|
1336
|
+
|
|
1337
|
+
- Promoted `fig-select`, `fig-select-option`, and `fig-select-options` from Lab into the core runtime and styles, with rich selected-option icons and content-sized menus.
|
|
1338
|
+
- Added focused core, editor, Lab, accessibility, layout, and component-contract regression coverage.
|
|
1339
|
+
|
|
1340
|
+
### Changed
|
|
1341
|
+
|
|
1342
|
+
- Refined `fig-easing-curve` with 2px strokes, horizontal bounds, cleaner endpoints, improved layer order, preset selection via `fig-select`, and dynamic scaling for overshooting Bézier handles.
|
|
1343
|
+
- Improved select menu spacing, non-wrapping labels, checkmark geometry, viewport clamping, and selected-option presentation.
|
|
1344
|
+
- Migrated rich oscillator options to `fig-select`.
|
|
1345
|
+
- Removed legacy `experimental` dropdown styling and no-op fill/color picker attribute passthroughs.
|
|
1346
|
+
|
|
1347
|
+
### Fixed
|
|
1348
|
+
|
|
1349
|
+
- Fill, gradient, media, field, and overlay controls now preserve consistent sizing, focus, labels, disabled states, and reconnect behavior across core and optional modules.
|
|
1350
|
+
|
|
1351
|
+
## [6.21.1]
|
|
1352
|
+
|
|
1353
|
+
### Fixed
|
|
1354
|
+
|
|
1355
|
+
- Custom elements now register idempotently, preventing duplicate-registration errors when FigUI modules are re-evaluated together.
|
|
1356
|
+
|
|
1357
|
+
## [6.21.0]
|
|
1358
|
+
|
|
1359
|
+
### Added
|
|
1360
|
+
|
|
1361
|
+
- `fig-interpolation-swatch` for compact linear and polar gradient interpolation previews, with small and large sizes.
|
|
1362
|
+
- HSL gradient interpolation with shorter, longer, increasing, and decreasing hue paths.
|
|
1363
|
+
- Gradient opacity editing in `fig-input-fill`.
|
|
1364
|
+
|
|
1365
|
+
### Changed
|
|
1366
|
+
|
|
1367
|
+
- Gradient interpolation options are grouped in `fig-fill-picker` with live swatch previews and keyboard preview behavior.
|
|
1368
|
+
- Select option panels size to their content up to the viewport and improve edge positioning, keyboard navigation, and disabled-option handling.
|
|
1369
|
+
|
|
1370
|
+
### Fixed
|
|
1371
|
+
|
|
1372
|
+
- Gradient previews and interpolation swatches stay synchronized when stops, colors, positions, or interpolation settings change.
|
|
1373
|
+
- Empty video media disables playback controls until a playable source is available.
|
|
1374
|
+
|
|
1375
|
+
## [6.20.2]
|
|
1376
|
+
|
|
1377
|
+
### Added
|
|
1378
|
+
|
|
1379
|
+
- `FigTooltip.dismissHoverTooltips()` — dismisses open/pending hover tooltips and programmatic `FigTooltip.show()` tips (skips `show`-persisted and `action="click"`).
|
|
1380
|
+
|
|
1381
|
+
### Fixed
|
|
1382
|
+
|
|
1383
|
+
- Hover tooltips no longer stay open when a non-tooltip `fig-popup` (menu, select, etc.) or `fig-dialog` opens.
|
|
1384
|
+
|
|
1385
|
+
## [6.20.1]
|
|
1386
|
+
|
|
1387
|
+
### Changed
|
|
1388
|
+
|
|
1389
|
+
|
|
1390
|
+
### Fixed
|
|
1391
|
+
|
|
1392
|
+
|
|
1393
|
+
## [6.20.0]
|
|
1394
|
+
|
|
1395
|
+
### Added
|
|
1396
|
+
|
|
1397
|
+
- `fig-card` — media card composing `fig-image`, with `label` / `sublabel`, optional real `<a>` via `href`, attribute-only `selected`, `disabled`, `full`, `aspect-ratio`, `fit`, and `label-line-clamp`.
|
|
1398
|
+
- Playground Card examples (default, selected, sublabel, link, aspect ratio, grid) plus README / attribute panel wiring.
|
|
1399
|
+
|
|
1400
|
+
### Fixed
|
|
1401
|
+
|
|
1402
|
+
- Playground AttributesView string fields no longer remount (and steal focus) on each keystroke.
|
|
1403
|
+
|
|
1404
|
+
## [6.19.1]
|
|
1405
|
+
|
|
1406
|
+
### Fixed
|
|
1407
|
+
|
|
1408
|
+
|
|
1409
|
+
## [6.19.0]
|
|
1410
|
+
|
|
1411
|
+
### Added
|
|
1412
|
+
|
|
1413
|
+
- `--icon-24-reset` token; `fig-icon name="reset"` resolves medium/small sizes.
|
|
1414
|
+
|
|
1415
|
+
### Fixed
|
|
1416
|
+
|
|
1417
|
+
|
|
1418
|
+
## [6.18.4]
|
|
1419
|
+
|
|
1420
|
+
### Fixed
|
|
1421
|
+
|
|
1422
|
+
- `fig-canvas-control` rotate cursor only on the outside hit-area ring; handle body keeps the normal point cursor (point-point + angle).
|
|
1423
|
+
- Active rotate drag keeps the rotate cursor (`fig-lab-rotate-active`) instead of switching to move.
|
|
1424
|
+
|
|
1425
|
+
### Changed
|
|
1426
|
+
|
|
1427
|
+
|
|
1428
|
+
## [6.18.3]
|
|
1429
|
+
|
|
1430
|
+
### Fixed
|
|
1431
|
+
|
|
1432
|
+
|
|
1433
|
+
## [6.18.2]
|
|
1434
|
+
|
|
1435
|
+
### Fixed
|
|
1436
|
+
|
|
1437
|
+
|
|
1438
|
+
## [6.18.1]
|
|
1439
|
+
|
|
1440
|
+
### Fixed
|
|
1441
|
+
|
|
1442
|
+
- `fig-select` listbox now stays fully in-viewport when the trigger sits on viewport edges/corners (`::part(listbox) inset` no longer blocks clamped `left`/`top`).
|
|
1443
|
+
- Non-modal `fig-dialog` stacking uses `figGetHighestZIndex` on `show()` / markup `open` so dialogs sit above other FigUI overlays.
|
|
1444
|
+
|
|
1445
|
+
## [6.18.0]
|
|
1446
|
+
|
|
1447
|
+
### Added
|
|
1448
|
+
|
|
1449
|
+
|
|
1450
|
+
### Changed
|
|
1451
|
+
|
|
1452
|
+
|
|
1453
|
+
### Fixed
|
|
1454
|
+
|
|
1455
|
+
- `fig-field` no longer treats popup hosts (`fig-select`, `fig-menu`, etc.) as disclosures, which was injecting a duplicate field chevron.
|
|
1456
|
+
- Disabled `fig-select` trigger label uses tertiary text color.
|
|
1457
|
+
|
|
1458
|
+
## [6.17.0]
|
|
1459
|
+
|
|
1460
|
+
### Added
|
|
1461
|
+
|
|
1462
|
+
- Added `fig-select` with authored `fig-select-options` panel (slot=panel auto), overflow top/bottom buttons, and full-width menu matching.
|
|
1463
|
+
- Added optional `label` on `fig-separator` (rule + secondary group text underneath).
|
|
1464
|
+
- Added lab Select examples: full width, many options, grouped items; Menu labeled-separator example.
|
|
1465
|
+
|
|
1466
|
+
### Changed
|
|
1467
|
+
|
|
1468
|
+
- `fig-popup` outside dismiss uses `composedPath()` so slotted menu/select clicks are not treated as outside.
|
|
1469
|
+
|
|
1470
|
+
### Fixed
|
|
1471
|
+
|
|
1472
|
+
- Select overflow paging no longer gets yanked back by open-time menu repositioning.
|
|
1473
|
+
- Select `[full]` popup width now matches the trigger (part listbox width rules no longer win over inline sizing).
|
|
1474
|
+
|
|
1475
|
+
## [6.16.0]
|
|
1476
|
+
|
|
1477
|
+
### Added
|
|
1478
|
+
|
|
1479
|
+
|
|
1480
|
+
### Changed
|
|
1481
|
+
|
|
1482
|
+
|
|
1483
|
+
## [6.15.0]
|
|
1484
|
+
|
|
1485
|
+
### Added
|
|
1486
|
+
|
|
1487
|
+
|
|
1488
|
+
### Changed
|
|
1489
|
+
|
|
1490
|
+
|
|
1491
|
+
## [6.14.1]
|
|
1492
|
+
|
|
1493
|
+
### Added
|
|
1494
|
+
|
|
1495
|
+
- Added `adjust` icon tokens for `fig-icon` (24px and 16px).
|
|
1496
|
+
- Added `adjust` to `FIG_ICON_TOKENS` and the playground Icon attribute options.
|
|
1497
|
+
|
|
1498
|
+
## [6.14.0]
|
|
1499
|
+
|
|
1500
|
+
### Added
|
|
1501
|
+
|
|
1502
|
+
- Added `download`, `upload`, `sun`, and `moon` icon tokens for `fig-icon` (24px).
|
|
1503
|
+
- Added those names to `FIG_ICON_TOKENS` and the playground Icon attribute options.
|
|
1504
|
+
|
|
1505
|
+
### Changed
|
|
1506
|
+
|
|
1507
|
+
- PropKit Icons theme example uses `fig-icon` for sun and moon segments.
|
|
1508
|
+
|
|
1509
|
+
## [6.13.2]
|
|
1510
|
+
|
|
1511
|
+
### Changed
|
|
1512
|
+
|
|
1513
|
+
- Added shared `--input-opacity-width` token (`calc(3.5rem - 2px)`) for opacity number fields on `fig-input-fill`, `fig-input-color`, and `fig-slider`.
|
|
1514
|
+
|
|
1515
|
+
## [6.13.1]
|
|
1516
|
+
|
|
1517
|
+
### Changed
|
|
1518
|
+
|
|
1519
|
+
- Changed `fig-slider` paired number input width to use `--slider-number-width` (default `3.5rem`).
|
|
1520
|
+
- Removed horizontal `fig-field` flex override from `fig-input-number` so intrinsic sizing matches other inputs.
|
|
1521
|
+
|
|
1522
|
+
## [6.13.0]
|
|
1523
|
+
|
|
1524
|
+
### Added
|
|
1525
|
+
|
|
1526
|
+
- Added `edit`, `eyedropper`, `settings`, and `more` icon tokens for `fig-icon` (24px and 16px where applicable).
|
|
1527
|
+
- Added Color visibility toggle playground example.
|
|
1528
|
+
- Added `settings` and `more` to Icon playground name options on `/figui3`.
|
|
1529
|
+
|
|
1530
|
+
### Changed
|
|
1531
|
+
|
|
1532
|
+
- Simplified Icon playground to a single `fig-icon` example driven by the attributes panel.
|
|
1533
|
+
- Synced figui3 Color section demos from propkit source.
|
|
1534
|
+
- Reduced `fig-3d-rotate` face paint cost by replacing shadows with borders.
|
|
1535
|
+
|
|
1536
|
+
## [6.12.0]
|
|
1537
|
+
|
|
1538
|
+
### Added
|
|
1539
|
+
|
|
1540
|
+
- Added gradient stop reordering in `fig-fill-picker` via `fig-reorder`.
|
|
1541
|
+
- Added shared boolean attribute helpers so `attr="false"` is treated as unset across core and lab components.
|
|
1542
|
+
- Added CSS tokens for `--figma-color-bg-active`, `--font-size-small`, `--line-height`, `--spacer-half`, `--transition-duration`, `--transition-timing-function`, and `--control-height`.
|
|
1543
|
+
- Added browser tests for gradient stop reorder color persistence and audit regressions.
|
|
1544
|
+
|
|
1545
|
+
### Changed
|
|
1546
|
+
|
|
1547
|
+
- Changed `fig-reorder` to show the grabbing cursor on pointer down, move the item on mouse up, highlight the dragged item with selected background, and raise the drop indicator above fill-picker dialogs.
|
|
1548
|
+
- Changed `fig-input-text` and `fig-input-number` to share the same intrinsic default width as `fig-input-color`, and to fill horizontal `fig-field` input columns.
|
|
1549
|
+
- Changed presence-style CSS attribute selectors (`icon`, `full`, `open`, `borderless`, `autoresize`, `multiline`, `resizable`, and related) to ignore `"false"`.
|
|
1550
|
+
- Styled native `fig-dropdown` option rows for Chromium webviews so popup menus stay readable.
|
|
1551
|
+
- Imported `fig-lab` from `fig-editor` so fill-picker reorder works without a lazy-load race.
|
|
1552
|
+
|
|
1553
|
+
### Fixed
|
|
1554
|
+
|
|
1555
|
+
- Fixed gradient stop color edits so they persist through reorder after `fig-input-color` disconnect/reconnect.
|
|
1556
|
+
- Fixed `fig-input-color` hex text display to strip the leading `#`.
|
|
1557
|
+
- Fixed parent `disabled` handling for tabs and segments so already-disabled children are not incorrectly cleared.
|
|
1558
|
+
|
|
1559
|
+
## [6.11.0]
|
|
1560
|
+
|
|
1561
|
+
### Added
|
|
1562
|
+
|
|
1563
|
+
- Added `fig-reorder` lab component for drag-reordering direct children, with optional handle selector, axis control, and `reorder` event.
|
|
1564
|
+
- Added `size` attribute to `fig-input-gradient`; passes through to the internal `fig-swatch`.
|
|
1565
|
+
- Added playground attributes support for `fig-reorder` and `fig-input-gradient` size.
|
|
1566
|
+
- Added playground event logging for `reorder` events.
|
|
1567
|
+
- Added browser tests and lab fixture coverage for `fig-reorder`.
|
|
1568
|
+
|
|
1569
|
+
### Changed
|
|
1570
|
+
|
|
1571
|
+
- Moved fill picker gradient color interpolation controls below stops with an updated header and label.
|
|
1572
|
+
- Updated oscillator amplitude and frequency handles to show axis-specific drag cursors while dragging.
|
|
1573
|
+
- Adjusted `fig-header` spacing when a leading `fig-dropdown` is present.
|
|
1574
|
+
|
|
1575
|
+
## [6.10.0]
|
|
1576
|
+
|
|
1577
|
+
### Added
|
|
1578
|
+
|
|
1579
|
+
- Added `elastic` and `size` attributes to `fig-field-slider`.
|
|
1580
|
+
- Added `compact` styling for `fig-header` and `fig-group`.
|
|
1581
|
+
- Reworked `fig-input-oscillator` wave rows into collapsible `fig-group` sections with per-row add and remove controls.
|
|
1582
|
+
|
|
1583
|
+
### Changed
|
|
1584
|
+
|
|
1585
|
+
- Changed `fig-input-oscillator` parameter fields to use `fig-field-slider`.
|
|
1586
|
+
- Changed oscillator add-form control to an inline header action that inserts a waveform after the current row.
|
|
1587
|
+
- Updated oscillator and field-slider playground attribute panels.
|
|
1588
|
+
|
|
1589
|
+
### Fixed
|
|
1590
|
+
|
|
1591
|
+
- Fixed `fig-field-slider` drag lock when used inside `fig-input-oscillator`.
|
|
1592
|
+
- Fixed duplicate waveform insertion when choosing a type from the add-form menu.
|
|
1593
|
+
- Fixed add-form and remove controls toggling wave group collapse.
|
|
1594
|
+
|
|
1595
|
+
## [6.9.9]
|
|
1596
|
+
|
|
1597
|
+
### Fixed
|
|
1598
|
+
|
|
1599
|
+
- Fixed `fig-field-slider` elastic pull so repeated drags keep tracking reliably.
|
|
1600
|
+
|
|
1601
|
+
### Changed
|
|
1602
|
+
|
|
1603
|
+
- Changed `fig-field-slider` elastic pull to use scale-based stretching with a springier return and slightly longer pull distance.
|
|
1604
|
+
|
|
1605
|
+
## [6.9.8]
|
|
1606
|
+
|
|
1607
|
+
### Changed
|
|
1608
|
+
|
|
1609
|
+
- Changed media caption child support and generated captions to use native `figcaption` instead of `caption`.
|
|
1610
|
+
|
|
1611
|
+
## [6.9.7]
|
|
1612
|
+
|
|
1613
|
+
### Added
|
|
1614
|
+
|
|
1615
|
+
- Added caption support for `fig-media`, `fig-image`, and `fig-video`.
|
|
1616
|
+
- Added blank caption fields to the PropKit and FigUI3 attributes panels for media examples.
|
|
1617
|
+
|
|
1618
|
+
### Changed
|
|
1619
|
+
|
|
1620
|
+
- Refined text wrapping defaults and footer action wrapping.
|
|
1621
|
+
|
|
1622
|
+
## [6.9.6]
|
|
1623
|
+
|
|
1624
|
+
### Fixed
|
|
1625
|
+
|
|
1626
|
+
- Fixed `fig-media` generated controls so duplicate `fig-media-controls` rows are reused and cleaned up.
|
|
1627
|
+
- Fixed `fig-tab-content` block layout styling.
|
|
1628
|
+
|
|
1629
|
+
### Added
|
|
1630
|
+
|
|
1631
|
+
- Added composable oscillator controls.
|
|
1632
|
+
|
|
1633
|
+
## [6.9.5]
|
|
1634
|
+
|
|
1635
|
+
### Fixed
|
|
1636
|
+
|
|
1637
|
+
- Fixed `fig-joystick` rotated side axis labels sitting too far from the edge.
|
|
1638
|
+
|
|
1639
|
+
## [6.9.4]
|
|
1640
|
+
|
|
1641
|
+
### Fixed
|
|
1642
|
+
|
|
1643
|
+
- Fixed `fig-field-slider` handle edge positioning across range, delta, hue, opacity, and stepper variants.
|
|
1644
|
+
- Fixed `fig-field-slider` right-click reset menu positioning.
|
|
1645
|
+
- Fixed full-width layout behavior for `fig-header`, `fig-group`, and `fig-content`.
|
|
1646
|
+
|
|
1647
|
+
### Changed
|
|
1648
|
+
|
|
1649
|
+
- Added `fig-field-slider` reset-to-default interactions and elastic edge feedback.
|
|
1650
|
+
- Added context menu support for `fig-menu` and documented programmatic `showAt(x, y)` usage.
|
|
1651
|
+
- Added support for custom `fig-field-slider` labels and inline SVG content inside `fig-icon`.
|
|
1652
|
+
- Refined hue and opacity field slider visual fades.
|
|
1653
|
+
|
|
1654
|
+
## [6.9.3]
|
|
1655
|
+
|
|
1656
|
+
### Changed
|
|
1657
|
+
|
|
1658
|
+
- Refined PropKit playground example alignment.
|
|
1659
|
+
|
|
1660
|
+
## [6.9.2]
|
|
1661
|
+
|
|
1662
|
+
### Changed
|
|
1663
|
+
|
|
1664
|
+
- Documented the `sticky` attribute for `fig-footer`.
|
|
1665
|
+
- Updated playground layout spacing for FigUI3 examples.
|
|
1666
|
+
|
|
1667
|
+
## [6.9.1]
|
|
1668
|
+
|
|
1669
|
+
### Fixed
|
|
1670
|
+
|
|
1671
|
+
- Fixed paragraph/list text defaults so plugin content uses secondary text color consistently.
|
|
1672
|
+
- Fixed the PropKit plugin alt demo width to better match the embedded panel.
|
|
1673
|
+
|
|
1674
|
+
### Changed
|
|
1675
|
+
|
|
1676
|
+
- Updated FigUI3 agent guidance to preserve existing dev/playground servers during checks.
|
|
1677
|
+
|
|
1678
|
+
## [6.9.0]
|
|
1679
|
+
|
|
1680
|
+
### Fixed
|
|
1681
|
+
|
|
1682
|
+
- Fixed cross-browser media preview sizing so `fig-image`, `fig-media`, `fig-video`, and `fig-preview` fill their preview surface consistently in Safari and Chrome.
|
|
1683
|
+
- Fixed `fig-easing-curve` handle positioning in Safari by avoiding absolute-positioned `fig-handle` children inside SVG `foreignObject` handles.
|
|
1684
|
+
- Fixed `fig-input-fill` and `fig-input-color` value cells so solid, gradient, image, and color inputs size and truncate consistently.
|
|
1685
|
+
- Fixed fill picker header overflow caused by the color gamut selector and close button layout.
|
|
1686
|
+
- Fixed segmented control icon alignment by centering segment contents with flex layout.
|
|
1687
|
+
- Fixed horizontal chooser gradient previews from collapsing by preserving a minimum choice and gradient width.
|
|
1688
|
+
|
|
1689
|
+
### Changed
|
|
1690
|
+
|
|
1691
|
+
- Styled native `<progress>` controls to match FigUI slider tracks, including determinate and indeterminate states.
|
|
1692
|
+
- Updated paragraph and content defaults for more predictable text rhythm in plugin layouts.
|
|
1693
|
+
- Updated playground video examples to use a larger randomized demo video pool.
|
|
1694
|
+
|
|
1695
|
+
## [6.8.8]
|
|
1696
|
+
|
|
1697
|
+
### Changed
|
|
1698
|
+
|
|
1699
|
+
- Added default section and fieldset padding for plugin content layout.
|
|
1700
|
+
- Updated the PropKit iframe demo with a canvas gradient preview.
|
|
1701
|
+
|
|
1702
|
+
## [6.8.7]
|
|
1703
|
+
|
|
1704
|
+
### Fixed
|
|
1705
|
+
|
|
1706
|
+
- Fixed `fig-chooser` selection scrolling so clicked and keyboard-selected choices center reliably after layout or size changes.
|
|
1707
|
+
|
|
1708
|
+
## [6.8.6]
|
|
1709
|
+
|
|
1710
|
+
### Fixed
|
|
1711
|
+
|
|
1712
|
+
- Fixed `fig-joystick` X/Y number fields not syncing when dragging the handle or clicking the plane.
|
|
1713
|
+
|
|
1714
|
+
### Changed
|
|
1715
|
+
|
|
1716
|
+
- `fig-header` height now uses a `--fig-header-height` custom property; reset `fig-group` header `h3` margin.
|
|
1717
|
+
|
|
1718
|
+
## [6.8.5]
|
|
1719
|
+
|
|
1720
|
+
### Fixed
|
|
1721
|
+
|
|
1722
|
+
- Fixed `fig-tabs` overflow controls to stay pinned while focused tabs scroll into view.
|
|
1723
|
+
- Fixed overflow control activation to use click handling instead of pointer-down handling.
|
|
1724
|
+
|
|
1725
|
+
### Changed
|
|
1726
|
+
|
|
1727
|
+
- Updated `fig-tabs` and `fig-chooser` overflow spacing.
|
|
1728
|
+
- Updated Tabs playground examples to show tab content source while keeping child controls out of Attributes View.
|
|
1729
|
+
|
|
1730
|
+
## [6.8.4]
|
|
1731
|
+
|
|
1732
|
+
### Fixed
|
|
1733
|
+
|
|
1734
|
+
- Fixed dialog `fig-content` sizing so content areas can flex and scroll correctly.
|
|
1735
|
+
|
|
1736
|
+
## [6.8.3]
|
|
1737
|
+
|
|
1738
|
+
### Fixed
|
|
1739
|
+
|
|
1740
|
+
- Fixed resizable dialogs forcing a `12rem` minimum width.
|
|
1741
|
+
|
|
1742
|
+
## [6.8.2]
|
|
1743
|
+
|
|
1744
|
+
### Fixed
|
|
1745
|
+
|
|
1746
|
+
- Fixed dialog and popup max width so narrow viewports respect available space.
|
|
1747
|
+
|
|
1748
|
+
### Changed
|
|
1749
|
+
|
|
1750
|
+
- Restored the PropKit iframe demo header to the standard bordered style.
|
|
1751
|
+
|
|
1752
|
+
## [6.8.1]
|
|
1753
|
+
|
|
1754
|
+
### Fixed
|
|
1755
|
+
|
|
1756
|
+
- Fixed the PropKit iframe demo header to render borderless.
|
|
1757
|
+
|
|
1758
|
+
### Changed
|
|
1759
|
+
|
|
1760
|
+
- Refined `fig-content` spacing for grouped content layouts.
|
|
1761
|
+
|
|
1762
|
+
## [6.8.0]
|
|
1763
|
+
|
|
1764
|
+
### Fixed
|
|
1765
|
+
|
|
1766
|
+
- Fixed `fig-field` setup so labels inserted after connection get focus/toggle behavior and overflow tooltips.
|
|
1767
|
+
|
|
1768
|
+
### Changed
|
|
1769
|
+
|
|
1770
|
+
- Updated `fig-spinner` to use encoded icon masks, with small-size mask support.
|
|
1771
|
+
- Updated playground controls and PropKit examples for field labels, chooser grid layout, and footer working states.
|
|
1772
|
+
|
|
1773
|
+
### Added
|
|
1774
|
+
|
|
1775
|
+
- Added `size="small"` support for `fig-spinner`.
|
|
1776
|
+
- Added Playwright coverage for dynamic `fig-field` label tooltip behavior.
|
|
1777
|
+
|
|
1778
|
+
## [6.7.4]
|
|
1779
|
+
|
|
1780
|
+
### Fixed
|
|
1781
|
+
|
|
1782
|
+
- Fixed `fig-slider` text inputs not updating the range value after listener binding moved ahead of number input lookup.
|
|
1783
|
+
|
|
1784
|
+
### Added
|
|
1785
|
+
|
|
1786
|
+
- Added Playwright coverage for `fig-slider` text input and range value synchronization.
|
|
1787
|
+
|
|
1788
|
+
## [6.7.3]
|
|
1789
|
+
|
|
1790
|
+
### Fixed
|
|
1791
|
+
|
|
1792
|
+
- Fixed `fig-tabs` and `fig-chooser` overflow controls so options remain direct light-DOM children for React-safe rendering.
|
|
1793
|
+
- Fixed `fig-chooser` start overflow buttons showing before the user scrolls in initially-overflowed examples.
|
|
1794
|
+
- Fixed horizontal `fig-chooser` choices shrinking and visually losing gaps in compact color chooser examples.
|
|
1795
|
+
- Fixed chooser playground controls so `Columns` only appears for grid layout and chooser overflow/max-size controls appear consistently.
|
|
1796
|
+
- Fixed vulnerable dev dependency lockfile entries for Vite, PostCSS, Picomatch, and Brace Expansion.
|
|
1797
|
+
|
|
1798
|
+
### Changed
|
|
1799
|
+
|
|
1800
|
+
- Updated chooser playground examples with more palette and gradient presets.
|
|
1801
|
+
|
|
1802
|
+
## [6.7.2]
|
|
1803
|
+
|
|
1804
|
+
### Fixed
|
|
1805
|
+
|
|
1806
|
+
- Fixed `fig-header` ghost icon button negative margin applying to clear buttons inside `fig-input-text`.
|
|
1807
|
+
|
|
1808
|
+
## [6.7.1]
|
|
1809
|
+
|
|
1810
|
+
### Fixed
|
|
1811
|
+
|
|
1812
|
+
- Fixed `fig-tooltip` staying open when the pointer leaves the window or document.
|
|
1813
|
+
- Fixed `fig-tooltip` staying open when the pointer leaves an iframe: dismisses on `frameElement` mouseleave, `figui:dismiss-tooltips` postMessage from parent `fig-dialog` iframes, and document exit listeners.
|
|
1814
|
+
|
|
1815
|
+
### Added
|
|
1816
|
+
|
|
1817
|
+
- Added Playwright coverage for tooltip dismiss on document and iframe exit.
|
|
1818
|
+
|
|
1819
|
+
## [6.7.0]
|
|
1820
|
+
|
|
1821
|
+
### Fixed
|
|
1822
|
+
|
|
1823
|
+
- Fixed `fig-tooltip` warmup so hopping between tooltips after one is shown is instant again: warmup now lasts 1s after show/hide, includes open/recently-hidden tooltips, and warm hops show synchronously.
|
|
1824
|
+
|
|
1825
|
+
### Changed
|
|
1826
|
+
|
|
1827
|
+
- `fig-footer` switches to a vertical layout when there are multiple actions (including tooltip-wrapped buttons).
|
|
1828
|
+
- `fig-footer` centers label-only footers with no buttons.
|
|
1829
|
+
- Playground footer examples: split long-label variants into separate examples and removed the long-label attributes toggle.
|
|
1830
|
+
|
|
1831
|
+
### Added
|
|
1832
|
+
|
|
1833
|
+
- Playground footer examples: **Waiting**, **Long label**, **Long label/many actions** (with disabled-button tooltips), and **Lots of things**.
|
|
1834
|
+
- `fig-footer` `.fig-footer-action` wrapper pattern for tooltips on disabled buttons.
|
|
1835
|
+
|
|
1836
|
+
## [6.6.6]
|
|
1837
|
+
|
|
1838
|
+
### Fixed
|
|
1839
|
+
|
|
1840
|
+
- Fixed `fig-tooltip` hover tooltips not dismissing when the host uses `display: contents` (e.g. character grid tiles) by binding pointer events to the trigger child instead of the tooltip element.
|
|
1841
|
+
- Fixed multiple hover tooltips stacking open at once — only one hover tooltip is shown at a time.
|
|
1842
|
+
- Fixed `fig-tooltip` `delay` being ignored when moving between tiles; warmup now applies only when re-hovering the same tooltip, and the popup is created after the delay elapses.
|
|
1843
|
+
- Fixed popover tooltips not fully closing on destroy by calling `hidePopup()` before removal.
|
|
1844
|
+
|
|
1845
|
+
### Added
|
|
1846
|
+
|
|
1847
|
+
- Added playground **Plugin (alt)** example with a static character-finder iframe demo (`plugin-alt.html`).
|
|
1848
|
+
- Added Playwright coverage for tooltip delay and `display: contents` hover dismissal.
|
|
1849
|
+
|
|
1850
|
+
## [6.6.5]
|
|
1851
|
+
|
|
1852
|
+
### Fixed
|
|
1853
|
+
|
|
1854
|
+
- Fixed `fig-popup` tooltips not repositioning when shown via the Popover API (`:popover-open` without `:open`).
|
|
1855
|
+
- Fixed tooltips stuck at the viewport top edge by flipping below the anchor when top placement overflows.
|
|
1856
|
+
- Fixed missing tooltip beaks after edge flip by no longer auto-hiding the pointer when alignment is imperfect.
|
|
1857
|
+
- Fixed tooltip popups inflating iframe/plugin autoresize by portaling them into a zero-size `[data-figui-overlay-root]` container.
|
|
1858
|
+
|
|
1859
|
+
### Changed
|
|
1860
|
+
|
|
1861
|
+
- Updated playground `iframe.html` to load local `/fig.js` + `/fig.css` and include a search `fig-header` example.
|
|
1862
|
+
|
|
1863
|
+
### Added
|
|
1864
|
+
|
|
1865
|
+
- Added Playwright coverage for popover tooltips, top-edge flip, and bottom beak visibility.
|
|
1866
|
+
|
|
1867
|
+
## [6.6.4]
|
|
1868
|
+
|
|
1869
|
+
### Fixed
|
|
1870
|
+
|
|
1871
|
+
- Fixed `fig-popup` tooltip/popover positioning at viewport edges: anchor-aware clamping keeps the beak on the anchor when possible, uses `visualViewport` bounds, prefers better placements when center overflows, and hides the pointer when alignment is impossible.
|
|
1872
|
+
|
|
1873
|
+
### Added
|
|
1874
|
+
|
|
1875
|
+
- Added Playwright coverage for edge-anchored tooltip beak alignment.
|
|
1876
|
+
|
|
1877
|
+
## [6.6.3]
|
|
1878
|
+
|
|
1879
|
+
### Fixed
|
|
1880
|
+
|
|
1881
|
+
- Fixed `fig-header` layout when it contains only a `fig-input-text` by applying negative side margins to align with header padding.
|
|
1882
|
+
- Removed inherited text color from `fig-popup` tooltips so content uses its own color tokens.
|
|
1883
|
+
|
|
1884
|
+
## [6.6.2]
|
|
1885
|
+
|
|
1886
|
+
### Fixed
|
|
1887
|
+
|
|
1888
|
+
- Fixed `fig-input-text` search clear icon missing after reconnect by using `fig-icon name="close"` instead of imperative `--icon` styling.
|
|
1889
|
+
- Fixed framework remount/reconnect bugs across inputs and controls: skip redundant `innerHTML` rebuilds, guard duplicate DOM wiring, and repair generated affordances on reconnect.
|
|
1890
|
+
- Fixed `fig-dropdown` duplicating its internal `<select>` when reconnected.
|
|
1891
|
+
- Fixed `fig-slider`, `fig-options`, `fig-combo-input`, `fig-input-color`, `fig-origin-grid`, `fig-joystick`, and `fig-3d-rotate` rebuilding duplicate markup or leaking listeners on reconnect.
|
|
1892
|
+
- Fixed `fig-button` re-rendering shadow DOM and duplicating click listeners on every reconnect.
|
|
1893
|
+
- Added `figNextFrame()` guards so deferred `connectedCallback` work is skipped after disconnect.
|
|
1894
|
+
|
|
1895
|
+
### Added
|
|
1896
|
+
|
|
1897
|
+
- Added reconnect resilience Playwright coverage for search clear, password toggle, dropdown, slider, options, combo input, color input, origin grid, and joystick.
|
|
1898
|
+
|
|
1899
|
+
## [6.6.1]
|
|
1900
|
+
|
|
1901
|
+
### Fixed
|
|
1902
|
+
|
|
1903
|
+
- Fixed `fig-tabs` so user tab selection emits `input` and `change` events for event output and integrations.
|
|
1904
|
+
|
|
1905
|
+
## [6.6.0]
|
|
1906
|
+
|
|
1907
|
+
### Added
|
|
1908
|
+
|
|
1909
|
+
- Added `columns` support for `fig-chooser layout="grid"` to control grid column count.
|
|
1910
|
+
|
|
1911
|
+
### Changed
|
|
1912
|
+
|
|
1913
|
+
- Updated the `/figui3` chooser grid example to use 10 full-width random image choices.
|
|
1914
|
+
|
|
1915
|
+
### Fixed
|
|
1916
|
+
|
|
1917
|
+
- Fixed explicit aspect-ratio media previews so `fig-image full aspect-ratio="1/1"` can render square in narrow grid cells.
|
|
1918
|
+
|
|
1919
|
+
## [6.5.1]
|
|
1920
|
+
|
|
1921
|
+
### Changed
|
|
1922
|
+
|
|
1923
|
+
|
|
1924
|
+
## [6.5.0]
|
|
1925
|
+
|
|
1926
|
+
### Added
|
|
1927
|
+
|
|
1928
|
+
- Added shared `.fig-overflow` button styling for scroll overflow controls.
|
|
1929
|
+
- Added examples for tab overflow plus header accessory text and search header patterns.
|
|
1930
|
+
|
|
1931
|
+
### Changed
|
|
1932
|
+
|
|
1933
|
+
- Changed `fig-chooser` overflow buttons from sticky in-flow controls to absolute light-DOM overlays.
|
|
1934
|
+
- Changed overflowing `fig-tabs` so selecting a tab centers it in the scroll view like `fig-chooser`.
|
|
1935
|
+
|
|
1936
|
+
### Fixed
|
|
1937
|
+
|
|
1938
|
+
- Fixed `fig-chooser` rebuilds via `innerHTML` so the light-DOM overflow buttons are restored after app code replaces choices.
|
|
1939
|
+
- Fixed overflowing `fig-tabs` so they expose start/end overflow buttons without moving the page.
|
|
1940
|
+
|
|
1941
|
+
## [6.4.8]
|
|
1942
|
+
|
|
1943
|
+
### Fixed
|
|
1944
|
+
|
|
1945
|
+
- Fixed `fig-input-text` and multiline textarea focus styling so inner native controls suppress their own ring and the host draws the shared focus outline.
|
|
1946
|
+
|
|
1947
|
+
## [6.4.7]
|
|
1948
|
+
|
|
1949
|
+
### Added
|
|
1950
|
+
|
|
1951
|
+
- Added focused Playwright accessibility coverage for media, form primitives, selection controls, overlays, loading indicators, display swatches, handles, color tips, layers, and toast live regions.
|
|
1952
|
+
- Added an axe-powered accessibility smoke suite covering representative form, selection, media, overlay, and loading fixtures.
|
|
1953
|
+
- Added regression coverage for combo input labels, fill picker controls, keyboard handles, overlay focus restoration, slider defaults, segmented focus movement, palette expansion, group semantics, image overlays, joystick/origin-grid handles, and skeleton tab suppression.
|
|
1954
|
+
- Added performance test scaffolding, budgets, and `npm run test:perf` / `npm run test:all` commands for render and runtime checks.
|
|
1955
|
+
- Added `fig-toast` and `fig-layer` registration/coverage in the main component contract flow.
|
|
1956
|
+
- Added a playground "Multiple radios" example to show independent, non-grouped radio tab behavior.
|
|
1957
|
+
|
|
1958
|
+
### Changed
|
|
1959
|
+
|
|
1960
|
+
- Reworked `fig-media`, `fig-image`, and `fig-video` so generated media is contained in `fig-preview` and generated video controls attach below the preview instead of overlaying the media surface.
|
|
1961
|
+
- Improved accessible names, ARIA state sync, disabled behavior, and keyboard support across buttons, combo inputs, dropdowns, checkboxes, radios, switches, text inputs, number inputs, fields, sliders, color inputs, fill inputs, fill pickers, tabs, segmented controls, menus, dialogs, popups, toasts, chits, handles, color tips, joystick, origin grid, easing curves, spinners, shimmers, skeletons, and layers.
|
|
1962
|
+
- Updated shared focus styling with a stronger `--figma-focus-outline`, component-specific offsets, and the new inheritable `--figma-focus-outline-radius` token.
|
|
1963
|
+
- Updated `fig-slider type="range"` so an omitted `value` defaults to the midpoint of `min` and `max`, matching native range behavior.
|
|
1964
|
+
- Updated media and image custom overlays to use light-DOM `slot="overlay"` placement instead of reparenting child nodes, preserving framework ownership.
|
|
1965
|
+
- Documented accessibility coverage, media preview composition, keyboard patterns, loading semantics, fill/media naming guidance, overlay slots, focus tokens, and verification commands in the README, changelog, contributing guide, and playground component descriptions.
|
|
1966
|
+
|
|
1967
|
+
### Fixed
|
|
1968
|
+
|
|
1969
|
+
- Fixed `fig-button type="select"` and combo-input select affordances so native controls keep accessible labels while the wrapper shows the correct focus state and opens the picker on keyboard activation.
|
|
1970
|
+
- Fixed `fig-fill-picker` icon-only buttons, generated dropdowns, swatches, gradient controls, and media controls so they expose usable labels and keyboard states.
|
|
1971
|
+
- Fixed keyboard movement and focus retention for `fig-handle`, `fig-easing-curve`, `fig-joystick`, and `fig-origin-grid`.
|
|
1972
|
+
- Fixed focus return for dialogs, popups, and tooltips after Escape or close interactions.
|
|
1973
|
+
- Fixed focus outlines for tabs, segments, palette rows, groups, handles, switches, checkboxes, radios, composite color/fill fields, and lab sliders.
|
|
1974
|
+
- Fixed `fig-input-palette` so the collapsed palette has one tab stop, expands on Enter/Space, and suppresses chunky nested swatch outlines.
|
|
1975
|
+
- Fixed `fig-input-gradient` focus behavior so editable gradients tab to the first stop handle, static gradients focus the host, and picker gradients open the fill picker from Enter/Space.
|
|
1976
|
+
- Fixed `fig-group` headers so collapsible groups expose `role`, `aria-expanded`, keyboard toggle behavior, and the shared focus outline.
|
|
1977
|
+
- Fixed `fig-image` custom overlay controls so they stay over the preview and remain visible during hover, focus, and active interaction.
|
|
1978
|
+
- Fixed `fig-skeleton` so descendant placeholder controls are inert and skipped by Tab.
|
|
1979
|
+
- Fixed generated icon-only media/file controls and dialog close controls so they expose accessible names.
|
|
1980
|
+
- Fixed generated media upload overlays to remain keyboard reachable while preserving the visible preview surface.
|
|
1981
|
+
|
|
1982
|
+
## [6.4.0]
|
|
1983
|
+
|
|
1984
|
+
### Added
|
|
1985
|
+
|
|
1986
|
+
|
|
1987
|
+
### Changed
|
|
1988
|
+
|
|
1989
|
+
- Refined default slider tick sizing.
|
|
1990
|
+
|
|
1991
|
+
## [6.3.0]
|
|
1992
|
+
|
|
1993
|
+
### Added
|
|
1994
|
+
|
|
1995
|
+
- Added Playwright component contract tests covering every `fig.js` web component.
|
|
1996
|
+
- Added a playground `/tests` route with visual fixtures generated from the shared component manifest.
|
|
1997
|
+
- Added project testing skills for web component and CSS validation.
|
|
1998
|
+
|
|
1999
|
+
## [6.2.0]
|
|
2000
|
+
|
|
2001
|
+
### Added
|
|
2002
|
+
|
|
2003
|
+
|
|
2004
|
+
### Changed
|
|
2005
|
+
|
|
2006
|
+
|
|
2007
|
+
### Fixed
|
|
2008
|
+
|
|
2009
|
+
|
|
2010
|
+
## [6.1.1]
|
|
2011
|
+
|
|
2012
|
+
### Fixed
|
|
2013
|
+
|
|
2014
|
+
- Origin grid overflow handles now keep their icon-only treatment.
|
|
2015
|
+
|
|
2016
|
+
## [6.1.0]
|
|
2017
|
+
|
|
2018
|
+
### Added
|
|
2019
|
+
|
|
2020
|
+
|
|
2021
|
+
### Changed
|
|
2022
|
+
|
|
2023
|
+
- Refined lab field slider styling.
|
|
2024
|
+
|
|
2025
|
+
## [6.0.0]
|
|
2026
|
+
|
|
2027
|
+
### Breaking
|
|
2028
|
+
|
|
2029
|
+
- `fig-handle` now uses `tip="color"`, `tip="add"`, or `tip="remove"` for persistent color tips. The old handle `color-tip` and `control` attributes were removed.
|
|
2030
|
+
|
|
2031
|
+
### Added
|
|
2032
|
+
|
|
2033
|
+
- `fig-input-gradient` now supports `mode="handle"` and `mode="tip"` for color stop handle presentation.
|
|
2034
|
+
|
|
2035
|
+
### Changed
|
|
2036
|
+
|
|
2037
|
+
- `fig-input-gradient` now defaults to `mode="handle"`; use `mode="tip"` for persistent color tips on gradient stops.
|
|
2038
|
+
- Refined `fig-input-gradient` handle sizing, border radius, and ghost handle stacking.
|
|
2039
|
+
- Disabled `fig-handle`s now render without elevation.
|
|
2040
|
+
|
|
2041
|
+
## [5.1.1]
|
|
2042
|
+
|
|
2043
|
+
### Fixed
|
|
2044
|
+
|
|
2045
|
+
- Restored classic script compatibility by removing module syntax from the built `fig.js` output.
|
|
2046
|
+
- Restored direct `fig-slider.value` reads for consumers using the host element property.
|
|
2047
|
+
|
|
2048
|
+
## [5.1.0]
|
|
2049
|
+
|
|
2050
|
+
### Added
|
|
2051
|
+
|
|
2052
|
+
- `fig-input-text type="search"` now adds a search icon and clear action.
|
|
2053
|
+
- `fig-input-text type="password"` now adds a show/hide password toggle.
|
|
2054
|
+
- Added visible and hidden icon tokens for medium and small `fig-icon` sizes.
|
|
2055
|
+
- `fig-fill-picker` image and video tabs now include rotate actions.
|
|
2056
|
+
|
|
2057
|
+
### Changed
|
|
2058
|
+
|
|
2059
|
+
- Refined `fig-fill-picker` media preview spacing and webcam capture layout.
|
|
2060
|
+
- Updated `fig-field` examples and lab styles to use the default horizontal layout.
|
|
2061
|
+
- Improved secondary and input button hover/pressed states.
|
|
2062
|
+
- Refined easing editor, slider defaults, canvas handles, and layer label styling.
|
|
2063
|
+
|
|
2064
|
+
### Fixed
|
|
2065
|
+
|
|
2066
|
+
- `fig-fill-picker` webcam captures now preview correctly and use blob URLs.
|
|
2067
|
+
- `fig-media` now clears uploaded file previews cleanly.
|
|
2068
|
+
|
|
2069
|
+
## [5.0.0]
|
|
2070
|
+
|
|
2071
|
+
### Breaking
|
|
2072
|
+
|
|
2073
|
+
- `fig-fill-picker` is now optional. Import `fig-editor.js` and `fig-editor.css` to register and style the full picker dialog.
|
|
2074
|
+
- `fig-input-color` no longer supports the `picker` attribute. It opens `fig-fill-picker` automatically when registered, otherwise it uses the native color input.
|
|
2075
|
+
- `picker-anchor` was removed. Picker popups anchor to the component that opens them.
|
|
2076
|
+
|
|
2077
|
+
### Added
|
|
2078
|
+
|
|
2079
|
+
- New package exports: `@rogieking/figui3/fig-editor.js` and `@rogieking/figui3/fig-editor.css`.
|
|
2080
|
+
- `fig-input-color`, `fig-input-fill`, `fig-input-gradient`, `fig-handle type="color"`, and `fig-color-tip` now check for `fig-fill-picker` at interaction time.
|
|
2081
|
+
|
|
2082
|
+
### Changed
|
|
2083
|
+
|
|
2084
|
+
- `fig.js` and `components.css` no longer include the full fill picker by default.
|
|
2085
|
+
- `fig-slider` now uses the compact modern appearance by default; use `variant="classic"` for the previous appearance.
|
|
2086
|
+
- `fig-slider` now shows its text input by default; use `text="false"` for compact slider-only controls.
|
|
2087
|
+
- `picker-*` attributes are still forwarded to `fig-fill-picker` when the optional picker is registered.
|
|
2088
|
+
- `fig-input-gradient edit="picker"` falls back to inline gradient editing when `fig-fill-picker` is unavailable.
|
|
2089
|
+
- `fig-handle type="color"` falls back to the native color picker when `fig-fill-picker` is unavailable.
|
|
2090
|
+
- `fig-input-color` now shows alpha/opacity controls by default; use `alpha="false"` to hide them.
|
|
2091
|
+
- `fig-color-tip` now preserves opacity from bare 4- and 8-digit hex values such as `CB0FFF5E`.
|
|
2092
|
+
- Playground imports the optional picker files explicitly and no longer uses removed `picker` or `picker-anchor` attributes.
|
|
2093
|
+
|
|
2094
|
+
## [4.15.10]
|
|
2095
|
+
|
|
2096
|
+
### Added
|
|
2097
|
+
|
|
2098
|
+
- PropKit Controls in dialogs: added an All Fields example with every field control using default `fig-field` layout.
|
|
2099
|
+
|
|
2100
|
+
### Changed
|
|
2101
|
+
|
|
2102
|
+
- PropKit Attributes view uses `columns="2/5"` for attribute rows.
|
|
2103
|
+
- Playground sidebars use narrower nav and attributes widths.
|
|
2104
|
+
- `fig-handle`: default and color handles use clearer custom-property-driven styling.
|
|
2105
|
+
- `fig-media`/`fig-image` upload overlays are constrained to the preview width.
|
|
2106
|
+
|
|
2107
|
+
## [4.15.9]
|
|
2108
|
+
|
|
2109
|
+
### Changed
|
|
2110
|
+
|
|
2111
|
+
- `fig-handle type="color"` closes its color picker when dragging starts and uses an 8px popup offset.
|
|
2112
|
+
|
|
2113
|
+
### Fixed
|
|
2114
|
+
|
|
2115
|
+
- `fig-fill-picker`: internal color-area handles no longer open nested color pickers.
|
|
2116
|
+
|
|
2117
|
+
## [4.15.8]
|
|
2118
|
+
|
|
2119
|
+
### Changed
|
|
2120
|
+
|
|
2121
|
+
- PropKit Design Token Editor keeps the standard 300px dialog width while using default horizontal field columns.
|
|
2122
|
+
- `fig-footer` vertical padding now uses `--spacer-2-5`.
|
|
2123
|
+
|
|
2124
|
+
## [4.15.7]
|
|
2125
|
+
|
|
2126
|
+
### Changed
|
|
2127
|
+
|
|
2128
|
+
- PropKit Animated Melty Gif dialog footer now uses the waiting-for-selection layout with an upload prompt before enabling placement.
|
|
2129
|
+
- `fig-footer` spacing now better supports label-driven action bars.
|
|
2130
|
+
|
|
2131
|
+
## [4.15.6]
|
|
2132
|
+
|
|
2133
|
+
### Changed
|
|
2134
|
+
|
|
2135
|
+
- PropKit header and footer container examples now focus on default usage, with footer states for waiting on selection and applying to a selection.
|
|
2136
|
+
- PropKit footer labels and actions now lay out cleanly with primary buttons pinned to the right.
|
|
2137
|
+
|
|
2138
|
+
### Fixed
|
|
2139
|
+
|
|
2140
|
+
- PropKit Attributes view now shows `fig-footer` attributes directly instead of field attributes when editing standalone footers.
|
|
2141
|
+
- PropKit header attribute control now labels the header action toggle as "Button".
|
|
2142
|
+
|
|
2143
|
+
## [4.15.5]
|
|
2144
|
+
|
|
2145
|
+
### Added
|
|
2146
|
+
|
|
2147
|
+
- `fig-preview`: styled visual preview layer for arbitrary content such as images, canvas, SVG, and generated previews.
|
|
2148
|
+
- PropKit container examples for `fig-content`, `fig-header`, and `fig-footer`.
|
|
2149
|
+
- PropKit Animated Melty Gif dialog includes a collapsible "About this tool" section.
|
|
2150
|
+
|
|
2151
|
+
### Changed
|
|
2152
|
+
|
|
2153
|
+
- `fig-fill-picker`: image and video tabs now use `fig-image` and `fig-media` upload components, keeping preview behavior consistent with the rest of FigUI.
|
|
2154
|
+
- `hstack`: vertically centers items by default and supports `align` overrides.
|
|
2155
|
+
- PropKit Preview canvas example now shows a shader-style preview.
|
|
2156
|
+
- PropKit plugin iframe More Info group is collapsed by default.
|
|
2157
|
+
|
|
2158
|
+
### Fixed
|
|
2159
|
+
|
|
2160
|
+
- `fig-handle`: percentage values now remain responsive instead of being converted to fixed pixels, keeping gradient handles aligned when containers resize.
|
|
2161
|
+
- `fig-fill-picker`: gradient stop handles refresh correctly when switching into the Gradient tab from another fill type.
|
|
2162
|
+
|
|
2163
|
+
## [4.15.4]
|
|
2164
|
+
|
|
2165
|
+
### Added
|
|
2166
|
+
|
|
2167
|
+
- PropKit button examples with labeled and unlabeled action rows.
|
|
2168
|
+
- `fig-field`: `columns="2/5"` layout ratio for compact dialog rows.
|
|
2169
|
+
- Checkerboard sizing tokens for chits, sliders, and handles.
|
|
2170
|
+
|
|
2171
|
+
### Changed
|
|
2172
|
+
|
|
2173
|
+
- PropKit dialog examples use 300px dialogs and half-column internal fields, with the design token editor using `columns="2/5"`.
|
|
2174
|
+
- `fig-input-palette`: expanded color rows always show alpha controls, and palette fields get tighter layout behavior inside `fig-field`.
|
|
2175
|
+
- Attribute panel label for `checkerboard` is now "Checkered".
|
|
2176
|
+
- PropKit plugin iframe More Info copy now uses short instructional paragraphs.
|
|
2177
|
+
- Opacity slider and handle checkerboards use component-specific checkerboard sizing.
|
|
2178
|
+
|
|
2179
|
+
## [4.15.3]
|
|
2180
|
+
|
|
2181
|
+
### Added
|
|
2182
|
+
|
|
2183
|
+
- `fig-handle`: `color-tip` attribute restores the compact color-tip interaction when needed.
|
|
2184
|
+
|
|
2185
|
+
### Changed
|
|
2186
|
+
|
|
2187
|
+
- `fig-handle type="color"` now opens the solid fill picker directly by default while preserving `{ color, opacity }` input/change events.
|
|
2188
|
+
- `fig-input-gradient`: color stop handles opt into `color-tip` to keep the compact gradient-stop editing workflow.
|
|
2189
|
+
- `fig-menu`: popup placement happens before reveal and arrow-key navigation works from the trigger.
|
|
2190
|
+
- `fig-input-color`: tab flow skips nested swatch color inputs when a text input is present.
|
|
2191
|
+
- `fig-input-palette`: inline swatches are passive previews; clicking the inline strip or add button expands the palette; remove buttons include "Remove color" tooltips.
|
|
2192
|
+
|
|
2193
|
+
### Fixed
|
|
2194
|
+
|
|
2195
|
+
- `fig-input-palette`: remove buttons re-enable after adding colors back above the minimum.
|
|
2196
|
+
- `fig-color-tip`: compact tip positioning is anchored correctly for non-drag color handles.
|
|
2197
|
+
|
|
2198
|
+
## [4.15.2]
|
|
2199
|
+
|
|
2200
|
+
### Fixed
|
|
2201
|
+
|
|
2202
|
+
- `fig-menu`: reopening after dismiss (outside click, Escape) works again — `fig-popup` now calls native `dialog.close()` via `:open` so the menu `open` state stays in sync; trigger ignores stale `open` when the popup is not showing.
|
|
2203
|
+
|
|
2204
|
+
## [4.15.1]
|
|
2205
|
+
|
|
2206
|
+
### Changed
|
|
2207
|
+
|
|
2208
|
+
- Propkit plugin iframe demo loads FigUI from `unpkg.com/@rogieking/figui3@latest` again (was local `/fig.css` and `/fig.js`).
|
|
2209
|
+
|
|
2210
|
+
## [4.15.0]
|
|
2211
|
+
|
|
2212
|
+
### Added
|
|
2213
|
+
|
|
2214
|
+
- `fig-icon` component — masked icons via `name`; `size="small"` (1rem) or `medium` (1.5rem, default); `color` sets fill via `background-color` (Figma icon tokens).
|
|
2215
|
+
|
|
2216
|
+
### Changed
|
|
2217
|
+
|
|
2218
|
+
- **Breaking:** Icon design tokens renamed by artboard size: `--icon-16-*` (16×16) and `--icon-24-*` (24×24). Update custom CSS from e.g. `var(--icon-close)` to `var(--icon-24-close)`.
|
|
2219
|
+
- Library internals: `fig-mask-icon` spans replaced with `<fig-icon>` (dialog close, palette add/remove, fill picker, easing curve, chooser nav, media controls, etc.). Legacy `.fig-mask-icon` CSS still supported.
|
|
2220
|
+
- `fig-handle`: no longer auto-sets `type="canvas"` when `type` is omitted (default is the base brand dot handle).
|
|
2221
|
+
|
|
2222
|
+
## [4.14.1]
|
|
2223
|
+
|
|
2224
|
+
### Changed
|
|
2225
|
+
|
|
2226
|
+
- `:root.figma-light` / `:root.figma-dark`: set `color-scheme` and `background-color` from `--figma-color-bg`.
|
|
2227
|
+
- `fig-dialog`: `--dialog-radius` token; child `iframe` uses matching bottom corner radius.
|
|
2228
|
+
|
|
2229
|
+
## [4.14.0]
|
|
2230
|
+
|
|
2231
|
+
### Added
|
|
2232
|
+
|
|
2233
|
+
- `fig-input-palette` `fixed` attribute — when present or `fixed="true"`, palette length is locked (no add or remove buttons). Expanded rows show alpha controls when fixed.
|
|
2234
|
+
|
|
2235
|
+
### Changed
|
|
2236
|
+
|
|
2237
|
+
- `fig-input-palette`: replaced `add` with `fixed` (breaking: use `fixed` instead of `add="false"` for preset palettes).
|
|
2238
|
+
- `fig-input-palette`: color swatches use the native color picker instead of `fig-fill-picker`.
|
|
2239
|
+
- `fig-chit`: checkerboard layer uses new `--checkerboard-chit` token (14px tiles); `fig-handle` color swatch checkerboard matches.
|
|
2240
|
+
|
|
2241
|
+
### Fixed
|
|
2242
|
+
|
|
2243
|
+
- `fig-input-palette`: inline chit strip layout — nested `fig-chit` styles, swatch dividers, and full-width strip when `fixed`.
|
|
2244
|
+
- `fig-combo-input`: joined-border radius rules no longer apply to nested `fig-chit`.
|
|
2245
|
+
|
|
2246
|
+
## [4.13.1]
|
|
2247
|
+
|
|
2248
|
+
### Added
|
|
2249
|
+
|
|
2250
|
+
- `fig-canvas-control` radius ring: new white halo outer circle painted behind the brand-colored radius circle (sandwiched between `.fig-canvas-control-radius-hit` and the brand circle). Both halo and brand strokes thicken to `--fig-canvas-control-line-stroke-width-hover` on hover/active so hover and active drag look identical.
|
|
2251
|
+
- `--fig-canvas-control-radius-stroke` / `--fig-canvas-control-radius-stroke-halo` CSS vars to override radius ring colors.
|
|
2252
|
+
|
|
2253
|
+
### Changed
|
|
2254
|
+
|
|
2255
|
+
- `fig-canvas-control` radius ring default stroke now `--figma-color-border-brand` (was a translucent white).
|
|
2256
|
+
- `fig-canvas-control` `type="point-radius-angle"` during radius drag: the angle handle (and its hit-area) is now `pointer-events: none` so the body's rotation/resize cursor wins and the angle tooltip cannot show. Restored on pointer up.
|
|
2257
|
+
- `fig-color-tip` popup nudged up another 2px (from `bottom: calc(100% + 6px)` to `+ 8px`) for breathing room above the handle.
|
|
2258
|
+
|
|
2259
|
+
### Fixed
|
|
2260
|
+
|
|
2261
|
+
- `fig-canvas-control` radius drag: angle tooltip no longer leaks in if the cursor passes over the angle handle mid-drag. Hover guard now also returns early when `#isRadiusDragging` is true, and the tooltip is force-hidden at the start of radius drag.
|
|
2262
|
+
|
|
2263
|
+
### Added
|
|
2264
|
+
|
|
2265
|
+
- `fig-canvas-control`: hover tooltips for all handles (point, angle, second, radius). Tooltip appears on `pointerenter` and hides on `pointerleave`, gated by drag state so it never flickers during interaction.
|
|
2266
|
+
- `fig-canvas-control` radius: the radius tooltip now follows the cursor via a virtual anchor (during both hover and drag) and is nudged 8px above the cursor.
|
|
2267
|
+
- `fig-canvas-control` `type="point-point"`: the connecting line is now draggable. A 12px transparent hit-line under the visible line uses `cursor: move` and translates both points by the same delta, clamped so both endpoints stay within `[0%, 100%]`. Emits a single `input`/`change` cycle.
|
|
2268
|
+
- `fig-canvas-control` `type="color"`: hover tooltip now shown (previously suppressed). Auto-hides when the color picker (`fig-color-tip`) opens via a MutationObserver on the handle, and re-enables when it closes.
|
|
2269
|
+
- `fig-popup` `set anchor`: now accepts any object with a `getBoundingClientRect()` method (virtual anchor), not just `Element` instances. Anchor-dependent code paths (`classList`, `contains`, ResizeObserver) are guarded so virtual anchors work safely.
|
|
2270
|
+
|
|
2271
|
+
### Changed
|
|
2272
|
+
|
|
2273
|
+
- `fig-canvas-control`: all handle tooltips (point, angle, second, point-point line drag) are now hidden during drag rather than shown. Hover guards also check drag state so tooltips can't be re-shown mid-drag from a stray `pointerenter`.
|
|
2274
|
+
- `fig-handle[type="color"]` `fig-color-tip`: nudged the picker popover up by 4px (from `bottom: calc(100% + 2px)` to `+ 6px`).
|
|
2275
|
+
- Propkit dialogs (Rename, Shadow, Progressive Blur, Photo Stack, Export Settings, Design Token Editor, Prepress, Animated Melty Gif): dialog body content is now wrapped in `<fig-content>` so the scroll region and `fig-footer` placement matches the recommended structure. The Plugin dialog (which hosts an iframe) is intentionally left alone.
|
|
2276
|
+
- Lab Color canvas example: `name` changed from "Position" to "Click to edit color".
|
|
2277
|
+
|
|
2278
|
+
### Fixed
|
|
2279
|
+
|
|
2280
|
+
- `fig-chooser` `layout="grid"`: the start nav button no longer shows up at the top when scrolled to the start. In grid mode the sticky `position: sticky` + negative-margin chevron trick used by flex layouts didn't collapse, so the nav buttons took real grid rows and pushed `scrollTop` to a non-zero value at "start". Grid mode now skips creating nav buttons entirely (and CSS hides them as a safety belt); use `overflow="scrollbar"` for native scrolling when grid content overflows.
|
|
2281
|
+
- `fig-chooser` `#syncOverflow`: added a `scrollable` guard so `overflow-start` / `overflow-end` classes are only applied when the chooser actually has overflow beyond a 2px threshold. Prevents spurious nav buttons when content fits exactly.
|
|
2282
|
+
- `fig-chooser`: `layout` is now an observed attribute; switching layout at runtime re-applies overflow mode and re-syncs nav button visibility immediately.
|
|
2283
|
+
|
|
2284
|
+
### Changed
|
|
2285
|
+
|
|
2286
|
+
- `fig-chooser` `layout="grid"`: now uses `column-gap` + `row-gap` (both `--fig-chooser-gap`) with `fig-choice { margin: 0 !important }` so choices flow naturally into a 2-column grid without doubled spacing from the base flex `margin-block-end`.
|
|
2287
|
+
|
|
2288
|
+
### Fixed
|
|
2289
|
+
|
|
2290
|
+
- `select > button` (customized select closed-state button): switched from `display: inline-block` (which silently ignored `align-items`/`justify-content`) to `display: inline-flex` with `justify-content: flex-start` so children align left and vertically center as intended.
|
|
2291
|
+
- `select`: removed the now-unneeded `&:has(> button) { padding-left: 0 }` override since the flex button already controls its own inner padding.
|
|
2292
|
+
|
|
2293
|
+
## [4.12.0]
|
|
2294
|
+
|
|
2295
|
+
### Added
|
|
2296
|
+
|
|
2297
|
+
- `fig-chooser` nav buttons now render an explicit `.fig-mask-icon.fig-chooser-nav-chevron` span (using `--icon: var(--icon-chevron)` and `--size: 1rem`) instead of a CSS `::after` pseudo-element. Rotation is still handled by class-scoped CSS (180° for nav-start, ±90° for horizontal layout).
|
|
2298
|
+
- `fig-chooser` nav buttons: `box-shadow` border edge switched from `--figma-color-border` to `--figma-color-bordertranslucent` for a softer divider.
|
|
2299
|
+
|
|
2300
|
+
### Changed
|
|
2301
|
+
|
|
2302
|
+
- `fig-chooser`: removed the `padding` attribute entirely (was `padding="false"` to drop internal padding). The chooser no longer reads or styles a `padding` attribute; use `--fig-chooser-gap` and `fig-choice` padding controls instead. `fig-choice`'s own `padding` attribute is unchanged.
|
|
2303
|
+
- Propkit Chooser examples (Text, Images, Images + Labels, Colors, Palettes, Gradients): the wrapping `fig-field` now defaults to `direction="vertical"` so the chooser gets full panel width.
|
|
2304
|
+
- Propkit Chooser Text + Images + Labels examples: every `fig-choice` now has `padding` set so the selection ring frames the content with breathing room.
|
|
2305
|
+
|
|
2306
|
+
### Removed
|
|
2307
|
+
|
|
2308
|
+
- `fig-chooser` `padding` from `observedAttributes`, the `&[padding="false"]` CSS block, the playground attributes rule, and the README attributes table row.
|
|
2309
|
+
|
|
2310
|
+
### Added
|
|
2311
|
+
|
|
2312
|
+
- `fig-media`, `fig-image`, `fig-video`: new `size` attribute (`small` = 2rem, `medium` = 4rem, `large` = 6rem) for quick fixed-size media tiles. Exposes a `--fig-media-size` CSS var that drives both `max-width` and `max-height`.
|
|
2313
|
+
- `fig-handle`: new `type="canvas"` variant (used by `fig-canvas-control` for angle/second/non-color handles). Handles now default to `type="canvas"` when no type is set, and the canvas variant renders the `::after` indicator like `type="color"`.
|
|
2314
|
+
- Playground attributes panel: `type` enum (default/color/canvas) added for `fig-handle`.
|
|
2315
|
+
|
|
2316
|
+
### Changed
|
|
2317
|
+
|
|
2318
|
+
- `fig-chooser`: initial scroll-to-selected is now reliable. After connect, the chooser waits for any child `<img>`/`<video>` media to load (or error) and then re-centers the selected choice without animation, so the first paint already lands on the right item. `#scrollToChoice` now measures via `getBoundingClientRect` instead of `offsetTop/Left`, so nested transforms and shadow layouts no longer offset the math.
|
|
2319
|
+
- `fig-chooser` nav buttons: replaced the linear-gradient fades with solid `var(--figma-color-bg)` backgrounds + a 1px `box-shadow` border on the leading/trailing edge (top/bottom for vertical, left/right for horizontal). No more hover-only border flash.
|
|
2320
|
+
- `fig-lab` `fig-canvas-control`: angle, second-point, and non-color handles now explicitly set `type="canvas"` so they pick up the new shared styling.
|
|
2321
|
+
- Propkit Chooser "Style" example: switched the inline `fig-image` tiles from `size="auto"` to `size="small"` for a tighter, consistent thumbnail row.
|
|
2322
|
+
|
|
2323
|
+
### Fixed
|
|
2324
|
+
|
|
2325
|
+
- `components.css`: invalid `gap: var(--spacer-1),0.25rem;` on `fig-select > button` (stray comma + extra value) reverted to `gap: var(--spacer-1);`.
|
|
2326
|
+
- `fig-select`: closed-state padding now reserves room for the chevron (`0 var(--spacer-4) 0 var(--spacer-2)`) so long values no longer collide with the icon.
|
|
2327
|
+
- `fig-select` customized-button with a leading `<svg>`: icon now hangs into the left padding via negative `margin-left` instead of removing the padding, keeping text alignment consistent across icon/no-icon buttons.
|
|
2328
|
+
|
|
2329
|
+
## [4.10.2]
|
|
2330
|
+
|
|
2331
|
+
### Added
|
|
2332
|
+
|
|
2333
|
+
- `/propkit` Chooser: new "Gradients" example showcasing four distinct gradient styles (Sunset Glow, Aurora, Bubblegum hard-stops, Holographic 5-stop iridescence) using `fig-input-gradient` with `edit="false"` and `disabled`.
|
|
2334
|
+
|
|
2335
|
+
## [4.10.1]
|
|
2336
|
+
|
|
2337
|
+
### Added
|
|
2338
|
+
|
|
2339
|
+
- `fig-media-controls`: bidirectional sync with parent `fig-media`/`fig-video` is now robust during scrubbing — uses a pending-seek guard so the slider doesn't snap back while the browser settles on a seek target. Adds a `seeked` listener so loop restarts immediately reset the scrubber to 0.
|
|
2340
|
+
- Native `<select multiple>` example in the `/figui3` Native elements group.
|
|
2341
|
+
- Checkbox group + disabled checkbox examples in `/figui3`.
|
|
2342
|
+
- Attribute rules: `checked` switch added to the Attributes panel for `fig-checkbox` and `fig-radio`.
|
|
2343
|
+
|
|
2344
|
+
### Changed
|
|
2345
|
+
|
|
2346
|
+
- `fig-media-controls`: slider updates are now applied via `setAttribute("value", …)` so `FigSlider`'s interacting-guard keeps the user's drag stable.
|
|
2347
|
+
|
|
2348
|
+
### Fixed
|
|
2349
|
+
|
|
2350
|
+
- Playground description rendering: section/example names containing HTML-like tokens (e.g. `<select>`) are now escaped before being injected via `dangerouslySetInnerHTML`, preventing a stray native `<select>` from appearing inside the description paragraph.
|
|
2351
|
+
|
|
2352
|
+
## [4.10.0]
|
|
2353
|
+
|
|
2354
|
+
### Added
|
|
2355
|
+
|
|
2356
|
+
- `<fig-media-controls>`: new standalone playback controls element. Renders a play/pause button (with `--icon-play`/`--icon-pause` mask icons), a `fig-slider` scrubber, and a `MM:SS` time display. Holds its own state via `playing` (boolean presence), `duration`, and `time` (number, seconds) attributes/properties. Emits `play`, `pause`, and `seek` events. Supports an `overlay` attribute to render as a bottom overlay over media.
|
|
2357
|
+
- `--icon-play` and `--icon-pause` design tokens (matching the `data:image/svg+xml` URL format used by the other `--icon-*` tokens).
|
|
2358
|
+
|
|
2359
|
+
### Changed
|
|
2360
|
+
|
|
2361
|
+
- `fig-media`/`fig-video`: native `<video controls>` chrome is now always suppressed. When the host's `controls` attribute is enabled (or a user places a `<fig-media-controls>` child), the host wires it up bidirectionally — video → controls for `playing`/`duration`/`time`/`seeked`/loop reset, controls → video for `play`/`pause`/`seek`. Auto-generated controls get `overlay` by default.
|
|
2362
|
+
- `fig-media` now exposes a `mediaEl` getter and `play()`/`pause()`/`toggle()` methods.
|
|
2363
|
+
|
|
2364
|
+
### Fixed
|
|
2365
|
+
|
|
2366
|
+
- `fig-input-palette`: restored the `disabled !== "false"` guard in the add-button click handler that had been accidentally removed (the dangling `&&` was throwing a SyntaxError and breaking the whole class).
|
|
2367
|
+
- `--icon-play` / `--icon-pause` tokens: replaced raw inline `<svg>` values with proper `url("data:image/svg+xml,...")` strings so they actually work as mask images.
|
|
2368
|
+
|
|
2369
|
+
## [4.9.1]
|
|
2370
|
+
|
|
2371
|
+
### Fixed
|
|
2372
|
+
|
|
2373
|
+
- `fig-media`, `fig-image`, `fig-video`: `fit="cover"` and other `object-fit` values now correctly apply to the inner `<video>`/`<img>` elements. The cover selector was missing the `>` child combinator and only targeted the generated class, so the rule never matched `<video>`. Inner media now sizes via `width/height: 100%` instead of `min-*` + `auto`, so `cover`, `fill`, and friends all render as expected.
|
|
2374
|
+
|
|
2375
|
+
### Changed
|
|
2376
|
+
|
|
2377
|
+
- `fig-media`, `fig-image`, `fig-video`: default `aspect-ratio` is now `4/3` (both in CSS and in the connectedCallback) so media elements have a sensible aspect ratio out of the box when no `aspect-ratio` attribute is set.
|
|
2378
|
+
- `fig-media`: removed the `type` attribute from the playground attributes panel (type is determined by the example markup, not toggled at runtime).
|
|
2379
|
+
|
|
2380
|
+
## [4.9.0]
|
|
2381
|
+
|
|
2382
|
+
### Changed
|
|
2383
|
+
|
|
2384
|
+
- `fig-input-palette`: layout reworked to a 2-row grid. Row 1: inline palette + add button (right-aligned). Row 2: expanded color list spans the full width. When `add="false"`, the inline palette spans both columns.
|
|
2385
|
+
- `fig-input-palette`: expanded `fig-input-color` rows no longer expose alpha (`alpha="false"`) — alpha editing is still available in the inline pickers.
|
|
2386
|
+
- `fig-input-gradient`: dropped hardcoded `size="medium"` on the chit so it inherits the default chit sizing.
|
|
2387
|
+
- `fig-input-gradient`: stop and ghost handles now use `size="small"` to match Figma's compact gradient affordances.
|
|
2388
|
+
|
|
2389
|
+
## [4.8.3]
|
|
2390
|
+
|
|
2391
|
+
### Fixed
|
|
2392
|
+
|
|
2393
|
+
- Safari: `fig-dialog` and `fig-toast` no longer throw `Cannot access invalid private field` / `Cannot access private method` errors when running through the customized built-in polyfill. The polyfill prototype-swaps existing nodes without invoking the constructor, so all `#privateField` members in `FigDialog` and `FigToast` were converted to underscore-prefixed (`_name`) members and initialized via an idempotent `_figInit()` that runs from both the constructor and lifecycle callbacks.
|
|
2394
|
+
- `fig-dialog`: merged duplicate `static get observedAttributes()` and `attributeChangedCallback()` declarations. The second pair was overriding the first, so `autoresize` was never actually observed.
|
|
2395
|
+
|
|
2396
|
+
### Changed
|
|
2397
|
+
|
|
2398
|
+
- Playground `/propkit` "Plugin" iframe page: load the Inter font from Google Fonts so the iframe content matches the figui3 system font.
|
|
2399
|
+
|
|
2400
|
+
## [4.8.2]
|
|
2401
|
+
|
|
2402
|
+
### Fixed
|
|
2403
|
+
|
|
2404
|
+
- `fig-color-tip`: `selected` attribute now correctly toggles off when the fill picker dialog closes. Replaced the brittle `document.querySelector(".fig-fill-picker-dialog[open]")` watcher with a `MutationObserver` on the inner `fig-chit`'s `selected` attribute, mirroring its state to the host.
|
|
2405
|
+
|
|
2406
|
+
## [4.8.1]
|
|
2407
|
+
|
|
2408
|
+
### Changed
|
|
2409
|
+
|
|
2410
|
+
- Playground `/propkit` "Plugin" iframe page: removed unused IBM Plex Mono Google Fonts stylesheet and a redundant `flex: 1 1 auto` on `body > fig-content`.
|
|
2411
|
+
|
|
2412
|
+
## [4.8.0]
|
|
2413
|
+
|
|
2414
|
+
### Added
|
|
2415
|
+
|
|
2416
|
+
- `fig-dialog[autoresize]`: when a `<fig-content>` is a direct child, it becomes the scroll region (`flex: 1 1 auto; overflow: auto; overscroll-behavior: contain`). The dialog itself sizes to content via `height: max-content` and is capped by the base `dialog` `max-height`. `fig-header` and `fig-footer` siblings remain pinned naturally without `position: sticky` (no rubber-band bounce).
|
|
2417
|
+
|
|
2418
|
+
### Changed
|
|
2419
|
+
|
|
2420
|
+
- `fig-dialog` autoresize: replaced JS-driven content-height measurement with pure CSS (`height: max-content`). JS only clears stale inline heights now; iframe `postMessage` sizing path is unchanged.
|
|
2421
|
+
- `dialog` base styles: removed the unused `&[tooltip]` block (legacy attribute-style tooltip styling that was superseded by `dialog[is="fig-popup"][variant="tooltip"]`).
|
|
2422
|
+
- Playground `/propkit` "Plugin" iframe page: scroll moved from `body` to `body > fig-content`; `fig-footer` is no longer `position: sticky` (flex layout pins it naturally).
|
|
2423
|
+
- Playground `figui3` Dialog example: wraps content in `<fig-content>` with longer prose so scroll behavior is visible.
|
|
2424
|
+
|
|
2425
|
+
## [4.7.1]
|
|
2426
|
+
|
|
2427
|
+
### Changed
|
|
2428
|
+
|
|
2429
|
+
- Playground `/propkit` "Plugin" iframe page: merged the `.plugin-body` flex/scroll rules into the `body` element directly, eliminating the wrapper div so the footer stays pinned via `margin-top: auto` and content scrolls within body.
|
|
2430
|
+
|
|
2431
|
+
## [4.7.0]
|
|
2432
|
+
|
|
2433
|
+
### Added
|
|
2434
|
+
|
|
2435
|
+
- `fig-dialog`: listens for `{ type: "figui:iframe-resize", height, width }` `postMessage` events from a descendant iframe and resizes itself to fit the broadcasted content, accounting for header/footer/padding chrome. Pairs with the new `dialog` `max-height: calc(100vh - var(--spacer-4))` so dialogs grow up to the viewport and stop there.
|
|
2436
|
+
- Playground `/propkit` "Plugin" example: iframe page broadcasts its natural content size (`scrollHeight` of scrollable regions + rendered footer height) on load, on DOM mutations, on font readiness, and on any descendant `ResizeObserver` change so dialog stays in sync.
|
|
2437
|
+
|
|
2438
|
+
### Changed
|
|
2439
|
+
|
|
2440
|
+
- `dialog` base styles: added `max-height: calc(100vh - var(--spacer-4))` so dialogs never overflow the viewport.
|
|
2441
|
+
- `fig-dialog`: cleans up the iframe `message` listener on disconnect.
|
|
2442
|
+
- Playground "Plugin" example: iframe `src` is now relative (`/propkit/iframe.html`) so the example always loads the locally deployed version of the iframe page.
|
|
2443
|
+
|
|
2444
|
+
## [4.6.1]
|
|
2445
|
+
|
|
2446
|
+
### Changed
|
|
2447
|
+
|
|
2448
|
+
- Playground "Plugin" dialog example: iframe now points to the absolute `https://rog.ie/propkit/iframe.html` URL so the example works outside the dev playground.
|
|
2449
|
+
|
|
2450
|
+
## [4.6.0]
|
|
2451
|
+
|
|
2452
|
+
### Added
|
|
2453
|
+
|
|
2454
|
+
- `fig-media`: new unified media host component supporting `type="image"` and `type="video"` with shared sizing (`size`, `aspect-ratio`, `fit`), `upload` overlay, and video attributes (`controls`, `autoplay`, `loop`, `muted`, `poster`).
|
|
2455
|
+
- `fig-video`: new video component built on the media host with playback attributes and optional upload overlay.
|
|
2456
|
+
- `fig-image`: added `alt` attribute, `size` token sizing, and updated default sizing model (host shrinkwraps to intrinsic image size).
|
|
2457
|
+
- Base styles: added default `iframe` rules so iframes flex naturally inside dialogs and other flex containers.
|
|
2458
|
+
- Playground (`/propkit`): new "Plugin" example under "Controls in dialogs" hosting plugin UI inside an iframe (`/propkit/iframe.html`) with parent/child resize broadcasting.
|
|
2459
|
+
- Playground (`/propkit`): new "Media" field example demonstrating `fig-media` inside a `fig-field` row.
|
|
2460
|
+
- Playground (`/figui3`): added Image, Media, and Video sections with examples covering image, video, poster, and upload modes.
|
|
2461
|
+
- Playground attributes panel: added rules for `fig-media` and `fig-video` (type, fit, upload, checkerboard, controls, autoplay, loop, muted, poster).
|
|
2462
|
+
|
|
2463
|
+
### Changed
|
|
2464
|
+
|
|
2465
|
+
- `fig-image`: rewritten as a thin wrapper over the new media host. Renders a real `<img>` inside the element; `getBase64()` now uses the inner `<img>` element directly (requires CORS-clean source).
|
|
2466
|
+
- `dialog`: `dialog[open]` now uses `display: flex; flex-direction: column;` so dialog contents (including iframes) can flex correctly. Removed the old `fig-header` / `fig-footer` margin rules in `fig-dialog` in favor of in-dialog layout.
|
|
2467
|
+
- `fig-segment`: option labels are now `text-transform: capitalize` for consistency with segmented control styling.
|
|
2468
|
+
- Playground routing: trailing slashes in `/figui3`, `/propkit`, `/propkit/lab`, and `/sandbox` paths are normalized so `mode` resolution and base path matching no longer break for `/propkit/` style URLs.
|
|
2469
|
+
- Playground attribute resolver: enum option matching now normalizes whitespace and `/` separators so values like `16 / 9` resolve correctly against `16/9`-style options.
|
|
2470
|
+
|
|
2471
|
+
### Fixed
|
|
2472
|
+
|
|
2473
|
+
- `fig-image` / `fig-media` / `fig-video`: chit placeholder is now properly hidden when a real media source (or video poster) is present, and shown when the source is empty.
|
|
2474
|
+
- Playground: `fig-image` upload overlay defaults are no longer accidentally toggled when controlling other attributes.
|
|
2475
|
+
|
|
2476
|
+
## [4.5.3]
|
|
2477
|
+
|
|
2478
|
+
### Fixed
|
|
2479
|
+
|
|
2480
|
+
- Playground routing: `/propkit/lab` is now the canonical Lab route, with automatic migration from legacy `/lab` URLs.
|
|
2481
|
+
|
|
2482
|
+
### Changed
|
|
2483
|
+
|
|
2484
|
+
- `fig-field-slider` lab styling now applies horizontal layout styles to `fig-field[direction="horizontal"]` and adds focus-visible container treatment.
|
|
2485
|
+
|
|
2486
|
+
## [4.5.2]
|
|
2487
|
+
|
|
2488
|
+
### Changed
|
|
2489
|
+
|
|
2490
|
+
- Playground: section list now has vertical padding only for ungrouped lists, while grouped (`fig-group`) lists remain flush.
|
|
2491
|
+
|
|
2492
|
+
## [4.5.1]
|
|
2493
|
+
|
|
2494
|
+
### Fixed
|
|
2495
|
+
|
|
2496
|
+
- `fig-options`: now captures internal `fig-segmented-control` / `fig-dropdown` events and re-emits normalized `input` and `change` events from `fig-options`.
|
|
2497
|
+
- `fig-options`: dropdown mode no longer propagates undefined event detail values; emitted event payloads now keep consistent string value shape.
|
|
2498
|
+
|
|
2499
|
+
### Changed
|
|
2500
|
+
|
|
2501
|
+
- `fig-input-color`: removed `localStorage` persistence for color input mode from `fig.js`.
|
|
2502
|
+
|
|
2503
|
+
### Added
|
|
2504
|
+
|
|
2505
|
+
- Playground `/propkit` Event output now shows both control `value` and raw `event.detail` (plus detail type) for easier event-shape debugging.
|
|
2506
|
+
|
|
2507
|
+
## [4.5.0]
|
|
2508
|
+
|
|
2509
|
+
### Fixed
|
|
2510
|
+
|
|
2511
|
+
- `fig-input-number`: `units="px"` no longer renders disallowed units by default.
|
|
2512
|
+
|
|
2513
|
+
### Added
|
|
2514
|
+
|
|
2515
|
+
- `fig-input-number`: new `units-disallow` attribute with comma-separated unit filtering support in component docs and playground attribute controls.
|
|
2516
|
+
|
|
2517
|
+
### Changed
|
|
2518
|
+
|
|
2519
|
+
- `fig-input-number`: disallowed units are now ignored even when explicitly provided via `units`; default disallow list now includes `"px"`.
|
|
2520
|
+
- Playground/dev setup: refreshed dependency lockfiles and launcher wiring for local playground dev startup.
|
|
2521
|
+
|
|
2522
|
+
## [4.4.4]
|
|
2523
|
+
|
|
2524
|
+
### Fixed
|
|
2525
|
+
|
|
2526
|
+
- `fig-input-palette`: expand/collapse no longer causes a flash — toggling `open` now skips unnecessary DOM re-render since CSS handles visibility.
|
|
2527
|
+
|
|
2528
|
+
### Changed
|
|
2529
|
+
|
|
2530
|
+
- `fig-field`: label gap uses margin instead of padding for more consistent spacing behavior.
|
|
2531
|
+
|
|
2532
|
+
## [4.4.3]
|
|
2533
|
+
|
|
2534
|
+
### Fixed
|
|
2535
|
+
|
|
2536
|
+
- `fig-field`: only-child grid spanning now correctly covers `input1 + gap + input2` columns in label-less horizontal fields.
|
|
2537
|
+
|
|
2538
|
+
### Changed
|
|
2539
|
+
|
|
2540
|
+
- Playground: added File Input example to FigUI3 tab, removed standalone Angle Input example, set default dev port to 6600.
|
|
2541
|
+
|
|
2542
|
+
## [4.4.2]
|
|
2543
|
+
|
|
2544
|
+
### Fixed
|
|
2545
|
+
|
|
2546
|
+
- `fig-menu`: Hide direct `fig-menu-item` and `fig-separator` children via CSS so items don't flash before JS moves them into the popup.
|
|
2547
|
+
- `fig-menu`: Detect late-arriving trigger elements (e.g. React rendering children after `connectedCallback`) via MutationObserver, wiring up click listener and popup anchor when the trigger appears.
|
|
2548
|
+
|
|
2549
|
+
## [4.4.1]
|
|
2550
|
+
|
|
2551
|
+
### Fixed
|
|
2552
|
+
|
|
2553
|
+
- Rebuild dist bundle — `dist/fig.css` and `dist/fig.js` now include all recent component additions (fig-menu, presentational elements, etc.).
|
|
2554
|
+
|
|
2555
|
+
## [4.4.0]
|
|
2556
|
+
|
|
2557
|
+
### Fixed
|
|
2558
|
+
|
|
2559
|
+
- `fig-tooltip`: no longer lingers after dialog close; clears pending show timeout in `disconnectedCallback` and bails from `showPopup` when parent dialog is closed.
|
|
2560
|
+
- `fig-tabs`: single-click tab activation now works correctly; fixed `#selectByValue("")` deselecting all tabs when tabs use `content` attribute instead of `value`.
|
|
2561
|
+
- `fig-tabs`: click targeting uses `closest("fig-tab")` for reliable hit detection on child elements.
|
|
2562
|
+
- `fig-tabs`: keyboard navigation now properly sets `selected` attribute on the new tab.
|
|
2563
|
+
|
|
2564
|
+
### Added
|
|
2565
|
+
|
|
2566
|
+
- `fig-tabs`: `disabled` attribute fully disables all tab interaction with visual feedback.
|
|
2567
|
+
- `fig-tabs` / `fig-tab-content`: full-width by default (`width: 100%`).
|
|
2568
|
+
- `fig-palette`: expanded view uses named grid columns with `:has()` for flexible layout with/without remove buttons.
|
|
2569
|
+
|
|
2570
|
+
### Changed
|
|
2571
|
+
|
|
2572
|
+
- Playground: Tabs example expanded with tabbed content panels; Prepress "Apply To" uses `fig-options`.
|
|
2573
|
+
|
|
2574
|
+
## [4.3.0]
|
|
2575
|
+
|
|
2576
|
+
### Added
|
|
2577
|
+
|
|
2578
|
+
- `fig-options`: supports newline-delimited and JSON array formats for the `options` attribute, enabling values that contain commas.
|
|
2579
|
+
- `fig-palette`: remove button (ghost variant, minus icon) on each color in expanded view; respects `min` attribute to prevent removal below minimum count.
|
|
2580
|
+
|
|
2581
|
+
## [4.2.0]
|
|
2582
|
+
|
|
2583
|
+
### Added
|
|
2584
|
+
|
|
2585
|
+
- `fig-footer`: new component mirroring `fig-header` with top border, `borderless` and `sticky` attribute support.
|
|
2586
|
+
- `fig-dialog`: `resizable` attribute allows user-resizable dialogs (off by default).
|
|
2587
|
+
- `fig-dialog`: auto-generates `fig-header` with title and close button when `title` attribute is set and no header exists.
|
|
2588
|
+
- `fig-segmented-control`: label truncation with ellipsis when segments overflow available space.
|
|
2589
|
+
- `fig-field`: refactored to CSS grid layout for more consistent label/input alignment.
|
|
2590
|
+
|
|
2591
|
+
### Fixed
|
|
2592
|
+
|
|
2593
|
+
- `fig-slider`: no longer forces parent dialogs wider than other controls; intrinsic width now matches `fig-input-number` and `fig-input-color` in grid layouts.
|
|
2594
|
+
- `fig-slider`: consolidated duplicated range input styles and orphaned CSS blocks.
|
|
2595
|
+
- `fig-tab`: removed dead `:has(:checked)` and `[type="radio"]` CSS rules.
|
|
2596
|
+
- `input[type="checkbox"].switch`: nested pseudo-class rules for cleaner stylesheet structure.
|
|
2597
|
+
|
|
2598
|
+
### Changed
|
|
2599
|
+
|
|
2600
|
+
- Dialog footer elements in propkit examples converted from `<footer>` to `<fig-footer>`.
|
|
2601
|
+
- Radio group example in `/figui3` now wraps each radio in its own `fig-field` with label passed via attribute.
|
|
2602
|
+
|
|
2603
|
+
## [4.1.4]
|
|
2604
|
+
|
|
2605
|
+
### Fixed
|
|
2606
|
+
|
|
2607
|
+
- `fig-image`: upload preview now works correctly by ignoring bubbled native input change events.
|
|
2608
|
+
- `fig-image`: prevent re-entrant clear event from wiping uploaded image source.
|
|
2609
|
+
|
|
2610
|
+
### Changed
|
|
2611
|
+
|
|
2612
|
+
- `fig-image`: default `--fit` changed from `cover` to `contain`.
|
|
2613
|
+
|
|
2614
|
+
## [4.1.3]
|
|
2615
|
+
|
|
2616
|
+
### Added
|
|
2617
|
+
|
|
2618
|
+
- `fig-menu`: playground attribute controls for position, offset, closed-by, disabled, and open.
|
|
2619
|
+
- `fig-menu`: `disabled` attribute now forwards to the trigger element.
|
|
2620
|
+
|
|
2621
|
+
## [4.1.2]
|
|
2622
|
+
|
|
2623
|
+
### Added
|
|
2624
|
+
|
|
2625
|
+
- `fig-menu`: new context menu component with trigger detection, keyboard navigation (arrow keys, Home/End, Enter/Space), ARIA roles, `position`/`offset`/`closedby` forwarding, `open` attribute, and `change` event with `{ value, item }` detail.
|
|
2626
|
+
- `fig-menu-item`: menu item element with `value` attribute and `disabled` support.
|
|
2627
|
+
- `fig-separator`: visual divider between menu item groups.
|
|
2628
|
+
- Playground: added Menu examples (default + disabled items) to `/figui3` Core components.
|
|
2629
|
+
- Playground: EventView now serializes DOM elements in event output instead of showing `{}`.
|
|
2630
|
+
|
|
2631
|
+
### Fixed
|
|
2632
|
+
|
|
2633
|
+
- `fig-button`: SVG fill selector now excludes `fill="none"` to prevent overriding transparent fills.
|
|
2634
|
+
- `fig-chooser`: fixed spacing with CSS custom property `--fig-chooser-gap`, updated choice padding and selection ring width.
|
|
2635
|
+
- `fig-layer`: removed extra margin-left on layer rows, adjusted padding and chevron position.
|
|
2636
|
+
- Playground: EventView now shown for Menu section in `/figui3`.
|
|
2637
|
+
|
|
2638
|
+
## [4.1.1]
|
|
2639
|
+
|
|
2640
|
+
### Changed
|
|
2641
|
+
|
|
2642
|
+
- Playground: added "Native elements" group to `/figui3` with 12 styled HTML element examples (button, select, inputs, textarea, checkbox, switch, radio, color, fieldset, details, hr).
|
|
2643
|
+
- Playground: refactored nav to use collapsible `fig-group` wrappers instead of `.nav-group-header` elements.
|
|
2644
|
+
- `details`: improved styling with padding, full width, and adjusted summary alignment.
|
|
2645
|
+
|
|
2646
|
+
## [4.1.0]
|
|
2647
|
+
|
|
2648
|
+
### Fixed
|
|
2649
|
+
|
|
2650
|
+
- `fig-combo-input`: rewrote to meet component standards — now emits `input`/`change` events, wires text input changes, uses private methods, synchronous render, proper cleanup in `disconnectedCallback`.
|
|
2651
|
+
|
|
2652
|
+
### Changed
|
|
2653
|
+
|
|
2654
|
+
- `fig-input-fill`: gradient angle picker replaced with `fig-input-number` (removed internal dependency on `fig-input-angle`).
|
|
2655
|
+
- `fig-combo-input`: added `fig-combo-input` CSS display rule for proper flex layout participation.
|
|
2656
|
+
- Playground: moved `fig-canvas-control` and `fig-input-angle` to experimental `/lab` route (`fig-lab.js`/`fig-lab.css`).
|
|
2657
|
+
- Playground: moved `fig-handle` example from `/propkit` to `/figui3` under Utilities group.
|
|
2658
|
+
- Playground: added Radio "Group" and "Disabled" examples in `/figui3`.
|
|
2659
|
+
|
|
2660
|
+
## [4.0.0]
|
|
2661
|
+
|
|
2662
|
+
### Breaking Changes
|
|
2663
|
+
|
|
2664
|
+
- `fig-image`: removed `download` attribute and internal `<div>` wrapper. Upload overlay now uses `fig-input-file` instead of native `<input>` inside `fig-button`.
|
|
2665
|
+
- `fig-image`: `loaded` event detail changed from `{ blob, base64 }` to `{ file, src }`. Use the new `async getBase64()` method if base64 is needed.
|
|
2666
|
+
- `fig-image`: no longer auto-generates blob URLs or base64 on every load. Component is now synchronous on connect.
|
|
2667
|
+
|
|
2668
|
+
### Added
|
|
2669
|
+
|
|
2670
|
+
- `fig-image`: `async getBase64()` method for on-demand base64 conversion.
|
|
2671
|
+
- `fig-image`: `file` getter to access the raw uploaded File object.
|
|
2672
|
+
- `fig-image`: preserves user-provided children (no more innerHTML wipe). Supports composable overlays.
|
|
2673
|
+
- `fig-image`: `aspect-ratio="auto"` uses `createImageBitmap` for fast, lazy dimension detection.
|
|
2674
|
+
- `fig-image`: auto-generated `fig-input-file` shows "Replace" label when an image is already set.
|
|
2675
|
+
- `fig-input-file`: `variant` attribute passthrough to internal `fig-button` (default "input").
|
|
2676
|
+
- `fig-input-file`: `url` attribute for display-only file state (extracts filename from URL, no network request).
|
|
2677
|
+
- Playground: "Plain" and "Custom Buttons" image examples in /propkit.
|
|
2678
|
+
|
|
2679
|
+
### Changed
|
|
2680
|
+
|
|
2681
|
+
- `fig-image` CSS: hover-reveal now targets `fig-input-file[data-generated]` instead of `> div`.
|
|
2682
|
+
|
|
2683
|
+
## [3.23.0]
|
|
2684
|
+
|
|
2685
|
+
### Added
|
|
2686
|
+
|
|
2687
|
+
- `fig-input-file`: file upload input with filename display, clear button, accepts tooltip, drag-and-drop, and multiple file support.
|
|
2688
|
+
- `fig-truncate`: text truncation utility with `position` (right/left/middle), `tail` preservation, and overflow `tooltip`.
|
|
2689
|
+
- `fig-field`: auto-detects toggleable children (elements with `open` property) and injects an expand/collapse chevron.
|
|
2690
|
+
- Playground: File examples in /propkit, Truncate examples under Utilities group in /figui3.
|
|
2691
|
+
|
|
2692
|
+
### Changed
|
|
2693
|
+
|
|
2694
|
+
- Playground EventView now serializes File objects (name, size, type) instead of empty objects.
|
|
2695
|
+
- Playground text input fields re-sync correctly when navigating between examples.
|
|
2696
|
+
|
|
2697
|
+
## [3.22.0]
|
|
2698
|
+
|
|
2699
|
+
### Changed
|
|
2700
|
+
|
|
2701
|
+
- Standardized collapse/expand pattern across `fig-layer`, `fig-group`, and `fig-input-palette`: all use `open` attribute and emit `openchange` event.
|
|
2702
|
+
- `fig-group`: replaced `collapse` attribute with `collapsible` (presence boolean) + `open` for state.
|
|
2703
|
+
- `fig-input-palette`: replaced `expanded` attribute with `open`; added public `open` getter/setter and `openchange` event.
|
|
2704
|
+
- `fig-input-color` and `fig-input-fill`: text input now shown by default (unless `text="false"`).
|
|
2705
|
+
- Removed `color-strip` attribute from `fig-input-palette`.
|
|
2706
|
+
|
|
2707
|
+
### Added
|
|
2708
|
+
|
|
2709
|
+
- `fig-field`: auto-detects toggleable children (elements with an `open` property) and injects a chevron for expand/collapse toggle via label click.
|
|
2710
|
+
- Playground: palette field added to collapsible group example.
|
|
2711
|
+
|
|
2712
|
+
## [3.21.2]
|
|
2713
|
+
|
|
2714
|
+
### Fixed
|
|
2715
|
+
|
|
2716
|
+
- `fig-input-gradient` now always renders as a horizontal linear gradient at 90 degrees, regardless of the incoming gradient type (angular, radial, etc.) — preserves interpolationSpace, hueInterpolation, and stops.
|
|
2717
|
+
- `fig-color-tip` now preserves alpha when opening — extracts alpha from 8-char hex (`#RRGGBBAA`) and rgba strings, passing opacity to the fill picker's initial value.
|
|
2718
|
+
- `fig-color-tip` `#syncFromAttributes` no longer strips alpha when re-setting the fill picker value.
|
|
2719
|
+
- `fig-fill-picker` gradient stops list color input reads opacity from `e.detail.rgba.a` instead of the `alpha` HTML attribute.
|
|
2720
|
+
- `fig-input-fill` gradient opacity input no longer overrides individual stop opacities.
|
|
2721
|
+
|
|
2722
|
+
### Changed
|
|
2723
|
+
|
|
2724
|
+
- Playground: `fig-switch` attributes view now includes Checked, Indeterminate, and Disabled toggles.
|
|
2725
|
+
- Playground: `fig-input-gradient` default example updated to 3 stops with a semi-transparent middle stop.
|
|
2726
|
+
|
|
2727
|
+
## [3.21.1]
|
|
2728
|
+
|
|
2729
|
+
### Fixed
|
|
2730
|
+
|
|
2731
|
+
- `fig-handle` type="color" now renders transparent colors — `#colorWithOpacity` converts hex + opacity to rgba for `--fill`, and events forward opacity from `fig-color-tip`.
|
|
2732
|
+
- `fig-color-tip` now derives opacity from `detail.alpha` when `detail.opacity` is absent, fixing the disconnect between `fig-fill-picker` (which emits alpha 0-1) and the color tip (which expected opacity 0-100).
|
|
2733
|
+
- `fig-handle` checkerboard behind color swatch — `::after` uses `linear-gradient(var(--fill), var(--fill)), var(--checkerboard)` so transparency is visible.
|
|
2734
|
+
- `fig-chit` solid color backgrounds now wrapped as `linear-gradient(color, color)` internally, enabling correct CSS layering with checkerboard for transparent colors.
|
|
2735
|
+
- `fig-input-gradient` MutationObserver no longer stores rgba strings back into stop data — skips non-hex color attribute values, preventing `figHexToRGB` NaN errors.
|
|
2736
|
+
- `fig-input-gradient` stop handles now display opacity via rgba color strings (`#stopColorCSS`) instead of a separate alpha attribute.
|
|
2737
|
+
- `fig-input-fill` gradient opacity input no longer overrides individual stop opacities — each gradient stop manages its own opacity independently.
|
|
2738
|
+
- `fig-fill-picker` gradient stops list color input now reads `e.detail.rgba.a` for opacity instead of the `alpha` HTML attribute, which returned `"true"` instead of a numeric value.
|
|
2739
|
+
|
|
2740
|
+
### Added
|
|
2741
|
+
|
|
2742
|
+
- `fig-swatch` element as an alias for `fig-chit`.
|
|
2743
|
+
|
|
2744
|
+
## [3.21.0]
|
|
2745
|
+
|
|
2746
|
+
### Added
|
|
2747
|
+
|
|
2748
|
+
- `fig-input-gradient` `edit` attribute with three modes: `"true"` (default, full inline editing), `"false"` (display-only chit), and `"picker"` (opens fill picker dialog locked to gradient tab).
|
|
2749
|
+
- `fig-input-gradient` now supports color interpolation spaces — `#buildGradientCSS` includes the interpolation clause (`in oklab`, `in oklch shorter hue`, etc.) for correct gradient rendering.
|
|
2750
|
+
- `fig-input-gradient` color sampling (`#sampleGradientColor`) now uses the correct interpolation space and hue mode when adding stops, instead of basic sRGB canvas sampling.
|
|
2751
|
+
- Shared color math utilities: `figSampleGradientAt`, `figRGBToOklab`, `figOklabToRGB`, `figOklabToOklch`, `figOklchToOklab`, `figInterpolateHue` for accurate color interpolation across OKLab, OKLCH, and sRGB-linear spaces.
|
|
2752
|
+
- `fig-input-palette` `color-strip` toggle in playground attributes view.
|
|
2753
|
+
|
|
2754
|
+
### Changed
|
|
2755
|
+
|
|
2756
|
+
- Fill picker gradient tab now uses an embedded `fig-input-gradient edit="true" size="large"` for visual stop editing, replacing the static gradient bar div.
|
|
2757
|
+
- Fill picker gradient stops list updates in-place when stop count is unchanged, preventing flash/flicker during drag interactions.
|
|
2758
|
+
- `fig-fill-picker` `#buildGradientCSS` now defaults gradient stop opacity to 100 when undefined, preventing invisible gradients.
|
|
2759
|
+
- Playground gradient example in `/figui3` now includes `opacity` and `angle` in the gradient value for correct rendering.
|
|
2760
|
+
|
|
2761
|
+
## [3.20.3]
|
|
2762
|
+
|
|
2763
|
+
### Fixed
|
|
2764
|
+
|
|
2765
|
+
- `fig-input-gradient` click-to-add no longer creates duplicate stops — the pointerdown handler now stops propagation to prevent the click handler from firing a second add.
|
|
2766
|
+
- `fig-input-gradient` click-to-add now correctly selects the new stop — the original pointerdown event no longer bubbles to document where the new handle's deselect listener would immediately undo the selection.
|
|
2767
|
+
- `fig-input-gradient` color-tip input/change events no longer trigger the drag tooltip — color events are now handled separately from position drag events on the track.
|
|
2768
|
+
|
|
2769
|
+
### Changed
|
|
2770
|
+
|
|
2771
|
+
- `fig-input-gradient` stop handles now have `hit-area="4"` for easier interaction.
|
|
2772
|
+
- `fig-input-gradient` ghost handle uses native `control="add"` and `type="color"` on `fig-handle` instead of manually creating a `fig-color-tip` element.
|
|
2773
|
+
- `fig-handle` `control` attribute and color tip rendering now works on gradient ghost handles (removed `#isGhost` exclusion).
|
|
2774
|
+
|
|
2775
|
+
## [3.20.2]
|
|
2776
|
+
|
|
2777
|
+
### Fixed
|
|
2778
|
+
|
|
2779
|
+
- `fig-input-color` events now include `{ value, hex, rgba }` detail.
|
|
2780
|
+
- `fig-input-angle` events now include `{ value, angle }` detail.
|
|
2781
|
+
- `fig-joystick` events now include `{ value, x, y }` detail.
|
|
2782
|
+
- `fig-input-text` and `fig-input-number` mouse-drag events now include `{ detail: value }` (previously missing).
|
|
2783
|
+
- Playground event output panel now handles primitive event details (strings, numbers) by wrapping them in `{ value }`.
|
|
2784
|
+
|
|
2785
|
+
### Changed
|
|
2786
|
+
|
|
2787
|
+
- Playground: number example defaults to steppers on, multiline text example defaults to autoresize on.
|
|
2788
|
+
- Playground: event output hidden for skeleton example (no interactive controls).
|
|
2789
|
+
|
|
2790
|
+
## [3.20.1]
|
|
2791
|
+
|
|
2792
|
+
### Fixed
|
|
2793
|
+
|
|
2794
|
+
- `fig-input-text` and `fig-input-number` now correctly update the inner element's placeholder when the `placeholder` attribute changes, and no longer show literal `"null"` when the attribute is removed.
|
|
2795
|
+
|
|
2796
|
+
### Changed
|
|
2797
|
+
|
|
2798
|
+
- Multiline text input example in `/figui3` now starts empty with placeholder only.
|
|
2799
|
+
|
|
2800
|
+
## [3.20.0]
|
|
2801
|
+
|
|
2802
|
+
### Added
|
|
2803
|
+
|
|
2804
|
+
- `fig-tooltip` `theme` attribute — applies a color scheme to the tooltip popup (`"dark"`, `"light"`, or `"brand"`). Brand theme uses `--figma-color-bg-brand` background.
|
|
2805
|
+
- `fig-tooltip` `pointer` attribute — set `pointer="false"` to hide the tooltip arrow/caret.
|
|
2806
|
+
- `fig-handle` drag threshold — a 3px movement threshold before a drag begins, preventing accidental drags on click.
|
|
2807
|
+
- `fig-handle` color change events — color handle `input` and `change` events now bubble with `{ color }` detail, so parent components (like `fig-canvas-control`) can react to color edits.
|
|
2808
|
+
- `fig-canvas-control` color value — `value` getter now includes `color` for `type="color"` controls.
|
|
2809
|
+
- `fig-canvas-control` brand-themed tooltips with hidden pointers for a cleaner look during drag.
|
|
2810
|
+
- `fig-canvas-control` tooltip text now prefixed with labels ("Radius", "Angle") for clarity.
|
|
2811
|
+
- Playground event output panel — `/propkit` examples now show a live event output view in the attributes sidebar.
|
|
2812
|
+
- Playground `fig-tooltip` attribute controls for `theme` and `pointer`.
|
|
2813
|
+
|
|
2814
|
+
### Changed
|
|
2815
|
+
|
|
2816
|
+
- `fig-tooltip` default colors now use `light-dark()` for proper light/dark mode support and `color-scheme: dark` base.
|
|
2817
|
+
- `fig-tooltip` box-shadow inner highlight adapts to light/dark mode via `light-dark()`.
|
|
2818
|
+
- `fig-canvas-control` line stroke color uses `light-dark()` for better light-mode visibility.
|
|
2819
|
+
- `fig-canvas-control` line stroke width reduced from 1.5px to 1.25px.
|
|
2820
|
+
- `fig-canvas-control` handle positioning switched from `value` attribute to direct `left`/`top` pixel placement for smoother updates.
|
|
2821
|
+
- `fig-canvas-control` dynamic cursor updates throttled to avoid redundant re-renders (only updates when rounded degree changes).
|
|
2822
|
+
- `fig-canvas-control` point-radius default changed from percentage to pixel radius in playground examples.
|
|
2823
|
+
- `readBooleanValue` in playground now respects `falseValue` for custom bool modes.
|
|
2824
|
+
- Playground uses `Fragment` instead of wrapper `div` around attribute panels.
|
|
2825
|
+
|
|
2826
|
+
## [3.19.0]
|
|
2827
|
+
|
|
2828
|
+
### Added
|
|
2829
|
+
|
|
2830
|
+
- `fig-canvas-control` `type="point-point"` — two full-size handles connected by a styled line, with angle and length inferred from the endpoints. Value shape: `{ x, y, x2, y2 }`.
|
|
2831
|
+
- `fig-canvas-control` `name` attribute supports comma-separated labels (e.g. `"Start, End"`) for dual-handle types.
|
|
2832
|
+
- `fig-canvas-control` point-point handles support direct drag (dynamic directional resize cursor) and rotation via hit area (dragging from hit area rotates around the opposite handle at fixed distance, with rotate cursor and 15-degree snapping).
|
|
2833
|
+
|
|
2834
|
+
### Changed
|
|
2835
|
+
|
|
2836
|
+
- **BREAKING:** Renamed `fig-canvas-point` to `fig-canvas-control` (and class `FigCanvasPoint` to `FigCanvasControl`).
|
|
2837
|
+
|
|
2838
|
+
## [3.18.0]
|
|
2839
|
+
|
|
2840
|
+
### Added
|
|
2841
|
+
|
|
2842
|
+
- `fig-canvas-control` component — a spatial control for interactive point, radius, and angle editing on a user-provided canvas surface. Supports `type` variants: default (point only), `color` (color handle), `point-radius` (resizable circle), and `point-radius-angle` (circle + rotatable angle handle). Value is a JSON object (`{ x, y, radius?, angle? }`). Includes `name`, `tooltips`, `disabled`, `snapping`, `drag-surface`, and `color` attributes.
|
|
2843
|
+
- `fig-handle` `hit-area` attribute — expands the interactive zone around a handle without changing its visual size. Accepts a unitless px padding value, optionally with `circle` keyword (e.g., `hit-area="16"`, `hit-area="16 circle"`).
|
|
2844
|
+
- `fig-handle` `hit-area-mode` attribute — controls hit area behavior: `"handle"` (default) proxies interactions to the handle, `"delegate"` emits a `hitareadown` CustomEvent for parent components to define custom behavior.
|
|
2845
|
+
- `--fig-handle-hit-area-opacity` CSS custom property for debugging hit area bounds (red overlay, default `0`).
|
|
2846
|
+
- `fig-canvas-control` dynamic cursors — radius ring shows a directional resize cursor that rotates to point radially from center on hover and during drag; angle handle hit area shows a rotating cursor reflecting the current angle.
|
|
2847
|
+
- `fig-canvas-control` brand color highlight — radius ring, angle line, and angle handle turn `--figma-color-bg-brand` on hover and during drag.
|
|
2848
|
+
- `fig-canvas-control` radius ring hit area — invisible 12px-wide stroke for forgiving drag interaction without changing visual size.
|
|
2849
|
+
- Playground `/propkit` canvas controls: four `fig-canvas-control` examples (Point, Color, Point + Radius, Point + Radius + Angle) replacing the old standalone Point example.
|
|
2850
|
+
- Playground `fig-handle` hit area controls: size slider, shape segmented control, mode segmented control, and debug opacity slider.
|
|
2851
|
+
- `fig-canvas-control` and `fig-handle` hit area documented in README.
|
|
2852
|
+
|
|
2853
|
+
### Changed
|
|
2854
|
+
|
|
2855
|
+
- `fig-handle` drag from hit area now calculates initial pointer-to-center offset to prevent drag jumps.
|
|
2856
|
+
|
|
2857
|
+
## [3.17.0]
|
|
2858
|
+
|
|
2859
|
+
### Added
|
|
2860
|
+
|
|
2861
|
+
- `fig-input-gradient` drag-to-add — pointerdown on empty track space creates a new stop and immediately begins dragging it.
|
|
2862
|
+
- CSS minification via lightningcss — `npm run build` now produces minified CSS alongside minified JS in `dist/`.
|
|
2863
|
+
- `npm run build:css` script for standalone CSS minification.
|
|
2864
|
+
- Unminified source exports via `@rogieking/figui3/src/*` for debugging.
|
|
2865
|
+
- README restructured with component index table, domain-grouped sections, per-component event documentation, and playground links.
|
|
2866
|
+
- 10 previously undocumented components added to README: field-slider, input-palette, easing-curve, 3d-rotate, origin-grid, skeleton, color-tip, choice, chooser, handle.
|
|
2867
|
+
|
|
2868
|
+
### Changed
|
|
2869
|
+
|
|
2870
|
+
- Default package exports (`main`, `module`, `exports`) now point to minified `dist/` files instead of unminified source.
|
|
2871
|
+
- CDN URLs updated to reference `dist/` paths.
|
|
2872
|
+
- `figGetHighestZIndex` replaced with a monotonic counter — eliminates O(n) full DOM scan on every tooltip/popup open.
|
|
2873
|
+
- Shared reusable canvas for color normalization — `FigInputGradient`, `FigChit`, and `FigColorTip` no longer create throwaway canvases.
|
|
2874
|
+
- Gradient CSS support test results are now cached across `FigFillPicker` instances.
|
|
2875
|
+
- `FigHandle` drag path reduces redundant `getBoundingClientRect` calls by reusing the rect from clamp computation.
|
|
2876
|
+
- Deduplicated `#syncAspectRatioVar`, `#syncPerspectiveVar`, and `#syncCSSVar` into shared `figSyncCssVar` helper across `FigEasingCurve`, `Fig3DRotate`, `FigOriginGrid`, and `FigInputJoystick`.
|
|
2877
|
+
|
|
2878
|
+
### Fixed
|
|
2879
|
+
|
|
2880
|
+
- Event listener leaks — `FigTooltip`, `FigTab`, `FigTabs`, `FigSegment`, `FigDialog`, `FigToast`, `FigDropdown`, and `FigInputAngle` now store bound listener references and correctly remove them in `disconnectedCallback`.
|
|
2881
|
+
- `FigDropdown` was missing `disconnectedCallback` entirely — added cleanup for slotchange, input, and change listeners.
|
|
2882
|
+
- `FigFillPicker` resource leaks — MutationObservers (`#dialogOpenObserver`, `#webcamTabObserver`) are now disconnected, webcam MediaStream tracks are stopped, and video blob URLs are revoked on disconnect.
|
|
2883
|
+
- `FigInputGradient` resource leaks — `#colorObserver` is disconnected, tooltip timer is cleared, and track event listeners are removed on disconnect.
|
|
2884
|
+
- Duplicate CSS declarations removed: button `color`, tab `content`, color swatch `color-scheme`/`border-radius`, chit pseudo-element sizing, segmented control `display`, switch `margin`, field `flex`, joystick crosshair `height`, 3D rotate `--border-end-color`.
|
|
2885
|
+
- Merged duplicate `&:active` blocks inside button `&:hover`.
|
|
2886
|
+
- Removed empty `&[expanded]` ruleset.
|
|
2887
|
+
|
|
2888
|
+
## [3.16.0]
|
|
2889
|
+
|
|
2890
|
+
### Added
|
|
2891
|
+
|
|
2892
|
+
- `fig-input-color` `disabled` attribute support — propagates disabled state to hex input, alpha input, fill picker, and chit.
|
|
2893
|
+
- `fig-input-fill` `#syncDisabled()` — updates child controls in-place instead of full re-render on disabled change.
|
|
2894
|
+
- `fig-input-palette` `add` attribute — set `add="false"` to hide the add-color button.
|
|
2895
|
+
- `fig-input-palette` dual-render layout with inline chit strip and expanded color rows always present in DOM, toggled via CSS.
|
|
2896
|
+
- `fig-chooser` scroll-snap support (`scroll-snap-type: y mandatory`) for smooth item alignment.
|
|
2897
|
+
- `fig-chooser` `padding="false"` attribute — removes internal padding and widens gap for edge-to-edge choice layouts.
|
|
2898
|
+
- `fig-choice` `padding="false"` attribute — zeroes choice padding via `--fig-choice-padding` CSS var.
|
|
2899
|
+
- `fig-choice` border-radius now derives from `--fig-choice-padding` for consistent inset ring appearance.
|
|
2900
|
+
- Disabled toggle in playground attributes for `fig-input-color`, `fig-input-gradient`, and `fig-input-palette`.
|
|
2901
|
+
- Padding toggle in playground attributes for `fig-chooser`.
|
|
2902
|
+
- `/propkit` nav group headers — sections are now grouped under labelled categories (Field controls, Composite controls, etc.).
|
|
2903
|
+
- `/propkit` overhauled sections with new Chooser examples (text, images, images + labels, colors) and consolidated field control catalog.
|
|
2904
|
+
- `data-playground-hide-field` attribute — hides the Field controls panel in the attributes sidebar for specific examples.
|
|
2905
|
+
- Playground `data-playground-*` attribute preservation during markup merge for roundtrip editing fidelity.
|
|
2906
|
+
|
|
2907
|
+
### Changed
|
|
2908
|
+
|
|
2909
|
+
- `fig-chit` disabled selector tightened to `:not([disabled="false"])` to support explicit opt-out.
|
|
2910
|
+
- `fig-input-palette` layout switched from CSS grid to flex column with separate `.palette-colors-inline` and `.palette-colors-expanded` containers.
|
|
2911
|
+
- `fig-input-color` hover state now shows a subtle border outline.
|
|
2912
|
+
- `fig-easing-curve` duration bar width increased from 5 to 7 with radius from 3 to 4.
|
|
2913
|
+
- `fig-easing-curve` removed nested `fig-handle` sizing rules from `.fig-easing-curve-handle` (handled by component defaults).
|
|
2914
|
+
- `fig-choice` selection ring width increased from 1px to 1.25px.
|
|
2915
|
+
- `fig-chooser` overflow changed from `hidden auto` to `visible auto`.
|
|
2916
|
+
- `/propkit` sections reorganized alphabetically with group labels; removed standalone Handle section from `/figui3`.
|
|
2917
|
+
- Removed chooser content mode switcher from attributes sidebar (replaced by separate per-content-type examples).
|
|
2918
|
+
- Playground CSS formatting cleanup (whitespace normalization in App.css).
|
|
2919
|
+
|
|
2920
|
+
### Fixed
|
|
2921
|
+
|
|
2922
|
+
- `fig-input-fill` disabled attribute change no longer triggers a full re-render — uses targeted `#syncDisabled()` instead.
|
|
2923
|
+
- `fig-input-palette` expanded state CSS scoping now correctly targets `.palette-colors-expanded` container.
|
|
2924
|
+
|
|
2925
|
+
## [3.15.0]
|
|
2926
|
+
|
|
2927
|
+
### Added
|
|
2928
|
+
|
|
2929
|
+
- `fig-input-color` `text` attribute is now observed and triggers UI rebuild, enabling runtime toggle of hex input visibility.
|
|
2930
|
+
- `fig-input-palette` `expanded` attribute for vertical layout with text and alpha inputs per color.
|
|
2931
|
+
- `fig-input-palette` incremental add — clicking "Add color" appends without re-rendering existing pickers.
|
|
2932
|
+
- `fig-input-palette` wraps color pickers in a `.palette-colors` div, separating them from the add button.
|
|
2933
|
+
- `/propkit` Expanded toggle for palette attributes panel.
|
|
2934
|
+
- `/propkit` Minimal palette example with two colors.
|
|
2935
|
+
- `/propkit` Skeleton example (moved from `/figui3`).
|
|
2936
|
+
- `/figui3` Fill segmented control (Solid/Gradient) for chit example.
|
|
2937
|
+
- `/figui3` Text toggle for `fig-input-color` attributes panel.
|
|
2938
|
+
- `fig-field[direction="horizontal"]:has(> fig-input-palette)` padding rule for proper field alignment.
|
|
2939
|
+
|
|
2940
|
+
### Changed
|
|
2941
|
+
|
|
2942
|
+
- `fig-input-palette` uses `fig-input-color` instead of `fig-fill-picker` for each color swatch.
|
|
2943
|
+
- `fig-input-palette` add button is now a ghost icon button with tooltip in all states.
|
|
2944
|
+
- `fig-input-palette` layout uses CSS grid (`inputs` + `button` areas) instead of inline-flex.
|
|
2945
|
+
- `fig-chit` reworked selection ring: moved from `::before` box-shadow to element-level `box-shadow` for correct stacking.
|
|
2946
|
+
- `fig-chit` swapped `::before` / `::after` roles: `::before` now renders the color/gradient fill, `::after` renders the border overlay with `z-index: 1`.
|
|
2947
|
+
- `fig-chit` `::before`/`::after` sizing now respects `--padding` for inset thumbnails at all sizes.
|
|
2948
|
+
- `fig-input-gradient` scoped chit selector to direct child (`> fig-chit`).
|
|
2949
|
+
- `/propkit` Palette attributes panel header renamed from "Input-palette" to "Palette".
|
|
2950
|
+
- Exclude `src` attribute from playground URL parameter serialization.
|
|
2951
|
+
|
|
2952
|
+
### Fixed
|
|
2953
|
+
|
|
2954
|
+
- `fig-chit` selected ring was invisible due to overlapping box-shadow spreads on `::before`.
|
|
2955
|
+
- `fig-chit` checkerboard background now targets `::after` to match the reworked pseudo-element roles.
|
|
2956
|
+
- `fig-input-color` `text="false"` now properly hides hex input (strict `=== "true"` check).
|
|
2957
|
+
|
|
2958
|
+
## [3.14.1]
|
|
2959
|
+
|
|
2960
|
+
### Added
|
|
2961
|
+
|
|
2962
|
+
- `fig-handle` `select()` and `deselect()` public API methods for programmatic selection with color tip management.
|
|
2963
|
+
- `fig-handle` `showColorTip()` and `hideColorTip()` public API methods to toggle color tip visibility without destroy/recreate.
|
|
2964
|
+
- `fig-input-gradient` Tab/Shift+Tab cycles selection through stop handles with wraparound.
|
|
2965
|
+
- `fig-input-gradient` Left/Right arrow keys nudge selected stop by 1% (Shift for 10%), with tooltip showing position.
|
|
2966
|
+
- `fig-handle` auto-selects on drag start if not already selected.
|
|
2967
|
+
|
|
2968
|
+
### Fixed
|
|
2969
|
+
|
|
2970
|
+
- `fig-tooltip` `destroy()` now nulls `this.popup` reference, fixing tooltip not reappearing on subsequent show/hide cycles.
|
|
2971
|
+
- `fig-input-gradient` track-level click swallower after drag no longer eats clicks on other handles, fixing intermittent selection failures.
|
|
2972
|
+
- `fig-input-gradient` hides color tip during drag and arrow key nudge, restoring it when done.
|
|
2973
|
+
|
|
2974
|
+
## [3.14.0]
|
|
2975
|
+
|
|
2976
|
+
### Added
|
|
2977
|
+
|
|
2978
|
+
- `fig-tooltip` `show` attribute — persists the tooltip when present/true, ignoring hover and click interactions. Removing the attribute allows normal hide behavior.
|
|
2979
|
+
- `fig-tooltip` `text` getter/setter — updates tooltip content in-place without re-rendering the popup. Repositions automatically if open.
|
|
2980
|
+
- `fig-tooltip` `text` observed attribute — setting via `setAttribute("text", ...)` also updates content without re-render.
|
|
2981
|
+
- `fig-input-gradient` drag tooltips — each stop handle is wrapped in a `fig-tooltip` that shows the percentage position during drag.
|
|
2982
|
+
- `fig-handle` `.dragging` class — added during actual drag, removed on pointer up. Not applied on simple click.
|
|
2983
|
+
- `fig-chit` `medium` size (1.5rem) with full-area swatch style.
|
|
2984
|
+
- `/figui3` Tooltip playground: action segmented control (hover/click/manual), show switch, and button text updates per action mode.
|
|
2985
|
+
|
|
2986
|
+
### Changed
|
|
2987
|
+
|
|
2988
|
+
- `fig-tooltip` `show` attribute callback now fires synchronously instead of via `requestAnimationFrame` for immediate persistence.
|
|
2989
|
+
- `fig-tooltip` `showPopup()` lazily creates the popup if not yet rendered, fixing manual action mode.
|
|
2990
|
+
- `fig-tooltip` `showPopup()` sets `display: block` before repositioning for accurate dimensions.
|
|
2991
|
+
- `fig-handle` cursor and `.dragging` class only apply on actual drag movement, not on click.
|
|
2992
|
+
- `fig-input-gradient` uses `fig-chit size="medium"` instead of `fig-fill-picker` for gradient preview.
|
|
2993
|
+
- `fig-input-gradient` stop handles use `drag-surface` to target the track container through tooltip wrappers.
|
|
2994
|
+
- `fig-chit` large size increased to 2rem.
|
|
2995
|
+
- `/figui3` Handle playground: merged Color and Color tip toggles into single Color toggle.
|
|
2996
|
+
|
|
2997
|
+
### Fixed
|
|
2998
|
+
|
|
2999
|
+
- `fig-tooltip` crash when calling `showPopup()` on `action="manual"` tooltip (popup was never created).
|
|
3000
|
+
- `fig-input-gradient` drag tooltip not appearing due to `requestAnimationFrame` race in `show` attribute handler.
|
|
3001
|
+
- `fig-input-gradient` handle stacking/positioning when wrapped in `fig-tooltip` (`display: contents`).
|
|
3002
|
+
|
|
3003
|
+
## [3.13.1]
|
|
3004
|
+
|
|
3005
|
+
### Added
|
|
3006
|
+
|
|
3007
|
+
- `fig-color-tip` `add` attribute — replaces the internal chit with an add icon and emits an `add` event on click.
|
|
3008
|
+
- `fig-handle` `add` attribute — shows a `fig-color-tip` in add mode, always visible and not tied to select/deselect.
|
|
3009
|
+
- `fig-input-gradient` ghost handle now uses `add` mode instead of a tooltip, showing the add icon above the handle on hover.
|
|
3010
|
+
- Clicking empty gradient track space to add a stop now auto-selects and opens the color tip on the new handle.
|
|
3011
|
+
|
|
3012
|
+
### Changed
|
|
3013
|
+
|
|
3014
|
+
- `/figui3` Color Tip attributes panel now shows Add toggle at the top; value/color field is hidden when Add is on.
|
|
3015
|
+
- `/figui3` Handle attributes panel now shows Add toggle; type and color fields are hidden when Add is on.
|
|
3016
|
+
- `/propkit` Gradient description updated to explain interaction model.
|
|
3017
|
+
|
|
3018
|
+
### Fixed
|
|
3019
|
+
|
|
3020
|
+
- Removed `contain: layout style` from `fig-handle` color/add mode to prevent drag positioning issues.
|
|
3021
|
+
|
|
3022
|
+
## [3.13.0]
|
|
3023
|
+
|
|
3024
|
+
### Added
|
|
3025
|
+
|
|
3026
|
+
- `fig-handle` `type="color"` attribute — clicking a color-type handle opens a `fig-color-tip` positioned above it; deselecting closes it. Color changes from the tip update the handle's fill.
|
|
3027
|
+
- `fig-handle` `size="small"` support for compact handles.
|
|
3028
|
+
- `fig-handle` selection now uses `click` instead of `pointerdown`, so dragging no longer selects.
|
|
3029
|
+
- `fig-color-tip` `alpha` attribute — defaults to `true`, enabling opacity control in the fill picker. Set `alpha="false"` to disable.
|
|
3030
|
+
- `fig-color-tip` auto-selects when its picker opens and deselects when the picker dialog closes.
|
|
3031
|
+
- `fig-input-gradient` stop handles now use `type="color"` with `size="small"`, allowing inline color editing per stop.
|
|
3032
|
+
- `fig-input-gradient` ghost handle — hovering empty track space shows a preview handle at the cursor position with the interpolated gradient color and an "Add color stop" tooltip. Clicking adds a new stop.
|
|
3033
|
+
- `fig-tooltip` `action="manual"` mode — skips auto-binding event listeners so `render()`/`showPopup()`/`hidePopup()` can be called programmatically.
|
|
3034
|
+
- `fig-handle` now supports `drag-snapping` with `false` (default), `modifier` (hold Shift), and `true` (always) modes to snap drag position to edges, center, and diagonals.
|
|
3035
|
+
- New `fig-color-tip` component for compact solid-color picking, built on `fig-fill-picker` and supporting `value`, `selected`, and `disabled`.
|
|
3036
|
+
- New `/figui3` Color Tip playground section with default and state examples.
|
|
3037
|
+
|
|
3038
|
+
### Changed
|
|
3039
|
+
|
|
3040
|
+
- `/figui3` Handle playground example defaults to `type="color"` with a Color toggle in the attributes panel.
|
|
3041
|
+
- `/figui3` Attributes View now exposes `fig-color-tip` `value` using `fig-input-color` (Figma picker) with alpha enabled, plus `selected`/`disabled` toggles.
|
|
3042
|
+
- Handle attributes panel shows Size segmented control (Default / Small) and hides Color row when type is not "color".
|
|
3043
|
+
|
|
3044
|
+
### Fixed
|
|
3045
|
+
|
|
3046
|
+
- `fig-tooltip` positioning inside dialogs with `contain: layout` — tooltip popup now offsets by the container's position so tooltips render correctly inside fill picker dialogs.
|
|
3047
|
+
- `fig-handle` with `type="color"` no longer repositions on click — only drags move the handle.
|
|
3048
|
+
- Clicking inside a `fig-color-tip` picker dialog no longer deselects the parent `fig-handle`.
|
|
3049
|
+
- `fig-input-color` now reacts to `alpha` attribute changes so alpha controls appear/disappear reliably during live attribute updates.
|
|
3050
|
+
|
|
3051
|
+
## [3.12.1]
|
|
3052
|
+
|
|
3053
|
+
### Added
|
|
3054
|
+
|
|
3055
|
+
- CSS `contain` properties across components for reduced layout thrashing and paint invalidation:
|
|
3056
|
+
- `contain: strict` on fixed-size controls (switch, checkbox, radio, mask-icon, handle, close icon).
|
|
3057
|
+
- `contain: layout paint` on toast, slider track container, segmented control, avatar, and chit.
|
|
3058
|
+
- `contain: layout` on dialog/popup/tooltip surfaces and fill picker dialog.
|
|
3059
|
+
- `fig-handle` example in Propkit playground.
|
|
3060
|
+
|
|
3061
|
+
### Changed
|
|
3062
|
+
|
|
3063
|
+
- Gradient interpolation UI merged into a single dropdown with optgroups (sRGB / OKLab / OKLCH) and a "Mixing" label, moved below the gradient preview.
|
|
3064
|
+
- Default gradient example updated to `#7AEA66` → `#FF00BF` at 90°.
|
|
3065
|
+
|
|
3066
|
+
## [3.12.0]
|
|
3067
|
+
|
|
3068
|
+
### Added
|
|
3069
|
+
|
|
3070
|
+
- Color input mode switcher in solid fill picker — dropdown to choose between Hex, RGB, HSL, HSB, LAB (OKLab), and LCH (OKLCH) input modes.
|
|
3071
|
+
- OKLab/OKLCH reverse conversion utilities (`#oklabToRGB`, `#oklchToRGB`) for bidirectional color editing in perceptual color spaces.
|
|
3072
|
+
- Tooltips on each color component input (e.g. "Red", "Hue", "Lightness", "Chroma").
|
|
3073
|
+
- Gamut selector (sRGB / Display P3) in fill picker dialog header, affecting both solid canvas rendering and gradient stop color format.
|
|
3074
|
+
- Eyedropper button repositioned into `.fig-fill-picker-sliders` grid with "Sample color" tooltip.
|
|
3075
|
+
- Color input mode preference persisted via localStorage.
|
|
3076
|
+
|
|
3077
|
+
### Changed
|
|
3078
|
+
|
|
3079
|
+
- Solid fill picker inputs area now uses a `fig-dropdown` + dynamic `input-combo` fields instead of a single `fig-input-color`.
|
|
3080
|
+
- `.fig-fill-picker-sliders` uses CSS grid layout with eyedropper spanning the left column.
|
|
3081
|
+
- Sliders no longer wrapped in `fig-field` elements inside `.fig-fill-picker-sliders`.
|
|
3082
|
+
- Gradient interpolation dropdown trimmed to sRGB Linear, OKLab, and OKLCH (gamut selection moved to top-level header).
|
|
3083
|
+
- Default gradient `interpolationSpace` changed from `srgb` to `oklab`.
|
|
3084
|
+
|
|
3085
|
+
## [3.11.0]
|
|
3086
|
+
|
|
3087
|
+
### Added
|
|
3088
|
+
|
|
3089
|
+
- New `fig-input-gradient` component — a gradient-only fill input that opens `fig-fill-picker` locked to gradient mode.
|
|
3090
|
+
- Gradient color interpolation support: `interpolationSpace` (`srgb`, `srgb-linear`, `display-p3`, `oklab`, `oklch`) and `hueInterpolation` (`shorter`, `longer`, `increasing`, `decreasing`) for OKLCH.
|
|
3091
|
+
- `fig-preview` component for displaying gradient bar previews with stop handles.
|
|
3092
|
+
- Gradient interpolation UI in `fig-fill-picker`: space dropdown and hue interpolation dropdown (shown for OKLCH).
|
|
3093
|
+
- Playground section and Attributes View support for `fig-input-gradient`.
|
|
3094
|
+
- README documentation for `fig-input-gradient` and gradient interpolation spaces.
|
|
3095
|
+
|
|
3096
|
+
### Fixed
|
|
3097
|
+
|
|
3098
|
+
- Fixed gradient CSS interpolation syntax — the `in <color-space>` clause was incorrectly placed as a separate comma-delimited argument instead of within the same argument group as the direction/angle (e.g. `conic-gradient(from 180deg in oklch shorter hue, ...)` instead of the invalid `conic-gradient(in oklch shorter hue, from 180deg, ...)`). This caused browsers to reject the interpolation and silently fall back to sRGB.
|
|
3099
|
+
|
|
3100
|
+
### Changed
|
|
3101
|
+
|
|
3102
|
+
- `fig-input-fill` and `fig-fill-picker` gradient value shape now includes `interpolationSpace` (and `hueInterpolation` for OKLCH).
|
|
3103
|
+
- Updated `fig-input-fill` and `fig-input-color` focus/popup-open outline styling with `.has-popup-open` class.
|
|
3104
|
+
- Refined `fig-input-fill` internal CSS selectors for label/input padding to avoid conflicts with `fig-input-gradient`.
|
|
3105
|
+
|
|
3106
|
+
## [3.10.0]
|
|
3107
|
+
|
|
3108
|
+
### Added
|
|
3109
|
+
|
|
3110
|
+
- `fig-skeleton` component and editor scaffold.
|
|
3111
|
+
|
|
3112
|
+
## [3.9.3]
|
|
3113
|
+
|
|
3114
|
+
### Changed
|
|
3115
|
+
|
|
3116
|
+
- Added `dial` attribute support to `fig-input-angle` (defaults to `true`; `dial="false"` hides the circular dial).
|
|
3117
|
+
- Renamed `show-rotations` usage to `rotations` for `fig-input-angle` while keeping backward-compatible alias support.
|
|
3118
|
+
- Added `Dial` and `Rotations` controls to playground Attributes View for `fig-input-angle`.
|
|
3119
|
+
- Updated `fig-input-angle` layout so its number input keeps intrinsic width by default, while `full` mode still expands as expected.
|
|
3120
|
+
- Updated `README` docs for `fig-input-angle` to cover `dial` and `rotations`.
|
|
3121
|
+
|
|
3122
|
+
## [3.9.2]
|
|
3123
|
+
|
|
3124
|
+
### Changed
|
|
3125
|
+
|
|
3126
|
+
- Updated `fig-choice` styling with reusable tokens for padding and selection-ring width, and adjusted selected-state visuals to use a secondary background plus an image outline ring.
|
|
3127
|
+
|
|
3128
|
+
### Fixed
|
|
3129
|
+
|
|
3130
|
+
- Removed disabled-state opacity dimming from `fig-chit` so disabled chips keep consistent text/icon contrast.
|
|
3131
|
+
|
|
3132
|
+
## [3.9.1]
|
|
3133
|
+
|
|
3134
|
+
### Fixed
|
|
3135
|
+
|
|
3136
|
+
- Synced segmented-control playground examples to explicitly use `sizing="equal"` so Attributes View and code markup stay aligned by default on `/figui3` and `/propkit`.
|
|
3137
|
+
|
|
3138
|
+
## [3.9.0]
|
|
3139
|
+
|
|
3140
|
+
### Added
|
|
3141
|
+
|
|
3142
|
+
- Added `animated` and `sizing` attributes to `fig-segmented-control`.
|
|
3143
|
+
- Added a sliding selected-segment indicator for `fig-segmented-control` when `animated` is enabled.
|
|
3144
|
+
- Added `Animated` and `Sizing` controls for segmented controls in playground Attributes View.
|
|
3145
|
+
|
|
3146
|
+
### Changed
|
|
3147
|
+
|
|
3148
|
+
- Updated segmented-control sizing so `sizing="auto"` keeps intrinsic width, including when `full` is present.
|
|
3149
|
+
- Updated playground segmented-control examples on `/figui3` and `/propkit` so `Animated` defaults to off in Attributes View.
|
|
3150
|
+
- Updated 3D Rotate `fields` options in playground Attributes View to `None`, `X, Y, Z`, and `X, Y`.
|
|
3151
|
+
- Updated segmented-control docs in `README.md` to include `animated` and `sizing`.
|
|
3152
|
+
|
|
3153
|
+
### Fixed
|
|
3154
|
+
|
|
3155
|
+
- Fixed animated segmented-control flicker by stabilizing indicator sync during transient layout/mutation frames.
|
|
3156
|
+
- Fixed playground animated segmented-control flashing by avoiding value persistence re-renders for animated controls.
|
|
3157
|
+
|
|
3158
|
+
## [3.8.2]
|
|
3159
|
+
|
|
3160
|
+
### Changed
|
|
3161
|
+
|
|
3162
|
+
- Changed easing curve arm stroke from `--figma-color-border-strong` to `--figma-color-bordertranslucent` for a softer appearance.
|
|
3163
|
+
|
|
3164
|
+
## [3.8.1]
|
|
3165
|
+
|
|
3166
|
+
### Changed
|
|
3167
|
+
|
|
3168
|
+
- Reduced easing curve handle radius from 6 to 5 for bezier and spring handles.
|
|
3169
|
+
- Updated duration bar width from 4.25 to 5.
|
|
3170
|
+
- Switched `fig-handle` inside easing curve handles to use explicit `--width`/`--height` CSS vars instead of `width: 100%; height: 100%`.
|
|
3171
|
+
|
|
3172
|
+
## [3.8.0]
|
|
3173
|
+
|
|
3174
|
+
### Added
|
|
3175
|
+
|
|
3176
|
+
- Added `fig-handle` component — a reusable, style-customizable handle element with CSS vars for `--width`, `--height`, `--fill`, `--border-radius`, `--box-shadow`, `--outline`, and `--border`.
|
|
3177
|
+
- Added `--icon-reset` icon token.
|
|
3178
|
+
- Added reset button to `fig-joystick` that appears when the value differs from the default (50% 50%) and resets on click. Exposes `default` attribute and `--is-not-default` CSS var.
|
|
3179
|
+
- Added `:host` selectors to `base.css` and `components.css` root rules for shadow DOM compatibility.
|
|
3180
|
+
|
|
3181
|
+
### Changed
|
|
3182
|
+
|
|
3183
|
+
- Refactored `fig-joystick` to use `fig-handle` instead of a styled div.
|
|
3184
|
+
- Refactored `fig-origin-grid` to use `fig-handle` instead of a styled span, setting `--border-radius` to match the original rounded-square shape.
|
|
3185
|
+
- Refactored `fig-easing-curve` handles to use `foreignObject` + `fig-handle` instead of SVG circles, and the duration bar to use `foreignObject` + `fig-handle` instead of an SVG rect.
|
|
3186
|
+
- Increased easing curve handle size from 8.5 to 12 SVG units.
|
|
3187
|
+
- Removed unused easing curve CSS variables (`--easing-duration-bar-fill`, `--easing-duration-bar-stroke`, `--easing-duration-bar-stroke-width`).
|
|
3188
|
+
- Added `/sandbox` route documentation to README.
|
|
3189
|
+
|
|
3190
|
+
## [3.7.0]
|
|
3191
|
+
|
|
3192
|
+
### Added
|
|
3193
|
+
|
|
3194
|
+
- Added `steppers` passthrough support to `fig-field-slider`, forwarding to its internal `fig-input-number`.
|
|
3195
|
+
- Added a `Steppers` toggle to the `/propkit` field-slider attributes controls.
|
|
3196
|
+
|
|
3197
|
+
### Changed
|
|
3198
|
+
|
|
3199
|
+
- Updated `fig-origin-grid` and `fig-joystick` handle visuals for a more consistent compact handle treatment.
|
|
3200
|
+
- Added configurable slider thumb outline tokens and applied focus-outline styling for `fig-field-slider` thumbs.
|
|
3201
|
+
- Refined `fig-field-slider` number-input pill styling with explicit border radius.
|
|
3202
|
+
|
|
3203
|
+
### Fixed
|
|
3204
|
+
|
|
3205
|
+
- Fixed `fig-field-slider` steppers sync so the internal number input stays in sync after slider re-renders.
|
|
3206
|
+
- Fixed overflowed `fig-origin-grid` handles to suppress regular handle box-shadow in arrow-mask overflow states.
|
|
3207
|
+
|
|
3208
|
+
## [3.6.0]
|
|
3209
|
+
|
|
3210
|
+
### Added
|
|
3211
|
+
|
|
3212
|
+
- Added `fig-field-slider` component that composes `fig-field` + `fig-slider`, defaults to `label="Label"`, `direction="horizontal"`, and `text="true"`, and re-emits `input`/`change` events.
|
|
3213
|
+
- Added a top-level **Field Slider** section to `/propkit` playground with a dedicated example.
|
|
3214
|
+
- Added slider styling tokens: `--slider-thumb-color`, `--slider-thumb-radius`, `--slider-tick-width`, `--slider-tick-height`, `--slider-tick-radius`, `--slider-tick-opacity`, and `--slider-stepper-padding`.
|
|
3215
|
+
|
|
3216
|
+
### Changed
|
|
3217
|
+
|
|
3218
|
+
- Refined `fig-field-slider` visuals to a full-surface style with custom thumb/tick sizing, opacity, radius, and masking behavior.
|
|
3219
|
+
- Updated `/propkit` field-slider attributes view ordering and visibility (type-first; removed direction/value/min/max/step/placeholder/default/precision controls).
|
|
3220
|
+
|
|
3221
|
+
### Fixed
|
|
3222
|
+
|
|
3223
|
+
- Fixed `fig-field-slider` slider type updates not always reflecting visually by improving initial attribute sync timing.
|
|
3224
|
+
- Fixed field-slider type defaults so `type="delta"` and `type="stepper"` enforce `default="50"`, and stepper enforces `step="10"` when not explicitly provided.
|
|
3225
|
+
- Fixed blank label handling in `fig-field-slider` so `label=""` removes the rendered label element.
|
|
3226
|
+
|
|
3227
|
+
## [3.5.0]
|
|
3228
|
+
|
|
3229
|
+
### Added
|
|
3230
|
+
|
|
3231
|
+
- Added `checkerboard` attribute for `fig-image` — shows a checkerboard pattern behind the image, passed through to the inner `fig-chit`.
|
|
3232
|
+
- Added `checkerboard` attribute for `fig-chit` — displays a checkerboard background via CSS.
|
|
3233
|
+
- Added `--chit-bg-repeat` CSS variable to `fig-chit` for controllable background repeat behavior.
|
|
3234
|
+
- Added "Checker" toggle to image attributes view in playground.
|
|
3235
|
+
|
|
3236
|
+
### Fixed
|
|
3237
|
+
|
|
3238
|
+
- Fixed `fig-chit` not resolving CSS variable backgrounds — added `#resolveBackground` that computes actual values from `var()` references.
|
|
3239
|
+
- Fixed `fig-chit` `#detectType` treating empty `url()` as an image type — now checks for a non-empty URL source.
|
|
3240
|
+
- Fixed `fig-chit` `::after` background shorthand resetting longhand properties (size, position, repeat) — switched to `background-image` with individual longhands.
|
|
3241
|
+
- Fixed `fig-image` defaulting to `background="url()"` when no source is set — now uses `var(--figma-color-bg-secondary)` or empty `url()` when checkerboard is active.
|
|
3242
|
+
- Fixed `fig-image` always forcing `data-type="image"` on its inner `fig-chit` for consistent thumbnail rendering.
|
|
3243
|
+
|
|
3244
|
+
## [3.4.3]
|
|
3245
|
+
|
|
3246
|
+
### Fixed
|
|
3247
|
+
|
|
3248
|
+
- Fixed drag toggle not syncing correctly in chooser attributes view — bare boolean attributes now read as `true` in string bool mode.
|
|
3249
|
+
- Fixed playground `#app` min-width to account for main content padding.
|
|
3250
|
+
- Fixed attributes sidebar switching to `absolute` positioning at narrow viewports to prevent overlap when horizontally scrolling.
|
|
3251
|
+
|
|
3252
|
+
### Changed
|
|
3253
|
+
|
|
3254
|
+
- Added default `axis-labels="X Y"` to joystick example in `/propkit`.
|
|
3255
|
+
- Removed stale verification screenshots and reports.
|
|
3256
|
+
|
|
3257
|
+
## [3.4.2]
|
|
3258
|
+
|
|
3259
|
+
### Fixed
|
|
3260
|
+
|
|
3261
|
+
- Fixed `fig-segmented-control[full]` and `fig-dropdown[full]` to respect `full="false"` via `:not([full="false"])` guard.
|
|
3262
|
+
- Added missing `full` attribute support for `fig-dropdown`.
|
|
3263
|
+
|
|
3264
|
+
## [3.4.1]
|
|
3265
|
+
|
|
3266
|
+
### Fixed
|
|
3267
|
+
|
|
3268
|
+
- Fixed playground URL path handling to preserve trailing slash style, preventing routing issues when embedded in external sites.
|
|
3269
|
+
- Prevented no-op `replaceState` calls in playground navigation that could interfere with host routing.
|
|
3270
|
+
|
|
3271
|
+
### Changed
|
|
3272
|
+
|
|
3273
|
+
- Removed chooser example from `/figui3` playground (still available in `/propkit`).
|
|
3274
|
+
|
|
3275
|
+
## [3.4.0]
|
|
3276
|
+
|
|
3277
|
+
### Added
|
|
3278
|
+
|
|
3279
|
+
- Added `fig-chooser` component with keyboard navigation, selection management, and scroll overflow detection.
|
|
3280
|
+
- Added `overflow` attribute for `fig-chooser` — `overflow="buttons"` (default) uses custom nav buttons with easing gradients, `overflow="scrollbar"` shows native scrollbars.
|
|
3281
|
+
- Added `drag` attribute for `fig-chooser` — enables drag-to-scroll (on by default, set `drag="false"` to disable).
|
|
3282
|
+
- Added `loop` attribute for `fig-chooser` — when present, arrow key navigation wraps around; when absent, stops at edges.
|
|
3283
|
+
- Added `fig-choice` element with selected, hover, and disabled states.
|
|
3284
|
+
- Added `--eased-fade-stops` CSS variable to `:root` for reusable easing gradients.
|
|
3285
|
+
- Added chooser example to `/propkit` playground with image grid, layout/overflow/max-size/drag/loop controls.
|
|
3286
|
+
- Added URL-based state sharing in the playground — attribute changes are reflected in the URL for shareable links.
|
|
3287
|
+
- Added right-pinned attributes sidebar to the playground layout.
|
|
3288
|
+
|
|
3289
|
+
### Changed
|
|
3290
|
+
|
|
3291
|
+
- Moved `AttributesView` panels to a fixed right sidebar with separated sections.
|
|
3292
|
+
- Switched playground placeholder images to `picsum.photos` for reliability.
|
|
3293
|
+
- Removed `focus-visible` outline from `fig-choice` in favor of selected style for keyboard navigation.
|
|
3294
|
+
- Suppressed hover style on selected `fig-choice` elements.
|
|
3295
|
+
|
|
3296
|
+
### Fixed
|
|
3297
|
+
|
|
3298
|
+
- Fixed `fig-chooser` layout change not syncing max-size style — moved handler from dead code path to dropdown onChange.
|
|
3299
|
+
- Fixed playground URL parameters being lost on page refresh.
|
|
3300
|
+
- Fixed `fig-field` label toggle state not persisting via URL parameters.
|
|
3301
|
+
- Added missing `*.svg?raw` module declaration to fix TypeScript build.
|
|
3302
|
+
|
|
3303
|
+
## [3.3.0]
|
|
3304
|
+
|
|
3305
|
+
### Fixed
|
|
3306
|
+
|
|
3307
|
+
- Fixed `fig-tabs` not selecting the initial tab when `value` attribute is set — `#selectByValue` and `handleClick` now properly set the `selected` attribute on the matching `fig-tab`.
|
|
3308
|
+
- Deferred initial tab selection in `fig-tabs` to `requestAnimationFrame` to ensure child elements are upgraded before selection runs.
|
|
3309
|
+
|
|
3310
|
+
### Added
|
|
3311
|
+
|
|
3312
|
+
- Added `[full]` attribute support for `fig-input-angle` (CSS and playground toggle).
|
|
3313
|
+
- Added `theme="auto"` for `fig-toast` — automatically resolves to the opposite of the page's current `color-scheme` at show time.
|
|
3314
|
+
- Added `theme="success"` option for `fig-toast`.
|
|
3315
|
+
- Added "Icon" toggle and "Borderless" toggle to the `fig-header` playground attributes view.
|
|
3316
|
+
- Added "Prepend" field steppers to popup offset inputs in the playground.
|
|
3317
|
+
|
|
3318
|
+
### Changed
|
|
3319
|
+
|
|
3320
|
+
- Renamed "Input Angle" section to "Angle input" and moved it below "Number input" in the `/figui3` playground nav.
|
|
3321
|
+
- Renamed tabs attributes view header to "Tabs" and removed unused `value`, `name`, and `disabled` fields.
|
|
3322
|
+
- Refactored copy prompt to derive from the code markup string instead of querying the live DOM, making it work for both `/figui3` and `/propkit` examples.
|
|
3323
|
+
- Applied sentence case to all playground attributes view labels and headings.
|
|
3324
|
+
- Set `columns="thirds"` on all attributes view fields for consistent layout.
|
|
3325
|
+
|
|
3326
|
+
## [3.2.0]
|
|
3327
|
+
|
|
3328
|
+
### Added
|
|
3329
|
+
|
|
3330
|
+
- Added a new `Icons` segmented control example to the `/figui3` playground, reusing the same icon set as `/propkit` for consistency.
|
|
3331
|
+
|
|
3332
|
+
### Changed
|
|
3333
|
+
|
|
3334
|
+
- Updated `/figui3` segmented control attributes to hide `value` and `name` fields in the Attributes panel, matching `/propkit`.
|
|
3335
|
+
- Renamed the default `/figui3` segmented control example label from `Default` to `Text`.
|
|
3336
|
+
|
|
3337
|
+
## [3.1.0]
|
|
3338
|
+
|
|
3339
|
+
### Added
|
|
3340
|
+
|
|
3341
|
+
- Added value-driven segmented control behavior so setting `fig-segmented-control[value]` selects the matching segment, with fallback matching from `fig-segment` text content when segment `value` is omitted.
|
|
3342
|
+
- Added bubbling `input` and `change` events for `fig-segmented-control` with the resolved selected value in `event.detail`.
|
|
3343
|
+
|
|
3344
|
+
### Changed
|
|
3345
|
+
|
|
3346
|
+
- Updated playground page titles for `/figui3` and `/propkit` routes with framework-agnostic descriptions.
|
|
3347
|
+
- Updated Propkit segmented control attributes UI to hide `value` and `name` controls.
|
|
3348
|
+
- Updated code/prompt export sanitization to strip `data-playground-*` attributes from generated snippets.
|
|
3349
|
+
- Documented segmented control matching rules, precedence, and event behavior in `README.md`.
|
|
3350
|
+
|
|
3351
|
+
### Fixed
|
|
3352
|
+
|
|
3353
|
+
- Fixed a segmented control mutation-resync feedback loop that could cause the playground to hang on load.
|
|
3354
|
+
|
|
3355
|
+
## [3.0.3]
|
|
3356
|
+
|
|
3357
|
+
### Changed
|
|
3358
|
+
|
|
3359
|
+
- Updated segmented control playground examples in `/figui3` and `/propkit` to hide `value` and `name` in the Attributes panel.
|
|
3360
|
+
- Added per-example `data-playground-hide-attrs` support so demo controls can suppress specific attribute fields without changing global rules.
|
|
3361
|
+
|
|
3362
|
+
## [3.0.2]
|
|
3363
|
+
|
|
3364
|
+
### Changed
|
|
3365
|
+
|
|
3366
|
+
- Updated joystick and fill picker handle elevation styling to use `--figma-elevation-100-canvas` for consistent control depth.
|
|
3367
|
+
- Simplified related hover-shadow behavior for joystick/fill picker handles and cleaned up nested `fig-layer` open-state selector structure.
|
|
3368
|
+
|
|
3369
|
+
## [3.0.1]
|
|
3370
|
+
|
|
3371
|
+
### Fixed
|
|
3372
|
+
|
|
3373
|
+
- Fixed `fig-joystick` layering so axis labels render below the handle by adjusting z-index order.
|
|
3374
|
+
|
|
3375
|
+
## [3.0.0]
|
|
3376
|
+
|
|
3377
|
+
### Added
|
|
3378
|
+
|
|
3379
|
+
- Added new `fig-joystick` component tag with percentage-first value handling (`50% 50%` default), `fields`, `aspect-ratio`, and `axis-labels` support.
|
|
3380
|
+
- Added joystick axis label rendering around the control plane with top/left/right/bottom placement rules and PropKit attributes integration.
|
|
3381
|
+
- Added live joystick value persistence in the playground code/preview flow, matching origin-grid behavior to avoid scrub interruption re-renders.
|
|
3382
|
+
|
|
3383
|
+
### Changed
|
|
3384
|
+
|
|
3385
|
+
- **Breaking:** Renamed joystick tag from `fig-input-joystick` to `fig-joystick` and updated docs/playground/type mappings to use the new element name.
|
|
3386
|
+
- Updated joystick handle visuals to match the color picker handle treatment and refined axis label typography styling.
|
|
3387
|
+
|
|
3388
|
+
### Fixed
|
|
3389
|
+
|
|
3390
|
+
- Fixed joystick X/Y field scrubbing in playground scenarios by aligning commit semantics with origin-grid (`input` during interaction, `change` on focus-out/release).
|
|
3391
|
+
|
|
3392
|
+
## [2.39.0]
|
|
3393
|
+
|
|
3394
|
+
### Added
|
|
3395
|
+
|
|
3396
|
+
- Added WebKit/iOS customized built-in support by loading a vendored `@ungap/custom-elements-builtin` polyfill when native support is unavailable.
|
|
3397
|
+
- Added `polyfills/` to published package files so runtime polyfill imports resolve correctly for consumers.
|
|
3398
|
+
|
|
3399
|
+
### Changed
|
|
3400
|
+
|
|
3401
|
+
- Updated customized built-in registrations (`fig-dialog`, `fig-popup`, `fig-toast`) to use a polyfill-aware define helper and avoid duplicate element definitions.
|
|
3402
|
+
- Updated README CDN script examples to use `type="module"` and documented SSR guidance for client-only `fig.js` imports.
|
|
3403
|
+
- Refined playground nav list styling with vertical spacing and scroll-edge gradient fades.
|
|
3404
|
+
|
|
3405
|
+
### Fixed
|
|
3406
|
+
|
|
3407
|
+
- Fixed playground nav behavior by removing wheel-based auto-advance between examples so wheel/trackpad scrolling stays native.
|
|
3408
|
+
- Fixed playground dropdown value syncing by binding `<fig-dropdown value>` directly and removing per-option `selected` attributes.
|
|
3409
|
+
- Fixed attribute rules typing to allow nullable `trueValue` for boolean controls.
|
|
3410
|
+
|
|
3411
|
+
## [2.38.3]
|
|
3412
|
+
|
|
3413
|
+
### Changed
|
|
3414
|
+
|
|
3415
|
+
- Published a patch release with no runtime code changes to keep package and changelog versions aligned.
|
|
3416
|
+
|
|
3417
|
+
## [2.38.2]
|
|
3418
|
+
|
|
3419
|
+
### Changed
|
|
3420
|
+
|
|
3421
|
+
- Updated playground `/figui3` popup attributes controls so `offset` edits use split X/Y numeric inputs (`fig-input-number` with prepend labels) and serialize back to the single `offset="x y"` attribute.
|
|
3422
|
+
- Updated playground `/figui3` popup `viewport-margin` control to use `fig-input-number` for numeric editing.
|
|
3423
|
+
|
|
3424
|
+
### Fixed
|
|
3425
|
+
|
|
3426
|
+
- Fixed popup `offset` attribute syncing in playground attributes when using numeric inputs by accepting both number and string event payloads.
|
|
3427
|
+
|
|
3428
|
+
## [2.38.1]
|
|
3429
|
+
|
|
3430
|
+
### Fixed
|
|
3431
|
+
|
|
3432
|
+
- Fixed playground layout so `.propkit-code-view` no longer shrinks in flex containers.
|
|
3433
|
+
|
|
3434
|
+
## [2.38.0]
|
|
3435
|
+
|
|
3436
|
+
### Added
|
|
3437
|
+
|
|
3438
|
+
- Added new `fig-origin-grid` component for transform-origin editing with optional `fields`, draggable handle interaction, and click-to-cell-center placement.
|
|
3439
|
+
- Added PropKit integration for `fig-origin-grid` including section example, JSX typing, and attributes panel support.
|
|
3440
|
+
- Added overflow-aware handle states for out-of-bounds values, including directional classes and masked arrow indicator styling.
|
|
3441
|
+
|
|
3442
|
+
### Changed
|
|
3443
|
+
|
|
3444
|
+
- Updated `fig-origin-grid` drag and click behavior to separate click vs drag intent, enable freeform out-of-bounds dragging, and support Shift snapping.
|
|
3445
|
+
- Updated `fig-origin-grid` value parsing/sync so single-value origins mirror to both axes and X/Y fields stay synchronized with component value changes.
|
|
3446
|
+
- Updated origin handle overflow nudge behavior with aspect-ratio-aware offset scaling.
|
|
3447
|
+
|
|
3448
|
+
### Fixed
|
|
3449
|
+
|
|
3450
|
+
- Fixed playground scrub interruptions for `fig-origin-grid` X/Y number fields by emitting commit `change` on field focus-out instead of every scrub tick.
|
|
3451
|
+
- Fixed `fig-origin-grid` drag cursor behavior so grabbing only appears after actual drag threshold crossing.
|
|
3452
|
+
|
|
3453
|
+
## [2.37.0]
|
|
3454
|
+
|
|
3455
|
+
### Added
|
|
3456
|
+
|
|
3457
|
+
- Added `placeholder` passthrough support on `fig-slider` so `text="true"` forwards placeholder text to its internal `fig-input-number`.
|
|
3458
|
+
|
|
3459
|
+
### Changed
|
|
3460
|
+
|
|
3461
|
+
- `fig-slider` now normalizes missing/empty/invalid `value` inputs with type-aware fallbacks (`min` for standard sliders, `default` then `0` for delta) while keeping drag interaction available.
|
|
3462
|
+
- In slider text mode, clearing the value now keeps the numeric field visually blank (showing placeholder when present) while preserving an internal fallback thumb position.
|
|
3463
|
+
- Playground attributes now only shows `fig-slider` `placeholder` when `text` is enabled.
|
|
3464
|
+
|
|
3465
|
+
## [2.36.0]
|
|
3466
|
+
|
|
3467
|
+
### Added
|
|
3468
|
+
|
|
3469
|
+
- Added `selected` attribute to `fig-3d-rotate` that applies a `selected` class to the named face (e.g. `selected="front"`).
|
|
3470
|
+
- Added `drag` boolean attribute to `fig-3d-rotate` (default true). Setting `drag="false"` disables cube drag rotation and switches the cursor to default.
|
|
3471
|
+
- Added `.selected` face styling with `--figma-color-border-strong` background and border radius.
|
|
3472
|
+
|
|
3473
|
+
## [2.35.0]
|
|
3474
|
+
|
|
3475
|
+
### Added
|
|
3476
|
+
|
|
3477
|
+
- Added `perspective-origin` and `transform-origin` attributes to `fig-3d-rotate`, synced to CSS custom properties `--perspective-origin` and `--transform-origin`.
|
|
3478
|
+
- `transform-origin` auto-preserves the default `-50cqi` Z depth when only two values (X Y) are provided.
|
|
3479
|
+
|
|
3480
|
+
### Fixed
|
|
3481
|
+
|
|
3482
|
+
- Fixed `fig-3d-rotate` drag release outside the window by using `setPointerCapture` with `pointercancel` and `lostpointercapture` listeners, matching the color picker fix.
|
|
3483
|
+
|
|
3484
|
+
## [2.34.0]
|
|
3485
|
+
|
|
3486
|
+
### Added
|
|
3487
|
+
|
|
3488
|
+
- Added configurable `perspective` attribute to `fig-3d-rotate` for controlling the 3D depth effect, with a `--perspective` CSS custom property.
|
|
3489
|
+
- Added gradient edge borders on each side face of the `fig-3d-rotate` cube that fade from the front face backward, using per-face `border-image` gradients with `--border-start-color` / `--border-end-color` tokens.
|
|
3490
|
+
- Added `perspective` toggle and `perspective-distance` slider controls to the playground attributes panel for `fig-3d-rotate`.
|
|
3491
|
+
- Added value persistence for `fig-3d-rotate` in the playground so drag interactions survive markup re-renders.
|
|
3492
|
+
- Added empty-string option to `fig-3d-rotate` `fields` enum for clearing visible input fields.
|
|
3493
|
+
|
|
3494
|
+
### Changed
|
|
3495
|
+
|
|
3496
|
+
- Improved `fig-3d-rotate` cube centering with `container-type: inline-size` and `transform-origin: 50% 50% -50cqi` for more accurate 3D rotation.
|
|
3497
|
+
- Updated `fig-3d-rotate` to sync the `value` attribute on both `input` and `change` events during drag interactions.
|
|
3498
|
+
|
|
3499
|
+
## [2.33.4]
|
|
3500
|
+
|
|
3501
|
+
### Changed
|
|
3502
|
+
|
|
3503
|
+
- Improved playground nav wheel behavior to be overflow-aware: nav lists now scroll naturally first, then advance examples at scroll boundaries.
|
|
3504
|
+
- Updated `.nav-links` overflow styling with thin, low-profile scrollbars for a cleaner navigation panel appearance.
|
|
3505
|
+
|
|
3506
|
+
### Fixed
|
|
3507
|
+
|
|
3508
|
+
- Fixed fill-picker color handle drag state to reliably end on pointer cancel/lost capture and when pointer buttons are released outside the picker/window.
|
|
3509
|
+
- Fixed numeric alt-drag scrubbing (`fig-input-text[type="number"]`, `fig-input-number`) so drag state and cursor reset correctly when release happens outside the window.
|
|
3510
|
+
|
|
3511
|
+
## [2.33.3]
|
|
3512
|
+
|
|
3513
|
+
### Changed
|
|
3514
|
+
|
|
3515
|
+
- Centered the playground example container within the main layout for more consistent `/figui3` presentation.
|
|
3516
|
+
- Updated `.propkit-example` spacing to use horizontal zero padding while preserving vertical padding.
|
|
3517
|
+
|
|
3518
|
+
## [2.33.2]
|
|
3519
|
+
|
|
3520
|
+
### Added
|
|
3521
|
+
|
|
3522
|
+
- Added a `Layer` section back to the `/figui3` playground with examples for icon and no-icon rows, including nested child layers.
|
|
3523
|
+
|
|
3524
|
+
### Changed
|
|
3525
|
+
|
|
3526
|
+
- Updated the icon-based layer example to default to `open` and `selected` on the parent with a selected nested child for clearer selection-state demos.
|
|
3527
|
+
- Refined playground panel spacing and related component styling polish for the latest `/figui3` examples.
|
|
3528
|
+
|
|
3529
|
+
### Fixed
|
|
3530
|
+
|
|
3531
|
+
- Simplified shimmer direction empty-state labeling in attributes view from `Default (horizontal)` to `Default`.
|
|
3532
|
+
|
|
3533
|
+
## [2.33.1]
|
|
3534
|
+
|
|
3535
|
+
### Changed
|
|
3536
|
+
|
|
3537
|
+
- Updated `README.md` to reflect current FigUI3 workflows, including a dedicated playground usage section and refreshed popup/field/toast docs.
|
|
3538
|
+
- Updated playground attributes panel spacing by increasing `.propkit-attributes-content` bottom padding to `var(--spacer-2-5)`.
|
|
3539
|
+
|
|
3540
|
+
### Fixed
|
|
3541
|
+
|
|
3542
|
+
- Removed `index.html` from published package files and retained the docs source in-repo as `old.html`.
|
|
3543
|
+
|
|
3544
|
+
## [2.33.0]
|
|
3545
|
+
|
|
3546
|
+
### Added
|
|
3547
|
+
|
|
3548
|
+
- Added a new `/playground` app flow for both FigUI3 and PropKit examples, including interactive preview, attribute editing, and code view tooling.
|
|
3549
|
+
- Added richer FigUI3 field and popup authoring controls in the playground (field input presets, columns presets, popup theme/viewport margin/expanded position options).
|
|
3550
|
+
|
|
3551
|
+
### Changed
|
|
3552
|
+
|
|
3553
|
+
- Replaced legacy standalone PropKit pages/app files with the unified playground implementation and refreshed related skills/docs references.
|
|
3554
|
+
- Updated FigUI3 examples for header, popup, and toast to use more realistic trigger/icon patterns and current component structure.
|
|
3555
|
+
|
|
3556
|
+
### Fixed
|
|
3557
|
+
|
|
3558
|
+
- Fixed playground code view sanitization to hide internal-only field attributes while preserving them during code-edit roundtrips.
|
|
3559
|
+
- Fixed enum/dropdown value syncing in attributes view (including popup theme selection) and improved fig-popup beak alignment calculations on horizontal placements.
|
|
3560
|
+
|
|
3561
|
+
## [2.32.0]
|
|
3562
|
+
|
|
3563
|
+
### Added
|
|
3564
|
+
|
|
3565
|
+
- Added a PropKit nav footer install helper with a readonly `fig-input-text` command field plus copy buttons for both command and install prompt.
|
|
3566
|
+
- Added contextual nav copy toasts (`Command copied` / `Prompt copied`) to match existing PropKit copy feedback patterns.
|
|
3567
|
+
- Added SVG-focused CodeMirror folding behavior in PropKit code view, with subtle fold placeholder styling.
|
|
3568
|
+
- Added an icon-only `Icons` example to the segmented control section.
|
|
3569
|
+
|
|
3570
|
+
### Changed
|
|
3571
|
+
|
|
3572
|
+
- Renamed the segment section to `Segmented control` and updated the text example label to `Text`.
|
|
3573
|
+
- Updated attributes input panel titles to use section-aware names (for example `Segmented control` instead of `Input`).
|
|
3574
|
+
- Hid empty attributes input panels when there are no visible controls to render.
|
|
3575
|
+
- Constrained PropKit code view/editor height with internal scrolling so long markup does not overflow the viewport.
|
|
3576
|
+
|
|
3577
|
+
### Fixed
|
|
3578
|
+
|
|
3579
|
+
- Fixed PropKit image upload persistence by writing uploaded image sources into editable markup so subsequent attribute edits keep the uploaded image.
|
|
3580
|
+
- Fixed image fit attribute controls by removing `50%` from fit options and treating `fit=auto` as attribute removal for better sync.
|
|
3581
|
+
- Added `readonly` support to `fig-input-text` so readonly fields are truly non-editable and reactive to attribute changes.
|
|
3582
|
+
|
|
3583
|
+
## [2.31.2]
|
|
3584
|
+
|
|
3585
|
+
### Changed
|
|
3586
|
+
|
|
3587
|
+
- Tuned PropKit `.propkit-example` dash-inset spacing for cleaner vertical rhythm in preview blocks.
|
|
3588
|
+
- Updated units dropdown options in PropKit attributes by removing `turn` and `rem`.
|
|
3589
|
+
|
|
3590
|
+
### Fixed
|
|
3591
|
+
|
|
3592
|
+
- Fixed PropKit slider variant controls by removing forced slider variant overrides in preview rendering and defaulting variant selection to `default` when no variant attribute is set.
|
|
3593
|
+
- Fixed `fig-slider` variant reactivity by observing `variant` attribute changes and regenerating internals when variant updates.
|
|
3594
|
+
|
|
3595
|
+
## [2.31.1]
|
|
3596
|
+
|
|
3597
|
+
### Changed
|
|
3598
|
+
|
|
3599
|
+
- Refined PropKit layout spacing by tightening `main` description spacing and updating `.propkit-example` vertical dash-inset margins.
|
|
3600
|
+
|
|
3601
|
+
## [2.31.0]
|
|
3602
|
+
|
|
3603
|
+
### Added
|
|
3604
|
+
|
|
3605
|
+
- Added context-aware copy toasts in PropKit code actions (`HTML copied` / `Prompt copied`).
|
|
3606
|
+
- Added new PropKit examples for dropdown optgroups (`Groups`, `Labelled groups`) and switch `Indeterminate`.
|
|
3607
|
+
- Added per-field `Label` toggle controls in PropKit attributes to add/remove the `label` element from each `fig-field`.
|
|
3608
|
+
|
|
3609
|
+
### Changed
|
|
3610
|
+
|
|
3611
|
+
- Refined PropKit attributes UI into two stacked panels: `Field` controls (`Direction`, `Label`) and `Input` controls.
|
|
3612
|
+
- Updated PropKit nav behavior for single-example sections so the parent row is directly selectable without rendering a nested child row.
|
|
3613
|
+
- Curated PropKit examples by removing the Dial section and trimming extra Easing Curve and 3D Rotate variants.
|
|
3614
|
+
|
|
3615
|
+
### Fixed
|
|
3616
|
+
|
|
3617
|
+
- Fixed `fig-input-number` native steppers to honor decimal `step` values (e.g. `0.5`) and keep native `min`/`max`/`step` attributes synchronized.
|
|
3618
|
+
- Fixed switch/checkbox indeterminate state syncing so setting `checked` clears indeterminate visuals correctly.
|
|
3619
|
+
|
|
3620
|
+
## [2.30.1]
|
|
3621
|
+
|
|
3622
|
+
### Fixed
|
|
3623
|
+
|
|
3624
|
+
- Ensure `.input-combo > label` uses explicit text-color token resolution so `fig-input-fill` labels render with the correct scheme-driven text color.
|
|
3625
|
+
|
|
3626
|
+
## [2.30.0]
|
|
3627
|
+
|
|
3628
|
+
### Added
|
|
3629
|
+
|
|
3630
|
+
- Added a full `propkit/` React + Vite app for interactive PropKit exploration, including section/example navigation and live preview composition.
|
|
3631
|
+
- Added live CodeMirror-to-preview syncing so editing example markup re-renders the active example immediately.
|
|
3632
|
+
- Added a dynamic `Attributes` panel in PropKit that parses `fig-field` + primary `fig-*` controls and maps attributes to native FigUI controls.
|
|
3633
|
+
- Added a new `Number` section with `fig-input-number` examples and attribute mappings.
|
|
3634
|
+
- Added a new project skill: `.cursor/skills/nested-css-selectors/`.
|
|
3635
|
+
|
|
3636
|
+
### Changed
|
|
3637
|
+
|
|
3638
|
+
- Updated PropKit layout and styles, including nested CSS refactors, top-aligned centered main content, and refined code/attributes panel headers.
|
|
3639
|
+
- Updated PropKit example metadata and curation (removed redundant gradient/image/slider variants, removed combined panel, and refined example naming).
|
|
3640
|
+
- Renamed example wrapper usage from `.prop-panel` to `.propkit-example`, with backward-compatible unwrap handling and standardized re-wrap behavior.
|
|
3641
|
+
- Updated `.propkit-example` styling to remove the border and use opposite `color-scheme` for stronger visual contrast.
|
|
3642
|
+
- Updated `Attributes` panel behavior with targeted control rules (segmented control for `direction`, constrained aspect-ratio options, and specialized 3D rotate field labels/options).
|
|
3643
|
+
- Removed `fig-popover` and `fig-popover-2` component implementations and associated demo/docs usage; popup guidance now centers on `fig-popup`.
|
|
3644
|
+
- Updated `glitch.html` to use a `fig-popup` example instead of `fig-popover`.
|
|
3645
|
+
|
|
3646
|
+
### Fixed
|
|
3647
|
+
|
|
3648
|
+
- Fixed `fig-image` attribute reactivity for `upload`/`download` by supporting presence-style booleans, observing `download`, and handling each attribute independently in `attributeChangedCallback`.
|
|
3649
|
+
- Fixed enum dropdown value handling in PropKit attributes so displayed sentence-case labels no longer corrupt raw attribute values (notably `fig-3d-rotate` fields).
|
|
3650
|
+
|
|
3651
|
+
|
|
3652
|
+
## [2.29.3]
|
|
3653
|
+
|
|
3654
|
+
### Fixed
|
|
3655
|
+
|
|
3656
|
+
- Fix `querySelector` crash in propkit when navigating to `#3d-rotate` (IDs starting with a digit are invalid CSS selectors); switched to `getElementById`.
|
|
3657
|
+
|
|
3658
|
+
## [2.29.2]
|
|
3659
|
+
|
|
3660
|
+
### Fixed
|
|
3661
|
+
|
|
3662
|
+
- Include `propkit.html` and `.cursor/skills/` in published npm package.
|
|
3663
|
+
|
|
3664
|
+
## [2.29.1]
|
|
3665
|
+
|
|
3666
|
+
### Changed
|
|
3667
|
+
|
|
3668
|
+
- Reduced `fig-3d-rotate` field input flex-basis from `4rem` to `3rem` for tighter layouts.
|
|
3669
|
+
|
|
3670
|
+
## [2.29.0]
|
|
3671
|
+
|
|
3672
|
+
### Added
|
|
3673
|
+
|
|
3674
|
+
- `fig-3d-rotate` now supports a `fields` attribute to render `fig-input-number` inputs for specified axes (e.g. `fields="rotateX,rotateY,rotateZ"`), with two-way sync between the cube preview and number fields.
|
|
3675
|
+
- Number fields use degree units, `precision="1"`, and flex-wrap responsively with a `4rem` min-width per field.
|
|
3676
|
+
- Added propkit examples for fields: all axes, Y only, X & Y, fields with 16:9 aspect ratio and preset values, and fields without a label.
|
|
3677
|
+
|
|
3678
|
+
### Changed
|
|
3679
|
+
|
|
3680
|
+
- `fig-3d-rotate` layout updated to `flex-wrap: wrap` with gap for proper field stacking below the cube container.
|
|
3681
|
+
- `fig-3d-rotate` now constrains properly inside horizontal `fig-field` via `min-width: 0`.
|
|
3682
|
+
|
|
3683
|
+
### Fixed
|
|
3684
|
+
|
|
3685
|
+
- `fig-3d-rotate` field inputs now intercept both `input` and `change` events from child `fig-input-number` elements, preventing mismatched event detail leaking to consumers.
|
|
3686
|
+
|
|
3687
|
+
## [2.28.0]
|
|
3688
|
+
|
|
3689
|
+
### Fixed
|
|
3690
|
+
|
|
3691
|
+
- Added missing `#wasDragged` private field declaration in `FigPopup` to prevent runtime syntax errors in popup drag/reposition logic.
|
|
3692
|
+
|
|
3693
|
+
## [2.27.0]
|
|
3694
|
+
|
|
3695
|
+
### Changed
|
|
3696
|
+
|
|
3697
|
+
- Refined easing curve editor visuals with rounded stroke caps/joins and padded drawing container for clearer spring/bezier presentation.
|
|
3698
|
+
|
|
3699
|
+
### Fixed
|
|
3700
|
+
|
|
3701
|
+
- `fig-popup` now stops anchor-based auto-repositioning after the user manually drags an anchored, draggable popup, preserving manual placement.
|
|
3702
|
+
|
|
3703
|
+
## [2.26.0]
|
|
3704
|
+
|
|
3705
|
+
### Added
|
|
3706
|
+
|
|
3707
|
+
- New `fig-easing-curve` component with bezier and spring editing, preset dropdown support, and `input`/`change` events exposing `value`, `cssValue`, `mode`, and `preset`.
|
|
3708
|
+
- New `propkit.html` demo page with focused property-field examples, including image, color, fill, slider variants, switch, dropdown, segment, angle, and easing curve sections.
|
|
3709
|
+
- Copy-prompt helpers in `propkit.html` section subheaders, including one-click prompt copy and toast feedback.
|
|
3710
|
+
|
|
3711
|
+
### Changed
|
|
3712
|
+
|
|
3713
|
+
- `fig-easing-curve` spring editor now keeps duration marker behavior aligned to the rendered spring timeline and improves handle interaction/visual consistency.
|
|
3714
|
+
- Easing curve icon generation now uses 24x24 icons with 6px padding and dynamic custom preset icon refresh.
|
|
3715
|
+
- Sliders in `propkit.html` now use the modern compact slider appearance.
|
|
3716
|
+
- `fig-image` now supports `aspect-ratio` and `fit` mapping to internal CSS vars for richer image layout control.
|
|
3717
|
+
|
|
3718
|
+
### Fixed
|
|
3719
|
+
|
|
3720
|
+
- Tooltip warmup behavior: recently shown tooltips now open instantly during rapid hover transitions.
|
|
3721
|
+
- `fig-input-fill` now supports `alpha="false"` and hides opacity controls when alpha is disabled.
|
|
3722
|
+
- Easing curve bezier diagonal reference line visibility and spring duration marker rendering issues in demos.
|
|
3723
|
+
|
|
3724
|
+
## [2.25.0]
|
|
3725
|
+
|
|
3726
|
+
### Added
|
|
3727
|
+
|
|
3728
|
+
- Custom mode slots for `fig-fill-picker` — add custom tabs via `slot="mode-*"` children (e.g., `<div slot="mode-shader" label="Shader">`). The mode name must also appear in the `mode` attribute.
|
|
3729
|
+
- `modeready` event on `fig-fill-picker` — fires per custom mode with `{ mode, container }` detail, giving frameworks like React a stable DOM target to render into without DOM reparenting.
|
|
3730
|
+
- `picker-*` attribute forwarding on `fig-input-color` and `fig-input-fill` — attributes like `picker-anchor` and `picker-dialog-position` are forwarded to the underlying `fig-fill-picker`.
|
|
3731
|
+
- `picker-anchor` attribute on `fig-input-color` and `fig-input-fill` — set to `"self"` to anchor the fill picker to the entire input, or pass a CSS selector for a custom anchor element.
|
|
3732
|
+
- Custom trigger support examples for `fig-fill-picker` — buttons, icon buttons, inline text, and custom divs as triggers.
|
|
3733
|
+
- Custom mode demos: Shader mode with `fig-input-text multiline`, built-in mode override with a palette, and a React mode using `modeready`.
|
|
3734
|
+
- Prism.js syntax highlighting for code examples in the demo page.
|
|
3735
|
+
|
|
3736
|
+
### Changed
|
|
3737
|
+
|
|
3738
|
+
- `fig-input-fill` fill picker now defaults its anchor to the component itself (not just the chit).
|
|
3739
|
+
- Custom mode tabs in `fig-fill-picker` automatically get zero padding on `.fig-fill-picker-content`, giving slot content full control over layout.
|
|
3740
|
+
- `dialog-position` removed from `FigInputColor.observedAttributes` — use `picker-dialog-position` instead.
|
|
3741
|
+
- `fig-fill-picker` trigger detection now skips `slot="mode-*"` children when identifying the trigger element.
|
|
3742
|
+
|
|
3743
|
+
### Fixed
|
|
3744
|
+
|
|
3745
|
+
- Dropdown inner content now has `width: 100%` for proper sizing.
|
|
3746
|
+
- Ghost button active state now uses correct text color (`--figma-color-text`).
|
|
3747
|
+
|
|
3748
|
+
## [2.24.0]
|
|
3749
|
+
|
|
3750
|
+
### Changed
|
|
3751
|
+
|
|
3752
|
+
- Improved FigImage teardown safety.
|
|
3753
|
+
|
|
3754
|
+
## [2.23.0]
|
|
3755
|
+
|
|
3756
|
+
### Added
|
|
3757
|
+
|
|
3758
|
+
- `viewport-margin` attribute for `fig-popup` — defines per-edge safe areas (CSS margin shorthand: `top right bottom left`) that popups avoid during positioning. Useful for keeping popups clear of persistent UI like toolbars.
|
|
3759
|
+
- Viewport margin demo in the popup section showing a 64px bottom margin.
|
|
3760
|
+
|
|
3761
|
+
### Fixed
|
|
3762
|
+
|
|
3763
|
+
- Scroll events originating inside a popup no longer trigger repositioning.
|
|
3764
|
+
|
|
3765
|
+
## [2.22.3]
|
|
3766
|
+
|
|
3767
|
+
### Fixed
|
|
3768
|
+
|
|
3769
|
+
- Large icon buttons now correctly sized at 32px: added `flex-basis` override and `padding: 0` to prevent `[icon]` flex-basis (24px) and `[size="large"]` padding from shrinking/padding the icon area.
|
|
3770
|
+
- Removed doubled padding on large text buttons: shadow DOM `:host([size="large"])` rule no longer adds its own padding (host padding suffices).
|
|
3771
|
+
|
|
3772
|
+
## [2.22.2]
|
|
3773
|
+
|
|
3774
|
+
### Added
|
|
3775
|
+
|
|
3776
|
+
- Button combo examples for `variant="input"` and `variant="ghost"` in the demo page.
|
|
3777
|
+
- `size="large"` support for segmented controls with corresponding CSS.
|
|
3778
|
+
- `size="large"` examples for all icon button variants with 24x24 icons.
|
|
3779
|
+
|
|
3780
|
+
### Fixed
|
|
3781
|
+
|
|
3782
|
+
- Large buttons: shadow DOM inner `<button>` uses `:host([size="large"])` selectors to properly respond to the host's size attribute.
|
|
3783
|
+
|
|
3784
|
+
## [2.22.1]
|
|
3785
|
+
|
|
3786
|
+
### Changed
|
|
3787
|
+
|
|
3788
|
+
- Popup shorthand positioning (`position="left"`, etc.) now smoothly slides the cross-axis to fit the viewport instead of snapping to discrete top/center/bottom alignments. Stays on the preferred side as long as the primary axis fits.
|
|
3789
|
+
- Popup scroll tracking is now synchronous (no RAF delay), eliminating 1-frame lag when scrolling. Scroll listener uses `{ passive: true }` to avoid blocking scroll performance.
|
|
3790
|
+
- Demo page sidebar width is now viewport-based (`15vw`, clamped between 180px–280px).
|
|
3791
|
+
|
|
3792
|
+
## [2.22.0]
|
|
3793
|
+
|
|
3794
|
+
### Added
|
|
3795
|
+
|
|
3796
|
+
- `dialog-position` attribute pass-through for `fig-input-color` — allows controlling the popup direction of nested color pickers (defaults to `"left"`).
|
|
3797
|
+
- `#isInsideDescendantPopup` method on `fig-popup` — walks the popup anchor chain to determine logical containment across sibling `<dialog>` elements.
|
|
3798
|
+
|
|
3799
|
+
### Fixed
|
|
3800
|
+
|
|
3801
|
+
- Nested popup dismissal: interacting with a child popup (e.g., a gradient stop's color picker) no longer closes the parent popup. The outside-click handler now recognizes popups whose anchor chain traces back into the current popup.
|
|
3802
|
+
- Gradient stop color pickers now open to the right (`dialog-position="right"`) to avoid viewport-edge fallback to top positioning.
|
|
3803
|
+
|
|
3804
|
+
### Changed
|
|
3805
|
+
|
|
3806
|
+
- Refined popup fallback positioning: single-word `position` values (e.g., `left`) now try opposite then perpendicular axes; two-word values use smarter ordered candidates instead of a 3x3 matrix.
|
|
3807
|
+
- Removed hover `grab` cursor on draggable `fig-popup` (only shows `grabbing` while actively dragging).
|
|
3808
|
+
|
|
3809
|
+
## [2.21.0]
|
|
3810
|
+
|
|
3811
|
+
### Added
|
|
3812
|
+
|
|
3813
|
+
- `autoresize` attribute for `fig-popup` (default: true). Set `autoresize="false"` to disable content-driven repositioning and auto-sizing CSS (`width: max-content`, `max-width`, `max-height`, `overflow`).
|
|
3814
|
+
- Drag cursor behavior for `fig-dialog` and `fig-popup`: `grab` on hover, `grabbing` while dragging (previously used `move`).
|
|
3815
|
+
- Left shorthand popup position example in the demo page.
|
|
3816
|
+
|
|
3817
|
+
### Changed
|
|
3818
|
+
|
|
3819
|
+
- Popup `position` semantics for two-word values: when vertical is `top` or `bottom`, horizontal `left`/`right` now means edge-alignment (e.g., `top left` = above anchor, left edges aligned) rather than side-placement. `center left`/`center right` retains side-placement behavior.
|
|
3820
|
+
- Fill picker popup (`fig-input-fill`, `fig-input-color`) now uses `position="left"` for correct side placement next to the trigger.
|
|
3821
|
+
- Nav width increased to 240px in the demo page.
|
|
3822
|
+
|
|
3823
|
+
### Fixed
|
|
3824
|
+
|
|
3825
|
+
- Fill picker popup anchoring: now anchors to the trigger element (`fig-chit` or button) instead of the `fig-fill-picker` wrapper, which uses `display: contents` and has no bounding box.
|
|
3826
|
+
- Fill picker popup sets `autoresize="false"` to prevent unwanted content-driven repositioning.
|
|
3827
|
+
|
|
3828
|
+
## [2.20.0]
|
|
3829
|
+
|
|
3830
|
+
### Added
|
|
3831
|
+
|
|
3832
|
+
- Toolbelt component at the bottom of the demo page with sectioned icon button groups.
|
|
3833
|
+
- Non-modal dialog example with code showing `.show()` vs `.showModal()`.
|
|
3834
|
+
- `closedby` attribute documentation and live demos (`any`, `closerequest`, `none`) in the dialog section.
|
|
3835
|
+
|
|
3836
|
+
### Changed
|
|
3837
|
+
|
|
3838
|
+
- Elevation shadow variables (`--figma-elevation-*`, `--handle-shadow`) now use `light-dark()` inline for theme switching, removing the need for separate `.figma-dark` and `@media (prefers-color-scheme: dark)` override blocks.
|
|
3839
|
+
|
|
3840
|
+
### Fixed
|
|
3841
|
+
|
|
3842
|
+
- Dialog `closedby="none"` and `closedby="closerequest"` now properly prevent outside-click dismissal in the JS fallback handler.
|
|
3843
|
+
|
|
3844
|
+
## [2.19.1]
|
|
3845
|
+
|
|
3846
|
+
### Fixed
|
|
3847
|
+
|
|
3848
|
+
- `@media (prefers-color-scheme)` blocks no longer conflict with manual theme switching via `color-scheme`. Scoped with `:not(.figma-dark):not(.figma-light)` so they only apply as a no-JS fallback; class-based overrides are now the primary mechanism.
|
|
3849
|
+
|
|
3850
|
+
## [2.19.0]
|
|
3851
|
+
|
|
3852
|
+
### Added
|
|
3853
|
+
|
|
3854
|
+
- New `variant="input"` for `fig-button` — styled to match input fields with matching hover, active, and focus-visible states.
|
|
3855
|
+
- `--icon-chevron` added to the icons demo page.
|
|
3856
|
+
- Button demo examples for the input variant: default, with chevron icon, icon-only, and disabled states.
|
|
3857
|
+
|
|
3858
|
+
### Fixed
|
|
3859
|
+
|
|
3860
|
+
- `fig-input-fill` gradient label now updates when changing gradient subtype (e.g., Radial → Linear) without switching fill types.
|
|
3861
|
+
|
|
3862
|
+
## [2.18.3]
|
|
3863
|
+
|
|
3864
|
+
### Fixed
|
|
3865
|
+
|
|
3866
|
+
- `fig-input-fill` gradient label now updates when changing gradient subtype (e.g., Radial → Linear) without switching fill types.
|
|
3867
|
+
|
|
3868
|
+
## [2.18.2]
|
|
3869
|
+
|
|
3870
|
+
### Fixed
|
|
3871
|
+
|
|
3872
|
+
- Gradient stop opacity at 0% no longer snaps back to 100% — replaced `|| 100` with `?? 100` (nullish coalescing) so zero is not treated as falsy.
|
|
3873
|
+
- Color picker handle now updates its color when the hue slider changes — added missing `#updateHandlePosition()` call.
|
|
3874
|
+
|
|
3875
|
+
### Added
|
|
3876
|
+
|
|
3877
|
+
- Experimental attribute examples for `fig-fill-picker` and `fig-input-fill` in the demo page.
|
|
3878
|
+
|
|
3879
|
+
## [2.18.1]
|
|
3880
|
+
|
|
3881
|
+
### Added
|
|
3882
|
+
|
|
3883
|
+
- Prepend/append slot elements on `fig-input-number` and `fig-input-text[type="number"]` now act as scrub handles — click and drag to scrub the value without holding alt/option.
|
|
3884
|
+
- `cursor: ew-resize` on slot elements in numeric inputs to indicate the drag affordance.
|
|
3885
|
+
- `react.html` test page for verifying web component behavior under React state-driven re-renders.
|
|
3886
|
+
|
|
3887
|
+
### Changed
|
|
3888
|
+
|
|
3889
|
+
- Alt-drag scrubbing no longer stops if the alt key is released mid-drag — once scrubbing starts, it continues until pointer release.
|
|
3890
|
+
|
|
3891
|
+
## [2.18.0]
|
|
3892
|
+
|
|
3893
|
+
### Fixed
|
|
3894
|
+
|
|
3895
|
+
- **Interaction guard for framework re-renders**: Components with drag/scrub interactions no longer get clobbered when React (or other frameworks) set the `value` attribute during an active user gesture. Follows the same `#isDraggingColor` pattern already used by `fig-fill-picker`.
|
|
3896
|
+
- `fig-input-number`: Guards alt-drag scrubbing and keyboard editing (focus/blur)
|
|
3897
|
+
- `fig-input-text`: Guards alt-drag scrubbing for number type
|
|
3898
|
+
- `fig-slider`: Guards native range input drag via pointerdown/pointerup
|
|
3899
|
+
- `fig-input-angle`: Guards handle drag
|
|
3900
|
+
- `fig-input-joystick`: Guards handle drag
|
|
3901
|
+
- **`fig-input-fill` no longer destroys DOM mid-interaction**: `attributeChangedCallback` now updates children in-place instead of doing a full re-render when the fill type hasn't changed.
|
|
3902
|
+
|
|
3903
|
+
### Changed
|
|
3904
|
+
|
|
3905
|
+
- `fig-slider` with `text="true"` now skips the range input in tab order (`tabindex="-1"`), so Tab goes directly to the text input.
|
|
3906
|
+
- `fig-input-color`, `fig-input-fill`, and `fig-slider` now properly flex and shrink inside horizontal `fig-field` layouts (`flex: 1; min-width: 0`).
|
|
3907
|
+
- Updated horizontal fields demo section with a resizable container and `full` attribute on all inputs.
|
|
3908
|
+
|
|
3909
|
+
## [2.17.2]
|
|
3910
|
+
|
|
3911
|
+
### Added
|
|
3912
|
+
|
|
3913
|
+
- New `FigPopup` foundational floating component implemented as `<dialog is="fig-popup">`.
|
|
3914
|
+
- `FigPopup` supports:
|
|
3915
|
+
- `anchor` selector binding (local-first lookup, then document fallback)
|
|
3916
|
+
- `position` with two-value placement (`vertical horizontal`)
|
|
3917
|
+
- single-value shorthand placement (`top`, `bottom`, `left`, `right`)
|
|
3918
|
+
- `offset="x y"` with unitless values treated as pixels
|
|
3919
|
+
- observer-driven repositioning on popup content changes and anchor resize
|
|
3920
|
+
- Added comprehensive Popup examples in `index.html`, including:
|
|
3921
|
+
- default and explicit placements
|
|
3922
|
+
- property API usage (`popup.open = true/false`)
|
|
3923
|
+
- position matrix examples and single-value shorthand examples
|
|
3924
|
+
- per-example code snippets
|
|
3925
|
+
|
|
3926
|
+
### Changed
|
|
3927
|
+
|
|
3928
|
+
- `FigPopup` outside-click behavior now closes by default (`closedby="any"` with fallback handling).
|
|
3929
|
+
- Popup open handling is idempotent (repeated open requests do not re-open/reinitialize when already open).
|
|
3930
|
+
- Default popup offsets are now `0 0` (both horizontal and vertical).
|
|
3931
|
+
- Popup demo anchors now bind directly to the corresponding open button (removed separate anchor-target buttons).
|
|
3932
|
+
|
|
3933
|
+
## [2.17.1]
|
|
3934
|
+
|
|
3935
|
+
### Changed
|
|
3936
|
+
|
|
3937
|
+
- Moved `fig-footer` styles from page-local `index.html` styles into `components.css` for reusable component-level styling.
|
|
3938
|
+
- Added component-level sticky support for `fig-footer[sticky]`, including bottom stickiness and theme-aware background treatment.
|
|
3939
|
+
- Kept demo markup clean by removing duplicated `fig-footer` style definitions from `index.html`.
|
|
3940
|
+
|
|
3941
|
+
## [2.17.0]
|
|
3942
|
+
|
|
3943
|
+
### Added
|
|
3944
|
+
|
|
3945
|
+
- Added a `fig-footer sticky="true"` demo to the main page with a settings control menu.
|
|
3946
|
+
- Added rich dropdown option examples using `fig-checkbox` controls for fill-application actions.
|
|
3947
|
+
|
|
3948
|
+
### Changed
|
|
3949
|
+
|
|
3950
|
+
- Refined sticky footer behavior in `index.html` to use true sticky semantics (content-bottom when short, sticky on overflow).
|
|
3951
|
+
- Updated settings menu trigger to follow the `fig-button type="select"` pattern used in button examples.
|
|
3952
|
+
- Improved `fig-dropdown` handling for persistent controls (`fig-checkbox`, `fig-switch`, checkbox inputs) in option content so interaction does not behave like standard pick-and-close selection.
|
|
3953
|
+
- Fixed `fig-checkbox` lifecycle behavior to prevent duplicate internal rendering when checkbox elements are cloned inside dropdown option content.
|
|
3954
|
+
|
|
3955
|
+
## [2.16.0]
|
|
3956
|
+
|
|
3957
|
+
### Added
|
|
3958
|
+
|
|
3959
|
+
- `fig-segmented-control` now supports a `disabled` attribute
|
|
3960
|
+
- Added disabled segmented control examples in `index.html` for both text and icon variants
|
|
3961
|
+
|
|
3962
|
+
## [2.15.0] - Breaking Changes
|
|
3963
|
+
|
|
3964
|
+
### Changed
|
|
3965
|
+
|
|
3966
|
+
- The `variant` attribute is now reserved for visual styling only.
|