Skip to content

feat: menu re-write #3#242

Merged
kianbazza merged 103 commits intocanaryfrom
kian/menu-composable-api
Mar 28, 2026
Merged

feat: menu re-write #3#242
kianbazza merged 103 commits intocanaryfrom
kian/menu-composable-api

Conversation

@kianbazza
Copy link
Copy Markdown
Collaborator

@kianbazza kianbazza commented Jan 10, 2026

done

clean slate

@bazza-ui/react package setup

list, input, item, search working

prevent item pointerdown event from stealing DOM focus from input

fixes: item highlighting; input losing focus onclick and onpointerdown; keyboard nav broken without input

scroll item in view on keyboard nav

add closeOnClick prop for DropdownMenu.Item (defaults to true)

submenus!

submenus - aim guard

focus owner - wip

closeOnClick should close (cascade) all submenus up to root menu sequentially when used inside submenu

only scroll into view when using keyboard nav + add DropdownMenu.SubmenuTriggerIndicator + add data-popup-open and data-popup-focused attrs

set nativeButton to false by default for SubmenuTrigger

hideUntilActive prop for Input

enhance Input render prop with props + state access

openDelay object for submenus, with customization per input method (keyboard, pointer)

centralize keyboard logic in useKeyboard hook, complete vim keybindings

close submenu when trigger is filtered via search

implement RadioGroup, RadioItem, RadioItemIndicator components

add Arrow, Backdrop components suppport

showOn prop to customize backdrop visibility behaviour

add CheckboxItem and CheckboxItemIndicator components

remove dropdown menu v2 stuff

open on hover for root, open on highlight tweaks, set modal to true by default

closeRootOnEsc for submenus (defaults to true)

Upgraded playground with configuration panels

add keyboard shorcuts for easy item selection

add data-highlighted to DropdownMenu.Shortcut component

use shared useItem() hook for Item, CheckboxItem, RadioItem implementations

refactor SubmenuTrigger to use shared useItem() hook

virtualization

refactor item higlighting logic for virtualized + non-virtualized

major refactor - listbox, popup-menu, dropdown-menu, context-menu

select, combobox - wip

combobox embedded input + auto-highlight selected item on open

new playground layout

too many changes, whoops

setup tests, woohoo!

update test packages

add tests for select

deep search - basic

deep search - checkbox items, radio group + items, and more

lots done...

more work done

styled registry component - dropdown menu

fixed truncation

virtualization + sticky row width - wip

checkpoint

checkpoint again

remove all docs, code usages, dev/test/build scripts for action menu + prev. menu packages

rename icons in theme toggle

rename dropdown-menu-v2 registry item to dropdown-menu

remove /docs/components from sidebar

build registry

docs, api reference generation setup

progress

docs work

drop generic for radio group/item value, simplify to string

checkpoint!

remove

progress

progress

async content - wip

virtualization

fix row width issues

fixes to virtualization and rendering with radio items

stuff

fix id stuff

fix flush sync error

cleanup example

fix virtualization keyboard nav scrolling/highlighting + aim guard in submenus

clear debugging logs

fix broken test

initial docs work via llm

add select to registry

object values instead of primitives for select & combobox

progress on select stuff

align with first item when no selected value and using alignItemWithTrigger

cleanup old packages

done

fix highlight jupming

fix hydration error for theme toggle

loading component + example in registry

fix query client

separate entrypoints for react pkg components

shared query client provider at root layout level

remove agentation

progress on docs stuff

vanilla query loader fixes/improvements

good progress on async behaviour and deep search + async

done

streaming + blocking async behaviour!

fix inconsistent rendering for loading part in virutalized data list

prevent streaming from resetting highlighted item id

async improvements galore

add cmdk + dropdown-menu implementations for filters

move api reference to seperate page

prevent overscrolling on main layout

prevent overscroll in list scroll area

prevent scrolling highlighted item into view for non-keyboard driven event

subpages

subpage work continues

change dev port to 3010

@vercel
Copy link
Copy Markdown

vercel Bot commented Jan 10, 2026

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

Project Deployment Actions Updated (UTC)
ui-canary Ready Ready Preview, Comment Mar 28, 2026 9:10pm

Request Review

Copy link
Copy Markdown
Collaborator Author

kianbazza commented Jan 10, 2026

@kianbazza kianbazza changed the title done feat: menu re-write #3 Jan 10, 2026
@kianbazza kianbazza self-assigned this Jan 10, 2026
@kianbazza kianbazza force-pushed the kian/menu-composable-api branch from 75b009f to 6ae6bc4 Compare January 13, 2026 03:43
@kianbazza kianbazza force-pushed the kian/menu-composable-api branch from 58da22f to 48769e1 Compare January 18, 2026 07:28
@kianbazza kianbazza force-pushed the kian/menu-composable-api branch from 43ef99c to 369ec9d Compare January 19, 2026 00:18
@kianbazza kianbazza force-pushed the kian/menu-composable-api branch from 54762f2 to 0898f7f Compare March 28, 2026 21:08
@kianbazza kianbazza merged commit ee794b4 into canary Mar 28, 2026
3 of 4 checks passed
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