Parcel panel
GRIDD's core surface: a floating panel over the map on desktop, a drag bottom-sheet on mobile — the same three-tab spine everywhere.
What it is made of
GdCardflushat--gd-size-panel(400px) — the shellGdTabs— the three-tab spine, one tab carrying a badgeGdMetricCard— lot area, zoneGdVerdictBanner— the answer, with its authorities and timeGdListRow— overlays as swatched rows, title records as muted chipsGdButtoniconandGdChip— save, and the on-title marker
The three-tab spine
- Overview — the address, the lot facts, the zoning, and the verdict for the chosen use.
- Constraints — what is on the land: mapped overlays as swatched rows, on-title records as muted chips.
- Build — the live checker, with the verdict banner pinned beneath the sliders.
The block
42 Jarrah Street
L14 RP80432 · MillbrookA granny flat here is a standard council check against the written rulebook.
Code
<GdCard flush class="panel">
<header class="panel__head">
<h2>42 Jarrah Street</h2>
<GdCode>L14 RP80432 · Millbrook</GdCode>
<GdButton icon size="sm" variant="ghost" label="Save this parcel">…</GdButton>
</header>
<GdTabs v-model="tab" :tabs="TABS" label="Parcel sections" />
<!-- Overview -->
<GdMetricCard label="Lot area" value="812" unit="m²" />
<GdMetricCard label="Zone" value="LDR" sub="Low-density residential" />
<GdVerdictBanner
title="Building + council"
:required="['building', 'council']"
decided-by="Riverton City Council"
time="6–12 weeks"
>
A granny flat here is a standard council check against the written rulebook.
</GdVerdictBanner>
<!-- Constraints: a MAPPED overlay gets the swatch the map drew … -->
<GdListRow title="Creek flooding" sub="Rear of lot · mapped overlay">
<template #swatch><span class="sw" :style="{ background: overlay.paint }" /></template>
</GdListRow>
<!-- … an ON-TITLE record, which is not drawn, gets a muted chip instead -->
<GdListRow title="Registered easement" sub="On title · not drawn on the map">
<template #trailing><GdChip tone="muted" size="sm">On title</GdChip></template>
</GdListRow>
</GdCard>Rules
- Keep the same three tabs everywhere. Overview, Constraints, Build — on the desktop panel and in the mobile sheet.
- Lead every section in plain English; let the statutory term follow as a chip.
- Give a mapped overlay a swatch and an on-title record a muted chip. The two are different kinds of fact and must not look alike.
- Compose only from documented components. If the panel needs a shape the system lacks, that is a finding about the system.
- Pin the verdict banner beneath the Build tab's sliders. It never scrolls away.
- Leave the sheet gesture to the app. The map app owns the drag; the contents are exactly these.
Behavior & Anatomy
The panel is an arrangement, not a new thing
Tabs, metric cards, list rows, the approval stack, the verdict banner — every part is documented on its own page. What this block contributes is the order they go in, and that is the only thing here that could not have been written down anywhere else.
Why the spine does not change between desktop and mobile
On mobile the panel becomes a drag bottom-sheet. The sheet mechanics are an app concern — the map app owns the gesture — while the contents are exactly these. A phone that reordered or dropped a tab would be a second information architecture to keep true, and the person switching devices is usually the same person mid-task.
Where the working panel lives
The full one lives in the design project's SidePanels.dc.html exploration; the composition above is the docs-scale statement of it. The difference is width and demo data, not structure.