Skip to main content
Exemplar page — first pass, entirely proposal. No audited Invoca screen backs this page — Titan’s design library was not available while writing it. It is built from general interaction-design practice and from the constraints Views overview and CRUD: Create already establish. Treat every constraint below as a starting point to check against real product screens, not as a rule already enforced.

What it is

A page whose entire body is one form, committed once — new campaign, integration settings, a routing rule with several independent fields. It’s the surface CRUD: Create’s tree lands on when an object is permanent enough to earn its own page and dense enough that a modal can’t hold it, but its sections don’t depend on each other in order. It’s also CRUD: Update’s surface for the same object once it already has data. You’re building one if the page’s job is “capture everything, then commit.” A page whose sections must be visited in a fixed order is a Wizard, not this.

Region vocabulary

This archetype adds no regions. It uses the page frame as published. One addition is worth naming even though it isn’t a frame region: when the form has several independent sections, this archetype resolves CRUD: Create: TITAN-CREATE-03’s “a Table of Contents” into a concrete in-page anchor nav — see Contents — the form below.

Choose this view when

  • The object is permanent — it gets its own page and URL after this — per CRUD: Create’s Permanence axis.
  • It needs more room than a modal — several fields, or several sections — per that same tree’s Density axis.
  • Those sections don’t depend on each other in a fixed order. A reader could fill them in any sequence and the form would still make sense.

Choose something else when

Regions

What fills each region

Header — Left

Header — Right

Right is typically empty, or holds a secondary action that doesn’t commit the page — something like “Preview,” never Save. The page-level Save and Cancel belong in Footer, not here. This is worth stating directly because it’s the most common instinct to violate: a form’s primary commit reads, at a glance, like a page-level action, and Right is where page-level actions live per TITAN-VIEW-03. But Right sits above a form the reader hasn’t finished filling in — a Save button there implies the commit is available before the page’s own footer says it is, and it’s out of reach once the reader has scrolled past the header on a long form. The footer is anchored (or reachable) at the point where the reader has actually finished, which is the only point committing should be possible.

Contents — the form

The form is the whole body. When it has several independent sections, Contents carries both the sections and a way to move between them — resolving what CRUD: Create: TITAN-CREATE-03 already states (“a form with several independent sections is one page with a Table of Contents, not a Wizard”) into a concrete answer. Why an anchor nav rather than tabs. Tabs show one section and hide the rest, which is the sectioned-but-not-sequential case the frame already reserves for a different signal — a tab bar means “this page has sections of its own subject,” and here the sections are all one object being authored together, not separate views of it. An anchor nav keeps every section visible on scroll, which also means Form validation’s “surface every invalid field” guidance never has to reveal a hidden tab to show an error — nothing is ever hidden in the first place. The default trailing-only arrangement per Views overview: Footer — Cancel and the commit action, commit last, per TITAN-VIEW-09 and TITAN-VIEW-10. This archetype is a single unit of work, not a step in a sequence, so the leading-and-trailing arrangement with a Back action doesn’t apply here — that’s Wizard’s footer, not this one.

Responsive and density behavior

Titan is desktop-first — most surfaces live at lg and xl, and xs/sm are rarely exercised (see Layout & grid). What follows is proposed with that in mind.
The anchor nav is a convenience, not a route. Per TITAN-VIEW-07, a region dropped or collapsed at a narrow viewport is never the only path to a function — scrolling reaches every section with or without the nav, so collapsing it costs navigation speed, not access.

Accessibility

The page-level decisions are the frame’s, and they apply unchanged — see Views overview → Accessibility. One main, one h1 on Title, region order matching visual order. What is specific to this archetype:
  • Each section heading is a real heading, descending from Title’s h1 without skipping a level, so a screen-reader user outlining the page sees the same structure the anchor nav exposes visually.
  • The anchor nav is a navigation landmark with an accessible name — “Form sections,” not “Navigation” — and its links move focus to the target section’s heading, not just scroll position, so a keyboard or screen-reader user lands somewhere announced.
  • An invalid field is never hidden from view. Because every section renders on scroll rather than behind a tab or a step, Form validation’s error-surfacing guidance never has to additionally reveal a hidden section — the field is already visible or one scroll away.
  • The commit button’s disabled or loading state is announced, per Form validation’s general rule for a page-level submit — a screen-reader user waiting on a long form’s submission needs the same feedback a sighted user gets from the button’s own state.

Constraints

Composed example

No live embed exists yet. Per this page’s own rule, a composed example should be a real screen or a live embed rather than a static image — the diagram below is structural (region names and what’s in them, no measurements or visual styling) for that reason, the same way every Structure diagram in Patterns is. Replace it with a live embed the first time this archetype is built.

Why it works this way

Independent sections stay on one page because hiding them costs more than scrolling does. Tabs and steps both imply an order or a boundary the reader has to reason about — which section am I on, is there another one, did I finish it. A form whose sections don’t depend on each other has none of that structure to communicate, so hiding them behind a control that implies structure teaches the reader a relationship that isn’t there. An anchor nav gives the same fast-access benefit — jump to Budget without scrolling past Overview — without pretending the sections are anything but parts of one form. The commit lives in the footer, not the header, because the header is available before the form is finished and the footer is not. A Save button in Right is reachable from the moment the page loads, on a form that isn’t valid yet. The footer’s presence at the end of the scroll — or its stickiness, where the page uses one — matches the commit’s own precondition: there’s something to commit only once the reader has gotten there.
Last modified on September 2, 2026