@adia-ai/a2ui 0.8.39 → 0.8.40

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
@@ -4,6 +4,12 @@
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.40] — 2026-08-15
8
+
9
+ ### Maintenance
10
+ - **Lockstep version bump only.** No source changes in this package; bumped to maintain the lockstep version coherence enforced by `scripts/release/check-lockstep.mjs`. Substantive v0.8.40 work shipped in the ADR-0052/0053/0054/0056 attribute-grammar and token-convention breaking wave. See `packages/web-components/CHANGELOG.md#0840--2026-08-15` for details.
11
+ - **`catalog/` touched in this release window** (2 file(s), e.g. `catalog/catalog-a2ui_0_9.json`) — carried by the entries above.
12
+
7
13
  ## [0.8.39] — 2026-08-15
8
14
 
9
15
  ### Added
@@ -5442,6 +5442,11 @@
5442
5442
  "component": {
5443
5443
  "const": "Chart"
5444
5444
  },
5445
+ "cornerRadius": {
5446
+ "description": "Bar corner radius in px (null = let CSS tokens decide)",
5447
+ "type": "number",
5448
+ "default": null
5449
+ },
5445
5450
  "data": {
5446
5451
  "description": "JS property (set programmatically — `el.data = [...]`). An array of plain objects; each object's keys are named by the `x` and `y` attributes — e.g. `<chart-ui x=\"month\" y=\"revenue\">` consumes `[{month:'Jan', revenue:3200}, {month:'Feb', revenue:4100}]`. The Chart.js `{labels, datasets}` envelope is NOT chart-ui's API — passing it (or any non-array value) renders an empty chart. May also be supplied declaratively as a JSON-array `data=\"[…]\"` attribute, hydrated once at connect. Custom accessor on the element class, not a reflected attribute.",
5447
5452
  "$ref": "#/$defs/DynamicObjectList"
@@ -5488,11 +5493,6 @@
5488
5493
  "type": "boolean",
5489
5494
  "default": false
5490
5495
  },
5491
- "radius": {
5492
- "description": "Bar corner radius (null = let CSS tokens decide)",
5493
- "type": "number",
5494
- "default": null
5495
- },
5496
5496
  "seriesEmphasis": {
5497
5497
  "description": "Multi-line only. Names one series key (matching a `y` key) to render at full strength — area fill + full-opacity line. Every other series drops its area fill and renders line-only at --chart-deemphasized-opacity. Empty (default) applies full treatment to every series, unchanged from pre-gh#561 behavior.",
5498
5498
  "type": "string",
@@ -20457,7 +20457,7 @@
20457
20457
  },
20458
20458
  "QRCode": {
20459
20459
  "title": "QRCode",
20460
- "description": "Inline QR code generator — renders a scannable code as inline SVG.\nTwo modes:\n\n**A. Auto-encode (default).** Set `[value]` to a string (URL, plain\ntext, share link, 2FA secret). The component encodes the data with\nthe built-in zero-deps QR encoder (byte mode, ECC level configurable,\nversions 1–10 up to ~150 byte chars) and renders an SVG.\n\n**B. Bring-your-own matrix.** Set `[matrix]` to a JSON string of a\n2-D 0/1 array (`[[1,0,1,...],[...],...]`). The component renders the\nsupplied matrix directly without invoking its own encoder. Use this\nwhen you need versions 11–40, kanji/alphanumeric mode, or any\nencoder feature beyond the built-in. When both `[value]` and\n`[matrix]` are set, the matrix wins (BYO override).\n\nOutput is a single `<svg>` with `viewBox=\"0 0 N N\"`. Crisp-edges\nrendering preserves the scannable cell boundaries at any size.\nSizing is controlled by the `[size]` prop (host CSS-pixel dimension);\ninternal cell size is computed from `size / (matrix-size + 2 ·\nmargin)`. ARIA: `role=\"img\"` with `aria-label` (default \"QR code\"\nor the `[label]` prop).\n",
20460
+ "description": "Inline QR code generator — renders a scannable code as inline SVG.\nTwo modes:\n\n**A. Auto-encode (default).** Set `[value]` to a string (URL, plain\ntext, share link, 2FA secret). The component encodes the data with\nthe built-in zero-deps QR encoder (byte mode, ECC level configurable,\nversions 1–10 up to ~150 byte chars) and renders an SVG.\n\n**B. Bring-your-own matrix.** Set `[matrix]` to a JSON string of a\n2-D 0/1 array (`[[1,0,1,...],[...],...]`). The component renders the\nsupplied matrix directly without invoking its own encoder. Use this\nwhen you need versions 11–40, kanji/alphanumeric mode, or any\nencoder feature beyond the built-in. When both `[value]` and\n`[matrix]` are set, the matrix wins (BYO override).\n\nOutput is a single `<svg>` with `viewBox=\"0 0 N N\"`. Crisp-edges\nrendering preserves the scannable cell boundaries at any size.\nSizing is controlled by the `[size]` prop (host CSS-pixel dimension);\ninternal cell size is computed from `size / (matrix-size + 2 ·\nquiet-zone)`. ARIA: `role=\"img\"` with `aria-label` (default \"QR code\"\nor the `[label]` prop).\n",
20461
20461
  "type": "object",
20462
20462
  "allOf": [
20463
20463
  {
@@ -20497,18 +20497,18 @@
20497
20497
  "type": "string",
20498
20498
  "default": "QR code"
20499
20499
  },
20500
- "margin": {
20501
- "description": "Quiet zone in cells around the QR pattern. QR spec requires a\nminimum 4-cell margin for reliable scanning; smaller values may\nnot scan on some devices. Default `4`.\n",
20502
- "type": "number",
20503
- "default": 4
20504
- },
20505
20500
  "matrix": {
20506
20501
  "description": "BYO precomputed bit matrix as JSON — a 2-D array of 0/1\n(`[[1,0,...],[0,1,...],...]`). When set, the built-in encoder is\nbypassed and this matrix renders directly. Useful for QR variants\nthe built-in doesn't support (versions 11–40, alphanumeric mode,\nkanji, etc.) — bring your own encoder, pass the matrix here.\n",
20507
20502
  "type": "string",
20508
20503
  "default": ""
20509
20504
  },
20505
+ "quietZone": {
20506
+ "description": "Quiet zone in cells around the QR pattern. QR spec requires a\nminimum 4-cell quiet zone for reliable scanning; smaller values\nmay not scan on some devices. Default `4`. (Renamed from\n`[margin]` — that name collided with the framework's global\n`[margin]` Scale attribute; `margin` on `qr-code-ui` now means\nthe global spacing attribute, per ADR-0053.)\n",
20507
+ "type": "number",
20508
+ "default": 4
20509
+ },
20510
20510
  "size": {
20511
- "description": "Host display size in CSS pixels (width and height; the SVG is\nalways square). Default 200. Internal cell size is computed from\nthis divided by `matrix-size + 2·margin`.\n",
20511
+ "description": "Host display size in CSS pixels (width and height; the SVG is\nalways square). Default 200. Internal cell size is computed from\nthis divided by `matrix-size + 2·quiet-zone`.\n",
20512
20512
  "type": "number",
20513
20513
  "default": 200
20514
20514
  },
@@ -20530,9 +20530,9 @@
20530
20530
  "wrong": "<qr-code-ui value=\"https://very.long.url.that.exceeds.150.bytes.of.utf8.encoded.length...\"></qr-code-ui>\n"
20531
20531
  },
20532
20532
  {
20533
- "fix": "<qr-code-ui value=\"...\" margin=\"4\"></qr-code-ui>\n",
20534
- "why": "Zero margin breaks scanning. QR spec requires a 4-cell quiet\nzone for reliable detection.\n",
20535
- "wrong": "<qr-code-ui value=\"...\" margin=\"0\"></qr-code-ui>\n"
20533
+ "fix": "<qr-code-ui value=\"...\" quiet-zone=\"4\"></qr-code-ui>\n",
20534
+ "why": "Zero quiet zone breaks scanning. QR spec requires a 4-cell quiet\nzone for reliable detection.\n",
20535
+ "wrong": "<qr-code-ui value=\"...\" quiet-zone=\"0\"></qr-code-ui>\n"
20536
20536
  }
20537
20537
  ],
20538
20538
  "category": "display",
@@ -24615,16 +24615,6 @@
24615
24615
  "description": "JS property (set programmatically — `el.data = [...]`) — row records, an array of plain objects keyed to columns[].key. May also be supplied declaratively as a JSON-array `data=\"[…]\"` attribute, hydrated once at connect (gh#288) — the same pattern chart-ui's `data` attribute uses. Custom accessor on the element class, not a reflected attribute.",
24616
24616
  "$ref": "#/$defs/DynamicObjectList"
24617
24617
  },
24618
- "density": {
24619
- "description": "Controls cell padding and row height. 'compact' for dense data, 'standard' for default spacing, 'comfortable' for spacious rows.",
24620
- "type": "string",
24621
- "enum": [
24622
- "compact",
24623
- "standard",
24624
- "comfortable"
24625
- ],
24626
- "default": "standard"
24627
- },
24628
24618
  "expandable": {
24629
24619
  "description": "Enable row expansion",
24630
24620
  "type": "boolean",
@@ -27646,7 +27636,7 @@
27646
27636
  "default": ""
27647
27637
  },
27648
27638
  "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).",
27639
+ "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.",
27650
27640
  "type": "boolean",
27651
27641
  "default": false
27652
27642
  },
@@ -560,7 +560,7 @@
560
560
  - Set [value] for URLs / share links / plain text. The built-in encoder covers byte-mode UTF-8 up to QR version 10 (~150 chars at ECC-M, more at lower ECC levels).
561
561
  - For data that exceeds version 10, switch to a higher ECC level downgrade ([error-correction=L]) OR use a BYO encoder and pass the precomputed [matrix].
562
562
  - When QR sits over a non-white surface, set [background] to a solid color. White-on-image QR backgrounds are unreliable for scanners — quiet-zone contrast against the dark cells is the load-bearing visual.
563
- - The [margin] (quiet zone) defaults to 4 cells per QR spec. Smaller margins may scan on some devices but not others; do not go below 2.
563
+ - The [quiet-zone] defaults to 4 cells per QR spec. Smaller values may scan on some devices but not others; do not go below 2.
564
564
 
565
565
  ## RadioGroup
566
566
  - The canonical radio-group shape is <radio-group-ui label="…"> wrapping a set of bare <radio-ui label="…" name="…"> children — the wrapper supplies the group's accessible name (role=radiogroup + aria-labelledby); Column/Section cannot carry a role, so a bare Column of radios has no programmatic question↔group association.
@@ -1,9 +1,9 @@
1
1
  {
2
- "catalogId": "adia.tiers@0.8.39",
2
+ "catalogId": "adia.tiers@0.8.40",
3
3
  "description": "Tier index of the AdiaUI catalog contract (ADR-0050). L0-L4 ladder; every tier-N entry is a declared composition of tier-(N-1) entries. Derived — regenerate with `npm run build:catalog-tiers`, never hand-edit.",
4
4
  "extends": {
5
5
  "catalogId": "adia.base",
6
- "version": "0.8.39"
6
+ "version": "0.8.40"
7
7
  },
8
8
  "tiers": {
9
9
  "L0": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adia-ai/a2ui",
3
- "version": "0.8.39",
3
+ "version": "0.8.40",
4
4
  "description": "The A2UI protocol — runtime (renderer, registry, streams, surface manifest, wiring primitives, dockable base classes) plus protocol-side validation. Framework-agnostic and dependency-free; pairs with any A2UI-conformant component set. Folded from @adia-ai/a2ui-runtime + the protocol half of @adia-ai/a2ui-validator (ADR-0048).",
5
5
  "type": "module",
6
6
  "exports": {