import { getListWithItems } from '@/lib/actions' import { getPermission } from '@/lib/permissions' import { getServerSession } from 'next-auth' import { authOptions } from '@/pages/api/auth/[...nextauth]' import { notFound } from 'next/navigation' import Link from 'next/link' import { ArrowLeft } from 'lucide-react' import InlineItemCreate from '@/components/InlineItemCreate' import ListDetailView from '@/components/ListDetailView' export const dynamic = 'force-dynamic' export const revalidate = 0 export default async function ListDetailPage({ params }: { params: { id: string } }) { const session = await getServerSession(authOptions) if (!session?.user?.id) { notFound() } const list = await getListWithItems(params.id) if (!list) { notFound() } // Get user's permission for this list const permission = await getPermission(session.user.id, params.id) if (!permission) { notFound() } const canShare = permission === 'owner' const canEdit = permission === 'owner' || permission === 'editor' const completedItems = list.items.filter(item => item.completed) return (
{/* Header */}
Back to Lists

{list.title}

{completedItems.length} of {list.items.length} tasks completed

{/* Permission Badge and Share Button */}
({ ...c, permission: c.permission as 'editor' | 'viewer' }))} showOnlyHeader={true} />
{/* Inline Item Creation - only show if user can edit */} {canEdit && (
)} {/* Items List */} ({ ...c, permission: c.permission as 'editor' | 'viewer' }))} showOnlyItems={true} />
) }