# Plan readiness

A React block (a whole screen) in [Beamline](https://beamline.io/)'s [Manufacturing](https://beamline.io/components/apps/manufacturing) app. Live demo: https://beamline.io/components/plan-readiness

A solar plan on its way to a permit. The design checks (fire setback from the ridge, string voltage in the cold, roof load, eave and rake setbacks, the fire access path) beside the site model, each with what was measured; a failing one shows its panels on the model and is fixed from its row, the plan moving to the next revision, and the plan says it's ready only when every check passes. An engineering review asked for one revision with what's attached and what's asked; once the plan changes, the review is said to cover the old revision and can be asked again. The permit package's sheets and appendices in order, each on or off and moved up or down from its menu, the watermark chosen, its pages counted before it's built; without a watermark it needs every check passing.

## Use it for

- Checking a design against rules before it goes out, with each failure shown where it is.
- Asking for a review of one version and knowing when it no longer covers the current one.
- Assembling a document package from ordered sheets with page counts and a watermark.

## Not for

- The inputs a design is checked against ([design-inputs](https://beamline.io/components/design-inputs)).
- The quote ([solar-quote](https://beamline.io/components/solar-quote)).

## Anatomy

- bar: project, revision and checks failing or ready; Design checks (failing count), Engineering review, Permit package
- checks: each check with what was measured and passes or fails, the chosen failing one with its fix; site model drawn as the roof (shingle courses, ridge cap and gutter named, the ridge setback a hatched band) with each panel as a module with its cells, the chosen check's panels in its tone; panel count and size
- review: what was asked of whom for which revision, attached and asked, waiting; covers an older revision with Ask again; engineer, attach, what to ask and send
- package: sheets and appendices in order with pages, on/off switch and move menu; watermark; not ready without a watermark; pages and Build the package; what was built

## States

- checks failing
- fixed
- ready for permit
- review waiting
- review covers an old revision
- sheet off
- build needs a watermark
- built

## Keyboard

- Tab to a check and Enter to show it on the model
- Space toggles a sheet; its menu moves it

## Props

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `title` (required) | `string` | — | The project, as its title reads. |
| `fileName` (required) | `string` | — | File name the package is built under, before its revision. |
| `defaultChecks` (required) | `DesignCheck[]` | — |  |
| `defaultPanels` (required) | `SitePanel[]` | — |  |
| `panelWatts` (required) | `number` | — | Watts per panel. |
| `defaultRevision` (required) | `number` | — |  |
| `defaultReview` | `ReviewRequest` | — |  |
| `engineer` (required) | `string` | — | The engineer reviews go to, and what can be attached. |
| `attachments` (required) | `string[]` | — |  |
| `defaultSheets` (required) | `PackageSheet[]` | — |  |
| `defaultWatermark` | `Watermark` | — |  |
| `me` (required) | `string` | — | Who is signed in, and today. |
| `today` (required) | `number` | — |  |
| `defaultTab` | `"checks" \| "package" \| "review"` | — |  |
| `defaultSelected` | `string` | — |  |
| `onReviewRequest` | `((r: ReviewRequest) => void)` | — |  |
| `onBuild` | `((o: { sheets: string[]; watermark: Watermark; revision: number; }) => void)` | — |  |
| `className` | `string` | — | Classes on the documented visual root; no override by default. |
| `style` | `CSSProperties` | — | Inline styles on the documented visual root; no overrides by default. |
| `ref` | `Ref<HTMLDivElement>` | — | Receives the documented native target or imperative handle; omitted by default. |

## Built from

- tabs
- button
- switch
- checkbox
- input
- textarea
- [segmented-control](https://beamline.io/components/segmented-control)
- [dropdown-menu](https://beamline.io/components/dropdown-menu)

## Dependencies

`lucide-react`

## Import

```tsx
import { PlanReadiness } from "@beamline/plan-readiness";
```

## Get it

Plan readiness is part of Beamline UI. Install the parts you need in your React app as compiled packages or editable source. [Get Beamline](https://beamline.io/checkout?pack=complete) · [Connect your agent](https://beamline.io/connect)

## More in Manufacturing

- [Shop floor](https://beamline.io/components/shop-floor): A workshop's shop floor at one workstation: each job is a card at its work centre with why it isn't ready said in words (parts short, or the previous…
- [Production plan](https://beamline.io/components/production-plan): A production plan by month: each product's starting stock, forecast demand, replenishment and ending stock, every ending rolling into the next month's…
- [Production and lots](https://beamline.io/components/production-lots): Stock made and stored, with every movement traceable. A batch of a recipe, read as a batch sheet: the recipe, batches (in halves) and day as one sentence…
- [Print scheduler](https://beamline.io/components/print-scheduler): A print shop's production schedule. The week by station: each station's day holds its runs, with a load bar and minutes used against the station's…
- [Design inputs](https://beamline.io/components/design-inputs): What a solar design is checked against, and what the home really uses. Code standards and site conditions (building, electrical and fire codes, wind…
- [Solar quote](https://beamline.io/components/solar-quote): A residential solar quote. The system's price at its rate per watt with adders, discounts and incentives each switched on or off: discounts come off one…
- [Roof layout](https://beamline.io/components/roof-layout): The roof of a solar design. The roof in plan with every face's panels drawn as they lie under its roof type's rules (projected from the slope), each…
- [Electrical design](https://beamline.io/components/electrical-design): The electrical side of a solar design. The existing service set up from a named way of connecting to it (a load-side breaker or a supply-side tap), the…
- [Battery sizing](https://beamline.io/components/battery-sizing): A home battery sized beside its solar. The model and how many with capacity, power and installed price; how it runs (kept full for an outage, storing…
- [Field conditions](https://beamline.io/components/field-conditions): A farm's fields and what each one's conditions are. The fields as a searchable list (each with its outline, crop, area and the layer's value, or Not…
- [Grazing plan](https://beamline.io/components/grazing-plan): Mobs on a grazing rotation, on the farm's map: with a map base, its parcels are the paddocks, each filled by where it stands in the chosen mob's plan (on…
- [Run of show](https://beamline.io/components/run-of-show): One service or event plan's order, run more than once: sections and items with each occurrence's start time in its own column, each item's length dragged…
- [Sound library](https://beamline.io/components/sound-library): A library of sounds (or any media a person auditions before using): a search by words and #tags with facets as filters, a live "3 filters · 12 results"…
- [Tag manager](https://beamline.io/components/tag-manager): Tags for one or several items at once (sounds, photos, documents). Nested tag groups are edited in place (rename, new tag), and a folded group still says…

Part of [Beamline UI: polished, editable React components and complete screens for custom applications](https://beamline.io/). [Build your own style from any look; tokens, fonts, radii, motion; not only colours](https://beamline.io/docs/customize).
