# Switch changelog Read the complete [LICENSE](https://snowui.dev/LICENSE) for the installed version before use. Reviewed against Chinese source SHA-256 `ff9c7cc0c40f3c1809ee7c75bb83444140e4df7ad16dba307e2c8f84bd156467`. For version differences, check the installed package as well. ### v1.2.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. - 2026-09-21: Unified the usage guide, source property table, and Site / AI reading entry points. Documentation only; component behavior is unchanged. - **Switch-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.1.17 (2026-08-31) #### Adjustments - **TG-Motion.1** Track background and Thumb movement continue to use the shared Frame `control` timing bridge, with the default duration capped at `150ms` like Checkbox and Radio. Under `prefers-reduced-motion: reduce`, transitions are removed and the final state is committed immediately. ### v1.1.16 (2026-04-28) #### Adjustments - **TG-Layout.1** Registered the component as an inline shell layout per `LayoutProtocol.md`, documented the track + label layout boundary, and consolidated the gap chain under `--snowui-switch-gap` / `--snowui-switch-gap-override`. ### v1.1.15 (2026-03-06) #### Adjustments - **TG-Bridge.4** Track background and Thumb movement transitions now use the shared Frame `control` timing bridge variables; the component no longer maintains separate default duration / easing. ### v1.1.14 (2026-02-18) #### Adjustments - **TG-Adj.3** Aligned motion duration and easing with Radio/Checkbox (`0.2s` + `cubic-bezier(0.4, 0, 0.2, 1)`), covering Track and Thumb transitions. ### v1.1.13 (2026-02-18) #### Fixes - **TG-Fix.8** Fixed Switch hover not working by replacing the `:has(...)` state selector with the `input:checked + .snowui-switch-track` chain for better compatibility and stability. ### v1.1.11 (2026-02-18) #### Adjustments - **TG-Adj.1** Changed the default color chain to the primary color. With no color class set, the active state uses `--primary`, matching Filled Button behavior. - **TG-Adj.2** Fixed the circular Thumb to the white token `--static-white-100`. ### v1.1.10 (2026-02-18) #### Fixes - **TG-Fix.7** Further fixed hover flicker by removing the Track color transition to avoid interpolation jitter in the color chain. ### v1.1.9 (2026-02-18) #### Fixes - **TG-Fix.5** Fixed flicker on hover entry and exit: the overlay now uses a persistent gradient with variable-driven opacity instead of switching `background-image` on hover. - **TG-Fix.6** Restored active-state contrast: the selected Track regained a solid primary-color background and the Thumb returned to `--white-100`. ### v1.1.8 (2026-02-18) #### Fixes - **TG-Fix.4** Fixed hover flicker by keeping a persistent 0% overlay baseline on the Track. Hover changes only overlay intensity, avoiding a flashing `none -> gradient` switch. ### v1.1.7 (2026-02-18) #### Adjustments - **TG-Color.1** Unified component coloring through the `currentColor` chain, allowing `class="text-*"` to override the whole component. - **TG-Color.2** Replaced the grayscale layer with same-color opacity layers (20%/40%), using one color family in both active and inactive states. ### v1.1.6 (2026-02-18) #### Fixes - **TG-Fix.3** Fixed the Thumb appearing too close to the edge at large sizes. `thumb-gap` now scales with height (`gap = height * 0.125`, or 2px at height 16). ### v1.1.5 (2026-02-18) #### Improvements - **TG-Opt.1** Aligned the size scale with Icon: `16/20/24/28/32/40/48/80`. - **TG-Opt.2** Moved the size chain to `--size-*` tokens, deriving width and Thumb dimensions from height. - **TG-Opt.3** Completed the `override -> internal -> token` variable bridge. ### v1.1.4 (2026-02-18) #### Fixes - **TG-Fix.2** Removed internal `cursor: pointer`; the disabled cursor is now controlled by the shared Frame `Surface` + `.snowui-disabled` chain. ### v1.1.3 (2026-02-03) #### Fixes - **TG-Fix.1** Explicitly passed the Frame capability switches and aligned internal variable names with the naming convention. --- --- > **The following content is for AI reading and links code maintenance to documentation.** [Component guide](https://snowui.dev/llms/en/components/switch.md) · [Full reference](https://snowui.dev/llms/en/components/switch/reference.md)