feat(react-breadcrumb): add useBreadcrumbBase_unstable hook#35819
Draft
dmytrokirpa wants to merge 3 commits intomasterfrom
Draft
feat(react-breadcrumb): add useBreadcrumbBase_unstable hook#35819dmytrokirpa wants to merge 3 commits intomasterfrom
dmytrokirpa wants to merge 3 commits intomasterfrom
Conversation
|
Pull request demo site: URL |
…mbButton, BreadcrumbDivider, and BreadcrumbItem Implements base state hooks for all Breadcrumb components as part of the experimental base hooks initiative. Each base hook extracts pure component logic (slot structure, ARIA attributes, keyboard navigation) while omitting design props (primarily size). - BreadcrumbBaseProps/BreadcrumbBaseState: omits size useBreadcrumbBase_unstable: handles focusMode, arrow navigation, ARIA label, slot structure - BreadcrumbButtonBaseProps/BreadcrumbButtonBaseState: omits size useBreadcrumbButtonBase_unstable: handles current state, aria-current, aria-disabled, button behavior - BreadcrumbDividerBaseProps/BreadcrumbDividerBaseState: excludes size (injected via context in full hook) useBreadcrumbDividerBase_unstable: handles aria-hidden, RTL/LTR chevron icon selection - BreadcrumbItemBaseProps/BreadcrumbItemBaseState: excludes size (injected via context in full hook) useBreadcrumbItemBase_unstable: handles slot structure All styled hooks now call their base counterparts internally. All new types and hooks exported from package index.ts. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
55bdfa4 to
d4d7850
Compare
| @@ -0,0 +1,7 @@ | |||
| { | |||
There was a problem hiding this comment.
🕵🏾♀️ visual changes to review in the Visual Change Report
vr-tests-react-components/Breadcrumb Converged 5 screenshots
| Image Name | Diff(in Pixels) | Image Type |
|---|---|---|
| vr-tests-react-components/Breadcrumb Converged.appearance - High Contrast.pressed.chromium.png | 466 | Changed |
| vr-tests-react-components/Breadcrumb Converged.appearance - Dark Mode.focused.chromium.png | 275 | Changed |
| vr-tests-react-components/Breadcrumb Converged.appearance - RTL.pressed.chromium.png | 186 | Changed |
| vr-tests-react-components/Breadcrumb Converged.appearance.default.chromium.png | 184 | Changed |
| vr-tests-react-components/Breadcrumb Converged.size.pressed.chromium.png | 577 | Changed |
vr-tests-react-components/CalendarCompat 4 screenshots
| Image Name | Diff(in Pixels) | Image Type |
|---|---|---|
| vr-tests-react-components/CalendarCompat.multiDayView - Dark Mode.default.chromium.png | 1107 | Changed |
| vr-tests-react-components/CalendarCompat.multiDayView - High Contrast.default.chromium.png | 1236 | Changed |
| vr-tests-react-components/CalendarCompat.multiDayView - RTL.default.chromium.png | 495 | Changed |
| vr-tests-react-components/CalendarCompat.multiDayView.default.chromium_1.png | 403 | Changed |
vr-tests-react-components/Charts-DonutChart 3 screenshots
| Image Name | Diff(in Pixels) | Image Type |
|---|---|---|
| vr-tests-react-components/Charts-DonutChart.Dynamic - Dark Mode.default.chromium.png | 7530 | Changed |
| vr-tests-react-components/Charts-DonutChart.Dynamic - RTL.default.chromium.png | 5570 | Changed |
| vr-tests-react-components/Charts-DonutChart.Dynamic.default.chromium.png | 5581 | Changed |
vr-tests-react-components/Menu Converged - submenuIndicator slotted content 2 screenshots
| Image Name | Diff(in Pixels) | Image Type |
|---|---|---|
| vr-tests-react-components/Menu Converged - submenuIndicator slotted content.default.submenus open.chromium.png | 413 | Changed |
| vr-tests-react-components/Menu Converged - submenuIndicator slotted content.default - RTL.submenus open.chromium.png | 404 | Changed |
vr-tests-react-components/Positioning 2 screenshots
| Image Name | Diff(in Pixels) | Image Type |
|---|---|---|
| vr-tests-react-components/Positioning.Positioning end.chromium.png | 605 | Changed |
| vr-tests-react-components/Positioning.Positioning end.updated 2 times.chromium.png | 510 | Changed |
vr-tests-react-components/TagPicker 3 screenshots
| Image Name | Diff(in Pixels) | Image Type |
|---|---|---|
| vr-tests-react-components/TagPicker.disabled - Dark Mode.disabled input hover.chromium.png | 658 | Changed |
| vr-tests-react-components/TagPicker.disabled - High Contrast.disabled input hover.chromium.png | 1319 | Changed |
| vr-tests-react-components/TagPicker.disabled - RTL.disabled input hover.chromium.png | 635 | Changed |
There were 19 duplicate changes discarded. Check the build logs for more information.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
📊 Bundle size reportUnchanged fixtures
|
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
This PR adds base state hooks for all Breadcrumb components as part of the experimental base hooks initiative.
What was implemented
useBreadcrumbBase_unstable— base hook forBreadcrumbcomponentBreadcrumbBaseProps(omitssize)BreadcrumbBaseState(omitssize)useArrowNavigationGroup, ARIA label, slot structure (root,list)useBreadcrumbButtonBase_unstable— base hook forBreadcrumbButtoncomponentBreadcrumbButtonBaseProps(omitssize)BreadcrumbButtonBaseState(omitssize)currentstate,aria-current,aria-disabled, button element type selection, callsuseButtonBase_unstableuseBreadcrumbDividerBase_unstable— base hook forBreadcrumbDividercomponentBreadcrumbDividerBaseProps(same asBreadcrumbDividerPropssince no design props)BreadcrumbDividerBaseState(omitssize)aria-hidden, RTL/LTR chevron icon selection viauseFluentuseBreadcrumbItemBase_unstable— base hook forBreadcrumbItemcomponentBreadcrumbItemBaseProps(omitssize)BreadcrumbItemBaseState(omitssize)lielementRefactoring
All styled hooks (
useBreadcrumb_unstable,useBreadcrumbButton_unstable,useBreadcrumbDivider_unstable,useBreadcrumbItem_unstable) now call their base counterparts internally and spread results, then add thesizedesign prop.Exports
All new types and hooks are exported from the package
index.ts. They are NOT exported from@fluentui/react-components.Test plan
npx tsc --noEmiton the package)🤖 Generated with Claude Code