76f525fd38
- Migrate `EnvironmentList` from `GroupSortTable` to `SortableList`, removing ~1,700 lines of duplicated component code - Move health sort ranking to the backend (`sort.go`), adding `Health` and `Id` sort keys - Delete `GroupSortTable`, `GroupSortTableGroupRow`, `useGroupSortTableState`, and `store` — functionality absorbed by `SortableList` - Add `useHomeViewState` hook to centralise home view URL state (`groupBy`, `groupFilter`, `order`, `page`, `search`) - Update `useTableStateFromUrl` to support `groupBy` and `groupFilter` URL params with a `buildExtra` callback - Rename URL param `filter` → `groupFilter` for clarity; add `search` and `order` to `/home` route definition - Simplify `EnvironmentList` props — remove `headerFilter` / `onHeaderFilterChange`, leaving only `onClickBrowse` - Add `computeSortDesc` pure utility to `SortableList` and cover all toggle/reset cases with unit tests - Update `SortableListHeader` to use `activeKey` prop (renamed from `sortBy`); fix all callsites and stories - Fix `SortableList` sort-key normalisation to be case-insensitive; update tests to reflect no-match behaviour