Skip to main content

Customer 360

Customers

For account, success and CRM products

An account manager opens one account five minutes before the call. Health, usage against the contract, next actions and the people are on one screen, and the brief in the dock says what changed since last time.

Make it yours

npx shadcn@latest add https://elabs-ai.com/r/customer-360-page.json

Skipping the @source line is the most common first failure: Tailwind does not scan node_modules, so every component renders unstyled. The one-time wiring

Prompt for your coding agent

Paste it into Claude Code, Cursor, Codex or any other coding agent. Text in [brackets] is yours to fill in.

Add the brand-ui template "Customer 360" (customer-360-page) to this project — a whole screen copied into the app, built from registry blocks and the @elabs-ai/components-* packages. An account manager opens one account five minutes before the call. Health, usage against the contract, next actions and the people are on one screen, and the brief in the dock says what changed since last time.

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-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/customer-360-page.json` — it brings its blocks with it (score-explanation-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.

Home
The book of accounts and what needs attention.
Accounts
One account: metrics, usage, health, actions, people.
People
Every contact and the relationship gap.
Renewals
What renews when, and its risk.
Deals
Open expansion and renewal deals.
Tickets
Open support tickets on the account.
Documents
Contracts and order forms.

Try it on the screen above: Complete a next action in place and open the account brief in the dock; the health score explains itself when opened.

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

Why is the score 91?

A scored decision decomposed into its signals: one row per signal, a signed bar whose length is the contribution in points and whose direction is the sign — ink for positive, the warning rung for negative, each with a signed number so the sign never rides on colour. One shared zero-based scale; the footer states how many weaker signals were considered but not shown.

3 examples
workspace-shellThe frame every full-screen template sits in.