@aceshooting/lyra-ui 21.0.0 → 21.1.0

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 (272) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +6 -3
  3. package/custom-elements.json +1 -1
  4. package/dist/ai/runtime.js +1 -1
  5. package/dist/ai/types.d.ts +13 -5
  6. package/dist/cli/lyra-rename-ledger.mjs +1 -0
  7. package/dist/cli/migrate-wa.mjs +33 -13
  8. package/dist/cli/migration-contract.json +1 -1
  9. package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +5 -3
  10. package/dist/components/agent-tools/agent-trace/agent-trace.class.js +3 -2
  11. package/dist/components/agent-tools/tool-call-block/tool-call-block.class.d.ts +15 -3
  12. package/dist/components/agent-tools/tool-call-block/tool-call-block.class.js +3 -3
  13. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +24 -8
  14. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +3 -3
  15. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +4 -0
  16. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.d.ts +9 -5
  17. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +2 -2
  18. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +1 -1
  19. package/dist/components/agent-tools/tool-status.js +2 -2
  20. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +8 -0
  21. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +3 -2
  22. package/dist/components/agent-tools/tool-timeline/tool-timeline.styles.js +1 -1
  23. package/dist/components/agent-tools/trace-tree/span.d.ts +2 -2
  24. package/dist/components/charts/chart/box-plot.class.d.ts +3 -1
  25. package/dist/components/charts/chart/box-plot.class.js +9 -9
  26. package/dist/components/charts/chart/chart-bidi.d.ts +109 -0
  27. package/dist/components/charts/chart/chart-bidi.js +1 -0
  28. package/dist/components/charts/chart/chart.class.d.ts +17 -2
  29. package/dist/components/charts/chart/chart.class.js +10 -8
  30. package/dist/components/charts/chart/histogram.class.js +1 -1
  31. package/dist/components/charts/chart/lite-chart.class.d.ts +24 -5
  32. package/dist/components/charts/chart/lite-chart.class.js +9 -9
  33. package/dist/components/charts/chart/lite-chart.styles.js +1 -1
  34. package/dist/components/conversation/code-block/shiki-dark-theme.d.ts +2 -2
  35. package/dist/components/conversation/code-block/shiki-dark-theme.js +1 -1
  36. package/dist/components/conversation/conversation-item/conversation-item.class.d.ts +18 -2
  37. package/dist/components/conversation/conversation-item/conversation-item.class.js +3 -3
  38. package/dist/components/conversation/conversation-item/conversation-item.styles.js +1 -1
  39. package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
  40. package/dist/components/conversation/markdown/markdown-core.class.d.ts +3 -1
  41. package/dist/components/conversation/markdown/markdown.class.d.ts +3 -1
  42. package/dist/components/conversation/message-actions/message-actions.class.d.ts +7 -2
  43. package/dist/components/conversation/message-actions/message-actions.class.js +2 -2
  44. package/dist/components/conversation/message-parts/message-parts.class.d.ts +6 -2
  45. package/dist/components/conversation/message-parts/message-parts.class.js +5 -3
  46. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.d.ts +3 -2
  47. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
  48. package/dist/components/conversation/streaming-text/streaming-text-base.class.d.ts +1 -5
  49. package/dist/components/conversation/streaming-text/streaming-text-base.class.js +2 -2
  50. package/dist/components/conversation/streaming-text/streaming-text-core.class.d.ts +7 -1
  51. package/dist/components/conversation/streaming-text/streaming-text-core.class.js +3 -4
  52. package/dist/components/conversation/streaming-text/streaming-text.class.d.ts +7 -1
  53. package/dist/components/conversation/streaming-text/streaming-text.class.js +3 -4
  54. package/dist/components/conversation/thread-list/thread-list.class.d.ts +13 -2
  55. package/dist/components/conversation/thread-list/thread-list.class.js +3 -3
  56. package/dist/components/data/data-grid/data-grid.class.js +1 -1
  57. package/dist/components/data/document-library/document-library.class.js +2 -0
  58. package/dist/components/data/flow-canvas/flow-canvas.class.js +1 -1
  59. package/dist/components/data/flow-minimap/flow-minimap.class.js +1 -1
  60. package/dist/components/data/flow-node/flow-node.class.d.ts +6 -2
  61. package/dist/components/data/flow-node/flow-node.class.js +6 -2
  62. package/dist/components/data/flow-node/flow-node.styles.js +1 -1
  63. package/dist/components/data/gauge/gauge.styles.js +1 -1
  64. package/dist/components/data/heatmap/heatmap.class.d.ts +3 -0
  65. package/dist/components/data/heatmap/heatmap.class.js +2 -2
  66. package/dist/components/data/heatmap/heatmap.styles.js +1 -1
  67. package/dist/components/data/sparkline/sparkline.class.d.ts +5 -3
  68. package/dist/components/data/stat/stat.class.d.ts +4 -3
  69. package/dist/components/data/table/table.class.d.ts +32 -5
  70. package/dist/components/data/table/table.class.js +3 -2
  71. package/dist/components/forms/button/button.class.d.ts +7 -1
  72. package/dist/components/forms/button/button.styles.js +1 -1
  73. package/dist/components/forms/date-picker/date-input.styles.js +1 -1
  74. package/dist/components/forms/input/input.styles.js +1 -1
  75. package/dist/components/forms/rubric-form/rubric-form.class.js +1 -0
  76. package/dist/components/layout/app-rail/app-rail.class.d.ts +50 -11
  77. package/dist/components/layout/app-rail/app-rail.class.js +2 -2
  78. package/dist/components/layout/command-palette/command-palette.class.js +1 -1
  79. package/dist/components/layout/menu/menu.class.d.ts +6 -5
  80. package/dist/components/layout/split-panel/split-panel.class.d.ts +2 -1
  81. package/dist/components/media/flag/language-map.d.ts +8 -0
  82. package/dist/components/media/flag/language-map.js +1 -1
  83. package/dist/components/media/map/map-loader.d.ts +7 -1
  84. package/dist/components/media/map/map.class.d.ts +111 -5
  85. package/dist/components/media/map/map.class.js +3 -3
  86. package/dist/components/media/media-card/media-card.class.d.ts +18 -5
  87. package/dist/components/media/media-card/media-card.class.js +1 -1
  88. package/dist/components/overlays/overlay/popover.class.d.ts +20 -0
  89. package/dist/components/overlays/overlay/popover.class.js +2 -2
  90. package/dist/components/retrieval/graph/graph.class.d.ts +3 -3
  91. package/dist/components/retrieval/graph/graph.class.js +1 -1
  92. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +5 -3
  93. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +3 -2
  94. package/dist/components/retrieval/mind-map/mind-map.class.d.ts +3 -3
  95. package/dist/components/retrieval/mind-map/mind-map.class.js +1 -1
  96. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +4 -1
  97. package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +5 -1
  98. package/dist/components/retrieval/source-picker/source-picker.class.d.ts +4 -1
  99. package/dist/components/retrieval/source-picker/source-picker.class.js +5 -1
  100. package/dist/components/utility/icon/icon.class.d.ts +9 -3
  101. package/dist/components/utility/icon/icon.class.js +1 -1
  102. package/dist/components/utility/mutation-observer/mutation-observer.class.d.ts +14 -8
  103. package/dist/components/utility/mutation-observer/mutation-observer.class.js +1 -1
  104. package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +6 -1
  105. package/dist/components/viewers/document-viewer/document-viewer.class.js +7 -1
  106. package/dist/components/viewers/document-viewer/registry.d.ts +12 -3
  107. package/dist/components/viewers/geojson-view/geojson-view.class.d.ts +13 -5
  108. package/dist/components/viewers/geojson-view/geojson-view.class.js +1 -1
  109. package/dist/components/viewers/geojson-view/geojson-viewer.class.d.ts +3 -2
  110. package/dist/custom-elements-jsx.d.ts +1 -1
  111. package/dist/events.d.ts +644 -1242
  112. package/dist/internal/anchored-overlay-runtime.d.ts +2 -2
  113. package/dist/internal/cell-range.d.ts +0 -6
  114. package/dist/internal/cell-range.js +1 -1
  115. package/dist/internal/css-token-length.d.ts +7 -0
  116. package/dist/internal/css-token-length.js +1 -0
  117. package/dist/internal/default-strings.generated.d.ts +1 -1
  118. package/dist/internal/default-strings.generated.js +1 -1
  119. package/dist/internal/deferred-focus-return.d.ts +7 -4
  120. package/dist/internal/deferred-focus-return.js +1 -1
  121. package/dist/internal/dev-mode-attribute-warning.d.ts +35 -0
  122. package/dist/internal/dev-mode-attribute-warning.js +1 -1
  123. package/dist/internal/localization-runtime.js +1 -1
  124. package/dist/internal/localization-types.d.ts +1 -1
  125. package/dist/internal/localization.js +2 -2
  126. package/dist/internal/package-metadata.d.ts +1 -1
  127. package/dist/internal/package-metadata.js +1 -1
  128. package/dist/internal/papaparse-loader.d.ts +1 -1
  129. package/dist/internal/papaparse-loader.js +1 -1
  130. package/dist/internal/positioner.d.ts +10 -0
  131. package/dist/internal/positioner.js +1 -1
  132. package/dist/internal/shared-unions.d.ts +2 -1
  133. package/dist/internal/slotted-overlay-controller.d.ts +20 -0
  134. package/dist/internal/slotted-overlay-controller.js +1 -0
  135. package/dist/internal/text-quote.d.ts +1 -1
  136. package/dist/internal/text-quote.js +1 -1
  137. package/dist/internal/theme-observation.d.ts +4 -0
  138. package/dist/internal/theme-observation.js +1 -0
  139. package/dist/internal/theme-watcher.js +1 -1
  140. package/dist/localization.d.ts +6 -1
  141. package/dist/localization.js +1 -1
  142. package/dist/lyra.d.ts +1 -1
  143. package/dist/lyra.js +1 -1
  144. package/dist/svelte.d.ts +1 -1
  145. package/dist/testing/lyra-tag-event-map.js +1 -1
  146. package/dist/translations/ar/agent-tools.js +1 -1
  147. package/dist/translations/cs/agent-tools.js +1 -1
  148. package/dist/translations/da/agent-tools.js +1 -1
  149. package/dist/translations/de/agent-tools.js +1 -1
  150. package/dist/translations/de-CH/agent-tools.js +1 -1
  151. package/dist/translations/es/agent-tools.js +1 -1
  152. package/dist/translations/fa/agent-tools.js +1 -1
  153. package/dist/translations/fi/agent-tools.js +1 -1
  154. package/dist/translations/fr/agent-tools.js +1 -1
  155. package/dist/translations/he/agent-tools.js +1 -1
  156. package/dist/translations/hi/agent-tools.js +1 -1
  157. package/dist/translations/hr/agent-tools.js +1 -1
  158. package/dist/translations/hu/agent-tools.js +1 -1
  159. package/dist/translations/id/agent-tools.js +1 -1
  160. package/dist/translations/it/agent-tools.js +1 -1
  161. package/dist/translations/ja/agent-tools.js +1 -1
  162. package/dist/translations/kk/agent-tools.js +1 -1
  163. package/dist/translations/ko/agent-tools.js +1 -1
  164. package/dist/translations/nb/agent-tools.js +1 -1
  165. package/dist/translations/nl/agent-tools.js +1 -1
  166. package/dist/translations/nn/agent-tools.js +1 -1
  167. package/dist/translations/pl/agent-tools.js +1 -1
  168. package/dist/translations/pt-BR/agent-tools.js +1 -1
  169. package/dist/translations/pt-PT/agent-tools.js +1 -1
  170. package/dist/translations/pt-PT/charts.js +1 -1
  171. package/dist/translations/pt-PT/conversation.js +1 -1
  172. package/dist/translations/pt-PT/data.js +1 -1
  173. package/dist/translations/pt-PT/forms.js +1 -1
  174. package/dist/translations/pt-PT/layout.js +1 -1
  175. package/dist/translations/pt-PT/media.js +1 -1
  176. package/dist/translations/pt-PT/retrieval.js +1 -1
  177. package/dist/translations/pt-PT/shared.js +1 -1
  178. package/dist/translations/pt-PT/utility.js +1 -1
  179. package/dist/translations/pt-PT/viewers.js +2 -2
  180. package/dist/translations/ro/agent-tools.js +1 -1
  181. package/dist/translations/ru/agent-tools.js +1 -1
  182. package/dist/translations/sl/agent-tools.js +1 -1
  183. package/dist/translations/sv/agent-tools.js +1 -1
  184. package/dist/translations/tr/agent-tools.js +1 -1
  185. package/dist/translations/uk/agent-tools.js +1 -1
  186. package/dist/translations/zh-CN/agent-tools.js +1 -1
  187. package/dist/translations/zh-TW/agent-tools.js +1 -1
  188. package/dist/utilities/index.d.ts +1 -1
  189. package/dist/utilities/index.js +1 -1
  190. package/dist/utilities/localization.d.ts +28 -10
  191. package/dist/vue.d.ts +1 -1
  192. package/llms/components/lr-accordion-item.md +2 -344
  193. package/llms/components/lr-accordion.md +2 -344
  194. package/llms/components/lr-app-rail-group.md +2 -721
  195. package/llms/components/lr-app-rail-item.md +2 -721
  196. package/llms/components/lr-app-rail.md +29 -4
  197. package/llms/components/lr-bar-chart.md +2 -87
  198. package/llms/components/lr-box-plot.md +1 -1
  199. package/llms/components/lr-breadcrumb-item.md +2 -67
  200. package/llms/components/lr-bubble-chart.md +2 -87
  201. package/llms/components/lr-button.md +7 -0
  202. package/llms/components/lr-chart.md +4 -5
  203. package/llms/components/lr-chip-group.md +2 -272
  204. package/llms/components/lr-conversation-item.md +20 -2
  205. package/llms/components/lr-date-input.md +2 -457
  206. package/llms/components/lr-date-picker.md +6 -2
  207. package/llms/components/lr-document-library.md +3 -3
  208. package/llms/components/lr-document-viewer.md +14 -5
  209. package/llms/components/lr-doughnut-chart.md +2 -87
  210. package/llms/components/lr-dropdown-item.md +2 -306
  211. package/llms/components/lr-dropdown.md +6 -0
  212. package/llms/components/lr-flag.md +9 -1
  213. package/llms/components/lr-flow-node.md +4 -1
  214. package/llms/components/lr-geojson-view.md +3 -90
  215. package/llms/components/lr-geojson-viewer.md +13 -5
  216. package/llms/components/lr-icon-button.md +4 -1
  217. package/llms/components/lr-icon.md +14 -6
  218. package/llms/components/lr-input.md +9 -2
  219. package/llms/components/lr-lite-chart.md +17 -9
  220. package/llms/components/lr-map.md +87 -2
  221. package/llms/components/lr-markdown-core.md +5 -4
  222. package/llms/components/lr-markdown.md +4 -2
  223. package/llms/components/lr-media-card.md +10 -5
  224. package/llms/components/lr-menu-item.md +2 -306
  225. package/llms/components/lr-menu.md +9 -6
  226. package/llms/components/lr-menubar-item.md +2 -125
  227. package/llms/components/lr-message-actions.md +4 -1
  228. package/llms/components/lr-message-parts.md +14 -5
  229. package/llms/components/lr-mutation-observer.md +12 -6
  230. package/llms/components/lr-navigation-menu-item.md +2 -237
  231. package/llms/components/lr-number-input.md +4 -0
  232. package/llms/components/lr-option.md +2 -712
  233. package/llms/components/lr-pie-chart.md +2 -87
  234. package/llms/components/lr-polar-area-chart.md +2 -87
  235. package/llms/components/lr-popover.md +10 -0
  236. package/llms/components/lr-prompt-input.md +5 -1
  237. package/llms/components/lr-radar-chart.md +2 -87
  238. package/llms/components/lr-reorder-item.md +2 -157
  239. package/llms/components/lr-result-field.md +2 -117
  240. package/llms/components/lr-retrieval-results.md +3 -1
  241. package/llms/components/lr-rubric-form.md +3 -2
  242. package/llms/components/lr-scatter-chart.md +2 -87
  243. package/llms/components/lr-selection-toolbar.md +4 -2
  244. package/llms/components/lr-source-card.md +2 -186
  245. package/llms/components/lr-source-picker.md +3 -1
  246. package/llms/components/lr-sparkline.md +9 -4
  247. package/llms/components/lr-split-panel.md +5 -3
  248. package/llms/components/lr-stat.md +4 -3
  249. package/llms/components/lr-streaming-text-core.md +7 -5
  250. package/llms/components/lr-streaming-text.md +9 -6
  251. package/llms/components/lr-swatch-picker.md +130 -0
  252. package/llms/components/lr-tag.md +2 -177
  253. package/llms/components/lr-thread-list.md +27 -4
  254. package/llms/components/lr-timeline-item.md +2 -120
  255. package/llms/components/lr-toast-item.md +2 -223
  256. package/llms/components/lr-tool-call-block.md +12 -3
  257. package/llms/components/lr-tool-call-chip.md +12 -6
  258. package/llms/components/lr-tool-param-form.md +3 -2
  259. package/llms/components/lr-tool-result-dialog.md +7 -3
  260. package/llms/components/lr-tool-result-view.md +4 -3
  261. package/llms/components/lr-tool-timeline.md +12 -5
  262. package/llms/components/lr-tree-item.md +2 -354
  263. package/llms/index.md +22 -4
  264. package/llms/migration.md +75 -1
  265. package/llms/peers.md +1 -1
  266. package/llms/shared.md +86 -39
  267. package/llms-full.txt +739 -163
  268. package/package.json +6 -6
  269. package/registrations.json +1 -1
  270. package/vscode-css-data.json +1 -1
  271. package/vscode-html-data.json +1 -1
  272. package/web-types.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,61 @@
1
1
  # Changelog
2
2
 
3
+ ## 21.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 615113c: `lr-app-rail` gains an opt-in `focusFallback` property (attribute `focus-fallback`): a last-resort target for the mobile overlay's deferred focus return, tried only after every built-in target (the `trigger`/`for` association, the element that held focus at open, the built-in toggle, and the rail host) is unavailable. Set it to the application's main region when closing the overlay also takes the navigation out of the layout, so keyboard focus lands there instead of on `<body>`. It accepts an element or an id resolved in the rail's own root, like `for`; the target needs `tabindex="-1"`, and the rail never adds one. Unset (the default), behavior is unchanged.
8
+ - 615113c: The `code-block-chrome` attribute (`codeBlockChrome` property) of `lr-markdown`, `lr-markdown-core`, `lr-streaming-text`, `lr-streaming-text-core` and `lr-message-parts` is deprecated in favour of `code-block-header` (`codeBlockHeader`), which it already duplicated exactly, with removal no earlier than 23.0.0. Either spelling still enables the code-block header until then, and setting `code-block-chrome` logs one development-mode warning per page. `lr-streaming-text`, `lr-streaming-text-core` and `lr-message-parts` now pass either option to their composed Markdown elements as `codeBlockHeader`, so only the element the application configured warns; rendering is unchanged. `lr-streaming-text` and `lr-streaming-text-core` now declare both options on their own classes, so their manifest entries and editor data list them.
9
+ - 615113c: The `DocumentFile` and `DocumentRendererDefinition` types exported by `components/viewers/document-viewer/registry.js` (and the package root) are deprecated in favour of `LyraDocumentFile` and `LyraDocumentRendererDefinition`, with removal no earlier than 23.0.0. They are type-only, so TypeScript editors strike them through where you write them, and no runtime warning exists. Each pair is interchangeable in both directions, so renaming your own annotations is safe now. Exported function and registry signatures keep the unprefixed names until the removal, so no existing signature changes in this release.
10
+ - 615113c: The pre-v9 `lr-geojson-view` tag, its `LyraGeojsonView` class and its `LyraGeojsonViewEventMap` type are deprecated in favour of `lr-geojson-viewer`, `LyraGeoJsonViewer` and `LyraGeoJsonViewerEventMap`, with removal no earlier than 23.0.0. This reverses the earlier promise, made when the viewer was renamed, to keep `lr-geojson-view` as a permanent compatibility tag: it adds no behavior of its own, and one name per viewer is simpler to document and to migrate. The alias keeps working unchanged until then, and connecting an `lr-geojson-view` logs one development-mode warning per page. The `components/lr-geojson-view.js`, `components/viewers/geojson-view/geojson-view.js` and `components/viewers/geojson-view/geojson-view.class.js` entry points are deprecated with it. The two registration routes also register `lr-geojson-viewer`, so an application that imports one of them only to register the canonical tag switches to `components/lr-geojson-viewer.js`.
11
+ - 615113c: `lr-icon`'s `fixed-width` attribute (`fixedWidth` property) and its `--lr-icon-fixed-width` custom property are deprecated, with removal no earlier than 23.0.0; both keep working unchanged until then. Setting `fixed-width` logs one development-mode warning per page. The default canvas already gives every icon the same 1.25em box, so a column of icons lines its labels up without it. For the wider 1.5em box, set `lr-icon { inline-size: var(--lr-size-1-5em); }` on the host. One geometry difference: `fixed-width` squeezes every glyph's svg to 1em wide, while under a host `inline-size` a glyph wider than 1em keeps its intrinsic width (up to the box). Square glyphs, including every built-in one, render identically.
12
+ - 615113c: `lr-menu` content other than `<lr-menu-item>`/`<lr-dropdown-item>` rows, `<lr-menu-label>` captions, and `<hr>`/`<lr-divider>` separators in its default slot is deprecated, with removal no earlier than 23.0.0. Such content renders inside `role="menu"` without a menu-item role and is skipped by keyboard navigation; move filters, captions, and actions to the `header` or `footer` slot, which render outside the list with their native keyboard behavior. The default slot itself is unchanged, and the deprecated content keeps rendering until then. The deprecation logs no runtime warning, so audit against the deprecation records rather than console output. Content that `lr-dropdown` (and so `lr-context-menu`) forwards into its generated menu is not affected, because `lr-dropdown`'s default slot mirrors `sl-dropdown`'s free-form content.
13
+ - 615113c: `lr-mutation-observer`'s Lyra-only `attributes` (`observeAttributes`) and `character-data` (`characterData`) aliases are deprecated in favour of the mirrored `attr` and `char-data` (`charData`), with removal no earlier than 23.0.0. Both keep reflecting and enabling observation until then, and setting either logs one development-mode warning per page. Replace `character-data` with `char-data`. Replace `attributes` with `attr="*"` only when `attr`, `attr-old-value` and `attributeFilter` are all unset; otherwise remove it, because those already turn attribute observation on and a non-null `attr` ignores `attributeFilter`, so adding `attr="*"` next to a filter would observe every attribute.
14
+ - 615113c: `lr-sparkline`'s Lyra-only `area` CSS part and `--lr-sparkline-stroke-width` custom property are deprecated in favour of the mirrored `fill` part and `--line-width` property, with removal no earlier than 23.0.0. Both keep working unchanged until then: `area` stays on the same path as `fill`, and `--lr-sparkline-stroke-width` is still read as the fallback for `--line-width`, so it has no effect wherever `--line-width` is set. Migrate `::part(area)` rules to `::part(fill)`, and set `--line-width` on `lr-sparkline` itself (`lr-sparkline { --line-width: 2px; }`) rather than at the root, because the unprefixed name also reaches any other element that reads it. As styling hooks, neither alias logs a runtime warning.
15
+ - 615113c: `lr-split-panel`'s `split-panel` CSS part is deprecated in favour of `base`, which sits on the same wrapper, with removal no earlier than 23.0.0. `::part(split-panel)` keeps matching until then; as a stylesheet selector it logs no runtime warning, so migrate `::part(split-panel)` rules to `::part(base)`. Neither `wa-split-panel` nor `sl-split-panel` publishes a wrapper part, so no mirrored name changes.
16
+ - 615113c: `lr-stat`'s unnamed default slot, the legacy leading-icon alias, is deprecated in favour of `slot="start"`, with removal no earlier than 23.0.0. This reverses the earlier description of it as a permanent fallback. It keeps rendering while `start` is empty, and `start` still wins when both are filled. The deprecation logs no runtime warning, so audit against the deprecation records rather than console output. Migrate `<lr-stat><svg>…</svg></lr-stat>` to `<lr-stat><svg slot="start">…</svg></lr-stat>`.
17
+ - 89c5b70: The side-effect-free `localization.js` entry now also exports `bridgeLyraLocale()`, `subscribeLyraLocale()`, `resolveLyraScopedString()` and the `LyraLocaleBridgeOptions`/`LyraLocaleBridgeCleanup` types, the same bindings the `utilities/localization.js` entry exports. The `utilities/localization.js` entry point is deprecated in favour of `localization.js`, with removal no earlier than 23.0.0, and keeps working unchanged until then. To migrate, change the import specifier: `import { bridgeLyraLocale } from '@aceshooting/lyra-ui/localization.js'`. Importing `subscribeLyraLocale` from the deprecated path now shows a TypeScript deprecation. The other names are still declared in that module, so an editor cannot mark them deprecated on that path alone. The package root and the extensionless `utilities` barrel keep their existing exports, and none of those exports is deprecated. A bundler still drops the unused full message catalog from `localization.js`, because the entry is side-effect-free. An unbundled import of `localization.js` loads that catalog.
18
+ - 615113c: Deprecation metadata now covers more than single members. A `slot-content` record deprecates a kind of content inside a slot that stays supported, and package entry points and exported types have their own records, listed under "Deprecated package exports" in `llms/index.md`. Some deprecations now also log one development-mode `console.warn` per page for each element name and deprecated API, naming the replacement, when a component can observe the usage cheaply and exactly (setting a deprecated property or attribute, connecting a deprecated tag, or vetoing through a deprecated alias event). Not every deprecated API warns: deprecations such as `lr-icon`'s `auto-width`, `lr-stat`'s default-slot icon, `lr-menu`'s non-item default-slot content, and the `lr-before-*`/`lr-open` alias events do not, and deprecated CSS parts, custom properties, and custom states never do, so the deprecation records remain the complete list to audit against. The warning appears only when Lit runs its development build, never in production, and the deprecated form keeps working. Test suites that fail on console output can pre-seed the warning's key, `lyra-deprecated:<tag>:<kind>:<name>`, in Lit's `globalThis.litIssuedWarnings`; `llms/shared.md` documents the format.
19
+ - 2e48e03: `lyra-ui-migrate` gains `--origin=lyra-v21`, a Lyra-to-Lyra profile for this release's deprecated Lyra-only names. It rewrites a name only where the rewrite cannot change which components a site reaches: `code-block-chrome`/`codeBlockChrome` becomes `code-block-header`/`codeBlockHeader` on `lr-markdown`, `lr-markdown-core`, `lr-message-parts`, `lr-streaming-text` and `lr-streaming-text-core`; `lr-mutation-observer`'s `character-data`/`characterData` becomes `char-data`/`charData`; and `lr-before-media-download` listeners move to `lr-media-download-request`, except where the same receiver already listens to `lr-media-download-request` with the same handler, which would collapse two registrations into one. Every other deprecated use is reported with its file, line, column, warning code and replacement instead of being rewritten: the `lr-geojson-view` tag, `lr-icon`'s `fixed-width`/`fixedWidth` and `--lr-icon-fixed-width`, `lr-mutation-observer`'s `attributes`/`observeAttributes`, `lr-sparkline`'s `area` part and `--lr-sparkline-stroke-width`, `lr-split-panel`'s `split-panel` part, an unnamed `lr-stat` icon, and, from 22.0.0, `lr-menu` default-slot content other than items, labels and separators. `--diff` previews any migration as a `git apply` patch without writing, `--lyra-version=x.y.z` applies only the entries available in that release (by default the `@aceshooting/lyra-ui` installed under the working directory), and a `lyra-migrate-reviewed: CODE:name` comment acknowledges a reviewed report so `--check` can gate the migration in CI. Every deprecated name keeps working until 23.0.0, so running the profile within 21.x is optional; `llms/migration.md` lists each entry. Templates rendered on the server must be re-rendered after migrating, because Lit hydration compares template strings.
20
+ - 094b436: `lr-map` gains `fitBounds(bounds, { padding?, maxZoom?, animate? })`, which frames a `[[west, south], [east, north]]` box (for example every current marker, or a selected region) without fighting the element's own `center`/`zoom` updates. The settled camera is written into `center` and `zoom` and reported through the new `lr-map-view-change` event (`detail: { center, zoom, source }`, `source` being `'user'` or `'fit'`), so declarative state stays in sync and the next update never resets the fitted camera. The method can be called before the map exists: the latest request is queued and applied on construction, unless `center` or `zoom` has been given a different value since the call (re-assigning an equal value keeps it). It never animates under `prefers-reduced-motion`, accepts both of MapLibre's antimeridian forms (`west > east`, or `east` unwrapped past 180), and returns `false` for an unusable box.
21
+
22
+ `lr-map-view-change` also fires after user gestures (drag, wheel, touch, keyboard, Shift+drag box zoom, navigation buttons), so `center` and `zoom` now track the camera the user settles on; assigning them still moves the map without emitting anything. Three consequences worth knowing: assigning a value the map already shows no longer re-jumps the camera, so echoing a reported camera back never interrupts an animation or gesture; an assignment that does interrupt one applies both `center` and `zoom`, instead of leaving the unassigned one wherever the movement stopped; and a map rebuilt after a disconnect/reconnect now opens at the last settled camera rather than the originally declared one. New types: `LyraMapFitBoundsOptions`, `LyraMapPadding`, `LyraMapViewChangeDetail`, `LyraMapViewChangeSource`.
23
+ - 615113c: `lr-media-card` gains `lr-media-download-request`, the canonical cancelable veto point before a safe file chip's native download/open, named like the library's other `*-request` veto events. It carries the same `{ src, filename }` detail as before. `lr-before-media-download` is deprecated in favour of it, with removal no earlier than 23.0.0: it keeps firing unchanged right after the canonical event from the same activation, with an equal but separate detail, and a `preventDefault()` on either event suppresses the download/open. A veto through the deprecated alias logs one development-mode warning per page; a listener that only observes it does not, so move every `lr-before-media-download` listener to `lr-media-download-request`.
24
+ - 14662d8: `lr-popover` gains an opt-in `topLayer` property (attribute `top-layer`, reflected), which `lr-dropdown` inherits. It always shows the open popup in the browser top layer where the native Popover API exists. This fixes a popover inside a fixed or sticky header, toolbar or rail that has its own `z-index`, such as a `position: fixed` header at `z-index: 1000`, when a sibling surface at `z-index: 1100` covers it. That header is only a stacking context, not a containing block. The automatic top-layer escape for `fixed` surfaces therefore never applied, and no `z-index` on the popup could lift it out of the header's context.
25
+
26
+ While `top-layer` is set, the popup is placed with the `fixed` strategy whatever `positioning-strategy` or `hoist` say, and those properties still read back their own values. No DOM node moves, so the following keep working:
27
+
28
+ - anchoring, the arrow and RTL placement
29
+ - focus, Escape and light dismiss
30
+ - the hover bridge, which is promoted with the popup
31
+ - submenus
32
+ - the show/hide transition
33
+
34
+ The popup stays promoted through its hide transition and leaves the top layer once it settles closed. Changes apply live while the popover is open. Without native Popover API support, the popup keeps its ordinary `z-index` stacking.
35
+
36
+ Stacking contexts are deliberately not detected automatically. Every fixed or sticky ancestor creates one, as does almost every `z-index`ed, translucent or isolated one, and promoting through each would override layer ordering that pages set on purpose. Unset, nothing changes.
37
+ - d11bda0: `lr-email-viewer`'s optional `postal-mime` peer now also accepts `postal-mime` 4 (`^3.0.1 || ^4.0.0`); existing installs on version 3 keep working.
38
+ - 4933b44: A row menu that `lr-thread-list`'s `renderActions` opens now keeps its row in the hover state while the menu is open. The menu opens into the browser top layer, where Chromium and WebKit stop matching `:hover` and `:focus-within` on the row once the pointer or keyboard focus moves into the menu. A menu trigger revealed on row hover or focus therefore disappeared while its own menu was open, and if the reveal used `display`, the menu disappeared with it. While the menu is open, the row now carries a new `row-item-base-menu-open` part and keeps its hover tint. A hover or focus reveal can key on that part too (see the `lr-thread-list` docs for the CSS). `lr-conversation-item` exposes the same state as `:state(menu-open)` and a `base-menu-open` part for a menu opened from its `actions` slot. This covers `lr-dropdown`, `lr-popover` and `lr-context-menu`.
39
+
40
+ Arrow, Home and End keys that a control inside a thread-list row has already handled no longer also move focus to another row. Before, ArrowDown in an open row menu jumped to the next conversation instead of the next menu item.
41
+
42
+ `lr-flow-node`'s hover-revealed toolbar and `lr-message-actions` with `reveal-on-interaction` also stay visible while a menu opened from them is open. Before, they hid the trigger of that open menu.
43
+ - 094b436: `lr-tool-call-block` and `lr-tool-call-chip` gain a `displayName` property (`display-name` attribute) for the application's own, already-translated tool label. It replaces only the tool name: the block's header keeps its localized status verb around it (`Used Lecture d’un fichier`), the chip shows it in its `name` part and accessible name, and `name` still selects the result renderer and is still reported in `lr-render-error` and `lr-tool-call-chip-select`. The shared tool-call status vocabulary (`ToolCallStatus`, `ToolResultStatus`) gains `incomplete` for a call that ended without a result, such as an interrupted stream or a cancelled run. It has its own static glyph, the neutral tone, and localized default text in every shipped catalog: `Incomplete` (`statusIncomplete`) and, in the block header, `Did not finish using {name}` (`toolCallBlockHeaderIncomplete`). The chip, block, result dialog and tool timeline accept it. The dialog adds `--lr-tool-result-dialog-incomplete-color` and `--lr-tool-result-dialog-incomplete-bg`, and the timeline adds `--lr-tool-timeline-incomplete-marker-color`, so restyling `pending` no longer restyles `incomplete`. `ToolInvocation` (from `@aceshooting/lyra-ui/ai`) gains an optional `displayName`, which `lr-message-parts` forwards to the chip or block in either tool display and `lr-tool-timeline` shows on each entry's chip and details disclosure. The stream runtime now accepts `status: 'incomplete'` and a string `displayName` on `tool-upsert` events, `tool-call` parts and message snapshots, where `incomplete` previously failed the stream as an invalid event. In `lr-message-parts` block display, an invocation marked `incomplete` keeps that status whatever result part is paired with it. Existing statuses and defaults are unchanged. TypeScript code that switches exhaustively over `ToolCallStatus` or `ToolResultStatus` needs an `incomplete` case.
44
+
45
+ ### Patch Changes
46
+
47
+ - c24a412: Formatted chart labels now keep their own reading order inside `dir="rtl"`. Before, a number-first label such as `2.4 MiB/s`, `9:00 AM` or `-3` took on the chart's right-to-left direction and painted unit-first (`MiB/s 2.4`), even though the axis itself was placed correctly. Each label now paints in the direction of its own first strong character, like `<bdi>`, so an Arabic- or Hebrew-script label keeps its right-to-left order too. This covers `lr-lite-chart` value-axis ticks, category ticks, axis titles, legend values, generated table cells and the visible data list; `lr-chart`, its typed subclasses, `lr-histogram` and `lr-box-plot` tick labels, axis titles, tooltips (including a formatted value that follows an Arabic- or Hebrew-script series name), data labels, annotation labels, legend values and table cells; `lr-gauge` captions; and `lr-heatmap`'s tooltip and legend scale labels. Axis placement, category order and label fitting are unchanged, and a left-to-right chart with left-to-right labels draws exactly the same strings. Accessible names, announcements and CSV export gain no bidi control characters. No text-direction option is needed, and formatters should keep returning plain text.
48
+ - 5a0a409: An icon-only `lr-button` no longer clips a glow around its glyph. When the default slot holds a single text-free element, such as a `gemstoneGlyph()` inside a `data-lr-gemstone-selected` wrapper, the button is detected as icon-only, but its `label` part kept the `overflow: hidden` that truncates text labels. A `filter: drop-shadow()` halo, including `gemstoneSelectedGlyphStyles`' own, was cut to the label's rectangle and showed as a square behind the gem. In the detected icon-only state the label now leaves paint overflow visible. A text label keeps its clip and ellipsis, including one beside a glowing glyph. The `start`/`end` adornment wrappers still clip, so put a glowing glyph in the default slot on its own. Hit area, focus ring, label box and RTL layout are unchanged. `lr-icon-button` already left a slotted glyph's glow unclipped; a regression test now covers it. There is no new option or token.
49
+ - 51d430a: Composite components no longer leak their built-in children's events: `lr-knowledge-graph-explorer` and `lr-agent-trace` contain the legend's `lr-visibility-change-request`, `lr-table` the pager's `lr-before-page-change`, `lr-document-library`, `lr-retrieval-results`, `lr-source-picker` and `lr-rubric-form` their checkbox toggle requests (plus the checkbox `input`/`change`/`lr-input` events in results and source picker), `lr-document-viewer` its dialog's `lr-show`/`lr-after-show`/`lr-initial-focus`/`lr-request-close`/`lr-hide`/`lr-after-hide`, and `lr-tool-param-form` its selects' `lr-after-show`/`lr-after-hide`. Listen for each component's own documented events instead (for example `lr-hidden-types-change`, `lr-page-change`, `lr-selection-change`, `lr-select`, `lr-sources-change`, `lr-input` or `lr-close`).
50
+ - 615113c: `lr-app-rail` and `lr-page` now finish their documented focus return when their mobile overlay was opened while nothing held focus, for example by script (`rail.open = true`, `page.showNavigation()`) or by a click that does not focus its button. Previously the close left focus where it was: on `<body>` for `lr-page`, and for `lr-app-rail` on the navigation control the overlay had focused when it opened, inside the now-closed navigation. Now `lr-app-rail` moves it to its built-in toggle, or to the rail host under `hide-toggle`, and `lr-page` moves it to its navigation toggle, or to its main region under `disable-navigation-toggle`. Because focus now actually moves, screen readers announce the new target, and the browser may scroll that target into view. `lr-dialog`, `lr-drawer`, `lr-responsive-panel` and `lr-multi-split` are unchanged.
51
+ - 5a0a409: Documented `gemstoneAccentPicker`, the canonical accent selector composed from `lr-icon-button`, `lr-popover` and `lr-swatch-picker mode="gemstone"`. It pairs a glowing current-gem trigger styled with `gemstoneSelectedGlyphStyles` with a compact popover holding one localized "Gemstone: name" caption and all nine gemstones in one row: 28px targets with 4px gaps, or 24px targets with 2px gaps below 30rem. It is a documented pattern, not a new tag. The picker stays controlled through `value` and `lr-change`, and the application keeps applying and persisting the accent. The Swatch Picker Storybook page renders the composition live.
52
+ - 14662d8: A short `start`/`end` adornment such as a measurement unit now stays whole in a narrow `lr-input`, `lr-number-input`, `lr-native-time-input` or `lr-date-input`. Before, the native field's flex basis came from its `size`-derived intrinsic width, not from its value, so in a 210px `lr-input type="number"` holding `1650` the field kept most of the row while a `kWh` end unit was clipped, and `lr-number-input`'s steppers left even less room for the unit. The native field now gives up its spare width first, and while an adornment is shown it keeps a four-character floor; only then do the adornments shrink. A genuinely long adornment is still capped (at half the row in `lr-input`, 40% in `lr-date-input`) and still ellipsizes. `lr-date-input` adornments are now sized to their content instead of reserving 40% of the row, so a three-letter adornment no longer leaves a wide gap in a wide field. Shrink-to-fit containers still size the field to its native intrinsic width. A row without adornments is unchanged: with no floor, its field still yields entirely to the clear, password-toggle, stepper and calendar actions. A row that shows an adornment but is narrower than its fixed actions plus the floor now overflows instead of collapsing the field to nothing. A `flex-basis: 0` override on `::part(input)` is no longer needed. There is no new option or token.
53
+ - 1c93dd6: `lr-lite-chart`'s `max-labels="auto"` no longer crowds the first and last category labels. Those two labels are anchored toward the plot interior, so each one spends its whole width on the inner side of its tick. Automatic density assumed every label was centered on its tick, so both boundary pairs got about half the room of the interior pairs. On a wide chart of 144 `HH:mm` labels, `00:00` and `01:00` (and the last two labels) nearly touched in both directions. Automatic density now measures each label on the side it actually paints and spaces label centers evenly between the two boundary labels. The same check also fixes a quieter case: when there are few categories, even-index rounding could leave two interior labels a single category apart, such as `Mar` and `Apr` on a narrow twelve-month chart. Whenever the first and last labels fit side by side, every adjacent pair now keeps the documented 10px of breathing room under the deterministic 7px-per-character estimate. The first and last labels are still always shown, labels stay in source order, and RTL gets the same spacing. Because the previous picks often packed labels closer than 10px, wide or dense charts can now show several fewer labels than before, and different interior labels may be picked. An explicit numeric `max-labels` value is unchanged.
54
+ - 51d430a: In the `pt-PT` catalog, `lr-mcp-app` now says `Aplicação interativa`, `A carregar a aplicação interativa…` and `Não foi possível carregar esta aplicação interativa.` instead of the Brazilian `app interativo`, and 80 more `pt-PT` messages replace Brazilian wording with European forms, for example `ligar`, `hora`, `Introduza`, `Seguinte`, `Estado`, `deslocar` and `rastreio` instead of `conectar`, `horário`, `Informe`, `Próximo`, `Status`, `rolar` and `rastreamento`. The `pt-BR` catalog, every key, and every placeholder are unchanged.
55
+ - 51d430a: Regional locale fallback is now script- and region-aware. `zh-HK`, `zh-MO`, `zh-Hant` and `zh-Hant-HK` resolve to Traditional `zh-TW` instead of Simplified `zh-CN`, and a bare `pt` resolves to `pt-BR` (its CLDR likely region) even when `pt-PT` is also imported; messages, plural forms and `getLyraLocaleDirection()` all follow. `languageToCountry()` and `<lr-flag language>` give a region-less tag the region its script implies, so `zh-Hant` shows the Taiwan flag instead of sharing China's with `zh-Hans`.
56
+ - 4933b44: `lr-table` no longer freezes the page when `layout="fixed"` (or a declared column `width`) is combined with `priority` columns whose content spills out of its column. The table used to hide the priority columns, see the remaining columns fit, show them again, and repeat without ever yielding to the browser. The same loop could also happen in the default layout when showing the columns shrank the table's own width, for example because a page scrollbar appeared. A hidden priority column now comes back only once the table gets wider than it was when the column was hidden. In the default layout, resizing the table still hides and restores priority columns at the same widths as before. With `layout="fixed"`, a narrowing table can keep a `medium` column hidden until it widens again, and the reveal button still shows it.
57
+ - Refresh syntax highlighting when Lyra theme attributes change across shadow roots and slots, and share the observed theme attributes with canvas components. Resolve CSS length math in theme-token measurements so control targets, placement, row pitches and diagram geometry follow the painted sizes.
58
+
3
59
  ## 21.0.0
4
60
 
5
61
  ### Major Changes
package/README.md CHANGED
@@ -171,7 +171,7 @@ import "@aceshooting/lyra-ui/all.js";
171
171
  `all.js` registers 280 tags — every component **except** the 16 inventory-designated
172
172
  optional-peer-family tags: `<lr-chart>` and its 8 typed subclasses, `<lr-box-plot>`,
173
173
  `<lr-histogram>`, `<lr-map>`, `<lr-graph>`, `<lr-knowledge-graph-explorer>`, and
174
- `<lr-geojson-view>` and `<lr-geojson-viewer>` (see Install above). Those always require their own explicit subpath import,
174
+ `<lr-geojson-viewer>` with its deprecated `<lr-geojson-view>` alias (see Install above). Those always require their own explicit subpath import,
175
175
  even when pulling the rest of the library in bulk:
176
176
 
177
177
  ```js
@@ -570,7 +570,10 @@ setLyraLocale("fr"); // or just set <html lang="fr">/an ancestor `lang` — comp
570
570
 
571
571
  The dedicated `localization.js` entry is side-effect-free: it does not register the component
572
572
  graph. The package root continues to re-export the same runtime for compatibility, but importing
573
- the root remains registration-free.
573
+ the root remains registration-free. The same entry also carries `bridgeLyraLocale()`,
574
+ `subscribeLyraLocale()` and `resolveLyraScopedString()`; their older
575
+ `@aceshooting/lyra-ui/utilities/localization.js` entry point is deprecated, with removal not before
576
+ 23.0.0.
574
577
 
575
578
  ```html
576
579
  <!-- Per-instance: override specific keys on one element without a global registry. -->
@@ -1086,7 +1089,7 @@ each one-liner below.
1086
1089
  | `<lr-notebook-viewer>` | — (extra) | Read-only Jupyter notebook (nbformat 4.x) renderer composing existing components per cell — Markdown cells through `<lr-markdown>`, code cells through `<lr-code-block>`, rich outputs preferring image/HTML/JSON/plain-text in order; optional-DOMPurify sanitizes raw HTML/SVG output |
1087
1090
  | `<lr-spreadsheet-viewer>` | — (extra) | Optional-SheetJS `.xlsx`/`.xls` workbook viewer with sheet tabs and virtualized rows |
1088
1091
  | `<lr-csv-viewer>` | — (extra) | Optional-PapaParse CSV viewer with quoted-field support and virtualized rows |
1089
- | `<lr-geojson-viewer>` | — (extra) | Document-registry bridge that renders a fetched `.geojson`/`application/geo+json` file through `<lr-map>`'s `dataLayers` (falls back to `<lr-json-viewer>` without the optional `maplibre-gl` peer); the former `<lr-geojson-view>` remains a compatibility alias |
1092
+ | `<lr-geojson-viewer>` | — (extra) | Document-registry bridge that renders a fetched `.geojson`/`application/geo+json` file through `<lr-map>`'s `dataLayers` (falls back to `<lr-json-viewer>` without the optional `maplibre-gl` peer); the former `<lr-geojson-view>` is a deprecated compatibility alias (removal not before 23.0.0) |
1090
1093
  | `<lr-docx-viewer>` | — (extra) | Optional-Mammoth DOCX viewer that renders sanitized semantic HTML |
1091
1094
  | `<lr-email-viewer>` | — (extra) | Optional-PostalMime `.eml` viewer with sanitized HTML and plain-text fallback |
1092
1095
  | `<lr-calendar-viewer>` | — (extra) | Optional-ical.js `.ics` viewer for event summaries and times |