Skip to content

[FIR-288] Add color axis and dropdown menu to ff-button#53

Merged
mfg1986 merged 6 commits into
developfrom
feature/FIR-288_button-color-menu
Jul 20, 2026
Merged

[FIR-288] Add color axis and dropdown menu to ff-button#53
mfg1986 merged 6 commits into
developfrom
feature/FIR-288_button-color-menu

Conversation

@mfg1986

@mfg1986 mfg1986 commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

What

Splits ff-button into two independent axes — variant (style: solid/outline/ghost) and color (7 semantic values) — following the ff-badge dual-axis precedent, with full backward compatibility for the legacy variant="primary"/"secondary" values (soft-deprecated, mapped internally, covered by explicit compat specs). Adds the new ff-menu-button pattern (composes ff-button + ff-icon): an accessible dropdown/menu button on CDK Overlay with aria-haspopup/expanded on the real focusable element, role=menu/menuitem, roving focus skipping disabled items, Home/End, Escape and outside-click close.

Why

FF-CAT-02 — P0 migration blocker: 205 hub-button usages in Flydocs treat variant+color as independent axes; without this mapping, migration wave 3 has no 1:1 target. Jira: FIR-288

Key decisions

  • variant default changes from 'primary' to 'solid' (identical rendering; semver-minor release note).
  • menu-button.contract.ts added; inventory is now 23 primitives + 4 patterns.
  • ff-menu-button sets ARIA imperatively on ff-button's native button; the missing public ARIA/focus passthrough on ff-button is tracked as debt (backlog candidate).
  • Hub→ff button variant/color map documented in the migration doc §12 (dangererror).

How to verify

  • pnpm nx run-many -t build lint test -p design-system design-system-contract playground — design-system 495 ✓ · contract 13 ✓ (inventory 27) · lint 0 err.
  • Catalog /catalog/button (21 variant×color combinations + legacy compat section) and /catalog/menu-button (open/keyboard/select/close flows). Visual smoke audited: console/network clean, aria-expanded toggling verified.

mfg1986 added 6 commits July 18, 2026 16:53
Separate the visual style (solid/outline/ghost) from the semantic
color palette on ff-button, mirroring the ff-badge precedent, while
keeping the legacy variant="primary"/"secondary" values working
(soft-deprecated, mapped internally to the new axes).
Compose ff-button and ff-icon into a keyboard- and screen-reader-
accessible menu button: a CDK connected overlay anchored to the
trigger (falls back above it when there is no room below), full
Arrow/Home/End/Enter/Escape keyboard support, aria-haspopup/
aria-expanded on the trigger and role="menu"/"menuitem" on the panel.
Reflect the ff-button color axis in ButtonContract and add
MenuButtonContract (pattern tier, composes ff-button + ff-icon).
Bumps the aggregated inventory to 23 primitives + 4 patterns.
Demo the style x color grid and legacy-variant compatibility on the
button catalog page, add a chevron-down icon for the trigger affordance,
and wire a new catalog/menu-button page and lazy route for ff-menu-button.
Update the Hub UI to Firefly migration matrix row for hub-button and
add the explicit variant/color mapping table plus the ff-button
legacy-variant compatibility note.
@mfg1986

mfg1986 commented Jul 20, 2026

Copy link
Copy Markdown
Contributor Author

✅ Verdict: APPROVED (reviewer: mgarcia). All four acceptance criteria met: dual-axis variant×color with legacy compatibility covered by explicit specs, accessible ff-menu-button on CDK Overlay (ARIA + full keyboard, verified in-browser), contract inventory at 23 primitives + 4 patterns, and the hub→ff variant/color map documented in §12. Doctrine review found no blockers; the follow-ups are tracked as FIR-314 (public ARIA/focus API on ff-button) and FIR-315 (CDK overlay CSS as a DS-level asset). CI green on the final head. Merging to develop.

@mfg1986
mfg1986 merged commit cd2c7a5 into develop Jul 20, 2026
4 checks passed
@mfg1986
mfg1986 deleted the feature/FIR-288_button-color-menu branch July 20, 2026 07:29
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.

1 participant