@adia-ai/a2ui-corpus 0.7.22 → 0.7.24
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-a2ui_0_9.json +188 -0
- package/catalog-a2ui_0_9_rules.txt +5 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog — @adia-ai/a2ui-corpus
|
|
2
2
|
|
|
3
|
+
## [0.7.24] — 2026-07-01
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
- **`catalog-a2ui_0_9.json` + `catalog-a2ui_0_9_rules.txt` regenerated — registers `display-field-ui`.** The generator catalog was rebuilt from the component yaml SoT after the new `display-field/display-field.yaml` landed, so the published catalog exposes `display-field-ui` (120 → 121 components) to the gen-UI pipeline. Chunks + `chunk-embeddings.json` byte-stable (no new annotated chunks; no re-embed). Substantive v0.7.24 work shipped in `@adia-ai/web-components` — see `packages/web-components/CHANGELOG.md#0724--2026-07-01`.
|
|
7
|
+
|
|
8
|
+
## [0.7.23] — 2026-06-30
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
- **`catalog-a2ui_0_9.json` regenerated — `button-ui` gained the `icon-only` state.** The generator catalog was rebuilt from the component yaml SoT after `button.yaml` added the `icon-only` state (`attribute: data-icon-only`), so the published catalog reflects the new derived state. Chunks + `chunk-embeddings.json` byte-stable (no re-embed; freshness gates green). Substantive v0.7.23 work shipped in `@adia-ai/web-components` — see `packages/web-components/CHANGELOG.md#0723--2026-06-30`.
|
|
12
|
+
|
|
3
13
|
## [0.7.22] — 2026-06-16
|
|
4
14
|
|
|
5
15
|
### Maintenance
|
package/catalog-a2ui_0_9.json
CHANGED
|
@@ -3796,6 +3796,11 @@
|
|
|
3796
3796
|
"description": "Default, ready for interaction.",
|
|
3797
3797
|
"name": "idle"
|
|
3798
3798
|
},
|
|
3799
|
+
{
|
|
3800
|
+
"description": "No text label — neither the `text` attr nor non-whitespace child text. Reflected by render() as `[data-icon-only]`; the CSS collapses the button to a square icon slot (zero inline padding, width = height) and keeps it inline-level. A button labeled by child text (`<button-ui>Save</button-ui>`) is NOT icon-only and renders at full content width, same as `text=`.",
|
|
3801
|
+
"attribute": "data-icon-only",
|
|
3802
|
+
"name": "icon-only"
|
|
3803
|
+
},
|
|
3799
3804
|
{
|
|
3800
3805
|
"description": "Non-interactive; dimmed.",
|
|
3801
3806
|
"attribute": "disabled",
|
|
@@ -9048,6 +9053,189 @@
|
|
|
9048
9053
|
"version": 1
|
|
9049
9054
|
}
|
|
9050
9055
|
},
|
|
9056
|
+
"DisplayField": {
|
|
9057
|
+
"title": "DisplayField",
|
|
9058
|
+
"description": "Display-only labeled value — a field-shaped read-out for a static or masked value (e.g. a card on file \"•••• 4242\"), or a labeled slot that hosts a third-party element (a Stripe Element iframe) under a proper caption. Unlike field-ui it wraps NO interactive control: no focus, no contenteditable, no form participation, no [for]/id-minting. The label names the whole field for assistive tech via role=\"group\" + aria-labelledby, so a slotted foreign element (iframe) is announced with its caption. Reach for field-ui + input-ui when the value is EDITABLE; stat-ui for a prominent metric/KPI; description-list-ui for many read-only key/value pairs at once.",
|
|
9059
|
+
"type": "object",
|
|
9060
|
+
"allOf": [
|
|
9061
|
+
{
|
|
9062
|
+
"$ref": "#/$defs/ComponentCommon"
|
|
9063
|
+
},
|
|
9064
|
+
{
|
|
9065
|
+
"$ref": "#/$defs/CatalogComponentCommon"
|
|
9066
|
+
}
|
|
9067
|
+
],
|
|
9068
|
+
"properties": {
|
|
9069
|
+
"component": {
|
|
9070
|
+
"const": "DisplayField"
|
|
9071
|
+
},
|
|
9072
|
+
"hint": {
|
|
9073
|
+
"description": "Optional caption rendered below the value in subtle style (e.g. \"Expires 12/26\"). Wired into the field's aria-describedby.",
|
|
9074
|
+
"type": "string",
|
|
9075
|
+
"default": ""
|
|
9076
|
+
},
|
|
9077
|
+
"icon": {
|
|
9078
|
+
"description": "Optional leading icon name shown beside the value (e.g. a lock or card-brand glyph). Lazily creates a single icon-ui child.",
|
|
9079
|
+
"type": "string",
|
|
9080
|
+
"default": ""
|
|
9081
|
+
},
|
|
9082
|
+
"label": {
|
|
9083
|
+
"description": "The field caption. Names the whole field for assistive tech.",
|
|
9084
|
+
"type": "string",
|
|
9085
|
+
"default": ""
|
|
9086
|
+
},
|
|
9087
|
+
"value": {
|
|
9088
|
+
"description": "The static value text to display (e.g. \"•••• 4242\"). Ignored when the default slot already carries content — slot a foreign element OR set value=, not both.",
|
|
9089
|
+
"type": "string",
|
|
9090
|
+
"default": ""
|
|
9091
|
+
},
|
|
9092
|
+
"variant": {
|
|
9093
|
+
"description": "Cosmetic value treatment. `default` renders the value in the UI font; `masked` switches to the code/mono family with tabular numerals and light letter-spacing so masked strings (\"•••• 4242\") align cleanly. Tokens only — no layout change.",
|
|
9094
|
+
"type": "string",
|
|
9095
|
+
"enum": [
|
|
9096
|
+
"default",
|
|
9097
|
+
"masked"
|
|
9098
|
+
],
|
|
9099
|
+
"default": "default"
|
|
9100
|
+
}
|
|
9101
|
+
},
|
|
9102
|
+
"required": [
|
|
9103
|
+
"component",
|
|
9104
|
+
"label"
|
|
9105
|
+
],
|
|
9106
|
+
"unevaluatedProperties": false,
|
|
9107
|
+
"x-adiaui": {
|
|
9108
|
+
"anti_patterns": [
|
|
9109
|
+
{
|
|
9110
|
+
"description": "Using input-ui[readonly] to render a static masked value. A readonly input still carries contenteditable/focus semantics and tab-stops; a display read-out should not be a control.",
|
|
9111
|
+
"right": "<display-field-ui label=\"Card on file\" value=\"•••• 4242\" variant=\"masked\"></display-field-ui>\n",
|
|
9112
|
+
"rule": "A non-editable masked value is display-field-ui, not a readonly input.",
|
|
9113
|
+
"wrong": "<input-ui readonly value=\"•••• 4242\"></input-ui>\n"
|
|
9114
|
+
}
|
|
9115
|
+
],
|
|
9116
|
+
"category": "form",
|
|
9117
|
+
"composes": [
|
|
9118
|
+
"icon-ui"
|
|
9119
|
+
],
|
|
9120
|
+
"events": {},
|
|
9121
|
+
"examples": [
|
|
9122
|
+
{
|
|
9123
|
+
"description": "A masked \"card on file\" read-out with a leading lock icon and an expiry hint.",
|
|
9124
|
+
"a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"DisplayField\",\n \"label\": \"Card on file\",\n \"value\": \"•••• •••• •••• 4242\",\n \"variant\": \"masked\",\n \"icon\": \"lock\",\n \"hint\": \"Expires 12/26\"\n }\n]",
|
|
9125
|
+
"name": "card-on-file"
|
|
9126
|
+
},
|
|
9127
|
+
{
|
|
9128
|
+
"description": "A labeled slot hosting a third-party element (e.g. a Stripe Element mount).",
|
|
9129
|
+
"a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"DisplayField\",\n \"label\": \"Card number\",\n \"children\": [\"mount\"]\n },\n { \"id\": \"mount\", \"component\": \"Text\", \"text\": \"[Stripe Element mounts here]\" }\n]",
|
|
9130
|
+
"name": "foreign-element-slot"
|
|
9131
|
+
}
|
|
9132
|
+
],
|
|
9133
|
+
"keywords": [
|
|
9134
|
+
"display field",
|
|
9135
|
+
"readonly",
|
|
9136
|
+
"read-only",
|
|
9137
|
+
"masked",
|
|
9138
|
+
"mask",
|
|
9139
|
+
"static value",
|
|
9140
|
+
"card on file",
|
|
9141
|
+
"last four",
|
|
9142
|
+
"value",
|
|
9143
|
+
"readout",
|
|
9144
|
+
"stripe element",
|
|
9145
|
+
"iframe slot",
|
|
9146
|
+
"non-editable"
|
|
9147
|
+
],
|
|
9148
|
+
"name": "UIDisplayField",
|
|
9149
|
+
"related": [
|
|
9150
|
+
"field",
|
|
9151
|
+
"input",
|
|
9152
|
+
"stat",
|
|
9153
|
+
"description-list"
|
|
9154
|
+
],
|
|
9155
|
+
"slots": {
|
|
9156
|
+
"default": {
|
|
9157
|
+
"description": "The value content. Slot a third-party element here — a Stripe Element iframe mount, or rich markup — and it takes the value region under the label, replacing the [value] attribute. The host's role=\"group\" + aria-labelledby names it for assistive tech."
|
|
9158
|
+
},
|
|
9159
|
+
"hint": {
|
|
9160
|
+
"description": "The hint caption below the value. Auto-stamped from the [hint] attribute; wired into aria-describedby."
|
|
9161
|
+
},
|
|
9162
|
+
"icon": {
|
|
9163
|
+
"description": "The leading icon (a single icon-ui). Auto-stamped from the [icon] attribute."
|
|
9164
|
+
},
|
|
9165
|
+
"label": {
|
|
9166
|
+
"description": "The caption element. Auto-stamped from the [label] attribute; slot your own [slot=\"label\"] child to override with richer markup. It is the group's accessible name (the aria-labelledby target)."
|
|
9167
|
+
},
|
|
9168
|
+
"value": {
|
|
9169
|
+
"description": "The static value element. Auto-stamped from the [value] attribute; suppressed when the default slot carries foreign content."
|
|
9170
|
+
}
|
|
9171
|
+
},
|
|
9172
|
+
"states": [
|
|
9173
|
+
{
|
|
9174
|
+
"description": "Default, non-interactive read-out.",
|
|
9175
|
+
"name": "idle"
|
|
9176
|
+
}
|
|
9177
|
+
],
|
|
9178
|
+
"status": "stable",
|
|
9179
|
+
"synonyms": {
|
|
9180
|
+
"masked": [
|
|
9181
|
+
"display field",
|
|
9182
|
+
"field",
|
|
9183
|
+
"value"
|
|
9184
|
+
],
|
|
9185
|
+
"readout": [
|
|
9186
|
+
"display field",
|
|
9187
|
+
"stat",
|
|
9188
|
+
"field"
|
|
9189
|
+
],
|
|
9190
|
+
"value": [
|
|
9191
|
+
"display field",
|
|
9192
|
+
"field",
|
|
9193
|
+
"stat"
|
|
9194
|
+
]
|
|
9195
|
+
},
|
|
9196
|
+
"tag": "display-field-ui",
|
|
9197
|
+
"tokens": {
|
|
9198
|
+
"--display-field-gap": {
|
|
9199
|
+
"description": "Vertical gap between the label, value, and hint rows."
|
|
9200
|
+
},
|
|
9201
|
+
"--display-field-hint-color": {
|
|
9202
|
+
"description": "Hint foreground color."
|
|
9203
|
+
},
|
|
9204
|
+
"--display-field-hint-size": {
|
|
9205
|
+
"description": "Hint font size."
|
|
9206
|
+
},
|
|
9207
|
+
"--display-field-icon-gap": {
|
|
9208
|
+
"description": "Horizontal gap between the leading icon and the value."
|
|
9209
|
+
},
|
|
9210
|
+
"--display-field-label-color": {
|
|
9211
|
+
"description": "Label foreground color."
|
|
9212
|
+
},
|
|
9213
|
+
"--display-field-label-size": {
|
|
9214
|
+
"description": "Label font size."
|
|
9215
|
+
},
|
|
9216
|
+
"--display-field-label-weight": {
|
|
9217
|
+
"description": "Label font weight."
|
|
9218
|
+
},
|
|
9219
|
+
"--display-field-masked-font": {
|
|
9220
|
+
"description": "Font family applied to a masked value."
|
|
9221
|
+
},
|
|
9222
|
+
"--display-field-masked-tracking": {
|
|
9223
|
+
"description": "Letter-spacing applied to a masked value."
|
|
9224
|
+
},
|
|
9225
|
+
"--display-field-value-color": {
|
|
9226
|
+
"description": "Value foreground color."
|
|
9227
|
+
},
|
|
9228
|
+
"--display-field-value-size": {
|
|
9229
|
+
"description": "Value font size."
|
|
9230
|
+
},
|
|
9231
|
+
"--display-field-value-weight": {
|
|
9232
|
+
"description": "Value font weight."
|
|
9233
|
+
}
|
|
9234
|
+
},
|
|
9235
|
+
"traits": [],
|
|
9236
|
+
"version": 1
|
|
9237
|
+
}
|
|
9238
|
+
},
|
|
9051
9239
|
"Divider": {
|
|
9052
9240
|
"title": "Divider",
|
|
9053
9241
|
"description": "Horizontal or vertical divider with optional label — a semantic\nrule between content groups. Set [vertical] for column dividers\n(typically inside <row-ui>); set [label] for a labeled-rule pattern\nwhere the divider carries a short caption (e.g. \"OR\" between auth\nmethods, \"Today\" between message groups). Distinct from\n<hr data-nav-divider> (which is a CSS hook used by <nav-ui> for nav\nsection separation, not a primitive).\n",
|
|
@@ -229,6 +229,11 @@
|
|
|
229
229
|
- Do not use for editable forms — use <fields-ui> instead.
|
|
230
230
|
- Pairs render as label + value on the same row by default; use vertical variant for narrow panes.
|
|
231
231
|
|
|
232
|
+
## DisplayField
|
|
233
|
+
- Use for a display-ONLY labeled value — a masked card number, a 'card on file' read-out, an account id — anywhere a value reads as a field but must not be editable.
|
|
234
|
+
- To host a third-party element (a Stripe Element iframe) under a label, slot it as the default child instead of setting value=. The label names it via role=group + aria-labelledby.
|
|
235
|
+
- For an editable field use field-ui + input-ui; for a prominent KPI use stat-ui; for many read-only pairs at once use description-list-ui.
|
|
236
|
+
|
|
232
237
|
## Divider
|
|
233
238
|
- Use to separate visually distinct sections within a container; horizontal default, vertical via orientation='vertical'.
|
|
234
239
|
- Inside menus / popovers use <menu-divider-ui> instead; it has menu-specific token spacing.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adia-ai/a2ui-corpus",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.24",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AdiaUI A2UI training corpus \u2014 canonical v0.9 catalog + chunks + eval fixtures + feedback + gap registry. Consumed by the compose engine's retrieval layer + the MCP pipeline.",
|
|
6
6
|
"exports": {
|