@aceshooting/lyra-ui 6.2.0 → 7.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 (1843) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/README.md +30 -2
  3. package/custom-elements.json +88678 -64875
  4. package/dist/ai/adapters/a2ui.d.ts +26 -0
  5. package/dist/ai/adapters/a2ui.d.ts.map +1 -0
  6. package/dist/ai/adapters/a2ui.js +46 -0
  7. package/dist/ai/adapters/a2ui.js.map +1 -0
  8. package/dist/ai/adapters/ag-ui.d.ts +28 -0
  9. package/dist/ai/adapters/ag-ui.d.ts.map +1 -0
  10. package/dist/ai/adapters/ag-ui.js +174 -0
  11. package/dist/ai/adapters/ag-ui.js.map +1 -0
  12. package/dist/ai/adapters/ai-sdk.d.ts +10 -0
  13. package/dist/ai/adapters/ai-sdk.d.ts.map +1 -0
  14. package/dist/ai/adapters/ai-sdk.js +128 -0
  15. package/dist/ai/adapters/ai-sdk.js.map +1 -0
  16. package/dist/ai/adapters/index.d.ts +4 -0
  17. package/dist/ai/adapters/index.d.ts.map +1 -0
  18. package/dist/ai/adapters/index.js +4 -0
  19. package/dist/ai/adapters/index.js.map +1 -0
  20. package/dist/ai/index.d.ts +2 -0
  21. package/dist/ai/index.d.ts.map +1 -1
  22. package/dist/ai/index.js +2 -0
  23. package/dist/ai/index.js.map +1 -1
  24. package/dist/ai/runtime.d.ts +77 -0
  25. package/dist/ai/runtime.d.ts.map +1 -0
  26. package/dist/ai/runtime.js +226 -0
  27. package/dist/ai/runtime.js.map +1 -0
  28. package/dist/ai/types.contract.js +26 -0
  29. package/dist/ai/types.contract.js.map +1 -1
  30. package/dist/ai/types.d.ts +100 -1
  31. package/dist/ai/types.d.ts.map +1 -1
  32. package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +0 -2
  33. package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts.map +1 -1
  34. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +1 -19
  35. package/dist/components/agent-tools/activity-feed/activity-feed.class.js.map +1 -1
  36. package/dist/components/agent-tools/activity-feed/activity-feed.d.ts +2 -0
  37. package/dist/components/agent-tools/activity-feed/activity-feed.d.ts.map +1 -1
  38. package/dist/components/agent-tools/activity-feed/activity-feed.js +2 -0
  39. package/dist/components/agent-tools/activity-feed/activity-feed.js.map +1 -1
  40. package/dist/components/agent-tools/activity-feed/activity-feed.styles.d.ts.map +1 -1
  41. package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +2 -0
  42. package/dist/components/agent-tools/activity-feed/activity-feed.styles.js.map +1 -1
  43. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.d.ts +4 -3
  44. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.d.ts.map +1 -1
  45. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +72 -11
  46. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js.map +1 -1
  47. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.d.ts +3 -0
  48. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.d.ts.map +1 -1
  49. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.js +3 -0
  50. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.js.map +1 -1
  51. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.styles.d.ts.map +1 -1
  52. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.styles.js +17 -0
  53. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.styles.js.map +1 -1
  54. package/dist/components/agent-tools/agent-run/agent-run.class.d.ts +4 -7
  55. package/dist/components/agent-tools/agent-run/agent-run.class.d.ts.map +1 -1
  56. package/dist/components/agent-tools/agent-run/agent-run.class.js +24 -39
  57. package/dist/components/agent-tools/agent-run/agent-run.class.js.map +1 -1
  58. package/dist/components/agent-tools/agent-run/agent-run.d.ts +6 -0
  59. package/dist/components/agent-tools/agent-run/agent-run.d.ts.map +1 -1
  60. package/dist/components/agent-tools/agent-run/agent-run.js +6 -0
  61. package/dist/components/agent-tools/agent-run/agent-run.js.map +1 -1
  62. package/dist/components/agent-tools/agent-run/agent-run.styles.d.ts.map +1 -1
  63. package/dist/components/agent-tools/agent-run/agent-run.styles.js +13 -4
  64. package/dist/components/agent-tools/agent-run/agent-run.styles.js.map +1 -1
  65. package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +0 -3
  66. package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts.map +1 -1
  67. package/dist/components/agent-tools/agent-trace/agent-trace.class.js +0 -8
  68. package/dist/components/agent-tools/agent-trace/agent-trace.class.js.map +1 -1
  69. package/dist/components/agent-tools/agent-trace/agent-trace.d.ts.map +1 -1
  70. package/dist/components/agent-tools/agent-trace/agent-trace.js +2 -2
  71. package/dist/components/agent-tools/agent-trace/agent-trace.js.map +1 -1
  72. package/dist/components/agent-tools/approval-queue/approval-queue.class.d.ts +2 -3
  73. package/dist/components/agent-tools/approval-queue/approval-queue.class.d.ts.map +1 -1
  74. package/dist/components/agent-tools/approval-queue/approval-queue.class.js +12 -7
  75. package/dist/components/agent-tools/approval-queue/approval-queue.class.js.map +1 -1
  76. package/dist/components/agent-tools/approval-queue/approval-queue.d.ts +2 -0
  77. package/dist/components/agent-tools/approval-queue/approval-queue.d.ts.map +1 -1
  78. package/dist/components/agent-tools/approval-queue/approval-queue.js +2 -0
  79. package/dist/components/agent-tools/approval-queue/approval-queue.js.map +1 -1
  80. package/dist/components/agent-tools/approval-queue/approval-queue.styles.js +1 -1
  81. package/dist/components/agent-tools/artifact-panel/artifact-panel.class.d.ts +1 -2
  82. package/dist/components/agent-tools/artifact-panel/artifact-panel.class.d.ts.map +1 -1
  83. package/dist/components/agent-tools/artifact-panel/artifact-panel.class.js +3 -6
  84. package/dist/components/agent-tools/artifact-panel/artifact-panel.class.js.map +1 -1
  85. package/dist/components/agent-tools/artifact-panel/artifact-panel.d.ts +1 -0
  86. package/dist/components/agent-tools/artifact-panel/artifact-panel.d.ts.map +1 -1
  87. package/dist/components/agent-tools/artifact-panel/artifact-panel.js +1 -0
  88. package/dist/components/agent-tools/artifact-panel/artifact-panel.js.map +1 -1
  89. package/dist/components/agent-tools/browser-frame/browser-frame.class.d.ts +16 -0
  90. package/dist/components/agent-tools/browser-frame/browser-frame.class.d.ts.map +1 -1
  91. package/dist/components/agent-tools/browser-frame/browser-frame.class.js +12 -14
  92. package/dist/components/agent-tools/browser-frame/browser-frame.class.js.map +1 -1
  93. package/dist/components/agent-tools/browser-frame/browser-frame.styles.d.ts.map +1 -1
  94. package/dist/components/agent-tools/browser-frame/browser-frame.styles.js +17 -6
  95. package/dist/components/agent-tools/browser-frame/browser-frame.styles.js.map +1 -1
  96. package/dist/components/agent-tools/commit-card/commit-card.class.d.ts.map +1 -1
  97. package/dist/components/agent-tools/commit-card/commit-card.class.js +1 -15
  98. package/dist/components/agent-tools/commit-card/commit-card.class.js.map +1 -1
  99. package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts +1 -2
  100. package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts.map +1 -1
  101. package/dist/components/agent-tools/compare-panel/compare-panel.class.js +6 -4
  102. package/dist/components/agent-tools/compare-panel/compare-panel.class.js.map +1 -1
  103. package/dist/components/agent-tools/compare-panel/compare-panel.d.ts.map +1 -1
  104. package/dist/components/agent-tools/compare-panel/compare-panel.js +1 -1
  105. package/dist/components/agent-tools/compare-panel/compare-panel.js.map +1 -1
  106. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.d.ts.map +1 -1
  107. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +13 -3
  108. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js.map +1 -1
  109. package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.js +3 -3
  110. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.d.ts +0 -5
  111. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.d.ts.map +1 -1
  112. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +23 -8
  113. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js.map +1 -1
  114. package/dist/components/agent-tools/eval-dataset/eval-dataset.d.ts.map +1 -1
  115. package/dist/components/agent-tools/eval-dataset/eval-dataset.js +2 -2
  116. package/dist/components/agent-tools/eval-dataset/eval-dataset.js.map +1 -1
  117. package/dist/components/agent-tools/eval-dataset/eval-dataset.styles.d.ts.map +1 -1
  118. package/dist/components/agent-tools/eval-dataset/eval-dataset.styles.js +7 -0
  119. package/dist/components/agent-tools/eval-dataset/eval-dataset.styles.js.map +1 -1
  120. package/dist/components/agent-tools/eval-result/eval-result.class.d.ts.map +1 -1
  121. package/dist/components/agent-tools/eval-result/eval-result.class.js +20 -5
  122. package/dist/components/agent-tools/eval-result/eval-result.class.js.map +1 -1
  123. package/dist/components/agent-tools/eval-result/eval-result.styles.d.ts.map +1 -1
  124. package/dist/components/agent-tools/eval-result/eval-result.styles.js +7 -0
  125. package/dist/components/agent-tools/eval-result/eval-result.styles.js.map +1 -1
  126. package/dist/components/agent-tools/evaluation-run/evaluation-run.class.d.ts +0 -9
  127. package/dist/components/agent-tools/evaluation-run/evaluation-run.class.d.ts.map +1 -1
  128. package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +20 -20
  129. package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js.map +1 -1
  130. package/dist/components/agent-tools/evaluation-run/evaluation-run.d.ts +9 -0
  131. package/dist/components/agent-tools/evaluation-run/evaluation-run.d.ts.map +1 -1
  132. package/dist/components/agent-tools/evaluation-run/evaluation-run.js +9 -0
  133. package/dist/components/agent-tools/evaluation-run/evaluation-run.js.map +1 -1
  134. package/dist/components/agent-tools/evaluation-run/evaluation-run.styles.d.ts.map +1 -1
  135. package/dist/components/agent-tools/evaluation-run/evaluation-run.styles.js +6 -2
  136. package/dist/components/agent-tools/evaluation-run/evaluation-run.styles.js.map +1 -1
  137. package/dist/components/agent-tools/index.d.ts +36 -0
  138. package/dist/components/agent-tools/index.d.ts.map +1 -0
  139. package/dist/components/agent-tools/index.js +36 -0
  140. package/dist/components/agent-tools/index.js.map +1 -0
  141. package/dist/components/agent-tools/mcp-app/mcp-app.class.d.ts +93 -0
  142. package/dist/components/agent-tools/mcp-app/mcp-app.class.d.ts.map +1 -0
  143. package/dist/components/agent-tools/mcp-app/mcp-app.class.js +238 -0
  144. package/dist/components/agent-tools/mcp-app/mcp-app.class.js.map +1 -0
  145. package/dist/components/agent-tools/mcp-app/mcp-app.d.ts +2 -0
  146. package/dist/components/agent-tools/mcp-app/mcp-app.d.ts.map +1 -0
  147. package/dist/components/agent-tools/mcp-app/mcp-app.js +5 -0
  148. package/dist/components/agent-tools/mcp-app/mcp-app.js.map +1 -0
  149. package/dist/components/agent-tools/mcp-app/mcp-app.styles.d.ts +2 -0
  150. package/dist/components/agent-tools/mcp-app/mcp-app.styles.d.ts.map +1 -0
  151. package/dist/components/agent-tools/mcp-app/mcp-app.styles.js +45 -0
  152. package/dist/components/agent-tools/mcp-app/mcp-app.styles.js.map +1 -0
  153. package/dist/components/agent-tools/policy-summary/policy-summary.class.d.ts +4 -7
  154. package/dist/components/agent-tools/policy-summary/policy-summary.class.d.ts.map +1 -1
  155. package/dist/components/agent-tools/policy-summary/policy-summary.class.js +5 -8
  156. package/dist/components/agent-tools/policy-summary/policy-summary.class.js.map +1 -1
  157. package/dist/components/agent-tools/policy-summary/policy-summary.styles.d.ts.map +1 -1
  158. package/dist/components/agent-tools/policy-summary/policy-summary.styles.js +4 -1
  159. package/dist/components/agent-tools/policy-summary/policy-summary.styles.js.map +1 -1
  160. package/dist/components/agent-tools/prompt-studio/prompt-studio.class.d.ts +91 -0
  161. package/dist/components/agent-tools/prompt-studio/prompt-studio.class.d.ts.map +1 -0
  162. package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js +236 -0
  163. package/dist/components/agent-tools/prompt-studio/prompt-studio.class.js.map +1 -0
  164. package/dist/components/agent-tools/prompt-studio/prompt-studio.d.ts +2 -0
  165. package/dist/components/agent-tools/prompt-studio/prompt-studio.d.ts.map +1 -0
  166. package/dist/components/agent-tools/prompt-studio/prompt-studio.js +5 -0
  167. package/dist/components/agent-tools/prompt-studio/prompt-studio.js.map +1 -0
  168. package/dist/components/agent-tools/prompt-studio/prompt-studio.styles.d.ts +2 -0
  169. package/dist/components/agent-tools/prompt-studio/prompt-studio.styles.d.ts.map +1 -0
  170. package/dist/components/agent-tools/prompt-studio/prompt-studio.styles.js +60 -0
  171. package/dist/components/agent-tools/prompt-studio/prompt-studio.styles.js.map +1 -0
  172. package/dist/components/agent-tools/result-card/result-card.styles.d.ts.map +1 -1
  173. package/dist/components/agent-tools/result-card/result-card.styles.js +3 -1
  174. package/dist/components/agent-tools/result-card/result-card.styles.js.map +1 -1
  175. package/dist/components/agent-tools/result-card/result-field.class.d.ts.map +1 -1
  176. package/dist/components/agent-tools/result-card/result-field.class.js +3 -1
  177. package/dist/components/agent-tools/result-card/result-field.class.js.map +1 -1
  178. package/dist/components/agent-tools/result-card/result-field.styles.d.ts.map +1 -1
  179. package/dist/components/agent-tools/result-card/result-field.styles.js +3 -1
  180. package/dist/components/agent-tools/result-card/result-field.styles.js.map +1 -1
  181. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.d.ts +77 -0
  182. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.d.ts.map +1 -0
  183. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js +196 -0
  184. package/dist/components/agent-tools/schema-viewer/schema-viewer.class.js.map +1 -0
  185. package/dist/components/agent-tools/schema-viewer/schema-viewer.d.ts +4 -0
  186. package/dist/components/agent-tools/schema-viewer/schema-viewer.d.ts.map +1 -0
  187. package/dist/components/agent-tools/schema-viewer/schema-viewer.js +7 -0
  188. package/dist/components/agent-tools/schema-viewer/schema-viewer.js.map +1 -0
  189. package/dist/components/agent-tools/schema-viewer/schema-viewer.styles.d.ts +2 -0
  190. package/dist/components/agent-tools/schema-viewer/schema-viewer.styles.d.ts.map +1 -0
  191. package/dist/components/agent-tools/schema-viewer/schema-viewer.styles.js +32 -0
  192. package/dist/components/agent-tools/schema-viewer/schema-viewer.styles.js.map +1 -0
  193. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.d.ts +2 -0
  194. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.d.ts.map +1 -1
  195. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +41 -14
  196. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js.map +1 -1
  197. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.d.ts.map +1 -1
  198. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +1 -0
  199. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js.map +1 -1
  200. package/dist/components/agent-tools/stack-trace/stack-trace-parse.d.ts.map +1 -1
  201. package/dist/components/agent-tools/stack-trace/stack-trace-parse.js +10 -1
  202. package/dist/components/agent-tools/stack-trace/stack-trace-parse.js.map +1 -1
  203. package/dist/components/agent-tools/stack-trace/stack-trace.class.d.ts +2 -2
  204. package/dist/components/agent-tools/stack-trace/stack-trace.class.d.ts.map +1 -1
  205. package/dist/components/agent-tools/stack-trace/stack-trace.class.js +15 -26
  206. package/dist/components/agent-tools/stack-trace/stack-trace.class.js.map +1 -1
  207. package/dist/components/agent-tools/subagent-panel/subagent-panel.class.d.ts +72 -0
  208. package/dist/components/agent-tools/subagent-panel/subagent-panel.class.d.ts.map +1 -0
  209. package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +213 -0
  210. package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js.map +1 -0
  211. package/dist/components/agent-tools/subagent-panel/subagent-panel.d.ts +4 -0
  212. package/dist/components/agent-tools/subagent-panel/subagent-panel.d.ts.map +1 -0
  213. package/dist/components/agent-tools/subagent-panel/subagent-panel.js +7 -0
  214. package/dist/components/agent-tools/subagent-panel/subagent-panel.js.map +1 -0
  215. package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.d.ts +2 -0
  216. package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.d.ts.map +1 -0
  217. package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +38 -0
  218. package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js.map +1 -0
  219. package/dist/components/agent-tools/task-list/task-list.class.d.ts +11 -2
  220. package/dist/components/agent-tools/task-list/task-list.class.d.ts.map +1 -1
  221. package/dist/components/agent-tools/task-list/task-list.class.js +3 -10
  222. package/dist/components/agent-tools/task-list/task-list.class.js.map +1 -1
  223. package/dist/components/agent-tools/task-list/task-list.d.ts +1 -0
  224. package/dist/components/agent-tools/task-list/task-list.d.ts.map +1 -1
  225. package/dist/components/agent-tools/task-list/task-list.js +1 -0
  226. package/dist/components/agent-tools/task-list/task-list.js.map +1 -1
  227. package/dist/components/agent-tools/task-list/task-list.styles.js +1 -1
  228. package/dist/components/agent-tools/terminal/terminal.class.d.ts +5 -1
  229. package/dist/components/agent-tools/terminal/terminal.class.d.ts.map +1 -1
  230. package/dist/components/agent-tools/terminal/terminal.class.js +45 -24
  231. package/dist/components/agent-tools/terminal/terminal.class.js.map +1 -1
  232. package/dist/components/agent-tools/terminal/terminal.d.ts +1 -0
  233. package/dist/components/agent-tools/terminal/terminal.d.ts.map +1 -1
  234. package/dist/components/agent-tools/terminal/terminal.js +1 -0
  235. package/dist/components/agent-tools/terminal/terminal.js.map +1 -1
  236. package/dist/components/agent-tools/terminal/terminal.styles.d.ts.map +1 -1
  237. package/dist/components/agent-tools/terminal/terminal.styles.js +3 -0
  238. package/dist/components/agent-tools/terminal/terminal.styles.js.map +1 -1
  239. package/dist/components/agent-tools/test-results/test-results.class.d.ts +1 -3
  240. package/dist/components/agent-tools/test-results/test-results.class.d.ts.map +1 -1
  241. package/dist/components/agent-tools/test-results/test-results.class.js +22 -37
  242. package/dist/components/agent-tools/test-results/test-results.class.js.map +1 -1
  243. package/dist/components/agent-tools/test-results/test-results.d.ts +3 -0
  244. package/dist/components/agent-tools/test-results/test-results.d.ts.map +1 -1
  245. package/dist/components/agent-tools/test-results/test-results.js +3 -0
  246. package/dist/components/agent-tools/test-results/test-results.js.map +1 -1
  247. package/dist/components/agent-tools/test-results/test-results.styles.d.ts.map +1 -1
  248. package/dist/components/agent-tools/test-results/test-results.styles.js +2 -0
  249. package/dist/components/agent-tools/test-results/test-results.styles.js.map +1 -1
  250. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts.map +1 -1
  251. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js +7 -3
  252. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js.map +1 -1
  253. package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.d.ts.map +1 -1
  254. package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +6 -2
  255. package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js.map +1 -1
  256. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts.map +1 -1
  257. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +18 -29
  258. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js.map +1 -1
  259. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.d.ts.map +1 -1
  260. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.js +5 -0
  261. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.js.map +1 -1
  262. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +2 -1
  263. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts.map +1 -1
  264. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +10 -4
  265. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js.map +1 -1
  266. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.styles.js +1 -1
  267. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.d.ts +7 -0
  268. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.d.ts.map +1 -1
  269. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +24 -16
  270. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js.map +1 -1
  271. package/dist/components/agent-tools/tool-param-form/tool-param-form.styles.d.ts.map +1 -1
  272. package/dist/components/agent-tools/tool-param-form/tool-param-form.styles.js +3 -0
  273. package/dist/components/agent-tools/tool-param-form/tool-param-form.styles.js.map +1 -1
  274. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.d.ts +10 -1
  275. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.d.ts.map +1 -1
  276. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +18 -4
  277. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js.map +1 -1
  278. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.d.ts.map +1 -1
  279. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +17 -9
  280. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js.map +1 -1
  281. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts.map +1 -1
  282. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -0
  283. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js.map +1 -1
  284. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts +3 -0
  285. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts.map +1 -1
  286. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +29 -24
  287. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js.map +1 -1
  288. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.styles.d.ts.map +1 -1
  289. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.styles.js +6 -3
  290. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.styles.js.map +1 -1
  291. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +12 -5
  292. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts.map +1 -1
  293. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +60 -37
  294. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js.map +1 -1
  295. package/dist/components/agent-tools/tool-timeline/tool-timeline.d.ts +4 -0
  296. package/dist/components/agent-tools/tool-timeline/tool-timeline.d.ts.map +1 -1
  297. package/dist/components/agent-tools/tool-timeline/tool-timeline.js +4 -0
  298. package/dist/components/agent-tools/tool-timeline/tool-timeline.js.map +1 -1
  299. package/dist/components/agent-tools/tool-timeline/tool-timeline.styles.d.ts.map +1 -1
  300. package/dist/components/agent-tools/tool-timeline/tool-timeline.styles.js +12 -8
  301. package/dist/components/agent-tools/tool-timeline/tool-timeline.styles.js.map +1 -1
  302. package/dist/components/agent-tools/trace-tree/trace-tree.class.d.ts +14 -1
  303. package/dist/components/agent-tools/trace-tree/trace-tree.class.d.ts.map +1 -1
  304. package/dist/components/agent-tools/trace-tree/trace-tree.class.js +164 -51
  305. package/dist/components/agent-tools/trace-tree/trace-tree.class.js.map +1 -1
  306. package/dist/components/agent-tools/trace-tree/trace-tree.styles.d.ts.map +1 -1
  307. package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +111 -24
  308. package/dist/components/agent-tools/trace-tree/trace-tree.styles.js.map +1 -1
  309. package/dist/components/charts/chart/box-plot.class.d.ts +3 -0
  310. package/dist/components/charts/chart/box-plot.class.d.ts.map +1 -1
  311. package/dist/components/charts/chart/box-plot.class.js +57 -32
  312. package/dist/components/charts/chart/box-plot.class.js.map +1 -1
  313. package/dist/components/charts/chart/box-plot.styles.d.ts.map +1 -1
  314. package/dist/components/charts/chart/box-plot.styles.js +7 -0
  315. package/dist/components/charts/chart/box-plot.styles.js.map +1 -1
  316. package/dist/components/charts/chart/chart-colors.d.ts +17 -0
  317. package/dist/components/charts/chart/chart-colors.d.ts.map +1 -0
  318. package/dist/components/charts/chart/chart-colors.js +77 -0
  319. package/dist/components/charts/chart/chart-colors.js.map +1 -0
  320. package/dist/components/charts/chart/chart.class.d.ts +20 -8
  321. package/dist/components/charts/chart/chart.class.d.ts.map +1 -1
  322. package/dist/components/charts/chart/chart.class.js +188 -72
  323. package/dist/components/charts/chart/chart.class.js.map +1 -1
  324. package/dist/components/charts/chart/chart.styles.d.ts.map +1 -1
  325. package/dist/components/charts/chart/chart.styles.js +28 -0
  326. package/dist/components/charts/chart/chart.styles.js.map +1 -1
  327. package/dist/components/charts/chart/histogram-bin.d.ts +3 -2
  328. package/dist/components/charts/chart/histogram-bin.d.ts.map +1 -1
  329. package/dist/components/charts/chart/histogram-bin.js +17 -3
  330. package/dist/components/charts/chart/histogram-bin.js.map +1 -1
  331. package/dist/components/charts/chart/histogram.class.d.ts.map +1 -1
  332. package/dist/components/charts/chart/histogram.class.js +7 -3
  333. package/dist/components/charts/chart/histogram.class.js.map +1 -1
  334. package/dist/components/charts/chart/lite-chart.class.d.ts +18 -15
  335. package/dist/components/charts/chart/lite-chart.class.d.ts.map +1 -1
  336. package/dist/components/charts/chart/lite-chart.class.js +240 -97
  337. package/dist/components/charts/chart/lite-chart.class.js.map +1 -1
  338. package/dist/components/charts/chart/lite-chart.styles.d.ts.map +1 -1
  339. package/dist/components/charts/chart/lite-chart.styles.js +17 -1
  340. package/dist/components/charts/chart/lite-chart.styles.js.map +1 -1
  341. package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +8 -13
  342. package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts.map +1 -1
  343. package/dist/components/conversation/agent-workspace/agent-workspace.class.js +44 -44
  344. package/dist/components/conversation/agent-workspace/agent-workspace.class.js.map +1 -1
  345. package/dist/components/conversation/agent-workspace/agent-workspace.d.ts +11 -0
  346. package/dist/components/conversation/agent-workspace/agent-workspace.d.ts.map +1 -1
  347. package/dist/components/conversation/agent-workspace/agent-workspace.js +11 -0
  348. package/dist/components/conversation/agent-workspace/agent-workspace.js.map +1 -1
  349. package/dist/components/conversation/agent-workspace/agent-workspace.styles.d.ts.map +1 -1
  350. package/dist/components/conversation/agent-workspace/agent-workspace.styles.js +4 -1
  351. package/dist/components/conversation/agent-workspace/agent-workspace.styles.js.map +1 -1
  352. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts.map +1 -1
  353. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +7 -5
  354. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js.map +1 -1
  355. package/dist/components/conversation/branch-picker/branch-picker.class.d.ts +3 -0
  356. package/dist/components/conversation/branch-picker/branch-picker.class.d.ts.map +1 -1
  357. package/dist/components/conversation/branch-picker/branch-picker.class.js +14 -2
  358. package/dist/components/conversation/branch-picker/branch-picker.class.js.map +1 -1
  359. package/dist/components/conversation/branch-picker/branch-picker.styles.d.ts.map +1 -1
  360. package/dist/components/conversation/branch-picker/branch-picker.styles.js +2 -0
  361. package/dist/components/conversation/branch-picker/branch-picker.styles.js.map +1 -1
  362. package/dist/components/conversation/chat-composer/chat-composer.class.d.ts +2 -16
  363. package/dist/components/conversation/chat-composer/chat-composer.class.d.ts.map +1 -1
  364. package/dist/components/conversation/chat-composer/chat-composer.class.js +6 -38
  365. package/dist/components/conversation/chat-composer/chat-composer.class.js.map +1 -1
  366. package/dist/components/conversation/chat-message/chat-message.class.d.ts +11 -0
  367. package/dist/components/conversation/chat-message/chat-message.class.d.ts.map +1 -1
  368. package/dist/components/conversation/chat-message/chat-message.class.js +16 -4
  369. package/dist/components/conversation/chat-message/chat-message.class.js.map +1 -1
  370. package/dist/components/conversation/chat-message/chat-message.styles.d.ts.map +1 -1
  371. package/dist/components/conversation/chat-message/chat-message.styles.js +22 -11
  372. package/dist/components/conversation/chat-message/chat-message.styles.js.map +1 -1
  373. package/dist/components/conversation/chat-viewport/chat-viewport.class.d.ts +3 -7
  374. package/dist/components/conversation/chat-viewport/chat-viewport.class.d.ts.map +1 -1
  375. package/dist/components/conversation/chat-viewport/chat-viewport.class.js +9 -28
  376. package/dist/components/conversation/chat-viewport/chat-viewport.class.js.map +1 -1
  377. package/dist/components/conversation/checkpoint/checkpoint.class.d.ts +7 -2
  378. package/dist/components/conversation/checkpoint/checkpoint.class.d.ts.map +1 -1
  379. package/dist/components/conversation/checkpoint/checkpoint.class.js +4 -11
  380. package/dist/components/conversation/checkpoint/checkpoint.class.js.map +1 -1
  381. package/dist/components/conversation/checkpoint/checkpoint.styles.js +1 -1
  382. package/dist/components/conversation/code-block/code-block-core.class.d.ts +5 -6
  383. package/dist/components/conversation/code-block/code-block-core.class.d.ts.map +1 -1
  384. package/dist/components/conversation/code-block/code-block-core.class.js +51 -20
  385. package/dist/components/conversation/code-block/code-block-core.class.js.map +1 -1
  386. package/dist/components/conversation/code-block/code-block-shared.d.ts +5 -1
  387. package/dist/components/conversation/code-block/code-block-shared.d.ts.map +1 -1
  388. package/dist/components/conversation/code-block/code-block-shared.js +22 -6
  389. package/dist/components/conversation/code-block/code-block-shared.js.map +1 -1
  390. package/dist/components/conversation/code-block/code-block.class.d.ts +7 -6
  391. package/dist/components/conversation/code-block/code-block.class.d.ts.map +1 -1
  392. package/dist/components/conversation/code-block/code-block.class.js +65 -29
  393. package/dist/components/conversation/code-block/code-block.class.js.map +1 -1
  394. package/dist/components/conversation/code-block/code-block.styles.d.ts.map +1 -1
  395. package/dist/components/conversation/code-block/code-block.styles.js +12 -4
  396. package/dist/components/conversation/code-block/code-block.styles.js.map +1 -1
  397. package/dist/components/conversation/conversation-item/conversation-item.class.d.ts +3 -0
  398. package/dist/components/conversation/conversation-item/conversation-item.class.d.ts.map +1 -1
  399. package/dist/components/conversation/conversation-item/conversation-item.class.js +44 -46
  400. package/dist/components/conversation/conversation-item/conversation-item.class.js.map +1 -1
  401. package/dist/components/conversation/generation-status/generation-status.class.d.ts.map +1 -1
  402. package/dist/components/conversation/generation-status/generation-status.class.js +8 -0
  403. package/dist/components/conversation/generation-status/generation-status.class.js.map +1 -1
  404. package/dist/components/conversation/generation-status/generation-status.styles.d.ts.map +1 -1
  405. package/dist/components/conversation/generation-status/generation-status.styles.js +4 -1
  406. package/dist/components/conversation/generation-status/generation-status.styles.js.map +1 -1
  407. package/dist/components/conversation/handoff-divider/handoff-divider.class.d.ts +0 -1
  408. package/dist/components/conversation/handoff-divider/handoff-divider.class.d.ts.map +1 -1
  409. package/dist/components/conversation/handoff-divider/handoff-divider.class.js +1 -2
  410. package/dist/components/conversation/handoff-divider/handoff-divider.class.js.map +1 -1
  411. package/dist/components/conversation/handoff-divider/handoff-divider.d.ts +1 -0
  412. package/dist/components/conversation/handoff-divider/handoff-divider.d.ts.map +1 -1
  413. package/dist/components/conversation/handoff-divider/handoff-divider.js +1 -0
  414. package/dist/components/conversation/handoff-divider/handoff-divider.js.map +1 -1
  415. package/dist/components/conversation/index.d.ts +36 -0
  416. package/dist/components/conversation/index.d.ts.map +1 -0
  417. package/dist/components/conversation/index.js +34 -0
  418. package/dist/components/conversation/index.js.map +1 -0
  419. package/dist/components/conversation/markdown/markdown-core.class.d.ts +13 -0
  420. package/dist/components/conversation/markdown/markdown-core.class.d.ts.map +1 -1
  421. package/dist/components/conversation/markdown/markdown-core.class.js +30 -17
  422. package/dist/components/conversation/markdown/markdown-core.class.js.map +1 -1
  423. package/dist/components/conversation/markdown/markdown-shared.js +1 -1
  424. package/dist/components/conversation/markdown/markdown-shared.js.map +1 -1
  425. package/dist/components/conversation/markdown/markdown.class.d.ts +13 -0
  426. package/dist/components/conversation/markdown/markdown.class.d.ts.map +1 -1
  427. package/dist/components/conversation/markdown/markdown.class.js +35 -14
  428. package/dist/components/conversation/markdown/markdown.class.js.map +1 -1
  429. package/dist/components/conversation/markdown/markdown.styles.d.ts.map +1 -1
  430. package/dist/components/conversation/markdown/markdown.styles.js +20 -13
  431. package/dist/components/conversation/markdown/markdown.styles.js.map +1 -1
  432. package/dist/components/conversation/message-actions/message-actions.class.d.ts +2 -0
  433. package/dist/components/conversation/message-actions/message-actions.class.d.ts.map +1 -1
  434. package/dist/components/conversation/message-actions/message-actions.class.js +32 -4
  435. package/dist/components/conversation/message-actions/message-actions.class.js.map +1 -1
  436. package/dist/components/conversation/message-actions/message-actions.styles.d.ts.map +1 -1
  437. package/dist/components/conversation/message-actions/message-actions.styles.js +0 -9
  438. package/dist/components/conversation/message-actions/message-actions.styles.js.map +1 -1
  439. package/dist/components/conversation/message-feedback/message-feedback.class.d.ts +2 -2
  440. package/dist/components/conversation/message-feedback/message-feedback.class.d.ts.map +1 -1
  441. package/dist/components/conversation/message-feedback/message-feedback.class.js +17 -3
  442. package/dist/components/conversation/message-feedback/message-feedback.class.js.map +1 -1
  443. package/dist/components/conversation/message-feedback/message-feedback.d.ts +2 -0
  444. package/dist/components/conversation/message-feedback/message-feedback.d.ts.map +1 -1
  445. package/dist/components/conversation/message-feedback/message-feedback.js +2 -0
  446. package/dist/components/conversation/message-feedback/message-feedback.js.map +1 -1
  447. package/dist/components/conversation/message-feedback/message-feedback.styles.d.ts.map +1 -1
  448. package/dist/components/conversation/message-feedback/message-feedback.styles.js +16 -5
  449. package/dist/components/conversation/message-feedback/message-feedback.styles.js.map +1 -1
  450. package/dist/components/conversation/message-parts/message-parts.class.d.ts +91 -0
  451. package/dist/components/conversation/message-parts/message-parts.class.d.ts.map +1 -0
  452. package/dist/components/conversation/message-parts/message-parts.class.js +230 -0
  453. package/dist/components/conversation/message-parts/message-parts.class.js.map +1 -0
  454. package/dist/components/conversation/message-parts/message-parts.d.ts +11 -0
  455. package/dist/components/conversation/message-parts/message-parts.d.ts.map +1 -0
  456. package/dist/components/conversation/message-parts/message-parts.js +14 -0
  457. package/dist/components/conversation/message-parts/message-parts.js.map +1 -0
  458. package/dist/components/conversation/message-parts/message-parts.styles.d.ts +2 -0
  459. package/dist/components/conversation/message-parts/message-parts.styles.d.ts.map +1 -0
  460. package/dist/components/conversation/message-parts/message-parts.styles.js +67 -0
  461. package/dist/components/conversation/message-parts/message-parts.styles.js.map +1 -0
  462. package/dist/components/conversation/model-select/model-select.class.d.ts +1 -1
  463. package/dist/components/conversation/model-select/model-select.class.d.ts.map +1 -1
  464. package/dist/components/conversation/model-select/model-select.class.js +13 -34
  465. package/dist/components/conversation/model-select/model-select.class.js.map +1 -1
  466. package/dist/components/conversation/model-select/model-select.styles.d.ts.map +1 -1
  467. package/dist/components/conversation/model-select/model-select.styles.js +1 -0
  468. package/dist/components/conversation/model-select/model-select.styles.js.map +1 -1
  469. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.d.ts.map +1 -1
  470. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js +7 -2
  471. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js.map +1 -1
  472. package/dist/components/conversation/model-settings-panel/model-settings-panel.styles.js +2 -2
  473. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +148 -0
  474. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts.map +1 -0
  475. package/dist/components/conversation/prompt-input/prompt-input.class.js +375 -0
  476. package/dist/components/conversation/prompt-input/prompt-input.class.js.map +1 -0
  477. package/dist/components/conversation/prompt-input/prompt-input.d.ts +10 -0
  478. package/dist/components/conversation/prompt-input/prompt-input.d.ts.map +1 -0
  479. package/dist/components/conversation/prompt-input/prompt-input.js +13 -0
  480. package/dist/components/conversation/prompt-input/prompt-input.js.map +1 -0
  481. package/dist/components/conversation/prompt-input/prompt-input.styles.d.ts +2 -0
  482. package/dist/components/conversation/prompt-input/prompt-input.styles.d.ts.map +1 -0
  483. package/dist/components/conversation/prompt-input/prompt-input.styles.js +74 -0
  484. package/dist/components/conversation/prompt-input/prompt-input.styles.js.map +1 -0
  485. package/dist/components/conversation/prompt-queue/prompt-queue.class.d.ts +59 -0
  486. package/dist/components/conversation/prompt-queue/prompt-queue.class.d.ts.map +1 -0
  487. package/dist/components/conversation/prompt-queue/prompt-queue.class.js +145 -0
  488. package/dist/components/conversation/prompt-queue/prompt-queue.class.js.map +1 -0
  489. package/dist/components/conversation/prompt-queue/prompt-queue.d.ts +4 -0
  490. package/dist/components/conversation/prompt-queue/prompt-queue.d.ts.map +1 -0
  491. package/dist/components/conversation/prompt-queue/prompt-queue.js +7 -0
  492. package/dist/components/conversation/prompt-queue/prompt-queue.js.map +1 -0
  493. package/dist/components/conversation/prompt-queue/prompt-queue.styles.d.ts +2 -0
  494. package/dist/components/conversation/prompt-queue/prompt-queue.styles.d.ts.map +1 -0
  495. package/dist/components/conversation/prompt-queue/prompt-queue.styles.js +74 -0
  496. package/dist/components/conversation/prompt-queue/prompt-queue.styles.js.map +1 -0
  497. package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts +7 -1
  498. package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts.map +1 -1
  499. package/dist/components/conversation/push-to-talk/push-to-talk.class.js +40 -14
  500. package/dist/components/conversation/push-to-talk/push-to-talk.class.js.map +1 -1
  501. package/dist/components/conversation/push-to-talk/push-to-talk.styles.d.ts.map +1 -1
  502. package/dist/components/conversation/push-to-talk/push-to-talk.styles.js +4 -0
  503. package/dist/components/conversation/push-to-talk/push-to-talk.styles.js.map +1 -1
  504. package/dist/components/conversation/realtime-session/realtime-session.class.d.ts +66 -0
  505. package/dist/components/conversation/realtime-session/realtime-session.class.d.ts.map +1 -0
  506. package/dist/components/conversation/realtime-session/realtime-session.class.js +159 -0
  507. package/dist/components/conversation/realtime-session/realtime-session.class.js.map +1 -0
  508. package/dist/components/conversation/realtime-session/realtime-session.d.ts +6 -0
  509. package/dist/components/conversation/realtime-session/realtime-session.d.ts.map +1 -0
  510. package/dist/components/conversation/realtime-session/realtime-session.js +9 -0
  511. package/dist/components/conversation/realtime-session/realtime-session.js.map +1 -0
  512. package/dist/components/conversation/realtime-session/realtime-session.styles.d.ts +2 -0
  513. package/dist/components/conversation/realtime-session/realtime-session.styles.d.ts.map +1 -0
  514. package/dist/components/conversation/realtime-session/realtime-session.styles.js +20 -0
  515. package/dist/components/conversation/realtime-session/realtime-session.styles.js.map +1 -0
  516. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.d.ts +69 -0
  517. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.d.ts.map +1 -0
  518. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +268 -0
  519. package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js.map +1 -0
  520. package/dist/components/conversation/selection-toolbar/selection-toolbar.d.ts +3 -0
  521. package/dist/components/conversation/selection-toolbar/selection-toolbar.d.ts.map +1 -0
  522. package/dist/components/conversation/selection-toolbar/selection-toolbar.js +6 -0
  523. package/dist/components/conversation/selection-toolbar/selection-toolbar.js.map +1 -0
  524. package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.d.ts +2 -0
  525. package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.d.ts.map +1 -0
  526. package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +62 -0
  527. package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js.map +1 -0
  528. package/dist/components/conversation/stream-status/stream-status.styles.d.ts.map +1 -1
  529. package/dist/components/conversation/stream-status/stream-status.styles.js +10 -0
  530. package/dist/components/conversation/stream-status/stream-status.styles.js.map +1 -1
  531. package/dist/components/conversation/streaming-text/streaming-text.class.d.ts +1 -0
  532. package/dist/components/conversation/streaming-text/streaming-text.class.d.ts.map +1 -1
  533. package/dist/components/conversation/streaming-text/streaming-text.class.js +6 -0
  534. package/dist/components/conversation/streaming-text/streaming-text.class.js.map +1 -1
  535. package/dist/components/conversation/suggestion-chips/suggestion-chips.class.d.ts +2 -0
  536. package/dist/components/conversation/suggestion-chips/suggestion-chips.class.d.ts.map +1 -1
  537. package/dist/components/conversation/suggestion-chips/suggestion-chips.class.js +16 -1
  538. package/dist/components/conversation/suggestion-chips/suggestion-chips.class.js.map +1 -1
  539. package/dist/components/conversation/thread-list/thread-list.class.d.ts +5 -3
  540. package/dist/components/conversation/thread-list/thread-list.class.d.ts.map +1 -1
  541. package/dist/components/conversation/thread-list/thread-list.class.js +68 -40
  542. package/dist/components/conversation/thread-list/thread-list.class.js.map +1 -1
  543. package/dist/components/conversation/thread-list/thread-list.d.ts.map +1 -1
  544. package/dist/components/conversation/thread-list/thread-list.js +2 -2
  545. package/dist/components/conversation/thread-list/thread-list.js.map +1 -1
  546. package/dist/components/conversation/thread-list/thread-list.styles.d.ts.map +1 -1
  547. package/dist/components/conversation/thread-list/thread-list.styles.js +3 -0
  548. package/dist/components/conversation/thread-list/thread-list.styles.js.map +1 -1
  549. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts.map +1 -1
  550. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +14 -21
  551. package/dist/components/conversation/transcript-feed/transcript-feed.class.js.map +1 -1
  552. package/dist/components/conversation/transcript-feed/transcript-feed.styles.d.ts.map +1 -1
  553. package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +16 -1
  554. package/dist/components/conversation/transcript-feed/transcript-feed.styles.js.map +1 -1
  555. package/dist/components/conversation/usage-badge/usage-badge.class.d.ts +2 -1
  556. package/dist/components/conversation/usage-badge/usage-badge.class.d.ts.map +1 -1
  557. package/dist/components/conversation/usage-badge/usage-badge.class.js +30 -7
  558. package/dist/components/conversation/usage-badge/usage-badge.class.js.map +1 -1
  559. package/dist/components/conversation/usage-badge/usage-badge.styles.d.ts.map +1 -1
  560. package/dist/components/conversation/usage-badge/usage-badge.styles.js +21 -1
  561. package/dist/components/conversation/usage-badge/usage-badge.styles.js.map +1 -1
  562. package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +24 -2
  563. package/dist/components/conversation/voice-picker/voice-picker.class.d.ts.map +1 -1
  564. package/dist/components/conversation/voice-picker/voice-picker.class.js +97 -64
  565. package/dist/components/conversation/voice-picker/voice-picker.class.js.map +1 -1
  566. package/dist/components/conversation/voice-picker/voice-picker.styles.d.ts.map +1 -1
  567. package/dist/components/conversation/voice-picker/voice-picker.styles.js +22 -7
  568. package/dist/components/conversation/voice-picker/voice-picker.styles.js.map +1 -1
  569. package/dist/components/conversation/widget-renderer/registry.d.ts +6 -0
  570. package/dist/components/conversation/widget-renderer/registry.d.ts.map +1 -1
  571. package/dist/components/conversation/widget-renderer/registry.js.map +1 -1
  572. package/dist/components/conversation/widget-renderer/resolve.d.ts +18 -0
  573. package/dist/components/conversation/widget-renderer/resolve.d.ts.map +1 -1
  574. package/dist/components/conversation/widget-renderer/resolve.js +66 -4
  575. package/dist/components/conversation/widget-renderer/resolve.js.map +1 -1
  576. package/dist/components/conversation/widget-renderer/widget-renderer.class.d.ts +16 -1
  577. package/dist/components/conversation/widget-renderer/widget-renderer.class.d.ts.map +1 -1
  578. package/dist/components/conversation/widget-renderer/widget-renderer.class.js +70 -7
  579. package/dist/components/conversation/widget-renderer/widget-renderer.class.js.map +1 -1
  580. package/dist/components/conversation/widget-renderer/widget-renderer.styles.d.ts.map +1 -1
  581. package/dist/components/conversation/widget-renderer/widget-renderer.styles.js +6 -0
  582. package/dist/components/conversation/widget-renderer/widget-renderer.styles.js.map +1 -1
  583. package/dist/components/data/calendar/calendar.class.d.ts +3 -8
  584. package/dist/components/data/calendar/calendar.class.d.ts.map +1 -1
  585. package/dist/components/data/calendar/calendar.class.js +10 -11
  586. package/dist/components/data/calendar/calendar.class.js.map +1 -1
  587. package/dist/components/data/calendar/calendar.styles.d.ts.map +1 -1
  588. package/dist/components/data/calendar/calendar.styles.js +6 -1
  589. package/dist/components/data/calendar/calendar.styles.js.map +1 -1
  590. package/dist/components/data/context-meter/context-meter.class.d.ts +4 -3
  591. package/dist/components/data/context-meter/context-meter.class.d.ts.map +1 -1
  592. package/dist/components/data/context-meter/context-meter.class.js +34 -30
  593. package/dist/components/data/context-meter/context-meter.class.js.map +1 -1
  594. package/dist/components/data/document-library/document-library.class.d.ts +0 -7
  595. package/dist/components/data/document-library/document-library.class.d.ts.map +1 -1
  596. package/dist/components/data/document-library/document-library.class.js +15 -15
  597. package/dist/components/data/document-library/document-library.class.js.map +1 -1
  598. package/dist/components/data/env-list/env-list.class.d.ts +8 -1
  599. package/dist/components/data/env-list/env-list.class.d.ts.map +1 -1
  600. package/dist/components/data/env-list/env-list.class.js +13 -20
  601. package/dist/components/data/env-list/env-list.class.js.map +1 -1
  602. package/dist/components/data/env-list/env-list.d.ts +1 -0
  603. package/dist/components/data/env-list/env-list.d.ts.map +1 -1
  604. package/dist/components/data/env-list/env-list.js +1 -0
  605. package/dist/components/data/env-list/env-list.js.map +1 -1
  606. package/dist/components/data/env-list/env-list.styles.d.ts.map +1 -1
  607. package/dist/components/data/env-list/env-list.styles.js +3 -0
  608. package/dist/components/data/env-list/env-list.styles.js.map +1 -1
  609. package/dist/components/data/file-tree/file-tree.class.d.ts +0 -2
  610. package/dist/components/data/file-tree/file-tree.class.d.ts.map +1 -1
  611. package/dist/components/data/file-tree/file-tree.class.js +8 -8
  612. package/dist/components/data/file-tree/file-tree.class.js.map +1 -1
  613. package/dist/components/data/file-tree/file-tree.d.ts +2 -0
  614. package/dist/components/data/file-tree/file-tree.d.ts.map +1 -1
  615. package/dist/components/data/file-tree/file-tree.js +2 -0
  616. package/dist/components/data/file-tree/file-tree.js.map +1 -1
  617. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +13 -7
  618. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts.map +1 -1
  619. package/dist/components/data/flow-canvas/flow-canvas.class.js +106 -28
  620. package/dist/components/data/flow-canvas/flow-canvas.class.js.map +1 -1
  621. package/dist/components/data/flow-canvas/flow-canvas.styles.d.ts.map +1 -1
  622. package/dist/components/data/flow-canvas/flow-canvas.styles.js +22 -3
  623. package/dist/components/data/flow-canvas/flow-canvas.styles.js.map +1 -1
  624. package/dist/components/data/flow-controls/flow-controls.class.d.ts +1 -3
  625. package/dist/components/data/flow-controls/flow-controls.class.d.ts.map +1 -1
  626. package/dist/components/data/flow-controls/flow-controls.class.js +16 -16
  627. package/dist/components/data/flow-controls/flow-controls.class.js.map +1 -1
  628. package/dist/components/data/flow-minimap/flow-minimap.class.d.ts +6 -3
  629. package/dist/components/data/flow-minimap/flow-minimap.class.d.ts.map +1 -1
  630. package/dist/components/data/flow-minimap/flow-minimap.class.js +49 -15
  631. package/dist/components/data/flow-minimap/flow-minimap.class.js.map +1 -1
  632. package/dist/components/data/flow-node/flow-node.class.d.ts.map +1 -1
  633. package/dist/components/data/flow-node/flow-node.class.js +15 -4
  634. package/dist/components/data/flow-node/flow-node.class.js.map +1 -1
  635. package/dist/components/data/flow-run-overlay/flow-run-overlay.class.d.ts +3 -0
  636. package/dist/components/data/flow-run-overlay/flow-run-overlay.class.d.ts.map +1 -1
  637. package/dist/components/data/flow-run-overlay/flow-run-overlay.class.js +40 -13
  638. package/dist/components/data/flow-run-overlay/flow-run-overlay.class.js.map +1 -1
  639. package/dist/components/data/gauge/gauge.class.d.ts.map +1 -1
  640. package/dist/components/data/gauge/gauge.class.js +19 -16
  641. package/dist/components/data/gauge/gauge.class.js.map +1 -1
  642. package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +16 -0
  643. package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts.map +1 -1
  644. package/dist/components/data/graph-query-builder/graph-query-builder.class.js +119 -17
  645. package/dist/components/data/graph-query-builder/graph-query-builder.class.js.map +1 -1
  646. package/dist/components/data/graph-query-builder/graph-query-builder.styles.d.ts.map +1 -1
  647. package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +18 -0
  648. package/dist/components/data/graph-query-builder/graph-query-builder.styles.js.map +1 -1
  649. package/dist/components/data/heatmap/heatmap.class.d.ts +7 -13
  650. package/dist/components/data/heatmap/heatmap.class.d.ts.map +1 -1
  651. package/dist/components/data/heatmap/heatmap.class.js +123 -60
  652. package/dist/components/data/heatmap/heatmap.class.js.map +1 -1
  653. package/dist/components/data/heatmap/heatmap.styles.d.ts.map +1 -1
  654. package/dist/components/data/heatmap/heatmap.styles.js +2 -0
  655. package/dist/components/data/heatmap/heatmap.styles.js.map +1 -1
  656. package/dist/components/data/pagination/pagination.class.d.ts +4 -0
  657. package/dist/components/data/pagination/pagination.class.d.ts.map +1 -1
  658. package/dist/components/data/pagination/pagination.class.js +7 -0
  659. package/dist/components/data/pagination/pagination.class.js.map +1 -1
  660. package/dist/components/data/pagination/pagination.styles.d.ts.map +1 -1
  661. package/dist/components/data/pagination/pagination.styles.js +8 -6
  662. package/dist/components/data/pagination/pagination.styles.js.map +1 -1
  663. package/dist/components/data/query-builder/query-builder.class.d.ts +1 -0
  664. package/dist/components/data/query-builder/query-builder.class.d.ts.map +1 -1
  665. package/dist/components/data/query-builder/query-builder.class.js +15 -11
  666. package/dist/components/data/query-builder/query-builder.class.js.map +1 -1
  667. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +18 -14
  668. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts.map +1 -1
  669. package/dist/components/data/sequence-strip/sequence-strip.class.js +66 -13
  670. package/dist/components/data/sequence-strip/sequence-strip.class.js.map +1 -1
  671. package/dist/components/data/sequence-strip/sequence-strip.styles.d.ts.map +1 -1
  672. package/dist/components/data/sequence-strip/sequence-strip.styles.js +5 -0
  673. package/dist/components/data/sequence-strip/sequence-strip.styles.js.map +1 -1
  674. package/dist/components/data/sparkline/sparkline.class.d.ts.map +1 -1
  675. package/dist/components/data/sparkline/sparkline.class.js +6 -2
  676. package/dist/components/data/sparkline/sparkline.class.js.map +1 -1
  677. package/dist/components/data/stat/stat.class.d.ts.map +1 -1
  678. package/dist/components/data/stat/stat.class.js +10 -2
  679. package/dist/components/data/stat/stat.class.js.map +1 -1
  680. package/dist/components/data/stat/stat.styles.d.ts.map +1 -1
  681. package/dist/components/data/stat/stat.styles.js +24 -0
  682. package/dist/components/data/stat/stat.styles.js.map +1 -1
  683. package/dist/components/data/table/table.class.d.ts +102 -10
  684. package/dist/components/data/table/table.class.d.ts.map +1 -1
  685. package/dist/components/data/table/table.class.js +265 -45
  686. package/dist/components/data/table/table.class.js.map +1 -1
  687. package/dist/components/data/table/table.d.ts +3 -0
  688. package/dist/components/data/table/table.d.ts.map +1 -1
  689. package/dist/components/data/table/table.js +3 -0
  690. package/dist/components/data/table/table.js.map +1 -1
  691. package/dist/components/data/table/table.styles.d.ts.map +1 -1
  692. package/dist/components/data/table/table.styles.js +3 -0
  693. package/dist/components/data/table/table.styles.js.map +1 -1
  694. package/dist/components/data/timeline/timeline-item.class.d.ts.map +1 -1
  695. package/dist/components/data/timeline/timeline-item.class.js +9 -1
  696. package/dist/components/data/timeline/timeline-item.class.js.map +1 -1
  697. package/dist/components/data/timeline/timeline-item.styles.d.ts.map +1 -1
  698. package/dist/components/data/timeline/timeline-item.styles.js +4 -0
  699. package/dist/components/data/timeline/timeline-item.styles.js.map +1 -1
  700. package/dist/components/data/timeline/timeline.class.d.ts.map +1 -1
  701. package/dist/components/data/timeline/timeline.class.js +1 -1
  702. package/dist/components/data/timeline/timeline.class.js.map +1 -1
  703. package/dist/components/data/timeline/timeline.styles.d.ts.map +1 -1
  704. package/dist/components/data/timeline/timeline.styles.js +2 -0
  705. package/dist/components/data/timeline/timeline.styles.js.map +1 -1
  706. package/dist/components/data/tree/tree-item.d.ts +5 -0
  707. package/dist/components/data/tree/tree-item.d.ts.map +1 -1
  708. package/dist/components/data/tree/tree-node.class.d.ts +2 -0
  709. package/dist/components/data/tree/tree-node.class.d.ts.map +1 -1
  710. package/dist/components/data/tree/tree-node.class.js +25 -4
  711. package/dist/components/data/tree/tree-node.class.js.map +1 -1
  712. package/dist/components/data/tree/tree-node.styles.d.ts.map +1 -1
  713. package/dist/components/data/tree/tree-node.styles.js +11 -0
  714. package/dist/components/data/tree/tree-node.styles.js.map +1 -1
  715. package/dist/components/data/tree/tree.class.d.ts +1 -2
  716. package/dist/components/data/tree/tree.class.d.ts.map +1 -1
  717. package/dist/components/data/tree/tree.class.js +59 -19
  718. package/dist/components/data/tree/tree.class.js.map +1 -1
  719. package/dist/components/data/tree/tree.d.ts +2 -0
  720. package/dist/components/data/tree/tree.d.ts.map +1 -1
  721. package/dist/components/data/tree/tree.js +2 -0
  722. package/dist/components/data/tree/tree.js.map +1 -1
  723. package/dist/components/data/word-cloud/word-cloud.class.d.ts +5 -13
  724. package/dist/components/data/word-cloud/word-cloud.class.d.ts.map +1 -1
  725. package/dist/components/data/word-cloud/word-cloud.class.js +32 -28
  726. package/dist/components/data/word-cloud/word-cloud.class.js.map +1 -1
  727. package/dist/components/data/word-cloud/word-cloud.styles.d.ts.map +1 -1
  728. package/dist/components/data/word-cloud/word-cloud.styles.js +9 -0
  729. package/dist/components/data/word-cloud/word-cloud.styles.js.map +1 -1
  730. package/dist/components/forms/button/button.class.d.ts +19 -5
  731. package/dist/components/forms/button/button.class.d.ts.map +1 -1
  732. package/dist/components/forms/button/button.class.js +48 -9
  733. package/dist/components/forms/button/button.class.js.map +1 -1
  734. package/dist/components/forms/button/button.styles.js +1 -1
  735. package/dist/components/forms/checkbox/checkbox.class.d.ts.map +1 -1
  736. package/dist/components/forms/checkbox/checkbox.class.js +1 -10
  737. package/dist/components/forms/checkbox/checkbox.class.js.map +1 -1
  738. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +9 -1
  739. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts.map +1 -1
  740. package/dist/components/forms/checkbox-group/checkbox-group.class.js +91 -8
  741. package/dist/components/forms/checkbox-group/checkbox-group.class.js.map +1 -1
  742. package/dist/components/forms/code-editor/code-editor.class.d.ts +13 -1
  743. package/dist/components/forms/code-editor/code-editor.class.d.ts.map +1 -1
  744. package/dist/components/forms/code-editor/code-editor.class.js +22 -11
  745. package/dist/components/forms/code-editor/code-editor.class.js.map +1 -1
  746. package/dist/components/forms/code-editor/code-editor.styles.js +2 -2
  747. package/dist/components/forms/color-picker/color-picker.class.d.ts +8 -0
  748. package/dist/components/forms/color-picker/color-picker.class.d.ts.map +1 -1
  749. package/dist/components/forms/color-picker/color-picker.class.js +26 -0
  750. package/dist/components/forms/color-picker/color-picker.class.js.map +1 -1
  751. package/dist/components/forms/color-picker/color-picker.styles.d.ts.map +1 -1
  752. package/dist/components/forms/color-picker/color-picker.styles.js +7 -3
  753. package/dist/components/forms/color-picker/color-picker.styles.js.map +1 -1
  754. package/dist/components/forms/combobox/combobox.class.d.ts +5 -1
  755. package/dist/components/forms/combobox/combobox.class.d.ts.map +1 -1
  756. package/dist/components/forms/combobox/combobox.class.js +73 -18
  757. package/dist/components/forms/combobox/combobox.class.js.map +1 -1
  758. package/dist/components/forms/combobox/combobox.styles.d.ts.map +1 -1
  759. package/dist/components/forms/combobox/combobox.styles.js +17 -0
  760. package/dist/components/forms/combobox/combobox.styles.js.map +1 -1
  761. package/dist/components/forms/date-picker/date-input.class.d.ts +6 -0
  762. package/dist/components/forms/date-picker/date-input.class.d.ts.map +1 -1
  763. package/dist/components/forms/date-picker/date-input.class.js +10 -17
  764. package/dist/components/forms/date-picker/date-input.class.js.map +1 -1
  765. package/dist/components/forms/date-picker/date-input.styles.d.ts.map +1 -1
  766. package/dist/components/forms/date-picker/date-input.styles.js +8 -3
  767. package/dist/components/forms/date-picker/date-input.styles.js.map +1 -1
  768. package/dist/components/forms/date-picker/date-picker.class.d.ts +3 -0
  769. package/dist/components/forms/date-picker/date-picker.class.d.ts.map +1 -1
  770. package/dist/components/forms/date-picker/date-picker.class.js +3 -0
  771. package/dist/components/forms/date-picker/date-picker.class.js.map +1 -1
  772. package/dist/components/forms/date-picker/date-picker.styles.d.ts.map +1 -1
  773. package/dist/components/forms/date-picker/date-picker.styles.js +8 -5
  774. package/dist/components/forms/date-picker/date-picker.styles.js.map +1 -1
  775. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +7 -1
  776. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts.map +1 -1
  777. package/dist/components/forms/emoji-picker/emoji-picker.class.js +19 -7
  778. package/dist/components/forms/emoji-picker/emoji-picker.class.js.map +1 -1
  779. package/dist/components/forms/emoji-picker/emoji-picker.styles.d.ts.map +1 -1
  780. package/dist/components/forms/emoji-picker/emoji-picker.styles.js +14 -8
  781. package/dist/components/forms/emoji-picker/emoji-picker.styles.js.map +1 -1
  782. package/dist/components/forms/icon-button/icon-button.class.d.ts +16 -0
  783. package/dist/components/forms/icon-button/icon-button.class.d.ts.map +1 -1
  784. package/dist/components/forms/icon-button/icon-button.class.js +54 -2
  785. package/dist/components/forms/icon-button/icon-button.class.js.map +1 -1
  786. package/dist/components/forms/icon-button/icon-button.styles.js +2 -2
  787. package/dist/components/forms/input/input.class.d.ts +1 -0
  788. package/dist/components/forms/input/input.class.d.ts.map +1 -1
  789. package/dist/components/forms/input/input.class.js +5 -4
  790. package/dist/components/forms/input/input.class.js.map +1 -1
  791. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +6 -0
  792. package/dist/components/forms/locale-picker/locale-picker.class.d.ts.map +1 -1
  793. package/dist/components/forms/locale-picker/locale-picker.class.js +7 -5
  794. package/dist/components/forms/locale-picker/locale-picker.class.js.map +1 -1
  795. package/dist/components/forms/locale-picker/locale-picker.styles.d.ts.map +1 -1
  796. package/dist/components/forms/locale-picker/locale-picker.styles.js +11 -9
  797. package/dist/components/forms/locale-picker/locale-picker.styles.js.map +1 -1
  798. package/dist/components/forms/phone-input/phone-input.class.d.ts +11 -0
  799. package/dist/components/forms/phone-input/phone-input.class.d.ts.map +1 -1
  800. package/dist/components/forms/phone-input/phone-input.class.js +37 -20
  801. package/dist/components/forms/phone-input/phone-input.class.js.map +1 -1
  802. package/dist/components/forms/phone-input/phone-input.styles.d.ts.map +1 -1
  803. package/dist/components/forms/phone-input/phone-input.styles.js +23 -9
  804. package/dist/components/forms/phone-input/phone-input.styles.js.map +1 -1
  805. package/dist/components/forms/radio/radio-group.class.d.ts +5 -0
  806. package/dist/components/forms/radio/radio-group.class.d.ts.map +1 -1
  807. package/dist/components/forms/radio/radio-group.class.js +44 -5
  808. package/dist/components/forms/radio/radio-group.class.js.map +1 -1
  809. package/dist/components/forms/rubric-form/rubric-form.class.d.ts +1 -0
  810. package/dist/components/forms/rubric-form/rubric-form.class.d.ts.map +1 -1
  811. package/dist/components/forms/rubric-form/rubric-form.class.js +91 -20
  812. package/dist/components/forms/rubric-form/rubric-form.class.js.map +1 -1
  813. package/dist/components/forms/rubric-form/rubric-form.styles.d.ts.map +1 -1
  814. package/dist/components/forms/rubric-form/rubric-form.styles.js +7 -1
  815. package/dist/components/forms/rubric-form/rubric-form.styles.js.map +1 -1
  816. package/dist/components/forms/select/select.class.d.ts +3 -0
  817. package/dist/components/forms/select/select.class.d.ts.map +1 -1
  818. package/dist/components/forms/select/select.class.js +41 -20
  819. package/dist/components/forms/select/select.class.js.map +1 -1
  820. package/dist/components/forms/slider/slider.class.d.ts +8 -6
  821. package/dist/components/forms/slider/slider.class.d.ts.map +1 -1
  822. package/dist/components/forms/slider/slider.class.js +21 -28
  823. package/dist/components/forms/slider/slider.class.js.map +1 -1
  824. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +5 -1
  825. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts.map +1 -1
  826. package/dist/components/forms/swatch-picker/swatch-picker.class.js +41 -12
  827. package/dist/components/forms/swatch-picker/swatch-picker.class.js.map +1 -1
  828. package/dist/components/forms/swatch-picker/swatch-picker.styles.d.ts.map +1 -1
  829. package/dist/components/forms/swatch-picker/swatch-picker.styles.js +9 -4
  830. package/dist/components/forms/swatch-picker/swatch-picker.styles.js.map +1 -1
  831. package/dist/components/forms/textarea/textarea.class.d.ts +5 -0
  832. package/dist/components/forms/textarea/textarea.class.d.ts.map +1 -1
  833. package/dist/components/forms/textarea/textarea.class.js +5 -8
  834. package/dist/components/forms/textarea/textarea.class.js.map +1 -1
  835. package/dist/components/forms/time-range/time-range.class.d.ts +19 -0
  836. package/dist/components/forms/time-range/time-range.class.d.ts.map +1 -1
  837. package/dist/components/forms/time-range/time-range.class.js +80 -23
  838. package/dist/components/forms/time-range/time-range.class.js.map +1 -1
  839. package/dist/components/forms/time-range/time-range.styles.d.ts.map +1 -1
  840. package/dist/components/forms/time-range/time-range.styles.js +60 -12
  841. package/dist/components/forms/time-range/time-range.styles.js.map +1 -1
  842. package/dist/components/forms/token-input/token-input.class.d.ts +14 -0
  843. package/dist/components/forms/token-input/token-input.class.d.ts.map +1 -1
  844. package/dist/components/forms/token-input/token-input.class.js +27 -4
  845. package/dist/components/forms/token-input/token-input.class.js.map +1 -1
  846. package/dist/components/forms/token-input/token-input.styles.d.ts.map +1 -1
  847. package/dist/components/forms/token-input/token-input.styles.js +30 -9
  848. package/dist/components/forms/token-input/token-input.styles.js.map +1 -1
  849. package/dist/components/layout/app-rail/app-rail-item.class.d.ts +3 -3
  850. package/dist/components/layout/app-rail/app-rail-item.class.d.ts.map +1 -1
  851. package/dist/components/layout/app-rail/app-rail-item.class.js +33 -24
  852. package/dist/components/layout/app-rail/app-rail-item.class.js.map +1 -1
  853. package/dist/components/layout/app-rail/app-rail-item.styles.d.ts.map +1 -1
  854. package/dist/components/layout/app-rail/app-rail-item.styles.js +18 -12
  855. package/dist/components/layout/app-rail/app-rail-item.styles.js.map +1 -1
  856. package/dist/components/layout/app-rail/app-rail.class.d.ts +19 -10
  857. package/dist/components/layout/app-rail/app-rail.class.d.ts.map +1 -1
  858. package/dist/components/layout/app-rail/app-rail.class.js +62 -14
  859. package/dist/components/layout/app-rail/app-rail.class.js.map +1 -1
  860. package/dist/components/layout/breadcrumb/breadcrumb-item.class.d.ts +4 -3
  861. package/dist/components/layout/breadcrumb/breadcrumb-item.class.d.ts.map +1 -1
  862. package/dist/components/layout/breadcrumb/breadcrumb-item.class.js +14 -9
  863. package/dist/components/layout/breadcrumb/breadcrumb-item.class.js.map +1 -1
  864. package/dist/components/layout/breadcrumb/breadcrumb-item.styles.d.ts.map +1 -1
  865. package/dist/components/layout/breadcrumb/breadcrumb-item.styles.js +16 -5
  866. package/dist/components/layout/breadcrumb/breadcrumb-item.styles.js.map +1 -1
  867. package/dist/components/layout/breadcrumb/breadcrumb.styles.d.ts.map +1 -1
  868. package/dist/components/layout/breadcrumb/breadcrumb.styles.js +15 -8
  869. package/dist/components/layout/breadcrumb/breadcrumb.styles.js.map +1 -1
  870. package/dist/components/layout/card/card.class.d.ts +16 -8
  871. package/dist/components/layout/card/card.class.d.ts.map +1 -1
  872. package/dist/components/layout/card/card.class.js +84 -41
  873. package/dist/components/layout/card/card.class.js.map +1 -1
  874. package/dist/components/layout/card/card.styles.d.ts.map +1 -1
  875. package/dist/components/layout/card/card.styles.js +33 -20
  876. package/dist/components/layout/card/card.styles.js.map +1 -1
  877. package/dist/components/layout/carousel/carousel.class.d.ts +8 -4
  878. package/dist/components/layout/carousel/carousel.class.d.ts.map +1 -1
  879. package/dist/components/layout/carousel/carousel.class.js +133 -65
  880. package/dist/components/layout/carousel/carousel.class.js.map +1 -1
  881. package/dist/components/layout/carousel/carousel.styles.d.ts.map +1 -1
  882. package/dist/components/layout/carousel/carousel.styles.js +38 -28
  883. package/dist/components/layout/carousel/carousel.styles.js.map +1 -1
  884. package/dist/components/layout/command-palette/command-palette.class.d.ts +31 -6
  885. package/dist/components/layout/command-palette/command-palette.class.d.ts.map +1 -1
  886. package/dist/components/layout/command-palette/command-palette.class.js +369 -66
  887. package/dist/components/layout/command-palette/command-palette.class.js.map +1 -1
  888. package/dist/components/layout/command-palette/command-palette.styles.d.ts.map +1 -1
  889. package/dist/components/layout/command-palette/command-palette.styles.js +164 -18
  890. package/dist/components/layout/command-palette/command-palette.styles.js.map +1 -1
  891. package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts +12 -8
  892. package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts.map +1 -1
  893. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +199 -111
  894. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js.map +1 -1
  895. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.d.ts.map +1 -1
  896. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +25 -18
  897. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js.map +1 -1
  898. package/dist/components/layout/details/accordion.class.d.ts +6 -3
  899. package/dist/components/layout/details/accordion.class.d.ts.map +1 -1
  900. package/dist/components/layout/details/accordion.class.js +47 -14
  901. package/dist/components/layout/details/accordion.class.js.map +1 -1
  902. package/dist/components/layout/dock-panel/dock-panel.class.d.ts +6 -6
  903. package/dist/components/layout/dock-panel/dock-panel.class.d.ts.map +1 -1
  904. package/dist/components/layout/dock-panel/dock-panel.class.js +76 -74
  905. package/dist/components/layout/dock-panel/dock-panel.class.js.map +1 -1
  906. package/dist/components/layout/dock-panel/dock-panel.styles.d.ts.map +1 -1
  907. package/dist/components/layout/dock-panel/dock-panel.styles.js +39 -36
  908. package/dist/components/layout/dock-panel/dock-panel.styles.js.map +1 -1
  909. package/dist/components/layout/drilldown-panel/drilldown-panel.class.d.ts.map +1 -1
  910. package/dist/components/layout/drilldown-panel/drilldown-panel.class.js +1 -14
  911. package/dist/components/layout/drilldown-panel/drilldown-panel.class.js.map +1 -1
  912. package/dist/components/layout/filter-bar/filter-bar.class.d.ts +17 -16
  913. package/dist/components/layout/filter-bar/filter-bar.class.d.ts.map +1 -1
  914. package/dist/components/layout/filter-bar/filter-bar.class.js +126 -60
  915. package/dist/components/layout/filter-bar/filter-bar.class.js.map +1 -1
  916. package/dist/components/layout/menu/menu.class.d.ts +24 -19
  917. package/dist/components/layout/menu/menu.class.d.ts.map +1 -1
  918. package/dist/components/layout/menu/menu.class.js +108 -76
  919. package/dist/components/layout/menu/menu.class.js.map +1 -1
  920. package/dist/components/layout/menu/menu.styles.d.ts.map +1 -1
  921. package/dist/components/layout/menu/menu.styles.js +28 -19
  922. package/dist/components/layout/menu/menu.styles.js.map +1 -1
  923. package/dist/components/layout/reorder-list/reorder-list.class.d.ts +5 -6
  924. package/dist/components/layout/reorder-list/reorder-list.class.d.ts.map +1 -1
  925. package/dist/components/layout/reorder-list/reorder-list.class.js +52 -32
  926. package/dist/components/layout/reorder-list/reorder-list.class.js.map +1 -1
  927. package/dist/components/layout/reorder-list/reorder-list.d.ts +2 -1
  928. package/dist/components/layout/reorder-list/reorder-list.d.ts.map +1 -1
  929. package/dist/components/layout/reorder-list/reorder-list.js +5 -4
  930. package/dist/components/layout/reorder-list/reorder-list.js.map +1 -1
  931. package/dist/components/layout/responsive-panel/responsive-panel.class.d.ts +11 -9
  932. package/dist/components/layout/responsive-panel/responsive-panel.class.d.ts.map +1 -1
  933. package/dist/components/layout/responsive-panel/responsive-panel.class.js +87 -45
  934. package/dist/components/layout/responsive-panel/responsive-panel.class.js.map +1 -1
  935. package/dist/components/layout/scroller/scroller.class.d.ts +6 -5
  936. package/dist/components/layout/scroller/scroller.class.d.ts.map +1 -1
  937. package/dist/components/layout/scroller/scroller.class.js +89 -37
  938. package/dist/components/layout/scroller/scroller.class.js.map +1 -1
  939. package/dist/components/layout/scroller/scroller.styles.d.ts.map +1 -1
  940. package/dist/components/layout/scroller/scroller.styles.js +27 -22
  941. package/dist/components/layout/scroller/scroller.styles.js.map +1 -1
  942. package/dist/components/layout/segmented/segmented.class.d.ts +11 -6
  943. package/dist/components/layout/segmented/segmented.class.d.ts.map +1 -1
  944. package/dist/components/layout/segmented/segmented.class.js +92 -41
  945. package/dist/components/layout/segmented/segmented.class.js.map +1 -1
  946. package/dist/components/layout/segmented/segmented.styles.d.ts.map +1 -1
  947. package/dist/components/layout/segmented/segmented.styles.js +26 -18
  948. package/dist/components/layout/segmented/segmented.styles.js.map +1 -1
  949. package/dist/components/layout/split/split.class.d.ts +22 -15
  950. package/dist/components/layout/split/split.class.d.ts.map +1 -1
  951. package/dist/components/layout/split/split.class.js +283 -163
  952. package/dist/components/layout/split/split.class.js.map +1 -1
  953. package/dist/components/layout/stepper/stepper.class.d.ts +14 -14
  954. package/dist/components/layout/stepper/stepper.class.d.ts.map +1 -1
  955. package/dist/components/layout/stepper/stepper.class.js +106 -74
  956. package/dist/components/layout/stepper/stepper.class.js.map +1 -1
  957. package/dist/components/layout/stepper/stepper.styles.d.ts.map +1 -1
  958. package/dist/components/layout/stepper/stepper.styles.js +24 -18
  959. package/dist/components/layout/stepper/stepper.styles.js.map +1 -1
  960. package/dist/components/layout/tabs/tabs.styles.d.ts.map +1 -1
  961. package/dist/components/layout/tabs/tabs.styles.js +22 -15
  962. package/dist/components/layout/tabs/tabs.styles.js.map +1 -1
  963. package/dist/components/layout/virtual-list/virtual-list.class.d.ts +23 -19
  964. package/dist/components/layout/virtual-list/virtual-list.class.d.ts.map +1 -1
  965. package/dist/components/layout/virtual-list/virtual-list.class.js +171 -100
  966. package/dist/components/layout/virtual-list/virtual-list.class.js.map +1 -1
  967. package/dist/components/layout/widget/widget.class.d.ts +13 -6
  968. package/dist/components/layout/widget/widget.class.d.ts.map +1 -1
  969. package/dist/components/layout/widget/widget.class.js +165 -64
  970. package/dist/components/layout/widget/widget.class.js.map +1 -1
  971. package/dist/components/layout/widget/widget.styles.d.ts.map +1 -1
  972. package/dist/components/layout/widget/widget.styles.js +65 -40
  973. package/dist/components/layout/widget/widget.styles.js.map +1 -1
  974. package/dist/components/media/animated-image/animated-image.class.d.ts +2 -0
  975. package/dist/components/media/animated-image/animated-image.class.d.ts.map +1 -1
  976. package/dist/components/media/animated-image/animated-image.class.js +17 -17
  977. package/dist/components/media/animated-image/animated-image.class.js.map +1 -1
  978. package/dist/components/media/animation/animation.class.d.ts +3 -0
  979. package/dist/components/media/animation/animation.class.d.ts.map +1 -1
  980. package/dist/components/media/animation/animation.class.js +35 -21
  981. package/dist/components/media/animation/animation.class.js.map +1 -1
  982. package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +4 -17
  983. package/dist/components/media/attachment-chip/attachment-chip.class.d.ts.map +1 -1
  984. package/dist/components/media/attachment-chip/attachment-chip.class.js +20 -50
  985. package/dist/components/media/attachment-chip/attachment-chip.class.js.map +1 -1
  986. package/dist/components/media/attachment-chip/attachment-chip.styles.js +2 -2
  987. package/dist/components/media/attachment-chip/file-size.d.ts +11 -0
  988. package/dist/components/media/attachment-chip/file-size.d.ts.map +1 -0
  989. package/dist/components/media/attachment-chip/file-size.js +28 -0
  990. package/dist/components/media/attachment-chip/file-size.js.map +1 -0
  991. package/dist/components/media/attachment-trigger/attachment-trigger.class.d.ts +7 -2
  992. package/dist/components/media/attachment-trigger/attachment-trigger.class.d.ts.map +1 -1
  993. package/dist/components/media/attachment-trigger/attachment-trigger.class.js +36 -19
  994. package/dist/components/media/attachment-trigger/attachment-trigger.class.js.map +1 -1
  995. package/dist/components/media/av-player/av-player.class.d.ts +5 -1
  996. package/dist/components/media/av-player/av-player.class.d.ts.map +1 -1
  997. package/dist/components/media/av-player/av-player.class.js +115 -38
  998. package/dist/components/media/av-player/av-player.class.js.map +1 -1
  999. package/dist/components/media/av-player/av-player.d.ts +1 -0
  1000. package/dist/components/media/av-player/av-player.d.ts.map +1 -1
  1001. package/dist/components/media/av-player/av-player.js +1 -0
  1002. package/dist/components/media/av-player/av-player.js.map +1 -1
  1003. package/dist/components/media/av-player/av-player.styles.d.ts.map +1 -1
  1004. package/dist/components/media/av-player/av-player.styles.js +2 -0
  1005. package/dist/components/media/av-player/av-player.styles.js.map +1 -1
  1006. package/dist/components/media/avatar-group/avatar-group.class.d.ts +3 -0
  1007. package/dist/components/media/avatar-group/avatar-group.class.d.ts.map +1 -1
  1008. package/dist/components/media/avatar-group/avatar-group.class.js +34 -6
  1009. package/dist/components/media/avatar-group/avatar-group.class.js.map +1 -1
  1010. package/dist/components/media/file-icon/file-icon.class.d.ts.map +1 -1
  1011. package/dist/components/media/file-icon/file-icon.class.js +5 -2
  1012. package/dist/components/media/file-icon/file-icon.class.js.map +1 -1
  1013. package/dist/components/media/file-input/file-input.class.d.ts +8 -9
  1014. package/dist/components/media/file-input/file-input.class.d.ts.map +1 -1
  1015. package/dist/components/media/file-input/file-input.class.js +27 -29
  1016. package/dist/components/media/file-input/file-input.class.js.map +1 -1
  1017. package/dist/components/media/flag/flag.class.d.ts +7 -3
  1018. package/dist/components/media/flag/flag.class.d.ts.map +1 -1
  1019. package/dist/components/media/flag/flag.class.js +29 -5
  1020. package/dist/components/media/flag/flag.class.js.map +1 -1
  1021. package/dist/components/media/flag/flag.styles.d.ts.map +1 -1
  1022. package/dist/components/media/flag/flag.styles.js +6 -0
  1023. package/dist/components/media/flag/flag.styles.js.map +1 -1
  1024. package/dist/components/media/image-comparer/image-comparer.class.d.ts +7 -0
  1025. package/dist/components/media/image-comparer/image-comparer.class.d.ts.map +1 -1
  1026. package/dist/components/media/image-comparer/image-comparer.class.js +17 -1
  1027. package/dist/components/media/image-comparer/image-comparer.class.js.map +1 -1
  1028. package/dist/components/media/image-viewer/image-viewer.class.d.ts +12 -2
  1029. package/dist/components/media/image-viewer/image-viewer.class.d.ts.map +1 -1
  1030. package/dist/components/media/image-viewer/image-viewer.class.js +60 -15
  1031. package/dist/components/media/image-viewer/image-viewer.class.js.map +1 -1
  1032. package/dist/components/media/image-viewer/image-viewer.styles.d.ts.map +1 -1
  1033. package/dist/components/media/image-viewer/image-viewer.styles.js +21 -7
  1034. package/dist/components/media/image-viewer/image-viewer.styles.js.map +1 -1
  1035. package/dist/components/media/lightbox/lightbox.class.d.ts.map +1 -1
  1036. package/dist/components/media/lightbox/lightbox.class.js +45 -3
  1037. package/dist/components/media/lightbox/lightbox.class.js.map +1 -1
  1038. package/dist/components/media/map/map-loader.d.ts +2 -1
  1039. package/dist/components/media/map/map-loader.d.ts.map +1 -1
  1040. package/dist/components/media/map/map-loader.js +2 -1
  1041. package/dist/components/media/map/map-loader.js.map +1 -1
  1042. package/dist/components/media/map/map.class.d.ts +10 -1
  1043. package/dist/components/media/map/map.class.d.ts.map +1 -1
  1044. package/dist/components/media/map/map.class.js +47 -8
  1045. package/dist/components/media/map/map.class.js.map +1 -1
  1046. package/dist/components/media/media-card/media-card.class.d.ts +16 -0
  1047. package/dist/components/media/media-card/media-card.class.d.ts.map +1 -1
  1048. package/dist/components/media/media-card/media-card.class.js +24 -0
  1049. package/dist/components/media/media-card/media-card.class.js.map +1 -1
  1050. package/dist/components/media/playback/playback.class.d.ts +4 -6
  1051. package/dist/components/media/playback/playback.class.d.ts.map +1 -1
  1052. package/dist/components/media/playback/playback.class.js +7 -22
  1053. package/dist/components/media/playback/playback.class.js.map +1 -1
  1054. package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts.map +1 -1
  1055. package/dist/components/media/zoomable-frame/zoomable-frame.class.js +15 -1
  1056. package/dist/components/media/zoomable-frame/zoomable-frame.class.js.map +1 -1
  1057. package/dist/components/media/zoomable-frame/zoomable-frame.styles.d.ts.map +1 -1
  1058. package/dist/components/media/zoomable-frame/zoomable-frame.styles.js +3 -0
  1059. package/dist/components/media/zoomable-frame/zoomable-frame.styles.js.map +1 -1
  1060. package/dist/components/overlays/callout/callout.class.d.ts +8 -5
  1061. package/dist/components/overlays/callout/callout.class.d.ts.map +1 -1
  1062. package/dist/components/overlays/callout/callout.class.js +26 -21
  1063. package/dist/components/overlays/callout/callout.class.js.map +1 -1
  1064. package/dist/components/overlays/chip/chip-group.class.d.ts +3 -0
  1065. package/dist/components/overlays/chip/chip-group.class.d.ts.map +1 -1
  1066. package/dist/components/overlays/chip/chip-group.class.js +22 -1
  1067. package/dist/components/overlays/chip/chip-group.class.js.map +1 -1
  1068. package/dist/components/overlays/chip/chip.class.d.ts +26 -15
  1069. package/dist/components/overlays/chip/chip.class.d.ts.map +1 -1
  1070. package/dist/components/overlays/chip/chip.class.js +58 -32
  1071. package/dist/components/overlays/chip/chip.class.js.map +1 -1
  1072. package/dist/components/overlays/chip/chip.styles.d.ts.map +1 -1
  1073. package/dist/components/overlays/chip/chip.styles.js +28 -19
  1074. package/dist/components/overlays/chip/chip.styles.js.map +1 -1
  1075. package/dist/components/overlays/dialog/dialog.class.d.ts +1 -0
  1076. package/dist/components/overlays/dialog/dialog.class.d.ts.map +1 -1
  1077. package/dist/components/overlays/dialog/dialog.class.js +6 -5
  1078. package/dist/components/overlays/dialog/dialog.class.js.map +1 -1
  1079. package/dist/components/overlays/empty/empty.class.d.ts +8 -2
  1080. package/dist/components/overlays/empty/empty.class.d.ts.map +1 -1
  1081. package/dist/components/overlays/empty/empty.class.js +22 -2
  1082. package/dist/components/overlays/empty/empty.class.js.map +1 -1
  1083. package/dist/components/overlays/kbd/kbd.class.js +1 -1
  1084. package/dist/components/overlays/kbd/kbd.class.js.map +1 -1
  1085. package/dist/components/overlays/overlay/overlay.styles.d.ts.map +1 -1
  1086. package/dist/components/overlays/overlay/overlay.styles.js +1 -2
  1087. package/dist/components/overlays/overlay/overlay.styles.js.map +1 -1
  1088. package/dist/components/overlays/overlay/popover.class.d.ts +29 -23
  1089. package/dist/components/overlays/overlay/popover.class.d.ts.map +1 -1
  1090. package/dist/components/overlays/overlay/popover.class.js +161 -64
  1091. package/dist/components/overlays/overlay/popover.class.js.map +1 -1
  1092. package/dist/components/overlays/overlay/tooltip.class.d.ts +20 -1
  1093. package/dist/components/overlays/overlay/tooltip.class.d.ts.map +1 -1
  1094. package/dist/components/overlays/overlay/tooltip.class.js +169 -17
  1095. package/dist/components/overlays/overlay/tooltip.class.js.map +1 -1
  1096. package/dist/components/overlays/progress/progress-bar.class.d.ts +3 -0
  1097. package/dist/components/overlays/progress/progress-bar.class.d.ts.map +1 -1
  1098. package/dist/components/overlays/progress/progress-bar.class.js +13 -4
  1099. package/dist/components/overlays/progress/progress-bar.class.js.map +1 -1
  1100. package/dist/components/overlays/progress/progress-ring.class.d.ts +2 -0
  1101. package/dist/components/overlays/progress/progress-ring.class.d.ts.map +1 -1
  1102. package/dist/components/overlays/progress/progress-ring.class.js +13 -4
  1103. package/dist/components/overlays/progress/progress-ring.class.js.map +1 -1
  1104. package/dist/components/overlays/progress/progress.styles.js +3 -3
  1105. package/dist/components/overlays/rating/rating.class.d.ts +7 -0
  1106. package/dist/components/overlays/rating/rating.class.d.ts.map +1 -1
  1107. package/dist/components/overlays/rating/rating.class.js +17 -0
  1108. package/dist/components/overlays/rating/rating.class.js.map +1 -1
  1109. package/dist/components/overlays/skeleton/skeleton.class.d.ts.map +1 -1
  1110. package/dist/components/overlays/skeleton/skeleton.class.js +1 -14
  1111. package/dist/components/overlays/skeleton/skeleton.class.js.map +1 -1
  1112. package/dist/components/overlays/spinner/spinner.class.d.ts +2 -1
  1113. package/dist/components/overlays/spinner/spinner.class.d.ts.map +1 -1
  1114. package/dist/components/overlays/spinner/spinner.class.js +2 -1
  1115. package/dist/components/overlays/spinner/spinner.class.js.map +1 -1
  1116. package/dist/components/overlays/spinner/spinner.styles.js +1 -1
  1117. package/dist/components/overlays/toast/toast-item.class.d.ts +2 -0
  1118. package/dist/components/overlays/toast/toast-item.class.d.ts.map +1 -1
  1119. package/dist/components/overlays/toast/toast-item.class.js +19 -1
  1120. package/dist/components/overlays/toast/toast-item.class.js.map +1 -1
  1121. package/dist/components/overlays/toast/toast-item.styles.d.ts.map +1 -1
  1122. package/dist/components/overlays/toast/toast-item.styles.js +9 -1
  1123. package/dist/components/overlays/toast/toast-item.styles.js.map +1 -1
  1124. package/dist/components/retrieval/chunk-inspector/chunk-inspector.class.d.ts.map +1 -1
  1125. package/dist/components/retrieval/chunk-inspector/chunk-inspector.class.js +6 -2
  1126. package/dist/components/retrieval/chunk-inspector/chunk-inspector.class.js.map +1 -1
  1127. package/dist/components/retrieval/chunk-inspector/chunk-inspector.styles.d.ts.map +1 -1
  1128. package/dist/components/retrieval/chunk-inspector/chunk-inspector.styles.js +6 -0
  1129. package/dist/components/retrieval/chunk-inspector/chunk-inspector.styles.js.map +1 -1
  1130. package/dist/components/retrieval/citation-badge/citation-badge.class.js +1 -1
  1131. package/dist/components/retrieval/citation-badge/citation-badge.class.js.map +1 -1
  1132. package/dist/components/retrieval/citation-badge/citation-badge.styles.d.ts.map +1 -1
  1133. package/dist/components/retrieval/citation-badge/citation-badge.styles.js +2 -0
  1134. package/dist/components/retrieval/citation-badge/citation-badge.styles.js.map +1 -1
  1135. package/dist/components/retrieval/claim-evidence/claim-evidence.class.d.ts +50 -0
  1136. package/dist/components/retrieval/claim-evidence/claim-evidence.class.d.ts.map +1 -0
  1137. package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +133 -0
  1138. package/dist/components/retrieval/claim-evidence/claim-evidence.class.js.map +1 -0
  1139. package/dist/components/retrieval/claim-evidence/claim-evidence.d.ts +5 -0
  1140. package/dist/components/retrieval/claim-evidence/claim-evidence.d.ts.map +1 -0
  1141. package/dist/components/retrieval/claim-evidence/claim-evidence.js +8 -0
  1142. package/dist/components/retrieval/claim-evidence/claim-evidence.js.map +1 -0
  1143. package/dist/components/retrieval/claim-evidence/claim-evidence.styles.d.ts +2 -0
  1144. package/dist/components/retrieval/claim-evidence/claim-evidence.styles.d.ts.map +1 -0
  1145. package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js +84 -0
  1146. package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js.map +1 -0
  1147. package/dist/components/retrieval/community-card/community-card.class.d.ts.map +1 -1
  1148. package/dist/components/retrieval/community-card/community-card.class.js +9 -3
  1149. package/dist/components/retrieval/community-card/community-card.class.js.map +1 -1
  1150. package/dist/components/retrieval/community-card/community-card.styles.d.ts.map +1 -1
  1151. package/dist/components/retrieval/community-card/community-card.styles.js +6 -0
  1152. package/dist/components/retrieval/community-card/community-card.styles.js.map +1 -1
  1153. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.d.ts +5 -2
  1154. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.d.ts.map +1 -1
  1155. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +52 -24
  1156. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js.map +1 -1
  1157. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.d.ts.map +1 -1
  1158. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +7 -2
  1159. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js.map +1 -1
  1160. package/dist/components/retrieval/entity-card/entity-card.class.d.ts.map +1 -1
  1161. package/dist/components/retrieval/entity-card/entity-card.class.js +11 -16
  1162. package/dist/components/retrieval/entity-card/entity-card.class.js.map +1 -1
  1163. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts.map +1 -1
  1164. package/dist/components/retrieval/entity-chip/entity-chip.class.js +3 -1
  1165. package/dist/components/retrieval/entity-chip/entity-chip.class.js.map +1 -1
  1166. package/dist/components/retrieval/entity-chip/entity-chip.styles.d.ts.map +1 -1
  1167. package/dist/components/retrieval/entity-chip/entity-chip.styles.js +4 -1
  1168. package/dist/components/retrieval/entity-chip/entity-chip.styles.js.map +1 -1
  1169. package/dist/components/retrieval/entity-dossier/entity-dossier.class.d.ts.map +1 -1
  1170. package/dist/components/retrieval/entity-dossier/entity-dossier.class.js +1 -14
  1171. package/dist/components/retrieval/entity-dossier/entity-dossier.class.js.map +1 -1
  1172. package/dist/components/retrieval/graph/graph-canvas.d.ts.map +1 -1
  1173. package/dist/components/retrieval/graph/graph-canvas.js +4 -1
  1174. package/dist/components/retrieval/graph/graph-canvas.js.map +1 -1
  1175. package/dist/components/retrieval/graph/graph.class.d.ts +6 -0
  1176. package/dist/components/retrieval/graph/graph.class.d.ts.map +1 -1
  1177. package/dist/components/retrieval/graph/graph.class.js +103 -32
  1178. package/dist/components/retrieval/graph/graph.class.js.map +1 -1
  1179. package/dist/components/retrieval/graph/graph.styles.d.ts.map +1 -1
  1180. package/dist/components/retrieval/graph/graph.styles.js +6 -1
  1181. package/dist/components/retrieval/graph/graph.styles.js.map +1 -1
  1182. package/dist/components/retrieval/graph-legend/graph-legend.class.d.ts.map +1 -1
  1183. package/dist/components/retrieval/graph-legend/graph-legend.class.js +1 -14
  1184. package/dist/components/retrieval/graph-legend/graph-legend.class.js.map +1 -1
  1185. package/dist/components/retrieval/graph-legend/graph-legend.styles.d.ts.map +1 -1
  1186. package/dist/components/retrieval/graph-legend/graph-legend.styles.js +3 -0
  1187. package/dist/components/retrieval/graph-legend/graph-legend.styles.js.map +1 -1
  1188. package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts +8 -1
  1189. package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts.map +1 -1
  1190. package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +19 -2
  1191. package/dist/components/retrieval/grounding-summary/grounding-summary.class.js.map +1 -1
  1192. package/dist/components/retrieval/grounding-summary/grounding-summary.d.ts +1 -0
  1193. package/dist/components/retrieval/grounding-summary/grounding-summary.d.ts.map +1 -1
  1194. package/dist/components/retrieval/grounding-summary/grounding-summary.js +1 -0
  1195. package/dist/components/retrieval/grounding-summary/grounding-summary.js.map +1 -1
  1196. package/dist/components/retrieval/index.d.ts +31 -0
  1197. package/dist/components/retrieval/index.d.ts.map +1 -0
  1198. package/dist/components/retrieval/index.js +31 -0
  1199. package/dist/components/retrieval/index.js.map +1 -0
  1200. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +8 -5
  1201. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts.map +1 -1
  1202. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +53 -16
  1203. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js.map +1 -1
  1204. package/dist/components/retrieval/ingestion-queue/ingestion-queue.d.ts +4 -0
  1205. package/dist/components/retrieval/ingestion-queue/ingestion-queue.d.ts.map +1 -1
  1206. package/dist/components/retrieval/ingestion-queue/ingestion-queue.js +4 -0
  1207. package/dist/components/retrieval/ingestion-queue/ingestion-queue.js.map +1 -1
  1208. package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.d.ts.map +1 -1
  1209. package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.js +5 -0
  1210. package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.js.map +1 -1
  1211. package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +0 -5
  1212. package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts.map +1 -1
  1213. package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +12 -12
  1214. package/dist/components/retrieval/knowledge-base/knowledge-base.class.js.map +1 -1
  1215. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.d.ts +4 -2
  1216. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.d.ts.map +1 -1
  1217. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.js +78 -8
  1218. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.js.map +1 -1
  1219. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.d.ts +2 -0
  1220. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.d.ts.map +1 -1
  1221. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.js +2 -0
  1222. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.js.map +1 -1
  1223. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.d.ts.map +1 -1
  1224. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +3 -0
  1225. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js.map +1 -1
  1226. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +12 -0
  1227. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts.map +1 -1
  1228. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +103 -21
  1229. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js.map +1 -1
  1230. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.d.ts.map +1 -1
  1231. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +5 -0
  1232. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js.map +1 -1
  1233. package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +6 -2
  1234. package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts.map +1 -1
  1235. package/dist/components/retrieval/memory-panel/memory-panel.class.js +71 -17
  1236. package/dist/components/retrieval/memory-panel/memory-panel.class.js.map +1 -1
  1237. package/dist/components/retrieval/memory-panel/memory-panel.styles.d.ts.map +1 -1
  1238. package/dist/components/retrieval/memory-panel/memory-panel.styles.js +6 -0
  1239. package/dist/components/retrieval/memory-panel/memory-panel.styles.js.map +1 -1
  1240. package/dist/components/retrieval/mind-map/mind-map.class.d.ts +10 -0
  1241. package/dist/components/retrieval/mind-map/mind-map.class.d.ts.map +1 -1
  1242. package/dist/components/retrieval/mind-map/mind-map.class.js +96 -3
  1243. package/dist/components/retrieval/mind-map/mind-map.class.js.map +1 -1
  1244. package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts.map +1 -1
  1245. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +23 -7
  1246. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js.map +1 -1
  1247. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.d.ts.map +1 -1
  1248. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +3 -1
  1249. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js.map +1 -1
  1250. package/dist/components/retrieval/node-palette/node-palette.class.d.ts +8 -0
  1251. package/dist/components/retrieval/node-palette/node-palette.class.d.ts.map +1 -1
  1252. package/dist/components/retrieval/node-palette/node-palette.class.js +107 -15
  1253. package/dist/components/retrieval/node-palette/node-palette.class.js.map +1 -1
  1254. package/dist/components/retrieval/node-palette/node-palette.styles.d.ts.map +1 -1
  1255. package/dist/components/retrieval/node-palette/node-palette.styles.js +9 -1
  1256. package/dist/components/retrieval/node-palette/node-palette.styles.js.map +1 -1
  1257. package/dist/components/retrieval/path-strip/path-strip.class.d.ts +4 -1
  1258. package/dist/components/retrieval/path-strip/path-strip.class.d.ts.map +1 -1
  1259. package/dist/components/retrieval/path-strip/path-strip.class.js +28 -1
  1260. package/dist/components/retrieval/path-strip/path-strip.class.js.map +1 -1
  1261. package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts.map +1 -1
  1262. package/dist/components/retrieval/provenance-panel/provenance-panel.class.js +2 -1
  1263. package/dist/components/retrieval/provenance-panel/provenance-panel.class.js.map +1 -1
  1264. package/dist/components/retrieval/provenance-panel/provenance-panel.styles.d.ts.map +1 -1
  1265. package/dist/components/retrieval/provenance-panel/provenance-panel.styles.js +3 -0
  1266. package/dist/components/retrieval/provenance-panel/provenance-panel.styles.js.map +1 -1
  1267. package/dist/components/retrieval/rag-answer/rag-answer.class.d.ts +6 -8
  1268. package/dist/components/retrieval/rag-answer/rag-answer.class.d.ts.map +1 -1
  1269. package/dist/components/retrieval/rag-answer/rag-answer.class.js +9 -14
  1270. package/dist/components/retrieval/rag-answer/rag-answer.class.js.map +1 -1
  1271. package/dist/components/retrieval/rag-answer/rag-answer.d.ts +7 -0
  1272. package/dist/components/retrieval/rag-answer/rag-answer.d.ts.map +1 -1
  1273. package/dist/components/retrieval/rag-answer/rag-answer.js +7 -0
  1274. package/dist/components/retrieval/rag-answer/rag-answer.js.map +1 -1
  1275. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +78 -0
  1276. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts.map +1 -0
  1277. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +186 -0
  1278. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js.map +1 -0
  1279. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.d.ts +5 -0
  1280. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.d.ts.map +1 -0
  1281. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.js +8 -0
  1282. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.js.map +1 -0
  1283. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.d.ts +2 -0
  1284. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.d.ts.map +1 -0
  1285. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.js +95 -0
  1286. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.js.map +1 -0
  1287. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.d.ts +58 -0
  1288. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.d.ts.map +1 -0
  1289. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.js +157 -0
  1290. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.js.map +1 -0
  1291. package/dist/components/retrieval/retrieval-compare/retrieval-compare.d.ts +3 -0
  1292. package/dist/components/retrieval/retrieval-compare/retrieval-compare.d.ts.map +1 -0
  1293. package/dist/components/retrieval/retrieval-compare/retrieval-compare.js +6 -0
  1294. package/dist/components/retrieval/retrieval-compare/retrieval-compare.js.map +1 -0
  1295. package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.d.ts +2 -0
  1296. package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.d.ts.map +1 -0
  1297. package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.js +103 -0
  1298. package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.js.map +1 -0
  1299. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +3 -6
  1300. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts.map +1 -1
  1301. package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +33 -45
  1302. package/dist/components/retrieval/retrieval-results/retrieval-results.class.js.map +1 -1
  1303. package/dist/components/retrieval/retrieval-results/retrieval-results.styles.d.ts.map +1 -1
  1304. package/dist/components/retrieval/retrieval-results/retrieval-results.styles.js +3 -4
  1305. package/dist/components/retrieval/retrieval-results/retrieval-results.styles.js.map +1 -1
  1306. package/dist/components/retrieval/retrieval-search/retrieval-search.class.d.ts.map +1 -1
  1307. package/dist/components/retrieval/retrieval-search/retrieval-search.class.js +20 -6
  1308. package/dist/components/retrieval/retrieval-search/retrieval-search.class.js.map +1 -1
  1309. package/dist/components/retrieval/retrieval-search/retrieval-search.styles.d.ts.map +1 -1
  1310. package/dist/components/retrieval/retrieval-search/retrieval-search.styles.js +1 -0
  1311. package/dist/components/retrieval/retrieval-search/retrieval-search.styles.js.map +1 -1
  1312. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.d.ts +4 -2
  1313. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.d.ts.map +1 -1
  1314. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +31 -23
  1315. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js.map +1 -1
  1316. package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.d.ts.map +1 -1
  1317. package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js +3 -0
  1318. package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js.map +1 -1
  1319. package/dist/components/retrieval/source-card/source-card.styles.d.ts.map +1 -1
  1320. package/dist/components/retrieval/source-card/source-card.styles.js +13 -0
  1321. package/dist/components/retrieval/source-card/source-card.styles.js.map +1 -1
  1322. package/dist/components/retrieval/source-list/source-list.class.d.ts +3 -0
  1323. package/dist/components/retrieval/source-list/source-list.class.d.ts.map +1 -1
  1324. package/dist/components/retrieval/source-list/source-list.class.js +30 -3
  1325. package/dist/components/retrieval/source-list/source-list.class.js.map +1 -1
  1326. package/dist/components/retrieval/source-list/source-list.styles.d.ts.map +1 -1
  1327. package/dist/components/retrieval/source-list/source-list.styles.js +6 -0
  1328. package/dist/components/retrieval/source-list/source-list.styles.js.map +1 -1
  1329. package/dist/components/retrieval/source-picker/source-picker.class.d.ts +5 -1
  1330. package/dist/components/retrieval/source-picker/source-picker.class.d.ts.map +1 -1
  1331. package/dist/components/retrieval/source-picker/source-picker.class.js +68 -21
  1332. package/dist/components/retrieval/source-picker/source-picker.class.js.map +1 -1
  1333. package/dist/components/retrieval/source-picker/source-picker.styles.d.ts.map +1 -1
  1334. package/dist/components/retrieval/source-picker/source-picker.styles.js +25 -1
  1335. package/dist/components/retrieval/source-picker/source-picker.styles.js.map +1 -1
  1336. package/dist/components/utility/copy-button/copy-button.class.d.ts +2 -0
  1337. package/dist/components/utility/copy-button/copy-button.class.d.ts.map +1 -1
  1338. package/dist/components/utility/copy-button/copy-button.class.js +6 -0
  1339. package/dist/components/utility/copy-button/copy-button.class.js.map +1 -1
  1340. package/dist/components/utility/diff-view/diff-line-diff.d.ts +3 -4
  1341. package/dist/components/utility/diff-view/diff-line-diff.d.ts.map +1 -1
  1342. package/dist/components/utility/diff-view/diff-line-diff.js +85 -35
  1343. package/dist/components/utility/diff-view/diff-line-diff.js.map +1 -1
  1344. package/dist/components/utility/diff-view/diff-view.class.d.ts +11 -0
  1345. package/dist/components/utility/diff-view/diff-view.class.d.ts.map +1 -1
  1346. package/dist/components/utility/diff-view/diff-view.class.js +64 -13
  1347. package/dist/components/utility/diff-view/diff-view.class.js.map +1 -1
  1348. package/dist/components/utility/diff-view/diff-view.styles.d.ts.map +1 -1
  1349. package/dist/components/utility/diff-view/diff-view.styles.js +19 -6
  1350. package/dist/components/utility/diff-view/diff-view.styles.js.map +1 -1
  1351. package/dist/components/utility/export-button/export-button.class.d.ts +9 -0
  1352. package/dist/components/utility/export-button/export-button.class.d.ts.map +1 -1
  1353. package/dist/components/utility/export-button/export-button.class.js +45 -8
  1354. package/dist/components/utility/export-button/export-button.class.js.map +1 -1
  1355. package/dist/components/utility/export-button/export-button.styles.d.ts.map +1 -1
  1356. package/dist/components/utility/export-button/export-button.styles.js +4 -0
  1357. package/dist/components/utility/export-button/export-button.styles.js.map +1 -1
  1358. package/dist/components/utility/format/format-date.class.d.ts.map +1 -1
  1359. package/dist/components/utility/format/format-date.class.js +11 -4
  1360. package/dist/components/utility/format/format-date.class.js.map +1 -1
  1361. package/dist/components/utility/format/format-number.class.d.ts.map +1 -1
  1362. package/dist/components/utility/format/format-number.class.js +18 -4
  1363. package/dist/components/utility/format/format-number.class.js.map +1 -1
  1364. package/dist/components/utility/format/relative-time.class.d.ts.map +1 -1
  1365. package/dist/components/utility/format/relative-time.class.js +11 -2
  1366. package/dist/components/utility/format/relative-time.class.js.map +1 -1
  1367. package/dist/components/utility/icon/icon.class.d.ts.map +1 -1
  1368. package/dist/components/utility/icon/icon.class.js +4 -2
  1369. package/dist/components/utility/icon/icon.class.js.map +1 -1
  1370. package/dist/components/utility/intersection-observer/intersection-observer.class.d.ts.map +1 -1
  1371. package/dist/components/utility/intersection-observer/intersection-observer.class.js +23 -9
  1372. package/dist/components/utility/intersection-observer/intersection-observer.class.js.map +1 -1
  1373. package/dist/components/utility/intersection-observer/intersection-observer.styles.d.ts +1 -1
  1374. package/dist/components/utility/intersection-observer/intersection-observer.styles.d.ts.map +1 -1
  1375. package/dist/components/utility/intersection-observer/intersection-observer.styles.js +1 -7
  1376. package/dist/components/utility/intersection-observer/intersection-observer.styles.js.map +1 -1
  1377. package/dist/components/utility/json-viewer/json-viewer.class.d.ts +15 -2
  1378. package/dist/components/utility/json-viewer/json-viewer.class.d.ts.map +1 -1
  1379. package/dist/components/utility/json-viewer/json-viewer.class.js +182 -44
  1380. package/dist/components/utility/json-viewer/json-viewer.class.js.map +1 -1
  1381. package/dist/components/utility/json-viewer/json-viewer.styles.d.ts.map +1 -1
  1382. package/dist/components/utility/json-viewer/json-viewer.styles.js +14 -4
  1383. package/dist/components/utility/json-viewer/json-viewer.styles.js.map +1 -1
  1384. package/dist/components/utility/known-date/known-date.class.d.ts +6 -3
  1385. package/dist/components/utility/known-date/known-date.class.d.ts.map +1 -1
  1386. package/dist/components/utility/known-date/known-date.class.js +35 -5
  1387. package/dist/components/utility/known-date/known-date.class.js.map +1 -1
  1388. package/dist/components/utility/known-date/known-date.styles.d.ts.map +1 -1
  1389. package/dist/components/utility/known-date/known-date.styles.js +5 -0
  1390. package/dist/components/utility/known-date/known-date.styles.js.map +1 -1
  1391. package/dist/components/utility/mention-popover/mention-popover.class.d.ts +51 -27
  1392. package/dist/components/utility/mention-popover/mention-popover.class.d.ts.map +1 -1
  1393. package/dist/components/utility/mention-popover/mention-popover.class.js +130 -35
  1394. package/dist/components/utility/mention-popover/mention-popover.class.js.map +1 -1
  1395. package/dist/components/utility/mention-popover/mention-popover.styles.d.ts.map +1 -1
  1396. package/dist/components/utility/mention-popover/mention-popover.styles.js +5 -1
  1397. package/dist/components/utility/mention-popover/mention-popover.styles.js.map +1 -1
  1398. package/dist/components/utility/mutation-observer/mutation-observer.class.d.ts.map +1 -1
  1399. package/dist/components/utility/mutation-observer/mutation-observer.class.js +8 -22
  1400. package/dist/components/utility/mutation-observer/mutation-observer.class.js.map +1 -1
  1401. package/dist/components/utility/mutation-observer/mutation-observer.styles.d.ts +1 -1
  1402. package/dist/components/utility/mutation-observer/mutation-observer.styles.d.ts.map +1 -1
  1403. package/dist/components/utility/mutation-observer/mutation-observer.styles.js +1 -7
  1404. package/dist/components/utility/mutation-observer/mutation-observer.styles.js.map +1 -1
  1405. package/dist/components/utility/poll-status/poll-status.class.d.ts +6 -4
  1406. package/dist/components/utility/poll-status/poll-status.class.d.ts.map +1 -1
  1407. package/dist/components/utility/poll-status/poll-status.class.js +23 -21
  1408. package/dist/components/utility/poll-status/poll-status.class.js.map +1 -1
  1409. package/dist/components/utility/poll-status/poll-status.styles.d.ts.map +1 -1
  1410. package/dist/components/utility/poll-status/poll-status.styles.js +9 -1
  1411. package/dist/components/utility/poll-status/poll-status.styles.js.map +1 -1
  1412. package/dist/components/utility/random-content/random-content.class.d.ts +30 -9
  1413. package/dist/components/utility/random-content/random-content.class.d.ts.map +1 -1
  1414. package/dist/components/utility/random-content/random-content.class.js +196 -24
  1415. package/dist/components/utility/random-content/random-content.class.js.map +1 -1
  1416. package/dist/components/utility/random-content/random-content.styles.d.ts.map +1 -1
  1417. package/dist/components/utility/random-content/random-content.styles.js +22 -0
  1418. package/dist/components/utility/random-content/random-content.styles.js.map +1 -1
  1419. package/dist/components/utility/resize-observer/resize-observer.class.d.ts.map +1 -1
  1420. package/dist/components/utility/resize-observer/resize-observer.class.js +3 -4
  1421. package/dist/components/utility/resize-observer/resize-observer.class.js.map +1 -1
  1422. package/dist/components/utility/resize-observer/resize-observer.styles.d.ts +1 -1
  1423. package/dist/components/utility/resize-observer/resize-observer.styles.d.ts.map +1 -1
  1424. package/dist/components/utility/resize-observer/resize-observer.styles.js +1 -10
  1425. package/dist/components/utility/resize-observer/resize-observer.styles.js.map +1 -1
  1426. package/dist/components/utility/tour/tour.class.d.ts +14 -19
  1427. package/dist/components/utility/tour/tour.class.d.ts.map +1 -1
  1428. package/dist/components/utility/tour/tour.class.js +116 -51
  1429. package/dist/components/utility/tour/tour.class.js.map +1 -1
  1430. package/dist/components/utility/tour/tour.styles.d.ts.map +1 -1
  1431. package/dist/components/utility/tour/tour.styles.js +7 -0
  1432. package/dist/components/utility/tour/tour.styles.js.map +1 -1
  1433. package/dist/components/viewers/archive-viewer/archive-viewer.class.d.ts +5 -3
  1434. package/dist/components/viewers/archive-viewer/archive-viewer.class.d.ts.map +1 -1
  1435. package/dist/components/viewers/archive-viewer/archive-viewer.class.js +91 -14
  1436. package/dist/components/viewers/archive-viewer/archive-viewer.class.js.map +1 -1
  1437. package/dist/components/viewers/archive-viewer/zip-resource-guard.d.ts +36 -0
  1438. package/dist/components/viewers/archive-viewer/zip-resource-guard.d.ts.map +1 -0
  1439. package/dist/components/viewers/archive-viewer/zip-resource-guard.js +261 -0
  1440. package/dist/components/viewers/archive-viewer/zip-resource-guard.js.map +1 -0
  1441. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts +4 -1
  1442. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts.map +1 -1
  1443. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js +44 -11
  1444. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js.map +1 -1
  1445. package/dist/components/viewers/calendar-viewer/calendar-viewer.js +13 -2
  1446. package/dist/components/viewers/calendar-viewer/calendar-viewer.js.map +1 -1
  1447. package/dist/components/viewers/contact-viewer/contact-viewer.class.d.ts +7 -1
  1448. package/dist/components/viewers/contact-viewer/contact-viewer.class.d.ts.map +1 -1
  1449. package/dist/components/viewers/contact-viewer/contact-viewer.class.js +67 -9
  1450. package/dist/components/viewers/contact-viewer/contact-viewer.class.js.map +1 -1
  1451. package/dist/components/viewers/contact-viewer/contact-viewer.js +7 -0
  1452. package/dist/components/viewers/contact-viewer/contact-viewer.js.map +1 -1
  1453. package/dist/components/viewers/contact-viewer/contact-viewer.styles.d.ts.map +1 -1
  1454. package/dist/components/viewers/contact-viewer/contact-viewer.styles.js +2 -0
  1455. package/dist/components/viewers/contact-viewer/contact-viewer.styles.js.map +1 -1
  1456. package/dist/components/viewers/contact-viewer/vcard.d.ts +1 -1
  1457. package/dist/components/viewers/contact-viewer/vcard.d.ts.map +1 -1
  1458. package/dist/components/viewers/contact-viewer/vcard.js +9 -2
  1459. package/dist/components/viewers/contact-viewer/vcard.js.map +1 -1
  1460. package/dist/components/viewers/csv-viewer/csv-viewer.class.d.ts +17 -10
  1461. package/dist/components/viewers/csv-viewer/csv-viewer.class.d.ts.map +1 -1
  1462. package/dist/components/viewers/csv-viewer/csv-viewer.class.js +102 -54
  1463. package/dist/components/viewers/csv-viewer/csv-viewer.class.js.map +1 -1
  1464. package/dist/components/viewers/csv-viewer/csv-viewer.d.ts +1 -0
  1465. package/dist/components/viewers/csv-viewer/csv-viewer.d.ts.map +1 -1
  1466. package/dist/components/viewers/csv-viewer/csv-viewer.js +1 -0
  1467. package/dist/components/viewers/csv-viewer/csv-viewer.js.map +1 -1
  1468. package/dist/components/viewers/csv-viewer/csv-viewer.styles.js +6 -6
  1469. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +17 -15
  1470. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts.map +1 -1
  1471. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +127 -53
  1472. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js.map +1 -1
  1473. package/dist/components/viewers/dataset-viewer/dataset-viewer.d.ts +1 -0
  1474. package/dist/components/viewers/dataset-viewer/dataset-viewer.d.ts.map +1 -1
  1475. package/dist/components/viewers/dataset-viewer/dataset-viewer.js +1 -0
  1476. package/dist/components/viewers/dataset-viewer/dataset-viewer.js.map +1 -1
  1477. package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +4 -4
  1478. package/dist/components/viewers/document-compare/document-compare.class.d.ts +5 -2
  1479. package/dist/components/viewers/document-compare/document-compare.class.d.ts.map +1 -1
  1480. package/dist/components/viewers/document-compare/document-compare.class.js +4 -16
  1481. package/dist/components/viewers/document-compare/document-compare.class.js.map +1 -1
  1482. package/dist/components/viewers/document-compare/document-compare.d.ts +2 -0
  1483. package/dist/components/viewers/document-compare/document-compare.d.ts.map +1 -1
  1484. package/dist/components/viewers/document-compare/document-compare.js +2 -0
  1485. package/dist/components/viewers/document-compare/document-compare.js.map +1 -1
  1486. package/dist/components/viewers/document-compare/document-compare.styles.d.ts.map +1 -1
  1487. package/dist/components/viewers/document-compare/document-compare.styles.js +4 -0
  1488. package/dist/components/viewers/document-compare/document-compare.styles.js.map +1 -1
  1489. package/dist/components/viewers/document-preview/document-preview.class.d.ts +20 -2
  1490. package/dist/components/viewers/document-preview/document-preview.class.d.ts.map +1 -1
  1491. package/dist/components/viewers/document-preview/document-preview.class.js +128 -37
  1492. package/dist/components/viewers/document-preview/document-preview.class.js.map +1 -1
  1493. package/dist/components/viewers/document-preview/document-preview.d.ts +1 -0
  1494. package/dist/components/viewers/document-preview/document-preview.d.ts.map +1 -1
  1495. package/dist/components/viewers/document-preview/document-preview.js +1 -0
  1496. package/dist/components/viewers/document-preview/document-preview.js.map +1 -1
  1497. package/dist/components/viewers/document-preview/document-preview.styles.d.ts.map +1 -1
  1498. package/dist/components/viewers/document-preview/document-preview.styles.js +70 -12
  1499. package/dist/components/viewers/document-preview/document-preview.styles.js.map +1 -1
  1500. package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +11 -10
  1501. package/dist/components/viewers/document-viewer/document-viewer.class.d.ts.map +1 -1
  1502. package/dist/components/viewers/document-viewer/document-viewer.class.js +38 -12
  1503. package/dist/components/viewers/document-viewer/document-viewer.class.js.map +1 -1
  1504. package/dist/components/viewers/document-viewer/document-viewer.d.ts +1 -0
  1505. package/dist/components/viewers/document-viewer/document-viewer.d.ts.map +1 -1
  1506. package/dist/components/viewers/document-viewer/document-viewer.js +1 -0
  1507. package/dist/components/viewers/document-viewer/document-viewer.js.map +1 -1
  1508. package/dist/components/viewers/docx-viewer/docx-resource-guard.d.ts +10 -0
  1509. package/dist/components/viewers/docx-viewer/docx-resource-guard.d.ts.map +1 -0
  1510. package/dist/components/viewers/docx-viewer/docx-resource-guard.js +18 -0
  1511. package/dist/components/viewers/docx-viewer/docx-resource-guard.js.map +1 -0
  1512. package/dist/components/viewers/docx-viewer/docx-viewer.class.d.ts +13 -0
  1513. package/dist/components/viewers/docx-viewer/docx-viewer.class.d.ts.map +1 -1
  1514. package/dist/components/viewers/docx-viewer/docx-viewer.class.js +62 -7
  1515. package/dist/components/viewers/docx-viewer/docx-viewer.class.js.map +1 -1
  1516. package/dist/components/viewers/docx-viewer/docx-viewer.styles.js +15 -15
  1517. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.d.ts +1 -0
  1518. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.d.ts.map +1 -1
  1519. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +93 -34
  1520. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js.map +1 -1
  1521. package/dist/components/viewers/ebook-viewer/epub-resource-guard.d.ts +10 -0
  1522. package/dist/components/viewers/ebook-viewer/epub-resource-guard.d.ts.map +1 -0
  1523. package/dist/components/viewers/ebook-viewer/epub-resource-guard.js +18 -0
  1524. package/dist/components/viewers/ebook-viewer/epub-resource-guard.js.map +1 -0
  1525. package/dist/components/viewers/email-viewer/email-viewer.class.d.ts +10 -0
  1526. package/dist/components/viewers/email-viewer/email-viewer.class.d.ts.map +1 -1
  1527. package/dist/components/viewers/email-viewer/email-viewer.class.js +116 -47
  1528. package/dist/components/viewers/email-viewer/email-viewer.class.js.map +1 -1
  1529. package/dist/components/viewers/email-viewer/email-viewer.js +13 -3
  1530. package/dist/components/viewers/email-viewer/email-viewer.js.map +1 -1
  1531. package/dist/components/viewers/geojson-view/geojson-view.class.d.ts +6 -8
  1532. package/dist/components/viewers/geojson-view/geojson-view.class.d.ts.map +1 -1
  1533. package/dist/components/viewers/geojson-view/geojson-view.class.js +239 -67
  1534. package/dist/components/viewers/geojson-view/geojson-view.class.js.map +1 -1
  1535. package/dist/components/viewers/geojson-view/geojson-view.js +7 -0
  1536. package/dist/components/viewers/geojson-view/geojson-view.js.map +1 -1
  1537. package/dist/components/viewers/highlight-layer/highlight-layer-timing.d.ts +2 -0
  1538. package/dist/components/viewers/highlight-layer/highlight-layer-timing.d.ts.map +1 -0
  1539. package/dist/components/viewers/highlight-layer/highlight-layer-timing.js +31 -0
  1540. package/dist/components/viewers/highlight-layer/highlight-layer-timing.js.map +1 -0
  1541. package/dist/components/viewers/highlight-layer/highlight-layer.class.d.ts +28 -5
  1542. package/dist/components/viewers/highlight-layer/highlight-layer.class.d.ts.map +1 -1
  1543. package/dist/components/viewers/highlight-layer/highlight-layer.class.js +206 -62
  1544. package/dist/components/viewers/highlight-layer/highlight-layer.class.js.map +1 -1
  1545. package/dist/components/viewers/highlight-layer/highlight-layer.styles.d.ts.map +1 -1
  1546. package/dist/components/viewers/highlight-layer/highlight-layer.styles.js +84 -21
  1547. package/dist/components/viewers/highlight-layer/highlight-layer.styles.js.map +1 -1
  1548. package/dist/components/viewers/html-viewer/html-viewer.class.d.ts +2 -0
  1549. package/dist/components/viewers/html-viewer/html-viewer.class.d.ts.map +1 -1
  1550. package/dist/components/viewers/html-viewer/html-viewer.class.js +23 -3
  1551. package/dist/components/viewers/html-viewer/html-viewer.class.js.map +1 -1
  1552. package/dist/components/viewers/include/include.class.d.ts +2 -0
  1553. package/dist/components/viewers/include/include.class.d.ts.map +1 -1
  1554. package/dist/components/viewers/include/include.class.js +19 -1
  1555. package/dist/components/viewers/include/include.class.js.map +1 -1
  1556. package/dist/components/viewers/notebook-viewer/dompurify-loader.js.map +1 -1
  1557. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.d.ts +15 -13
  1558. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.d.ts.map +1 -1
  1559. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +255 -41
  1560. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js.map +1 -1
  1561. package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.d.ts.map +1 -1
  1562. package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +17 -0
  1563. package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js.map +1 -1
  1564. package/dist/components/viewers/page-rail/page-rail.class.d.ts +8 -3
  1565. package/dist/components/viewers/page-rail/page-rail.class.d.ts.map +1 -1
  1566. package/dist/components/viewers/page-rail/page-rail.class.js +96 -26
  1567. package/dist/components/viewers/page-rail/page-rail.class.js.map +1 -1
  1568. package/dist/components/viewers/page-rail/page-rail.d.ts +3 -0
  1569. package/dist/components/viewers/page-rail/page-rail.d.ts.map +1 -1
  1570. package/dist/components/viewers/page-rail/page-rail.js +3 -0
  1571. package/dist/components/viewers/page-rail/page-rail.js.map +1 -1
  1572. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +3 -3
  1573. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts.map +1 -1
  1574. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +198 -46
  1575. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js.map +1 -1
  1576. package/dist/components/viewers/pdf-viewer/pdf-viewer.d.ts +3 -0
  1577. package/dist/components/viewers/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  1578. package/dist/components/viewers/pdf-viewer/pdf-viewer.js +3 -0
  1579. package/dist/components/viewers/pdf-viewer/pdf-viewer.js.map +1 -1
  1580. package/dist/components/viewers/pdf-viewer/pdf-viewer.styles.d.ts.map +1 -1
  1581. package/dist/components/viewers/pdf-viewer/pdf-viewer.styles.js +11 -1
  1582. package/dist/components/viewers/pdf-viewer/pdf-viewer.styles.js.map +1 -1
  1583. package/dist/components/viewers/pptx-viewer/pptx-loader.d.ts.map +1 -1
  1584. package/dist/components/viewers/pptx-viewer/pptx-loader.js +13 -1
  1585. package/dist/components/viewers/pptx-viewer/pptx-loader.js.map +1 -1
  1586. package/dist/components/viewers/pptx-viewer/pptx-viewer.class.d.ts +0 -1
  1587. package/dist/components/viewers/pptx-viewer/pptx-viewer.class.d.ts.map +1 -1
  1588. package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js +14 -7
  1589. package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js.map +1 -1
  1590. package/dist/components/viewers/pptx-viewer/pptx-viewer.d.ts +1 -0
  1591. package/dist/components/viewers/pptx-viewer/pptx-viewer.d.ts.map +1 -1
  1592. package/dist/components/viewers/pptx-viewer/pptx-viewer.js +1 -0
  1593. package/dist/components/viewers/pptx-viewer/pptx-viewer.js.map +1 -1
  1594. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.d.ts +12 -7
  1595. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.d.ts.map +1 -1
  1596. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +144 -44
  1597. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js.map +1 -1
  1598. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.d.ts +2 -0
  1599. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.d.ts.map +1 -1
  1600. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.js +2 -0
  1601. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.js.map +1 -1
  1602. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.styles.d.ts.map +1 -1
  1603. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.styles.js +7 -11
  1604. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.styles.js.map +1 -1
  1605. package/dist/components/viewers/spreadsheet-viewer/xlsx-resource-guard.d.ts +17 -0
  1606. package/dist/components/viewers/spreadsheet-viewer/xlsx-resource-guard.d.ts.map +1 -0
  1607. package/dist/components/viewers/spreadsheet-viewer/xlsx-resource-guard.js +26 -0
  1608. package/dist/components/viewers/spreadsheet-viewer/xlsx-resource-guard.js.map +1 -0
  1609. package/dist/components/viewers/svg-viewer/svg-viewer.class.d.ts +14 -1
  1610. package/dist/components/viewers/svg-viewer/svg-viewer.class.d.ts.map +1 -1
  1611. package/dist/components/viewers/svg-viewer/svg-viewer.class.js +101 -34
  1612. package/dist/components/viewers/svg-viewer/svg-viewer.class.js.map +1 -1
  1613. package/dist/components/viewers/svg-viewer/svg-viewer.d.ts +1 -0
  1614. package/dist/components/viewers/svg-viewer/svg-viewer.d.ts.map +1 -1
  1615. package/dist/components/viewers/svg-viewer/svg-viewer.js +1 -0
  1616. package/dist/components/viewers/svg-viewer/svg-viewer.js.map +1 -1
  1617. package/dist/components/viewers/svg-viewer/svg-viewer.styles.d.ts.map +1 -1
  1618. package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +66 -6
  1619. package/dist/components/viewers/svg-viewer/svg-viewer.styles.js.map +1 -1
  1620. package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts +4 -0
  1621. package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts.map +1 -1
  1622. package/dist/components/viewers/xml-viewer/xml-viewer.class.js +0 -0
  1623. package/dist/components/viewers/xml-viewer/xml-viewer.class.js.map +1 -1
  1624. package/dist/internal/anchor-target.d.ts.map +1 -1
  1625. package/dist/internal/anchor-target.js +7 -3
  1626. package/dist/internal/anchor-target.js.map +1 -1
  1627. package/dist/internal/anchored-popover-controller.d.ts +10 -0
  1628. package/dist/internal/anchored-popover-controller.d.ts.map +1 -0
  1629. package/dist/internal/anchored-popover-controller.js +17 -0
  1630. package/dist/internal/anchored-popover-controller.js.map +1 -0
  1631. package/dist/internal/aria-controls.d.ts +12 -0
  1632. package/dist/internal/aria-controls.d.ts.map +1 -0
  1633. package/dist/internal/aria-controls.js +33 -0
  1634. package/dist/internal/aria-controls.js.map +1 -0
  1635. package/dist/internal/catalog-picker.d.ts +12 -0
  1636. package/dist/internal/catalog-picker.d.ts.map +1 -0
  1637. package/dist/internal/catalog-picker.js +17 -0
  1638. package/dist/internal/catalog-picker.js.map +1 -0
  1639. package/dist/internal/converters.d.ts +22 -0
  1640. package/dist/internal/converters.d.ts.map +1 -0
  1641. package/dist/internal/converters.js +38 -0
  1642. package/dist/internal/converters.js.map +1 -0
  1643. package/dist/internal/delimited-data.d.ts +17 -0
  1644. package/dist/internal/delimited-data.d.ts.map +1 -0
  1645. package/dist/internal/delimited-data.js +24 -0
  1646. package/dist/internal/delimited-data.js.map +1 -0
  1647. package/dist/internal/intl-cache.d.ts +8 -2
  1648. package/dist/internal/intl-cache.d.ts.map +1 -1
  1649. package/dist/internal/intl-cache.js +0 -0
  1650. package/dist/internal/intl-cache.js.map +1 -1
  1651. package/dist/internal/latest-task.d.ts +11 -0
  1652. package/dist/internal/latest-task.d.ts.map +1 -0
  1653. package/dist/internal/latest-task.js +17 -0
  1654. package/dist/internal/latest-task.js.map +1 -0
  1655. package/dist/internal/localization.d.ts +8 -1
  1656. package/dist/internal/localization.d.ts.map +1 -1
  1657. package/dist/internal/localization.js +141 -2
  1658. package/dist/internal/localization.js.map +1 -1
  1659. package/dist/internal/lyra-element.d.ts +9 -0
  1660. package/dist/internal/lyra-element.d.ts.map +1 -1
  1661. package/dist/internal/lyra-element.js +41 -0
  1662. package/dist/internal/lyra-element.js.map +1 -1
  1663. package/dist/internal/observer-wrapper.styles.d.ts +3 -0
  1664. package/dist/internal/observer-wrapper.styles.d.ts.map +1 -0
  1665. package/dist/internal/observer-wrapper.styles.js +9 -0
  1666. package/dist/internal/observer-wrapper.styles.js.map +1 -0
  1667. package/dist/internal/overlay-manager.d.ts +2 -0
  1668. package/dist/internal/overlay-manager.d.ts.map +1 -1
  1669. package/dist/internal/overlay-manager.js +4 -0
  1670. package/dist/internal/overlay-manager.js.map +1 -1
  1671. package/dist/internal/root-registration-allowlist.d.ts +1 -1
  1672. package/dist/internal/root-registration-allowlist.d.ts.map +1 -1
  1673. package/dist/internal/root-registration-allowlist.js +12 -0
  1674. package/dist/internal/root-registration-allowlist.js.map +1 -1
  1675. package/dist/internal/slotted-observer.d.ts +8 -0
  1676. package/dist/internal/slotted-observer.d.ts.map +1 -0
  1677. package/dist/internal/slotted-observer.js +11 -0
  1678. package/dist/internal/slotted-observer.js.map +1 -0
  1679. package/dist/internal/text-quote.d.ts +2 -2
  1680. package/dist/internal/text-quote.d.ts.map +1 -1
  1681. package/dist/internal/text-quote.js +175 -27
  1682. package/dist/internal/text-quote.js.map +1 -1
  1683. package/dist/internal/text-viewer-target.d.ts.map +1 -1
  1684. package/dist/internal/text-viewer-target.js +95 -8
  1685. package/dist/internal/text-viewer-target.js.map +1 -1
  1686. package/dist/lyra.d.ts +43 -3
  1687. package/dist/lyra.d.ts.map +1 -1
  1688. package/dist/lyra.js +40 -0
  1689. package/dist/lyra.js.map +1 -1
  1690. package/dist/theme/gemstones-data.d.ts +16 -0
  1691. package/dist/theme/gemstones-data.d.ts.map +1 -0
  1692. package/dist/theme/gemstones-data.js +28 -0
  1693. package/dist/theme/gemstones-data.js.map +1 -0
  1694. package/dist/theme/gemstones.d.ts +2 -15
  1695. package/dist/theme/gemstones.d.ts.map +1 -1
  1696. package/dist/theme/gemstones.js +1 -27
  1697. package/dist/theme/gemstones.js.map +1 -1
  1698. package/dist/theme/theme.d.ts +16 -4
  1699. package/dist/theme/theme.d.ts.map +1 -1
  1700. package/dist/theme/theme.js +16 -5
  1701. package/dist/theme/theme.js.map +1 -1
  1702. package/llms/components/lr-agent-eval-dashboard.md +10 -3
  1703. package/llms/components/lr-agent-run.md +7 -1
  1704. package/llms/components/lr-animated-image.md +4 -0
  1705. package/llms/components/lr-app-rail-item.md +15 -7
  1706. package/llms/components/lr-app-rail.md +15 -7
  1707. package/llms/components/lr-approval-queue.md +5 -1
  1708. package/llms/components/lr-attachment-trigger.md +4 -0
  1709. package/llms/components/lr-av-player.md +2 -2
  1710. package/llms/components/lr-box-plot.md +2 -2
  1711. package/llms/components/lr-branch-picker.md +4 -0
  1712. package/llms/components/lr-breadcrumb-item.md +5 -1
  1713. package/llms/components/lr-breadcrumb.md +4 -0
  1714. package/llms/components/lr-browser-frame.md +10 -1
  1715. package/llms/components/lr-button.md +11 -3
  1716. package/llms/components/lr-card.md +6 -1
  1717. package/llms/components/lr-chart.md +27 -13
  1718. package/llms/components/lr-chat-message.md +17 -2
  1719. package/llms/components/lr-checkbox-group.md +11 -6
  1720. package/llms/components/lr-checkbox.md +1 -1
  1721. package/llms/components/lr-chip-group.md +19 -17
  1722. package/llms/components/lr-chip.md +20 -18
  1723. package/llms/components/lr-claim-evidence.md +37 -0
  1724. package/llms/components/lr-code-block-core.md +1 -3
  1725. package/llms/components/lr-code-block.md +6 -6
  1726. package/llms/components/lr-code-editor.md +6 -1
  1727. package/llms/components/lr-color-picker.md +8 -1
  1728. package/llms/components/lr-combobox.md +9 -3
  1729. package/llms/components/lr-command-palette.md +8 -1
  1730. package/llms/components/lr-compare-panel.md +2 -1
  1731. package/llms/components/lr-context-meter.md +15 -7
  1732. package/llms/components/lr-copy-button.md +4 -0
  1733. package/llms/components/lr-csv-viewer.md +6 -4
  1734. package/llms/components/lr-dashboard-grid.md +5 -1
  1735. package/llms/components/lr-date-input.md +16 -4
  1736. package/llms/components/lr-date-picker.md +16 -4
  1737. package/llms/components/lr-diff-view.md +22 -9
  1738. package/llms/components/lr-dock-panel.md +4 -2
  1739. package/llms/components/lr-document-compare.md +35 -4
  1740. package/llms/components/lr-document-preview.md +12 -4
  1741. package/llms/components/lr-document-viewer.md +5 -4
  1742. package/llms/components/lr-docx-viewer.md +12 -1
  1743. package/llms/components/lr-dropdown-item.md +6 -2
  1744. package/llms/components/lr-ebook-viewer.md +4 -0
  1745. package/llms/components/lr-email-viewer.md +2 -2
  1746. package/llms/components/lr-embedding-explorer.md +4 -1
  1747. package/llms/components/lr-emoji-picker.md +12 -3
  1748. package/llms/components/lr-export-button.md +4 -2
  1749. package/llms/components/lr-file-input.md +6 -6
  1750. package/llms/components/lr-filter-bar.md +19 -4
  1751. package/llms/components/lr-flag.md +5 -1
  1752. package/llms/components/lr-flow-canvas.md +15 -6
  1753. package/llms/components/lr-flow-minimap.md +8 -3
  1754. package/llms/components/lr-geojson-view.md +3 -1
  1755. package/llms/components/lr-graph-query-builder.md +10 -1
  1756. package/llms/components/lr-graph.md +3 -3
  1757. package/llms/components/lr-grounding-summary.md +10 -6
  1758. package/llms/components/lr-highlight-layer.md +17 -3
  1759. package/llms/components/lr-icon-button.md +14 -6
  1760. package/llms/components/lr-image-comparer.md +2 -0
  1761. package/llms/components/lr-image-viewer.md +13 -7
  1762. package/llms/components/lr-include.md +5 -4
  1763. package/llms/components/lr-ingestion-queue.md +5 -3
  1764. package/llms/components/lr-input.md +7 -2
  1765. package/llms/components/lr-json-viewer.md +17 -7
  1766. package/llms/components/lr-kbd.md +7 -5
  1767. package/llms/components/lr-known-date.md +4 -0
  1768. package/llms/components/lr-locale-picker.md +10 -1
  1769. package/llms/components/lr-map.md +13 -3
  1770. package/llms/components/lr-markdown-core.md +11 -1
  1771. package/llms/components/lr-markdown.md +11 -1
  1772. package/llms/components/lr-mcp-app.md +51 -0
  1773. package/llms/components/lr-media-card.md +3 -0
  1774. package/llms/components/lr-mention-popover.md +41 -22
  1775. package/llms/components/lr-menu-item.md +6 -2
  1776. package/llms/components/lr-menu.md +6 -2
  1777. package/llms/components/lr-message-parts.md +59 -0
  1778. package/llms/components/lr-notebook-viewer.md +16 -11
  1779. package/llms/components/lr-option.md +8 -2
  1780. package/llms/components/lr-pagination.md +6 -1
  1781. package/llms/components/lr-pdf-viewer.md +1 -1
  1782. package/llms/components/lr-phone-input.md +15 -4
  1783. package/llms/components/lr-playback.md +2 -2
  1784. package/llms/components/lr-popover.md +4 -2
  1785. package/llms/components/lr-progress-bar.md +7 -1
  1786. package/llms/components/lr-progress-ring.md +1 -1
  1787. package/llms/components/lr-prompt-input.md +56 -0
  1788. package/llms/components/lr-prompt-queue.md +35 -0
  1789. package/llms/components/lr-prompt-studio.md +53 -0
  1790. package/llms/components/lr-push-to-talk.md +5 -0
  1791. package/llms/components/lr-query-builder.md +8 -2
  1792. package/llms/components/lr-rag-answer.md +3 -2
  1793. package/llms/components/lr-rag-eval-dashboard.md +46 -0
  1794. package/llms/components/lr-random-content.md +7 -4
  1795. package/llms/components/lr-rating.md +6 -0
  1796. package/llms/components/lr-realtime-session.md +41 -0
  1797. package/llms/components/lr-retrieval-compare.md +37 -0
  1798. package/llms/components/lr-retrieval-trace.md +3 -2
  1799. package/llms/components/lr-rubric-form.md +4 -1
  1800. package/llms/components/lr-schema-viewer.md +48 -0
  1801. package/llms/components/lr-segmented.md +7 -1
  1802. package/llms/components/lr-select.md +12 -14
  1803. package/llms/components/lr-selection-toolbar.md +44 -0
  1804. package/llms/components/lr-slider.md +9 -2
  1805. package/llms/components/lr-source-card.md +4 -5
  1806. package/llms/components/lr-source-list.md +4 -5
  1807. package/llms/components/lr-source-picker.md +4 -4
  1808. package/llms/components/lr-split.md +4 -2
  1809. package/llms/components/lr-spreadsheet-viewer.md +6 -4
  1810. package/llms/components/lr-stat.md +2 -1
  1811. package/llms/components/lr-stepper.md +13 -13
  1812. package/llms/components/lr-stream-status.md +4 -4
  1813. package/llms/components/lr-streaming-text.md +1 -1
  1814. package/llms/components/lr-subagent-panel.md +43 -0
  1815. package/llms/components/lr-svg-viewer.md +9 -2
  1816. package/llms/components/lr-swatch-picker.md +12 -5
  1817. package/llms/components/lr-switch.md +1 -1
  1818. package/llms/components/lr-table.md +61 -9
  1819. package/llms/components/lr-terminal.md +6 -1
  1820. package/llms/components/lr-textarea.md +8 -2
  1821. package/llms/components/lr-time-range.md +30 -10
  1822. package/llms/components/lr-toast-item.md +4 -6
  1823. package/llms/components/lr-toast.md +4 -6
  1824. package/llms/components/lr-token-input.md +17 -3
  1825. package/llms/components/lr-tool-result-dialog.md +12 -1
  1826. package/llms/components/lr-tool-timeline.md +12 -1
  1827. package/llms/components/lr-trace-tree.md +12 -1
  1828. package/llms/components/lr-tree-node.md +18 -6
  1829. package/llms/components/lr-tree.md +18 -6
  1830. package/llms/components/lr-virtual-list.md +1 -1
  1831. package/llms/components/lr-voice-picker.md +13 -1
  1832. package/llms/components/lr-widget-renderer.md +2 -1
  1833. package/llms/components/lr-widget.md +13 -7
  1834. package/llms/components/lr-xml-viewer.md +6 -4
  1835. package/llms/index.md +17 -5
  1836. package/llms/peers.md +15 -8
  1837. package/llms/shared.md +72 -18
  1838. package/llms-full.txt +1445 -337
  1839. package/llms.txt +6 -5
  1840. package/package.json +48 -14
  1841. package/vscode-css-data.json +1441 -97
  1842. package/vscode-html-data.json +877 -194
  1843. package/web-types.json +1712 -218
package/llms-full.txt CHANGED
@@ -7,7 +7,7 @@ Agent UI. Selected components retain documented Web Awesome-compatible public na
7
7
  prefix to make migration easier, but Lyra has its own implementation, design tokens, localization
8
8
  runtime, RTL behavior, and release surface. It has no runtime dependency on either project.
9
9
 
10
- **This file is the whole catalog concatenated — 251 components, several hundred thousand tokens.**
10
+ **This file is the whole catalog concatenated — several hundred thousand tokens.**
11
11
  Read it end to end only if you genuinely need everything. Otherwise:
12
12
 
13
13
  | To… | Read |
@@ -39,9 +39,9 @@ family and entry point.
39
39
  - **Media, files & maps** — 18 tags in `components/media/`
40
40
  - **Charts** — 12 tags in `components/charts/`
41
41
  - **Document & file viewers** — 22 tags in `components/viewers/`
42
- - **Conversation & chat UI** — 28 tags in `components/conversation/`
43
- - **Agent tooling, tool calls & evaluation** — 31 tags in `components/agent-tools/`
44
- - **Retrieval, knowledge graph & grounding** — 27 tags in `components/retrieval/`
42
+ - **Conversation & chat UI** — 33 tags in `components/conversation/`
43
+ - **Agent tooling, tool calls & evaluation** — 35 tags in `components/agent-tools/`
44
+ - **Retrieval, knowledge graph & grounding** — 30 tags in `components/retrieval/`
45
45
  - **Reference tables** — design tokens (`llms/tokens.md`), optional peers (`llms/peers.md`), `wa-*`/`sl-*` migration (`llms/migration.md`)
46
46
 
47
47
  ---
@@ -58,7 +58,7 @@ import '@aceshooting/lyra-ui/components/forms/combobox/combobox.js'; // register
58
58
  import '@aceshooting/lyra-ui/components/data/table/table.js'; // registers <lr-table>
59
59
  ```
60
60
 
61
- `llms/index.md` lists the exact path for all 251 tags. A wrong or missing family segment is a hard
61
+ `llms/index.md` lists the exact path for every tag. A wrong or missing family segment is a hard
62
62
  module-resolution failure, not a silent no-op — `exports` maps `./components/*` straight onto
63
63
  `./dist/components/*`.
64
64
 
@@ -71,8 +71,22 @@ module-resolution failure, not a silent no-op — `exports` maps `./components/*
71
71
  `lr-bar-chart`, `lr-pie-chart`, `lr-doughnut-chart`, `lr-radar-chart`, `lr-polar-area-chart`,
72
72
  `lr-bubble-chart`, `lr-scatter-chart`), `lr-box-plot`, `lr-histogram`, `lr-map`, `lr-graph`,
73
73
  `lr-knowledge-graph-explorer`, and `lr-geojson-view`. Those always need their own subpath import.
74
- The barrel also re-exports every class and type (every `Lyra*EventMap` type included), so it is the
75
- one import that defeats tree-shaking prefer per-component entries in application code.
74
+ The barrel also re-exports a broad compatibility surface of commonly used classes, helpers, and
75
+ types, but it is not an exhaustive promise that every component-owned type or future export is
76
+ present. It is the one import that defeats tree-shaking — prefer the owning component entry in
77
+ application code, both for the smallest bundle and the complete contract of that component.
78
+ - **Document anchor/highlight types.** The granular document-viewer entry owns and exports
79
+ `LyraAnchor`, `LyraAnchorKind`, `LyraHighlight`, `LyraHighlightTone`,
80
+ `AnchorTargetCapabilities`, `HighlightActivateDetail`, `TextSelectDetail`, and
81
+ `AnchorResultDetail`:
82
+ ```ts
83
+ import type {
84
+ LyraAnchor,
85
+ LyraHighlight,
86
+ AnchorTargetCapabilities,
87
+ } from '@aceshooting/lyra-ui/components/viewers/document-viewer/document-viewer.js';
88
+ ```
89
+ Use that entry instead of depending on incidental root-barrel coverage.
76
90
  - **`lr-flag`** registers from the barrel, but resolving a flag by `country`/`language` (rather than
77
91
  a pre-resolved `src`) additionally needs
78
92
  `import '@aceshooting/lyra-ui/components/media/flag/flag-peer.js';` once.
@@ -310,8 +324,12 @@ setLyraTheme({ mode: 'auto', accent: null }); // clears the override and the
310
324
 
311
325
  **No-flash bootstrap.** `lyraThemeBootstrap` is a self-contained IIFE **string** (not a function),
312
326
  meant to be inlined into a `<script>` in `<head>` **before any stylesheet**, so the persisted theme
313
- is on the root element before first paint. It is a string precisely so this can happen in an
314
- unbundled `<script>` context without shipping or parsing the module:
327
+ is on the root element before first paint. It reads `localStorage['lyra-theme']`.
328
+ `createLyraThemeBootstrap({ storageKey })` returns the same kind of string for an application-owned
329
+ key, so an existing persistence layer can reuse the pre-paint half independently of
330
+ `setLyraTheme()`/`getLyraTheme()`. Calling the factory with no options returns the same string as
331
+ `lyraThemeBootstrap`. The result is a string precisely so this can happen in an unbundled
332
+ `<script>` context without shipping or parsing the module:
315
333
 
316
334
  ```html
317
335
  <head>
@@ -320,9 +338,9 @@ unbundled `<script>` context without shipping or parsing the module:
320
338
  </head>
321
339
  ```
322
340
 
323
- It reads the same storage key, applies the same two attributes and `--lr-theme-accent`, and
324
- swallows any error — malformed storage or a blocked `localStorage` leaves the document untouched
325
- rather than throwing before your app loads.
341
+ Both variants expect a stored `{ mode, accent }` record, apply the same two attributes and
342
+ `--lr-theme-accent`, and swallow any error — malformed storage or a blocked `localStorage` leaves
343
+ the document untouched rather than throwing before your app loads.
326
344
 
327
345
  **This runtime does no color math.** It stores and applies whatever accent string you give it; it
328
346
  does not validate the value, compute a palette from it, or check contrast against any surface.
@@ -389,13 +407,29 @@ instead of hand-rolling state shapes — they bind field-for-field onto the comp
389
407
  adapter layer:
390
408
 
391
409
  ```ts
392
- import type { AgentRun, ChatMessage, ToolInvocation, RetrievalChunk } from '@aceshooting/lyra-ui/ai';
410
+ import {
411
+ createAgentStreamState,
412
+ reduceAgentStream,
413
+ adaptAiSdkStream,
414
+ adaptAgUiEvents,
415
+ adaptA2UiSurface,
416
+ type AgentRun,
417
+ type ChatMessage,
418
+ type MessagePart,
419
+ type RetrievalChunk,
420
+ } from '@aceshooting/lyra-ui/ai';
393
421
  ```
394
422
 
395
423
  - **Run/step state** — `AgentStatusKind`, `AgentStatus`, `AgentStep`, `AgentRun`
396
- - **Conversation** — `ChatMessage`, `ToolInvocation`
424
+ - **Conversation** — `ChatMessage`, ordered `MessagePart` variants, `ToolInvocation`
397
425
  - **Documents & grounding** — `DocumentRef`, `Citation`, `RetrievalQuery`, `RetrievalChunk`,
398
- `GroundingAssessment`
426
+ `RetrievalScoreBreakdown`, `GroundedClaim`, `GroundingAssessment`, `DocumentLocator`
427
+ - **Streaming runtime** — `AgentStreamEvent`, `AgentStreamState`, `createAgentStreamState()`,
428
+ `reduceAgentStream()`, `reduceAgentStreamEvents()`; event ids make replay/duplicate delivery
429
+ deterministic, and JSON Patch application rejects prototype-mutating paths
430
+ - **Protocol adapters** — `adaptAiSdkStream()`, `adaptAgUiEvents()`, and `adaptA2UiSurface()` map
431
+ structural provider events/documents onto the neutral runtime without pulling vendor SDKs into
432
+ the package
399
433
  - **Event payloads** — `RunLifecycleEventDetail`, `RetrievalProgressEventDetail`,
400
434
  `CitationSelectEventDetail`, `ToolApprovalEventDetail`, `CancelEventDetail`, `RetryEventDetail`,
401
435
  `ExportEventDetail`
@@ -406,15 +440,35 @@ feeds on `lr-chat-message`, `lr-tool-call-chip`, `lr-tool-result-view`, `lr-sour
406
440
  convention. The types are structural and provider-agnostic: map any vendor's payload onto them once,
407
441
  at the edge.
408
442
 
443
+ ### Task-first AI composition guide
444
+
445
+ - **Render one model response:** `lr-message-parts`; use `lr-chat-message` only when the message
446
+ shell (avatar, author, actions) is also needed.
447
+ - **Build the main prompt affordance:** `lr-prompt-input`; it already composes attachments,
448
+ model/voice/source controls, mentions/commands, and `lr-prompt-queue`.
449
+ - **Run an agent workspace:** `lr-agent-workspace` + `reduceAgentStream()`; add
450
+ `lr-subagent-panel` for nested runs and `lr-mcp-app` only for executable MCP App resources.
451
+ - **Show grounded output:** `lr-rag-answer`; pass claim records for `lr-claim-evidence`, use
452
+ `lr-retrieval-compare` for retrieval tuning and `lr-rag-eval-dashboard` for run metrics.
453
+ - **Develop prompts/tools:** `lr-prompt-studio` and `lr-schema-viewer`.
454
+ - **Build voice sessions:** `lr-realtime-session`; it composes the existing audio visualizer,
455
+ push-to-talk control, and transcript feed while leaving transport ownership with the host.
456
+
457
+ Family registration entry points are additive: importing
458
+ `@aceshooting/lyra-ui/components/conversation`, `/agent-tools`, or `/retrieval` registers and
459
+ exports that complete family. Granular component entry points remain the smallest bundles and are
460
+ preferred in production.
461
+
409
462
  ## Optional peer dependencies
410
463
 
411
- All 26 peers are optional and lazily loaded; nothing is imported eagerly. `llms/peers.md` is the
412
- generated component → peer table. The shared contract: a component resolves its peer through a
413
- dynamic `import()` on first use, rendering an `<lr-skeleton>` placeholder with `aria-busy="true"` on
414
- the host meanwhile; if the peer is genuinely absent it falls back to an empty/degraded render plus a
415
- single deduped `console.warn` it never throws and never blocks paint. `lr-phone-input` is the
416
- exception: it takes a consumer-built adapter (`loadLibphonenumberAdapter()`) rather than importing
417
- `libphonenumber-js` itself.
464
+ All 26 peers are optional and their implementations are loaded on demand; nothing is imported
465
+ eagerly. `llms/peers.md` is the generated component → peer table. Loading and failure UI is
466
+ component-specific: viewer sections document their localized loading/error/notice states, while
467
+ `lr-include` preserves its light-DOM fallback/live region and emits `lr-include-error` when its
468
+ sanitizer is unavailable. Some components additionally issue a deduped warning. Consult the owning
469
+ component section instead of assuming every peer user renders an `<lr-skeleton>` or the same
470
+ degraded state. `lr-phone-input` is the exception to dynamic peer import: it takes a consumer-built
471
+ adapter (`loadLibphonenumberAdapter()`) rather than importing `libphonenumber-js` itself.
418
472
 
419
473
  ## Framework integration
420
474
 
@@ -639,8 +693,10 @@ shared `FormAssociated` mixin — see gotchas).
639
693
  clear/pick. Forward `options.signal` to `fetch(url, { signal })` to cancel the request when a
640
694
  newer query supersedes it or the element disconnects. `loadingText` is shown while a call is in
641
695
  flight; a stale in-flight call that resolves after a newer one (or after disconnect) is dropped
642
- via a monotonic token. The `options` parameter is optional in the type, so a legacy
643
- `(query) => …` source stays assignable.)
696
+ via a monotonic token. The exported type requires the `options` parameter; an existing
697
+ one-parameter `(query) => …` function remains assignable under TypeScript's ordinary function
698
+ parameter compatibility, but consumers that need cancellation should accept and forward
699
+ `options.signal`.)
644
700
  - `sourceDelay: number = 200` (attribute `source-delay` — debounce in ms between the last keystroke
645
701
  and the `source` call; `0` fires on every keystroke. Sanitized to a finite non-negative duration,
646
702
  falling back to `200` for a non-finite value)
@@ -857,6 +913,10 @@ synchronous and fires no `input`/`change`/`lr-change` event.
857
913
  `form.reset()` default itself is captured exclusively from that very first pass; a later pick, or
858
914
  a later batch of newly-`selected` options, never redefines what a reset restores to.
859
915
 
916
+ **Additional API surface:**
917
+
918
+ - `part="tag-label"` — The wrapping/ellipsis-safe selected-tag label.
919
+
860
920
  ---
861
921
 
862
922
  ## `lr-select`
@@ -901,31 +961,29 @@ exactly like the multi-option case, until the trigger is actually activated.
901
961
  single-option auto-commit behavior described above
902
962
  - `value: string` — a getter/setter; always a single string (no `multiple` mode)
903
963
 
964
+ **Methods:** `focus(options?)`, `blur()`, and `click()` forward to the internal trigger button.
965
+
904
966
  **Events:** `change` (native-style — selection changed), `input` (fired alongside `change` on every
905
967
  selection change — a native `<select>` doesn't meaningfully distinguish the two either), and
906
968
  `lr-change` (a prefixed compatibility alias fired after both, mirroring `<lr-checkbox>`'s
907
969
  `lr-change`). All three carry `detail: { value: string }` (the new selection) and fire only on a
908
- real change, never on a programmatic `value` write. Plus `lr-show`, `lr-hide`.
970
+ real change, never on a programmatic `value` write. Plus `lr-show`, `lr-hide`, and bubbling,
971
+ composed `focus`/`blur` events re-dispatched from the internal trigger.
909
972
 
910
973
  **Slots:** default (`<lr-option>` children), `label`, `hint`, `error` (overrides the `errorText`
911
- attribute when provided)
912
-
913
- **`lr-select` deliberately has no `start`/`end` adornment slots**, unlike
914
- `lr-input`/`lr-combobox`/`lr-date-input`. Two reasons, both structural rather than incidental:
915
- its `[part='trigger']` is a native `<button>`, and HTML's content model forbids interactive
916
- descendants inside one — so the slot could only ever accept decorative content, a materially
917
- different contract from the other three that would read as the same feature; and the trigger lays
918
- out with `justify-content: space-between`, so injecting a leading element pushes the selected label
919
- into the middle of the control instead of leaving it at the start. **Instead:** put a glyph in the
920
- `label` slot, or compose the select into `<lr-control-group>` alongside the adornment.
974
+ attribute when provided), `start` (non-interactive adornment before the selected-value label), and
975
+ `end` (non-interactive adornment after the label and before the expand icon). The adornments live
976
+ inside the native trigger `<button>`, so never place links, buttons, inputs, or other interactive
977
+ content in either slot.
921
978
 
922
979
  When hint/error content is present, the trigger's `aria-describedby` references stable shadow-local
923
980
  IDs for both messages (error first, then hint), so the visible supporting text is part of the
924
981
  control's accessible description.
925
982
 
926
- **CSS parts:** `form-control`, `form-control-label`, `trigger`, `listbox`, `group-label` (a heading
927
- row emitted inside the listbox whenever an option's `group` differs from the previous one's — a
928
- presentational `<div>`, not a `role="group"`; options with an empty `group` get no heading),
983
+ **CSS parts:** `form-control`, `form-control-label`, `trigger`, `start`, `end`, `listbox`,
984
+ `group-label` (a heading row emitted inside the listbox whenever an option's `group` differs from
985
+ the previous one's — a presentational `<div>`, not a `role="group"`; options with an empty `group`
986
+ get no heading),
929
987
  `option`, `option-dot` (the leading status dot, when a row's `dotColor` is set), `option-label`,
930
988
  `option-sub` (a row's secondary line, when `sub` is set), `expand-icon`, `error`, `hint`
931
989
 
@@ -1090,9 +1148,11 @@ Text field + calendar popover, **form-associated** via the shared `FormAssociate
1090
1148
  `<input>`'s computed accessible name; wins over `label`/`placeholder`/the localized `date`
1091
1149
  fallback in that order. Attribute-reflects from a host-level `aria-label` so a plain-markup
1092
1150
  consumer gets ARIA-name forwarding without setting a JS property.
1093
- - `clearLabel: string = 'Clear'` (attribute `clear-label` — accessible label for the clear button)
1094
- - `openLabel: string = 'Open calendar'` (attribute `open-label` accessible label for the
1095
- calendar-toggle button)
1151
+ - `clearLabel: string = ''` (attribute `clear-label` — accessible label for the clear button;
1152
+ empty uses the localized `clear` message, whose English fallback is `"Clear"`)
1153
+ - `openLabel: string = ''` (attribute `open-label` — accessible label for the calendar-toggle
1154
+ button; empty uses the localized `openCalendar` message, whose English fallback is
1155
+ `"Open calendar"`)
1096
1156
  - `dialogLabel: string = 'Choose date'` (attribute `dialog-label` — accessible name for the
1097
1157
  `role="dialog"` calendar popover)
1098
1158
  - `spellcheck: boolean = true` — forwarded to the internal `<input>`
@@ -1219,6 +1279,16 @@ and `dateTimeFormat(locale, options)`.
1219
1279
  (`--lr-color-on-brand`, not a hardcoded literal — safe to override `--lr-color-brand` without
1220
1280
  losing contrast on selected-day text).
1221
1281
 
1282
+ **Additional API surface:**
1283
+
1284
+ - `--lr-date-picker-month-gap` — Gap between visible months. Default: `var(--lr-space-l)`.
1285
+ - `--lr-date-picker-header-gap` — Month-header child gap. Default: `var(--lr-space-s)`.
1286
+ - `--lr-date-picker-radius` — Calendar and control corner radius. Default: `var(--lr-radius)`.
1287
+ - `--lr-date-input-placeholder-color` — Placeholder text color. Default: `var(--lr-color-text-quiet)`.
1288
+ - `--lr-date-input-gap` — Gap between input-row children. Default: `var(--lr-space-xs)`.
1289
+ - `--lr-date-input-radius` — Input-row corner radius. Default: `var(--lr-radius)`.
1290
+ - `--lr-date-input-focus-border-color` — Focused row border color. Default: `var(--lr-color-brand)`.
1291
+
1222
1292
  ---
1223
1293
 
1224
1294
  ## lr-textarea
@@ -1304,8 +1374,10 @@ the shadow boundary.
1304
1374
 
1305
1375
  | Event | Detail | Description |
1306
1376
  | --- | --- | --- |
1307
- | `lr-input` | `{ value: string }` | Fired on every user-driven edit. |
1308
- | `lr-change` | `{ value: string }` | Fired on native `change` timing (blur after a committed edit). |
1377
+ | `input` | none | Native-style composed event fired on every user-driven edit. |
1378
+ | `change` | none | Native-style composed event fired at native `change` timing. |
1379
+ | `lr-input` | `{ value: string }` | Compatibility alias fired on every user-driven edit. |
1380
+ | `lr-change` | `{ value: string }` | Compatibility alias fired on native `change` timing (blur after a committed edit). |
1309
1381
  | `blur` | none | Re-dispatched from the internal native `<textarea>`'s own `blur` -- bubbling and composed, unlike the native event. |
1310
1382
  | `focus` | none | Re-dispatched from the internal native `<textarea>`'s own `focus`, for the same reason as `blur`. |
1311
1383
 
@@ -1338,6 +1410,10 @@ original declarative `value`, matching native `defaultValue` behavior.
1338
1410
  bound scrolls inside the native textarea. Auto-resize remeasures after user edits, programmatic
1339
1411
  `value`/`rows` changes, range edits, and container-width changes.
1340
1412
 
1413
+ **Additional API surface:**
1414
+
1415
+ - `click()` — Activates the internal textarea.
1416
+
1341
1417
  ---
1342
1418
 
1343
1419
  ## `lr-button`
@@ -1387,6 +1463,9 @@ it is neither focusable nor navigable; an unsafe/unparseable `href` falls back t
1387
1463
  - `loading: boolean = false` (reflected) — shows an internal spinner and disables the button without
1388
1464
  clearing `disabled`
1389
1465
  - `disabled: boolean = false` (reflected)
1466
+ - `accessibleLabel: string | null = null` (attribute `aria-label`) — accessible name forwarded
1467
+ reactively to the internal native button or anchor; changing or removing the attribute after
1468
+ mount updates the actual focused control
1390
1469
 
1391
1470
  The shared `m` size uses `--lr-font-size-m`. The internal button follows the host's inline size through `--lr-button-width` (default
1392
1471
  `100%`), and each size tier's `min-block-size` floor is exposed as its own token (see below).
@@ -1465,9 +1544,14 @@ box no matter what tier or override is in play.
1465
1544
  ```
1466
1545
 
1467
1546
  **Known gotchas:**
1468
- - A host `aria-label` is forwarded to the internal button as a literal string (for an icon-only
1469
- button); an external `aria-labelledby`/`aria-describedby` idref is not copied across the shadow
1470
- boundary.
1547
+ - `accessibleLabel`/a host `aria-label` is forwarded reactively to the internal button or anchor as
1548
+ a literal string (for an icon-only button); an external `aria-labelledby`/`aria-describedby`
1549
+ idref is not copied across the shadow boundary.
1550
+ - Host `aria-haspopup` and `aria-expanded` values are forwarded to the internal semantic control.
1551
+ For host `aria-controls`, targets in the host's own root are resolved through the reflected
1552
+ element-reference API so a popup relationship survives the component's shadow boundary; browsers
1553
+ without that API retain the forwarded string attribute as a best-effort fallback. This is what
1554
+ lets either button serve as an `lr-menu` trigger.
1471
1555
  - Is form-associated (`static formAssociated = true` + `attachInternals()`), so it participates in
1472
1556
  an ancestor `<form>.elements` the same way `wa-button` does — a sibling text field's own
1473
1557
  Enter-to-submit lookup (which scans `form.elements` for a `type === 'submit'` control) finds it.
@@ -1492,6 +1576,12 @@ With neither `accessibleLabel` nor `label` set, the name falls back to the local
1492
1576
  app-wide with `registerLyraLocale()` (see `llms/shared.md`); don't rely on the fallback for a
1493
1577
  button whose purpose isn't generic.
1494
1578
 
1579
+ Host `aria-haspopup` and `aria-expanded` values are forwarded reactively to the shadow-internal
1580
+ native button. Host `aria-controls` targets in the host's own root are resolved through the
1581
+ reflected element-reference API, so using `<lr-icon-button slot="trigger">` inside `<lr-menu>`
1582
+ exposes the menu relationship and expanded state on the element that actually receives focus;
1583
+ browsers without that API retain the forwarded string attribute as a best-effort fallback.
1584
+
1495
1585
  **Methods:** `focus(options?)`, `blur()` — forward to the native button. `click()` also forwards to
1496
1586
  the native button, activating it — including this component's own `type="submit"`/`type="reset"`
1497
1587
  handling, since the click goes through the same `<button>` the pointer/keyboard path does.
@@ -1530,11 +1620,13 @@ above 24px — see `llms/shared.md`. `--lr-icon-button-radius` (default `--lr-ra
1530
1620
  `--lr-button-radius` pattern; `lr-icon-button` has no `size` tiers, so there is no per-tier gap
1531
1621
  counterpart to it. `--lr-icon-button-background` (default `transparent`) tints the
1532
1622
  `[part='button']` background, `--lr-icon-button-background-hover` (default `--lr-color-surface`)
1533
- its hover-state background, and `--lr-icon-button-color` (default `inherit`) its icon/text color
1534
- the same per-component indirection `lr-button`'s `--lr-button-fill`/`--lr-button-on-fill` provide,
1535
- letting you tint a single button without a `::part(button)` rule. Left unset, each falls back to
1536
- today's value, so rendering is unchanged. There is deliberately no border-color token:
1537
- `[part='button']` sets `border: 0`, so a border color could never render.
1623
+ its hover-state background, `--lr-icon-button-color` (default `inherit`) its icon/text color,
1624
+ `--lr-icon-button-color-hover` (default `var(--lr-icon-button-color, inherit)`) its hover-state
1625
+ foreground, and `--lr-icon-button-border` (default `0`) the complete native-button border
1626
+ shorthand. These are the same per-component indirection `lr-button`'s
1627
+ `--lr-button-fill`/`--lr-button-on-fill` provide, letting a single button be bordered and tinted
1628
+ without a `::part(button)` rule. Left unset, each falls back to the original value, so rendering is
1629
+ unchanged.
1538
1630
 
1539
1631
  ## `lr-input`
1540
1632
 
@@ -1561,8 +1653,9 @@ form-associated via the same `FormAssociated` mixin as `lr-textarea`. Ships the
1561
1653
  - `inputMode: string = ''` (attribute `inputmode`) / `enterKeyHint: string = ''` (attribute
1562
1654
  `enterkeyhint`) — these four are forwarded verbatim to the native input; an empty string omits
1563
1655
  the attribute entirely
1564
- - `min?: number` / `max?: number` (attributes `min`/`max`) / `step?: number | 'any'` (attribute
1565
- `step`, accepts the native `'any'` value alongside a number) — forwarded verbatim to the native
1656
+ - `min?: number | string` / `max?: number | string` (attributes `min`/`max`) /
1657
+ `step?: number | 'any'` (attribute `step`, accepts the native `'any'` value alongside a number)
1658
+ — forwarded verbatim to the native
1566
1659
  input and validated by it. Intended for `type="number"`; `step` is equally meaningful on
1567
1660
  `type="time"`. On `lr-input` itself the `min`/`max` *attributes* are number-converted, so a
1568
1661
  non-numeric bound only survives a direct property assignment; the declared type also admits a
@@ -1664,6 +1757,10 @@ Several controls expose the same pair: a per-`size` `*-min-height` **floor**, an
1664
1757
  the empty string, and `required` is what rejects it.
1665
1758
  - `type="password"` always renders the `password-toggle` button; there is no separate opt-out.
1666
1759
 
1760
+ **Additional API surface:**
1761
+
1762
+ - `click()` — Activates the internal input.
1763
+
1667
1764
  ## `lr-number-input`
1668
1765
 
1669
1766
  A migration-friendly numeric alias of `lr-input` — a subclass whose constructor and
@@ -1828,9 +1925,9 @@ interface PhoneNumberAdapter {
1828
1925
  native telephone input.
1829
1926
  - `countryLabel: string = 'Select'` (attribute `country-label`) — country-selector accessible name;
1830
1927
  the untouched default routes through the shared localized `select` message.
1831
- - `incompleteText: string = 'The value is invalid.'` (attribute `incomplete-text`) — validation
1832
- message for dial-like input that can still become valid with more digits. The untouched default
1833
- routes through the shared localized `valueInvalid` message.
1928
+ - `incompleteText: string = 'This phone number is incomplete.'` (attribute `incomplete-text`) —
1929
+ validation message for dial-like input that can still become valid with more digits. The
1930
+ untouched default routes through the localized `phoneInputIncomplete` message.
1834
1931
  - `invalidText: string = 'The value is invalid.'` (attribute `invalid-text`) — completed-invalid
1835
1932
  message, localized through the same shared key while left at its default.
1836
1933
  - `autocomplete: string = 'tel'`, `inputmode: 'tel'|'numeric'|'text' = 'tel'`,
@@ -1937,6 +2034,17 @@ import '@aceshooting/lyra-ui/components/media/flag/flag-peer.js';
1937
2034
  via `::part` styling tricks, and don't expect the flag inside the open popup list — a native
1938
2035
  `<option>` is text-only.
1939
2036
 
2037
+ **Additional API surface:**
2038
+
2039
+ - `click()` — Activate the internal telephone input unless the form control is effectively disabled.
2040
+ - `--lr-phone-input-flag-size` — Selected flag size, scaled by `size`.
2041
+ - `--lr-phone-input-glyph-size` — Country selector glyph size, scaled by `size`.
2042
+ - `--lr-phone-input-gap` — Country-trigger child gap. Default: `var(--lr-space-xs)`.
2043
+ - `--lr-phone-input-radius` — Input-wrapper corner radius. Default: `var(--lr-radius)`.
2044
+ - `--lr-phone-input-focus-border-color` — Focused row border color. Default: `var(--lr-color-brand)`.
2045
+ - `--lr-phone-input-invalid-border-color` — Invalid row border color. Default: `var(--lr-color-danger)`.
2046
+ - `--lr-phone-input-country-hover-bg` — Country trigger hover background. Default: `var(--lr-color-brand-quiet)`.
2047
+
1940
2048
  ---
1941
2049
 
1942
2050
  ## `lr-time-range`
@@ -1960,6 +2068,11 @@ consumer-facing `disabled` property/attribute itself.
1960
2068
  - `disabled: boolean = false` (reflected)
1961
2069
  - `startLabel: string = 'Range start'` (attribute `start-label`) — `aria-label` for the start handle
1962
2070
  - `endLabel: string = 'Range end'` (attribute `end-label`) — `aria-label` for the end handle
2071
+ - `valueFormatter?: TimeRangeValueFormatter` (attribute: false) — maps each finite, clamped
2072
+ `aria-valuenow` to optional human-readable `aria-valuetext`; called as
2073
+ `(value, handle: TimeRangeHandle)`, where `TimeRangeHandle = 'start' | 'end'`. The formatter may
2074
+ return `string | null | undefined`; a nullish result omits `aria-valuetext` for that handle.
2075
+ Leaving the property unset preserves the numeric-only contract
1963
2076
  - `presets: TimeRangePreset[] = []` (attribute: false) — `TimeRangePreset { label: string; start:
1964
2077
  number; end: number }`; optional discrete presets (e.g. "Last 7 days") rendered as a
1965
2078
  `[part="presets"]` button row above the track — purely additive, the continuous brush is
@@ -1975,8 +2088,9 @@ key-up-commit, or when a preset button is clicked, `detail: { start, end }`)
1975
2088
  **CSS parts:** `base`, `track`, `range`, `handle-start`, `handle-end`, `presets`, `preset-button`
1976
2089
 
1977
2090
  **Themeable custom properties:** mostly shared tokens — `--lr-color-border`, `--lr-color-brand`,
1978
- `--lr-color-surface`, `--lr-shadow` (track/handles), `--lr-opacity-disabled` (`:host([disabled])`
1979
- dimming), plus (for `presets`) `--lr-color-text`, `--lr-color-on-brand` (the active preset
2091
+ `--lr-color-surface`, `--lr-shadow` (track/handles), `--lr-opacity-disabled` (`:host(:disabled)`
2092
+ dimming, including ancestor-fieldset disablement), plus (for `presets`) `--lr-color-text`,
2093
+ `--lr-color-on-brand` (the active preset
1980
2094
  button's text), `--lr-radius`, `--lr-space-xs/-s`, `--lr-transition-fast`,
1981
2095
  `--lr-focus-ring-*`.
1982
2096
 
@@ -2003,10 +2117,13 @@ any ancestor of the `<lr-time-range>` therefore reaches it. (The same technique
2003
2117
  **Optional peer deps:** none.
2004
2118
 
2005
2119
  ```html
2006
- <lr-time-range min="0" max="1440" start="480" end="1020" step="15"></lr-time-range>
2120
+ <lr-time-range id="months" min="0" max="2" start="0" end="2"></lr-time-range>
2007
2121
  <script>
2008
- document.querySelector('lr-time-range')
2009
- .addEventListener('lr-change', (e) => console.log(e.detail.start, e.detail.end));
2122
+ const months = ['April 2023', 'May 2023', 'June 2023'];
2123
+ const range = document.getElementById('months');
2124
+ range.valueFormatter = (value, handle) =>
2125
+ `${handle === 'start' ? 'From' : 'Through'} ${months[value]}`;
2126
+ range.addEventListener('lr-change', (e) => console.log(e.detail.start, e.detail.end));
2010
2127
  </script>
2011
2128
  ```
2012
2129
 
@@ -2023,9 +2140,9 @@ any ancestor of the `<lr-time-range>` therefore reaches it. (The same technique
2023
2140
  slider.
2024
2141
  - `aria-valuemin`/`aria-valuemax` on each handle report that handle's reachable sub-range (bounded by
2025
2142
  its sibling), not the full domain — matching what Home/End actually jump to.
2026
- - No `aria-valuetext`: only raw numeric `aria-valuenow` is exposed (omitted entirely, rather than a
2027
- literal `"NaN"`, if `start`/`end` is non-finite), no hook for a human-readable (e.g. formatted
2028
- date/time) equivalent of the mapped domain.
2143
+ - `valueFormatter` is presentation-only: `aria-valuenow`, geometry, emitted values, and preset
2144
+ matching stay numeric. Non-finite handles omit both `aria-valuenow` and `aria-valuetext` and are
2145
+ never passed to the formatter.
2029
2146
  - Handles a `min > max` domain, a non-positive/non-finite `step`, and disabled-mid-drag/
2030
2147
  disconnect-mid-drag correctly (tested) — safe to rely on those edge cases. Concurrent drags are
2031
2148
  tracked per `pointerId` (not a single scalar), so a two-finger touch — one finger per handle —
@@ -2035,12 +2152,23 @@ any ancestor of the `<lr-time-range>` therefore reaches it. (The same technique
2035
2152
  - Non-finite domain/handle values use finite fallback geometry, and non-finite or negative steps are
2036
2153
  treated as unstepped; invalid values never become `NaN`/`Infinity` CSS or ARIA strings.
2037
2154
  - `startLabel`/`endLabel` only override each handle's `aria-label`; they don't affect
2038
- `aria-valuenow`/`aria-valuemin`/`aria-valuemax` (still raw numbers) or any visible text.
2155
+ `aria-valuenow`/`aria-valuemin`/`aria-valuemax`, `valueFormatter`, or any visible text.
2039
2156
  - An ancestor `<fieldset disabled>` toggling is reflected via `formDisabledCallback` into
2040
2157
  `effectiveDisabled` (tracked separately from the consumer's own `disabled`), so re-enabling the
2041
2158
  fieldset correctly restores a handle that had `disabled` set explicitly by the consumer, and vice
2042
2159
  versa — mirrors `lr-combobox`'s identical pattern.
2043
2160
 
2161
+ **Additional API surface:**
2162
+
2163
+ - `--lr-time-range-handle-size` — Visible handle diameter. Default: `14px*scale`.
2164
+ - `--lr-time-range-hit-size` — Actual drag hit-area diameter; endpoint handles are inset by half this distance so the hit geometry stays inside the host. Default: `max(24px,28px*scale)`.
2165
+ - `--lr-time-range-track-size` — Track and selected-range thickness. Default: `4px*scale`.
2166
+ - `--lr-time-range-base-size` — Brush baseline block size. Default: `1.5rem*scale`.
2167
+ - `--lr-time-range-preset-gap` — Gap between preset buttons. Default: `var(--lr-space-xs)`.
2168
+ - `--lr-time-range-preset-radius` — Preset button corner radius. Default: `var(--lr-radius)`.
2169
+ - `--lr-time-range-preset-padding` — Preset button padding, scaled by `size`.
2170
+ - `--lr-time-range-preset-font-size` — Preset button font size, scaled by `size`.
2171
+
2044
2172
  ---
2045
2173
 
2046
2174
  ## `lr-swatch-picker`
@@ -2080,7 +2208,8 @@ swatch's interactive hit target, sized via `--lr-swatch-picker-hit-size` — def
2080
2208
  `[part='swatch'][aria-checked='true']`), `swatch-fill` (the filled circle inside it, sized via
2081
2209
  `--lr-swatch-picker-fill-size` — defaults to `--lr-size-1-5rem`, also swapped per `size` tier —
2082
2210
  rendered when the option has no `icon`), `swatch-icon` (the option's `icon` shape, rendered in its
2083
- place when it has one). Exactly one of `swatch-fill`/`swatch-icon` is mounted per swatch, so the
2211
+ place when it has one, with its inherited `font-size` set to the same fill-size token so a `1em`
2212
+ glyph fills the wrapper). Exactly one of `swatch-fill`/`swatch-icon` is mounted per swatch, so the
2084
2213
  two never coexist.
2085
2214
 
2086
2215
  **Themeable custom properties:** `--lr-swatch-picker-selected-color` (ring color around the
@@ -2116,12 +2245,14 @@ and the per-tier `--lr-size-*` tokens.
2116
2245
  </script>
2117
2246
  ```
2118
2247
 
2119
- For the shared gemstone accent mode, import the side-effect-free palette/glyph helper. The
2120
- consumer still owns localized labels, display order, and the initial value:
2248
+ For the shared gemstone accent mode, import the Lit-free palette data entry. The glyph renderer
2249
+ remains available separately from `theme/gemstones.js` for Lit templates; palette-only consumers
2250
+ do not need to load Lit. The consumer still owns localized labels, display order, and the initial
2251
+ value:
2121
2252
 
2122
2253
  ```ts
2123
2254
  import '@aceshooting/lyra-ui/components/forms/swatch-picker/swatch-picker.js';
2124
- import { GEMSTONES } from '@aceshooting/lyra-ui/theme/gemstones.js';
2255
+ import { GEMSTONES } from '@aceshooting/lyra-ui/theme/gemstones-data.js';
2125
2256
 
2126
2257
  const order = ['emerald', 'ruby', 'sapphire', 'hematite'] as const;
2127
2258
  picker.mode = 'gemstone';
@@ -2149,6 +2280,10 @@ picker.value = 'ruby';
2149
2280
  - the semantic `radiogroup` lives inside shadow DOM. Set `label` (preferred for reactive code) or a
2150
2281
  host `aria-label`; the component deliberately forwards the resulting name to that internal role.
2151
2282
 
2283
+ **Additional API surface:**
2284
+
2285
+ - `--lr-swatch-picker-gap` — Gap between swatches. Default: `var(--lr-space-xs)`.
2286
+
2152
2287
  ---
2153
2288
 
2154
2289
  ## `lr-checkbox`
@@ -2172,7 +2307,7 @@ visual box/checkmark. Structurally the same idea as `<lr-switch>` (form-associat
2172
2307
  `lr-change` alias (`detail: { checked: boolean }`). Programmatic `.checked` assignments are
2173
2308
  silent. Internal `focus`/`blur` are re-dispatched as bubbling, composed host events.
2174
2309
 
2175
- **Methods:** `focus(options?)` and `blur()` forward to the internal checkbox control.
2310
+ **Methods:** `focus(options?)`, `blur()`, and `click()` forward to the internal checkbox control.
2176
2311
 
2177
2312
  **Slots:** default — label text, rendered next to the box. Clicking it toggles the checkbox, the
2178
2313
  same as clicking a native checkbox's associated `<label>`. If left empty, set `aria-label` on the
@@ -2273,7 +2408,7 @@ control's visible, clickable label (same as `<lr-checkbox>`).
2273
2408
  **Events:** `lr-change` (`detail: { checked: boolean }`) — fired on a user toggle (click or
2274
2409
  Space/Enter); not fired for a programmatic `.checked` assignment.
2275
2410
 
2276
- **Methods:** `focus(options?)` and `blur()` forward to the internal switch control.
2411
+ **Methods:** `focus(options?)`, `blur()`, and `click()` forward to the internal switch control.
2277
2412
 
2278
2413
  **Slots:**
2279
2414
  - default — label text, rendered next to the track. Clicking it toggles the switch, the same as
@@ -2339,10 +2474,13 @@ seamlessly right after. First-party invention (no Web Awesome equivalent).
2339
2474
  - `label: string = ''` — accessible name set as `aria-label` on the `role="slider"` thumb; a plain
2340
2475
  `aria-label` attribute on the host itself is honored as a fallback when this is left unset (matching
2341
2476
  `<lr-checkbox>`/`<lr-switch>`).
2477
+ - `valueFormatter?: SliderValueFormatter` (attribute: false) — maps the finite, clamped
2478
+ `aria-valuenow` number to optional human-readable `aria-valuetext`. The formatter may return
2479
+ `string | null | undefined`; a nullish result omits `aria-valuetext`. Leaving the property unset
2480
+ preserves the existing numeric `aria-valuetext`.
2342
2481
  - `showValue: boolean = true` (attribute `show-value`) — whether to render the current numeric value as
2343
2482
  visible text next to the track. Not reflected; toggle it off via the `.showValue=${false}` property
2344
- binding a bare `show-value="false"` content attribute is still truthy, since presence is all Lit's
2345
- default boolean converter checks.
2483
+ binding or a plain `show-value="false"` content attribute.
2346
2484
  - Inherited from `FormAssociated`: `name: string = ''`, `value: string` (form-submitted string form),
2347
2485
  `disabled: boolean = false` (reflected), `required: boolean = false` (reflected).
2348
2486
 
@@ -2378,6 +2516,7 @@ when `show-value` is true)
2378
2516
  step="0.1"
2379
2517
  label="Temperature"
2380
2518
  .valueAsNumber=${0.7}
2519
+ .valueFormatter=${(value) => `${value * 100}%`}
2381
2520
  @lr-input=${(e) => setDraftTemperature(e.detail.value)}
2382
2521
  @lr-change=${(e) => commitTemperature(e.detail.value)}
2383
2522
  ></lr-slider>
@@ -2396,6 +2535,9 @@ native range input either.
2396
2535
  value); ArrowUp/ArrowDown are never swapped, since direction only affects the horizontal inline axis.
2397
2536
  - Changing `min`/`max`/`step` after mount automatically re-clamps/re-snaps the current `value` in the
2398
2537
  next update — narrowing the domain can silently move the slider's value.
2538
+ - `valueFormatter` is presentation-only: `aria-valuenow`, the visible numeric readout, geometry,
2539
+ form value, and emitted values stay numeric. With no formatter, `aria-valuetext` remains the
2540
+ numeric string rendered by earlier versions; a nullish formatter result omits it.
2399
2541
  - A pointer drag fires `lr-input` continuously and a single `lr-change` on release; a keyboard step
2400
2542
  fires exactly one of each per press, but OS key-repeat while a key is held re-fires `lr-input` on
2401
2543
  every repeat while still only committing `lr-change` once, on the eventual keyup.
@@ -2451,16 +2593,21 @@ selected value is submitted under `name` and `required` requires at least one se
2451
2593
 
2452
2594
  **Properties:** `label`, `hint`, `errorText`, `value`, `name`, `required`, `disabled`, and
2453
2595
  `accessibleLabel` (`aria-label`). **Slots:** default checkboxes, `label`, `hint`, `error`.
2454
- **Events:** `input`, `change`, and `lr-change` with `{ value: string[] }`.
2596
+ **Events:** a user toggle emits exactly one group-owned `input`, then `change`, then `lr-change`;
2597
+ all three carry `{ value: string[] }`. The owned child's corresponding events are consumed at the
2598
+ group boundary, so an ancestor does not receive a second, differently shaped sequence.
2599
+ Programmatic child/property synchronization is silent.
2455
2600
  **CSS parts:** `form-control`, `form-control-label`, `options`, `hint`, `error`.
2456
2601
 
2457
2602
  **`value` is a read-out of child state, not an input.** The children are the single source of
2458
2603
  truth. An internal sync recomputes `value` from them and reassigns it on every child toggle,
2459
- `slotchange`, `name`/`required` change, blur, and `form.reset()` — so a host assignment is
2460
- silently overwritten by the next of those. `connectedCallback()` runs that sync **before the first
2461
- render**, which means even a constructor-time or template-time `.value=${…}` binding is discarded
2462
- before anything can observe it. Assigning `value` logs a `console.warn` naming the property (once
2463
- per group instance).
2604
+ programmatic child `checked`/`value`/`disabled` update, `slotchange`, `name`/`required` change,
2605
+ blur, and `form.reset()` — so a host assignment is silently overwritten by the next of those.
2606
+ Only a checkbox whose nearest `lr-checkbox-group` ancestor is this group contributes; a nested
2607
+ group owns its own descendants and form entries. `connectedCallback()` runs that sync **before the
2608
+ first render**, which means even a constructor-time or template-time `.value=${…}` binding is
2609
+ discarded before anything can observe it. Assigning `value` logs a `console.warn` naming the
2610
+ property (once per group instance).
2464
2611
 
2465
2612
  - **To preselect**, set `checked` on the children: `<lr-checkbox value="a" checked>`.
2466
2613
  - **To read the selection**, use this property or the `lr-change` event detail.
@@ -2484,7 +2631,9 @@ hit area stays fixed at `40px` across all sizes), `allowDuplicates` (`allow-dupl
2484
2631
  `false`), `editable` (reflected, default `false` — see below), and `delimiter: string | null` (default
2485
2632
  `','` — see below).
2486
2633
  **Slots:** `label`, `hint`, `error`.
2487
- **Events:** `input`, `change`, `lr-add` (`detail: { value }`), `lr-remove`
2634
+ **Events:** native-style `input` and `change` (`detail: { value: string[] }`), bubbling/composed
2635
+ `focus` and `blur` re-dispatched from the internal text input, `lr-add` (`detail: { value }`),
2636
+ `lr-remove`
2488
2637
  (`detail: { value, index }` — cancelable; `preventDefault()` keeps the token in `value`
2489
2638
  unchanged), and `lr-token-edit`
2490
2639
  (`detail: { value, previousValue, index }` — an existing token was edited in place and committed).
@@ -2493,7 +2642,8 @@ token's text, doubling as the roving-focus edit trigger — rendered only while
2493
2642
  `token-editor` (the inline text field that replaces a token's text while it is open for editing —
2494
2643
  rendered only while `editable` and only for the token being edited), `remove` (the
2495
2644
  per-token remove button, floored at the shared `--lr-icon-button-size` tap size around a compact
2496
- glyph), `input`, `hint`, `error`. `focus()` and `blur()` forward to the internal text input.
2645
+ glyph), `input`, `hint`, `error`. `focus()`, `blur()`, and `click()` forward to the internal text
2646
+ input.
2497
2647
 
2498
2648
  **`editable` — editing a token in place.** Off by default, in which case the token row renders
2499
2649
  exactly as it does without the feature and stays non-focusable. Turn it on and each token becomes a
@@ -2527,6 +2677,17 @@ inline to `--lr-size-8rem`), `--lr-token-input-min-input-inline-size` (default `
2527
2677
  floor that input keeps once tokens have consumed the row), and `--lr-token-input-editor-inline-size`
2528
2678
  (default `--lr-size-6rem`, the inline size of the inline token editor opened by `editable`).
2529
2679
 
2680
+ **Additional API surface:**
2681
+
2682
+ - `--lr-token-input-token-padding` — Per-token chip padding, scaled by `size`.
2683
+ - `--lr-token-input-gap` — Gap between form/row children. Default: `var(--lr-space-xs)`.
2684
+ - `--lr-token-input-token-gap` — Gap inside token chips. Default: `var(--lr-space-2xs)`.
2685
+ - `--lr-token-input-radius` — Row/token corner radius. Default: `var(--lr-radius)`.
2686
+ - `--lr-token-input-token-bg` — Token chip background. Default: `var(--lr-color-brand-quiet)`.
2687
+ - `--lr-token-input-action-hover-bg` — Edit/remove hover background. Default: `var(--lr-color-brand-quiet)`.
2688
+ - `--lr-token-input-focus-border-color` — Focused row border color. Default: `var(--lr-color-brand)`.
2689
+ - `--lr-token-input-invalid-border-color` — Invalid row border color. Default: `var(--lr-color-danger)`.
2690
+
2530
2691
  ## `lr-code-editor`
2531
2692
 
2532
2693
  Dependency-free, form-associated multiline code editor built around a native textarea, with an
@@ -2588,6 +2749,11 @@ spaces — the Tab key keeps inserting `tabSize` spaces in that case.
2588
2749
  - The host gets a `data-invalid` attribute once the field has been blurred at least once and
2589
2750
  validity fails; the styles hang the danger border off it.
2590
2751
 
2752
+ **Additional API surface:**
2753
+
2754
+ - `selectionDirection` — The current selection direction of the internal editing surface. Type: `'forward' | 'backward' | 'none'`.
2755
+ - `click()` — Activates the internal editing surface.
2756
+
2591
2757
  ## `lr-color-picker`
2592
2758
 
2593
2759
  A form-associated native color picker with label, hint, and error chrome. **Properties:** the shared
@@ -2604,6 +2770,13 @@ parts:** `form-control`, `form-control-label` (the label; `label` is an alias ke
2604
2770
  auto-swapped per `size` tier (default `'m'` reads `2.5rem`, `'2xs'` reads `1.25rem`, etc.), matching
2605
2771
  the size ladder `lr-input` uses.
2606
2772
 
2773
+ **Additional API surface:**
2774
+
2775
+ - `click()` — Activates the internal color input.
2776
+ - `--lr-color-picker-gap` — Gap between field chrome. Default: `var(--lr-space-xs)`.
2777
+ - `--lr-color-picker-radius` — Swatch corner radius. Default: `var(--lr-radius)`.
2778
+ - `--lr-color-picker-hover-border-color` — Hover border color. Default: `var(--lr-color-brand)`.
2779
+
2607
2780
  ## `lr-emoji-picker`
2608
2781
 
2609
2782
  A searchable, keyboard-navigable, form-associated emoji picker. `groups` is fully consumer-suppliable
@@ -2633,8 +2806,10 @@ supporting text rendered below the search/grid; unset renders no hint chrome. `e
2633
2806
  `error` content when provided); unset renders no error chrome. `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` —
2634
2807
  visual size; scales the emoji grid item box and its glyph proportionally, floored at 24px (WCAG 2.5.8).
2635
2808
 
2636
- **Events:** `lr-change` with `detail: { emoji }` (an emoji was picked — click, or Enter/Space on
2637
- the active grid cell; also sets `value`), plus the shared form `input`, `change`, `focus`, and `blur`.
2809
+ **Events:** a pick emits native-style composed `input`, then `change` (both with no detail), then
2810
+ `lr-change` with `detail: { emoji }` (click, or Enter/Space on the active grid cell; also sets
2811
+ `value`). The internal search input's `focus` and `blur` are re-dispatched as bubbling, composed
2812
+ host events. Programmatic `value` changes are silent.
2638
2813
 
2639
2814
  **Keyboard:** the grid is a roving-tabindex listbox (a single Tab stop — only the active emoji is
2640
2815
  tabbable). ArrowLeft/ArrowRight step the active item backward/forward following reading direction
@@ -2693,6 +2868,13 @@ windowed row are additionally capped at 20 regardless of available width.
2693
2868
  supply `groups` directly instead. The loader never throws; a missing or failed peer logs one
2694
2869
  `console.warn` and simply leaves `groups` empty.
2695
2870
 
2871
+ **Additional API surface:**
2872
+
2873
+ - `--lr-emoji-picker-control-gap` — Gap between field sections. Default: `var(--lr-space-xs)`.
2874
+ - `--lr-emoji-picker-radius` — Outer picker corner radius. Default: `var(--lr-radius)`.
2875
+ - `--lr-emoji-picker-item-radius` — Search and emoji corner radius. Default: `var(--lr-radius-xs)`.
2876
+ - `--lr-emoji-picker-search-hover-border-color` — Search hover border. Default: `var(--lr-color-brand)`.
2877
+
2696
2878
  ## `lr-rubric-form`
2697
2879
 
2698
2880
  A configurable annotation rubric (LangSmith annotation-queue style): score, category, and
@@ -2702,7 +2884,10 @@ freeform-comment keys with a submit-and-next flow for working through an eval qu
2702
2884
  renders `<lr-textarea>`.
2703
2885
 
2704
2886
  **Properties:** `keys: RubricKey[] = []` (attribute: false, each `{ key, type, label?, description?,
2705
- required?, min?, max?, step? }`), `value: RubricValue = {}` (attribute: false), `itemId: string = ''`
2887
+ required?, min?, max?, step?, options?, multiple?, placeholder? }`; `options?` contains
2888
+ `RubricKeyOption { value: string; label?: string; description?: string }`, `multiple?` selects the
2889
+ checkbox-group category route, and `placeholder?` customizes comment input), `value: RubricValue =
2890
+ {}` (attribute: false), `itemId: string = ''`
2706
2891
  (attribute `item-id`, reflected), `hasNext: boolean = false` (attribute `has-next`), `skippable:
2707
2892
  boolean = false`, and the shared form properties `name` and `disabled`. `errors: Record<string,
2708
2893
  string>` is the current per-key validation-message state.
@@ -2803,6 +2988,15 @@ peer warning duplication; `lr-flag` itself already logs one) when the optional
2803
2988
  - arrow-key navigation is vertical-only (Home/End/ArrowUp/ArrowDown); there is no
2804
2989
  ArrowLeft/ArrowRight remap under RTL, since there is no horizontal axis to remap.
2805
2990
 
2991
+ **Additional API surface:**
2992
+
2993
+ - `--lr-locale-picker-gap` — Trigger and option child gap. Default: `var(--lr-space-xs)`.
2994
+ - `--lr-locale-picker-radius` — Trigger/listbox/option corner radius. Default: `var(--lr-radius)`.
2995
+ - `--lr-locale-picker-trigger-hover-bg` — Trigger hover background. Default: `var(--lr-color-brand-quiet)`.
2996
+ - `--lr-locale-picker-open-border-color` — Open trigger border color. Default: `var(--lr-color-brand)`.
2997
+ - `--lr-locale-picker-option-selected-border-color` — Selected option border. Default: `var(--lr-color-brand)`.
2998
+ - `--lr-locale-picker-option-selected-color` — Selected option text. Default: `var(--lr-color-brand)`.
2999
+
2806
3000
  # Data display, dashboards & flow canvas (`components/data/`)
2807
3001
 
2808
3002
  ## `lr-sparkline`
@@ -2864,7 +3058,8 @@ KPI/stat card — value + unit + label + optional icon/trend/caption.
2864
3058
  - `unit: string = ''`
2865
3059
  - `href?: string` — when it resolves to a safe URL, the root is a real whole-stat `<a>`; unsafe
2866
3060
  URL schemes keep the stat non-interactive
2867
- - `target?: string` / `rel?: string` — forwarded to the anchor while `href` is active
3061
+ - `target?: string` — forwarded to the anchor while `href` is active; a nonempty target derives
3062
+ `rel="noopener noreferrer"` rather than exposing a separately settable `rel`
2868
3063
  - `variant: 'neutral'|'success'|'warning'|'danger' = 'neutral'` (reflected)
2869
3064
  - `trend: number = NaN` (a `NaN` sentinel hides the trend pill entirely — set an actual number to
2870
3065
  show it)
@@ -2956,7 +3151,10 @@ drives `emphasis`'s accent edge and value tint).
2956
3151
 
2957
3152
  ## `lr-table`
2958
3153
 
2959
- Sort/select-aware data table. Sorting remains consumer-controlled; optional filtering, pagination,
3154
+ Sort/select-aware data table. Sorting is built in and client-side by default (`sortMode="client"`
3155
+ orders `rows` from `sortKey`/`sortDir` and the active column's `sortValue`); `sortMode="server"`
3156
+ renders `rows` in the order given for a server-ordered table, and `lr-sort` fires on header
3157
+ activation either way. Optional filtering, pagination,
2960
3158
  and loading chrome are built in while remaining controlled at the public API boundary. A
2961
3159
  `columns[].heatValue`-opted-in heat-tint mode paints a shared, normalized color-mix background across
2962
3160
  every tinted cell (auto-derived domain, or overridden via `heatTintScale`); `rowTotal`/`grandTotal`
@@ -2966,8 +3164,16 @@ own "consumer computes/renders" contract rather than assuming addition.
2966
3164
 
2967
3165
  **Properties:**
2968
3166
  - `columns: TableColumn<T>[] = []` (attribute: false) — `{ key, label, headerCell?, width?,
2969
- minWidth?, maxWidth?, resizable?, sortable?, align?: 'start'|'end', priority?: 'medium'|'low', sticky?: boolean |
3167
+ minWidth?, maxWidth?, resizable?, sortable?, sortValue?, align?: 'start'|'end', priority?: 'medium'|'low', sticky?: boolean |
2970
3168
  'start' | 'end', footer?, cellStyle?, heatValue?, cell: (row) => unknown }` —
3169
+ `sortValue(row) => string | number | null | undefined` supplies the comparable value backing
3170
+ client-mode sorting for that column: a finite number sorts numerically, a string sorts through an
3171
+ `Intl.Collator` built from the component's effective locale with `numeric: true` (so `item2`
3172
+ precedes `item10`), and `null`/`undefined`/non-finite sorts **last in both directions** so
3173
+ flipping `sortDir` never floats a block of blanks to the top. Omit it and the column sorts by its
3174
+ stringified `cell()` output instead — meaningful only when `cell()` returns a string or number, so
3175
+ define `sortValue` whenever `cell()` returns a template or element. Ignored under
3176
+ `sortMode="server"` and on a column that is not `sortable`;
2971
3177
  `priority` progressively hides that column via a `@container` query as `[part='base']` narrows
2972
3178
  (`'low'` hides first, under a ~900px container width; `'medium'` next, under ~640px; both
2973
3179
  breakpoints are fixed in `table.styles.ts`, not themeable tokens), reversible via
@@ -3040,6 +3246,19 @@ own "consumer computes/renders" contract rather than assuming addition.
3040
3246
  the two consequences of the fixed algorithm worth knowing before opting in
3041
3247
  - `sortKey: string = ''` (attribute `sort-key`)
3042
3248
  - `sortDir: 'asc'|'desc' = 'asc'` (attribute `sort-dir`)
3249
+ - `sortMode: 'client'|'server' = 'client'` (attribute `sort-mode`, reflected) — mirrors
3250
+ `paginationMode`'s identical split. `'client'` (the default) orders `rows` in the browser from
3251
+ `sortKey`/`sortDir` and the active column's `sortValue`; `'server'` renders `rows` exactly as
3252
+ given, for a table whose ordering already happened server-side. `lr-sort` is emitted on header
3253
+ activation under both modes. With no `sortKey` set (the default) `'client'` is a **no-op** — the
3254
+ input order is preserved verbatim — so a table that never sorts renders identically either way.
3255
+ Sorting applies to the whole filtered set *before* client pagination slices the page, so page 1
3256
+ holds the globally-smallest rows rather than a re-sorted slice
3257
+ - `defaultSortDir: 'asc'|'desc' = 'asc'` (attribute `default-sort-dir`) — the direction applied
3258
+ whenever header activation switches sorting to a **different** column, including the first column
3259
+ ever sorted. Re-activating the column that is already `sortKey` toggles between `'asc'` and
3260
+ `'desc'` instead, so `defaultSortDir` never overrides a direction the user just chose for the
3261
+ column they are still on. Set `'desc'` for a most-recent-first or highest-first table
3043
3262
  - `rowKey?: (row: T) => string | number` (attribute: false) — derives each row's stable identity for
3044
3263
  DOM-reconciliation and the delegated row click/keydown lookup; falls back to the row's array index
3045
3264
  when omitted, which is only safe while `rows` never reorders — set it whenever `rows` can be
@@ -3086,7 +3305,13 @@ own "consumer computes/renders" contract rather than assuming addition.
3086
3305
  mode slices rows; server mode renders the supplied page unchanged
3087
3306
  - Editable columns emit `lr-cell-edit` on commit and never mutate the supplied row object.
3088
3307
  - `groupBy?: (row: T) => string | number` (attribute: false) — inserts a non-focusable full-width
3089
- group row before each group
3308
+ group row wherever this key changes between consecutive rendered rows. Supply `rows` with each
3309
+ group already contiguous; the table renders the groups in their first-appearance order in `rows`
3310
+ and never reorders them. A client-mode sort is applied **within** each group, so sorting a
3311
+ grouped table on a column unrelated to the group key reorders rows inside their groups and
3312
+ leaves the grouping intact. The one exception: when the sorted column's value is constant inside
3313
+ every group — the group column itself, most obviously — there is nothing to reorder within a
3314
+ group, so the **groups** are ordered by that value instead.
3090
3315
  - `groupLabel?: (key: string | number, rows: T[]) => unknown` (attribute: false) — custom group
3091
3316
  header content; without it, the group key is rendered as text
3092
3317
  - `expandedContent?: (row: T) => unknown` (attribute: false) — enables a leading expand toggle and
@@ -3130,7 +3355,8 @@ own "consumer computes/renders" contract rather than assuming addition.
3130
3355
  column × footer row). Only rendered when both `rowTotal` is set **and** at least one column defines
3131
3356
  `footer` — otherwise there is no footer row for it to occupy, and this renders nothing
3132
3357
 
3133
- **Events:** `lr-sort` (`detail: { key }`, fired on sortable-header activation), `lr-row-click`
3358
+ **Events:** `lr-sort` (`detail: { key }`, fired on sortable-header activation — which also updates
3359
+ `sortKey`/`sortDir` itself, per `defaultSortDir` above), `lr-row-click`
3134
3360
  (`detail: { row }`), `lr-load-more` (fired on the "load more" button), `lr-columns-hidden-change`
3135
3361
  (`detail: { hidden: boolean }`, fired only on a real `columnsHidden` transition),
3136
3362
  `lr-columns-revealed` (`detail: { revealed: boolean }`), and `lr-row-expand-toggle`
@@ -3184,6 +3410,9 @@ element *or on any ancestor* and still reach the rule that reads it. It exists b
3184
3410
  forbids an attribute selector after `::part()` — `::part(row)[aria-selected='true']` is invalid CSS —
3185
3411
  so the only prior lever for restyling the selected row was overriding the library-wide
3186
3412
  `--lr-color-brand-quiet` token, which repaints everything else reading it.
3413
+ `--lr-table-row-stripe-bg` (default `transparent`) — the background of alternating body rows. The
3414
+ component marks the alternating rows itself, so this works without an invalid `::part(row)` attribute
3415
+ or structural-pseudo-class selector and does not affect group, expanded, hover, or selected rows.
3187
3416
  `--lr-table-header-sorted-bg` (default `transparent`) and `--lr-table-header-sorted-color` (default
3188
3417
  `inherit`) restyle the **currently-sorted** column's header cell (`[aria-sort]` other than `none`).
3189
3418
  Same shape and rationale as `--lr-table-row-selected-bg`: inline `var()` fallbacks, not on `:host`,
@@ -3196,12 +3425,13 @@ so multiple `sticky` columns stack instead of overlapping; it is a read-out, not
3196
3425
  **Optional peer deps:** none.
3197
3426
 
3198
3427
  ```html
3199
- <lr-table id="t" sort-key="name" sort-dir="asc"></lr-table>
3428
+ <lr-table id="t" sort-key="name" sort-dir="asc" accessible-label="Items"></lr-table>
3200
3429
  <script type="module">
3201
3430
  const t = document.getElementById('t');
3202
3431
  t.columns = [
3203
3432
  { key: 'name', label: 'Name', sortable: true, cell: (r) => r.name },
3204
- { key: 'value', label: 'Value', align: 'end', cell: (r) => r.value },
3433
+ // sortValue keeps the numeric column comparing as numbers, not as strings.
3434
+ { key: 'value', label: 'Value', align: 'end', sortable: true, sortValue: (r) => r.value, cell: (r) => r.value },
3205
3435
  ];
3206
3436
  t.rows = [{ name: 'Alpha', value: 1 }, { name: 'Beta', value: 2 }];
3207
3437
  t.rowKey = (r) => r.name;
@@ -3211,6 +3441,23 @@ so multiple `sticky` columns stack instead of overlapping; it is a read-out, not
3211
3441
  ```
3212
3442
 
3213
3443
  **Known gotchas:**
3444
+ - activating a sortable header now writes `sortKey`/`sortDir` on the table itself, in **both** sort
3445
+ modes — it is no longer a pure `lr-sort` notification. A `sortMode="server"` consumer that
3446
+ re-sorts on `lr-sort` and pushes fresh `rows` back in is unaffected (the table renders whatever
3447
+ order it is handed), but a consumer implementing a *tri-state* header (asc → desc → unsorted) must
3448
+ drive `sortKey`/`sortDir` from its own `lr-sort` handler, since the built-in activation only
3449
+ toggles between the two directions.
3450
+ - `sortValue`/`cell` are read off the column object by identity. Mutating a column **in place**
3451
+ (`t.columns[0].sortValue = …`) neither re-renders nor re-sorts; assign a new `columns` array.
3452
+ - `groupBy` + client sorting are **not** in conflict: the sort runs per group, not across the whole
3453
+ set, so group rows stay contiguous. The consequence is that the group order is normally yours to
3454
+ control — it follows first appearance in `rows`. The single exception is a sort on a column whose
3455
+ value is constant inside every group (the group column itself, a column functionally determined
3456
+ by the group key, or any column at all when every group holds one row): the within-group sort
3457
+ would be a provable no-op, so the groups are ordered by that constant value instead. That is what
3458
+ keeps `aria-sort` and the header chevron honest — otherwise clicking the group column would flip
3459
+ both while changing nothing. To force a group order in any other case, sort `rows` into it before
3460
+ assigning them (or set `sort-mode="server"` and own the whole ordering).
3214
3461
  - only single-row selection is modeled (`selectedKey: string | number | null`);
3215
3462
  there's no bulk-select/checkbox-column API — you must hand-roll a checkbox column entirely inside
3216
3463
  a `cell()` callback if you need multi-select.
@@ -3222,8 +3469,8 @@ so multiple `sticky` columns stack instead of overlapping; it is a read-out, not
3222
3469
  no `accessibleLabel`/host `aria-label` is present the caption also names the grid via
3223
3470
  `aria-labelledby`.
3224
3471
  - A grid with **none** of `accessibleLabel`, host `aria-label`, or `caption` logs a one-time
3225
- `console.warn` on first render (dev signal) — an unnamed grid is an accessibility defect that
3226
- otherwise renders silently.
3472
+ `console.warn` on first render in development builds only — an unnamed grid is an accessibility
3473
+ defect that otherwise renders silently. Production and unknown/unbundled runtimes do not log it.
3227
3474
  - Full roving-tabindex grid keyboard pattern (one `tabindex="0"` stop among header cells, one among
3228
3475
  body rows) — Left/Right/Home/End move within the header row, Up/Down/Home/End move within the
3229
3476
  body, Down from the header enters the body's roving stop and Up from the body's first row returns
@@ -3346,6 +3593,11 @@ spacing, border, radius, disabled-opacity, and focus-ring tokens.
3346
3593
  - below a 20rem container allocation the summary and controls stack; the breakpoint responds to
3347
3594
  the component's own inline size, not the viewport. Previous/next icons also mirror under RTL
3348
3595
 
3596
+ **Additional API surface:**
3597
+
3598
+ - `click()` — Forward host activation to the primary editable page control.
3599
+ - `--lr-pagination-control-radius` — Border radius of navigation buttons and the page input. Default: `var(--lr-radius)`.
3600
+
3349
3601
  ---
3350
3602
 
3351
3603
  ## `lr-gauge`
@@ -3868,9 +4120,13 @@ deeply-nested node's own shadow root still reaches it).
3868
4120
 
3869
4121
  **Properties:**
3870
4122
  - `data: TreeItem[] = []` (attribute: false) — `TreeItem { id: string; label: string; children?:
3871
- TreeItem[]; badge?: string | number; icon?: unknown; description?: string; accessibleLabel?:
3872
- string }`; `icon` renders as a decorative leading visual, `description` as secondary visible row
3873
- text, and `accessibleLabel` names the `role="treeitem"` host without changing its visible label
4123
+ TreeItem[]; selected?: boolean; disabled?: boolean; badge?: string | number; badges?: TreeBadge[];
4124
+ icon?: unknown; description?: string; accessibleLabel?: string }`. `TreeBadge` is `{ text:
4125
+ string; tone?: TreeBadgeTone; label?: string }`, where `TreeBadgeTone` is
4126
+ `'neutral'|'brand'|'success'|'warning'|'danger'`. The legacy singular `badge` renders first;
4127
+ `badges` adds tone-mapped chips after it and each chip's accessible name uses `label ?? text`.
4128
+ `icon` renders as a decorative leading visual, `description` as secondary visible row text, and
4129
+ `accessibleLabel` names the `role="treeitem"` host without changing its visible label
3874
4130
  - `label: string = ''` — accessible name for the tree; `role="tree"` lives on an internal
3875
4131
  `[part="base"]` element. The component forwards a host `aria-label` to that semantic element when
3876
4132
  `label` is empty; `label` takes precedence when both are set. External `aria-labelledby` idrefs
@@ -3946,9 +4202,11 @@ through `lr-tree`'s light DOM.
3946
4202
 
3947
4203
  **Slots:** none.
3948
4204
 
3949
- **CSS parts:** `row`, `toggle`, `icon`, `content`, `label`, `description`, `badge`, `group`. `icon` is
3950
- `aria-hidden="true"`; `content` groups the primary label and optional wrapping secondary
3951
- description while preserving one interactive treeitem per row.
4205
+ **CSS parts:** `row`, `toggle`, `icon`, `content`, `label`, `description`, `badge`, `group`. `badge`
4206
+ is applied to the legacy singular badge and to every `badges` chip; additive chips carry
4207
+ `data-tone="neutral|brand|success|warning|danger"`. `icon` is `aria-hidden="true"`; `content`
4208
+ groups the primary label and optional wrapping secondary description while preserving one
4209
+ interactive treeitem per row.
3952
4210
 
3953
4211
  **Themeable custom properties:** `--lr-tree-depth` (internal, set inline per row for
3954
4212
  indentation), plus the shared tokens listed above.
@@ -3989,6 +4247,12 @@ indentation), plus the shared tokens listed above.
3989
4247
  - `lr-file-tree` does **not** forward `reorderable`, and deliberately so: its `TreeItem[]` is derived
3990
4248
  from `nodes` on every render and keyed by filesystem path, an order it does not own.
3991
4249
 
4250
+ **Additional API surface:**
4251
+
4252
+ - `--lr-tree-selected-color` — Selected-node text color.
4253
+ - `--lr-tree-selected-bg` — Selected-node background.
4254
+ - `ancestry` — Ancestor object identities used to stop cyclic caller graphs before recursive rendering. Type: `TreeItem[]`.
4255
+
3992
4256
  ---
3993
4257
 
3994
4258
  ## `lr-flow-canvas`
@@ -4016,8 +4280,10 @@ controlled-component contract.
4016
4280
  `lr-node-palette` drag sets, emitting `lr-node-add`
4017
4281
  - `locked: boolean = false` (reflected) — freezes pan/zoom/drag/connect without touching the other
4018
4282
  gesture flags
4019
- - `selectedNodeIds: string[] = []`, `selectedEdgeIds: string[] = []` (attribute: false) — controlled;
4020
- the host assigns these back from `lr-selection-change`
4283
+ - `selectedNodeIds: string[] = []`, `selectedEdgeIds: string[] = []` (attribute: false) — seed or
4284
+ replace selection state. Node/edge activation and clear-selection gestures also update these
4285
+ arrays internally before emitting `lr-selection-change`; a host may assign its own authoritative
4286
+ state back.
4021
4287
  - `minZoom: number = 0.25` (attribute `min-zoom`), `maxZoom: number = 2` (attribute `max-zoom`)
4022
4288
  - `grid: number = 8` — snap step in content px for drags/nudges/drop positions (`0` disables
4023
4289
  snapping); also the dotted background's base spacing
@@ -4096,9 +4362,10 @@ treatment entirely.
4096
4362
  ```
4097
4363
 
4098
4364
  **Known gotchas:**
4099
- - Fully controlled: `nodes`/`edges`/`selectedNodeIds`/`selectedEdgeIds` are never mutated
4100
- internally `lr-node-move`, `lr-selection-change`, `lr-connect`, `lr-node-add`, and
4101
- `lr-selection-delete` are all requests the host applies back, same contract as `lr-table`.
4365
+ - `nodes` and `edges` are controlled inputs: move, connect, add, and delete events are requests the
4366
+ host applies back. Selection is hybrid state: `selectedNodeIds`/`selectedEdgeIds` accept external
4367
+ replacement, while node/edge activation and clear-selection gestures update them internally and
4368
+ emit `lr-selection-change`.
4102
4369
  - Auto-layout (via the dependency-free `layeredLayout()` util) only ever positions nodes that are
4103
4370
  missing an explicit `position`; a node the host has already positioned is left exactly where it is
4104
4371
  and used as a fixed anchor for the rest of the layout pass.
@@ -4109,6 +4376,12 @@ treatment entirely.
4109
4376
  deltas are mirrored so content still visually follows the cursor, matching every other
4110
4377
  RTL-mirrored surface in this library.
4111
4378
 
4379
+ **Additional API surface:**
4380
+
4381
+ - `part="edge-hit-area"` — The transparent wide pointer target behind an edge.
4382
+ - `part="node-control"` — The visually hidden, roving selection button for a node.
4383
+ - `--lr-flow-canvas-node-selected-outline-color` — Outline color of a selected node. Default: `var(--lr-flow-canvas-node-current-outline-color,var(--lr-color-brand))`.
4384
+
4112
4385
  ---
4113
4386
 
4114
4387
  ## `lr-flow-node`
@@ -4188,8 +4461,8 @@ disagree.
4188
4461
  **Properties:**
4189
4462
  - `for: string = ''` — id of the target `lr-flow-canvas`; when empty, the nearest ancestor canvas
4190
4463
  is used (the slotted-into-a-corner-slot case, the primary wiring)
4191
- - `label: string = ''` — accessible name for the map region; falls back to a host `aria-label`, then
4192
- a localized default
4464
+ - `label: string = ''` — accessible name for the map region. A host `aria-label` takes precedence,
4465
+ followed by `label`, then the localized default
4193
4466
 
4194
4467
  **Events:** none.
4195
4468
 
@@ -4216,6 +4489,11 @@ draggable, focusable view rectangle).
4216
4489
  - Dragging the viewport rectangle calls the canvas's `setViewport()` directly; there's no separate
4217
4490
  event to wire up.
4218
4491
 
4492
+ **Additional API surface:**
4493
+
4494
+ - `part="instructions"` — Visually hidden keyboard instructions for the viewport.
4495
+ - `part="live-region"` — Visually hidden viewport-change announcements.
4496
+
4219
4497
  ---
4220
4498
 
4221
4499
  ## `lr-flow-controls`
@@ -4367,10 +4645,12 @@ capacity), `segment` (one occupied segment — carries `data-tone` and, for cust
4367
4645
  <lr-context-meter variant="ring" total="128000" .segments=${segments}></lr-context-meter>
4368
4646
  ```
4369
4647
 
4370
- `role="img"` and a computed `aria-label` are set imperatively on the *host* element itself in
4371
- `willUpdate` (mirroring `lr-gauge`'s "meter" role convention) every internal node (`track`,
4372
- `segment`, the ring's `<svg>`, `label`) is `aria-hidden`, so a screen reader gets one meaningful
4373
- summary string instead of the raw markup. That summary's "used" figure is the sum of
4648
+ An internal visually-hidden semantic node carries `role="meter"` plus `aria-valuenow`,
4649
+ `aria-valuemin`, and `aria-valuemax` whenever `total > 0`; without a valid positive total it uses
4650
+ `role="group"` and omits numeric meter attributes. Its accessible name is the host `aria-label`
4651
+ when present, otherwise the generated summary. A separate visually-hidden segment list exposes
4652
+ each labeled quantity, while the visible track, segments, ring SVG, and visible label remain
4653
+ `aria-hidden`. The summary's "used" figure is the sum of
4374
4654
  `segments[].value`, clamped to `total` whenever `total > 0` so the announced text can never claim
4375
4655
  more than 100% used (e.g. `segments` summing to `150000` against `total="128000"` still announces
4376
4656
  `"128,000 of 128,000 used"`) — matching what the *visual* meter shows, since each segment's ratio is
@@ -4384,8 +4664,8 @@ numbers, so the two circular-meter components in the library share one visual sc
4384
4664
 
4385
4665
  **Known gotchas:**
4386
4666
  - The ring variant's per-segment `<title>` and the bar variant's per-segment `title=` attribute are
4387
- native mouse-hover tooltips only — they sit inside `aria-hidden` markup, so screen readers never
4388
- read them; only the host's own `role="img"`/`aria-label` carries accessible information.
4667
+ native mouse-hover tooltips only — they sit inside `aria-hidden` markup. Screen readers use the
4668
+ hidden meter/group summary and segment list instead.
4389
4669
  - `variant="ring"` fixes the host at `8em × 8em` (`:host([variant='ring'])`) — the bar variant's
4390
4670
  `inline-size: 100%` does not apply in ring mode; resize it via `font-size` or an explicit
4391
4671
  width/height override on the host instead.
@@ -4393,6 +4673,12 @@ numbers, so the two circular-meter components in the library share one visual sc
4393
4673
  `segments` render further around the circle (starting at 12 o'clock, going clockwise); there's no
4394
4674
  independent sort/z-order control.
4395
4675
 
4676
+ **Additional API surface:**
4677
+
4678
+ - `part="segment-item"` — One visually-hidden segment label/count pair.
4679
+ - `part="segment-list"` — The visually-hidden list exposing the segment breakdown.
4680
+ - `part="semantic"` — The visually-hidden meter/group carrying aggregate range semantics.
4681
+
4396
4682
  ---
4397
4683
 
4398
4684
  ## `lr-calendar`
@@ -4562,13 +4848,28 @@ parts:** `base`, `path-fields`, `start-input`, `end-input`, `relationship-picker
4562
4848
  `saved-queries`, `saved-queries-label`, `saved-list`, `saved-item`, `saved-load-button`,
4563
4849
  `saved-delete-button`, `saved-empty`.
4564
4850
 
4851
+ **Additional API surface:**
4852
+
4853
+ - `errorText` — Caller-supplied outer error text. Field-level validation remains on the affected controls. Type: `string`.
4854
+ - `hint` — Supporting text rendered below the outer label. Type: `string`.
4855
+ - `error-text` attribute — Caller-supplied outer error text. Field-level validation remains on the affected controls.
4856
+ - `hint` attribute — Supporting text rendered below the outer label.
4857
+ - `hint` slot — Supporting text for the complete form control.
4858
+ - `part="hint"` — Supporting text for the complete form control.
4859
+
4565
4860
  ## `lr-query-builder`
4566
4861
 
4567
4862
  Composable structured-query builder for tabular or dashboard data: condition rows combined with an
4568
4863
  AND/OR combinator.
4569
4864
 
4570
- **Properties:** `fields`, `value`, `disabled`, `addCondition`, `removeCondition`. **Events:**
4571
- `lr-input`, `lr-add-condition`, `lr-remove-condition`. **CSS parts:** `base`, `conditions`,
4865
+ **Properties:** `fields`, `value`, `disabled`.
4866
+
4867
+ **Methods:** `addCondition()` appends a condition using the first available field and emits
4868
+ `lr-add-condition`; it is a no-op while disabled or when there are no fields.
4869
+ `removeCondition(id)` removes the matching condition and emits `lr-remove-condition`; it is a
4870
+ no-op while disabled or when the id is absent.
4871
+
4872
+ **Events:** `lr-input`, `lr-add-condition`, `lr-remove-condition`. **CSS parts:** `base`, `conditions`,
4572
4873
  `condition`, `field-select`, `operator-select`, `value`, `combinator`, `add-button`,
4573
4874
  `remove-button`, `empty`.
4574
4875
 
@@ -4584,8 +4885,10 @@ auto-inserted between each adjacent pair.
4584
4885
  omitted/mismatched)
4585
4886
  - `defaultSizes: (number | string)[] = []` (attribute: false) — initialization-only fallback: a
4586
4887
  valid restored `storageKey` layout wins first; otherwise a valid `defaultSizes` wins over equal
4587
- distribution. Later reassignment never overwrites live drag/persisted state set it once, at
4588
- mount. Each entry is either a plain **number** (percent-of-container, validated unchanged: a
4888
+ distribution. Initialization occurs on the first update so framework property bindings committed
4889
+ after connection in the same turn including `defaultSizes` and `storageKey` — are honored
4890
+ before the layout becomes live. Later reassignment never overwrites live drag/persisted state —
4891
+ set it once, at mount. Each entry is either a plain **number** (percent-of-container, validated unchanged: a
4589
4892
  pure-number array that does not sum to ~100, e.g. `[30, 60]`, is still rejected and falls through
4590
4893
  to the equal split) or a CSS **length string** (`'200px'`, `'20%'`, `'3rem'`). When at least one
4591
4894
  entry is a length string, every entry is resolved against the measured container (numbers as
@@ -4826,15 +5129,16 @@ position) survives the transition.
4826
5129
  - `backdropInset: string = ''` (attribute `backdrop-inset`) — overrides the fullscreen backdrop's
4827
5130
  CSS `inset` independently from `fullscreenInset`; when empty, it follows `fullscreenInset`
4828
5131
  - `views: WidgetView[] = []` (attribute: false) — named alternate views for the panel body, e.g. a
4829
- chart/table toggle inside the same card chrome; `WidgetView { id: string; label: string; icon?:
4830
- TemplateResult }`. Each entry gets a header toggle button (`[part='view-toggle']`) and a
4831
- `<slot name="view-${id}">`. Empty (the default) renders today's single unnamed default slot as the
4832
- sole view, unchanged.
5132
+ chart/table toggle inside the same card chrome; `WidgetView { id: string; label?: string; icon?:
5133
+ TemplateResult; ariaLabel?: string }`. Each entry gets a header toggle button
5134
+ (`[part='view-toggle']`) and a `<slot name="view-${id}">`. An icon-only view should set
5135
+ `ariaLabel`; if both labels are omitted, the button uses `id` as a last-resort accessible name.
5136
+ Empty (the default) renders today's single unnamed default slot as the sole view, unchanged.
4833
5137
  - `activeView: string = ''` (attribute: false) — the currently active view's `id`; defaults to the
4834
5138
  first entry of `views` (or `''` when `views` is empty). Settable directly to control the active
4835
5139
  view externally; also updated internally when a view toggle is clicked.
4836
- - `accessibleLabel: string = ''` (attribute `aria-label`) — overrides the label-derived fullscreen
4837
- dialog name.
5140
+ - `accessibleLabel: string | null = null` (attribute `aria-label`) — overrides the label-derived
5141
+ fullscreen dialog name.
4838
5142
  - `storageKey?: string` (attribute `storage-key`) — when set, persists `collapsed` to `localStorage`
4839
5143
  under `lr-widget:${storageKey}` and restores it on the next mount (mirrors `lr-app-rail`'s/
4840
5144
  `lr-table`'s identical `storage-key` pattern). Without a `storageKey` there is no persistence and
@@ -4917,6 +5221,11 @@ panel'`) and `widgetExpand` (default `'Expand panel'`) keys.
4917
5221
  to `widgetCollapse`/`widgetExpand`; the default English strings are unchanged, and `lr-dock-panel`
4918
5222
  itself is unaffected.
4919
5223
 
5224
+ **Additional API surface:**
5225
+
5226
+ - `part="view-icon"` — Decorative icon content inside a view toggle.
5227
+ - `part="view-label"` — Visible label text inside a view toggle.
5228
+
4920
5229
  ---
4921
5230
 
4922
5231
  ## `lr-carousel`
@@ -5118,9 +5427,8 @@ before, so rendering is unchanged. Otherwise shared tokens —
5118
5427
  Ordered multi-step wizard/form navigation: an index/label per step, `current`/`completed`/`disabled`/
5119
5428
  `error` state, and click-to-jump. First-party invention (no Web Awesome equivalent). Fully
5120
5429
  data-driven and controlled, like `lr-table`'s `columns`/`rows` — it never mutates `steps` itself; a
5121
- click, or Enter/Space on a non-disabled step, fires a cancelable `lr-step-select`, and the host
5122
- decides whether/how `steps` changes in response (mirroring `lr-dialog-close`'s cancelable-event
5123
- convention).
5430
+ click, or Enter/Space on a non-disabled step, fires a non-cancelable `lr-step-select`, and the host
5431
+ decides whether/how `steps` changes in response.
5124
5432
 
5125
5433
  **Properties:**
5126
5434
  - `steps: StepItem[] = []` (attribute: false) — `StepItem { id: string; label: string; state:
@@ -5166,19 +5474,20 @@ convention).
5166
5474
  doesn't resolve to a length. Also reflected as `data-effective-orientation` (only present while
5167
5475
  `orientationBreakpoint` resolves to a usable length).
5168
5476
  - `accessibleLabel: string | null = null` (attribute `aria-label`) — accessible name applied to the
5169
- `role="tablist"` step strip; attribute-reflects from a host-level `aria-label`. Unset, the
5170
- tablist renders without an `aria-label` (there is no localized default name).
5477
+ `role="list"` step strip; attribute-reflects from a host-level `aria-label`. Unset, the list
5478
+ renders without an `aria-label` (there is no localized default name).
5171
5479
 
5172
5480
  **Events:** `lr-step-select` (`detail: { index, id }`) — fired on click, or Enter/Space while
5173
- focused, on a non-`disabled` step. Cancelable, though this component takes no default action of its
5174
- own to prevent (it never mutates `steps`) `preventDefault()` is available for a host that wants a
5175
- single place to short-circuit its own listener's follow-up work. `lr-stepper-orientation-change`
5481
+ focused, on a non-`disabled` step. It is non-cancelable because the component takes no default
5482
+ action to veto: it never mutates `steps`. `lr-stepper-orientation-change`
5176
5483
  (`detail: { orientation }`) — fired only when an enabled `orientationBreakpoint` actually changes
5177
5484
  `effectiveOrientation`.
5178
5485
 
5179
5486
  **Slots:** none.
5180
5487
 
5181
- **CSS parts:** `base` (root wrapper, `role="tablist"`), `step` (a single step button, `role="tab"`),
5488
+ **CSS parts:** `base` (root wrapper, `role="list"`), `step-item` (the `role="listitem"` wrapper for
5489
+ one step), `step` (a single native button; the current step carries `aria-current="step"` and every
5490
+ other step carries `aria-current="false"`),
5182
5491
  `step-icon` (optional leading topic glyph from the step's `icon` field; only rendered when the step
5183
5492
  has one, additionally to — never instead of — `step-index`/`step-check`), `step-index` (the numbered
5184
5493
  index chip, shown for `pending`/`current`/`error` steps), `step-check` (the completed-checkmark
@@ -5229,9 +5538,9 @@ each falls back to the token its rule used before. Otherwise shared tokens —
5229
5538
  - there's no built-in "step forward/back" method — advancing the wizard is entirely the host's job:
5230
5539
  react to `lr-step-select` (or its own Next/Back buttons) and reassign `steps` with updated
5231
5540
  `state` values.
5232
- - `role="tablist"`/`role="tab"` back the keyboard/focus contract (roving tabindex, arrow-key
5233
- navigation) even though this isn't a `<lr-tabs>`-style panel switcher there's no associated
5234
- `role="tabpanel"`, since this component renders no panel content of its own.
5541
+ - The stepper exposes ordered progress/navigation semantics (`list`/`listitem` plus native step
5542
+ buttons), not tabs: it owns no tab panels. Roving tabindex and orientation-aware arrow-key
5543
+ navigation remain available independently of those semantics.
5235
5544
  - Left/Right (horizontal) and Up/Down (vertical) are mutually exclusive per `orientation` — there's
5236
5545
  no single set of keys that works in both.
5237
5546
 
@@ -5450,6 +5759,12 @@ Otherwise shared tokens — `--lr-color-border`/`-surface`/`-text`/
5450
5759
  - the semantic `radiogroup` lives inside shadow DOM. Set `label` (preferred for reactive code) or a
5451
5760
  host `aria-label`; the component deliberately forwards the resulting name to that internal role.
5452
5761
 
5762
+ **Additional API surface:**
5763
+
5764
+ - `--lr-segmented-track-gap` — Gap between segments. Default: `var(--lr-size-0-125rem)`.
5765
+ - `--lr-segmented-track-radius` — Track corner radius. Default: `var(--lr-radius)`.
5766
+ - `--lr-segmented-track-padding` — Track inset padding. Default: `var(--lr-size-0-125rem)`.
5767
+
5453
5768
  ---
5454
5769
 
5455
5770
  ## `lr-virtual-list`
@@ -5519,7 +5834,7 @@ invention (no Web Awesome equivalent).
5519
5834
  - `overscan: number = 6` — extra rows rendered beyond the visible viewport on each side; finite
5520
5835
  values are floored and clamped to 0–100, while non-finite values use the default 6, so an invalid
5521
5836
  runtime value cannot disable windowing and render the entire collection.
5522
- - `activeId: string = ''` (attribute `active-id`) — when set and it matches a row's `keyFunction`
5837
+ - `activeId: string | number | '' = ''` (attribute `active-id`) — when set and it matches a row's `keyFunction`
5523
5838
  result (compared with `Object.is` against the typed value — attribute values arrive as strings, so
5524
5839
  assign the property directly for a numeric key), that row is smoothly scrolled into view whenever
5525
5840
  this changes, and rendered with `aria-current="true"`.
@@ -5695,10 +6010,13 @@ content is never duplicated.
5695
6010
 
5696
6011
  Opting in to `resizable` adds a continuously draggable width for the `'full'` state: a
5697
6012
  `[part="resizer"]` handle (pointer-drag and Left/Right-arrow keyboard stepping, RTL-aware) clamped to
5698
- `[minRailWidthPx, maxRailWidthPx]`. Set `storageKey` (attribute `storage-key`) to persist `open` and
5699
- `railWidthPx` to `localStorage` under `lr-app-rail:${storageKey}` and restore them on the next mount
5700
- (mirrors `lr-split`'s `storage-key`; `mode` is breakpoint-derived and never persisted). Without a
5701
- `storageKey` there is no persistence — listen for `lr-rail-resize` and persist `widthPx` yourself.
6013
+ `[minRailWidthPx, maxRailWidthPx]`. Set `storageKey` (attribute `storage-key`) to persist the fields
6014
+ selected by `persist` to `localStorage` under `lr-app-rail:${storageKey}` and restore them on the
6015
+ next mount (mirrors `lr-split`'s `storage-key`; effective `mode` is breakpoint-derived and never
6016
+ persisted). The backward-compatible allowlist is `open width`; use
6017
+ `persist="width preferred-mode"` for durable layout preference without restoring the transient
6018
+ mobile overlay. Without a `storageKey` there is no persistence — listen for `lr-rail-resize` and
6019
+ persist `widthPx` yourself.
5702
6020
  `preferredMode` separately lets a host manually prefer `'full'`/`'icon-only'` for the non-mobile
5703
6021
  breakpoint axis (e.g. a user's own collapse toggle) while `mobile-breakpoint` continues to be tracked
5704
6022
  automatically regardless — it's only consulted while `mode` isn't force-pinned via the `mode`
@@ -5743,9 +6061,14 @@ accessor itself, which still takes full priority.
5743
6061
  - `railWidthPx?: number` (attribute `rail-width-px`) — the rail's current width in px while
5744
6062
  `resizable`; settable/gettable directly. Unset defers to `--lr-app-rail-width`'s own resolved
5745
6063
  width.
5746
- - `storageKey?: string` (attribute `storage-key`) — when set, persists `open` and `railWidthPx` to
5747
- `localStorage` under `lr-app-rail:${storageKey}` and restores them on the next mount. `mode` is
5748
- breakpoint-derived and never persisted. Unset means no persistence.
6064
+ - `storageKey?: string` (attribute `storage-key`) — when set, persists the fields selected by
6065
+ `persist` to `localStorage` under `lr-app-rail:${storageKey}` and restores them on the next
6066
+ mount. Effective `mode` is breakpoint-derived and never persisted. Unset means no persistence.
6067
+ - `persist: string = 'open width'` — whitespace-separated field allowlist used with `storageKey`.
6068
+ Valid `AppRailPersistField` tokens are `open`, `width` (`railWidthPx`), and `preferred-mode`
6069
+ (`preferredMode`). The default preserves the existing open+width behavior. Use
6070
+ `persist="width preferred-mode"` when overlay-open state is controlled or should stay
6071
+ session-only.
5749
6072
  - `minRailWidthPx: number = 190` (attribute `min-rail-width-px`) — minimum `railWidthPx` a
5750
6073
  drag/keyboard resize can reach.
5751
6074
  - `maxRailWidthPx: number = 440` (attribute `max-rail-width-px`) — maximum `railWidthPx` a
@@ -6063,8 +6386,12 @@ returning to the trigger)
6063
6386
  **Slots:** `trigger` (the consumer's own trigger element — first assigned element wins if several
6064
6387
  are assigned; enhanced imperatively with `aria-haspopup="menu"`/`aria-expanded`/`aria-controls`
6065
6388
  since those attributes belong on the actual interactive trigger, which lives outside this
6066
- component's shadow root), default (`<lr-menu-item>` elements, plus optionally plain `<hr>`
6067
- dividers between groups native `<hr>` already carries an implicit `separator` role),
6389
+ component's shadow root. `aria-controls` targets the `lr-menu` host, which receives a stable
6390
+ generated id only when the consumer did not provide one, rather than the shadow-private list id.
6391
+ `lr-button`/`lr-icon-button` forward the popup/expanded values to their focused shadow-internal
6392
+ native control and resolve the controls element-reference across their shadow boundary), default
6393
+ (`<lr-menu-item>` elements, plus optionally plain `<hr>` dividers — native `<hr>` already carries
6394
+ an implicit `separator` role),
6068
6395
  `header` and `footer` (composed, deliberately non-menu-item content — a filter/search field, a
6069
6396
  section title, an "Apply"/"Done" button, a count — rendered above/below the items inside
6070
6397
  `[part="popup"]` but **outside** the `role="menu"` list. Both collapse to no box at all while
@@ -6246,8 +6573,10 @@ docked case.
6246
6573
  - `collapsible: boolean = false` (reflected)
6247
6574
  - `collapsed: boolean = false` (reflected)
6248
6575
  - `resizable: boolean = true` (reflected) — when `false`, no drag handle renders at all and the panel
6249
- is a fixed size. (Assign `false` via a **property** binding, e.g. `.resizable=${false}` a
6250
- `?resizable=${false}` boolean-attribute binding cannot override a `true` default; see AGENTS.md.)
6576
+ is a fixed size. Its string-aware converter accepts `resizable="false"` as false despite the
6577
+ true default. A Lit property binding (`.resizable=${false}`) also disables it; a false
6578
+ boolean-attribute binding (`?resizable=${false}`) only removes the attribute and cannot override
6579
+ a true-defaulting property.
6251
6580
 
6252
6581
  **Exported helper:** `parseLengthPx(length: string, containerPx: number, fontSizeEl: Element =
6253
6582
  document.documentElement): number | undefined` — resolves an arbitrary CSS length (`px`, `rem`, `em`,
@@ -6399,6 +6728,11 @@ the `footer` slot, hidden entirely when empty).
6399
6728
  `<lr-button>` retargets to the host, but its composed path still contains the internal native
6400
6729
  `<button>`.
6401
6730
 
6731
+ **Additional API surface:**
6732
+
6733
+ - `accessibleLabel` — Host `aria-label` forwarded to the native no-href activation button. Type: `string | null`.
6734
+ - `part="activation-button"` — The native whole-card action, rendered while `interactive` without `href`. It is a sibling of slotted controls, so actionable descendants are never nested inside another actionable role.
6735
+
6402
6736
  ---
6403
6737
 
6404
6738
  ## `lr-command-palette`
@@ -6451,6 +6785,13 @@ after `::part()`), so highlighting the active row previously required hijacking
6451
6785
  `--lr-color-brand-quiet` token and repainting everything else that read it. Unset, it falls back to
6452
6786
  that token, so rendering is unchanged.
6453
6787
 
6788
+ **Additional API surface:**
6789
+
6790
+ - `part="command-group"` — A labeled ARIA group containing visible command options.
6791
+ - `part="list-spacer"` — Virtual result extent inside the scrolling list.
6792
+ - `--lr-command-palette-row-height` — Virtual command-row height. Default: `var(--lr-size-3rem)`.
6793
+ - `--lr-command-palette-group-height` — Virtual group-heading height. Default: `var(--lr-size-2rem)`.
6794
+
6454
6795
  ## `lr-details`, `lr-accordion`, and `lr-accordion-item`
6455
6796
 
6456
6797
  `lr-details` is a native-semantics disclosure panel. `lr-accordion` coordinates slotted
@@ -6489,6 +6830,10 @@ set on the item, on `<lr-breadcrumb>`, or on any ancestor above the trail:
6489
6830
  `--lr-color-text-quiet` token and repainting everything else that read it. Unset, it falls back to
6490
6831
  that token.
6491
6832
 
6833
+ **Additional API surface:**
6834
+
6835
+ - `part="separator"` — Decorative separator shown before non-first items.
6836
+
6492
6837
  ## `lr-dashboard-grid`
6493
6838
 
6494
6839
  Responsive, keyboard-accessible controlled widget grid. It positions layout entries and emits
@@ -6515,6 +6860,10 @@ overriding them from a stylesheet has no effect — set the properties instead.
6515
6860
  preview of its own `:focus-visible` ring, shown because every cell is a real focusable,
6516
6861
  draggable/resizable target; set it to `transparent` to opt out of the hover treatment entirely.
6517
6862
 
6863
+ **Additional API surface:**
6864
+
6865
+ - `--lr-dashboard-grid-collision-outline-color` — Outline color of a cell whose current drag/resize preview collides with another cell. Default: `var(--lr-color-danger)`.
6866
+
6518
6867
  ## `lr-drilldown-panel`
6519
6868
 
6520
6869
  Controlled navigation shell from a chart or table datum to related evidence, documents, entities,
@@ -6533,10 +6882,25 @@ false), `accessibleLabel: string | null = null` (attribute `aria-label` — name
6533
6882
 
6534
6883
  Dashboard filter row that composes Lyra inputs and removable chips, with reset and loading states.
6535
6884
 
6536
- **Properties:** `filters`, `value`, `disabled`, `loading`, `label`, `hasActiveFilters`,
6537
- `invalidFilterIds`, `checkValidity`, `reportValidity`, `reset`. **Events:** `lr-input`, `lr-reset`,
6538
- `lr-validity-change`. **CSS parts:** `base`, `controls`, `filter-control`, `active-filters`,
6539
- `chips`, `chip`, `reset-button`, `status`.
6885
+ **Properties:**
6886
+
6887
+ - `filters: FilterBarFilterDefinition[] = []` (attribute: false) — filter schema in render order.
6888
+ - `value: FilterBarValue = {}` (attribute: false) — current values keyed by filter id; reads and
6889
+ writes are shallow-copied.
6890
+ - `label: string = ''` — accessible name for the internal `role="group"`.
6891
+ - `disabled: boolean = false` (reflected) — disables every filter control and reset action.
6892
+ - `loading: boolean = false` (reflected) — shows the status spinner and disables reset while leaving
6893
+ filters editable.
6894
+ - `hasActiveFilters: boolean` (read-only) — whether any configured filter currently has a value.
6895
+ - `invalidFilterIds: string[]` (read-only) — ids of required filters whose values are unset.
6896
+
6897
+ **Methods:** `checkValidity(): boolean` returns whether every required filter is set without
6898
+ revealing errors; `reportValidity(): boolean` returns the same state and reveals every current
6899
+ required-field error; `reset(): void` restores each definition's `defaultValue` (or unsets it),
6900
+ unless the bar is disabled.
6901
+
6902
+ **Events:** `lr-input`, `lr-reset`, `lr-validity-change`. **CSS parts:** `base`, `controls`,
6903
+ `filter-control`, `active-filters`, `chips`, `chip`, `reset-button`, `status`.
6540
6904
 
6541
6905
  Each filter definition's `type` selects which existing Lyra input renders it — this component
6542
6906
  composes them and never invents a control of its own. `'select'`/`'combobox'` map to their
@@ -6611,8 +6975,8 @@ DOM.
6611
6975
 
6612
6976
  **Themeable custom properties:** `--lr-toast-accent-width` (4px),
6613
6977
  `--lr-toast-show-duration`/`--lr-toast-hide-duration`
6614
- (`var(--lr-transition-base, 180ms ease-out)` — 180ms by default, matching the JS-side show/hide
6615
- animation timer, which is not itself reading this token), `--lr-toast-padding`
6978
+ (`var(--lr-transition-base, 180ms ease-out)` — the show/hide lifecycle reads the resolved computed
6979
+ transition duration and uses it for its completion fallback), `--lr-toast-padding`
6616
6980
  (`var(--lr-space-m)`), `--lr-toast-font-size` (`1rem`) — both are auto-swapped per `size`, from a
6617
6981
  compact `xs` up to a roomier `xl` — `--lr-toast-accent-color` (defaults to `--lr-color-border`,
6618
6982
  auto-swapped per `variant` to `--lr-color-brand/-success/-warning/-danger`).
@@ -6656,10 +7020,8 @@ at another, since `placement` is a per-call option rather than a single global r
6656
7020
  ```
6657
7021
 
6658
7022
  **Known gotchas:**
6659
- - possible nested live-region double-announcement: the stack region is
6660
- `role="status" aria-live="polite"` **and** each `lr-toast-item` independently self-assigns its
6661
- own `role` (`status`/`alert`) — nesting live regions can cause some screen readers to announce a
6662
- new toast twice. Plausible from the code, unverified against real AT.
7023
+ - the stack itself has no live-region role; each `lr-toast-item` owns the single `status`/`alert`
7024
+ role appropriate to its current variant, avoiding nested live-region announcements.
6663
7025
  - the close button's accessible name is derived from the toast's own message text (`"Close: <first
6664
7026
  40 chars>…"`, falling back to bare `"Close"` only when the toast has no text content) rather than
6665
7027
  a bare `"Close"` on every instance — useful when several toasts are stacked and a screen-reader or
@@ -6995,16 +7357,13 @@ already follow.
6995
7357
  whole pill using a loud-color-on-quiet-tint convention; `neutral` has no dedicated token pair, so
6996
7358
  it falls back to a plain bordered-surface look)
6997
7359
  - `removable: boolean = false` (reflected — shows the remove (×) button)
6998
- - `selected: boolean = false` (reflected) — opt-in toggle/pressed mode: when set, `[part='base']`
6999
- itself becomes focusable and keyboard-activatable (Enter/Space, mirroring native `<button>`
7000
- behavior), reflects `aria-pressed` (explicitly `"false"`, not omitted, whenever toggle mode is
7001
- active but unpressed), and toggles on click/activation, emitting `lr-chip-select`.
7002
- Has no effect (no interactive semantics added to `[part='base']`) when combined with `removable`,
7003
- since the remove button already nests inside `[part='base']` a focusable descendant of a
7004
- `role="button"` ancestor isn't allowed there, and this component's two real use cases (a
7005
- chart-series visibility toggle, a category filter chip) never need both at once. `false` (the
7006
- default, with `toggleable` also left at its default) reproduces the exact passive-label-pill
7007
- output.
7360
+ - `selected: boolean = false` (reflected) — current value for opt-in toggle/pressed mode. Once
7361
+ toggle mode is active, a separate native `[part='toggle-button']` owns focus, Enter/Space/click
7362
+ activation, and explicit `"true"`/`"false"` `aria-pressed`; `[part='base']` remains a container
7363
+ and the default-slot label is inert. Activation proposes the opposite value through the
7364
+ cancelable `lr-chip-select` event and mutates `selected` only when that event is not prevented.
7365
+ Has no toggle effect when combined with `removable`, where the remove button is the sole control.
7366
+ `false` (with `toggleable` also left at its default) reproduces the passive label-pill output.
7008
7367
  - `toggleable: boolean = false` (reflected) — explicit opt-in into `selected`'s toggle/pressed
7009
7368
  interactive mode, independent of `selected`'s own current value. Setting `selected` to `true` at
7010
7369
  any point opts in automatically and keeps `toggleable` `true` from then on (enough for a chip that
@@ -7017,16 +7376,21 @@ already follow.
7017
7376
 
7018
7377
  **Events:** `lr-remove` (`detail: { value }` — the remove (×) button was activated via click or
7019
7378
  Enter/Space while focused; only rendered/reachable while `removable`), `lr-chip-select`
7020
- (`detail: { value, selected }` — fired on click, or Enter/Space while focused, when `selected` mode
7021
- is active and `removable` is not set; the chip has already toggled its own `selected` state by the
7022
- time this fires)
7379
+ (`detail: { value, selected }` — cancelable; fired from the native toggle button on click or
7380
+ Enter/Space with the proposed next state when toggle mode is active and `removable` is not set.
7381
+ Calling `preventDefault()` keeps the current `selected` state unchanged)
7023
7382
 
7024
- **Slots:** default (the chip's label content), `icon` (optional leading icon or status dot; nothing
7025
- reserved for it no extra gap when left empty)
7383
+ **Methods:** `focus(options?)`, `blur()`, and `click()` forward to the active internal control
7384
+ (toggle or remove button); a passive chip's `click()` retains ordinary host behavior.
7385
+
7386
+ **Slots:** default (the chip's label content; inert in toggle mode, so move links/buttons outside a
7387
+ toggleable chip), `icon` (optional leading icon or status dot; nothing reserved for it — no extra
7388
+ gap — when left empty)
7026
7389
 
7027
7390
  **CSS parts:** `base` (the pill's root container), `icon` (wrapper around the `icon` slot; hidden
7028
- entirely while empty), `label` (wrapper around the default slot), `remove-button` (the remove (×)
7029
- affordance, only rendered while `removable`)
7391
+ entirely while empty), `label` (non-interactive wrapper around the default slot), `toggle-button`
7392
+ (the real native toggle control, rendered over the label in toggle mode), `remove-button` (the
7393
+ remove (×) affordance, only rendered while `removable`)
7030
7394
 
7031
7395
  **Themeable custom properties:** `--lr-chip-accent`, `--lr-chip-bg`, `--lr-chip-border`
7032
7396
  (component-local trio swapped per `tone` rather than repeating background/color/border per part per
@@ -7158,11 +7522,13 @@ string. First-party invention (no Web Awesome equivalent).
7158
7522
  (single letters/digits upper-cased).
7159
7523
 
7160
7524
  **Exported types/functions (also directly usable standalone):** `KbdKeyLabel { visual: string;
7161
- word: string }` — one resolved token's rendered glyph and spelled-out word.
7162
- `shortcutTokenLabel(rawToken: string, isMac: boolean): KbdKeyLabel` — resolves a single token,
7163
- parameterized on `isMac` so both platform branches are unit-testable without spoofing `navigator`.
7164
- `parseShortcut(keys: string, isMac: boolean): KbdKeyLabel[]` splits and resolves a full `keys`
7165
- string.
7525
+ word: string }` — one resolved token's rendered glyph and spelled-out word; `KbdLocalize = (key:
7526
+ string, fallback: string) => string`.
7527
+ `shortcutTokenLabel(rawToken: string, isMac: boolean, localize?: KbdLocalize): KbdKeyLabel`
7528
+ resolves a single token, parameterized on `isMac` so both platform branches are unit-testable
7529
+ without spoofing `navigator`; the optional callback localizes spoken key names.
7530
+ `parseShortcut(keys: string, isMac: boolean, localize?: KbdLocalize): KbdKeyLabel[]` splits and
7531
+ resolves a full `keys` string with the same optional localization callback.
7166
7532
 
7167
7533
  **Events:** none — purely presentational.
7168
7534
 
@@ -7218,8 +7584,10 @@ the anchor point moves on its own (e.g. a graph pan/zoom tick), re-call `showAt(
7218
7584
  coordinates to re-anchor — the popover stays open across such a call. A popover that never calls
7219
7585
  `showAt()` behaves exactly as before.
7220
7586
  `hide(options?: { focusTrigger?: boolean })` programmatically closes the popover; pass
7221
- `{ focusTrigger: true }` to return focus to the slotted trigger (as Escape does), or omit it to
7222
- close without moving focus (as a bare `el.open = false` does). No-op when already closed.
7587
+ `{ focusTrigger: false }` to opt out of focus restoration. By default, `hide()`, Escape, light
7588
+ dismiss, and a bare `el.open = false` all return focus to the slotted trigger, or to a virtual
7589
+ anchor's explicit `returnFocusTo`; a virtual anchor with no return target closes without moving
7590
+ focus. No-op when already closed.
7223
7591
  **Events:** `lr-show`, `lr-hide`. **Slots:** `trigger`, default content. **CSS parts:** `trigger`,
7224
7592
  `popup`, `content`. **Themeable custom properties:** `--lr-overlay-max-inline-size` (default
7225
7593
  `--lr-size-20rem` — maximum inline size of the popup).
@@ -7304,6 +7672,12 @@ The rendered progressbar exposes `aria-valuemin`, `aria-valuemax`, and `aria-val
7304
7672
  determinate.
7305
7673
 
7306
7674
  **Slots:** `label`. **CSS parts:** `base`, `track`, `indicator`, `label`.
7675
+ **Themeable custom properties:** `--lr-progress-height` (default `var(--lr-size-0-5rem)`) — the
7676
+ block size of the progress track.
7677
+
7678
+ **Additional API surface:**
7679
+
7680
+ - `--lr-progress-duration` — Indeterminate sweep timing. Default: `var(--lr-transition-ambient)`.
7307
7681
 
7308
7682
  ## `lr-progress-ring`
7309
7683
 
@@ -7384,6 +7758,12 @@ inside each star, clipped to the fractional `precision` value). **Themeable cust
7384
7758
  (default `--lr-color-border` — unfilled-star color), and `--lr-rating-size` (default
7385
7759
  `--lr-font-size-xl` — star size).
7386
7760
 
7761
+ **Additional API surface:**
7762
+
7763
+ - `blur()` — Forwards host blur to the internal rating control.
7764
+ - `click()` — Forwards host activation to the internal rating control.
7765
+ - `focus()` — Forwards host focus to the internal rating control.
7766
+
7387
7767
  # Utilities, formatting & observers (`components/utility/`)
7388
7768
 
7389
7769
  ## `lr-export-button`
@@ -7414,12 +7794,14 @@ immediately) or multi-format (click opens a small menu).
7414
7794
  name and feeds the localized format-menu name without changing the visible label
7415
7795
  - `open: boolean = false` (reflected)
7416
7796
 
7417
- **Methods:** `focus(options?)` and `blur()` forward to the native trigger button.
7797
+ **Methods:** `focus(options?)`, `blur()`, and `click()` forward to the native trigger button.
7418
7798
 
7419
7799
  **Events:** `lr-export` (`detail: { format: string }`, **cancelable** — call `preventDefault()` to
7420
7800
  substitute your own server-generated download instead of the built-in client-side one),
7421
7801
  `lr-export-complete` (`detail: { format: 'csv' | 'json' }`, fires only after a non-cancelled
7422
- built-in download completes), `lr-show`, `lr-hide` (format-menu visibility transitions)
7802
+ built-in download completes), `lr-export-error` (`detail: { format: 'csv' | 'json', error:
7803
+ unknown }`, fires when a built-in export cannot be serialized or downloaded; activation does not
7804
+ throw into consumer code), `lr-show`, `lr-hide` (format-menu visibility transitions)
7423
7805
 
7424
7806
  **Slots:** none.
7425
7807
 
@@ -7521,6 +7903,10 @@ buttons, this has no code/JSON content model to adopt just to reuse the copy aff
7521
7903
  and some engines throw synchronously rather than rejecting — either way `lr-copy` still fires
7522
7904
  with the intended text so a consumer can always show its own confirmation/fallback UI.
7523
7905
 
7906
+ **Additional API surface:**
7907
+
7908
+ - `click()` — Activates the native button, matching the host focus/blur forwarding contract.
7909
+
7524
7910
  ---
7525
7911
 
7526
7912
  ## `lr-resize-observer`
@@ -7591,8 +7977,10 @@ stack overflow on cyclic `data`.
7591
7977
  **Methods:** `runSearch(query)` sets the declarative `search` property and awaits the recompute,
7592
7978
  resolving the match count — named distinctly from `search` because a class member can't share a name
7593
7979
  with a reactive property. `searchNext()`/`searchPrevious()` advance/step back a match cursor
7594
- (wrapping) and scroll the active match into view, resolving `false` when there are no matches.
7595
- `clearSearch()` resets `search` to `''`, clearing all matches and the cursor.
7980
+ (wrapping), reveal that selected match even when one of its ancestors was explicitly collapsed,
7981
+ mark it as the active `aria-current` result, announce its position, and scroll it into view;
7982
+ they resolve `false` when there are no matches. `clearSearch()` resets `search` to `''`, clearing all
7983
+ matches and the cursor.
7596
7984
 
7597
7985
  **Events:** `lr-copy` (`detail: { text: string }`) — fired by the top-level copy button or a
7598
7986
  per-node one. Fires even when `navigator.clipboard` is unavailable or the write silently failed
@@ -7623,7 +8011,13 @@ until `max-height` is set), `--lr-json-viewer-font` (default `var(--lr-font-mono
7623
8011
  `--lr-json-viewer-match-bg` (default `var(--lr-color-warning-quiet)`) — background, and surrounding
7624
8012
  box-shadow, of a key/value that currently matches `search`. Component-scoped indirection over the
7625
8013
  shared `--lr-color-warning-quiet` token, so a consumer can retheme just this search-match highlight
7626
- without repainting every other warning-toned surface that reads the same shared token. Plus shared
8014
+ without repainting every other warning-toned surface that reads the same shared token;
8015
+ `--lr-json-viewer-active-outline` (default `var(--lr-focus-ring-color)`) — outline color for the
8016
+ current imperative search match; `--lr-json-viewer-string-color` (default
8017
+ `var(--lr-color-success)`), `--lr-json-viewer-number-color` (default `var(--lr-color-brand)`),
8018
+ `--lr-json-viewer-boolean-color` (default `var(--lr-color-warning)`), and
8019
+ `--lr-json-viewer-null-color` (default `var(--lr-color-text-quiet)`) — per-value-type color hooks.
8020
+ Plus shared
7627
8021
  tokens `--lr-color-border/-surface/-text/-text-quiet/-brand/-brand-quiet/-success/-warning/-warning-quiet`,
7628
8022
  `--lr-radius`, `--lr-space-xs/-s/-l`, `--lr-focus-ring-width/-color/-offset`,
7629
8023
  `--lr-transition-fast`.
@@ -7649,9 +8043,11 @@ html`<lr-json-viewer .data=${apiResponse} copyable max-height="24rem" search=${q
7649
8043
  binding, never as a plain HTML attribute.
7650
8044
  - Search highlighting auto-expands only the *ancestors* of a match, not the whole tree — a
7651
8045
  non-matching sibling subtree elsewhere stays collapsed (or expanded) exactly as it already was.
7652
- - An explicit per-node expand/collapse (from clicking a node's `toggle` button) permanently overrides
7653
- both `collapsedDepth` and any search-driven auto-expand for that path, until `data` is reassigned
7654
- with a different shape.
8046
+ - An explicit per-node expand/collapse (from clicking a node's `toggle` button) overrides
8047
+ `collapsedDepth` and declarative search-driven auto-expansion for that path. Imperative
8048
+ `searchNext()`/`searchPrevious()` navigation may reopen the ancestors of the selected result so
8049
+ the active match is never hidden; otherwise the override persists until `data` is reassigned with
8050
+ a different shape.
7655
8051
  - Per-node copy buttons call `stopPropagation()` on click so clicking one doesn't also toggle the
7656
8052
  row's expand/collapse state.
7657
8053
 
@@ -7819,10 +8215,11 @@ via an internal `<lr-live-region>` in polite mode.
7819
8215
 
7820
8216
  A caret-anchored, keyboard-navigable popover for `@`-mention and `/`-slash-command autocomplete
7821
8217
  inside a plain-text `<textarea>`/`<input>` the host owns. First-party invention (no Web Awesome
7822
- equivalent). It never takes DOM focus itself the host's own input keeps focus, and this
7823
- component conveys the active row via `activeDescendantId` for the host to apply as its own
7824
- input's `aria-activedescendant`, the same pattern `<lr-select>`/`<lr-combobox>` use for their
7825
- own listbox.
8218
+ equivalent). On platforms accepting cross-root ARIA element reflection, the host's own input keeps
8219
+ focus and `syncActiveDescendant()` points it at the active option. Where that reference is rejected,
8220
+ `focusActiveOption()` moves real focus into this component's shadow listbox so the focus owner and
8221
+ option share one tree scope. A string `aria-activedescendant` cannot resolve from a host input in
8222
+ the document into an option in this component's shadow root.
7826
8223
 
7827
8224
  **Properties:**
7828
8225
  - `anchor?: HTMLElement` (attribute: false) — the element to position the popup relative to. A
@@ -7842,18 +8239,26 @@ own listbox.
7842
8239
  - `filteredItems: MentionItem[]` — read-only getter; `items` filtered by `query` via `filter` (or
7843
8240
  the built-in default). Empty `query` returns `items` unfiltered.
7844
8241
  - `activeDescendantId: string | null` — read-only getter; the `id` of the currently-highlighted
7845
- row, or `null` while closed or when `filteredItems` is empty.
7846
- - `listboxId: string` read-only getter; the `id` of the `role="listbox"` element, for a host that
7847
- also wants to wire `aria-controls`.
7848
-
7849
- **Methods:** `handleKeyDown(e: KeyboardEvent): boolean` — the host's own text-control `keydown`
7850
- handler calls this while the popover is open. Handles `ArrowDown`/`ArrowUp` (moves the highlight) and
7851
- `Enter`/`Tab` (commits the highlighted row) — both pairs return `false` with no `preventDefault()`
7852
- when `filteredItems` is empty, letting the keystroke fall through to the host's own control unchanged
7853
- (e.g. the textarea's caret still moves to the next line on ArrowDown when there's nothing to
7854
- navigate); `Escape` always closes with no selection and returns `true`. Returns `true` whenever the
7855
- key was intercepted (`preventDefault()` already called) and the host should not also act on it,
7856
- `false` otherwise (including for any key this method doesn't recognize).
8242
+ internal row, or `null` while closed or when `filteredItems` is empty. Useful for diagnostics and
8243
+ same-tree consumers; do not copy it to an external control as a string IDREF.
8244
+ - `activeDescendantElement: HTMLElement | null` — read-only getter; the highlighted shadow option
8245
+ for the platform's element-reference ARIA API.
8246
+ - `listboxId: string` — read-only getter; the internal `id` of the `role="listbox"` element. Like
8247
+ `activeDescendantId`, it cannot form a cross-shadow string IDREF from a host input.
8248
+
8249
+ **Methods:**
8250
+ - `handleKeyDown(e: KeyboardEvent): boolean` the host's own text-control `keydown` handler calls
8251
+ this while the popover is open. Handles `ArrowDown`/`ArrowUp` (moves the highlight) and
8252
+ `Enter`/`Tab` (commits the highlighted row) both pairs return `false` with no
8253
+ `preventDefault()` when `filteredItems` is empty, letting the keystroke fall through to the
8254
+ host's own control unchanged. `Escape` closes with no selection. Returns `true` whenever the key
8255
+ was intercepted and `false` for keys the method does not recognize.
8256
+ - `syncActiveDescendant(control: HTMLElement): boolean` — clears any string
8257
+ `aria-activedescendant`, then applies `ariaActiveDescendantElement` when the platform accepts the
8258
+ cross-root reference. Returns whether that reference was accepted.
8259
+ - `focusActiveOption(): Promise<boolean>` — same-tree fallback after a consumed navigation key
8260
+ when `syncActiveDescendant()` returns `false`. Focuses the active option, lets the popover handle
8261
+ subsequent navigation, and restores focus to `anchor` when the popover closes.
7857
8262
 
7858
8263
  **Exported types:** `MentionItem { id: string; label: string; description?: string; icon?: string
7859
8264
  }`; `MentionFilter = (item: MentionItem, query: string) => boolean`; `MentionSelectDetail { id:
@@ -7895,7 +8300,13 @@ available space. See `lr-tour` for the shared-clamp note.
7895
8300
  const popover = document.getElementById('mentions');
7896
8301
 
7897
8302
  textarea.addEventListener('keydown', (e) => {
7898
- if (popover.open && popover.handleKeyDown(e)) return; // consumed
8303
+ if (popover.open && popover.handleKeyDown(e)) {
8304
+ if (!popover.syncActiveDescendant(textarea) &&
8305
+ (e.key === 'ArrowDown' || e.key === 'ArrowUp')) {
8306
+ void popover.focusActiveOption();
8307
+ }
8308
+ return;
8309
+ }
7899
8310
  });
7900
8311
  textarea.addEventListener('input', () => {
7901
8312
  popover.anchor = textarea;
@@ -7905,6 +8316,7 @@ available space. See `lr-tour` for the shared-clamp note.
7905
8316
  ];
7906
8317
  popover.query = 'a'; // detected since the trigger character
7907
8318
  popover.open = true;
8319
+ popover.updateComplete.then(() => popover.syncActiveDescendant(textarea));
7908
8320
  });
7909
8321
 
7910
8322
  popover.addEventListener('lr-mention-select', (e) => {
@@ -7915,11 +8327,11 @@ available space. See `lr-tour` for the shared-clamp note.
7915
8327
 
7916
8328
  Integration is entirely the host's responsibility: detect a mention/command trigger in the host's
7917
8329
  own `input` handling, set `anchor`/`items`/`query` and flip `open = true`, forward every `keydown`
7918
- through `handleKeyDown()` while open, and keep the host's own input's `aria-activedescendant` (and
7919
- optionally `aria-controls`, via `listboxId`) in sync with `activeDescendantId`. Setting `open =
7920
- false` whenever the query stops looking like an active mention context (a space typed, the trigger
7921
- deleted, the input blurred, …) is also the host's job `lr-mention-close` fires automatically
7922
- from that, there is no separate "tell it to close" call needed.
8330
+ through `handleKeyDown()` while open, and call `syncActiveDescendant()` after opening and after each
8331
+ consumed navigation key. If it returns `false`, call `focusActiveOption()` after the first consumed
8332
+ ArrowUp/ArrowDown so the fallback owns navigation from then on. Setting `open = false` whenever the
8333
+ query stops looking like an active mention context (a space typed, the trigger deleted, the input
8334
+ blurred, …) is also the host's job `lr-mention-close` fires automatically from that.
7923
8335
 
7924
8336
  Positioning measures exactly where the caret currently paints via a hidden-mirror-element technique
7925
8337
  (`caretClientRect()`) and positions against that single point with `internal/positioner.js`'s
@@ -7931,6 +8343,9 @@ fresh `query` is the proxy for "the caret may have moved").
7931
8343
  - a host-level `aria-label` attribute on `<lr-mention-popover>` now takes priority over `label`
7932
8344
  (and its localized default) when resolving `[part="listbox"]`'s accessible name — previously it
7933
8345
  was silently ignored. Matches the same fallback on `<lr-combobox>`/`<lr-table>`.
8346
+ - Never copy `activeDescendantId` or `listboxId` onto a document-owned control as a string ARIA
8347
+ IDREF; shadow-root IDs are outside that control's tree scope. Use `syncActiveDescendant()` and its
8348
+ `focusActiveOption()` fallback.
7934
8349
  - The popover opens pre-highlighted on the top match (index 0), unlike `<lr-combobox>`'s own
7935
8350
  listbox which opens with nothing highlighted (`-1`) — a bare Enter right after opening commits
7936
8351
  immediately.
@@ -7977,6 +8392,9 @@ First-party invention (no Web Awesome equivalent).
7977
8392
  - `contextLines: number | undefined` (attribute: `context-lines`) — keeps this many unchanged
7978
8393
  lines around each change and collapses longer unchanged runs into a localized fold marker. The
7979
8394
  default `undefined` shows every line; negative and non-finite values also disable folding.
8395
+ - `maxLines: number = 5000` (attribute `max-lines`) — maximum logical lines accepted on either
8396
+ side. Larger input renders the localized `diffViewTooLarge` fallback without computing or
8397
+ highlighting the diff. Set the property to `Infinity` explicitly to opt into unbounded diffing.
7980
8398
 
7981
8399
  **Events:** `lr-copy` (`detail: { text: string }` — the full unified-diff text, fired on
7982
8400
  copy-button activation regardless of whether the clipboard write actually succeeded).
@@ -7987,7 +8405,8 @@ copy-button activation regardless of whether the clipboard write actually succee
7987
8405
  `data-type="equal"|"add"|"remove"|"empty"|"fold"` — `"empty"` is an unbalanced-replace placeholder cell in
7988
8406
  `layout="split"` and never carries a `+`/`-` prefix; `"fold"` is the localized unchanged-lines
7989
8407
  marker), `copy-button` (the copy affordance, only
7990
- rendered while `copyable`), `side` (one column in `layout="split"`, `data-side="old"|"new"`).
8408
+ rendered while `copyable`), `limit` (the localized over-`maxLines` fallback), `side` (one column in
8409
+ `layout="split"`, `data-side="old"|"new"`).
7991
8410
 
7992
8411
  **Themeable custom properties:** `--lr-diff-view-font` (default `var(--lr-font-mono)`), plus
7993
8412
  shared tokens `--lr-color-border`/`-surface`/`-success`/`-success-quiet`/`-danger`/
@@ -8015,13 +8434,22 @@ same line-diff function this component's own `render()`/copy handler call, expos
8015
8434
  consumer can compute or unit-test the same alignment without instantiating the element at all.
8016
8435
 
8017
8436
  **Known gotchas:**
8018
- - the alignment is a genuine O(n·m) longest-common-subsequence dynamic program over lines (split on
8019
- `\n`), not a naive "every removed line then every added line" fine for a typical
8020
- tool-call/transcript-sized diff, but a very large pair of texts costs quadratic time/memory;
8021
- there's no line-count guard or chunking of its own.
8022
- - `oldText`/`newText` are recomputed into the diff on every render — this component keeps no separate
8023
- cached diff state, so binding either property to something that changes on every keystroke
8024
- recomputes the whole alignment each time.
8437
+ - line splitting normalizes LF, CRLF, and lone CR endings before alignment and syntax-token indexing,
8438
+ so files that differ only by line-ending convention do not appear wholly changed.
8439
+ - alignment uses Hirschberg longest-common-subsequence matching: O(n·m) time with linear working
8440
+ memory. The 5,000-line per-side default ceiling bounds pathological inputs; `Infinity` is an
8441
+ explicit performance-risk opt-out.
8442
+ - the computed `diffOps` state is cached and recomputed only when `oldText`, `newText`, or
8443
+ `maxLines` changes. Copy-confirmation and other unrelated renders reuse the cached alignment.
8444
+
8445
+ **Additional API surface:**
8446
+
8447
+ - `--lr-diff-view-add-background` — Added-line background.
8448
+ - `--lr-diff-view-add-color` — Added-line text color.
8449
+ - `--lr-diff-view-remove-background` — Removed-line background.
8450
+ - `--lr-diff-view-remove-color` — Removed-line text color.
8451
+ - `--lr-diff-view-fold-color` — Fold-marker text color.
8452
+ - `--lr-diff-view-fold-background` — Fold-marker background.
8025
8453
 
8026
8454
  ---
8027
8455
 
@@ -8251,6 +8679,10 @@ The two height knobs work as a pair on `[part='field-input']`, the same way
8251
8679
  - The host carries a `:state(blank)` custom state whenever `value === ''`, and `data-invalid` only
8252
8680
  once touched (first blur out of the whole control) and actually invalid.
8253
8681
 
8682
+ **Additional API surface:**
8683
+
8684
+ - `click()` — Activates the first native field in locale order.
8685
+
8254
8686
  ## `lr-random-content`
8255
8687
 
8256
8688
  Shows a chosen subset of its slotted children and hides the rest — A/B copy testing, testimonial
@@ -8267,6 +8699,8 @@ children; nothing is moved or cloned.
8267
8699
  - `animation: 'none' | 'fade' | 'fade-up' | 'fade-down' | 'fade-left' | 'fade-right' = 'none'`
8268
8700
  (reflected) — entrance effect applied to a child the instant it becomes shown
8269
8701
  - `autoplay: boolean = false` (reflected)
8702
+ - `paused: boolean = false` (reflected) — suppresses autoplay. The built-in pause/resume action
8703
+ toggles this state; a programmatic assignment remains silent.
8270
8704
  - `autoplayInterval: number = 3000` (attribute `autoplay-interval`) — clamped to a 1000 ms floor
8271
8705
 
8272
8706
  **Methods:** `randomize(): HTMLElement[]` — re-selects using the current `mode`, applies
@@ -8282,7 +8716,8 @@ each autoplay tick; never when the eligible pool is empty.
8282
8716
  **CSS parts:** `base` — the wrapper around the default slot; carries `role="status"`,
8283
8717
  `aria-atomic="true"`, and `aria-live="polite"`, downgraded to `aria-live="off"` while `autoplay` is
8284
8718
  on (a self-rotating region announcing on every tick would be spam). A host `aria-label` attribute is
8285
- forwarded onto it.
8719
+ forwarded onto it. `pause-button` — the localized autoplay pause/resume action, rendered only while
8720
+ `autoplay` is enabled and exposed as a toggle with `aria-pressed`.
8286
8721
 
8287
8722
  **Themeable custom properties:** `--lr-random-content-animation-duration` (default `300ms`),
8288
8723
  `--lr-random-content-animation-easing` (default `ease`),
@@ -8290,8 +8725,8 @@ forwarded onto it.
8290
8725
  directional `fade-*` effects).
8291
8726
 
8292
8727
  **Known gotchas:**
8293
- - There is no built-in trigger UI (no next/previous/shuffle button) and therefore no keyboard
8294
- interaction: selection changes only via `autoplay` or `randomize()`.
8728
+ - There is no next/previous/shuffle action; the only built-in control is the autoplay pause/resume
8729
+ button. Selection changes via autoplay or `randomize()`.
8295
8730
  - Autoplay is suppressed entirely under `prefers-reduced-motion: reduce`, and whenever the eligible
8296
8731
  pool has fewer than 2 children. The preference is re-observed live, not just read once.
8297
8732
  - `fade-left`/`fade-right` are physical-direction transforms (upstream naming), deliberately **not**
@@ -8554,6 +8989,10 @@ import '@aceshooting/lyra-ui/components/media/flag/flag-peer.js';
8554
8989
  (`variant="detailed"` is the replacement); left unset, `variant` falls back to honoring `detailed`
8555
8990
  for one more minor version before removal.
8556
8991
 
8992
+ **Additional API surface:**
8993
+
8994
+ - `part="error"` — Localized alert rendered when the optional peer resolver is unavailable or fails.
8995
+
8557
8996
  ---
8558
8997
 
8559
8998
  ## `lr-playback`
@@ -8570,8 +9009,8 @@ Steps an index through `[0, length)` on a fixed interval — play/pause for time
8570
9009
  change-tracking sees it and auto-pauses on `hidden = true`)
8571
9010
 
8572
9011
  **Methods:** `play()`, `pause()`, `toggle()`, `next()`, `previous()`, `goTo(index: number)` — all
8573
- idempotent/clamped; `length <= 1` is a no-op degenerate case. `focus(options?)` and `blur()` forward
8574
- to the play button.
9012
+ idempotent/clamped; `length <= 1` is a no-op degenerate case. `focus(options?)`, `blur()`, and
9013
+ `click()` forward to the play button.
8575
9014
 
8576
9015
  **Events:** `lr-play`, `lr-pause` (no detail), `lr-step` (`detail: { index }`, fired on every
8577
9016
  tick and manual step); internal `focus`/`blur` are bridged as bubbling, composed host events.
@@ -8682,13 +9121,19 @@ not installed)
8682
9121
  **Themeable custom properties:** shared tokens only — `--lr-space-xs/-s`, `--lr-color-surface`,
8683
9122
  `--lr-color-border`, `--lr-shadow`, `--lr-radius`.
8684
9123
 
8685
- **Optional peer deps:** `maplibre-gl` (lazy-loaded; consumer must **separately** `import
8686
- 'maplibre-gl/dist/maplibre-gl.css'` once the component does not do this for you).
9124
+ **Optional peer deps:** `maplibre-gl` (lazy-loaded). MapLibre v6 is ESM-only and requires WebGL2.
9125
+ The consumer must **separately** import `maplibre-gl/dist/maplibre-gl.css` and configure the v6
9126
+ module-worker URL for its bundler once — the component cannot choose a bundler-specific worker URL.
9127
+ For Vite:
8687
9128
 
8688
9129
  ```html
8689
9130
  <lr-map center="[2.35, 48.85]" zoom="10"></lr-map>
8690
- <script>
9131
+ <script type="module">
9132
+ import { setWorkerUrl } from 'maplibre-gl';
9133
+ import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';
8691
9134
  import 'maplibre-gl/dist/maplibre-gl.css';
9135
+ setWorkerUrl(workerUrl);
9136
+
8692
9137
  const m = document.querySelector('lr-map');
8693
9138
  m.choropleth = {
8694
9139
  sourceId: 'regions',
@@ -8702,6 +9147,10 @@ not installed)
8702
9147
  </script>
8703
9148
  ```
8704
9149
 
9150
+ Webpack, esbuild, Rollup, and direct-browser ESM use different worker URL forms; use MapLibre's ESM
9151
+ installation guide for the matching setup:
9152
+ https://maplibre.org/maplibre-gl-js/docs/#esm.
9153
+
8705
9154
  **Known gotchas:**
8706
9155
  - clearing or swapping the choropleth no longer leaks the old layer: setting `choropleth =
8707
9156
  undefined`, or changing `choropleth.sourceId` to a different value, now calls `removeLayer`/
@@ -8818,17 +9267,18 @@ tokens — `--lr-space-xs`, `--lr-space-l`,
8818
9267
  **Optional peer deps:** none.
8819
9268
 
8820
9269
  ```html
8821
- <lr-file-input multiple accept=".csv,.xlsx" allowed-mime-types='["text/csv"]'></lr-file-input>
9270
+ <lr-file-input id="dataset-files" multiple accept=".csv,.xlsx"></lr-file-input>
8822
9271
  <script>
8823
- document.querySelector('lr-file-input').addEventListener('lr-files', (e) => {
9272
+ const input = document.querySelector('#dataset-files');
9273
+ input.allowedMimeTypes = ['text/csv'];
9274
+ input.addEventListener('lr-files', (e) => {
8824
9275
  console.log('accepted:', e.detail.files, 'rejected:', e.detail.rejected); // rejected[i].reason
8825
9276
  });
8826
9277
  </script>
8827
9278
  ```
8828
9279
 
8829
9280
  Note: `allowedMimeTypes`/`forbiddenMimeTypes` are complex properties (`attribute: false`) — set
8830
- them via JS (`el.allowedMimeTypes = [...]`), not as a JSON string attribute; the snippet above is
8831
- illustrative of intent only.
9281
+ them via JS (`el.allowedMimeTypes = [...]`), not as a JSON string attribute.
8832
9282
 
8833
9283
  `accept.ts` exports `matchesAccept(file, accept, assumeExtensionMatch?)` (internal — not
8834
9284
  re-exported from the package root) — parses the same three `accept` forms the browser's native
@@ -8841,8 +9291,7 @@ an extension-only `accept` list.
8841
9291
  **Known gotchas:**
8842
9292
  - Paste-from-clipboard **is** supported and on by default: a `paste` event on the dropzone reads
8843
9293
  `e.clipboardData.files` and routes it through the same accept/reject classification as a drop.
8844
- Set `paste="false"` (or `.paste = false`) to opt out. (The package README's "Known limitations"
8845
- entry claiming there is no paste support, and none for dragged folders, is stale — both work.)
9294
+ Set `paste="false"` (or `.paste = false`) to opt out.
8846
9295
  - Dragged folders **are** detected via `webkitGetAsEntry()` and reported as
8847
9296
  `rejected[].reason === 'directory'` (paired with a synthetic zero-byte `File` carrying the folder
8848
9297
  name), not silently accepted as a phantom file.
@@ -8873,6 +9322,8 @@ Before/after comparison surface with two named slots and a keyboard-accessible n
8873
9322
  **Events:** `lr-position-change` (`detail: { position }`), plus composed `focus` and `blur` events
8874
9323
  from the internal range handle.
8875
9324
 
9325
+ **Methods:** `focus(options?)`, `blur()`, and `click()` forward to the internal range handle.
9326
+
8876
9327
  **Slots:** `before`, `after`.
8877
9328
 
8878
9329
  **CSS parts:** `base`, `before`, `after`, `divider`, and `handle`.
@@ -9116,6 +9567,9 @@ drop-in still does something useful, but `lr-open` fires first — a host callin
9116
9567
  `preventDefault()` on it suppresses that default download/open so it can substitute its own
9117
9568
  handling.
9118
9569
 
9570
+ **Methods:** `focus(options?)`, `blur()`, and `click()` forward to the primary action for the
9571
+ current media kind.
9572
+
9119
9573
  **Slots:** none.
9120
9574
 
9121
9575
  **CSS parts:** `base` (a `<button>` for `kind="image"`, a plain wrapper `<div>` for `kind="video"`,
@@ -9252,6 +9706,10 @@ hidden via CSS by default, exposed as a part only so a consumer can override tha
9252
9706
  scope-limited by design to firing `lr-camera-request`/`lr-audio-request` and nothing else. The
9253
9707
  hidden input is only rendered when `capabilities` contains `files` or `image`.
9254
9708
 
9709
+ **Additional API surface:**
9710
+
9711
+ - `click()` — Activates the internal attachment trigger.
9712
+
9255
9713
  ---
9256
9714
 
9257
9715
  ## `lr-avatar`
@@ -9371,6 +9829,10 @@ backgrounded circle around the button; only rendered once loaded and error-free)
9371
9829
  browser's native decode loop keeps running while visually covered; only opacity and `aria-hidden`
9372
9830
  swap.
9373
9831
 
9832
+ **Additional API surface:**
9833
+
9834
+ - `click()` — Activate the play/pause control.
9835
+
9374
9836
  ## `lr-animation`
9375
9837
 
9376
9838
  Declaratively animates one slotted element through the native Web Animations API.
@@ -9609,12 +10071,18 @@ mode is on. The toggle carries its own glyph in `--lr-color-text`, so keep a 4.5
9609
10071
  when overriding the background. `--lr-image-viewer-highlight-active-color` (default
9610
10072
  `var(--lr-color-brand)`) — the outline of the `[part='highlight']` matching `activeHighlightId`,
9611
10073
  independent of the per-tone border colors, so the active box stays distinguishable whatever tone it
9612
- carries. All three are declared as inline `var()` fallbacks at the point of use rather than on
9613
- `:host`, so each can be set on the element *or on any ancestor*: `::part(highlight)[data-active]` is
9614
- invalid CSS — Shadow Parts forbids an attribute selector after `::part()` — which previously left
9615
- overriding the library-wide `--lr-color-brand`/`--lr-color-brand-quiet` tokens as the only lever,
9616
- repainting every other element that read them. Unset, each falls back to the token its rule used
9617
- before.
10074
+ carries. Highlight tone styling is exposed through `--lr-image-viewer-highlight-border`,
10075
+ `--lr-image-viewer-highlight-bg`, and the tone-specific
10076
+ `--lr-image-viewer-highlight-success-border`, `--lr-image-viewer-highlight-success-bg`,
10077
+ `--lr-image-viewer-highlight-warning-border`, `--lr-image-viewer-highlight-warning-bg`,
10078
+ `--lr-image-viewer-highlight-danger-border`, `--lr-image-viewer-highlight-danger-bg`,
10079
+ `--lr-image-viewer-highlight-neutral-border`, and `--lr-image-viewer-highlight-neutral-bg`
10080
+ properties. These properties are declared as inline `var()` fallbacks at the point of use rather
10081
+ than on `:host`, so each can be set on the element *or on any ancestor*:
10082
+ `::part(highlight)[data-active]` is invalid CSS — Shadow Parts forbids an attribute selector after
10083
+ `::part()` — which previously left overriding the library-wide
10084
+ `--lr-color-brand`/`--lr-color-brand-quiet` tokens as the only lever, repainting every other
10085
+ element that read them. Unset, each falls back to the token its rule used before.
9618
10086
 
9619
10087
  ## `lr-av-player`
9620
10088
 
@@ -9626,8 +10094,8 @@ distinct from `<lr-transcript-feed>` (live captions for an in-progress voice ses
9626
10094
  `anchorKinds: ['time-range']` only — no text selection is bound. The transcript virtualizes through
9627
10095
  `<lr-virtual-list>` the same way `lr-pdf-viewer` virtualizes pages.
9628
10096
 
9629
- **Properties:** `src: string = ''`, `name: string = ''`, `kind?: 'audio' | 'video'` (attribute:
9630
- false auto-detection override), `mimeType: string = ''` (attribute `mime-type`), `poster: string =
10097
+ **Properties:** `src: string = ''`, `name: string = ''`, `kind?: 'audio' | 'video'`
10098
+ (attribute-backed auto-detection override), `mimeType: string = ''` (attribute `mime-type`), `poster: string =
9631
10099
  ''`, `loop: boolean = false`, `muted: boolean = false`, `preload: 'none' | 'metadata' | 'auto' =
9632
10100
  'metadata'`, `playbackRate: number = 1` (attribute `playback-rate`, reflected), `rates: number[] =
9633
10101
  [0.75, 1, 1.25, 1.5, 2]` (attribute: false), `cues: LyraAvCue[] = []` (attribute: false), `peaks:
@@ -9766,22 +10234,36 @@ Chart.js wrapper every other `lr-*-chart` tag subclasses; supports both a simpli
9766
10234
  - `appendData(label, values, maxPoints?)` — appends one aligned numeric category and optionally
9767
10235
  keeps only the newest `maxPoints`; point-based scatter/bubble series are left unchanged
9768
10236
 
9769
- **Methods:** `resetZoom()` (reset any active zoom/pan to the original view), `refreshTheme()`, and
9770
- `exportData('csv' | 'png')` (returns a spreadsheet-safe CSV snapshot or the current PNG data URL
9771
- when Chart.js is loaded)
9772
- (forces a redraw so the `--lr-chart-*` tokens below are re-read from the current computed style. A
10237
+ **Methods:** `resetZoom()` resets any active zoom/pan to the original view. `refreshTheme()` forces
10238
+ a redraw so the `--lr-chart-*` tokens below are re-read from the current computed style. A
9773
10239
  built-in `ThemeWatcher` now calls this automatically when `prefers-color-scheme` flips or an
9774
10240
  ancestor's `class`/`style`/`data-theme`/`data-color-scheme` attribute mutates — the most common
9775
10241
  theme-toggle mechanisms — so a consumer rarely needs to call it by hand; it remains public as the
9776
- escape hatch for theme changes those signals can't observe)
10242
+ escape hatch for theme changes those signals can't observe. `exportData('csv' | 'png')` returns a
10243
+ spreadsheet-safe CSV snapshot or the current PNG data URL when Chart.js is loaded.
10244
+
10245
+ The instance method `seriesPalette(): string[]` resolves the categorical series ramp
10246
+ (`--lr-color-chart-1..8`) through `getComputedStyle` and returns the concrete, theme-aware colors —
10247
+ the exact same values the chart hands any series that sets no `color` of its own. Each internal
10248
+ token resolves through the matching application input (`--lr-theme-color-chart-1..8`), so theme
10249
+ overrides are included.
10250
+
10251
+ The module also exports `seriesPalette(scope?: Element | null): string[]`, which can run before a
10252
+ chart exists. Omit `scope` to read `document.documentElement`, pass an element to resolve its theme
10253
+ scope, or pass `null` to request the light-mode fallback directly. When a scope has no component
10254
+ token layer yet, the helper reads the `--lr-theme-color-chart-N` inputs directly. Both forms return
10255
+ a fresh eight-color array each call (safe to mutate) and let chart-adjacent UI, KPI tiles, or the
10256
+ `Series` array itself come from one source of truth.
10257
+
10258
+ ```ts
10259
+ import { seriesPalette } from '@aceshooting/lyra-ui/components/charts/chart/chart.js';
9777
10260
 
9778
- `seriesPalette(): string[]` resolves the categorical series ramp (`--lr-color-chart-1..8`) through
9779
- `getComputedStyle` and returns the concrete, theme-aware colors — the exact same values the chart
9780
- hands any series that sets no `color` of its own. Call it to color chart-adjacent UI (custom
9781
- legends, KPI tiles, annotations fed through the raw `config` passthrough) from one source of truth
9782
- instead of hand-resolving `--lr-color-chart-N` and drifting out of sync when the theme flips.
9783
- Returns a fresh array each call (safe to mutate), and falls back to the light-mode literals only
9784
- when the custom properties can't be resolved at all (e.g. a detached host).
10261
+ const colors = seriesPalette();
10262
+ const series = [
10263
+ { label: 'Revenue', data: [12, 19], color: colors[0] },
10264
+ { label: 'Costs', data: [7, 11], color: colors[1] },
10265
+ ];
10266
+ ```
9785
10267
 
9786
10268
  **Events:** `lr-zoom` (`detail: { zoomed: boolean }`, fired on zoom-complete and on
9787
10269
  `resetZoom()`), `lr-point-click` (fired when a click lands on, or nearest to — intersect-only —
@@ -10171,8 +10653,8 @@ instead of `canvas` when the optional box-plot peer fails to load)
10171
10653
  (also `getComputedStyle`-resolved on every draw), but declared in its own stylesheet, not a
10172
10654
  re-export: `lr-box-plot` has no `zoom`, so no `reset-zoom-button` chrome exists here.
10173
10655
 
10174
- **Optional peer deps:** `@sgratzl/chartjs-chart-boxplot` (plus `chart.js` transitively, loaded
10175
- independently of the base `chart-loader.ts`).
10656
+ **Optional peer deps:** `@sgratzl/chartjs-chart-boxplot` plus `chart.js`; Chart.js is obtained
10657
+ through the same cached `chart-loader.ts` used by `lr-chart`.
10176
10658
 
10177
10659
  ```html
10178
10660
  <lr-box-plot y-label="Latency (ms)"></lr-box-plot>
@@ -10296,7 +10778,10 @@ used both for `status="converting"` and this component's own in-flight text fetc
10296
10778
  rendered when `src` is set *and* passes the link-safe scheme allowlist — see the URL-safety note
10297
10779
  above; excludes `data:` even though the other two sinks allow it), `highlight-layer` (wrapper around
10298
10780
  every rendered region highlight, image format only), `region-highlight` (one region highlight,
10299
- `data-tone`, `data-active`; image format only), `frame-viewport`/`frame-content`/`frame-controls`/
10781
+ `data-tone`, `data-active`; image format only), `region-highlight-target` (transparent activation
10782
+ geometry with a minimum hit area independent of the visual rectangle), `highlight-actions`
10783
+ (non-overlapping actions used when multiple minimum hit areas would overlap),
10784
+ `region-highlight-action` (one action in that list), `frame-viewport`/`frame-content`/`frame-controls`/
10300
10785
  `frame-zoom-in`/`frame-zoom-out`/`frame-reset` (forwarded from the internal `<lr-zoomable-frame>`
10301
10786
  while `zoomable`; image format only)
10302
10787
 
@@ -10304,7 +10789,8 @@ while `zoomable`; image format only)
10304
10789
  consumer-tunable scroll cap on `[part="body"]`, set from `max-height`; `none` means the preview grows
10305
10790
  with its content until a caller opts in. `--lr-document-preview-font` (default `ui-monospace,
10306
10791
  SFMono-Regular, Menlo, Consolas, monospace`) and `--lr-document-preview-spin-duration` (default
10307
- `0.8s`, stopped under reduced motion). `--lr-document-preview-progress` (default `0`) — a unitless
10792
+ `var(--lr-transition-ambient)`, stopped under reduced motion). `--lr-document-preview-progress`
10793
+ (default `0`) — a unitless
10308
10794
  0–100 number the determinate spinner's `conic-gradient` fill reads; written inline on the ring by
10309
10795
  the component itself from the clamped `progress` property, so overriding it only makes sense to
10310
10796
  repaint the fraction. `--lr-document-preview-active-border` (default
@@ -10315,7 +10801,11 @@ state hooks it is an inline `var()` fallback at the point of use rather than a `
10315
10801
  so it can be set on the element or on any ancestor — `::part(region-highlight)[data-active]` is
10316
10802
  invalid CSS (Shadow Parts forbids an attribute selector after `::part()`), which previously left
10317
10803
  re-pointing the shared `--lr-color-warning`/`--lr-color-brand` tokens as the only lever, repainting
10318
- every other element that read them. Plus shared tokens
10804
+ every other element that read them. The tone-specific resting border and hover tint use
10805
+ `--lr-document-preview-highlight-accent-color`, `--lr-document-preview-highlight-success-color`,
10806
+ `--lr-document-preview-highlight-warning-color`, `--lr-document-preview-highlight-danger-color`,
10807
+ and `--lr-document-preview-highlight-neutral-color` (defaulting respectively to the matching
10808
+ brand/success/warning/danger/neutral color tokens). Plus shared tokens
10319
10809
  `--lr-color-border`, `--lr-radius`, `--lr-color-surface`, `--lr-space-s/-m/-l/-xs`,
10320
10810
  `--lr-color-text`, `--lr-color-text-quiet`, `--lr-color-danger`, `--lr-color-brand`,
10321
10811
  `--lr-color-on-brand`, `--lr-focus-ring-width/-color/-offset`, `--lr-transition-fast`.
@@ -10409,10 +10899,11 @@ type. First-party invention.
10409
10899
  - `lr-download` — `detail: { src, filename }`, emitted when the native safe download action is
10410
10900
  activated. The browser download itself is handled by the link.
10411
10901
  - `lr-anchor-result` — `detail: { found }`. Emitted by this shell as `{ found: false }` once per
10412
- applied `anchor` when the resolved renderer can't honor it (it declares no `capabilities.anchors`,
10413
- or none matching the anchor's `kind`), when the lazy renderer failed to load, or when the file fell
10414
- back to `<lr-document-preview>`. A capable renderer instead emits its own `lr-anchor-result` from
10415
- its embedded `DocumentAnchorTarget` mixin, which composes up through this element unchanged the
10902
+ applied `anchor` when a resolved renderer can't honor it (it declares no `capabilities.anchors`,
10903
+ or none matching the anchor's `kind`). When the file uses `<lr-document-preview>`—including after
10904
+ a lazy renderer fails to load—the shell delegates to that preview's `scrollToAnchor()` and emits
10905
+ its actual `found` result. A capable renderer instead emits its own `lr-anchor-result` from its
10906
+ embedded `DocumentAnchorTarget` mixin, which composes up through this element unchanged — the
10416
10907
  shell stays silent in that case, so the event fires exactly once either way. A string `anchor`
10417
10908
  (a highlight id) counts as supported by any renderer declaring at least one anchor kind.
10418
10909
 
@@ -10493,6 +10984,17 @@ currently active search match, also carries `search-match`).
10493
10984
 
10494
10985
  **Themeable custom properties:** `--lr-docx-viewer-max-height` (default `none`) — maximum block size
10495
10986
  of `[part="body"]`; also settable via the `max-height` property, which writes this token inline.
10987
+ Highlight backgrounds are independently themeable with
10988
+ `--lr-docx-viewer-highlight-accent-background`,
10989
+ `--lr-docx-viewer-highlight-success-background`,
10990
+ `--lr-docx-viewer-highlight-warning-background`,
10991
+ `--lr-docx-viewer-highlight-danger-background`, and
10992
+ `--lr-docx-viewer-highlight-neutral-background`, defaulting to the matching quiet color tokens.
10993
+ `--lr-docx-viewer-highlight-active-background` and
10994
+ `--lr-docx-viewer-highlight-active-outline` style the active host highlight.
10995
+ `--lr-docx-viewer-search-match-background`,
10996
+ `--lr-docx-viewer-search-match-active-background`, and
10997
+ `--lr-docx-viewer-search-match-active-foreground` style resting and active search matches.
10496
10998
 
10497
10999
  **Optional peer dependencies:** install `mammoth` and `dompurify` with `pnpm add mammoth dompurify`.
10498
11000
  The component registers an eager `application/vnd.openxmlformats-officedocument.wordprocessingml.document`
@@ -10547,8 +11049,8 @@ of `[part="body"]`; also settable via the `max-height` property, which writes th
10547
11049
 
10548
11050
  **Optional peer dependencies:** install `postal-mime` and `dompurify` with
10549
11051
  `pnpm add postal-mime dompurify`. The component registers `message/rfc822` and falls back to
10550
- matching `.eml` filenames in `<lr-document-viewer>`. Deviates from the shared degraded-render
10551
- contract: an absent `postal-mime` renders `[part="error"]` with the localized
11052
+ matching `.eml` filenames in `<lr-document-viewer>`. Fail-closed behavior is explicit: an absent
11053
+ `postal-mime` renders `[part="error"]` with the localized
10552
11054
  `emailViewerMissingParser` message (nothing is parseable without it), and an HTML-only message
10553
11055
  (no `text/plain` alternative) with `dompurify` absent renders the localized
10554
11056
  `documentViewerMissingSanitizer` message rather than silently showing an empty body.
@@ -10648,6 +11150,10 @@ clears the query, matches, and painted search annotation.
10648
11150
  `mount`, `error`, and `announcer` (the visually-hidden `role="status"` region search results
10649
11151
  announce through).
10650
11152
 
11153
+ The toolbar buttons use the component-specific localized labels `ebookViewerPreviousChapter` and
11154
+ `ebookViewerNextChapter` (English: “Previous chapter” / “Next chapter”), so they remain
11155
+ unambiguous beside other previous/next controls and are overridable through `.strings`.
11156
+
10651
11157
  **Optional peer dependency:** install `epubjs` with `pnpm add epubjs`. The document-viewer registry
10652
11158
  matches `application/epub+zip` and `.epub` filenames, declaring `{ anchors: ['cfi', 'text-quote'],
10653
11159
  search: true, textSelect: true }` capabilities.
@@ -10717,6 +11223,9 @@ Enter/Space.
10717
11223
 
10718
11224
  **CSS parts:** `base`, `body`, `svg`, `spinner`, `error`, `highlight-layer` (wrapper around every
10719
11225
  rendered region highlight), `region-highlight` (one region highlight, `data-tone`, `data-active`),
11226
+ `region-highlight-target` (transparent activation geometry with an independent minimum hit area),
11227
+ `highlight-actions` (non-overlapping actions for multiple highlights), `region-highlight-action`
11228
+ (one action in that list),
10720
11229
  `frame-viewport`/`frame-content`/`frame-controls`/`frame-zoom-in`/`frame-zoom-out`/`frame-reset`
10721
11230
  (forwarded from the internal `<lr-zoomable-frame>` while `zoomable`).
10722
11231
 
@@ -10729,7 +11238,11 @@ inline `var()` fallback at the point of use rather than a `:host` declaration, s
10729
11238
  the element *or on any ancestor*: `::part(region-highlight)[data-active]` is invalid CSS — Shadow
10730
11239
  Parts forbids an attribute selector after `::part()` — so re-pointing a shared `--lr-color-*` token,
10731
11240
  and repainting everything else reading it, was previously the only way. Unset, it falls back to
10732
- exactly the tokens the rule used before.
11241
+ exactly the tokens the rule used before. The tone-specific resting border and hover tint use
11242
+ `--lr-svg-viewer-highlight-accent-color`, `--lr-svg-viewer-highlight-success-color`,
11243
+ `--lr-svg-viewer-highlight-warning-color`, `--lr-svg-viewer-highlight-danger-color`, and
11244
+ `--lr-svg-viewer-highlight-neutral-color` (defaulting respectively to the matching
11245
+ brand/success/warning/danger/neutral color tokens).
10733
11246
 
10734
11247
  **Optional peer dependency:** `dompurify`.
10735
11248
 
@@ -10916,7 +11429,7 @@ through the exported parts above rather than through dedicated custom properties
10916
11429
 
10917
11430
  **Optional peer dependency:** install `pdfjs-dist` with `pnpm add pdfjs-dist`. The component registers
10918
11431
  a lazy `application/pdf` renderer with `<lr-document-viewer>` so the PDF library is loaded only when
10919
- a PDF is opened. Deviates from the shared degraded-render contract: an absent `pdfjs-dist` renders
11432
+ a PDF is opened. An absent `pdfjs-dist` fails closed and renders
10920
11433
  `[part="error"]` with the localized `pdfViewerMissingLibrary` message — there is no partial PDF
10921
11434
  rendering without it.
10922
11435
 
@@ -10949,9 +11462,11 @@ Enter/Space. `lr-anchor-result` (`detail: { found }`) — fired after an `anchor
10949
11462
  `scrollToAnchor()` call. `lr-search-change` (`detail: { query, matchCount, activeIndex }`) — from
10950
11463
  `search()`/`searchNext()`/`searchPrevious()`/`clearSearch()`.
10951
11464
 
10952
- **CSS parts:** `base`, `tabs`, `sheet`, `header-row`, `data-row`, `cell`, `cell-highlight` (a cell
10953
- covered by a `highlights` entry), `rows`, `spinner`, and `error`. `data-row`, `cell` and
10954
- `cell-highlight` are rendered inside the internal `<lr-virtual-list>` and forwarded via
11465
+ **CSS parts:** `base`, `tabs`, `sheet`, `header-row`, `data-row`, `cell`, `cell-highlight` (a
11466
+ structural cell covered by a `highlights` entry), `cell-highlight-action` (the native button
11467
+ filling a highlighted cell; focusable and emits `lr-highlight-activate`), `rows`, `spinner`, and
11468
+ `error`. `data-row`, `cell`, `cell-highlight`, and `cell-highlight-action` are rendered inside the
11469
+ internal `<lr-virtual-list>` and forwarded via
10955
11470
  `exportparts`, so `lr-spreadsheet-viewer::part(cell)` reaches them from a consumer stylesheet.
10956
11471
 
10957
11472
  **Themeable custom properties:** `--lr-spreadsheet-viewer-highlight-color` (default
@@ -10996,9 +11511,11 @@ Enter/Space. `lr-anchor-result` (`detail: { found }`) — fired after an `anchor
10996
11511
  `scrollToAnchor()` call. `lr-search-change` (`detail: { query, matchCount, activeIndex }`) — from
10997
11512
  `search()`/`searchNext()`/`searchPrevious()`/`clearSearch()`.
10998
11513
 
10999
- **CSS parts:** `base`, `sheet`, `header-row`, `data-row`, `cell`, `cell-highlight` (a cell covered by
11000
- a `highlights` entry), `rows`, `spinner`, and `error`. `data-row`, `cell` and `cell-highlight` are
11001
- rendered inside the internal `<lr-virtual-list>` and forwarded via `exportparts`, so
11514
+ **CSS parts:** `base`, `sheet`, `header-row`, `data-row`, `cell`, `cell-highlight` (a structural
11515
+ cell covered by a `highlights` entry), `cell-highlight-action` (the native button filling a
11516
+ highlighted cell; emits `lr-highlight-activate`), `rows`, `spinner`, and `error`. `data-row`,
11517
+ `cell`, `cell-highlight`, and `cell-highlight-action` are rendered inside the internal
11518
+ `<lr-virtual-list>` and forwarded via `exportparts`, so
11002
11519
  `lr-csv-viewer::part(cell)` reaches them from a consumer stylesheet.
11003
11520
 
11004
11521
  **Themeable custom properties:** `--lr-csv-viewer-max-height` (default `none`) — maximum block size
@@ -11054,7 +11571,8 @@ operate on the included text.
11054
11571
  `'blocked-url'` (`src` failed the allowlist; `fetch()` never ran), `'network'` (`fetch()` rejected),
11055
11572
  `'http'` (response not `ok`; `status` carries the code), `'missing-sanitizer'` (the optional
11056
11573
  `dompurify` peer failed to load), or `'resource-too-large'` (the body exceeded the shared 25 MB
11057
- cap). `status` is `0` for every reason but `'http'`.
11574
+ cap). Non-HTTP reasons use status `0`; `'http'` normally carries the response code, but an opaque
11575
+ `mode="no-cors"` response is also classified as `'http'` with status `0`.
11058
11576
 
11059
11577
  **Slots:** default — fallback content shown until (or unless) a fetch succeeds. It is overwritten by
11060
11578
  the sanitized fragment on success, and left untouched on failure (as is any previously successful
@@ -11062,9 +11580,9 @@ include).
11062
11580
 
11063
11581
  **CSS parts:** `base` — the `display: contents` wrapper around the default slot.
11064
11582
 
11065
- Deviates from the shared degraded-render contract: an absent `dompurify` fires
11066
- `lr-include-error` with `reason: 'missing-sanitizer'` and leaves the existing content in place —
11067
- unsanitized markup is never transcluded.
11583
+ An absent `dompurify` fails closed: it fires `lr-include-error` with
11584
+ `reason: 'missing-sanitizer'` and leaves the existing content in place — unsanitized markup is
11585
+ never transcluded.
11068
11586
 
11069
11587
  ## `lr-highlight-layer`
11070
11588
 
@@ -11083,8 +11601,22 @@ re-click of the same source citation).
11083
11601
  **Events:** `lr-highlight-activate` — a rect was activated (click, or Enter/Space while focused).
11084
11602
  `detail: { id }`.
11085
11603
 
11086
- **CSS parts:** `base` (the absolutely-positioned overlay, inset 0) and `rect` (one highlight
11087
- rectangle; carries `data-tone`/`data-active`/`data-flash` state attributes).
11604
+ **CSS parts:** `base` (the absolutely-positioned overlay, inset 0), `rect` (one visual highlight
11605
+ rectangle; carries `data-tone`/`data-active`/`data-flash` state attributes), and `rect-target`
11606
+ (transparent activation geometry with a minimum pointer/focus area independent of the visual
11607
+ rectangle). When more than one logical highlight would create overlapping minimum hit areas, the
11608
+ individual targets are replaced by `highlight-actions` (a non-overlapping action list) containing
11609
+ one `highlight-action` button per rendered highlight.
11610
+
11611
+ **Themeable custom properties:**
11612
+ `--lr-highlight-layer-accent-background`, `--lr-highlight-layer-accent-outline`,
11613
+ `--lr-highlight-layer-success-background`, `--lr-highlight-layer-success-outline`,
11614
+ `--lr-highlight-layer-warning-background`, `--lr-highlight-layer-warning-outline`,
11615
+ `--lr-highlight-layer-danger-background`, `--lr-highlight-layer-danger-outline`,
11616
+ `--lr-highlight-layer-neutral-background`, and `--lr-highlight-layer-neutral-outline` control each
11617
+ tone independently, defaulting to the corresponding Lyra quiet background and foreground tokens.
11618
+ `--lr-highlight-layer-flash-background` controls the temporary flash state (default
11619
+ `--lr-color-brand`).
11088
11620
 
11089
11621
  ## `lr-page-rail`
11090
11622
 
@@ -11149,18 +11681,23 @@ shared anchor-target contract).
11149
11681
 
11150
11682
  **Methods:** `search(query)` resolves the match count over cell sources and text outputs — a
11151
11683
  matching cell counts as one match (empty/whitespace query behaves like `clearSearch()`);
11152
- `searchNext()`/`searchPrevious()` advance/step back through matches, scrolling to and flashing the
11153
- target cell; `clearSearch()` clears the query and matches.
11684
+ `searchNext()`/`searchPrevious()` advance/step back through matches, scrolling to and marking the
11685
+ target cell with the persistent active-cell paint; `clearSearch()` clears the query and matches.
11154
11686
 
11155
11687
  **Events:** `lr-load` — `detail: { cellCount, language }`, fired once a notebook has been parsed
11156
11688
  and validated (`language` from `metadata.language_info.name`/`kernelspec.language`, else `''`).
11157
- `lr-highlight-activate` — `detail: { id }`. `lr-search-change` — `detail: { query, matchCount,
11158
- activeIndex }`. `lr-render-error` — `detail: { error }`, fetching, parsing, or validating the
11159
- notebook failed.
11689
+ `lr-search-change` — `detail: { query, matchCount, activeIndex }`. `lr-render-error` —
11690
+ `detail: { error }`, fetching, parsing, or validating the notebook failed.
11691
+
11692
+ Migration note: the previously declared `lr-highlight-activate` event was never emitted by
11693
+ `lr-notebook-viewer` and has been removed from its class/EventMap contract. Use `anchor` plus
11694
+ `lr-anchor-result` for notebook cell navigation outcomes.
11160
11695
 
11161
11696
  **CSS parts:** `base` (the root scroll container), `cell` (`data-cell-type="code|markdown|raw"`,
11162
- `data-active`), `cell-active` (added alongside `cell` on the cell an anchor currently targets),
11163
- `cell-gutter` (the `In [n]`/`Out [n]` label column), `cell-source`, `outputs`, `output`
11697
+ `data-active`), `cell-active` (added alongside `cell` on the cell currently targeted by an anchor
11698
+ or the active search match),
11699
+ `cell-gutter` (the `In [n]`/`Out [n]` label column), `cell-source`, `raw-source` (the horizontally
11700
+ scrollable preformatted surface for a raw cell), `outputs`, `output`
11164
11701
  (`data-output-type`, `data-stream`), `output-error` (added alongside `output` on a stderr stream or
11165
11702
  an error output), `error-output-label` (the label introducing an error output's traceback),
11166
11703
  `output-toggle`, `error`, `spinner`.
@@ -11175,9 +11712,9 @@ remain on the elements for scripting.
11175
11712
  **Themeable custom properties:** `--lr-notebook-viewer-max-height` (default `none`).
11176
11713
 
11177
11714
  `--lr-notebook-viewer-active-bg` (default `var(--lr-color-brand-quiet)`) is the background of the
11178
- cell currently targeted by an anchor — the `cell-active` part. It is an inline `var()` fallback at
11179
- the point of use rather than a `:host` declaration, so it can be set on the element or on any
11180
- ancestor.
11715
+ cell currently targeted by an anchor or the active search match — the `cell-active` part. It is an
11716
+ inline `var()` fallback at the point of use rather than a `:host` declaration, so it can be set on
11717
+ the element or on any ancestor.
11181
11718
 
11182
11719
  **Optional peer deps:** `marked`+`dompurify` (markdown cells, falls back to plain text per cell),
11183
11720
  `shiki` (code cells, falls back to unhighlighted), `dompurify` (HTML/SVG outputs, falls back to
@@ -11253,10 +11790,12 @@ so lowering it never squashes the chevron below its own box — the visible glyp
11253
11790
  the hit target follows the token, and it can never fall under the accessible minimum from this
11254
11791
  component's own rules.
11255
11792
 
11256
- ```html
11257
- <lr-xml-viewer .xml=${payload} collapsed-depth="2" copyable
11258
- search=${query}
11259
- ></lr-xml-viewer>
11793
+ ```ts
11794
+ const viewer = document.querySelector('lr-xml-viewer');
11795
+ viewer.xml = payload;
11796
+ viewer.collapsedDepth = 2;
11797
+ viewer.copyable = true;
11798
+ await viewer.search(query);
11260
11799
  ```
11261
11800
 
11262
11801
  Node cap: 50,000 — exceeding it renders the localized `xmlViewerTooManyNodes` error instead of the
@@ -11267,10 +11806,41 @@ tree.
11267
11806
  Comparison surface for two document versions, using `lr-diff-view` for textual diffs and
11268
11807
  `lr-document-preview` for side-by-side rendered content.
11269
11808
 
11270
- **Properties:** `oldVersion`, `newVersion`, `view`, `diffLayout`, `language`, `languages`, `anchor`,
11271
- `copyable`, `syncScroll`. **Events:** `lr-copy`, `lr-download`, `lr-highlight-activate`,
11272
- `lr-render-error`. **CSS parts:** `base`, `diff`, `panes`, `pane-old`, `pane-new`, `pane-header`,
11273
- `pane-empty`. **Themeable custom properties:** `--lr-document-compare-pane-max-height` (default
11809
+ **Properties:**
11810
+
11811
+ - `oldVersion?: DocumentCompareVersion`, `newVersion?: DocumentCompareVersion` (attribute: false) —
11812
+ the before/after inputs. `DocumentCompareVersion` extends `DocumentRef`
11813
+ (`id`, `name`, `mimeType?`, `uri?`, `version?`) with `text?: string` for diff mode and
11814
+ `highlights?: LyraHighlight[]` for its own preview pane.
11815
+ - `view: 'diff' | 'side-by-side' = 'diff'` (reflected) — one inline text diff or two rendered
11816
+ preview panes.
11817
+ - `diffLayout: 'unified' | 'split' = 'unified'` (attribute `diff-layout`, reflected) — forwarded
11818
+ to `lr-diff-view` in diff mode.
11819
+ - `copyable: boolean = false` — forwards the diff copy action.
11820
+ - `language: string = ''`, `languages?: Record<string, ShikiLanguageInput>` (the latter
11821
+ attribute: false) — optional syntax highlighting forwarded to the diff.
11822
+ - `syncScroll: boolean = true` (attribute `sync-scroll`) — proportionally mirrors either
11823
+ side-by-side pane's scroll fraction to the other. The true-default converter accepts the literal
11824
+ `sync-scroll="false"`.
11825
+ - `anchor: LyraAnchor | string | null = null` (attribute: false) — sends the same target to both
11826
+ preview panes; repeated assignment of the same value still re-runs.
11827
+
11828
+ **Exported types:** `DocumentCompareVersion`; `LyraDocumentCompareView = 'diff' |
11829
+ 'side-by-side'`; `DocumentComparePaneSide = 'old' | 'new'`.
11830
+
11831
+ **Synchronized anchors:** activating a region highlight whose id exists in the opposite version
11832
+ scrolls that pane to its corresponding highlight, while the original `lr-highlight-activate`
11833
+ continues bubbling unchanged. The shared `anchor` property drives both panes. In diff mode, split
11834
+ columns already share one scroll container.
11835
+
11836
+ **Events:** `lr-copy` (`detail: { text }`), `lr-download` (`detail: { src, filename }`),
11837
+ `lr-highlight-activate` (`detail: { id }`), and `lr-render-error` (`detail: { error }`).
11838
+
11839
+ **Slots:** none.
11840
+
11841
+ **CSS parts:** `base`, `diff`, `panes`, `pane-old`, `pane-new`, `pane-header`, `pane-empty`.
11842
+
11843
+ **Themeable custom properties:** `--lr-document-compare-pane-max-height` (default
11274
11844
  `var(--lr-size-24rem)`) — maximum block size of a `side-by-side` pane before it scrolls internally.
11275
11845
 
11276
11846
  ## `lr-geojson-view`
@@ -11306,7 +11876,9 @@ alongside the `lr-json-viewer` fallback), `error` (the error region, `role="aler
11306
11876
  Registered by importing `geojson-view/geojson-view.js` directly — not part of the root barrel, the
11307
11877
  same as `lr-map`/`lr-graph`, since it depends on the same optional `maplibre-gl` peer. Remote
11308
11878
  resources are capped at 25 MB; exceeding it surfaces the localized `documentPreviewResourceTooLarge`
11309
- message instead of the map.
11879
+ message instead of the map. MapLibre v6 is ESM-only and requires WebGL2; consumers must import its
11880
+ CSS and configure its module-worker URL for their bundler before this viewer constructs the nested
11881
+ map. See `llms/components/lr-map.md` for the Vite example and the other bundler variants.
11310
11882
 
11311
11883
  # Conversation & chat UI (`components/conversation/`)
11312
11884
 
@@ -11480,6 +12052,16 @@ restart at the beginning of each visual line, so a wrapped line's tabs land diff
11480
12052
  HTML `marked` produces from `content` completely unsanitized, so untrusted `content` must never be
11481
12053
  paired with `sanitize="false"`.
11482
12054
 
12055
+ **Additional API surface:**
12056
+
12057
+ - `--lr-markdown-highlight-accent-bg` — Accent highlight fill. Default: `var(--lr-color-brand-quiet)`.
12058
+ - `--lr-markdown-highlight-success-bg` — Success highlight fill. Default: `var(--lr-color-success-quiet)`.
12059
+ - `--lr-markdown-highlight-warning-bg` — Warning highlight fill. Default: `var(--lr-color-warning-quiet)`.
12060
+ - `--lr-markdown-highlight-danger-bg` — Danger highlight fill. Default: `var(--lr-color-danger-quiet)`.
12061
+ - `--lr-markdown-highlight-neutral-bg` — Neutral highlight fill. Default: `var(--lr-color-surface)`.
12062
+ - `--lr-markdown-highlight-active-bg` — Active highlight fill. Default: `var(--lr-color-brand-quiet)`.
12063
+ - `--lr-markdown-highlight-active-outline-color` — Active highlight outline. Default: `var(--lr-color-brand)`.
12064
+
11483
12065
  ---
11484
12066
 
11485
12067
  ## `lr-markdown-core`
@@ -11548,6 +12130,16 @@ differently on a wrapped line.
11548
12130
  </script>
11549
12131
  ```
11550
12132
 
12133
+ **Additional API surface:**
12134
+
12135
+ - `--lr-markdown-highlight-accent-bg` — Accent highlight fill. Default: `var(--lr-color-brand-quiet)`.
12136
+ - `--lr-markdown-highlight-success-bg` — Success highlight fill. Default: `var(--lr-color-success-quiet)`.
12137
+ - `--lr-markdown-highlight-warning-bg` — Warning highlight fill. Default: `var(--lr-color-warning-quiet)`.
12138
+ - `--lr-markdown-highlight-danger-bg` — Danger highlight fill. Default: `var(--lr-color-danger-quiet)`.
12139
+ - `--lr-markdown-highlight-neutral-bg` — Neutral highlight fill. Default: `var(--lr-color-surface)`.
12140
+ - `--lr-markdown-highlight-active-bg` — Active highlight fill. Default: `var(--lr-color-brand-quiet)`.
12141
+ - `--lr-markdown-highlight-active-outline-color` — Active highlight outline. Default: `var(--lr-color-brand)`.
12142
+
11551
12143
  ---
11552
12144
 
11553
12145
  ## `lr-chat-message`
@@ -11692,7 +12284,8 @@ between several values across a single element's lifetime.
11692
12284
  - mounting a message with `status="failed"` (or any other non-`"sent"` status) already set does
11693
12285
  **not** announce anything — only a genuine *later* transition (`changed.get('status') !==
11694
12286
  undefined`, i.e. not the very first update) triggers the live-region announcement.
11695
- - `lr-retry` fires with no detail payload at all (`undefined`), not e.g. `{ status: 'failed' }`.
12287
+ - `lr-retry` carries `{ messageId?: string }`; the field is the component's `messageId` when set,
12288
+ and is omitted otherwise.
11696
12289
  - the header/footer/avatar/badges/attachments/actions wrappers are shown/hidden via the `hidden`
11697
12290
  attribute, not conditional templating. Whether each slot currently has content is checked once via
11698
12291
  a light-DOM children scan on the very first update (`willUpdate`, gated on `!this.hasUpdated`) and
@@ -11703,6 +12296,20 @@ between several values across a single element's lifetime.
11703
12296
  - `role` intentionally reflects to `data-role`; CSS or selectors that key off role must target
11704
12297
  `[data-role="user"]` etc., not `[role="user"]`.
11705
12298
 
12299
+ **Additional API surface:**
12300
+
12301
+ - `--lr-chat-message-system-color` — System-message text color. Default: `var(--lr-color-text-quiet)`.
12302
+ - `--lr-chat-message-streaming-border-color` — Streaming bubble border. Default: `var(--lr-color-brand)`.
12303
+ - `--lr-chat-message-failed-border-color` — Failed bubble border. Default: `var(--lr-color-danger)`.
12304
+ - `--lr-chat-message-failed-bg` — Failed bubble fill. Default: `var(--lr-color-danger-quiet)`.
12305
+ - `--lr-chat-message-footer-color` — Default footer text. Default: `var(--lr-color-text-quiet)`.
12306
+ - `--lr-chat-message-user-footer-color` — User-message footer text. Default: `var(--lr-color-text)`.
12307
+ - `--lr-chat-message-failed-footer-color` — Failed-message footer text. Default: `var(--lr-color-danger)`.
12308
+ - `--lr-chat-message-indicator-color` — Default status indicator. Default: `var(--lr-color-text-quiet)`.
12309
+ - `--lr-chat-message-streaming-indicator-color` — Streaming indicator. Default: `var(--lr-color-brand)`.
12310
+ - `--lr-chat-message-failed-indicator-color` — Failed indicator. Default: `var(--lr-color-danger)`.
12311
+ - `--lr-chat-message-failed-status-color` — Failed status text. Default: `var(--lr-color-danger)`.
12312
+
11706
12313
  ---
11707
12314
 
11708
12315
  ## `lr-typing-indicator`
@@ -11971,10 +12578,10 @@ visibility is driven purely by whether anything is slotted into it, not by `phas
11971
12578
  message text color, stalled border), `--lr-color-warning-quiet` (stalled background tint),
11972
12579
  `--lr-space-s` / `--lr-space-xs` (base gap, stalled padding, actions gap), `--lr-radius`
11973
12580
  (base corner radius), `--lr-transition-base` (background/border-color transitions and the
11974
- streaming pulse animation's cycle length). The component also sets two internal, phase-driven
11975
- custom properties (`--lr-stream-status-dot-color`, `--lr-stream-status-dot-opacity`) on
11976
- `:host`, but its own `:host([phase="..."])` rules outrank a page-level override for every phase
11977
- except the default `idle`, so these aren't a practical external theming hook.
12581
+ dot's color/opacity transitions), and `--lr-transition-ambient` (the streaming pulse cycle).
12582
+ The phase defaults flow through `--lr-stream-status-dot-color` and
12583
+ `--lr-stream-status-dot-opacity`; setting either custom property on the element or an ancestor
12584
+ wins through the shadow cascade and is the supported per-instance override.
11978
12585
 
11979
12586
  **Optional peer deps:** none.
11980
12587
 
@@ -12391,7 +12998,7 @@ of the stream arrives.
12391
12998
  cursor bar's inline size), `--lr-streaming-text-cursor-height` (default `1em`) — both
12392
12999
  component-specific, since no shared "inline cursor bar" token exists, the same pattern
12393
13000
  `<lr-typing-indicator>`'s own `--lr-typing-cursor-width`/`-height` use, plus shared
12394
- `--lr-space-xs` (cursor's `margin-inline-start`) and `--lr-transition-base` (blink animation
13001
+ `--lr-space-xs` (cursor's `margin-inline-start`) and `--lr-transition-ambient` (blink animation
12395
13002
  cycle length).
12396
13003
 
12397
13004
  **Optional peer deps:** none — internally imports and auto-registers `<lr-markdown>` for
@@ -12602,8 +13209,7 @@ highlighted HTML, and always fires regardless of whether the actual OS clipboard
12602
13209
  `lr-toggle` (`detail: { collapsed: boolean }` — fired when the built-in collapse/expand header
12603
13210
  button is activated, same event name/shape convention as `<lr-thinking-panel>`'s own `lr-toggle`),
12604
13211
  `lr-line-click` (`detail: { line: number }` — a gutter line number was activated while
12605
- `interactiveLines` is set), `lr-highlight-activate` (`detail: { id: string }` — declared for
12606
- parity with this library's other anchor-target viewers; not currently emitted by this component),
13212
+ `interactiveLines` is set),
12607
13213
  `lr-text-select` (`detail: { text, anchor, rects }` — a text selection inside the code body ended;
12608
13214
  `anchor` is a `line-range` anchor covering the selected lines)
12609
13215
 
@@ -12673,10 +13279,11 @@ component's own `part="pre"`/`part="code"` hooks and strips shiki's default `tab
12673
13279
  `<pre>`, since `[part="body"]` is already the single scrollable/focusable region (`role="group"`,
12674
13280
  `tabindex="0"`) for the code area. Dark mode is handled via shiki's own "dual themes" feature: every
12675
13281
  token carries its light color as a plain inline `color`/`background-color` and its dark color in
12676
- `--shiki-dark`/`--shiki-dark-bg` custom properties, which an `!important` media-query rule in
12677
- `code-block.styles.ts` reassigns under `prefers-color-scheme: dark` the one deliberate exception in
12678
- this component to every other color being a `--lr-*` token, since these values come from shiki's own
12679
- theme data.
13282
+ `--shiki-dark`/`--shiki-dark-bg` custom properties. The component watches its resolved Lyra theme
13283
+ tokens and sets `data-dark-theme="true"` on the code body when the effective surface is dark; an
13284
+ `!important` state rule then activates Shiki's dark values. This follows explicit Lyra theme
13285
+ overrides instead of consulting `prefers-color-scheme` directly. Shiki's generated colors are the
13286
+ one deliberate exception to every other color being a `--lr-*` token.
12680
13287
 
12681
13288
  **Known gotchas:**
12682
13289
  - `copyable` defaults to `true` and reflects — see the property note above about overriding it with a
@@ -12754,9 +13361,7 @@ Identical behavior to `<lr-code-block>`'s own method.
12754
13361
  highlighted HTML, and always fires regardless of whether the actual OS clipboard write succeeded),
12755
13362
  `lr-toggle` (`detail: { collapsed: boolean }` — fired when the built-in collapse/expand header
12756
13363
  button is activated), `lr-line-click` (`detail: { line: number }` — a gutter line number was
12757
- activated while `interactiveLines` is set), `lr-highlight-activate` (`detail: { id: string }` —
12758
- declared for parity with this library's other anchor-target viewers; not currently emitted by this
12759
- component), `lr-text-select` (`detail: { text, anchor, rects }` — a text selection inside the code
13364
+ activated while `interactiveLines` is set), `lr-text-select` (`detail: { text, anchor, rects }` — a text selection inside the code
12760
13365
  body ended; `anchor` is a `line-range` anchor covering the selected lines).
12761
13366
 
12762
13367
  **Slots:** none.
@@ -12940,6 +13545,10 @@ branch content.
12940
13545
  `previous-glyph` and `next-glyph` (the chevron inside each button — target these to swap the
12941
13546
  arrow without restyling the button), and `position` (the visible "2 / 5" text).
12942
13547
 
13548
+ **Additional API surface:**
13549
+
13550
+ - `click()` — Activates the currently enabled chevron, matching a click on the shadow control.
13551
+
12943
13552
  ## `lr-message-actions`
12944
13553
 
12945
13554
  The per-message action toolbar for `lr-chat-message`'s `actions` slot: opt-in built-ins (copy /
@@ -13064,6 +13673,11 @@ point of use rather than a `:host` declaration, so it can be set on the element
13064
13673
  after `::part()`), so re-pointing the shared `--lr-color-danger` token was previously the only way,
13065
13674
  and it repainted every other danger surface with it.
13066
13675
 
13676
+ **Additional API surface:**
13677
+
13678
+ - `blur()` — Forwards host blur to the internal push-to-talk control.
13679
+ - `focus()` — Forwards host focus to the internal push-to-talk control.
13680
+
13067
13681
  ## `lr-transcript-feed`
13068
13682
 
13069
13683
  Live captions for an in-progress voice session: speaker-grouped entries, interim-vs-final styling
@@ -13488,7 +14102,8 @@ forced `{ sanitize: true }`), `image` → `lr-media-card` (`src`, `alt`, `filena
13488
14102
 
13489
14103
  **Events:** `lr-widget-action` — `detail: { actionId, payload }`, the single bubbling action
13490
14104
  channel. `lr-render-error` — `detail: { error }`, the root value was structurally unusable
13491
- (non-object, or the depth/size caps made it empty).
14105
+ (non-object, or the depth/size caps made it empty). `lr-widget-state-change` — `detail: { path,
14106
+ value, nodeId, prop }`, emitted when a state-bound mapped control requests a controlled update.
13492
14107
 
13493
14108
  **CSS parts:** `base` (the root wrapper, `display: contents`), `row`, `col`, `text` (built-in
13494
14109
  structural nodes only — a mapped lyra component exposes its own parts instead).
@@ -13586,6 +14201,18 @@ trigger), `expand-icon`, `empty`, `hint`, `error`.
13586
14201
  - `catalog` must be homogeneous — the same constraint `lr-model-select`'s `LyraModelCatalog` union
13587
14202
  documents.
13588
14203
 
14204
+ **Additional API surface:**
14205
+
14206
+ - `--lr-voice-picker-preview-active-border` — Active preview border. Default: `var(--lr-color-brand)`.
14207
+ - `--lr-voice-picker-preview-active-color` — Active preview icon. Default: `var(--lr-color-brand)`.
14208
+ - `--lr-voice-picker-option-active-bg` — Active option fill. Default: `var(--lr-color-brand-quiet)`.
14209
+ - `--lr-voice-picker-option-selected-border` — Selected option border. Default: `var(--lr-color-brand)`.
14210
+ - `--lr-voice-picker-option-selected-color` — Selected option text. Default: `var(--lr-color-brand)`.
14211
+ - `--lr-voice-picker-option-selected-bg` — Selected option fill. Default: `transparent`.
14212
+ - `--lr-voice-picker-option-selected-font-weight` — Selected option label weight. Default: `var(--lr-font-weight-semibold)`.
14213
+ - `--lr-voice-picker-preview-hover-bg` — Preview hover fill. Default: `var(--lr-color-brand-quiet)`.
14214
+ - `--lr-voice-picker-preview-hover-color` — Preview hover icon. Default: `var(--lr-color-brand)`.
14215
+
13589
14216
  ## `lr-agent-workspace`
13590
14217
 
13591
14218
  Responsive, fully controlled shell for an AI conversation and its supporting run, tool, retrieval,
@@ -13684,6 +14311,181 @@ composed `lr-chat-viewport`), `messages`, `messages-empty`, `details`, `details-
13684
14311
  **Optional peer deps:** none of its own; the composed `lr-markdown` keeps its `marked`/`dompurify`
13685
14312
  optional-peer fallback.
13686
14313
 
14314
+ ## `lr-message-parts`
14315
+
14316
+ Ordered renderer for provider-neutral `MessagePart[]`: text, reasoning, tool call/result, citation,
14317
+ attachment, data/widget, audio, and error parts can interleave without flattening stream order.
14318
+
14319
+ **Properties:** `parts: MessagePart[] = []` (attribute: false); `renderMarkdown: boolean = true`
14320
+ (attribute `render-markdown`, reflected) and `showReasoning: boolean = true` (attribute
14321
+ `show-reasoning`, reflected), both with string-aware true-default conversion;
14322
+ `renderPart?: MessagePartRenderer` (attribute: false), where returning `undefined` delegates that
14323
+ part to the built-in renderer; `label: string = ''`; `accessibleLabel: string | null = null`
14324
+ (attribute `aria-label`, highest naming precedence).
14325
+
14326
+ `MessagePartRenderer = (part: MessagePart, index: number) => unknown`; `MessagePart` and its
14327
+ discriminated part shapes come from the `@aceshooting/lyra-ui/ai` subpath.
14328
+
14329
+ **Events:** `lr-citation-select` (`{ citation }`), `lr-part-retry` (`{ part }`).
14330
+
14331
+ **CSS parts:** `base`, `part`, `part-streaming`, `text`, `reasoning`, `tool-call`, `tool-result`,
14332
+ `citation`, `attachment`, `data`, `audio`, `audio-transcript`, `error`, `retry`.
14333
+
14334
+ **Slots:** none. **Optional peer deps:** those of composed content only: Markdown can use
14335
+ `marked`/`dompurify`, and code content can use `shiki`; every composed primitive retains its own
14336
+ fallback.
14337
+
14338
+ ```ts
14339
+ import '@aceshooting/lyra-ui/components/conversation/message-parts/message-parts.js';
14340
+ ```
14341
+
14342
+ **Additional API surface:**
14343
+
14344
+ - `lr-anchor-result` event — Passthrough from rendered Markdown.
14345
+ - `lr-citation-open` event — Passthrough from a rendered citation's full-preview action.
14346
+ - `lr-copy` event — Passthrough from rendered JSON content.
14347
+ - `lr-highlight-activate` event — Passthrough from rendered Markdown.
14348
+ - `lr-link-click` event — Passthrough from rendered Markdown.
14349
+ - `lr-preview` event — Passthrough from a rendered attachment.
14350
+ - `lr-remove` event — Passthrough from a rendered attachment.
14351
+ - `lr-render-error` event — Passthrough from rendered Markdown, tool-result, or widget content.
14352
+ - `lr-retry` event — Passthrough from a rendered attachment.
14353
+ - `lr-search-change` event — Passthrough from rendered JSON content.
14354
+ - `lr-text-select` event — Passthrough from rendered Markdown.
14355
+ - `lr-toggle` event — Passthrough from a rendered reasoning panel.
14356
+ - `lr-tool-call-chip-select` event — Passthrough from a rendered tool-call chip.
14357
+ - `lr-tool-chip-select` event — Deprecated tool-call selection alias passthrough.
14358
+ - `lr-widget-action` event — Passthrough from a rendered declarative widget.
14359
+ - `lr-widget-state-change` event — Passthrough from a rendered controlled widget.
14360
+
14361
+ ## `lr-prompt-input`
14362
+
14363
+ The composed prompt surface: chat composer, attachment controls/chips, model and voice pickers,
14364
+ retrieval-source scope, mention/slash-command popup, and queued follow-up prompts. It performs no
14365
+ upload, retrieval, or model call.
14366
+
14367
+ **Properties:** `value: string = ''`; `status: 'idle' | 'sending' | 'streaming' = 'idle'`;
14368
+ `placeholder: string = ''`; `disabled: boolean = false` (reflected);
14369
+ `submitOnEnter: boolean = true` (attribute `submit-on-enter`, string-aware true-default converter);
14370
+ `attachments: PromptInputAttachment[] = []`, `attachmentCapabilities: AttachmentCapability[] =
14371
+ ['files', 'image', 'audio']`, `mentionItems: PromptSuggestion[] = []`, `commandItems:
14372
+ PromptSuggestion[] = []`, `modelCatalog?: LyraModelCatalog`, `voiceCatalog?: LyraVoiceCatalog`,
14373
+ `sources: LyraSourceEntry[] = []`, `selectedSourceIds: string[] = []`, and `queue:
14374
+ PromptQueueItem[] = []` (all attribute: false); `model: string = ''`; `voice: string = ''`;
14375
+ `label: string = ''`; `accessibleLabel: string | null = null` (attribute `aria-label`).
14376
+
14377
+ `PromptSuggestion` extends `MentionItem { id, label, description?, icon? }` with optional
14378
+ `insertText` (defaults to `label`). `PromptInputAttachment` extends `DocumentRef { id, name,
14379
+ mimeType?, uri?, version? }` with `file?`, `size?`, attachment-chip `status?`, and numeric
14380
+ `progress?`.
14381
+
14382
+ **Methods:** `focus(options?)`, `blur()`, and `click()` forward to the composed chat input;
14383
+ `select()` selects its native text surface. `click()` is inert while disabled.
14384
+
14385
+ **Events:** `lr-input` (`{ value }`), `lr-submit` (`{ value }`), `lr-stop`,
14386
+ `lr-mention-select` (`{ id, label, trigger }`), `lr-attachments-add` (`{ files, capability }`),
14387
+ `lr-attachment-remove` (`{ id }`), `lr-model-change`/`lr-voice-change`
14388
+ (`{ value, inCatalog }`), `lr-sources-change` (`{ selectedIds }`), `lr-queue-change`
14389
+ (`{ items, reason, itemId }`), `lr-send-now` (`{ item }`), `lr-camera-request`,
14390
+ `lr-audio-request`, `lr-attachment-retry` (`{ id }`), and `lr-attachment-preview`
14391
+ (`{ id, name, mimeType, src }`). Child events are stopped and re-emitted from
14392
+ `lr-prompt-input`; all composed interactions are suppressed while `disabled`.
14393
+
14394
+ **Slots:** `controls`, `leading`, `chips`, `trailing`, `footer`.
14395
+
14396
+ **CSS parts:** `base`, `controls`, `sources`, `sources-summary`, `source-picker`, `queue`,
14397
+ `composer`, `leading`, `chips`, `footer`.
14398
+
14399
+ **Optional peer deps:** none of its own.
14400
+
14401
+ ```ts
14402
+ import '@aceshooting/lyra-ui/components/conversation/prompt-input/prompt-input.js';
14403
+ ```
14404
+
14405
+ ## `lr-prompt-queue`
14406
+
14407
+ Controlled editable queue of follow-up turns. Reordering, editing, and removal emit a complete
14408
+ proposed queue; send-now emits the complete selected item.
14409
+
14410
+ **Properties:** `items: PromptQueueItem[] = []` (attribute: false); `editable: boolean = true`
14411
+ (reflected, string-aware true-default converter); `disabled: boolean = false` (reflected);
14412
+ `label: string = ''`; `accessibleLabel: string | null = null` (attribute `aria-label`).
14413
+ `PromptQueueItem = { id: string; value: string; attachments?: DocumentRef[]; createdAt?: number;
14414
+ metadata?: Record<string, unknown> }`.
14415
+
14416
+ **Events:** `lr-queue-change` (`PromptQueueChangeDetail = { items, reason, itemId }`, with
14417
+ `reason: 'edit' | 'remove' | 'reorder'`), `lr-send-now` (`{ item }`). The queue is controlled:
14418
+ these events propose complete next values without mutating `items`.
14419
+
14420
+ **CSS parts:** `base`, `heading`, `list`, `item`, `value`, `editor`, `actions`, `action`, `empty`.
14421
+
14422
+ **Slots:** none. **Optional peer deps:** none.
14423
+
14424
+ ```ts
14425
+ import '@aceshooting/lyra-ui/components/conversation/prompt-queue/prompt-queue.js';
14426
+ ```
14427
+
14428
+ ## `lr-selection-toolbar`
14429
+
14430
+ Nonmodal, Escape-dismissible text-selection toolbar carrying selected text plus a format-neutral
14431
+ `DocumentLocator` into ask, quote, cite, and copy actions.
14432
+
14433
+ **Properties:** `open: boolean = false` (reflected); `text: string = ''`;
14434
+ `anchor: DocumentLocator | null = null`, `rect: DOMRectReadOnly | null = null`, and
14435
+ `actions: SelectionAction[] = ['ask', 'quote', 'cite', 'copy']` (attribute: false);
14436
+ `label: string = ''`; `accessibleLabel: string | null = null` (attribute `aria-label`).
14437
+ `SelectionAction = 'ask' | 'quote' | 'cite' | 'copy'`.
14438
+
14439
+ **Events:** `lr-selection-action` (`SelectionActionDetail = { action, text, anchor }`);
14440
+ `lr-dismiss` (Escape); `lr-copy-error` (`{ error }`). Copy uses the Clipboard API when available;
14441
+ the action event still reports the user intent if writing fails, alongside `lr-copy-error`.
14442
+
14443
+ **CSS parts:** `toolbar`, `action`, `action-ask`, `action-quote`, `action-cite`, `action-copy`.
14444
+
14445
+ **Themeable custom properties:** `--lr-selection-toolbar-inline-start` and
14446
+ `--lr-selection-toolbar-block-start` are normally computed from `rect`; hosts may override them to
14447
+ provide their own fixed-position anchor.
14448
+
14449
+ **Slots:** none. **Optional peer deps:** none.
14450
+
14451
+ ```ts
14452
+ import '@aceshooting/lyra-ui/components/conversation/selection-toolbar/selection-toolbar.js';
14453
+ ```
14454
+
14455
+ **Additional API surface:**
14456
+
14457
+ - `--lr-selection-toolbar-inline-shift` — Computed inline collision-avoidance offset.
14458
+ - `--lr-selection-toolbar-block-shift` — Computed block collision-avoidance offset.
14459
+
14460
+ ## `lr-realtime-session`
14461
+
14462
+ Provider-neutral realtime voice shell composing connection state, `lr-audio-visualizer`,
14463
+ `lr-push-to-talk`, and `lr-transcript-feed`. Transport/authentication/playback remain host-owned.
14464
+
14465
+ **Properties:** `state: RealtimeConnectionState = 'disconnected'` (reflected), where the closed set
14466
+ is `'disconnected' | 'connecting' | 'connected' | 'reconnecting' | 'error'`; `voiceState:
14467
+ AudioVisualizerState = 'idle'` (attribute `voice-state`); `level: number | null = null` (finite,
14468
+ clamped by the composed visualizer); `stream: MediaStream | null = null` and `entries:
14469
+ LyraTranscriptEntry[] = []` (attribute: false); `muted: boolean = false` (reflected);
14470
+ `showCapture: boolean = true` (attribute `show-capture`, reflected, string-aware true-default
14471
+ converter); `errorCode: string = ''` (attribute `error-code`); `label: string = ''`.
14472
+
14473
+ **Events:** `lr-connect`, `lr-disconnect`, `lr-mute-change` (`{ muted }`), `lr-interrupt`; the
14474
+ composed push-to-talk events continue bubbling.
14475
+
14476
+ **Slots:** `controls` adds provider-specific actions beside the built-in session controls.
14477
+
14478
+ **CSS parts:** `base`, `header`, `status`, `activity`, `controls`, `connect`, `disconnect`, `mute`,
14479
+ `interrupt`, `capture`, `transcript`, `error`.
14480
+
14481
+ **Slots:** `controls` — provider-specific actions appended to the built-in session controls.
14482
+ **Optional peer deps:** none. Transport, credentials, capture permission, and media playback
14483
+ remain host-owned.
14484
+
14485
+ ```ts
14486
+ import '@aceshooting/lyra-ui/components/conversation/realtime-session/realtime-session.js';
14487
+ ```
14488
+
13687
14489
  # Agent tooling, tool calls & evaluation (`components/agent-tools/`)
13688
14490
 
13689
14491
  ## `lr-tool-call-chip`
@@ -14073,6 +14875,17 @@ state, so no additional scroll-lock/focus-trap bookkeeping is needed for that tr
14073
14875
  - the `maximize`/`close` buttons are always the first elements in the Tab order while open,
14074
14876
  regardless of visual position, followed by `body` then `footer` content
14075
14877
 
14878
+ **Additional API surface:**
14879
+
14880
+ - `--lr-tool-result-dialog-running-color` — Running status foreground. Default: `var(--lr-color-brand)`.
14881
+ - `--lr-tool-result-dialog-running-bg` — Running status background. Default: `var(--lr-color-brand-quiet)`.
14882
+ - `--lr-tool-result-dialog-success-color` — Success status foreground. Default: `var(--lr-color-success)`.
14883
+ - `--lr-tool-result-dialog-success-bg` — Success status background. Default: `var(--lr-color-success-quiet)`.
14884
+ - `--lr-tool-result-dialog-error-color` — Error status foreground. Default: `var(--lr-color-danger)`.
14885
+ - `--lr-tool-result-dialog-error-bg` — Error status background. Default: `var(--lr-color-danger-quiet)`.
14886
+ - `--lr-tool-result-dialog-denied-color` — Denied status foreground. Default: `var(--lr-color-warning)`.
14887
+ - `--lr-tool-result-dialog-denied-bg` — Denied status background. Default: `var(--lr-color-warning-quiet)`.
14888
+
14076
14889
  ---
14077
14890
 
14078
14891
  ## `lr-tool-select-dialog`
@@ -14722,7 +15535,8 @@ recorded winner, host-writable to reflect a previously-recorded vote back. `item
14722
15535
  (attribute `item-id`) — an opaque id round-tripped through `lr-vote`. `hideTie: boolean = false`
14723
15536
  (attribute `hide-tie`) and `hideBothBad: boolean = false` (attribute `hide-both-bad`) hide the
14724
15537
  corresponding vote button. `syncScroll: boolean = false` (attribute `sync-scroll`) links both panes'
14725
- scroll position.
15538
+ scroll position. `disabled: boolean = false` (reflected) disables every vote button and suppresses
15539
+ `lr-vote`.
14726
15540
 
14727
15541
  **Slots:** `a` (the first output — any content, a chat message, markdown, a viewer), `b` (the second
14728
15542
  output), and `prompt` (optional shared-input header above both panes).
@@ -14865,6 +15679,11 @@ so retinting one tone doesn't repaint the other surface reading that token, and
14865
15679
  `::part('line')` stylesheet override — the background is applied inline, so a stylesheet rule can't
14866
15680
  beat it without `!important`.
14867
15681
 
15682
+ **Additional API surface:**
15683
+
15684
+ - `--lr-terminal-search-outline-color` — Outline color for a line containing a non-active search match. Default: `var(--lr-color-warning)`.
15685
+ - `--lr-terminal-search-active-outline-color` — Outline color for the active search match's line. Default: `var(--lr-color-brand)`.
15686
+
14868
15687
  ## `lr-trace-tree`
14869
15688
 
14870
15689
  A collapsible span hierarchy for one agent/LLM trace (Langfuse/LangSmith run-tree style): kind icon,
@@ -14912,6 +15731,17 @@ side of the lightness midpoint as the ambient surface, so a consumer who sets
14912
15731
  set `--lr-trace-tree-row-active-color` to match, and should re-check the status-label tones
14913
15732
  against the new tint as well.
14914
15733
 
15734
+ **Additional API surface:**
15735
+
15736
+ - `--lr-trace-tree-toggle-hover-bg` — Toggle hover background. Default: `var(--lr-color-brand-quiet)`.
15737
+ - `--lr-trace-tree-success-color` — Success status text and bar. Default: `var(--lr-color-success)`.
15738
+ - `--lr-trace-tree-error-color` — Error status text and bar. Default: `var(--lr-color-danger)`.
15739
+ - `--lr-trace-tree-denied-color` — Denied status text and bar. Default: `var(--lr-color-warning)`.
15740
+ - `--lr-trace-tree-running-color` — Running status text and stripe. Default: `var(--lr-color-brand)`.
15741
+ - `--lr-trace-tree-pending-color` — Pending status text and bar. Default: `var(--lr-color-text-quiet)`.
15742
+ - `--lr-trace-tree-bar-track-bg` — Duration bar track. Default: `var(--lr-color-surface-raised)`.
15743
+ - `--lr-trace-tree-running-stripe-bg` — Running stripe contrast. Default: `var(--lr-color-brand-quiet)`.
15744
+
14915
15745
  ## `lr-activity-feed`
14916
15746
 
14917
15747
  An append-only streaming log of granular agent actions ("Searching the web…", "Read
@@ -15154,6 +15984,15 @@ viewport's aspect ratio.
15154
15984
  ></lr-browser-frame>
15155
15985
  ```
15156
15986
 
15987
+ **Additional API surface:**
15988
+
15989
+ - `--lr-browser-frame-controller-background` — Controller badge background. Default: `var(--lr-color-brand-quiet)`.
15990
+ - `--lr-browser-frame-controller-color` — Controller badge text color. Default: `var(--lr-color-brand)`.
15991
+ - `--lr-browser-frame-ping-click-color` — Click-ping border color. Default: `var(--lr-color-brand)`.
15992
+ - `--lr-browser-frame-ping-type-color` — Type-ping border color. Default: `var(--lr-color-success)`.
15993
+ - `--lr-browser-frame-ping-scroll-color` — Scroll-ping border color. Default: `var(--lr-color-warning)`.
15994
+ - `--lr-browser-frame-ping-move-color` — Move-ping border color. Default: `var(--lr-color-text-quiet)`.
15995
+
15157
15996
  ## `lr-artifact-panel`
15158
15997
 
15159
15998
  Shell around one agent-generated artifact: a title/kind header, a preview↔code toggle, version
@@ -15283,6 +16122,12 @@ is unset. Like the other density/state properties in this family they are inline
15283
16122
  their point of use rather than `:host` declarations, so either can be set on the element *or on any
15284
16123
  ancestor* — one rule on a run list retunes every compact run inside it.
15285
16124
 
16125
+ **Additional API surface:**
16126
+
16127
+ - `--lr-agent-run-metric-danger-color` — Danger metric value. Default: `var(--lr-color-danger)`.
16128
+ - `--lr-agent-run-metric-success-color` — Success metric value. Default: `var(--lr-color-success)`.
16129
+ - `--lr-agent-run-metric-warning-color` — Warning metric value. Default: `var(--lr-color-warning)`.
16130
+
15286
16131
  ## `lr-agent-trace`
15287
16132
 
15288
16133
  Provider-neutral agent/LLM trace view combining span-kind filters, handoff quick-jumps, and a
@@ -15555,23 +16400,41 @@ retinted independently; `--lr-tool-timeline-pending-approval-border-color` (defa
15555
16400
  `var(--lr-color-warning)`) — color of the entry body's leading border while that entry's
15556
16401
  `data-pending-approval` is `"true"`.
15557
16402
 
16403
+ **Additional API surface:**
16404
+
16405
+ - `--lr-tool-timeline-running-marker-color` — Running rail dot. Default: `var(--lr-color-brand)`.
16406
+ - `--lr-tool-timeline-success-marker-color` — Success rail dot. Default: `var(--lr-color-success)`.
16407
+ - `--lr-tool-timeline-error-marker-color` — Error rail dot. Default: `var(--lr-color-danger)`.
16408
+ - `--lr-tool-timeline-approved-bg` — Approved badge background. Default: `var(--lr-color-success-quiet)`.
16409
+ - `--lr-tool-timeline-approved-color` — Approved badge foreground. Default: `var(--lr-color-success)`.
16410
+ - `--lr-tool-timeline-denied-bg` — Denied badge background. Default: `var(--lr-color-danger-quiet)`.
16411
+ - `--lr-tool-timeline-denied-color` — Denied badge foreground. Default: `var(--lr-color-danger)`.
16412
+ - `--lr-tool-timeline-error-color` — Expanded error text. Default: `var(--lr-color-danger)`.
16413
+
15558
16414
  ## `lr-agent-eval-dashboard`
15559
16415
 
15560
16416
  Controlled evaluation overview with metric cards, a dependency-free trend chart, and run-status
15561
16417
  history. It never launches or scores evaluations.
15562
16418
 
15563
16419
  **Properties:** `metrics: AgentEvaluationMetric[] = []` (attribute: false), where each metric is
15564
- `{ id, label, value, format?: 'number' | 'percent' | 'milliseconds' | 'currency' }`; `runs:
16420
+ `{ id, label, value, format?: 'number' | 'percent' | 'milliseconds' | 'currency' }`; `currency:
16421
+ string = 'USD'` is the ISO 4217 code used by currency-formatted metrics (invalid codes safely fall
16422
+ back to USD). `runs:
15565
16423
  AgentEvaluationDashboardRun[] = []` (attribute: false), where each run is `{ id, label, status,
15566
16424
  metrics?: Record<string, number> }`; `metricId: string = ''`; `label: string = ''`; `showChart:
15567
16425
  boolean = true`; `chartHeight: string = '220px'`.
15568
16426
 
15569
- **Events:** `lr-metric-change` (`{ metricId }`, reserved for host-controlled metric selectors) and
16427
+ **Events:** `lr-metric-change` (`{ metricId }`, emitted when a metric selector is activated) and
15570
16428
  `lr-run-select` (`{ runId }`).
15571
16429
 
15572
16430
  **CSS parts:** `base`, `heading`, `metrics`, `metric`, `chart`, `runs`, `runs-heading`, `run`,
15573
16431
  `run-label`, `run-meta`, `run-status`, `empty`.
15574
16432
 
16433
+ **Additional API surface:**
16434
+
16435
+ - `--lr-agent-eval-dashboard-active-border` — Active metric border. Default: `var(--lr-color-brand)`.
16436
+ - `--lr-agent-eval-dashboard-active-background` — Active metric background. Default: `var(--lr-color-brand-quiet)`.
16437
+
15575
16438
  ## `lr-approval-queue`
15576
16439
 
15577
16440
  Keyboard-accessible queue of pending tool calls backed by one reusable `lr-tool-approval-dialog`.
@@ -15587,6 +16450,157 @@ approved, args? }`), and `lr-approval-close` (`{ invocationId, reason }`).
15587
16450
  **CSS parts:** `base`, `heading-row`, `heading`, `count`, `list`, `request`, `request-info`,
15588
16451
  `tool-name`, `request-id`, `status`, `empty`.
15589
16452
 
16453
+ **Additional API surface:**
16454
+
16455
+ - `--lr-approval-queue-selected-border` — Selected request border. Default: `var(--lr-color-brand)`.
16456
+
16457
+ ## `lr-mcp-app`
16458
+
16459
+ Sandbox host for executable MCP App-style resources. Inline documents run in a unique-origin iframe
16460
+ with injected CSP; remote documents are URL-validated. The frame can only request tool calls,
16461
+ messages, navigation, logs, and clamped resizing through typed events. Capabilities are denied
16462
+ unless explicitly enabled in `resource.permissions`.
16463
+
16464
+ **Properties:**
16465
+
16466
+ - `resource: McpAppResource | null = null` (attribute: false) — either inline `html` or a safe
16467
+ remote `src`, plus the required logical `uri`. `McpAppResource = { uri: string; title?: string;
16468
+ html?: string; src?: string; csp?: McpAppCsp; permissions?: McpAppPermissions; metadata?:
16469
+ Record<string, unknown> }`. CSP domain arrays accept HTTP(S) origins only. Permissions are
16470
+ optional booleans for camera, microphone, geolocation, clipboard read, and clipboard write.
16471
+ - `height: number = 320`, `maxHeight: number = 800` (attribute `max-height`) — requested and maximum
16472
+ frame heights in pixels; runtime values and resize requests clamp to 120–10,000.
16473
+ - `label: string = ''`; `accessibleLabel: string | null = null` (attribute `aria-label`) — frame
16474
+ title precedence is host `aria-label`, `label`, resource title, then the localized fallback.
16475
+
16476
+ **Methods:** `postHostContext(context: unknown): void` posts host state into the active frame;
16477
+ `postToolResult(requestId: string, result?: unknown, error?: string): void` resolves a prior tool
16478
+ request. Both are no-ops before a frame exists.
16479
+
16480
+ **Exported types:** `McpAppResource`, `McpAppCsp`, `McpAppPermissions`,
16481
+ `McpAppToolCallDetail`, and `LyraMcpAppEventMap`.
16482
+
16483
+ **Events:** `lr-mcp-ready` (`{ uri }`), `lr-mcp-tool-call` (`{ requestId?, name, args }`),
16484
+ `lr-mcp-send-message` (`{ message }`), `lr-mcp-open-link` (`{ href }`), `lr-mcp-log`
16485
+ (`{ level, value }`), and `lr-mcp-resize` (`{ height }`). These are host-authorized requests; the
16486
+ component does not execute tools, send messages, or navigate itself.
16487
+
16488
+ **CSS parts:** `base`, `frame`, `loading`, `error`.
16489
+
16490
+ **Slots:** none. **Optional peer deps:** none.
16491
+
16492
+ ```ts
16493
+ import '@aceshooting/lyra-ui/components/agent-tools/mcp-app/mcp-app.js';
16494
+ ```
16495
+
16496
+ ## `lr-prompt-studio`
16497
+
16498
+ Prompt-development workbench for ordered role messages, `{{variable}}` substitution, saved
16499
+ versions, resolved preview, and save/run intents. Message and variable edits update the component's
16500
+ current arrays before emitting their complete next state; persistence and execution remain
16501
+ host-owned.
16502
+
16503
+ **Properties:** `messages: PromptStudioMessage[] = []` and
16504
+ `variables: PromptStudioVariable[] = []` are property-only editor state: user edits update the
16505
+ current arrays before `lr-change` is emitted, while the host remains responsible for persistence.
16506
+ `versions: PromptStudioVersion[] = []` is a property-only host-controlled input;
16507
+ `selectedVersionId: string = ''` (attribute `selected-version-id`); `label: string = ''`;
16508
+ `running: boolean = false` and `disabled: boolean = false` (both reflected).
16509
+
16510
+ **Exported types:** `PromptStudioRole = 'system' | 'user' | 'assistant' | 'tool'`;
16511
+ `PromptStudioMessage = { id, role, content, name? }`; `PromptStudioVariable = { name, value,
16512
+ description? }`; `PromptStudioVersion = { id: string; label: string; messages:
16513
+ PromptStudioMessage[]; variables?: PromptStudioVariable[]; createdAt?: string }`; and
16514
+ `PromptStudioState = { messages, variables }`.
16515
+
16516
+ **Events:** `lr-change`, `lr-run`, `lr-save` (all carry complete messages/variables);
16517
+ `lr-version-select` (`{ version }`).
16518
+
16519
+ **CSS parts:** `base`, `toolbar`, `editor`, `messages`, `message`, `message-role`,
16520
+ `message-content`, `remove-message`, `add-message`, `variables`, `variable`, `versions`, `version`,
16521
+ `preview`, `save`, `run`.
16522
+
16523
+ **Slots:** none. **Optional peer deps:** none.
16524
+
16525
+ ```ts
16526
+ import '@aceshooting/lyra-ui/components/agent-tools/prompt-studio/prompt-studio.js';
16527
+ ```
16528
+
16529
+ **Additional API surface:**
16530
+
16531
+ - `--lr-prompt-studio-field-hover-border` — Enabled field hover border. Default: `var(--lr-color-brand)`.
16532
+ - `--lr-prompt-studio-version-selected-border` — Selected version border. Default: `var(--lr-color-brand)`.
16533
+ - `--lr-prompt-studio-version-selected-bg` — Selected version background. Default: `var(--lr-color-brand-quiet)`.
16534
+ - `--lr-prompt-studio-version-selected-color` — Selected version foreground. Default: `var(--lr-color-text)`.
16535
+ - `--lr-prompt-studio-version-selected-hover-bg` — Selected version hover background. Default: `var(--lr-color-brand-quiet)`.
16536
+
16537
+ ## `lr-schema-viewer`
16538
+
16539
+ Recursive JSON Schema inspector with property/branch selection, required and constraint display,
16540
+ validation issues, `$ref` visibility, composition branches, cycle protection, and a depth ceiling.
16541
+ It intentionally does not fetch remote references or validate values.
16542
+
16543
+ **Properties:** `schema: JsonSchemaNode | null = null` and `issues: SchemaValidationIssue[] = []`
16544
+ (attribute: false); `selectedPath: string = ''` (attribute `selected-path`);
16545
+ `maxDepth: number = 20` (attribute `max-depth`, clamped to 100); `label: string = ''`.
16546
+
16547
+ **Exported types:** `JsonSchemaNode` covers `$ref`, type/title/description, properties/items,
16548
+ required/enum/const/default/examples, and oneOf/anyOf/allOf while preserving unknown schema
16549
+ keywords. `SchemaValidationIssue = { path: string; message: string; severity?: 'error' | 'warning'
16550
+ | 'info' }`.
16551
+
16552
+ **Events:** `lr-schema-select` (`{ path, schema }`, with an RFC 6901-style JSON Pointer).
16553
+
16554
+ **CSS parts:** `base`, `tree`, `node`, `node-selected`, `node-trigger`, `name`, `type`, `required`,
16555
+ `description`, `constraints`, `issue`, `limit`, `empty`.
16556
+
16557
+ Rendering is capped at 500 schema nodes; `limit` reports truncation. Cycles stop at the repeated
16558
+ node rather than recursing. **Slots:** none. **Optional peer deps:** none.
16559
+
16560
+ ```ts
16561
+ import '@aceshooting/lyra-ui/components/agent-tools/schema-viewer/schema-viewer.js';
16562
+ ```
16563
+
16564
+ **Additional API surface:**
16565
+
16566
+ - `part="limit"` — Resource-ceiling status shown when additional nodes are omitted.
16567
+ - `--lr-schema-viewer-selected-border` — Selected node branch. Default: `var(--lr-color-brand)`.
16568
+ - `--lr-schema-viewer-error-border` — Error issue border. Default: `var(--lr-color-danger)`.
16569
+ - `--lr-schema-viewer-error-bg` — Error issue background. Default: `var(--lr-color-danger-quiet)`.
16570
+ - `--lr-schema-viewer-warning-border` — Warning issue border. Default: `var(--lr-color-warning)`.
16571
+ - `--lr-schema-viewer-warning-bg` — Warning issue background. Default: `var(--lr-color-warning-quiet)`.
16572
+
16573
+ ## `lr-subagent-panel`
16574
+
16575
+ Controlled nested-agent hierarchy with lifecycle badges, task/model context, guarded progress,
16576
+ selection, cancel, and retry intents. `SubagentRun.parentId` creates nesting; cycles and orphan
16577
+ parents remain renderable instead of recursing forever.
16578
+
16579
+ **Properties:** `runs: SubagentRun[] = []` (attribute: false);
16580
+ `selectedRunId: string = ''` (attribute `selected-run-id`); `label: string = ''`.
16581
+ `SubagentRun = { id: string; parentId?: string; label: string; status: AgentStatusKind; task?:
16582
+ string; model?: string; progress?: number; startedAt?: number; endedAt?: number; metadata?:
16583
+ Record<string, unknown> }`.
16584
+
16585
+ **Events:** `lr-run-select` (`{ run }`), `lr-cancel`/`lr-retry` (`{ runId }`).
16586
+
16587
+ **CSS parts:** `base`, `list`, `run`, `run-selected`, `run-row`, `run-trigger`, `label`, `status`,
16588
+ `task`, `model`, `progress`, `actions`, `cancel`, `retry`, `limit`, `empty`.
16589
+
16590
+ At most 500 runs render, and visual indentation is capped at 12 levels while ARIA hierarchy keeps
16591
+ the logical depth. Progress is finite and clamped. **Slots:** none. **Optional peer deps:** none.
16592
+
16593
+ ```ts
16594
+ import '@aceshooting/lyra-ui/components/agent-tools/subagent-panel/subagent-panel.js';
16595
+ ```
16596
+
16597
+ **Additional API surface:**
16598
+
16599
+ - `part="limit"` — Resource-ceiling status shown when additional runs are omitted.
16600
+ - `--lr-subagent-panel-selected-border` — Selected run border. Default: `var(--lr-color-brand)`.
16601
+ - `--lr-subagent-panel-progress-track` — Progress track. Default: `var(--lr-color-border)`.
16602
+ - `--lr-subagent-panel-progress-fill` — Progress fill. Default: `var(--lr-color-brand)`.
16603
+
15590
16604
  # Retrieval, knowledge graph & grounding (`components/retrieval/`)
15591
16605
 
15592
16606
  ## `lr-graph`
@@ -15749,9 +16763,9 @@ install with `pnpm add d3-force d3-drag d3-zoom d3-selection`).
15749
16763
  zoom/drag are still pointer-only with no keyboard equivalent. Links (`<line part="link">`) are now
15750
16764
  keyboard-operable too (`tabindex="0"`, `role="button"`, `aria-label`, Enter/Space), matching nodes.
15751
16765
  - while the `d3-force`/`d3-drag`/`d3-zoom`/`d3-selection` peers are resolving, the host shows a
15752
- `<lr-skeleton>` sized to `width`/`height` with `aria-busy="true"` but if they fail to load
15753
- (not installed), it still settles into a permanently empty `<svg>` (0 nodes/0 links) plus a
15754
- one-time console warning, same as before; the skeleton only covers the loading window itself.
16766
+ `<lr-skeleton>` sized to `width`/`height` with `aria-busy="true"`. If they fail to load (for
16767
+ example, because they are not installed), the graph fails closed with a localized
16768
+ `part="error"` / `role="alert"` message instead of leaving an empty SVG.
15755
16769
  - `GraphNode.color` is sanitized (rejects `;`/`{`/`}`) before being written into the
15756
16770
  `--lr-node-fill` inline custom property, so an untrusted color string can't break out of that
15757
16771
  CSS declaration.
@@ -16277,9 +17291,9 @@ fired after every toggle including select-all).
16277
17291
 
16278
17292
  **CSS parts:** `base`, `search` (the built-in filter `lr-input`, only when `searchable`),
16279
17293
  `select-all` (only when `showSelectAll`), `summary` ("{selected} of {total} selected"), `tree`
16280
- (`role="tree"`), `item` (`role="treeitem"`), `checkbox` (tri-state glyph), `icon` (the
16281
- `lr-file-icon` type badge), `label`, `empty` (`noData` when `sources` is empty, `noMatches` when a
16282
- filter empties the tree).
17294
+ (`role="tree"`), `item` (`role="treeitem"`), `disclosure` (a folder row's expand/collapse button),
17295
+ `checkbox` (tri-state glyph), `icon` (the `lr-file-icon` type badge), `label`, `empty` (`noData`
17296
+ when `sources` is empty, `noMatches` when a filter empties the tree).
16283
17297
 
16284
17298
  **Themeable custom properties:** `--lr-source-picker-checked-bg` — the background of a fully-checked
16285
17299
  selection control: the `select-all` pill (whose resting default is `var(--lr-color-brand-quiet)`) and
@@ -16528,7 +17542,7 @@ direct light-DOM children of the list (plain composition — no `.items` array p
16528
17542
  - `labelPlural: string = ''` (attribute `label-plural`) — fully consumer-built, already-pluralized
16529
17543
  header summary, e.g. `"3 sources"` or `"1 source"`; this component never counts or pluralizes on
16530
17544
  its own. Takes precedence over `label` when both are set. If neither is set, the header falls back
16531
- to the literal word `"Sources"`.
17545
+ to the localized `sourceListDefaultLabel` string (English default: `"Sources"`).
16532
17546
 
16533
17547
  **Getters:** `sourceCount: number` — read-only, live-updated count of the currently-slotted children,
16534
17548
  handy for building a `label-plural` string reactively, e.g. `` list.labelPlural = `${list.sourceCount} sources` ``.
@@ -16629,10 +17643,9 @@ forwarding scenarios or engines that don't fire `slotchange` for content already
16629
17643
  time.
16630
17644
 
16631
17645
  **Known gotchas:**
16632
- - This library has no built-in i18n/pluralization (the same stance `<lr-empty>`'s plain
16633
- `description` prop takes) `lr-source-list`'s header text is entirely consumer-supplied via
16634
- `label`/`label-plural`; there's no automatic "N sources" string generation beyond the literal
16635
- `"Sources"` fallback.
17646
+ - `lr-source-list` does not automatically build an “N sources” plural summary: provide
17647
+ `labelPlural` when that is wanted. Its no-label fallback is localized through
17648
+ `sourceListDefaultLabel`, and a per-instance `.strings` override reaches the rendered header.
16636
17649
  - `lr-source-card`'s own expand/collapse (`full` slot, `lr-expand` event) is completely
16637
17650
  independent of the parent list's `expanded`/`lr-toggle` — collapsing the list doesn't reset an
16638
17651
  individual card's `fullExpanded` state, and there is no cross-talk between the two components at
@@ -16715,8 +17728,9 @@ and `lr-citation-badge` for each evidence entry.
16715
17728
  **Properties:**
16716
17729
  - `assessment: GroundingAssessment | null = null` (attribute: false) — **`GroundingAssessment`,
16717
17730
  imported from `@aceshooting/lyra-ui/ai`** (`src/ai/types.ts`): `{ supportedClaims: number;
16718
- unsupportedClaims: number; coverage: number; confidence?: number; warnings?: string[] }`, where
16719
- `coverage` and `confidence` are 0–1 fractions. `null` renders the empty state
17731
+ unsupportedClaims: number; coverage: number; confidence?: number; warnings?: string[];
17732
+ claims?: GroundedClaim[] }`, where `coverage` and `confidence` are 0–1 fractions. `null` renders
17733
+ the empty state
16720
17734
  - `citations: Citation[] = []` (attribute: false) — **`Citation` from `@aceshooting/lyra-ui/ai`**:
16721
17735
  `{ id: string; chunkId?: string; sourceId?: string; span?: { start: number; end: number };
16722
17736
  label?: string }`. Independent of `assessment`; empty omits the whole evidence section. Each entry
@@ -16726,8 +17740,10 @@ and `lr-citation-badge` for each evidence entry.
16726
17740
  `GroundingSummaryThresholds { high: number; medium: number }` (exported here), both 0–1 fractions,
16727
17741
  applied to both `coverage` and `confidence`: `>= high` → `success` tone, `>= medium` → `warning`,
16728
17742
  below → `danger`
16729
- - `label: string = ''` — accessible group label; falls back to a host `aria-label`, then the
16730
- localized `groundingSummaryLabel`
17743
+ - `label: string = ''` — accessible group label. A host `aria-label` takes precedence, followed by
17744
+ `label`, then the localized `groundingSummaryLabel`
17745
+ - `showClaims: boolean = true` (attribute `show-claims`) — renders `assessment.claims` through
17746
+ `lr-claim-evidence`; set false to keep the aggregate scorecard only
16731
17747
 
16732
17748
  **Events:** `lr-citation-select` (`detail: CitationSelectEventDetail` from
16733
17749
  `@aceshooting/lyra-ui/ai` = `{ citation: Citation }`) — emitted when an evidence badge is activated.
@@ -16742,7 +17758,8 @@ row), `warnings` (omitted when there are none), `warnings-heading`, `warnings-co
16742
17758
  `warnings-list` (a `<ul>`), `warning` (one `<li>`), `evidence` (omitted when `citations` is empty),
16743
17759
  `evidence-heading`, `evidence-count`, `evidence-item` (badge + always-visible label/span text),
16744
17760
  `evidence-label` (omitted when `Citation.label` is unset), `evidence-span` (the formatted
16745
- `Citation.span` range, omitted when unset), `empty` (shown when `assessment` is `null`).
17761
+ `Citation.span` range, omitted when unset), `claims` (the composed claim-evidence audit), `empty`
17762
+ (shown when `assessment` is `null`).
16746
17763
 
16747
17764
  **Themeable custom properties:** shared tokens only.
16748
17765
 
@@ -16788,8 +17805,10 @@ Both `RetryEventDetail` and `CancelEventDetail` come from `@aceshooting/lyra-ui/
16788
17805
  per-item stage label), `item-progress`,
16789
17806
  `item-chunk-count`, `item-embedding-status` (the "N of M chunks embedded" text, only once both
16790
17807
  `chunkCount` and `embeddedChunkCount` are set), `item-attempts` (only once `attempts > 0`),
16791
- `item-error` (only for `stage="failed"` with `error` set), `item-actions`, `retry-button`,
16792
- `cancel-button`, `empty`.
17808
+ `item-error` (only for `stage="failed"` with `error` set), `failure-live` (the visually hidden
17809
+ assertive region that announces only failures added or transitioned after mount; historical failed
17810
+ rows remain visible without being re-announced), `item-actions`, `retry-button`, `cancel-button`,
17811
+ `empty`.
16793
17812
 
16794
17813
  In virtualized mode (at or above `virtualizeThreshold`) the rows live in the internal
16795
17814
  `lr-virtual-list`'s shadow root, and `item`, `item-header`, `item-name`, `item-progress`,
@@ -17185,8 +18204,9 @@ fetches, ranks, or computes retrieval results itself.
17185
18204
  stage whose evidence has none of the three renders no disclosure row at all
17186
18205
  - `activeStageId: string | null = null` (attribute `active-stage-id`) — controlled selection,
17187
18206
  forwarded verbatim to the internal `lr-span-waterfall`'s `activeSpanId`
17188
- - `label: string = ''` — accessible name for the timeline; falls back to a host `aria-label`, then
17189
- the waterfall's own localized default
18207
+ - `label: string = ''` — accessible name for the timeline. A host `aria-label` takes precedence,
18208
+ followed by `label`, then the waterfall's own localized default; late attribute changes and
18209
+ removal update that resolved name
17190
18210
 
17191
18211
  **Events:** `lr-stage-select` (`detail: { id: string }`, a stage's bar was activated — click, Enter,
17192
18212
  Space), `lr-stage-toggle` (`detail: { id: string; expanded: boolean }`, an evidence panel was
@@ -17225,9 +18245,10 @@ or source fetching.
17225
18245
  **Properties:** `answer: string = ''`; `citations: Citation[] = []` (attribute: false);
17226
18246
  `sources: DocumentRef[] = []` (attribute: false); `assessment: GroundingAssessment | null = null`
17227
18247
  (attribute: false); `loading: boolean = false`; `error: string = ''`; `showSources: boolean = true`;
17228
- `label: string = ''`; `accessibleLabel: string | null = null` (attribute `aria-label`).
18248
+ `showClaims: boolean = true` (attribute `show-claims`); `label: string = ''`; `accessibleLabel:
18249
+ string | null = null` (attribute `aria-label`).
17229
18250
 
17230
- **Events:** `lr-citation-select` (`{ citation }`) and `lr-retry`.
18251
+ **Events:** `lr-citation-select` (`{ citation }`), `lr-claim-select` (`{ claim }`), and `lr-retry`.
17231
18252
 
17232
18253
  **Slots:** `answer` replaces the data-driven Markdown body; `sources` replaces the data-driven
17233
18254
  source list.
@@ -17249,6 +18270,9 @@ omitted.
17249
18270
 
17250
18271
  **CSS parts:** `base`, `plot`, `point`, `empty`.
17251
18272
 
18273
+ **Themeable custom properties:** `--lr-embedding-explorer-selected-stroke` (default
18274
+ `var(--lr-color-brand)`) — stroke color of the selected point. Plus shared tokens.
18275
+
17252
18276
  ## `lr-knowledge-base-admin`
17253
18277
 
17254
18278
  Tabbed operations shell composing `lr-knowledge-base` and `lr-ingestion-queue`. It forwards source
@@ -17266,3 +18290,87 @@ correlated ids/details from their composed primitives).
17266
18290
  **Slots:** `settings` — host-owned KB configuration controls.
17267
18291
 
17268
18292
  **CSS parts:** `base`, `heading`, `tabs`, `tab`, `panel`, `settings`.
18293
+
18294
+ ## `lr-claim-evidence`
18295
+
18296
+ Controlled claim-by-claim grounding audit relating `GroundedClaim[]` to complete `Citation[]`
18297
+ records. Dangling citation ids are ignored rather than rendered as invented evidence.
18298
+
18299
+ **Properties:** `claims: GroundedClaim[] = []` and `citations: Citation[] = []` (attribute: false);
18300
+ `selectedClaimId: string = ''` (attribute `selected-claim-id`); `label: string = ''`.
18301
+ `GroundedClaim = { id, text, status, citationIds, answerRange?, confidence?, explanation? }`, with
18302
+ `status: 'supported' | 'partially-supported' | 'unsupported' | 'contradicted'`. Claim confidence
18303
+ is clamped to 0–1 for localized percent display. `Citation` is the shared AI citation record
18304
+ (`id`, source/chunk ids, label, locator/ranges, quote, metadata).
18305
+
18306
+ **Events:** `lr-claim-select` (`{ claim }`), `lr-citation-select` (`{ citation }`).
18307
+
18308
+ **CSS parts:** `base`, `list`, `claim`, `claim-selected`, `claim-trigger`, `status`, `claim-text`,
18309
+ `confidence`, `explanation`, `evidence`, `empty`.
18310
+
18311
+ Selection is controlled: activation emits the complete claim but does not assign
18312
+ `selectedClaimId`. Evidence preserves `citations` order and silently skips dangling ids.
18313
+ **Slots:** none. **Optional peer deps:** none.
18314
+
18315
+ ```ts
18316
+ import '@aceshooting/lyra-ui/components/retrieval/claim-evidence/claim-evidence.js';
18317
+ ```
18318
+
18319
+ ## `lr-retrieval-compare`
18320
+
18321
+ Side-by-side retrieval/reranking workbench showing effective rank, top-k Jaccard overlap, and
18322
+ dense/sparse/rerank/final score breakdowns.
18323
+
18324
+ **Properties:** `sets: RetrievalComparisonSet[] = []` (attribute: false), where
18325
+ `RetrievalComparisonSet = { id: string; label: string; chunks: RetrievalChunk[] }`;
18326
+ `topK: number = 10` (attribute `top-k`, finite integer with minimum 1);
18327
+ `selectedChunkId: string = ''` (attribute `selected-chunk-id`); `label: string = ''`.
18328
+ `RetrievalChunk` is the shared AI record carrying id/text/score/source plus optional rank, locator,
18329
+ trace metadata, and `scores?: { dense?, sparse?, rerank?, final }`.
18330
+
18331
+ **Events:** `lr-chunk-select` (`{ setId, chunk }`).
18332
+
18333
+ **CSS parts:** `base`, `overlap`, `sets`, `set`, `set-heading`, `chunks`, `chunk`,
18334
+ `chunk-selected`, `chunk-rank`, `chunk-title`, `chunk-text`, `scores`, `score`, `empty`.
18335
+
18336
+ Chunks are ordered by effective rank, then score, then input order before the top-k slice. Overlap
18337
+ is pairwise Jaccard similarity across those visible chunk ids. Selection is controlled.
18338
+ **Slots:** none. **Optional peer deps:** none.
18339
+
18340
+ ```ts
18341
+ import '@aceshooting/lyra-ui/components/retrieval/retrieval-compare/retrieval-compare.js';
18342
+ ```
18343
+
18344
+ ## `lr-rag-eval-dashboard`
18345
+
18346
+ Controlled RAG evaluation overview with latest metric cards, per-metric trends, evaluation slices,
18347
+ and run history. The host computes metrics and owns evaluation execution.
18348
+
18349
+ **Properties:** `metrics: RagEvaluationMetric[] = []` and `runs: RagEvaluationRun[] = []`
18350
+ (attribute: false); `metricId: string = ''` (attribute `metric-id`, with the first metric used for
18351
+ display when unset/unmatched); `slice: string = ''`; `label: string = ''`;
18352
+ `showChart: boolean = true` (attribute `show-chart`, reflected, string-aware true-default
18353
+ converter); `chartHeight: string = '220px'` (attribute `chart-height`).
18354
+
18355
+ `RagEvaluationMetric = { id, label, category, format? }`, where category is
18356
+ `'retrieval' | 'generation' | 'system' | custom-string` and format is `'number' | 'percent'`.
18357
+ `RagEvaluationRun = { id, label, metrics: Record<string, number>; slice?, timestamp?, metadata? }`.
18358
+
18359
+ **Events:** `lr-metric-change` (`{ metricId }`), `lr-slice-change` (`{ slice }`), and
18360
+ `lr-run-select` (`{ run }`). All are controlled intents; the component does not mutate the
18361
+ corresponding selection properties.
18362
+
18363
+ **CSS parts:** `base`, `heading`, `slices`, `slice`, `slice-selected`, `metrics`, `metric`,
18364
+ `metric-selected`, `chart`, `runs`, `runs-heading`, `run`, `empty`.
18365
+
18366
+ Percent values clamp to 0–1 and all numbers use `effectiveLocale`. The chart is built from the
18367
+ filtered run order; the host computes every metric and owns evaluation execution.
18368
+ **Slots:** none. **Optional peer deps:** none.
18369
+
18370
+ ```ts
18371
+ import '@aceshooting/lyra-ui/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.js';
18372
+ ```
18373
+
18374
+ `lr-grounding-summary` and `lr-rag-answer` now accept `GroundingAssessment.claims` and expose
18375
+ `showClaims: boolean = true`; `lr-retrieval-results` forwards `RetrievalChunk.locator` as the
18376
+ document-viewer-compatible `anchor` in `lr-chunk-open`.