feat(nav): surface the four Exposures pages that have real data - #342
Merged
Conversation
/exposures/{vulnerabilities,secrets,code,misconfigurations} are 1,393 lines of
finished, working screens with no route into them. Each is scoped to its own
finding type:
useFindingTypeStats(tenantId, ['secret'])
useFindingTypeStats(tenantId, ['sast'])
useFindingTypeStats(tenantId, ['iac'])
useFindingTypeStats(tenantId, VULNERABILITY_SOURCES)
Exposures becomes a collapsible. NavCollapsible carries no `url` in
src/components/types.ts, so the parent page is reached through an Overview child —
the same shape Integrations already uses in this file.
/exposures/credentials is deliberately NOT listed. It reads useDashboardStats and
renders EVERY finding in the tenant under a "Credential Exposures" heading. Wiring
it would put a chart labelled as credentials in front of users showing unrelated
numbers, which in a security product is worse than no page at all — and it is the
same defect ui#339 just removed, a nav entry that looks shipped and is not.
That distinction is the whole reason this change is four pages and not eleven. An
earlier draft of docs/nav-coverage.md called eleven of these "easy wins, all
data-wired"; checking what they actually render showed seven were scaffolds
driven by dashboard totals. See docs/nav-coverage.md for the classification of all
107 pages outside the sidebar.
Sidebar coverage goes from 64 to 68 of 171 static pages.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
/exposures/{vulnerabilities,secrets,code,misconfigurations}are 1,393 lines offinished, working screens with no route into them.
Each is scoped to its own finding type — this is what separates them from the
scaffolds around them:
Shape
Exposuresbecomes a collapsible.NavCollapsiblecarries nourlinsrc/components/types.ts, so the parent page is reached through an Overviewchild — the same shape
Integrationsalready uses a few hundred lines down in thesame file.
What is deliberately absent
/exposures/credentials. It readsuseDashboardStatsand renders everyfinding in the tenant under a "Credential Exposures" heading.
Wiring it would put a chart labelled as credentials in front of users showing
unrelated numbers — in a security product that is worse than no page, because it
will be read as fact. It is also the same defect ui#339 just removed: a nav
entry that looks shipped and is not.
That distinction is the entire reason this PR is four pages and not eleven. An
earlier draft of
docs/nav-coverage.mdcalled eleven of these "easy wins, alldata-wired". Checking what they actually render showed seven were scaffolds
driven by dashboard totals —
/controls/*derives "controls" fromstats.assets.byType. See ui#341 for the classification of all 107 pagesoutside the sidebar.
Effect
Sidebar coverage: 64 → 68 of 171 static pages.
Verification
tsc --noEmitclean,eslintclean, prettier-formatted, and the palette-driftgate from ui#340 passes on this branch.