A visual orientation to the contract, followed by the complete consumer guide and public reference.
Releases
Atom follows semantic versioning. The website and npm package release independently; this page mirrors the complete reviewed package changelog.
0.25.1 - 2026-08-30
- Prevented Highlight from accepting or forwarding
dangerouslySetInnerHTML, preserving its plain-text-derived output contract for typed, untyped, and server-rendered consumers.
0.25.0 - 2026-08-30
- Added headless Highlight literal-query segmentation with stable offsets, deterministic overlap handling, first/all and case options, Unicode-aware whole-word matching, native mark semantics, server-safe rendering, public documentation, and exact-version Agent Knowledge.
0.24.0 - 2026-08-28
-
Added headless
ColorPickeropaque-hex selection with editable and native inputs, preset triggers, optional Popover composition, read-only inspection, and hidden form submission. -
Added an export-led Agent Knowledge catalog and deterministic coverage report that classify every public subpath and symbol, validate structured selection destinations, reject stale generated output, and verify the same complete discovery surface from the packed installed package before publication. All Agent Knowledge build, archive, and installed-consumer paths now enforce the closed 69-owner catalog with zero coverage failures.
-
Embedded original TypeScript sources in published JavaScript maps so package consumers can inspect and bundle Atom without missing-source warnings.
-
Kept collapsible NavList section content mounted through styled exit motion, exposed measured content-size hooks, and suppressed entrance animation for initially open sections.
-
Kept Popover open while focus or pointer interaction moves into portalled Atom controlled layers opened from its Content, including Dropdown Menu, including browser focus transitions through the document during modal setup.
0.23.0 - 2026-08-21
- Added headless
DragDropbehavior for labelled same-document sources and targets, mouse/pen/touch and keyboard movement, invalid-release cancellation, RTL-aware targeting, and localizable announcements. - Added the controlled
Reorderordered-collection preset with stable item identities, before/after movement, focus continuity, and visible Move-before/after/start/end alternatives that do not require dragging. - Added native URL-backed Pagination through
Root.getPageHref, rendering Item, Previous, and Next as real anchors while preserving button mode, current-page semantics, browser navigation, and inert boundary controls.
0.22.6 - 2026-08-10
- Kept the pure-render Divider primitive and explicit subpath server-safe for React Server Component consumers.
- Added public Agent Knowledge for Accordion and List and routed both from the package-level selection and behavior-composition guides.
0.22.5 - 2026-08-08
- Kept Carousel's initial active slide aligned after hydration by scrolling
only its own viewport instead of delegating to
scrollIntoView().
0.22.4 - 2026-08-08
- Made Carousel looping continue in the requested direction from last to first
and first to last without cloning authored slide content, IDs, controls, or
form fields, including DOM-like environments without
requestAnimationFrame.
0.22.3
- Made Carousel rotation-control activation independent of browser-specific focus/click timing so pointer users reliably stop or start rotation in Chromium, Firefox, and WebKit while keyboard focus still stops rotation.
0.22.2
- Made the Carousel viewport keyboard-focusable by default so its native horizontal scroll region remains operable in Safari and satisfies the scrollable-region accessibility contract.
0.22.1
- Fixed the Carousel rotation control so pointer focus and the following click complete one stop action instead of immediately restarting rotation.
0.22.0
- Added the headless one-active-slide Carousel family with controlled and uncontrolled selection and automatic rotation, optional Previous, Next, grouped picker and rotation controls, native touch-scroll selection, focus/hover/visibility pause policy, LTR/RTL support, public behavior state, documentation, and Agent Knowledge.
0.21.0
- Centered Navigation Menu's horizontal Viewport on its active trigger and added collision-aware visual-viewport geometry, configurable padding, and public resolved-position variables for styled connector alignment.
0.20.12
- Added package-level layer-selection and behavior-composition Agent Knowledge, plus navigation and structural guidance for AppBar, Breadcrumb, Bottom Navigation, Divider, Drawer, Image, Navigation Menu, Nav List, Pagination, Scroll Area, Sidebar, Skip Link, Tabs, and Toolbar.
- Extended the agent manifest with a backward-compatible
guidescollection and validatedflowstack.agent-guide.v1artifacts. - Added repository-owned verification metadata, stale test-port diagnostics, non-reusing Playwright previews, parallel browser CI, nightly release qualification, and exact-archive distributed publication checks.
- Added a consumer-first npm README and packaged getting-started, import, and public-API guides while keeping repository-only guidance out of the archive.
0.20.11
- Kept a Navigation Menu trigger open when the same mouse movement that hover-opens it is immediately followed by a click, preventing cross-browser open-then-close races when switching triggers.
0.20.10
- Exposed Navigation Menu active-trigger geometry variables on Viewport as well as Indicator so styled vertical menus can keep both surfaces aligned, including when Viewport uses an authored positioning wrapper.
0.20.9
- Exposed initially open Accordion and Collapsible Content with
data-initial-openuntil its first state transition so styled layers can suppress page-load entrance motion without disabling interactive motion.
0.20.8
- Measured newly opened Accordion and Collapsible content before its first painted animation frame so styled height transitions begin from a stable, available intrinsic size.
0.20.7
- Kept an open ContextMenu custom on repeated or cross-target secondary clicks, repositioned it from the latest invocation coordinate, and prevented the browser menu from replacing it.
- Made an activation outside a complete Menu subtree dismiss the root and its open submenu in one step while preserving submenu-only dismissal inside the parent surface.
0.20.6
- Required actual mouse movement before hover-opening a Menu submenu so a newly positioned parent menu cannot open a submenu beneath a stationary pointer.
0.20.5
- Preserved Menu and submenu direction across portal boundaries so
DropdownMenu and ContextMenu logical layout agrees with their trigger,
explicit
dir, or Direction provider. - Allowed nested menus to use block-axis collision fallbacks and final cross-axis shifting instead of overflowing narrow viewports when neither inline side fits.
0.20.4
- Preserved Select's resolved LTR/RTL direction across its portal boundary so
logical
startalignment and option content follow the trigger direction.
0.20.3
- Kept sticky application chrome anchored at its existing viewport position while Dialog, Drawer, AlertDialog, modal Popover, and modal Menu-family layers lock background scrolling.
0.20.2
- Allowed native focus scrolling when Combobox Trigger returns focus to Input, so mobile browsers can reveal the control above the virtual keyboard.
- Added focused public-subpath test commands and explicit focused, repository, and release verification tiers without changing package runtime behavior.
- Fixed the release verification orchestrator so the release tier runs the repository, browser, archive, and consumer checks without recursively invoking itself.
0.20.1
- Kept Menu and submenu available-size and trigger-size CSS variables stable across Floating UI positioning rerenders so consumer overflow constraints continue working in short and resized viewports.
- Made modal Popover use Atom's stacked background-isolation system so its
aria-modalsemantics now match its focus and scroll containment; non-modal Popover behavior is unchanged. - Documented consumer-owned modal scrolling, mobile menu presentation, and Toast safe-area/application offsets without adding styling or automatic virtual-keyboard behavior to the headless package.
0.20.0
- Added the public
useOutsideInteractionhook and preventableonInteractOutsidecontract for Combobox, Select, MultiSelect, Menu-family, and Popover content. - Changed those primitives to commit outside dismissal on completed click/activation semantics through a topmost-layer stack, rejecting drags, boundary crossings, cancellation, secondary buttons, and multi-pointer sessions while preserving the destination activation.
- Deprecated
useClickAway; it remains available for compatibility.
0.19.9
- Made SwipeableItem preserve native vertical panning and stopped nested controls' Arrow keys from being interpreted as item-reveal commands.
0.19.8
- Made Feed keyboard navigation reveal the focused article or outside-feed target with nearest scrolling while preserving consumer cancellation.
0.19.7
- Fixed FileUpload Field relationships on its visible Trigger, made pre-drop accept/reject state reflect configured constraints, and prevented accidental file drops on the surrounding document by default.
0.19.6
- Fixed Rating drags so a pointer captured by the starting item can continue selecting across every item in the scale.
0.19.5
- Stabilized Rating pointer selection: repeated activation no longer clears by
default,
allowClearopts into clearing, and capture loss finalizes the live value while true cancellation still rolls back.
0.19.4
- Fixed Slider clicks and drags that could jump back when browsers released pointer capture during an otherwise valid interaction. True pointer cancellation still restores the initial value.
0.19.3
- Corrected range Slider thumb ARIA bounds to reflect adjacent-thumb and minimum-gap constraints.
- Made Slider and Rating pointer sessions single-owner, axis-scroll-safe, and reversible when pointer interaction is cancelled or capture is lost.
0.19.2
- Removed unsupported
aria-requiredfrom the OTP Field group while preserving required semantics and native validity on its visible cells.
0.19.1
- Fixed Password Toggle Field to inherit Field-generated label, description, error, and control-ID relationships.
0.19.0
- Made Field inherit containing Fieldset state and validation behavior and report its aggregate validity through Fieldset before Form.
- Added compound NumberInput Input, Increment, and Decrement parts with owned spinbutton relationships, limit state, and pointer-focus preservation.
- Added localizable generated OTP cell labels and state-aware PasswordToggleField show/hide action labels.
- Restored password input type before native submission and reset uncontrolled password visibility with its form.
0.18.2
- Added Combobox Control and Trigger parts so the complete visible control owns popup geometry and the disclosure affordance has native button behavior.
- Made authored Combobox Items follow the Root filter automatically and derive initial display text from an uncontrolled default selection.
- Mirrored open, disabled, read-only, required, and invalid state onto the Combobox Control for standalone and Field-composed styling.
0.18.1
- Made Combobox touch and pen outside dismissal wait for a completed tap and cancel when the pointer moves, scrolls, or is cancelled.
0.18.0
- Added TreeGrid actionable sortable headers and corrected collapsed-branch active-descendant relocation.
0.17.1
- Corrected Tree initial focus to honor visible selection and changed its default arrow navigation to stop at collection boundaries.
0.17.0
- Added DataGrid
ColumnHeader.onActionso sortable headers receive equivalent pointer and active-header Enter activation without moving sorting logic into Atom.
0.16.0
- Added Pagination
Itemsrange composition and Root-level localization for generated page, Previous, and Next accessible labels.
0.15.0
- Expanded Toast with exactly-once persistent announcements, logical positioning, notification-region keyboard access, focus pause and Escape restoration, directional swipe behavior, safe option normalization, stable update IDs, and correct Provider close inheritance.
0.14.0
- Added complete vertical/horizontal orientation metadata and live two-axis measurement for Collapsible and Accordion Content.
- Corrected Accordion non-collapsible open Trigger semantics while keeping it focusable, and added optional Content landmark suppression.
0.13.1
- Kept Collapsible and Accordion
--content-heightsynchronized with live responsive and intrinsic content resizing so styled height animations do not close from stale measurements.
0.13.0
- Expanded BottomNavigation with explicit always/active/hidden label-visibility
policy and static/sticky/absolute/fixed positioning intent while preserving
the deprecated
showLabelscompatibility path.
0.12.1
- Fixed Menubar Root and Content composition so styled consumers can change their rendered elements without losing Menubar behavior or native props.
0.12.0
- Hardened Menu, DropdownMenu, ContextMenu, and Menubar around real DOM item focus, disabled-item navigation, reason-aware close/final focus, correct composite Tab exit, stacked modality, and touch-safe outside dismissal.
- Added shared Menu Portal, Arrow, Label, and ItemIndicator parts, mixed checkbox state, complete retained-part composition, and collision-aware geometry variables.
- Added ContextMenu touch/pen long press and vertical Menubar orientation.
- Prevented touch/pen from running submenu, Menubar, or NavigationMenu hover timers while preserving click/tap disclosure.
0.11.1
- Made explicit RadioGroup Root
diroverride Direction context for horizontal arrow-key mapping while remaining on the rendered group.
0.11.0
- Added RadioGroup group-level read-only semantics and selection locking while preserving focus navigation and native form submission.
0.10.1
- Moved MultiSelect
aria-requiredandaria-readonlyfrom its native button trigger to the multiple-selection listbox roles that support those states.
0.10.0
- Added the headless MultiSelect compound primitive with array selection, button-owned multi-select listbox semantics, focus and keyboard behavior, positioning, dismissal, summary rendering, and Field/Form participation.
0.9.3
- Fixed Select Arrow's public TypeScript props to accept the decorative children already supported by its rendered span.
0.9.2
- Made tagged publication retry-safe and added automatic GitHub Release creation after successful npm publication.
- Made Select touch/pen outside dismissal gesture-safe and added collision-aware Arrow positioning with resolved side/alignment state.
0.9.1
- Fixed List Root's public TypeScript declarations so documented native
ordered-list
startandreversedattributes are accepted.
0.9.0
- Added the generic headless Image primitive with source loading state and conditional Content/Fallback anatomy.
0.8.0
- Added the headless Clipboard compound primitive with controlled and
uncontrolled text, native Label/Input relationships, truthful asynchronous
copied/error state, timeout reset, stale-operation protection, authored live
feedback, and a public
clipboardsubpath.
0.7.0
- Added a server-safe native Link primitive and public
linksubpath with native anchor attributes and router composition throughrenderandasChild. - Made disabled Toolbar links omit direct and composed destination attributes
instead of leaving an unavailable
hreflive.
0.6.17
- Preserved explicit validation-focus scrolling in browsers while tolerating
non-browser DOM implementations that do not provide
scrollIntoView.
0.6.16
- Made inline validation focus explicitly scroll its visible target into view, avoiding real-device Safari failures where programmatic focus and its visible indicator were applied without revealing the invalid control.
0.6.15
- Exposed validation-directed focus through
[data-focus-visible]until blur, allowing styled consumers to render a visible focus indicator after pointer as well as keyboard submission.
0.6.14
- Added touched validation presentation for required Checkbox and CheckboxGroup: invalid state now appears after leaving an empty control or removing its last required selection, clears on correction, and returns to untouched on reset.
0.6.13
- Added shared
validationBehavior="inline" | "native"presentation policy across Form, Field, Fieldset, and every native-validity-owning Atom control. - Mirrored attempted native constraint failures to visible controls and their Field, Fieldset, and Form state, with correction/reset cleanup and first-invalid visible focus in inline mode.
- Made compatible Field and Fieldset Error parts automatically select inline presentation while retaining native constraints, invalid submission blocking, and explicit control-level overrides.
0.6.12
- Aligned native constraint-validation controls with their visible composite owners across Checkbox, CheckboxGroup, Switch, RadioGroup, Select, Combobox, Rating, and FileUpload, including correct validation without a submission name and focus redirection to the operable control.
- Moved OTPField required validity to its first visible cell while retaining a submission-only combined named value.
- Synchronized accepted FileUpload files back to the native file input when
the browser permits programmatic
FileListassignment, keeping drag/drop, native required validity, and FormData consistent.
0.6.11
- Restored native required constraint validation for Checkbox and CheckboxGroup by keeping their controlled hidden checkbox inputs eligible for browser validation while visible read-only controls remain non-editable.
0.6.10
- Kept Popover open during touch and pen scrolling by deferring outside dismissal until a gesture resolves as a tap, while preserving immediate mouse dismissal.
0.6.9
- Preserved explicit, trigger/anchor-inherited, and provider direction across portalled Popover, HoverCard, and Tooltip Content so logical placement and DOM layout remain RTL-correct.
0.6.8
- Exposed measured available dimensions on Tooltip, HoverCard, and Popover
Content through headless
--atom-floating-available-*properties. - Added an internal Popover viewport so styled layers can constrain and scroll interactive content without clipping the sibling Arrow.
0.6.7
- Replaced fixed-body modal scroll locking with document-root and body overflow locking, preserving scroll coordinates and avoiding iOS Safari browser-chrome transitions when Dialog, AlertDialog, Drawer, modal Popover, or modal Menu opens and closes.
0.6.6
- Prevented touch-only browsers from installing HoverCard hover opening and
captured touch modality before compatibility
mouseenteron hybrid devices, eliminating the remaining zero-delay edge-tap race.
0.6.5
- Suppressed delayed compatibility hover and focus events after touch so HoverCard remains closed on Safari and tablet browsers even when pointer metadata is omitted.
0.6.4
- Made HoverCard hover interaction touch-safe while preserving native Trigger activation, and added a geometric pointer corridor between Trigger and Content to prevent flicker while crossing their visual gap.
- Prevented closing HoverCard Content retained for exit motion from reopening itself when the pointer crosses its fading hit area.
0.6.3
- Standardized HoverCard, Tooltip, and Popover collision priority so alternate alignments on the requested side and opposite side are exhausted before a perpendicular side is considered.
- Added tag-gated npm trusted publishing through GitHub Actions with OIDC, release metadata validation, complete package tests, archive verification, and React 18/19 consumer checks.
0.6.2
- Added perpendicular-axis collision fallbacks to HoverCard, Tooltip, and Popover so positioned content can choose an axis with sufficient viewport room instead of remaining cropped after an opposite-side flip.
0.6.1
- Corrected Tooltip touch dismissal so an outside touch or scrolling closes an opened post-release Tooltip immediately while preserving ordinary page input.
0.6.0
- Completed the CheckboxGroup family with deterministic Parent/select-all state from an explicit selectable-value set and structured ItemLabel and ItemDescription relationships that remain stable across server rendering and hydration.
- Added public direct, namespace, and checkbox-group subpath exports for the new parts plus semantic wrapper marking for styled libraries.
- Exposed disabled Checkbox state through
aria-disabledconsistently for the default button and custom composition targets.
0.5.3
- Removed invalid
aria-requiredoutput from CheckboxGroup Root while preserving item semantics, required data state, and one-or-more native form validity.
0.5.2
- Added public Field and Fieldset semantic-part marking for styled wrapper libraries so generated naming and description relationships remain complete in server markup and hydration.
0.5.1
- Preserved server-rendered Field and Fieldset semantic-part relationships when
Root composes one consumer wrapper through
asChild, and corrected Form guidance to match observable rethrown callback failures.
0.5.0
- Reworked the form foundation so Field and Fieldset relationships are stable in server markup and hydration, grouped and single-value controls inherit the correct context, errors do not announce unless requested, and custom values follow native submission, validity, external-form, and reset behavior.
- Removed the remaining form-control
ariaLabelcompatibility props in favor of nativearia-label,aria-labelledby, andaria-describedby; added Field/Fieldset integration to Checkbox, Switch, CheckboxGroup, RadioGroup, Combobox, NumberInput, Slider, Rating, Select, and OTPField. - Preserved React function-action semantics in Form and stopped swallowing rejected Atom submit callbacks.
0.4.0
- Added Popover
TitleandDescriptionparts with generated visible naming relationships, native ARIA naming, and no customariaLabelalias. - Added interaction-aware Popover initial/final focus targets, touch-safe default focus, hover-without-focus-steal, and dismissal-aware restoration that preserves outside destinations.
0.3.5
- Corrected Tooltip touch sessions so stationary long press opens immediately at 700 ms, abandoned gestures cancel safely, and plain/rich dismissal begins only after release. Touch-generated compatibility events no longer turn a quick tap into hover/focus opening, and selection/callout suppression is limited to the active long-press gesture. Both variants remain non-interactive Tooltip content.
0.3.4
- Fixed shared scroll locking so body padding compensates only for viewport
width actually released when locking. Pages using
scrollbar-gutter: stableno longer shift when modal Dialog, AlertDialog, Drawer, Popover, or Menu content opens and closes.
0.3.3
- Corrected the pure-render Badge primitive and public
./badgesubpath to remain server-safe instead of declaring an unnecessary client boundary. - Corrected Badge count guidance so generic inline content uses meaningful surrounding context and attached control counts belong to the owning control's accessible name or equivalent context.
0.3.2
- Fixed nested modal isolation cleanup so rapid layer handoffs and animated
exits cannot leave the application root permanently
inertafter every dialog has closed.
0.3.1
- Fixed presence cleanup so exit-retained layers unmount after their computed
transition or animation duration even when the browser does not emit a
transitionendoranimationendevent. This prevents closed Dialog, Drawer, Popover, Menu, Tooltip, and similar layers from lingering over the page under global transition CSS. The fallback accounts for repeated CSS timing lists and animation iterations and ignores end events bubbled from descendants.
0.3.0
- Fixed Modal-family Content native
aria-label,aria-labelledby, andaria-describedbyforwarding so explicit native ARIA takes precedence while retainingariaLabelas a compatibility fallback. - Added SSR-safe, hydration-stable Title and Description registration so generated relationships are emitted only while their elements exist, and added settled development warnings for missing or duplicate relationships.
- Added Content-level
initialFocusandfinalFocustargets with opening and closing interaction details, nativeautoFocussupport, touch-safe Content focus, controlled/triggerless restoration, and explicit workflow targets. - Added a shared nested-modal layer stack so only the top layer owns focus,
dismissal, and scroll containment, plus public
Modal.Branchregistration for consumer-owned third-party portals. - Added metadata-aware focus containment so Menu, Select, Popover, public Branch, and nested modal layers preserve their own Tab contracts while focus cannot escape the active modal.
- Reworked modal scroll locking per document with wheel/touch boundary containment, registered portal allowances, fixed-body mobile locking, nested cleanup, and exact author style and scroll-position restoration.
- Added stack-aware background isolation with
inert, preserving the ancestor paths to separate Content/Overlay portals, inline and custom-container content, dynamic owned branches, and the active nested modal while restoring author-provided inert state exactly. - Limited Modal-family custom portal containers to same-document
HTMLElementnodes; ShadowRoot, DocumentFragment, and cross-document containers are explicitly unsupported. - Corrected Modal opening ownership to establish layer activation, isolation, focus containment, and body locking before paint; exit-present Content is now inert and accessibility-hidden after close.
- Preserved author
inertmutations made during modal ownership, ref-counted overlapping focus/branch registrations, filtered unavailable Tab candidates, and kept nested scroll-lock handoff continuously locked without intermediate style or scroll restoration. - Rejected Content beneath accessibility-hidden Dialog-family Overlays and limited backdrop dismissal to clicks targeted at the Overlay itself.
0.2.1
- Fixed
Button.Rootdirect,asChild, andrenderlink composition so anchors and inactive-safe link adapters retain native link semantics and keyboard behavior, while disabled or loading composed links lose their live navigation props and cannot activate. Router components that require a stringhrefmust use an inactive-safe render adapter.
0.2.0
- Fixed Tree pointer targeting so whitespace inside nested groups does not reactivate or select the parent item.
- Added
renderandasChildcomposition support to all Toolbar parts. - Fixed Toolbar parts so custom
data-slotvalues override their default slot identifiers. - Added
Direction.Provideranddirsupport to mirrorTreeGridhorizontal cell navigation and expand/collapse arrow behavior in RTL. - Added
Direction.Provideranddirsupport to mirror horizontalTreenavigation and expand/collapse arrow behavior in RTL. - Added
Direction.Provideranddirsupport to mirror horizontalDataGridcell navigation in RTL. - Added
Direction.Providerfallback forToolbar.Root dirand rendered the resolved direction on the toolbar root. - Added
Direction.Provideranddirsupport to mirror horizontalTabsArrowLeft and ArrowRight navigation in RTL. - Changed
Pagination.Previous,Pagination.Next,Pagination.Item, andPagination.Ellipsisto render their own structuralliwrappers while keepingasChild,render, props, and refs targeted at the inner control or marker. - Fixed local
Menubar.Root dir="rtl"so nested submenu placement mirrors to the left, matchingDirection.Provider dir="rtl". - Fixed adjacent top-level
Menubarhandoff so the active trigger keeps focus forEnter,Space, andEscapeafter ArrowLeft or ArrowRight navigation. - Fixed custom
data-slotoverrides onMenubar.RootandMenubar.Trigger. - Added horizontal trigger roving keyboard navigation for
NavigationMenu, including RTL-mirrored ArrowLeft and ArrowRight handling. - Added
Direction.Providerfallback forNavigationMenu.Rootdirection. - Added
Direction.Provideranddirsupport to mirrorMenubartop-level ArrowLeft and ArrowRight navigation in RTL. - Changed
Breadcrumb.Rootto use the Atom-styleariaLabelprop for the breadcrumb navigation landmark label while still rendering nativearia-label. - Changed
BottomNavigation.Rootto use the Atom-styleariaLabelprop for its navigation landmark label while still rendering nativearia-label. - Fixed Accordion horizontal arrow-key navigation so it mirrors ArrowLeft and
ArrowRight under
Direction.Provider dir="rtl"orAccordion.Root dir="rtl". - Fixed Popover positioning when
Anchoruses its defaultdisplay: contentswrapper by resolving the usable child element as the Floating UI reference and refreshing the reference after refs commit. - Fixed non-modal and modal Popover dismissal so clicks and focus movement inside nested portalled Popover layers do not close the parent Popover.
- Fixed HoverCard render/default trigger positioning by updating Floating UI after the trigger ref commits, and made default/rendered triggers keyboard focusable while preserving focus-visible open behavior.
- Fixed Tooltip render trigger positioning by updating Floating UI after the trigger ref commits.
- Added
data-variant="plain|rich"to Tooltip content and documented thevariantRoot prop. - Fixed
ContextMenu.Triggerso customdata-slotvalues override the defaultcontext-menu-triggerslot. - Fixed
Toast.Viewport asChildso the cloned viewport element receives generated queued toast content. - Fixed Rating fractional pointer selection and RTL direction behavior for horizontal pointer and keyboard interactions.
- Fixed Combobox option selection so pointer clicks close consistently,
clearOnSelectapplies to every successful selection and free-solo Enter commit, and mounted empty states can open on focus. - Fixed FileUpload read-only Trigger, Dropzone, and ItemDeleteTrigger parts so
they expose
data-readonlyseparately from disabled state, and documented the native HiddenInput attributes derived from Root and Field context. - Fixed
Fieldset.Rootrequired semantics so it no longer emits invalidaria-required; required state remains exposed through context and[data-required]. - Added
data-requiredtoInput.Rootwhen required state is inherited from Field context or provided directly. - Fixed Menu, DropdownMenu, and ContextMenu submenu keyboard behavior under
Direction.Provider dir="rtl"so ArrowLeft opens submenus, ArrowRight closes submenus, and submenu placement mirrors to the left side. - Fixed disabled native
ToggleGroup.Itembuttons so they rely on the nativedisabledattribute without adding redundantaria-disabled; non-native composed items still receivearia-disabled. - Fixed disabled
ToggleGroup.Rootsemantics so the group exposesaria-disabledalongsidedata-disabled. - Fixed
ToggleGroup.Rootsingle mode so changing from multiple selected values exposes only one pressed item. - Fixed
ToggleGroup.Itemroving focus for composed non-native items so disabled items are skipped consistently inasChildandrenderpaths. - Fixed
ToggleGroup.Itemcollection registration so changingasChildorrendercomposition refreshes the DOM node used for arrow navigation. - Fixed
ToggleGroup.Roothorizontal arrow navigation so it mirrors ArrowLeft/ArrowRight when used underDirection.Provider dir="rtl". - Fixed disabled native
Toggle.Rootbuttons so they rely on the nativedisabledattribute without adding redundantaria-disabled; non-native composed toggles still receivearia-disabled. - Fixed custom-render
Pressable.Rootactivation so pointer presses released outside the pressable target do not fireonPress. - Fixed
Button.RootasChildcomposition so non-native child elements receive button semantics and keyboard focus behavior. - Fixed Collection duplicate item value warnings so browser development
environments without
process.env.NODE_ENVstill report duplicate values. - Fixed Slider percent geometry so
data-percentand inline percent offsets do not expose floating-point artifacts such as55.00000000000001. - Standardized typeahead matching across Menu, DropdownMenu, ContextMenu, Menubar, Select, Listbox, and Tree so single-character searches cycle from the current matching item while multi-character buffers still match exact prefixes.
- Fixed DropdownMenu pointer-open behavior so clicking the trigger opens without pre-highlighting the first item; keyboard Enter, Space, ArrowDown, and ArrowUp still seed the expected highlight.
- Fixed
ContextMenu.Triggerso its documentedasChildandrendercomposition props are implemented while preserving context-menu behavior. - Fixed
ContextMenu.Contentso refs forward to the underlying shared menu content element. - Fixed ContextMenu pointer-open behavior so right-click opens without pre-highlighting the first item; keyboard context-menu opens still seed the first highlight.
- Fixed Menu/DropdownMenu pointer reopen behavior so closing animations cannot reapply the default first-item highlight for the next pointer open.
- Fixed Menubar pointer-open behavior so clicking or hovering between top-level menus opens content without pre-highlighting the first item; keyboard ArrowDown/ArrowUp still seed first/last highlight.
- Fixed shared autofocus behavior for portalled overlays so focus waits for delayed portal content to mount before moving into the overlay.
- Fixed Menu autofocus inside modal focus scopes so portalled content registers with the parent Dialog/Modal scope before focus moves into the menu.
- Fixed standalone Menu content labelling so
aria-labelledbyis only emitted when a trigger is mounted; standalone/context menus should useariaLabel. - Fixed nested Menu submenu item selection so child submenu clicks are not treated as outside clicks and selection closes the root menu.
- Fixed Menu submenu Escape handling inside parent overlays so Escape closes the topmost submenu before the root menu or parent Dialog/Modal layer.
- Fixed Menu submenu positioning so submenu content uses the mounted
SubTriggeras its Floating UI reference when opened. - Fixed Menu initial keyboard highlight so it waits for mounted items before marking the first highlight as applied.
- Fixed
Menu.Itemso its documentedasChildandrendercomposition props are implemented while preserving menuitem behavior, refs, and data attributes. - Added shared dismissable layer Escape handling so nested overlays close the innermost open layer first instead of also closing parent Dialog, Drawer, Modal, Popover, Menu, Select, Combobox, HoverCard, Tooltip, or NavigationMenu layers.
- Fixed outside pointer dismissal for Menu, Menubar-backed menus, Select, and Combobox so clicks outside portalled content close reliably during inspection-heavy renders.
- Strengthened modal focus containment so Dialog, AlertDialog, Drawer, Modal, and modal Popover restore focus when it moves outside the active modal scope.
- Registered portalled Select, Menu, Menu submenus, and Popover content with the nearest focus scope so nested overlays remain valid focus targets inside modals.
- Added Field integration to Select so triggers inherit Field labels, descriptions, disabled state, and required state.
- Fixed Select keyboard opening so the intended initial highlight is applied
after listbox items mount and
aria-activedescendantstays in sync. - Fixed Select closed-state typeahead so typing a matching character opens the listbox with the matching enabled item highlighted before items mount.
- Fixed Select value display so selected option labels resolve on initial closed render and remain stable after the listbox unmounts.
- Fixed Select trigger
asChildcomposition so the trigger does not render a nested copy of its child. - Fixed Menubar trigger semantics so top-level triggers expose
menuitemroles insiderole="menubar"containers. - Scoped Menu radio item highlight identities to their parent radio group so separate groups can reuse the same public radio values.
- Fixed Menu highlight initialization so hovering section labels or gaps does not reset the active highlight back to the first menu item.
0.1.0
- Initial Atom release.