@rogieking/figui3 11.3.0 → 11.3.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.
@@ -219,6 +219,7 @@ Handlers below assume `onInput` / `onChange` / `onClick` from [react.md](react.m
219
219
  ```
220
220
 
221
221
  - Attrs: `type` (`range`, `opacity`, `hue`, `stepper`, `delta`), `min`, `max`, `step`, `text`, `units`, `transform`, `color`, `default`, `variant` (`classic`), `placeholder`, `full`, `disabled`
222
+ - A valid explicit `default` adds a tick and native snap target for range, opacity, and hue sliders. Inferred defaults do not render a tick.
222
223
  - Events: `input` / `change` → `currentTarget.value`
223
224
  - React: keep `value` a string; do not remount during drag. Opacity: set `color`. Delta: set `default`. Stepper: include a `<datalist>` of stops.
224
225
 
@@ -55,6 +55,7 @@ Public API: `README.md`. React recipes: [components.md](components.md).
55
55
  - Always set `min`, `max`, `step`; `units` when displayed
56
56
  - `transform` when internal scale ≠ UI scale
57
57
  - `variant="classic"` for the older appearance
58
+ - Valid explicit `default` values add a tick and native snap target for range, opacity, and hue; inferred defaults do not
58
59
  - Opacity: set `color` and usually `units="%"`
59
60
  - Delta: include `default` and typically symmetric min/max
60
61
  - Stepper: include a `<datalist>` of stops
package/CHANGELOG.md CHANGED
@@ -2,6 +2,21 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [11.3.1]
6
+
7
+ ### Added
8
+
9
+ - Added explicit `fig-slider` default ticks and native snap targets for valid range, hue, and opacity defaults.
10
+ - Added an optional slider default control to the playground.
11
+
12
+ ### Changed
13
+
14
+ - Made `fig-input-number` steppers repeat while held, emitting continuous input updates and one change event on release.
15
+
16
+ ### Fixed
17
+
18
+ - Kept generated slider default ticks within variant-specific track endpoints.
19
+
5
20
  ## [11.3.0]
6
21
 
7
22
  ### Added
package/README.md CHANGED
@@ -356,7 +356,7 @@ The suggestion trigger uses `fig-select` when `fig-editor.js` is registered and
356
356
  | `min` | number | `0` | Minimum |
357
357
  | `max` | number | `100` | Maximum |
358
358
  | `step` | number | `1` | Step increment |
359
- | `default` | number | — | Default/reset value (shown as marker) |
359
+ | `default` | number | — | Explicit reference value; adds a tick and native snap target when valid |
360
360
  | `text` | boolean | `true` | Show text input; set `text="false"` to hide |
361
361
  | `placeholder` | string | `"##"` | Text input placeholder |
362
362
  | `units` | string | — | Unit label (e.g. `"%"`, `"px"`) |
@@ -369,12 +369,12 @@ The suggestion trigger uses `fig-select` when `fig-editor.js` is registered and
369
369
  **Events:** `input` (continuous), `change` (on release), with detail `{ value, angle, units }`. Event values are rounded to `precision`; the component retains its higher-precision internal value.
370
370
 
371
371
  ```html
372
- <fig-slider min="0" max="100" value="50" units="%"></fig-slider>
372
+ <fig-slider min="0" max="100" value="50" default="25" units="%"></fig-slider>
373
373
  <fig-slider type="hue" value="180" text="false"></fig-slider>
374
374
  <fig-slider type="opacity" value="75" color="#FF5733" units="%"></fig-slider>
375
375
  ```
376
376
 
377
- For `type="range"`, omitting `value` follows native range behavior and starts at the midpoint of `min` and `max`. Arrow keys move by `step`; hold Shift to move by a larger step.
377
+ For `type="range"`, omitting `value` follows native range behavior and starts at the midpoint of `min` and `max`. An explicitly authored, in-range, step-aligned `default` renders a tick and is passed to the native range input as a snap target; internally inferred defaults do not. Arrow keys move by `step`; hold Shift to move by a larger step.
378
378
 
379
379
  ---
380
380
 
package/components.css CHANGED
@@ -3157,8 +3157,9 @@ fig-slider {
3157
3157
  --slider-tick-radius: 100%;
3158
3158
  --slider-border-radius: calc(var(--slider-height) / 2);
3159
3159
  --slider-stepper-padding: calc(
3160
- (var(--slider-height) / 2) - var(--slider-tick-width) / 2
3160
+ (var(--slider-thumb-size) / 2) - var(--slider-tick-width) / 2
3161
3161
  );
3162
+ --slider-default-tick-end-inset: calc(var(--slider-stepper-padding) * 2);
3162
3163
  --slider-track-color: var(--figma-color-bg-secondary);
3163
3164
  --slider-percent: calc(var(--slider-complete) * 100%);
3164
3165
  --start-percent: calc(var(--default, 0) * 100%);
@@ -3449,11 +3450,25 @@ fig-slider {
3449
3450
  }
3450
3451
  }
3451
3452
 
3453
+ datalist[data-generated="slider-default"] option:first-child:last-child {
3454
+ position: absolute;
3455
+ margin: 0;
3456
+ left: clamp(
3457
+ var(--slider-stepper-padding),
3458
+ calc(var(--start-percent) - var(--slider-tick-width) / 2),
3459
+ calc(100% - var(--slider-default-tick-end-inset))
3460
+ );
3461
+ top: calc(50% - var(--slider-tick-height) / 2);
3462
+ }
3463
+
3452
3464
  &:not([variant="classic"]) {
3453
3465
  --slider-height: 0.375rem;
3454
3466
  --slider-thumb-size: 0.75rem;
3455
3467
  --slider-tick-width: calc(var(--slider-height) / 2);
3456
3468
  --slider-tick-height: calc(var(--slider-height) / 2);
3469
+ --slider-default-tick-end-inset: calc(
3470
+ var(--slider-thumb-size) / 2 + var(--slider-tick-width) / 2 - 0.125rem
3471
+ );
3457
3472
  --slider-number-width: var(--input-opacity-width);
3458
3473
  --handle-transition: none;
3459
3474
  --slider-transition: none;