---
url: "https://vueda.dev/v3/reference/theming/keys/family/views.md"
title: "views keys"
---

# views keys

Source file: `client/lib/theme/vueda-tailwind/views/index.js`

## Action banner meta keys

| Component | Kind | Slots | Description |
| --- | --- | --- | --- |
| [_ActionBanner](/v3/reference/theming/keys/_ActionBanner.md) | primitive | 5 | Shared banner row scaffold: icon tile plus body column with a bottom separator. |

## Action forms

| Component | Kind | Slots | Description |
| --- | --- | --- | --- |
| [ActionForm](/v3/reference/theming/keys/ActionForm.md) | key | 21 | Outer wrapper. Caps content at the `7xl` content column so a confirmation form does not stretch the full width of a wide viewport. With `page`, the cap moves to [ActionForm.content](/v3/reference/theming/keys/ActionForm.md#theme-key-ActionForm-content), so the sticky action bar spans the page. |
| [ModelActionForm](/v3/reference/theming/keys/ModelActionForm.md) | key | 26 | Outer wrapper. Empty so the card or bare slot owns all visible chrome; layout decisions belong to whichever inner shell the form renders. |
| [ViewDestroy](/v3/reference/theming/keys/ViewDestroy.md) | key | 6 | Outer wrapper. Empty; the embedded [ModelActionForm](/v3/reference/theming/keys/ModelActionForm.md) renders the page in its danger tone: the sticky action bar, the gutter, and the selected-records panel. |

## Authentication forms

| Component | Kind | Slots | Description |
| --- | --- | --- | --- |
| [AuthForm](/v3/reference/theming/keys/AuthForm.md) | key | 7 | Outer wrapper that fills the viewport vertically so the framed card can sit against the page background without a separate page chrome. |
| [AuthorizingForm](/v3/reference/theming/keys/AuthorizingForm.md) | key | 7 | Outer wrapper that fills the viewport and centers the framed card both axes. Uses `min-h-svh` rather than `min-h-full` so the fill works regardless of whether an integrator's shell gives this component's ancestors an explicit height; it never depends on a height cascade it does not control. Differs from [AuthForm.root](/v3/reference/theming/keys/AuthForm.md#theme-key-AuthForm-root) which flows top-aligned; the consent step is short enough that a vertically centered card reads as a focused decision surface. |

## List views

| Component | Kind | Slots | Description |
| --- | --- | --- | --- |
| [ViewList](/v3/reference/theming/keys/ViewList.md) | key | 15 | Class forwarded to the `selected_` checkbox column on the embedded [ObjectsGrid](/v3/reference/theming/keys/ObjectsGrid.md). Collapses the column to `w-0` at the `lg+` table breakpoint so card layouts keep room for the selection toggle while the table layout absorbs it into the row chrome. The breakpoint is hard-coded rather than derived from the `tableBreakpoint` prop because Tailwind purges classes it cannot see at build time; keep this aligned with the prop default. |
| [ViewHistoryList](/v3/reference/theming/keys/ViewHistoryList.md) | key | 23 | Outer wrapper. Empty by default; the meta strip, embedded grid, and empty-state card own all visible chrome so the wrapper stays a layout-only anchor. |

## CRUD views

| Component | Kind | Slots | Description |
| --- | --- | --- | --- |
| [DetailView](/v3/reference/theming/keys/DetailView.md) | key | 4 | Outer wrapper. Layout-only; PageTitle, the StickyBar, and the body below own the visible chrome, so this stays empty by default. The `class` prop merges here. |
| [ViewCreate](/v3/reference/theming/keys/ViewCreate.md) | key | 2 | Outer wrapper. Layout-only; PageTitle, the StickyBar, and the form body below own the visible chrome, so this stays empty by default. The `class` prop merges here. |
| [ViewRead](/v3/reference/theming/keys/ViewRead.md) | key | 4 | Outer wrapper. Layout-only; PageTitle, the StickyBar, and the body below own the visible chrome, so this stays empty by default. |
| [ViewUpdate](/v3/reference/theming/keys/ViewUpdate.md) | key | 4 | Outer wrapper. Layout-only; PageTitle, the StickyBar, and the form body below own the visible chrome, so this stays empty by default. The `class` prop merges here. |

## System views

| Component | Kind | Slots | Description |
| --- | --- | --- | --- |
| [ViewLoading](/v3/reference/theming/keys/ViewLoading.md) | key | 13 | Centers the loading status within the route container. |
| [ViewNotFound](/v3/reference/theming/keys/ViewNotFound.md) | key | 2 | Centering wrapper around the embedded [SystemMessageCard](/v3/reference/theming/keys/SystemMessageCard.md). The card chassis is fixed-width, so a flex parent is required for it to sit in the middle of the viewport. Mirrors [ViewLoading.root](/v3/reference/theming/keys/ViewLoading.md#theme-key-ViewLoading-root). |
| [ViewActionNotFound](/v3/reference/theming/keys/ViewActionNotFound.md) | key | 2 | Centering wrapper around the embedded [SystemMessageCard](/v3/reference/theming/keys/SystemMessageCard.md). See [ViewNotFound.root](/v3/reference/theming/keys/ViewNotFound.md#theme-key-ViewNotFound-root); the two views share the recipe so missing-route and missing-action surfaces read as siblings. |

## Workflow views

| Component | Kind | Slots | Description |
| --- | --- | --- | --- |
| [ViewAction](/v3/reference/theming/keys/ViewAction.md) | key | 1 | Outer wrapper around the embedded [PageTitle](/v3/reference/theming/keys/PageTitle.md) and [ModelActionForm](/v3/reference/theming/keys/ModelActionForm.md). Empty by default; the two inner shells own all visible chrome, so this key exists only as the consumer-facing override surface and the data-qa anchor. |
| [ViewActivate](/v3/reference/theming/keys/ViewActivate.md) | key | 1 | Outer wrapper around the embedded [PageTitle](/v3/reference/theming/keys/PageTitle.md) and the activate-flow [ModelActionForm](/v3/reference/theming/keys/ModelActionForm.md). Empty by default; the chrome lives on the inner shells. The view also renders a centred `LoadingSpinnerBlock` while [ModelActionForm](/v3/reference/theming/keys/ModelActionForm.md)'s model config loads; that fallback inherits its own block recipe and is not themed here. |
| [ViewDeactivate](/v3/reference/theming/keys/ViewDeactivate.md) | key | 1 | Outer wrapper around the embedded [PageTitle](/v3/reference/theming/keys/PageTitle.md) and the deactivate-flow [ModelActionForm](/v3/reference/theming/keys/ModelActionForm.md). Empty by default; the chrome lives on the inner shells. The view also renders a centred `LoadingSpinnerBlock` while [ModelActionForm](/v3/reference/theming/keys/ModelActionForm.md)'s model config loads; that fallback inherits its own block recipe and is not themed here. |

## Authentication workflows

| Component | Kind | Slots | Description |
| --- | --- | --- | --- |
| [ViewTwoFactorAuth](/v3/reference/theming/keys/ViewTwoFactorAuth.md) | key | 5 | Outer wrapper. Empty; the embedded [AuthorizingForm](/v3/reference/theming/keys/AuthorizingForm.md) owns the framed card and viewport-centred chrome, so this key is left open as the consumer-facing override surface. |
| [ViewSetupDevice](/v3/reference/theming/keys/ViewSetupDevice.md) | key | 13 | Horizontal stepper rail above the form body. `mb-4` opens a 16 px gap between the rail and the first field so the progress indicator reads as supporting chrome, not the form's leading row. Used as the `<ol>` element so screen readers see the steps as a list; the consumer supplies `aria-label="Setup progress"`. |

## Workflow transitions

| Component | Kind | Slots | Description |
| --- | --- | --- | --- |
| [ViewExecuteTransition](/v3/reference/theming/keys/ViewExecuteTransition.md) | key | 1 | Outer wrapper around the embedded [PageTitle](/v3/reference/theming/keys/PageTitle.md) and [ModelActionForm](/v3/reference/theming/keys/ModelActionForm.md). Empty by default; the two inner shells own all visible chrome, so this key exists only as the consumer-facing override surface and the data-qa anchor. |

## Recovery codes

| Component | Kind | Slots | Description |
| --- | --- | --- | --- |
| [ViewRecoveryCodes](/v3/reference/theming/keys/ViewRecoveryCodes.md) | key | 12 | Outer wrapper. Empty; the embedded [AuthForm](/v3/reference/theming/keys/AuthForm.md) owns the framed card chassis, and the slots inside it own all visible chrome. |
