Skip to content

feat(14-03): bifurcated filtered-empty-states with clear-filters actions#20894

Draft
devin-ai-integration[bot] wants to merge 5 commits intocontent-overflow-edge-cases/13-01-page-header-breadcrumb-truncationfrom
loading-empty-error-states/14-03-filtered-empty-states
Draft

feat(14-03): bifurcated filtered-empty-states with clear-filters actions#20894
devin-ai-integration[bot] wants to merge 5 commits intocontent-overflow-edge-cases/13-01-page-header-breadcrumb-truncationfrom
loading-empty-error-states/14-03-filtered-empty-states

Conversation

@devin-ai-integration
Copy link
Contributor

Adds bifurcated empty states across all list pages to distinguish "nothing created yet" from "filtered to zero results." When users filter/search to zero results, they now see a contextual message with a "Clear filters" or "Clear search" button instead of the generic "No results." text.

Pattern: totalCount === 0 → existing "nothing yet" empty state; count === 0 && totalCount > 0 → new filtered-to-zero empty state with actionable clear button. All filter-clearing callbacks live at the route level using TanStack Router navigation.

Changes by area

List pages (flows, deployments, blocks, variables):

  • Added *FilteredEmptyState components with "Clear filters" button
  • Route-level onClearFilters callbacks reset search params and pagination

Tab-level (flow detail deployments tab, runs page):

  • flow-deployments-tab: Added "no deployments yet" and filtered-to-zero states; wired totalDeploymentsCount (separate unfiltered count query) through flow.$id.tsxdetail/index.tsx → tab
  • runs-page: Added FlowRunsFilteredEmptyState and TaskRunsFilteredEmptyState for both tab contents

Concurrency limits + work pools:

  • Both concurrency data tables: Added showFilteredEmptyState prop + *FilteredEmptyState components with "Clear search"
  • Work pools: Added WorkPoolsFilteredEmptyState for client-side search

Artifacts migration:

  • flow-run-artifacts: Replaced custom Card-based empty state with standard EmptyState component family

Human review checklist

  • Verify variables/index.tsx logic inversion is correct (changed from hasVariables ? <Table> : <Empty> to !hasVariables ? <Empty> : filteredCount === 0 ? <FilteredEmpty> : <Table>)
  • Confirm asymmetry in filter clearing is intentional: onClearFlowRunFilters resets all filters (states, flows, deployments, work-pools, tags, hide-subflows, page), while onClearTaskRunFilters only resets search
  • Check that buildDeploymentsCountByFlowQuery exists and returns expected shape for totalDeploymentsCount in flow.$id.tsx
  • Visual verification: empty states render correctly with proper icons, titles, descriptions, and buttons
  • Verify blocks-page.tsx filtered check (blockDocuments.length === 0) correctly reflects filtered state

Testing

  • npm run build passes
  • npm run check passes (Biome)
  • npm run lint passes (0 errors, 8 pre-existing warnings)
  • ✅ Updated test file for global-concurrency-limits with new required props
  • ⚠️ No new automated tests for filtered empty state rendering behavior
  • ⚠️ Not manually tested in browser

Devin session: https://app.devin.ai/sessions/47f06ce7a45444b9afd96b6a1287001a
Requested by: @desertaxle

Checklist

  • This pull request references any related issue by including "closes <link to issue>"
  • If this pull request adds new functionality, it includes unit tests that cover the changes
  • If this pull request removes docs files, it includes redirect settings in mint.json.
  • If this pull request adds functions or classes, it includes helpful docstrings.

devin-ai-integration bot and others added 5 commits February 27, 2026 21:21
…, blocks, variables

Add bifurcated empty state logic to four list pages. When totalCount === 0,
show 'nothing created yet' state. When count === 0 and totalCount > 0, show
filtered-to-zero state with 'Clear filters' button.

- flows-page.tsx: FlowsFilteredEmptyState with onClearFilters prop
- deployments/index.tsx: DeploymentsFilteredEmptyState inline
- blocks-page.tsx: BlocksFilteredEmptyState with onClearFilters prop
- variables/index.tsx: VariablesFilteredEmptyState inline

Route-level callbacks reset search params via TanStack Router navigation.

Co-authored-by: alex.s <alex.s@prefect.io>
Co-Authored-By: alex.s <ajstreed1@gmail.com>
Add 'no deployments yet' and 'filtered to zero' empty states to the
flow detail deployments tab. Wire totalDeploymentsCount and
onClearDeploymentFilters from route through component chain.

- deploymentsCount === 0: show 'no deployments for this flow' with docs link
- deploymentsCount > 0 && deployments.length === 0: show filtered state with Clear filters
- flow.$id.tsx: add navigate hook, totalDeploymentsCount query, onClearDeploymentFilters callback
- detail/index.tsx: pass totalDeploymentsCount and onClearDeploymentFilters through

Co-authored-by: alex.s <alex.s@prefect.io>
Co-Authored-By: alex.s <ajstreed1@gmail.com>
Add filtered-to-zero empty states for both flow runs and task runs tabs.

- FlowRunsFilteredEmptyState: shown when hasAnyFlowRuns && flowRunsCount === 0
- TaskRunsFilteredEmptyState: shown when hasAnyTaskRuns && taskRunsCount === 0
- onClearFlowRunFilters: resets all flow run filters (search, states, flows, deployments, work-pools, tags, hide-subflows) and pagination
- onClearTaskRunFilters: resets task run search, sort, and pagination
- Update runs-page.stories.tsx with new required props

Co-authored-by: alex.s <alex.s@prefect.io>
Co-Authored-By: alex.s <ajstreed1@gmail.com>
…ponent

Replace custom Card/CardContent empty state with standard EmptyState
component family for visual consistency.

Co-authored-by: alex.s <alex.s@prefect.io>
Co-Authored-By: alex.s <ajstreed1@gmail.com>
…and work-pools

Add filtered-to-zero empty states with 'Clear search' buttons to:
- global-concurrency-limits-data-table: showFilteredEmptyState + onClearSearch props
- task-run-concurrency-limits-data-table: same pattern
- work-pools/index.tsx: WorkPoolsFilteredEmptyState when search yields no results

Update global-concurrency-limits test file with new required props.

Co-authored-by: alex.s <alex.s@prefect.io>
Co-Authored-By: alex.s <ajstreed1@gmail.com>
@devin-ai-integration
Copy link
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@github-actions github-actions bot added the ui-replatform Related to the React UI rewrite label Feb 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ui-replatform Related to the React UI rewrite

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant