← HaTchi-MaXchi

Record full page

The owned-URL home for a record after a drawer peek. Same asset as the drawer hypermedia peek (Aurora Substation), but a full document: KPI grid, tabs, activity, and primary actions — shareable, refreshable, Back-friendly. Peek is GET ?peek=1 fragment; this page is GET /records/{id}.

Composed of: stack · cluster · auto-grid · card · badge · button · alert · tabs

Open full page ↗
Page source — the whole page is the snippet
html
<main class="stack" data-gap="lg">
  <p class="hm-demo-muted" style="margin:0"><a href="../#drawer">← Gallery · Drawer</a> · full page (not a widened drawer)</p>
  <div class="cluster" data-justify="between">
    <div>
      <div class="card-label">Asset</div>
      <h1 style="margin:0.25rem 0 0;letter-spacing:-0.02em">Aurora Substation</h1>
    </div>
    <div class="cluster" data-gap="sm"><span class="badge" data-tone="success"><span class="badge-icon"><svg class="icon" aria-hidden="true"><use href="#i-circle-check"/></svg></span>Online</span><button type="button" class="button" data-variant="outline"><svg class="icon" aria-hidden="true"><use href="#i-clipboard-list"/></svg>Work orders</button><button type="button" class="button" data-variant="primary">Edit asset</button></div>
  </div>
  <div class="auto-grid" style="--grid-min:11rem">
    <div class="card card-body">
      <div class="card-label">Region</div>
      <div class="card-value">North</div>
      <div class="card-delta">Grid cluster A</div>
    </div>
    <div class="card card-body">
      <div class="card-label">Load</div>
      <div class="card-value">82%</div>
      <div class="card-delta"><svg class="icon" aria-hidden="true"><use href="#i-trending-up"/></svg> +4% today</div>
    </div>
    <div class="card card-body">
      <div class="card-label">Open WOs</div>
      <div class="card-value">2</div>
      <div class="card-delta"><svg class="icon" aria-hidden="true"><use href="#i-triangle-alert"/></svg> needs dispatch</div>
    </div>
    <div class="card card-body">
      <div class="card-label">Commissioned</div>
      <div class="card-value" style="font-size:var(--text-xl)">2019</div>
      <div class="card-delta">Last inspection 14 June</div>
    </div>
  </div>
  <div class="tabs" data-tabs>
    <div class="tabs__list" aria-label="Record sections"><button type="button" class="tabs__tab" aria-current="true" data-tab-target="rec-overview">Overview</button><button type="button" class="tabs__tab" data-tab-target="rec-activity">Activity</button><button type="button" class="tabs__tab" data-tab-target="rec-related">Related</button></div>
    <div id="rec-overview" class="tabs__panel">
      <div class="stack" data-gap="md">
        <div class="alert" data-tone="warning" role="alert">
          <span class="alert__icon"><svg class="icon" aria-hidden="true"><use href="#i-triangle-alert"/></svg></span>
          <div class="alert__body">
            <div class="alert__title">Two open work orders</div>
            <div class="alert__description">Full page owns the complete record shell — history, related tables, and edit flows that do not fit a peek drawer.</div>
          </div>
        </div>
        <div class="stack" data-gap="sm">
          <div>
            <div class="card-label">Primary contact</div>
            <div>Maya Reyes · Operations</div>
          </div>
          <div>
            <div class="card-label">Feeder</div>
            <div>N-GRID-14 · 33 kV</div>
          </div>
        </div>
      </div>
    </div>
    <div id="rec-activity" class="tabs__panel" hidden>
      <p class="hm-demo-muted">Inspection notes, status changes, and work-order events land here on the full page — not in the peek fragment.</p>
    </div>
    <div id="rec-related" class="tabs__panel" hidden>
      <p class="hm-demo-muted">Related assets, contracts, and tickets would compose as list-region / grid guests on this route.</p>
    </div>
  </div>
</main>
Agent Implementation Guidance
Paired with the Drawer hypermedia peek: the drawer loads GET …?peek=1 into drawer__body; this Blueprint is the owned document for the same record. Open full page is navigation (a real href), not a CSS maximize of the dialog. Expand/Restore is a separate job (data-drawer-expand toggles resting width ↔ xl) — do not label it “full page.” See stems/host-chrome-symmetry.md › Peek vs full page.