Problem
Admin pages (Users, Review Plans, AI Configs, SAML, Notification Channels, Attestation, Lifecycle, etc.) offer no pointer to the official documentation. An admin landing on a page has to leave the app and hunt through https://accessflow.bablsoft.com/docs/ manually to understand what the page is for and how to configure it.
Proposal
Each admin page shows a link to the matching section of the public docs site (https://accessflow.bablsoft.com/docs/), so admins can jump straight to the official explanation of that page's purpose.
Suggested placement: a small icon + "Docs" link in the shared PageHeader component (components/common/), driven by an optional docsAnchor prop — so each page only declares its anchor and the rendering/URL logic lives in one place.
Suggested page → anchor mapping
The docs page already has stable per-topic anchors:
| Admin page |
Docs anchor |
/admin/users (UsersPage) |
#cfg-users |
| Groups pages |
#cfg-groups |
| OrganizationsListPage / OrganizationDetailPage |
#cfg-organizations |
/datasources (admin management) |
#cfg-datasources |
| API connectors (apigov) |
#cfg-api-connectors |
| Connector catalog / drivers |
#cfg-connectors / #cfg-drivers |
| ReviewPlansPage |
#cfg-review-plans |
| RoutingPoliciesPage |
#cfg-routing-policies |
AI config pages (/admin/ai-configs) |
#cfg-ai |
| AiAnalysesPage |
#cfg-ai-analyses |
| DatasourceHealthPage |
#cfg-datasource-health |
| NotificationsPage |
#cfg-notification-channels |
| SMTP settings |
#cfg-smtp |
| OAuth2ConfigPage |
#cfg-oauth |
| SamlConfigPage |
#cfg-saml |
| AuditLogPage |
#cfg-audit-log |
| Compliance reports |
#compliance-reports |
| Attestation campaign pages |
#cfg-attestation |
| AnomaliesPage |
#cfg-anomalies |
| Lifecycle pages |
#cfg-lifecycle |
Pages without a dedicated docs section yet (e.g. BreakGlassLogPage, DataClassificationsPage, LangfuseConfigPage, LanguagesConfigPage, SlackConfigPage) can either link to the nearest parent section or get a new anchor added to website/docs/index.html in the same PR.
Implementation notes
- Base docs URL should be a single constant (e.g. in
src/config/), not repeated per page.
- External link must use
target="_blank" with rel="noopener noreferrer" (frontend security rule in CLAUDE.md).
- Link label goes through i18n (
t()), with an aria-label if icon-only.
- If new anchors are added to the docs page, update
website/docs/index.html in the same PR (website-drift rule).
Acceptance criteria
Problem
Admin pages (Users, Review Plans, AI Configs, SAML, Notification Channels, Attestation, Lifecycle, etc.) offer no pointer to the official documentation. An admin landing on a page has to leave the app and hunt through https://accessflow.bablsoft.com/docs/ manually to understand what the page is for and how to configure it.
Proposal
Each admin page shows a link to the matching section of the public docs site (https://accessflow.bablsoft.com/docs/), so admins can jump straight to the official explanation of that page's purpose.
Suggested placement: a small icon + "Docs" link in the shared
PageHeadercomponent (components/common/), driven by an optionaldocsAnchorprop — so each page only declares its anchor and the rendering/URL logic lives in one place.Suggested page → anchor mapping
The docs page already has stable per-topic anchors:
/admin/users(UsersPage)#cfg-users#cfg-groups#cfg-organizations/datasources(admin management)#cfg-datasources#cfg-api-connectors#cfg-connectors/#cfg-drivers#cfg-review-plans#cfg-routing-policies/admin/ai-configs)#cfg-ai#cfg-ai-analyses#cfg-datasource-health#cfg-notification-channels#cfg-smtp#cfg-oauth#cfg-saml#cfg-audit-log#compliance-reports#cfg-attestation#cfg-anomalies#cfg-lifecyclePages without a dedicated docs section yet (e.g. BreakGlassLogPage, DataClassificationsPage, LangfuseConfigPage, LanguagesConfigPage, SlackConfigPage) can either link to the nearest parent section or get a new anchor added to
website/docs/index.htmlin the same PR.Implementation notes
src/config/), not repeated per page.target="_blank"withrel="noopener noreferrer"(frontend security rule in CLAUDE.md).t()), with anaria-labelif icon-only.website/docs/index.htmlin the same PR (website-drift rule).Acceptance criteria
rel="noopener noreferrer"website/docs/index.html