@adia-ai/a2ui-corpus 0.4.0 → 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 +28 -0
- package/catalog-a2ui_0_9.json +446 -6
- package/catalog-a2ui_0_9_rules.txt +15 -0
- package/chunks/_index.json +26 -26
- package/chunks/agent-activity-feed.json +2 -2
- package/chunks/agent-canvas-shell.json +2 -2
- package/chunks/agent-reasoning-collapsed.json +2 -2
- package/chunks/chat-page-shell.json +2 -2
- package/chunks/chat-streaming-surface.json +2 -2
- package/chunks/command-palette.json +2 -2
- package/chunks/conversion-funnel-6step.json +2 -2
- package/chunks/destructive-confirm-modal.json +2 -2
- package/chunks/doc-editor-shell.json +2 -2
- package/chunks/editor-code-pane.json +2 -2
- package/chunks/editor-page-shell.json +2 -2
- package/chunks/editor-preview-pane.json +2 -2
- package/chunks/error-page-shell.json +2 -2
- package/chunks/form-page-shell.json +2 -2
- package/chunks/gallery-page-shell.json +2 -2
- package/chunks/kanban-board-3col.json +2 -2
- package/chunks/kanban-page-shell.json +2 -2
- package/chunks/marketing-hero-cta.json +2 -2
- package/chunks/marketing-page-shell.json +2 -2
- package/chunks/playground-app-shell.json +4 -4
- package/chunks/playground-chat.json +2 -2
- package/chunks/playground-table-toolbar.json +2 -2
- package/chunks/settings-notifications.json +2 -2
- package/chunks/settings-page-shell.json +2 -2
- package/chunks/user-profile-card.json +2 -2
- package/chunks/users-table-badge.json +2 -2
- package/fragments/action/footer-cancel-save.json +1 -1
- package/fragments/action/footer-cancel-save.yaml +1 -1
- package/fragments/action/footer-primary-only.json +1 -1
- package/fragments/action/footer-primary-only.yaml +1 -1
- package/fragments/content/calendar-day-cell.json +1 -1
- package/fragments/content/credential-entry-atom.json +1 -3
- package/fragments/content/directory-entry-atom.json +1 -3
- package/fragments/content/health-entry-atom.json +1 -3
- package/fragments/content/icon-text-row.json +1 -1
- package/fragments/content/icon-text-row.yaml +1 -1
- package/fragments/content/icon-title-description.json +1 -1
- package/fragments/content/icon-title-description.yaml +1 -1
- package/fragments/content/incident-row.json +1 -3
- package/fragments/content/key-value-row.json +1 -1
- package/fragments/content/key-value-row.yaml +1 -1
- package/fragments/content/labeled-progress.json +1 -1
- package/fragments/content/labeled-progress.yaml +1 -1
- package/fragments/content/marketplace-tile-atom.json +1 -3
- package/fragments/content/release-entry.json +1 -5
- package/fragments/content/rollout-entry-atom.json +1 -3
- package/fragments/content/signed-in-entry-atom.json +1 -3
- package/fragments/content/stage-entry-atom.json +1 -3
- package/fragments/content/stat-card.json +1 -1
- package/fragments/content/stat-card.yaml +1 -1
- package/fragments/content/user-identity-row.json +1 -1
- package/fragments/content/user-identity-row.yaml +1 -1
- package/fragments/content/user-notification-row.json +1 -1
- package/fragments/content/user-notification-row.yaml +1 -1
- package/fragments/form/labeled-checkbox.json +1 -1
- package/fragments/form/labeled-checkbox.yaml +1 -1
- package/fragments/form/labeled-input.json +1 -1
- package/fragments/form/labeled-input.yaml +1 -1
- package/fragments/form/labeled-textarea.json +1 -1
- package/fragments/form/labeled-textarea.yaml +1 -1
- package/fragments/form/labeled-toggle.json +1 -1
- package/fragments/form/labeled-toggle.yaml +1 -1
- package/fragments/layout/card-header-heading.json +1 -5
- package/fragments/layout/card-header-heading.yaml +1 -1
- package/fragments/layout/card-header-with-badge.json +1 -1
- package/fragments/layout/card-header-with-badge.yaml +1 -1
- package/fragments/layout/card-header-with-description.json +1 -1
- package/fragments/layout/card-header-with-description.yaml +1 -1
- package/fragments/layout/text-card.json +1 -1
- package/fragments/layout/text-card.yaml +1 -1
- package/package.json +1 -1
- package/fragments/layout/auth-card-header.json +0 -64
package/CHANGELOG.md
CHANGED
|
@@ -19,6 +19,34 @@ 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
|
+
|
|
38
|
+
## [0.4.1] - 2026-05-10
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- **Fragment metrics reconciled** — 28 fragments updated to match computed values from `npm run audit:fragments`. 45 files modified (28 JSON + 17 YAML; 11 JSON have no YAML sibling). `audit:fragments` now reports 0 drift.
|
|
43
|
+
- **Special note: auth-card-header** instance_count reconciled from 23 → 0 (fragment no longer used by any composition). Pending decision on whether to deprecate or re-introduce.
|
|
44
|
+
- Catalog regenerated to include 3 new simple-cluster yamls (121 total).
|
|
45
|
+
|
|
46
|
+
### Added
|
|
47
|
+
|
|
48
|
+
- `docs/reports/chunk-reconcile-triage-2026-05-10.md` — triage doc documenting that all current `audit:chunk-reconcile` findings (9 fingerprint collisions + 19 near-duplicates + 10 cross-source) are intentional outcomes of the onb/reg alignment work + foundational shared chunks.
|
|
49
|
+
|
|
22
50
|
## [0.4.0] - 2026-05-10
|
|
23
51
|
|
|
24
52
|
### Ride-along (no corpus changes)
|
package/catalog-a2ui_0_9.json
CHANGED
|
@@ -7550,7 +7550,7 @@
|
|
|
7550
7550
|
},
|
|
7551
7551
|
"Input": {
|
|
7552
7552
|
"title": "Input",
|
|
7553
|
-
"description": "Text input field with contenteditable
|
|
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
|
|
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
|
|
7687
|
+
"description": "Fired on blur, Enter, or a stepper-button click (bubbles)"
|
|
7668
7688
|
},
|
|
7669
7689
|
"input": {
|
|
7670
|
-
"description": "Fired on each keystroke
|
|
7690
|
+
"description": "Fired on each keystroke or stepper-button increment (bubbles)"
|
|
7671
7691
|
},
|
|
7672
7692
|
"submit": {
|
|
7673
|
-
"description": "Fired when
|
|
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]",
|
|
@@ -11291,6 +11336,230 @@
|
|
|
11291
11336
|
"version": 1
|
|
11292
11337
|
}
|
|
11293
11338
|
},
|
|
11339
|
+
"SimpleContent": {
|
|
11340
|
+
"title": "SimpleContent",
|
|
11341
|
+
"description": "Module-tier article-body container. CSS-only — no JS, no state.\nSits inside <simple-shell> as the main content surface with\ntoken-correct vertical rhythm and prose-friendly max-width.\n\nCompanion to <simple-hero> (optional top strip) per ADR-0023\nbespoke shell-tier children.\n",
|
|
11342
|
+
"type": "object",
|
|
11343
|
+
"allOf": [
|
|
11344
|
+
{
|
|
11345
|
+
"$ref": "#/$defs/ComponentCommon"
|
|
11346
|
+
},
|
|
11347
|
+
{
|
|
11348
|
+
"$ref": "#/$defs/CatalogComponentCommon"
|
|
11349
|
+
}
|
|
11350
|
+
],
|
|
11351
|
+
"properties": {
|
|
11352
|
+
"component": {
|
|
11353
|
+
"const": "SimpleContent"
|
|
11354
|
+
}
|
|
11355
|
+
},
|
|
11356
|
+
"required": [
|
|
11357
|
+
"component"
|
|
11358
|
+
],
|
|
11359
|
+
"unevaluatedProperties": false,
|
|
11360
|
+
"x-adiaui": {
|
|
11361
|
+
"anti_patterns": [],
|
|
11362
|
+
"category": "shells",
|
|
11363
|
+
"events": {},
|
|
11364
|
+
"examples": [],
|
|
11365
|
+
"keywords": [
|
|
11366
|
+
"simple-content",
|
|
11367
|
+
"article",
|
|
11368
|
+
"body",
|
|
11369
|
+
"prose",
|
|
11370
|
+
"main-content",
|
|
11371
|
+
"landing-body",
|
|
11372
|
+
"marketing-body"
|
|
11373
|
+
],
|
|
11374
|
+
"name": "SimpleContent",
|
|
11375
|
+
"related": [
|
|
11376
|
+
"SimpleShell",
|
|
11377
|
+
"SimpleHero"
|
|
11378
|
+
],
|
|
11379
|
+
"slots": {
|
|
11380
|
+
"default": {
|
|
11381
|
+
"description": "Article body content — prose, code blocks, illustrations. Authors compose freely; <simple-content> provides only the container with sensible defaults (vertical rhythm, max-width, typography token application)."
|
|
11382
|
+
}
|
|
11383
|
+
},
|
|
11384
|
+
"states": [
|
|
11385
|
+
{
|
|
11386
|
+
"description": "Default, visible.",
|
|
11387
|
+
"name": "idle"
|
|
11388
|
+
}
|
|
11389
|
+
],
|
|
11390
|
+
"synonyms": {
|
|
11391
|
+
"simple-content": [
|
|
11392
|
+
"page-content",
|
|
11393
|
+
"article-body",
|
|
11394
|
+
"prose-container",
|
|
11395
|
+
"main-body"
|
|
11396
|
+
]
|
|
11397
|
+
},
|
|
11398
|
+
"tag": "simple-content",
|
|
11399
|
+
"tokens": {},
|
|
11400
|
+
"traits": [],
|
|
11401
|
+
"version": 1
|
|
11402
|
+
}
|
|
11403
|
+
},
|
|
11404
|
+
"SimpleHero": {
|
|
11405
|
+
"title": "SimpleHero",
|
|
11406
|
+
"description": "Module-tier hero strip for the top of marketing / landing / error\npages. CSS-only — no JS, no state. Three named slots (heading, lede,\nactions) carry the canonical hero composition.\n\nSits inside <simple-shell> above <simple-content>. Companion to\n<simple-content> per ADR-0023 bespoke shell-tier children.\n",
|
|
11407
|
+
"type": "object",
|
|
11408
|
+
"allOf": [
|
|
11409
|
+
{
|
|
11410
|
+
"$ref": "#/$defs/ComponentCommon"
|
|
11411
|
+
},
|
|
11412
|
+
{
|
|
11413
|
+
"$ref": "#/$defs/CatalogComponentCommon"
|
|
11414
|
+
}
|
|
11415
|
+
],
|
|
11416
|
+
"properties": {
|
|
11417
|
+
"component": {
|
|
11418
|
+
"const": "SimpleHero"
|
|
11419
|
+
}
|
|
11420
|
+
},
|
|
11421
|
+
"required": [
|
|
11422
|
+
"component"
|
|
11423
|
+
],
|
|
11424
|
+
"unevaluatedProperties": false,
|
|
11425
|
+
"x-adiaui": {
|
|
11426
|
+
"anti_patterns": [],
|
|
11427
|
+
"category": "shells",
|
|
11428
|
+
"events": {},
|
|
11429
|
+
"examples": [],
|
|
11430
|
+
"keywords": [
|
|
11431
|
+
"simple-hero",
|
|
11432
|
+
"hero",
|
|
11433
|
+
"splash",
|
|
11434
|
+
"landing-hero",
|
|
11435
|
+
"marketing-hero",
|
|
11436
|
+
"intro",
|
|
11437
|
+
"page-title"
|
|
11438
|
+
],
|
|
11439
|
+
"name": "SimpleHero",
|
|
11440
|
+
"related": [
|
|
11441
|
+
"SimpleShell",
|
|
11442
|
+
"SimpleContent"
|
|
11443
|
+
],
|
|
11444
|
+
"slots": {
|
|
11445
|
+
"default": {
|
|
11446
|
+
"description": "Optional inline content if the named slots are insufficient."
|
|
11447
|
+
},
|
|
11448
|
+
"actions": {
|
|
11449
|
+
"description": "Action row (button-ui, link-ui) for primary CTAs."
|
|
11450
|
+
},
|
|
11451
|
+
"heading": {
|
|
11452
|
+
"description": "Large display heading (h1) — the page title."
|
|
11453
|
+
},
|
|
11454
|
+
"lede": {
|
|
11455
|
+
"description": "Lead paragraph below heading — short summary or CTA tagline."
|
|
11456
|
+
}
|
|
11457
|
+
},
|
|
11458
|
+
"states": [
|
|
11459
|
+
{
|
|
11460
|
+
"description": "Default, visible.",
|
|
11461
|
+
"name": "idle"
|
|
11462
|
+
}
|
|
11463
|
+
],
|
|
11464
|
+
"synonyms": {
|
|
11465
|
+
"simple-hero": [
|
|
11466
|
+
"page-hero",
|
|
11467
|
+
"splash-hero",
|
|
11468
|
+
"landing-hero",
|
|
11469
|
+
"intro-strip"
|
|
11470
|
+
]
|
|
11471
|
+
},
|
|
11472
|
+
"tag": "simple-hero",
|
|
11473
|
+
"tokens": {},
|
|
11474
|
+
"traits": [],
|
|
11475
|
+
"version": 1
|
|
11476
|
+
}
|
|
11477
|
+
},
|
|
11478
|
+
"SimpleShell": {
|
|
11479
|
+
"title": "SimpleShell",
|
|
11480
|
+
"description": "Module-tier minimal shell for marketing / landing / error pages.\nBehavior-only orchestrator with two reflected attributes — [centered]\nfor vertical centering, [full-bleed] for dropping the max-width\nconstraint.\n\nThe 4th cluster in the bespoke shell family per ADR-0023, designed\ndeliberately small (1 host + 2 CSS-only children) to demonstrate\nthe pattern works without ceremony for thin clusters.\n\nUse cases: marketing splashes, error pages (404 / 500 / maintenance),\nthank-you pages, single-card flows (sign-in, password reset).\n",
|
|
11481
|
+
"type": "object",
|
|
11482
|
+
"allOf": [
|
|
11483
|
+
{
|
|
11484
|
+
"$ref": "#/$defs/ComponentCommon"
|
|
11485
|
+
},
|
|
11486
|
+
{
|
|
11487
|
+
"$ref": "#/$defs/CatalogComponentCommon"
|
|
11488
|
+
}
|
|
11489
|
+
],
|
|
11490
|
+
"properties": {
|
|
11491
|
+
"centered": {
|
|
11492
|
+
"description": "Reflected — vertically centers content in viewport.",
|
|
11493
|
+
"type": "boolean",
|
|
11494
|
+
"default": false
|
|
11495
|
+
},
|
|
11496
|
+
"component": {
|
|
11497
|
+
"const": "SimpleShell"
|
|
11498
|
+
},
|
|
11499
|
+
"full-bleed": {
|
|
11500
|
+
"description": "Reflected — drops the default max-width so content fills full viewport.",
|
|
11501
|
+
"type": "boolean",
|
|
11502
|
+
"default": false
|
|
11503
|
+
}
|
|
11504
|
+
},
|
|
11505
|
+
"required": [
|
|
11506
|
+
"component"
|
|
11507
|
+
],
|
|
11508
|
+
"unevaluatedProperties": false,
|
|
11509
|
+
"x-adiaui": {
|
|
11510
|
+
"anti_patterns": [],
|
|
11511
|
+
"category": "shells",
|
|
11512
|
+
"events": {},
|
|
11513
|
+
"examples": [],
|
|
11514
|
+
"keywords": [
|
|
11515
|
+
"simple-shell",
|
|
11516
|
+
"landing",
|
|
11517
|
+
"marketing",
|
|
11518
|
+
"error-page",
|
|
11519
|
+
"splash",
|
|
11520
|
+
"confirmation",
|
|
11521
|
+
"minimal-shell"
|
|
11522
|
+
],
|
|
11523
|
+
"name": "SimpleShell",
|
|
11524
|
+
"related": [
|
|
11525
|
+
"SimpleHero",
|
|
11526
|
+
"SimpleContent",
|
|
11527
|
+
"AdminShell"
|
|
11528
|
+
],
|
|
11529
|
+
"slots": {
|
|
11530
|
+
"default": {
|
|
11531
|
+
"description": "Bespoke children (<simple-hero>, <simple-content>) compose here. The author owns layout order."
|
|
11532
|
+
}
|
|
11533
|
+
},
|
|
11534
|
+
"states": [
|
|
11535
|
+
{
|
|
11536
|
+
"description": "Default layout — top-aligned, max-width container.",
|
|
11537
|
+
"name": "idle"
|
|
11538
|
+
},
|
|
11539
|
+
{
|
|
11540
|
+
"description": "When [centered] is set — vertically centers the content stack.",
|
|
11541
|
+
"name": "centered"
|
|
11542
|
+
},
|
|
11543
|
+
{
|
|
11544
|
+
"description": "When [full-bleed] is set — drops max-width so content fills the viewport.",
|
|
11545
|
+
"name": "full-bleed"
|
|
11546
|
+
}
|
|
11547
|
+
],
|
|
11548
|
+
"synonyms": {
|
|
11549
|
+
"simple-shell": [
|
|
11550
|
+
"marketing-shell",
|
|
11551
|
+
"landing-shell",
|
|
11552
|
+
"minimal-shell",
|
|
11553
|
+
"splash-shell",
|
|
11554
|
+
"error-shell"
|
|
11555
|
+
]
|
|
11556
|
+
},
|
|
11557
|
+
"tag": "simple-shell",
|
|
11558
|
+
"tokens": {},
|
|
11559
|
+
"traits": [],
|
|
11560
|
+
"version": 1
|
|
11561
|
+
}
|
|
11562
|
+
},
|
|
11294
11563
|
"Skeleton": {
|
|
11295
11564
|
"title": "Skeleton",
|
|
11296
11565
|
"description": "Placeholder shimmer for loading states. Purely presentational.",
|
|
@@ -13674,6 +13943,177 @@
|
|
|
13674
13943
|
"version": 1
|
|
13675
13944
|
}
|
|
13676
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
|
+
},
|
|
13677
14117
|
"Timeline": {
|
|
13678
14118
|
"title": "Timeline",
|
|
13679
14119
|
"description": "Timeline and step wizard. Two modes: timeline (per-item state) and steps (parent-driven).",
|
|
@@ -96,3 +96,18 @@
|
|
|
96
96
|
## AdminTopbar
|
|
97
97
|
- admin-topbar replaces <header-ui> at shell-tier — use it for chrome bars inside admin-shell, admin-content, admin-sidebar. Use <header-ui> for primitive containers (Card / Drawer / Modal).
|
|
98
98
|
|
|
99
|
+
## SimpleContent
|
|
100
|
+
- simple-content is the article surface inside simple-shell. Use for primary page body. Sibling to <simple-hero> (optional).
|
|
101
|
+
|
|
102
|
+
## SimpleHero
|
|
103
|
+
- simple-hero is the optional top strip inside simple-shell. Use for marketing splashes, error-page reassurance text, or single- flow page intros. Always followed by <simple-content> for body.
|
|
104
|
+
|
|
105
|
+
## SimpleShell
|
|
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
|
+
- 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
|
+
|
|
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
|
+
|