@@ -11,6 +11,11 @@ does **not** re-specify the per-item config panels: those are Studio's existing
1111protocol-generated metadata forms, reused as-is (§1.4). What the builder actually
1212builds is the composition; the panels are dropped in.
1313
14+ Each surface has an ** HTML mockup** under [ ` builder-ui/ ` ] ( ./builder-ui/ ) — the precise
15+ visual target and, because its DOM maps to the component tree and its regions are
16+ tagged ` data-build ` / ` data-reuse ` , the implementation blueprint (see
17+ [ Mockups] ( #mockups ) ). The ASCII sketches inline below are for quick reading.
18+
1419---
1520
1621## 1. Core constraints — AI-first, human-confirmable, reuse-first
@@ -56,16 +61,29 @@ shrink the novel surface to almost nothing:
5661 config panel in the inspector (Studio protocol-generated forms). These are
5762 referenced by name; the builder composes them, it does not reimplement them.
5863
59- Solid vs. dashed in the wireframes marks this boundary.
64+ In every mockup this boundary is explicit: regions carry ` data-build="shell" ` or
65+ ` data-reuse="<component>" ` , and reused blocks are drawn with a dashed outline.
6066
6167---
6268
6369## 2. The shell (every pillar shares it)
6470
65- ![ Data pillar shell — rail, facet tabs, grid, inspector] ( ./builder-ui/data-pillar.svg )
66-
67- * Solid frame = shell/composition built in the builder; dashed frame = existing Studio
68- component (grid = ListView; inspector = protocol-generated form) reused as-is.*
71+ ```
72+ ┌───────────────────────────────────────────────────────────────────┐
73+ │ app ▾ Data · Automation · Interface · Access ⚙ Save · Publish │ ← top bar
74+ ├─────────┬───────────────────────────────────────────┬──────────────┤
75+ │ left │ main (the work surface) │ right │
76+ │ rail │ + a per-entity facet tab bar (see Data) │ inspector │
77+ │ entities │ grid / canvas / builder / matrix │ = selected │
78+ │ + search │ ───────────────────────────────────── │ item's │
79+ │ + new │ [ reused renderer, e.g. ListView ] │ config │
80+ │ │ │ [reused form] │
81+ ├─────────┴───────────────────────────────────────────┴──────────────┤
82+ │ legend: solid = built (shell) · dashed = reused (Studio component) │
83+ └───────────────────────────────────────────────────────────────────┘
84+ ```
85+
86+ Mockup: [ ` builder-ui/data-pillar.html ` ] ( ./builder-ui/data-pillar.html ) (open in a browser).
6987
7088- ** Top bar** — the four pillar tabs (Data / Automation / Interface / Access), the
7189 ⚙ Settings entry, the app switcher, and the draft indicator + Save draft /
@@ -115,6 +133,18 @@ and validations, and work with records. Data owns the *data layer and the field
115133designer* ; runtime presentation surfaces (saved grid views, kanban, calendar, pages,
116134dashboards) belong to Interface.
117135
136+ Mockup: [ ` builder-ui/data-pillar.html ` ] ( ./builder-ui/data-pillar.html ) .
137+
138+ ```
139+ ┌ objects ─┬ Task ┈ Records · Fields · Validations │ Actions · Hooks · ⋯ ┬ inspector ┐
140+ │ Account │ ┌ filter · sort · hide ─────────────────────────────────┐ │ Edit field │
141+ │ Task ◄ │ │ # Title Status [Priority ▾] + │ │ Priority │
142+ │ Project │ │ 1 Audit IA In review ● Medium │ │ type: select│
143+ │ Invoice │ │ 2 Design system In progress ● High │ │ options … │
144+ │ + New │ │ + New record │ │ required │
145+ └──────────┴─┴───────────────────────────────────────────────────────┴─┴────────────┘
146+ ```
147+
118148### Left rail
119149The app's objects (v1: owned objects only), with search + New object.
120150
@@ -216,10 +246,27 @@ union of six declarative rule types (`packages/spec/src/data/validation.zod.ts`)
216246
217247---
218248
219- ## Wireframes
220- - [ ` builder-ui/data-pillar.svg ` ] ( ./builder-ui/data-pillar.svg ) — the Data pillar shell
221- (rail · facet tabs · Records grid · field inspector), with the solid/dashed
222- build-boundary legend.
249+ ## Mockups
250+
251+ Mockups live under [ ` builder-ui/ ` ] ( ./builder-ui/ ) as ** HTML** , not images — HTML is
252+ the better artifact for an AI to build against and it scales to the many surfaces
253+ still to design:
254+
255+ - ** DOM ≈ component tree.** The markup maps almost 1:1 to the React components to
256+ build, so there is little to infer or get wrong.
257+ - ** The build boundary is machine-readable.** Every region is tagged
258+ ` data-build="shell" ` (built in the builder) or ` data-reuse="<component>" ` (an
259+ existing Studio/objectui component — e.g. ` ListView ` , ` protocol-form:field ` — to
260+ drop in unchanged). Reused blocks render with a dashed outline.
261+ - ** One shared look.** [ ` shell.css ` ] ( ./builder-ui/shell.css ) holds the tokens and
262+ layout primitives (top bar, rail, facet tabs, grid, inspector, form rows, toggles);
263+ each pillar mockup composes them, so a new surface is a small file and stays
264+ visually consistent for free.
265+
266+ Open any ` *.html ` in a browser to view it. Current mockups:
267+
268+ | Surface | Mockup |
269+ | ---| ---|
270+ | Data pillar | [ ` data-pillar.html ` ] ( ./builder-ui/data-pillar.html ) |
223271
224- Wireframes are committed as SVG so they render on GitHub and stay the unambiguous
225- visual target for implementation. More are added per pillar as they are designed.
272+ More are added per pillar as they are designed.
0 commit comments