Renders the delivery section body with two filtered tables — "Recently Completed" and "Active Tasks" — fetched from separate API endpoints and driven by URL search params. ## Key Components **`DeliveryLists` (default export)** Main component that orchestrates data fetching and rendering for both delivery buckets. **`DeliveryListsProps`** | Prop | Type | Default | Description | |---|---|---|---| | `completedApiEndpoint` | `string` | `/api/delivery/completed` | GET endpoint for completed tasks | | `inProgressApiEndpoint` | `string` | `/api/delivery/in-progress` | GET endpoint for active tasks | | `searchParamKey` | `string` | `DEV_SECTION_PARAM_KEYS.search` | URL param key for search input | | `taskTypeParamKey` | `string` | `DEV_SECTION_PARAM_KEYS.deliveryTaskType` | URL param key for task-type filter | **Internal behaviors** - Reads `search` and `task_type` from URL params via `useSearchParams()` and passes them as query params on both outbound fetches (parallel via `Promise.all`) - `useScrollToHash` — deep-link support for `?search=#delivery-` patterns using `STICKY_HEADER_OFFSET_PX` - Renders `LoadError` on fetch failure (with reload retry), `EmptyState` (search or generic variant) when no results, or both `DeliveryTable` instances when data is present > ⚠️ **Coupling constraint:** `searchParamKey` / `taskTypeParamKey` must match the consuming chrome's `section.search.paramKey` / `section.filter.paramKey` on both the URL-read side and the outbound API query string. Mismatches require proxy-level rewriting. ## Usage Example ```typescript // Zero-config — defaults match hub API routes and OpenFrame chrome param keys // Custom endpoints and param keys (must match your chrome config) ``` **Source:** [`delivery-lists.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/delivery-lists.tsx)