Skip to content

[CHAIN] fix(ui): apply review fixes for the HeroUI to shadcn migration#11555

Open
alejandrobailo wants to merge 6 commits into
feat/heroui-migration-phase-6-css-first-configfrom
feat/heroui-migration-phase-7-review-fixes
Open

[CHAIN] fix(ui): apply review fixes for the HeroUI to shadcn migration#11555
alejandrobailo wants to merge 6 commits into
feat/heroui-migration-phase-6-css-first-configfrom
feat/heroui-migration-phase-7-review-fixes

Conversation

@alejandrobailo

Copy link
Copy Markdown
Contributor

Context

Phase 7 of the HeroUI → shadcn/ui migration chain (#11532). A full review of the cumulative chain diff surfaced a few regressions and leftovers that are cheaper to fix on the chain tip than to distribute across the phase branches.

Description

Fixes

  • DropdownMenuSeparator lost its dark-mode variant (bg-default-200 dark:bg-default-700bg-zinc-200); now uses bg-border-neutral-secondary.
  • Role form permission icons relied on HeroUI's data-selected attribute, which the shadcn Checkbox never sets; replaced with group-has-[[data-state=checked]] and the row marked as group.
  • Role forms read checkbox state via form.watch() during render, which the React Compiler cannot track (stale checked UI); switched to useWatch.
  • The sign-up terms checkbox lost its required indicator (HeroUI isRequired); restored the asterisk.
  • font-mono never resolved: the theme pointed at the undefined --font-geist-mono and no layout applied fontMono.variable; both wired now (Fira Code).
  • CodeSnippet defined its copy button as a nested component, remounting the button on every render (caught by the new tests); inlined.

Cleanup

  • Token sweep of leftover gray/slate/zinc literals in Accordion, NavigationHeader, Toast, the legacy Skeleton and LinkCard; removed dead data-[hover]/data-[focus-visible] selectors on TableHead and the dead .checkbox-update CSS rule.
  • Dropped stale HeroUI references: README tech list, AGENTS.md notes about components/ui/, the @heroui/* knip ignore, and a comment still attributing the accordion scroll workaround to framer-motion.

Tests

  • New behavior coverage for the rebuilt Accordion (controlled/uncontrolled, single/multiple, nested), CodeSnippet (clipboard write, formatter, copied-state feedback) and CustomInput (password visibility toggle, required indicator).

Steps to review

  1. pnpm install && pnpm run typecheck && pnpm vitest run in ui/ (1084 tests green).
  2. Open any dropdown menu in dark mode and check the separator color.
  3. In Roles → create/edit, toggle a permission and verify the info icon brightens.
  4. Verify font-mono text (e.g. advanced mutelist editor) renders Fira Code.

Checklist

UI

  • All issue/task requirements work as expected on the UI
  • Screenshots/Video - Mobile (X < 640px)
  • Screenshots/Video - Tablet (640px > X < 1024px)
  • Screenshots/Video - Desktop (X > 1024px)
  • Ensure new entries are added to ui/CHANGELOG.md

License

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

The dropdown separator dropped its dark variant when bg-default-200 was
replaced with bg-zinc-200, and the role-form info icons relied on
HeroUI's data-selected attribute that the shadcn Checkbox never sets.
Use design tokens and group-has-[[data-state=checked]] instead, switch
form.watch() reads to useWatch so the React Compiler tracks them, and
restore the required indicator on the sign-up terms checkbox.
fonts.ts registers Fira Code under --font-mono but the theme pointed at
the never-defined --font-geist-mono and no layout applied the variable.
Also drop the dead .checkbox-update rule that referenced the removed
HeroUI --background variable.
CopyButton was defined inside the component body, so every render
created a new component type and React remounted the button, dropping
focus and DOM state.
Sweep gray/slate/zinc literals missed by the token migration in
Accordion, NavigationHeader, Toast, the legacy Skeleton and LinkCard,
and remove the dead data-[hover]/data-[focus-visible] selectors on
TableHead that only HeroUI's table ever set.
The rebuilt components had no render coverage: accordion controlled and
uncontrolled selection, clipboard copy with timed feedback, and the
password visibility toggle.
Update README tech list and AGENTS.md notes now that components/ui only
holds cloud-overlay shims, remove the @heroui knip ignore, and fix a
comment that still attributed the accordion scroll workaround to
framer-motion.
@alejandrobailo alejandrobailo requested a review from a team as a code owner June 11, 2026 13:31
@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 5676e080-cc5f-4f33-8b30-296730953443

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/heroui-migration-phase-7-review-fixes

Comment @coderabbitai help to get the list of available commands and usage tips.

@alejandrobailo alejandrobailo added the no-changelog Skip including change in changelog/release notes label Jun 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-changelog Skip including change in changelog/release notes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant