# Technician Dispatch block

> Day dispatch gantt with technician rows and timed jobs on an hour grid

Hour grid day dispatch with technician rows and timed jobs

- Type: Pro block
- Category: [Gantt](https://web.dev.reui.io/blocks/application/gantt.md)
- Page: https://web.dev.reui.io/blocks/application/gantt/gantt-2
- Docs (Base UI): https://web.dev.reui.io/docs/components/base/gantt.md
- Docs (Radix UI): https://web.dev.reui.io/docs/components/radix/gantt.md
- MCP: `get_block("gantt-2")`
- Built with: Alert Dialog, Avatar, Badge, Button, Card, Checkbox, Context Menu, Dialog, Dropdown Menu, Field, Gantt, Input, Progress, Scroll Area, Select, Sheet
- Installs with a ReUI Pro or Ultimate license; setup: https://web.dev.reui.io/docs/license-setup

## Best for

Technicians grouped by crew on a half hour day grid, where double booked visits stack into lanes beside Booked and Next Free columns

## Agent notes

- Replace `DEMO_CREWS`, `JOB_TYPES` and `buildDemoJobs` in data.ts; each visit's stage and bar fill come from the fixed `DEMO_NOW_MIN` clock
- `saveJob` books every visit on `ANCHOR` by minutes past midnight, so a job saved after stepping to another day lands on the demo day
- `withinOpeningHours` only checks `DEPOT_OPEN_HOUR` to `DEPOT_CLOSE_HOUR`; a visit outside a technician's `shiftStart` to `shiftEnd` still lands

## When not to use

- A multi week project plan of task lists linked by dependency arrows: use [Project Timeline](https://web.dev.reui.io/blocks/application/gantt/gantt-1.md) (`get_block("gantt-1")`)
- Staff booked for days at a time against a weekly capacity ceiling: use [Resource Capacity](https://web.dev.reui.io/blocks/application/gantt/gantt-4.md) (`get_block("gantt-4")`)

## Third-party libraries

- Sonner v2: [API reference](https://sonner.emilkowal.ski/toast), [docs](https://sonner.emilkowal.ski/getting-started)
- date-fns v4: [docs](https://date-fns.org/v4.1.0/docs/Getting-Started), through ReUI Gantt

## Install

```bash
npx shadcn@latest add @reui/gantt-2
```

## About Gantt blocks

### When to use

- A full page planner whose rows of tasks, people or stages own bars that are dragged, resized and edited
- Schedules that check a rule on every drop: a locked bar, opening hours, upstream order or capacity
- Project roadmaps, one day field dispatch, agent run boards and team capacity plans

### When not to use

- Only the scheduling primitive, to wire into your own layout with no demo rules: use [Gantt](https://web.dev.reui.io/components/gantt.md) (`get_component("gantt")`)
- Deals re-dated on bars beside table, board and calendar views of the same records: use the [CRM blocks](https://web.dev.reui.io/blocks/solutions/crm.md)
- A feed of past activity or milestones that people read rather than reschedule: use the [Timeline blocks](https://web.dev.reui.io/blocks/application/timeline.md)

### Agent notes

- Each block wraps its `Card` in an `h-svh` page with `p-4` padding; remove that wrapper when the board sits inside an app shell
- Every block opens on a fixed 2026 demo day passed to `defaultDate` and builds its bars around it; swap both for today and your records
- Refused drops and saved changes call `toast` from `sonner`, and no block mounts a Toaster; render one in your app or those messages never appear

Every ReUI item has a twin like this one; the index is https://web.dev.reui.io/llms.txt. Agents with the ReUI MCP (https://web.dev.reui.io/docs/mcp) get the same guidance from the getters named above.
