Make it yours
npx shadcn@latest add https://elabs-ai.com/r/market-desk-page.jsonPaste it into Claude Code, Cursor, Codex or any other coding agent. Text in [brackets] is yours to fill in.
Add the brand-ui template "Market Desk" (market-desk-page) to this project — a whole screen copied into the app, built from registry blocks and the @elabs-ai/components-* packages. A rate desk at a logistics company prices container lanes for the week. The trader watches the tape, picks a lane from the watchlist and commits boxes on a ticket that checks the desk limit before anything is placed. 1. Read https://elabs-ai.com/llms.txt first: it maps every package and the rules. If you can use MCP servers, connect https://elabs-ai.com/mcp and use its search, docs and tokens tools. If not, run the same lookups in the terminal: `npx -y @elabs-ai/components-cli search "<what you need>"` and `npx -y @elabs-ai/components-cli docs <Component>`. 2. Make sure the base is in place: `pnpm add @elabs-ai/components-tokens @elabs-ai/components-ui` (or `npm install @elabs-ai/components-tokens @elabs-ai/components-ui`), then the packages the template imports: @elabs-ai/components-charts, @elabs-ai/components-data, @elabs-ai/components-icons, @elabs-ai/components-tokens, @elabs-ai/components-ui. If this is the first brand-ui package in the project, wire it once: import `@elabs-ai/components-tokens/styles.css` plus the `themes/light.css` and `themes/dark.css` stylesheets in the CSS entry, add one Tailwind `@source` line per installed @elabs-ai package (Tailwind does not scan node_modules, so without it everything renders unstyled), and wrap the app root in `ThemeProvider` from `@elabs-ai/components-tokens`. 3. Copy the template in with `npx shadcn@latest add https://elabs-ai.com/r/market-desk-page.json` — it brings its blocks with it (command-center-market-tape-01, workspace-shell); if that url does not answer, copy the folders from https://github.com/mreimitz/elabs-components/tree/main/registry/blocks instead. 4. Mount the page at a route, keep its `WorkspaceShell` frame, and replace the seeded data with ours: [the route, the real data source, and what should change from the template] 5. Rules: use only @elabs-ai/components-* components and the semantic tokens — no raw colours, no raw font sizes, no arbitrary Tailwind values. Look up each component's real props with the docs tool before you use it; never guess a prop. 6. Done means: the typecheck passes, `npx -y @elabs-ai/components-cli audit src --strict` reports nothing, and you have opened the app and looked at every screen you touched in the light and the dark theme.
What each view shows
The screens the navigation names, one line each.
- Market
- The tape: every lane's last price, move and twenty-day trend.
- Watchlist
- The lanes this desk trades; a row puts its lane on the ticket.
- Charts
- One lane in full — closes, volume, the desk's own marks.
- Orders
- The blotter: what went in today, at what price.
- Positions
- What the desk holds per lane and what it is worth now.
- Limits
- Ticket and book limits, and who signs above them.
- Research
- Notes and forecasts the desk writes for itself.
Try it on the screen above: Pick a lane in the watchlist, enter boxes on the ticket, review and place the order — it lands in the blotter, and a ticket over the limit is refused with the reason.
What it is made of
The blocks and packages the template composes — each has its own page. Copy the template and you copy the blocks with it.
2 blocks
Where is the market, and what moved it?
A rate desk: a tape of lanes across the top with price, move and a 20-day Sparkline each, over a CandlestickChart of the index and a BarChart of daily volume. Every move carries an arrow and a sign as well as a colour; the chart title is computed from the first open and the last close.