Skip to content

FE-1662: add filter to supply chain - #9684

Open
alex-e-leon wants to merge 15 commits into
mainfrom
FE-1662-add-filter-to-supply-chain
Open

FE-1662: add filter to supply chain#9684
alex-e-leon wants to merge 15 commits into
mainfrom
FE-1662-add-filter-to-supply-chain

Conversation

@alex-e-leon

Copy link
Copy Markdown
Contributor

🌟 What is the purpose of this PR?

Updates the supply chain pages in hash-frontend with the new filter bars, and updates the filter bar + sort menu with various QOL improvements to work better.

Pre-Merge Checklist 🚀

🚢 Has this modified a publishable library?

This PR:

  • does not modify any publishable blocks or libraries, or modifications do not need publishing

📜 Does this require a change to the docs?

The changes in this PR:

  • are internal and do not require a docs change

@vercel

vercel Bot commented Sep 11, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
hash Ready Ready Preview Sep 12, 2026 6:24pm UTC
3 Skipped Deployments
Project Deployment Actions Updated
hashdotdesign-tokens Ignored Ignored Preview Sep 12, 2026 6:24pm UTC
petrinaut Skipped Skipped Sep 12, 2026 6:24pm UTC
petrinaut-docs Skipped Skipped Sep 12, 2026 6:24pm UTC

Request Review

@cursor

cursor Bot commented Sep 11, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Large client-side refactor of filtering and table chrome on the site overview; incorrect filter semantics could hide rows, but changes are localized to supply-chain UI with unit tests for core filter logic.

Overview
Replaces per-column header filters on the supply chain site overview with a shared chip-based StepFilterBar (design-system Filter / FilterGroup) and a new step-filters engine that applies rich predicates (scope, magnitude, planning, trend, workflow, etc.) across dwell, planning, trend, supplier, and opportunities tables. One filter set persists when switching dwell/planning/trend/supplier tabs; opportunities keep a separate set. Filters that do not apply to the active table are skipped and shown as disabled chips with tooltips.

Layout changes: site tabs move into each table’s pinned header next to filter and SortMenu controls; tables use a card layout with a fixed filter band and internal scroll. Column FilterMenu / column-filter are removed; sorting gains menu-only metrics (tail ratio, supplier late share, etc.) wired through sort-menus.ts.

Design system: small FilterGroup spacing fix and RejectedKeysHint for number filter inputs after repeated invalid keystrokes.

Reviewed by Cursor Bugbot for commit 740e15f. Bugbot is set up for automated code reviews on this repo. Configure here.

@github-actions github-actions Bot added area/apps > hash* Affects HASH (a `hash-*` app) area/libs Relates to first-party libraries/crates/packages (area) type/eng > frontend Owned by the @frontend team area/apps area/apps > hash.design Affects the `hash.design` design site (app) labels Sep 11, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit b12a024. Configure here.

stepFilters,
stepFilterContext,
),
[generatedOpportunities, searchMatchers, stepFilters, stepFilterContext],

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Search can disable active filters

Medium Severity

Search is applied before applyStepFilters, and applicability is decided from that already-narrowed list. A committed filter that still belongs on the table can be skipped once search leaves only rows without that property, so those rows reappear and the chip is marked as not applying to the table.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit b12a024. Configure here.

<p className={subtitle}>
{visibleCount} visible of {opportunities.length} generated from
dwell cost and planning variance.
</p>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Opportunity counts no longer differ

Low Severity

The opportunities subtitle still compares visibleCount with opportunities.length as if the latter were the unfiltered generated total. Filtering now happens upstream, so both numbers are the already-filtered set and the copy always reads as N visible of N generated.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit b12a024. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/apps > hash.design Affects the `hash.design` design site (app) area/apps > hash* Affects HASH (a `hash-*` app) area/apps area/libs Relates to first-party libraries/crates/packages (area) type/eng > frontend Owned by the @frontend team

Development

Successfully merging this pull request may close these issues.

1 participant