@aceshooting/lyra-ui 13.0.1 → 14.0.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 (421) hide show
  1. package/CHANGELOG.md +199 -0
  2. package/custom-elements.json +1 -1
  3. package/dist/cli/migration-contract.json +1 -1
  4. package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +23 -15
  5. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +9 -6
  6. package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +12 -3
  7. package/dist/components/agent-tools/agent-trace/agent-trace.class.js +2 -1
  8. package/dist/components/agent-tools/approval-queue/approval-queue.class.d.ts +4 -2
  9. package/dist/components/agent-tools/approval-queue/approval-queue.class.js +1 -1
  10. package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +1 -1
  11. package/dist/components/agent-tools/prompt-studio/prompt-studio.class.d.ts +1 -1
  12. package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +7 -7
  13. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.d.ts +5 -5
  14. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js +23 -10
  15. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.d.ts +13 -6
  16. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +3 -3
  17. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +1 -1
  18. package/dist/components/agent-tools/stack-trace/stack-trace-parse.js +3 -3
  19. package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +1 -1
  20. package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +1 -1
  21. package/dist/components/agent-tools/task-list/task-list.class.d.ts +1 -2
  22. package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
  23. package/dist/components/agent-tools/terminal/terminal.class.d.ts +10 -1
  24. package/dist/components/agent-tools/terminal/terminal.class.js +3 -3
  25. package/dist/components/agent-tools/terminal/terminal.styles.js +1 -1
  26. package/dist/components/agent-tools/test-results/test-results.class.d.ts +4 -2
  27. package/dist/components/agent-tools/test-results/test-results.class.js +2 -2
  28. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts +2 -0
  29. package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +1 -1
  30. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +1 -1
  31. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +1 -1
  32. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +3 -2
  33. package/dist/components/agent-tools/tool-param-form/tool-param-form.d.ts +1 -1
  34. package/dist/components/agent-tools/tool-param-form/tool-param-form.js +1 -1
  35. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +1 -1
  36. package/dist/components/agent-tools/tool-result-view/registry.d.ts +2 -1
  37. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts +1 -1
  38. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -1
  39. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts +18 -12
  40. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +6 -6
  41. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +9 -3
  42. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +1 -1
  43. package/dist/components/agent-tools/trace-tree/span.js +1 -1
  44. package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +1 -1
  45. package/dist/components/charts/chart/box-plot.class.d.ts +10 -3
  46. package/dist/components/charts/chart/box-plot.class.js +9 -9
  47. package/dist/components/charts/chart/box-plot.styles.js +1 -1
  48. package/dist/components/charts/chart/chart-core-loader.js +1 -1
  49. package/dist/components/charts/chart/chart-feature-loader.js +1 -1
  50. package/dist/components/charts/chart/chart-preload.d.ts +1 -1
  51. package/dist/components/charts/chart/chart-preload.js +1 -1
  52. package/dist/components/charts/chart/chart.class.d.ts +27 -9
  53. package/dist/components/charts/chart/chart.class.js +23 -14
  54. package/dist/components/charts/chart/chart.styles.js +1 -1
  55. package/dist/components/charts/chart/histogram-bin.js +1 -1
  56. package/dist/components/charts/chart/lite-chart.class.js +7 -3
  57. package/dist/components/charts/chart/lite-chart.styles.js +1 -1
  58. package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +1 -1
  59. package/dist/components/conversation/agent-workspace/agent-workspace.class.js +2 -2
  60. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts +10 -5
  61. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +1 -1
  62. package/dist/components/conversation/branch-picker/branch-picker.class.d.ts +4 -2
  63. package/dist/components/conversation/branch-picker/branch-picker.class.js +1 -1
  64. package/dist/components/conversation/branch-picker/branch-picker.styles.js +1 -1
  65. package/dist/components/conversation/chat-composer/chat-composer.class.d.ts +6 -2
  66. package/dist/components/conversation/chat-composer/chat-composer.class.js +3 -3
  67. package/dist/components/conversation/chat-composer/chat-composer.styles.js +1 -1
  68. package/dist/components/conversation/chat-message/chat-message.class.js +2 -2
  69. package/dist/components/conversation/chat-message/chat-message.styles.js +1 -1
  70. package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +1 -1
  71. package/dist/components/conversation/code-block/code-block-shared.js +1 -1
  72. package/dist/components/conversation/code-block/code-block.styles.js +1 -1
  73. package/dist/components/conversation/code-block/code-loader.d.ts +1 -1
  74. package/dist/components/conversation/code-block/code-loader.js +1 -1
  75. package/dist/components/conversation/code-block/shiki-types.js +1 -1
  76. package/dist/components/conversation/conversation-item/conversation-item.styles.js +1 -1
  77. package/dist/components/conversation/generation-metrics/generation-metrics.styles.js +1 -1
  78. package/dist/components/conversation/markdown/katex-loader.d.ts +4 -4
  79. package/dist/components/conversation/markdown/katex-loader.js +1 -1
  80. package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
  81. package/dist/components/conversation/markdown/markdown-loader.d.ts +1 -1
  82. package/dist/components/conversation/markdown/markdown-loader.js +1 -1
  83. package/dist/components/conversation/markdown/markdown-shared.d.ts +6 -1
  84. package/dist/components/conversation/markdown/markdown-shared.js +5 -4
  85. package/dist/components/conversation/message-actions/message-actions.class.d.ts +16 -3
  86. package/dist/components/conversation/message-actions/message-actions.class.js +2 -2
  87. package/dist/components/conversation/message-actions/message-actions.styles.js +1 -1
  88. package/dist/components/conversation/message-actions/toolbar-actions.d.ts +3 -1
  89. package/dist/components/conversation/message-actions/toolbar-actions.js +1 -1
  90. package/dist/components/conversation/message-feedback/message-feedback.class.d.ts +38 -15
  91. package/dist/components/conversation/message-feedback/message-feedback.class.js +7 -3
  92. package/dist/components/conversation/message-feedback/message-feedback.styles.js +1 -1
  93. package/dist/components/conversation/message-parts/message-parts.class.d.ts +7 -4
  94. package/dist/components/conversation/message-parts/message-parts.class.js +2 -2
  95. package/dist/components/conversation/message-parts/message-parts.styles.js +1 -1
  96. package/dist/components/conversation/model-select/model-select.class.d.ts +5 -2
  97. package/dist/components/conversation/model-select/model-select.class.js +5 -2
  98. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.d.ts +3 -5
  99. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js +2 -1
  100. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +9 -2
  101. package/dist/components/conversation/prompt-input/prompt-input.class.js +3 -3
  102. package/dist/components/conversation/prompt-input/prompt-input.styles.js +1 -1
  103. package/dist/components/conversation/prompt-queue/prompt-queue.class.d.ts +20 -4
  104. package/dist/components/conversation/prompt-queue/prompt-queue.class.js +1 -1
  105. package/dist/components/conversation/prompt-queue/prompt-queue.styles.js +1 -1
  106. package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts +17 -8
  107. package/dist/components/conversation/push-to-talk/push-to-talk.class.js +1 -1
  108. package/dist/components/conversation/push-to-talk/push-to-talk.styles.js +1 -1
  109. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.d.ts +6 -3
  110. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
  111. package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +1 -1
  112. package/dist/components/conversation/thread-list/thread-list.class.d.ts +14 -4
  113. package/dist/components/conversation/thread-list/thread-list.class.js +11 -11
  114. package/dist/components/conversation/thread-list/thread-list.styles.js +1 -1
  115. package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +1 -1
  116. package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +12 -4
  117. package/dist/components/conversation/voice-picker/voice-picker.class.js +5 -2
  118. package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
  119. package/dist/components/data/calendar/calendar.class.d.ts +12 -4
  120. package/dist/components/data/calendar/calendar.class.js +2 -2
  121. package/dist/components/data/calendar/calendar.styles.js +1 -1
  122. package/dist/components/data/context-meter/context-meter.class.d.ts +3 -1
  123. package/dist/components/data/context-meter/context-meter.class.js +3 -3
  124. package/dist/components/data/data-grid/data-grid.class.d.ts +45 -4
  125. package/dist/components/data/data-grid/data-grid.class.js +25 -11
  126. package/dist/components/data/data-grid/data-grid.styles.js +1 -1
  127. package/dist/components/data/document-library/document-library.class.js +1 -1
  128. package/dist/components/data/env-list/env-list.class.js +1 -1
  129. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +19 -12
  130. package/dist/components/data/flow-canvas/flow-canvas.class.js +1 -2
  131. package/dist/components/data/flow-controls/flow-controls.styles.js +1 -1
  132. package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
  133. package/dist/components/data/gauge/gauge.class.js +1 -1
  134. package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +1 -1
  135. package/dist/components/data/heatmap/heatmap.class.js +1 -1
  136. package/dist/components/data/sequence-strip/sequence-strip.class.js +1 -1
  137. package/dist/components/data/stat/stat.class.js +1 -1
  138. package/dist/components/data/table/table.class.d.ts +10 -14
  139. package/dist/components/data/table/table.class.js +4 -3
  140. package/dist/components/data/table/table.styles.js +1 -1
  141. package/dist/components/data/timeline/timeline.class.js +1 -1
  142. package/dist/components/data/tree/tree-item.styles.js +1 -1
  143. package/dist/components/data/word-cloud/word-cloud.class.js +1 -1
  144. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +7 -2
  145. package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
  146. package/dist/components/forms/code-editor/code-editor.class.d.ts +8 -4
  147. package/dist/components/forms/code-editor/code-editor.class.js +16 -5
  148. package/dist/components/forms/code-editor/code-editor.styles.js +1 -1
  149. package/dist/components/forms/color-picker/color-picker.class.d.ts +1 -1
  150. package/dist/components/forms/color-picker/color-picker.class.js +1 -1
  151. package/dist/components/forms/combobox/combobox.styles.js +1 -1
  152. package/dist/components/forms/date-picker/date-input.class.js +1 -1
  153. package/dist/components/forms/date-picker/date-picker.class.d.ts +9 -2
  154. package/dist/components/forms/date-picker/date-picker.class.js +4 -4
  155. package/dist/components/forms/date-picker/date-picker.styles.js +1 -1
  156. package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
  157. package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
  158. package/dist/components/forms/input/input.class.d.ts +11 -4
  159. package/dist/components/forms/input/input.class.js +7 -1
  160. package/dist/components/forms/input/time-input.class.d.ts +8 -2
  161. package/dist/components/forms/input/time-input.class.js +1 -1
  162. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +17 -3
  163. package/dist/components/forms/locale-picker/locale-picker.class.js +1 -1
  164. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
  165. package/dist/components/forms/rubric-form/rubric-form.class.js +1 -1
  166. package/dist/components/forms/select/select.styles.js +1 -1
  167. package/dist/components/forms/slider/slider.class.js +1 -1
  168. package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
  169. package/dist/components/forms/token-input/token-input.class.js +1 -1
  170. package/dist/components/forms/token-input/token-input.styles.js +1 -1
  171. package/dist/components/layout/app-rail/app-rail.class.d.ts +6 -4
  172. package/dist/components/layout/app-rail/app-rail.class.js +4 -3
  173. package/dist/components/layout/app-rail/app-rail.styles.js +1 -1
  174. package/dist/components/layout/command-palette/command-palette.class.d.ts +2 -2
  175. package/dist/components/layout/command-palette/command-palette.class.js +1 -1
  176. package/dist/components/layout/command-palette/command-palette.styles.js +1 -1
  177. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
  178. package/dist/components/layout/details/details.class.d.ts +13 -12
  179. package/dist/components/layout/details/details.class.js +43 -34
  180. package/dist/components/layout/details/details.styles.js +1 -1
  181. package/dist/components/layout/dock-panel/dock-panel.class.d.ts +4 -3
  182. package/dist/components/layout/dock-panel/dock-panel.class.js +2 -1
  183. package/dist/components/layout/filter-bar/filter-bar.class.js +2 -2
  184. package/dist/components/layout/menu/menu-item.class.js +2 -2
  185. package/dist/components/layout/menu/menu.class.js +1 -1
  186. package/dist/components/layout/multi-split/multi-split.class.d.ts +10 -5
  187. package/dist/components/layout/multi-split/multi-split.class.js +2 -1
  188. package/dist/components/layout/scroller/scroller.class.d.ts +4 -4
  189. package/dist/components/layout/scroller/scroller.styles.js +1 -1
  190. package/dist/components/layout/split-panel/split-panel.class.d.ts +3 -2
  191. package/dist/components/layout/split-panel/split-panel.class.js +3 -2
  192. package/dist/components/layout/tab-group/tab-group.styles.js +1 -1
  193. package/dist/components/layout/virtual-list/virtual-list.class.js +2 -2
  194. package/dist/components/layout/widget/widget.styles.js +1 -1
  195. package/dist/components/media/file-input/file-input.styles.js +1 -1
  196. package/dist/components/media/flag/flag.class.js +1 -1
  197. package/dist/components/media/lightbox/lightbox.styles.js +1 -1
  198. package/dist/components/media/map/map-loader.js +1 -1
  199. package/dist/components/media/map/map.class.d.ts +17 -31
  200. package/dist/components/media/map/map.class.js +1 -1
  201. package/dist/components/media/qr-code/qr-code-loader.js +1 -1
  202. package/dist/components/media/qr-code/qr-code.class.d.ts +5 -2
  203. package/dist/components/media/qr-code/qr-code.class.js +2 -2
  204. package/dist/components/media/sequence-playback/sequence-playback.class.d.ts +2 -2
  205. package/dist/components/media/sequence-playback/sequence-playback.class.js +1 -1
  206. package/dist/components/overlays/alert/alert.styles.js +1 -1
  207. package/dist/components/overlays/callout/callout.styles.js +1 -1
  208. package/dist/components/overlays/dialog/dialog.styles.js +1 -1
  209. package/dist/components/overlays/kbd/kbd.class.js +1 -1
  210. package/dist/components/overlays/overlay/popover.class.js +1 -1
  211. package/dist/components/overlays/overlay/tooltip.class.js +1 -1
  212. package/dist/components/overlays/rating/rating.class.js +1 -1
  213. package/dist/components/overlays/toast/toast-item.class.js +1 -1
  214. package/dist/components/retrieval/claim-evidence/claim-evidence.class.d.ts +11 -5
  215. package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +3 -3
  216. package/dist/components/retrieval/graph/graph-loader.js +1 -1
  217. package/dist/components/retrieval/graph/graph.class.d.ts +1 -1
  218. package/dist/components/retrieval/graph/graph.class.js +10 -10
  219. package/dist/components/retrieval/graph-legend/graph-legend.class.d.ts +4 -2
  220. package/dist/components/retrieval/graph-legend/graph-legend.class.js +1 -1
  221. package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts +14 -6
  222. package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +7 -5
  223. package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +3 -2
  224. package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +4 -3
  225. package/dist/components/retrieval/knowledge-base/knowledge-base.styles.js +1 -1
  226. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +4 -1
  227. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +2 -1
  228. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +1 -1
  229. package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +15 -6
  230. package/dist/components/retrieval/memory-panel/memory-panel.class.js +1 -1
  231. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
  232. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +1 -1
  233. package/dist/components/retrieval/node-palette/node-palette.class.d.ts +17 -12
  234. package/dist/components/retrieval/node-palette/node-palette.class.js +2 -2
  235. package/dist/components/retrieval/node-palette/node-palette.styles.js +1 -1
  236. package/dist/components/retrieval/path-strip/path-strip.class.js +1 -1
  237. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +1 -1
  238. package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +5 -5
  239. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -1
  240. package/dist/components/retrieval/source-picker/source-picker.class.js +1 -1
  241. package/dist/components/utility/copy-button/copy-button.class.d.ts +2 -1
  242. package/dist/components/utility/copy-button/copy-button.class.js +1 -1
  243. package/dist/components/utility/diff-view/diff-view.class.d.ts +4 -1
  244. package/dist/components/utility/diff-view/diff-view.class.js +1 -1
  245. package/dist/components/utility/export-button/export-button.class.d.ts +2 -2
  246. package/dist/components/utility/export-button/export-button.class.js +1 -1
  247. package/dist/components/utility/export-button/export-button.styles.js +1 -1
  248. package/dist/components/utility/format/format-date.class.js +1 -1
  249. package/dist/components/utility/format/relative-time.class.js +1 -1
  250. package/dist/components/utility/icon/dompurify-loader.js +1 -1
  251. package/dist/components/utility/icon/icon-library.js +1 -1
  252. package/dist/components/utility/intersection-observer/intersection-observer.class.js +1 -1
  253. package/dist/components/utility/json-viewer/json-viewer.class.d.ts +3 -1
  254. package/dist/components/utility/json-viewer/json-viewer.class.js +5 -5
  255. package/dist/components/utility/known-date/known-date.class.js +1 -1
  256. package/dist/components/utility/mention-popover/mention-popover.class.d.ts +29 -44
  257. package/dist/components/utility/mention-popover/mention-popover.class.js +1 -1
  258. package/dist/components/utility/mutation-observer/mutation-observer.class.js +1 -1
  259. package/dist/components/viewers/calendar-viewer/calendar-loader.js +1 -1
  260. package/dist/components/viewers/document-compare/document-compare.class.d.ts +11 -8
  261. package/dist/components/viewers/document-compare/document-compare.class.js +2 -2
  262. package/dist/components/viewers/document-preview/document-preview.class.d.ts +4 -2
  263. package/dist/components/viewers/document-preview/document-preview.class.js +4 -4
  264. package/dist/components/viewers/document-preview/document-preview.styles.js +1 -1
  265. package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +2 -0
  266. package/dist/components/viewers/document-viewer/document-viewer.styles.js +1 -1
  267. package/dist/components/viewers/docx-viewer/docx-loader.js +1 -1
  268. package/dist/components/viewers/docx-viewer/docx-viewer.class.js +1 -1
  269. package/dist/components/viewers/ebook-viewer/ebook-loader.d.ts +1 -1
  270. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.d.ts +2 -2
  271. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
  272. package/dist/components/viewers/email-viewer/email-loader.js +1 -1
  273. package/dist/components/viewers/email-viewer/email-viewer.class.d.ts +1 -1
  274. package/dist/components/viewers/email-viewer/email-viewer.class.js +2 -2
  275. package/dist/components/viewers/html-viewer/dompurify-loader.js +1 -1
  276. package/dist/components/viewers/notebook-viewer/dompurify-loader.js +1 -1
  277. package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
  278. package/dist/components/viewers/pptx-viewer/pptx-loader.js +1 -1
  279. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-loader.js +1 -1
  280. package/dist/components/viewers/svg-viewer/dompurify-loader.js +1 -1
  281. package/dist/components/viewers/viewer-loading.js +1 -1
  282. package/dist/components/viewers/viewer-search-limits.d.ts +2 -0
  283. package/dist/components/viewers/viewer-search-limits.js +1 -1
  284. package/dist/custom-elements-jsx.d.ts +1 -1
  285. package/dist/events.d.ts +13 -6
  286. package/dist/internal/aria-controls.d.ts +16 -13
  287. package/dist/internal/aria-controls.js +1 -1
  288. package/dist/internal/aria-reflection.js +1 -1
  289. package/dist/internal/catalog-picker.d.ts +2 -2
  290. package/dist/internal/catalog-picker.js +1 -1
  291. package/dist/internal/chart-annotation-registration.d.ts +1 -0
  292. package/dist/internal/chart-annotation-registration.js +1 -0
  293. package/dist/internal/data-descriptors.d.ts +13 -0
  294. package/dist/internal/data-descriptors.js +1 -0
  295. package/dist/internal/default-strings.generated.d.ts +1 -1
  296. package/dist/internal/default-strings.generated.js +2 -2
  297. package/dist/internal/dev-mode-attribute-warning.js +1 -1
  298. package/dist/internal/element-internals.d.ts +4 -3
  299. package/dist/internal/element-internals.js +1 -1
  300. package/dist/internal/highlight-collection.d.ts +2 -0
  301. package/dist/internal/highlight-collection.js +1 -1
  302. package/dist/internal/localization-types.d.ts +1 -1
  303. package/dist/internal/localization.js +2 -2
  304. package/dist/internal/lyra-element.d.ts +10 -1
  305. package/dist/internal/lyra-element.js +2 -1
  306. package/dist/internal/package-metadata.d.ts +1 -1
  307. package/dist/internal/package-metadata.js +1 -1
  308. package/dist/internal/papaparse-loader.js +1 -1
  309. package/dist/internal/pseudo-localization.js +1 -1
  310. package/dist/internal/safe-css.js +1 -1
  311. package/dist/internal/step-value.d.ts +6 -0
  312. package/dist/internal/step-value.js +1 -0
  313. package/dist/internal/text-quote.js +1 -1
  314. package/dist/lyra.d.ts +1 -1
  315. package/dist/svelte.d.ts +1 -1
  316. package/dist/translations/ar.js +2 -2
  317. package/dist/translations/de.js +2 -2
  318. package/dist/translations/es.js +2 -2
  319. package/dist/translations/fa.js +2 -2
  320. package/dist/translations/fr.js +2 -2
  321. package/dist/translations/he.js +2 -2
  322. package/dist/translations/ja.js +2 -2
  323. package/dist/translations/pseudo/ar-XB.js +1 -1
  324. package/dist/translations/pt-BR.js +2 -2
  325. package/dist/translations/ru.js +2 -2
  326. package/dist/translations/zh-CN.js +2 -2
  327. package/dist/vue.d.ts +1 -1
  328. package/llms/components/lr-accordion-item.md +6 -5
  329. package/llms/components/lr-accordion.md +6 -5
  330. package/llms/components/lr-activity-feed.md +6 -5
  331. package/llms/components/lr-agent-run.md +1 -1
  332. package/llms/components/lr-agent-workspace.md +3 -2
  333. package/llms/components/lr-attachment-chip.md +2 -3
  334. package/llms/components/lr-audio-visualizer.md +9 -6
  335. package/llms/components/lr-bar-chart.md +2 -2
  336. package/llms/components/lr-box-plot.md +9 -6
  337. package/llms/components/lr-bubble-chart.md +2 -2
  338. package/llms/components/lr-calendar.md +10 -4
  339. package/llms/components/lr-chart.md +11 -5
  340. package/llms/components/lr-chat-composer.md +2 -1
  341. package/llms/components/lr-chunk-inspector.md +2 -2
  342. package/llms/components/lr-code-block-core.md +4 -4
  343. package/llms/components/lr-code-block.md +10 -14
  344. package/llms/components/lr-code-editor.md +2 -0
  345. package/llms/components/lr-copy-button.md +4 -1
  346. package/llms/components/lr-data-grid.md +11 -2
  347. package/llms/components/lr-date-input.md +4 -0
  348. package/llms/components/lr-date-picker.md +5 -1
  349. package/llms/components/lr-details.md +6 -5
  350. package/llms/components/lr-diff-view.md +6 -0
  351. package/llms/components/lr-document-compare.md +6 -2
  352. package/llms/components/lr-document-preview.md +11 -3
  353. package/llms/components/lr-document-viewer.md +5 -1
  354. package/llms/components/lr-docx-viewer.md +6 -0
  355. package/llms/components/lr-doughnut-chart.md +2 -2
  356. package/llms/components/lr-ebook-viewer.md +8 -3
  357. package/llms/components/lr-email-viewer.md +5 -0
  358. package/llms/components/lr-eval-dataset.md +2 -2
  359. package/llms/components/lr-export-button.md +9 -0
  360. package/llms/components/lr-file-input.md +5 -8
  361. package/llms/components/lr-format-date.md +3 -1
  362. package/llms/components/lr-graph-legend.md +4 -2
  363. package/llms/components/lr-grounding-summary.md +8 -8
  364. package/llms/components/lr-histogram.md +2 -2
  365. package/llms/components/lr-ingestion-queue.md +1 -1
  366. package/llms/components/lr-intersection-observer.md +9 -0
  367. package/llms/components/lr-json-viewer.md +6 -1
  368. package/llms/components/lr-knowledge-base.md +10 -1
  369. package/llms/components/lr-line-chart.md +2 -2
  370. package/llms/components/lr-lite-chart.md +8 -5
  371. package/llms/components/lr-locale-picker.md +6 -0
  372. package/llms/components/lr-map.md +15 -5
  373. package/llms/components/lr-markdown.md +7 -4
  374. package/llms/components/lr-media-card.md +0 -6
  375. package/llms/components/lr-mention-popover.md +12 -10
  376. package/llms/components/lr-message-actions.md +10 -3
  377. package/llms/components/lr-message-feedback.md +20 -7
  378. package/llms/components/lr-message-parts.md +3 -1
  379. package/llms/components/lr-model-select.md +5 -2
  380. package/llms/components/lr-multi-split.md +5 -1
  381. package/llms/components/lr-mutation-observer.md +8 -0
  382. package/llms/components/lr-node-palette.md +5 -2
  383. package/llms/components/lr-pie-chart.md +2 -2
  384. package/llms/components/lr-polar-area-chart.md +2 -2
  385. package/llms/components/lr-prompt-input.md +7 -3
  386. package/llms/components/lr-prompt-queue.md +6 -0
  387. package/llms/components/lr-push-to-talk.md +5 -0
  388. package/llms/components/lr-qr-code.md +6 -0
  389. package/llms/components/lr-radar-chart.md +2 -2
  390. package/llms/components/lr-rating.md +5 -0
  391. package/llms/components/lr-relative-time.md +2 -0
  392. package/llms/components/lr-result-card.md +3 -3
  393. package/llms/components/lr-result-field.md +3 -3
  394. package/llms/components/lr-retrieval-results.md +1 -1
  395. package/llms/components/lr-scatter-chart.md +2 -2
  396. package/llms/components/lr-scroller.md +5 -5
  397. package/llms/components/lr-sequence-playback.md +1 -2
  398. package/llms/components/lr-slider.md +3 -1
  399. package/llms/components/lr-streaming-text.md +2 -3
  400. package/llms/components/lr-terminal.md +14 -5
  401. package/llms/components/lr-thinking-panel.md +3 -1
  402. package/llms/components/lr-thread-list.md +20 -1
  403. package/llms/components/lr-tool-call-chip.md +2 -2
  404. package/llms/components/lr-tool-param-form.md +2 -2
  405. package/llms/components/lr-tool-result-view.md +2 -3
  406. package/llms/components/lr-tool-select-dialog.md +2 -2
  407. package/llms/components/lr-voice-picker.md +7 -2
  408. package/llms/components/lr-widget-renderer.md +12 -13
  409. package/llms/peers.md +5 -5
  410. package/llms/shared.md +74 -63
  411. package/llms-full.txt +629 -247
  412. package/package.json +18 -13
  413. package/vscode-css-data.json +1 -1
  414. package/vscode-html-data.json +1 -1
  415. package/web-types.json +1 -1
  416. package/dist/components/viewers/docx-viewer/fixtures/minimal-docx-fixture.d.ts +0 -1
  417. package/dist/components/viewers/docx-viewer/fixtures/minimal-docx-fixture.js +0 -1
  418. package/dist/components/viewers/ebook-viewer/fixtures/minimal-epub-fixture.d.ts +0 -1
  419. package/dist/components/viewers/ebook-viewer/fixtures/minimal-epub-fixture.js +0 -1
  420. package/dist/components/viewers/spreadsheet-viewer/fixtures/minimal-xlsx-fixture.d.ts +0 -1
  421. package/dist/components/viewers/spreadsheet-viewer/fixtures/minimal-xlsx-fixture.js +0 -1
@@ -141,16 +141,17 @@ from assistive technology: do not place independent links, buttons, inputs, form
141
141
  targets there. The accordion-item `icon` slot follows the same flattened-tree inert and aria-hidden
142
142
  visual contract, while the trigger button remains the sole action. Details has `summary`,
143
143
  `header-actions`, `expand-icon`, `collapse-icon`, plus default content. `header-actions` renders
144
- extra controls (e.g. a trailing "add" button) inside the `<summary>` header row the one subtree a
145
- native `<details>` keeps out of its generated content box — so they stay rendered, visible, and
146
- hit-testable while the panel is collapsed. Activating one never toggles the panel: a click whose
144
+ extra controls (e.g. a trailing "add" button) as a sibling of the private native `<details>` in the
145
+ complete header row, so they stay rendered, visible, and hit-testable while the panel is collapsed
146
+ or disabled. Activating one never toggles the panel: a click whose
147
147
  composed path crosses `[part~="header-actions"]` is exempted from disclosure activation. Its wrapper
148
148
  is hidden and reclaims layout space whenever the slot is empty.
149
149
 
150
150
  **CSS parts:** accordion exposes `base`. Accordion item exposes `base` and `accordion-item` on the
151
151
  same outer wrapper, plus `heading`, `button`, `label`, `icon`, `panel`, and `content`. Details
152
- exposes `base` and `details` on the same native `<details>` wrapper, plus `header`, `summary`,
153
- `icon`, `header-actions`, and `content`.
152
+ exposes `base` and `details` on the same outer container, plus `header`, `summary`, `icon`,
153
+ `header-actions`, and `content`. The native `<details>` is private; `content` is inside its
154
+ findable `hidden="until-found"` closed-state gate.
154
155
  The Details icon wrapper also carries Shoelace's `summary-icon` alias, so either part name styles
155
156
  the same node. `header-actions` is the wrapper around the `header-actions` slot.
156
157
 
@@ -141,16 +141,17 @@ from assistive technology: do not place independent links, buttons, inputs, form
141
141
  targets there. The accordion-item `icon` slot follows the same flattened-tree inert and aria-hidden
142
142
  visual contract, while the trigger button remains the sole action. Details has `summary`,
143
143
  `header-actions`, `expand-icon`, `collapse-icon`, plus default content. `header-actions` renders
144
- extra controls (e.g. a trailing "add" button) inside the `<summary>` header row the one subtree a
145
- native `<details>` keeps out of its generated content box — so they stay rendered, visible, and
146
- hit-testable while the panel is collapsed. Activating one never toggles the panel: a click whose
144
+ extra controls (e.g. a trailing "add" button) as a sibling of the private native `<details>` in the
145
+ complete header row, so they stay rendered, visible, and hit-testable while the panel is collapsed
146
+ or disabled. Activating one never toggles the panel: a click whose
147
147
  composed path crosses `[part~="header-actions"]` is exempted from disclosure activation. Its wrapper
148
148
  is hidden and reclaims layout space whenever the slot is empty.
149
149
 
150
150
  **CSS parts:** accordion exposes `base`. Accordion item exposes `base` and `accordion-item` on the
151
151
  same outer wrapper, plus `heading`, `button`, `label`, `icon`, `panel`, and `content`. Details
152
- exposes `base` and `details` on the same native `<details>` wrapper, plus `header`, `summary`,
153
- `icon`, `header-actions`, and `content`.
152
+ exposes `base` and `details` on the same outer container, plus `header`, `summary`, `icon`,
153
+ `header-actions`, and `content`. The native `<details>` is private; `content` is inside its
154
+ findable `hidden="until-found"` closed-state gate.
154
155
  The Details icon wrapper also carries Shoelace's `summary-icon` alias, so either part name styles
155
156
  the same node. `header-actions` is the wrapper around the `header-actions` slot.
156
157
 
@@ -16,8 +16,8 @@
16
16
 
17
17
  ## `lr-activity-feed`
18
18
 
19
- An append-only streaming log of granular agent actions ("Searching the web…", "Read
20
- src/index.ts"), collapsing to a localized "Completed N steps" summary once the run is over. Entries
19
+ An append-only streaming log of granular agent actions ("Searching the web…", "Read the
20
+ application entry point"), collapsing to a localized "Completed N steps" summary once the run is over. Entries
21
21
  never change state once added — a step whose status mutates in place belongs to `<lr-task-list>`
22
22
  instead. Implements the shared follow (stick-to-bottom) contract. At/above `virtualizeAt`
23
23
  entries, the body renders through an internal `<lr-virtual-list>` instead of a plain keyed list.
@@ -34,13 +34,14 @@ unset. `mode: 'live' | 'post-hoc' =
34
34
  `label?: string` — omission localizes `activityFeedLabel` (`'Activity'` in the built-in English
35
35
  catalog), while any supplied string is a verbatim override, including `'Activity'` under a
36
36
  non-English `.strings` catalog and `''`. A present host `aria-label` names the owned list in both
37
- plain and virtualized rendering paths while `label` remains the visible header text
37
+ plain and virtualized rendering paths while `label` remains the visible header text. Host
38
+ `aria-labelledby` and `aria-describedby` likewise reach that semantic list in both rendering paths —
38
39
  `showTimestamps: boolean = false` (attribute `show-timestamps`),
39
40
  `formatTimestamp?: (date: Date) => string` (attribute: false), `renderText?: (entry: ActivityEntry)
40
41
  => TemplateResult` (attribute: false) — overrides the default plain-text `entry-text` rendering with
41
42
  arbitrary rich content (e.g. rendered markdown, or markdown plus a trailing tool-call chip list),
42
- identically whether or not the feed is currently virtualized; fully replaces `[part="entry-text"]`
43
- rather than augmenting it, and `virtualizeAt: number = 199` (attribute
43
+ identically whether or not the feed is currently virtualized; replaces the plain text **inside**
44
+ the persistent `[part="entry-text"]` wrapper rather than removing that part, and `virtualizeAt: number = 199` (attribute
44
45
  `virtualize-at`).
45
46
 
46
47
  **Events:** `lr-toggle` (`detail: { expanded }`, the header was activated) and
@@ -31,7 +31,7 @@ cancelable. Retry is available for `error` and `cancelled`.
31
31
  **Properties:**
32
32
 
33
33
  - `run: AgentRun | null = null` (attribute: false) — **`AgentRun`, imported from
34
- `@aceshooting/lyra-ui/ai`** (`src/ai/types.ts`): `{ id: string; status: AgentStatus; startedAt?:
34
+ `@aceshooting/lyra-ui/ai`**: `{ id: string; status: AgentStatus; startedAt?:
35
35
  number; endedAt?: number; model?: string; costEstimate?: number; steps: readonly AgentStep[] }`, where
36
36
  `AgentStatus { kind: AgentStatusKind; message?: string }` and `AgentStep { id: string; kind:
37
37
  string; label: string; status: AgentStatus; startedAt?: number; endedAt?: number }`. All timestamps
@@ -23,7 +23,7 @@ grounding, and context state: transcript + composer in the main pane, and a deta
23
23
  assign new data to the properties as the host receives updates.
24
24
 
25
25
  This is the single component that binds the most of the provider-neutral vocabulary exported from
26
- `@aceshooting/lyra-ui/ai` (`src/ai/types.ts`) at once; a host that already holds `ChatMessage[]`,
26
+ `@aceshooting/lyra-ui/ai` at once; a host that already holds `ChatMessage[]`,
27
27
  `AgentRun`, `RetrievalChunk[]`, `Citation[]`, and `GroundingAssessment` can wire this up with no
28
28
  adapters.
29
29
 
@@ -81,7 +81,8 @@ Citation; truncated?: boolean; omittedTokens?: number; redactions?: ContextInspe
81
81
  the border and padding; a supplied `composer` slot keeps its own frame.
82
82
  - `composerValue: string = ''` (attribute `composer-value`) — controlled composer value
83
83
  - `composerStatus: ChatComposerStatus = 'idle'` (attribute `composer-status`) — `'idle' | 'sending' |
84
- 'streaming'`, `lr-chat-composer`'s own union
84
+ 'streaming'`, `lr-chat-composer`'s own union; invalid values read as `idle` without rewriting the
85
+ host attribute
85
86
  - `composerPlaceholder: string = ''` (attribute `composer-placeholder`)
86
87
  - `composerMinRows: number = 1` (attribute `composer-min-rows`), `composerMaxRows: number = 8`
87
88
  (attribute `composer-max-rows`)
@@ -115,9 +115,8 @@ already focused on the chip still hears an upload failure — goes to the librar
115
115
  can read at their own pace, and a retry that fails the same way twice is announced twice rather
116
116
  than being a silent no-op. The ticking `uploading` readout announces nothing at all — a live
117
117
  region re-announcing every progress tick is noise, not information.
118
- - A test that asserted `::part(status-text)` had `role="alert"` now fails; query
119
- `[data-lr-live-region="assertive"]` in the document instead. `::part(status-text)` is still the
120
- styling hook, and still the place to read the visible status wording.
118
+ - Read the announcement from `[data-lr-live-region="assertive"]` in the document;
119
+ `::part(status-text)` remains the styling hook and visible-status text.
121
120
 
122
121
  **Themeable custom properties:** `--lr-attachment-chip-accent` (default
123
122
  `var(--lr-color-text-quiet)`), `--lr-attachment-chip-bg` (default `var(--lr-color-surface)`),
@@ -28,10 +28,11 @@ wired to a WebAudio `AnalyserNode`; `level: number | null = null` — a pre-comp
28
28
  hosts that already have one (e.g. `lr-push-to-talk`'s `lr-level` detail); `state: 'idle' |
29
29
  'listening' | 'thinking' | 'speaking' = 'idle'` (reflected) — drives the signal-less ambient
30
30
  animation and per-state coloring; `mode: AudioVisualizerMode = 'bars'` (`'bars' | 'waveform'`,
31
- reflected); `barCount: number = 5` (attribute `bar-count`); `gain: number = 1` multiplier applied
32
- to the resolved amplitude; `label: string =
33
- ''` — accessible-name override. Invalid `state` or `mode` attribute/property writes normalize to
34
- `idle` and `bars` respectively.
31
+ reflected); `barCount: number = 5` (attribute `bar-count`, normalized to an integer in `[1, 64]`);
32
+ `gain: number = 1` — multiplier applied to the resolved amplitude, with a non-finite value treated
33
+ as `1`; `label: string = ''` — accessible-name override. `level` is clamped to `[0, 1]`; after gain,
34
+ waveform and bar values are clamped to `[-1, 1]` and `[0, 1]` respectively. Invalid `state` or
35
+ `mode` attribute/property writes normalize to `idle` and `bars` respectively.
35
36
 
36
37
  **Methods:** `refreshTheme()` re-reads themeable custom properties after a runtime theme change (the
37
38
  canvas resolves token values at paint time and cannot inherit `var()` directly). Canvas-bound
@@ -44,8 +45,10 @@ or empty `MediaStream` tears down the prior analyser transaction immediately and
44
45
 
45
46
  **Slots:** none.
46
47
 
47
- **CSS parts:** `base` (the root wrapper) and `canvas` (the drawing surface, `aria-hidden`; the host
48
- itself carries `role="img"` and the accessible name).
48
+ **CSS parts:** `base` (the root wrapper) and `canvas` (the drawing surface, `aria-hidden`). The host
49
+ supplies `role="img"` only while an author has not supplied a role; an authored role is preserved,
50
+ and removing it restores `img`. If observation cannot be established, it draws eagerly; otherwise
51
+ it waits for a valid observer entry and pauses offscreen.
49
52
 
50
53
  **Themeable custom properties:** `--lr-audio-visualizer-color` (default `var(--lr-color-brand)` —
51
54
  active bar/waveform color), `--lr-audio-visualizer-quiet-color` (default
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** `chart.js`, `chartjs-plugin-annotation`, `chartjs-plugin-datalabels`, `chartjs-plugin-zoom` — see `llms/peers.md`
12
- - **Themeable via** 16 parts, 35 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 16 parts, 36 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Documented with** `lr-line-chart`, `lr-pie-chart`, `lr-doughnut-chart`, `lr-radar-chart`, `lr-polar-area-chart`, `lr-bubble-chart`, `lr-scatter-chart` (same section below)
14
14
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
15
15
 
@@ -58,7 +58,7 @@ failure transition is announced through the shared document-level light-DOM asse
58
58
  `--lr-chart-data-table-button-active-bg`, `--lr-chart-data-table-toggle-hover-bg`,
59
59
  `--lr-chart-data-table-toggle-active-bg`, `--lr-chart-reset-zoom-button-hover-bg`,
60
60
  `--lr-chart-reset-zoom-button-active-bg`, `--lr-chart-canvas-hover-outline-width`, and
61
- `--lr-chart-pattern-step`, plus `--lr-chart-legend-side-max` — all inherited from `LyraChart`, identical in meaning and default (see
61
+ `--lr-chart-canvas-hover-outline-color`, `--lr-chart-pattern-step`, plus `--lr-chart-legend-side-max` — all inherited from `LyraChart`, identical in meaning and default (see
62
62
  `lr-chart` above); each of the eight variants below reads the same set, so one rule retunes them
63
63
  together. The mirrored hooks are `--border-color-1`,
64
64
  `--border-color-2`, `--border-color-3`, `--border-color-4`, `--border-color-5`,
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** `@sgratzl/chartjs-chart-boxplot`, `chart.js` — see `llms/peers.md`
12
- - **Themeable via** 12 parts, 13 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 12 parts, 14 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -48,8 +48,9 @@ browser). Does **not** extend `LyraChart` — a deliberately bespoke API.
48
48
  - `formatter?: LyraChartFormatter`, `valueFormatter?: LyraChartValueFormatter` — numeric axis,
49
49
  tooltip, table, summary, and export formatting. The context-object formatter receives the
50
50
  family-wide `spoken` surface for the generated summary and `export` for CSV cells; the legacy
51
- positional formatter continues to receive `table` for both compatibility paths. The
52
- context-object formatter takes precedence
51
+ positional formatter receives `table` for the spoken/export compatibility paths, its normal
52
+ surface name for axis, tooltip, and table work, and no fallback for a `visual` context. The
53
+ context-object formatter takes precedence.
53
54
  - `showDataTable: boolean = false` (attribute `show-data-table`) — reveals the accessible data table
54
55
  - `dataTableToggle: boolean = false` (attribute `data-table-toggle`, new in 11.0.0) — renders a
55
56
  localized disclosure button (`part="data-table-toggle"`) above the data table so a *sighted*
@@ -57,8 +58,9 @@ browser). Does **not** extend `LyraChart` — a deliberately bespoke API.
57
58
  consumers wrapping a duplicated table in their own `<details>`. With the toggle on,
58
59
  `showDataTable` becomes the disclosure's **initial** state rather than its whole behavior; the
59
60
  table stays in the DOM in both states, so assistive technology never loses it, and the button
60
- carries `aria-expanded` plus `aria-controls` pointing at the `data-table` wrapper. Unset, nothing
61
- renders and behavior is identical to before.
61
+ carries `aria-expanded` plus `aria-controls` pointing at the `data-table` wrapper. A supplied
62
+ `slot="data-table"` follows this same disclosure state. Unset, nothing renders and behavior is
63
+ identical to before.
62
64
 
63
65
  **Methods:** `exportData('csv'|'png')` returns spreadsheet-safe summary rows or the current canvas
64
66
  PNG data URL. `refreshTheme()` re-reads canvas theme custom properties after an ancestor theme
@@ -112,7 +114,8 @@ that sets no `color` is assigned an entry from the same `--lr-color-chart-1..8`
112
114
  so `--lr-theme-color-chart-*` retheming reaches box plots too. `--lr-chart-pattern-step`
113
115
  (default `var(--lr-space-2xs)`) sizes the forced-colors legend texture and
114
116
  `--lr-chart-canvas-hover-outline-width` (default `var(--lr-border-width-thin)`) sizes the `canvas`
115
- hover outline, `--lr-chart-legend-item-active-bg` and `--lr-chart-legend-item-hover-bg` retune the
117
+ hover outline; `--lr-chart-canvas-hover-outline-color` (default `var(--lr-chart-grid-color)`) sets
118
+ its color. `--lr-chart-legend-item-active-bg` and `--lr-chart-legend-item-hover-bg` retune the
116
119
  pressed and hovered legend rows, and `--lr-chart-legend-side-max` caps a side legend — the same tokens and defaults as
117
120
  `lr-chart`. Its own `dataTableToggle` disclosure button carries box-plot-namespaced hooks rather
118
121
  than inheriting the chart pair, since its stylesheet is not a re-export:
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** `chart.js`, `chartjs-plugin-annotation`, `chartjs-plugin-datalabels`, `chartjs-plugin-zoom` — see `llms/peers.md`
12
- - **Themeable via** 16 parts, 35 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 16 parts, 36 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Documented with** `lr-line-chart`, `lr-bar-chart`, `lr-pie-chart`, `lr-doughnut-chart`, `lr-radar-chart`, `lr-polar-area-chart`, `lr-scatter-chart` (same section below)
14
14
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
15
15
 
@@ -58,7 +58,7 @@ failure transition is announced through the shared document-level light-DOM asse
58
58
  `--lr-chart-data-table-button-active-bg`, `--lr-chart-data-table-toggle-hover-bg`,
59
59
  `--lr-chart-data-table-toggle-active-bg`, `--lr-chart-reset-zoom-button-hover-bg`,
60
60
  `--lr-chart-reset-zoom-button-active-bg`, `--lr-chart-canvas-hover-outline-width`, and
61
- `--lr-chart-pattern-step`, plus `--lr-chart-legend-side-max` — all inherited from `LyraChart`, identical in meaning and default (see
61
+ `--lr-chart-canvas-hover-outline-color`, `--lr-chart-pattern-step`, plus `--lr-chart-legend-side-max` — all inherited from `LyraChart`, identical in meaning and default (see
62
62
  `lr-chart` above); each of the eight variants below reads the same set, so one rule retunes them
63
63
  together. The mirrored hooks are `--border-color-1`,
64
64
  `--border-color-2`, `--border-color-3`, `--border-color-4`, `--border-color-5`,
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 16 parts, 6 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 16 parts, 12 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -21,9 +21,11 @@ Responsive month calendar with event markers and an agenda view.
21
21
  **Properties:**
22
22
 
23
23
  - `events: CalendarEvent[] = []` (attribute: false) — `{ readonly id?, readonly date, readonly
24
- title, readonly color?, readonly data? }`; `date` is an ISO `YYYY-MM-DD` string and `color` is
25
- sanitized before being used as the marker background. The former ignored `start`/`end` fields
26
- are not part of the contract; use one event per displayed date
24
+ title, readonly color?, readonly data? }`; `date` accepts an ISO `YYYY-MM-DD` string, finite epoch
25
+ milliseconds, or a valid `Date`, then normalizes to the displayed ISO day. Invalid date/title rows
26
+ are omitted; `lr-event-select.detail.event` remains the original admitted object. `color` is
27
+ sanitized before use as the marker background. The former ignored `start`/`end` fields are not
28
+ part of the contract; use one event per displayed date
27
29
  - `value: string = ''` — the selected ISO date
28
30
  - `viewDate: string` (attribute `view-date`, defaults to the 1st of the current month) — the visible
29
31
  month; an unparseable value falls back to the current month
@@ -65,6 +67,10 @@ and `--lr-calendar-day-min-block-size-narrow` (default `var(--lr-size-4rem)`, ap
65
67
  day's background; `--lr-calendar-day-outside-color` (default `var(--lr-color-text-quiet)`) and
66
68
  `--lr-calendar-day-outside-bg` (default `var(--lr-color-surface)`) for adjacent-month days; and
67
69
  `--lr-calendar-day-today-outline-color` (default `var(--lr-color-brand)`) for today's outline.
70
+ `--lr-calendar-nav-hover-bg`, `--lr-calendar-nav-active-bg`, `--lr-calendar-day-hover-bg`,
71
+ `--lr-calendar-day-active-bg`, `--lr-calendar-agenda-event-hover-bg`, and
72
+ `--lr-calendar-agenda-event-active-bg` independently theme navigation, day, and agenda-event
73
+ hover/pressed states through inheritable inline fallbacks.
68
74
  These state hooks use inline fallbacks at their paint rules, so an application theme can set them
69
75
  on an ancestor. They keep persistent selection, outside-month chrome, and today's outline
70
76
  independent from shared tokens that also drive unrelated component states.
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** `chart.js`, `chartjs-plugin-annotation`, `chartjs-plugin-datalabels`, `chartjs-plugin-zoom` — see `llms/peers.md`
12
- - **Themeable via** 16 parts, 35 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 16 parts, 36 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -117,7 +117,10 @@ property).
117
117
  - `formatter?: LyraChartFormatter` (attribute: false) — the family-wide context-object formatter:
118
118
  `({ value, surface, datasetIndex?, index?, label?, seriesLabel?, statistic? }) => string`.
119
119
  `surface` identifies `visual`, `spoken`, `export`, `tick`, `tooltip`, `legend`, or `table`.
120
- It takes precedence over the legacy positional `valueFormatter` where both are supplied.
120
+ `statistic`, when present for a structured datum or stack total, is one of `x`, `y`, `r`,
121
+ `min`, `q1`, `median`, `q3`, `max`, or `total`. It takes precedence over the legacy positional
122
+ `valueFormatter` where both are supplied. The legacy callback remains a visual/table compatibility
123
+ hook; use `formatter` when a generated spoken value or CSV cell must use the same unit text.
121
124
  - `area: boolean = false` — chart-wide default for whether line-type series fill the region under
122
125
  their line; a series's own `fill` overrides it, rendered with a translucent version of its color
123
126
  - `zoom: boolean = false` — wheel/drag/pinch zoom on the `x` axis only (pan disabled, and the zoom
@@ -172,8 +175,10 @@ property).
172
175
  consumers wrapping a duplicated table in their own `<details>`. With the toggle on,
173
176
  `showDataTable` becomes the disclosure's **initial** state rather than its whole behavior; the
174
177
  table stays in the DOM in both states, so assistive technology never loses it, and the button
175
- carries `aria-expanded` plus `aria-controls` pointing at the `data-table` wrapper. Unset, nothing
176
- renders and behavior is identical to before.
178
+ carries `aria-expanded` plus `aria-controls` pointing at the `data-table` wrapper. Until the
179
+ reader activates it, the disclosure follows `showDataTable`; afterwards the reader's selected
180
+ state remains authoritative for that mounted chart. A supplied `slot="data-table"` follows this
181
+ same disclosure state. Unset, nothing renders and behavior is identical to before.
177
182
  - `chartArea: LyraChartArea | undefined` (readonly) — current Chart.js chart-area geometry in
178
183
  canvas-local coordinates (`top`, `left`, `right`, `bottom`, `width`, `height`), when a chart is
179
184
  drawn
@@ -328,7 +333,8 @@ plot in narrow containers;
328
333
  declaration on a DOM element (the outline is painted by the stylesheet, not by Chart.js), so it is
329
334
  consumed directly with no `getComputedStyle` bridging; it is an inline `var()` fallback at the point
330
335
  of use, so it can be set on the element or any ancestor, and left unset the outline is exactly the
331
- `--lr-border-width-thin` it always was.
336
+ `--lr-border-width-thin` it always was. `--lr-chart-canvas-hover-outline-color` (default
337
+ `var(--lr-chart-grid-color)`) independently controls that outline's color.
332
338
 
333
339
  `--lr-chart-pattern-step` (default `var(--lr-space-2xs)`) is the tile size of the texture painted on
334
340
  `[part="legend-swatch"]` while `forced-colors: active` matches — the legend half of the non-colour
@@ -39,7 +39,8 @@ reveals the invalid state, and `form.reset()` clears the touched presentation.
39
39
  - `minRows: number = 1` (attribute `min-rows`) — floored to `1` at render time
40
40
  - `maxRows: number = 8` (attribute `max-rows`) — floored to at least `minRows`
41
41
  - `status: ChatComposerStatus = 'idle'` (reflected) — `'idle' | 'sending' | 'streaming'`; drives the
42
- built-in button's icon/label (send vs. stop) and whether Enter still submits
42
+ built-in button's icon/label (send vs. stop) and whether Enter still submits. Invalid direct or
43
+ attribute values normalize and reflect as `idle`.
43
44
  - `frame: ChatComposerFrame = 'card'` (reflected) — container treatment, in the library-wide `frame`
44
45
  vocabulary (`'card' | 'plain'`; `ChatComposerFrame` is an alias of the shared `LyraFrame`).
45
46
  `'plain'` drops `[part="base"]`'s border, background, padding and corner radius so a composer
@@ -130,7 +130,7 @@ Plus shared tokens otherwise.
130
130
  **Known gotchas:**
131
131
 
132
132
  - `title` and `open-button` are split into two separate parts (rather than one dual-part-name
133
- element) because an exact-match `[part="..."]` CSS attribute selector as this component's own
134
- tests use — cannot match a multi-token `part` attribute value.
133
+ element) because an exact-match `[part="..."]` CSS attribute selector cannot match a multi-token
134
+ `part` attribute value.
135
135
 
136
136
  ---
@@ -56,7 +56,8 @@ toggle, the loading-skeleton behavior while the fine-grained highlighter resolve
56
56
  numbers for highlighted and plain output.
57
57
  - `highlightLines: string = ''` (attribute `highlight-lines`) — comma-separated 1-based inclusive
58
58
  line ranges (e.g. `"3-5,7"`) to visually emphasize. Declarative sugar over `highlights` — merges
59
- with, and renders identically to, any `line-range` entries there.
59
+ with, and renders identically to, any `line-range` entries there. Malformed segments are ignored
60
+ while valid segments still apply.
60
61
  - `activatableLines: boolean = false` (attribute `activatable-lines`) — turns the
61
62
  (`lineNumbers`-gated) gutter into a roving-tabindex group of buttons emitting `lr-line-activate`.
62
63
  Has no effect while `lineNumbers` is unset. If controlled `code` shrinks while a line owns
@@ -70,8 +71,8 @@ toggle, the loading-skeleton behavior while the fine-grained highlighter resolve
70
71
  - `languages: Record<string, ShikiLanguageInput> = {}` (attribute: false) — grammar definitions this
71
72
  instance can highlight, e.g. `{ json: jsonGrammar }` (import from `shiki/langs/<name>.mjs`). Empty
72
73
  (the default) never highlights at all — every `language` renders the plain-text fallback.
73
- Replacing the map while connected starts a new loading generation; an older map that settles
74
- later cannot clear the current map's loading state or replace its highlighted output. For a
74
+ If `languages` changes while highlighting is loading, only results for the current map can update
75
+ the displayed code. For a
75
76
  TypeScript annotation, use `import type { ShikiLanguageInput } from
76
77
  '@aceshooting/lyra-ui/components/conversation/code-block/code-block-core.js'`; the type-only
77
78
  granular import emits no registration side effect.
@@ -80,7 +81,6 @@ toggle, the loading-skeleton behavior while the fine-grained highlighter resolve
80
81
  resolving to one) by scrolling its start line into view within `[part="body"]`; resolves `false`
81
82
  when the anchor isn't a `line-range`, the id isn't found, or the start line is out of bounds.
82
83
  `refreshTheme(): void` re-reads the resolved theme for syntax highlighting.
83
- `refreshTheme(): void` re-reads the resolved theme for syntax highlighting.
84
84
  Identical behavior to `<lr-code-block>`'s own method.
85
85
 
86
86
  **Events:** the same fulfilled-only `lr-copy`, generic `lr-error`, full `lr-copy-error`, cancelable
@@ -17,8 +17,8 @@
17
17
  ## `lr-code-block`
18
18
 
19
19
  Fenced code display with optional lazy syntax highlighting and a copy button. First-party invention
20
- (no Web Awesome equivalent). It lazy-loads the optional peer dependency `shiki` (see
21
- `code-loader.ts`) for the actual tokenizing, and includes a compact GreyCat/GCL grammar because
20
+ (no Web Awesome equivalent). It lazily loads the optional `shiki` peer for syntax highlighting and
21
+ includes a compact GreyCat/GCL grammar because
22
22
  Shiki does not bundle one. It falls back to a plain `<pre><code>` when that peer isn't installed or
23
23
  `language` is unset/unrecognized. That
24
24
  fallback is the _default_ rendering path, not a degraded one: unhighlighted code is perfectly usable,
@@ -49,7 +49,8 @@ and it's what every instance renders at zero extra bytes until shiki resolves.
49
49
  numbers for both highlighted output and the plain-text fallback
50
50
  - `highlightLines: string = ''` (attribute `highlight-lines`) — comma-separated 1-based inclusive
51
51
  line ranges (e.g. `"3-5,7"`) to visually emphasize. Declarative sugar over `highlights` — merges
52
- with, and renders identically to, any `line-range` entries there.
52
+ with, and renders identically to, any `line-range` entries there. Malformed segments are ignored
53
+ while valid segments still apply.
53
54
  - `activatableLines: boolean = false` (attribute `activatable-lines`) — turns the
54
55
  (`lineNumbers`-gated) gutter into a roving-tabindex group of buttons emitting `lr-line-activate`.
55
56
  Has no effect while `lineNumbers` is unset. If controlled `code` shrinks while a line owns
@@ -128,14 +129,10 @@ so it inherits: set it on the element, on an ancestor, or at the theme level.
128
129
  `:host` declaration) so it inherits, retinting just the highlighted-line background and leaving every
129
130
  other `--lr-color-warning-quiet` surface alone.
130
131
 
131
- **Optional peer deps:** `shiki` (lazy-loaded and cached once per page by `code-loader.ts`'s
132
- `loadShikiHighlighter()`, which builds a single `Highlighter` seeded with the bundled `github-light`/
133
- `github-dark` "dual themes" and _zero_ language grammars up front; each `language` a
134
- `<lr-code-block>` actually requests is loaded incrementally on first use via
135
- `loadShikiLanguage()`, and a language id that fails to load once is remembered and never retried. If
136
- `shiki` isn't installed, `loadShikiHighlighter()` resolves to `null` with a one-time `console.warn`
137
- and every instance falls back to plain text — install it with `pnpm add shiki` to enable
138
- highlighting).
132
+ **Optional peer deps:** `shiki` requested only when syntax highlighting is used and shared by
133
+ code blocks on a page. Languages load on demand. If the peer or requested language is unavailable,
134
+ every instance retains a readable plain-text fallback; install it with `pnpm add shiki` to enable
135
+ highlighting.
139
136
 
140
137
  ```ts
141
138
  import { html } from "lit";
@@ -174,9 +171,8 @@ one deliberate exception to every other color being a `--lr-*` token.
174
171
 
175
172
  - `copyable` defaults to `true` and reflects — literal `copyable="false"` and a `.copyable=${false}`
176
173
  property binding both disable it; a `?copyable=${false}` boolean-attribute binding does not.
177
- - an in-flight per-language grammar load is guarded by an internal token so a `code`/`language` change
178
- that arrives before a previous load resolves never applies a stale result — only the load matching
179
- the _current_ `language` is ever rendered.
174
+ - if `code` or `language` changes while highlighting is loading, only the result matching the
175
+ current values is rendered.
180
176
  - a malformed `code`/`language` combination that makes shiki's `codeToHtml()` throw falls back to
181
177
  plain text silently, not a blank code block.
182
178
  - the "Copied!" label appears only after clipboard fulfillment and reverts to "Copy" after 1500ms.
@@ -70,6 +70,8 @@ optional line-number gutter. No syntax highlighting: `language` is metadata only
70
70
  emitting an event), and `scrollPosition()` / `scrollPosition({top?,left?})`. The `input` getter
71
71
  returns the owned native textarea after render. `selectionStart`, `selectionEnd`, and
72
72
  `selectionDirection` use native nullable sentinels before that surface exists.
73
+ `scrollPosition()` reads or writes `[part="editor"]`'s top/left offsets: the gutter and caret share
74
+ that single scroll owner rather than a private textarea scroll position.
73
75
  The native textarea receives the actual `required` state. Its `aria-invalid` is true whenever
74
76
  visible property/slotted error chrome exists, or after interaction while native validity fails;
75
77
  showing error chrome alone does not mutate `ElementInternals` validity.
@@ -54,7 +54,10 @@ positioning opinion of its own.
54
54
  **Methods:** `focus(options?)`, `blur()` and `click()` forward to the active built-in or custom
55
55
  trigger. `getToolbarActions(): readonly LyraToolbarAction[]` implements the public logical-toolbar
56
56
  provider protocol with one stable action whose id is `copy`; its focus, roving tab index, disabled
57
- state, and composed-event matching follow the active trigger without exposing that node.
57
+ state, and composed-event matching follow the active trigger without exposing that node. Its
58
+ `releaseTabIndex()` action method lets a parent stop managing its tab index on disconnect, adoption,
59
+ trigger replacement, and parent departure: an untouched author-supplied `tabindex` is restored,
60
+ while a newer author change is never overwritten.
58
61
 
59
62
  **Events:**
60
63
 
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 47 parts, 21 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 47 parts, 27 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -236,7 +236,16 @@ body-cell text, `--lr-data-grid-cell-link-color` (default `var(--lr-color-brand)
236
236
  anchors, and `--lr-data-grid-cell-link-hover-color` (default
237
237
  `var(--lr-data-grid-cell-link-color, var(--lr-color-brand))`) controls those anchors on hover,
238
238
  focus-visible, and active interaction. Set the link color to `revert` to restore the user-agent
239
- default.
239
+ default. Six independent interaction-background hooks preserve those state boundaries:
240
+ `--lr-data-grid-control-hover-background` and `--lr-data-grid-control-active-background` theme
241
+ search, toolbar, pager, and resize controls; `--lr-data-grid-page-size-active-background` themes
242
+ the page-size selector when pressed; `--lr-data-grid-row-active-background` themes pressed data
243
+ rows; and `--lr-data-grid-sortable-header-hover-background` and
244
+ `--lr-data-grid-sortable-header-active-background` theme sortable header states. They default to
245
+ live `color-mix()` values of the effective grid accent and transparent, using the corresponding
246
+ `--lr-color-mix-hover` or `--lr-color-mix-active` token (the page-size pressed state intentionally
247
+ uses the hover mix), so an accent override remains coherent while each surface can still be
248
+ overridden independently.
240
249
 
241
250
  ```html
242
251
  <lr-data-grid
@@ -388,6 +388,10 @@ and `dateTimeFormat(locale, options)`.
388
388
  currently-selected paint for a `presets` quick-range button. Defaults are
389
389
  `var(--lr-color-brand-quiet)`, that hover colour mixed by `--lr-color-mix-active`, and
390
390
  `var(--lr-color-brand)` respectively.
391
+ - `--lr-date-picker-preset-selected-border` (default `var(--lr-color-brand)`) and
392
+ `--lr-date-picker-preset-selected-color` (default `var(--lr-color-on-brand)`) independently
393
+ theme a selected preset's border and foreground; the selected background token controls only its
394
+ background.
391
395
  - `--lr-date-picker-title-hover-color`, `--lr-date-picker-title-active-color`,
392
396
  `--lr-date-picker-title-active-bg`, and `--lr-date-picker-title-active-radius` — Month-title
393
397
  hover/press paint and pressed shape; defaults to brand, brand, brand-quiet, and
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 38 parts, 30 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 38 parts, 32 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Documented with** `lr-date-input` (same section below)
14
14
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
15
15
 
@@ -388,6 +388,10 @@ and `dateTimeFormat(locale, options)`.
388
388
  currently-selected paint for a `presets` quick-range button. Defaults are
389
389
  `var(--lr-color-brand-quiet)`, that hover colour mixed by `--lr-color-mix-active`, and
390
390
  `var(--lr-color-brand)` respectively.
391
+ - `--lr-date-picker-preset-selected-border` (default `var(--lr-color-brand)`) and
392
+ `--lr-date-picker-preset-selected-color` (default `var(--lr-color-on-brand)`) independently
393
+ theme a selected preset's border and foreground; the selected background token controls only its
394
+ background.
391
395
  - `--lr-date-picker-title-hover-color`, `--lr-date-picker-title-active-color`,
392
396
  `--lr-date-picker-title-active-bg`, and `--lr-date-picker-title-active-radius` — Month-title
393
397
  hover/press paint and pressed shape; defaults to brand, brand, brand-quiet, and
@@ -141,16 +141,17 @@ from assistive technology: do not place independent links, buttons, inputs, form
141
141
  targets there. The accordion-item `icon` slot follows the same flattened-tree inert and aria-hidden
142
142
  visual contract, while the trigger button remains the sole action. Details has `summary`,
143
143
  `header-actions`, `expand-icon`, `collapse-icon`, plus default content. `header-actions` renders
144
- extra controls (e.g. a trailing "add" button) inside the `<summary>` header row the one subtree a
145
- native `<details>` keeps out of its generated content box — so they stay rendered, visible, and
146
- hit-testable while the panel is collapsed. Activating one never toggles the panel: a click whose
144
+ extra controls (e.g. a trailing "add" button) as a sibling of the private native `<details>` in the
145
+ complete header row, so they stay rendered, visible, and hit-testable while the panel is collapsed
146
+ or disabled. Activating one never toggles the panel: a click whose
147
147
  composed path crosses `[part~="header-actions"]` is exempted from disclosure activation. Its wrapper
148
148
  is hidden and reclaims layout space whenever the slot is empty.
149
149
 
150
150
  **CSS parts:** accordion exposes `base`. Accordion item exposes `base` and `accordion-item` on the
151
151
  same outer wrapper, plus `heading`, `button`, `label`, `icon`, `panel`, and `content`. Details
152
- exposes `base` and `details` on the same native `<details>` wrapper, plus `header`, `summary`,
153
- `icon`, `header-actions`, and `content`.
152
+ exposes `base` and `details` on the same outer container, plus `header`, `summary`, `icon`,
153
+ `header-actions`, and `content`. The native `<details>` is private; `content` is inside its
154
+ findable `hidden="until-found"` closed-state gate.
154
155
  The Details icon wrapper also carries Shoelace's `summary-icon` alias, so either part name styles
155
156
  the same node. `header-actions` is the wrapper around the `header-actions` slot.
156
157
 
@@ -48,6 +48,12 @@ First-party invention (no Web Awesome equivalent).
48
48
  highlighting the diff. `Infinity` relaxes this line-count ceiling, but the fixed aggregate
49
49
  character and comparison-work ceilings remain in force.
50
50
 
51
+ Grammar entries are read from own enumerable data fields into a bounded frozen map. A getter,
52
+ unreadable field, non-enumerable field, or malformed proxy branch is skipped without preventing a
53
+ later valid grammar from being used; grammar values themselves remain opaque to the component.
54
+ Non-enumerable names do not consume language slots, but every inspected name counts toward the
55
+ 20,000 structural ceiling.
56
+
51
57
  **Events:**
52
58
 
53
59
  - `lr-copy` (`detail: LyraClipboardWriteSuccess`, `{ ok: true; text: string }`) — the frozen full
@@ -28,7 +28,10 @@ is absent, it uses the localized comparison label. Dynamic host-label changes up
28
28
  - `oldVersion?: DocumentCompareVersion`, `newVersion?: DocumentCompareVersion` (attribute: false) —
29
29
  the before/after inputs. `DocumentCompareVersion` extends `DocumentRef`
30
30
  (`id`, `name`, `mimeType?`, `uri?`, `version?`) with `text?: string` for diff mode and
31
- `highlights?: LyraHighlight[]` for its own preview pane.
31
+ `highlights?: LyraHighlight[]` for its own preview pane. Each assignment becomes a frozen
32
+ snapshot: own string `id` and `name` are required or that pane is unset; valid string optional
33
+ fields are retained and other values are omitted. Its highlights use the shared snapshot too, so
34
+ mutation requires reassignment.
32
35
  - `view: 'diff' | 'side-by-side' = 'diff'` (reflected) — one inline text diff or two rendered
33
36
  preview panes. Invalid property or attribute values normalize to `diff` and repair the reflected
34
37
  attribute.
@@ -37,7 +40,8 @@ is absent, it uses the localized comparison label. Dynamic host-label changes up
37
40
  repair the reflected attribute.
38
41
  - `copyable: boolean = false` — forwards the diff copy action.
39
42
  - `language: string = ''`, `languages?: Record<string, ShikiLanguageInput>` (the latter
40
- attribute: false) — optional syntax highlighting forwarded to the diff.
43
+ attribute: false) — optional syntax highlighting forwarded to the diff. A runtime non-string
44
+ `language` is treated as `''` without coercion.
41
45
  - `syncScroll: boolean = true` (attribute `sync-scroll`) — proportionally mirrors either
42
46
  side-by-side pane's scroll fraction to the other. The true-default converter accepts the literal
43
47
  `sync-scroll="false"`.
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 18 parts, 10 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 18 parts, 12 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -82,7 +82,11 @@ image path — and the generic fallback simply omits `[part="download-link"]` en
82
82
  - `highlights: readonly LyraHighlight[] = []` (attribute: false) — display-only `region` highlights painted
83
83
  over the image-format preview; ignored for the `text`/`generic` formats. IDs are trimmed and
84
84
  required to be nonempty, with the first record retained when IDs repeat. A rectangle renders only
85
- when `x`/`y`/`width`/`height` are finite numbers and both dimensions are nonnegative.
85
+ when `x`/`y`/`width`/`height` are finite numbers and both dimensions are nonnegative. Image-region
86
+ geometry is captured when `highlights` is assigned: an invalid or accessor-backed `region` anchor
87
+ is ignored, and mutating an accepted anchor later does not move its painted region. Reassign
88
+ `highlights` to update it; the original public anchor identity remains available for
89
+ reference-based `scrollToAnchor()`.
86
90
  - `activeHighlightId: string | null = null` (attribute `active-highlight-id`) — the `highlights`
87
91
  entry, if any, currently treated as active (`data-active` on its `region-highlight`).
88
92
  - `anchorKinds: readonly LyraAnchor['kind'][] = ['region']` (this viewer's supported
@@ -144,7 +148,11 @@ every other element that read them. The tone-specific resting border and hover t
144
148
  `--lr-document-preview-highlight-accent-color`, `--lr-document-preview-highlight-success-color`,
145
149
  `--lr-document-preview-highlight-warning-color`, `--lr-document-preview-highlight-danger-color`,
146
150
  and `--lr-document-preview-highlight-neutral-color` (defaulting respectively to the matching
147
- brand/success/warning/danger/neutral color tokens). Plus shared tokens
151
+ brand/success/warning/danger/neutral color tokens). `--lr-document-preview-download-link-hover-bg`
152
+ defaults to `color-mix(in oklab, var(--lr-color-brand), var(--lr-color-mix-partner)
153
+ var(--lr-color-mix-hover))`; `--lr-document-preview-download-link-active-bg` uses the same mix with
154
+ `var(--lr-color-mix-active)`, styling the native download action's hover and pressed backgrounds.
155
+ Plus shared tokens
148
156
  `--lr-color-border`, `--lr-radius`, `--lr-color-surface`, `--lr-space-s/-m/-l/-xs`,
149
157
  `--lr-color-text`, `--lr-color-text-quiet`, `--lr-color-danger`, `--lr-color-brand`,
150
158
  `--lr-color-on-brand`, `--lr-focus-ring-width/-color/-offset`, `--lr-transition-fast`.