Pricing

Radio changelog

v1.4.0 (2026-10-23)

  • Labels use the shared single-line preset while preserving their original snippet. Constrained labels can shrink; complex multiline content can explicitly opt out. Shared gap resolution retains at least 4 CSS px for zero or font/gap scaling and preserves larger preferred gaps, control geometry and transparent inset proportions.

  • Keep the existing deselection behavior without canceling the native click state commit. Fixes a canceled bound value leaving the native input checked. Space still prevents duplicate browser activation.

  • 2026-09-21: Unified the usage guide, source property table, and Site / AI reading entry points. Documentation only; component behavior is unchanged.

  • Radio-Docs.2026-05-25 Archived the historical changelog at the top of the source file. Subsequent changes go in this document’s changelog; the source header retains only responsibilities, current key architecture, and the documentation path.

v1.3.17 (2026-08-20)

  • RD-Hover.5 Filled selected hover adds 20% Static White only to the thick black selected ring; the center white hole is unchanged. Outline selected hover mixes the Dot with 20% Static White over primary color and adds another 20% black to the base outer ring.

v1.3.16 (2026-08-20)

  • RD-Hover.4 By user decision, raised the unchecked-border hover overlay from 4% to 20% black. The base border remains one 20% black layer, yielding roughly 36% black when combined; fill is unchanged. This value and separate overlay are registered as a scoped StyleSpec §2.4.3 exception.

v1.3.15 (2026-08-20)

  • RD-Hover.3 Hover now uses a separate overlay above the base border and selected ring. This avoids flicker from interpolating a translucent box-shadow and no longer rewrites the selected ring color after a click.

  • RD-Ring.1 The unchecked state draws only one 20% black base border. The separate selected ring starts at zero width and expands over 150ms only when Filled is selected, avoiding stacked base borders.

v1.3.14 (2026-08-20)

  • RD-Hover.2 Unchecked hover keeps fill unchanged and layers 4% primary over the base 20% black border, using the same border-darkening rule as Checkbox.

v1.3.13 (2026-08-20)

  • RD-Hover.1 Hover color covers fill, base inset border, and the Filled selected ring. Selected and unselected states each use their existing hover fill color across the whole visual surface.

v1.3.12 (2026-08-20)

  • RD-Size.1 Clarified that size is the outer visual dimension including the inset border, and fixed this boundary with border-box.

  • RD-Motion.1 Dot, base border, and Filled selected ring now use the same 150ms ease-out as ordinary Checkbox states instead of the old 300ms default.

v1.3.11 (2026-08-20)

  • RD-Scale.1 The unchecked border scales proportionally by size × 0.0625 from the Workshop 14756:16934 baseline of 32px / 2px. The public border-width override still wins; Filled ring structure and animation are unchanged.

v1.3.10 (2026-04-28)

Changes

  • RD-Layout.1 Registered Radio as an inline-shell layout under LayoutProtocol.md, documented the visual + label boundary, and consolidated gap through --snowui-radio-gap / --snowui-radio-gap-override.

v1.3.9 (2026-03-10)

Changes

  • RD-Adjust.8 Reversed the experiment with a single border becoming thicker directly, restoring a persistent thin border plus a separate selected-ring layer. This preserves the previous border structure and animation path.

v1.3.8 (2026-03-10)

Changes

  • RD-Adjust.7 Experimented with a single Filled border thickening/thinning directly and removing the separate selected-ring layer. This approach was later reversed.

v1.3.7 (2026-03-10)

Changes

  • RD-Adjust.6 The Filled selected ring no longer approximates thickness change through scale + fade. A persistent selected-ring layer now transitions border width and color directly, restoring a real thickness animation without a layer-switch discontinuity at the end.

v1.3.6 (2026-03-10)

Changes

  • RD-Adjust.5 Changed the Filled selected ring from opacity-only fade to scale + fade to restore the appearance of a thick-to-thin border while still avoiding flicker from inset-width interpolation at small sizes.

v1.3.5 (2026-03-10)

Fixes

  • RD-Fix.16 On deselection at small sizes, Filled no longer interpolates thick inset-border width. A stable thin border persists while the separate thick selected ring changes only opacity, avoiding a sudden drop to the unselected appearance near the end.

v1.3.4 (2026-03-10)

Fixes

  • RD-Fix.15 During deselection in the default Filled variant, the thin border remains and the thick selected border retracts as a separate inner layer, avoiding a sudden switch to the unselected visual at a particular width.

v1.3.3 (2026-03-10)

Fixes

  • RD-Fix.14 Unchecked hover in the default Filled variant stopped using a separate overlay layer. Border and background variables now transition directly on .snowui-radio-visual, removing a flash of a new layer after the thick ring retracts.

v1.3.2 (2026-03-10)

Fixes

  • RD-Fix.13 Restored unchecked hover in the default Filled variant to a persistent 0% overlay baseline; hover changes only its opacity, further reducing flicker on checked → unchecked.

v1.3.1 (2026-03-10)

Fixes

  • RD-Fix.12 Added a background-color transition to the visual layer during deselection, preventing the hover background from jumping instantly on checked → unchecked.

v1.3.0 (2026-03-10)

New features

  • RD-Behavior.1 Radio can now be deselected by clicking its currently selected option. Keyboard Space follows the same behavior.

  • RD-Behavior.2 When using bind:group, deselecting the current item clears group to undefined while keeping subsequent group updates working.

  • RD-Fix.11 Removed cursor: default from the checked state because the selection can now be cancelled.

v1.2.15 (2026-03-10)

New features

  • RD-Role.1 Added Radio’s as="badge" role for composition as a top-right badge in an Image host.

v1.2.14 (2026-03-06)

Changes

  • RD-Bridge.1 Radio Dot and Filled ring transitions now consume Frame’s shared timing bridge variables. The component defines only final ring thickness, not an independent default duration or easing.

v1.2.13 (2026-02-23)

Fixes

  • RD-Fix.10 Fixed checked cursor semantics: the selected item emits data-checked="true" and sets cursor: default at component level to avoid a misleading pointer on hover.

v1.2.12 (2026-02-18)

Fixes

  • RD-Fix.9 Fixed hover flicker with the previous stable strategy: unchecked hover changes only the mixed background, not the border.

  • RD-Adj.4 Preserved the default Filled active-state border-thickening transition, applying the border animation only when checked.

v1.2.11 (2026-02-18)

Fixes

  • RD-Fix.8 Further fixed hover flicker by removing the visual background-image overlay chain and mixing colors through background-color directly.

v1.2.10 (2026-02-18)

Fixes

  • RD-Fix.7 Fixed hover flicker by changing state and hover selectors from :has(...) to the sibling chain (input + visual).

v1.2.9 (2026-02-18)

Fixes

  • RD-Fix.6 Fixed missing active animation in the default Filled variant by adding a smooth transition for its thicker selected border.

  • RD-Adj.3 Aligned animation duration and easing with Checkbox/Switch (0.2s and cubic-bezier(0.4, 0, 0.2, 1)).

v1.2.8 (2026-02-18)

Changes

  • RD-Adj.2 Changed the default color chain to primary: without a color class, the active state uses --primary, matching Filled Button behavior.

v1.2.7 (2026-02-18)

Fixes

  • RD-Fix.5 Further fixed hover flicker by removing visual-layer color transitions that jittered during interpolation.

v1.2.6 (2026-02-18)

Fixes

  • RD-Fix.4 Fixed disappearing flicker on hover entry and exit by keeping a fixed gradient overlay and changing opacity through a variable rather than swapping background-image.

v1.2.5 (2026-02-18)

Fixes

  • RD-Fix.3 Fixed hover flicker with a persistent 0% overlay baseline on the visual; hover changes only overlay strength. Transitioned properties were narrowed to avoid repaint jitter.

v1.2.4 (2026-02-18)

Changes

  • RD-Color.1 Unified component color under the currentColor chain so class="text-*" can override the entire component.

  • RD-Color.2 Replaced gray-scale layers with same-color alpha layers (20%/40%) for one color system across active and inactive states.

v1.2.3 (2026-02-18)

Changes

  • RD-Adj.1 Changed the default variant from outline to filled.

v1.2.2 (2026-02-18)

Improvements

  • RD-Opt.1 Aligned the size scale with Icon: 16/20/24/28/32/40/48/80.

  • RD-Opt.2 Rewrote the size chain with --size-* Tokens and completed the override -> internal -> token variable bridge.

v1.2.1 (2026-02-18)

Fixes

  • RD-Fix.2 Removed the component’s cursor: pointer. Disabled cursor behavior now uses the shared Frame Surface + .snowui-disabled chain.

v1.2.0 (2026-02-03)

Fixes

  • RD-Fix.1 Completed explicit Frame capability-switch forwarding and aligned internal variable names with project conventions.



The following content is for AI readers and links code to documentation.