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 with20%Static White over primary color and adds another20%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%to20%black. The base border remains one20%black layer, yielding roughly36%black when combined; fill is unchanged. This value and separate overlay are registered as a scopedStyleSpec §2.4.3exception.
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-shadowand 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 over150msonly 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 base20%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
sizeis the outer visual dimension including the inset border, and fixed this boundary withborder-box.RD-Motion.1 Dot, base border, and Filled selected ring now use the same
150ms ease-outas 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.0625from the Workshop14756:16934baseline 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-colortransition 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
Spacefollows the same behavior.RD-Behavior.2 When using
bind:group, deselecting the current item clearsgrouptoundefinedwhile keeping subsequent group updates working.RD-Fix.11 Removed
cursor: defaultfrom 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 setscursor: defaultat 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-imageoverlay chain and mixing colors throughbackground-colordirectly.
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.2sandcubic-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
currentColorchain soclass="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
variantfromoutlinetofilled.
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 theoverride -> internal -> tokenvariable bridge.
v1.2.1 (2026-02-18)
Fixes
RD-Fix.2 Removed the component’s
cursor: pointer. Disabled cursor behavior now uses the shared FrameSurface+.snowui-disabledchain.
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.