Skip to content

chore: version canary packages (canary) - #519

Merged
kianbazza merged 1 commit into
canaryfrom
changeset-release/canary
Sep 30, 2026
Merged

kianbazza merged 1 commit into
canaryfrom
changeset-release/canary

Conversation

@github-actions

@github-actions github-actions Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or setup this action to publish automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to canary, this PR will be updated.

⚠️⚠️⚠️⚠️⚠️⚠️

canary is currently in pre mode so this branch has prereleases rather than normal releases. If you want to exit prereleases, run changeset pre exit on canary.

⚠️⚠️⚠️⚠️⚠️⚠️

Releases

@bazza-ui/react@0.1.0-canary.17

Minor Changes

  • #527 cc5d8dd Thanks @kianbazza! - Add asyncContentMode to data-first surfaces. With 'append', rows from asyncContent are added after content instead of replacing it, and local rows stay ahead of loaded ones while searching. A loaded row with the same Resolved ID as a local row is dropped so the local row wins, and a loaded group with the same ID as a local group adds its new rows to that group. The default, 'replace', keeps today's behaviour.

  • #528 cea81b3 Thanks @kianbazza! - Add asyncContentReveal to data-first surfaces. 'stream' (the default) shows rows from asyncContent as soon as they load. 'block' waits until the loader has finished for the current search and then shows everything at once; while a new search loads, the previous list stays on screen unchanged, without the loading state. Empty now waits until the surface's asyncContent has finished for the current search, so "no results" no longer shows while a refetch still holds the previous search's rows.

  • #504 ae86a2f Thanks @kianbazza! - Add CheckboxGroupDef (kind: 'checkbox-group') to the data-first API of the dropdown menu, context menu, and command menu, with defineCheckboxGroup, CheckboxGroupRenderParams, and a checkboxGroupSearchBehavior deep-search option that works like radioGroupSearchBehavior.

  • #503 ac064f9 Thanks @kianbazza! - Add the CheckboxGroup part and the headless CheckboxGroupValue provider to the dropdown menu, context menu, and command menu. A checkbox group owns the checked state of the CheckboxItem parts inside it as one array of values and reports every change through a single onValueChange.

  • #506 171a20f Thanks @kianbazza! - Render data-first checkbox groups in lists, submenus, subpages, and deep-search results. Rows inside a CheckboxGroupDef read their checked state from the group automatically, so a custom render only needs to shape the container.

  • #508 b1bfc02 Thanks @kianbazza! - Add rangeSelection, dragSelection, and getAriaSelectionText props to the dropdown menu, context menu, and command menu roots, the 'range-selection' and 'drag-selection' change reasons, and a data-pending attribute on CheckboxItem for rows whose previewed checked state differs from the committed one. The gestures themselves land in follow-up changes.

  • #510 a5437c7 Thanks @kianbazza! - Add drag selection to the dropdown menu, context menu, and command menu. Set dragSelection="keep" or dragSelection="rubber-band" on the root, then press a checkbox item with a mouse or pen and drag across others to set them all to the pressed item's new state. Rows preview while dragging (data-pending) and commit once on release; Escape cancels.

  • #512 8d6ef8c Thanks @kianbazza! - Hold Shift while moving the highlight with the arrow keys, Home, or End to preview a span of checkbox items; releasing Shift commits it as one change. Escape cancels. This is the keyboard form of drag selection and follows the root's rangeSelection prop.

  • #529 070dc1e Thanks @kianbazza! - Add debounce to query loaders (createQueryLoader, createSWRQueryLoader, createVanillaQueryLoader). The loader receives the search only after it stops changing for that many milliseconds, and counts as fetching while it waits, so the menu doesn't show "no results" or treat the search as finished too early.

  • #509 77f15eb Thanks @kianbazza! - Add range selection to the dropdown menu, context menu, and command menu: shift-click a checkbox item, or press Shift+Enter on the highlighted one, to set every checkbox item between it and the last one you interacted with to the same state. On by default; turn it off with rangeSelection={false} on the root. A range never closes the menu.

  • #513 fd34cae Thanks @kianbazza! - Menus announce range and drag selection commits to screen readers ("3 items checked") through a built-in polite status region. Override the text with the root's getAriaSelectionText(count, checked) for localization.

  • #534 a2035b5 Thanks @kianbazza! - SuggestionMenu anchors the popup to the host's text. anchor is a function returning a DOMRect, measured again whenever the page or the field scrolls, so the popup follows the text. A new position is computed only when the rect changes, and returning null keeps the last position. SuggestionMenu.Positioner places the popup below and aligned to the start by default. If there's no room below, it opens above, and it stays on that side until it closes instead of flipping while the user types. It never moves beside the anchor, where it would cover the text.

  • #533 0a7cd71 Thanks @kianbazza! - SuggestionMenu gives the host input the right ARIA while open. An <input> becomes a combobox. A <textarea> or contenteditable keeps its textbox role and gets no aria-expanded. The host's own attributes come back when the menu closes. aria-activedescendant follows the highlight only after the user moves it with the keyboard, so screen readers keep reading what's typed. A status region announces the count of settled results and the row Enter would choose (for example "5 results, first: Alice Smith"); format it with the new getAriaResultsText prop.

  • #532 bd83e7b Thanks @kianbazza! - SuggestionMenu handles the keyboard from the host input. Pass key presses to handle.handleKeyDown(event): while the menu is open, ↑/↓, Ctrl+N/P and Home/End move the highlight, Enter chooses the highlighted row, and Escape closes the menu without closing an enclosing dialog. It returns true when the menu used the key. Tab, caret keys, typing, modified keys and keys pressed during IME composition stay with the input. The menu closes when the input loses focus, but not when focus moves into the menu or the window loses focus, and pressing inside the menu keeps focus in the input.

  • #535 74af92f Thanks @kianbazza! - Add noResults to SuggestionMenu.Root. With 'empty' (the default) the menu stays open and shows Empty when nothing matches, and Enter reaches the host input. With 'close' the menu closes once every search for the query has finished empty (reason 'no-results'), before the empty popup is painted. An update() with the same query leaves it closed, for example when only the caret moved. An update() with any other query searches again. SuggestionMenu.useAsyncMenuCoordinator is available for showing a "searching…" indicator while results refetch.

  • #536 7265a98 Thanks @kianbazza! - Add SuggestionMenu.attachTextTrigger(menu, field, { triggers }) and its React hook SuggestionMenu.useTextTrigger(menu, { triggers }), which make an <input> or <textarea> a suggestion menu host with no other code.

    • Typing a trigger such as @ opens the menu with the text after it as the query.
    • The popup is anchored at the trigger character, laid out with the field's own font and wrapping, and it follows the field when it scrolls.
    • Keys the menu uses are forwarded to it and go no further, so an app's own Enter handler doesn't also run.
    • After Escape, or once a row is chosen, the menu stays closed until the trigger is typed again.
    • A handle shared by several fields follows the one with focus.
    • Each trigger can allow spaces, require the start of a line, or wait for a minimum query length.
    • The payload is the match, with the from–to range to replace when a row is chosen. It's readable as menu.payload, alongside the new menu.query.
  • #531 7656130 Thanks @kianbazza! - Add SuggestionMenu (@bazza-ui/react/suggestion-menu), a menu for / commands, @ mentions and : emoji typed into an editor or text field. A handle created with SuggestionMenu.createHandle() connects the menu to its host input: the host attaches itself with attach(), opens or updates the menu with update({ query, anchor, payload }) and closes it with close(), including from non-React editor code. DOM focus stays in the host input, the menu is never modal, and pressing the host input doesn't dismiss it.

  • #530 3ed70f5 Thanks @kianbazza! - Add keepPreviousData to createVanillaQueryLoader. When enabled, the last results stay on screen while the next search loads, reported as a background refetch so Loading doesn't flash. The vanilla query loader also reports a new search as loading from the first render after it changes, instead of one render later.

Patch Changes

  • #569 25cc2bc Thanks @kianbazza! - Build with tsdown instead of tsup.

    • Fixes the CommonJS entry points of @bazza-ui/react. require('@bazza-ui/react/dropdown-menu') and six other subpaths threw SyntaxError: Unexpected token ',' because a shared chunk did not parse.
    • @bazza-ui/react no longer ships .d.cts files. Types still resolve through the same .d.ts files for both import and require.
    • @bazza-ui/filters/tanstack-table now also exports the CreateTSTColumns type, the parameter type of createTSTColumns.
    • The published JavaScript is smaller. Runtime exports are unchanged.
  • #540 50cb8aa Thanks @kianbazza! - Combobox.Clear is now hidden (or disabled, with keepMounted) when a single-value combobox has no selection. It treated the empty null value as a selection before.

  • #567 0190a86 Thanks @kianbazza! - Combobox.Positioner now applies its render prop when layout="input-embedded". It was ignored before.

  • #539 1222f8c Thanks @kianbazza! - Fix a crash when a menu search contains ^, a backtick, or already-decomposed accented text. ^ and backtick now match literally instead of being folded away; other diacritic folding is unchanged.

  • #541 1ab4808 Thanks @kianbazza! - ContextMenu.Root now calls onOpenChange with the 'trigger-context-menu' reason and the native contextmenu or touchstart event when the menu opens from a right-click or long-press. It reported 'none' with a placeholder event before.

  • #578 09b825a Thanks @kianbazza! - Menus with a controlled open prop now highlight the first row when they open and after each search, and the command menu hotkey closes a menu that was opened through the prop.

  • #511 59efdf4 Thanks @kianbazza! - Drag selection now auto-scrolls the list when the pointer nears or passes its top or bottom edge, so a drag can reach rows that are not on screen.

  • #514 8a7cd70 Thanks @kianbazza! - Toggling a checkbox item through its indicator (CheckboxItemIndicator's state.toggle()) now sets the range selection anchor, so a later shift-click ranges from that item.

  • #523 92897ca Thanks @kianbazza! - Data-first menus keep the highlighted row when their rows change without the search changing, for example when async results arrive or a loader refetches. The highlight still moves to the first row when the search changes, or when the highlighted row disappears or becomes disabled.

  • #563 8a199f1 Thanks @kianbazza! - Menu positioners now always render data-align. Previously it was only present for align="list-start" on a horizontal side; align="start", "center" and "end", the defaults, and list-start on a vertical side rendered no data-align at all.

  • #567 0190a86 Thanks @kianbazza! - VideoPlayer.VolumeSlider, VideoPlayer.SeekSlider, VideoPlayer.SeekSliderTrack, VideoPlayer.SeekSliderProgress and VideoPlayer.SeekSliderThumb now pass their other props (such as className, disabled and data-* attributes) to the element when a render function is given. They were dropped before.

@bazza-ui/filters@0.4.0-canary.5

Patch Changes

  • #569 25cc2bc Thanks @kianbazza! - Build with tsdown instead of tsup.

    • Fixes the CommonJS entry points of @bazza-ui/react. require('@bazza-ui/react/dropdown-menu') and six other subpaths threw SyntaxError: Unexpected token ',' because a shared chunk did not parse.
    • @bazza-ui/react no longer ships .d.cts files. Types still resolve through the same .d.ts files for both import and require.
    • @bazza-ui/filters/tanstack-table now also exports the CreateTSTColumns type, the parameter type of createTSTColumns.
    • The published JavaScript is smaller. Runtime exports are unchanged.

@vercel

vercel Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
ui-canary Ready Ready Preview Sep 30, 2026 2:23am UTC

Request Review

@kianbazza
kianbazza force-pushed the changeset-release/canary branch from 0f7a66f to 54fbcd4 Compare September 28, 2026 22:48
@kianbazza
kianbazza force-pushed the changeset-release/canary branch from 54fbcd4 to 7b0072b Compare September 29, 2026 13:56
@kianbazza
kianbazza force-pushed the changeset-release/canary branch 4 times, most recently from b222f4b to 06f8d6c Compare September 29, 2026 14:24
@kianbazza
kianbazza force-pushed the changeset-release/canary branch from 06f8d6c to 3fa5119 Compare September 29, 2026 14:47
@kianbazza
kianbazza force-pushed the changeset-release/canary branch from 3fa5119 to 5610b5a Compare September 29, 2026 14:59
@kianbazza
kianbazza force-pushed the changeset-release/canary branch from 5610b5a to d4cdad5 Compare September 29, 2026 15:43
@kianbazza
kianbazza force-pushed the changeset-release/canary branch from d4cdad5 to cf80734 Compare September 29, 2026 16:06
@kianbazza
kianbazza force-pushed the changeset-release/canary branch from cf80734 to 4d6a67b Compare September 30, 2026 01:33
@kianbazza
kianbazza force-pushed the changeset-release/canary branch from 4d6a67b to 1ca6c75 Compare September 30, 2026 02:20
@kianbazza
kianbazza force-pushed the changeset-release/canary branch from 1ca6c75 to 194492f Compare September 30, 2026 02:22
@kianbazza
kianbazza merged commit 52a73bc into canary Sep 30, 2026
5 checks passed

This branch was successfully deployed

1 active deployment
Preview – ui-canary — 194492f5 Deployed Sep 30, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant