@aceshooting/lyra-ui 6.2.0 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1850) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/README.md +39 -3
  3. package/custom-elements.json +88019 -64078
  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 +25 -5
  731. package/dist/components/forms/button/button.class.d.ts.map +1 -1
  732. package/dist/components/forms/button/button.class.js +64 -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 +5 -3
  736. package/dist/components/forms/checkbox/checkbox.class.d.ts.map +1 -1
  737. package/dist/components/forms/checkbox/checkbox.class.js +14 -13
  738. package/dist/components/forms/checkbox/checkbox.class.js.map +1 -1
  739. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +9 -1
  740. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts.map +1 -1
  741. package/dist/components/forms/checkbox-group/checkbox-group.class.js +91 -8
  742. package/dist/components/forms/checkbox-group/checkbox-group.class.js.map +1 -1
  743. package/dist/components/forms/code-editor/code-editor.class.d.ts +13 -1
  744. package/dist/components/forms/code-editor/code-editor.class.d.ts.map +1 -1
  745. package/dist/components/forms/code-editor/code-editor.class.js +22 -11
  746. package/dist/components/forms/code-editor/code-editor.class.js.map +1 -1
  747. package/dist/components/forms/code-editor/code-editor.styles.js +2 -2
  748. package/dist/components/forms/color-picker/color-picker.class.d.ts +8 -0
  749. package/dist/components/forms/color-picker/color-picker.class.d.ts.map +1 -1
  750. package/dist/components/forms/color-picker/color-picker.class.js +26 -0
  751. package/dist/components/forms/color-picker/color-picker.class.js.map +1 -1
  752. package/dist/components/forms/color-picker/color-picker.styles.d.ts.map +1 -1
  753. package/dist/components/forms/color-picker/color-picker.styles.js +7 -3
  754. package/dist/components/forms/color-picker/color-picker.styles.js.map +1 -1
  755. package/dist/components/forms/combobox/combobox.class.d.ts +5 -1
  756. package/dist/components/forms/combobox/combobox.class.d.ts.map +1 -1
  757. package/dist/components/forms/combobox/combobox.class.js +73 -18
  758. package/dist/components/forms/combobox/combobox.class.js.map +1 -1
  759. package/dist/components/forms/combobox/combobox.styles.d.ts.map +1 -1
  760. package/dist/components/forms/combobox/combobox.styles.js +17 -0
  761. package/dist/components/forms/combobox/combobox.styles.js.map +1 -1
  762. package/dist/components/forms/date-picker/date-input.class.d.ts +6 -0
  763. package/dist/components/forms/date-picker/date-input.class.d.ts.map +1 -1
  764. package/dist/components/forms/date-picker/date-input.class.js +10 -17
  765. package/dist/components/forms/date-picker/date-input.class.js.map +1 -1
  766. package/dist/components/forms/date-picker/date-input.styles.d.ts.map +1 -1
  767. package/dist/components/forms/date-picker/date-input.styles.js +8 -3
  768. package/dist/components/forms/date-picker/date-input.styles.js.map +1 -1
  769. package/dist/components/forms/date-picker/date-picker.class.d.ts +3 -0
  770. package/dist/components/forms/date-picker/date-picker.class.d.ts.map +1 -1
  771. package/dist/components/forms/date-picker/date-picker.class.js +3 -0
  772. package/dist/components/forms/date-picker/date-picker.class.js.map +1 -1
  773. package/dist/components/forms/date-picker/date-picker.styles.d.ts.map +1 -1
  774. package/dist/components/forms/date-picker/date-picker.styles.js +8 -5
  775. package/dist/components/forms/date-picker/date-picker.styles.js.map +1 -1
  776. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +7 -1
  777. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts.map +1 -1
  778. package/dist/components/forms/emoji-picker/emoji-picker.class.js +19 -7
  779. package/dist/components/forms/emoji-picker/emoji-picker.class.js.map +1 -1
  780. package/dist/components/forms/emoji-picker/emoji-picker.styles.d.ts.map +1 -1
  781. package/dist/components/forms/emoji-picker/emoji-picker.styles.js +14 -8
  782. package/dist/components/forms/emoji-picker/emoji-picker.styles.js.map +1 -1
  783. package/dist/components/forms/icon-button/icon-button.class.d.ts +23 -0
  784. package/dist/components/forms/icon-button/icon-button.class.d.ts.map +1 -1
  785. package/dist/components/forms/icon-button/icon-button.class.js +70 -2
  786. package/dist/components/forms/icon-button/icon-button.class.js.map +1 -1
  787. package/dist/components/forms/icon-button/icon-button.styles.js +2 -2
  788. package/dist/components/forms/input/input.class.d.ts +1 -0
  789. package/dist/components/forms/input/input.class.d.ts.map +1 -1
  790. package/dist/components/forms/input/input.class.js +5 -4
  791. package/dist/components/forms/input/input.class.js.map +1 -1
  792. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +6 -0
  793. package/dist/components/forms/locale-picker/locale-picker.class.d.ts.map +1 -1
  794. package/dist/components/forms/locale-picker/locale-picker.class.js +7 -5
  795. package/dist/components/forms/locale-picker/locale-picker.class.js.map +1 -1
  796. package/dist/components/forms/locale-picker/locale-picker.styles.d.ts.map +1 -1
  797. package/dist/components/forms/locale-picker/locale-picker.styles.js +11 -9
  798. package/dist/components/forms/locale-picker/locale-picker.styles.js.map +1 -1
  799. package/dist/components/forms/phone-input/phone-input.class.d.ts +11 -0
  800. package/dist/components/forms/phone-input/phone-input.class.d.ts.map +1 -1
  801. package/dist/components/forms/phone-input/phone-input.class.js +37 -20
  802. package/dist/components/forms/phone-input/phone-input.class.js.map +1 -1
  803. package/dist/components/forms/phone-input/phone-input.styles.d.ts.map +1 -1
  804. package/dist/components/forms/phone-input/phone-input.styles.js +23 -9
  805. package/dist/components/forms/phone-input/phone-input.styles.js.map +1 -1
  806. package/dist/components/forms/radio/radio-group.class.d.ts +5 -0
  807. package/dist/components/forms/radio/radio-group.class.d.ts.map +1 -1
  808. package/dist/components/forms/radio/radio-group.class.js +44 -5
  809. package/dist/components/forms/radio/radio-group.class.js.map +1 -1
  810. package/dist/components/forms/rubric-form/rubric-form.class.d.ts +1 -0
  811. package/dist/components/forms/rubric-form/rubric-form.class.d.ts.map +1 -1
  812. package/dist/components/forms/rubric-form/rubric-form.class.js +91 -20
  813. package/dist/components/forms/rubric-form/rubric-form.class.js.map +1 -1
  814. package/dist/components/forms/rubric-form/rubric-form.styles.d.ts.map +1 -1
  815. package/dist/components/forms/rubric-form/rubric-form.styles.js +7 -1
  816. package/dist/components/forms/rubric-form/rubric-form.styles.js.map +1 -1
  817. package/dist/components/forms/select/select.class.d.ts +3 -0
  818. package/dist/components/forms/select/select.class.d.ts.map +1 -1
  819. package/dist/components/forms/select/select.class.js +41 -20
  820. package/dist/components/forms/select/select.class.js.map +1 -1
  821. package/dist/components/forms/slider/slider.class.d.ts +8 -6
  822. package/dist/components/forms/slider/slider.class.d.ts.map +1 -1
  823. package/dist/components/forms/slider/slider.class.js +21 -28
  824. package/dist/components/forms/slider/slider.class.js.map +1 -1
  825. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +5 -1
  826. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts.map +1 -1
  827. package/dist/components/forms/swatch-picker/swatch-picker.class.js +41 -12
  828. package/dist/components/forms/swatch-picker/swatch-picker.class.js.map +1 -1
  829. package/dist/components/forms/swatch-picker/swatch-picker.styles.d.ts.map +1 -1
  830. package/dist/components/forms/swatch-picker/swatch-picker.styles.js +9 -4
  831. package/dist/components/forms/swatch-picker/swatch-picker.styles.js.map +1 -1
  832. package/dist/components/forms/textarea/textarea.class.d.ts +5 -0
  833. package/dist/components/forms/textarea/textarea.class.d.ts.map +1 -1
  834. package/dist/components/forms/textarea/textarea.class.js +5 -8
  835. package/dist/components/forms/textarea/textarea.class.js.map +1 -1
  836. package/dist/components/forms/time-range/time-range.class.d.ts +19 -0
  837. package/dist/components/forms/time-range/time-range.class.d.ts.map +1 -1
  838. package/dist/components/forms/time-range/time-range.class.js +80 -23
  839. package/dist/components/forms/time-range/time-range.class.js.map +1 -1
  840. package/dist/components/forms/time-range/time-range.styles.d.ts.map +1 -1
  841. package/dist/components/forms/time-range/time-range.styles.js +60 -12
  842. package/dist/components/forms/time-range/time-range.styles.js.map +1 -1
  843. package/dist/components/forms/token-input/token-input.class.d.ts +14 -0
  844. package/dist/components/forms/token-input/token-input.class.d.ts.map +1 -1
  845. package/dist/components/forms/token-input/token-input.class.js +27 -4
  846. package/dist/components/forms/token-input/token-input.class.js.map +1 -1
  847. package/dist/components/forms/token-input/token-input.styles.d.ts.map +1 -1
  848. package/dist/components/forms/token-input/token-input.styles.js +30 -9
  849. package/dist/components/forms/token-input/token-input.styles.js.map +1 -1
  850. package/dist/components/layout/app-rail/app-rail-item.class.d.ts +3 -3
  851. package/dist/components/layout/app-rail/app-rail-item.class.d.ts.map +1 -1
  852. package/dist/components/layout/app-rail/app-rail-item.class.js +33 -24
  853. package/dist/components/layout/app-rail/app-rail-item.class.js.map +1 -1
  854. package/dist/components/layout/app-rail/app-rail-item.styles.d.ts.map +1 -1
  855. package/dist/components/layout/app-rail/app-rail-item.styles.js +18 -12
  856. package/dist/components/layout/app-rail/app-rail-item.styles.js.map +1 -1
  857. package/dist/components/layout/app-rail/app-rail.class.d.ts +19 -10
  858. package/dist/components/layout/app-rail/app-rail.class.d.ts.map +1 -1
  859. package/dist/components/layout/app-rail/app-rail.class.js +62 -14
  860. package/dist/components/layout/app-rail/app-rail.class.js.map +1 -1
  861. package/dist/components/layout/breadcrumb/breadcrumb-item.class.d.ts +4 -3
  862. package/dist/components/layout/breadcrumb/breadcrumb-item.class.d.ts.map +1 -1
  863. package/dist/components/layout/breadcrumb/breadcrumb-item.class.js +14 -9
  864. package/dist/components/layout/breadcrumb/breadcrumb-item.class.js.map +1 -1
  865. package/dist/components/layout/breadcrumb/breadcrumb-item.styles.d.ts.map +1 -1
  866. package/dist/components/layout/breadcrumb/breadcrumb-item.styles.js +16 -5
  867. package/dist/components/layout/breadcrumb/breadcrumb-item.styles.js.map +1 -1
  868. package/dist/components/layout/breadcrumb/breadcrumb.styles.d.ts.map +1 -1
  869. package/dist/components/layout/breadcrumb/breadcrumb.styles.js +15 -8
  870. package/dist/components/layout/breadcrumb/breadcrumb.styles.js.map +1 -1
  871. package/dist/components/layout/card/card.class.d.ts +16 -8
  872. package/dist/components/layout/card/card.class.d.ts.map +1 -1
  873. package/dist/components/layout/card/card.class.js +84 -41
  874. package/dist/components/layout/card/card.class.js.map +1 -1
  875. package/dist/components/layout/card/card.styles.d.ts.map +1 -1
  876. package/dist/components/layout/card/card.styles.js +33 -20
  877. package/dist/components/layout/card/card.styles.js.map +1 -1
  878. package/dist/components/layout/carousel/carousel.class.d.ts +8 -4
  879. package/dist/components/layout/carousel/carousel.class.d.ts.map +1 -1
  880. package/dist/components/layout/carousel/carousel.class.js +133 -65
  881. package/dist/components/layout/carousel/carousel.class.js.map +1 -1
  882. package/dist/components/layout/carousel/carousel.styles.d.ts.map +1 -1
  883. package/dist/components/layout/carousel/carousel.styles.js +38 -28
  884. package/dist/components/layout/carousel/carousel.styles.js.map +1 -1
  885. package/dist/components/layout/command-palette/command-palette.class.d.ts +31 -6
  886. package/dist/components/layout/command-palette/command-palette.class.d.ts.map +1 -1
  887. package/dist/components/layout/command-palette/command-palette.class.js +369 -66
  888. package/dist/components/layout/command-palette/command-palette.class.js.map +1 -1
  889. package/dist/components/layout/command-palette/command-palette.styles.d.ts.map +1 -1
  890. package/dist/components/layout/command-palette/command-palette.styles.js +164 -18
  891. package/dist/components/layout/command-palette/command-palette.styles.js.map +1 -1
  892. package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts +12 -8
  893. package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts.map +1 -1
  894. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +199 -111
  895. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js.map +1 -1
  896. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.d.ts.map +1 -1
  897. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +25 -18
  898. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js.map +1 -1
  899. package/dist/components/layout/details/accordion.class.d.ts +6 -3
  900. package/dist/components/layout/details/accordion.class.d.ts.map +1 -1
  901. package/dist/components/layout/details/accordion.class.js +47 -14
  902. package/dist/components/layout/details/accordion.class.js.map +1 -1
  903. package/dist/components/layout/dock-panel/dock-panel.class.d.ts +6 -6
  904. package/dist/components/layout/dock-panel/dock-panel.class.d.ts.map +1 -1
  905. package/dist/components/layout/dock-panel/dock-panel.class.js +76 -74
  906. package/dist/components/layout/dock-panel/dock-panel.class.js.map +1 -1
  907. package/dist/components/layout/dock-panel/dock-panel.styles.d.ts.map +1 -1
  908. package/dist/components/layout/dock-panel/dock-panel.styles.js +39 -36
  909. package/dist/components/layout/dock-panel/dock-panel.styles.js.map +1 -1
  910. package/dist/components/layout/drilldown-panel/drilldown-panel.class.d.ts.map +1 -1
  911. package/dist/components/layout/drilldown-panel/drilldown-panel.class.js +1 -14
  912. package/dist/components/layout/drilldown-panel/drilldown-panel.class.js.map +1 -1
  913. package/dist/components/layout/filter-bar/filter-bar.class.d.ts +17 -16
  914. package/dist/components/layout/filter-bar/filter-bar.class.d.ts.map +1 -1
  915. package/dist/components/layout/filter-bar/filter-bar.class.js +126 -60
  916. package/dist/components/layout/filter-bar/filter-bar.class.js.map +1 -1
  917. package/dist/components/layout/menu/menu.class.d.ts +27 -19
  918. package/dist/components/layout/menu/menu.class.d.ts.map +1 -1
  919. package/dist/components/layout/menu/menu.class.js +111 -76
  920. package/dist/components/layout/menu/menu.class.js.map +1 -1
  921. package/dist/components/layout/menu/menu.styles.d.ts.map +1 -1
  922. package/dist/components/layout/menu/menu.styles.js +28 -19
  923. package/dist/components/layout/menu/menu.styles.js.map +1 -1
  924. package/dist/components/layout/reorder-list/reorder-list.class.d.ts +5 -6
  925. package/dist/components/layout/reorder-list/reorder-list.class.d.ts.map +1 -1
  926. package/dist/components/layout/reorder-list/reorder-list.class.js +52 -32
  927. package/dist/components/layout/reorder-list/reorder-list.class.js.map +1 -1
  928. package/dist/components/layout/reorder-list/reorder-list.d.ts +2 -1
  929. package/dist/components/layout/reorder-list/reorder-list.d.ts.map +1 -1
  930. package/dist/components/layout/reorder-list/reorder-list.js +5 -4
  931. package/dist/components/layout/reorder-list/reorder-list.js.map +1 -1
  932. package/dist/components/layout/responsive-panel/responsive-panel.class.d.ts +11 -9
  933. package/dist/components/layout/responsive-panel/responsive-panel.class.d.ts.map +1 -1
  934. package/dist/components/layout/responsive-panel/responsive-panel.class.js +87 -45
  935. package/dist/components/layout/responsive-panel/responsive-panel.class.js.map +1 -1
  936. package/dist/components/layout/scroller/scroller.class.d.ts +6 -5
  937. package/dist/components/layout/scroller/scroller.class.d.ts.map +1 -1
  938. package/dist/components/layout/scroller/scroller.class.js +89 -37
  939. package/dist/components/layout/scroller/scroller.class.js.map +1 -1
  940. package/dist/components/layout/scroller/scroller.styles.d.ts.map +1 -1
  941. package/dist/components/layout/scroller/scroller.styles.js +27 -22
  942. package/dist/components/layout/scroller/scroller.styles.js.map +1 -1
  943. package/dist/components/layout/segmented/segmented.class.d.ts +11 -6
  944. package/dist/components/layout/segmented/segmented.class.d.ts.map +1 -1
  945. package/dist/components/layout/segmented/segmented.class.js +92 -41
  946. package/dist/components/layout/segmented/segmented.class.js.map +1 -1
  947. package/dist/components/layout/segmented/segmented.styles.d.ts.map +1 -1
  948. package/dist/components/layout/segmented/segmented.styles.js +26 -18
  949. package/dist/components/layout/segmented/segmented.styles.js.map +1 -1
  950. package/dist/components/layout/split/split.class.d.ts +22 -15
  951. package/dist/components/layout/split/split.class.d.ts.map +1 -1
  952. package/dist/components/layout/split/split.class.js +283 -163
  953. package/dist/components/layout/split/split.class.js.map +1 -1
  954. package/dist/components/layout/stepper/stepper.class.d.ts +14 -14
  955. package/dist/components/layout/stepper/stepper.class.d.ts.map +1 -1
  956. package/dist/components/layout/stepper/stepper.class.js +106 -74
  957. package/dist/components/layout/stepper/stepper.class.js.map +1 -1
  958. package/dist/components/layout/stepper/stepper.styles.d.ts.map +1 -1
  959. package/dist/components/layout/stepper/stepper.styles.js +24 -18
  960. package/dist/components/layout/stepper/stepper.styles.js.map +1 -1
  961. package/dist/components/layout/tabs/tabs.styles.d.ts.map +1 -1
  962. package/dist/components/layout/tabs/tabs.styles.js +22 -15
  963. package/dist/components/layout/tabs/tabs.styles.js.map +1 -1
  964. package/dist/components/layout/virtual-list/virtual-list.class.d.ts +23 -19
  965. package/dist/components/layout/virtual-list/virtual-list.class.d.ts.map +1 -1
  966. package/dist/components/layout/virtual-list/virtual-list.class.js +171 -100
  967. package/dist/components/layout/virtual-list/virtual-list.class.js.map +1 -1
  968. package/dist/components/layout/widget/widget.class.d.ts +13 -6
  969. package/dist/components/layout/widget/widget.class.d.ts.map +1 -1
  970. package/dist/components/layout/widget/widget.class.js +165 -64
  971. package/dist/components/layout/widget/widget.class.js.map +1 -1
  972. package/dist/components/layout/widget/widget.styles.d.ts.map +1 -1
  973. package/dist/components/layout/widget/widget.styles.js +65 -40
  974. package/dist/components/layout/widget/widget.styles.js.map +1 -1
  975. package/dist/components/media/animated-image/animated-image.class.d.ts +2 -0
  976. package/dist/components/media/animated-image/animated-image.class.d.ts.map +1 -1
  977. package/dist/components/media/animated-image/animated-image.class.js +17 -17
  978. package/dist/components/media/animated-image/animated-image.class.js.map +1 -1
  979. package/dist/components/media/animation/animation.class.d.ts +3 -0
  980. package/dist/components/media/animation/animation.class.d.ts.map +1 -1
  981. package/dist/components/media/animation/animation.class.js +35 -21
  982. package/dist/components/media/animation/animation.class.js.map +1 -1
  983. package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +4 -17
  984. package/dist/components/media/attachment-chip/attachment-chip.class.d.ts.map +1 -1
  985. package/dist/components/media/attachment-chip/attachment-chip.class.js +20 -50
  986. package/dist/components/media/attachment-chip/attachment-chip.class.js.map +1 -1
  987. package/dist/components/media/attachment-chip/attachment-chip.styles.js +2 -2
  988. package/dist/components/media/attachment-chip/file-size.d.ts +11 -0
  989. package/dist/components/media/attachment-chip/file-size.d.ts.map +1 -0
  990. package/dist/components/media/attachment-chip/file-size.js +28 -0
  991. package/dist/components/media/attachment-chip/file-size.js.map +1 -0
  992. package/dist/components/media/attachment-trigger/attachment-trigger.class.d.ts +7 -2
  993. package/dist/components/media/attachment-trigger/attachment-trigger.class.d.ts.map +1 -1
  994. package/dist/components/media/attachment-trigger/attachment-trigger.class.js +36 -19
  995. package/dist/components/media/attachment-trigger/attachment-trigger.class.js.map +1 -1
  996. package/dist/components/media/av-player/av-player.class.d.ts +5 -1
  997. package/dist/components/media/av-player/av-player.class.d.ts.map +1 -1
  998. package/dist/components/media/av-player/av-player.class.js +115 -38
  999. package/dist/components/media/av-player/av-player.class.js.map +1 -1
  1000. package/dist/components/media/av-player/av-player.d.ts +1 -0
  1001. package/dist/components/media/av-player/av-player.d.ts.map +1 -1
  1002. package/dist/components/media/av-player/av-player.js +1 -0
  1003. package/dist/components/media/av-player/av-player.js.map +1 -1
  1004. package/dist/components/media/av-player/av-player.styles.d.ts.map +1 -1
  1005. package/dist/components/media/av-player/av-player.styles.js +2 -0
  1006. package/dist/components/media/av-player/av-player.styles.js.map +1 -1
  1007. package/dist/components/media/avatar-group/avatar-group.class.d.ts +3 -0
  1008. package/dist/components/media/avatar-group/avatar-group.class.d.ts.map +1 -1
  1009. package/dist/components/media/avatar-group/avatar-group.class.js +34 -6
  1010. package/dist/components/media/avatar-group/avatar-group.class.js.map +1 -1
  1011. package/dist/components/media/file-icon/file-icon.class.d.ts.map +1 -1
  1012. package/dist/components/media/file-icon/file-icon.class.js +5 -2
  1013. package/dist/components/media/file-icon/file-icon.class.js.map +1 -1
  1014. package/dist/components/media/file-input/file-input.class.d.ts +8 -9
  1015. package/dist/components/media/file-input/file-input.class.d.ts.map +1 -1
  1016. package/dist/components/media/file-input/file-input.class.js +27 -29
  1017. package/dist/components/media/file-input/file-input.class.js.map +1 -1
  1018. package/dist/components/media/flag/flag.class.d.ts +7 -3
  1019. package/dist/components/media/flag/flag.class.d.ts.map +1 -1
  1020. package/dist/components/media/flag/flag.class.js +29 -5
  1021. package/dist/components/media/flag/flag.class.js.map +1 -1
  1022. package/dist/components/media/flag/flag.styles.d.ts.map +1 -1
  1023. package/dist/components/media/flag/flag.styles.js +6 -0
  1024. package/dist/components/media/flag/flag.styles.js.map +1 -1
  1025. package/dist/components/media/image-comparer/image-comparer.class.d.ts +7 -0
  1026. package/dist/components/media/image-comparer/image-comparer.class.d.ts.map +1 -1
  1027. package/dist/components/media/image-comparer/image-comparer.class.js +17 -1
  1028. package/dist/components/media/image-comparer/image-comparer.class.js.map +1 -1
  1029. package/dist/components/media/image-viewer/image-viewer.class.d.ts +12 -2
  1030. package/dist/components/media/image-viewer/image-viewer.class.d.ts.map +1 -1
  1031. package/dist/components/media/image-viewer/image-viewer.class.js +60 -15
  1032. package/dist/components/media/image-viewer/image-viewer.class.js.map +1 -1
  1033. package/dist/components/media/image-viewer/image-viewer.styles.d.ts.map +1 -1
  1034. package/dist/components/media/image-viewer/image-viewer.styles.js +21 -7
  1035. package/dist/components/media/image-viewer/image-viewer.styles.js.map +1 -1
  1036. package/dist/components/media/lightbox/lightbox.class.d.ts.map +1 -1
  1037. package/dist/components/media/lightbox/lightbox.class.js +45 -3
  1038. package/dist/components/media/lightbox/lightbox.class.js.map +1 -1
  1039. package/dist/components/media/map/map-loader.d.ts +2 -1
  1040. package/dist/components/media/map/map-loader.d.ts.map +1 -1
  1041. package/dist/components/media/map/map-loader.js +2 -1
  1042. package/dist/components/media/map/map-loader.js.map +1 -1
  1043. package/dist/components/media/map/map.class.d.ts +10 -1
  1044. package/dist/components/media/map/map.class.d.ts.map +1 -1
  1045. package/dist/components/media/map/map.class.js +47 -8
  1046. package/dist/components/media/map/map.class.js.map +1 -1
  1047. package/dist/components/media/media-card/media-card.class.d.ts +16 -0
  1048. package/dist/components/media/media-card/media-card.class.d.ts.map +1 -1
  1049. package/dist/components/media/media-card/media-card.class.js +24 -0
  1050. package/dist/components/media/media-card/media-card.class.js.map +1 -1
  1051. package/dist/components/media/playback/playback.class.d.ts +4 -6
  1052. package/dist/components/media/playback/playback.class.d.ts.map +1 -1
  1053. package/dist/components/media/playback/playback.class.js +7 -22
  1054. package/dist/components/media/playback/playback.class.js.map +1 -1
  1055. package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts.map +1 -1
  1056. package/dist/components/media/zoomable-frame/zoomable-frame.class.js +15 -1
  1057. package/dist/components/media/zoomable-frame/zoomable-frame.class.js.map +1 -1
  1058. package/dist/components/media/zoomable-frame/zoomable-frame.styles.d.ts.map +1 -1
  1059. package/dist/components/media/zoomable-frame/zoomable-frame.styles.js +3 -0
  1060. package/dist/components/media/zoomable-frame/zoomable-frame.styles.js.map +1 -1
  1061. package/dist/components/overlays/callout/callout.class.d.ts +8 -5
  1062. package/dist/components/overlays/callout/callout.class.d.ts.map +1 -1
  1063. package/dist/components/overlays/callout/callout.class.js +26 -21
  1064. package/dist/components/overlays/callout/callout.class.js.map +1 -1
  1065. package/dist/components/overlays/chip/chip-group.class.d.ts +3 -0
  1066. package/dist/components/overlays/chip/chip-group.class.d.ts.map +1 -1
  1067. package/dist/components/overlays/chip/chip-group.class.js +22 -1
  1068. package/dist/components/overlays/chip/chip-group.class.js.map +1 -1
  1069. package/dist/components/overlays/chip/chip.class.d.ts +26 -15
  1070. package/dist/components/overlays/chip/chip.class.d.ts.map +1 -1
  1071. package/dist/components/overlays/chip/chip.class.js +58 -32
  1072. package/dist/components/overlays/chip/chip.class.js.map +1 -1
  1073. package/dist/components/overlays/chip/chip.styles.d.ts.map +1 -1
  1074. package/dist/components/overlays/chip/chip.styles.js +28 -19
  1075. package/dist/components/overlays/chip/chip.styles.js.map +1 -1
  1076. package/dist/components/overlays/dialog/dialog.class.d.ts +1 -0
  1077. package/dist/components/overlays/dialog/dialog.class.d.ts.map +1 -1
  1078. package/dist/components/overlays/dialog/dialog.class.js +6 -5
  1079. package/dist/components/overlays/dialog/dialog.class.js.map +1 -1
  1080. package/dist/components/overlays/empty/empty.class.d.ts +8 -2
  1081. package/dist/components/overlays/empty/empty.class.d.ts.map +1 -1
  1082. package/dist/components/overlays/empty/empty.class.js +22 -2
  1083. package/dist/components/overlays/empty/empty.class.js.map +1 -1
  1084. package/dist/components/overlays/kbd/kbd.class.js +1 -1
  1085. package/dist/components/overlays/kbd/kbd.class.js.map +1 -1
  1086. package/dist/components/overlays/overlay/overlay.styles.d.ts.map +1 -1
  1087. package/dist/components/overlays/overlay/overlay.styles.js +1 -2
  1088. package/dist/components/overlays/overlay/overlay.styles.js.map +1 -1
  1089. package/dist/components/overlays/overlay/popover.class.d.ts +36 -23
  1090. package/dist/components/overlays/overlay/popover.class.d.ts.map +1 -1
  1091. package/dist/components/overlays/overlay/popover.class.js +173 -65
  1092. package/dist/components/overlays/overlay/popover.class.js.map +1 -1
  1093. package/dist/components/overlays/overlay/tooltip.class.d.ts +29 -1
  1094. package/dist/components/overlays/overlay/tooltip.class.d.ts.map +1 -1
  1095. package/dist/components/overlays/overlay/tooltip.class.js +209 -17
  1096. package/dist/components/overlays/overlay/tooltip.class.js.map +1 -1
  1097. package/dist/components/overlays/progress/progress-bar.class.d.ts +3 -0
  1098. package/dist/components/overlays/progress/progress-bar.class.d.ts.map +1 -1
  1099. package/dist/components/overlays/progress/progress-bar.class.js +13 -4
  1100. package/dist/components/overlays/progress/progress-bar.class.js.map +1 -1
  1101. package/dist/components/overlays/progress/progress-ring.class.d.ts +2 -0
  1102. package/dist/components/overlays/progress/progress-ring.class.d.ts.map +1 -1
  1103. package/dist/components/overlays/progress/progress-ring.class.js +13 -4
  1104. package/dist/components/overlays/progress/progress-ring.class.js.map +1 -1
  1105. package/dist/components/overlays/progress/progress.styles.js +3 -3
  1106. package/dist/components/overlays/rating/rating.class.d.ts +7 -0
  1107. package/dist/components/overlays/rating/rating.class.d.ts.map +1 -1
  1108. package/dist/components/overlays/rating/rating.class.js +17 -0
  1109. package/dist/components/overlays/rating/rating.class.js.map +1 -1
  1110. package/dist/components/overlays/skeleton/skeleton.class.d.ts.map +1 -1
  1111. package/dist/components/overlays/skeleton/skeleton.class.js +1 -14
  1112. package/dist/components/overlays/skeleton/skeleton.class.js.map +1 -1
  1113. package/dist/components/overlays/spinner/spinner.class.d.ts +2 -1
  1114. package/dist/components/overlays/spinner/spinner.class.d.ts.map +1 -1
  1115. package/dist/components/overlays/spinner/spinner.class.js +2 -1
  1116. package/dist/components/overlays/spinner/spinner.class.js.map +1 -1
  1117. package/dist/components/overlays/spinner/spinner.styles.js +1 -1
  1118. package/dist/components/overlays/toast/toast-item.class.d.ts +2 -0
  1119. package/dist/components/overlays/toast/toast-item.class.d.ts.map +1 -1
  1120. package/dist/components/overlays/toast/toast-item.class.js +19 -1
  1121. package/dist/components/overlays/toast/toast-item.class.js.map +1 -1
  1122. package/dist/components/overlays/toast/toast-item.styles.d.ts.map +1 -1
  1123. package/dist/components/overlays/toast/toast-item.styles.js +9 -1
  1124. package/dist/components/overlays/toast/toast-item.styles.js.map +1 -1
  1125. package/dist/components/retrieval/chunk-inspector/chunk-inspector.class.d.ts.map +1 -1
  1126. package/dist/components/retrieval/chunk-inspector/chunk-inspector.class.js +6 -2
  1127. package/dist/components/retrieval/chunk-inspector/chunk-inspector.class.js.map +1 -1
  1128. package/dist/components/retrieval/chunk-inspector/chunk-inspector.styles.d.ts.map +1 -1
  1129. package/dist/components/retrieval/chunk-inspector/chunk-inspector.styles.js +6 -0
  1130. package/dist/components/retrieval/chunk-inspector/chunk-inspector.styles.js.map +1 -1
  1131. package/dist/components/retrieval/citation-badge/citation-badge.class.js +1 -1
  1132. package/dist/components/retrieval/citation-badge/citation-badge.class.js.map +1 -1
  1133. package/dist/components/retrieval/citation-badge/citation-badge.styles.d.ts.map +1 -1
  1134. package/dist/components/retrieval/citation-badge/citation-badge.styles.js +2 -0
  1135. package/dist/components/retrieval/citation-badge/citation-badge.styles.js.map +1 -1
  1136. package/dist/components/retrieval/claim-evidence/claim-evidence.class.d.ts +50 -0
  1137. package/dist/components/retrieval/claim-evidence/claim-evidence.class.d.ts.map +1 -0
  1138. package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +133 -0
  1139. package/dist/components/retrieval/claim-evidence/claim-evidence.class.js.map +1 -0
  1140. package/dist/components/retrieval/claim-evidence/claim-evidence.d.ts +5 -0
  1141. package/dist/components/retrieval/claim-evidence/claim-evidence.d.ts.map +1 -0
  1142. package/dist/components/retrieval/claim-evidence/claim-evidence.js +8 -0
  1143. package/dist/components/retrieval/claim-evidence/claim-evidence.js.map +1 -0
  1144. package/dist/components/retrieval/claim-evidence/claim-evidence.styles.d.ts +2 -0
  1145. package/dist/components/retrieval/claim-evidence/claim-evidence.styles.d.ts.map +1 -0
  1146. package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js +84 -0
  1147. package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js.map +1 -0
  1148. package/dist/components/retrieval/community-card/community-card.class.d.ts.map +1 -1
  1149. package/dist/components/retrieval/community-card/community-card.class.js +9 -3
  1150. package/dist/components/retrieval/community-card/community-card.class.js.map +1 -1
  1151. package/dist/components/retrieval/community-card/community-card.styles.d.ts.map +1 -1
  1152. package/dist/components/retrieval/community-card/community-card.styles.js +6 -0
  1153. package/dist/components/retrieval/community-card/community-card.styles.js.map +1 -1
  1154. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.d.ts +5 -2
  1155. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.d.ts.map +1 -1
  1156. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +52 -24
  1157. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js.map +1 -1
  1158. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.d.ts.map +1 -1
  1159. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +7 -2
  1160. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js.map +1 -1
  1161. package/dist/components/retrieval/entity-card/entity-card.class.d.ts.map +1 -1
  1162. package/dist/components/retrieval/entity-card/entity-card.class.js +11 -16
  1163. package/dist/components/retrieval/entity-card/entity-card.class.js.map +1 -1
  1164. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts.map +1 -1
  1165. package/dist/components/retrieval/entity-chip/entity-chip.class.js +3 -1
  1166. package/dist/components/retrieval/entity-chip/entity-chip.class.js.map +1 -1
  1167. package/dist/components/retrieval/entity-chip/entity-chip.styles.d.ts.map +1 -1
  1168. package/dist/components/retrieval/entity-chip/entity-chip.styles.js +4 -1
  1169. package/dist/components/retrieval/entity-chip/entity-chip.styles.js.map +1 -1
  1170. package/dist/components/retrieval/entity-dossier/entity-dossier.class.d.ts.map +1 -1
  1171. package/dist/components/retrieval/entity-dossier/entity-dossier.class.js +1 -14
  1172. package/dist/components/retrieval/entity-dossier/entity-dossier.class.js.map +1 -1
  1173. package/dist/components/retrieval/graph/graph-canvas.d.ts.map +1 -1
  1174. package/dist/components/retrieval/graph/graph-canvas.js +4 -1
  1175. package/dist/components/retrieval/graph/graph-canvas.js.map +1 -1
  1176. package/dist/components/retrieval/graph/graph.class.d.ts +6 -0
  1177. package/dist/components/retrieval/graph/graph.class.d.ts.map +1 -1
  1178. package/dist/components/retrieval/graph/graph.class.js +103 -32
  1179. package/dist/components/retrieval/graph/graph.class.js.map +1 -1
  1180. package/dist/components/retrieval/graph/graph.styles.d.ts.map +1 -1
  1181. package/dist/components/retrieval/graph/graph.styles.js +6 -1
  1182. package/dist/components/retrieval/graph/graph.styles.js.map +1 -1
  1183. package/dist/components/retrieval/graph-legend/graph-legend.class.d.ts.map +1 -1
  1184. package/dist/components/retrieval/graph-legend/graph-legend.class.js +1 -14
  1185. package/dist/components/retrieval/graph-legend/graph-legend.class.js.map +1 -1
  1186. package/dist/components/retrieval/graph-legend/graph-legend.styles.d.ts.map +1 -1
  1187. package/dist/components/retrieval/graph-legend/graph-legend.styles.js +3 -0
  1188. package/dist/components/retrieval/graph-legend/graph-legend.styles.js.map +1 -1
  1189. package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts +8 -1
  1190. package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts.map +1 -1
  1191. package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +19 -2
  1192. package/dist/components/retrieval/grounding-summary/grounding-summary.class.js.map +1 -1
  1193. package/dist/components/retrieval/grounding-summary/grounding-summary.d.ts +1 -0
  1194. package/dist/components/retrieval/grounding-summary/grounding-summary.d.ts.map +1 -1
  1195. package/dist/components/retrieval/grounding-summary/grounding-summary.js +1 -0
  1196. package/dist/components/retrieval/grounding-summary/grounding-summary.js.map +1 -1
  1197. package/dist/components/retrieval/index.d.ts +31 -0
  1198. package/dist/components/retrieval/index.d.ts.map +1 -0
  1199. package/dist/components/retrieval/index.js +31 -0
  1200. package/dist/components/retrieval/index.js.map +1 -0
  1201. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +8 -5
  1202. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts.map +1 -1
  1203. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +53 -16
  1204. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js.map +1 -1
  1205. package/dist/components/retrieval/ingestion-queue/ingestion-queue.d.ts +4 -0
  1206. package/dist/components/retrieval/ingestion-queue/ingestion-queue.d.ts.map +1 -1
  1207. package/dist/components/retrieval/ingestion-queue/ingestion-queue.js +4 -0
  1208. package/dist/components/retrieval/ingestion-queue/ingestion-queue.js.map +1 -1
  1209. package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.d.ts.map +1 -1
  1210. package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.js +5 -0
  1211. package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.js.map +1 -1
  1212. package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +0 -5
  1213. package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts.map +1 -1
  1214. package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +12 -12
  1215. package/dist/components/retrieval/knowledge-base/knowledge-base.class.js.map +1 -1
  1216. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.d.ts +4 -2
  1217. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.d.ts.map +1 -1
  1218. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.js +78 -8
  1219. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.js.map +1 -1
  1220. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.d.ts +2 -0
  1221. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.d.ts.map +1 -1
  1222. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.js +2 -0
  1223. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.js.map +1 -1
  1224. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.d.ts.map +1 -1
  1225. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +3 -0
  1226. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js.map +1 -1
  1227. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +12 -0
  1228. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts.map +1 -1
  1229. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +103 -21
  1230. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js.map +1 -1
  1231. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.d.ts.map +1 -1
  1232. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +5 -0
  1233. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js.map +1 -1
  1234. package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts +6 -2
  1235. package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts.map +1 -1
  1236. package/dist/components/retrieval/memory-panel/memory-panel.class.js +71 -17
  1237. package/dist/components/retrieval/memory-panel/memory-panel.class.js.map +1 -1
  1238. package/dist/components/retrieval/memory-panel/memory-panel.styles.d.ts.map +1 -1
  1239. package/dist/components/retrieval/memory-panel/memory-panel.styles.js +6 -0
  1240. package/dist/components/retrieval/memory-panel/memory-panel.styles.js.map +1 -1
  1241. package/dist/components/retrieval/mind-map/mind-map.class.d.ts +10 -0
  1242. package/dist/components/retrieval/mind-map/mind-map.class.d.ts.map +1 -1
  1243. package/dist/components/retrieval/mind-map/mind-map.class.js +96 -3
  1244. package/dist/components/retrieval/mind-map/mind-map.class.js.map +1 -1
  1245. package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts.map +1 -1
  1246. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +23 -7
  1247. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js.map +1 -1
  1248. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.d.ts.map +1 -1
  1249. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +3 -1
  1250. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js.map +1 -1
  1251. package/dist/components/retrieval/node-palette/node-palette.class.d.ts +8 -0
  1252. package/dist/components/retrieval/node-palette/node-palette.class.d.ts.map +1 -1
  1253. package/dist/components/retrieval/node-palette/node-palette.class.js +107 -15
  1254. package/dist/components/retrieval/node-palette/node-palette.class.js.map +1 -1
  1255. package/dist/components/retrieval/node-palette/node-palette.styles.d.ts.map +1 -1
  1256. package/dist/components/retrieval/node-palette/node-palette.styles.js +9 -1
  1257. package/dist/components/retrieval/node-palette/node-palette.styles.js.map +1 -1
  1258. package/dist/components/retrieval/path-strip/path-strip.class.d.ts +4 -1
  1259. package/dist/components/retrieval/path-strip/path-strip.class.d.ts.map +1 -1
  1260. package/dist/components/retrieval/path-strip/path-strip.class.js +28 -1
  1261. package/dist/components/retrieval/path-strip/path-strip.class.js.map +1 -1
  1262. package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts.map +1 -1
  1263. package/dist/components/retrieval/provenance-panel/provenance-panel.class.js +2 -1
  1264. package/dist/components/retrieval/provenance-panel/provenance-panel.class.js.map +1 -1
  1265. package/dist/components/retrieval/provenance-panel/provenance-panel.styles.d.ts.map +1 -1
  1266. package/dist/components/retrieval/provenance-panel/provenance-panel.styles.js +3 -0
  1267. package/dist/components/retrieval/provenance-panel/provenance-panel.styles.js.map +1 -1
  1268. package/dist/components/retrieval/rag-answer/rag-answer.class.d.ts +6 -8
  1269. package/dist/components/retrieval/rag-answer/rag-answer.class.d.ts.map +1 -1
  1270. package/dist/components/retrieval/rag-answer/rag-answer.class.js +9 -14
  1271. package/dist/components/retrieval/rag-answer/rag-answer.class.js.map +1 -1
  1272. package/dist/components/retrieval/rag-answer/rag-answer.d.ts +7 -0
  1273. package/dist/components/retrieval/rag-answer/rag-answer.d.ts.map +1 -1
  1274. package/dist/components/retrieval/rag-answer/rag-answer.js +7 -0
  1275. package/dist/components/retrieval/rag-answer/rag-answer.js.map +1 -1
  1276. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +78 -0
  1277. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts.map +1 -0
  1278. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +186 -0
  1279. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js.map +1 -0
  1280. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.d.ts +5 -0
  1281. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.d.ts.map +1 -0
  1282. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.js +8 -0
  1283. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.js.map +1 -0
  1284. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.d.ts +2 -0
  1285. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.d.ts.map +1 -0
  1286. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.js +95 -0
  1287. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.js.map +1 -0
  1288. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.d.ts +58 -0
  1289. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.d.ts.map +1 -0
  1290. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.js +157 -0
  1291. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.js.map +1 -0
  1292. package/dist/components/retrieval/retrieval-compare/retrieval-compare.d.ts +3 -0
  1293. package/dist/components/retrieval/retrieval-compare/retrieval-compare.d.ts.map +1 -0
  1294. package/dist/components/retrieval/retrieval-compare/retrieval-compare.js +6 -0
  1295. package/dist/components/retrieval/retrieval-compare/retrieval-compare.js.map +1 -0
  1296. package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.d.ts +2 -0
  1297. package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.d.ts.map +1 -0
  1298. package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.js +103 -0
  1299. package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.js.map +1 -0
  1300. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +3 -6
  1301. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts.map +1 -1
  1302. package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +33 -45
  1303. package/dist/components/retrieval/retrieval-results/retrieval-results.class.js.map +1 -1
  1304. package/dist/components/retrieval/retrieval-results/retrieval-results.styles.d.ts.map +1 -1
  1305. package/dist/components/retrieval/retrieval-results/retrieval-results.styles.js +3 -4
  1306. package/dist/components/retrieval/retrieval-results/retrieval-results.styles.js.map +1 -1
  1307. package/dist/components/retrieval/retrieval-search/retrieval-search.class.d.ts.map +1 -1
  1308. package/dist/components/retrieval/retrieval-search/retrieval-search.class.js +20 -6
  1309. package/dist/components/retrieval/retrieval-search/retrieval-search.class.js.map +1 -1
  1310. package/dist/components/retrieval/retrieval-search/retrieval-search.styles.d.ts.map +1 -1
  1311. package/dist/components/retrieval/retrieval-search/retrieval-search.styles.js +1 -0
  1312. package/dist/components/retrieval/retrieval-search/retrieval-search.styles.js.map +1 -1
  1313. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.d.ts +4 -2
  1314. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.d.ts.map +1 -1
  1315. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +31 -23
  1316. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js.map +1 -1
  1317. package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.d.ts.map +1 -1
  1318. package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js +3 -0
  1319. package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js.map +1 -1
  1320. package/dist/components/retrieval/source-card/source-card.styles.d.ts.map +1 -1
  1321. package/dist/components/retrieval/source-card/source-card.styles.js +13 -0
  1322. package/dist/components/retrieval/source-card/source-card.styles.js.map +1 -1
  1323. package/dist/components/retrieval/source-list/source-list.class.d.ts +3 -0
  1324. package/dist/components/retrieval/source-list/source-list.class.d.ts.map +1 -1
  1325. package/dist/components/retrieval/source-list/source-list.class.js +30 -3
  1326. package/dist/components/retrieval/source-list/source-list.class.js.map +1 -1
  1327. package/dist/components/retrieval/source-list/source-list.styles.d.ts.map +1 -1
  1328. package/dist/components/retrieval/source-list/source-list.styles.js +6 -0
  1329. package/dist/components/retrieval/source-list/source-list.styles.js.map +1 -1
  1330. package/dist/components/retrieval/source-picker/source-picker.class.d.ts +5 -1
  1331. package/dist/components/retrieval/source-picker/source-picker.class.d.ts.map +1 -1
  1332. package/dist/components/retrieval/source-picker/source-picker.class.js +68 -21
  1333. package/dist/components/retrieval/source-picker/source-picker.class.js.map +1 -1
  1334. package/dist/components/retrieval/source-picker/source-picker.styles.d.ts.map +1 -1
  1335. package/dist/components/retrieval/source-picker/source-picker.styles.js +25 -1
  1336. package/dist/components/retrieval/source-picker/source-picker.styles.js.map +1 -1
  1337. package/dist/components/utility/copy-button/copy-button.class.d.ts +2 -0
  1338. package/dist/components/utility/copy-button/copy-button.class.d.ts.map +1 -1
  1339. package/dist/components/utility/copy-button/copy-button.class.js +6 -0
  1340. package/dist/components/utility/copy-button/copy-button.class.js.map +1 -1
  1341. package/dist/components/utility/diff-view/diff-line-diff.d.ts +3 -4
  1342. package/dist/components/utility/diff-view/diff-line-diff.d.ts.map +1 -1
  1343. package/dist/components/utility/diff-view/diff-line-diff.js +85 -35
  1344. package/dist/components/utility/diff-view/diff-line-diff.js.map +1 -1
  1345. package/dist/components/utility/diff-view/diff-view.class.d.ts +11 -0
  1346. package/dist/components/utility/diff-view/diff-view.class.d.ts.map +1 -1
  1347. package/dist/components/utility/diff-view/diff-view.class.js +64 -13
  1348. package/dist/components/utility/diff-view/diff-view.class.js.map +1 -1
  1349. package/dist/components/utility/diff-view/diff-view.styles.d.ts.map +1 -1
  1350. package/dist/components/utility/diff-view/diff-view.styles.js +19 -6
  1351. package/dist/components/utility/diff-view/diff-view.styles.js.map +1 -1
  1352. package/dist/components/utility/export-button/export-button.class.d.ts +9 -0
  1353. package/dist/components/utility/export-button/export-button.class.d.ts.map +1 -1
  1354. package/dist/components/utility/export-button/export-button.class.js +45 -8
  1355. package/dist/components/utility/export-button/export-button.class.js.map +1 -1
  1356. package/dist/components/utility/export-button/export-button.styles.d.ts.map +1 -1
  1357. package/dist/components/utility/export-button/export-button.styles.js +4 -0
  1358. package/dist/components/utility/export-button/export-button.styles.js.map +1 -1
  1359. package/dist/components/utility/format/format-date.class.d.ts.map +1 -1
  1360. package/dist/components/utility/format/format-date.class.js +11 -4
  1361. package/dist/components/utility/format/format-date.class.js.map +1 -1
  1362. package/dist/components/utility/format/format-number.class.d.ts.map +1 -1
  1363. package/dist/components/utility/format/format-number.class.js +18 -4
  1364. package/dist/components/utility/format/format-number.class.js.map +1 -1
  1365. package/dist/components/utility/format/relative-time.class.d.ts.map +1 -1
  1366. package/dist/components/utility/format/relative-time.class.js +11 -2
  1367. package/dist/components/utility/format/relative-time.class.js.map +1 -1
  1368. package/dist/components/utility/icon/icon.class.d.ts.map +1 -1
  1369. package/dist/components/utility/icon/icon.class.js +4 -2
  1370. package/dist/components/utility/icon/icon.class.js.map +1 -1
  1371. package/dist/components/utility/intersection-observer/intersection-observer.class.d.ts.map +1 -1
  1372. package/dist/components/utility/intersection-observer/intersection-observer.class.js +23 -9
  1373. package/dist/components/utility/intersection-observer/intersection-observer.class.js.map +1 -1
  1374. package/dist/components/utility/intersection-observer/intersection-observer.styles.d.ts +1 -1
  1375. package/dist/components/utility/intersection-observer/intersection-observer.styles.d.ts.map +1 -1
  1376. package/dist/components/utility/intersection-observer/intersection-observer.styles.js +1 -7
  1377. package/dist/components/utility/intersection-observer/intersection-observer.styles.js.map +1 -1
  1378. package/dist/components/utility/json-viewer/json-viewer.class.d.ts +15 -2
  1379. package/dist/components/utility/json-viewer/json-viewer.class.d.ts.map +1 -1
  1380. package/dist/components/utility/json-viewer/json-viewer.class.js +182 -44
  1381. package/dist/components/utility/json-viewer/json-viewer.class.js.map +1 -1
  1382. package/dist/components/utility/json-viewer/json-viewer.styles.d.ts.map +1 -1
  1383. package/dist/components/utility/json-viewer/json-viewer.styles.js +14 -4
  1384. package/dist/components/utility/json-viewer/json-viewer.styles.js.map +1 -1
  1385. package/dist/components/utility/known-date/known-date.class.d.ts +6 -3
  1386. package/dist/components/utility/known-date/known-date.class.d.ts.map +1 -1
  1387. package/dist/components/utility/known-date/known-date.class.js +35 -5
  1388. package/dist/components/utility/known-date/known-date.class.js.map +1 -1
  1389. package/dist/components/utility/known-date/known-date.styles.d.ts.map +1 -1
  1390. package/dist/components/utility/known-date/known-date.styles.js +5 -0
  1391. package/dist/components/utility/known-date/known-date.styles.js.map +1 -1
  1392. package/dist/components/utility/mention-popover/mention-popover.class.d.ts +51 -27
  1393. package/dist/components/utility/mention-popover/mention-popover.class.d.ts.map +1 -1
  1394. package/dist/components/utility/mention-popover/mention-popover.class.js +130 -35
  1395. package/dist/components/utility/mention-popover/mention-popover.class.js.map +1 -1
  1396. package/dist/components/utility/mention-popover/mention-popover.styles.d.ts.map +1 -1
  1397. package/dist/components/utility/mention-popover/mention-popover.styles.js +5 -1
  1398. package/dist/components/utility/mention-popover/mention-popover.styles.js.map +1 -1
  1399. package/dist/components/utility/mutation-observer/mutation-observer.class.d.ts.map +1 -1
  1400. package/dist/components/utility/mutation-observer/mutation-observer.class.js +8 -22
  1401. package/dist/components/utility/mutation-observer/mutation-observer.class.js.map +1 -1
  1402. package/dist/components/utility/mutation-observer/mutation-observer.styles.d.ts +1 -1
  1403. package/dist/components/utility/mutation-observer/mutation-observer.styles.d.ts.map +1 -1
  1404. package/dist/components/utility/mutation-observer/mutation-observer.styles.js +1 -7
  1405. package/dist/components/utility/mutation-observer/mutation-observer.styles.js.map +1 -1
  1406. package/dist/components/utility/poll-status/poll-status.class.d.ts +6 -4
  1407. package/dist/components/utility/poll-status/poll-status.class.d.ts.map +1 -1
  1408. package/dist/components/utility/poll-status/poll-status.class.js +23 -21
  1409. package/dist/components/utility/poll-status/poll-status.class.js.map +1 -1
  1410. package/dist/components/utility/poll-status/poll-status.styles.d.ts.map +1 -1
  1411. package/dist/components/utility/poll-status/poll-status.styles.js +9 -1
  1412. package/dist/components/utility/poll-status/poll-status.styles.js.map +1 -1
  1413. package/dist/components/utility/random-content/random-content.class.d.ts +30 -9
  1414. package/dist/components/utility/random-content/random-content.class.d.ts.map +1 -1
  1415. package/dist/components/utility/random-content/random-content.class.js +196 -24
  1416. package/dist/components/utility/random-content/random-content.class.js.map +1 -1
  1417. package/dist/components/utility/random-content/random-content.styles.d.ts.map +1 -1
  1418. package/dist/components/utility/random-content/random-content.styles.js +22 -0
  1419. package/dist/components/utility/random-content/random-content.styles.js.map +1 -1
  1420. package/dist/components/utility/resize-observer/resize-observer.class.d.ts.map +1 -1
  1421. package/dist/components/utility/resize-observer/resize-observer.class.js +3 -4
  1422. package/dist/components/utility/resize-observer/resize-observer.class.js.map +1 -1
  1423. package/dist/components/utility/resize-observer/resize-observer.styles.d.ts +1 -1
  1424. package/dist/components/utility/resize-observer/resize-observer.styles.d.ts.map +1 -1
  1425. package/dist/components/utility/resize-observer/resize-observer.styles.js +1 -10
  1426. package/dist/components/utility/resize-observer/resize-observer.styles.js.map +1 -1
  1427. package/dist/components/utility/tour/tour.class.d.ts +14 -19
  1428. package/dist/components/utility/tour/tour.class.d.ts.map +1 -1
  1429. package/dist/components/utility/tour/tour.class.js +116 -51
  1430. package/dist/components/utility/tour/tour.class.js.map +1 -1
  1431. package/dist/components/utility/tour/tour.styles.d.ts.map +1 -1
  1432. package/dist/components/utility/tour/tour.styles.js +7 -0
  1433. package/dist/components/utility/tour/tour.styles.js.map +1 -1
  1434. package/dist/components/viewers/archive-viewer/archive-viewer.class.d.ts +5 -3
  1435. package/dist/components/viewers/archive-viewer/archive-viewer.class.d.ts.map +1 -1
  1436. package/dist/components/viewers/archive-viewer/archive-viewer.class.js +91 -14
  1437. package/dist/components/viewers/archive-viewer/archive-viewer.class.js.map +1 -1
  1438. package/dist/components/viewers/archive-viewer/zip-resource-guard.d.ts +36 -0
  1439. package/dist/components/viewers/archive-viewer/zip-resource-guard.d.ts.map +1 -0
  1440. package/dist/components/viewers/archive-viewer/zip-resource-guard.js +261 -0
  1441. package/dist/components/viewers/archive-viewer/zip-resource-guard.js.map +1 -0
  1442. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts +4 -1
  1443. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts.map +1 -1
  1444. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js +44 -11
  1445. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js.map +1 -1
  1446. package/dist/components/viewers/calendar-viewer/calendar-viewer.js +13 -2
  1447. package/dist/components/viewers/calendar-viewer/calendar-viewer.js.map +1 -1
  1448. package/dist/components/viewers/contact-viewer/contact-viewer.class.d.ts +7 -1
  1449. package/dist/components/viewers/contact-viewer/contact-viewer.class.d.ts.map +1 -1
  1450. package/dist/components/viewers/contact-viewer/contact-viewer.class.js +67 -9
  1451. package/dist/components/viewers/contact-viewer/contact-viewer.class.js.map +1 -1
  1452. package/dist/components/viewers/contact-viewer/contact-viewer.js +7 -0
  1453. package/dist/components/viewers/contact-viewer/contact-viewer.js.map +1 -1
  1454. package/dist/components/viewers/contact-viewer/contact-viewer.styles.d.ts.map +1 -1
  1455. package/dist/components/viewers/contact-viewer/contact-viewer.styles.js +2 -0
  1456. package/dist/components/viewers/contact-viewer/contact-viewer.styles.js.map +1 -1
  1457. package/dist/components/viewers/contact-viewer/vcard.d.ts +1 -1
  1458. package/dist/components/viewers/contact-viewer/vcard.d.ts.map +1 -1
  1459. package/dist/components/viewers/contact-viewer/vcard.js +9 -2
  1460. package/dist/components/viewers/contact-viewer/vcard.js.map +1 -1
  1461. package/dist/components/viewers/csv-viewer/csv-viewer.class.d.ts +17 -10
  1462. package/dist/components/viewers/csv-viewer/csv-viewer.class.d.ts.map +1 -1
  1463. package/dist/components/viewers/csv-viewer/csv-viewer.class.js +102 -54
  1464. package/dist/components/viewers/csv-viewer/csv-viewer.class.js.map +1 -1
  1465. package/dist/components/viewers/csv-viewer/csv-viewer.d.ts +1 -0
  1466. package/dist/components/viewers/csv-viewer/csv-viewer.d.ts.map +1 -1
  1467. package/dist/components/viewers/csv-viewer/csv-viewer.js +1 -0
  1468. package/dist/components/viewers/csv-viewer/csv-viewer.js.map +1 -1
  1469. package/dist/components/viewers/csv-viewer/csv-viewer.styles.js +6 -6
  1470. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +17 -15
  1471. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts.map +1 -1
  1472. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +127 -53
  1473. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js.map +1 -1
  1474. package/dist/components/viewers/dataset-viewer/dataset-viewer.d.ts +1 -0
  1475. package/dist/components/viewers/dataset-viewer/dataset-viewer.d.ts.map +1 -1
  1476. package/dist/components/viewers/dataset-viewer/dataset-viewer.js +1 -0
  1477. package/dist/components/viewers/dataset-viewer/dataset-viewer.js.map +1 -1
  1478. package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +4 -4
  1479. package/dist/components/viewers/document-compare/document-compare.class.d.ts +5 -2
  1480. package/dist/components/viewers/document-compare/document-compare.class.d.ts.map +1 -1
  1481. package/dist/components/viewers/document-compare/document-compare.class.js +4 -16
  1482. package/dist/components/viewers/document-compare/document-compare.class.js.map +1 -1
  1483. package/dist/components/viewers/document-compare/document-compare.d.ts +2 -0
  1484. package/dist/components/viewers/document-compare/document-compare.d.ts.map +1 -1
  1485. package/dist/components/viewers/document-compare/document-compare.js +2 -0
  1486. package/dist/components/viewers/document-compare/document-compare.js.map +1 -1
  1487. package/dist/components/viewers/document-compare/document-compare.styles.d.ts.map +1 -1
  1488. package/dist/components/viewers/document-compare/document-compare.styles.js +4 -0
  1489. package/dist/components/viewers/document-compare/document-compare.styles.js.map +1 -1
  1490. package/dist/components/viewers/document-preview/document-preview.class.d.ts +20 -2
  1491. package/dist/components/viewers/document-preview/document-preview.class.d.ts.map +1 -1
  1492. package/dist/components/viewers/document-preview/document-preview.class.js +128 -37
  1493. package/dist/components/viewers/document-preview/document-preview.class.js.map +1 -1
  1494. package/dist/components/viewers/document-preview/document-preview.d.ts +1 -0
  1495. package/dist/components/viewers/document-preview/document-preview.d.ts.map +1 -1
  1496. package/dist/components/viewers/document-preview/document-preview.js +1 -0
  1497. package/dist/components/viewers/document-preview/document-preview.js.map +1 -1
  1498. package/dist/components/viewers/document-preview/document-preview.styles.d.ts.map +1 -1
  1499. package/dist/components/viewers/document-preview/document-preview.styles.js +70 -12
  1500. package/dist/components/viewers/document-preview/document-preview.styles.js.map +1 -1
  1501. package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +11 -10
  1502. package/dist/components/viewers/document-viewer/document-viewer.class.d.ts.map +1 -1
  1503. package/dist/components/viewers/document-viewer/document-viewer.class.js +38 -12
  1504. package/dist/components/viewers/document-viewer/document-viewer.class.js.map +1 -1
  1505. package/dist/components/viewers/document-viewer/document-viewer.d.ts +1 -0
  1506. package/dist/components/viewers/document-viewer/document-viewer.d.ts.map +1 -1
  1507. package/dist/components/viewers/document-viewer/document-viewer.js +1 -0
  1508. package/dist/components/viewers/document-viewer/document-viewer.js.map +1 -1
  1509. package/dist/components/viewers/docx-viewer/docx-resource-guard.d.ts +10 -0
  1510. package/dist/components/viewers/docx-viewer/docx-resource-guard.d.ts.map +1 -0
  1511. package/dist/components/viewers/docx-viewer/docx-resource-guard.js +18 -0
  1512. package/dist/components/viewers/docx-viewer/docx-resource-guard.js.map +1 -0
  1513. package/dist/components/viewers/docx-viewer/docx-viewer.class.d.ts +13 -0
  1514. package/dist/components/viewers/docx-viewer/docx-viewer.class.d.ts.map +1 -1
  1515. package/dist/components/viewers/docx-viewer/docx-viewer.class.js +62 -7
  1516. package/dist/components/viewers/docx-viewer/docx-viewer.class.js.map +1 -1
  1517. package/dist/components/viewers/docx-viewer/docx-viewer.styles.js +15 -15
  1518. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.d.ts +1 -0
  1519. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.d.ts.map +1 -1
  1520. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +93 -34
  1521. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js.map +1 -1
  1522. package/dist/components/viewers/ebook-viewer/epub-resource-guard.d.ts +10 -0
  1523. package/dist/components/viewers/ebook-viewer/epub-resource-guard.d.ts.map +1 -0
  1524. package/dist/components/viewers/ebook-viewer/epub-resource-guard.js +18 -0
  1525. package/dist/components/viewers/ebook-viewer/epub-resource-guard.js.map +1 -0
  1526. package/dist/components/viewers/email-viewer/email-viewer.class.d.ts +10 -0
  1527. package/dist/components/viewers/email-viewer/email-viewer.class.d.ts.map +1 -1
  1528. package/dist/components/viewers/email-viewer/email-viewer.class.js +116 -47
  1529. package/dist/components/viewers/email-viewer/email-viewer.class.js.map +1 -1
  1530. package/dist/components/viewers/email-viewer/email-viewer.js +13 -3
  1531. package/dist/components/viewers/email-viewer/email-viewer.js.map +1 -1
  1532. package/dist/components/viewers/geojson-view/geojson-view.class.d.ts +6 -8
  1533. package/dist/components/viewers/geojson-view/geojson-view.class.d.ts.map +1 -1
  1534. package/dist/components/viewers/geojson-view/geojson-view.class.js +239 -67
  1535. package/dist/components/viewers/geojson-view/geojson-view.class.js.map +1 -1
  1536. package/dist/components/viewers/geojson-view/geojson-view.js +7 -0
  1537. package/dist/components/viewers/geojson-view/geojson-view.js.map +1 -1
  1538. package/dist/components/viewers/highlight-layer/highlight-layer-timing.d.ts +2 -0
  1539. package/dist/components/viewers/highlight-layer/highlight-layer-timing.d.ts.map +1 -0
  1540. package/dist/components/viewers/highlight-layer/highlight-layer-timing.js +31 -0
  1541. package/dist/components/viewers/highlight-layer/highlight-layer-timing.js.map +1 -0
  1542. package/dist/components/viewers/highlight-layer/highlight-layer.class.d.ts +28 -5
  1543. package/dist/components/viewers/highlight-layer/highlight-layer.class.d.ts.map +1 -1
  1544. package/dist/components/viewers/highlight-layer/highlight-layer.class.js +206 -62
  1545. package/dist/components/viewers/highlight-layer/highlight-layer.class.js.map +1 -1
  1546. package/dist/components/viewers/highlight-layer/highlight-layer.styles.d.ts.map +1 -1
  1547. package/dist/components/viewers/highlight-layer/highlight-layer.styles.js +84 -21
  1548. package/dist/components/viewers/highlight-layer/highlight-layer.styles.js.map +1 -1
  1549. package/dist/components/viewers/html-viewer/html-viewer.class.d.ts +2 -0
  1550. package/dist/components/viewers/html-viewer/html-viewer.class.d.ts.map +1 -1
  1551. package/dist/components/viewers/html-viewer/html-viewer.class.js +23 -3
  1552. package/dist/components/viewers/html-viewer/html-viewer.class.js.map +1 -1
  1553. package/dist/components/viewers/include/include.class.d.ts +2 -0
  1554. package/dist/components/viewers/include/include.class.d.ts.map +1 -1
  1555. package/dist/components/viewers/include/include.class.js +19 -1
  1556. package/dist/components/viewers/include/include.class.js.map +1 -1
  1557. package/dist/components/viewers/notebook-viewer/dompurify-loader.js.map +1 -1
  1558. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.d.ts +15 -13
  1559. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.d.ts.map +1 -1
  1560. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +255 -41
  1561. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js.map +1 -1
  1562. package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.d.ts.map +1 -1
  1563. package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +17 -0
  1564. package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js.map +1 -1
  1565. package/dist/components/viewers/page-rail/page-rail.class.d.ts +8 -3
  1566. package/dist/components/viewers/page-rail/page-rail.class.d.ts.map +1 -1
  1567. package/dist/components/viewers/page-rail/page-rail.class.js +96 -26
  1568. package/dist/components/viewers/page-rail/page-rail.class.js.map +1 -1
  1569. package/dist/components/viewers/page-rail/page-rail.d.ts +3 -0
  1570. package/dist/components/viewers/page-rail/page-rail.d.ts.map +1 -1
  1571. package/dist/components/viewers/page-rail/page-rail.js +3 -0
  1572. package/dist/components/viewers/page-rail/page-rail.js.map +1 -1
  1573. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +3 -3
  1574. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts.map +1 -1
  1575. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +198 -46
  1576. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js.map +1 -1
  1577. package/dist/components/viewers/pdf-viewer/pdf-viewer.d.ts +3 -0
  1578. package/dist/components/viewers/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  1579. package/dist/components/viewers/pdf-viewer/pdf-viewer.js +3 -0
  1580. package/dist/components/viewers/pdf-viewer/pdf-viewer.js.map +1 -1
  1581. package/dist/components/viewers/pdf-viewer/pdf-viewer.styles.d.ts.map +1 -1
  1582. package/dist/components/viewers/pdf-viewer/pdf-viewer.styles.js +11 -1
  1583. package/dist/components/viewers/pdf-viewer/pdf-viewer.styles.js.map +1 -1
  1584. package/dist/components/viewers/pptx-viewer/pptx-loader.d.ts.map +1 -1
  1585. package/dist/components/viewers/pptx-viewer/pptx-loader.js +13 -1
  1586. package/dist/components/viewers/pptx-viewer/pptx-loader.js.map +1 -1
  1587. package/dist/components/viewers/pptx-viewer/pptx-viewer.class.d.ts +0 -1
  1588. package/dist/components/viewers/pptx-viewer/pptx-viewer.class.d.ts.map +1 -1
  1589. package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js +14 -7
  1590. package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js.map +1 -1
  1591. package/dist/components/viewers/pptx-viewer/pptx-viewer.d.ts +1 -0
  1592. package/dist/components/viewers/pptx-viewer/pptx-viewer.d.ts.map +1 -1
  1593. package/dist/components/viewers/pptx-viewer/pptx-viewer.js +1 -0
  1594. package/dist/components/viewers/pptx-viewer/pptx-viewer.js.map +1 -1
  1595. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.d.ts +12 -7
  1596. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.d.ts.map +1 -1
  1597. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +144 -44
  1598. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js.map +1 -1
  1599. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.d.ts +2 -0
  1600. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.d.ts.map +1 -1
  1601. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.js +2 -0
  1602. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.js.map +1 -1
  1603. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.styles.d.ts.map +1 -1
  1604. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.styles.js +7 -11
  1605. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.styles.js.map +1 -1
  1606. package/dist/components/viewers/spreadsheet-viewer/xlsx-resource-guard.d.ts +17 -0
  1607. package/dist/components/viewers/spreadsheet-viewer/xlsx-resource-guard.d.ts.map +1 -0
  1608. package/dist/components/viewers/spreadsheet-viewer/xlsx-resource-guard.js +26 -0
  1609. package/dist/components/viewers/spreadsheet-viewer/xlsx-resource-guard.js.map +1 -0
  1610. package/dist/components/viewers/svg-viewer/svg-viewer.class.d.ts +14 -1
  1611. package/dist/components/viewers/svg-viewer/svg-viewer.class.d.ts.map +1 -1
  1612. package/dist/components/viewers/svg-viewer/svg-viewer.class.js +101 -34
  1613. package/dist/components/viewers/svg-viewer/svg-viewer.class.js.map +1 -1
  1614. package/dist/components/viewers/svg-viewer/svg-viewer.d.ts +1 -0
  1615. package/dist/components/viewers/svg-viewer/svg-viewer.d.ts.map +1 -1
  1616. package/dist/components/viewers/svg-viewer/svg-viewer.js +1 -0
  1617. package/dist/components/viewers/svg-viewer/svg-viewer.js.map +1 -1
  1618. package/dist/components/viewers/svg-viewer/svg-viewer.styles.d.ts.map +1 -1
  1619. package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +66 -6
  1620. package/dist/components/viewers/svg-viewer/svg-viewer.styles.js.map +1 -1
  1621. package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts +4 -0
  1622. package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts.map +1 -1
  1623. package/dist/components/viewers/xml-viewer/xml-viewer.class.js +0 -0
  1624. package/dist/components/viewers/xml-viewer/xml-viewer.class.js.map +1 -1
  1625. package/dist/internal/anchor-target.d.ts.map +1 -1
  1626. package/dist/internal/anchor-target.js +7 -3
  1627. package/dist/internal/anchor-target.js.map +1 -1
  1628. package/dist/internal/anchored-popover-controller.d.ts +10 -0
  1629. package/dist/internal/anchored-popover-controller.d.ts.map +1 -0
  1630. package/dist/internal/anchored-popover-controller.js +17 -0
  1631. package/dist/internal/anchored-popover-controller.js.map +1 -0
  1632. package/dist/internal/aria-controls.d.ts +21 -0
  1633. package/dist/internal/aria-controls.d.ts.map +1 -0
  1634. package/dist/internal/aria-controls.js +57 -0
  1635. package/dist/internal/aria-controls.js.map +1 -0
  1636. package/dist/internal/catalog-picker.d.ts +12 -0
  1637. package/dist/internal/catalog-picker.d.ts.map +1 -0
  1638. package/dist/internal/catalog-picker.js +17 -0
  1639. package/dist/internal/catalog-picker.js.map +1 -0
  1640. package/dist/internal/converters.d.ts +22 -0
  1641. package/dist/internal/converters.d.ts.map +1 -0
  1642. package/dist/internal/converters.js +38 -0
  1643. package/dist/internal/converters.js.map +1 -0
  1644. package/dist/internal/delimited-data.d.ts +17 -0
  1645. package/dist/internal/delimited-data.d.ts.map +1 -0
  1646. package/dist/internal/delimited-data.js +24 -0
  1647. package/dist/internal/delimited-data.js.map +1 -0
  1648. package/dist/internal/intl-cache.d.ts +8 -2
  1649. package/dist/internal/intl-cache.d.ts.map +1 -1
  1650. package/dist/internal/intl-cache.js +0 -0
  1651. package/dist/internal/intl-cache.js.map +1 -1
  1652. package/dist/internal/latest-task.d.ts +11 -0
  1653. package/dist/internal/latest-task.d.ts.map +1 -0
  1654. package/dist/internal/latest-task.js +17 -0
  1655. package/dist/internal/latest-task.js.map +1 -0
  1656. package/dist/internal/localization.d.ts +8 -1
  1657. package/dist/internal/localization.d.ts.map +1 -1
  1658. package/dist/internal/localization.js +141 -2
  1659. package/dist/internal/localization.js.map +1 -1
  1660. package/dist/internal/lyra-element.d.ts +9 -0
  1661. package/dist/internal/lyra-element.d.ts.map +1 -1
  1662. package/dist/internal/lyra-element.js +41 -0
  1663. package/dist/internal/lyra-element.js.map +1 -1
  1664. package/dist/internal/observer-wrapper.styles.d.ts +3 -0
  1665. package/dist/internal/observer-wrapper.styles.d.ts.map +1 -0
  1666. package/dist/internal/observer-wrapper.styles.js +9 -0
  1667. package/dist/internal/observer-wrapper.styles.js.map +1 -0
  1668. package/dist/internal/overlay-manager.d.ts +2 -0
  1669. package/dist/internal/overlay-manager.d.ts.map +1 -1
  1670. package/dist/internal/overlay-manager.js +4 -0
  1671. package/dist/internal/overlay-manager.js.map +1 -1
  1672. package/dist/internal/root-registration-allowlist.d.ts +1 -1
  1673. package/dist/internal/root-registration-allowlist.d.ts.map +1 -1
  1674. package/dist/internal/root-registration-allowlist.js +12 -0
  1675. package/dist/internal/root-registration-allowlist.js.map +1 -1
  1676. package/dist/internal/slotted-observer.d.ts +8 -0
  1677. package/dist/internal/slotted-observer.d.ts.map +1 -0
  1678. package/dist/internal/slotted-observer.js +11 -0
  1679. package/dist/internal/slotted-observer.js.map +1 -0
  1680. package/dist/internal/text-quote.d.ts +2 -2
  1681. package/dist/internal/text-quote.d.ts.map +1 -1
  1682. package/dist/internal/text-quote.js +175 -27
  1683. package/dist/internal/text-quote.js.map +1 -1
  1684. package/dist/internal/text-viewer-target.d.ts.map +1 -1
  1685. package/dist/internal/text-viewer-target.js +95 -8
  1686. package/dist/internal/text-viewer-target.js.map +1 -1
  1687. package/dist/localization.d.ts +9 -0
  1688. package/dist/localization.d.ts.map +1 -0
  1689. package/dist/localization.js +8 -0
  1690. package/dist/localization.js.map +1 -0
  1691. package/dist/lyra.d.ts +45 -5
  1692. package/dist/lyra.d.ts.map +1 -1
  1693. package/dist/lyra.js +41 -1
  1694. package/dist/lyra.js.map +1 -1
  1695. package/dist/theme/gemstones-data.d.ts +16 -0
  1696. package/dist/theme/gemstones-data.d.ts.map +1 -0
  1697. package/dist/theme/gemstones-data.js +28 -0
  1698. package/dist/theme/gemstones-data.js.map +1 -0
  1699. package/dist/theme/gemstones.d.ts +2 -15
  1700. package/dist/theme/gemstones.d.ts.map +1 -1
  1701. package/dist/theme/gemstones.js +1 -27
  1702. package/dist/theme/gemstones.js.map +1 -1
  1703. package/dist/theme/theme.d.ts +16 -4
  1704. package/dist/theme/theme.d.ts.map +1 -1
  1705. package/dist/theme/theme.js +16 -5
  1706. package/dist/theme/theme.js.map +1 -1
  1707. package/llms/components/lr-agent-eval-dashboard.md +10 -3
  1708. package/llms/components/lr-agent-run.md +7 -1
  1709. package/llms/components/lr-animated-image.md +4 -0
  1710. package/llms/components/lr-app-rail-item.md +15 -7
  1711. package/llms/components/lr-app-rail.md +15 -7
  1712. package/llms/components/lr-approval-queue.md +5 -1
  1713. package/llms/components/lr-attachment-trigger.md +4 -0
  1714. package/llms/components/lr-av-player.md +2 -2
  1715. package/llms/components/lr-box-plot.md +2 -2
  1716. package/llms/components/lr-branch-picker.md +4 -0
  1717. package/llms/components/lr-breadcrumb-item.md +5 -1
  1718. package/llms/components/lr-breadcrumb.md +4 -0
  1719. package/llms/components/lr-browser-frame.md +10 -1
  1720. package/llms/components/lr-button.md +14 -3
  1721. package/llms/components/lr-card.md +6 -1
  1722. package/llms/components/lr-chart.md +27 -13
  1723. package/llms/components/lr-chat-message.md +17 -2
  1724. package/llms/components/lr-checkbox-group.md +11 -6
  1725. package/llms/components/lr-checkbox.md +7 -4
  1726. package/llms/components/lr-chip-group.md +19 -17
  1727. package/llms/components/lr-chip.md +20 -18
  1728. package/llms/components/lr-claim-evidence.md +37 -0
  1729. package/llms/components/lr-code-block-core.md +1 -3
  1730. package/llms/components/lr-code-block.md +6 -6
  1731. package/llms/components/lr-code-editor.md +6 -1
  1732. package/llms/components/lr-color-picker.md +8 -1
  1733. package/llms/components/lr-combobox.md +9 -3
  1734. package/llms/components/lr-command-palette.md +8 -1
  1735. package/llms/components/lr-compare-panel.md +2 -1
  1736. package/llms/components/lr-context-meter.md +15 -7
  1737. package/llms/components/lr-copy-button.md +4 -0
  1738. package/llms/components/lr-csv-viewer.md +6 -4
  1739. package/llms/components/lr-dashboard-grid.md +5 -1
  1740. package/llms/components/lr-date-input.md +16 -4
  1741. package/llms/components/lr-date-picker.md +16 -4
  1742. package/llms/components/lr-diff-view.md +22 -9
  1743. package/llms/components/lr-dock-panel.md +4 -2
  1744. package/llms/components/lr-document-compare.md +35 -4
  1745. package/llms/components/lr-document-preview.md +12 -4
  1746. package/llms/components/lr-document-viewer.md +5 -4
  1747. package/llms/components/lr-docx-viewer.md +12 -1
  1748. package/llms/components/lr-dropdown-item.md +15 -2
  1749. package/llms/components/lr-dropdown.md +2 -0
  1750. package/llms/components/lr-ebook-viewer.md +4 -0
  1751. package/llms/components/lr-email-viewer.md +2 -2
  1752. package/llms/components/lr-embedding-explorer.md +4 -1
  1753. package/llms/components/lr-emoji-picker.md +12 -3
  1754. package/llms/components/lr-export-button.md +4 -2
  1755. package/llms/components/lr-file-input.md +6 -6
  1756. package/llms/components/lr-filter-bar.md +19 -4
  1757. package/llms/components/lr-flag.md +5 -1
  1758. package/llms/components/lr-flow-canvas.md +15 -6
  1759. package/llms/components/lr-flow-minimap.md +8 -3
  1760. package/llms/components/lr-geojson-view.md +4 -1
  1761. package/llms/components/lr-graph-query-builder.md +10 -1
  1762. package/llms/components/lr-graph.md +3 -3
  1763. package/llms/components/lr-grounding-summary.md +10 -6
  1764. package/llms/components/lr-highlight-layer.md +17 -3
  1765. package/llms/components/lr-icon-button.md +19 -6
  1766. package/llms/components/lr-image-comparer.md +2 -0
  1767. package/llms/components/lr-image-viewer.md +13 -7
  1768. package/llms/components/lr-include.md +5 -4
  1769. package/llms/components/lr-ingestion-queue.md +5 -3
  1770. package/llms/components/lr-input.md +7 -2
  1771. package/llms/components/lr-json-viewer.md +17 -7
  1772. package/llms/components/lr-kbd.md +7 -5
  1773. package/llms/components/lr-known-date.md +4 -0
  1774. package/llms/components/lr-locale-picker.md +10 -1
  1775. package/llms/components/lr-map.md +14 -3
  1776. package/llms/components/lr-markdown-core.md +11 -1
  1777. package/llms/components/lr-markdown.md +11 -1
  1778. package/llms/components/lr-mcp-app.md +51 -0
  1779. package/llms/components/lr-media-card.md +3 -0
  1780. package/llms/components/lr-mention-popover.md +41 -22
  1781. package/llms/components/lr-menu-item.md +15 -2
  1782. package/llms/components/lr-menu.md +15 -2
  1783. package/llms/components/lr-message-parts.md +59 -0
  1784. package/llms/components/lr-notebook-viewer.md +16 -11
  1785. package/llms/components/lr-option.md +8 -2
  1786. package/llms/components/lr-pagination.md +6 -1
  1787. package/llms/components/lr-pdf-viewer.md +1 -1
  1788. package/llms/components/lr-phone-input.md +15 -4
  1789. package/llms/components/lr-playback.md +2 -2
  1790. package/llms/components/lr-popover.md +11 -2
  1791. package/llms/components/lr-progress-bar.md +7 -1
  1792. package/llms/components/lr-progress-ring.md +1 -1
  1793. package/llms/components/lr-prompt-input.md +56 -0
  1794. package/llms/components/lr-prompt-queue.md +35 -0
  1795. package/llms/components/lr-prompt-studio.md +53 -0
  1796. package/llms/components/lr-push-to-talk.md +5 -0
  1797. package/llms/components/lr-query-builder.md +8 -2
  1798. package/llms/components/lr-rag-answer.md +3 -2
  1799. package/llms/components/lr-rag-eval-dashboard.md +46 -0
  1800. package/llms/components/lr-random-content.md +7 -4
  1801. package/llms/components/lr-rating.md +6 -0
  1802. package/llms/components/lr-realtime-session.md +41 -0
  1803. package/llms/components/lr-retrieval-compare.md +37 -0
  1804. package/llms/components/lr-retrieval-trace.md +3 -2
  1805. package/llms/components/lr-rubric-form.md +4 -1
  1806. package/llms/components/lr-schema-viewer.md +48 -0
  1807. package/llms/components/lr-segmented.md +7 -1
  1808. package/llms/components/lr-select.md +12 -14
  1809. package/llms/components/lr-selection-toolbar.md +44 -0
  1810. package/llms/components/lr-slider.md +9 -2
  1811. package/llms/components/lr-source-card.md +4 -5
  1812. package/llms/components/lr-source-list.md +4 -5
  1813. package/llms/components/lr-source-picker.md +4 -4
  1814. package/llms/components/lr-split.md +4 -2
  1815. package/llms/components/lr-spreadsheet-viewer.md +6 -4
  1816. package/llms/components/lr-stat.md +2 -1
  1817. package/llms/components/lr-stepper.md +13 -13
  1818. package/llms/components/lr-stream-status.md +4 -4
  1819. package/llms/components/lr-streaming-text.md +1 -1
  1820. package/llms/components/lr-subagent-panel.md +43 -0
  1821. package/llms/components/lr-svg-viewer.md +9 -2
  1822. package/llms/components/lr-swatch-picker.md +12 -5
  1823. package/llms/components/lr-switch.md +1 -1
  1824. package/llms/components/lr-table.md +61 -9
  1825. package/llms/components/lr-terminal.md +6 -1
  1826. package/llms/components/lr-textarea.md +8 -2
  1827. package/llms/components/lr-time-range.md +30 -10
  1828. package/llms/components/lr-toast-item.md +4 -6
  1829. package/llms/components/lr-toast.md +4 -6
  1830. package/llms/components/lr-token-input.md +17 -3
  1831. package/llms/components/lr-tool-result-dialog.md +12 -1
  1832. package/llms/components/lr-tool-timeline.md +12 -1
  1833. package/llms/components/lr-tooltip.md +8 -0
  1834. package/llms/components/lr-trace-tree.md +12 -1
  1835. package/llms/components/lr-tree-node.md +18 -6
  1836. package/llms/components/lr-tree.md +18 -6
  1837. package/llms/components/lr-virtual-list.md +1 -1
  1838. package/llms/components/lr-voice-picker.md +13 -1
  1839. package/llms/components/lr-widget-renderer.md +2 -1
  1840. package/llms/components/lr-widget.md +13 -7
  1841. package/llms/components/lr-xml-viewer.md +6 -4
  1842. package/llms/index.md +17 -5
  1843. package/llms/peers.md +15 -8
  1844. package/llms/shared.md +87 -26
  1845. package/llms-full.txt +1502 -348
  1846. package/llms.txt +6 -5
  1847. package/package.json +49 -14
  1848. package/vscode-css-data.json +1448 -97
  1849. package/vscode-html-data.json +890 -193
  1850. package/web-types.json +1727 -221
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,12 +71,27 @@ 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.
79
93
  - **Other subpaths.** `@aceshooting/lyra-ui/theme.css` (ready-made light/dark theme),
94
+ `@aceshooting/lyra-ui/localization.js` (side-effect-free locale runtime),
80
95
  `@aceshooting/lyra-ui/ai` (provider-neutral data types), `@aceshooting/lyra-ui/testing`
81
96
  (happy-dom shims), `@aceshooting/lyra-ui/internal/*` (shared internals, all documented below).
82
97
 
@@ -310,8 +325,12 @@ setLyraTheme({ mode: 'auto', accent: null }); // clears the override and the
310
325
 
311
326
  **No-flash bootstrap.** `lyraThemeBootstrap` is a self-contained IIFE **string** (not a function),
312
327
  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:
328
+ is on the root element before first paint. It reads `localStorage['lyra-theme']`.
329
+ `createLyraThemeBootstrap({ storageKey })` returns the same kind of string for an application-owned
330
+ key, so an existing persistence layer can reuse the pre-paint half independently of
331
+ `setLyraTheme()`/`getLyraTheme()`. Calling the factory with no options returns the same string as
332
+ `lyraThemeBootstrap`. The result is a string precisely so this can happen in an unbundled
333
+ `<script>` context without shipping or parsing the module:
315
334
 
316
335
  ```html
317
336
  <head>
@@ -320,9 +339,9 @@ unbundled `<script>` context without shipping or parsing the module:
320
339
  </head>
321
340
  ```
322
341
 
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.
342
+ Both variants expect a stored `{ mode, accent }` record, apply the same two attributes and
343
+ `--lr-theme-accent`, and swallow any error — malformed storage or a blocked `localStorage` leaves
344
+ the document untouched rather than throwing before your app loads.
326
345
 
327
346
  **This runtime does no color math.** It stores and applies whatever accent string you give it; it
328
347
  does not validate the value, compute a palette from it, or check contrast against any surface.
@@ -343,7 +362,10 @@ in the per-component sections:
343
362
  overrides, merged over the registered catalog.
344
363
 
345
364
  ```ts
346
- import { registerLyraLocale, setLyraLocale } from '@aceshooting/lyra-ui';
365
+ import {
366
+ registerLyraLocale,
367
+ setLyraLocale,
368
+ } from '@aceshooting/lyra-ui/localization.js';
347
369
 
348
370
  registerLyraLocale('fr', { close: 'Fermer', retry: 'Réessayer' }); // app-wide, partial catalogs fine
349
371
  setLyraLocale('fr'); // …or just set <html lang="fr"> and let components inherit it
@@ -353,13 +375,16 @@ setLyraLocale('fr'); // …or just set <html lang="fr"> and let components inher
353
375
  <lr-toast .strings=${{ close: 'Fermer' }}></lr-toast>
354
376
  ```
355
377
 
356
- Exported from the package root: `registerLyraLocale`, `setLyraLocale`, `getLyraLocale`,
357
- `getRegisteredLyraLocales`, `subscribeLyraLocaleRegistry`, `resolveLyraLocale`,
358
- `resolveLyraDirection`, `resolveLyraString`, `LYRA_DEFAULT_STRINGS`, and the types
359
- `LyraLocaleStrings` / `LyraMessageKey`. **`LYRA_DEFAULT_STRINGS` is the authoritative key list**
360
- (1005 keys, matching the `LyraMessageKey` union) read it to find the key to override rather than
361
- guessing one. Lookup falls back exact locale base language English. Date, number, byte,
362
- relative-time and calendar output goes through `Intl`.
378
+ The side-effect-free `@aceshooting/lyra-ui/localization.js` entry exports
379
+ `registerLyraLocale`, `setLyraLocale`, `getLyraLocale`, `getRegisteredLyraLocales`,
380
+ `subscribeLyraLocaleRegistry`, `resolveLyraLocale`, `resolveLyraDirection`, `resolveLyraString`,
381
+ `LYRA_DEFAULT_STRINGS`, and the types `LyraLocaleStrings` / `LyraMessageKey`. The package root
382
+ continues to re-export the same surface for compatibility, but it also registers the non-peer-gated
383
+ component graph; use the dedicated entry when the application only needs locale setup.
384
+ **`LYRA_DEFAULT_STRINGS` is the authoritative key list** (1005 keys, matching the
385
+ `LyraMessageKey` union) — read it to find the key to override rather than guessing one. Lookup
386
+ falls back exact locale → base language → English. Date, number, byte, relative-time and calendar
387
+ output goes through `Intl`.
363
388
 
364
389
  `getRegisteredLyraLocales(): string[]` lists every locale with strings registered via
365
390
  `registerLyraLocale()`, plus `'en'` (always available through the built-in English fallback),
@@ -389,13 +414,29 @@ instead of hand-rolling state shapes — they bind field-for-field onto the comp
389
414
  adapter layer:
390
415
 
391
416
  ```ts
392
- import type { AgentRun, ChatMessage, ToolInvocation, RetrievalChunk } from '@aceshooting/lyra-ui/ai';
417
+ import {
418
+ createAgentStreamState,
419
+ reduceAgentStream,
420
+ adaptAiSdkStream,
421
+ adaptAgUiEvents,
422
+ adaptA2UiSurface,
423
+ type AgentRun,
424
+ type ChatMessage,
425
+ type MessagePart,
426
+ type RetrievalChunk,
427
+ } from '@aceshooting/lyra-ui/ai';
393
428
  ```
394
429
 
395
430
  - **Run/step state** — `AgentStatusKind`, `AgentStatus`, `AgentStep`, `AgentRun`
396
- - **Conversation** — `ChatMessage`, `ToolInvocation`
431
+ - **Conversation** — `ChatMessage`, ordered `MessagePart` variants, `ToolInvocation`
397
432
  - **Documents & grounding** — `DocumentRef`, `Citation`, `RetrievalQuery`, `RetrievalChunk`,
398
- `GroundingAssessment`
433
+ `RetrievalScoreBreakdown`, `GroundedClaim`, `GroundingAssessment`, `DocumentLocator`
434
+ - **Streaming runtime** — `AgentStreamEvent`, `AgentStreamState`, `createAgentStreamState()`,
435
+ `reduceAgentStream()`, `reduceAgentStreamEvents()`; event ids make replay/duplicate delivery
436
+ deterministic, and JSON Patch application rejects prototype-mutating paths
437
+ - **Protocol adapters** — `adaptAiSdkStream()`, `adaptAgUiEvents()`, and `adaptA2UiSurface()` map
438
+ structural provider events/documents onto the neutral runtime without pulling vendor SDKs into
439
+ the package
399
440
  - **Event payloads** — `RunLifecycleEventDetail`, `RetrievalProgressEventDetail`,
400
441
  `CitationSelectEventDetail`, `ToolApprovalEventDetail`, `CancelEventDetail`, `RetryEventDetail`,
401
442
  `ExportEventDetail`
@@ -406,15 +447,35 @@ feeds on `lr-chat-message`, `lr-tool-call-chip`, `lr-tool-result-view`, `lr-sour
406
447
  convention. The types are structural and provider-agnostic: map any vendor's payload onto them once,
407
448
  at the edge.
408
449
 
450
+ ### Task-first AI composition guide
451
+
452
+ - **Render one model response:** `lr-message-parts`; use `lr-chat-message` only when the message
453
+ shell (avatar, author, actions) is also needed.
454
+ - **Build the main prompt affordance:** `lr-prompt-input`; it already composes attachments,
455
+ model/voice/source controls, mentions/commands, and `lr-prompt-queue`.
456
+ - **Run an agent workspace:** `lr-agent-workspace` + `reduceAgentStream()`; add
457
+ `lr-subagent-panel` for nested runs and `lr-mcp-app` only for executable MCP App resources.
458
+ - **Show grounded output:** `lr-rag-answer`; pass claim records for `lr-claim-evidence`, use
459
+ `lr-retrieval-compare` for retrieval tuning and `lr-rag-eval-dashboard` for run metrics.
460
+ - **Develop prompts/tools:** `lr-prompt-studio` and `lr-schema-viewer`.
461
+ - **Build voice sessions:** `lr-realtime-session`; it composes the existing audio visualizer,
462
+ push-to-talk control, and transcript feed while leaving transport ownership with the host.
463
+
464
+ Family registration entry points are additive: importing
465
+ `@aceshooting/lyra-ui/components/conversation`, `/agent-tools`, or `/retrieval` registers and
466
+ exports that complete family. Granular component entry points remain the smallest bundles and are
467
+ preferred in production.
468
+
409
469
  ## Optional peer dependencies
410
470
 
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.
471
+ All 26 peers are optional and their implementations are loaded on demand; nothing is imported
472
+ eagerly. `llms/peers.md` is the generated component → peer table. Loading and failure UI is
473
+ component-specific: viewer sections document their localized loading/error/notice states, while
474
+ `lr-include` preserves its light-DOM fallback/live region and emits `lr-include-error` when its
475
+ sanitizer is unavailable. Some components additionally issue a deduped warning. Consult the owning
476
+ component section instead of assuming every peer user renders an `<lr-skeleton>` or the same
477
+ degraded state. `lr-phone-input` is the exception to dynamic peer import: it takes a consumer-built
478
+ adapter (`loadLibphonenumberAdapter()`) rather than importing `libphonenumber-js` itself.
418
479
 
419
480
  ## Framework integration
420
481
 
@@ -639,8 +700,10 @@ shared `FormAssociated` mixin — see gotchas).
639
700
  clear/pick. Forward `options.signal` to `fetch(url, { signal })` to cancel the request when a
640
701
  newer query supersedes it or the element disconnects. `loadingText` is shown while a call is in
641
702
  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.)
703
+ via a monotonic token. The exported type requires the `options` parameter; an existing
704
+ one-parameter `(query) => …` function remains assignable under TypeScript's ordinary function
705
+ parameter compatibility, but consumers that need cancellation should accept and forward
706
+ `options.signal`.)
644
707
  - `sourceDelay: number = 200` (attribute `source-delay` — debounce in ms between the last keystroke
645
708
  and the `source` call; `0` fires on every keystroke. Sanitized to a finite non-negative duration,
646
709
  falling back to `200` for a non-finite value)
@@ -857,6 +920,10 @@ synchronous and fires no `input`/`change`/`lr-change` event.
857
920
  `form.reset()` default itself is captured exclusively from that very first pass; a later pick, or
858
921
  a later batch of newly-`selected` options, never redefines what a reset restores to.
859
922
 
923
+ **Additional API surface:**
924
+
925
+ - `part="tag-label"` — The wrapping/ellipsis-safe selected-tag label.
926
+
860
927
  ---
861
928
 
862
929
  ## `lr-select`
@@ -901,31 +968,29 @@ exactly like the multi-option case, until the trigger is actually activated.
901
968
  single-option auto-commit behavior described above
902
969
  - `value: string` — a getter/setter; always a single string (no `multiple` mode)
903
970
 
971
+ **Methods:** `focus(options?)`, `blur()`, and `click()` forward to the internal trigger button.
972
+
904
973
  **Events:** `change` (native-style — selection changed), `input` (fired alongside `change` on every
905
974
  selection change — a native `<select>` doesn't meaningfully distinguish the two either), and
906
975
  `lr-change` (a prefixed compatibility alias fired after both, mirroring `<lr-checkbox>`'s
907
976
  `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`.
977
+ real change, never on a programmatic `value` write. Plus `lr-show`, `lr-hide`, and bubbling,
978
+ composed `focus`/`blur` events re-dispatched from the internal trigger.
909
979
 
910
980
  **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.
981
+ attribute when provided), `start` (non-interactive adornment before the selected-value label), and
982
+ `end` (non-interactive adornment after the label and before the expand icon). The adornments live
983
+ inside the native trigger `<button>`, so never place links, buttons, inputs, or other interactive
984
+ content in either slot.
921
985
 
922
986
  When hint/error content is present, the trigger's `aria-describedby` references stable shadow-local
923
987
  IDs for both messages (error first, then hint), so the visible supporting text is part of the
924
988
  control's accessible description.
925
989
 
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),
990
+ **CSS parts:** `form-control`, `form-control-label`, `trigger`, `start`, `end`, `listbox`,
991
+ `group-label` (a heading row emitted inside the listbox whenever an option's `group` differs from
992
+ the previous one's — a presentational `<div>`, not a `role="group"`; options with an empty `group`
993
+ get no heading),
929
994
  `option`, `option-dot` (the leading status dot, when a row's `dotColor` is set), `option-label`,
930
995
  `option-sub` (a row's secondary line, when `sub` is set), `expand-icon`, `error`, `hint`
931
996
 
@@ -1090,9 +1155,11 @@ Text field + calendar popover, **form-associated** via the shared `FormAssociate
1090
1155
  `<input>`'s computed accessible name; wins over `label`/`placeholder`/the localized `date`
1091
1156
  fallback in that order. Attribute-reflects from a host-level `aria-label` so a plain-markup
1092
1157
  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)
1158
+ - `clearLabel: string = ''` (attribute `clear-label` — accessible label for the clear button;
1159
+ empty uses the localized `clear` message, whose English fallback is `"Clear"`)
1160
+ - `openLabel: string = ''` (attribute `open-label` — accessible label for the calendar-toggle
1161
+ button; empty uses the localized `openCalendar` message, whose English fallback is
1162
+ `"Open calendar"`)
1096
1163
  - `dialogLabel: string = 'Choose date'` (attribute `dialog-label` — accessible name for the
1097
1164
  `role="dialog"` calendar popover)
1098
1165
  - `spellcheck: boolean = true` — forwarded to the internal `<input>`
@@ -1219,6 +1286,16 @@ and `dateTimeFormat(locale, options)`.
1219
1286
  (`--lr-color-on-brand`, not a hardcoded literal — safe to override `--lr-color-brand` without
1220
1287
  losing contrast on selected-day text).
1221
1288
 
1289
+ **Additional API surface:**
1290
+
1291
+ - `--lr-date-picker-month-gap` — Gap between visible months. Default: `var(--lr-space-l)`.
1292
+ - `--lr-date-picker-header-gap` — Month-header child gap. Default: `var(--lr-space-s)`.
1293
+ - `--lr-date-picker-radius` — Calendar and control corner radius. Default: `var(--lr-radius)`.
1294
+ - `--lr-date-input-placeholder-color` — Placeholder text color. Default: `var(--lr-color-text-quiet)`.
1295
+ - `--lr-date-input-gap` — Gap between input-row children. Default: `var(--lr-space-xs)`.
1296
+ - `--lr-date-input-radius` — Input-row corner radius. Default: `var(--lr-radius)`.
1297
+ - `--lr-date-input-focus-border-color` — Focused row border color. Default: `var(--lr-color-brand)`.
1298
+
1222
1299
  ---
1223
1300
 
1224
1301
  ## lr-textarea
@@ -1304,8 +1381,10 @@ the shadow boundary.
1304
1381
 
1305
1382
  | Event | Detail | Description |
1306
1383
  | --- | --- | --- |
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). |
1384
+ | `input` | none | Native-style composed event fired on every user-driven edit. |
1385
+ | `change` | none | Native-style composed event fired at native `change` timing. |
1386
+ | `lr-input` | `{ value: string }` | Compatibility alias fired on every user-driven edit. |
1387
+ | `lr-change` | `{ value: string }` | Compatibility alias fired on native `change` timing (blur after a committed edit). |
1309
1388
  | `blur` | none | Re-dispatched from the internal native `<textarea>`'s own `blur` -- bubbling and composed, unlike the native event. |
1310
1389
  | `focus` | none | Re-dispatched from the internal native `<textarea>`'s own `focus`, for the same reason as `blur`. |
1311
1390
 
@@ -1338,6 +1417,10 @@ original declarative `value`, matching native `defaultValue` behavior.
1338
1417
  bound scrolls inside the native textarea. Auto-resize remeasures after user edits, programmatic
1339
1418
  `value`/`rows` changes, range edits, and container-width changes.
1340
1419
 
1420
+ **Additional API surface:**
1421
+
1422
+ - `click()` — Activates the internal textarea.
1423
+
1341
1424
  ---
1342
1425
 
1343
1426
  ## `lr-button`
@@ -1387,6 +1470,9 @@ it is neither focusable nor navigable; an unsafe/unparseable `href` falls back t
1387
1470
  - `loading: boolean = false` (reflected) — shows an internal spinner and disables the button without
1388
1471
  clearing `disabled`
1389
1472
  - `disabled: boolean = false` (reflected)
1473
+ - `accessibleLabel: string | null = null` (attribute `aria-label`) — accessible name forwarded
1474
+ reactively to the internal native button or anchor; changing or removing the attribute after
1475
+ mount updates the actual focused control
1390
1476
 
1391
1477
  The shared `m` size uses `--lr-font-size-m`. The internal button follows the host's inline size through `--lr-button-width` (default
1392
1478
  `100%`), and each size tier's `min-block-size` floor is exposed as its own token (see below).
@@ -1465,9 +1551,17 @@ box no matter what tier or override is in play.
1465
1551
  ```
1466
1552
 
1467
1553
  **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.
1554
+ - `accessibleLabel`/a host `aria-label` is forwarded reactively to the internal button or anchor as
1555
+ a literal string (for an icon-only button). Host `aria-describedby` targets in the host's root
1556
+ are resolved onto the focused internal control through `ariaDescribedByElements`; external
1557
+ `aria-labelledby` is not copied across the shadow boundary.
1558
+ - Host `aria-haspopup` and `aria-expanded` values are forwarded to the internal semantic control.
1559
+ For host `aria-controls`, targets in the host's own root are resolved through the reflected
1560
+ element-reference API so a popup relationship survives the component's shadow boundary; browsers
1561
+ with that API expose the relationship through `ariaControlsElements` and intentionally serialize
1562
+ the `aria-controls` content attribute as an empty string. Browsers without the API retain the
1563
+ forwarded string attribute as a best-effort fallback. A reflected element list and a non-empty
1564
+ serialized string cannot coexist; this is what lets either button serve as an `lr-menu` trigger.
1471
1565
  - Is form-associated (`static formAssociated = true` + `attachInternals()`), so it participates in
1472
1566
  an ancestor `<form>.elements` the same way `wa-button` does — a sibling text field's own
1473
1567
  Enter-to-submit lookup (which scans `form.elements` for a `type === 'submit'` control) finds it.
@@ -1492,6 +1586,15 @@ With neither `accessibleLabel` nor `label` set, the name falls back to the local
1492
1586
  app-wide with `registerLyraLocale()` (see `llms/shared.md`); don't rely on the fallback for a
1493
1587
  button whose purpose isn't generic.
1494
1588
 
1589
+ Host `aria-haspopup` and `aria-expanded` values are forwarded reactively to the shadow-internal
1590
+ native button. Host `aria-describedby` targets in the host's own root are resolved through
1591
+ `ariaDescribedByElements`. Host `aria-controls` targets use the corresponding
1592
+ `ariaControlsElements` API, so using `<lr-icon-button slot="trigger">` inside `<lr-menu>` exposes
1593
+ the menu relationship and expanded state on the element that actually receives focus. Supporting
1594
+ browsers intentionally clear each serialized internal IDREF attribute after its explicit element
1595
+ list is assigned. Browsers without those APIs retain the forwarded string attributes as
1596
+ best-effort fallbacks.
1597
+
1495
1598
  **Methods:** `focus(options?)`, `blur()` — forward to the native button. `click()` also forwards to
1496
1599
  the native button, activating it — including this component's own `type="submit"`/`type="reset"`
1497
1600
  handling, since the click goes through the same `<button>` the pointer/keyboard path does.
@@ -1530,11 +1633,15 @@ above 24px — see `llms/shared.md`. `--lr-icon-button-radius` (default `--lr-ra
1530
1633
  `--lr-button-radius` pattern; `lr-icon-button` has no `size` tiers, so there is no per-tier gap
1531
1634
  counterpart to it. `--lr-icon-button-background` (default `transparent`) tints the
1532
1635
  `[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.
1636
+ its hover-state background, `--lr-icon-button-color` (default `inherit`) its icon/text color,
1637
+ `--lr-icon-button-color-hover` (default `var(--lr-icon-button-color, inherit)`) its hover-state
1638
+ foreground, and `--lr-icon-button-border` (default `0`) the complete native-button border
1639
+ shorthand. `--lr-icon-button-border-hover` (default
1640
+ `var(--lr-icon-button-border, 0)`) replaces that complete shorthand on hover. These are the same
1641
+ per-component indirection `lr-button`'s
1642
+ `--lr-button-fill`/`--lr-button-on-fill` provide, letting a single button be bordered and tinted
1643
+ without a `::part(button)` rule. Left unset, each falls back to the original value, so rendering is
1644
+ unchanged.
1538
1645
 
1539
1646
  ## `lr-input`
1540
1647
 
@@ -1561,8 +1668,9 @@ form-associated via the same `FormAssociated` mixin as `lr-textarea`. Ships the
1561
1668
  - `inputMode: string = ''` (attribute `inputmode`) / `enterKeyHint: string = ''` (attribute
1562
1669
  `enterkeyhint`) — these four are forwarded verbatim to the native input; an empty string omits
1563
1670
  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
1671
+ - `min?: number | string` / `max?: number | string` (attributes `min`/`max`) /
1672
+ `step?: number | 'any'` (attribute `step`, accepts the native `'any'` value alongside a number)
1673
+ — forwarded verbatim to the native
1566
1674
  input and validated by it. Intended for `type="number"`; `step` is equally meaningful on
1567
1675
  `type="time"`. On `lr-input` itself the `min`/`max` *attributes* are number-converted, so a
1568
1676
  non-numeric bound only survives a direct property assignment; the declared type also admits a
@@ -1664,6 +1772,10 @@ Several controls expose the same pair: a per-`size` `*-min-height` **floor**, an
1664
1772
  the empty string, and `required` is what rejects it.
1665
1773
  - `type="password"` always renders the `password-toggle` button; there is no separate opt-out.
1666
1774
 
1775
+ **Additional API surface:**
1776
+
1777
+ - `click()` — Activates the internal input.
1778
+
1667
1779
  ## `lr-number-input`
1668
1780
 
1669
1781
  A migration-friendly numeric alias of `lr-input` — a subclass whose constructor and
@@ -1828,9 +1940,9 @@ interface PhoneNumberAdapter {
1828
1940
  native telephone input.
1829
1941
  - `countryLabel: string = 'Select'` (attribute `country-label`) — country-selector accessible name;
1830
1942
  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.
1943
+ - `incompleteText: string = 'This phone number is incomplete.'` (attribute `incomplete-text`) —
1944
+ validation message for dial-like input that can still become valid with more digits. The
1945
+ untouched default routes through the localized `phoneInputIncomplete` message.
1834
1946
  - `invalidText: string = 'The value is invalid.'` (attribute `invalid-text`) — completed-invalid
1835
1947
  message, localized through the same shared key while left at its default.
1836
1948
  - `autocomplete: string = 'tel'`, `inputmode: 'tel'|'numeric'|'text' = 'tel'`,
@@ -1937,6 +2049,17 @@ import '@aceshooting/lyra-ui/components/media/flag/flag-peer.js';
1937
2049
  via `::part` styling tricks, and don't expect the flag inside the open popup list — a native
1938
2050
  `<option>` is text-only.
1939
2051
 
2052
+ **Additional API surface:**
2053
+
2054
+ - `click()` — Activate the internal telephone input unless the form control is effectively disabled.
2055
+ - `--lr-phone-input-flag-size` — Selected flag size, scaled by `size`.
2056
+ - `--lr-phone-input-glyph-size` — Country selector glyph size, scaled by `size`.
2057
+ - `--lr-phone-input-gap` — Country-trigger child gap. Default: `var(--lr-space-xs)`.
2058
+ - `--lr-phone-input-radius` — Input-wrapper corner radius. Default: `var(--lr-radius)`.
2059
+ - `--lr-phone-input-focus-border-color` — Focused row border color. Default: `var(--lr-color-brand)`.
2060
+ - `--lr-phone-input-invalid-border-color` — Invalid row border color. Default: `var(--lr-color-danger)`.
2061
+ - `--lr-phone-input-country-hover-bg` — Country trigger hover background. Default: `var(--lr-color-brand-quiet)`.
2062
+
1940
2063
  ---
1941
2064
 
1942
2065
  ## `lr-time-range`
@@ -1960,6 +2083,11 @@ consumer-facing `disabled` property/attribute itself.
1960
2083
  - `disabled: boolean = false` (reflected)
1961
2084
  - `startLabel: string = 'Range start'` (attribute `start-label`) — `aria-label` for the start handle
1962
2085
  - `endLabel: string = 'Range end'` (attribute `end-label`) — `aria-label` for the end handle
2086
+ - `valueFormatter?: TimeRangeValueFormatter` (attribute: false) — maps each finite, clamped
2087
+ `aria-valuenow` to optional human-readable `aria-valuetext`; called as
2088
+ `(value, handle: TimeRangeHandle)`, where `TimeRangeHandle = 'start' | 'end'`. The formatter may
2089
+ return `string | null | undefined`; a nullish result omits `aria-valuetext` for that handle.
2090
+ Leaving the property unset preserves the numeric-only contract
1963
2091
  - `presets: TimeRangePreset[] = []` (attribute: false) — `TimeRangePreset { label: string; start:
1964
2092
  number; end: number }`; optional discrete presets (e.g. "Last 7 days") rendered as a
1965
2093
  `[part="presets"]` button row above the track — purely additive, the continuous brush is
@@ -1975,8 +2103,9 @@ key-up-commit, or when a preset button is clicked, `detail: { start, end }`)
1975
2103
  **CSS parts:** `base`, `track`, `range`, `handle-start`, `handle-end`, `presets`, `preset-button`
1976
2104
 
1977
2105
  **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
2106
+ `--lr-color-surface`, `--lr-shadow` (track/handles), `--lr-opacity-disabled` (`:host(:disabled)`
2107
+ dimming, including ancestor-fieldset disablement), plus (for `presets`) `--lr-color-text`,
2108
+ `--lr-color-on-brand` (the active preset
1980
2109
  button's text), `--lr-radius`, `--lr-space-xs/-s`, `--lr-transition-fast`,
1981
2110
  `--lr-focus-ring-*`.
1982
2111
 
@@ -2003,10 +2132,13 @@ any ancestor of the `<lr-time-range>` therefore reaches it. (The same technique
2003
2132
  **Optional peer deps:** none.
2004
2133
 
2005
2134
  ```html
2006
- <lr-time-range min="0" max="1440" start="480" end="1020" step="15"></lr-time-range>
2135
+ <lr-time-range id="months" min="0" max="2" start="0" end="2"></lr-time-range>
2007
2136
  <script>
2008
- document.querySelector('lr-time-range')
2009
- .addEventListener('lr-change', (e) => console.log(e.detail.start, e.detail.end));
2137
+ const months = ['April 2023', 'May 2023', 'June 2023'];
2138
+ const range = document.getElementById('months');
2139
+ range.valueFormatter = (value, handle) =>
2140
+ `${handle === 'start' ? 'From' : 'Through'} ${months[value]}`;
2141
+ range.addEventListener('lr-change', (e) => console.log(e.detail.start, e.detail.end));
2010
2142
  </script>
2011
2143
  ```
2012
2144
 
@@ -2023,9 +2155,9 @@ any ancestor of the `<lr-time-range>` therefore reaches it. (The same technique
2023
2155
  slider.
2024
2156
  - `aria-valuemin`/`aria-valuemax` on each handle report that handle's reachable sub-range (bounded by
2025
2157
  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.
2158
+ - `valueFormatter` is presentation-only: `aria-valuenow`, geometry, emitted values, and preset
2159
+ matching stay numeric. Non-finite handles omit both `aria-valuenow` and `aria-valuetext` and are
2160
+ never passed to the formatter.
2029
2161
  - Handles a `min > max` domain, a non-positive/non-finite `step`, and disabled-mid-drag/
2030
2162
  disconnect-mid-drag correctly (tested) — safe to rely on those edge cases. Concurrent drags are
2031
2163
  tracked per `pointerId` (not a single scalar), so a two-finger touch — one finger per handle —
@@ -2035,12 +2167,23 @@ any ancestor of the `<lr-time-range>` therefore reaches it. (The same technique
2035
2167
  - Non-finite domain/handle values use finite fallback geometry, and non-finite or negative steps are
2036
2168
  treated as unstepped; invalid values never become `NaN`/`Infinity` CSS or ARIA strings.
2037
2169
  - `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.
2170
+ `aria-valuenow`/`aria-valuemin`/`aria-valuemax`, `valueFormatter`, or any visible text.
2039
2171
  - An ancestor `<fieldset disabled>` toggling is reflected via `formDisabledCallback` into
2040
2172
  `effectiveDisabled` (tracked separately from the consumer's own `disabled`), so re-enabling the
2041
2173
  fieldset correctly restores a handle that had `disabled` set explicitly by the consumer, and vice
2042
2174
  versa — mirrors `lr-combobox`'s identical pattern.
2043
2175
 
2176
+ **Additional API surface:**
2177
+
2178
+ - `--lr-time-range-handle-size` — Visible handle diameter. Default: `14px*scale`.
2179
+ - `--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)`.
2180
+ - `--lr-time-range-track-size` — Track and selected-range thickness. Default: `4px*scale`.
2181
+ - `--lr-time-range-base-size` — Brush baseline block size. Default: `1.5rem*scale`.
2182
+ - `--lr-time-range-preset-gap` — Gap between preset buttons. Default: `var(--lr-space-xs)`.
2183
+ - `--lr-time-range-preset-radius` — Preset button corner radius. Default: `var(--lr-radius)`.
2184
+ - `--lr-time-range-preset-padding` — Preset button padding, scaled by `size`.
2185
+ - `--lr-time-range-preset-font-size` — Preset button font size, scaled by `size`.
2186
+
2044
2187
  ---
2045
2188
 
2046
2189
  ## `lr-swatch-picker`
@@ -2080,7 +2223,8 @@ swatch's interactive hit target, sized via `--lr-swatch-picker-hit-size` — def
2080
2223
  `[part='swatch'][aria-checked='true']`), `swatch-fill` (the filled circle inside it, sized via
2081
2224
  `--lr-swatch-picker-fill-size` — defaults to `--lr-size-1-5rem`, also swapped per `size` tier —
2082
2225
  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
2226
+ place when it has one, with its inherited `font-size` set to the same fill-size token so a `1em`
2227
+ glyph fills the wrapper). Exactly one of `swatch-fill`/`swatch-icon` is mounted per swatch, so the
2084
2228
  two never coexist.
2085
2229
 
2086
2230
  **Themeable custom properties:** `--lr-swatch-picker-selected-color` (ring color around the
@@ -2116,12 +2260,14 @@ and the per-tier `--lr-size-*` tokens.
2116
2260
  </script>
2117
2261
  ```
2118
2262
 
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:
2263
+ For the shared gemstone accent mode, import the Lit-free palette data entry. The glyph renderer
2264
+ remains available separately from `theme/gemstones.js` for Lit templates; palette-only consumers
2265
+ do not need to load Lit. The consumer still owns localized labels, display order, and the initial
2266
+ value:
2121
2267
 
2122
2268
  ```ts
2123
2269
  import '@aceshooting/lyra-ui/components/forms/swatch-picker/swatch-picker.js';
2124
- import { GEMSTONES } from '@aceshooting/lyra-ui/theme/gemstones.js';
2270
+ import { GEMSTONES } from '@aceshooting/lyra-ui/theme/gemstones-data.js';
2125
2271
 
2126
2272
  const order = ['emerald', 'ruby', 'sapphire', 'hematite'] as const;
2127
2273
  picker.mode = 'gemstone';
@@ -2149,6 +2295,10 @@ picker.value = 'ruby';
2149
2295
  - the semantic `radiogroup` lives inside shadow DOM. Set `label` (preferred for reactive code) or a
2150
2296
  host `aria-label`; the component deliberately forwards the resulting name to that internal role.
2151
2297
 
2298
+ **Additional API surface:**
2299
+
2300
+ - `--lr-swatch-picker-gap` — Gap between swatches. Default: `var(--lr-space-xs)`.
2301
+
2152
2302
  ---
2153
2303
 
2154
2304
  ## `lr-checkbox`
@@ -2172,15 +2322,18 @@ visual box/checkmark. Structurally the same idea as `<lr-switch>` (form-associat
2172
2322
  `lr-change` alias (`detail: { checked: boolean }`). Programmatic `.checked` assignments are
2173
2323
  silent. Internal `focus`/`blur` are re-dispatched as bubbling, composed host events.
2174
2324
 
2175
- **Methods:** `focus(options?)` and `blur()` forward to the internal checkbox control.
2325
+ **Methods:** `focus(options?)`, `blur()`, and `click()` forward to the internal checkbox control.
2176
2326
 
2177
2327
  **Slots:** default — label text, rendered next to the box. Clicking it toggles the checkbox, the
2178
2328
  same as clicking a native checkbox's associated `<label>`. If left empty, set `aria-label` on the
2179
2329
  host so the control still has an accessible name.
2180
2330
 
2181
- Host `aria-describedby` is forwarded to the internal `role="checkbox"`, so an externally-owned
2182
- description can be associated with one checkbox inside a group. The attribute is omitted from the
2183
- internal role when unset and tracks host attribute changes.
2331
+ Host `aria-describedby` targets in the host's own root are resolved onto the internal
2332
+ `role="checkbox"` through `ariaDescribedByElements`, so an externally-owned description remains
2333
+ valid across the shadow boundary. In supporting browsers the explicit element list intentionally
2334
+ leaves the internal role's serialized attribute empty; browsers without the reflected-reference
2335
+ API keep the string fallback. The relationship tracks host attribute changes and clears when
2336
+ unset.
2184
2337
 
2185
2338
  **CSS parts:** `base` (the whole interactive control, `role="checkbox"`), `box` (the small square
2186
2339
  showing the checkmark/indeterminate dash), `checkmark` (the checkmark or indeterminate-dash glyph),
@@ -2273,7 +2426,7 @@ control's visible, clickable label (same as `<lr-checkbox>`).
2273
2426
  **Events:** `lr-change` (`detail: { checked: boolean }`) — fired on a user toggle (click or
2274
2427
  Space/Enter); not fired for a programmatic `.checked` assignment.
2275
2428
 
2276
- **Methods:** `focus(options?)` and `blur()` forward to the internal switch control.
2429
+ **Methods:** `focus(options?)`, `blur()`, and `click()` forward to the internal switch control.
2277
2430
 
2278
2431
  **Slots:**
2279
2432
  - default — label text, rendered next to the track. Clicking it toggles the switch, the same as
@@ -2339,10 +2492,13 @@ seamlessly right after. First-party invention (no Web Awesome equivalent).
2339
2492
  - `label: string = ''` — accessible name set as `aria-label` on the `role="slider"` thumb; a plain
2340
2493
  `aria-label` attribute on the host itself is honored as a fallback when this is left unset (matching
2341
2494
  `<lr-checkbox>`/`<lr-switch>`).
2495
+ - `valueFormatter?: SliderValueFormatter` (attribute: false) — maps the finite, clamped
2496
+ `aria-valuenow` number to optional human-readable `aria-valuetext`. The formatter may return
2497
+ `string | null | undefined`; a nullish result omits `aria-valuetext`. Leaving the property unset
2498
+ preserves the existing numeric `aria-valuetext`.
2342
2499
  - `showValue: boolean = true` (attribute `show-value`) — whether to render the current numeric value as
2343
2500
  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.
2501
+ binding or a plain `show-value="false"` content attribute.
2346
2502
  - Inherited from `FormAssociated`: `name: string = ''`, `value: string` (form-submitted string form),
2347
2503
  `disabled: boolean = false` (reflected), `required: boolean = false` (reflected).
2348
2504
 
@@ -2378,6 +2534,7 @@ when `show-value` is true)
2378
2534
  step="0.1"
2379
2535
  label="Temperature"
2380
2536
  .valueAsNumber=${0.7}
2537
+ .valueFormatter=${(value) => `${value * 100}%`}
2381
2538
  @lr-input=${(e) => setDraftTemperature(e.detail.value)}
2382
2539
  @lr-change=${(e) => commitTemperature(e.detail.value)}
2383
2540
  ></lr-slider>
@@ -2396,6 +2553,9 @@ native range input either.
2396
2553
  value); ArrowUp/ArrowDown are never swapped, since direction only affects the horizontal inline axis.
2397
2554
  - Changing `min`/`max`/`step` after mount automatically re-clamps/re-snaps the current `value` in the
2398
2555
  next update — narrowing the domain can silently move the slider's value.
2556
+ - `valueFormatter` is presentation-only: `aria-valuenow`, the visible numeric readout, geometry,
2557
+ form value, and emitted values stay numeric. With no formatter, `aria-valuetext` remains the
2558
+ numeric string rendered by earlier versions; a nullish formatter result omits it.
2399
2559
  - A pointer drag fires `lr-input` continuously and a single `lr-change` on release; a keyboard step
2400
2560
  fires exactly one of each per press, but OS key-repeat while a key is held re-fires `lr-input` on
2401
2561
  every repeat while still only committing `lr-change` once, on the eventual keyup.
@@ -2451,16 +2611,21 @@ selected value is submitted under `name` and `required` requires at least one se
2451
2611
 
2452
2612
  **Properties:** `label`, `hint`, `errorText`, `value`, `name`, `required`, `disabled`, and
2453
2613
  `accessibleLabel` (`aria-label`). **Slots:** default checkboxes, `label`, `hint`, `error`.
2454
- **Events:** `input`, `change`, and `lr-change` with `{ value: string[] }`.
2614
+ **Events:** a user toggle emits exactly one group-owned `input`, then `change`, then `lr-change`;
2615
+ all three carry `{ value: string[] }`. The owned child's corresponding events are consumed at the
2616
+ group boundary, so an ancestor does not receive a second, differently shaped sequence.
2617
+ Programmatic child/property synchronization is silent.
2455
2618
  **CSS parts:** `form-control`, `form-control-label`, `options`, `hint`, `error`.
2456
2619
 
2457
2620
  **`value` is a read-out of child state, not an input.** The children are the single source of
2458
2621
  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).
2622
+ programmatic child `checked`/`value`/`disabled` update, `slotchange`, `name`/`required` change,
2623
+ blur, and `form.reset()` — so a host assignment is silently overwritten by the next of those.
2624
+ Only a checkbox whose nearest `lr-checkbox-group` ancestor is this group contributes; a nested
2625
+ group owns its own descendants and form entries. `connectedCallback()` runs that sync **before the
2626
+ first render**, which means even a constructor-time or template-time `.value=${…}` binding is
2627
+ discarded before anything can observe it. Assigning `value` logs a `console.warn` naming the
2628
+ property (once per group instance).
2464
2629
 
2465
2630
  - **To preselect**, set `checked` on the children: `<lr-checkbox value="a" checked>`.
2466
2631
  - **To read the selection**, use this property or the `lr-change` event detail.
@@ -2484,7 +2649,9 @@ hit area stays fixed at `40px` across all sizes), `allowDuplicates` (`allow-dupl
2484
2649
  `false`), `editable` (reflected, default `false` — see below), and `delimiter: string | null` (default
2485
2650
  `','` — see below).
2486
2651
  **Slots:** `label`, `hint`, `error`.
2487
- **Events:** `input`, `change`, `lr-add` (`detail: { value }`), `lr-remove`
2652
+ **Events:** native-style `input` and `change` (`detail: { value: string[] }`), bubbling/composed
2653
+ `focus` and `blur` re-dispatched from the internal text input, `lr-add` (`detail: { value }`),
2654
+ `lr-remove`
2488
2655
  (`detail: { value, index }` — cancelable; `preventDefault()` keeps the token in `value`
2489
2656
  unchanged), and `lr-token-edit`
2490
2657
  (`detail: { value, previousValue, index }` — an existing token was edited in place and committed).
@@ -2493,7 +2660,8 @@ token's text, doubling as the roving-focus edit trigger — rendered only while
2493
2660
  `token-editor` (the inline text field that replaces a token's text while it is open for editing —
2494
2661
  rendered only while `editable` and only for the token being edited), `remove` (the
2495
2662
  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.
2663
+ glyph), `input`, `hint`, `error`. `focus()`, `blur()`, and `click()` forward to the internal text
2664
+ input.
2497
2665
 
2498
2666
  **`editable` — editing a token in place.** Off by default, in which case the token row renders
2499
2667
  exactly as it does without the feature and stays non-focusable. Turn it on and each token becomes a
@@ -2527,6 +2695,17 @@ inline to `--lr-size-8rem`), `--lr-token-input-min-input-inline-size` (default `
2527
2695
  floor that input keeps once tokens have consumed the row), and `--lr-token-input-editor-inline-size`
2528
2696
  (default `--lr-size-6rem`, the inline size of the inline token editor opened by `editable`).
2529
2697
 
2698
+ **Additional API surface:**
2699
+
2700
+ - `--lr-token-input-token-padding` — Per-token chip padding, scaled by `size`.
2701
+ - `--lr-token-input-gap` — Gap between form/row children. Default: `var(--lr-space-xs)`.
2702
+ - `--lr-token-input-token-gap` — Gap inside token chips. Default: `var(--lr-space-2xs)`.
2703
+ - `--lr-token-input-radius` — Row/token corner radius. Default: `var(--lr-radius)`.
2704
+ - `--lr-token-input-token-bg` — Token chip background. Default: `var(--lr-color-brand-quiet)`.
2705
+ - `--lr-token-input-action-hover-bg` — Edit/remove hover background. Default: `var(--lr-color-brand-quiet)`.
2706
+ - `--lr-token-input-focus-border-color` — Focused row border color. Default: `var(--lr-color-brand)`.
2707
+ - `--lr-token-input-invalid-border-color` — Invalid row border color. Default: `var(--lr-color-danger)`.
2708
+
2530
2709
  ## `lr-code-editor`
2531
2710
 
2532
2711
  Dependency-free, form-associated multiline code editor built around a native textarea, with an
@@ -2588,6 +2767,11 @@ spaces — the Tab key keeps inserting `tabSize` spaces in that case.
2588
2767
  - The host gets a `data-invalid` attribute once the field has been blurred at least once and
2589
2768
  validity fails; the styles hang the danger border off it.
2590
2769
 
2770
+ **Additional API surface:**
2771
+
2772
+ - `selectionDirection` — The current selection direction of the internal editing surface. Type: `'forward' | 'backward' | 'none'`.
2773
+ - `click()` — Activates the internal editing surface.
2774
+
2591
2775
  ## `lr-color-picker`
2592
2776
 
2593
2777
  A form-associated native color picker with label, hint, and error chrome. **Properties:** the shared
@@ -2604,6 +2788,13 @@ parts:** `form-control`, `form-control-label` (the label; `label` is an alias ke
2604
2788
  auto-swapped per `size` tier (default `'m'` reads `2.5rem`, `'2xs'` reads `1.25rem`, etc.), matching
2605
2789
  the size ladder `lr-input` uses.
2606
2790
 
2791
+ **Additional API surface:**
2792
+
2793
+ - `click()` — Activates the internal color input.
2794
+ - `--lr-color-picker-gap` — Gap between field chrome. Default: `var(--lr-space-xs)`.
2795
+ - `--lr-color-picker-radius` — Swatch corner radius. Default: `var(--lr-radius)`.
2796
+ - `--lr-color-picker-hover-border-color` — Hover border color. Default: `var(--lr-color-brand)`.
2797
+
2607
2798
  ## `lr-emoji-picker`
2608
2799
 
2609
2800
  A searchable, keyboard-navigable, form-associated emoji picker. `groups` is fully consumer-suppliable
@@ -2633,8 +2824,10 @@ supporting text rendered below the search/grid; unset renders no hint chrome. `e
2633
2824
  `error` content when provided); unset renders no error chrome. `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` —
2634
2825
  visual size; scales the emoji grid item box and its glyph proportionally, floored at 24px (WCAG 2.5.8).
2635
2826
 
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`.
2827
+ **Events:** a pick emits native-style composed `input`, then `change` (both with no detail), then
2828
+ `lr-change` with `detail: { emoji }` (click, or Enter/Space on the active grid cell; also sets
2829
+ `value`). The internal search input's `focus` and `blur` are re-dispatched as bubbling, composed
2830
+ host events. Programmatic `value` changes are silent.
2638
2831
 
2639
2832
  **Keyboard:** the grid is a roving-tabindex listbox (a single Tab stop — only the active emoji is
2640
2833
  tabbable). ArrowLeft/ArrowRight step the active item backward/forward following reading direction
@@ -2693,6 +2886,13 @@ windowed row are additionally capped at 20 regardless of available width.
2693
2886
  supply `groups` directly instead. The loader never throws; a missing or failed peer logs one
2694
2887
  `console.warn` and simply leaves `groups` empty.
2695
2888
 
2889
+ **Additional API surface:**
2890
+
2891
+ - `--lr-emoji-picker-control-gap` — Gap between field sections. Default: `var(--lr-space-xs)`.
2892
+ - `--lr-emoji-picker-radius` — Outer picker corner radius. Default: `var(--lr-radius)`.
2893
+ - `--lr-emoji-picker-item-radius` — Search and emoji corner radius. Default: `var(--lr-radius-xs)`.
2894
+ - `--lr-emoji-picker-search-hover-border-color` — Search hover border. Default: `var(--lr-color-brand)`.
2895
+
2696
2896
  ## `lr-rubric-form`
2697
2897
 
2698
2898
  A configurable annotation rubric (LangSmith annotation-queue style): score, category, and
@@ -2702,7 +2902,10 @@ freeform-comment keys with a submit-and-next flow for working through an eval qu
2702
2902
  renders `<lr-textarea>`.
2703
2903
 
2704
2904
  **Properties:** `keys: RubricKey[] = []` (attribute: false, each `{ key, type, label?, description?,
2705
- required?, min?, max?, step? }`), `value: RubricValue = {}` (attribute: false), `itemId: string = ''`
2905
+ required?, min?, max?, step?, options?, multiple?, placeholder? }`; `options?` contains
2906
+ `RubricKeyOption { value: string; label?: string; description?: string }`, `multiple?` selects the
2907
+ checkbox-group category route, and `placeholder?` customizes comment input), `value: RubricValue =
2908
+ {}` (attribute: false), `itemId: string = ''`
2706
2909
  (attribute `item-id`, reflected), `hasNext: boolean = false` (attribute `has-next`), `skippable:
2707
2910
  boolean = false`, and the shared form properties `name` and `disabled`. `errors: Record<string,
2708
2911
  string>` is the current per-key validation-message state.
@@ -2803,6 +3006,15 @@ peer warning duplication; `lr-flag` itself already logs one) when the optional
2803
3006
  - arrow-key navigation is vertical-only (Home/End/ArrowUp/ArrowDown); there is no
2804
3007
  ArrowLeft/ArrowRight remap under RTL, since there is no horizontal axis to remap.
2805
3008
 
3009
+ **Additional API surface:**
3010
+
3011
+ - `--lr-locale-picker-gap` — Trigger and option child gap. Default: `var(--lr-space-xs)`.
3012
+ - `--lr-locale-picker-radius` — Trigger/listbox/option corner radius. Default: `var(--lr-radius)`.
3013
+ - `--lr-locale-picker-trigger-hover-bg` — Trigger hover background. Default: `var(--lr-color-brand-quiet)`.
3014
+ - `--lr-locale-picker-open-border-color` — Open trigger border color. Default: `var(--lr-color-brand)`.
3015
+ - `--lr-locale-picker-option-selected-border-color` — Selected option border. Default: `var(--lr-color-brand)`.
3016
+ - `--lr-locale-picker-option-selected-color` — Selected option text. Default: `var(--lr-color-brand)`.
3017
+
2806
3018
  # Data display, dashboards & flow canvas (`components/data/`)
2807
3019
 
2808
3020
  ## `lr-sparkline`
@@ -2864,7 +3076,8 @@ KPI/stat card — value + unit + label + optional icon/trend/caption.
2864
3076
  - `unit: string = ''`
2865
3077
  - `href?: string` — when it resolves to a safe URL, the root is a real whole-stat `<a>`; unsafe
2866
3078
  URL schemes keep the stat non-interactive
2867
- - `target?: string` / `rel?: string` — forwarded to the anchor while `href` is active
3079
+ - `target?: string` — forwarded to the anchor while `href` is active; a nonempty target derives
3080
+ `rel="noopener noreferrer"` rather than exposing a separately settable `rel`
2868
3081
  - `variant: 'neutral'|'success'|'warning'|'danger' = 'neutral'` (reflected)
2869
3082
  - `trend: number = NaN` (a `NaN` sentinel hides the trend pill entirely — set an actual number to
2870
3083
  show it)
@@ -2956,7 +3169,10 @@ drives `emphasis`'s accent edge and value tint).
2956
3169
 
2957
3170
  ## `lr-table`
2958
3171
 
2959
- Sort/select-aware data table. Sorting remains consumer-controlled; optional filtering, pagination,
3172
+ Sort/select-aware data table. Sorting is built in and client-side by default (`sortMode="client"`
3173
+ orders `rows` from `sortKey`/`sortDir` and the active column's `sortValue`); `sortMode="server"`
3174
+ renders `rows` in the order given for a server-ordered table, and `lr-sort` fires on header
3175
+ activation either way. Optional filtering, pagination,
2960
3176
  and loading chrome are built in while remaining controlled at the public API boundary. A
2961
3177
  `columns[].heatValue`-opted-in heat-tint mode paints a shared, normalized color-mix background across
2962
3178
  every tinted cell (auto-derived domain, or overridden via `heatTintScale`); `rowTotal`/`grandTotal`
@@ -2966,8 +3182,16 @@ own "consumer computes/renders" contract rather than assuming addition.
2966
3182
 
2967
3183
  **Properties:**
2968
3184
  - `columns: TableColumn<T>[] = []` (attribute: false) — `{ key, label, headerCell?, width?,
2969
- minWidth?, maxWidth?, resizable?, sortable?, align?: 'start'|'end', priority?: 'medium'|'low', sticky?: boolean |
3185
+ minWidth?, maxWidth?, resizable?, sortable?, sortValue?, align?: 'start'|'end', priority?: 'medium'|'low', sticky?: boolean |
2970
3186
  'start' | 'end', footer?, cellStyle?, heatValue?, cell: (row) => unknown }` —
3187
+ `sortValue(row) => string | number | null | undefined` supplies the comparable value backing
3188
+ client-mode sorting for that column: a finite number sorts numerically, a string sorts through an
3189
+ `Intl.Collator` built from the component's effective locale with `numeric: true` (so `item2`
3190
+ precedes `item10`), and `null`/`undefined`/non-finite sorts **last in both directions** so
3191
+ flipping `sortDir` never floats a block of blanks to the top. Omit it and the column sorts by its
3192
+ stringified `cell()` output instead — meaningful only when `cell()` returns a string or number, so
3193
+ define `sortValue` whenever `cell()` returns a template or element. Ignored under
3194
+ `sortMode="server"` and on a column that is not `sortable`;
2971
3195
  `priority` progressively hides that column via a `@container` query as `[part='base']` narrows
2972
3196
  (`'low'` hides first, under a ~900px container width; `'medium'` next, under ~640px; both
2973
3197
  breakpoints are fixed in `table.styles.ts`, not themeable tokens), reversible via
@@ -3040,6 +3264,19 @@ own "consumer computes/renders" contract rather than assuming addition.
3040
3264
  the two consequences of the fixed algorithm worth knowing before opting in
3041
3265
  - `sortKey: string = ''` (attribute `sort-key`)
3042
3266
  - `sortDir: 'asc'|'desc' = 'asc'` (attribute `sort-dir`)
3267
+ - `sortMode: 'client'|'server' = 'client'` (attribute `sort-mode`, reflected) — mirrors
3268
+ `paginationMode`'s identical split. `'client'` (the default) orders `rows` in the browser from
3269
+ `sortKey`/`sortDir` and the active column's `sortValue`; `'server'` renders `rows` exactly as
3270
+ given, for a table whose ordering already happened server-side. `lr-sort` is emitted on header
3271
+ activation under both modes. With no `sortKey` set (the default) `'client'` is a **no-op** — the
3272
+ input order is preserved verbatim — so a table that never sorts renders identically either way.
3273
+ Sorting applies to the whole filtered set *before* client pagination slices the page, so page 1
3274
+ holds the globally-smallest rows rather than a re-sorted slice
3275
+ - `defaultSortDir: 'asc'|'desc' = 'asc'` (attribute `default-sort-dir`) — the direction applied
3276
+ whenever header activation switches sorting to a **different** column, including the first column
3277
+ ever sorted. Re-activating the column that is already `sortKey` toggles between `'asc'` and
3278
+ `'desc'` instead, so `defaultSortDir` never overrides a direction the user just chose for the
3279
+ column they are still on. Set `'desc'` for a most-recent-first or highest-first table
3043
3280
  - `rowKey?: (row: T) => string | number` (attribute: false) — derives each row's stable identity for
3044
3281
  DOM-reconciliation and the delegated row click/keydown lookup; falls back to the row's array index
3045
3282
  when omitted, which is only safe while `rows` never reorders — set it whenever `rows` can be
@@ -3086,7 +3323,13 @@ own "consumer computes/renders" contract rather than assuming addition.
3086
3323
  mode slices rows; server mode renders the supplied page unchanged
3087
3324
  - Editable columns emit `lr-cell-edit` on commit and never mutate the supplied row object.
3088
3325
  - `groupBy?: (row: T) => string | number` (attribute: false) — inserts a non-focusable full-width
3089
- group row before each group
3326
+ group row wherever this key changes between consecutive rendered rows. Supply `rows` with each
3327
+ group already contiguous; the table renders the groups in their first-appearance order in `rows`
3328
+ and never reorders them. A client-mode sort is applied **within** each group, so sorting a
3329
+ grouped table on a column unrelated to the group key reorders rows inside their groups and
3330
+ leaves the grouping intact. The one exception: when the sorted column's value is constant inside
3331
+ every group — the group column itself, most obviously — there is nothing to reorder within a
3332
+ group, so the **groups** are ordered by that value instead.
3090
3333
  - `groupLabel?: (key: string | number, rows: T[]) => unknown` (attribute: false) — custom group
3091
3334
  header content; without it, the group key is rendered as text
3092
3335
  - `expandedContent?: (row: T) => unknown` (attribute: false) — enables a leading expand toggle and
@@ -3130,7 +3373,8 @@ own "consumer computes/renders" contract rather than assuming addition.
3130
3373
  column × footer row). Only rendered when both `rowTotal` is set **and** at least one column defines
3131
3374
  `footer` — otherwise there is no footer row for it to occupy, and this renders nothing
3132
3375
 
3133
- **Events:** `lr-sort` (`detail: { key }`, fired on sortable-header activation), `lr-row-click`
3376
+ **Events:** `lr-sort` (`detail: { key }`, fired on sortable-header activation — which also updates
3377
+ `sortKey`/`sortDir` itself, per `defaultSortDir` above), `lr-row-click`
3134
3378
  (`detail: { row }`), `lr-load-more` (fired on the "load more" button), `lr-columns-hidden-change`
3135
3379
  (`detail: { hidden: boolean }`, fired only on a real `columnsHidden` transition),
3136
3380
  `lr-columns-revealed` (`detail: { revealed: boolean }`), and `lr-row-expand-toggle`
@@ -3184,6 +3428,9 @@ element *or on any ancestor* and still reach the rule that reads it. It exists b
3184
3428
  forbids an attribute selector after `::part()` — `::part(row)[aria-selected='true']` is invalid CSS —
3185
3429
  so the only prior lever for restyling the selected row was overriding the library-wide
3186
3430
  `--lr-color-brand-quiet` token, which repaints everything else reading it.
3431
+ `--lr-table-row-stripe-bg` (default `transparent`) — the background of alternating body rows. The
3432
+ component marks the alternating rows itself, so this works without an invalid `::part(row)` attribute
3433
+ or structural-pseudo-class selector and does not affect group, expanded, hover, or selected rows.
3187
3434
  `--lr-table-header-sorted-bg` (default `transparent`) and `--lr-table-header-sorted-color` (default
3188
3435
  `inherit`) restyle the **currently-sorted** column's header cell (`[aria-sort]` other than `none`).
3189
3436
  Same shape and rationale as `--lr-table-row-selected-bg`: inline `var()` fallbacks, not on `:host`,
@@ -3196,12 +3443,13 @@ so multiple `sticky` columns stack instead of overlapping; it is a read-out, not
3196
3443
  **Optional peer deps:** none.
3197
3444
 
3198
3445
  ```html
3199
- <lr-table id="t" sort-key="name" sort-dir="asc"></lr-table>
3446
+ <lr-table id="t" sort-key="name" sort-dir="asc" accessible-label="Items"></lr-table>
3200
3447
  <script type="module">
3201
3448
  const t = document.getElementById('t');
3202
3449
  t.columns = [
3203
3450
  { key: 'name', label: 'Name', sortable: true, cell: (r) => r.name },
3204
- { key: 'value', label: 'Value', align: 'end', cell: (r) => r.value },
3451
+ // sortValue keeps the numeric column comparing as numbers, not as strings.
3452
+ { key: 'value', label: 'Value', align: 'end', sortable: true, sortValue: (r) => r.value, cell: (r) => r.value },
3205
3453
  ];
3206
3454
  t.rows = [{ name: 'Alpha', value: 1 }, { name: 'Beta', value: 2 }];
3207
3455
  t.rowKey = (r) => r.name;
@@ -3211,6 +3459,23 @@ so multiple `sticky` columns stack instead of overlapping; it is a read-out, not
3211
3459
  ```
3212
3460
 
3213
3461
  **Known gotchas:**
3462
+ - activating a sortable header now writes `sortKey`/`sortDir` on the table itself, in **both** sort
3463
+ modes — it is no longer a pure `lr-sort` notification. A `sortMode="server"` consumer that
3464
+ re-sorts on `lr-sort` and pushes fresh `rows` back in is unaffected (the table renders whatever
3465
+ order it is handed), but a consumer implementing a *tri-state* header (asc → desc → unsorted) must
3466
+ drive `sortKey`/`sortDir` from its own `lr-sort` handler, since the built-in activation only
3467
+ toggles between the two directions.
3468
+ - `sortValue`/`cell` are read off the column object by identity. Mutating a column **in place**
3469
+ (`t.columns[0].sortValue = …`) neither re-renders nor re-sorts; assign a new `columns` array.
3470
+ - `groupBy` + client sorting are **not** in conflict: the sort runs per group, not across the whole
3471
+ set, so group rows stay contiguous. The consequence is that the group order is normally yours to
3472
+ control — it follows first appearance in `rows`. The single exception is a sort on a column whose
3473
+ value is constant inside every group (the group column itself, a column functionally determined
3474
+ by the group key, or any column at all when every group holds one row): the within-group sort
3475
+ would be a provable no-op, so the groups are ordered by that constant value instead. That is what
3476
+ keeps `aria-sort` and the header chevron honest — otherwise clicking the group column would flip
3477
+ both while changing nothing. To force a group order in any other case, sort `rows` into it before
3478
+ assigning them (or set `sort-mode="server"` and own the whole ordering).
3214
3479
  - only single-row selection is modeled (`selectedKey: string | number | null`);
3215
3480
  there's no bulk-select/checkbox-column API — you must hand-roll a checkbox column entirely inside
3216
3481
  a `cell()` callback if you need multi-select.
@@ -3222,8 +3487,8 @@ so multiple `sticky` columns stack instead of overlapping; it is a read-out, not
3222
3487
  no `accessibleLabel`/host `aria-label` is present the caption also names the grid via
3223
3488
  `aria-labelledby`.
3224
3489
  - 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.
3490
+ `console.warn` on first render in development builds only — an unnamed grid is an accessibility
3491
+ defect that otherwise renders silently. Production and unknown/unbundled runtimes do not log it.
3227
3492
  - Full roving-tabindex grid keyboard pattern (one `tabindex="0"` stop among header cells, one among
3228
3493
  body rows) — Left/Right/Home/End move within the header row, Up/Down/Home/End move within the
3229
3494
  body, Down from the header enters the body's roving stop and Up from the body's first row returns
@@ -3346,6 +3611,11 @@ spacing, border, radius, disabled-opacity, and focus-ring tokens.
3346
3611
  - below a 20rem container allocation the summary and controls stack; the breakpoint responds to
3347
3612
  the component's own inline size, not the viewport. Previous/next icons also mirror under RTL
3348
3613
 
3614
+ **Additional API surface:**
3615
+
3616
+ - `click()` — Forward host activation to the primary editable page control.
3617
+ - `--lr-pagination-control-radius` — Border radius of navigation buttons and the page input. Default: `var(--lr-radius)`.
3618
+
3349
3619
  ---
3350
3620
 
3351
3621
  ## `lr-gauge`
@@ -3868,9 +4138,13 @@ deeply-nested node's own shadow root still reaches it).
3868
4138
 
3869
4139
  **Properties:**
3870
4140
  - `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
4141
+ TreeItem[]; selected?: boolean; disabled?: boolean; badge?: string | number; badges?: TreeBadge[];
4142
+ icon?: unknown; description?: string; accessibleLabel?: string }`. `TreeBadge` is `{ text:
4143
+ string; tone?: TreeBadgeTone; label?: string }`, where `TreeBadgeTone` is
4144
+ `'neutral'|'brand'|'success'|'warning'|'danger'`. The legacy singular `badge` renders first;
4145
+ `badges` adds tone-mapped chips after it and each chip's accessible name uses `label ?? text`.
4146
+ `icon` renders as a decorative leading visual, `description` as secondary visible row text, and
4147
+ `accessibleLabel` names the `role="treeitem"` host without changing its visible label
3874
4148
  - `label: string = ''` — accessible name for the tree; `role="tree"` lives on an internal
3875
4149
  `[part="base"]` element. The component forwards a host `aria-label` to that semantic element when
3876
4150
  `label` is empty; `label` takes precedence when both are set. External `aria-labelledby` idrefs
@@ -3946,9 +4220,11 @@ through `lr-tree`'s light DOM.
3946
4220
 
3947
4221
  **Slots:** none.
3948
4222
 
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.
4223
+ **CSS parts:** `row`, `toggle`, `icon`, `content`, `label`, `description`, `badge`, `group`. `badge`
4224
+ is applied to the legacy singular badge and to every `badges` chip; additive chips carry
4225
+ `data-tone="neutral|brand|success|warning|danger"`. `icon` is `aria-hidden="true"`; `content`
4226
+ groups the primary label and optional wrapping secondary description while preserving one
4227
+ interactive treeitem per row.
3952
4228
 
3953
4229
  **Themeable custom properties:** `--lr-tree-depth` (internal, set inline per row for
3954
4230
  indentation), plus the shared tokens listed above.
@@ -3989,6 +4265,12 @@ indentation), plus the shared tokens listed above.
3989
4265
  - `lr-file-tree` does **not** forward `reorderable`, and deliberately so: its `TreeItem[]` is derived
3990
4266
  from `nodes` on every render and keyed by filesystem path, an order it does not own.
3991
4267
 
4268
+ **Additional API surface:**
4269
+
4270
+ - `--lr-tree-selected-color` — Selected-node text color.
4271
+ - `--lr-tree-selected-bg` — Selected-node background.
4272
+ - `ancestry` — Ancestor object identities used to stop cyclic caller graphs before recursive rendering. Type: `TreeItem[]`.
4273
+
3992
4274
  ---
3993
4275
 
3994
4276
  ## `lr-flow-canvas`
@@ -4016,8 +4298,10 @@ controlled-component contract.
4016
4298
  `lr-node-palette` drag sets, emitting `lr-node-add`
4017
4299
  - `locked: boolean = false` (reflected) — freezes pan/zoom/drag/connect without touching the other
4018
4300
  gesture flags
4019
- - `selectedNodeIds: string[] = []`, `selectedEdgeIds: string[] = []` (attribute: false) — controlled;
4020
- the host assigns these back from `lr-selection-change`
4301
+ - `selectedNodeIds: string[] = []`, `selectedEdgeIds: string[] = []` (attribute: false) — seed or
4302
+ replace selection state. Node/edge activation and clear-selection gestures also update these
4303
+ arrays internally before emitting `lr-selection-change`; a host may assign its own authoritative
4304
+ state back.
4021
4305
  - `minZoom: number = 0.25` (attribute `min-zoom`), `maxZoom: number = 2` (attribute `max-zoom`)
4022
4306
  - `grid: number = 8` — snap step in content px for drags/nudges/drop positions (`0` disables
4023
4307
  snapping); also the dotted background's base spacing
@@ -4096,9 +4380,10 @@ treatment entirely.
4096
4380
  ```
4097
4381
 
4098
4382
  **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`.
4383
+ - `nodes` and `edges` are controlled inputs: move, connect, add, and delete events are requests the
4384
+ host applies back. Selection is hybrid state: `selectedNodeIds`/`selectedEdgeIds` accept external
4385
+ replacement, while node/edge activation and clear-selection gestures update them internally and
4386
+ emit `lr-selection-change`.
4102
4387
  - Auto-layout (via the dependency-free `layeredLayout()` util) only ever positions nodes that are
4103
4388
  missing an explicit `position`; a node the host has already positioned is left exactly where it is
4104
4389
  and used as a fixed anchor for the rest of the layout pass.
@@ -4109,6 +4394,12 @@ treatment entirely.
4109
4394
  deltas are mirrored so content still visually follows the cursor, matching every other
4110
4395
  RTL-mirrored surface in this library.
4111
4396
 
4397
+ **Additional API surface:**
4398
+
4399
+ - `part="edge-hit-area"` — The transparent wide pointer target behind an edge.
4400
+ - `part="node-control"` — The visually hidden, roving selection button for a node.
4401
+ - `--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))`.
4402
+
4112
4403
  ---
4113
4404
 
4114
4405
  ## `lr-flow-node`
@@ -4188,8 +4479,8 @@ disagree.
4188
4479
  **Properties:**
4189
4480
  - `for: string = ''` — id of the target `lr-flow-canvas`; when empty, the nearest ancestor canvas
4190
4481
  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
4482
+ - `label: string = ''` — accessible name for the map region. A host `aria-label` takes precedence,
4483
+ followed by `label`, then the localized default
4193
4484
 
4194
4485
  **Events:** none.
4195
4486
 
@@ -4216,6 +4507,11 @@ draggable, focusable view rectangle).
4216
4507
  - Dragging the viewport rectangle calls the canvas's `setViewport()` directly; there's no separate
4217
4508
  event to wire up.
4218
4509
 
4510
+ **Additional API surface:**
4511
+
4512
+ - `part="instructions"` — Visually hidden keyboard instructions for the viewport.
4513
+ - `part="live-region"` — Visually hidden viewport-change announcements.
4514
+
4219
4515
  ---
4220
4516
 
4221
4517
  ## `lr-flow-controls`
@@ -4367,10 +4663,12 @@ capacity), `segment` (one occupied segment — carries `data-tone` and, for cust
4367
4663
  <lr-context-meter variant="ring" total="128000" .segments=${segments}></lr-context-meter>
4368
4664
  ```
4369
4665
 
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
4666
+ An internal visually-hidden semantic node carries `role="meter"` plus `aria-valuenow`,
4667
+ `aria-valuemin`, and `aria-valuemax` whenever `total > 0`; without a valid positive total it uses
4668
+ `role="group"` and omits numeric meter attributes. Its accessible name is the host `aria-label`
4669
+ when present, otherwise the generated summary. A separate visually-hidden segment list exposes
4670
+ each labeled quantity, while the visible track, segments, ring SVG, and visible label remain
4671
+ `aria-hidden`. The summary's "used" figure is the sum of
4374
4672
  `segments[].value`, clamped to `total` whenever `total > 0` so the announced text can never claim
4375
4673
  more than 100% used (e.g. `segments` summing to `150000` against `total="128000"` still announces
4376
4674
  `"128,000 of 128,000 used"`) — matching what the *visual* meter shows, since each segment's ratio is
@@ -4384,8 +4682,8 @@ numbers, so the two circular-meter components in the library share one visual sc
4384
4682
 
4385
4683
  **Known gotchas:**
4386
4684
  - 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.
4685
+ native mouse-hover tooltips only — they sit inside `aria-hidden` markup. Screen readers use the
4686
+ hidden meter/group summary and segment list instead.
4389
4687
  - `variant="ring"` fixes the host at `8em × 8em` (`:host([variant='ring'])`) — the bar variant's
4390
4688
  `inline-size: 100%` does not apply in ring mode; resize it via `font-size` or an explicit
4391
4689
  width/height override on the host instead.
@@ -4393,6 +4691,12 @@ numbers, so the two circular-meter components in the library share one visual sc
4393
4691
  `segments` render further around the circle (starting at 12 o'clock, going clockwise); there's no
4394
4692
  independent sort/z-order control.
4395
4693
 
4694
+ **Additional API surface:**
4695
+
4696
+ - `part="segment-item"` — One visually-hidden segment label/count pair.
4697
+ - `part="segment-list"` — The visually-hidden list exposing the segment breakdown.
4698
+ - `part="semantic"` — The visually-hidden meter/group carrying aggregate range semantics.
4699
+
4396
4700
  ---
4397
4701
 
4398
4702
  ## `lr-calendar`
@@ -4562,13 +4866,28 @@ parts:** `base`, `path-fields`, `start-input`, `end-input`, `relationship-picker
4562
4866
  `saved-queries`, `saved-queries-label`, `saved-list`, `saved-item`, `saved-load-button`,
4563
4867
  `saved-delete-button`, `saved-empty`.
4564
4868
 
4869
+ **Additional API surface:**
4870
+
4871
+ - `errorText` — Caller-supplied outer error text. Field-level validation remains on the affected controls. Type: `string`.
4872
+ - `hint` — Supporting text rendered below the outer label. Type: `string`.
4873
+ - `error-text` attribute — Caller-supplied outer error text. Field-level validation remains on the affected controls.
4874
+ - `hint` attribute — Supporting text rendered below the outer label.
4875
+ - `hint` slot — Supporting text for the complete form control.
4876
+ - `part="hint"` — Supporting text for the complete form control.
4877
+
4565
4878
  ## `lr-query-builder`
4566
4879
 
4567
4880
  Composable structured-query builder for tabular or dashboard data: condition rows combined with an
4568
4881
  AND/OR combinator.
4569
4882
 
4570
- **Properties:** `fields`, `value`, `disabled`, `addCondition`, `removeCondition`. **Events:**
4571
- `lr-input`, `lr-add-condition`, `lr-remove-condition`. **CSS parts:** `base`, `conditions`,
4883
+ **Properties:** `fields`, `value`, `disabled`.
4884
+
4885
+ **Methods:** `addCondition()` appends a condition using the first available field and emits
4886
+ `lr-add-condition`; it is a no-op while disabled or when there are no fields.
4887
+ `removeCondition(id)` removes the matching condition and emits `lr-remove-condition`; it is a
4888
+ no-op while disabled or when the id is absent.
4889
+
4890
+ **Events:** `lr-input`, `lr-add-condition`, `lr-remove-condition`. **CSS parts:** `base`, `conditions`,
4572
4891
  `condition`, `field-select`, `operator-select`, `value`, `combinator`, `add-button`,
4573
4892
  `remove-button`, `empty`.
4574
4893
 
@@ -4584,8 +4903,10 @@ auto-inserted between each adjacent pair.
4584
4903
  omitted/mismatched)
4585
4904
  - `defaultSizes: (number | string)[] = []` (attribute: false) — initialization-only fallback: a
4586
4905
  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
4906
+ distribution. Initialization occurs on the first update so framework property bindings committed
4907
+ after connection in the same turn including `defaultSizes` and `storageKey` — are honored
4908
+ before the layout becomes live. Later reassignment never overwrites live drag/persisted state —
4909
+ set it once, at mount. Each entry is either a plain **number** (percent-of-container, validated unchanged: a
4589
4910
  pure-number array that does not sum to ~100, e.g. `[30, 60]`, is still rejected and falls through
4590
4911
  to the equal split) or a CSS **length string** (`'200px'`, `'20%'`, `'3rem'`). When at least one
4591
4912
  entry is a length string, every entry is resolved against the measured container (numbers as
@@ -4826,15 +5147,16 @@ position) survives the transition.
4826
5147
  - `backdropInset: string = ''` (attribute `backdrop-inset`) — overrides the fullscreen backdrop's
4827
5148
  CSS `inset` independently from `fullscreenInset`; when empty, it follows `fullscreenInset`
4828
5149
  - `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.
5150
+ chart/table toggle inside the same card chrome; `WidgetView { id: string; label?: string; icon?:
5151
+ TemplateResult; ariaLabel?: string }`. Each entry gets a header toggle button
5152
+ (`[part='view-toggle']`) and a `<slot name="view-${id}">`. An icon-only view should set
5153
+ `ariaLabel`; if both labels are omitted, the button uses `id` as a last-resort accessible name.
5154
+ Empty (the default) renders today's single unnamed default slot as the sole view, unchanged.
4833
5155
  - `activeView: string = ''` (attribute: false) — the currently active view's `id`; defaults to the
4834
5156
  first entry of `views` (or `''` when `views` is empty). Settable directly to control the active
4835
5157
  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.
5158
+ - `accessibleLabel: string | null = null` (attribute `aria-label`) — overrides the label-derived
5159
+ fullscreen dialog name.
4838
5160
  - `storageKey?: string` (attribute `storage-key`) — when set, persists `collapsed` to `localStorage`
4839
5161
  under `lr-widget:${storageKey}` and restores it on the next mount (mirrors `lr-app-rail`'s/
4840
5162
  `lr-table`'s identical `storage-key` pattern). Without a `storageKey` there is no persistence and
@@ -4917,6 +5239,11 @@ panel'`) and `widgetExpand` (default `'Expand panel'`) keys.
4917
5239
  to `widgetCollapse`/`widgetExpand`; the default English strings are unchanged, and `lr-dock-panel`
4918
5240
  itself is unaffected.
4919
5241
 
5242
+ **Additional API surface:**
5243
+
5244
+ - `part="view-icon"` — Decorative icon content inside a view toggle.
5245
+ - `part="view-label"` — Visible label text inside a view toggle.
5246
+
4920
5247
  ---
4921
5248
 
4922
5249
  ## `lr-carousel`
@@ -5118,9 +5445,8 @@ before, so rendering is unchanged. Otherwise shared tokens —
5118
5445
  Ordered multi-step wizard/form navigation: an index/label per step, `current`/`completed`/`disabled`/
5119
5446
  `error` state, and click-to-jump. First-party invention (no Web Awesome equivalent). Fully
5120
5447
  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).
5448
+ click, or Enter/Space on a non-disabled step, fires a non-cancelable `lr-step-select`, and the host
5449
+ decides whether/how `steps` changes in response.
5124
5450
 
5125
5451
  **Properties:**
5126
5452
  - `steps: StepItem[] = []` (attribute: false) — `StepItem { id: string; label: string; state:
@@ -5166,19 +5492,20 @@ convention).
5166
5492
  doesn't resolve to a length. Also reflected as `data-effective-orientation` (only present while
5167
5493
  `orientationBreakpoint` resolves to a usable length).
5168
5494
  - `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).
5495
+ `role="list"` step strip; attribute-reflects from a host-level `aria-label`. Unset, the list
5496
+ renders without an `aria-label` (there is no localized default name).
5171
5497
 
5172
5498
  **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`
5499
+ focused, on a non-`disabled` step. It is non-cancelable because the component takes no default
5500
+ action to veto: it never mutates `steps`. `lr-stepper-orientation-change`
5176
5501
  (`detail: { orientation }`) — fired only when an enabled `orientationBreakpoint` actually changes
5177
5502
  `effectiveOrientation`.
5178
5503
 
5179
5504
  **Slots:** none.
5180
5505
 
5181
- **CSS parts:** `base` (root wrapper, `role="tablist"`), `step` (a single step button, `role="tab"`),
5506
+ **CSS parts:** `base` (root wrapper, `role="list"`), `step-item` (the `role="listitem"` wrapper for
5507
+ one step), `step` (a single native button; the current step carries `aria-current="step"` and every
5508
+ other step carries `aria-current="false"`),
5182
5509
  `step-icon` (optional leading topic glyph from the step's `icon` field; only rendered when the step
5183
5510
  has one, additionally to — never instead of — `step-index`/`step-check`), `step-index` (the numbered
5184
5511
  index chip, shown for `pending`/`current`/`error` steps), `step-check` (the completed-checkmark
@@ -5229,9 +5556,9 @@ each falls back to the token its rule used before. Otherwise shared tokens —
5229
5556
  - there's no built-in "step forward/back" method — advancing the wizard is entirely the host's job:
5230
5557
  react to `lr-step-select` (or its own Next/Back buttons) and reassign `steps` with updated
5231
5558
  `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.
5559
+ - The stepper exposes ordered progress/navigation semantics (`list`/`listitem` plus native step
5560
+ buttons), not tabs: it owns no tab panels. Roving tabindex and orientation-aware arrow-key
5561
+ navigation remain available independently of those semantics.
5235
5562
  - Left/Right (horizontal) and Up/Down (vertical) are mutually exclusive per `orientation` — there's
5236
5563
  no single set of keys that works in both.
5237
5564
 
@@ -5450,6 +5777,12 @@ Otherwise shared tokens — `--lr-color-border`/`-surface`/`-text`/
5450
5777
  - the semantic `radiogroup` lives inside shadow DOM. Set `label` (preferred for reactive code) or a
5451
5778
  host `aria-label`; the component deliberately forwards the resulting name to that internal role.
5452
5779
 
5780
+ **Additional API surface:**
5781
+
5782
+ - `--lr-segmented-track-gap` — Gap between segments. Default: `var(--lr-size-0-125rem)`.
5783
+ - `--lr-segmented-track-radius` — Track corner radius. Default: `var(--lr-radius)`.
5784
+ - `--lr-segmented-track-padding` — Track inset padding. Default: `var(--lr-size-0-125rem)`.
5785
+
5453
5786
  ---
5454
5787
 
5455
5788
  ## `lr-virtual-list`
@@ -5519,7 +5852,7 @@ invention (no Web Awesome equivalent).
5519
5852
  - `overscan: number = 6` — extra rows rendered beyond the visible viewport on each side; finite
5520
5853
  values are floored and clamped to 0–100, while non-finite values use the default 6, so an invalid
5521
5854
  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`
5855
+ - `activeId: string | number | '' = ''` (attribute `active-id`) — when set and it matches a row's `keyFunction`
5523
5856
  result (compared with `Object.is` against the typed value — attribute values arrive as strings, so
5524
5857
  assign the property directly for a numeric key), that row is smoothly scrolled into view whenever
5525
5858
  this changes, and rendered with `aria-current="true"`.
@@ -5695,10 +6028,13 @@ content is never duplicated.
5695
6028
 
5696
6029
  Opting in to `resizable` adds a continuously draggable width for the `'full'` state: a
5697
6030
  `[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.
6031
+ `[minRailWidthPx, maxRailWidthPx]`. Set `storageKey` (attribute `storage-key`) to persist the fields
6032
+ selected by `persist` to `localStorage` under `lr-app-rail:${storageKey}` and restore them on the
6033
+ next mount (mirrors `lr-split`'s `storage-key`; effective `mode` is breakpoint-derived and never
6034
+ persisted). The backward-compatible allowlist is `open width`; use
6035
+ `persist="width preferred-mode"` for durable layout preference without restoring the transient
6036
+ mobile overlay. Without a `storageKey` there is no persistence — listen for `lr-rail-resize` and
6037
+ persist `widthPx` yourself.
5702
6038
  `preferredMode` separately lets a host manually prefer `'full'`/`'icon-only'` for the non-mobile
5703
6039
  breakpoint axis (e.g. a user's own collapse toggle) while `mobile-breakpoint` continues to be tracked
5704
6040
  automatically regardless — it's only consulted while `mode` isn't force-pinned via the `mode`
@@ -5743,9 +6079,14 @@ accessor itself, which still takes full priority.
5743
6079
  - `railWidthPx?: number` (attribute `rail-width-px`) — the rail's current width in px while
5744
6080
  `resizable`; settable/gettable directly. Unset defers to `--lr-app-rail-width`'s own resolved
5745
6081
  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.
6082
+ - `storageKey?: string` (attribute `storage-key`) — when set, persists the fields selected by
6083
+ `persist` to `localStorage` under `lr-app-rail:${storageKey}` and restores them on the next
6084
+ mount. Effective `mode` is breakpoint-derived and never persisted. Unset means no persistence.
6085
+ - `persist: string = 'open width'` — whitespace-separated field allowlist used with `storageKey`.
6086
+ Valid `AppRailPersistField` tokens are `open`, `width` (`railWidthPx`), and `preferred-mode`
6087
+ (`preferredMode`). The default preserves the existing open+width behavior. Use
6088
+ `persist="width preferred-mode"` when overlay-open state is controlled or should stay
6089
+ session-only.
5749
6090
  - `minRailWidthPx: number = 190` (attribute `min-rail-width-px`) — minimum `railWidthPx` a
5750
6091
  drag/keyboard resize can reach.
5751
6092
  - `maxRailWidthPx: number = 440` (attribute `max-rail-width-px`) — maximum `railWidthPx` a
@@ -6063,8 +6404,15 @@ returning to the trigger)
6063
6404
  **Slots:** `trigger` (the consumer's own trigger element — first assigned element wins if several
6064
6405
  are assigned; enhanced imperatively with `aria-haspopup="menu"`/`aria-expanded`/`aria-controls`
6065
6406
  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),
6407
+ component's shadow root. `aria-controls` targets the `lr-menu` host, which receives a stable
6408
+ generated id only when the consumer did not provide one, rather than the shadow-private list id.
6409
+ `lr-button`/`lr-icon-button` forward the popup/expanded values to their focused shadow-internal
6410
+ native control and resolve the controls element-reference across their shadow boundary. In a
6411
+ supporting browser, the reflected `ariaControlsElements` list is the source of truth and its setter
6412
+ intentionally clears the internal control's serialized `aria-controls` value; browsers without the
6413
+ API retain the string as a best-effort fallback), default
6414
+ (`<lr-menu-item>` elements, plus optionally plain `<hr>` dividers — native `<hr>` already carries
6415
+ an implicit `separator` role),
6068
6416
  `header` and `footer` (composed, deliberately non-menu-item content — a filter/search field, a
6069
6417
  section title, an "Apply"/"Done" button, a count — rendered above/below the items inside
6070
6418
  `[part="popup"]` but **outside** the `role="menu"` list. Both collapse to no box at all while
@@ -6192,6 +6540,12 @@ and the open popup also closes it, but deliberately does *not* refocus the trigg
6192
6540
  click itself already moved focus somewhere the user chose.
6193
6541
 
6194
6542
  **Known gotchas:**
6543
+ - A supporting browser reports `trigger.shadowRoot`'s focused control
6544
+ `getAttribute('aria-controls') === ''` after the element-reference relationship is assigned.
6545
+ Inspect `ariaControlsElements` instead. This is the platform's reflected-element-reference
6546
+ contract, not a missing menu id; setting the string again would discard the cross-shadow
6547
+ relationship. Browsers without that API keep the string fallback, and `aria-controls` itself is
6548
+ optional for the menu-button pattern.
6195
6549
  - `<lr-menu-item>`'s click handler lives on an inner shadow-DOM element (`[part="base"]`), not the
6196
6550
  host — calling `.click()` directly on the `<lr-menu-item>` host element in a test does **not**
6197
6551
  trigger selection; either click (or dispatch on) the element returned by
@@ -6246,8 +6600,10 @@ docked case.
6246
6600
  - `collapsible: boolean = false` (reflected)
6247
6601
  - `collapsed: boolean = false` (reflected)
6248
6602
  - `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.)
6603
+ is a fixed size. Its string-aware converter accepts `resizable="false"` as false despite the
6604
+ true default. A Lit property binding (`.resizable=${false}`) also disables it; a false
6605
+ boolean-attribute binding (`?resizable=${false}`) only removes the attribute and cannot override
6606
+ a true-defaulting property.
6251
6607
 
6252
6608
  **Exported helper:** `parseLengthPx(length: string, containerPx: number, fontSizeEl: Element =
6253
6609
  document.documentElement): number | undefined` — resolves an arbitrary CSS length (`px`, `rem`, `em`,
@@ -6399,6 +6755,11 @@ the `footer` slot, hidden entirely when empty).
6399
6755
  `<lr-button>` retargets to the host, but its composed path still contains the internal native
6400
6756
  `<button>`.
6401
6757
 
6758
+ **Additional API surface:**
6759
+
6760
+ - `accessibleLabel` — Host `aria-label` forwarded to the native no-href activation button. Type: `string | null`.
6761
+ - `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.
6762
+
6402
6763
  ---
6403
6764
 
6404
6765
  ## `lr-command-palette`
@@ -6451,6 +6812,13 @@ after `::part()`), so highlighting the active row previously required hijacking
6451
6812
  `--lr-color-brand-quiet` token and repainting everything else that read it. Unset, it falls back to
6452
6813
  that token, so rendering is unchanged.
6453
6814
 
6815
+ **Additional API surface:**
6816
+
6817
+ - `part="command-group"` — A labeled ARIA group containing visible command options.
6818
+ - `part="list-spacer"` — Virtual result extent inside the scrolling list.
6819
+ - `--lr-command-palette-row-height` — Virtual command-row height. Default: `var(--lr-size-3rem)`.
6820
+ - `--lr-command-palette-group-height` — Virtual group-heading height. Default: `var(--lr-size-2rem)`.
6821
+
6454
6822
  ## `lr-details`, `lr-accordion`, and `lr-accordion-item`
6455
6823
 
6456
6824
  `lr-details` is a native-semantics disclosure panel. `lr-accordion` coordinates slotted
@@ -6489,6 +6857,10 @@ set on the item, on `<lr-breadcrumb>`, or on any ancestor above the trail:
6489
6857
  `--lr-color-text-quiet` token and repainting everything else that read it. Unset, it falls back to
6490
6858
  that token.
6491
6859
 
6860
+ **Additional API surface:**
6861
+
6862
+ - `part="separator"` — Decorative separator shown before non-first items.
6863
+
6492
6864
  ## `lr-dashboard-grid`
6493
6865
 
6494
6866
  Responsive, keyboard-accessible controlled widget grid. It positions layout entries and emits
@@ -6515,6 +6887,10 @@ overriding them from a stylesheet has no effect — set the properties instead.
6515
6887
  preview of its own `:focus-visible` ring, shown because every cell is a real focusable,
6516
6888
  draggable/resizable target; set it to `transparent` to opt out of the hover treatment entirely.
6517
6889
 
6890
+ **Additional API surface:**
6891
+
6892
+ - `--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)`.
6893
+
6518
6894
  ## `lr-drilldown-panel`
6519
6895
 
6520
6896
  Controlled navigation shell from a chart or table datum to related evidence, documents, entities,
@@ -6533,10 +6909,25 @@ false), `accessibleLabel: string | null = null` (attribute `aria-label` — name
6533
6909
 
6534
6910
  Dashboard filter row that composes Lyra inputs and removable chips, with reset and loading states.
6535
6911
 
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`.
6912
+ **Properties:**
6913
+
6914
+ - `filters: FilterBarFilterDefinition[] = []` (attribute: false) — filter schema in render order.
6915
+ - `value: FilterBarValue = {}` (attribute: false) — current values keyed by filter id; reads and
6916
+ writes are shallow-copied.
6917
+ - `label: string = ''` — accessible name for the internal `role="group"`.
6918
+ - `disabled: boolean = false` (reflected) — disables every filter control and reset action.
6919
+ - `loading: boolean = false` (reflected) — shows the status spinner and disables reset while leaving
6920
+ filters editable.
6921
+ - `hasActiveFilters: boolean` (read-only) — whether any configured filter currently has a value.
6922
+ - `invalidFilterIds: string[]` (read-only) — ids of required filters whose values are unset.
6923
+
6924
+ **Methods:** `checkValidity(): boolean` returns whether every required filter is set without
6925
+ revealing errors; `reportValidity(): boolean` returns the same state and reveals every current
6926
+ required-field error; `reset(): void` restores each definition's `defaultValue` (or unsets it),
6927
+ unless the bar is disabled.
6928
+
6929
+ **Events:** `lr-input`, `lr-reset`, `lr-validity-change`. **CSS parts:** `base`, `controls`,
6930
+ `filter-control`, `active-filters`, `chips`, `chip`, `reset-button`, `status`.
6540
6931
 
6541
6932
  Each filter definition's `type` selects which existing Lyra input renders it — this component
6542
6933
  composes them and never invents a control of its own. `'select'`/`'combobox'` map to their
@@ -6611,8 +7002,8 @@ DOM.
6611
7002
 
6612
7003
  **Themeable custom properties:** `--lr-toast-accent-width` (4px),
6613
7004
  `--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`
7005
+ (`var(--lr-transition-base, 180ms ease-out)` — the show/hide lifecycle reads the resolved computed
7006
+ transition duration and uses it for its completion fallback), `--lr-toast-padding`
6616
7007
  (`var(--lr-space-m)`), `--lr-toast-font-size` (`1rem`) — both are auto-swapped per `size`, from a
6617
7008
  compact `xs` up to a roomier `xl` — `--lr-toast-accent-color` (defaults to `--lr-color-border`,
6618
7009
  auto-swapped per `variant` to `--lr-color-brand/-success/-warning/-danger`).
@@ -6656,10 +7047,8 @@ at another, since `placement` is a per-call option rather than a single global r
6656
7047
  ```
6657
7048
 
6658
7049
  **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.
7050
+ - the stack itself has no live-region role; each `lr-toast-item` owns the single `status`/`alert`
7051
+ role appropriate to its current variant, avoiding nested live-region announcements.
6663
7052
  - the close button's accessible name is derived from the toast's own message text (`"Close: <first
6664
7053
  40 chars>…"`, falling back to bare `"Close"` only when the toast has no text content) rather than
6665
7054
  a bare `"Close"` on every instance — useful when several toasts are stacked and a screen-reader or
@@ -6995,16 +7384,13 @@ already follow.
6995
7384
  whole pill using a loud-color-on-quiet-tint convention; `neutral` has no dedicated token pair, so
6996
7385
  it falls back to a plain bordered-surface look)
6997
7386
  - `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.
7387
+ - `selected: boolean = false` (reflected) — current value for opt-in toggle/pressed mode. Once
7388
+ toggle mode is active, a separate native `[part='toggle-button']` owns focus, Enter/Space/click
7389
+ activation, and explicit `"true"`/`"false"` `aria-pressed`; `[part='base']` remains a container
7390
+ and the default-slot label is inert. Activation proposes the opposite value through the
7391
+ cancelable `lr-chip-select` event and mutates `selected` only when that event is not prevented.
7392
+ Has no toggle effect when combined with `removable`, where the remove button is the sole control.
7393
+ `false` (with `toggleable` also left at its default) reproduces the passive label-pill output.
7008
7394
  - `toggleable: boolean = false` (reflected) — explicit opt-in into `selected`'s toggle/pressed
7009
7395
  interactive mode, independent of `selected`'s own current value. Setting `selected` to `true` at
7010
7396
  any point opts in automatically and keeps `toggleable` `true` from then on (enough for a chip that
@@ -7017,16 +7403,21 @@ already follow.
7017
7403
 
7018
7404
  **Events:** `lr-remove` (`detail: { value }` — the remove (×) button was activated via click or
7019
7405
  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)
7406
+ (`detail: { value, selected }` — cancelable; fired from the native toggle button on click or
7407
+ Enter/Space with the proposed next state when toggle mode is active and `removable` is not set.
7408
+ Calling `preventDefault()` keeps the current `selected` state unchanged)
7023
7409
 
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)
7410
+ **Methods:** `focus(options?)`, `blur()`, and `click()` forward to the active internal control
7411
+ (toggle or remove button); a passive chip's `click()` retains ordinary host behavior.
7412
+
7413
+ **Slots:** default (the chip's label content; inert in toggle mode, so move links/buttons outside a
7414
+ toggleable chip), `icon` (optional leading icon or status dot; nothing reserved for it — no extra
7415
+ gap — when left empty)
7026
7416
 
7027
7417
  **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`)
7418
+ entirely while empty), `label` (non-interactive wrapper around the default slot), `toggle-button`
7419
+ (the real native toggle control, rendered over the label in toggle mode), `remove-button` (the
7420
+ remove (×) affordance, only rendered while `removable`)
7030
7421
 
7031
7422
  **Themeable custom properties:** `--lr-chip-accent`, `--lr-chip-bg`, `--lr-chip-border`
7032
7423
  (component-local trio swapped per `tone` rather than repeating background/color/border per part per
@@ -7158,11 +7549,13 @@ string. First-party invention (no Web Awesome equivalent).
7158
7549
  (single letters/digits upper-cased).
7159
7550
 
7160
7551
  **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.
7552
+ word: string }` — one resolved token's rendered glyph and spelled-out word; `KbdLocalize = (key:
7553
+ string, fallback: string) => string`.
7554
+ `shortcutTokenLabel(rawToken: string, isMac: boolean, localize?: KbdLocalize): KbdKeyLabel`
7555
+ resolves a single token, parameterized on `isMac` so both platform branches are unit-testable
7556
+ without spoofing `navigator`; the optional callback localizes spoken key names.
7557
+ `parseShortcut(keys: string, isMac: boolean, localize?: KbdLocalize): KbdKeyLabel[]` splits and
7558
+ resolves a full `keys` string with the same optional localization callback.
7166
7559
 
7167
7560
  **Events:** none — purely presentational.
7168
7561
 
@@ -7206,6 +7599,13 @@ computed-label value so the two can never disagree.
7206
7599
  A click-triggered, light-dismiss floating surface positioned with the shared Floating UI positioner.
7207
7600
 
7208
7601
  **Properties:** `open`, `placement`, `distance`, `accessibleLabel` (`aria-label`), and `popupRole` (`popup-role`).
7602
+ The slotted trigger receives `aria-haspopup`, `aria-expanded`, and `aria-controls`.
7603
+ `aria-controls` targets the public `lr-popover` host (which receives a stable generated `id` when
7604
+ the consumer did not supply one), rather than the shadow-private popup, so the relationship
7605
+ resolves from a native light-DOM trigger. `lr-button` and `lr-icon-button` additionally reflect
7606
+ that host onto their focused shadow-internal controls through `ariaControlsElements`; supporting
7607
+ browsers intentionally serialize the internal control's `aria-controls` content attribute as an
7608
+ empty string after that assignment.
7209
7609
  **Methods:** `showAt(rect: { x, y, width?, height?, contextElement? }, options?: { returnFocusTo?:
7210
7610
  HTMLElement })` opens the popover anchored to an arbitrary rectangle instead of the slotted
7211
7611
  `trigger` — for a graph node, a canvas pixel, a chart datum, or any other non-DOM location
@@ -7218,8 +7618,10 @@ the anchor point moves on its own (e.g. a graph pan/zoom tick), re-call `showAt(
7218
7618
  coordinates to re-anchor — the popover stays open across such a call. A popover that never calls
7219
7619
  `showAt()` behaves exactly as before.
7220
7620
  `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.
7621
+ `{ focusTrigger: false }` to opt out of focus restoration. By default, `hide()`, Escape, light
7622
+ dismiss, and a bare `el.open = false` all return focus to the slotted trigger, or to a virtual
7623
+ anchor's explicit `returnFocusTo`; a virtual anchor with no return target closes without moving
7624
+ focus. No-op when already closed.
7223
7625
  **Events:** `lr-show`, `lr-hide`. **Slots:** `trigger`, default content. **CSS parts:** `trigger`,
7224
7626
  `popup`, `content`. **Themeable custom properties:** `--lr-overlay-max-inline-size` (default
7225
7627
  `--lr-size-20rem` — maximum inline size of the popup).
@@ -7241,6 +7643,14 @@ same way any tooltip closes, by setting `open = false`. **Slots:** `trigger`, de
7241
7643
  (default `--lr-size-20rem`), `--lr-tooltip-background` (default `--lr-color-neutral`), and
7242
7644
  `--lr-tooltip-color` (default `--lr-color-on-neutral`).
7243
7645
 
7646
+ While open, trigger `aria-describedby` points to a hidden text proxy in the tooltip's light DOM,
7647
+ not the shadow-private popup. Native triggers resolve that ID directly. `lr-button` and
7648
+ `lr-icon-button` resolve the same proxy onto their focused shadow-internal controls through
7649
+ `ariaDescribedByElements`; in supporting browsers that explicit element-reference assignment
7650
+ intentionally leaves the internal control's serialized `aria-describedby` value empty. Existing
7651
+ author-provided descriptions are merged while open and restored when the trigger is replaced or
7652
+ the tooltip disconnects.
7653
+
7244
7654
  **`showAt()` composed with `lr-graph`** — anchoring a popover to a clicked graph node. Note:
7245
7655
  `lr-graph.getNodePosition()` and the `lr-node-click` event's `{ x, y }` are in the graph's own
7246
7656
  *local drawing space* (pre pan/zoom), not viewport pixels, so they can't be passed to `showAt()`
@@ -7268,6 +7678,8 @@ menu-item behavior is needed.
7268
7678
  **Properties:** `open`, `placement`, `distance`, `accessibleLabel` (`aria-label`), and `popupRole` (`popup-role`).
7269
7679
  `popupRole` is seeded to `'menu'` in the constructor — that is the only difference from `lr-popover`,
7270
7680
  whose whole surface (including `showAt()`) is inherited unchanged.
7681
+ Its trigger therefore uses the same public-host `aria-controls` target and Lyra-button
7682
+ element-reference forwarding described above.
7271
7683
  **Events:** `lr-show`, `lr-hide` — inherited from `lr-popover`; neither fires for the initial render.
7272
7684
  **Slots:** `trigger`, default menu content. **CSS parts:** `trigger`, `popup`, `content`.
7273
7685
  **Themeable custom properties:** `--lr-overlay-max-inline-size` (default `--lr-size-20rem` —
@@ -7304,6 +7716,12 @@ The rendered progressbar exposes `aria-valuemin`, `aria-valuemax`, and `aria-val
7304
7716
  determinate.
7305
7717
 
7306
7718
  **Slots:** `label`. **CSS parts:** `base`, `track`, `indicator`, `label`.
7719
+ **Themeable custom properties:** `--lr-progress-height` (default `var(--lr-size-0-5rem)`) — the
7720
+ block size of the progress track.
7721
+
7722
+ **Additional API surface:**
7723
+
7724
+ - `--lr-progress-duration` — Indeterminate sweep timing. Default: `var(--lr-transition-ambient)`.
7307
7725
 
7308
7726
  ## `lr-progress-ring`
7309
7727
 
@@ -7384,6 +7802,12 @@ inside each star, clipped to the fractional `precision` value). **Themeable cust
7384
7802
  (default `--lr-color-border` — unfilled-star color), and `--lr-rating-size` (default
7385
7803
  `--lr-font-size-xl` — star size).
7386
7804
 
7805
+ **Additional API surface:**
7806
+
7807
+ - `blur()` — Forwards host blur to the internal rating control.
7808
+ - `click()` — Forwards host activation to the internal rating control.
7809
+ - `focus()` — Forwards host focus to the internal rating control.
7810
+
7387
7811
  # Utilities, formatting & observers (`components/utility/`)
7388
7812
 
7389
7813
  ## `lr-export-button`
@@ -7414,12 +7838,14 @@ immediately) or multi-format (click opens a small menu).
7414
7838
  name and feeds the localized format-menu name without changing the visible label
7415
7839
  - `open: boolean = false` (reflected)
7416
7840
 
7417
- **Methods:** `focus(options?)` and `blur()` forward to the native trigger button.
7841
+ **Methods:** `focus(options?)`, `blur()`, and `click()` forward to the native trigger button.
7418
7842
 
7419
7843
  **Events:** `lr-export` (`detail: { format: string }`, **cancelable** — call `preventDefault()` to
7420
7844
  substitute your own server-generated download instead of the built-in client-side one),
7421
7845
  `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)
7846
+ built-in download completes), `lr-export-error` (`detail: { format: 'csv' | 'json', error:
7847
+ unknown }`, fires when a built-in export cannot be serialized or downloaded; activation does not
7848
+ throw into consumer code), `lr-show`, `lr-hide` (format-menu visibility transitions)
7423
7849
 
7424
7850
  **Slots:** none.
7425
7851
 
@@ -7521,6 +7947,10 @@ buttons, this has no code/JSON content model to adopt just to reuse the copy aff
7521
7947
  and some engines throw synchronously rather than rejecting — either way `lr-copy` still fires
7522
7948
  with the intended text so a consumer can always show its own confirmation/fallback UI.
7523
7949
 
7950
+ **Additional API surface:**
7951
+
7952
+ - `click()` — Activates the native button, matching the host focus/blur forwarding contract.
7953
+
7524
7954
  ---
7525
7955
 
7526
7956
  ## `lr-resize-observer`
@@ -7591,8 +8021,10 @@ stack overflow on cyclic `data`.
7591
8021
  **Methods:** `runSearch(query)` sets the declarative `search` property and awaits the recompute,
7592
8022
  resolving the match count — named distinctly from `search` because a class member can't share a name
7593
8023
  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.
8024
+ (wrapping), reveal that selected match even when one of its ancestors was explicitly collapsed,
8025
+ mark it as the active `aria-current` result, announce its position, and scroll it into view;
8026
+ they resolve `false` when there are no matches. `clearSearch()` resets `search` to `''`, clearing all
8027
+ matches and the cursor.
7596
8028
 
7597
8029
  **Events:** `lr-copy` (`detail: { text: string }`) — fired by the top-level copy button or a
7598
8030
  per-node one. Fires even when `navigator.clipboard` is unavailable or the write silently failed
@@ -7623,7 +8055,13 @@ until `max-height` is set), `--lr-json-viewer-font` (default `var(--lr-font-mono
7623
8055
  `--lr-json-viewer-match-bg` (default `var(--lr-color-warning-quiet)`) — background, and surrounding
7624
8056
  box-shadow, of a key/value that currently matches `search`. Component-scoped indirection over the
7625
8057
  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
8058
+ without repainting every other warning-toned surface that reads the same shared token;
8059
+ `--lr-json-viewer-active-outline` (default `var(--lr-focus-ring-color)`) — outline color for the
8060
+ current imperative search match; `--lr-json-viewer-string-color` (default
8061
+ `var(--lr-color-success)`), `--lr-json-viewer-number-color` (default `var(--lr-color-brand)`),
8062
+ `--lr-json-viewer-boolean-color` (default `var(--lr-color-warning)`), and
8063
+ `--lr-json-viewer-null-color` (default `var(--lr-color-text-quiet)`) — per-value-type color hooks.
8064
+ Plus shared
7627
8065
  tokens `--lr-color-border/-surface/-text/-text-quiet/-brand/-brand-quiet/-success/-warning/-warning-quiet`,
7628
8066
  `--lr-radius`, `--lr-space-xs/-s/-l`, `--lr-focus-ring-width/-color/-offset`,
7629
8067
  `--lr-transition-fast`.
@@ -7649,9 +8087,11 @@ html`<lr-json-viewer .data=${apiResponse} copyable max-height="24rem" search=${q
7649
8087
  binding, never as a plain HTML attribute.
7650
8088
  - Search highlighting auto-expands only the *ancestors* of a match, not the whole tree — a
7651
8089
  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.
8090
+ - An explicit per-node expand/collapse (from clicking a node's `toggle` button) overrides
8091
+ `collapsedDepth` and declarative search-driven auto-expansion for that path. Imperative
8092
+ `searchNext()`/`searchPrevious()` navigation may reopen the ancestors of the selected result so
8093
+ the active match is never hidden; otherwise the override persists until `data` is reassigned with
8094
+ a different shape.
7655
8095
  - Per-node copy buttons call `stopPropagation()` on click so clicking one doesn't also toggle the
7656
8096
  row's expand/collapse state.
7657
8097
 
@@ -7819,10 +8259,11 @@ via an internal `<lr-live-region>` in polite mode.
7819
8259
 
7820
8260
  A caret-anchored, keyboard-navigable popover for `@`-mention and `/`-slash-command autocomplete
7821
8261
  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.
8262
+ equivalent). On platforms accepting cross-root ARIA element reflection, the host's own input keeps
8263
+ focus and `syncActiveDescendant()` points it at the active option. Where that reference is rejected,
8264
+ `focusActiveOption()` moves real focus into this component's shadow listbox so the focus owner and
8265
+ option share one tree scope. A string `aria-activedescendant` cannot resolve from a host input in
8266
+ the document into an option in this component's shadow root.
7826
8267
 
7827
8268
  **Properties:**
7828
8269
  - `anchor?: HTMLElement` (attribute: false) — the element to position the popup relative to. A
@@ -7842,18 +8283,26 @@ own listbox.
7842
8283
  - `filteredItems: MentionItem[]` — read-only getter; `items` filtered by `query` via `filter` (or
7843
8284
  the built-in default). Empty `query` returns `items` unfiltered.
7844
8285
  - `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).
8286
+ internal row, or `null` while closed or when `filteredItems` is empty. Useful for diagnostics and
8287
+ same-tree consumers; do not copy it to an external control as a string IDREF.
8288
+ - `activeDescendantElement: HTMLElement | null` — read-only getter; the highlighted shadow option
8289
+ for the platform's element-reference ARIA API.
8290
+ - `listboxId: string` — read-only getter; the internal `id` of the `role="listbox"` element. Like
8291
+ `activeDescendantId`, it cannot form a cross-shadow string IDREF from a host input.
8292
+
8293
+ **Methods:**
8294
+ - `handleKeyDown(e: KeyboardEvent): boolean` the host's own text-control `keydown` handler calls
8295
+ this while the popover is open. Handles `ArrowDown`/`ArrowUp` (moves the highlight) and
8296
+ `Enter`/`Tab` (commits the highlighted row) both pairs return `false` with no
8297
+ `preventDefault()` when `filteredItems` is empty, letting the keystroke fall through to the
8298
+ host's own control unchanged. `Escape` closes with no selection. Returns `true` whenever the key
8299
+ was intercepted and `false` for keys the method does not recognize.
8300
+ - `syncActiveDescendant(control: HTMLElement): boolean` — clears any string
8301
+ `aria-activedescendant`, then applies `ariaActiveDescendantElement` when the platform accepts the
8302
+ cross-root reference. Returns whether that reference was accepted.
8303
+ - `focusActiveOption(): Promise<boolean>` — same-tree fallback after a consumed navigation key
8304
+ when `syncActiveDescendant()` returns `false`. Focuses the active option, lets the popover handle
8305
+ subsequent navigation, and restores focus to `anchor` when the popover closes.
7857
8306
 
7858
8307
  **Exported types:** `MentionItem { id: string; label: string; description?: string; icon?: string
7859
8308
  }`; `MentionFilter = (item: MentionItem, query: string) => boolean`; `MentionSelectDetail { id:
@@ -7895,7 +8344,13 @@ available space. See `lr-tour` for the shared-clamp note.
7895
8344
  const popover = document.getElementById('mentions');
7896
8345
 
7897
8346
  textarea.addEventListener('keydown', (e) => {
7898
- if (popover.open && popover.handleKeyDown(e)) return; // consumed
8347
+ if (popover.open && popover.handleKeyDown(e)) {
8348
+ if (!popover.syncActiveDescendant(textarea) &&
8349
+ (e.key === 'ArrowDown' || e.key === 'ArrowUp')) {
8350
+ void popover.focusActiveOption();
8351
+ }
8352
+ return;
8353
+ }
7899
8354
  });
7900
8355
  textarea.addEventListener('input', () => {
7901
8356
  popover.anchor = textarea;
@@ -7905,6 +8360,7 @@ available space. See `lr-tour` for the shared-clamp note.
7905
8360
  ];
7906
8361
  popover.query = 'a'; // detected since the trigger character
7907
8362
  popover.open = true;
8363
+ popover.updateComplete.then(() => popover.syncActiveDescendant(textarea));
7908
8364
  });
7909
8365
 
7910
8366
  popover.addEventListener('lr-mention-select', (e) => {
@@ -7915,11 +8371,11 @@ available space. See `lr-tour` for the shared-clamp note.
7915
8371
 
7916
8372
  Integration is entirely the host's responsibility: detect a mention/command trigger in the host's
7917
8373
  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.
8374
+ through `handleKeyDown()` while open, and call `syncActiveDescendant()` after opening and after each
8375
+ consumed navigation key. If it returns `false`, call `focusActiveOption()` after the first consumed
8376
+ ArrowUp/ArrowDown so the fallback owns navigation from then on. Setting `open = false` whenever the
8377
+ query stops looking like an active mention context (a space typed, the trigger deleted, the input
8378
+ blurred, …) is also the host's job `lr-mention-close` fires automatically from that.
7923
8379
 
7924
8380
  Positioning measures exactly where the caret currently paints via a hidden-mirror-element technique
7925
8381
  (`caretClientRect()`) and positions against that single point with `internal/positioner.js`'s
@@ -7931,6 +8387,9 @@ fresh `query` is the proxy for "the caret may have moved").
7931
8387
  - a host-level `aria-label` attribute on `<lr-mention-popover>` now takes priority over `label`
7932
8388
  (and its localized default) when resolving `[part="listbox"]`'s accessible name — previously it
7933
8389
  was silently ignored. Matches the same fallback on `<lr-combobox>`/`<lr-table>`.
8390
+ - Never copy `activeDescendantId` or `listboxId` onto a document-owned control as a string ARIA
8391
+ IDREF; shadow-root IDs are outside that control's tree scope. Use `syncActiveDescendant()` and its
8392
+ `focusActiveOption()` fallback.
7934
8393
  - The popover opens pre-highlighted on the top match (index 0), unlike `<lr-combobox>`'s own
7935
8394
  listbox which opens with nothing highlighted (`-1`) — a bare Enter right after opening commits
7936
8395
  immediately.
@@ -7977,6 +8436,9 @@ First-party invention (no Web Awesome equivalent).
7977
8436
  - `contextLines: number | undefined` (attribute: `context-lines`) — keeps this many unchanged
7978
8437
  lines around each change and collapses longer unchanged runs into a localized fold marker. The
7979
8438
  default `undefined` shows every line; negative and non-finite values also disable folding.
8439
+ - `maxLines: number = 5000` (attribute `max-lines`) — maximum logical lines accepted on either
8440
+ side. Larger input renders the localized `diffViewTooLarge` fallback without computing or
8441
+ highlighting the diff. Set the property to `Infinity` explicitly to opt into unbounded diffing.
7980
8442
 
7981
8443
  **Events:** `lr-copy` (`detail: { text: string }` — the full unified-diff text, fired on
7982
8444
  copy-button activation regardless of whether the clipboard write actually succeeded).
@@ -7987,7 +8449,8 @@ copy-button activation regardless of whether the clipboard write actually succee
7987
8449
  `data-type="equal"|"add"|"remove"|"empty"|"fold"` — `"empty"` is an unbalanced-replace placeholder cell in
7988
8450
  `layout="split"` and never carries a `+`/`-` prefix; `"fold"` is the localized unchanged-lines
7989
8451
  marker), `copy-button` (the copy affordance, only
7990
- rendered while `copyable`), `side` (one column in `layout="split"`, `data-side="old"|"new"`).
8452
+ rendered while `copyable`), `limit` (the localized over-`maxLines` fallback), `side` (one column in
8453
+ `layout="split"`, `data-side="old"|"new"`).
7991
8454
 
7992
8455
  **Themeable custom properties:** `--lr-diff-view-font` (default `var(--lr-font-mono)`), plus
7993
8456
  shared tokens `--lr-color-border`/`-surface`/`-success`/`-success-quiet`/`-danger`/
@@ -8015,13 +8478,22 @@ same line-diff function this component's own `render()`/copy handler call, expos
8015
8478
  consumer can compute or unit-test the same alignment without instantiating the element at all.
8016
8479
 
8017
8480
  **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.
8481
+ - line splitting normalizes LF, CRLF, and lone CR endings before alignment and syntax-token indexing,
8482
+ so files that differ only by line-ending convention do not appear wholly changed.
8483
+ - alignment uses Hirschberg longest-common-subsequence matching: O(n·m) time with linear working
8484
+ memory. The 5,000-line per-side default ceiling bounds pathological inputs; `Infinity` is an
8485
+ explicit performance-risk opt-out.
8486
+ - the computed `diffOps` state is cached and recomputed only when `oldText`, `newText`, or
8487
+ `maxLines` changes. Copy-confirmation and other unrelated renders reuse the cached alignment.
8488
+
8489
+ **Additional API surface:**
8490
+
8491
+ - `--lr-diff-view-add-background` — Added-line background.
8492
+ - `--lr-diff-view-add-color` — Added-line text color.
8493
+ - `--lr-diff-view-remove-background` — Removed-line background.
8494
+ - `--lr-diff-view-remove-color` — Removed-line text color.
8495
+ - `--lr-diff-view-fold-color` — Fold-marker text color.
8496
+ - `--lr-diff-view-fold-background` — Fold-marker background.
8025
8497
 
8026
8498
  ---
8027
8499
 
@@ -8251,6 +8723,10 @@ The two height knobs work as a pair on `[part='field-input']`, the same way
8251
8723
  - The host carries a `:state(blank)` custom state whenever `value === ''`, and `data-invalid` only
8252
8724
  once touched (first blur out of the whole control) and actually invalid.
8253
8725
 
8726
+ **Additional API surface:**
8727
+
8728
+ - `click()` — Activates the first native field in locale order.
8729
+
8254
8730
  ## `lr-random-content`
8255
8731
 
8256
8732
  Shows a chosen subset of its slotted children and hides the rest — A/B copy testing, testimonial
@@ -8267,6 +8743,8 @@ children; nothing is moved or cloned.
8267
8743
  - `animation: 'none' | 'fade' | 'fade-up' | 'fade-down' | 'fade-left' | 'fade-right' = 'none'`
8268
8744
  (reflected) — entrance effect applied to a child the instant it becomes shown
8269
8745
  - `autoplay: boolean = false` (reflected)
8746
+ - `paused: boolean = false` (reflected) — suppresses autoplay. The built-in pause/resume action
8747
+ toggles this state; a programmatic assignment remains silent.
8270
8748
  - `autoplayInterval: number = 3000` (attribute `autoplay-interval`) — clamped to a 1000 ms floor
8271
8749
 
8272
8750
  **Methods:** `randomize(): HTMLElement[]` — re-selects using the current `mode`, applies
@@ -8282,7 +8760,8 @@ each autoplay tick; never when the eligible pool is empty.
8282
8760
  **CSS parts:** `base` — the wrapper around the default slot; carries `role="status"`,
8283
8761
  `aria-atomic="true"`, and `aria-live="polite"`, downgraded to `aria-live="off"` while `autoplay` is
8284
8762
  on (a self-rotating region announcing on every tick would be spam). A host `aria-label` attribute is
8285
- forwarded onto it.
8763
+ forwarded onto it. `pause-button` — the localized autoplay pause/resume action, rendered only while
8764
+ `autoplay` is enabled and exposed as a toggle with `aria-pressed`.
8286
8765
 
8287
8766
  **Themeable custom properties:** `--lr-random-content-animation-duration` (default `300ms`),
8288
8767
  `--lr-random-content-animation-easing` (default `ease`),
@@ -8290,8 +8769,8 @@ forwarded onto it.
8290
8769
  directional `fade-*` effects).
8291
8770
 
8292
8771
  **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()`.
8772
+ - There is no next/previous/shuffle action; the only built-in control is the autoplay pause/resume
8773
+ button. Selection changes via autoplay or `randomize()`.
8295
8774
  - Autoplay is suppressed entirely under `prefers-reduced-motion: reduce`, and whenever the eligible
8296
8775
  pool has fewer than 2 children. The preference is re-observed live, not just read once.
8297
8776
  - `fade-left`/`fade-right` are physical-direction transforms (upstream naming), deliberately **not**
@@ -8554,6 +9033,10 @@ import '@aceshooting/lyra-ui/components/media/flag/flag-peer.js';
8554
9033
  (`variant="detailed"` is the replacement); left unset, `variant` falls back to honoring `detailed`
8555
9034
  for one more minor version before removal.
8556
9035
 
9036
+ **Additional API surface:**
9037
+
9038
+ - `part="error"` — Localized alert rendered when the optional peer resolver is unavailable or fails.
9039
+
8557
9040
  ---
8558
9041
 
8559
9042
  ## `lr-playback`
@@ -8570,8 +9053,8 @@ Steps an index through `[0, length)` on a fixed interval — play/pause for time
8570
9053
  change-tracking sees it and auto-pauses on `hidden = true`)
8571
9054
 
8572
9055
  **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.
9056
+ idempotent/clamped; `length <= 1` is a no-op degenerate case. `focus(options?)`, `blur()`, and
9057
+ `click()` forward to the play button.
8575
9058
 
8576
9059
  **Events:** `lr-play`, `lr-pause` (no detail), `lr-step` (`detail: { index }`, fired on every
8577
9060
  tick and manual step); internal `focus`/`blur` are bridged as bubbling, composed host events.
@@ -8682,13 +9165,20 @@ not installed)
8682
9165
  **Themeable custom properties:** shared tokens only — `--lr-space-xs/-s`, `--lr-color-surface`,
8683
9166
  `--lr-color-border`, `--lr-shadow`, `--lr-radius`.
8684
9167
 
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).
9168
+ **Optional peer deps:** `maplibre-gl` `>=5 <7` (lazy-loaded). The consumer must **separately**
9169
+ import `maplibre-gl/dist/maplibre-gl.css`. MapLibre v5's standard build includes its worker.
9170
+ MapLibre v6 is ESM-only, requires WebGL2, and additionally needs its module-worker URL configured
9171
+ for the bundler once — the component cannot choose a bundler-specific worker URL. For Vite with
9172
+ v6:
8687
9173
 
8688
9174
  ```html
8689
9175
  <lr-map center="[2.35, 48.85]" zoom="10"></lr-map>
8690
- <script>
9176
+ <script type="module">
9177
+ import { setWorkerUrl } from 'maplibre-gl';
9178
+ import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';
8691
9179
  import 'maplibre-gl/dist/maplibre-gl.css';
9180
+ setWorkerUrl(workerUrl);
9181
+
8692
9182
  const m = document.querySelector('lr-map');
8693
9183
  m.choropleth = {
8694
9184
  sourceId: 'regions',
@@ -8702,6 +9192,10 @@ not installed)
8702
9192
  </script>
8703
9193
  ```
8704
9194
 
9195
+ Webpack, esbuild, Rollup, and direct-browser ESM use different worker URL forms; use MapLibre's ESM
9196
+ installation guide for the matching setup:
9197
+ https://maplibre.org/maplibre-gl-js/docs/#esm.
9198
+
8705
9199
  **Known gotchas:**
8706
9200
  - clearing or swapping the choropleth no longer leaks the old layer: setting `choropleth =
8707
9201
  undefined`, or changing `choropleth.sourceId` to a different value, now calls `removeLayer`/
@@ -8818,17 +9312,18 @@ tokens — `--lr-space-xs`, `--lr-space-l`,
8818
9312
  **Optional peer deps:** none.
8819
9313
 
8820
9314
  ```html
8821
- <lr-file-input multiple accept=".csv,.xlsx" allowed-mime-types='["text/csv"]'></lr-file-input>
9315
+ <lr-file-input id="dataset-files" multiple accept=".csv,.xlsx"></lr-file-input>
8822
9316
  <script>
8823
- document.querySelector('lr-file-input').addEventListener('lr-files', (e) => {
9317
+ const input = document.querySelector('#dataset-files');
9318
+ input.allowedMimeTypes = ['text/csv'];
9319
+ input.addEventListener('lr-files', (e) => {
8824
9320
  console.log('accepted:', e.detail.files, 'rejected:', e.detail.rejected); // rejected[i].reason
8825
9321
  });
8826
9322
  </script>
8827
9323
  ```
8828
9324
 
8829
9325
  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.
9326
+ them via JS (`el.allowedMimeTypes = [...]`), not as a JSON string attribute.
8832
9327
 
8833
9328
  `accept.ts` exports `matchesAccept(file, accept, assumeExtensionMatch?)` (internal — not
8834
9329
  re-exported from the package root) — parses the same three `accept` forms the browser's native
@@ -8841,8 +9336,7 @@ an extension-only `accept` list.
8841
9336
  **Known gotchas:**
8842
9337
  - Paste-from-clipboard **is** supported and on by default: a `paste` event on the dropzone reads
8843
9338
  `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.)
9339
+ Set `paste="false"` (or `.paste = false`) to opt out.
8846
9340
  - Dragged folders **are** detected via `webkitGetAsEntry()` and reported as
8847
9341
  `rejected[].reason === 'directory'` (paired with a synthetic zero-byte `File` carrying the folder
8848
9342
  name), not silently accepted as a phantom file.
@@ -8873,6 +9367,8 @@ Before/after comparison surface with two named slots and a keyboard-accessible n
8873
9367
  **Events:** `lr-position-change` (`detail: { position }`), plus composed `focus` and `blur` events
8874
9368
  from the internal range handle.
8875
9369
 
9370
+ **Methods:** `focus(options?)`, `blur()`, and `click()` forward to the internal range handle.
9371
+
8876
9372
  **Slots:** `before`, `after`.
8877
9373
 
8878
9374
  **CSS parts:** `base`, `before`, `after`, `divider`, and `handle`.
@@ -9116,6 +9612,9 @@ drop-in still does something useful, but `lr-open` fires first — a host callin
9116
9612
  `preventDefault()` on it suppresses that default download/open so it can substitute its own
9117
9613
  handling.
9118
9614
 
9615
+ **Methods:** `focus(options?)`, `blur()`, and `click()` forward to the primary action for the
9616
+ current media kind.
9617
+
9119
9618
  **Slots:** none.
9120
9619
 
9121
9620
  **CSS parts:** `base` (a `<button>` for `kind="image"`, a plain wrapper `<div>` for `kind="video"`,
@@ -9252,6 +9751,10 @@ hidden via CSS by default, exposed as a part only so a consumer can override tha
9252
9751
  scope-limited by design to firing `lr-camera-request`/`lr-audio-request` and nothing else. The
9253
9752
  hidden input is only rendered when `capabilities` contains `files` or `image`.
9254
9753
 
9754
+ **Additional API surface:**
9755
+
9756
+ - `click()` — Activates the internal attachment trigger.
9757
+
9255
9758
  ---
9256
9759
 
9257
9760
  ## `lr-avatar`
@@ -9371,6 +9874,10 @@ backgrounded circle around the button; only rendered once loaded and error-free)
9371
9874
  browser's native decode loop keeps running while visually covered; only opacity and `aria-hidden`
9372
9875
  swap.
9373
9876
 
9877
+ **Additional API surface:**
9878
+
9879
+ - `click()` — Activate the play/pause control.
9880
+
9374
9881
  ## `lr-animation`
9375
9882
 
9376
9883
  Declaratively animates one slotted element through the native Web Animations API.
@@ -9609,12 +10116,18 @@ mode is on. The toggle carries its own glyph in `--lr-color-text`, so keep a 4.5
9609
10116
  when overriding the background. `--lr-image-viewer-highlight-active-color` (default
9610
10117
  `var(--lr-color-brand)`) — the outline of the `[part='highlight']` matching `activeHighlightId`,
9611
10118
  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.
10119
+ carries. Highlight tone styling is exposed through `--lr-image-viewer-highlight-border`,
10120
+ `--lr-image-viewer-highlight-bg`, and the tone-specific
10121
+ `--lr-image-viewer-highlight-success-border`, `--lr-image-viewer-highlight-success-bg`,
10122
+ `--lr-image-viewer-highlight-warning-border`, `--lr-image-viewer-highlight-warning-bg`,
10123
+ `--lr-image-viewer-highlight-danger-border`, `--lr-image-viewer-highlight-danger-bg`,
10124
+ `--lr-image-viewer-highlight-neutral-border`, and `--lr-image-viewer-highlight-neutral-bg`
10125
+ properties. These properties are declared as inline `var()` fallbacks at the point of use rather
10126
+ than on `:host`, so each can be set on the element *or on any ancestor*:
10127
+ `::part(highlight)[data-active]` is invalid CSS — Shadow Parts forbids an attribute selector after
10128
+ `::part()` — which previously left overriding the library-wide
10129
+ `--lr-color-brand`/`--lr-color-brand-quiet` tokens as the only lever, repainting every other
10130
+ element that read them. Unset, each falls back to the token its rule used before.
9618
10131
 
9619
10132
  ## `lr-av-player`
9620
10133
 
@@ -9626,8 +10139,8 @@ distinct from `<lr-transcript-feed>` (live captions for an in-progress voice ses
9626
10139
  `anchorKinds: ['time-range']` only — no text selection is bound. The transcript virtualizes through
9627
10140
  `<lr-virtual-list>` the same way `lr-pdf-viewer` virtualizes pages.
9628
10141
 
9629
- **Properties:** `src: string = ''`, `name: string = ''`, `kind?: 'audio' | 'video'` (attribute:
9630
- false auto-detection override), `mimeType: string = ''` (attribute `mime-type`), `poster: string =
10142
+ **Properties:** `src: string = ''`, `name: string = ''`, `kind?: 'audio' | 'video'`
10143
+ (attribute-backed auto-detection override), `mimeType: string = ''` (attribute `mime-type`), `poster: string =
9631
10144
  ''`, `loop: boolean = false`, `muted: boolean = false`, `preload: 'none' | 'metadata' | 'auto' =
9632
10145
  'metadata'`, `playbackRate: number = 1` (attribute `playback-rate`, reflected), `rates: number[] =
9633
10146
  [0.75, 1, 1.25, 1.5, 2]` (attribute: false), `cues: LyraAvCue[] = []` (attribute: false), `peaks:
@@ -9766,22 +10279,36 @@ Chart.js wrapper every other `lr-*-chart` tag subclasses; supports both a simpli
9766
10279
  - `appendData(label, values, maxPoints?)` — appends one aligned numeric category and optionally
9767
10280
  keeps only the newest `maxPoints`; point-based scatter/bubble series are left unchanged
9768
10281
 
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
10282
+ **Methods:** `resetZoom()` resets any active zoom/pan to the original view. `refreshTheme()` forces
10283
+ a redraw so the `--lr-chart-*` tokens below are re-read from the current computed style. A
9773
10284
  built-in `ThemeWatcher` now calls this automatically when `prefers-color-scheme` flips or an
9774
10285
  ancestor's `class`/`style`/`data-theme`/`data-color-scheme` attribute mutates — the most common
9775
10286
  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)
10287
+ escape hatch for theme changes those signals can't observe. `exportData('csv' | 'png')` returns a
10288
+ spreadsheet-safe CSV snapshot or the current PNG data URL when Chart.js is loaded.
10289
+
10290
+ The instance method `seriesPalette(): string[]` resolves the categorical series ramp
10291
+ (`--lr-color-chart-1..8`) through `getComputedStyle` and returns the concrete, theme-aware colors —
10292
+ the exact same values the chart hands any series that sets no `color` of its own. Each internal
10293
+ token resolves through the matching application input (`--lr-theme-color-chart-1..8`), so theme
10294
+ overrides are included.
10295
+
10296
+ The module also exports `seriesPalette(scope?: Element | null): string[]`, which can run before a
10297
+ chart exists. Omit `scope` to read `document.documentElement`, pass an element to resolve its theme
10298
+ scope, or pass `null` to request the light-mode fallback directly. When a scope has no component
10299
+ token layer yet, the helper reads the `--lr-theme-color-chart-N` inputs directly. Both forms return
10300
+ a fresh eight-color array each call (safe to mutate) and let chart-adjacent UI, KPI tiles, or the
10301
+ `Series` array itself come from one source of truth.
9777
10302
 
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).
10303
+ ```ts
10304
+ import { seriesPalette } from '@aceshooting/lyra-ui/components/charts/chart/chart.js';
10305
+
10306
+ const colors = seriesPalette();
10307
+ const series = [
10308
+ { label: 'Revenue', data: [12, 19], color: colors[0] },
10309
+ { label: 'Costs', data: [7, 11], color: colors[1] },
10310
+ ];
10311
+ ```
9785
10312
 
9786
10313
  **Events:** `lr-zoom` (`detail: { zoomed: boolean }`, fired on zoom-complete and on
9787
10314
  `resetZoom()`), `lr-point-click` (fired when a click lands on, or nearest to — intersect-only —
@@ -10171,8 +10698,8 @@ instead of `canvas` when the optional box-plot peer fails to load)
10171
10698
  (also `getComputedStyle`-resolved on every draw), but declared in its own stylesheet, not a
10172
10699
  re-export: `lr-box-plot` has no `zoom`, so no `reset-zoom-button` chrome exists here.
10173
10700
 
10174
- **Optional peer deps:** `@sgratzl/chartjs-chart-boxplot` (plus `chart.js` transitively, loaded
10175
- independently of the base `chart-loader.ts`).
10701
+ **Optional peer deps:** `@sgratzl/chartjs-chart-boxplot` plus `chart.js`; Chart.js is obtained
10702
+ through the same cached `chart-loader.ts` used by `lr-chart`.
10176
10703
 
10177
10704
  ```html
10178
10705
  <lr-box-plot y-label="Latency (ms)"></lr-box-plot>
@@ -10296,7 +10823,10 @@ used both for `status="converting"` and this component's own in-flight text fetc
10296
10823
  rendered when `src` is set *and* passes the link-safe scheme allowlist — see the URL-safety note
10297
10824
  above; excludes `data:` even though the other two sinks allow it), `highlight-layer` (wrapper around
10298
10825
  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`/
10826
+ `data-tone`, `data-active`; image format only), `region-highlight-target` (transparent activation
10827
+ geometry with a minimum hit area independent of the visual rectangle), `highlight-actions`
10828
+ (non-overlapping actions used when multiple minimum hit areas would overlap),
10829
+ `region-highlight-action` (one action in that list), `frame-viewport`/`frame-content`/`frame-controls`/
10300
10830
  `frame-zoom-in`/`frame-zoom-out`/`frame-reset` (forwarded from the internal `<lr-zoomable-frame>`
10301
10831
  while `zoomable`; image format only)
10302
10832
 
@@ -10304,7 +10834,8 @@ while `zoomable`; image format only)
10304
10834
  consumer-tunable scroll cap on `[part="body"]`, set from `max-height`; `none` means the preview grows
10305
10835
  with its content until a caller opts in. `--lr-document-preview-font` (default `ui-monospace,
10306
10836
  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
10837
+ `var(--lr-transition-ambient)`, stopped under reduced motion). `--lr-document-preview-progress`
10838
+ (default `0`) — a unitless
10308
10839
  0–100 number the determinate spinner's `conic-gradient` fill reads; written inline on the ring by
10309
10840
  the component itself from the clamped `progress` property, so overriding it only makes sense to
10310
10841
  repaint the fraction. `--lr-document-preview-active-border` (default
@@ -10315,7 +10846,11 @@ state hooks it is an inline `var()` fallback at the point of use rather than a `
10315
10846
  so it can be set on the element or on any ancestor — `::part(region-highlight)[data-active]` is
10316
10847
  invalid CSS (Shadow Parts forbids an attribute selector after `::part()`), which previously left
10317
10848
  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
10849
+ every other element that read them. The tone-specific resting border and hover tint use
10850
+ `--lr-document-preview-highlight-accent-color`, `--lr-document-preview-highlight-success-color`,
10851
+ `--lr-document-preview-highlight-warning-color`, `--lr-document-preview-highlight-danger-color`,
10852
+ and `--lr-document-preview-highlight-neutral-color` (defaulting respectively to the matching
10853
+ brand/success/warning/danger/neutral color tokens). Plus shared tokens
10319
10854
  `--lr-color-border`, `--lr-radius`, `--lr-color-surface`, `--lr-space-s/-m/-l/-xs`,
10320
10855
  `--lr-color-text`, `--lr-color-text-quiet`, `--lr-color-danger`, `--lr-color-brand`,
10321
10856
  `--lr-color-on-brand`, `--lr-focus-ring-width/-color/-offset`, `--lr-transition-fast`.
@@ -10409,10 +10944,11 @@ type. First-party invention.
10409
10944
  - `lr-download` — `detail: { src, filename }`, emitted when the native safe download action is
10410
10945
  activated. The browser download itself is handled by the link.
10411
10946
  - `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
10947
+ applied `anchor` when a resolved renderer can't honor it (it declares no `capabilities.anchors`,
10948
+ or none matching the anchor's `kind`). When the file uses `<lr-document-preview>`—including after
10949
+ a lazy renderer fails to load—the shell delegates to that preview's `scrollToAnchor()` and emits
10950
+ its actual `found` result. A capable renderer instead emits its own `lr-anchor-result` from its
10951
+ embedded `DocumentAnchorTarget` mixin, which composes up through this element unchanged — the
10416
10952
  shell stays silent in that case, so the event fires exactly once either way. A string `anchor`
10417
10953
  (a highlight id) counts as supported by any renderer declaring at least one anchor kind.
10418
10954
 
@@ -10493,6 +11029,17 @@ currently active search match, also carries `search-match`).
10493
11029
 
10494
11030
  **Themeable custom properties:** `--lr-docx-viewer-max-height` (default `none`) — maximum block size
10495
11031
  of `[part="body"]`; also settable via the `max-height` property, which writes this token inline.
11032
+ Highlight backgrounds are independently themeable with
11033
+ `--lr-docx-viewer-highlight-accent-background`,
11034
+ `--lr-docx-viewer-highlight-success-background`,
11035
+ `--lr-docx-viewer-highlight-warning-background`,
11036
+ `--lr-docx-viewer-highlight-danger-background`, and
11037
+ `--lr-docx-viewer-highlight-neutral-background`, defaulting to the matching quiet color tokens.
11038
+ `--lr-docx-viewer-highlight-active-background` and
11039
+ `--lr-docx-viewer-highlight-active-outline` style the active host highlight.
11040
+ `--lr-docx-viewer-search-match-background`,
11041
+ `--lr-docx-viewer-search-match-active-background`, and
11042
+ `--lr-docx-viewer-search-match-active-foreground` style resting and active search matches.
10496
11043
 
10497
11044
  **Optional peer dependencies:** install `mammoth` and `dompurify` with `pnpm add mammoth dompurify`.
10498
11045
  The component registers an eager `application/vnd.openxmlformats-officedocument.wordprocessingml.document`
@@ -10547,8 +11094,8 @@ of `[part="body"]`; also settable via the `max-height` property, which writes th
10547
11094
 
10548
11095
  **Optional peer dependencies:** install `postal-mime` and `dompurify` with
10549
11096
  `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
11097
+ matching `.eml` filenames in `<lr-document-viewer>`. Fail-closed behavior is explicit: an absent
11098
+ `postal-mime` renders `[part="error"]` with the localized
10552
11099
  `emailViewerMissingParser` message (nothing is parseable without it), and an HTML-only message
10553
11100
  (no `text/plain` alternative) with `dompurify` absent renders the localized
10554
11101
  `documentViewerMissingSanitizer` message rather than silently showing an empty body.
@@ -10648,6 +11195,10 @@ clears the query, matches, and painted search annotation.
10648
11195
  `mount`, `error`, and `announcer` (the visually-hidden `role="status"` region search results
10649
11196
  announce through).
10650
11197
 
11198
+ The toolbar buttons use the component-specific localized labels `ebookViewerPreviousChapter` and
11199
+ `ebookViewerNextChapter` (English: “Previous chapter” / “Next chapter”), so they remain
11200
+ unambiguous beside other previous/next controls and are overridable through `.strings`.
11201
+
10651
11202
  **Optional peer dependency:** install `epubjs` with `pnpm add epubjs`. The document-viewer registry
10652
11203
  matches `application/epub+zip` and `.epub` filenames, declaring `{ anchors: ['cfi', 'text-quote'],
10653
11204
  search: true, textSelect: true }` capabilities.
@@ -10717,6 +11268,9 @@ Enter/Space.
10717
11268
 
10718
11269
  **CSS parts:** `base`, `body`, `svg`, `spinner`, `error`, `highlight-layer` (wrapper around every
10719
11270
  rendered region highlight), `region-highlight` (one region highlight, `data-tone`, `data-active`),
11271
+ `region-highlight-target` (transparent activation geometry with an independent minimum hit area),
11272
+ `highlight-actions` (non-overlapping actions for multiple highlights), `region-highlight-action`
11273
+ (one action in that list),
10720
11274
  `frame-viewport`/`frame-content`/`frame-controls`/`frame-zoom-in`/`frame-zoom-out`/`frame-reset`
10721
11275
  (forwarded from the internal `<lr-zoomable-frame>` while `zoomable`).
10722
11276
 
@@ -10729,7 +11283,11 @@ inline `var()` fallback at the point of use rather than a `:host` declaration, s
10729
11283
  the element *or on any ancestor*: `::part(region-highlight)[data-active]` is invalid CSS — Shadow
10730
11284
  Parts forbids an attribute selector after `::part()` — so re-pointing a shared `--lr-color-*` token,
10731
11285
  and repainting everything else reading it, was previously the only way. Unset, it falls back to
10732
- exactly the tokens the rule used before.
11286
+ exactly the tokens the rule used before. The tone-specific resting border and hover tint use
11287
+ `--lr-svg-viewer-highlight-accent-color`, `--lr-svg-viewer-highlight-success-color`,
11288
+ `--lr-svg-viewer-highlight-warning-color`, `--lr-svg-viewer-highlight-danger-color`, and
11289
+ `--lr-svg-viewer-highlight-neutral-color` (defaulting respectively to the matching
11290
+ brand/success/warning/danger/neutral color tokens).
10733
11291
 
10734
11292
  **Optional peer dependency:** `dompurify`.
10735
11293
 
@@ -10916,7 +11474,7 @@ through the exported parts above rather than through dedicated custom properties
10916
11474
 
10917
11475
  **Optional peer dependency:** install `pdfjs-dist` with `pnpm add pdfjs-dist`. The component registers
10918
11476
  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
11477
+ a PDF is opened. An absent `pdfjs-dist` fails closed and renders
10920
11478
  `[part="error"]` with the localized `pdfViewerMissingLibrary` message — there is no partial PDF
10921
11479
  rendering without it.
10922
11480
 
@@ -10949,9 +11507,11 @@ Enter/Space. `lr-anchor-result` (`detail: { found }`) — fired after an `anchor
10949
11507
  `scrollToAnchor()` call. `lr-search-change` (`detail: { query, matchCount, activeIndex }`) — from
10950
11508
  `search()`/`searchNext()`/`searchPrevious()`/`clearSearch()`.
10951
11509
 
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
11510
+ **CSS parts:** `base`, `tabs`, `sheet`, `header-row`, `data-row`, `cell`, `cell-highlight` (a
11511
+ structural cell covered by a `highlights` entry), `cell-highlight-action` (the native button
11512
+ filling a highlighted cell; focusable and emits `lr-highlight-activate`), `rows`, `spinner`, and
11513
+ `error`. `data-row`, `cell`, `cell-highlight`, and `cell-highlight-action` are rendered inside the
11514
+ internal `<lr-virtual-list>` and forwarded via
10955
11515
  `exportparts`, so `lr-spreadsheet-viewer::part(cell)` reaches them from a consumer stylesheet.
10956
11516
 
10957
11517
  **Themeable custom properties:** `--lr-spreadsheet-viewer-highlight-color` (default
@@ -10996,9 +11556,11 @@ Enter/Space. `lr-anchor-result` (`detail: { found }`) — fired after an `anchor
10996
11556
  `scrollToAnchor()` call. `lr-search-change` (`detail: { query, matchCount, activeIndex }`) — from
10997
11557
  `search()`/`searchNext()`/`searchPrevious()`/`clearSearch()`.
10998
11558
 
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
11559
+ **CSS parts:** `base`, `sheet`, `header-row`, `data-row`, `cell`, `cell-highlight` (a structural
11560
+ cell covered by a `highlights` entry), `cell-highlight-action` (the native button filling a
11561
+ highlighted cell; emits `lr-highlight-activate`), `rows`, `spinner`, and `error`. `data-row`,
11562
+ `cell`, `cell-highlight`, and `cell-highlight-action` are rendered inside the internal
11563
+ `<lr-virtual-list>` and forwarded via `exportparts`, so
11002
11564
  `lr-csv-viewer::part(cell)` reaches them from a consumer stylesheet.
11003
11565
 
11004
11566
  **Themeable custom properties:** `--lr-csv-viewer-max-height` (default `none`) — maximum block size
@@ -11054,7 +11616,8 @@ operate on the included text.
11054
11616
  `'blocked-url'` (`src` failed the allowlist; `fetch()` never ran), `'network'` (`fetch()` rejected),
11055
11617
  `'http'` (response not `ok`; `status` carries the code), `'missing-sanitizer'` (the optional
11056
11618
  `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'`.
11619
+ cap). Non-HTTP reasons use status `0`; `'http'` normally carries the response code, but an opaque
11620
+ `mode="no-cors"` response is also classified as `'http'` with status `0`.
11058
11621
 
11059
11622
  **Slots:** default — fallback content shown until (or unless) a fetch succeeds. It is overwritten by
11060
11623
  the sanitized fragment on success, and left untouched on failure (as is any previously successful
@@ -11062,9 +11625,9 @@ include).
11062
11625
 
11063
11626
  **CSS parts:** `base` — the `display: contents` wrapper around the default slot.
11064
11627
 
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.
11628
+ An absent `dompurify` fails closed: it fires `lr-include-error` with
11629
+ `reason: 'missing-sanitizer'` and leaves the existing content in place — unsanitized markup is
11630
+ never transcluded.
11068
11631
 
11069
11632
  ## `lr-highlight-layer`
11070
11633
 
@@ -11083,8 +11646,22 @@ re-click of the same source citation).
11083
11646
  **Events:** `lr-highlight-activate` — a rect was activated (click, or Enter/Space while focused).
11084
11647
  `detail: { id }`.
11085
11648
 
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).
11649
+ **CSS parts:** `base` (the absolutely-positioned overlay, inset 0), `rect` (one visual highlight
11650
+ rectangle; carries `data-tone`/`data-active`/`data-flash` state attributes), and `rect-target`
11651
+ (transparent activation geometry with a minimum pointer/focus area independent of the visual
11652
+ rectangle). When more than one logical highlight would create overlapping minimum hit areas, the
11653
+ individual targets are replaced by `highlight-actions` (a non-overlapping action list) containing
11654
+ one `highlight-action` button per rendered highlight.
11655
+
11656
+ **Themeable custom properties:**
11657
+ `--lr-highlight-layer-accent-background`, `--lr-highlight-layer-accent-outline`,
11658
+ `--lr-highlight-layer-success-background`, `--lr-highlight-layer-success-outline`,
11659
+ `--lr-highlight-layer-warning-background`, `--lr-highlight-layer-warning-outline`,
11660
+ `--lr-highlight-layer-danger-background`, `--lr-highlight-layer-danger-outline`,
11661
+ `--lr-highlight-layer-neutral-background`, and `--lr-highlight-layer-neutral-outline` control each
11662
+ tone independently, defaulting to the corresponding Lyra quiet background and foreground tokens.
11663
+ `--lr-highlight-layer-flash-background` controls the temporary flash state (default
11664
+ `--lr-color-brand`).
11088
11665
 
11089
11666
  ## `lr-page-rail`
11090
11667
 
@@ -11149,18 +11726,23 @@ shared anchor-target contract).
11149
11726
 
11150
11727
  **Methods:** `search(query)` resolves the match count over cell sources and text outputs — a
11151
11728
  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.
11729
+ `searchNext()`/`searchPrevious()` advance/step back through matches, scrolling to and marking the
11730
+ target cell with the persistent active-cell paint; `clearSearch()` clears the query and matches.
11154
11731
 
11155
11732
  **Events:** `lr-load` — `detail: { cellCount, language }`, fired once a notebook has been parsed
11156
11733
  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.
11734
+ `lr-search-change` — `detail: { query, matchCount, activeIndex }`. `lr-render-error` —
11735
+ `detail: { error }`, fetching, parsing, or validating the notebook failed.
11736
+
11737
+ Migration note: the previously declared `lr-highlight-activate` event was never emitted by
11738
+ `lr-notebook-viewer` and has been removed from its class/EventMap contract. Use `anchor` plus
11739
+ `lr-anchor-result` for notebook cell navigation outcomes.
11160
11740
 
11161
11741
  **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`
11742
+ `data-active`), `cell-active` (added alongside `cell` on the cell currently targeted by an anchor
11743
+ or the active search match),
11744
+ `cell-gutter` (the `In [n]`/`Out [n]` label column), `cell-source`, `raw-source` (the horizontally
11745
+ scrollable preformatted surface for a raw cell), `outputs`, `output`
11164
11746
  (`data-output-type`, `data-stream`), `output-error` (added alongside `output` on a stderr stream or
11165
11747
  an error output), `error-output-label` (the label introducing an error output's traceback),
11166
11748
  `output-toggle`, `error`, `spinner`.
@@ -11175,9 +11757,9 @@ remain on the elements for scripting.
11175
11757
  **Themeable custom properties:** `--lr-notebook-viewer-max-height` (default `none`).
11176
11758
 
11177
11759
  `--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.
11760
+ cell currently targeted by an anchor or the active search match — the `cell-active` part. It is an
11761
+ inline `var()` fallback at the point of use rather than a `:host` declaration, so it can be set on
11762
+ the element or on any ancestor.
11181
11763
 
11182
11764
  **Optional peer deps:** `marked`+`dompurify` (markdown cells, falls back to plain text per cell),
11183
11765
  `shiki` (code cells, falls back to unhighlighted), `dompurify` (HTML/SVG outputs, falls back to
@@ -11253,10 +11835,12 @@ so lowering it never squashes the chevron below its own box — the visible glyp
11253
11835
  the hit target follows the token, and it can never fall under the accessible minimum from this
11254
11836
  component's own rules.
11255
11837
 
11256
- ```html
11257
- <lr-xml-viewer .xml=${payload} collapsed-depth="2" copyable
11258
- search=${query}
11259
- ></lr-xml-viewer>
11838
+ ```ts
11839
+ const viewer = document.querySelector('lr-xml-viewer');
11840
+ viewer.xml = payload;
11841
+ viewer.collapsedDepth = 2;
11842
+ viewer.copyable = true;
11843
+ await viewer.search(query);
11260
11844
  ```
11261
11845
 
11262
11846
  Node cap: 50,000 — exceeding it renders the localized `xmlViewerTooManyNodes` error instead of the
@@ -11267,10 +11851,41 @@ tree.
11267
11851
  Comparison surface for two document versions, using `lr-diff-view` for textual diffs and
11268
11852
  `lr-document-preview` for side-by-side rendered content.
11269
11853
 
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
11854
+ **Properties:**
11855
+
11856
+ - `oldVersion?: DocumentCompareVersion`, `newVersion?: DocumentCompareVersion` (attribute: false) —
11857
+ the before/after inputs. `DocumentCompareVersion` extends `DocumentRef`
11858
+ (`id`, `name`, `mimeType?`, `uri?`, `version?`) with `text?: string` for diff mode and
11859
+ `highlights?: LyraHighlight[]` for its own preview pane.
11860
+ - `view: 'diff' | 'side-by-side' = 'diff'` (reflected) — one inline text diff or two rendered
11861
+ preview panes.
11862
+ - `diffLayout: 'unified' | 'split' = 'unified'` (attribute `diff-layout`, reflected) — forwarded
11863
+ to `lr-diff-view` in diff mode.
11864
+ - `copyable: boolean = false` — forwards the diff copy action.
11865
+ - `language: string = ''`, `languages?: Record<string, ShikiLanguageInput>` (the latter
11866
+ attribute: false) — optional syntax highlighting forwarded to the diff.
11867
+ - `syncScroll: boolean = true` (attribute `sync-scroll`) — proportionally mirrors either
11868
+ side-by-side pane's scroll fraction to the other. The true-default converter accepts the literal
11869
+ `sync-scroll="false"`.
11870
+ - `anchor: LyraAnchor | string | null = null` (attribute: false) — sends the same target to both
11871
+ preview panes; repeated assignment of the same value still re-runs.
11872
+
11873
+ **Exported types:** `DocumentCompareVersion`; `LyraDocumentCompareView = 'diff' |
11874
+ 'side-by-side'`; `DocumentComparePaneSide = 'old' | 'new'`.
11875
+
11876
+ **Synchronized anchors:** activating a region highlight whose id exists in the opposite version
11877
+ scrolls that pane to its corresponding highlight, while the original `lr-highlight-activate`
11878
+ continues bubbling unchanged. The shared `anchor` property drives both panes. In diff mode, split
11879
+ columns already share one scroll container.
11880
+
11881
+ **Events:** `lr-copy` (`detail: { text }`), `lr-download` (`detail: { src, filename }`),
11882
+ `lr-highlight-activate` (`detail: { id }`), and `lr-render-error` (`detail: { error }`).
11883
+
11884
+ **Slots:** none.
11885
+
11886
+ **CSS parts:** `base`, `diff`, `panes`, `pane-old`, `pane-new`, `pane-header`, `pane-empty`.
11887
+
11888
+ **Themeable custom properties:** `--lr-document-compare-pane-max-height` (default
11274
11889
  `var(--lr-size-24rem)`) — maximum block size of a `side-by-side` pane before it scrolls internally.
11275
11890
 
11276
11891
  ## `lr-geojson-view`
@@ -11306,7 +11921,10 @@ alongside the `lr-json-viewer` fallback), `error` (the error region, `role="aler
11306
11921
  Registered by importing `geojson-view/geojson-view.js` directly — not part of the root barrel, the
11307
11922
  same as `lr-map`/`lr-graph`, since it depends on the same optional `maplibre-gl` peer. Remote
11308
11923
  resources are capped at 25 MB; exceeding it surfaces the localized `documentPreviewResourceTooLarge`
11309
- message instead of the map.
11924
+ message instead of the map. Lyra supports MapLibre v5 and v6; consumers must import its CSS.
11925
+ MapLibre v5's standard build includes its worker, while v6 is ESM-only, requires WebGL2, and needs
11926
+ its module-worker URL configured for the bundler before this viewer constructs the nested map. See
11927
+ `llms/components/lr-map.md` for the Vite v6 example and the other bundler variants.
11310
11928
 
11311
11929
  # Conversation & chat UI (`components/conversation/`)
11312
11930
 
@@ -11480,6 +12098,16 @@ restart at the beginning of each visual line, so a wrapped line's tabs land diff
11480
12098
  HTML `marked` produces from `content` completely unsanitized, so untrusted `content` must never be
11481
12099
  paired with `sanitize="false"`.
11482
12100
 
12101
+ **Additional API surface:**
12102
+
12103
+ - `--lr-markdown-highlight-accent-bg` — Accent highlight fill. Default: `var(--lr-color-brand-quiet)`.
12104
+ - `--lr-markdown-highlight-success-bg` — Success highlight fill. Default: `var(--lr-color-success-quiet)`.
12105
+ - `--lr-markdown-highlight-warning-bg` — Warning highlight fill. Default: `var(--lr-color-warning-quiet)`.
12106
+ - `--lr-markdown-highlight-danger-bg` — Danger highlight fill. Default: `var(--lr-color-danger-quiet)`.
12107
+ - `--lr-markdown-highlight-neutral-bg` — Neutral highlight fill. Default: `var(--lr-color-surface)`.
12108
+ - `--lr-markdown-highlight-active-bg` — Active highlight fill. Default: `var(--lr-color-brand-quiet)`.
12109
+ - `--lr-markdown-highlight-active-outline-color` — Active highlight outline. Default: `var(--lr-color-brand)`.
12110
+
11483
12111
  ---
11484
12112
 
11485
12113
  ## `lr-markdown-core`
@@ -11548,6 +12176,16 @@ differently on a wrapped line.
11548
12176
  </script>
11549
12177
  ```
11550
12178
 
12179
+ **Additional API surface:**
12180
+
12181
+ - `--lr-markdown-highlight-accent-bg` — Accent highlight fill. Default: `var(--lr-color-brand-quiet)`.
12182
+ - `--lr-markdown-highlight-success-bg` — Success highlight fill. Default: `var(--lr-color-success-quiet)`.
12183
+ - `--lr-markdown-highlight-warning-bg` — Warning highlight fill. Default: `var(--lr-color-warning-quiet)`.
12184
+ - `--lr-markdown-highlight-danger-bg` — Danger highlight fill. Default: `var(--lr-color-danger-quiet)`.
12185
+ - `--lr-markdown-highlight-neutral-bg` — Neutral highlight fill. Default: `var(--lr-color-surface)`.
12186
+ - `--lr-markdown-highlight-active-bg` — Active highlight fill. Default: `var(--lr-color-brand-quiet)`.
12187
+ - `--lr-markdown-highlight-active-outline-color` — Active highlight outline. Default: `var(--lr-color-brand)`.
12188
+
11551
12189
  ---
11552
12190
 
11553
12191
  ## `lr-chat-message`
@@ -11692,7 +12330,8 @@ between several values across a single element's lifetime.
11692
12330
  - mounting a message with `status="failed"` (or any other non-`"sent"` status) already set does
11693
12331
  **not** announce anything — only a genuine *later* transition (`changed.get('status') !==
11694
12332
  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' }`.
12333
+ - `lr-retry` carries `{ messageId?: string }`; the field is the component's `messageId` when set,
12334
+ and is omitted otherwise.
11696
12335
  - the header/footer/avatar/badges/attachments/actions wrappers are shown/hidden via the `hidden`
11697
12336
  attribute, not conditional templating. Whether each slot currently has content is checked once via
11698
12337
  a light-DOM children scan on the very first update (`willUpdate`, gated on `!this.hasUpdated`) and
@@ -11703,6 +12342,20 @@ between several values across a single element's lifetime.
11703
12342
  - `role` intentionally reflects to `data-role`; CSS or selectors that key off role must target
11704
12343
  `[data-role="user"]` etc., not `[role="user"]`.
11705
12344
 
12345
+ **Additional API surface:**
12346
+
12347
+ - `--lr-chat-message-system-color` — System-message text color. Default: `var(--lr-color-text-quiet)`.
12348
+ - `--lr-chat-message-streaming-border-color` — Streaming bubble border. Default: `var(--lr-color-brand)`.
12349
+ - `--lr-chat-message-failed-border-color` — Failed bubble border. Default: `var(--lr-color-danger)`.
12350
+ - `--lr-chat-message-failed-bg` — Failed bubble fill. Default: `var(--lr-color-danger-quiet)`.
12351
+ - `--lr-chat-message-footer-color` — Default footer text. Default: `var(--lr-color-text-quiet)`.
12352
+ - `--lr-chat-message-user-footer-color` — User-message footer text. Default: `var(--lr-color-text)`.
12353
+ - `--lr-chat-message-failed-footer-color` — Failed-message footer text. Default: `var(--lr-color-danger)`.
12354
+ - `--lr-chat-message-indicator-color` — Default status indicator. Default: `var(--lr-color-text-quiet)`.
12355
+ - `--lr-chat-message-streaming-indicator-color` — Streaming indicator. Default: `var(--lr-color-brand)`.
12356
+ - `--lr-chat-message-failed-indicator-color` — Failed indicator. Default: `var(--lr-color-danger)`.
12357
+ - `--lr-chat-message-failed-status-color` — Failed status text. Default: `var(--lr-color-danger)`.
12358
+
11706
12359
  ---
11707
12360
 
11708
12361
  ## `lr-typing-indicator`
@@ -11971,10 +12624,10 @@ visibility is driven purely by whether anything is slotted into it, not by `phas
11971
12624
  message text color, stalled border), `--lr-color-warning-quiet` (stalled background tint),
11972
12625
  `--lr-space-s` / `--lr-space-xs` (base gap, stalled padding, actions gap), `--lr-radius`
11973
12626
  (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.
12627
+ dot's color/opacity transitions), and `--lr-transition-ambient` (the streaming pulse cycle).
12628
+ The phase defaults flow through `--lr-stream-status-dot-color` and
12629
+ `--lr-stream-status-dot-opacity`; setting either custom property on the element or an ancestor
12630
+ wins through the shadow cascade and is the supported per-instance override.
11978
12631
 
11979
12632
  **Optional peer deps:** none.
11980
12633
 
@@ -12391,7 +13044,7 @@ of the stream arrives.
12391
13044
  cursor bar's inline size), `--lr-streaming-text-cursor-height` (default `1em`) — both
12392
13045
  component-specific, since no shared "inline cursor bar" token exists, the same pattern
12393
13046
  `<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
13047
+ `--lr-space-xs` (cursor's `margin-inline-start`) and `--lr-transition-ambient` (blink animation
12395
13048
  cycle length).
12396
13049
 
12397
13050
  **Optional peer deps:** none — internally imports and auto-registers `<lr-markdown>` for
@@ -12602,8 +13255,7 @@ highlighted HTML, and always fires regardless of whether the actual OS clipboard
12602
13255
  `lr-toggle` (`detail: { collapsed: boolean }` — fired when the built-in collapse/expand header
12603
13256
  button is activated, same event name/shape convention as `<lr-thinking-panel>`'s own `lr-toggle`),
12604
13257
  `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),
13258
+ `interactiveLines` is set),
12607
13259
  `lr-text-select` (`detail: { text, anchor, rects }` — a text selection inside the code body ended;
12608
13260
  `anchor` is a `line-range` anchor covering the selected lines)
12609
13261
 
@@ -12673,10 +13325,11 @@ component's own `part="pre"`/`part="code"` hooks and strips shiki's default `tab
12673
13325
  `<pre>`, since `[part="body"]` is already the single scrollable/focusable region (`role="group"`,
12674
13326
  `tabindex="0"`) for the code area. Dark mode is handled via shiki's own "dual themes" feature: every
12675
13327
  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.
13328
+ `--shiki-dark`/`--shiki-dark-bg` custom properties. The component watches its resolved Lyra theme
13329
+ tokens and sets `data-dark-theme="true"` on the code body when the effective surface is dark; an
13330
+ `!important` state rule then activates Shiki's dark values. This follows explicit Lyra theme
13331
+ overrides instead of consulting `prefers-color-scheme` directly. Shiki's generated colors are the
13332
+ one deliberate exception to every other color being a `--lr-*` token.
12680
13333
 
12681
13334
  **Known gotchas:**
12682
13335
  - `copyable` defaults to `true` and reflects — see the property note above about overriding it with a
@@ -12754,9 +13407,7 @@ Identical behavior to `<lr-code-block>`'s own method.
12754
13407
  highlighted HTML, and always fires regardless of whether the actual OS clipboard write succeeded),
12755
13408
  `lr-toggle` (`detail: { collapsed: boolean }` — fired when the built-in collapse/expand header
12756
13409
  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
13410
+ activated while `interactiveLines` is set), `lr-text-select` (`detail: { text, anchor, rects }` — a text selection inside the code
12760
13411
  body ended; `anchor` is a `line-range` anchor covering the selected lines).
12761
13412
 
12762
13413
  **Slots:** none.
@@ -12940,6 +13591,10 @@ branch content.
12940
13591
  `previous-glyph` and `next-glyph` (the chevron inside each button — target these to swap the
12941
13592
  arrow without restyling the button), and `position` (the visible "2 / 5" text).
12942
13593
 
13594
+ **Additional API surface:**
13595
+
13596
+ - `click()` — Activates the currently enabled chevron, matching a click on the shadow control.
13597
+
12943
13598
  ## `lr-message-actions`
12944
13599
 
12945
13600
  The per-message action toolbar for `lr-chat-message`'s `actions` slot: opt-in built-ins (copy /
@@ -13064,6 +13719,11 @@ point of use rather than a `:host` declaration, so it can be set on the element
13064
13719
  after `::part()`), so re-pointing the shared `--lr-color-danger` token was previously the only way,
13065
13720
  and it repainted every other danger surface with it.
13066
13721
 
13722
+ **Additional API surface:**
13723
+
13724
+ - `blur()` — Forwards host blur to the internal push-to-talk control.
13725
+ - `focus()` — Forwards host focus to the internal push-to-talk control.
13726
+
13067
13727
  ## `lr-transcript-feed`
13068
13728
 
13069
13729
  Live captions for an in-progress voice session: speaker-grouped entries, interim-vs-final styling
@@ -13488,7 +14148,8 @@ forced `{ sanitize: true }`), `image` → `lr-media-card` (`src`, `alt`, `filena
13488
14148
 
13489
14149
  **Events:** `lr-widget-action` — `detail: { actionId, payload }`, the single bubbling action
13490
14150
  channel. `lr-render-error` — `detail: { error }`, the root value was structurally unusable
13491
- (non-object, or the depth/size caps made it empty).
14151
+ (non-object, or the depth/size caps made it empty). `lr-widget-state-change` — `detail: { path,
14152
+ value, nodeId, prop }`, emitted when a state-bound mapped control requests a controlled update.
13492
14153
 
13493
14154
  **CSS parts:** `base` (the root wrapper, `display: contents`), `row`, `col`, `text` (built-in
13494
14155
  structural nodes only — a mapped lyra component exposes its own parts instead).
@@ -13586,6 +14247,18 @@ trigger), `expand-icon`, `empty`, `hint`, `error`.
13586
14247
  - `catalog` must be homogeneous — the same constraint `lr-model-select`'s `LyraModelCatalog` union
13587
14248
  documents.
13588
14249
 
14250
+ **Additional API surface:**
14251
+
14252
+ - `--lr-voice-picker-preview-active-border` — Active preview border. Default: `var(--lr-color-brand)`.
14253
+ - `--lr-voice-picker-preview-active-color` — Active preview icon. Default: `var(--lr-color-brand)`.
14254
+ - `--lr-voice-picker-option-active-bg` — Active option fill. Default: `var(--lr-color-brand-quiet)`.
14255
+ - `--lr-voice-picker-option-selected-border` — Selected option border. Default: `var(--lr-color-brand)`.
14256
+ - `--lr-voice-picker-option-selected-color` — Selected option text. Default: `var(--lr-color-brand)`.
14257
+ - `--lr-voice-picker-option-selected-bg` — Selected option fill. Default: `transparent`.
14258
+ - `--lr-voice-picker-option-selected-font-weight` — Selected option label weight. Default: `var(--lr-font-weight-semibold)`.
14259
+ - `--lr-voice-picker-preview-hover-bg` — Preview hover fill. Default: `var(--lr-color-brand-quiet)`.
14260
+ - `--lr-voice-picker-preview-hover-color` — Preview hover icon. Default: `var(--lr-color-brand)`.
14261
+
13589
14262
  ## `lr-agent-workspace`
13590
14263
 
13591
14264
  Responsive, fully controlled shell for an AI conversation and its supporting run, tool, retrieval,
@@ -13684,6 +14357,181 @@ composed `lr-chat-viewport`), `messages`, `messages-empty`, `details`, `details-
13684
14357
  **Optional peer deps:** none of its own; the composed `lr-markdown` keeps its `marked`/`dompurify`
13685
14358
  optional-peer fallback.
13686
14359
 
14360
+ ## `lr-message-parts`
14361
+
14362
+ Ordered renderer for provider-neutral `MessagePart[]`: text, reasoning, tool call/result, citation,
14363
+ attachment, data/widget, audio, and error parts can interleave without flattening stream order.
14364
+
14365
+ **Properties:** `parts: MessagePart[] = []` (attribute: false); `renderMarkdown: boolean = true`
14366
+ (attribute `render-markdown`, reflected) and `showReasoning: boolean = true` (attribute
14367
+ `show-reasoning`, reflected), both with string-aware true-default conversion;
14368
+ `renderPart?: MessagePartRenderer` (attribute: false), where returning `undefined` delegates that
14369
+ part to the built-in renderer; `label: string = ''`; `accessibleLabel: string | null = null`
14370
+ (attribute `aria-label`, highest naming precedence).
14371
+
14372
+ `MessagePartRenderer = (part: MessagePart, index: number) => unknown`; `MessagePart` and its
14373
+ discriminated part shapes come from the `@aceshooting/lyra-ui/ai` subpath.
14374
+
14375
+ **Events:** `lr-citation-select` (`{ citation }`), `lr-part-retry` (`{ part }`).
14376
+
14377
+ **CSS parts:** `base`, `part`, `part-streaming`, `text`, `reasoning`, `tool-call`, `tool-result`,
14378
+ `citation`, `attachment`, `data`, `audio`, `audio-transcript`, `error`, `retry`.
14379
+
14380
+ **Slots:** none. **Optional peer deps:** those of composed content only: Markdown can use
14381
+ `marked`/`dompurify`, and code content can use `shiki`; every composed primitive retains its own
14382
+ fallback.
14383
+
14384
+ ```ts
14385
+ import '@aceshooting/lyra-ui/components/conversation/message-parts/message-parts.js';
14386
+ ```
14387
+
14388
+ **Additional API surface:**
14389
+
14390
+ - `lr-anchor-result` event — Passthrough from rendered Markdown.
14391
+ - `lr-citation-open` event — Passthrough from a rendered citation's full-preview action.
14392
+ - `lr-copy` event — Passthrough from rendered JSON content.
14393
+ - `lr-highlight-activate` event — Passthrough from rendered Markdown.
14394
+ - `lr-link-click` event — Passthrough from rendered Markdown.
14395
+ - `lr-preview` event — Passthrough from a rendered attachment.
14396
+ - `lr-remove` event — Passthrough from a rendered attachment.
14397
+ - `lr-render-error` event — Passthrough from rendered Markdown, tool-result, or widget content.
14398
+ - `lr-retry` event — Passthrough from a rendered attachment.
14399
+ - `lr-search-change` event — Passthrough from rendered JSON content.
14400
+ - `lr-text-select` event — Passthrough from rendered Markdown.
14401
+ - `lr-toggle` event — Passthrough from a rendered reasoning panel.
14402
+ - `lr-tool-call-chip-select` event — Passthrough from a rendered tool-call chip.
14403
+ - `lr-tool-chip-select` event — Deprecated tool-call selection alias passthrough.
14404
+ - `lr-widget-action` event — Passthrough from a rendered declarative widget.
14405
+ - `lr-widget-state-change` event — Passthrough from a rendered controlled widget.
14406
+
14407
+ ## `lr-prompt-input`
14408
+
14409
+ The composed prompt surface: chat composer, attachment controls/chips, model and voice pickers,
14410
+ retrieval-source scope, mention/slash-command popup, and queued follow-up prompts. It performs no
14411
+ upload, retrieval, or model call.
14412
+
14413
+ **Properties:** `value: string = ''`; `status: 'idle' | 'sending' | 'streaming' = 'idle'`;
14414
+ `placeholder: string = ''`; `disabled: boolean = false` (reflected);
14415
+ `submitOnEnter: boolean = true` (attribute `submit-on-enter`, string-aware true-default converter);
14416
+ `attachments: PromptInputAttachment[] = []`, `attachmentCapabilities: AttachmentCapability[] =
14417
+ ['files', 'image', 'audio']`, `mentionItems: PromptSuggestion[] = []`, `commandItems:
14418
+ PromptSuggestion[] = []`, `modelCatalog?: LyraModelCatalog`, `voiceCatalog?: LyraVoiceCatalog`,
14419
+ `sources: LyraSourceEntry[] = []`, `selectedSourceIds: string[] = []`, and `queue:
14420
+ PromptQueueItem[] = []` (all attribute: false); `model: string = ''`; `voice: string = ''`;
14421
+ `label: string = ''`; `accessibleLabel: string | null = null` (attribute `aria-label`).
14422
+
14423
+ `PromptSuggestion` extends `MentionItem { id, label, description?, icon? }` with optional
14424
+ `insertText` (defaults to `label`). `PromptInputAttachment` extends `DocumentRef { id, name,
14425
+ mimeType?, uri?, version? }` with `file?`, `size?`, attachment-chip `status?`, and numeric
14426
+ `progress?`.
14427
+
14428
+ **Methods:** `focus(options?)`, `blur()`, and `click()` forward to the composed chat input;
14429
+ `select()` selects its native text surface. `click()` is inert while disabled.
14430
+
14431
+ **Events:** `lr-input` (`{ value }`), `lr-submit` (`{ value }`), `lr-stop`,
14432
+ `lr-mention-select` (`{ id, label, trigger }`), `lr-attachments-add` (`{ files, capability }`),
14433
+ `lr-attachment-remove` (`{ id }`), `lr-model-change`/`lr-voice-change`
14434
+ (`{ value, inCatalog }`), `lr-sources-change` (`{ selectedIds }`), `lr-queue-change`
14435
+ (`{ items, reason, itemId }`), `lr-send-now` (`{ item }`), `lr-camera-request`,
14436
+ `lr-audio-request`, `lr-attachment-retry` (`{ id }`), and `lr-attachment-preview`
14437
+ (`{ id, name, mimeType, src }`). Child events are stopped and re-emitted from
14438
+ `lr-prompt-input`; all composed interactions are suppressed while `disabled`.
14439
+
14440
+ **Slots:** `controls`, `leading`, `chips`, `trailing`, `footer`.
14441
+
14442
+ **CSS parts:** `base`, `controls`, `sources`, `sources-summary`, `source-picker`, `queue`,
14443
+ `composer`, `leading`, `chips`, `footer`.
14444
+
14445
+ **Optional peer deps:** none of its own.
14446
+
14447
+ ```ts
14448
+ import '@aceshooting/lyra-ui/components/conversation/prompt-input/prompt-input.js';
14449
+ ```
14450
+
14451
+ ## `lr-prompt-queue`
14452
+
14453
+ Controlled editable queue of follow-up turns. Reordering, editing, and removal emit a complete
14454
+ proposed queue; send-now emits the complete selected item.
14455
+
14456
+ **Properties:** `items: PromptQueueItem[] = []` (attribute: false); `editable: boolean = true`
14457
+ (reflected, string-aware true-default converter); `disabled: boolean = false` (reflected);
14458
+ `label: string = ''`; `accessibleLabel: string | null = null` (attribute `aria-label`).
14459
+ `PromptQueueItem = { id: string; value: string; attachments?: DocumentRef[]; createdAt?: number;
14460
+ metadata?: Record<string, unknown> }`.
14461
+
14462
+ **Events:** `lr-queue-change` (`PromptQueueChangeDetail = { items, reason, itemId }`, with
14463
+ `reason: 'edit' | 'remove' | 'reorder'`), `lr-send-now` (`{ item }`). The queue is controlled:
14464
+ these events propose complete next values without mutating `items`.
14465
+
14466
+ **CSS parts:** `base`, `heading`, `list`, `item`, `value`, `editor`, `actions`, `action`, `empty`.
14467
+
14468
+ **Slots:** none. **Optional peer deps:** none.
14469
+
14470
+ ```ts
14471
+ import '@aceshooting/lyra-ui/components/conversation/prompt-queue/prompt-queue.js';
14472
+ ```
14473
+
14474
+ ## `lr-selection-toolbar`
14475
+
14476
+ Nonmodal, Escape-dismissible text-selection toolbar carrying selected text plus a format-neutral
14477
+ `DocumentLocator` into ask, quote, cite, and copy actions.
14478
+
14479
+ **Properties:** `open: boolean = false` (reflected); `text: string = ''`;
14480
+ `anchor: DocumentLocator | null = null`, `rect: DOMRectReadOnly | null = null`, and
14481
+ `actions: SelectionAction[] = ['ask', 'quote', 'cite', 'copy']` (attribute: false);
14482
+ `label: string = ''`; `accessibleLabel: string | null = null` (attribute `aria-label`).
14483
+ `SelectionAction = 'ask' | 'quote' | 'cite' | 'copy'`.
14484
+
14485
+ **Events:** `lr-selection-action` (`SelectionActionDetail = { action, text, anchor }`);
14486
+ `lr-dismiss` (Escape); `lr-copy-error` (`{ error }`). Copy uses the Clipboard API when available;
14487
+ the action event still reports the user intent if writing fails, alongside `lr-copy-error`.
14488
+
14489
+ **CSS parts:** `toolbar`, `action`, `action-ask`, `action-quote`, `action-cite`, `action-copy`.
14490
+
14491
+ **Themeable custom properties:** `--lr-selection-toolbar-inline-start` and
14492
+ `--lr-selection-toolbar-block-start` are normally computed from `rect`; hosts may override them to
14493
+ provide their own fixed-position anchor.
14494
+
14495
+ **Slots:** none. **Optional peer deps:** none.
14496
+
14497
+ ```ts
14498
+ import '@aceshooting/lyra-ui/components/conversation/selection-toolbar/selection-toolbar.js';
14499
+ ```
14500
+
14501
+ **Additional API surface:**
14502
+
14503
+ - `--lr-selection-toolbar-inline-shift` — Computed inline collision-avoidance offset.
14504
+ - `--lr-selection-toolbar-block-shift` — Computed block collision-avoidance offset.
14505
+
14506
+ ## `lr-realtime-session`
14507
+
14508
+ Provider-neutral realtime voice shell composing connection state, `lr-audio-visualizer`,
14509
+ `lr-push-to-talk`, and `lr-transcript-feed`. Transport/authentication/playback remain host-owned.
14510
+
14511
+ **Properties:** `state: RealtimeConnectionState = 'disconnected'` (reflected), where the closed set
14512
+ is `'disconnected' | 'connecting' | 'connected' | 'reconnecting' | 'error'`; `voiceState:
14513
+ AudioVisualizerState = 'idle'` (attribute `voice-state`); `level: number | null = null` (finite,
14514
+ clamped by the composed visualizer); `stream: MediaStream | null = null` and `entries:
14515
+ LyraTranscriptEntry[] = []` (attribute: false); `muted: boolean = false` (reflected);
14516
+ `showCapture: boolean = true` (attribute `show-capture`, reflected, string-aware true-default
14517
+ converter); `errorCode: string = ''` (attribute `error-code`); `label: string = ''`.
14518
+
14519
+ **Events:** `lr-connect`, `lr-disconnect`, `lr-mute-change` (`{ muted }`), `lr-interrupt`; the
14520
+ composed push-to-talk events continue bubbling.
14521
+
14522
+ **Slots:** `controls` adds provider-specific actions beside the built-in session controls.
14523
+
14524
+ **CSS parts:** `base`, `header`, `status`, `activity`, `controls`, `connect`, `disconnect`, `mute`,
14525
+ `interrupt`, `capture`, `transcript`, `error`.
14526
+
14527
+ **Slots:** `controls` — provider-specific actions appended to the built-in session controls.
14528
+ **Optional peer deps:** none. Transport, credentials, capture permission, and media playback
14529
+ remain host-owned.
14530
+
14531
+ ```ts
14532
+ import '@aceshooting/lyra-ui/components/conversation/realtime-session/realtime-session.js';
14533
+ ```
14534
+
13687
14535
  # Agent tooling, tool calls & evaluation (`components/agent-tools/`)
13688
14536
 
13689
14537
  ## `lr-tool-call-chip`
@@ -14073,6 +14921,17 @@ state, so no additional scroll-lock/focus-trap bookkeeping is needed for that tr
14073
14921
  - the `maximize`/`close` buttons are always the first elements in the Tab order while open,
14074
14922
  regardless of visual position, followed by `body` then `footer` content
14075
14923
 
14924
+ **Additional API surface:**
14925
+
14926
+ - `--lr-tool-result-dialog-running-color` — Running status foreground. Default: `var(--lr-color-brand)`.
14927
+ - `--lr-tool-result-dialog-running-bg` — Running status background. Default: `var(--lr-color-brand-quiet)`.
14928
+ - `--lr-tool-result-dialog-success-color` — Success status foreground. Default: `var(--lr-color-success)`.
14929
+ - `--lr-tool-result-dialog-success-bg` — Success status background. Default: `var(--lr-color-success-quiet)`.
14930
+ - `--lr-tool-result-dialog-error-color` — Error status foreground. Default: `var(--lr-color-danger)`.
14931
+ - `--lr-tool-result-dialog-error-bg` — Error status background. Default: `var(--lr-color-danger-quiet)`.
14932
+ - `--lr-tool-result-dialog-denied-color` — Denied status foreground. Default: `var(--lr-color-warning)`.
14933
+ - `--lr-tool-result-dialog-denied-bg` — Denied status background. Default: `var(--lr-color-warning-quiet)`.
14934
+
14076
14935
  ---
14077
14936
 
14078
14937
  ## `lr-tool-select-dialog`
@@ -14722,7 +15581,8 @@ recorded winner, host-writable to reflect a previously-recorded vote back. `item
14722
15581
  (attribute `item-id`) — an opaque id round-tripped through `lr-vote`. `hideTie: boolean = false`
14723
15582
  (attribute `hide-tie`) and `hideBothBad: boolean = false` (attribute `hide-both-bad`) hide the
14724
15583
  corresponding vote button. `syncScroll: boolean = false` (attribute `sync-scroll`) links both panes'
14725
- scroll position.
15584
+ scroll position. `disabled: boolean = false` (reflected) disables every vote button and suppresses
15585
+ `lr-vote`.
14726
15586
 
14727
15587
  **Slots:** `a` (the first output — any content, a chat message, markdown, a viewer), `b` (the second
14728
15588
  output), and `prompt` (optional shared-input header above both panes).
@@ -14865,6 +15725,11 @@ so retinting one tone doesn't repaint the other surface reading that token, and
14865
15725
  `::part('line')` stylesheet override — the background is applied inline, so a stylesheet rule can't
14866
15726
  beat it without `!important`.
14867
15727
 
15728
+ **Additional API surface:**
15729
+
15730
+ - `--lr-terminal-search-outline-color` — Outline color for a line containing a non-active search match. Default: `var(--lr-color-warning)`.
15731
+ - `--lr-terminal-search-active-outline-color` — Outline color for the active search match's line. Default: `var(--lr-color-brand)`.
15732
+
14868
15733
  ## `lr-trace-tree`
14869
15734
 
14870
15735
  A collapsible span hierarchy for one agent/LLM trace (Langfuse/LangSmith run-tree style): kind icon,
@@ -14912,6 +15777,17 @@ side of the lightness midpoint as the ambient surface, so a consumer who sets
14912
15777
  set `--lr-trace-tree-row-active-color` to match, and should re-check the status-label tones
14913
15778
  against the new tint as well.
14914
15779
 
15780
+ **Additional API surface:**
15781
+
15782
+ - `--lr-trace-tree-toggle-hover-bg` — Toggle hover background. Default: `var(--lr-color-brand-quiet)`.
15783
+ - `--lr-trace-tree-success-color` — Success status text and bar. Default: `var(--lr-color-success)`.
15784
+ - `--lr-trace-tree-error-color` — Error status text and bar. Default: `var(--lr-color-danger)`.
15785
+ - `--lr-trace-tree-denied-color` — Denied status text and bar. Default: `var(--lr-color-warning)`.
15786
+ - `--lr-trace-tree-running-color` — Running status text and stripe. Default: `var(--lr-color-brand)`.
15787
+ - `--lr-trace-tree-pending-color` — Pending status text and bar. Default: `var(--lr-color-text-quiet)`.
15788
+ - `--lr-trace-tree-bar-track-bg` — Duration bar track. Default: `var(--lr-color-surface-raised)`.
15789
+ - `--lr-trace-tree-running-stripe-bg` — Running stripe contrast. Default: `var(--lr-color-brand-quiet)`.
15790
+
14915
15791
  ## `lr-activity-feed`
14916
15792
 
14917
15793
  An append-only streaming log of granular agent actions ("Searching the web…", "Read
@@ -15154,6 +16030,15 @@ viewport's aspect ratio.
15154
16030
  ></lr-browser-frame>
15155
16031
  ```
15156
16032
 
16033
+ **Additional API surface:**
16034
+
16035
+ - `--lr-browser-frame-controller-background` — Controller badge background. Default: `var(--lr-color-brand-quiet)`.
16036
+ - `--lr-browser-frame-controller-color` — Controller badge text color. Default: `var(--lr-color-brand)`.
16037
+ - `--lr-browser-frame-ping-click-color` — Click-ping border color. Default: `var(--lr-color-brand)`.
16038
+ - `--lr-browser-frame-ping-type-color` — Type-ping border color. Default: `var(--lr-color-success)`.
16039
+ - `--lr-browser-frame-ping-scroll-color` — Scroll-ping border color. Default: `var(--lr-color-warning)`.
16040
+ - `--lr-browser-frame-ping-move-color` — Move-ping border color. Default: `var(--lr-color-text-quiet)`.
16041
+
15157
16042
  ## `lr-artifact-panel`
15158
16043
 
15159
16044
  Shell around one agent-generated artifact: a title/kind header, a preview↔code toggle, version
@@ -15283,6 +16168,12 @@ is unset. Like the other density/state properties in this family they are inline
15283
16168
  their point of use rather than `:host` declarations, so either can be set on the element *or on any
15284
16169
  ancestor* — one rule on a run list retunes every compact run inside it.
15285
16170
 
16171
+ **Additional API surface:**
16172
+
16173
+ - `--lr-agent-run-metric-danger-color` — Danger metric value. Default: `var(--lr-color-danger)`.
16174
+ - `--lr-agent-run-metric-success-color` — Success metric value. Default: `var(--lr-color-success)`.
16175
+ - `--lr-agent-run-metric-warning-color` — Warning metric value. Default: `var(--lr-color-warning)`.
16176
+
15286
16177
  ## `lr-agent-trace`
15287
16178
 
15288
16179
  Provider-neutral agent/LLM trace view combining span-kind filters, handoff quick-jumps, and a
@@ -15555,23 +16446,41 @@ retinted independently; `--lr-tool-timeline-pending-approval-border-color` (defa
15555
16446
  `var(--lr-color-warning)`) — color of the entry body's leading border while that entry's
15556
16447
  `data-pending-approval` is `"true"`.
15557
16448
 
16449
+ **Additional API surface:**
16450
+
16451
+ - `--lr-tool-timeline-running-marker-color` — Running rail dot. Default: `var(--lr-color-brand)`.
16452
+ - `--lr-tool-timeline-success-marker-color` — Success rail dot. Default: `var(--lr-color-success)`.
16453
+ - `--lr-tool-timeline-error-marker-color` — Error rail dot. Default: `var(--lr-color-danger)`.
16454
+ - `--lr-tool-timeline-approved-bg` — Approved badge background. Default: `var(--lr-color-success-quiet)`.
16455
+ - `--lr-tool-timeline-approved-color` — Approved badge foreground. Default: `var(--lr-color-success)`.
16456
+ - `--lr-tool-timeline-denied-bg` — Denied badge background. Default: `var(--lr-color-danger-quiet)`.
16457
+ - `--lr-tool-timeline-denied-color` — Denied badge foreground. Default: `var(--lr-color-danger)`.
16458
+ - `--lr-tool-timeline-error-color` — Expanded error text. Default: `var(--lr-color-danger)`.
16459
+
15558
16460
  ## `lr-agent-eval-dashboard`
15559
16461
 
15560
16462
  Controlled evaluation overview with metric cards, a dependency-free trend chart, and run-status
15561
16463
  history. It never launches or scores evaluations.
15562
16464
 
15563
16465
  **Properties:** `metrics: AgentEvaluationMetric[] = []` (attribute: false), where each metric is
15564
- `{ id, label, value, format?: 'number' | 'percent' | 'milliseconds' | 'currency' }`; `runs:
16466
+ `{ id, label, value, format?: 'number' | 'percent' | 'milliseconds' | 'currency' }`; `currency:
16467
+ string = 'USD'` is the ISO 4217 code used by currency-formatted metrics (invalid codes safely fall
16468
+ back to USD). `runs:
15565
16469
  AgentEvaluationDashboardRun[] = []` (attribute: false), where each run is `{ id, label, status,
15566
16470
  metrics?: Record<string, number> }`; `metricId: string = ''`; `label: string = ''`; `showChart:
15567
16471
  boolean = true`; `chartHeight: string = '220px'`.
15568
16472
 
15569
- **Events:** `lr-metric-change` (`{ metricId }`, reserved for host-controlled metric selectors) and
16473
+ **Events:** `lr-metric-change` (`{ metricId }`, emitted when a metric selector is activated) and
15570
16474
  `lr-run-select` (`{ runId }`).
15571
16475
 
15572
16476
  **CSS parts:** `base`, `heading`, `metrics`, `metric`, `chart`, `runs`, `runs-heading`, `run`,
15573
16477
  `run-label`, `run-meta`, `run-status`, `empty`.
15574
16478
 
16479
+ **Additional API surface:**
16480
+
16481
+ - `--lr-agent-eval-dashboard-active-border` — Active metric border. Default: `var(--lr-color-brand)`.
16482
+ - `--lr-agent-eval-dashboard-active-background` — Active metric background. Default: `var(--lr-color-brand-quiet)`.
16483
+
15575
16484
  ## `lr-approval-queue`
15576
16485
 
15577
16486
  Keyboard-accessible queue of pending tool calls backed by one reusable `lr-tool-approval-dialog`.
@@ -15587,6 +16496,157 @@ approved, args? }`), and `lr-approval-close` (`{ invocationId, reason }`).
15587
16496
  **CSS parts:** `base`, `heading-row`, `heading`, `count`, `list`, `request`, `request-info`,
15588
16497
  `tool-name`, `request-id`, `status`, `empty`.
15589
16498
 
16499
+ **Additional API surface:**
16500
+
16501
+ - `--lr-approval-queue-selected-border` — Selected request border. Default: `var(--lr-color-brand)`.
16502
+
16503
+ ## `lr-mcp-app`
16504
+
16505
+ Sandbox host for executable MCP App-style resources. Inline documents run in a unique-origin iframe
16506
+ with injected CSP; remote documents are URL-validated. The frame can only request tool calls,
16507
+ messages, navigation, logs, and clamped resizing through typed events. Capabilities are denied
16508
+ unless explicitly enabled in `resource.permissions`.
16509
+
16510
+ **Properties:**
16511
+
16512
+ - `resource: McpAppResource | null = null` (attribute: false) — either inline `html` or a safe
16513
+ remote `src`, plus the required logical `uri`. `McpAppResource = { uri: string; title?: string;
16514
+ html?: string; src?: string; csp?: McpAppCsp; permissions?: McpAppPermissions; metadata?:
16515
+ Record<string, unknown> }`. CSP domain arrays accept HTTP(S) origins only. Permissions are
16516
+ optional booleans for camera, microphone, geolocation, clipboard read, and clipboard write.
16517
+ - `height: number = 320`, `maxHeight: number = 800` (attribute `max-height`) — requested and maximum
16518
+ frame heights in pixels; runtime values and resize requests clamp to 120–10,000.
16519
+ - `label: string = ''`; `accessibleLabel: string | null = null` (attribute `aria-label`) — frame
16520
+ title precedence is host `aria-label`, `label`, resource title, then the localized fallback.
16521
+
16522
+ **Methods:** `postHostContext(context: unknown): void` posts host state into the active frame;
16523
+ `postToolResult(requestId: string, result?: unknown, error?: string): void` resolves a prior tool
16524
+ request. Both are no-ops before a frame exists.
16525
+
16526
+ **Exported types:** `McpAppResource`, `McpAppCsp`, `McpAppPermissions`,
16527
+ `McpAppToolCallDetail`, and `LyraMcpAppEventMap`.
16528
+
16529
+ **Events:** `lr-mcp-ready` (`{ uri }`), `lr-mcp-tool-call` (`{ requestId?, name, args }`),
16530
+ `lr-mcp-send-message` (`{ message }`), `lr-mcp-open-link` (`{ href }`), `lr-mcp-log`
16531
+ (`{ level, value }`), and `lr-mcp-resize` (`{ height }`). These are host-authorized requests; the
16532
+ component does not execute tools, send messages, or navigate itself.
16533
+
16534
+ **CSS parts:** `base`, `frame`, `loading`, `error`.
16535
+
16536
+ **Slots:** none. **Optional peer deps:** none.
16537
+
16538
+ ```ts
16539
+ import '@aceshooting/lyra-ui/components/agent-tools/mcp-app/mcp-app.js';
16540
+ ```
16541
+
16542
+ ## `lr-prompt-studio`
16543
+
16544
+ Prompt-development workbench for ordered role messages, `{{variable}}` substitution, saved
16545
+ versions, resolved preview, and save/run intents. Message and variable edits update the component's
16546
+ current arrays before emitting their complete next state; persistence and execution remain
16547
+ host-owned.
16548
+
16549
+ **Properties:** `messages: PromptStudioMessage[] = []` and
16550
+ `variables: PromptStudioVariable[] = []` are property-only editor state: user edits update the
16551
+ current arrays before `lr-change` is emitted, while the host remains responsible for persistence.
16552
+ `versions: PromptStudioVersion[] = []` is a property-only host-controlled input;
16553
+ `selectedVersionId: string = ''` (attribute `selected-version-id`); `label: string = ''`;
16554
+ `running: boolean = false` and `disabled: boolean = false` (both reflected).
16555
+
16556
+ **Exported types:** `PromptStudioRole = 'system' | 'user' | 'assistant' | 'tool'`;
16557
+ `PromptStudioMessage = { id, role, content, name? }`; `PromptStudioVariable = { name, value,
16558
+ description? }`; `PromptStudioVersion = { id: string; label: string; messages:
16559
+ PromptStudioMessage[]; variables?: PromptStudioVariable[]; createdAt?: string }`; and
16560
+ `PromptStudioState = { messages, variables }`.
16561
+
16562
+ **Events:** `lr-change`, `lr-run`, `lr-save` (all carry complete messages/variables);
16563
+ `lr-version-select` (`{ version }`).
16564
+
16565
+ **CSS parts:** `base`, `toolbar`, `editor`, `messages`, `message`, `message-role`,
16566
+ `message-content`, `remove-message`, `add-message`, `variables`, `variable`, `versions`, `version`,
16567
+ `preview`, `save`, `run`.
16568
+
16569
+ **Slots:** none. **Optional peer deps:** none.
16570
+
16571
+ ```ts
16572
+ import '@aceshooting/lyra-ui/components/agent-tools/prompt-studio/prompt-studio.js';
16573
+ ```
16574
+
16575
+ **Additional API surface:**
16576
+
16577
+ - `--lr-prompt-studio-field-hover-border` — Enabled field hover border. Default: `var(--lr-color-brand)`.
16578
+ - `--lr-prompt-studio-version-selected-border` — Selected version border. Default: `var(--lr-color-brand)`.
16579
+ - `--lr-prompt-studio-version-selected-bg` — Selected version background. Default: `var(--lr-color-brand-quiet)`.
16580
+ - `--lr-prompt-studio-version-selected-color` — Selected version foreground. Default: `var(--lr-color-text)`.
16581
+ - `--lr-prompt-studio-version-selected-hover-bg` — Selected version hover background. Default: `var(--lr-color-brand-quiet)`.
16582
+
16583
+ ## `lr-schema-viewer`
16584
+
16585
+ Recursive JSON Schema inspector with property/branch selection, required and constraint display,
16586
+ validation issues, `$ref` visibility, composition branches, cycle protection, and a depth ceiling.
16587
+ It intentionally does not fetch remote references or validate values.
16588
+
16589
+ **Properties:** `schema: JsonSchemaNode | null = null` and `issues: SchemaValidationIssue[] = []`
16590
+ (attribute: false); `selectedPath: string = ''` (attribute `selected-path`);
16591
+ `maxDepth: number = 20` (attribute `max-depth`, clamped to 100); `label: string = ''`.
16592
+
16593
+ **Exported types:** `JsonSchemaNode` covers `$ref`, type/title/description, properties/items,
16594
+ required/enum/const/default/examples, and oneOf/anyOf/allOf while preserving unknown schema
16595
+ keywords. `SchemaValidationIssue = { path: string; message: string; severity?: 'error' | 'warning'
16596
+ | 'info' }`.
16597
+
16598
+ **Events:** `lr-schema-select` (`{ path, schema }`, with an RFC 6901-style JSON Pointer).
16599
+
16600
+ **CSS parts:** `base`, `tree`, `node`, `node-selected`, `node-trigger`, `name`, `type`, `required`,
16601
+ `description`, `constraints`, `issue`, `limit`, `empty`.
16602
+
16603
+ Rendering is capped at 500 schema nodes; `limit` reports truncation. Cycles stop at the repeated
16604
+ node rather than recursing. **Slots:** none. **Optional peer deps:** none.
16605
+
16606
+ ```ts
16607
+ import '@aceshooting/lyra-ui/components/agent-tools/schema-viewer/schema-viewer.js';
16608
+ ```
16609
+
16610
+ **Additional API surface:**
16611
+
16612
+ - `part="limit"` — Resource-ceiling status shown when additional nodes are omitted.
16613
+ - `--lr-schema-viewer-selected-border` — Selected node branch. Default: `var(--lr-color-brand)`.
16614
+ - `--lr-schema-viewer-error-border` — Error issue border. Default: `var(--lr-color-danger)`.
16615
+ - `--lr-schema-viewer-error-bg` — Error issue background. Default: `var(--lr-color-danger-quiet)`.
16616
+ - `--lr-schema-viewer-warning-border` — Warning issue border. Default: `var(--lr-color-warning)`.
16617
+ - `--lr-schema-viewer-warning-bg` — Warning issue background. Default: `var(--lr-color-warning-quiet)`.
16618
+
16619
+ ## `lr-subagent-panel`
16620
+
16621
+ Controlled nested-agent hierarchy with lifecycle badges, task/model context, guarded progress,
16622
+ selection, cancel, and retry intents. `SubagentRun.parentId` creates nesting; cycles and orphan
16623
+ parents remain renderable instead of recursing forever.
16624
+
16625
+ **Properties:** `runs: SubagentRun[] = []` (attribute: false);
16626
+ `selectedRunId: string = ''` (attribute `selected-run-id`); `label: string = ''`.
16627
+ `SubagentRun = { id: string; parentId?: string; label: string; status: AgentStatusKind; task?:
16628
+ string; model?: string; progress?: number; startedAt?: number; endedAt?: number; metadata?:
16629
+ Record<string, unknown> }`.
16630
+
16631
+ **Events:** `lr-run-select` (`{ run }`), `lr-cancel`/`lr-retry` (`{ runId }`).
16632
+
16633
+ **CSS parts:** `base`, `list`, `run`, `run-selected`, `run-row`, `run-trigger`, `label`, `status`,
16634
+ `task`, `model`, `progress`, `actions`, `cancel`, `retry`, `limit`, `empty`.
16635
+
16636
+ At most 500 runs render, and visual indentation is capped at 12 levels while ARIA hierarchy keeps
16637
+ the logical depth. Progress is finite and clamped. **Slots:** none. **Optional peer deps:** none.
16638
+
16639
+ ```ts
16640
+ import '@aceshooting/lyra-ui/components/agent-tools/subagent-panel/subagent-panel.js';
16641
+ ```
16642
+
16643
+ **Additional API surface:**
16644
+
16645
+ - `part="limit"` — Resource-ceiling status shown when additional runs are omitted.
16646
+ - `--lr-subagent-panel-selected-border` — Selected run border. Default: `var(--lr-color-brand)`.
16647
+ - `--lr-subagent-panel-progress-track` — Progress track. Default: `var(--lr-color-border)`.
16648
+ - `--lr-subagent-panel-progress-fill` — Progress fill. Default: `var(--lr-color-brand)`.
16649
+
15590
16650
  # Retrieval, knowledge graph & grounding (`components/retrieval/`)
15591
16651
 
15592
16652
  ## `lr-graph`
@@ -15749,9 +16809,9 @@ install with `pnpm add d3-force d3-drag d3-zoom d3-selection`).
15749
16809
  zoom/drag are still pointer-only with no keyboard equivalent. Links (`<line part="link">`) are now
15750
16810
  keyboard-operable too (`tabindex="0"`, `role="button"`, `aria-label`, Enter/Space), matching nodes.
15751
16811
  - 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.
16812
+ `<lr-skeleton>` sized to `width`/`height` with `aria-busy="true"`. If they fail to load (for
16813
+ example, because they are not installed), the graph fails closed with a localized
16814
+ `part="error"` / `role="alert"` message instead of leaving an empty SVG.
15755
16815
  - `GraphNode.color` is sanitized (rejects `;`/`{`/`}`) before being written into the
15756
16816
  `--lr-node-fill` inline custom property, so an untrusted color string can't break out of that
15757
16817
  CSS declaration.
@@ -16277,9 +17337,9 @@ fired after every toggle including select-all).
16277
17337
 
16278
17338
  **CSS parts:** `base`, `search` (the built-in filter `lr-input`, only when `searchable`),
16279
17339
  `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).
17340
+ (`role="tree"`), `item` (`role="treeitem"`), `disclosure` (a folder row's expand/collapse button),
17341
+ `checkbox` (tri-state glyph), `icon` (the `lr-file-icon` type badge), `label`, `empty` (`noData`
17342
+ when `sources` is empty, `noMatches` when a filter empties the tree).
16283
17343
 
16284
17344
  **Themeable custom properties:** `--lr-source-picker-checked-bg` — the background of a fully-checked
16285
17345
  selection control: the `select-all` pill (whose resting default is `var(--lr-color-brand-quiet)`) and
@@ -16528,7 +17588,7 @@ direct light-DOM children of the list (plain composition — no `.items` array p
16528
17588
  - `labelPlural: string = ''` (attribute `label-plural`) — fully consumer-built, already-pluralized
16529
17589
  header summary, e.g. `"3 sources"` or `"1 source"`; this component never counts or pluralizes on
16530
17590
  its own. Takes precedence over `label` when both are set. If neither is set, the header falls back
16531
- to the literal word `"Sources"`.
17591
+ to the localized `sourceListDefaultLabel` string (English default: `"Sources"`).
16532
17592
 
16533
17593
  **Getters:** `sourceCount: number` — read-only, live-updated count of the currently-slotted children,
16534
17594
  handy for building a `label-plural` string reactively, e.g. `` list.labelPlural = `${list.sourceCount} sources` ``.
@@ -16629,10 +17689,9 @@ forwarding scenarios or engines that don't fire `slotchange` for content already
16629
17689
  time.
16630
17690
 
16631
17691
  **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.
17692
+ - `lr-source-list` does not automatically build an “N sources” plural summary: provide
17693
+ `labelPlural` when that is wanted. Its no-label fallback is localized through
17694
+ `sourceListDefaultLabel`, and a per-instance `.strings` override reaches the rendered header.
16636
17695
  - `lr-source-card`'s own expand/collapse (`full` slot, `lr-expand` event) is completely
16637
17696
  independent of the parent list's `expanded`/`lr-toggle` — collapsing the list doesn't reset an
16638
17697
  individual card's `fullExpanded` state, and there is no cross-talk between the two components at
@@ -16715,8 +17774,9 @@ and `lr-citation-badge` for each evidence entry.
16715
17774
  **Properties:**
16716
17775
  - `assessment: GroundingAssessment | null = null` (attribute: false) — **`GroundingAssessment`,
16717
17776
  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
17777
+ unsupportedClaims: number; coverage: number; confidence?: number; warnings?: string[];
17778
+ claims?: GroundedClaim[] }`, where `coverage` and `confidence` are 0–1 fractions. `null` renders
17779
+ the empty state
16720
17780
  - `citations: Citation[] = []` (attribute: false) — **`Citation` from `@aceshooting/lyra-ui/ai`**:
16721
17781
  `{ id: string; chunkId?: string; sourceId?: string; span?: { start: number; end: number };
16722
17782
  label?: string }`. Independent of `assessment`; empty omits the whole evidence section. Each entry
@@ -16726,8 +17786,10 @@ and `lr-citation-badge` for each evidence entry.
16726
17786
  `GroundingSummaryThresholds { high: number; medium: number }` (exported here), both 0–1 fractions,
16727
17787
  applied to both `coverage` and `confidence`: `>= high` → `success` tone, `>= medium` → `warning`,
16728
17788
  below → `danger`
16729
- - `label: string = ''` — accessible group label; falls back to a host `aria-label`, then the
16730
- localized `groundingSummaryLabel`
17789
+ - `label: string = ''` — accessible group label. A host `aria-label` takes precedence, followed by
17790
+ `label`, then the localized `groundingSummaryLabel`
17791
+ - `showClaims: boolean = true` (attribute `show-claims`) — renders `assessment.claims` through
17792
+ `lr-claim-evidence`; set false to keep the aggregate scorecard only
16731
17793
 
16732
17794
  **Events:** `lr-citation-select` (`detail: CitationSelectEventDetail` from
16733
17795
  `@aceshooting/lyra-ui/ai` = `{ citation: Citation }`) — emitted when an evidence badge is activated.
@@ -16742,7 +17804,8 @@ row), `warnings` (omitted when there are none), `warnings-heading`, `warnings-co
16742
17804
  `warnings-list` (a `<ul>`), `warning` (one `<li>`), `evidence` (omitted when `citations` is empty),
16743
17805
  `evidence-heading`, `evidence-count`, `evidence-item` (badge + always-visible label/span text),
16744
17806
  `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`).
17807
+ `Citation.span` range, omitted when unset), `claims` (the composed claim-evidence audit), `empty`
17808
+ (shown when `assessment` is `null`).
16746
17809
 
16747
17810
  **Themeable custom properties:** shared tokens only.
16748
17811
 
@@ -16788,8 +17851,10 @@ Both `RetryEventDetail` and `CancelEventDetail` come from `@aceshooting/lyra-ui/
16788
17851
  per-item stage label), `item-progress`,
16789
17852
  `item-chunk-count`, `item-embedding-status` (the "N of M chunks embedded" text, only once both
16790
17853
  `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`.
17854
+ `item-error` (only for `stage="failed"` with `error` set), `failure-live` (the visually hidden
17855
+ assertive region that announces only failures added or transitioned after mount; historical failed
17856
+ rows remain visible without being re-announced), `item-actions`, `retry-button`, `cancel-button`,
17857
+ `empty`.
16793
17858
 
16794
17859
  In virtualized mode (at or above `virtualizeThreshold`) the rows live in the internal
16795
17860
  `lr-virtual-list`'s shadow root, and `item`, `item-header`, `item-name`, `item-progress`,
@@ -17185,8 +18250,9 @@ fetches, ranks, or computes retrieval results itself.
17185
18250
  stage whose evidence has none of the three renders no disclosure row at all
17186
18251
  - `activeStageId: string | null = null` (attribute `active-stage-id`) — controlled selection,
17187
18252
  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
18253
+ - `label: string = ''` — accessible name for the timeline. A host `aria-label` takes precedence,
18254
+ followed by `label`, then the waterfall's own localized default; late attribute changes and
18255
+ removal update that resolved name
17190
18256
 
17191
18257
  **Events:** `lr-stage-select` (`detail: { id: string }`, a stage's bar was activated — click, Enter,
17192
18258
  Space), `lr-stage-toggle` (`detail: { id: string; expanded: boolean }`, an evidence panel was
@@ -17225,9 +18291,10 @@ or source fetching.
17225
18291
  **Properties:** `answer: string = ''`; `citations: Citation[] = []` (attribute: false);
17226
18292
  `sources: DocumentRef[] = []` (attribute: false); `assessment: GroundingAssessment | null = null`
17227
18293
  (attribute: false); `loading: boolean = false`; `error: string = ''`; `showSources: boolean = true`;
17228
- `label: string = ''`; `accessibleLabel: string | null = null` (attribute `aria-label`).
18294
+ `showClaims: boolean = true` (attribute `show-claims`); `label: string = ''`; `accessibleLabel:
18295
+ string | null = null` (attribute `aria-label`).
17229
18296
 
17230
- **Events:** `lr-citation-select` (`{ citation }`) and `lr-retry`.
18297
+ **Events:** `lr-citation-select` (`{ citation }`), `lr-claim-select` (`{ claim }`), and `lr-retry`.
17231
18298
 
17232
18299
  **Slots:** `answer` replaces the data-driven Markdown body; `sources` replaces the data-driven
17233
18300
  source list.
@@ -17249,6 +18316,9 @@ omitted.
17249
18316
 
17250
18317
  **CSS parts:** `base`, `plot`, `point`, `empty`.
17251
18318
 
18319
+ **Themeable custom properties:** `--lr-embedding-explorer-selected-stroke` (default
18320
+ `var(--lr-color-brand)`) — stroke color of the selected point. Plus shared tokens.
18321
+
17252
18322
  ## `lr-knowledge-base-admin`
17253
18323
 
17254
18324
  Tabbed operations shell composing `lr-knowledge-base` and `lr-ingestion-queue`. It forwards source
@@ -17266,3 +18336,87 @@ correlated ids/details from their composed primitives).
17266
18336
  **Slots:** `settings` — host-owned KB configuration controls.
17267
18337
 
17268
18338
  **CSS parts:** `base`, `heading`, `tabs`, `tab`, `panel`, `settings`.
18339
+
18340
+ ## `lr-claim-evidence`
18341
+
18342
+ Controlled claim-by-claim grounding audit relating `GroundedClaim[]` to complete `Citation[]`
18343
+ records. Dangling citation ids are ignored rather than rendered as invented evidence.
18344
+
18345
+ **Properties:** `claims: GroundedClaim[] = []` and `citations: Citation[] = []` (attribute: false);
18346
+ `selectedClaimId: string = ''` (attribute `selected-claim-id`); `label: string = ''`.
18347
+ `GroundedClaim = { id, text, status, citationIds, answerRange?, confidence?, explanation? }`, with
18348
+ `status: 'supported' | 'partially-supported' | 'unsupported' | 'contradicted'`. Claim confidence
18349
+ is clamped to 0–1 for localized percent display. `Citation` is the shared AI citation record
18350
+ (`id`, source/chunk ids, label, locator/ranges, quote, metadata).
18351
+
18352
+ **Events:** `lr-claim-select` (`{ claim }`), `lr-citation-select` (`{ citation }`).
18353
+
18354
+ **CSS parts:** `base`, `list`, `claim`, `claim-selected`, `claim-trigger`, `status`, `claim-text`,
18355
+ `confidence`, `explanation`, `evidence`, `empty`.
18356
+
18357
+ Selection is controlled: activation emits the complete claim but does not assign
18358
+ `selectedClaimId`. Evidence preserves `citations` order and silently skips dangling ids.
18359
+ **Slots:** none. **Optional peer deps:** none.
18360
+
18361
+ ```ts
18362
+ import '@aceshooting/lyra-ui/components/retrieval/claim-evidence/claim-evidence.js';
18363
+ ```
18364
+
18365
+ ## `lr-retrieval-compare`
18366
+
18367
+ Side-by-side retrieval/reranking workbench showing effective rank, top-k Jaccard overlap, and
18368
+ dense/sparse/rerank/final score breakdowns.
18369
+
18370
+ **Properties:** `sets: RetrievalComparisonSet[] = []` (attribute: false), where
18371
+ `RetrievalComparisonSet = { id: string; label: string; chunks: RetrievalChunk[] }`;
18372
+ `topK: number = 10` (attribute `top-k`, finite integer with minimum 1);
18373
+ `selectedChunkId: string = ''` (attribute `selected-chunk-id`); `label: string = ''`.
18374
+ `RetrievalChunk` is the shared AI record carrying id/text/score/source plus optional rank, locator,
18375
+ trace metadata, and `scores?: { dense?, sparse?, rerank?, final }`.
18376
+
18377
+ **Events:** `lr-chunk-select` (`{ setId, chunk }`).
18378
+
18379
+ **CSS parts:** `base`, `overlap`, `sets`, `set`, `set-heading`, `chunks`, `chunk`,
18380
+ `chunk-selected`, `chunk-rank`, `chunk-title`, `chunk-text`, `scores`, `score`, `empty`.
18381
+
18382
+ Chunks are ordered by effective rank, then score, then input order before the top-k slice. Overlap
18383
+ is pairwise Jaccard similarity across those visible chunk ids. Selection is controlled.
18384
+ **Slots:** none. **Optional peer deps:** none.
18385
+
18386
+ ```ts
18387
+ import '@aceshooting/lyra-ui/components/retrieval/retrieval-compare/retrieval-compare.js';
18388
+ ```
18389
+
18390
+ ## `lr-rag-eval-dashboard`
18391
+
18392
+ Controlled RAG evaluation overview with latest metric cards, per-metric trends, evaluation slices,
18393
+ and run history. The host computes metrics and owns evaluation execution.
18394
+
18395
+ **Properties:** `metrics: RagEvaluationMetric[] = []` and `runs: RagEvaluationRun[] = []`
18396
+ (attribute: false); `metricId: string = ''` (attribute `metric-id`, with the first metric used for
18397
+ display when unset/unmatched); `slice: string = ''`; `label: string = ''`;
18398
+ `showChart: boolean = true` (attribute `show-chart`, reflected, string-aware true-default
18399
+ converter); `chartHeight: string = '220px'` (attribute `chart-height`).
18400
+
18401
+ `RagEvaluationMetric = { id, label, category, format? }`, where category is
18402
+ `'retrieval' | 'generation' | 'system' | custom-string` and format is `'number' | 'percent'`.
18403
+ `RagEvaluationRun = { id, label, metrics: Record<string, number>; slice?, timestamp?, metadata? }`.
18404
+
18405
+ **Events:** `lr-metric-change` (`{ metricId }`), `lr-slice-change` (`{ slice }`), and
18406
+ `lr-run-select` (`{ run }`). All are controlled intents; the component does not mutate the
18407
+ corresponding selection properties.
18408
+
18409
+ **CSS parts:** `base`, `heading`, `slices`, `slice`, `slice-selected`, `metrics`, `metric`,
18410
+ `metric-selected`, `chart`, `runs`, `runs-heading`, `run`, `empty`.
18411
+
18412
+ Percent values clamp to 0–1 and all numbers use `effectiveLocale`. The chart is built from the
18413
+ filtered run order; the host computes every metric and owns evaluation execution.
18414
+ **Slots:** none. **Optional peer deps:** none.
18415
+
18416
+ ```ts
18417
+ import '@aceshooting/lyra-ui/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.js';
18418
+ ```
18419
+
18420
+ `lr-grounding-summary` and `lr-rag-answer` now accept `GroundingAssessment.claims` and expose
18421
+ `showClaims: boolean = true`; `lr-retrieval-results` forwards `RetrievalChunk.locator` as the
18422
+ document-viewer-compatible `anchor` in `lr-chunk-open`.