feat(operational-dashboard): soften widget resize handles (HYPERSHELL-348) - #317
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository YAML (base), Central YAML (inherited) Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
Amber reviewStatus: Complete |
…-348) Replace the high-contrast PatternFly wedge with a smaller gray double-line handle so resize affordances are less visually loud. Co-authored-by: Cursor <cursoragent@cursor.com>
5cf2001 to
3eeda13
Compare
amber-review-bot
left a comment
There was a problem hiding this comment.
Verdict
This is a small, well-scoped visual-only change: it swaps the operational dashboard's high-contrast PatternFly resize wedge for a softer custom double-stroke SVG plus scoped CSS. The mechanics are correct and the earlier accessibility concerns are resolved or author-confirmed; the only remaining note is the absence of an automated render test, which is non-blocking.
Summary: dashboardResizeWidgetConfig is wired into GridLayout via the resizeWidgetConfig prop, and the new CSS grays and resizes the handle while keeping a 24x24 hit target with a 16px inner SVG. Accessibility is the only sensitive dimension for a "soften" change, and it holds up on this head commit.
Findings
No new findings on this head commit. All prior notes are tracked in the Previous concerns section; the sole open item is the missing render test (Minor, non-blocking).
Cross-PR coordination
No material cross-PR coordination issue requires maintainer action.
Previous concerns
- [Major] Softened handle color may fall below the 3:1 non-text contrast minimum (discussion) - cannot verify from code. The handle color is a
color-mix()of--pf-t--global--border--color--default(65%) and--pf-t--global--text--color--subtle(35%) atdashboard-widget.css:57-62, both subtle low-contrast tokens, so runtime non-text contrast (WCAG 2.2 SC 1.4.11 / UI-A11Y-05) cannot be proven from the diff. The author reports a manual check passes; I accepted that measurement on the thread and asked only that the measured light/dark ratios be recorded to lock in the guarantee. Not a blocker. - [Minor] 18px hit target below the 24x24 CSS px minimum (discussion) - addressed.
dashboard-widget.css:63-64now sets the handle container toheight: 24px; width: 24px, anddashboard-widget.css:68-70keeps the inner SVG at16px, meeting the WCAG 2.5.8 / UI-A11Y-07 24x24 minimum. - [Minor] No test or automated assertion for the wiring (discussion) - still present. No render test exists under
packages/operational-dashboard-ui/src/pages/fordashboard-resize-handle.tsx. A lightweight test assertingresizeWidgetConfigreachesGridLayout(operational-dashboard-page.tsx:881) and that the two-strokearia-hiddenSVG renders would guard the wiring against a future refactor. I replied on the thread accepting the author's point that a PatternFly prop rename is unlikely; the value is guarding the local wiring, not just the rename. Non-blocking.
Convention Checklist
| Convention | Result |
|---|---|
| PatternFly 6 / reuse canonical components | Pass |
| Non-text contrast for active controls (UI-A11Y-05) | Verify (author-confirmed) |
| Target size >= 24x24 CSS px (UI-A11Y-07) | Pass |
| No em dashes in text files | Pass |
| Tests added/updated | Fail |

Summary
Problem: Operational dashboard widget resize handles use PatternFly's default high-contrast solid wedge, which is visually loud and distracts from the metrics content.
Fix: Replace the default handle with a smaller gray double-line resize affordance via a custom
resizeWidgetConfigand matching CSS.Alternatives considered: Restyling only the default PatternFly wedge via CSS (limited control over the solid shape); leaving the default handle unchanged. Custom handle component was preferred for a clearer, softer visual.
Breaking change? No - visual-only change to resize handle styling on the operational dashboard; no API, schema, or behavior changes beyond the handle appearance.
Tracking
Fixes HYPERSHELL-348
Specs and other PRs
Details
Components changed
packages/operational-dashboard-ui- widget resize handle UIChanges with impact
resizeWidgetConfig.Verification
Screenshots / video
Before
After
Questions and discussion
Details
Details
What changed
The PatternFly widgetized dashboard exposes
resizeWidgetConfigso consumers can supply a custom resize handle. This PR adds:dashboard-resize-handle.tsx-dashboardResizeHandlerenders a 16x16 SVG with two diagonal strokes (currentColor) instead of the default solid wedge, plusdashboardResizeWidgetConfigexporting that handle for PatternFly.operational-dashboard-page.tsx- PassesresizeWidgetConfig={dashboardResizeWidgetConfig}into the dashboard layout component.dashboard-widget.css- Scopes handle color and size under.pf-v6-widget-layout-containerusing a mix of--pf-t--global--border--color--defaultand--pf-t--global--text--color--subtle, with an 18px hit target wrapping the 16px SVG.Out of scope
How to test