chore: migrate ui primitives from radix to base ui - #182
Merged
Conversation
8 tasks
The naming rule as written sent paired tests and stylesheets to camelCase, contradicting the files this branch renamed. The decision entry recorded Base UI API mechanics as consequences. Those belong to Base UI documentation and go stale whenever a wrapper overrides a default, which two already do; the general rule replaces them.
Azganoth
force-pushed
the
chore/migrate-radix-to-base-ui
branch
from
August 9, 2026 05:21
164fa6a to
4c60192
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
radix-uiwith@base-ui/reactacrosssrc/components/ui/, and manage the project with the shadcn CLI throughcomponents.json, which relocatescntosrc/lib/utils.ts.sonnerwith a Leafdown-owned Base UI toast.src/lib/toast.tsowns the toast manager and thenotify*API so services outside the React tree can still raise notifications;src/components/ui/toast.tsxowns the provider, viewport, and presentation.Checkbox,ToggleGroup, and its internalToggle.src/AGENTS.md.docs/decisions.md, and updatesrc/AGENTS.mdanddocs/patterns.mdto describe Base UI.Behavior held at parity where Base UI's defaults differ from Radix's:
outside-presschange rather than a pointer-down event.Related Issue
Closes #167
Verification
pnpm check:frontend— passed for the frontend-only migration, including the coverage floor.ArrowDowninstead of leaving its row, closes onEscapeandTab, returns focus to the editor, and hides while none of its selection is visible.notify*call reaches the toast manager with its title, description, and type.pnpm build:frontend— produced the production bundle recorded under Notes.Manually verified in
pnpm tauri devon Windows 11:Escapeand on scroll, and returns focus to the editor.Not verified: Linux and macOS, which are not the current polish target.
Notes
3b678ee: JavaScript from 1,781.26 kB to 1,828.64 kB (gzip 444.39 kB to 465.53 kB) and CSS from 92.98 kB to 99.10 kB (gzip 14.04 kB to 15.32 kB). Base UI Toast ships no default styling or fixed toast types, so the presentation Sonner supplied is now markup and CSS this repository owns, and that accounts for part of the increase.type="hover"andtype="scroll"scroll area modes have no Base UI equivalent. The scrollbar is always mounted and reveals itself from its own hover and scrolling state, soScrollAreano longer takes a visibility mode.Escape,Tab, or the vertical arrows.Tabis still intercepted and closes the popup, so the tab stop is not reachable from the editor.MenubarTriggerregained the focus ring described indocs/patterns.md; the generated component suppressed the outline without replacing it.InputandInputGroupremain without application consumers. They are not Radix-derived, so removing them is left out of this change.