Repository navigation
Conversation
lmac-1
commented
Oct 7, 2026
| @@ -0,0 +1,60 @@ | |||
| /* Shared tabs styling. Both stacks emit .ui-tabs and .ui-tab. | |||
Contributor
Author
There was a problem hiding this comment.
This is an example css file that the shared component will use. I don't have the proper design tokens yet so not clear on how the variables will slot in. Appreciate any guidance.
lmac-1
commented
Oct 7, 2026
Build dev showcases only outside prod, from a glob over js/dev. Share one panels helper across tab orientations, and pass the extra class to the tab list explicitly. Use cn() in the showcase.
An empty panel list fell through to patch mode and raised on :patch. Also point the vertical test at grow, which the formatter now writes.
Hash mode tab lists had no accessible name, and every patch mode one was called "Tabs". Add a label attr and set it on each page.
The reason used to replace the tab's name, because the Tooltip hook only read aria-label. The hook now also starts from a tooltip template, so the tab keeps its label, links the reason with aria-describedby, and takes focus so keyboard users can see the tooltip.
Mark them up as a named tablist so screen readers announce them as tabs. They stay off the shared component and are commented as deprecated, since environments are due a redesign.
4 of 7 tasks
This branch has not been deployed
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.
Description
This PR puts every tab bar in the app on one shared tabs component, with one stylesheet that both React and LiveView use.
Tabs, Headless UI in workflow health,tab_bar.exandtabbed.exin LiveView, and hand-rolled buttons in the credential form. Each was styled on its own.assets/js/ui/Tabs.tsxand LiveView uses<.tabs>fromlib/lightning_web/components/ui/tabs.ex. Both use the.ui-tabsand.ui-tabclasses inassets/css/ui/tabs.css. Options: underline or pills, default or small, horizontal or vertical, icons, and disabled with a reason.<.tabs>has two modes. In link mode, each tab goes to its own URL (History). In hash mode, tabs switch panels on the same page by URL hash (run page, project settings).tab_bar.ex,tabbed.exand the old editorTabs.tsxare deleted./dev/componentsshows each LiveView variant next to its React version.Closes CON-325
Validation steps
/dev/components. Each row shows the LiveView tabs on the left and React on the right. They should look the same.mix test test/lightning_web/components/ui/tabs_test.exs, thencd assets && npx vitest run test/ui/Tabs.test.tsx test/hooks/TabbedContainer.test.ts.Additional notes for the reviewer
idoraria-controls, and only workflow health wraps its content in tab panels. Both wait on deciding which tab bars are really tabs. Project settings reads more like side navigation, and the run panel's Empty, New and Existing reads more like a choice between options.assets/css/ui/tokens.cssis a placeholder exported from Figma. The token format isn't final, so the script that generated it was removed from this branch.<nav>witharia-current="page", notrole="tab", because each one goes to a different URL.<template data-tooltip-content>when there's noaria-label. Existing tooltips all have anaria-label, so they're unaffected.push-hash, andRunViewerPanelignoresonTabChange.AI Usage
Please disclose whether you've used AI anywhere in this PR (it's cool, we just want to know!):
You can read more details in our Responsible AI Policy
Pre-submission checklist
/reviewwith Claude Code):owner,:admin,:editor,:viewer)