@adia-ai/a2ui 0.8.38 → 0.8.39
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 +10 -0
- package/catalog/catalog-a2ui_0_9.json +17 -2
- package/catalog/catalog-a2ui_0_9_rules.txt +3 -1
- package/catalog/tier-index.json +6789 -5
- package/catalog/tiers/README.md +54 -5
- package/catalog/tiers/curation/l1-widgets.curation.json +153 -0
- package/catalog/tiers/l1-widgets.json +6789 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,16 @@
|
|
|
4
4
|
> 0.8.37 (the estate-split cut) were released under the old name and are kept
|
|
5
5
|
> verbatim.
|
|
6
6
|
|
|
7
|
+
## [0.8.39] — 2026-08-15
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- **L1 is populated — 44 curated widgets in `@adia-ai/a2ui/catalog/tiers` (ADR-0050, gh#1291 phase 1).** The gap tier the ladder was built for: named, versioned, chat-scale functional units, each carrying its `composes` edge to L0, an A2UI `template`, a description, retrieval keywords, and `source` provenance — enough for a consumer to enumerate a widget and emit it without the corpus. Breadth-first across 17 domains (agent, auth, billing, content, dashboard, data, data-management, display, error, forms, input, layout, marketing, navigation, onboarding, overlay, settings), capped at 3 per domain. Curated from the 516 harvested templates by five mechanical gates and three selection rules, both authored in `catalog/tiers/curation/l1-widgets.curation.json` with their rationale. L2 is unblocked — the composability law had L1 as its precondition. The tier index grows 25 KB → 213 KB; `wiring` and `preview` remain unpopulated (later phases).
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- **The composability law now reaches into templates (gh#1291).** For any tier entry carrying a `template`, `composes` must be exactly the set of rung-below entries the template uses — no undeclared uses, no unused declarations — joining A2UI standard type names (`Column`, `CheckBox`) to catalog component names (`Col`, `Check`) through the registry's tag mapping. Additive: the index schema is unchanged, and L0's derivation is untouched. Previously `composes` was a hand-claimed list nothing verified, which made the ladder's one law decorative for any tier shipping templates.
|
|
14
|
+
- **The `preview` key is documented as reserved-and-unbuilt (gh#1291 phase 2).** `catalog/tiers/README.md` now says so at the file-shape sketch instead of implying a generator exists. Rendering a widget needs a browser, and every rendering path in the repo is ephemeral review tooling against a running dev server; the scope-out rationale and the re-entry checklist live in `.claude/docs/specs/tiered-catalogs.md` ## Previews. `source.page` remains the pointer at a live demo page.
|
|
15
|
+
- **The L0+L1 rungs are served over MCP** by `adia-mcp protocol`'s new `get_catalog_ladder` (see `@adia-ai/mcp`) — reading this package's `./catalog/tiers` export, which is what lets a protocol-only consumer enumerate widgets without the generation system.
|
|
16
|
+
|
|
7
17
|
## [0.8.38] — 2026-08-15
|
|
8
18
|
|
|
9
19
|
### Added
|
|
@@ -3310,7 +3310,7 @@
|
|
|
3310
3310
|
"name": "open"
|
|
3311
3311
|
}
|
|
3312
3312
|
],
|
|
3313
|
-
"status": "
|
|
3313
|
+
"status": "experimental",
|
|
3314
3314
|
"synonyms": {
|
|
3315
3315
|
"embed": [
|
|
3316
3316
|
"embedded",
|
|
@@ -8078,6 +8078,9 @@
|
|
|
8078
8078
|
"footer": {
|
|
8079
8079
|
"description": "Keyboard hint bar"
|
|
8080
8080
|
},
|
|
8081
|
+
"input": {
|
|
8082
|
+
"description": "The auto-stamped search field — a contenteditable=\"plaintext-only\" span carrying role=\"combobox\" (per ADR-0025/ADR-0055; no native <input>). Internal only; not consumer-slottable."
|
|
8083
|
+
},
|
|
8081
8084
|
"list": {
|
|
8082
8085
|
"description": "Container for command items and groups"
|
|
8083
8086
|
}
|
|
@@ -10539,7 +10542,9 @@
|
|
|
10539
10542
|
"composes": [
|
|
10540
10543
|
"icon-ui",
|
|
10541
10544
|
"skeleton-ui",
|
|
10542
|
-
"empty-state-ui"
|
|
10545
|
+
"empty-state-ui",
|
|
10546
|
+
"input-ui",
|
|
10547
|
+
"button-ui"
|
|
10543
10548
|
],
|
|
10544
10549
|
"events": {
|
|
10545
10550
|
"navigate": {
|
|
@@ -16684,6 +16689,11 @@
|
|
|
16684
16689
|
"type": "string",
|
|
16685
16690
|
"default": ""
|
|
16686
16691
|
},
|
|
16692
|
+
"multiExpand": {
|
|
16693
|
+
"description": "Opt out of the default single-expanded-group behavior. When unset, selecting a nav-item-ui collapses every nav-group-ui except the one containing the newly selected item (all, when the selection is ungrouped); manual multi-expansion still works up until the next selection.",
|
|
16694
|
+
"type": "boolean",
|
|
16695
|
+
"default": false
|
|
16696
|
+
},
|
|
16687
16697
|
"variant": {
|
|
16688
16698
|
"description": "Visual treatment. primary = app sidebar; section = subnav rail.",
|
|
16689
16699
|
"type": "string",
|
|
@@ -27635,6 +27645,11 @@
|
|
|
27635
27645
|
"type": "string",
|
|
27636
27646
|
"default": ""
|
|
27637
27647
|
},
|
|
27648
|
+
"selected": {
|
|
27649
|
+
"description": "Whether this option is currently selected. Managed by the parent\n<toggle-group-ui> container (ADR-0056) — don't set directly; the group's\n`value` is the single source of truth. Converges onto <segment-ui>'s\ndeclared reflected-prop mechanism (was previously a private\n`data-selected` stamp with no declared API surface).",
|
|
27650
|
+
"type": "boolean",
|
|
27651
|
+
"default": false
|
|
27652
|
+
},
|
|
27638
27653
|
"text": {
|
|
27639
27654
|
"description": "Visible label text.",
|
|
27640
27655
|
"type": "string",
|
|
@@ -478,6 +478,7 @@
|
|
|
478
478
|
- Variants: variant="primary" (default) — app sidebar; ResizeObserver collapses to icon-only ≤96px; collapsible groups open as a popover when collapsed. variant="section" — subnav rail; quieter chrome; optional [heading] kicker rendered via ::before.
|
|
479
479
|
- Section-variant cascade (ADR-0015 § Nav consolidation): variant="section" on <nav-ui> cascades visually to direct <nav-group-ui> / <nav-item-ui> descendants via CSS `:not([variant])`. Children's JS state is NOT mutated; the cascade is purely visual. Explicit [variant] on a child always wins — use it to escape the cascade or style a standalone group/item.
|
|
480
480
|
- Decision rule: if the user navigates AWAY (different page, route, or anchor) → <nav-ui>. If the user switches VIEWS within the same logical page → <tabs-ui>. Never use <nav-ui> as an in-page section switcher.
|
|
481
|
+
- Group expansion on selection: selecting a <nav-item-ui> collapses every <nav-group-ui> except the one containing the newly selected item (all groups, when the selection is ungrouped). Manual multi-expansion is allowed right up until the next selection. Set [multi-expand] on <nav-ui> to opt out and keep multiple groups open across selections. This clears the JS [open] state (and aria-expanded) on every collapsed group in BOTH variants — primary visually hides that group's children as a result; section variant's CSS keeps children visible regardless of [open] (per the section-variant cascade rule above), so only the accessibility state resets there, with no visible change.
|
|
481
482
|
- Anti-patterns: do NOT wrap <nav-ui> children in <col-ui> / <row-ui> — wrapping breaks selection bubbling + the variant cascade. Do NOT nest <nav-ui> inside <nav-ui>. The legacy 6-element family (<app-nav-ui> / <section-nav-ui> / <app-nav-item-ui> / <section-nav-item-ui> / <app-nav-group-ui> / <section-nav-group-ui>) was retired in ADR-0015 — only <nav-ui> / <nav-group-ui> / <nav-item-ui> remain.
|
|
482
483
|
|
|
483
484
|
## Noodles
|
|
@@ -793,11 +794,12 @@
|
|
|
793
794
|
- Multi-select button cluster — hosts <toggle-option-ui> children, each independently toggleable.
|
|
794
795
|
- Different from <segmented-ui> (single-select) — toggle-group emits a SET of active values.
|
|
795
796
|
- Use for filter chips, multi-flag toggles, day-of-week pickers; for binary on/off use <switch-ui>.
|
|
797
|
+
- Sets the child <toggle-option-ui>'s declared [selected] prop to reflect the group value (ADR-0056) — do not author [selected] directly in generated markup; author the group's value instead.
|
|
796
798
|
|
|
797
799
|
## ToggleOption
|
|
798
800
|
- Child of <toggle-group-ui> — one independently-toggleable button in a multi-select cluster.
|
|
799
801
|
- Different from <segment-ui> (which is single-select inside <segmented-ui>).
|
|
800
|
-
-
|
|
802
|
+
- Selected state exposed via its own declared [selected] reflected prop, set by the parent <toggle-group-ui> (ADR-0056) — mirrors <segment-ui>'s convention. Do not set [selected] directly; drive the group's value instead.
|
|
801
803
|
|
|
802
804
|
## ToggleScheme
|
|
803
805
|
- Place toggle-scheme-ui in the shell topbar's trailing action cluster — slot="action" inside <admin-topbar slot="header"> of <admin-content>. It is a persistent, app-wide preference control; never put it in a sidebar footer / <admin-statusbar>, which hosts user-account items only.
|