Toast changelog
v2.3.3 (2026-10-23)
Internal graphic/text and independent text regions keep at least 4 CSS px between them as root font and gap scale shrink, while preserving larger preferred gaps. Short labels can use inherited singleLine with Text lines={1} for truncation and full text. Rich multiline content does not automatically become a single line.
2026-09-21: Aligned the usage guide, source Prop table, and Site / AI reading entry. Documentation only; component behavior is unchanged.
v2.3.2 (2026-07-05)
Fixes
Follow the external Icon replacement protocol for direct
leadingchildren of Toast. When an externalas="leading"child is present, the built-in CheckCircle / Warning is no longer rendered. This fixes TS-04 showing two icons at once.
v2.3.0 (2026-06-18)
Style adjustments
Added
backdrop-filter: blur(var(--size-10))and its WebKit prefix to the default variant, matching the blur level of shared overlay panels.The rich variant no longer overrides the Toaster idle layer with opaque
Background/1. It retains theBackground/3 + blur(var(--size-10))from.snowui-quick-action-panel. This favors the glass effect and allows a slight view of lower stacked content through the translucent background.Toaster no longer uses separate slot / measure wrappers for motion. The Toast root itself handles stack
translate/scale, lifecycletransform, combined opacity, background, andbackdrop-filter, so an external blur plate does not appear as a separate gray layer while content fades.In the single-layer structure, opacity is merged into the Frame fade configuration: appear uses
[80% × stackOpacity, stackOpacity], and disappear uses[stackOpacity, 80% × stackOpacity]. The default steady opacity is0.8for layer 2 and0.6for layer 3; their exit endpoints are0.64 / 0.48. This avoids usingfilter, which conflicts with Frame blur motion.Removed the unused
--snowui-toast-idle-background-override.
v2.2.0 (2026-05-15)
Added
Inline mode
as="toast": Toast, as a child of a host such as Button, finds its parent and binds the click trigger automatically. It needs neither an id nor a manualshowToastcall. This follows the three activation modes in ComponentGuidelines.md §5. Toast now supports panel, inline, and template modes.Added TS-30 / TS-31 examples for the default / rich variants in inline mode.
v2.1.0 (2026-05-11)
Fixes
Hovering any visible Toast in a stack pauses the auto-dismiss timers of all visible layers at that position. Timers resume from their remaining time when hover ends; lower layers still do not show X.
The Toaster measure layer now explicitly carries
--su-motion-transform/--su-motion-opacity, fixing the missing translation in a normal exit animation.The rich background of the Toaster idle layer was made opaque with
--background-1to prevent lower Toast content showing through. This historical policy was reversed in v2.3.0.When the stack exceeds
maxVisible, the current last Toast enterspushed-out, moves farther in its entrance direction, and fades out, giving it a distinct pushed-out exit.Removed the Toaster
document.startViewTransitionupdate wrapper, so the browser transition queue no longer blocks repeated button clicks during motion.Toaster uses the outer slot for stack transform / opacity and the inner Frame for appearing and exiting, so appear/disappear transform does not override stack translation.
The exit ghosting fix uses two transform layers: the inner Frame keeps a stable
translateY(±100%)exit; the outer slot addsindex * gap + offset + 20pxof translation duringexiting / pushed-out. Do not placecalc(±100% ± offset ± 20px)in the innerwhileDisappear.Changed the Toaster stack slot from a plain
div + animate:fliptoFrame/Frame, so stack transform / opacity transitions share Frame motion.dismissToast()first marks the itemexitingand entersDisappear, then removes it after the exit animation, preventing instant disappearance.Frame added the controlled
currentStateentry, and itsAppear/Disappearstates now emit motion styles in Frame inline motion.Aligned the default dwell time, region width, stack gap, scale factor, hiding rules, and top/bottom slide directions with HeroUI.
Added reusable motion atoms and composition presets without Toast-specific names:
slide/fade/scale/stackTranslate. Toast composes them asslideFromTop/slideToTopand similar uses.
v2.0.0 (2026-05-11)
Breaking changes
Removed the
title/description/iconprops from<Toast>; all text and slot structure now come from external children.Added the
positive?: booleanprop to<Toast>:trueshows CheckCircle (positive),falseshows Warning (problem), andundefinedshows no built-in icon.Updated the imperative
toast()API fromtitle/description/icontotext+positive. String syntax remains valid and is equivalent to{ text }.Removed the
ToastIconKindtype export.
Fixes
Fixed
.snowui-toast-builtin-iconnever matching: the Icon class is on an inner.snowui-icon, not a direct child. The selector now targets descendants instead of>and uses Icon's--snowui-icon-width/height-overrideto override the default 1rem size, so sm / md correctly differ at 16 / 20.Fixed external Icon replacement of the built-in icon. Following LayoutProtocol §4.1.5, the selector uses
:has(~) + :has(.builtin)(as in SearchInput) to target the built-in wrapper precisely.
v1.0.0 (2026-05-10)
New features
Initial implementation: the
<Toast>visual unit, global<Toaster>Portal, and imperativetoast()API.Three slots: Leading / Content / Trailing. Built-in CheckCircle / Warning can be replaced by an external Icon.
Two variants: default (dark glass pill, sm / md) and rich (white card reusing
.snowui-quick-action-panel).Six positions (top / top-left / top-right / bottom / bottom-left / bottom-right), defaulting to top, 40px from the edge.
Auto-dismiss (3 seconds by default), same-position stacking, and smooth advancement via
animate:flip(historical implementation replaced by Frame slots in v2.1.0).Entrance and exit motion explicitly combines
slide + fade + scale; Frame still owns lifecycle statesAppear / Disappear.