feat(uat-batch-7): Wave-2 polish — Open-in-Documents, berth label, residential, NotesList parity
- InterestEoiTab history link renamed "Open" → "Open in Documents" so the cross-section nav target is unambiguous. - DocumentDetail Interest link sub-text now shows the derived `berthLabel` (formatBerthRange of the in-EOI-bundle subset, falling back to primary, then all linked berths). The link no longer duplicates the Client name; falls back to clientName or "No berths linked" when no berths exist. - New /<port>/residential/page.tsx redirects to /residential/clients so the breadcrumb's Residential link works. - Residential interests list — whole row is now a Link target (was hidden behind a trailing "View" link); hover + border accent on the full row. - Expenses PageHeader description "Track and manage port expenses" → "Track and manage business expenses" (drop the redundant "port", same audit pattern flagged in the queue). - DropdownMenu base content capped at `max-h-96` (was the Radix available-height variable, which stretched menus edge-to-edge); the existing internal scroll handles overflow. - Yacht Overview Notes block: replaced the legacy single-field textarea with the threaded `<NotesList entityType="yachts">` for parity with clients/interests/companies. Legacy `yacht.notes` column stays in schema for EOI/contract merge-field path. tsc clean. 1419/1419 vitest pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -105,7 +105,7 @@ export default function ExpensesPage() {
|
||||
<div className="space-y-4">
|
||||
<PageHeader
|
||||
title="Expenses"
|
||||
description="Track and manage port expenses"
|
||||
description="Track and manage business expenses"
|
||||
actions={
|
||||
<div className="flex items-center gap-2">
|
||||
<PermissionGate resource="expenses" action="view">
|
||||
|
||||
16
src/app/(dashboard)/[portSlug]/residential/page.tsx
Normal file
16
src/app/(dashboard)/[portSlug]/residential/page.tsx
Normal file
@@ -0,0 +1,16 @@
|
||||
import { redirect } from 'next/navigation';
|
||||
|
||||
/**
|
||||
* /<port>/residential is a namespace segment — the actual landing is
|
||||
* /residential/clients. Without a page.tsx here, the breadcrumb's
|
||||
* "Residential" link 404s. Server-redirect to the Clients sub-page so
|
||||
* the link works as a useful shortcut.
|
||||
*/
|
||||
export default async function ResidentialIndexPage({
|
||||
params,
|
||||
}: {
|
||||
params: Promise<{ portSlug: string }>;
|
||||
}) {
|
||||
const { portSlug } = await params;
|
||||
redirect(`/${portSlug}/residential/clients`);
|
||||
}
|
||||
Reference in New Issue
Block a user