# Tab changelog Read the complete [LICENSE](https://snowui.dev/LICENSE) for the installed version before use. Reviewed against Chinese source SHA-256 `ff7bbfdd5482bf70f930cf31e64301b53632948ef8c8dacb52f912d3844264f5`. For version differences, check the installed package as well. ### v1.3.2 (2026-10-22) - Generated icon-toggle items retain their label as an accessible name when text is hidden. Segmented inherits this through Tab; spacing and interaction continue to use Button. ### v1.3.1 (2026-10-14) - Buttons, Icons, and Text generated from default items receive their respective parts directly. Explicit children do not inherit these default configurations. - 2026-09-21: Unified the usage guide, source property table, and Site / AI reading entry points. Documentation only; component behavior is unchanged. ### v1.2.3 (2026-08-17) - Moved Tab root size observation into shared `resizeManager`, standardizing SSR, unavailable-capability, per-frame delivery, and resource-release boundaries. ### v1.2.2 (2026-08-14) - The `icon-toggle` variant now uses the same `blur(1.25rem)` background blur as pill and SearchBox. ### v1.2.1 (2026-08-14) - Added `backdrop-filter: blur(1.25rem)` to the default `pill` variant, matching SearchBox, with `-webkit-backdrop-filter` as well. - Added the public `--snowui-tab-background-blur-override`; other variants do not enable background blur by default. ### v1.2.0 (2026-07-06) - Added optional `icon` to `TabItem`. Built-in mode can generate `Button + Icon + Text` and fully supports `variant="icon-toggle"`. ### v1.1.1 (2026-06-23) #### Item size override contract - Clarified Item size-style precedence: `style > class > Button size > Tab size`. Tab size is only the composition default when no explicit size is supplied. ### v1.1.0 (2026-06-23) #### New features and size contract - Added `variant="bare"`: neither container nor Item has a shell or indicator. It supports text, one Icon, or mixed content with 12/16/20px gaps and 0.4→1 opacity states. - Tab `size` is passed to direct child `Button as="item"` through an explicit Button size context. Button remains the sole owner of size definitions; an explicit instance `size` takes precedence. ### v1.0.8 (2026-06-22) #### Composition - Added shell-free Button Item composition. Tab’s `--snowui-button-opacity-override` and Button’s internal opacity variable share one root-node cascade, so inactive opacity remains 0.4 instead of multiplying to 0.16. ### v1.0.7 (2026-06-21) #### Motion ownership - Added the `TAB_INDICATOR_MOTION` family preset, returning indicator transform, width, and height to the 250ms smooth-out of transitions.dev Tabs sliding. - Movement now consumes the actual Frame control bridge and drops a nonexistent transform bridge name. Tab no longer misuses generic `RESIZE_MOTION`. ### v1.0.6 (2026-06-21) #### Motion fixes - Fixed ResizeObserver synchronously overwriting indicator movement without animation after switching `variant="icon-toggle"`. After initialization, all size remeasurements continue to animate movement. - The Tab root previously injected a generic resize preset; v1.0.7 replaced it with the Tab-specific indicator preset. ### v1.0.5 (2026-06-18) #### Motion restoration - Fully aligned with transitions.dev Tabs sliding: indicator transform, width, and height all use 250ms and `cubic-bezier(0.22, 1, 0.36, 1)`, removing the mismatch between the former 200ms movement and 300ms resizing. - Initial rendering and resize still snap the indicator into place; `prefers-reduced-motion` now disables indicator transitions. ### v1.0.4 (2026-06-13) #### Interaction fixes - Aligned background movement with transitions.dev Tabs sliding. The indicator now writes DOM `transform / width / height` directly. Initial placement and resize temporarily disable transitions and force reflow to snap into place; only user switches slide. ### v1.0.3 (2026-05-31) #### Style adjustments - Active Text / Icon color depends on variant: pill / icon-toggle retain `--static-black-100`, underline uses `--primary`, and solid keeps Button’s default color chain. - Inactive Text / Icon consistently use `--black-100 × opacity: 0.4`. - Added Icons to the examples for all four variants so Text / Icon color inheritance can be observed directly. ### v1.0.2 (2026-05-31) #### Style adjustments - Corrected Item colors in both states: inactive Text / Icon retain Button’s default `--black-100`; active Text / Icon use `--static-black-100`. - The inactive 40% appearance still comes only from overall `opacity: 0.4`; inactive hover and active states use `opacity: 1`. ### v1.0.1 (2026-05-31) #### Style adjustments - Removed the 40% color-value path for inactive Items in favor of `opacity: 0.4`. Hover / active return to `opacity: 1`, matching `StyleSpec.md §2.4.5`. - Added external override entries `--snowui-tab-inactive-opacity-override` / `--snowui-tab-hover-opacity-override`. ### v1.0.0 (2026-05-20) #### New features - Initial implementation: 4 variants (pill / solid / underline / icon-toggle) × 3 sizes (sm/md/lg) × 2 directions (row/column). - Shared indicator position / size transitions, consuming Frame control / size motion bridge variables. - Roving tabindex keyboard behavior with a `selectionFollowsFocus` mode switch. - Supports Figma `fill` width, distributing horizontal Items evenly when the container has an explicit width. - Added `FRAME_SIZE_MOTION_BRIDGE` to Frame alongside this work; see bridge.md changelog v1.3.0. #### Corrections - The `variant="underline"` container now has a default corner radius of 0. The component calculates underline / vertical-line dimensions rather than relying on CSS to override inline dimensions. [Component guide](https://snowui.dev/llms/en/components/tab.md) · [Full reference](https://snowui.dev/llms/en/components/tab/reference.md)