๐Ÿ“‹

Sortable Plan Table

Tri-state column sort with affordance arrows. Shared component between paid, free preview, and pre-paywall surfaces.

Part of the StackSwap Intelligence Ecosystem โ€” software adoption intelligence for the AI era.

What Is the Sortable Plan Table?

The plan table on the StackScan results page lists every tool's recommendation โ€” current stack, action, optimized stack, monthly impact, and why. The sortable plan table (components/stackscan/SortablePlanTableHeaderRow + lib/stackscan-plan-table-sort) adds spreadsheet-style column sorting: click a header to sort ascending, click again to flip to descending, click a third time to clear. Active columns show a bright directional arrow (โ†‘/โ†“); inactive columns show a dim double-arrow (โ†•) so the affordance is visible without hover. A single shared component renders the headers across the paid table, the free-preview teaser, and the pre-paywall inline table so the UX doesn't drift between surfaces.

How It Fits the StackSwap Intelligence Ecosystem

The paid table defaults to execution-order sorting (REMOVE first, then REPLACE, then smaller items) with a caption that says so. The pre-paywall and free-preview tables default to monthly-savings-descending with a matching caption. Both captions truthfully reflect the current sort state, and the shared SortablePlanTableHeaderRow means a styling change propagates to every surface in one diff. Sort state is client-side only โ€” the underlying plan rows don't change order in the export or the persisted report.

Why This Matters for Operator UX

CFOs and RevOps operators read these tables like spreadsheets. Missing sort forces them to mentally re-rank every time they want to check the top items by a different dimension. Shipping real sort + a centered caption + a visible sortable affordance closes the gap between "pretty read" and "actually usable decision surface." The shared component pattern means that when we add a column or adjust the default sort, every table gets it in one commit.