mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-05-10 03:51:54 +00:00
Align Pulse Pro route header copy
This commit is contained in:
parent
e8d2d59226
commit
2935440e1e
4 changed files with 22 additions and 4 deletions
|
|
@ -485,6 +485,9 @@ That same boundary also owns the shell and section framing copy for the
|
|||
self-hosted Pro billing surface. `ProLicensePanel.tsx` must consume shared
|
||||
presentation for its shell title/description, refresh CTA label, and section
|
||||
headings rather than carrying those commercial labels inline.
|
||||
The same description should also feed the `system-billing` route header
|
||||
metadata so the settings shell and the route header do not narrate the same
|
||||
commercial surface differently.
|
||||
Paid Pulse Pro v5 grandfathering is now part of that same canonical boundary:
|
||||
when a recurring v5 customer migrates into v6, billing persistence,
|
||||
entitlement evaluation, renewal handling, and Pro-license presentation must
|
||||
|
|
|
|||
|
|
@ -154,6 +154,10 @@ work extends shared components instead of creating new local variants.
|
|||
plus `tests/integration/tests/15-settings-shell-consistency.spec.ts`
|
||||
3. Update this contract when a new canonical UI pattern is adopted
|
||||
4. Remove local forks after the shared primitive is introduced
|
||||
5. When a settings route header and a top-level settings shell describe the same
|
||||
commercial surface, keep them on the same shared presentation owner instead
|
||||
of allowing route metadata in `settingsHeaderMeta.ts` to drift into
|
||||
independent copy.
|
||||
|
||||
## Current State
|
||||
|
||||
|
|
@ -1240,6 +1244,15 @@ is the shell, `useSSOProvidersState.ts` owns the reactive/API lifecycle, and
|
|||
`frontend-modern/src/components/Settings/UpdatesSettingsPanel.tsx` must keep
|
||||
page-shell titles, descriptions, and lead panel framing aligned instead of
|
||||
letting navigation/header labels drift away from the actual settings surface.
|
||||
The self-hosted Pulse Pro route header metadata for
|
||||
`frontend-modern/src/components/Settings/settingsHeaderMeta.ts` is part of that
|
||||
same shell boundary as
|
||||
`frontend-modern/src/components/Settings/ProLicensePanel.tsx` and the shared
|
||||
commercial presentation owner in
|
||||
`frontend-modern/src/utils/licensePresentation.ts`; the `system-billing`
|
||||
header description must reuse
|
||||
`SELF_HOSTED_PRO_BILLING_PRESENTATION.shellDescription` so the route header and
|
||||
the billing shell do not narrate the same commercial surface differently.
|
||||
`frontend-modern/src/components/Settings/NetworkSettingsPanel.tsx` is now a
|
||||
shell only. `frontend-modern/src/components/Settings/NetworkDiscoverySection.tsx`
|
||||
owns discovery controls and shared subnet presets, while
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import { describe, expect, it } from 'vitest';
|
||||
import { SELF_HOSTED_PRO_BILLING_PRESENTATION } from '@/utils/licensePresentation';
|
||||
import settingsSource from '../Settings.tsx?raw';
|
||||
import settingsDialogsSource from '../SettingsDialogs.tsx?raw';
|
||||
import settingsShellSource from '../SettingsPageShell.tsx?raw';
|
||||
|
|
@ -1271,8 +1272,9 @@ describe('Settings architecture guardrails', () => {
|
|||
expect(SETTINGS_HEADER_META['infrastructure-operations'].description).not.toContain(
|
||||
'installed-agent',
|
||||
);
|
||||
expect(SETTINGS_HEADER_META['system-billing'].description).toContain('license status');
|
||||
expect(SETTINGS_HEADER_META['system-billing'].description).not.toContain('allocation');
|
||||
expect(SETTINGS_HEADER_META['system-billing'].description).toBe(
|
||||
SELF_HOSTED_PRO_BILLING_PRESENTATION.shellDescription,
|
||||
);
|
||||
expect(SETTINGS_HEADER_META['organization-billing'].description).toContain(
|
||||
'subscription status',
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import type { SettingsHeaderMetaMap } from './settingsNavigationModel';
|
||||
import { SELF_HOSTED_PRO_BILLING_PRESENTATION } from '@/utils/licensePresentation';
|
||||
|
||||
export const SETTINGS_HEADER_META: SettingsHeaderMetaMap = {
|
||||
proxmox: {
|
||||
|
|
@ -38,8 +39,7 @@ export const SETTINGS_HEADER_META: SettingsHeaderMetaMap = {
|
|||
},
|
||||
'system-billing': {
|
||||
title: 'Pulse Pro',
|
||||
description:
|
||||
'Manage self-hosted Pulse Pro billing, monitored-system limits, and license status for paid features.',
|
||||
description: SELF_HOSTED_PRO_BILLING_PRESENTATION.shellDescription,
|
||||
},
|
||||
'organization-overview': {
|
||||
title: 'Organization Overview',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue