# Project With Cover block

> Create project dialog with cover image upload and status, priority, assignee, and label comboboxes

Modal new-project form with drag-and-drop cover upload, name, key, brief fields, single-select status and priority plus multi-select assignee and label comboboxes. Dialog, Combobox, Avatar, Tooltip, Alert. Add project, create workspace.

- Type: Pro block
- Category: [Dialog](https://web.dev.reui.io/blocks/application/dialog.md)
- Page: https://web.dev.reui.io/blocks/application/dialog/dialog-9
- Docs (Base UI): https://ui.shadcn.com/docs/components/base/dialog.md
- Docs (Radix UI): https://ui.shadcn.com/docs/components/radix/dialog.md
- MCP: `get_block("dialog-9")`
- Built with: Alert, Avatar, Button, Checkbox, Combobox, Dialog, Field, Input, Item, Scroll Area, Textarea, Tooltip
- Installs with a ReUI Pro or Ultimate license; setup: https://web.dev.reui.io/docs/license-setup

## Best for

A project form under a drag and drop cover image capped at 5 MB, where Create needs a name and at least 1 assignee

## Agent notes

- Replace `PROJECT_ASSIGNEES`, `PROJECT_LABEL_OPTIONS` and the picsum `DEFAULT_PROJECT_COVER` in data.tsx with your team, labels and stored cover
- `ProjectCoverUpload` is rendered without `onImageChange`, so a picked cover never reaches the form; pass it and keep the `File` in state
- `AddProjectDialog` seeds `projectName`, `projectKey` and `projectSummary` with demo text in `useState`; start them empty for a new project

## When not to use

- A full screen create view that a template prefills, with label checkbox cards: use [Project Templates](https://web.dev.reui.io/blocks/application/dialog/dialog-13.md) (`get_block("dialog-13")`)
- A meeting form in the page with members, a day and start and end times: use [Create Schedule](https://web.dev.reui.io/blocks/application/schedule/schedule-6.md) (`get_block("schedule-6")`)

## Install

```bash
npx shadcn@latest add @reui/dialog-9
```

## About Dialog blocks

### When to use

- New record forms over the current page: a project, a quick task or entry, or a finance account
- Access flows: email invites with a role, an app picker and the consent step before a sync
- Pickers and account tasks: a time span, a starter template, settings, a checklist, cancellation or help

### When not to use

- A plain modal shell you fill with your own title, body and buttons: use [Dialog](https://web.dev.reui.io/components/dialog.md) (`get_component("dialog")`)
- A data entry layout that sits in the page itself rather than over it: use the [Form blocks](https://web.dev.reui.io/blocks/application/form.md)
- A one question confirm, such as deleting a record, with nothing to fill in: use [Alert Dialog](https://web.dev.reui.io/components/alert-dialog.md) (`get_component("alert-dialog")`)

### Agent notes

- Each root renders its own launch `Button` and starts `open` as true in `useState`; swap in your trigger and start it closed
- Primary actions only close through `setOpen`, fire a sonner `toast` or have no handler; wire your submit and API call there
- Each page.tsx centers the root in a `min-h-svh` main with an `sr-only` h1; mount only the root component inside your page

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.
