feat(fuselage)!: Remove `ContextualbarV2` in favor of `Contextualbar`

Merged
TA
3mo ago
+325-1254

Proposed changes (including videos or screenshots)

Removes the ContextualbarV2 component family and promotes its implementation into the Contextualbar family, which is no longer deprecated. The ContextualbarV2* components, props types and the src/components/ContextualbarV2 directory are gone; Contextualbar* is now the single, current API.

This is a breaking change for consumers on either name:

BeforeAfter
ContextualbarV2*Contextualbar* (drop the V2)
Contextualbar* (legacy look)same name, now rendering the V2 look and behavior

What actually changed behind the Contextualbar* names:

  • ContextualbarHeader — height x56 → x44, inline padding 24 → 16, and the Margins inline='x4' wrapper replaced by an 8px gap.
  • ContextualbarAction — name is now typed as IconButtonProps['icon'] and icon is omitted from the forwarded props, instead of IconProps['name'].
  • ContextualbarEmptyContentProps — now extends ContextualbarContentProps rather than re-deriving from BoxProps.
  • ContextualbarIcon, ContextualbarSection, ContextualbarTitle, ContextualbarFooter and ContextualbarSkeleton pick up their V2 spacing/typography counterparts.

Follows up on #2135, which deprecated the legacy family in favor of ContextualbarV2.

Issue(s)

Further comments

Verified locally on the branch:

  • yarn build (all 18 packages) — api-extractor regenerated fuselage.api.md with no drift; the report now shows the Contextualbar* exports as @public (no @deprecated) and no ContextualbarV2* symbols at all.
  • yarn test in packages/fuselage — 80 suites, 482 tests, 177 snapshots passing. The Contextualbar snapshots were regenerated to reflect the new markup.
  • yarn lint in packages/fuselage — 0 errors; only the 3 pre-existing react-hooks/exhaustive-deps warnings in MultiSelect/SelectLegacy. tsc --noEmit and prettier/stylelint clean.
  • grep over the repo confirms no source file references ContextualbarV2 anymore.

Visual regression was not run locally — worth running here, since the promoted implementation changes rendered output for anything still using the Contextualbar* names.

One thing to decide before release: .changeset/lucky-plums-jump.md ("Deprecate the Contextualbar component family in favor of ContextualbarV2", from #2135) is still pending and unreleased. Since this PR reverses that deprecation in the same unreleased version, the changelog would carry both entries and read contradictorily. I left it in place rather than dropping it unilaterally — happy to remove it in this PR if you agree.