feat(uat-p5): long-tail polish - tag chips, notes counts, hub context, tenancies toggle

- StageStepper renders now carry tag chips next to the progress bar
  (client interest cards, pipeline summary, preview sheet).
- Notes tab badge on the interest detail aggregates note counts across
  the interest, the linked client, the linked yacht, and any companies
  the client is an active member of - reps see the full surface area
  at a glance.
- Admin Settings: Tenancies Module toggle wired into the Feature Flags
  card. Disabling hides nav/tabs without deleting any rows; re-enabling
  brings them back. Service layer was already complete; this surfaces
  the control on the operations page.
- HubRoot recent-files rows now show folder breadcrumb + entity badge
  (Interest/Client/Yacht/Company) so reps can tell at a glance where a
  file lives. Backed by listFiles enrichment (5 batched lookups per
  page; no per-row queries).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-26 21:57:20 +02:00
parent 2592e28578
commit 6caf41651f
7 changed files with 270 additions and 20 deletions

View File

@@ -189,6 +189,10 @@ interface InterestTabsOptions {
/** Surfaced by getInterestById for the Overview "most recent note"
* teaser - saves a click into the Notes tab to peek at the latest. */
notesCount?: number;
/** Aggregated note count across linked entities (interest + client +
* yacht + companies the client is a member of). Drives the badge
* on the Notes tab so reps see the full surface area at a glance. */
notesCountAggregated?: number;
recentNote?: {
id: string;
content: string;
@@ -1699,6 +1703,10 @@ export function getInterestTabs({
{
id: 'notes',
label: 'Notes',
badge:
interest.notesCountAggregated && interest.notesCountAggregated > 0
? interest.notesCountAggregated
: undefined,
content: (
<NotesList
entityType="interests"