@adia-ai/a2ui-corpus 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -19,6 +19,22 @@ gap registry. Consumed by `@adia-ai/a2ui-retrieval` and
19
19
 
20
20
  _No pending changes._
21
21
 
22
+ ## [0.4.2] - 2026-05-11
23
+
24
+ ### Changed
25
+
26
+ - `catalog-a2ui_0_9.json` regenerated to pick up the 5 new `<input-ui type="number">` examples from `@adia-ai/web-components@0.4.2`: `quantity-stepper`, `price-with-currency`, `weight-with-unit`, `percent-bounded`, `temperature-negative`. The yaml `examples[]` entries drive retrieval signal for numeric-input intents (quantity / price / weight / percent / temperature).
27
+ - `catalog-a2ui_0_9_rules.txt` regenerated alongside.
28
+ - `chunks/` — `playground-app-shell.json` re-harvested after the `<theme-panel>` consumer migration (Phase 3 of theme-panel work): embedded HTML now shows `<theme-panel slot="content" parametric presets scheme-toggle></theme-panel>` instead of the ~30-line inline `<div id="theme-panel">` block. Chunk NAME `playground-app-shell` preserved as a stable retrieval identifier per the 2026-05-10 §22 lesson. 27 additional chunk files touched in this window for `source:` field updates following the ADR-0026 reorg (`apps/<X>/` → `playgrounds/<X>/` or `catalog/<X>/`); chunk NAMES unchanged.
29
+
30
+ ### Removed
31
+
32
+ - `fragments/layout/auth-card-header.json` — fragment retired (was the foundational auth-flow chunk header before migration to `<auth-card-content>` + `<auth-card-header>` chunk-level shape; instance_count had reconciled to 0 in v0.4.1, no longer present in any composition). Now archived at `.brain/archive/2026-Q2/retired-fragments/auth-card-header.md` per the v0.4.1 follow-up.
33
+
34
+ ### Lockstep
35
+
36
+ 9-package coordinated PATCH cut to v0.4.2 (per [`docs/specs/package-architecture.md` § 15](../../../docs/specs/package-architecture.md#15-versioning-policy)). Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). Rides alongside `@adia-ai/web-components@0.4.2` (input-ui type=number rewrite) and `@adia-ai/web-modules@0.4.2` (editor-sidebar width mirror). See root [CHANGELOG.md `## [0.4.2]`](../../../CHANGELOG.md) for the cut narrative.
37
+
22
38
  ## [0.4.1] - 2026-05-10
23
39
 
24
40
  ### Changed
@@ -7550,7 +7550,7 @@
7550
7550
  },
7551
7551
  "Input": {
7552
7552
  "title": "Input",
7553
- "description": "Text input field with contenteditable or native input. Supports prefix/suffix icons, label, and form participation.",
7553
+ "description": "Text input field with contenteditable surface. Supports prefix/suffix icons, label, form participation, and a `type=\"number\"` mode that renders [+]/[-] stepper buttons, numeric input filtering, and ARIA spinbutton semantics — no native `<input type=\"number\">` under the hood. Password type uses a native `<input>` (only path that still wraps native, for `-webkit-text-security` disc masking).",
7554
7554
  "type": "object",
7555
7555
  "allOf": [
7556
7556
  {
@@ -7562,7 +7562,7 @@
7562
7562
  ],
7563
7563
  "properties": {
7564
7564
  "type": {
7565
- "description": "Input type hint. Password type applies disc masking via -webkit-text-security.",
7565
+ "description": "Input type. `password` wraps a native `<input>` for disc masking; `number` renders a contenteditable + stepper buttons (no native input). All other types use plain contenteditable.",
7566
7566
  "type": "string",
7567
7567
  "enum": [
7568
7568
  "text",
@@ -7604,11 +7604,21 @@
7604
7604
  "type": "string",
7605
7605
  "default": ""
7606
7606
  },
7607
+ "max": {
7608
+ "description": "Maximum numeric value. Applies when `type=\"number\"`. Clamps + drives aria-valuemax + the [+] button's disabled state.",
7609
+ "type": "number",
7610
+ "default": null
7611
+ },
7607
7612
  "maxlength": {
7608
7613
  "description": "Maximum character length for validation",
7609
7614
  "type": "number",
7610
7615
  "default": null
7611
7616
  },
7617
+ "min": {
7618
+ "description": "Minimum numeric value. Applies when `type=\"number\"`. Clamps + drives aria-valuemin + the [-] button's disabled state.",
7619
+ "type": "number",
7620
+ "default": null
7621
+ },
7612
7622
  "minlength": {
7613
7623
  "description": "Minimum character length for validation",
7614
7624
  "type": "number",
@@ -7629,6 +7639,11 @@
7629
7639
  "type": "string",
7630
7640
  "default": ""
7631
7641
  },
7642
+ "precision": {
7643
+ "description": "Decimal places to display + clamp to, when `type=\"number\"`. Overrides the implicit decimal-count from `step` — e.g. `step=1 precision=2` formats \"10.00\".",
7644
+ "type": "number",
7645
+ "default": null
7646
+ },
7632
7647
  "prefix": {
7633
7648
  "description": "Prefix text or icon rendered before the text surface (e.g., unit label, search icon)",
7634
7649
  "type": "string",
@@ -7644,13 +7659,18 @@
7644
7659
  "type": "boolean",
7645
7660
  "default": false
7646
7661
  },
7662
+ "step": {
7663
+ "description": "Stepper increment for `type=\"number\"`. Drives ↑/↓ ArrowUp/Down + [+]/[-] button magnitude. Also determines decimal-count for value formatting unless `precision` is set.",
7664
+ "type": "number",
7665
+ "default": 1
7666
+ },
7647
7667
  "suffix": {
7648
7668
  "description": "Suffix text rendered after the text surface (e.g., unit like 'kg')",
7649
7669
  "type": "string",
7650
7670
  "default": ""
7651
7671
  },
7652
7672
  "value": {
7653
- "description": "Current input value, synced with contenteditable text surface",
7673
+ "description": "Current input value, synced with contenteditable text surface. For `type=\"number\"`, this is the formatted numeric string; read `el.valueAsNumber` for the parsed Number.",
7654
7674
  "type": "string",
7655
7675
  "default": ""
7656
7676
  }
@@ -7664,16 +7684,41 @@
7664
7684
  "category": "input",
7665
7685
  "events": {
7666
7686
  "change": {
7667
- "description": "Fired on blur after the value has changed (bubbles)"
7687
+ "description": "Fired on blur, Enter, or a stepper-button click (bubbles)"
7668
7688
  },
7669
7689
  "input": {
7670
- "description": "Fired on each keystroke as the user types (bubbles)"
7690
+ "description": "Fired on each keystroke or stepper-button increment (bubbles)"
7671
7691
  },
7672
7692
  "submit": {
7673
- "description": "Fired when the form is submitted."
7693
+ "description": "Fired when Enter commits the value."
7674
7694
  }
7675
7695
  },
7676
7696
  "examples": [
7697
+ {
7698
+ "description": "Number input with [+]/[-] stepper buttons, min/max bounds, and a quantity label. Use for product quantity, item count, or any bounded integer input.",
7699
+ "a2ui": "[\n {\"id\": \"root\", \"component\": \"Field\", \"label\": \"Quantity\",\n \"children\": [\"qty\"]},\n {\"id\": \"qty\", \"component\": \"Input\", \"type\": \"number\",\n \"name\": \"quantity\", \"value\": \"1\", \"min\": 0, \"max\": 99, \"step\": 1}\n]",
7700
+ "name": "quantity-stepper"
7701
+ },
7702
+ {
7703
+ "description": "Currency number input with $ prefix, 2-decimal precision, and step 0.01. The stepper buttons increment by one cent.",
7704
+ "a2ui": "[\n {\"id\": \"root\", \"component\": \"Field\", \"label\": \"Price\",\n \"children\": [\"price\"]},\n {\"id\": \"price\", \"component\": \"Input\", \"type\": \"number\",\n \"name\": \"price\", \"value\": \"9.99\", \"min\": 0, \"step\": 0.01,\n \"precision\": 2, \"prefix\": \"$\"}\n]",
7705
+ "name": "price-with-currency"
7706
+ },
7707
+ {
7708
+ "description": "Weight number input with a kg suffix and 0.1 step for decigram precision.",
7709
+ "a2ui": "[\n {\"id\": \"root\", \"component\": \"Field\", \"label\": \"Weight\",\n \"children\": [\"weight\"]},\n {\"id\": \"weight\", \"component\": \"Input\", \"type\": \"number\",\n \"name\": \"weight\", \"value\": \"70\", \"min\": 0, \"max\": 500,\n \"step\": 0.1, \"suffix\": \"kg\"}\n]",
7710
+ "name": "weight-with-unit"
7711
+ },
7712
+ {
7713
+ "description": "Percent number input bounded 0..100 with a % suffix.",
7714
+ "a2ui": "[\n {\"id\": \"root\", \"component\": \"Field\", \"label\": \"Discount\",\n \"children\": [\"pct\"]},\n {\"id\": \"pct\", \"component\": \"Input\", \"type\": \"number\",\n \"name\": \"discount\", \"value\": \"25\", \"min\": 0, \"max\": 100,\n \"step\": 5, \"suffix\": \"%\"}\n]",
7715
+ "name": "percent-bounded"
7716
+ },
7717
+ {
7718
+ "description": "Number input allowing negative values, e.g. temperature offset.",
7719
+ "a2ui": "[\n {\"id\": \"root\", \"component\": \"Field\", \"label\": \"Temperature offset\",\n \"children\": [\"temp\"]},\n {\"id\": \"temp\", \"component\": \"Input\", \"type\": \"number\",\n \"name\": \"temp\", \"value\": \"0\", \"min\": -100, \"max\": 100,\n \"step\": 1, \"suffix\": \"°C\"}\n]",
7720
+ "name": "temperature-negative"
7721
+ },
7677
7722
  {
7678
7723
  "description": "Chat interface with message bubbles containing avatar and text pairs, plus an input footer.",
7679
7724
  "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"hdr\",\n \"sec\",\n \"ftr\"\n ]\n },\n {\n \"id\": \"hdr\",\n \"component\": \"Header\",\n \"children\": [\n \"title\"\n ]\n },\n {\n \"id\": \"title\",\n \"component\": \"Text\",\n \"slot\": \"heading\",\n \"textContent\": \"Chat\"\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"messages\"\n ]\n },\n {\n \"id\": \"messages\",\n \"component\": \"Column\",\n \"gap\": \"3\",\n \"children\": [\n \"msg1\",\n \"msg2\",\n \"msg3\",\n \"msg4\"\n ]\n },\n {\n \"id\": \"msg1\",\n \"component\": \"Row\",\n \"gap\": \"2\",\n \"children\": [\n \"a1\",\n \"t1\"\n ]\n },\n {\n \"id\": \"a1\",\n \"component\": \"Avatar\",\n \"name\": \"User\",\n \"size\": \"sm\"\n },\n {\n \"id\": \"t1\",\n \"component\": \"Text\",\n \"variant\": \"body\",\n \"textContent\": \"Hello! Can you help me with something?\"\n },\n {\n \"id\": \"msg2\",\n \"component\": \"Row\",\n \"gap\": \"2\",\n \"children\": [\n \"a2\",\n \"t2\"\n ]\n },\n {\n \"id\": \"a2\",\n \"component\": \"Avatar\",\n \"name\": \"Assistant\",\n \"size\": \"sm\"\n },\n {\n \"id\": \"t2\",\n \"component\": \"Text\",\n \"variant\": \"body\",\n \"textContent\": \"Of course! I'd be happy to help. What do you need?\"\n },\n {\n \"id\": \"msg3\",\n \"component\": \"Row\",\n \"gap\": \"2\",\n \"children\": [\n \"a3\",\n \"t3\"\n ]\n },\n {\n \"id\": \"a3\",\n \"component\": \"Avatar\",\n \"name\": \"User\",\n \"size\": \"sm\"\n },\n {\n \"id\": \"t3\",\n \"component\": \"Text\",\n \"variant\": \"body\",\n \"textContent\": \"I need to build a dashboard layout.\"\n },\n {\n \"id\": \"msg4\",\n \"component\": \"Row\",\n \"gap\": \"2\",\n \"children\": [\n \"a4\",\n \"t4\"\n ]\n },\n {\n \"id\": \"a4\",\n \"component\": \"Avatar\",\n \"name\": \"Assistant\",\n \"size\": \"sm\"\n },\n {\n \"id\": \"t4\",\n \"component\": \"Text\",\n \"variant\": \"body\",\n \"textContent\": \"Great choice! Let me suggest some patterns for that.\"\n },\n {\n \"id\": \"ftr\",\n \"component\": \"Footer\",\n \"children\": [\n \"input-row\"\n ]\n },\n {\n \"id\": \"input-row\",\n \"component\": \"Row\",\n \"gap\": \"2\",\n \"children\": [\n \"chat-input\",\n \"send-btn\"\n ]\n },\n {\n \"id\": \"chat-input\",\n \"component\": \"Input\",\n \"placeholder\": \"Type a message...\"\n },\n {\n \"id\": \"send-btn\",\n \"component\": \"Button\",\n \"text\": \"Send\",\n \"icon\": \"send\",\n \"variant\": \"primary\"\n }\n]",
@@ -13898,6 +13943,177 @@
13898
13943
  "version": 1
13899
13944
  }
13900
13945
  },
13946
+ "ThemePanel": {
13947
+ "title": "ThemePanel",
13948
+ "description": "Module-tier appearance-preferences control surface. Owns the three knobs\nof the AdiaUI theming contract: [data-theme=<slug>] named themes,\n--a-density / --a-radius-k parametric overrides, and color-scheme\nlight/dark switching, plus optional localStorage persistence behind a\nsmall attribute API.\n\nDrops into any consumer's <popover-ui slot=\"content\"> (the canonical\ncomposition) or directly into a sidebar section. Eight named themes\nship by default; section visibility flips on/off via boolean attributes\n([parametric], [presets], [scheme-toggle]).\n\nPromoted from the duplicated <div id=\"theme-panel\"> block in site/ and\nplaygrounds/admin-shell/ — see docs/specs/theme-panel-module.md.\n",
13949
+ "type": "object",
13950
+ "allOf": [
13951
+ {
13952
+ "$ref": "#/$defs/ComponentCommon"
13953
+ },
13954
+ {
13955
+ "$ref": "#/$defs/CatalogComponentCommon"
13956
+ }
13957
+ ],
13958
+ "properties": {
13959
+ "active-density": {
13960
+ "description": "Reflected — mirrors the current --a-density value on the target\nelement. Stringified number.\n",
13961
+ "type": "string",
13962
+ "default": ""
13963
+ },
13964
+ "active-radius": {
13965
+ "description": "Reflected — mirrors the current --a-radius-k value on the target\nelement. Stringified number.\n",
13966
+ "type": "string",
13967
+ "default": ""
13968
+ },
13969
+ "active-scheme": {
13970
+ "description": "Reflected — the resolved color-scheme (auto collapsed to a\nconcrete value). Either \"light\" or \"dark\".\n",
13971
+ "type": "string",
13972
+ "default": ""
13973
+ },
13974
+ "active-theme": {
13975
+ "description": "Reflected — the currently selected theme slug. Empty string when\nunset (default theme). Read-only externally; use .apply({theme})\nto change.\n",
13976
+ "type": "string",
13977
+ "default": ""
13978
+ },
13979
+ "component": {
13980
+ "const": "ThemePanel"
13981
+ },
13982
+ "parametric": {
13983
+ "description": "Renders the density + radius slider block. Sliders bind to\n--a-density and --a-radius-k on the target element.\n",
13984
+ "type": "boolean",
13985
+ "default": false
13986
+ },
13987
+ "persist": {
13988
+ "description": "Persists selections to localStorage. Defaults to ephemeral so\nplaygrounds and embedded demos do not silently mutate a user's\ndocs-shell preferences.\n",
13989
+ "type": "boolean",
13990
+ "default": false
13991
+ },
13992
+ "presets": {
13993
+ "description": "Renders the compact / reset / spacious preset row. Each preset\napplies a (density, radius) pair; \"default\" also clears the\n[data-theme] attribute.\n",
13994
+ "type": "boolean",
13995
+ "default": false
13996
+ },
13997
+ "scheme": {
13998
+ "description": "Initial color-scheme. \"auto\" follows prefers-color-scheme via a\nmatchMedia listener; user clicks on the scheme toggle promote to\nan explicit light or dark choice.\n",
13999
+ "type": "string",
14000
+ "enum": [
14001
+ "light",
14002
+ "dark",
14003
+ "auto"
14004
+ ],
14005
+ "default": "auto"
14006
+ },
14007
+ "scheme-toggle": {
14008
+ "description": "Renders an integrated light/dark <segmented-ui> at the top of the\npanel. When absent, the panel omits scheme entirely — consumers\ncan still drive scheme via the .apply({scheme}) public method.\n",
14009
+ "type": "boolean",
14010
+ "default": false
14011
+ },
14012
+ "storage-prefix": {
14013
+ "description": "Namespace for localStorage keys when [persist] is set. Four keys\nare written: {prefix}theme, {prefix}scheme, {prefix}density,\n{prefix}radius.\n",
14014
+ "type": "string",
14015
+ "default": "adia-theme-"
14016
+ },
14017
+ "target": {
14018
+ "description": "CSS selector for the element that receives [data-theme] and\n--a-density / --a-radius-k writes. Defaults to :root (the\n<html> element). Scoped targets are useful for preview-pane\ndemos.\n",
14019
+ "type": "string",
14020
+ "default": ":root"
14021
+ },
14022
+ "themes": {
14023
+ "description": "Space-separated list of theme slugs to render as buttons. Author\nmay restrict ([themes=\"default ocean\"]) or extend. Tolerant —\nunknown slugs render a button; clicking applies [data-theme=slug]\nregardless of whether themes.css has a matching block.\n",
14024
+ "type": "string",
14025
+ "default": "default ocean forest sunset lavender rose slate midnight"
14026
+ }
14027
+ },
14028
+ "required": [
14029
+ "component"
14030
+ ],
14031
+ "unevaluatedProperties": false,
14032
+ "x-adiaui": {
14033
+ "anti_patterns": [],
14034
+ "category": "layout",
14035
+ "events": {
14036
+ "theme-change": {
14037
+ "description": "Bubbles when any user-visible state changes (theme click, slider\ninput, preset click, scheme flip, reset). One event per change.\nNo event on auto-rehydrate-from-storage at boot.\n",
14038
+ "detail": {
14039
+ "theme": "string",
14040
+ "density": "number",
14041
+ "radius": "number",
14042
+ "scheme": "string",
14043
+ "source": "string"
14044
+ }
14045
+ }
14046
+ },
14047
+ "examples": [],
14048
+ "keywords": [
14049
+ "theme",
14050
+ "theme-panel",
14051
+ "palette",
14052
+ "density",
14053
+ "radius",
14054
+ "scheme",
14055
+ "dark-mode",
14056
+ "light-mode",
14057
+ "color-scheme",
14058
+ "preferences",
14059
+ "settings",
14060
+ "color",
14061
+ "appearance",
14062
+ "skin"
14063
+ ],
14064
+ "name": "ThemePanel",
14065
+ "related": [
14066
+ "Popover",
14067
+ "Button",
14068
+ "Slider",
14069
+ "Field",
14070
+ "Divider",
14071
+ "Text",
14072
+ "Segmented",
14073
+ "AdminShell"
14074
+ ],
14075
+ "slots": {},
14076
+ "states": [
14077
+ {
14078
+ "description": "Default — panel rendered, awaiting input.",
14079
+ "name": "idle"
14080
+ },
14081
+ {
14082
+ "description": "[persist] is set; selections write to localStorage under\n[storage-prefix].\n",
14083
+ "attribute": "persist",
14084
+ "name": "persisted"
14085
+ },
14086
+ {
14087
+ "description": "[scheme=\"auto\"] and no user override this session; a\nprefers-color-scheme listener reapplies on system flip.\n",
14088
+ "name": "scheme-auto"
14089
+ }
14090
+ ],
14091
+ "synonyms": {
14092
+ "theme": [
14093
+ "palette",
14094
+ "skin",
14095
+ "appearance"
14096
+ ],
14097
+ "density": [
14098
+ "compactness",
14099
+ "spacing-scale"
14100
+ ],
14101
+ "radius": [
14102
+ "corner-roundness",
14103
+ "border-radius"
14104
+ ],
14105
+ "scheme": [
14106
+ "mode",
14107
+ "color-scheme",
14108
+ "dark-mode"
14109
+ ]
14110
+ },
14111
+ "tag": "theme-panel",
14112
+ "tokens": {},
14113
+ "traits": [],
14114
+ "version": 1
14115
+ }
14116
+ },
13901
14117
  "Timeline": {
13902
14118
  "title": "Timeline",
13903
14119
  "description": "Timeline and step wizard. Two modes: timeline (per-item state) and steps (parent-driven).",
@@ -106,3 +106,8 @@
106
106
  - simple-shell is the bespoke shell for thin / minimal page surfaces. Use when the page has no nav rail, no chrome bars, no command palette. For full app surfaces use admin-shell; for chat surfaces use chat-shell; for design tools use editor-shell.
107
107
  - Compose with <simple-hero> (optional top hero strip) and <simple-content> (main article body). Both are CSS-only structural children — no JS, no state.
108
108
 
109
+ ## ThemePanel
110
+ - theme-panel is the canonical appearance-preferences popover. Compose inside a <popover-ui slot="content"> in the topbar of a shell (admin, chat, editor, simple) when the page exposes user theming. Avoid hardcoding it as a shell child — placement is the consumer's call.
111
+ - Use [persist] for the docs surface or a real product app; omit [persist] for playgrounds and embedded demos so state stays ephemeral. The default is ephemeral.
112
+ - Add boolean attributes [parametric], [presets], [scheme-toggle] to enable sections; the minimum panel is the theme button grid.
113
+
@@ -15,7 +15,7 @@
15
15
  "primary": "admin-shell",
16
16
  "instances": 1,
17
17
  "pages": [
18
- "/apps/app-shell/app/app-shell.contents.html"
18
+ "/playgrounds/admin-shell/app/admin-shell.contents.html"
19
19
  ],
20
20
  "slots": [],
21
21
  "nested": []
@@ -26,7 +26,7 @@
26
26
  "primary": "chat-shell",
27
27
  "instances": 1,
28
28
  "pages": [
29
- "/apps/chat/app/chat.contents.html"
29
+ "/playgrounds/chat/app/chat.contents.html"
30
30
  ],
31
31
  "slots": [],
32
32
  "nested": []
@@ -195,7 +195,7 @@
195
195
  "primary": "article",
196
196
  "instances": 1,
197
197
  "pages": [
198
- "/apps/generic-shells/app/agent-canvas/agent-canvas.contents.html"
198
+ "/catalog/page-shells/app/agent-canvas/agent-canvas.contents.html"
199
199
  ],
200
200
  "slots": [
201
201
  "toolbar",
@@ -211,7 +211,7 @@
211
211
  "primary": "article",
212
212
  "instances": 1,
213
213
  "pages": [
214
- "/apps/generic-shells/app/chat-page/chat-page.contents.html"
214
+ "/catalog/page-shells/app/chat-page/chat-page.contents.html"
215
215
  ],
216
216
  "slots": [
217
217
  "sidebar",
@@ -227,7 +227,7 @@
227
227
  "primary": "article",
228
228
  "instances": 1,
229
229
  "pages": [
230
- "/apps/generic-shells/app/doc-editor/doc-editor.contents.html"
230
+ "/catalog/page-shells/app/doc-editor/doc-editor.contents.html"
231
231
  ],
232
232
  "slots": [
233
233
  "toolbar",
@@ -243,7 +243,7 @@
243
243
  "primary": "article",
244
244
  "instances": 1,
245
245
  "pages": [
246
- "/apps/generic-shells/app/editor-page/editor-page.contents.html"
246
+ "/catalog/page-shells/app/editor-page/editor-page.contents.html"
247
247
  ],
248
248
  "slots": [
249
249
  "editor-pane",
@@ -257,7 +257,7 @@
257
257
  "primary": "article",
258
258
  "instances": 1,
259
259
  "pages": [
260
- "/apps/generic-shells/app/error-page/error-page.contents.html"
260
+ "/catalog/page-shells/app/error-page/error-page.contents.html"
261
261
  ],
262
262
  "slots": [
263
263
  "error-content",
@@ -271,7 +271,7 @@
271
271
  "primary": "article",
272
272
  "instances": 1,
273
273
  "pages": [
274
- "/apps/generic-shells/app/form-page/form-page.contents.html"
274
+ "/catalog/page-shells/app/form-page/form-page.contents.html"
275
275
  ],
276
276
  "slots": [
277
277
  "page-header",
@@ -286,7 +286,7 @@
286
286
  "primary": "article",
287
287
  "instances": 1,
288
288
  "pages": [
289
- "/apps/generic-shells/app/gallery-page/gallery-page.contents.html"
289
+ "/catalog/page-shells/app/gallery-page/gallery-page.contents.html"
290
290
  ],
291
291
  "slots": [
292
292
  "header",
@@ -302,7 +302,7 @@
302
302
  "primary": "article",
303
303
  "instances": 1,
304
304
  "pages": [
305
- "/apps/generic-shells/app/kanban-page/kanban-page.contents.html"
305
+ "/catalog/page-shells/app/kanban-page/kanban-page.contents.html"
306
306
  ],
307
307
  "slots": [
308
308
  "header",
@@ -317,7 +317,7 @@
317
317
  "primary": "article",
318
318
  "instances": 1,
319
319
  "pages": [
320
- "/apps/generic-shells/app/marketing-page/marketing-page.contents.html"
320
+ "/catalog/page-shells/app/marketing-page/marketing-page.contents.html"
321
321
  ],
322
322
  "slots": [
323
323
  "hero",
@@ -332,7 +332,7 @@
332
332
  "primary": "article",
333
333
  "instances": 1,
334
334
  "pages": [
335
- "/apps/generic-shells/app/settings-page/settings-page.contents.html"
335
+ "/catalog/page-shells/app/settings-page/settings-page.contents.html"
336
336
  ],
337
337
  "slots": [
338
338
  "page-header",
@@ -391,7 +391,7 @@
391
391
  "primary": "card-ui",
392
392
  "instances": 1,
393
393
  "pages": [
394
- "/apps/patterns/app/agent-activity-feed/agent-activity-feed.contents.html"
394
+ "/catalog/ui-patterns/app/agent-activity-feed/agent-activity-feed.contents.html"
395
395
  ],
396
396
  "slots": [],
397
397
  "nested": []
@@ -402,7 +402,7 @@
402
402
  "primary": "card-ui",
403
403
  "instances": 1,
404
404
  "pages": [
405
- "/apps/patterns/app/agent-reasoning-collapsed/agent-reasoning-collapsed.contents.html"
405
+ "/catalog/ui-patterns/app/agent-reasoning-collapsed/agent-reasoning-collapsed.contents.html"
406
406
  ],
407
407
  "slots": [],
408
408
  "nested": []
@@ -413,7 +413,7 @@
413
413
  "primary": "card-ui",
414
414
  "instances": 1,
415
415
  "pages": [
416
- "/apps/patterns/app/chat-streaming-surface/chat-streaming-surface.contents.html"
416
+ "/catalog/ui-patterns/app/chat-streaming-surface/chat-streaming-surface.contents.html"
417
417
  ],
418
418
  "slots": [],
419
419
  "nested": []
@@ -424,7 +424,7 @@
424
424
  "primary": "modal-ui",
425
425
  "instances": 1,
426
426
  "pages": [
427
- "/apps/patterns/app/command-palette/command-palette.contents.html"
427
+ "/catalog/ui-patterns/app/command-palette/command-palette.contents.html"
428
428
  ],
429
429
  "slots": [],
430
430
  "nested": []
@@ -435,7 +435,7 @@
435
435
  "primary": "card-ui",
436
436
  "instances": 1,
437
437
  "pages": [
438
- "/apps/patterns/app/conversion-funnel-6step/conversion-funnel-6step.contents.html"
438
+ "/catalog/ui-patterns/app/conversion-funnel-6step/conversion-funnel-6step.contents.html"
439
439
  ],
440
440
  "slots": [],
441
441
  "nested": []
@@ -446,7 +446,7 @@
446
446
  "primary": "modal-ui",
447
447
  "instances": 1,
448
448
  "pages": [
449
- "/apps/patterns/app/destructive-confirm-modal/destructive-confirm-modal.contents.html"
449
+ "/catalog/ui-patterns/app/destructive-confirm-modal/destructive-confirm-modal.contents.html"
450
450
  ],
451
451
  "slots": [],
452
452
  "nested": []
@@ -457,7 +457,7 @@
457
457
  "primary": "section",
458
458
  "instances": 1,
459
459
  "pages": [
460
- "/apps/patterns/app/editor-code-pane/editor-code-pane.contents.html"
460
+ "/catalog/ui-patterns/app/editor-code-pane/editor-code-pane.contents.html"
461
461
  ],
462
462
  "slots": [],
463
463
  "nested": []
@@ -468,7 +468,7 @@
468
468
  "primary": "section",
469
469
  "instances": 1,
470
470
  "pages": [
471
- "/apps/patterns/app/editor-preview-pane/editor-preview-pane.contents.html"
471
+ "/catalog/ui-patterns/app/editor-preview-pane/editor-preview-pane.contents.html"
472
472
  ],
473
473
  "slots": [],
474
474
  "nested": []
@@ -479,7 +479,7 @@
479
479
  "primary": "grid-ui",
480
480
  "instances": 1,
481
481
  "pages": [
482
- "/apps/patterns/app/kanban-board-3col/kanban-board-3col.contents.html"
482
+ "/catalog/ui-patterns/app/kanban-board-3col/kanban-board-3col.contents.html"
483
483
  ],
484
484
  "slots": [],
485
485
  "nested": []
@@ -490,7 +490,7 @@
490
490
  "primary": "section",
491
491
  "instances": 1,
492
492
  "pages": [
493
- "/apps/patterns/app/marketing-hero-cta/marketing-hero-cta.contents.html"
493
+ "/catalog/ui-patterns/app/marketing-hero-cta/marketing-hero-cta.contents.html"
494
494
  ],
495
495
  "slots": [],
496
496
  "nested": []
@@ -501,7 +501,7 @@
501
501
  "primary": "card-ui",
502
502
  "instances": 1,
503
503
  "pages": [
504
- "/apps/patterns/app/settings-notifications/settings-notifications.contents.html"
504
+ "/catalog/ui-patterns/app/settings-notifications/settings-notifications.contents.html"
505
505
  ],
506
506
  "slots": [],
507
507
  "nested": []
@@ -512,7 +512,7 @@
512
512
  "primary": "card-ui",
513
513
  "instances": 1,
514
514
  "pages": [
515
- "/apps/patterns/app/user-profile-card/user-profile-card.contents.html"
515
+ "/catalog/ui-patterns/app/user-profile-card/user-profile-card.contents.html"
516
516
  ],
517
517
  "slots": [],
518
518
  "nested": []
@@ -523,7 +523,7 @@
523
523
  "primary": "card-ui",
524
524
  "instances": 1,
525
525
  "pages": [
526
- "/apps/patterns/app/users-table-badge/users-table-badge.contents.html"
526
+ "/catalog/ui-patterns/app/users-table-badge/users-table-badge.contents.html"
527
527
  ],
528
528
  "slots": [],
529
529
  "nested": []
@@ -1155,7 +1155,7 @@
1155
1155
  "primary": "table-toolbar-ui",
1156
1156
  "instances": 1,
1157
1157
  "pages": [
1158
- "/apps/table-toolbar/app/table-toolbar.contents.html"
1158
+ "/playgrounds/table-toolbar/app/table-toolbar.contents.html"
1159
1159
  ],
1160
1160
  "slots": [],
1161
1161
  "nested": []
@@ -2,11 +2,11 @@
2
2
  "name": "agent-activity-feed",
3
3
  "kind": "block",
4
4
  "primary": "card-ui",
5
- "page": "/apps/patterns/app/agent-activity-feed/agent-activity-feed.contents.html",
5
+ "page": "/catalog/ui-patterns/app/agent-activity-feed/agent-activity-feed.contents.html",
6
6
  "slots": [],
7
7
  "nested": [],
8
8
  "attrs": {},
9
9
  "html": "<card-ui>\n <header>\n <h3>Agent Activity</h3>\n <text-ui slot=\"description\" color=\"subtle\">Live reasoning trace</text-ui>\n </header>\n <section>\n <col-ui gap=\"3\">\n <agent-trace-ui></agent-trace-ui>\n <agent-reasoning-ui></agent-reasoning-ui>\n <agent-artifact-ui></agent-artifact-ui>\n </col-ui>\n </section>\n</card-ui>",
10
- "source": "apps/patterns/app/agent-activity-feed/agent-activity-feed.contents.html",
10
+ "source": "catalog/ui-patterns/app/agent-activity-feed/agent-activity-feed.contents.html",
11
11
  "captured_at": "2026-05-10T17:53:43.459Z"
12
12
  }
@@ -2,7 +2,7 @@
2
2
  "name": "agent-canvas-shell",
3
3
  "kind": "page",
4
4
  "primary": "article",
5
- "page": "/apps/generic-shells/app/agent-canvas/agent-canvas.contents.html",
5
+ "page": "/catalog/page-shells/app/agent-canvas/agent-canvas.contents.html",
6
6
  "slots": [
7
7
  {
8
8
  "name": "toolbar",
@@ -28,6 +28,6 @@
28
28
  "nested": [],
29
29
  "attrs": {},
30
30
  "html": "<article style=\"display:flex; height:100vh;\">\n <section style=\"flex:1; display:flex; flex-direction:column; min-width:0;\">\n <header data-chunk-slot=\"toolbar\" style=\"padding:var(--a-space-2) var(--a-space-3); border-bottom:1px solid var(--a-border-subtle); display:flex; align-items:center; justify-content:space-between;\">\n <row-ui gap=\"2\" align=\"center\">\n <button-ui icon=\"hand\" variant=\"ghost\" size=\"sm\" tooltip=\"Pan\"></button-ui>\n <button-ui icon=\"cursor\" variant=\"ghost\" size=\"sm\" tooltip=\"Select\"></button-ui>\n <separator-ui orientation=\"vertical\"></separator-ui>\n <button-ui icon=\"plus\" variant=\"ghost\" size=\"sm\" tooltip=\"Add node\"></button-ui>\n <button-ui icon=\"trash\" variant=\"ghost\" size=\"sm\" tooltip=\"Delete\"></button-ui>\n </row-ui>\n <row-ui gap=\"2\">\n <button-ui text=\"Run\" variant=\"primary\" size=\"sm\" icon=\"play\"></button-ui>\n <button-ui text=\"Export\" variant=\"outline\" size=\"sm\" icon=\"download\"></button-ui>\n </row-ui>\n </header>\n\n <section data-chunk-slot=\"canvas\" style=\"flex:1; background:var(--a-bg-subtle); position:relative; overflow:hidden;\">\n <text-ui color=\"subtle\" style=\"position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);\">Canvas surface</text-ui>\n </section>\n </section>\n\n <aside style=\"width:280px; display:flex; flex-direction:column; border-left:1px solid var(--a-border-subtle);\">\n <section data-chunk-slot=\"inspector\" style=\"flex:1; overflow:auto; padding:var(--a-space-3); border-bottom:1px solid var(--a-border-subtle);\">\n <stack-ui gap=\"3\">\n <text-ui strong size=\"lg\">Inspector</text-ui>\n <stack-ui gap=\"1\">\n <label-ui>Label</label-ui>\n <input-ui value=\"Untitled node\"></input-ui>\n </stack-ui>\n <stack-ui gap=\"1\">\n <label-ui>Type</label-ui>\n <select-ui>\n <option>LLM</option>\n <option>Tool</option>\n <option>Condition</option>\n </select-ui>\n </stack-ui>\n </stack-ui>\n </section>\n\n <section data-chunk-slot=\"chat\" style=\"height:240px; display:flex; flex-direction:column;\">\n <header style=\"padding:var(--a-space-2) var(--a-space-3); border-bottom:1px solid var(--a-border-subtle);\">\n <text-ui strong size=\"sm\">Agent</text-ui>\n </header>\n <section style=\"flex:1; overflow:auto; padding:var(--a-space-2);\">\n <text-ui size=\"sm\" color=\"subtle\">Agent messages will appear here.</text-ui>\n </section>\n <footer style=\"padding:var(--a-space-2); border-top:1px solid var(--a-border-subtle);\">\n <input-ui placeholder=\"Ask the agent…\" size=\"sm\"></input-ui>\n </footer>\n </section>\n </aside>\n</article>",
31
- "source": "apps/generic-shells/app/agent-canvas/agent-canvas.contents.html",
31
+ "source": "catalog/page-shells/app/agent-canvas/agent-canvas.contents.html",
32
32
  "captured_at": "2026-05-10T17:53:43.459Z"
33
33
  }
@@ -2,11 +2,11 @@
2
2
  "name": "agent-reasoning-collapsed",
3
3
  "kind": "block",
4
4
  "primary": "card-ui",
5
- "page": "/apps/patterns/app/agent-reasoning-collapsed/agent-reasoning-collapsed.contents.html",
5
+ "page": "/catalog/ui-patterns/app/agent-reasoning-collapsed/agent-reasoning-collapsed.contents.html",
6
6
  "slots": [],
7
7
  "nested": [],
8
8
  "attrs": {},
9
9
  "html": "<card-ui>\n <header>\n <h3>Reasoning</h3>\n <text-ui slot=\"description\" color=\"subtle\">Collapsible intermediate steps</text-ui>\n </header>\n <section>\n <agent-reasoning-ui></agent-reasoning-ui>\n </section>\n</card-ui>",
10
- "source": "apps/patterns/app/agent-reasoning-collapsed/agent-reasoning-collapsed.contents.html",
10
+ "source": "catalog/ui-patterns/app/agent-reasoning-collapsed/agent-reasoning-collapsed.contents.html",
11
11
  "captured_at": "2026-05-10T17:53:43.459Z"
12
12
  }
@@ -2,7 +2,7 @@
2
2
  "name": "chat-page-shell",
3
3
  "kind": "page",
4
4
  "primary": "article",
5
- "page": "/apps/generic-shells/app/chat-page/chat-page.contents.html",
5
+ "page": "/catalog/page-shells/app/chat-page/chat-page.contents.html",
6
6
  "slots": [
7
7
  {
8
8
  "name": "sidebar",
@@ -28,6 +28,6 @@
28
28
  "nested": [],
29
29
  "attrs": {},
30
30
  "html": "<article style=\"display:flex; height:100vh;\">\n <aside data-chunk-slot=\"sidebar\" style=\"width:240px; display:flex; flex-direction:column; border-right:1px solid var(--a-border-subtle);\">\n <header style=\"padding:var(--a-space-3); border-bottom:1px solid var(--a-border-subtle);\">\n <text-ui strong size=\"lg\">Conversations</text-ui>\n </header>\n <section style=\"flex:1; overflow:auto; padding:var(--a-space-2);\">\n <stack-ui gap=\"1\">\n <card-ui variant=\"subtle\" padding=\"sm\">\n <text-ui strong>Engineering</text-ui>\n <text-ui size=\"sm\" color=\"subtle\">12 messages</text-ui>\n </card-ui>\n <card-ui variant=\"subtle\" padding=\"sm\">\n <text-ui strong>Design</text-ui>\n <text-ui size=\"sm\" color=\"subtle\">5 messages</text-ui>\n </card-ui>\n </stack-ui>\n </section>\n </aside>\n\n <section style=\"flex:1; display:flex; flex-direction:column; min-width:0;\">\n <header data-chunk-slot=\"header\" style=\"padding:var(--a-space-3); border-bottom:1px solid var(--a-border-subtle); display:flex; align-items:center; justify-content:space-between;\">\n <text-ui strong size=\"lg\">#engineering</text-ui>\n <row-ui gap=\"2\">\n <button-ui icon=\"search\" variant=\"ghost\" size=\"sm\"></button-ui>\n <button-ui icon=\"gear\" variant=\"ghost\" size=\"sm\"></button-ui>\n </row-ui>\n </header>\n\n <section data-chunk-slot=\"messages\" style=\"flex:1; overflow:auto; padding:var(--a-space-3);\">\n <stack-ui gap=\"3\">\n <row-ui gap=\"2\" align=\"start\">\n <avatar-ui src=\"/avatar-1.png\" size=\"sm\"></avatar-ui>\n <card-ui variant=\"subtle\" padding=\"sm\">\n <text-ui>Hey team, the deploy is ready for review.</text-ui>\n </card-ui>\n </row-ui>\n <row-ui gap=\"2\" align=\"start\" justify=\"end\">\n <card-ui variant=\"primary\" padding=\"sm\">\n <text-ui>On it — checking the staging logs now.</text-ui>\n </card-ui>\n <avatar-ui src=\"/avatar-2.png\" size=\"sm\"></avatar-ui>\n </row-ui>\n </stack-ui>\n </section>\n\n <footer data-chunk-slot=\"input\" style=\"padding:var(--a-space-3); border-top:1px solid var(--a-border-subtle);\">\n <row-ui gap=\"2\" align=\"center\">\n <button-ui icon=\"plus\" variant=\"ghost\" size=\"sm\"></button-ui>\n <input-ui placeholder=\"Type a message…\" style=\"flex:1;\"></input-ui>\n <button-ui icon=\"paper-plane\" variant=\"primary\" size=\"sm\"></button-ui>\n </row-ui>\n </footer>\n </section>\n</article>",
31
- "source": "apps/generic-shells/app/chat-page/chat-page.contents.html",
31
+ "source": "catalog/page-shells/app/chat-page/chat-page.contents.html",
32
32
  "captured_at": "2026-05-10T17:53:43.459Z"
33
33
  }
@@ -2,13 +2,13 @@
2
2
  "name": "chat-streaming-surface",
3
3
  "kind": "block",
4
4
  "primary": "card-ui",
5
- "page": "/apps/patterns/app/chat-streaming-surface/chat-streaming-surface.contents.html",
5
+ "page": "/catalog/ui-patterns/app/chat-streaming-surface/chat-streaming-surface.contents.html",
6
6
  "slots": [],
7
7
  "nested": [],
8
8
  "attrs": {
9
9
  "raw": ""
10
10
  },
11
11
  "html": "<card-ui raw>\n <section>\n <chat-thread-ui streaming>\n <div role=\"user\">What's the status?</div>\n <div role=\"assistant\">Processing your request...</div>\n </chat-thread-ui>\n </section>\n <footer>\n <row-ui gap=\"2\" align=\"center\">\n <chat-input-ui placeholder=\"Ask follow-up...\" grow></chat-input-ui>\n <button-ui icon=\"paper-plane-right\" variant=\"primary\" size=\"sm\"></button-ui>\n </row-ui>\n </footer>\n</card-ui>",
12
- "source": "apps/patterns/app/chat-streaming-surface/chat-streaming-surface.contents.html",
12
+ "source": "catalog/ui-patterns/app/chat-streaming-surface/chat-streaming-surface.contents.html",
13
13
  "captured_at": "2026-05-10T17:53:43.459Z"
14
14
  }
@@ -2,11 +2,11 @@
2
2
  "name": "command-palette",
3
3
  "kind": "block",
4
4
  "primary": "modal-ui",
5
- "page": "/apps/patterns/app/command-palette/command-palette.contents.html",
5
+ "page": "/catalog/ui-patterns/app/command-palette/command-palette.contents.html",
6
6
  "slots": [],
7
7
  "nested": [],
8
8
  "attrs": {},
9
9
  "html": "<modal-ui>\n <header>\n <input-ui placeholder=\"Search commands...\" icon=\"magnifying-glass\" autofocus></input-ui>\n </header>\n <section>\n <command-ui></command-ui>\n </section>\n</modal-ui>",
10
- "source": "apps/patterns/app/command-palette/command-palette.contents.html",
10
+ "source": "catalog/ui-patterns/app/command-palette/command-palette.contents.html",
11
11
  "captured_at": "2026-05-10T17:53:43.459Z"
12
12
  }
@@ -2,11 +2,11 @@
2
2
  "name": "conversion-funnel-6step",
3
3
  "kind": "block",
4
4
  "primary": "card-ui",
5
- "page": "/apps/patterns/app/conversion-funnel-6step/conversion-funnel-6step.contents.html",
5
+ "page": "/catalog/ui-patterns/app/conversion-funnel-6step/conversion-funnel-6step.contents.html",
6
6
  "slots": [],
7
7
  "nested": [],
8
8
  "attrs": {},
9
9
  "html": "<card-ui>\n <header>\n <h3>Conversion Funnel</h3>\n <text-ui slot=\"description\" color=\"subtle\">6 stages from visit to purchase</text-ui>\n </header>\n <section>\n <col-ui gap=\"3\">\n <row-ui align=\"center\" gap=\"3\">\n <col-ui gap=\"0\" grow>\n <text-ui strong>Visited landing page</text-ui>\n <text-ui color=\"subtle\" size=\"sm\">28,432 visitors</text-ui>\n </col-ui>\n <text-ui strong>100%</text-ui>\n </row-ui>\n <progress-row-ui label=\"Viewed pricing\" value=\"68\" meta=\"19,334 · 68%\"></progress-row-ui>\n <progress-row-ui label=\"Started trial\" value=\"42\" meta=\"11,942 · 42%\"></progress-row-ui>\n <progress-row-ui label=\"Activated\" value=\"28\" meta=\"7,961 · 28%\"></progress-row-ui>\n <progress-row-ui label=\"Used core feature\" value=\"18\" meta=\"5,118 · 18%\"></progress-row-ui>\n <progress-row-ui label=\"Upgraded to paid\" value=\"8\" meta=\"2,274 · 8.0%\"></progress-row-ui>\n </col-ui>\n </section>\n</card-ui>",
10
- "source": "apps/patterns/app/conversion-funnel-6step/conversion-funnel-6step.contents.html",
10
+ "source": "catalog/ui-patterns/app/conversion-funnel-6step/conversion-funnel-6step.contents.html",
11
11
  "captured_at": "2026-05-10T17:53:43.459Z"
12
12
  }
@@ -2,11 +2,11 @@
2
2
  "name": "destructive-confirm-modal",
3
3
  "kind": "block",
4
4
  "primary": "modal-ui",
5
- "page": "/apps/patterns/app/destructive-confirm-modal/destructive-confirm-modal.contents.html",
5
+ "page": "/catalog/ui-patterns/app/destructive-confirm-modal/destructive-confirm-modal.contents.html",
6
6
  "slots": [],
7
7
  "nested": [],
8
8
  "attrs": {},
9
9
  "html": "<modal-ui>\n <header>\n <span slot=\"icon\">\n <avatar-ui icon=\"warning-circle\" color=\"danger\"></avatar-ui>\n </span>\n <span slot=\"heading\">\n <text-ui strong>Are you sure?</text-ui>\n </span>\n </header>\n <section>\n <col-ui gap=\"3\">\n <text-ui>This action cannot be undone. Type the resource name below to confirm.</text-ui>\n <field-ui label=\"Resource name\">\n <input-ui placeholder=\"my-resource-123\"></input-ui>\n </field-ui>\n </col-ui>\n </section>\n <footer>\n <row-ui gap=\"2\" justify=\"end\">\n <button-ui text=\"Cancel\" variant=\"ghost\"></button-ui>\n <button-ui text=\"Delete\" color=\"danger\"></button-ui>\n </row-ui>\n </footer>\n</modal-ui>",
10
- "source": "apps/patterns/app/destructive-confirm-modal/destructive-confirm-modal.contents.html",
10
+ "source": "catalog/ui-patterns/app/destructive-confirm-modal/destructive-confirm-modal.contents.html",
11
11
  "captured_at": "2026-05-10T17:53:43.459Z"
12
12
  }
@@ -2,7 +2,7 @@
2
2
  "name": "doc-editor-shell",
3
3
  "kind": "page",
4
4
  "primary": "article",
5
- "page": "/apps/generic-shells/app/doc-editor/doc-editor.contents.html",
5
+ "page": "/catalog/page-shells/app/doc-editor/doc-editor.contents.html",
6
6
  "slots": [
7
7
  {
8
8
  "name": "toolbar",
@@ -28,6 +28,6 @@
28
28
  "nested": [],
29
29
  "attrs": {},
30
30
  "html": "<article style=\"display:flex; height:100vh;\">\n <section style=\"flex:1; display:flex; flex-direction:column; min-width:0;\">\n <header data-chunk-slot=\"toolbar\" style=\"padding:var(--a-space-2) var(--a-space-3); border-bottom:1px solid var(--a-border-subtle); display:flex; align-items:center; justify-content:space-between;\">\n <row-ui gap=\"2\" align=\"center\">\n <button-ui icon=\"bold\" variant=\"ghost\" size=\"sm\"></button-ui>\n <button-ui icon=\"italic\" variant=\"ghost\" size=\"sm\"></button-ui>\n <separator-ui orientation=\"vertical\"></separator-ui>\n <button-ui icon=\"list\" variant=\"ghost\" size=\"sm\"></button-ui>\n <button-ui icon=\"code\" variant=\"ghost\" size=\"sm\"></button-ui>\n </row-ui>\n <row-ui gap=\"2\">\n <button-ui text=\"Share\" variant=\"outline\" size=\"sm\" icon=\"share\"></button-ui>\n <button-ui text=\"Publish\" variant=\"primary\" size=\"sm\" icon=\"globe\"></button-ui>\n </row-ui>\n </header>\n\n <section style=\"flex:1; display:flex; overflow:hidden;\">\n <section data-chunk-slot=\"editor\" style=\"flex:1; padding:var(--a-space-4); overflow:auto;\">\n <stack-ui gap=\"3\" style=\"max-width:720px; margin:0 auto;\">\n <input-ui placeholder=\"Document title\" size=\"lg\" style=\"font-weight:600;\"></input-ui>\n <textarea-ui placeholder=\"Start writing…\" style=\"min-height:400px; resize:vertical;\"></textarea-ui>\n </stack-ui>\n </section>\n\n <aside data-chunk-slot=\"preview\" style=\"width:360px; border-left:1px solid var(--a-border-subtle); padding:var(--a-space-3); overflow:auto; background:var(--a-bg-subtle);\">\n <stack-ui gap=\"3\">\n <text-ui strong size=\"sm\">Preview</text-ui>\n <card-ui padding=\"md\">\n <text-ui color=\"subtle\">Rendered preview will appear here.</text-ui>\n </card-ui>\n </stack-ui>\n </aside>\n </section>\n </section>\n\n <aside data-chunk-slot=\"metadata\" style=\"width:240px; border-left:1px solid var(--a-border-subtle); padding:var(--a-space-3); overflow:auto;\">\n <stack-ui gap=\"4\">\n <text-ui strong size=\"sm\">Metadata</text-ui>\n <stack-ui gap=\"1\">\n <label-ui>Status</label-ui>\n <select-ui>\n <option>Draft</option>\n <option>Review</option>\n <option>Published</option>\n </select-ui>\n </stack-ui>\n <stack-ui gap=\"1\">\n <label-ui>Tags</label-ui>\n <input-ui placeholder=\"Add tags…\"></input-ui>\n </stack-ui>\n <stack-ui gap=\"1\">\n <label-ui>Author</label-ui>\n <row-ui gap=\"2\" align=\"center\">\n <avatar-ui size=\"sm\" src=\"/avatar.png\"></avatar-ui>\n <text-ui size=\"sm\">Alex Chen</text-ui>\n </row-ui>\n </stack-ui>\n </stack-ui>\n </aside>\n</article>",
31
- "source": "apps/generic-shells/app/doc-editor/doc-editor.contents.html",
31
+ "source": "catalog/page-shells/app/doc-editor/doc-editor.contents.html",
32
32
  "captured_at": "2026-05-10T17:53:43.459Z"
33
33
  }
@@ -2,11 +2,11 @@
2
2
  "name": "editor-code-pane",
3
3
  "kind": "block",
4
4
  "primary": "section",
5
- "page": "/apps/patterns/app/editor-code-pane/editor-code-pane.contents.html",
5
+ "page": "/catalog/ui-patterns/app/editor-code-pane/editor-code-pane.contents.html",
6
6
  "slots": [],
7
7
  "nested": [],
8
8
  "attrs": {},
9
9
  "html": "<section style=\"display:flex; flex-direction:column; height:100%;\">\n <header>\n <row-ui gap=\"2\" align=\"center\">\n <button-ui text=\"Run\" variant=\"primary\" size=\"sm\" icon=\"play\"></button-ui>\n <button-ui text=\"Save\" variant=\"outline\" size=\"sm\" icon=\"floppy-disk\"></button-ui>\n </row-ui>\n </header>\n <section style=\"flex:1; padding:8px; background:var(--a-bg-chrome);\">\n <textarea-ui placeholder=\"// Write your code here\" style=\"height:100%; width:100%; font-family:monospace;\"></textarea-ui>\n </section>\n</section>",
10
- "source": "apps/patterns/app/editor-code-pane/editor-code-pane.contents.html",
10
+ "source": "catalog/ui-patterns/app/editor-code-pane/editor-code-pane.contents.html",
11
11
  "captured_at": "2026-05-10T17:53:43.459Z"
12
12
  }
@@ -2,7 +2,7 @@
2
2
  "name": "editor-page-shell",
3
3
  "kind": "page",
4
4
  "primary": "article",
5
- "page": "/apps/generic-shells/app/editor-page/editor-page.contents.html",
5
+ "page": "/catalog/page-shells/app/editor-page/editor-page.contents.html",
6
6
  "slots": [
7
7
  {
8
8
  "name": "editor-pane",
@@ -18,6 +18,6 @@
18
18
  "nested": [],
19
19
  "attrs": {},
20
20
  "html": "<article style=\"display:flex; height:100vh;\">\n <section data-chunk-slot=\"editor-pane\" style=\"flex:1; display:flex; flex-direction:column;\">\n <header>\n <row-ui gap=\"2\" align=\"center\">\n <button-ui text=\"Run\" variant=\"primary\" size=\"sm\" icon=\"play\"></button-ui>\n <button-ui text=\"Save\" variant=\"outline\" size=\"sm\" icon=\"floppy-disk\"></button-ui>\n </row-ui>\n </header>\n <section style=\"flex:1;\">\n <textarea-ui placeholder=\"// Write your code here\" style=\"height:100%;\"></textarea-ui>\n </section>\n </section>\n\n <section data-chunk-slot=\"preview-pane\" style=\"flex:1; display:flex; flex-direction:column;\">\n <header>\n <text-ui strong>Preview</text-ui>\n </header>\n <section style=\"flex:1; background:var(--a-bg-subtle);\">\n <text-ui color=\"subtle\">Preview will appear here</text-ui>\n </section>\n </section>\n</article>",
21
- "source": "apps/generic-shells/app/editor-page/editor-page.contents.html",
21
+ "source": "catalog/page-shells/app/editor-page/editor-page.contents.html",
22
22
  "captured_at": "2026-05-10T17:53:43.459Z"
23
23
  }
@@ -2,11 +2,11 @@
2
2
  "name": "editor-preview-pane",
3
3
  "kind": "block",
4
4
  "primary": "section",
5
- "page": "/apps/patterns/app/editor-preview-pane/editor-preview-pane.contents.html",
5
+ "page": "/catalog/ui-patterns/app/editor-preview-pane/editor-preview-pane.contents.html",
6
6
  "slots": [],
7
7
  "nested": [],
8
8
  "attrs": {},
9
9
  "html": "<section style=\"display:flex; flex-direction:column; height:100%;\">\n <header>\n <text-ui strong size=\"sm\">Preview</text-ui>\n </header>\n <section style=\"flex:1; padding:8px; background:var(--a-bg-1);\">\n <text-ui color=\"subtle\">Live preview will appear here</text-ui>\n </section>\n</section>",
10
- "source": "apps/patterns/app/editor-preview-pane/editor-preview-pane.contents.html",
10
+ "source": "catalog/ui-patterns/app/editor-preview-pane/editor-preview-pane.contents.html",
11
11
  "captured_at": "2026-05-10T17:53:43.459Z"
12
12
  }
@@ -2,7 +2,7 @@
2
2
  "name": "error-page-shell",
3
3
  "kind": "page",
4
4
  "primary": "article",
5
- "page": "/apps/generic-shells/app/error-page/error-page.contents.html",
5
+ "page": "/catalog/page-shells/app/error-page/error-page.contents.html",
6
6
  "slots": [
7
7
  {
8
8
  "name": "error-content",
@@ -18,6 +18,6 @@
18
18
  "nested": [],
19
19
  "attrs": {},
20
20
  "html": "<article>\n <section data-chunk-slot=\"error-content\">\n <col-ui align=\"center\" gap=\"4\">\n <text-ui size=\"xl\" variant=\"display\">404</text-ui>\n <h1>Page not found</h1>\n <text-ui color=\"subtle\">The page you are looking for does not exist or has been moved.</text-ui>\n </col-ui>\n </section>\n\n <nav data-chunk-slot=\"navigation\">\n <row-ui gap=\"3\" justify=\"center\">\n <button-ui text=\"Go home\" variant=\"primary\" icon=\"house\"></button-ui>\n <button-ui text=\"Back\" variant=\"outline\" icon=\"arrow-left\"></button-ui>\n </row-ui>\n </nav>\n</article>",
21
- "source": "apps/generic-shells/app/error-page/error-page.contents.html",
21
+ "source": "catalog/page-shells/app/error-page/error-page.contents.html",
22
22
  "captured_at": "2026-05-10T17:53:43.459Z"
23
23
  }
@@ -2,7 +2,7 @@
2
2
  "name": "form-page-shell",
3
3
  "kind": "page",
4
4
  "primary": "article",
5
- "page": "/apps/generic-shells/app/form-page/form-page.contents.html",
5
+ "page": "/catalog/page-shells/app/form-page/form-page.contents.html",
6
6
  "slots": [
7
7
  {
8
8
  "name": "page-header",
@@ -23,6 +23,6 @@
23
23
  "nested": [],
24
24
  "attrs": {},
25
25
  "html": "<article>\n <header data-chunk-slot=\"page-header\">\n <h1>Sign in</h1>\n <text-ui color=\"subtle\">Enter your credentials to continue</text-ui>\n </header>\n\n <section data-chunk-slot=\"form-content\">\n <form>\n <field-ui label=\"Email\">\n <input-ui type=\"email\" placeholder=\"you@example.com\"></input-ui>\n </field-ui>\n <field-ui label=\"Password\">\n <input-ui type=\"password\" placeholder=\"••••••••\"></input-ui>\n </field-ui>\n </form>\n </section>\n\n <footer data-chunk-slot=\"page-footer\">\n <button-ui text=\"Sign in\" variant=\"primary\"></button-ui>\n <button-ui text=\"Forgot password?\" variant=\"ghost\" size=\"sm\"></button-ui>\n </footer>\n</article>",
26
- "source": "apps/generic-shells/app/form-page/form-page.contents.html",
26
+ "source": "catalog/page-shells/app/form-page/form-page.contents.html",
27
27
  "captured_at": "2026-05-10T17:53:43.459Z"
28
28
  }
@@ -2,7 +2,7 @@
2
2
  "name": "gallery-page-shell",
3
3
  "kind": "page",
4
4
  "primary": "article",
5
- "page": "/apps/generic-shells/app/gallery-page/gallery-page.contents.html",
5
+ "page": "/catalog/page-shells/app/gallery-page/gallery-page.contents.html",
6
6
  "slots": [
7
7
  {
8
8
  "name": "header",
@@ -28,6 +28,6 @@
28
28
  "nested": [],
29
29
  "attrs": {},
30
30
  "html": "<article style=\"display:flex; flex-direction:column; height:100vh;\">\n <header data-chunk-slot=\"header\" style=\"padding:var(--a-space-3); border-bottom:1px solid var(--a-border-subtle); display:flex; align-items:center; justify-content:space-between;\">\n <text-ui strong size=\"lg\">Media Gallery</text-ui>\n <row-ui gap=\"2\">\n <button-ui icon=\"upload\" variant=\"outline\" size=\"sm\" text=\"Upload\"></button-ui>\n <button-ui icon=\"folder\" variant=\"ghost\" size=\"sm\"></button-ui>\n </row-ui>\n </header>\n\n <section data-chunk-slot=\"filter-bar\" style=\"padding:var(--a-space-2) var(--a-space-3); border-bottom:1px solid var(--a-border-subtle); display:flex; align-items:center; gap:var(--a-space-2);\">\n <input-ui placeholder=\"Search media…\" icon=\"search\" style=\"width:240px;\"></input-ui>\n <select-ui size=\"sm\">\n <option>All types</option>\n <option>Images</option>\n <option>Videos</option>\n <option>Documents</option>\n </select-ui>\n <select-ui size=\"sm\">\n <option>Any time</option>\n <option>Today</option>\n <option>This week</option>\n <option>This month</option>\n </select-ui>\n </section>\n\n <section data-chunk-slot=\"grid\" style=\"flex:1; overflow:auto; padding:var(--a-space-3);\">\n <grid-ui columns=\"4\" gap=\"3\">\n <card-ui padding=\"0\" style=\"aspect-ratio:1; display:flex; align-items:center; justify-content:center; background:var(--a-bg-subtle);\">\n <text-ui color=\"subtle\" size=\"sm\">Image 1</text-ui>\n </card-ui>\n <card-ui padding=\"0\" style=\"aspect-ratio:1; display:flex; align-items:center; justify-content:center; background:var(--a-bg-subtle);\">\n <text-ui color=\"subtle\" size=\"sm\">Image 2</text-ui>\n </card-ui>\n <card-ui padding=\"0\" style=\"aspect-ratio:1; display:flex; align-items:center; justify-content:center; background:var(--a-bg-subtle);\">\n <text-ui color=\"subtle\" size=\"sm\">Image 3</text-ui>\n </card-ui>\n <card-ui padding=\"0\" style=\"aspect-ratio:1; display:flex; align-items:center; justify-content:center; background:var(--a-bg-subtle);\">\n <text-ui color=\"subtle\" size=\"sm\">Image 4</text-ui>\n </card-ui>\n <card-ui padding=\"0\" style=\"aspect-ratio:1; display:flex; align-items:center; justify-content:center; background:var(--a-bg-subtle);\">\n <text-ui color=\"subtle\" size=\"sm\">Image 5</text-ui>\n </card-ui>\n <card-ui padding=\"0\" style=\"aspect-ratio:1; display:flex; align-items:center; justify-content:center; background:var(--a-bg-subtle);\">\n <text-ui color=\"subtle\" size=\"sm\">Image 6</text-ui>\n </card-ui>\n <card-ui padding=\"0\" style=\"aspect-ratio:1; display:flex; align-items:center; justify-content:center; background:var(--a-bg-subtle);\">\n <text-ui color=\"subtle\" size=\"sm\">Image 7</text-ui>\n </card-ui>\n <card-ui padding=\"0\" style=\"aspect-ratio:1; display:flex; align-items:center; justify-content:center; background:var(--a-bg-subtle);\">\n <text-ui color=\"subtle\" size=\"sm\">Image 8</text-ui>\n </card-ui>\n </grid-ui>\n </section>\n\n <dialog-ui data-chunk-slot=\"lightbox\" id=\"lightbox\" style=\"display:none;\">\n <img src=\"/placeholder.png\" alt=\"Preview\" style=\"max-width:90vw; max-height:90vh; object-fit:contain;\">\n </dialog-ui>\n</article>",
31
- "source": "apps/generic-shells/app/gallery-page/gallery-page.contents.html",
31
+ "source": "catalog/page-shells/app/gallery-page/gallery-page.contents.html",
32
32
  "captured_at": "2026-05-10T17:53:43.459Z"
33
33
  }
@@ -2,7 +2,7 @@
2
2
  "name": "kanban-board-3col",
3
3
  "kind": "block",
4
4
  "primary": "grid-ui",
5
- "page": "/apps/patterns/app/kanban-board-3col/kanban-board-3col.contents.html",
5
+ "page": "/catalog/ui-patterns/app/kanban-board-3col/kanban-board-3col.contents.html",
6
6
  "slots": [],
7
7
  "nested": [],
8
8
  "attrs": {
@@ -10,6 +10,6 @@
10
10
  "gap": "4"
11
11
  },
12
12
  "html": "<grid-ui columns=\"3\" gap=\"4\">\n <card-ui raw>\n <header>\n <row-ui gap=\"2\" align=\"center\">\n <text-ui weight=\"semibold\">To Do</text-ui>\n <badge-ui text=\"3\" variant=\"muted\" size=\"sm\"></badge-ui>\n </row-ui>\n </header>\n <section>\n <col-ui gap=\"2\">\n <card-ui size=\"sm\"><section><text-ui>Design system tokens</text-ui></section></card-ui>\n <card-ui size=\"sm\"><section><text-ui>Component audit</text-ui></section></card-ui>\n <card-ui size=\"sm\"><section><text-ui>Accessibility review</text-ui></section></card-ui>\n </col-ui>\n </section>\n </card-ui>\n <card-ui raw>\n <header>\n <row-ui gap=\"2\" align=\"center\">\n <text-ui weight=\"semibold\">In Progress</text-ui>\n <badge-ui text=\"2\" variant=\"accent\" size=\"sm\"></badge-ui>\n </row-ui>\n </header>\n <section>\n <col-ui gap=\"2\">\n <card-ui size=\"sm\"><section><text-ui>Dark mode palette</text-ui></section></card-ui>\n <card-ui size=\"sm\"><section><text-ui>Button variants</text-ui></section></card-ui>\n </col-ui>\n </section>\n </card-ui>\n <card-ui raw>\n <header>\n <row-ui gap=\"2\" align=\"center\">\n <text-ui weight=\"semibold\">Done</text-ui>\n <badge-ui text=\"5\" variant=\"success\" size=\"sm\"></badge-ui>\n </row-ui>\n </header>\n <section>\n <col-ui gap=\"2\">\n <card-ui size=\"sm\"><section><text-ui>Typography scale</text-ui></section></card-ui>\n <card-ui size=\"sm\"><section><text-ui>Spacing tokens</text-ui></section></card-ui>\n </col-ui>\n </section>\n </card-ui>\n</grid-ui>",
13
- "source": "apps/patterns/app/kanban-board-3col/kanban-board-3col.contents.html",
13
+ "source": "catalog/ui-patterns/app/kanban-board-3col/kanban-board-3col.contents.html",
14
14
  "captured_at": "2026-05-10T17:53:43.459Z"
15
15
  }
@@ -2,7 +2,7 @@
2
2
  "name": "kanban-page-shell",
3
3
  "kind": "page",
4
4
  "primary": "article",
5
- "page": "/apps/generic-shells/app/kanban-page/kanban-page.contents.html",
5
+ "page": "/catalog/page-shells/app/kanban-page/kanban-page.contents.html",
6
6
  "slots": [
7
7
  {
8
8
  "name": "header",
@@ -23,6 +23,6 @@
23
23
  "nested": [],
24
24
  "attrs": {},
25
25
  "html": "<article style=\"display:flex; flex-direction:column; height:100vh;\">\n <header data-chunk-slot=\"header\" style=\"padding:var(--a-space-3); border-bottom:1px solid var(--a-border-subtle); display:flex; align-items:center; justify-content:space-between;\">\n <row-ui gap=\"2\" align=\"center\">\n <text-ui strong size=\"lg\">Sprint 42</text-ui>\n <badge-ui text=\"3 open\" variant=\"info\" size=\"sm\"></badge-ui>\n </row-ui>\n <row-ui gap=\"2\">\n <input-ui placeholder=\"Search tasks…\" icon=\"search\" size=\"sm\" style=\"width:200px;\"></input-ui>\n <button-ui icon=\"filter\" variant=\"ghost\" size=\"sm\"></button-ui>\n <button-ui text=\"New task\" variant=\"primary\" size=\"sm\" icon=\"plus\"></button-ui>\n </row-ui>\n </header>\n\n <section data-chunk-slot=\"board\" style=\"flex:1; overflow:auto; padding:var(--a-space-3);\">\n <row-ui gap=\"3\" align=\"start\" style=\"min-width:max-content;\">\n <stack-ui gap=\"2\" style=\"width:280px;\">\n <row-ui gap=\"2\" align=\"center\" justify=\"between\">\n <text-ui strong size=\"sm\">To do</text-ui>\n <badge-ui text=\"3\" size=\"sm\" variant=\"subtle\"></badge-ui>\n </row-ui>\n <card-ui padding=\"sm\">\n <stack-ui gap=\"1\">\n <text-ui strong size=\"sm\">Design review</text-ui>\n <text-ui size=\"sm\" color=\"subtle\">Due tomorrow</text-ui>\n <row-ui gap=\"1\" align=\"center\">\n <badge-ui text=\"P1\" size=\"sm\" variant=\"danger\"></badge-ui>\n <avatar-ui size=\"xs\" src=\"/avatar-1.png\"></avatar-ui>\n </row-ui>\n </stack-ui>\n </card-ui>\n <card-ui padding=\"sm\">\n <stack-ui gap=\"1\">\n <text-ui strong size=\"sm\">API spec</text-ui>\n <text-ui size=\"sm\" color=\"subtle\">Due Friday</text-ui>\n <row-ui gap=\"1\" align=\"center\">\n <badge-ui text=\"P2\" size=\"sm\" variant=\"warning\"></badge-ui>\n <avatar-ui size=\"xs\" src=\"/avatar-2.png\"></avatar-ui>\n </row-ui>\n </stack-ui>\n </card-ui>\n <card-ui padding=\"sm\">\n <stack-ui gap=\"1\">\n <text-ui strong size=\"sm\">Write tests</text-ui>\n <text-ui size=\"sm\" color=\"subtle\">No due date</text-ui>\n <row-ui gap=\"1\" align=\"center\">\n <badge-ui text=\"P3\" size=\"sm\" variant=\"info\"></badge-ui>\n <avatar-ui size=\"xs\" src=\"/avatar-3.png\"></avatar-ui>\n </row-ui>\n </stack-ui>\n </card-ui>\n </stack-ui>\n\n <stack-ui gap=\"2\" style=\"width:280px;\">\n <row-ui gap=\"2\" align=\"center\" justify=\"between\">\n <text-ui strong size=\"sm\">In progress</text-ui>\n <badge-ui text=\"2\" size=\"sm\" variant=\"subtle\"></badge-ui>\n </row-ui>\n <card-ui padding=\"sm\">\n <stack-ui gap=\"1\">\n <text-ui strong size=\"sm\">Implement auth</text-ui>\n <text-ui size=\"sm\" color=\"subtle\">2 days left</text-ui>\n <row-ui gap=\"1\" align=\"center\">\n <badge-ui text=\"P1\" size=\"sm\" variant=\"danger\"></badge-ui>\n <avatar-ui size=\"xs\" src=\"/avatar-1.png\"></avatar-ui>\n </row-ui>\n </stack-ui>\n </card-ui>\n </stack-ui>\n\n <stack-ui gap=\"2\" style=\"width:280px;\">\n <row-ui gap=\"2\" align=\"center\" justify=\"between\">\n <text-ui strong size=\"sm\">Done</text-ui>\n <badge-ui text=\"5\" size=\"sm\" variant=\"subtle\"></badge-ui>\n </row-ui>\n <card-ui padding=\"sm\" variant=\"subtle\">\n <stack-ui gap=\"1\">\n <text-ui strong size=\"sm\" color=\"subtle\">Setup repo</text-ui>\n <text-ui size=\"sm\" color=\"subtle\">Completed yesterday</text-ui>\n </stack-ui>\n </card-ui>\n </stack-ui>\n </row-ui>\n </section>\n\n <drawer-ui data-chunk-slot=\"detail-drawer\" id=\"task-detail\" style=\"display:none;\">\n <stack-ui gap=\"3\" style=\"width:360px; padding:var(--a-space-4);\">\n <text-ui strong size=\"lg\">Task detail</text-ui>\n <stack-ui gap=\"1\">\n <label-ui>Title</label-ui>\n <input-ui value=\"Design review\"></input-ui>\n </stack-ui>\n <stack-ui gap=\"1\">\n <label-ui>Description</label-ui>\n <textarea-ui placeholder=\"Add details…\"></textarea-ui>\n </stack-ui>\n <row-ui gap=\"2\" justify=\"end\">\n <button-ui text=\"Cancel\" variant=\"ghost\" size=\"sm\"></button-ui>\n <button-ui text=\"Save\" variant=\"primary\" size=\"sm\"></button-ui>\n </row-ui>\n </stack-ui>\n </drawer-ui>\n</article>",
26
- "source": "apps/generic-shells/app/kanban-page/kanban-page.contents.html",
26
+ "source": "catalog/page-shells/app/kanban-page/kanban-page.contents.html",
27
27
  "captured_at": "2026-05-10T17:53:43.459Z"
28
28
  }
@@ -2,11 +2,11 @@
2
2
  "name": "marketing-hero-cta",
3
3
  "kind": "block",
4
4
  "primary": "section",
5
- "page": "/apps/patterns/app/marketing-hero-cta/marketing-hero-cta.contents.html",
5
+ "page": "/catalog/ui-patterns/app/marketing-hero-cta/marketing-hero-cta.contents.html",
6
6
  "slots": [],
7
7
  "nested": [],
8
8
  "attrs": {},
9
9
  "html": "<section>\n <col-ui align=\"center\" gap=\"5\">\n <col-ui align=\"center\" gap=\"2\">\n <text-ui size=\"sm\" color=\"accent\" weight=\"semibold\" tracking=\"wide\">ADIAUI v0.3</text-ui>\n <h1>Build UIs with natural language</h1>\n <text-ui size=\"lg\" color=\"subtle\" text-align=\"center\">Light-DOM web components + generative UI pipeline.<br>Ship faster, iterate smarter.</text-ui>\n </col-ui>\n <row-ui gap=\"3\">\n <button-ui text=\"Get started\" variant=\"primary\" size=\"lg\"></button-ui>\n <button-ui text=\"See demo\" variant=\"outline\" size=\"lg\" icon=\"play-circle\"></button-ui>\n </row-ui>\n </col-ui>\n</section>",
10
- "source": "apps/patterns/app/marketing-hero-cta/marketing-hero-cta.contents.html",
10
+ "source": "catalog/ui-patterns/app/marketing-hero-cta/marketing-hero-cta.contents.html",
11
11
  "captured_at": "2026-05-10T17:53:43.459Z"
12
12
  }
@@ -2,7 +2,7 @@
2
2
  "name": "marketing-page-shell",
3
3
  "kind": "page",
4
4
  "primary": "article",
5
- "page": "/apps/generic-shells/app/marketing-page/marketing-page.contents.html",
5
+ "page": "/catalog/page-shells/app/marketing-page/marketing-page.contents.html",
6
6
  "slots": [
7
7
  {
8
8
  "name": "hero",
@@ -23,6 +23,6 @@
23
23
  "nested": [],
24
24
  "attrs": {},
25
25
  "html": "<article>\n <section data-chunk-slot=\"hero\">\n <col-ui align=\"center\" gap=\"4\">\n <h1>Build faster with AdiaUI</h1>\n <text-ui color=\"subtle\" size=\"lg\">Light-DOM web components + generative UI pipeline</text-ui>\n <row-ui gap=\"3\">\n <button-ui text=\"Get started\" variant=\"primary\" size=\"lg\"></button-ui>\n <button-ui text=\"See demo\" variant=\"outline\" size=\"lg\"></button-ui>\n </row-ui>\n </col-ui>\n </section>\n\n <section data-chunk-slot=\"features\">\n <grid-ui columns=\"3\" gap=\"4\">\n <card-ui>\n <header><h3>94+ Primitives</h3></header>\n <section><text-ui color=\"subtle\">Battle-tested components for every surface</text-ui></section>\n </card-ui>\n <card-ui>\n <header><h3>Gen-UI Pipeline</h3></header>\n <section><text-ui color=\"subtle\">Generate UIs from natural language</text-ui></section>\n </card-ui>\n <card-ui>\n <header><h3>A2UI Runtime</h3></header>\n <section><text-ui color=\"subtle\">Agent-to-UI JSON with live rendering</text-ui></section>\n </card-ui>\n </grid-ui>\n </section>\n\n <section data-chunk-slot=\"cta\">\n <card-ui raw align=\"center\">\n <col-ui align=\"center\" gap=\"3\">\n <h2>Ready to ship?</h2>\n <text-ui color=\"subtle\">Start building in minutes</text-ui>\n <button-ui text=\"Start free trial\" variant=\"primary\" size=\"lg\"></button-ui>\n </col-ui>\n </card-ui>\n </section>\n</article>",
26
- "source": "apps/generic-shells/app/marketing-page/marketing-page.contents.html",
26
+ "source": "catalog/page-shells/app/marketing-page/marketing-page.contents.html",
27
27
  "captured_at": "2026-05-10T17:53:43.459Z"
28
28
  }
@@ -2,13 +2,13 @@
2
2
  "name": "playground-app-shell",
3
3
  "kind": "block",
4
4
  "primary": "admin-shell",
5
- "page": "/apps/app-shell/app/app-shell.contents.html",
5
+ "page": "/playgrounds/admin-shell/app/admin-shell.contents.html",
6
6
  "slots": [],
7
7
  "nested": [],
8
8
  "attrs": {
9
9
  "mode": "rounded borderless"
10
10
  },
11
- "html": "<admin-shell mode=\"rounded borderless\">\n <!-- ═══════════════ LEFT SIDEBAR ═══════════════ -->\n <aside-ui slot=\"leading\">\n <header-ui>\n <select-ui id=\"workspace-select\" avatar=\"/icons/agent-ui-light.svg\" value=\"adia-ui\" variant=\"ghost\" style=\"flex: 1\"></select-ui>\n </header-ui>\n\n <section-ui>\n <nav-ui id=\"nav\">\n <nav-item-ui data-command-trigger icon=\"magnifying-glass\" text=\"Search\" value=\"search\">\n <span slot=\"icon\"><icon-ui name=\"magnifying-glass\"></icon-ui></span>\n <span slot=\"text\">Search</span>\n <kbd slot=\"trailing\">⌘K</kbd>\n </nav-item-ui>\n <hr data-nav-divider />\n <nav-group-ui icon=\"house\" text=\"Home\" open>\n <nav-item-ui text=\"Dashboard\" value=\"dashboard\" selected></nav-item-ui>\n <nav-item-ui text=\"Analytics\" value=\"analytics\"></nav-item-ui>\n <nav-item-ui text=\"Reports\" value=\"reports\"></nav-item-ui>\n </nav-group-ui>\n <nav-group-ui icon=\"gear\" text=\"Settings\">\n <nav-item-ui text=\"General\" value=\"general\"></nav-item-ui>\n <nav-item-ui text=\"Team\" value=\"team\"></nav-item-ui>\n <nav-item-ui text=\"Billing\" value=\"billing\"></nav-item-ui>\n </nav-group-ui>\n </nav-ui>\n </section-ui>\n\n <footer-ui>\n <select-ui id=\"user-select\" avatar=\"https://i.pravatar.cc/32?u=demo\" value=\"demo\" variant=\"ghost\" style=\"flex: 1\"></select-ui>\n </footer-ui>\n <div data-resize></div>\n </aside-ui>\n\n <!-- ═══════════════ MAIN ═══════════════ -->\n <main>\n <header-ui>\n <button-ui data-sidebar-toggle=\"leading\" icon=\"sidebar\" variant=\"ghost\" size=\"sm\"></button-ui>\n <breadcrumb-ui>\n <a href=\"#\">AdiaUI</a>\n <span>Dashboard</span>\n </breadcrumb-ui>\n <span slot=\"action\">\n <button-ui id=\"theme-toggle\" icon=\"moon\" variant=\"ghost\" size=\"sm\"></button-ui>\n <popover-ui id=\"theme-popover\" placement=\"bottom-end\">\n <button-ui icon=\"palette\" variant=\"ghost\" size=\"sm\" slot=\"trigger\"></button-ui>\n <div\n slot=\"content\"\n id=\"theme-panel\"\n style=\"padding: var(--a-space-3); display: flex; flex-direction: column; gap: var(--a-space-3); min-width: 260px\"\n >\n <text-ui variant=\"label\">Theme</text-ui>\n <div style=\"display: flex; gap: var(--a-space-1); flex-wrap: wrap\">\n <button-ui id=\"theme-default\" text=\"Default\" variant=\"outline\" size=\"sm\"></button-ui>\n <button-ui id=\"theme-ocean\" text=\"Ocean\" variant=\"outline\" size=\"sm\"></button-ui>\n <button-ui id=\"theme-forest\" text=\"Forest\" variant=\"outline\" size=\"sm\"></button-ui>\n <button-ui id=\"theme-sunset\" text=\"Sunset\" variant=\"outline\" size=\"sm\"></button-ui>\n <button-ui id=\"theme-lavender\" text=\"Lavender\" variant=\"outline\" size=\"sm\"></button-ui>\n <button-ui id=\"theme-rose\" text=\"Rose\" variant=\"outline\" size=\"sm\"></button-ui>\n <button-ui id=\"theme-slate\" text=\"Slate\" variant=\"outline\" size=\"sm\"></button-ui>\n <button-ui id=\"theme-midnight\" text=\"Midnight\" variant=\"outline\" size=\"sm\"></button-ui>\n </div>\n <divider-ui></divider-ui>\n <text-ui variant=\"label\">Parametric</text-ui>\n <field-ui label=\"Density\">\n <slider-ui id=\"param-density\" value=\"1\" min=\"0.5\" max=\"1.5\" step=\"0.05\" suffix=\"×\"></slider-ui>\n </field-ui>\n <field-ui label=\"Radius\">\n <slider-ui id=\"param-radius\" value=\"1\" min=\"0\" max=\"2\" step=\"0.1\" suffix=\"×\"></slider-ui>\n </field-ui>\n <divider-ui></divider-ui>\n <div style=\"display: flex; gap: var(--a-space-2); flex-wrap: wrap\">\n <button-ui id=\"preset-compact\" text=\"Compact\" variant=\"outline\" size=\"sm\"></button-ui>\n <button-ui id=\"preset-default\" text=\"Reset\" variant=\"outline\" size=\"sm\"></button-ui>\n <button-ui id=\"preset-spacious\" text=\"Spacious\" variant=\"outline\" size=\"sm\"></button-ui>\n </div>\n </div>\n </popover-ui>\n </span>\n </header-ui>\n\n <section-ui>\n <aside id=\"subnav-rail\" data-subnav>\n <nav-ui variant=\"section\" id=\"subnav\" heading=\"Dashboard\">\n <nav-item-ui text=\"Overview\" value=\"overview\" selected></nav-item-ui>\n <nav-item-ui text=\"Activity\" value=\"activity\"></nav-item-ui>\n <nav-item-ui text=\"Revenue\" value=\"revenue\"></nav-item-ui>\n <nav-item-ui text=\"Traffic\" value=\"traffic\"></nav-item-ui>\n </nav-ui>\n </aside>\n\n <article data-content-root>\n <div data-content-header>\n <header>\n <div>\n <h1>Dashboard</h1>\n <div data-actions>\n <button-ui text=\"Export\" variant=\"outline\" size=\"sm\"></button-ui>\n </div>\n </div>\n <p>App Shell pattern demo resize the sidebar, collapse it, toggle theme, or press ⌘K to open the command palette.</p>\n </header>\n </div>\n <div data-content-body>\n <section>\n <p style=\"color: var(--a-fg-muted)\">\n This standalone page mirrors the shape of the main AdiaUI docs shell: leading sidebar with app-nav, topbar with breadcrumb + theme popover +\n command trigger, main content area with an optional subnav rail, and a bottom footer.\n </p>\n </section>\n </div>\n </article>\n </section-ui>\n\n <footer-ui>\n <span slot=\"heading\">AdiaUI App Shell</span>\n <span slot=\"description\">Playground demo</span>\n <span slot=\"action\">v0.1.0</span>\n </footer-ui>\n </main>\n\n <!-- ═══════════════ COMMAND PALETTE ═══════════════ -->\n <dialog id=\"cmd-dialog\" data-command>\n <command-ui id=\"cmd\" placeholder=\"Search pages...\"></command-ui>\n </dialog>\n </admin-shell>",
12
- "source": "apps/app-shell/app/app-shell.contents.html",
13
- "captured_at": "2026-05-10T17:53:43.459Z"
11
+ "html": "<admin-shell mode=\"rounded borderless\">\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 LEFT SIDEBAR \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <aside-ui slot=\"leading\">\n <header-ui>\n <select-ui id=\"workspace-select\" avatar=\"/icons/agent-ui-light.svg\" value=\"adia-ui\" variant=\"ghost\" style=\"flex: 1\"></select-ui>\n </header-ui>\n\n <section-ui>\n <nav-ui id=\"nav\">\n <nav-item-ui data-command-trigger icon=\"magnifying-glass\" text=\"Search\" value=\"search\">\n <span slot=\"icon\"><icon-ui name=\"magnifying-glass\"></icon-ui></span>\n <span slot=\"text\">Search</span>\n <kbd slot=\"trailing\">\u2318K</kbd>\n </nav-item-ui>\n <hr data-nav-divider />\n <nav-group-ui icon=\"house\" text=\"Home\" open>\n <nav-item-ui text=\"Dashboard\" value=\"dashboard\" selected></nav-item-ui>\n <nav-item-ui text=\"Analytics\" value=\"analytics\"></nav-item-ui>\n <nav-item-ui text=\"Reports\" value=\"reports\"></nav-item-ui>\n </nav-group-ui>\n <nav-group-ui icon=\"gear\" text=\"Settings\">\n <nav-item-ui text=\"General\" value=\"general\"></nav-item-ui>\n <nav-item-ui text=\"Team\" value=\"team\"></nav-item-ui>\n <nav-item-ui text=\"Billing\" value=\"billing\"></nav-item-ui>\n </nav-group-ui>\n </nav-ui>\n </section-ui>\n\n <footer-ui>\n <select-ui id=\"user-select\" avatar=\"https://i.pravatar.cc/32?u=demo\" value=\"demo\" variant=\"ghost\" style=\"flex: 1\"></select-ui>\n </footer-ui>\n <div data-resize></div>\n </aside-ui>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 MAIN \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <main>\n <header-ui>\n <button-ui data-sidebar-toggle=\"leading\" icon=\"sidebar\" variant=\"ghost\" size=\"sm\"></button-ui>\n <breadcrumb-ui>\n <a href=\"#\">AdiaUI</a>\n <span>Dashboard</span>\n </breadcrumb-ui>\n <span slot=\"action\">\n <popover-ui id=\"theme-popover\" placement=\"bottom-end\">\n <button-ui icon=\"palette\" variant=\"ghost\" size=\"sm\" slot=\"trigger\"></button-ui>\n <theme-panel slot=\"content\" parametric presets scheme-toggle></theme-panel>\n </popover-ui>\n </span>\n </header-ui>\n\n <section-ui>\n <aside id=\"subnav-rail\" data-subnav>\n <nav-ui variant=\"section\" id=\"subnav\" heading=\"Dashboard\">\n <nav-item-ui text=\"Overview\" value=\"overview\" selected></nav-item-ui>\n <nav-item-ui text=\"Activity\" value=\"activity\"></nav-item-ui>\n <nav-item-ui text=\"Revenue\" value=\"revenue\"></nav-item-ui>\n <nav-item-ui text=\"Traffic\" value=\"traffic\"></nav-item-ui>\n </nav-ui>\n </aside>\n\n <article data-content-root>\n <div data-content-header>\n <header>\n <div>\n <h1>Dashboard</h1>\n <div data-actions>\n <button-ui text=\"Export\" variant=\"outline\" size=\"sm\"></button-ui>\n </div>\n </div>\n <p>App Shell pattern demo \u2014 resize the sidebar, collapse it, toggle theme, or press \u2318K to open the command palette.</p>\n </header>\n </div>\n <div data-content-body>\n <section>\n <p style=\"color: var(--a-fg-muted)\">\n This standalone page mirrors the shape of the main AdiaUI docs shell: leading sidebar with app-nav, topbar with breadcrumb + theme popover +\n command trigger, main content area with an optional subnav rail, and a bottom footer.\n </p>\n </section>\n </div>\n </article>\n </section-ui>\n\n <footer-ui>\n <span slot=\"heading\">AdiaUI App Shell</span>\n <span slot=\"description\">Playground demo</span>\n <span slot=\"action\">v0.1.0</span>\n </footer-ui>\n </main>\n\n <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 COMMAND PALETTE \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n <dialog id=\"cmd-dialog\" data-command>\n <command-ui id=\"cmd\" placeholder=\"Search pages...\"></command-ui>\n </dialog>\n </admin-shell>",
12
+ "source": "playgrounds/admin-shell/app/admin-shell.contents.html",
13
+ "captured_at": "2026-05-11T17:52:49.288Z"
14
14
  }
@@ -2,7 +2,7 @@
2
2
  "name": "playground-chat",
3
3
  "kind": "block",
4
4
  "primary": "chat-shell",
5
- "page": "/apps/chat/app/chat.contents.html",
5
+ "page": "/playgrounds/chat/app/chat.contents.html",
6
6
  "slots": [],
7
7
  "nested": [],
8
8
  "attrs": {
@@ -10,6 +10,6 @@
10
10
  "model": "claude-haiku-4-5-20251001"
11
11
  },
12
12
  "html": "<chat-shell id=\"chat\" proxy-url=\"/api/chat\" model=\"claude-haiku-4-5-20251001\" style=\"flex: 1; border: none; border-radius: 0\">\n <header>\n <span data-chat-name>Factory Chat</span>\n <span data-chat-status></span>\n <span style=\"margin-inline-start: auto; display: flex; align-items: center; gap: var(--a-space-1)\">\n <button-ui id=\"theme-toggle\" icon=\"moon\" variant=\"ghost\" size=\"sm\"></button-ui>\n <popover-ui id=\"theme-popover\" placement=\"bottom-end\">\n <button-ui icon=\"gear\" variant=\"ghost\" size=\"sm\" slot=\"trigger\"></button-ui>\n <div slot=\"content\" style=\"padding: var(--a-space-3); display: flex; flex-direction: column; gap: var(--a-space-3); min-width: 240px\">\n <text-ui variant=\"label\">Theme</text-ui>\n <div style=\"display: flex; gap: var(--a-space-1); flex-wrap: wrap\">\n <button-ui id=\"theme-default\" text=\"Default\" variant=\"outline\" size=\"sm\"></button-ui>\n <button-ui id=\"theme-ocean\" text=\"Ocean\" variant=\"outline\" size=\"sm\"></button-ui>\n <button-ui id=\"theme-forest\" text=\"Forest\" variant=\"outline\" size=\"sm\"></button-ui>\n <button-ui id=\"theme-sunset\" text=\"Sunset\" variant=\"outline\" size=\"sm\"></button-ui>\n <button-ui id=\"theme-lavender\" text=\"Lavender\" variant=\"outline\" size=\"sm\"></button-ui>\n <button-ui id=\"theme-rose\" text=\"Rose\" variant=\"outline\" size=\"sm\"></button-ui>\n <button-ui id=\"theme-slate\" text=\"Slate\" variant=\"outline\" size=\"sm\"></button-ui>\n <button-ui id=\"theme-midnight\" text=\"Midnight\" variant=\"outline\" size=\"sm\"></button-ui>\n </div>\n <divider-ui></divider-ui>\n <text-ui variant=\"label\">Parametric</text-ui>\n <field-ui label=\"Density\">\n <slider-ui id=\"param-density\" value=\"1\" min=\"0.5\" max=\"1.5\" step=\"0.05\" suffix=\"×\"></slider-ui>\n </field-ui>\n <field-ui label=\"Radius\">\n <slider-ui id=\"param-radius\" value=\"1\" min=\"0\" max=\"2\" step=\"0.1\" suffix=\"×\"></slider-ui>\n </field-ui>\n </div>\n </popover-ui>\n </span>\n </header>\n <section data-chat-messages>\n <empty-state-ui\n data-chat-empty\n icon=\"chat-circle\"\n heading=\"AdiaUI Chat\"\n description=\"Type a message to start a conversation. Connects to LLM model via proxy if available.\"\n >\n </empty-state-ui>\n </section>\n <footer>\n <chat-input-ui data-chat-input placeholder=\"Message Claude...\"></chat-input-ui>\n </footer>\n</chat-shell>",
13
- "source": "apps/chat/app/chat.contents.html",
13
+ "source": "playgrounds/chat/app/chat.contents.html",
14
14
  "captured_at": "2026-05-10T17:53:43.459Z"
15
15
  }
@@ -2,7 +2,7 @@
2
2
  "name": "playground-table-toolbar",
3
3
  "kind": "block",
4
4
  "primary": "table-toolbar-ui",
5
- "page": "/apps/table-toolbar/app/table-toolbar.contents.html",
5
+ "page": "/playgrounds/table-toolbar/app/table-toolbar.contents.html",
6
6
  "slots": [],
7
7
  "nested": [],
8
8
  "attrs": {
@@ -11,6 +11,6 @@
11
11
  "count": "32"
12
12
  },
13
13
  "html": "<table-toolbar-ui for=\"employees\" text=\"All Employees\" count=\"32\"></table-toolbar-ui>",
14
- "source": "apps/table-toolbar/app/table-toolbar.contents.html",
14
+ "source": "playgrounds/table-toolbar/app/table-toolbar.contents.html",
15
15
  "captured_at": "2026-05-10T17:53:43.459Z"
16
16
  }
@@ -2,11 +2,11 @@
2
2
  "name": "settings-notifications",
3
3
  "kind": "block",
4
4
  "primary": "card-ui",
5
- "page": "/apps/patterns/app/settings-notifications/settings-notifications.contents.html",
5
+ "page": "/catalog/ui-patterns/app/settings-notifications/settings-notifications.contents.html",
6
6
  "slots": [],
7
7
  "nested": [],
8
8
  "attrs": {},
9
9
  "html": "<card-ui>\n <header>\n <h3>Notifications</h3>\n <text-ui slot=\"description\" color=\"subtle\">Choose what you want to be notified about</text-ui>\n </header>\n <section>\n <col-ui gap=\"4\">\n <section>\n <text-ui weight=\"semibold\">Email</text-ui>\n <col-ui gap=\"2\">\n <row-ui gap=\"2\" align=\"center\" justify=\"space-between\">\n <text-ui>Weekly digest</text-ui>\n <switch-ui checked></switch-ui>\n </row-ui>\n <row-ui gap=\"2\" align=\"center\" justify=\"space-between\">\n <text-ui>New mentions</text-ui>\n <switch-ui checked></switch-ui>\n </row-ui>\n <row-ui gap=\"2\" align=\"center\" justify=\"space-between\">\n <text-ui>Product updates</text-ui>\n <switch-ui></switch-ui>\n </row-ui>\n </col-ui>\n </section>\n <divider-ui></divider-ui>\n <section>\n <text-ui weight=\"semibold\">Push</text-ui>\n <col-ui gap=\"2\">\n <row-ui gap=\"2\" align=\"center\" justify=\"space-between\">\n <text-ui>Direct messages</text-ui>\n <switch-ui checked></switch-ui>\n </row-ui>\n <row-ui gap=\"2\" align=\"center\" justify=\"space-between\">\n <text-ui>Team alerts</text-ui>\n <switch-ui></switch-ui>\n </row-ui>\n </col-ui>\n </section>\n </col-ui>\n </section>\n</card-ui>",
10
- "source": "apps/patterns/app/settings-notifications/settings-notifications.contents.html",
10
+ "source": "catalog/ui-patterns/app/settings-notifications/settings-notifications.contents.html",
11
11
  "captured_at": "2026-05-10T17:53:43.459Z"
12
12
  }
@@ -2,7 +2,7 @@
2
2
  "name": "settings-page-shell",
3
3
  "kind": "page",
4
4
  "primary": "article",
5
- "page": "/apps/generic-shells/app/settings-page/settings-page.contents.html",
5
+ "page": "/catalog/page-shells/app/settings-page/settings-page.contents.html",
6
6
  "slots": [
7
7
  {
8
8
  "name": "page-header",
@@ -23,6 +23,6 @@
23
23
  "nested": [],
24
24
  "attrs": {},
25
25
  "html": "<article>\n <header data-chunk-slot=\"page-header\">\n <h1>Settings</h1>\n <text-ui color=\"subtle\">Manage your account preferences</text-ui>\n </header>\n\n <tabs-ui value=\"general\" data-chunk-slot=\"page-tabs\">\n <tab-ui value=\"general\" text=\"General\"></tab-ui>\n <tab-ui value=\"integrations\" text=\"Integrations\"></tab-ui>\n <tab-ui value=\"billing\" text=\"Billing\"></tab-ui>\n </tabs-ui>\n\n <section data-chunk-slot=\"page-content\">\n <card-ui>\n <header><h3>General settings</h3></header>\n <section>\n <field-ui label=\"Display name\">\n <input-ui value=\"Jane Doe\"></input-ui>\n </field-ui>\n <field-ui label=\"Email\" hint=\"Used for notifications\">\n <input-ui type=\"email\" value=\"jane@example.com\"></input-ui>\n </field-ui>\n </section>\n </card-ui>\n </section>\n</article>",
26
- "source": "apps/generic-shells/app/settings-page/settings-page.contents.html",
26
+ "source": "catalog/page-shells/app/settings-page/settings-page.contents.html",
27
27
  "captured_at": "2026-05-10T17:53:43.459Z"
28
28
  }
@@ -2,11 +2,11 @@
2
2
  "name": "user-profile-card",
3
3
  "kind": "block",
4
4
  "primary": "card-ui",
5
- "page": "/apps/patterns/app/user-profile-card/user-profile-card.contents.html",
5
+ "page": "/catalog/ui-patterns/app/user-profile-card/user-profile-card.contents.html",
6
6
  "slots": [],
7
7
  "nested": [],
8
8
  "attrs": {},
9
9
  "html": "<card-ui>\n <header>\n <row-ui gap=\"3\" align=\"center\">\n <avatar-ui text=\"Jane Doe\" size=\"lg\"></avatar-ui>\n <col-ui gap=\"0\">\n <text-ui weight=\"semibold\" size=\"lg\">Jane Doe</text-ui>\n <text-ui color=\"subtle\">Product Designer</text-ui>\n </col-ui>\n </row-ui>\n </header>\n <section>\n <col-ui gap=\"3\">\n <field-ui label=\"Email\" inline>\n <input-ui type=\"email\" value=\"jane@example.com\"></input-ui>\n </field-ui>\n <field-ui label=\"Role\" inline>\n <select-ui value=\"designer\">\n <option value=\"designer\">Designer</option>\n <option value=\"engineer\">Engineer</option>\n <option value=\"manager\">Manager</option>\n </select-ui>\n </field-ui>\n <field-ui label=\"Bio\" inline>\n <textarea-ui rows=\"2\">Building design systems at AdiaUI</textarea-ui>\n </field-ui>\n </col-ui>\n </section>\n <footer>\n <row-ui gap=\"2\" justify=\"end\">\n <button-ui text=\"Cancel\" variant=\"ghost\" size=\"sm\"></button-ui>\n <button-ui text=\"Save\" variant=\"primary\" size=\"sm\"></button-ui>\n </row-ui>\n </footer>\n</card-ui>",
10
- "source": "apps/patterns/app/user-profile-card/user-profile-card.contents.html",
10
+ "source": "catalog/ui-patterns/app/user-profile-card/user-profile-card.contents.html",
11
11
  "captured_at": "2026-05-10T17:53:43.459Z"
12
12
  }
@@ -2,11 +2,11 @@
2
2
  "name": "users-table-badge",
3
3
  "kind": "block",
4
4
  "primary": "card-ui",
5
- "page": "/apps/patterns/app/users-table-badge/users-table-badge.contents.html",
5
+ "page": "/catalog/ui-patterns/app/users-table-badge/users-table-badge.contents.html",
6
6
  "slots": [],
7
7
  "nested": [],
8
8
  "attrs": {},
9
9
  "html": "<card-ui>\n <header>\n <h3>Users</h3>\n <text-ui slot=\"description\" color=\"subtle\">Team members and their roles</text-ui>\n </header>\n <section bleed>\n <table-ui>\n <thead>\n <tr>\n <th>User</th>\n <th>Role</th>\n <th>Status</th>\n <th>Last active</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td><row-ui gap=\"2\" align=\"center\"><avatar-ui text=\"Alex Chen\" size=\"sm\"></avatar-ui><text-ui>Alex Chen</text-ui></row-ui></td>\n <td><badge-ui text=\"Admin\" variant=\"accent\" size=\"sm\"></badge-ui></td>\n <td><badge-ui text=\"Online\" variant=\"success\" size=\"sm\"></badge-ui></td>\n <td><text-ui color=\"subtle\" size=\"sm\">2m ago</text-ui></td>\n </tr>\n <tr>\n <td><row-ui gap=\"2\" align=\"center\"><avatar-ui text=\"Sarah Miller\" size=\"sm\"></avatar-ui><text-ui>Sarah Miller</text-ui></row-ui></td>\n <td><badge-ui text=\"Editor\" variant=\"info\" size=\"sm\"></badge-ui></td>\n <td><badge-ui text=\"Away\" variant=\"warning\" size=\"sm\"></badge-ui></td>\n <td><text-ui color=\"subtle\" size=\"sm\">1h ago</text-ui></td>\n </tr>\n <tr>\n <td><row-ui gap=\"2\" align=\"center\"><avatar-ui text=\"James Park\" size=\"sm\"></avatar-ui><text-ui>James Park</text-ui></row-ui></td>\n <td><badge-ui text=\"Viewer\" variant=\"muted\" size=\"sm\"></badge-ui></td>\n <td><badge-ui text=\"Offline\" variant=\"muted\" size=\"sm\"></badge-ui></td>\n <td><text-ui color=\"subtle\" size=\"sm\">3h ago</text-ui></td>\n </tr>\n </tbody>\n </table-ui>\n </section>\n</card-ui>",
10
- "source": "apps/patterns/app/users-table-badge/users-table-badge.contents.html",
10
+ "source": "catalog/ui-patterns/app/users-table-badge/users-table-badge.contents.html",
11
11
  "captured_at": "2026-05-10T17:53:43.459Z"
12
12
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adia-ai/a2ui-corpus",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "type": "module",
5
5
  "description": "AdiaUI A2UI training corpus \u2014 patterns, fragments, compositions, exemplars, eval fixtures, feedback, gap registry. Consumed by the compose engine's retrieval layer + the MCP pipeline.",
6
6
  "exports": {
@@ -1,59 +0,0 @@
1
- {
2
- "$schema": "../_schema.json",
3
- "name": "auth-card-header",
4
- "version": 1,
5
- "kind": "fragment",
6
- "semantic_role": "auth-titlebar",
7
- "description": "Authentication card titlebar — centered logo (linking home), heading, and short body text. The canonical header for any auth, error, or onboarding shell card. Promoted from the chunk corpus where this exact shape appeared 23× across user-flow auth screens (sign-in, sign-up, forgot-password, MFA, account-locked, etc.) plus errors/{404,500,maintenance}.",
8
- "shape": "Header(Column[align=center,gap=1](Image[role=logo], Text[v=heading], Text[v=body]))",
9
- "tags": {
10
- "purpose": ["auth-titlebar", "card-header"],
11
- "layout": "stacked",
12
- "alignment": "center"
13
- },
14
- "keywords": ["auth", "header", "title", "logo", "card", "sign-in", "sign-up", "error", "onboarding"],
15
- "slots": [
16
- {
17
- "name": "logoSrc",
18
- "targetId": "ach-logo",
19
- "attribute": "src",
20
- "required": true,
21
- "description": "Path to the brand logo image (SVG preferred)"
22
- },
23
- {
24
- "name": "logoAlt",
25
- "targetId": "ach-logo",
26
- "attribute": "alt",
27
- "defaultValue": "Logo",
28
- "description": "Alt text for the logo image"
29
- },
30
- {
31
- "name": "heading",
32
- "targetId": "ach-heading",
33
- "attribute": "textContent",
34
- "required": true,
35
- "description": "Primary heading — auth state or error code (e.g. 'Sign in', '404 — Page not found', 'Reset your password')"
36
- },
37
- {
38
- "name": "body",
39
- "targetId": "ach-body",
40
- "attribute": "textContent",
41
- "description": "Short supporting copy below the heading"
42
- }
43
- ],
44
- "template": [
45
- { "id": "ach-root", "component": "Header", "children": ["ach-col"] },
46
- { "id": "ach-col", "component": "Column", "align": "center", "gap": "1", "children": ["ach-logo", "ach-heading", "ach-body"] },
47
- { "id": "ach-logo", "component": "Image", "src": "/icons/agent-ui-light.svg", "alt": "Logo" },
48
- { "id": "ach-heading", "component": "Text", "variant": "heading", "textContent": "Heading" },
49
- { "id": "ach-body", "component": "Text", "variant": "body", "textContent": "" }
50
- ],
51
- "links": {
52
- "uses_components": ["Header", "Column", "Image", "Text"],
53
- "uses_fragments": [],
54
- "used_by": [],
55
- "related": ["card-header-heading", "card-header-with-description"],
56
- "spawned_from": ["chunk:auth-card-header"]
57
- },
58
- "metrics": { "leverage": 0, "pattern_count": 0, "instance_count": 0 }
59
- }