# Audit room

A React block (a whole screen) in [Beamline](https://beamline.io/)'s [Government & legal](https://beamline.io/components/apps/government-legal) app. Live demo: https://beamline.io/components/audit-room

A compliance audit seen by the company preparing it or by the auditor reviewing it. Evidence keeps the company's readiness (not ready, flagged, ready for audit, not applicable) apart from the auditor's assessment (not reviewed, accepted, returned); a new version goes back to Not reviewed, a missing file is flagged, restricted evidence keeps its contents out, and the conversation says which version each comment was on and who sees it (team-only comments never reach the auditor). Controls show their owner or Unassigned, frameworks, and linked evidence at the version linked (a newer one says the link is stale, with Link vN); the definition is the company's. Scope lists resources by integration in or out of scope with the reason or No reason given; an auditor asks instead of editing; an integration that can't be read says so. Risks: dated snapshots shared with the auditor never change when the live register does (missing measures said, restricted records closed), with export. Vendors keep risk ratings and review status apart; an absent score is Not assessed, never Low, and a vendor never reviewed says so. Progress counts what the auditor accepted; nothing calls the company certified. The evidence list says one state per row (returned, file missing, not ready, with the auditor or to review, accepted, not applicable) and groups it by who has the next move, each side's work first; the header's bar splits the evidence into accepted, with the auditor and still to do. A comment is written on demand; the open item names the controls it covers.

## Use it for

- Preparing a compliance audit (SOC 2, ISO 27001) with evidence, controls, scope, risks and vendors in one place.
- An auditor's read-only-but-commenting view of the same audit.

## Not for

- A general document approval flow ([document-review](https://beamline.io/components/document-review)).
- A log of system events ([audit-log](https://beamline.io/components/audit-log)).

## Anatomy

- header: <framework> audit, the period and the view (Preparing or Auditor view), progress as accepted of applicable evidence, the five areas
- evidence: rows with readiness, assessment and version; the open item's owner, controls, readiness and assessment apart, restricted or no-file notes, actions by role, the conversation with version and audience
- controls: rows with owner and linked count; the open control's owner, frameworks, linked evidence with assessment or stale version and relink, Link evidence
- scope: each integration with in-scope counts and connection date, resources by type with their scope, reason or No reason given, Ask about scope for an auditor
- risks: Snapshot (captured, shared) or Live register, export, the immutability note, the register table with missing measures and restricted rows
- vendors: Needs review, Unscored, Out of scope, All with counts; the table with inherent and residual ratings (Not assessed), review status, last reviewed (Never reviewed)

## States

- owner, reviewer
- evidence not ready, flagged, ready, not applicable; not reviewed, accepted, returned; no file; restricted; new version
- control unassigned, no evidence, stale link
- resource in or out of scope, no reason given, integration unavailable
- snapshot chosen, live register edited, measure missing, restricted record, exporting, exported, no shared snapshots
- vendor unscored, needs review, up to date, out of scope, never reviewed
- narrow room: lists above details, tables scroll

## Keyboard

- Tab through the areas, rows and actions
- rows open with Enter; switches and selects are standard

## Motion

Badges ease their colours when a state changes. Nothing runs at rest.

## Props

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `framework` (required) | `string` | — | "SOC 2 Type II". |
| `period` (required) | `{ from: string; to: string; }` | — | The audit period, ISO dates. |
| `role` (required) | `AuditRole` | — |  |
| `me` (required) | `string` | — | The person writing comments. |
| `evidence` | `Evidence[]` | — |  |
| `defaultEvidence` | `Evidence[]` | — |  |
| `onEvidenceChange` | `((evidence: Evidence[]) => void)` | — |  |
| `controls` | `Control[]` | — |  |
| `defaultControls` | `Control[]` | — |  |
| `onControlsChange` | `((controls: Control[]) => void)` | — |  |
| `integrations` | `Integration[]` | — |  |
| `defaultIntegrations` | `Integration[]` | — |  |
| `onIntegrationsChange` | `((integrations: Integration[]) => void)` | — |  |
| `snapshots` | `RiskSnapshot[]` | — |  |
| `risks` | `Risk[]` | — | The live risk register (the company's). |
| `defaultRisks` | `Risk[]` | — |  |
| `onRisksChange` | `((risks: Risk[]) => void)` | — |  |
| `onExportSnapshot` | `((snapshot: RiskSnapshot) => Promise<string>)` | — | Exports a snapshot; resolve with the file's name. |
| `vendors` | `Vendor[]` | — |  |
| `area` | `AuditArea` | — |  |
| `defaultArea` | `AuditArea` | — |  |
| `onAreaChange` | `((area: AuditArea) => void)` | — |  |
| `defaultEvidenceId` | `string` | — |  |
| `defaultControlId` | `string` | — |  |
| `locale` | `string` | — |  |
| `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

- [segmented-control](https://beamline.io/components/segmented-control)
- badge
- button
- select
- switch
- [number-field](https://beamline.io/components/number-field)
- textarea
- [chip-group](https://beamline.io/components/chip-group)

## Dependencies

`lucide-react`

## Import

```tsx
import { AuditRoom } from "@beamline/audit-room";
```

## Get it

Audit room 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 Government & legal

- [Permit application](https://beamline.io/components/permit-application): A permit application filled in over several sittings on a city's portal. Steps with how many answers each still misses; the draft saved as you go and…
- [Permit services](https://beamline.io/components/permit-services): Where a permit starts on a city's permitting portal. The work's address resolved to the city (its permits are here) or the county around it (that office…
- [Permit fees](https://beamline.io/components/permit-fees): An applicant's permit fees on a city's portal. What's owed across how many permits and how much of it is overdue; every unpaid invoice with its permit…
- [Permit record](https://beamline.io/components/permit-record): A submitted permit seen by the applicant. The overview leads with what's waiting on them: the corrections to answer before the next version goes in, each…
- [Parcel record](https://beamline.io/components/parcel-record): A property's parcel on a permitting portal. The lot drawn to scale as a site plan: the street, the property lines with their lengths, the dashed setback…
- [Document review](https://beamline.io/components/document-review): A PDF going through review: the document in the viewer with every comment pinned to its place, the reviewers' threads beside it (open or resolved, one…
- [Signing request](https://beamline.io/components/signing-request): A document sent for signature, its signature page drawn in miniature with each side's block in order. Sides sign as numbered stages that move earlier or…
- [Playbook check](https://beamline.io/components/playbook-check): A document's changes checked against a versioned playbook (a rulebook of what's acceptable). Each change shows what it was and is now, then two records…
- [Agency book](https://beamline.io/components/agency-book): An insurance agency's book in two places. Estimated commission: the report named an estimate (not received or earned), as of a time; each source system…
- [Applicant company](https://beamline.io/components/applicant-company): A contractor's company on a permitting portal. Its identity with the licence and insurance it applies under, each said valid, expiring within 60 days…
- [Applicant projects](https://beamline.io/components/applicant-projects): An applicant's permits on a city's portal in one place. Projects through saved views (theirs, their company's, expiring within 30 days) and a search…
- [Lease renewals](https://beamline.io/components/lease-renewals): Leases coming up for renewal. The window leads: every tracked lease placed on the days ahead at its end date, coloured by whose step it is (yours, the…
- [Queue display](https://beamline.io/components/queue-display): The screen in a waiting room, read from across the room. It draws only a public projection of the queue (ticket codes and counters, never a name or a…
- [Visitor journey](https://beamline.io/components/visitor-journey): A visitor's way into a walk-in queue, on their phone. Branches first: each card names its address, whether it's open (until when, closing soon, full, or…

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).
