# Courier droid

A compact floor-running service bot with controlled heading, front-wheel steering, tread travel, antennas, and cargo modules.

> For the complete index, see [llms.txt](https://robocn.dev/llms.txt). A Markdown version of any page is available by appending `.md` to its URL or by sending an `Accept: text/markdown` header.

## Install

```bash
bunx --bun shadcn@latest add https://robocn.dev/r/courier-droid.json
```

Registry item: `courier-droid` · [`https://robocn.dev/r/courier-droid.json`](https://robocn.dev/r/courier-droid.json)

## Notes

- Plan view is the identity projection, heading included. The four wheels become cylinders, and the body, cargo module and antenna gain their heights, as the camera comes down off the vertical.
- Heading rotates the complete chassis while steering affects only the front axle.
- Travel changes clipped tread marks without creating an internal animation loop.

## Usage

```tsx
import { CourierDroid } from "@/components/ui/courier-droid"

<CourierDroid heading={28} steering={18} travel={0.4} cargo="pod" antenna="dish" />
```

## Props

| name | type | default | description |
| --- | --- | --- | --- |
| `view` | `"plan" | "front" | "profile" | "iso"` | `"plan"` | Where the camera stands. One droid, four projections: straight down, straight on, side elevation, or three-quarter from above. |
| `heading` | `number` | `0` | Controlled chassis heading in degrees; values may make multiple turns. |
| `steering` | `number` | `0` | Front-wheel steering in degrees, clamped to −45..45. |
| `travel` | `number` | `0` | Wrapped tread phase; whole-number turns render identically. |
| `cargo` | `"none" | "pod" | "crate" | "tools"` | `"none"` | Module secured to the top deck. |
| `antenna` | `"whip" | "dish" | "none"` | `"whip"` | Communications hardware on the rear deck. |
| `behavior` | `"deliver" | "patrol" | "pointer" | "static"` | `"deliver"` | Deliver drives straight legs and square corners; patrol runs a tighter version of it; pointer comes round to face the cursor. |
| `speed` | `number` | `0.25` | Legs of the route per second. |
| `animate` | `boolean` | `true` | Off parks the machine at phase and stops rendering. A reduced-motion preference does the same. |
| `paused` | `boolean` | `false` | Freeze where it stands. |
| `phase` | `number` | `0` | Seconds of offset, so a row of machines breaks step. |
| `interactive` | `boolean` | `true` | It turns to face the pointer while the pointer is over it. |
| `variant` | `"solid" | "outline" | "blueprint" | "wire"` | `"solid"` | How the machine is painted. Geometry never changes between variants. |
| `size` | `"xs" | "sm" | "md" | "lg" | "xl" | number` | `"md"` | Rendered width in pixels, or a step on the scale. |
| `showGround` | `boolean` | `true` | Draw the contact line or shadow beneath the droid. |
| `signal` | `"idle" | "ready" | "warning"` | — | Status-lamp state using neutral, accent, or shell colour; each component documents its visual default in the demo. |
| `label` | `string` | — | Optional technical caption under the drawing. |
| `color` | `string` | `var(--robot-shell)` | Body panels — the colour the machine reads as. |
| `accent` | `string` | `var(--robot-accent)` | Status colour: tip light, live tool, readouts. |
| `metal` | `string` | `var(--robot-metal)` | Bare machined parts: collars, bolts, tool bodies. |
| `dark` | `string` | `var(--robot-dark)` | Cast joints, base, shadow side. |
| `palette` | `Partial<RobotPalette>` | — | Override any subset of roles at once, including glow and grid. |

## Source

- `src/components/ui/courier-droid.tsx`
