Files
pn-new-crm/src/components/berths/berth-detail.tsx
Matt 082d4f20e3
Some checks failed
Build & Push Docker Images / lint (push) Successful in 1m16s
Build & Push Docker Images / build-and-push (push) Failing after 4m42s
Fix all TypeScript errors: restore proper types and typed route casts
- Restore `as any` casts for Next.js typedRoutes on dynamic routes
- Use proper types for PDF templates, invoice/expense data, DB schema
- Fix PgColumn casts in sort helpers for expenses/invoices
- Add null guards for optional port/client in record-export
- Fix vitest config (remove invalid poolOptions)
- Lint: 0 errors, TypeScript: 0 errors

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 12:29:55 +01:00

41 lines
1.2 KiB
TypeScript

'use client';
import { useQuery } from '@tanstack/react-query';
import { DetailLayout } from '@/components/shared/detail-layout';
import { apiFetch } from '@/lib/api/client';
import { useRealtimeInvalidation } from '@/hooks/use-realtime-invalidation';
import { BerthDetailHeader } from './berth-detail-header';
import { buildBerthTabs } from './berth-tabs';
interface BerthDetailProps {
berthId: string;
}
export function BerthDetail({ berthId }: BerthDetailProps) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const { data, isLoading } = useQuery<any>({
queryKey: ['berth', berthId],
queryFn: () =>
// eslint-disable-next-line @typescript-eslint/no-explicit-any
apiFetch<{ data: any }>(`/api/v1/berths/${berthId}`).then((r) => r.data),
});
useRealtimeInvalidation({
'berth:updated': [['berth', berthId]],
'berth:statusChanged': [['berth', berthId]],
});
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const berth = data as any;
return (
<DetailLayout
isLoading={isLoading}
header={berth ? <BerthDetailHeader berth={berth} /> : null}
tabs={berth ? buildBerthTabs(berth) : []}
defaultTab="overview"
/>
);
}