@aceshooting/lyra-ui 9.0.0 → 9.1.1

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.
Files changed (110) hide show
  1. package/CHANGELOG.md +369 -0
  2. package/README.md +9 -2
  3. package/custom-elements.json +1 -1
  4. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +1 -1
  5. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +1 -1
  6. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.styles.js +2 -2
  7. package/dist/components/agent-tools/agent-run/agent-run.class.js +1 -1
  8. package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +1 -0
  9. package/dist/components/agent-tools/agent-trace/agent-trace.class.js +1 -1
  10. package/dist/components/agent-tools/browser-frame/browser-frame.class.js +1 -1
  11. package/dist/components/agent-tools/commit-card/commit-card.class.js +1 -1
  12. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +2 -2
  13. package/dist/components/agent-tools/context-inspector/context-inspector.class.js +1 -1
  14. package/dist/components/agent-tools/eval-result/eval-result.class.js +1 -1
  15. package/dist/components/agent-tools/policy-summary/policy-summary.class.js +1 -1
  16. package/dist/components/agent-tools/schema-viewer/schema-viewer.styles.js +2 -2
  17. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +1 -1
  18. package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +1 -1
  19. package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
  20. package/dist/components/agent-tools/test-results/test-results.class.js +1 -1
  21. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js +1 -1
  22. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +2 -2
  23. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +2 -2
  24. package/dist/components/agent-tools/trace-tree/trace-tree.class.js +2 -2
  25. package/dist/components/charts/chart/bar-chart.class.js +1 -1
  26. package/dist/components/charts/chart/bubble-chart.class.js +1 -1
  27. package/dist/components/charts/chart/chart.class.js +1 -1
  28. package/dist/components/charts/chart/doughnut-chart.class.js +1 -1
  29. package/dist/components/charts/chart/histogram.class.js +1 -1
  30. package/dist/components/charts/chart/line-chart.class.js +1 -1
  31. package/dist/components/charts/chart/lite-chart.class.js +1 -1
  32. package/dist/components/charts/chart/pie-chart.class.js +1 -1
  33. package/dist/components/charts/chart/polar-area-chart.class.js +1 -1
  34. package/dist/components/charts/chart/radar-chart.class.js +1 -1
  35. package/dist/components/charts/chart/scatter-chart.class.js +1 -1
  36. package/dist/components/conversation/chat-message/chat-message.class.js +2 -2
  37. package/dist/components/conversation/chat-message/chat-message.styles.js +6 -0
  38. package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
  39. package/dist/components/conversation/generation-metrics/generation-metrics.class.js +2 -2
  40. package/dist/components/conversation/realtime-session/realtime-session.styles.js +1 -1
  41. package/dist/components/conversation/thread-list/thread-list.styles.js +9 -0
  42. package/dist/components/conversation/usage-badge/usage-badge.class.js +1 -1
  43. package/dist/components/data/file-tree/file-tree.class.js +1 -1
  44. package/dist/components/data/heatmap/heatmap.class.d.ts +1 -1
  45. package/dist/components/data/heatmap/heatmap.class.js +1 -1
  46. package/dist/components/data/pagination/pagination.class.js +1 -1
  47. package/dist/components/data/table/table.class.js +1 -1
  48. package/dist/components/forms/button/button.styles.js +1 -1
  49. package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
  50. package/dist/components/forms/combobox/combobox.class.js +1 -1
  51. package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
  52. package/dist/components/forms/input/time-input.class.js +1 -1
  53. package/dist/components/forms/switch/switch.styles.js +3 -1
  54. package/dist/components/layout/card/card.styles.js +2 -2
  55. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
  56. package/dist/components/layout/drilldown-panel/drilldown-panel.class.d.ts +1 -0
  57. package/dist/components/layout/filter-bar/filter-bar.class.js +1 -1
  58. package/dist/components/layout/multi-split/multi-split.class.js +1 -1
  59. package/dist/components/layout/multi-split/multi-split.styles.js +29 -9
  60. package/dist/components/media/attachment-chip/attachment-chip.class.js +2 -2
  61. package/dist/components/media/attachment-trigger/attachment-trigger.class.d.ts +1 -1
  62. package/dist/components/media/attachment-trigger/attachment-trigger.class.js +2 -2
  63. package/dist/components/media/attachment-trigger/attachment-trigger.styles.js +2 -2
  64. package/dist/components/media/file-icon/file-icon.class.js +1 -1
  65. package/dist/components/media/file-input/file-input.class.js +1 -1
  66. package/dist/components/media/flag/flag.class.js +1 -1
  67. package/dist/components/media/lightbox/lightbox.styles.js +2 -0
  68. package/dist/components/overlays/callout/callout.styles.js +2 -2
  69. package/dist/components/overlays/kbd/kbd.class.js +1 -1
  70. package/dist/components/overlays/overlay/popover.class.js +2 -2
  71. package/dist/components/overlays/overlay/tooltip.class.js +2 -2
  72. package/dist/components/overlays/popup/popup.class.js +2 -2
  73. package/dist/components/overlays/spinner/spinner.styles.js +2 -2
  74. package/dist/components/retrieval/citation-badge/citation-badge.class.js +1 -1
  75. package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +1 -1
  76. package/dist/components/retrieval/entity-card/entity-card.class.d.ts +1 -0
  77. package/dist/components/retrieval/entity-dossier/entity-dossier.class.d.ts +1 -0
  78. package/dist/components/retrieval/entity-dossier/entity-dossier.class.js +1 -1
  79. package/dist/components/retrieval/graph/graph.class.d.ts +1 -0
  80. package/dist/components/retrieval/graph-legend/graph-legend.class.d.ts +1 -0
  81. package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +2 -2
  82. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +1 -0
  83. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +11 -0
  84. package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +1 -1
  85. package/dist/components/retrieval/memory-panel/memory-panel.class.js +1 -1
  86. package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +1 -1
  87. package/dist/components/retrieval/provenance-panel/provenance-panel.class.js +1 -1
  88. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -1
  89. package/dist/components/retrieval/source-picker/source-picker.class.js +1 -1
  90. package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
  91. package/dist/components/viewers/contact-viewer/contact-viewer.class.js +1 -1
  92. package/dist/components/viewers/document-compare/document-compare.class.js +1 -1
  93. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
  94. package/dist/internal/dev-mode-attribute-warning.d.ts +7 -0
  95. package/dist/internal/dev-mode-attribute-warning.js +1 -0
  96. package/dist/internal/lyra-element.js +1 -1
  97. package/dist/internal/package-metadata.d.ts +1 -1
  98. package/dist/internal/package-metadata.js +1 -1
  99. package/llms/components/lr-archive-viewer.md +5 -0
  100. package/llms/components/lr-attachment-trigger.md +2 -2
  101. package/llms/components/lr-ebook-viewer.md +3 -0
  102. package/llms/components/lr-heatmap.md +1 -1
  103. package/llms/index.md +1 -1
  104. package/llms/migration.md +3 -3
  105. package/llms/peers.md +1 -1
  106. package/llms/shared.md +13 -0
  107. package/llms-full.txt +24 -3
  108. package/package.json +5 -3
  109. package/vscode-html-data.json +1 -1
  110. package/web-types.json +2 -2
package/llms/peers.md CHANGED
@@ -46,7 +46,7 @@ changes the component library version without installing a supported SheetJS rel
46
46
  | `libphonenumber-js` | `>=1.11.0 <2` | `lr-phone-input` |
47
47
  | `mammoth` | `^1.12.1` | `lr-docx-viewer` |
48
48
  | `maplibre-gl` | `>=5 <7` | `lr-geojson-view`, `lr-geojson-viewer`, `lr-map` |
49
- | `marked` | `^18.0.9` | `lr-agent-workspace`, `lr-dashboard-grid`, `lr-eval-run`, `lr-markdown`, `lr-markdown-core`, `lr-message-parts`, `lr-notebook-viewer`, `lr-rag-answer`, `lr-streaming-text`, `lr-widget-renderer` |
49
+ | `marked` | `^18.0.10` | `lr-agent-workspace`, `lr-dashboard-grid`, `lr-eval-run`, `lr-markdown`, `lr-markdown-core`, `lr-message-parts`, `lr-notebook-viewer`, `lr-rag-answer`, `lr-streaming-text`, `lr-widget-renderer` |
50
50
  | `papaparse` | `^5.6.0` | `lr-csv-viewer`, `lr-dataset-viewer` |
51
51
  | `pdfjs-dist` | `^6.2.108` | `lr-pdf-viewer` |
52
52
  | `postal-mime` | `^3.0.0` | `lr-email-viewer` |
package/llms/shared.md CHANGED
@@ -1620,6 +1620,19 @@ files matter when scaffolding a project's editor configuration. Build tools can
1620
1620
  through the explicit `@aceshooting/lyra-ui/custom-elements.json` package export; native Node ESM
1621
1621
  uses `with { type: 'json' }` on that import.
1622
1622
 
1623
+ **Inherited members in `custom-elements.json`.** A subclass declaration's `cssParts` array is
1624
+ always the complete flattened set, including everything inherited from a superclass — `::part()`
1625
+ has no type-level inheritance chain a consumer could otherwise walk. `attributes`, `members`,
1626
+ `events`, `slots`, and `cssProperties` are the opposite: a subclass declaration lists only its own
1627
+ entries plus any inherited entry it explicitly overrides, pruning an inherited-and-unmodified entry
1628
+ of those four kinds. This is intentional, not a gap — a TypeScript/JS consumer already gets the
1629
+ full set for free from the generated `.d.ts` `extends` chain, the same resolution `web-types.json`
1630
+ and `vscode-html-data.json` perform ahead of time. A consumer reading `custom-elements.json`
1631
+ directly and needing the complete `attributes`/`members`/`events`/`slots`/`cssProperties` set for
1632
+ those four kinds must walk the declaration's own `superclass.name`/`superclass.module` across
1633
+ `modules[].declarations[]` itself, or read `web-types.json`/`vscode-html-data.json` instead, which
1634
+ are already fully resolved.
1635
+
1623
1636
  ## Independence and migration
1624
1637
 
1625
1638
  Lyra has no runtime, theme, or design-token dependency on Shoelace or Web Awesome. Documented `wa-*`
package/llms-full.txt CHANGED
@@ -1672,6 +1672,19 @@ files matter when scaffolding a project's editor configuration. Build tools can
1672
1672
  through the explicit `@aceshooting/lyra-ui/custom-elements.json` package export; native Node ESM
1673
1673
  uses `with { type: 'json' }` on that import.
1674
1674
 
1675
+ **Inherited members in `custom-elements.json`.** A subclass declaration's `cssParts` array is
1676
+ always the complete flattened set, including everything inherited from a superclass — `::part()`
1677
+ has no type-level inheritance chain a consumer could otherwise walk. `attributes`, `members`,
1678
+ `events`, `slots`, and `cssProperties` are the opposite: a subclass declaration lists only its own
1679
+ entries plus any inherited entry it explicitly overrides, pruning an inherited-and-unmodified entry
1680
+ of those four kinds. This is intentional, not a gap — a TypeScript/JS consumer already gets the
1681
+ full set for free from the generated `.d.ts` `extends` chain, the same resolution `web-types.json`
1682
+ and `vscode-html-data.json` perform ahead of time. A consumer reading `custom-elements.json`
1683
+ directly and needing the complete `attributes`/`members`/`events`/`slots`/`cssProperties` set for
1684
+ those four kinds must walk the declaration's own `superclass.name`/`superclass.module` across
1685
+ `modules[].declarations[]` itself, or read `web-types.json`/`vscode-html-data.json` instead, which
1686
+ are already fully resolved.
1687
+
1675
1688
  ## Independence and migration
1676
1689
 
1677
1690
  Lyra has no runtime, theme, or design-token dependency on Shoelace or Web Awesome. Documented `wa-*`
@@ -10597,7 +10610,7 @@ row?: number; col?: number; date?: string }`, matched the same way as `annotatio
10597
10610
  persistent ring (independent of keyboard focus) over the matching cell, appends a "Selected: ..."
10598
10611
  description to the host's own `aria-label`, and adds localized selected wording to the keyboard
10599
10612
  announcement when the focused cell is the selection. Purely a controlled property — mirrors
10600
- `<lr-lite-chart>`'s `selectedIndex`, this component never mutates it itself. Unset (the default,
10613
+ `<lr-lite-chart>`'s `selectedIndices`, this component never mutates it itself. Unset (the default,
10601
10614
  `null`) reproduces today's exact output.
10602
10615
  - `accessibleCells: boolean = false` (attribute `accessible-cells`) — renders `[part="cells"]` with
10603
10616
  at most 400 `[part="cell"]` native buttons around the active cell. The semantic grid exposes the
@@ -22394,8 +22407,8 @@ true}))` still invokes the anchor's native activation behavior if nothing calls
22394
22407
 
22395
22408
  ## `lr-attachment-trigger`
22396
22409
 
22397
- A compact attach affordance designed for a chat composer's leading slot (see `lr-chat-composer`'s
22398
- own `leading` slot, which this drops straight into, though it has no code dependency on it). First-
22410
+ A compact attach affordance designed for a chat composer's start slot (see `lr-chat-composer`'s
22411
+ own `start` slot, which this drops straight into, though it has no code dependency on it). First-
22399
22412
  party invention (no Web Awesome equivalent). Its shape adapts to how many attachment `capabilities`
22400
22413
  are configured: exactly one renders a single plain icon button; more than one renders a small
22401
22414
  anchored menu (composed from `lr-dropdown`/`lr-menu`/`lr-menu-item`) listing each
@@ -25551,6 +25564,11 @@ import. Opening a `.zip` through `<lr-document-viewer>` forwards `anchor`/`highl
25551
25564
  viewer, so a deep link into an entry name survives the registry hop. `.tar`, `.rar`, and other
25552
25565
  archive formats fall through to `<lr-document-preview>`'s generic download fallback.
25553
25566
 
25567
+ A granular consumer (not importing the `all.js` compatibility bundle) must import
25568
+ `@aceshooting/lyra-ui/components/viewers/archive-viewer/archive-viewer-register.js` once to install
25569
+ this registration; without it `<lr-document-viewer>` never recognizes `.zip` files and falls
25570
+ through to the generic download fallback described above.
25571
+
25554
25572
  Remote resources are capped at 25 MB; exceeding it surfaces the localized
25555
25573
  `documentPreviewResourceTooLarge` message instead of the entry listing.
25556
25574
 
@@ -25617,6 +25635,9 @@ unambiguous beside other previous/next controls and are overridable through `.st
25617
25635
  matches `application/epub+zip` and `.epub` filenames, declaring `{ anchors: ['cfi', 'text-quote'],
25618
25636
  search: true, textSelect: true }` capabilities and forwarding `anchor`/`highlights` to the mounted
25619
25637
  viewer. The peer loader requires the callable EPUB factory; malformed module shapes fail closed.
25638
+ A granular consumer (not importing the `all.js` compatibility bundle) must also import
25639
+ `@aceshooting/lyra-ui/components/viewers/ebook-viewer/ebook-viewer-register.js` once to install
25640
+ this registration; without it `<lr-document-viewer>` never recognizes `.epub` files.
25620
25641
 
25621
25642
  Remote resources are capped at 25 MB; exceeding it surfaces the localized
25622
25643
  `documentPreviewResourceTooLarge` message instead of the ebook.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aceshooting/lyra-ui",
3
- "version": "9.0.0",
3
+ "version": "9.1.1",
4
4
  "description": "Free, independent Lit web components: an open-source alternative to Shoelace and Web Awesome with accessible forms, dashboards, charts, and agent UI.",
5
5
  "keywords": [
6
6
  "web-components",
@@ -949,6 +949,7 @@
949
949
  "./components/utility/visually-hidden/visually-hidden.class.js": "./dist/components/utility/visually-hidden/visually-hidden.class.js",
950
950
  "./components/utility/visually-hidden/visually-hidden.js": "./dist/components/utility/visually-hidden/visually-hidden.js",
951
951
  "./components/viewers": "./dist/components/viewers/index.js",
952
+ "./components/viewers/archive-viewer/archive-viewer-register.js": "./dist/components/viewers/archive-viewer/archive-viewer-register.js",
952
953
  "./components/viewers/archive-viewer/archive-viewer.class.js": "./dist/components/viewers/archive-viewer/archive-viewer.class.js",
953
954
  "./components/viewers/archive-viewer/archive-viewer.js": "./dist/components/viewers/archive-viewer/archive-viewer.js",
954
955
  "./components/viewers/calendar-viewer/calendar-viewer.class.js": "./dist/components/viewers/calendar-viewer/calendar-viewer.class.js",
@@ -968,6 +969,7 @@
968
969
  "./components/viewers/document-viewer/registry.js": "./dist/components/viewers/document-viewer/registry.js",
969
970
  "./components/viewers/docx-viewer/docx-viewer.class.js": "./dist/components/viewers/docx-viewer/docx-viewer.class.js",
970
971
  "./components/viewers/docx-viewer/docx-viewer.js": "./dist/components/viewers/docx-viewer/docx-viewer.js",
972
+ "./components/viewers/ebook-viewer/ebook-viewer-register.js": "./dist/components/viewers/ebook-viewer/ebook-viewer-register.js",
971
973
  "./components/viewers/ebook-viewer/ebook-viewer.class.js": "./dist/components/viewers/ebook-viewer/ebook-viewer.class.js",
972
974
  "./components/viewers/ebook-viewer/ebook-viewer.js": "./dist/components/viewers/ebook-viewer/ebook-viewer.js",
973
975
  "./components/viewers/email-viewer/email-viewer.class.js": "./dist/components/viewers/email-viewer/email-viewer.class.js",
@@ -2264,7 +2266,7 @@
2264
2266
  "libphonenumber-js": ">=1.11.0 <2",
2265
2267
  "mammoth": "^1.12.1",
2266
2268
  "maplibre-gl": ">=5 <7",
2267
- "marked": "^18.0.9",
2269
+ "marked": "^18.0.10",
2268
2270
  "papaparse": "^5.6.0",
2269
2271
  "pdfjs-dist": "^6.2.108",
2270
2272
  "postal-mime": "^3.0.0",
@@ -2403,7 +2405,7 @@
2403
2405
  "libphonenumber-js": "^1.13.11",
2404
2406
  "mammoth": "^1.12.1",
2405
2407
  "maplibre-gl": "^6.4.0",
2406
- "marked": "^18.0.9",
2408
+ "marked": "^18.0.10",
2407
2409
  "oxc-parser": "^0.144.0",
2408
2410
  "papaparse": "^5.6.0",
2409
2411
  "pdfjs-dist": "^6.2.108",
@@ -1329,7 +1329,7 @@
1329
1329
  "name": "lr-attachment-trigger",
1330
1330
  "description": {
1331
1331
  "kind": "markdown",
1332
- "value": "`<lr-attachment-trigger>` — a compact attach affordance designed for a\nchat composer's leading slot (see `<lr-chat-composer>`'s own `leading`\nslot, which this drops straight into, though this component has no code\ndependency on it). Its shape adapts to how many attachment `capabilities`\nare configured:\n - Exactly one capability: a single plain icon button ([part='trigger']).\n Activating it performs that capability's action directly.\n - More than one: a small anchored menu ([part='menu'], composed from\n `<lr-dropdown>`/`<lr-menu>`/`<lr-menu-item>`) listing each capability as a row.\n\nTwo of the four capabilities (`files`, `image`) are file-picker-backed:\nactivating them opens a hidden native `<input type=\"file\">` via a\nsynthetic `.click()`, and the resulting selection is re-emitted as\n`lr-files`. `accept` is shared across both — `image` defaults it to\n`'image/*'` unless the `accept` prop overrides it, `files` always uses\n`accept` as-is (empty means \"any file type\", matching a bare native\n`<input type=\"file\">` with no `accept` attribute).\n\n**`camera`/`audio` are scope-limited by design.** This component does not\nimplement any camera or microphone capture UI itself — no `getUserMedia`,\nno `<input capture>` — because that's entirely a host/browser concern with\nno single right answer (a desktop web app, a mobile PWA, and a native\nwrapper all want different things here). Activating `camera` fires\n`lr-camera-request`; activating `audio` fires `lr-audio-request`. The\nhost owns everything from that point on — typically opening\n`<lr-push-to-talk>` in a `<lr-overlay>`/popover for `audio`, then\nhanding the resulting blob to something like `<lr-attachment-chip>`.\n\n---\n\n**Component metadata**\n\n- Status: `stable`\n- Since: `4.0.0`\n- Rationale: This exact lr-* tag appears in a published Lyra release manifest and remains a supported public contract under semver.\n- Graduation: Already stable; it retains that status while its documented behavior, accessibility, compatibility, and cross-browser support remain part of the public contract.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `expand-icon` | The disclosure chevron inside the multi-capability trigger button. Only rendered when `capabilities.length > 1`. |\n| `hidden-input` | The internal native `<input type=\"file\">` that actually opens the OS file picker. Hidden (`display: none`) by default; exposed as a part only so a consumer can override that with `::part(hidden-input)` in the unlikely case their integration needs to. `accessibleLabel` supplies an accessible-name override for either trigger shape. A host `aria-label`, including an explicit empty value, wins over it. |\n| `menu` | The `<lr-dropdown>` shell. Only rendered when `capabilities.length > 1`. |\n| `menu-trigger` | The multi-capability button slotted into `<lr-dropdown>`'s `trigger` slot. Only rendered when `capabilities.length > 1`. |\n| `trigger` | The single-capability icon button. Only rendered when `capabilities.length === 1`. |"
1332
+ "value": "`<lr-attachment-trigger>` — a compact attach affordance designed for a\nchat composer's start slot (see `<lr-chat-composer>`'s own `start`\nslot, which this drops straight into, though this component has no code\ndependency on it). Its shape adapts to how many attachment `capabilities`\nare configured:\n - Exactly one capability: a single plain icon button ([part='trigger']).\n Activating it performs that capability's action directly.\n - More than one: a small anchored menu ([part='menu'], composed from\n `<lr-dropdown>`/`<lr-menu>`/`<lr-menu-item>`) listing each capability as a row.\n\nTwo of the four capabilities (`files`, `image`) are file-picker-backed:\nactivating them opens a hidden native `<input type=\"file\">` via a\nsynthetic `.click()`, and the resulting selection is re-emitted as\n`lr-files`. `accept` is shared across both — `image` defaults it to\n`'image/*'` unless the `accept` prop overrides it, `files` always uses\n`accept` as-is (empty means \"any file type\", matching a bare native\n`<input type=\"file\">` with no `accept` attribute).\n\n**`camera`/`audio` are scope-limited by design.** This component does not\nimplement any camera or microphone capture UI itself — no `getUserMedia`,\nno `<input capture>` — because that's entirely a host/browser concern with\nno single right answer (a desktop web app, a mobile PWA, and a native\nwrapper all want different things here). Activating `camera` fires\n`lr-camera-request`; activating `audio` fires `lr-audio-request`. The\nhost owns everything from that point on — typically opening\n`<lr-push-to-talk>` in a `<lr-overlay>`/popover for `audio`, then\nhanding the resulting blob to something like `<lr-attachment-chip>`.\n\n---\n\n**Component metadata**\n\n- Status: `stable`\n- Since: `4.0.0`\n- Rationale: This exact lr-* tag appears in a published Lyra release manifest and remains a supported public contract under semver.\n- Graduation: Already stable; it retains that status while its documented behavior, accessibility, compatibility, and cross-browser support remain part of the public contract.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `expand-icon` | The disclosure chevron inside the multi-capability trigger button. Only rendered when `capabilities.length > 1`. |\n| `hidden-input` | The internal native `<input type=\"file\">` that actually opens the OS file picker. Hidden (`display: none`) by default; exposed as a part only so a consumer can override that with `::part(hidden-input)` in the unlikely case their integration needs to. `accessibleLabel` supplies an accessible-name override for either trigger shape. A host `aria-label`, including an explicit empty value, wins over it. |\n| `menu` | The `<lr-dropdown>` shell. Only rendered when `capabilities.length > 1`. |\n| `menu-trigger` | The multi-capability button slotted into `<lr-dropdown>`'s `trigger` slot. Only rendered when `capabilities.length > 1`. |\n| `trigger` | The single-capability icon button. Only rendered when `capabilities.length === 1`. |"
1333
1333
  },
1334
1334
  "attributes": [
1335
1335
  {
package/web-types.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/web-types",
3
3
  "name": "@aceshooting/lyra-ui",
4
- "version": "9.0.0",
4
+ "version": "9.1.1",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -1289,7 +1289,7 @@
1289
1289
  },
1290
1290
  {
1291
1291
  "name": "lr-attachment-trigger",
1292
- "description": "`<lr-attachment-trigger>` — a compact attach affordance designed for a\nchat composer's leading slot (see `<lr-chat-composer>`'s own `leading`\nslot, which this drops straight into, though this component has no code\ndependency on it). Its shape adapts to how many attachment `capabilities`\nare configured:\n - Exactly one capability: a single plain icon button ([part='trigger']).\n Activating it performs that capability's action directly.\n - More than one: a small anchored menu ([part='menu'], composed from\n `<lr-dropdown>`/`<lr-menu>`/`<lr-menu-item>`) listing each capability as a row.\n\nTwo of the four capabilities (`files`, `image`) are file-picker-backed:\nactivating them opens a hidden native `<input type=\"file\">` via a\nsynthetic `.click()`, and the resulting selection is re-emitted as\n`lr-files`. `accept` is shared across both — `image` defaults it to\n`'image/*'` unless the `accept` prop overrides it, `files` always uses\n`accept` as-is (empty means \"any file type\", matching a bare native\n`<input type=\"file\">` with no `accept` attribute).\n\n**`camera`/`audio` are scope-limited by design.** This component does not\nimplement any camera or microphone capture UI itself — no `getUserMedia`,\nno `<input capture>` — because that's entirely a host/browser concern with\nno single right answer (a desktop web app, a mobile PWA, and a native\nwrapper all want different things here). Activating `camera` fires\n`lr-camera-request`; activating `audio` fires `lr-audio-request`. The\nhost owns everything from that point on — typically opening\n`<lr-push-to-talk>` in a `<lr-overlay>`/popover for `audio`, then\nhanding the resulting blob to something like `<lr-attachment-chip>`.\n\n---\n\n**Component metadata**\n\n- Status: `stable`\n- Since: `4.0.0`\n- Rationale: This exact lr-* tag appears in a published Lyra release manifest and remains a supported public contract under semver.\n- Graduation: Already stable; it retains that status while its documented behavior, accessibility, compatibility, and cross-browser support remain part of the public contract.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `expand-icon` | The disclosure chevron inside the multi-capability trigger button. Only rendered when `capabilities.length > 1`. |\n| `hidden-input` | The internal native `<input type=\"file\">` that actually opens the OS file picker. Hidden (`display: none`) by default; exposed as a part only so a consumer can override that with `::part(hidden-input)` in the unlikely case their integration needs to. `accessibleLabel` supplies an accessible-name override for either trigger shape. A host `aria-label`, including an explicit empty value, wins over it. |\n| `menu` | The `<lr-dropdown>` shell. Only rendered when `capabilities.length > 1`. |\n| `menu-trigger` | The multi-capability button slotted into `<lr-dropdown>`'s `trigger` slot. Only rendered when `capabilities.length > 1`. |\n| `trigger` | The single-capability icon button. Only rendered when `capabilities.length === 1`. |",
1292
+ "description": "`<lr-attachment-trigger>` — a compact attach affordance designed for a\nchat composer's start slot (see `<lr-chat-composer>`'s own `start`\nslot, which this drops straight into, though this component has no code\ndependency on it). Its shape adapts to how many attachment `capabilities`\nare configured:\n - Exactly one capability: a single plain icon button ([part='trigger']).\n Activating it performs that capability's action directly.\n - More than one: a small anchored menu ([part='menu'], composed from\n `<lr-dropdown>`/`<lr-menu>`/`<lr-menu-item>`) listing each capability as a row.\n\nTwo of the four capabilities (`files`, `image`) are file-picker-backed:\nactivating them opens a hidden native `<input type=\"file\">` via a\nsynthetic `.click()`, and the resulting selection is re-emitted as\n`lr-files`. `accept` is shared across both — `image` defaults it to\n`'image/*'` unless the `accept` prop overrides it, `files` always uses\n`accept` as-is (empty means \"any file type\", matching a bare native\n`<input type=\"file\">` with no `accept` attribute).\n\n**`camera`/`audio` are scope-limited by design.** This component does not\nimplement any camera or microphone capture UI itself — no `getUserMedia`,\nno `<input capture>` — because that's entirely a host/browser concern with\nno single right answer (a desktop web app, a mobile PWA, and a native\nwrapper all want different things here). Activating `camera` fires\n`lr-camera-request`; activating `audio` fires `lr-audio-request`. The\nhost owns everything from that point on — typically opening\n`<lr-push-to-talk>` in a `<lr-overlay>`/popover for `audio`, then\nhanding the resulting blob to something like `<lr-attachment-chip>`.\n\n---\n\n**Component metadata**\n\n- Status: `stable`\n- Since: `4.0.0`\n- Rationale: This exact lr-* tag appears in a published Lyra release manifest and remains a supported public contract under semver.\n- Graduation: Already stable; it retains that status while its documented behavior, accessibility, compatibility, and cross-browser support remain part of the public contract.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `expand-icon` | The disclosure chevron inside the multi-capability trigger button. Only rendered when `capabilities.length > 1`. |\n| `hidden-input` | The internal native `<input type=\"file\">` that actually opens the OS file picker. Hidden (`display: none`) by default; exposed as a part only so a consumer can override that with `::part(hidden-input)` in the unlikely case their integration needs to. `accessibleLabel` supplies an accessible-name override for either trigger shape. A host `aria-label`, including an explicit empty value, wins over it. |\n| `menu` | The `<lr-dropdown>` shell. Only rendered when `capabilities.length > 1`. |\n| `menu-trigger` | The multi-capability button slotted into `<lr-dropdown>`'s `trigger` slot. Only rendered when `capabilities.length > 1`. |\n| `trigger` | The single-capability icon button. Only rendered when `capabilities.length === 1`. |",
1293
1293
  "attributes": [
1294
1294
  {
1295
1295
  "name": "accept",