import { notFound } from 'next/navigation'
import { AppShell } from '@/components/app/app-shell'
import { requireRoleRoute } from '@/lib/role-route'
import { loadAccessibleTrip, loadDriverTripPayload } from '@/lib/data/trip-page'
import { resolveLanguagePrefs } from '@/lib/domain/languages'
import { DriverView } from '@/app/ct-dashboard/driver-view'

/**
 * Carrier Driver Trip View (CT) — `/ct-trip-workspace/<trip number>`. A
 * driver opening a trip stays in the driver experience (Nash, 2026-09-07).
 */
export default async function Page({
  params,
  searchParams,
}: {
  params: Promise<{ ref: string }>
  searchParams: Promise<{ tab?: string; permit?: string }>
}) {
  const { user, profile } = await requireRoleRoute('carrier-driver')
  const { ref } = await params
  const { tab, permit } = await searchParams
  const trip = await loadAccessibleTrip(user, decodeURIComponent(ref))
  if (!trip) notFound()
  const d = await loadDriverTripPayload(user, trip)
  const languagePrefs = resolveLanguagePrefs(profile)
  return (
    <AppShell profile={profile}>
      <DriverView
        trips={d.myTrips}
        focusTrip={trip}
        warnings={d.warnings}
        permits={d.permits}
        userId={user.id}
        accountCreatedAt={profile.created_at}
        isInternal={user.internal}
        myName={profile.full_name}
        routeRequests={d.routeRequests}
        units={d.units}
        permitUrls={d.permitUrls}
        chat={d.chat}
        participants={d.participants}
        myRole={d.myParticipant?.role ?? null}
        shareChat={d.shareChat}
        initialTab={tab}
        initialPermitId={permit}
        completions={d.completions}
        routeCredits={d.routeCredits}
        chatLanguages={languagePrefs.languages}
        primaryLanguage={languagePrefs.primary}
        pilotAccess={d.pilotAccess}
      />
    </AppShell>
  )
}
