> ## Documentation Index
> Fetch the complete documentation index at: https://developers.reintersect.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Recipes

> Ready-made block types for common jobs, built only from catalog components.

> Reintersect apps are in developer preview. Names and limits can still change before general
> release.

Recipes cover common jobs such as approvals, polls and deployments, so you don't have to build those
blocks yourself. Each recipe is a block factory from `@reintersect/sdk/recipes` that returns a
complete block type, with its props, state, actions and view, built only from the
[component catalog](/components/overview). Call the factory with a block `type`, add the result to
your app, and insert it like any block you wrote yourself:

```tsx src/app.ts theme={null}
import { createReintersectApp } from "@reintersect/sdk/app";
import { poll } from "@reintersect/sdk/recipes";

export const LunchPoll = poll({
  type: "lunch-poll",
  title: "Lunch poll",
  choices: ["pizza", "sushi", "salad"],
  choiceLabels: { pizza: "Pizza", sushi: "Sushi", salad: "Salad" },
});

export const app = createReintersectApp({ name: "Lunch" }).addBlock(LunchPoll);
```

Every factory takes:

| Option | Description |
| - | - |
| `type` | The block type, unique in your app. |
| `title`, `description`, `icon`, `insertable`, `reopenable`, `staleAfter` | As on [`defineBlock`](/blocks/overview#options). Each recipe sets its own default title, icon and `insertable`. |
| `labels` | Overrides for the recipe's English copy, such as button labels and summaries. |

The result is an ordinary block definition, so `.insert(props, { state })`,
`reintersect.blocks.update(LunchPoll, …)` and the [testing kit](/testing) work with it. Each recipe
also exports its props and state schemas (for example `PollPropsSchema` and `PollStateSchema`), so
your own code can build valid values.

On the Effect entry, import the same factory names from `@reintersect/sdk/effect/recipes`. Recipe
schemas are Effect Schemas in both entries, even when the rest of your app describes its blocks with
Zod.

Recipes follow the same rules as your own blocks: they choose structure, numbers and states, and
Reintersect decides spacing, emphasis, size and colour. The first button in a recipe's `Actions` that
isn't destructive is its primary button, so each recipe orders its buttons with that in mind.

## Available recipes

<Columns cols={2}>
  <Card title="Approval" icon="shield-check" href="/recipes/approval">
    Named approvers approve or reject; either decision locks the block.
  </Card>

  <Card title="Poll" icon="chart-bar" href="/recipes/poll">
    Single or multiple choice with live counts and a close button.
  </Card>

  <Card title="RSVP" icon="calendar" href="/recipes/rsvp">
    Going, maybe or can't go, with a headcount and optional capacity.
  </Card>

  <Card title="Checklist" icon="list-checks" href="/recipes/checklist">
    A shared list anyone can tick off, with progress.
  </Card>

  <Card title="Deployment" icon="rocket" href="/recipes/deployment">
    Steps and status your pipeline pushes, with cancel and retry.
  </Card>

  <Card title="Incident" icon="triangle-alert" href="/recipes/incident">
    From investigating to resolved, with an update form.
  </Card>

  <Card title="Ticket" icon="ticket" href="/recipes/ticket">
    Status, priority, tags and assignee; works as a reference block.
  </Card>

  <Card title="Metrics panel" icon="chart-bar" href="/recipes/metrics-panel">
    Headline metrics and a chart per time range.
  </Card>
</Columns>

## Reading the source

Each recipe is about 200 lines of plain components in
[`packages/sdk/src/recipes`](https://github.com/reintersect/reintersect/tree/dev/packages/sdk/src/recipes).
When a recipe is close to what you need, copy its view into your own `defineBlock` and change it. The
exported view components, such as `PollView`, take the same props and handles the recipe passes.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.