# Checkbox changelog Read the complete [LICENSE](https://snowui.dev/LICENSE) for the installed version before use. Reviewed against Chinese source SHA-256 `6ff13019255e55b3edb77ba2f2bd4e6c22a2b35ebc9e734ed8dc17515afe8928`. For version differences, check the installed package as well. ### v1.3.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. - Update a group array only when membership changes. Fixes repeated writes and an effect update loop on empty-array initialization; indeterminate clearing and one callback per change are preserved. - 2026-09-21: Unified the usage guide, source property table, and Site / AI reading entry points. Documentation only; component behavior is unchanged. - **Checkbox-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.2.28 (2026-08-20) - **CB-Corner.1** The Checkbox shell continues to share Button’s `.snowui-rounded-rectangle` / `superellipse(1.1)` iOS continuous corners. The inner hover overlay explicitly inherits `border-radius` and `corner-shape`, so the base border, selected background, and hover surface share one outline. ### v1.2.27 (2026-08-20) - **CB-Hover.4** By user decision, raised the unchecked-border hover overlay from `4%` to `20%` black. The base border remains `20%` black, making the combined appearance roughly `36%` black; fill is unchanged. This value and the separate overlay implementation are recorded as a scoped `StyleSpec §2.4.3` exception. ### v1.2.26 (2026-08-20) - **CB-Hover.3** Hover now fades in a separate overlay rather than interpolating a translucent inset `box-shadow` directly. The unchecked state adds only a `4%` primary-color border layer; the checked state covers the full surface with `20%` Static White, eliminating border flicker from becoming transparent and then recovering. ### v1.2.25 (2026-08-20) - **CB-Hover.2** Unchecked hover keeps the fill unchanged and layers `4%` primary color over the base `20%` black border to darken it under hover rules. The checked state still uses the same color for fill and border. ### v1.2.24 (2026-08-20) - **CB-Hover.1** Hover color covers both visual fill and inset border: both use a `4%` primary-color mix when unchecked, and primary color plus `20%` Static White when checked or indeterminate, avoiding separate border and fill colors. ### v1.2.23 (2026-08-20) - **CB-Motion.4** The checkmark and indeterminate line keep Static White throughout their exit transition, preventing a black afterimage caused by inherited color reverting immediately after deselection. - **CB-Test.1** Added the indeterminate line state to the basic test example. ### v1.2.22 (2026-08-20) - **CB-Visual.2** Changed checked / indeterminate shapes to the 28×28 baseline proportions from Workshop `14763:16992`. The check path uses exact design coordinates; the line is `12/28` of the outer frame width. Both scale with the visual. - **CB-Motion.3** Deselecting no longer reverses the checkmark draw animation. The mark fades out with the selected background using normal state timing, and the path resets without animation only after it is fully invisible. ### v1.2.21 (2026-08-20) - **CB-Size.1** Clarified that `size` is the outer visual dimension including the inset border, and fixed this boundary with `border-box`. - **CB-Motion.2** Standardized ordinary state transitions at `150ms ease-out`. The checked mark draws as a separate path, slower on entry (`200ms ease-out`) and faster on exit (`120ms ease-in`). ### v1.2.20 (2026-08-20) - **CB-Visual.1** Changed checked / indeterminate shapes to the 32×32, 2px round-cap stroke paths from Workshop `14756:16934`, scaling with the component. - **CB-Motion.1** Changed the checked mark to a drawn path; reduced-motion mode commits the final path immediately. Selected background, border, and color are unchanged. - **CB-Scale.1** The unchecked border scales proportionally from 2px at size 32px using `size × 0.0625`; the public border-width override still takes precedence. ### v1.2.19 (2026-06-23) - Added `onCheckedChange` and `ariaLabel` for layouts without a visible label, for reuse by Table’s built-in selection column. ### v1.2.18 (2026-04-28) #### Changes - **CB-Layout.1** Registered the component as an inline-shell layout under `LayoutProtocol.md`, documented the visual + label layout boundary, and explicitly defined the default `--snowui-checkbox-gap`. ### v1.2.17 (2026-04-02) #### Changes - **CB-Bridge.3** Added component-level variable bridges for label gap, font, and line height so composition hosts can control Checkbox icon-to-text spacing and label styling together. ### v1.2.16 (2026-03-06) #### Changes - **CB-Bridge.2** Checkmark / indeterminate icon visibility transitions now consume Frame `control` timing bridge variables; the component no longer owns independent default duration or easing. ### v1.2.15 (2026-02-18) #### Fixes - **CB-Fix.13** Fixed hover flicker using the earlier stable strategy: removed visual color/border transitions, so unchecked hover no longer changes the border. ### v1.2.14 (2026-02-18) #### Fixes - **CB-Fix.12** Further fixed hover flicker by removing the visual `background-image` overlay chain and mixing colors directly through `background-color`. ### v1.2.13 (2026-02-18) #### Fixes - **CB-Fix.11** Fixed hover flicker by changing state and hover selectors from `:has(...)` to the sibling chain (`input + visual`). ### v1.2.12 (2026-02-18) #### Changes - **CB-Adj.5** Aligned animation duration and easing with Radio/Switch (`0.2s` and `cubic-bezier(0.4, 0, 0.2, 1)`) for visual and icon transitions. ### v1.2.11 (2026-02-18) #### Changes - **CB-Adj.4** The active hover overlay now follows the icon’s white Token (`--static-white-100`), matching the rule that overlay color equals icon/text color. ### v1.2.10 (2026-02-18) #### Changes - **CB-Adj.3** Changed the active checkmark’s white Token to `--static-white-100` for both icon color and path fill. ### v1.2.9 (2026-02-18) #### Changes - **CB-Adj.1** Changed the default color chain to primary: without a color class, the active background uses `--primary`, matching Filled Button behavior. - **CB-Adj.2** Fixed the active checkmark to white with an explicit path fill. ### v1.2.8 (2026-02-18) #### Fixes - **CB-Fix.10** Fixed missing hover feedback in the active state: checked/indeterminate hover directly uses a mixed `white 20% + primary` background so the change is visible. ### v1.2.7 (2026-02-18) #### Fixes - **CB-Fix.8** Fixed active icon color by setting checked/indeterminate icons explicitly to `--white-100`. - **CB-Fix.9** Fixed missing hover in the active state by switching checked/indeterminate hover overlay to the white color chain for greater visibility. ### v1.2.6 (2026-02-18) #### Fixes - **CB-Fix.6** Further fixed hover flicker by removing visual-layer color transitions that jittered during interpolation. - **CB-Fix.7** Decoupled icon color from the primary chain. The active icon now always uses `--white-100`, preventing `currentColor` from feeding back into the primary chain. ### v1.2.5 (2026-02-18) #### Fixes - **CB-Fix.4** Fixed disappearing flicker on hover entry and exit: the overlay is now a fixed gradient whose opacity changes through a variable, avoiding a `background-image` swap on hover. - **CB-Fix.5** Restored active-state contrast by returning checked/indeterminate icon color to `--white-100`. ### v1.2.4 (2026-02-18) #### Fixes - **CB-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.3 (2026-02-18) #### Changes - **CB-Color.1** Unified component color under the `currentColor` chain so `class="text-*"` can override the entire component. - **CB-Color.2** Replaced gray-scale layers with same-color alpha layers (20%/40%), giving active and inactive states one color system. ### v1.2.2 (2026-02-18) #### Fixes - **CB-Fix.2** Removed the component’s `cursor: pointer`. Disabled cursor behavior now follows the shared Frame `Surface` + `.snowui-disabled` chain (default arrow when disabled). ### v1.2.1 (2026-02-18) #### Changes - **CB-Map.1** Aligned the size scale with Icon: `16/20/24/28/32/40/48/80`, mapped to `--size-4/5/6/7/8/10/12/20`. - **CB-Bridge.1** Added override bridges for `radius` and `border-width`: `--snowui-checkbox-radius-override` / `--snowui-checkbox-border-width-override`. - **CB-Token.1** Rewrote the size chain with Tokens (standard steps use `--size-*` directly; nonstandard values fall back to `calc(var(--size-4) * n / 16)`). ### v1.2.0 (2026-02-03) #### Fixes - **CB-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.** [Component guide](https://snowui.dev/llms/en/components/checkbox.md) · [Full reference](https://snowui.dev/llms/en/components/checkbox/reference.md)