Skip to content

refactor(ui): use headlessui flat named exports - #3453

Merged
fallenbagel merged 2 commits into
developfrom
refactor/headlessui-flat-named-exports
Aug 31, 2026
Merged

refactor(ui): use headlessui flat named exports#3453
fallenbagel merged 2 commits into
developfrom
refactor/headlessui-flat-named-exports

Conversation

@fallenbagel

@fallenbagel fallenbagel commented Aug 31, 2026

Copy link
Copy Markdown
Member

Description

v2 deprecates dot notation in favour of flat named exports. Renamed all 70 dotted tags across 12 files and update the imports to match. The dotted names are aliases of the same implementations, so this is behaviour-neutral.

How Has This Been Tested?

  • Manually tested opening all the affected places in a dev server.

Screenshots / Logs (if applicable)

Checklist:

  • I have read and followed the contribution guidelines.
  • Disclosed any use of AI (see our policy)
  • I have updated the documentation accordingly.
  • All new and existing tests passed.
  • Successful build pnpm build
  • Translation keys pnpm i18n:extract
  • Database migration (if required)

Summary by CodeRabbit

  • Refactor
    • Updated dropdowns, menus, list selectors, modals, slide-overs, sidebars, and disclosure panels to use the latest component APIs.
    • Preserved existing interactions, styling, labels, and selection behavior.
    • Improved compatibility with the current UI component library without changing the end-user experience.

@fallenbagel
fallenbagel requested a review from a team as a code owner August 31, 2026 08:07
@coderabbitai

coderabbitai Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ef471101-7111-4aa3-8b7c-200c3d55620a

📥 Commits

Reviewing files that changed from the base of the PR and between c14940c and 0053afe.

📒 Files selected for processing (12)
  • src/components/Common/ButtonWithDropdown/index.tsx
  • src/components/Common/Dropdown/index.tsx
  • src/components/Common/Modal/index.tsx
  • src/components/Common/SlideOver/index.tsx
  • src/components/IssueDetails/IssueComment/index.tsx
  • src/components/IssueDetails/IssueDescription/index.tsx
  • src/components/IssueModal/CreateIssueModal/index.tsx
  • src/components/Layout/Sidebar/index.tsx
  • src/components/Layout/UserDropdown/index.tsx
  • src/components/RegionSelector/index.tsx
  • src/components/RequestModal/AdvancedRequester/index.tsx
  • src/components/TvDetails/index.tsx

Included review availability: Your plan provides up to 10 included reviews per hour; 7 remain after this review.


📝 Walkthrough

Walkthrough

The PR migrates Headless UI compound component syntax to standalone named components across menus, transitions, listboxes, labels, and disclosures. Existing props, styling, rendering, and behavior remain unchanged.

Changes

Headless UI API migration

Layer / File(s) Summary
Menu component migration
src/components/Common/ButtonWithDropdown/index.tsx, src/components/Common/Dropdown/index.tsx, src/components/IssueDetails/IssueComment/index.tsx, src/components/IssueDetails/IssueDescription/index.tsx, src/components/Layout/UserDropdown/index.tsx
Menu triggers, containers, and items now use MenuButton, MenuItems, and MenuItem.
Transition child migration
src/components/Common/Modal/index.tsx, src/components/Common/SlideOver/index.tsx, src/components/Layout/Sidebar/index.tsx
Transition child elements now use TransitionChild.
Listbox and label migration
src/components/RegionSelector/index.tsx, src/components/RequestModal/AdvancedRequester/index.tsx, src/components/IssueModal/CreateIssueModal/index.tsx
Selectors now use standalone Listbox components. Issue labels now use Label.
Disclosure component migration
src/components/TvDetails/index.tsx
Season details now use DisclosureButton and DisclosurePanel.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 0053a

This PR updates Headless UI imports and component references without intended behavior changes; no actionable merge-blocking risk remains beyond normal checks and review.

Suggested reviewers: 0xsysr3ll

Poem

A rabbit swaps old names for new,

Menus and panels follow through.
Labels hop, transitions glide,
Disclosures open wide.
Same paths remain beneath the view.

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: replacing deprecated Headless UI dotted notation with flat named exports across the UI.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

gauthier-th
gauthier-th previously approved these changes Aug 31, 2026
Copilot AI lite review requested due to automatic review settings August 31, 2026 08:35
@fallenbagel
fallenbagel force-pushed the refactor/headlessui-flat-named-exports branch from 0053afe to 77950cb Compare August 31, 2026 08:35

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

The root Transition left on duration-300 while its Transition.Childe left on duration-500
sm:duration700. Headless UI keeps the subtree mounted until the child finishes, so from 300ms onward
the root had completed its own transition and reverted to its base className (bg-gray-800/70 at full
opacity) while the panel was still mid-slide, partially off the right edge. This aligns the root's
leave duration to the child's so both finish together and the subtree unmounts with the backdrop
still at opacity-0. The panel's motion is unchanged and this only affects the backdrop fade-out
which never previously completely cleanly.
v2 deprecates dot notation in favour of flat named exports. Renamed all 70 dotted tags and updated
the imports to match. This is behaviour-neutral.
@fallenbagel
fallenbagel force-pushed the refactor/headlessui-flat-named-exports branch from 77950cb to b44603a Compare August 31, 2026 11:58
Base automatically changed from fix/slideover-backdrop-flash-on-close to develop August 31, 2026 12:00
@fallenbagel
fallenbagel merged commit aa8e0de into develop Aug 31, 2026
20 of 28 checks passed
@fallenbagel
fallenbagel deleted the refactor/headlessui-flat-named-exports branch August 31, 2026 12:00
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.

4 participants