@aceshooting/lyra-ui 5.2.0 → 6.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 (853) hide show
  1. package/CHANGELOG.md +4024 -0
  2. package/README.md +7 -6
  3. package/custom-elements.json +4330 -1600
  4. package/dist/ai/types.contract.js +1 -0
  5. package/dist/ai/types.contract.js.map +1 -1
  6. package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts.map +1 -1
  7. package/dist/components/agent-tools/activity-feed/activity-feed.class.js.map +1 -1
  8. package/dist/components/agent-tools/agent-run/agent-run.class.d.ts.map +1 -1
  9. package/dist/components/agent-tools/agent-run/agent-run.class.js.map +1 -1
  10. package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts.map +1 -1
  11. package/dist/components/agent-tools/agent-trace/agent-trace.class.js.map +1 -1
  12. package/dist/components/agent-tools/artifact-panel/artifact-panel.class.d.ts +4 -2
  13. package/dist/components/agent-tools/artifact-panel/artifact-panel.class.d.ts.map +1 -1
  14. package/dist/components/agent-tools/artifact-panel/artifact-panel.class.js +3 -1
  15. package/dist/components/agent-tools/artifact-panel/artifact-panel.class.js.map +1 -1
  16. package/dist/components/agent-tools/browser-frame/browser-frame.class.d.ts +7 -3
  17. package/dist/components/agent-tools/browser-frame/browser-frame.class.d.ts.map +1 -1
  18. package/dist/components/agent-tools/browser-frame/browser-frame.class.js.map +1 -1
  19. package/dist/components/agent-tools/commit-card/commit-card.class.d.ts.map +1 -1
  20. package/dist/components/agent-tools/commit-card/commit-card.class.js.map +1 -1
  21. package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts.map +1 -1
  22. package/dist/components/agent-tools/compare-panel/compare-panel.class.js.map +1 -1
  23. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.d.ts +36 -4
  24. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.d.ts.map +1 -1
  25. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +68 -19
  26. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js.map +1 -1
  27. package/dist/components/agent-tools/confirm-bar/confirm-bar.d.ts +1 -0
  28. package/dist/components/agent-tools/confirm-bar/confirm-bar.d.ts.map +1 -1
  29. package/dist/components/agent-tools/confirm-bar/confirm-bar.js +1 -0
  30. package/dist/components/agent-tools/confirm-bar/confirm-bar.js.map +1 -1
  31. package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.d.ts.map +1 -1
  32. package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.js +10 -29
  33. package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.js.map +1 -1
  34. package/dist/components/agent-tools/context-inspector/context-inspector.class.d.ts.map +1 -1
  35. package/dist/components/agent-tools/context-inspector/context-inspector.class.js.map +1 -1
  36. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.d.ts +7 -7
  37. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.d.ts.map +1 -1
  38. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +14 -13
  39. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js.map +1 -1
  40. package/dist/components/agent-tools/eval-dataset/eval-dataset.d.ts +1 -1
  41. package/dist/components/agent-tools/eval-dataset/eval-dataset.d.ts.map +1 -1
  42. package/dist/components/agent-tools/eval-dataset/eval-dataset.js +1 -1
  43. package/dist/components/agent-tools/eval-dataset/eval-dataset.js.map +1 -1
  44. package/dist/components/agent-tools/eval-result/eval-result.class.d.ts +11 -9
  45. package/dist/components/agent-tools/eval-result/eval-result.class.d.ts.map +1 -1
  46. package/dist/components/agent-tools/eval-result/eval-result.class.js +9 -7
  47. package/dist/components/agent-tools/eval-result/eval-result.class.js.map +1 -1
  48. package/dist/components/agent-tools/eval-result/eval-result.d.ts +1 -1
  49. package/dist/components/agent-tools/eval-result/eval-result.d.ts.map +1 -1
  50. package/dist/components/agent-tools/eval-result/eval-result.js +1 -1
  51. package/dist/components/agent-tools/eval-result/eval-result.js.map +1 -1
  52. package/dist/components/agent-tools/evaluation-run/evaluation-run.class.d.ts.map +1 -1
  53. package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +6 -6
  54. package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js.map +1 -1
  55. package/dist/components/agent-tools/policy-summary/policy-summary.class.d.ts.map +1 -1
  56. package/dist/components/agent-tools/policy-summary/policy-summary.class.js.map +1 -1
  57. package/dist/components/agent-tools/result-card/result-card.class.d.ts.map +1 -1
  58. package/dist/components/agent-tools/result-card/result-card.class.js.map +1 -1
  59. package/dist/components/agent-tools/result-card/result-field.class.d.ts.map +1 -1
  60. package/dist/components/agent-tools/result-card/result-field.class.js.map +1 -1
  61. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.d.ts.map +1 -1
  62. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +1 -0
  63. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js.map +1 -1
  64. package/dist/components/agent-tools/stack-trace/stack-trace-parse.d.ts.map +1 -1
  65. package/dist/components/agent-tools/stack-trace/stack-trace-parse.js +1 -0
  66. package/dist/components/agent-tools/stack-trace/stack-trace-parse.js.map +1 -1
  67. package/dist/components/agent-tools/stack-trace/stack-trace.class.d.ts.map +1 -1
  68. package/dist/components/agent-tools/stack-trace/stack-trace.class.js.map +1 -1
  69. package/dist/components/agent-tools/task-list/task-list.class.d.ts.map +1 -1
  70. package/dist/components/agent-tools/task-list/task-list.class.js.map +1 -1
  71. package/dist/components/agent-tools/terminal/terminal.class.d.ts.map +1 -1
  72. package/dist/components/agent-tools/terminal/terminal.class.js +1 -1
  73. package/dist/components/agent-tools/terminal/terminal.class.js.map +1 -1
  74. package/dist/components/agent-tools/test-results/test-results.class.d.ts.map +1 -1
  75. package/dist/components/agent-tools/test-results/test-results.class.js +1 -1
  76. package/dist/components/agent-tools/test-results/test-results.class.js.map +1 -1
  77. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts.map +1 -1
  78. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js.map +1 -1
  79. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts +47 -5
  80. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts.map +1 -1
  81. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +90 -15
  82. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js.map +1 -1
  83. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.d.ts +2 -1
  84. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.d.ts.map +1 -1
  85. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.js +2 -1
  86. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.js.map +1 -1
  87. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.d.ts.map +1 -1
  88. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.js +6 -26
  89. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.js.map +1 -1
  90. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts.map +1 -1
  91. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js.map +1 -1
  92. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.d.ts.map +1 -1
  93. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +12 -11
  94. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js.map +1 -1
  95. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.d.ts.map +1 -1
  96. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js.map +1 -1
  97. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts.map +1 -1
  98. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js.map +1 -1
  99. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts.map +1 -1
  100. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js.map +1 -1
  101. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts.map +1 -1
  102. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js.map +1 -1
  103. package/dist/components/agent-tools/trace-tree/trace-tree.class.d.ts.map +1 -1
  104. package/dist/components/agent-tools/trace-tree/trace-tree.class.js +5 -2
  105. package/dist/components/agent-tools/trace-tree/trace-tree.class.js.map +1 -1
  106. package/dist/components/charts/chart/box-plot.class.d.ts.map +1 -1
  107. package/dist/components/charts/chart/box-plot.class.js.map +1 -1
  108. package/dist/components/charts/chart/chart.class.d.ts.map +1 -1
  109. package/dist/components/charts/chart/chart.class.js +0 -3
  110. package/dist/components/charts/chart/chart.class.js.map +1 -1
  111. package/dist/components/charts/chart/histogram-bin.js +3 -3
  112. package/dist/components/charts/chart/histogram-bin.js.map +1 -1
  113. package/dist/components/charts/chart/lite-chart.class.d.ts +5 -1
  114. package/dist/components/charts/chart/lite-chart.class.d.ts.map +1 -1
  115. package/dist/components/charts/chart/lite-chart.class.js +13 -8
  116. package/dist/components/charts/chart/lite-chart.class.js.map +1 -1
  117. package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts.map +1 -1
  118. package/dist/components/conversation/agent-workspace/agent-workspace.class.js +5 -0
  119. package/dist/components/conversation/agent-workspace/agent-workspace.class.js.map +1 -1
  120. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts.map +1 -1
  121. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js.map +1 -1
  122. package/dist/components/conversation/branch-picker/branch-picker.class.d.ts.map +1 -1
  123. package/dist/components/conversation/branch-picker/branch-picker.class.js.map +1 -1
  124. package/dist/components/conversation/chat-composer/chat-composer.class.d.ts.map +1 -1
  125. package/dist/components/conversation/chat-composer/chat-composer.class.js.map +1 -1
  126. package/dist/components/conversation/chat-message/chat-message.class.d.ts.map +1 -1
  127. package/dist/components/conversation/chat-message/chat-message.class.js.map +1 -1
  128. package/dist/components/conversation/chat-viewport/chat-viewport.class.d.ts.map +1 -1
  129. package/dist/components/conversation/chat-viewport/chat-viewport.class.js.map +1 -1
  130. package/dist/components/conversation/checkpoint/checkpoint.class.d.ts.map +1 -1
  131. package/dist/components/conversation/checkpoint/checkpoint.class.js.map +1 -1
  132. package/dist/components/conversation/code-block/code-block-core.class.d.ts +0 -1
  133. package/dist/components/conversation/code-block/code-block-core.class.d.ts.map +1 -1
  134. package/dist/components/conversation/code-block/code-block-core.class.js +6 -8
  135. package/dist/components/conversation/code-block/code-block-core.class.js.map +1 -1
  136. package/dist/components/conversation/code-block/code-block.class.d.ts.map +1 -1
  137. package/dist/components/conversation/code-block/code-block.class.js.map +1 -1
  138. package/dist/components/conversation/code-block/greycat-language.d.ts +5 -0
  139. package/dist/components/conversation/code-block/greycat-language.d.ts.map +1 -1
  140. package/dist/components/conversation/code-block/greycat-language.js +48 -6
  141. package/dist/components/conversation/code-block/greycat-language.js.map +1 -1
  142. package/dist/components/conversation/conversation-item/conversation-item.class.d.ts.map +1 -1
  143. package/dist/components/conversation/conversation-item/conversation-item.class.js.map +1 -1
  144. package/dist/components/conversation/generation-status/generation-status.class.d.ts.map +1 -1
  145. package/dist/components/conversation/generation-status/generation-status.class.js.map +1 -1
  146. package/dist/components/conversation/handoff-divider/handoff-divider.class.d.ts.map +1 -1
  147. package/dist/components/conversation/handoff-divider/handoff-divider.class.js.map +1 -1
  148. package/dist/components/conversation/markdown/markdown-core.class.d.ts.map +1 -1
  149. package/dist/components/conversation/markdown/markdown-core.class.js +4 -1
  150. package/dist/components/conversation/markdown/markdown-core.class.js.map +1 -1
  151. package/dist/components/conversation/markdown/markdown-shared.d.ts.map +1 -1
  152. package/dist/components/conversation/markdown/markdown-shared.js +1 -0
  153. package/dist/components/conversation/markdown/markdown-shared.js.map +1 -1
  154. package/dist/components/conversation/markdown/markdown.class.d.ts.map +1 -1
  155. package/dist/components/conversation/markdown/markdown.class.js +1 -4
  156. package/dist/components/conversation/markdown/markdown.class.js.map +1 -1
  157. package/dist/components/conversation/message-actions/message-actions.class.d.ts.map +1 -1
  158. package/dist/components/conversation/message-actions/message-actions.class.js.map +1 -1
  159. package/dist/components/conversation/message-feedback/message-feedback.class.d.ts +5 -3
  160. package/dist/components/conversation/message-feedback/message-feedback.class.d.ts.map +1 -1
  161. package/dist/components/conversation/message-feedback/message-feedback.class.js.map +1 -1
  162. package/dist/components/conversation/model-select/model-select.class.d.ts.map +1 -1
  163. package/dist/components/conversation/model-select/model-select.class.js +7 -10
  164. package/dist/components/conversation/model-select/model-select.class.js.map +1 -1
  165. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.d.ts.map +1 -1
  166. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js.map +1 -1
  167. package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts.map +1 -1
  168. package/dist/components/conversation/push-to-talk/push-to-talk.class.js.map +1 -1
  169. package/dist/components/conversation/stream-status/stream-status.class.d.ts.map +1 -1
  170. package/dist/components/conversation/stream-status/stream-status.class.js.map +1 -1
  171. package/dist/components/conversation/streaming-text/streaming-text.class.d.ts.map +1 -1
  172. package/dist/components/conversation/streaming-text/streaming-text.class.js.map +1 -1
  173. package/dist/components/conversation/suggestion-chips/suggestion-chips.class.d.ts.map +1 -1
  174. package/dist/components/conversation/suggestion-chips/suggestion-chips.class.js.map +1 -1
  175. package/dist/components/conversation/thread-list/thread-list.class.d.ts +16 -3
  176. package/dist/components/conversation/thread-list/thread-list.class.d.ts.map +1 -1
  177. package/dist/components/conversation/thread-list/thread-list.class.js +27 -7
  178. package/dist/components/conversation/thread-list/thread-list.class.js.map +1 -1
  179. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts.map +1 -1
  180. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +2 -1
  181. package/dist/components/conversation/transcript-feed/transcript-feed.class.js.map +1 -1
  182. package/dist/components/conversation/typing-indicator/typing-indicator.class.d.ts.map +1 -1
  183. package/dist/components/conversation/typing-indicator/typing-indicator.class.js.map +1 -1
  184. package/dist/components/conversation/usage-badge/usage-badge.class.d.ts.map +1 -1
  185. package/dist/components/conversation/usage-badge/usage-badge.class.js.map +1 -1
  186. package/dist/components/conversation/voice-picker/voice-picker.class.d.ts.map +1 -1
  187. package/dist/components/conversation/voice-picker/voice-picker.class.js +7 -5
  188. package/dist/components/conversation/voice-picker/voice-picker.class.js.map +1 -1
  189. package/dist/components/conversation/widget-renderer/resolve.js +2 -2
  190. package/dist/components/conversation/widget-renderer/resolve.js.map +1 -1
  191. package/dist/components/conversation/widget-renderer/widget-renderer.class.d.ts.map +1 -1
  192. package/dist/components/conversation/widget-renderer/widget-renderer.class.js +3 -3
  193. package/dist/components/conversation/widget-renderer/widget-renderer.class.js.map +1 -1
  194. package/dist/components/data/calendar/calendar.class.d.ts +3 -1
  195. package/dist/components/data/calendar/calendar.class.d.ts.map +1 -1
  196. package/dist/components/data/calendar/calendar.class.js +1 -0
  197. package/dist/components/data/calendar/calendar.class.js.map +1 -1
  198. package/dist/components/data/calendar/calendar.styles.js +3 -3
  199. package/dist/components/data/context-meter/context-meter.class.d.ts.map +1 -1
  200. package/dist/components/data/context-meter/context-meter.class.js.map +1 -1
  201. package/dist/components/data/document-library/document-library.class.d.ts +6 -5
  202. package/dist/components/data/document-library/document-library.class.d.ts.map +1 -1
  203. package/dist/components/data/document-library/document-library.class.js +2 -3
  204. package/dist/components/data/document-library/document-library.class.js.map +1 -1
  205. package/dist/components/data/env-list/env-list.class.d.ts.map +1 -1
  206. package/dist/components/data/env-list/env-list.class.js.map +1 -1
  207. package/dist/components/data/file-tree/file-tree.class.d.ts.map +1 -1
  208. package/dist/components/data/file-tree/file-tree.class.js.map +1 -1
  209. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +8 -1
  210. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts.map +1 -1
  211. package/dist/components/data/flow-canvas/flow-canvas.class.js +17 -12
  212. package/dist/components/data/flow-canvas/flow-canvas.class.js.map +1 -1
  213. package/dist/components/data/flow-canvas/flow-canvas.styles.d.ts.map +1 -1
  214. package/dist/components/data/flow-canvas/flow-canvas.styles.js +2 -1
  215. package/dist/components/data/flow-canvas/flow-canvas.styles.js.map +1 -1
  216. package/dist/components/data/flow-controls/flow-controls.class.d.ts.map +1 -1
  217. package/dist/components/data/flow-controls/flow-controls.class.js.map +1 -1
  218. package/dist/components/data/flow-minimap/flow-minimap.class.d.ts.map +1 -1
  219. package/dist/components/data/flow-minimap/flow-minimap.class.js.map +1 -1
  220. package/dist/components/data/flow-node/flow-node.class.d.ts.map +1 -1
  221. package/dist/components/data/flow-node/flow-node.class.js.map +1 -1
  222. package/dist/components/data/flow-run-overlay/flow-run-overlay.class.d.ts.map +1 -1
  223. package/dist/components/data/flow-run-overlay/flow-run-overlay.class.js +1 -1
  224. package/dist/components/data/flow-run-overlay/flow-run-overlay.class.js.map +1 -1
  225. package/dist/components/data/gauge/gauge.class.d.ts.map +1 -1
  226. package/dist/components/data/gauge/gauge.class.js.map +1 -1
  227. package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +0 -1
  228. package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts.map +1 -1
  229. package/dist/components/data/graph-query-builder/graph-query-builder.class.js +0 -2
  230. package/dist/components/data/graph-query-builder/graph-query-builder.class.js.map +1 -1
  231. package/dist/components/data/heatmap/calendar-grid.d.ts.map +1 -1
  232. package/dist/components/data/heatmap/calendar-grid.js +8 -2
  233. package/dist/components/data/heatmap/calendar-grid.js.map +1 -1
  234. package/dist/components/data/heatmap/heatmap.class.d.ts +6 -2
  235. package/dist/components/data/heatmap/heatmap.class.d.ts.map +1 -1
  236. package/dist/components/data/heatmap/heatmap.class.js +4 -4
  237. package/dist/components/data/heatmap/heatmap.class.js.map +1 -1
  238. package/dist/components/data/pagination/pagination.class.d.ts.map +1 -1
  239. package/dist/components/data/pagination/pagination.class.js.map +1 -1
  240. package/dist/components/data/query-builder/query-builder.class.d.ts.map +1 -1
  241. package/dist/components/data/query-builder/query-builder.class.js.map +1 -1
  242. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts.map +1 -1
  243. package/dist/components/data/sequence-strip/sequence-strip.class.js.map +1 -1
  244. package/dist/components/data/sparkline/sparkline.class.d.ts.map +1 -1
  245. package/dist/components/data/sparkline/sparkline.class.js +4 -2
  246. package/dist/components/data/sparkline/sparkline.class.js.map +1 -1
  247. package/dist/components/data/stat/stat.class.d.ts.map +1 -1
  248. package/dist/components/data/stat/stat.class.js.map +1 -1
  249. package/dist/components/data/table/table.class.d.ts +16 -4
  250. package/dist/components/data/table/table.class.d.ts.map +1 -1
  251. package/dist/components/data/table/table.class.js +35 -33
  252. package/dist/components/data/table/table.class.js.map +1 -1
  253. package/dist/components/data/timeline/timeline-item.class.d.ts.map +1 -1
  254. package/dist/components/data/timeline/timeline-item.class.js +5 -2
  255. package/dist/components/data/timeline/timeline-item.class.js.map +1 -1
  256. package/dist/components/data/timeline/timeline-item.styles.d.ts.map +1 -1
  257. package/dist/components/data/timeline/timeline-item.styles.js +6 -0
  258. package/dist/components/data/timeline/timeline-item.styles.js.map +1 -1
  259. package/dist/components/data/timeline/timeline.class.d.ts.map +1 -1
  260. package/dist/components/data/timeline/timeline.class.js.map +1 -1
  261. package/dist/components/data/tree/tree-item.d.ts +24 -0
  262. package/dist/components/data/tree/tree-item.d.ts.map +1 -0
  263. package/dist/components/data/tree/tree-item.js +5 -0
  264. package/dist/components/data/tree/tree-item.js.map +1 -0
  265. package/dist/components/data/tree/tree-node.class.d.ts +1 -1
  266. package/dist/components/data/tree/tree-node.class.d.ts.map +1 -1
  267. package/dist/components/data/tree/tree-node.class.js.map +1 -1
  268. package/dist/components/data/tree/tree.class.d.ts +2 -21
  269. package/dist/components/data/tree/tree.class.d.ts.map +1 -1
  270. package/dist/components/data/tree/tree.class.js +5 -2
  271. package/dist/components/data/tree/tree.class.js.map +1 -1
  272. package/dist/components/data/word-cloud/word-cloud-layout.d.ts +7 -2
  273. package/dist/components/data/word-cloud/word-cloud-layout.d.ts.map +1 -1
  274. package/dist/components/data/word-cloud/word-cloud-layout.js.map +1 -1
  275. package/dist/components/data/word-cloud/word-cloud.class.d.ts +3 -3
  276. package/dist/components/data/word-cloud/word-cloud.class.d.ts.map +1 -1
  277. package/dist/components/data/word-cloud/word-cloud.class.js.map +1 -1
  278. package/dist/components/forms/button/button.class.d.ts +5 -0
  279. package/dist/components/forms/button/button.class.d.ts.map +1 -1
  280. package/dist/components/forms/button/button.class.js +5 -0
  281. package/dist/components/forms/button/button.class.js.map +1 -1
  282. package/dist/components/forms/button/button.styles.d.ts.map +1 -1
  283. package/dist/components/forms/button/button.styles.js +6 -2
  284. package/dist/components/forms/button/button.styles.js.map +1 -1
  285. package/dist/components/forms/checkbox/checkbox.class.d.ts.map +1 -1
  286. package/dist/components/forms/checkbox/checkbox.class.js.map +1 -1
  287. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts.map +1 -1
  288. package/dist/components/forms/checkbox-group/checkbox-group.class.js.map +1 -1
  289. package/dist/components/forms/code-editor/code-editor.class.d.ts.map +1 -1
  290. package/dist/components/forms/code-editor/code-editor.class.js.map +1 -1
  291. package/dist/components/forms/color-picker/color-picker.class.d.ts +4 -0
  292. package/dist/components/forms/color-picker/color-picker.class.d.ts.map +1 -1
  293. package/dist/components/forms/color-picker/color-picker.class.js +6 -0
  294. package/dist/components/forms/color-picker/color-picker.class.js.map +1 -1
  295. package/dist/components/forms/color-picker/color-picker.styles.d.ts.map +1 -1
  296. package/dist/components/forms/color-picker/color-picker.styles.js +20 -2
  297. package/dist/components/forms/color-picker/color-picker.styles.js.map +1 -1
  298. package/dist/components/forms/combobox/combobox.class.d.ts +7 -2
  299. package/dist/components/forms/combobox/combobox.class.d.ts.map +1 -1
  300. package/dist/components/forms/combobox/combobox.class.js +15 -5
  301. package/dist/components/forms/combobox/combobox.class.js.map +1 -1
  302. package/dist/components/forms/combobox/combobox.styles.d.ts.map +1 -1
  303. package/dist/components/forms/combobox/combobox.styles.js +15 -2
  304. package/dist/components/forms/combobox/combobox.styles.js.map +1 -1
  305. package/dist/components/forms/combobox/option.class.d.ts.map +1 -1
  306. package/dist/components/forms/combobox/option.class.js.map +1 -1
  307. package/dist/components/forms/date-picker/date-input.class.d.ts.map +1 -1
  308. package/dist/components/forms/date-picker/date-input.class.js +6 -7
  309. package/dist/components/forms/date-picker/date-input.class.js.map +1 -1
  310. package/dist/components/forms/date-picker/date-picker.class.d.ts +4 -0
  311. package/dist/components/forms/date-picker/date-picker.class.d.ts.map +1 -1
  312. package/dist/components/forms/date-picker/date-picker.class.js +6 -0
  313. package/dist/components/forms/date-picker/date-picker.class.js.map +1 -1
  314. package/dist/components/forms/date-picker/date-picker.styles.d.ts.map +1 -1
  315. package/dist/components/forms/date-picker/date-picker.styles.js +15 -0
  316. package/dist/components/forms/date-picker/date-picker.styles.js.map +1 -1
  317. package/dist/components/forms/emoji-picker/emoji-data-loader.d.ts +1 -1
  318. package/dist/components/forms/emoji-picker/emoji-data-loader.d.ts.map +1 -1
  319. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +11 -16
  320. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts.map +1 -1
  321. package/dist/components/forms/emoji-picker/emoji-picker.class.js +14 -5
  322. package/dist/components/forms/emoji-picker/emoji-picker.class.js.map +1 -1
  323. package/dist/components/forms/emoji-picker/emoji-picker.styles.d.ts.map +1 -1
  324. package/dist/components/forms/emoji-picker/emoji-picker.styles.js +30 -7
  325. package/dist/components/forms/emoji-picker/emoji-picker.styles.js.map +1 -1
  326. package/dist/components/forms/emoji-picker/emoji-types.d.ts +14 -0
  327. package/dist/components/forms/emoji-picker/emoji-types.d.ts.map +1 -0
  328. package/dist/components/forms/emoji-picker/emoji-types.js +5 -0
  329. package/dist/components/forms/emoji-picker/emoji-types.js.map +1 -0
  330. package/dist/components/forms/icon-button/icon-button.class.d.ts +25 -3
  331. package/dist/components/forms/icon-button/icon-button.class.d.ts.map +1 -1
  332. package/dist/components/forms/icon-button/icon-button.class.js +89 -4
  333. package/dist/components/forms/icon-button/icon-button.class.js.map +1 -1
  334. package/dist/components/forms/icon-button/icon-button.styles.d.ts.map +1 -1
  335. package/dist/components/forms/icon-button/icon-button.styles.js +6 -2
  336. package/dist/components/forms/icon-button/icon-button.styles.js.map +1 -1
  337. package/dist/components/forms/input/input.class.d.ts +5 -0
  338. package/dist/components/forms/input/input.class.d.ts.map +1 -1
  339. package/dist/components/forms/input/input.class.js +5 -0
  340. package/dist/components/forms/input/input.class.js.map +1 -1
  341. package/dist/components/forms/input/input.styles.d.ts.map +1 -1
  342. package/dist/components/forms/input/input.styles.js +7 -2
  343. package/dist/components/forms/input/input.styles.js.map +1 -1
  344. package/dist/components/forms/input/number-input.class.d.ts.map +1 -1
  345. package/dist/components/forms/input/number-input.class.js.map +1 -1
  346. package/dist/components/forms/input/time-input.class.d.ts.map +1 -1
  347. package/dist/components/forms/input/time-input.class.js.map +1 -1
  348. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +229 -0
  349. package/dist/components/forms/locale-picker/locale-picker.class.d.ts.map +1 -0
  350. package/dist/components/forms/locale-picker/locale-picker.class.js +633 -0
  351. package/dist/components/forms/locale-picker/locale-picker.class.js.map +1 -0
  352. package/dist/components/forms/locale-picker/locale-picker.d.ts +3 -0
  353. package/dist/components/forms/locale-picker/locale-picker.d.ts.map +1 -0
  354. package/dist/components/forms/locale-picker/locale-picker.js +6 -0
  355. package/dist/components/forms/locale-picker/locale-picker.js.map +1 -0
  356. package/dist/components/forms/locale-picker/locale-picker.styles.d.ts +2 -0
  357. package/dist/components/forms/locale-picker/locale-picker.styles.d.ts.map +1 -0
  358. package/dist/components/forms/locale-picker/locale-picker.styles.js +213 -0
  359. package/dist/components/forms/locale-picker/locale-picker.styles.js.map +1 -0
  360. package/dist/components/forms/phone-input/phone-input.class.d.ts +11 -0
  361. package/dist/components/forms/phone-input/phone-input.class.d.ts.map +1 -1
  362. package/dist/components/forms/phone-input/phone-input.class.js +13 -0
  363. package/dist/components/forms/phone-input/phone-input.class.js.map +1 -1
  364. package/dist/components/forms/phone-input/phone-input.styles.d.ts.map +1 -1
  365. package/dist/components/forms/phone-input/phone-input.styles.js +39 -3
  366. package/dist/components/forms/phone-input/phone-input.styles.js.map +1 -1
  367. package/dist/components/forms/radio/radio-group.class.d.ts.map +1 -1
  368. package/dist/components/forms/radio/radio-group.class.js +1 -0
  369. package/dist/components/forms/radio/radio-group.class.js.map +1 -1
  370. package/dist/components/forms/radio/radio.class.d.ts.map +1 -1
  371. package/dist/components/forms/radio/radio.class.js.map +1 -1
  372. package/dist/components/forms/rubric-form/rubric-form.class.d.ts +0 -1
  373. package/dist/components/forms/rubric-form/rubric-form.class.d.ts.map +1 -1
  374. package/dist/components/forms/rubric-form/rubric-form.class.js +0 -2
  375. package/dist/components/forms/rubric-form/rubric-form.class.js.map +1 -1
  376. package/dist/components/forms/select/select.class.d.ts +5 -2
  377. package/dist/components/forms/select/select.class.d.ts.map +1 -1
  378. package/dist/components/forms/select/select.class.js +17 -9
  379. package/dist/components/forms/select/select.class.js.map +1 -1
  380. package/dist/components/forms/select/select.styles.d.ts.map +1 -1
  381. package/dist/components/forms/select/select.styles.js +13 -2
  382. package/dist/components/forms/select/select.styles.js.map +1 -1
  383. package/dist/components/forms/slider/slider.class.d.ts.map +1 -1
  384. package/dist/components/forms/slider/slider.class.js.map +1 -1
  385. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +12 -3
  386. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts.map +1 -1
  387. package/dist/components/forms/swatch-picker/swatch-picker.class.js +14 -3
  388. package/dist/components/forms/swatch-picker/swatch-picker.class.js.map +1 -1
  389. package/dist/components/forms/swatch-picker/swatch-picker.styles.d.ts.map +1 -1
  390. package/dist/components/forms/swatch-picker/swatch-picker.styles.js +32 -9
  391. package/dist/components/forms/swatch-picker/swatch-picker.styles.js.map +1 -1
  392. package/dist/components/forms/switch/switch.class.d.ts.map +1 -1
  393. package/dist/components/forms/switch/switch.class.js.map +1 -1
  394. package/dist/components/forms/textarea/textarea.class.d.ts.map +1 -1
  395. package/dist/components/forms/textarea/textarea.class.js.map +1 -1
  396. package/dist/components/forms/time-range/time-range.class.d.ts +8 -1
  397. package/dist/components/forms/time-range/time-range.class.d.ts.map +1 -1
  398. package/dist/components/forms/time-range/time-range.class.js +11 -1
  399. package/dist/components/forms/time-range/time-range.class.js.map +1 -1
  400. package/dist/components/forms/time-range/time-range.styles.d.ts.map +1 -1
  401. package/dist/components/forms/time-range/time-range.styles.js +42 -13
  402. package/dist/components/forms/time-range/time-range.styles.js.map +1 -1
  403. package/dist/components/forms/token-input/token-input.class.d.ts +14 -1
  404. package/dist/components/forms/token-input/token-input.class.d.ts.map +1 -1
  405. package/dist/components/forms/token-input/token-input.class.js +21 -4
  406. package/dist/components/forms/token-input/token-input.class.js.map +1 -1
  407. package/dist/components/forms/token-input/token-input.styles.d.ts.map +1 -1
  408. package/dist/components/forms/token-input/token-input.styles.js +36 -2
  409. package/dist/components/forms/token-input/token-input.styles.js.map +1 -1
  410. package/dist/components/layout/app-rail/app-rail-item.class.d.ts.map +1 -1
  411. package/dist/components/layout/app-rail/app-rail-item.class.js.map +1 -1
  412. package/dist/components/layout/app-rail/app-rail.class.d.ts +11 -4
  413. package/dist/components/layout/app-rail/app-rail.class.d.ts.map +1 -1
  414. package/dist/components/layout/app-rail/app-rail.class.js +20 -6
  415. package/dist/components/layout/app-rail/app-rail.class.js.map +1 -1
  416. package/dist/components/layout/breadcrumb/breadcrumb-item.class.d.ts.map +1 -1
  417. package/dist/components/layout/breadcrumb/breadcrumb-item.class.js.map +1 -1
  418. package/dist/components/layout/breadcrumb/breadcrumb.class.d.ts.map +1 -1
  419. package/dist/components/layout/breadcrumb/breadcrumb.class.js.map +1 -1
  420. package/dist/components/layout/button-group/button-group.class.d.ts.map +1 -1
  421. package/dist/components/layout/button-group/button-group.class.js.map +1 -1
  422. package/dist/components/layout/card/card.class.d.ts.map +1 -1
  423. package/dist/components/layout/card/card.class.js.map +1 -1
  424. package/dist/components/layout/carousel/carousel-item.class.d.ts.map +1 -1
  425. package/dist/components/layout/carousel/carousel-item.class.js.map +1 -1
  426. package/dist/components/layout/carousel/carousel.class.d.ts.map +1 -1
  427. package/dist/components/layout/carousel/carousel.class.js.map +1 -1
  428. package/dist/components/layout/command-palette/command-palette.class.d.ts.map +1 -1
  429. package/dist/components/layout/command-palette/command-palette.class.js +6 -3
  430. package/dist/components/layout/command-palette/command-palette.class.js.map +1 -1
  431. package/dist/components/layout/control-group/control-group.class.d.ts +16 -0
  432. package/dist/components/layout/control-group/control-group.class.d.ts.map +1 -1
  433. package/dist/components/layout/control-group/control-group.class.js +19 -0
  434. package/dist/components/layout/control-group/control-group.class.js.map +1 -1
  435. package/dist/components/layout/control-group/control-group.styles.d.ts.map +1 -1
  436. package/dist/components/layout/control-group/control-group.styles.js +8 -3
  437. package/dist/components/layout/control-group/control-group.styles.js.map +1 -1
  438. package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts +3 -0
  439. package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts.map +1 -1
  440. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +4 -1
  441. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js.map +1 -1
  442. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.d.ts.map +1 -1
  443. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +2 -1
  444. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js.map +1 -1
  445. package/dist/components/layout/details/accordion.class.d.ts.map +1 -1
  446. package/dist/components/layout/details/accordion.class.js.map +1 -1
  447. package/dist/components/layout/details/details.class.d.ts.map +1 -1
  448. package/dist/components/layout/details/details.class.js.map +1 -1
  449. package/dist/components/layout/dock-panel/dock-panel.class.d.ts.map +1 -1
  450. package/dist/components/layout/dock-panel/dock-panel.class.js +1 -1
  451. package/dist/components/layout/dock-panel/dock-panel.class.js.map +1 -1
  452. package/dist/components/layout/drilldown-panel/drilldown-panel.class.d.ts.map +1 -1
  453. package/dist/components/layout/drilldown-panel/drilldown-panel.class.js +1 -1
  454. package/dist/components/layout/drilldown-panel/drilldown-panel.class.js.map +1 -1
  455. package/dist/components/layout/filter-bar/filter-bar.class.d.ts.map +1 -1
  456. package/dist/components/layout/filter-bar/filter-bar.class.js +1 -1
  457. package/dist/components/layout/filter-bar/filter-bar.class.js.map +1 -1
  458. package/dist/components/layout/menu/menu-item.class.d.ts.map +1 -1
  459. package/dist/components/layout/menu/menu-item.class.js.map +1 -1
  460. package/dist/components/layout/menu/menu.class.d.ts.map +1 -1
  461. package/dist/components/layout/menu/menu.class.js +16 -4
  462. package/dist/components/layout/menu/menu.class.js.map +1 -1
  463. package/dist/components/layout/reorder-list/reorder-item.class.d.ts +66 -0
  464. package/dist/components/layout/reorder-list/reorder-item.class.d.ts.map +1 -0
  465. package/dist/components/layout/reorder-list/reorder-item.class.js +120 -0
  466. package/dist/components/layout/reorder-list/reorder-item.class.js.map +1 -0
  467. package/dist/components/layout/reorder-list/reorder-item.d.ts +2 -0
  468. package/dist/components/layout/reorder-list/reorder-item.d.ts.map +1 -0
  469. package/dist/components/layout/reorder-list/reorder-item.js +5 -0
  470. package/dist/components/layout/reorder-list/reorder-item.js.map +1 -0
  471. package/dist/components/{data/data-grid/data-grid.styles.d.ts → layout/reorder-list/reorder-item.styles.d.ts} +1 -1
  472. package/dist/components/layout/reorder-list/reorder-item.styles.d.ts.map +1 -0
  473. package/dist/components/layout/reorder-list/reorder-item.styles.js +62 -0
  474. package/dist/components/layout/reorder-list/reorder-item.styles.js.map +1 -0
  475. package/dist/components/layout/reorder-list/reorder-list.class.d.ts +103 -0
  476. package/dist/components/layout/reorder-list/reorder-list.class.d.ts.map +1 -0
  477. package/dist/components/layout/reorder-list/reorder-list.class.js +256 -0
  478. package/dist/components/layout/reorder-list/reorder-list.class.js.map +1 -0
  479. package/dist/components/layout/reorder-list/reorder-list.d.ts +3 -0
  480. package/dist/components/layout/reorder-list/reorder-list.d.ts.map +1 -0
  481. package/dist/components/layout/reorder-list/reorder-list.js +6 -0
  482. package/dist/components/layout/reorder-list/reorder-list.js.map +1 -0
  483. package/dist/components/layout/reorder-list/reorder-list.styles.d.ts +2 -0
  484. package/dist/components/layout/reorder-list/reorder-list.styles.d.ts.map +1 -0
  485. package/dist/components/layout/reorder-list/reorder-list.styles.js +12 -0
  486. package/dist/components/layout/reorder-list/reorder-list.styles.js.map +1 -0
  487. package/dist/components/layout/responsive-panel/responsive-panel.class.d.ts.map +1 -1
  488. package/dist/components/layout/responsive-panel/responsive-panel.class.js.map +1 -1
  489. package/dist/components/layout/scroller/scroller.class.d.ts.map +1 -1
  490. package/dist/components/layout/scroller/scroller.class.js.map +1 -1
  491. package/dist/components/layout/segmented/segmented.class.d.ts.map +1 -1
  492. package/dist/components/layout/segmented/segmented.class.js.map +1 -1
  493. package/dist/components/layout/split/split.class.d.ts +0 -11
  494. package/dist/components/layout/split/split.class.d.ts.map +1 -1
  495. package/dist/components/layout/split/split.class.js +25 -25
  496. package/dist/components/layout/split/split.class.js.map +1 -1
  497. package/dist/components/layout/stepper/stepper.class.d.ts +0 -7
  498. package/dist/components/layout/stepper/stepper.class.d.ts.map +1 -1
  499. package/dist/components/layout/stepper/stepper.class.js +1 -10
  500. package/dist/components/layout/stepper/stepper.class.js.map +1 -1
  501. package/dist/components/layout/tabs/tabs.class.d.ts.map +1 -1
  502. package/dist/components/layout/tabs/tabs.class.js +2 -2
  503. package/dist/components/layout/tabs/tabs.class.js.map +1 -1
  504. package/dist/components/layout/virtual-list/virtual-list.class.d.ts +7 -1
  505. package/dist/components/layout/virtual-list/virtual-list.class.d.ts.map +1 -1
  506. package/dist/components/layout/virtual-list/virtual-list.class.js +10 -4
  507. package/dist/components/layout/virtual-list/virtual-list.class.js.map +1 -1
  508. package/dist/components/layout/virtual-list/virtual-list.styles.d.ts.map +1 -1
  509. package/dist/components/layout/virtual-list/virtual-list.styles.js +2 -1
  510. package/dist/components/layout/virtual-list/virtual-list.styles.js.map +1 -1
  511. package/dist/components/layout/widget/widget.class.d.ts.map +1 -1
  512. package/dist/components/layout/widget/widget.class.js.map +1 -1
  513. package/dist/components/media/animated-image/animated-image.class.d.ts.map +1 -1
  514. package/dist/components/media/animated-image/animated-image.class.js.map +1 -1
  515. package/dist/components/media/animation/animation.class.d.ts.map +1 -1
  516. package/dist/components/media/animation/animation.class.js +4 -1
  517. package/dist/components/media/animation/animation.class.js.map +1 -1
  518. package/dist/components/media/attachment-chip/attachment-chip.class.d.ts.map +1 -1
  519. package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
  520. package/dist/components/media/attachment-chip/attachment-chip.class.js.map +1 -1
  521. package/dist/components/media/attachment-trigger/attachment-trigger.class.d.ts.map +1 -1
  522. package/dist/components/media/attachment-trigger/attachment-trigger.class.js +5 -2
  523. package/dist/components/media/attachment-trigger/attachment-trigger.class.js.map +1 -1
  524. package/dist/components/media/av-player/av-player.class.d.ts.map +1 -1
  525. package/dist/components/media/av-player/av-player.class.js.map +1 -1
  526. package/dist/components/media/avatar/avatar.class.d.ts.map +1 -1
  527. package/dist/components/media/avatar/avatar.class.js.map +1 -1
  528. package/dist/components/media/avatar-group/avatar-group.class.d.ts.map +1 -1
  529. package/dist/components/media/avatar-group/avatar-group.class.js.map +1 -1
  530. package/dist/components/media/file-icon/file-icon.class.d.ts.map +1 -1
  531. package/dist/components/media/file-icon/file-icon.class.js.map +1 -1
  532. package/dist/components/media/file-icon/file-type-metadata.js +1 -1
  533. package/dist/components/media/file-icon/file-type-metadata.js.map +1 -1
  534. package/dist/components/media/file-input/file-input.class.d.ts.map +1 -1
  535. package/dist/components/media/file-input/file-input.class.js.map +1 -1
  536. package/dist/components/media/flag/flag.class.d.ts.map +1 -1
  537. package/dist/components/media/flag/flag.class.js.map +1 -1
  538. package/dist/components/media/flag/language-map.js +1 -1
  539. package/dist/components/media/flag/language-map.js.map +1 -1
  540. package/dist/components/media/image-comparer/image-comparer.class.d.ts.map +1 -1
  541. package/dist/components/media/image-comparer/image-comparer.class.js.map +1 -1
  542. package/dist/components/media/image-viewer/image-viewer.class.d.ts.map +1 -1
  543. package/dist/components/media/image-viewer/image-viewer.class.js.map +1 -1
  544. package/dist/components/media/lightbox/lightbox.class.d.ts.map +1 -1
  545. package/dist/components/media/lightbox/lightbox.class.js.map +1 -1
  546. package/dist/components/media/map/map.class.d.ts.map +1 -1
  547. package/dist/components/media/map/map.class.js.map +1 -1
  548. package/dist/components/media/media-card/media-card.class.d.ts.map +1 -1
  549. package/dist/components/media/media-card/media-card.class.js.map +1 -1
  550. package/dist/components/media/playback/playback.class.d.ts.map +1 -1
  551. package/dist/components/media/playback/playback.class.js.map +1 -1
  552. package/dist/components/media/qr-code/qr-code.class.d.ts.map +1 -1
  553. package/dist/components/media/qr-code/qr-code.class.js +0 -3
  554. package/dist/components/media/qr-code/qr-code.class.js.map +1 -1
  555. package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts.map +1 -1
  556. package/dist/components/media/zoomable-frame/zoomable-frame.class.js +1 -1
  557. package/dist/components/media/zoomable-frame/zoomable-frame.class.js.map +1 -1
  558. package/dist/components/overlays/badge/badge.class.d.ts +2 -0
  559. package/dist/components/overlays/badge/badge.class.d.ts.map +1 -1
  560. package/dist/components/overlays/badge/badge.class.js +2 -0
  561. package/dist/components/overlays/badge/badge.class.js.map +1 -1
  562. package/dist/components/overlays/badge/badge.styles.d.ts.map +1 -1
  563. package/dist/components/overlays/badge/badge.styles.js +4 -1
  564. package/dist/components/overlays/badge/badge.styles.js.map +1 -1
  565. package/dist/components/overlays/callout/callout.class.d.ts.map +1 -1
  566. package/dist/components/overlays/callout/callout.class.js.map +1 -1
  567. package/dist/components/overlays/chip/chip-group.class.d.ts.map +1 -1
  568. package/dist/components/overlays/chip/chip-group.class.js.map +1 -1
  569. package/dist/components/overlays/chip/chip.class.d.ts +4 -2
  570. package/dist/components/overlays/chip/chip.class.d.ts.map +1 -1
  571. package/dist/components/overlays/chip/chip.class.js +3 -1
  572. package/dist/components/overlays/chip/chip.class.js.map +1 -1
  573. package/dist/components/overlays/chip/chip.styles.d.ts.map +1 -1
  574. package/dist/components/overlays/chip/chip.styles.js +17 -2
  575. package/dist/components/overlays/chip/chip.styles.js.map +1 -1
  576. package/dist/components/overlays/dialog/dialog.class.d.ts.map +1 -1
  577. package/dist/components/overlays/dialog/dialog.class.js.map +1 -1
  578. package/dist/components/overlays/drawer/drawer.class.d.ts.map +1 -1
  579. package/dist/components/overlays/drawer/drawer.class.js.map +1 -1
  580. package/dist/components/overlays/empty/empty.class.d.ts.map +1 -1
  581. package/dist/components/overlays/empty/empty.class.js.map +1 -1
  582. package/dist/components/overlays/kbd/kbd.class.d.ts.map +1 -1
  583. package/dist/components/overlays/kbd/kbd.class.js.map +1 -1
  584. package/dist/components/overlays/overlay/popover.class.d.ts +3 -1
  585. package/dist/components/overlays/overlay/popover.class.d.ts.map +1 -1
  586. package/dist/components/overlays/overlay/popover.class.js.map +1 -1
  587. package/dist/components/overlays/overlay/tooltip.class.d.ts.map +1 -1
  588. package/dist/components/overlays/overlay/tooltip.class.js.map +1 -1
  589. package/dist/components/overlays/progress/progress-bar.class.d.ts.map +1 -1
  590. package/dist/components/overlays/progress/progress-bar.class.js.map +1 -1
  591. package/dist/components/overlays/progress/progress-ring.class.d.ts.map +1 -1
  592. package/dist/components/overlays/progress/progress-ring.class.js.map +1 -1
  593. package/dist/components/overlays/rating/rating.class.d.ts.map +1 -1
  594. package/dist/components/overlays/rating/rating.class.js +1 -1
  595. package/dist/components/overlays/rating/rating.class.js.map +1 -1
  596. package/dist/components/overlays/skeleton/skeleton.class.d.ts.map +1 -1
  597. package/dist/components/overlays/skeleton/skeleton.class.js.map +1 -1
  598. package/dist/components/overlays/spinner/spinner.class.d.ts.map +1 -1
  599. package/dist/components/overlays/spinner/spinner.class.js.map +1 -1
  600. package/dist/components/overlays/toast/toast-item.class.d.ts.map +1 -1
  601. package/dist/components/overlays/toast/toast-item.class.js.map +1 -1
  602. package/dist/components/overlays/toast/toast.class.d.ts.map +1 -1
  603. package/dist/components/overlays/toast/toast.class.js.map +1 -1
  604. package/dist/components/retrieval/chunk-inspector/chunk-inspector.class.d.ts.map +1 -1
  605. package/dist/components/retrieval/chunk-inspector/chunk-inspector.class.js.map +1 -1
  606. package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts.map +1 -1
  607. package/dist/components/retrieval/citation-badge/citation-badge.class.js.map +1 -1
  608. package/dist/components/retrieval/community-card/community-card.class.d.ts.map +1 -1
  609. package/dist/components/retrieval/community-card/community-card.class.js.map +1 -1
  610. package/dist/components/retrieval/entity-card/entity-card.class.d.ts.map +1 -1
  611. package/dist/components/retrieval/entity-card/entity-card.class.js.map +1 -1
  612. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts.map +1 -1
  613. package/dist/components/retrieval/entity-chip/entity-chip.class.js.map +1 -1
  614. package/dist/components/retrieval/entity-dossier/entity-dossier.class.d.ts.map +1 -1
  615. package/dist/components/retrieval/entity-dossier/entity-dossier.class.js.map +1 -1
  616. package/dist/components/retrieval/graph/graph-loader.d.ts +5 -5
  617. package/dist/components/retrieval/graph/graph-loader.d.ts.map +1 -1
  618. package/dist/components/retrieval/graph/graph-loader.js.map +1 -1
  619. package/dist/components/retrieval/graph/graph.class.d.ts +7 -3
  620. package/dist/components/retrieval/graph/graph.class.d.ts.map +1 -1
  621. package/dist/components/retrieval/graph/graph.class.js +9 -3
  622. package/dist/components/retrieval/graph/graph.class.js.map +1 -1
  623. package/dist/components/retrieval/graph-legend/graph-legend.class.d.ts.map +1 -1
  624. package/dist/components/retrieval/graph-legend/graph-legend.class.js.map +1 -1
  625. package/dist/components/retrieval/grounding-summary/grounding-summary.class.d.ts.map +1 -1
  626. package/dist/components/retrieval/grounding-summary/grounding-summary.class.js.map +1 -1
  627. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts.map +1 -1
  628. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js.map +1 -1
  629. package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts.map +1 -1
  630. package/dist/components/retrieval/knowledge-base/knowledge-base.class.js.map +1 -1
  631. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +6 -3
  632. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts.map +1 -1
  633. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +8 -1
  634. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js.map +1 -1
  635. package/dist/components/retrieval/memory-panel/memory-panel.class.d.ts.map +1 -1
  636. package/dist/components/retrieval/memory-panel/memory-panel.class.js.map +1 -1
  637. package/dist/components/retrieval/mind-map/mind-map.class.d.ts.map +1 -1
  638. package/dist/components/retrieval/mind-map/mind-map.class.js.map +1 -1
  639. package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts.map +1 -1
  640. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js.map +1 -1
  641. package/dist/components/retrieval/node-palette/node-palette.class.d.ts.map +1 -1
  642. package/dist/components/retrieval/node-palette/node-palette.class.js.map +1 -1
  643. package/dist/components/retrieval/path-strip/path-strip.class.d.ts.map +1 -1
  644. package/dist/components/retrieval/path-strip/path-strip.class.js.map +1 -1
  645. package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts.map +1 -1
  646. package/dist/components/retrieval/provenance-panel/provenance-panel.class.js.map +1 -1
  647. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +4 -2
  648. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts.map +1 -1
  649. package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +14 -2
  650. package/dist/components/retrieval/retrieval-results/retrieval-results.class.js.map +1 -1
  651. package/dist/components/retrieval/retrieval-search/retrieval-search.class.d.ts.map +1 -1
  652. package/dist/components/retrieval/retrieval-search/retrieval-search.class.js.map +1 -1
  653. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.d.ts.map +1 -1
  654. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js.map +1 -1
  655. package/dist/components/retrieval/source-card/source-card.class.d.ts.map +1 -1
  656. package/dist/components/retrieval/source-card/source-card.class.js.map +1 -1
  657. package/dist/components/retrieval/source-list/source-list.class.d.ts.map +1 -1
  658. package/dist/components/retrieval/source-list/source-list.class.js.map +1 -1
  659. package/dist/components/retrieval/source-picker/source-picker.class.d.ts.map +1 -1
  660. package/dist/components/retrieval/source-picker/source-picker.class.js.map +1 -1
  661. package/dist/components/utility/copy-button/copy-button.class.d.ts.map +1 -1
  662. package/dist/components/utility/copy-button/copy-button.class.js.map +1 -1
  663. package/dist/components/utility/diff-view/diff-view.class.d.ts +4 -1
  664. package/dist/components/utility/diff-view/diff-view.class.d.ts.map +1 -1
  665. package/dist/components/utility/diff-view/diff-view.class.js.map +1 -1
  666. package/dist/components/utility/divider/divider.class.d.ts.map +1 -1
  667. package/dist/components/utility/divider/divider.class.js.map +1 -1
  668. package/dist/components/utility/export-button/export-button.class.d.ts.map +1 -1
  669. package/dist/components/utility/export-button/export-button.class.js.map +1 -1
  670. package/dist/components/utility/format/format-bytes.class.d.ts.map +1 -1
  671. package/dist/components/utility/format/format-bytes.class.js.map +1 -1
  672. package/dist/components/utility/format/format-date.class.d.ts.map +1 -1
  673. package/dist/components/utility/format/format-date.class.js.map +1 -1
  674. package/dist/components/utility/format/format-number.class.d.ts.map +1 -1
  675. package/dist/components/utility/format/format-number.class.js.map +1 -1
  676. package/dist/components/utility/format/relative-time.class.d.ts.map +1 -1
  677. package/dist/components/utility/format/relative-time.class.js +4 -1
  678. package/dist/components/utility/format/relative-time.class.js.map +1 -1
  679. package/dist/components/utility/icon/icon.class.d.ts.map +1 -1
  680. package/dist/components/utility/icon/icon.class.js.map +1 -1
  681. package/dist/components/utility/intersection-observer/intersection-observer.class.d.ts.map +1 -1
  682. package/dist/components/utility/intersection-observer/intersection-observer.class.js.map +1 -1
  683. package/dist/components/utility/json-viewer/json-viewer.class.d.ts.map +1 -1
  684. package/dist/components/utility/json-viewer/json-viewer.class.js.map +1 -1
  685. package/dist/components/utility/known-date/known-date.class.d.ts.map +1 -1
  686. package/dist/components/utility/known-date/known-date.class.js +2 -2
  687. package/dist/components/utility/known-date/known-date.class.js.map +1 -1
  688. package/dist/components/utility/live-region/live-region.class.d.ts.map +1 -1
  689. package/dist/components/utility/live-region/live-region.class.js.map +1 -1
  690. package/dist/components/utility/mention-popover/mention-popover.class.d.ts.map +1 -1
  691. package/dist/components/utility/mention-popover/mention-popover.class.js +2 -2
  692. package/dist/components/utility/mention-popover/mention-popover.class.js.map +1 -1
  693. package/dist/components/utility/mutation-observer/mutation-observer.class.d.ts.map +1 -1
  694. package/dist/components/utility/mutation-observer/mutation-observer.class.js.map +1 -1
  695. package/dist/components/utility/poll-status/poll-status.class.d.ts.map +1 -1
  696. package/dist/components/utility/poll-status/poll-status.class.js.map +1 -1
  697. package/dist/components/utility/random-content/random-content.class.d.ts.map +1 -1
  698. package/dist/components/utility/random-content/random-content.class.js +3 -2
  699. package/dist/components/utility/random-content/random-content.class.js.map +1 -1
  700. package/dist/components/utility/resize-observer/resize-observer.class.d.ts.map +1 -1
  701. package/dist/components/utility/resize-observer/resize-observer.class.js.map +1 -1
  702. package/dist/components/utility/tour/tour.class.d.ts.map +1 -1
  703. package/dist/components/utility/tour/tour.class.js.map +1 -1
  704. package/dist/components/viewers/archive-viewer/archive-viewer.class.d.ts.map +1 -1
  705. package/dist/components/viewers/archive-viewer/archive-viewer.class.js.map +1 -1
  706. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts.map +1 -1
  707. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js.map +1 -1
  708. package/dist/components/viewers/contact-viewer/contact-viewer.class.d.ts.map +1 -1
  709. package/dist/components/viewers/contact-viewer/contact-viewer.class.js.map +1 -1
  710. package/dist/components/viewers/contact-viewer/vcard.d.ts.map +1 -1
  711. package/dist/components/viewers/contact-viewer/vcard.js +11 -9
  712. package/dist/components/viewers/contact-viewer/vcard.js.map +1 -1
  713. package/dist/components/viewers/csv-viewer/csv-viewer.class.d.ts.map +1 -1
  714. package/dist/components/viewers/csv-viewer/csv-viewer.class.js.map +1 -1
  715. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts.map +1 -1
  716. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js.map +1 -1
  717. package/dist/components/viewers/document-compare/document-compare.class.d.ts +9 -2
  718. package/dist/components/viewers/document-compare/document-compare.class.d.ts.map +1 -1
  719. package/dist/components/viewers/document-compare/document-compare.class.js.map +1 -1
  720. package/dist/components/viewers/document-preview/document-preview.class.d.ts.map +1 -1
  721. package/dist/components/viewers/document-preview/document-preview.class.js.map +1 -1
  722. package/dist/components/viewers/document-viewer/document-viewer.class.d.ts.map +1 -1
  723. package/dist/components/viewers/document-viewer/document-viewer.class.js.map +1 -1
  724. package/dist/components/viewers/docx-viewer/docx-viewer.class.d.ts.map +1 -1
  725. package/dist/components/viewers/docx-viewer/docx-viewer.class.js +2 -2
  726. package/dist/components/viewers/docx-viewer/docx-viewer.class.js.map +1 -1
  727. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.d.ts.map +1 -1
  728. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js.map +1 -1
  729. package/dist/components/viewers/email-viewer/email-viewer.class.d.ts.map +1 -1
  730. package/dist/components/viewers/email-viewer/email-viewer.class.js.map +1 -1
  731. package/dist/components/viewers/geojson-view/geojson-view.class.d.ts +6 -0
  732. package/dist/components/viewers/geojson-view/geojson-view.class.d.ts.map +1 -1
  733. package/dist/components/viewers/geojson-view/geojson-view.class.js.map +1 -1
  734. package/dist/components/viewers/highlight-layer/highlight-layer.class.d.ts.map +1 -1
  735. package/dist/components/viewers/highlight-layer/highlight-layer.class.js +3 -3
  736. package/dist/components/viewers/highlight-layer/highlight-layer.class.js.map +1 -1
  737. package/dist/components/viewers/html-viewer/html-viewer.class.d.ts.map +1 -1
  738. package/dist/components/viewers/html-viewer/html-viewer.class.js.map +1 -1
  739. package/dist/components/viewers/include/include.class.d.ts.map +1 -1
  740. package/dist/components/viewers/include/include.class.js.map +1 -1
  741. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.d.ts.map +1 -1
  742. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +1 -1
  743. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js.map +1 -1
  744. package/dist/components/viewers/page-rail/page-rail.class.d.ts.map +1 -1
  745. package/dist/components/viewers/page-rail/page-rail.class.js.map +1 -1
  746. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts.map +1 -1
  747. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +5 -2
  748. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js.map +1 -1
  749. package/dist/components/viewers/pptx-viewer/pptx-viewer.class.d.ts.map +1 -1
  750. package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js.map +1 -1
  751. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.d.ts.map +1 -1
  752. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js.map +1 -1
  753. package/dist/components/viewers/svg-viewer/svg-viewer.class.d.ts.map +1 -1
  754. package/dist/components/viewers/svg-viewer/svg-viewer.class.js.map +1 -1
  755. package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts.map +1 -1
  756. package/dist/components/viewers/xml-viewer/xml-viewer.class.js +0 -0
  757. package/dist/components/viewers/xml-viewer/xml-viewer.class.js.map +1 -1
  758. package/dist/internal/anchor-target.js.map +1 -1
  759. package/dist/internal/anchored-validity.js +0 -1
  760. package/dist/internal/anchored-validity.js.map +1 -1
  761. package/dist/internal/ansi.d.ts.map +1 -1
  762. package/dist/internal/ansi.js +14 -7
  763. package/dist/internal/ansi.js.map +1 -1
  764. package/dist/internal/cell-range.d.ts.map +1 -1
  765. package/dist/internal/cell-range.js +1 -0
  766. package/dist/internal/cell-range.js.map +1 -1
  767. package/dist/internal/css-length.d.ts.map +1 -1
  768. package/dist/internal/css-length.js +1 -0
  769. package/dist/internal/css-length.js.map +1 -1
  770. package/dist/internal/form-associated.js.map +1 -1
  771. package/dist/internal/localization.d.ts +11 -1
  772. package/dist/internal/localization.d.ts.map +1 -1
  773. package/dist/internal/localization.js +24 -1
  774. package/dist/internal/localization.js.map +1 -1
  775. package/dist/internal/lyra-element.d.ts.map +1 -1
  776. package/dist/internal/lyra-element.js.map +1 -1
  777. package/dist/internal/numbers.d.ts.map +1 -1
  778. package/dist/internal/numbers.js +3 -1
  779. package/dist/internal/numbers.js.map +1 -1
  780. package/dist/internal/overlay-manager.d.ts.map +1 -1
  781. package/dist/internal/overlay-manager.js +13 -8
  782. package/dist/internal/overlay-manager.js.map +1 -1
  783. package/dist/internal/root-registration-allowlist.d.ts +1 -1
  784. package/dist/internal/root-registration-allowlist.d.ts.map +1 -1
  785. package/dist/internal/root-registration-allowlist.js +3 -1
  786. package/dist/internal/root-registration-allowlist.js.map +1 -1
  787. package/dist/internal/strip-host-title.js.map +1 -1
  788. package/dist/internal/text-quote.js +7 -7
  789. package/dist/internal/text-quote.js.map +1 -1
  790. package/dist/internal/tokens.styles.d.ts.map +1 -1
  791. package/dist/internal/tokens.styles.js +1 -0
  792. package/dist/internal/tokens.styles.js.map +1 -1
  793. package/dist/lyra.d.ts +11 -5
  794. package/dist/lyra.d.ts.map +1 -1
  795. package/dist/lyra.js +7 -3
  796. package/dist/lyra.js.map +1 -1
  797. package/dist/theme.css +1 -0
  798. package/llms/components/lr-app-rail-item.md +6 -3
  799. package/llms/components/lr-app-rail.md +6 -3
  800. package/llms/components/lr-badge.md +3 -0
  801. package/llms/components/lr-button.md +4 -1
  802. package/llms/components/lr-chip-group.md +4 -1
  803. package/llms/components/lr-chip.md +4 -1
  804. package/llms/components/lr-color-picker.md +7 -1
  805. package/llms/components/lr-combobox.md +5 -2
  806. package/llms/components/lr-confirm-bar.md +31 -4
  807. package/llms/components/lr-control-group.md +12 -4
  808. package/llms/components/lr-dashboard-grid.md +4 -1
  809. package/llms/components/lr-date-input.md +5 -1
  810. package/llms/components/lr-date-picker.md +5 -1
  811. package/llms/components/lr-emoji-picker.md +11 -6
  812. package/llms/components/lr-eval-dataset.md +1 -1
  813. package/llms/components/lr-eval-result.md +4 -4
  814. package/llms/components/lr-flag.md +9 -5
  815. package/llms/components/lr-flow-canvas.md +7 -1
  816. package/llms/components/lr-icon-button.md +18 -5
  817. package/llms/components/lr-input.md +4 -1
  818. package/llms/components/lr-locale-picker.md +90 -0
  819. package/llms/components/lr-number-input.md +4 -2
  820. package/llms/components/lr-option.md +5 -2
  821. package/llms/components/lr-phone-input.md +10 -3
  822. package/llms/components/lr-reorder-item.md +92 -0
  823. package/llms/components/lr-reorder-list.md +92 -0
  824. package/llms/components/lr-select.md +6 -3
  825. package/llms/components/lr-swatch-picker.md +15 -9
  826. package/llms/components/lr-tag.md +3 -0
  827. package/llms/components/lr-thread-list.md +11 -6
  828. package/llms/components/lr-time-input.md +4 -2
  829. package/llms/components/lr-time-range.md +8 -0
  830. package/llms/components/lr-token-input.md +16 -7
  831. package/llms/components/lr-tool-approval-dialog.md +30 -6
  832. package/llms/components/lr-virtual-list.md +5 -1
  833. package/llms/index.md +7 -5
  834. package/llms/shared.md +13 -4
  835. package/llms/tokens.md +4 -2
  836. package/llms-full.txt +421 -133
  837. package/llms.txt +4 -4
  838. package/package.json +10 -4
  839. package/vscode-css-data.json +246 -8
  840. package/vscode-html-data.json +533 -371
  841. package/web-types.json +868 -109
  842. package/dist/components/data/data-grid/data-grid.class.d.ts +0 -69
  843. package/dist/components/data/data-grid/data-grid.class.d.ts.map +0 -1
  844. package/dist/components/data/data-grid/data-grid.class.js +0 -123
  845. package/dist/components/data/data-grid/data-grid.class.js.map +0 -1
  846. package/dist/components/data/data-grid/data-grid.d.ts +0 -2
  847. package/dist/components/data/data-grid/data-grid.d.ts.map +0 -1
  848. package/dist/components/data/data-grid/data-grid.js +0 -5
  849. package/dist/components/data/data-grid/data-grid.js.map +0 -1
  850. package/dist/components/data/data-grid/data-grid.styles.d.ts.map +0 -1
  851. package/dist/components/data/data-grid/data-grid.styles.js +0 -15
  852. package/dist/components/data/data-grid/data-grid.styles.js.map +0 -1
  853. package/llms/components/lr-data-grid.md +0 -55
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 — 249 components, several hundred thousand tokens.**
10
+ **This file is the whole catalog concatenated — 251 components, several hundred thousand tokens.**
11
11
  Read it end to end only if you genuinely need everything. Otherwise:
12
12
 
13
13
  | To… | Read |
@@ -31,9 +31,9 @@ and costs a few hundred tokens instead of the whole catalog. `llms/index.md` map
31
31
  family and entry point.
32
32
 
33
33
  - **Foundation** — base class, form association, events, i18n, theming, TypeScript, frameworks, SSR, packaging (`llms/shared.md`)
34
- - **Form controls & inputs** — 25 tags in `components/forms/`
35
- - **Data display, dashboards & flow canvas** — 25 tags in `components/data/`
36
- - **Layout, navigation & structure** — 28 tags in `components/layout/`
34
+ - **Form controls & inputs** — 26 tags in `components/forms/`
35
+ - **Data display, dashboards & flow canvas** — 24 tags in `components/data/`
36
+ - **Layout, navigation & structure** — 30 tags in `components/layout/`
37
37
  - **Overlays, status & feedback** — 19 tags in `components/overlays/`
38
38
  - **Utilities, formatting & observers** — 19 tags in `components/utility/`
39
39
  - **Media, files & maps** — 18 tags in `components/media/`
@@ -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 249 tags. A wrong or missing family segment is a hard
61
+ `llms/index.md` lists the exact path for all 251 tags. 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
 
@@ -266,12 +266,21 @@ setLyraLocale('fr'); // …or just set <html lang="fr"> and let components inher
266
266
  ```
267
267
 
268
268
  Exported from the package root: `registerLyraLocale`, `setLyraLocale`, `getLyraLocale`,
269
- `resolveLyraLocale`, `resolveLyraDirection`, `resolveLyraString`, `LYRA_DEFAULT_STRINGS`, and the
270
- types `LyraLocaleStrings` / `LyraMessageKey`. **`LYRA_DEFAULT_STRINGS` is the authoritative key list**
271
- (996 keys, matching the `LyraMessageKey` union) read it to find the key to override rather than
269
+ `getRegisteredLyraLocales`, `subscribeLyraLocaleRegistry`, `resolveLyraLocale`,
270
+ `resolveLyraDirection`, `resolveLyraString`, `LYRA_DEFAULT_STRINGS`, and the types
271
+ `LyraLocaleStrings` / `LyraMessageKey`. **`LYRA_DEFAULT_STRINGS` is the authoritative key list**
272
+ (1005 keys, matching the `LyraMessageKey` union) — read it to find the key to override rather than
272
273
  guessing one. Lookup falls back exact locale → base language → English. Date, number, byte,
273
274
  relative-time and calendar output goes through `Intl`.
274
275
 
276
+ `getRegisteredLyraLocales(): string[]` lists every locale with strings registered via
277
+ `registerLyraLocale()`, plus `'en'` (always available through the built-in English fallback),
278
+ sorted and deduped. `subscribeLyraLocaleRegistry(listener: () => void): () => void` fires whenever
279
+ `registerLyraLocale()` registers *any* locale — including one that isn't the currently active
280
+ locale — unlike the page-level locale-change subscription every component already uses
281
+ internally, which only fires for the active locale's own string changes. `<lr-locale-picker>` is
282
+ the built-in consumer of both; see `llms/components/lr-locale-picker.md`.
283
+
275
284
  Gotcha: `localize()`'s optional second argument is a fallback string. Passing a defined literal there
276
285
  silently defeats a registered catalog — omit it, or pass `undefined`.
277
286
 
@@ -504,7 +513,7 @@ shared `FormAssociated` mixin — see gotchas).
504
513
 
505
514
  **Properties:**
506
515
  - `multiple: boolean = false` (reflected)
507
- - `size: 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected — same scale as `lr-select`'s `size`;
516
+ - `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected — same scale as `lr-select`'s `size`;
508
517
  also scales the "+N" overflow tag and decorative expand icon; `size="s"` shares its outer
509
518
  control height with `lr-input`, `lr-select`, and `lr-segmented` without part overrides)
510
519
  - `placeholder: string = ''`
@@ -615,7 +624,10 @@ indicator from `maxRender`), `error`, `hint`
615
624
  **Themeable custom properties:** `--lr-combobox-trigger-padding`,
616
625
  `--lr-combobox-trigger-min-height`, `--lr-combobox-font-size`, `--lr-combobox-tag-padding`,
617
626
  `--lr-combobox-tag-font-size`, and `--lr-combobox-expand-size` (the decorative icon box; each
618
- standard size supplies an aligned default), plus shared tokens.
627
+ standard size supplies an aligned default), plus shared tokens. `--lr-combobox-gap` (default
628
+ `--lr-space-xs`, the gap inside `[part='combobox']`) and `--lr-combobox-radius` (default
629
+ `--lr-radius`, its corner radius) are both retunable without a `::part(combobox)` rule but, unlike
630
+ the properties above, do not vary by `size` — the same `--lr-button-gap`/`-radius` pattern.
619
631
 
620
632
  `--lr-combobox-option-active-bg` (default `var(--lr-color-brand-quiet)`) recolors the background of
621
633
  a hovered or keyboard-active `[part='option']` row — the same per-component indirection
@@ -748,8 +760,8 @@ exactly like the multi-option case, until the trigger is actually activated.
748
760
  - `errorText: string = ''` (attribute `error-text` — static error copy shown below the hint;
749
761
  overridden by slotted `error` content when provided)
750
762
  - `open: boolean = false` (reflected)
751
- - `size: 'xs'|'s'|'m'|'l'|'xl' = 'm'` (reflected — same scale as `lr-toast-item`'s `size`, for
752
- compact toolbar placements that don't fit the default trigger height)
763
+ - `size: '2xs'|'xs'|'s'|'m'|'l'|'xl' = 'm'` (reflected — same scale as `lr-input`/`lr-combobox`'s
764
+ `size`, for compact toolbar placements that don't fit the default trigger height)
753
765
  - `autoCommitSingleOption: boolean = false` (attribute `auto-commit-single-option`) — opts in to the
754
766
  single-option auto-commit behavior described above
755
767
  - `value: string` — a getter/setter; always a single string (no `multiple` mode)
@@ -782,7 +794,10 @@ presentational `<div>`, not a `role="group"`; options with an empty `group` get
782
794
 
783
795
  **Themeable custom properties:** `--lr-select-trigger-padding`, `--lr-select-trigger-min-height`,
784
796
  `--lr-select-font-size`, `--lr-select-expand-size` — all four auto-swapped per `size` (`xs`…`xl`), the same pattern
785
- `lr-toast-item`'s `--lr-toast-padding`/`--lr-toast-font-size` use.
797
+ `lr-toast-item`'s `--lr-toast-padding`/`--lr-toast-font-size` use. `--lr-select-gap` (default
798
+ `--lr-space-xs`, the gap inside `[part='trigger']`) and `--lr-select-radius` (default `--lr-radius`,
799
+ its corner radius) are both retunable without a `::part(trigger)` rule but, unlike the four above,
800
+ do not vary by `size` — the same `--lr-button-gap`/`-radius` pattern.
786
801
 
787
802
  `--lr-select-trigger-min-height` is live at **every** tier, the default `m` included, where it is
788
803
  `2.5rem` — byte-identical to `lr-input`'s and `lr-combobox`'s own `m` floor, so the three controls
@@ -868,6 +883,10 @@ Inline month-grid calendar, not form-associated (used standalone or embedded ins
868
883
  - `disablePast: boolean = false` (attribute `disable-past`)
869
884
  - `disableFuture: boolean = false` (attribute `disable-future`)
870
885
  - `withOutsideDays: boolean = false` (attribute `with-outside-days`)
886
+ - `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected) — scales calendar cell density
887
+ proportionally; unlike `lr-input`'s row-height scale (text containers), this scales cell density
888
+ itself (fewer/more days per visual unit). Month title, weekday labels, and nav buttons stay fixed
889
+ across tiers.
871
890
  - `previousLabel: string = 'Previous month'` (attribute `previous-label` — accessible label for the
872
891
  previous-month nav button; override for a non-English `locale`)
873
892
  - `nextLabel: string = 'Next month'` (attribute `next-label` — accessible label for the next-month
@@ -889,7 +908,7 @@ mode only)
889
908
  `day-range-end`, `day-range-inner`, `day-placeholder`
890
909
 
891
910
  **Themeable custom properties:** `--lr-cell-size` (default `2.25rem`, controls day-cell/grid-column
892
- size).
911
+ size; auto-scaled per `size` tier — `2xs`/`xs`/`s`/`l`/`xl`; `m` keeps the `:host` default).
893
912
 
894
913
  **Optional peer deps:** none.
895
914
 
@@ -1219,7 +1238,10 @@ and the per-`size`
1219
1238
  `min-block-size` floors `--lr-button-size-2xs` (`1.25rem`), `--lr-button-size-xs` (`1.5rem`),
1220
1239
  `--lr-button-size-s` (`1.75rem`), `--lr-button-size-m` (`2rem`), `--lr-button-size-l` (`2.5rem`),
1221
1240
  `--lr-button-size-xl` (`3rem`) — each read only by its own `size` tier, and all ignored by
1222
- `appearance="link"`.
1241
+ `appearance="link"`. `--lr-button-gap` (default `--lr-space-2xs`, the gap between the icon/label
1242
+ and any slotted content) and `--lr-button-radius` (default `--lr-radius`, the corner radius) are
1243
+ both retunable without a `::part(base)` rule but — unlike the four size knobs below — do not vary
1244
+ by `size` tier; `appearance="link"` ignores `--lr-button-radius` (it renders with zero radius).
1223
1245
 
1224
1246
  **Retuning one `size` tier's geometry, without a `::part(base)` rule.** Four more properties carry
1225
1247
  the active tier's geometry, and every `:host([size='…'])` rule does nothing but re-assign them — no
@@ -1292,11 +1314,21 @@ complete element — an `<svg>`, an `<img>`, an `<lr-flag>` — render at its ow
1292
1314
  instead of being forced into a 1:1 box. Setting both `icon` and slotted content renders both, side
1293
1315
  by side; that is a valid composition, not a fallback.
1294
1316
 
1295
- **Migration note:** bare SVG *geometry* (`<path>`, `<circle>`, `<rect>` …) slotted with no `icon`
1296
- set has no SVG parent here and will not paint. Wrap it in an `<lr-icon>`, or in a complete `<svg>`
1297
- of your own.
1298
-
1299
- **CSS parts:** `button`
1317
+ **Bare SVG geometry fallback:** slotted bare SVG *geometry* (`path`, `circle`, `rect`, `line`,
1318
+ `polygon`, `polyline`, `ellipse`, `g`, `use`) with no `icon` set and no enclosing `<svg>` of its
1319
+ own has no real SVG parent as parsed, and is detected and cloned into an internal
1320
+ `[part="fallback"]` SVG-namespaced element so it still paints — the same fallback `<lr-icon>`'s own
1321
+ custom-content slot uses. The `[part="fallback"]` svg carries the same `fill="none"
1322
+ stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"` defaults
1323
+ `<lr-icon>`'s own wrapper svg does, so bare stroke-style geometry (the common lucide/feather/tabler
1324
+ path-data shape, which carries no fill/stroke of its own) renders outlined instead of as a solid
1325
+ shape; an explicit `fill`/`stroke`/etc. already present on the slotted node still wins for that
1326
+ node. This is narrowly scoped to that whitelist: a complete `<svg>`, `<img>`, or custom element
1327
+ (e.g. `<lr-flag>`) is never touched by it and keeps rendering as an untouched sibling at its own
1328
+ natural aspect ratio.
1329
+
1330
+ **CSS parts:** `button`, `fallback` (only present in the DOM while at least one top-level slotted
1331
+ element needs the bare-geometry fallback above)
1300
1332
 
1301
1333
  **Themeable custom properties:** `--lr-icon-button-size` (default `2.5rem`) is the **minimum**
1302
1334
  tappable inline and block size of the native button — a floor, not a fixed size. Content larger
@@ -1304,7 +1336,10 @@ than it grows the button and keeps its own aspect ratio; a small glyph pads out
1304
1336
  library-wide token (declared on `:root` by the token layer, and the shared minimum tappable size
1305
1337
  that several other components size their icon-only controls against), so overriding
1306
1338
  `--lr-theme-icon-button-size` globally resizes all of them together. Keep the resolved value at or
1307
- above 24px — see `llms/shared.md`.
1339
+ above 24px — see `llms/shared.md`. `--lr-icon-button-radius` (default `--lr-radius`) is the
1340
+ `[part='button']` corner radius, retunable without a `::part(button)` rule — the same
1341
+ `--lr-button-radius` pattern; `lr-icon-button` has no `size` tiers, so there is no per-tier gap
1342
+ counterpart to it.
1308
1343
 
1309
1344
  ## `lr-input`
1310
1345
 
@@ -1371,7 +1406,10 @@ input and built-in actions).
1371
1406
  `--lr-input-control-height` pins an **exact** outer control-row height (both floors and caps it) —
1372
1407
  for example to pixel-match an `<lr-select>` or `<lr-combobox>` in the same toolbar row. It is
1373
1408
  undeclared by default, leaving `--lr-input-control-min-height` as a floor only and the row free to
1374
- grow.
1409
+ grow. `--lr-input-gap` (default `--lr-space-xs`, the gap inside `[part='input-wrapper']`) and
1410
+ `--lr-input-radius` (default `--lr-radius`, its corner radius) are both retunable without a
1411
+ `::part(input-wrapper)` rule but, unlike the four properties above, do not vary by `size` — the same
1412
+ `--lr-button-gap`/`-radius` pattern; `lr-number-input`/`lr-time-input` inherit both unchanged.
1375
1413
 
1376
1414
  ### Exact-height hatches — the one rule that applies to all of them
1377
1415
 
@@ -1436,8 +1474,10 @@ alias ever renders.
1436
1474
 
1437
1475
  **Themeable custom properties:** inherited from `lr-input`, identical in meaning —
1438
1476
  `--lr-input-control-min-height`, `--lr-input-control-height`, `--lr-input-padding-block`,
1439
- `--lr-input-padding-inline` and `--lr-input-font-size` (all but `--lr-input-control-height` swap
1440
- per `size`; that one stays undeclared until you pin an exact row height).
1477
+ `--lr-input-padding-inline`, `--lr-input-font-size`, `--lr-input-gap`, and `--lr-input-radius` (all
1478
+ but `--lr-input-control-height` swap per `size`; that one stays undeclared until you pin an exact
1479
+ row height, and `--lr-input-gap`/`--lr-input-radius` — like `--lr-button-gap`/`-radius` — never
1480
+ vary by `size` at all).
1441
1481
 
1442
1482
  **Known gotchas:**
1443
1483
  - `clearable`/`clear-button`/`lr-clear` are inert: the clear action only renders for
@@ -1480,8 +1520,10 @@ native input's own constraint validation reports `rangeUnderflow`/`rangeOverflow
1480
1520
 
1481
1521
  **Themeable custom properties:** inherited from `lr-input`, identical in meaning —
1482
1522
  `--lr-input-control-min-height`, `--lr-input-control-height`, `--lr-input-padding-block`,
1483
- `--lr-input-padding-inline` and `--lr-input-font-size` (all but `--lr-input-control-height` swap
1484
- per `size`; that one stays undeclared until you pin an exact row height).
1523
+ `--lr-input-padding-inline`, `--lr-input-font-size`, `--lr-input-gap`, and `--lr-input-radius` (all
1524
+ but `--lr-input-control-height` swap per `size`; that one stays undeclared until you pin an exact
1525
+ row height, and `--lr-input-gap`/`--lr-input-radius` — like `--lr-button-gap`/`-radius` — never
1526
+ vary by `size` at all).
1485
1527
 
1486
1528
  **Known gotchas:** the same two as `lr-number-input` — the inert clear/password surface, and `type`
1487
1529
  only being re-forced on connect. The native `type="time"` UI (spinners, AM/PM, picker) is the
@@ -1550,6 +1592,9 @@ interface PhoneNumberAdapter {
1550
1592
  `@aceshooting/lyra-ui/components/media/flag/flag-peer.js` once; without that registration the
1551
1593
  trigger simply omits the image. The open popup list stays text-only — a native `<option>` cannot
1552
1594
  contain elements.
1595
+ - `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected — same scale as `lr-input`'s
1596
+ `size`; scales input padding, font size, and wrapper min-height; `size="s"` shares its outer
1597
+ control height with `lr-input`, `lr-select`, and `lr-combobox` without part overrides)
1553
1598
  - `country: string` — current uppercase ISO alpha-2 selection; falls back to `defaultCountry`, then
1554
1599
  the first explicit/adapter country. Changing the country reparses the editable number.
1555
1600
  - `label: string = ''`, `hint: string = ''`, `errorText: string = ''` (attribute `error-text`) —
@@ -1616,9 +1661,13 @@ such as a consumer-owned `<lr-flag>`; no flag package is imported automatically)
1616
1661
  `flags`), `country-code` (selected alpha-2 code, `data-placeholder` when no country exists),
1617
1662
  `expand-icon`, `calling-code`, `input`, `hint`, `error`.
1618
1663
 
1619
- **Themeable custom properties:** shared tokens only. The phone-number input and calling code are
1620
- deliberately `dir="ltr"`/isolated because telephone numbers are algorithmic content; surrounding
1621
- form chrome and the country selector inherit LTR/RTL and use logical spacing/borders.
1664
+ **Themeable custom properties:** `--lr-phone-input-padding-block`, `--lr-phone-input-font-size`,
1665
+ and `--lr-phone-input-control-min-height` (each scaled by `size`), plus `--lr-phone-input-control-height`
1666
+ to pin an exact input-wrapper height (both floors and caps it — use it for pixel-matching an
1667
+ `<lr-input>` or `<lr-select>` in the same toolbar row; undeclared by default, leaving the min height
1668
+ as a floor only). The phone-number input and calling code are deliberately `dir="ltr"`/isolated
1669
+ because telephone numbers are algorithmic content; surrounding form chrome and the country selector
1670
+ inherit LTR/RTL and use logical spacing/borders.
1622
1671
 
1623
1672
  **Optional peer deps:** `libphonenumber-js` is declared optional but never imported by Lyra itself.
1624
1673
  For full national parsing/formatting, install it in the consuming app and pass it through the
@@ -1688,6 +1737,10 @@ consumer-facing `disabled` property/attribute itself.
1688
1737
  - `start: number = 0`
1689
1738
  - `end: number = 100`
1690
1739
  - `step: number = 1`
1740
+ - `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected) — visual size; proportionally
1741
+ scales the handle, track, and preset buttons via a single `--lr-time-range-size-scale` multiplier
1742
+ (not pixel-matched to `lr-input`'s row-height scale — this component's own dimensions aren't on
1743
+ that ladder); the drag hit-area never shrinks below 24px (WCAG 2.5.8)
1691
1744
  - `disabled: boolean = false` (reflected)
1692
1745
  - `startLabel: string = 'Range start'` (attribute `start-label`) — `aria-label` for the start handle
1693
1746
  - `endLabel: string = 'Range end'` (attribute `end-label`) — `aria-label` for the end handle
@@ -1717,6 +1770,10 @@ palette: `--lr-time-range-preset-active-bg` (falls back to `--lr-color-brand`),
1717
1770
  `--lr-time-range-preset-active-color` (falls back to `--lr-color-on-brand`). Unset, each resolves
1718
1771
  to exactly the token the rule used before they existed, so the default rendering is unchanged.
1719
1772
 
1773
+ One additional component-local property, `--lr-time-range-size-scale` (unitless multiplier,
1774
+ default 1, automatically set based on the `size` property), scales the handle, track, and preset
1775
+ button dimensions proportionally — unset, it defaults to 1 (size='m', no scaling).
1776
+
1720
1777
  They exist because the active preset is marked with an attribute on a part, and
1721
1778
  `::part(preset-button)[data-active]` is **invalid CSS** — an attribute selector cannot follow
1722
1779
  `::part()`. Without these, recoloring just the active preset meant hijacking the shared
@@ -1788,6 +1845,9 @@ named colors, the shape apps otherwise hand-roll as a row of round accent-color
1788
1845
  `<lr-segmented>`'s `SegmentedItem.icon`.
1789
1846
  - `value: string | null = null` — the currently selected option's `value` (controlled); `null`
1790
1847
  leaves nothing selected while keeping the first swatch tabbable.
1848
+ - `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected — scales the swatch hit-area and
1849
+ fill diameter proportionally, hit-area floored at 24px; not pixel-matched to `lr-input`'s
1850
+ row-height scale)
1791
1851
  - `label: string = ''` — accessible name copied to the internal `role="radiogroup"`; when empty, a
1792
1852
  host-level `aria-label` is used as a fallback.
1793
1853
 
@@ -1797,11 +1857,13 @@ changes via click or keyboard (re-selecting the current swatch is a no-op).
1797
1857
  **Slots:** none.
1798
1858
 
1799
1859
  **CSS parts:** `base` (the `role="radiogroup"` root), `swatch` (a single `role="radio"` color
1800
- swatch's interactive hit target, floored at the shared `--lr-icon-button-size` tap size; the
1801
- selected one is `[part='swatch'][aria-checked='true']`), `swatch-fill` (the compact
1802
- `--lr-size-1-5rem` filled circle inside it, rendered when the option has no `icon`), `swatch-icon`
1803
- (the option's `icon` shape, rendered in its place when it has one). Exactly one of
1804
- `swatch-fill`/`swatch-icon` is mounted per swatch, so the two never coexist.
1860
+ swatch's interactive hit target, sized via `--lr-swatch-picker-hit-size` defaults to
1861
+ `--lr-size-2-5rem`, swapped per `size` tier and floored at 24px; the selected one is
1862
+ `[part='swatch'][aria-checked='true']`), `swatch-fill` (the filled circle inside it, sized via
1863
+ `--lr-swatch-picker-fill-size` defaults to `--lr-size-1-5rem`, also swapped per `size` tier
1864
+ rendered when the option has no `icon`), `swatch-icon` (the option's `icon` shape, rendered in its
1865
+ place when it has one). Exactly one of `swatch-fill`/`swatch-icon` is mounted per swatch, so the
1866
+ two never coexist.
1805
1867
 
1806
1868
  **Themeable custom properties:** `--lr-swatch-picker-selected-color` (ring color around the
1807
1869
  selected swatch, defaults to `--lr-color-brand`, themeable independently of the focus ring),
@@ -1812,10 +1874,11 @@ shape), `--lr-swatch-picker-shine-duration` (default `0s`, a no-op; set a durati
1812
1874
  for a looping brighten-and-settle pulse on the selected swatch. It drives a separate
1813
1875
  `filter: brightness()` keyframe rather than `box-shadow`, so it composes with the blur token and
1814
1876
  works identically for a fill and an icon; disabled outright under `prefers-reduced-motion: reduce`,
1815
- which also drops the hover/selection scale transition); plus
1816
- shared tokens `--lr-color-border`/`-brand`, `--lr-icon-button-size`, `--lr-space-xs`,
1817
- `--lr-size-1-5rem`, `--lr-border-width-thin`/`-thick`, `--lr-radius`, `--lr-transition-fast`,
1818
- `--lr-focus-ring-*`.
1877
+ which also drops the hover/selection scale transition), `--lr-swatch-picker-hit-size` (hit-area
1878
+ size, swapped per `size` tier), `--lr-swatch-picker-fill-size` (visible fill/icon diameter, swapped
1879
+ per `size` tier); plus shared tokens — `--lr-color-border`/`-brand`, `--lr-space-xs`,
1880
+ `--lr-border-width-thin`/`-thick`, `--lr-radius`, `--lr-transition-fast`, `--lr-focus-ring-*`,
1881
+ and the per-tier `--lr-size-*` tokens.
1819
1882
 
1820
1883
  **Optional peer deps:** none.
1821
1884
 
@@ -2173,11 +2236,15 @@ the last token. `value` is a `string[]` and repeated values are submitted under
2173
2236
 
2174
2237
  **Properties:** `value`, `label`, `hint`, `errorText` (`error-text`), `placeholder`, `name`,
2175
2238
  `required`, `disabled`, `accessibleLabel` (attribute `aria-label` — forwarded to the internal text
2176
- input), `allowDuplicates` (`allow-duplicates`, default `false`), `editable` (reflected, default
2177
- `false` see below), and `delimiter: string | null` (default `','` see below).
2239
+ input), `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected — same scale as `lr-input`'s
2240
+ `size`, scaling the input-wrapper's row height and text size across six tiers; the remove button's
2241
+ hit area stays fixed at `40px` across all sizes), `allowDuplicates` (`allow-duplicates`, default
2242
+ `false`), `editable` (reflected, default `false` — see below), and `delimiter: string | null` (default
2243
+ `','` — see below).
2178
2244
  **Slots:** `label`, `hint`, `error`.
2179
2245
  **Events:** `input`, `change`, `lr-add` (`detail: { value }`), `lr-remove`
2180
- (`detail: { value, index }`), and `lr-token-edit`
2246
+ (`detail: { value, index }` — cancelable; `preventDefault()` keeps the token in `value`
2247
+ unchanged), and `lr-token-edit`
2181
2248
  (`detail: { value, previousValue, index }` — an existing token was edited in place and committed).
2182
2249
  **CSS parts:** `form-control`, `form-control-label`, `input-wrapper`, `token`, `token-label` (the
2183
2250
  token's text, doubling as the roving-focus edit trigger — rendered only while `editable`),
@@ -2207,10 +2274,15 @@ does not work** — that is the four-character string `null`. Use `delimiter="no
2207
2274
  (both of which the attribute converter maps to `null`), or a property binding
2208
2275
  (`.delimiter=${null}`). Removing the attribute restores the `,` default.
2209
2276
 
2210
- **Themeable custom properties:** `--lr-token-input-input-inline-size` (the editable input's
2211
- `flex-basis` inside the wrapped token row; undeclared by default, falling back inline to
2212
- `--lr-size-8rem`), `--lr-token-input-min-input-inline-size` (default `--lr-size-4rem`, the floor
2213
- that input keeps once tokens have consumed the row), and `--lr-token-input-editor-inline-size`
2277
+ **Themeable custom properties:** `--lr-token-input-padding` (the input-wrapper padding, scaled by
2278
+ `size`), `--lr-token-input-font-size` (the input-wrapper and token font size, scaled by `size`),
2279
+ `--lr-token-input-control-min-height` (the input-wrapper's block-size floor, scaled by `size`),
2280
+ `--lr-token-input-control-height` (exact input-wrapper height undeclared by default, leaving the
2281
+ `--lr-token-input-control-min-height` floor only; set it to a length to both floor and cap the row,
2282
+ e.g. to pixel-match a sibling field in the same toolbar row), `--lr-token-input-input-inline-size`
2283
+ (the editable input's `flex-basis` inside the wrapped token row; undeclared by default, falling back
2284
+ inline to `--lr-size-8rem`), `--lr-token-input-min-input-inline-size` (default `--lr-size-4rem`, the
2285
+ floor that input keeps once tokens have consumed the row), and `--lr-token-input-editor-inline-size`
2214
2286
  (default `--lr-size-6rem`, the inline size of the inline token editor opened by `editable`).
2215
2287
 
2216
2288
  ## `lr-code-editor`
@@ -2278,12 +2350,18 @@ spaces — the Tab key keeps inserting `tabSize` spaces in that case.
2278
2350
 
2279
2351
  A form-associated native color picker with label, hint, and error chrome. **Properties:** the shared
2280
2352
  form properties `name`, `value`, `disabled`, and `required`, plus `label`, `hint`, `errorText`
2281
- (`error-text`), and `accessibleLabel` (`aria-label`). **Slots:** `label`, `hint`, `error`. **Events:**
2353
+ (`error-text`), `accessibleLabel` (`aria-label`), and `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'`
2354
+ (reflected — same scale as `lr-input`'s `size`, for compact swatch rendering at every density tier).
2355
+ **Slots:** `label`, `hint`, `error`. **Events:**
2282
2356
  composed `input` and `change`, `lr-change` with `{ value }`, and `focus`/`blur` (re-dispatched from
2283
2357
  the internal `<input>`'s own `focus`/`blur`, bubbling and composed unlike the native events). **CSS
2284
2358
  parts:** `form-control`, `form-control-label` (the label; `label` is an alias kept for back-compat),
2285
2359
  `input`, `hint`, `error`.
2286
2360
 
2361
+ **Themeable custom properties:** `--lr-color-picker-swatch-size` — the swatch's inline and block size,
2362
+ auto-swapped per `size` tier (default `'m'` reads `2.5rem`, `'2xs'` reads `1.25rem`, etc.), matching
2363
+ the size ladder `lr-input` uses.
2364
+
2287
2365
  ## `lr-emoji-picker`
2288
2366
 
2289
2367
  A searchable, keyboard-navigable, form-associated emoji picker. `groups` is fully consumer-suppliable
@@ -2310,7 +2388,8 @@ search/grid; unset renders no label chrome. When `label` (or the `label` slot) i
2310
2388
  localized default to `aria-labelledby` pointing at the visible label. `hint: string = ''` —
2311
2389
  supporting text rendered below the search/grid; unset renders no hint chrome. `errorText: string =
2312
2390
  ''` (attribute `error-text`) — validation-error text rendered below the hint (overridden by slotted
2313
- `error` content when provided); unset renders no error chrome.
2391
+ `error` content when provided); unset renders no error chrome. `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` —
2392
+ visual size; scales the emoji grid item box and its glyph proportionally, floored at 24px (WCAG 2.5.8).
2314
2393
 
2315
2394
  **Events:** `lr-change` with `detail: { emoji }` (an emoji was picked — click, or Enter/Space on
2316
2395
  the active grid cell; also sets `value`), plus the shared form `input`, `change`, `focus`, and `blur`.
@@ -2336,10 +2415,13 @@ error message). While windowing is active the rows are wrapped in `virtual-space
2336
2415
  emoji flex line).
2337
2416
 
2338
2417
  **Themeable custom properties:** `--lr-emoji-picker-item-size` (default `--lr-icon-button-size`,
2339
- each emoji button's box), `--lr-emoji-picker-gap` (default `--lr-space-2xs`, the gap between
2418
+ each emoji button's box; scaled by the `size` property), `--lr-emoji-picker-glyph-size` (default
2419
+ `--lr-font-size-lg`, the font size of the emoji glyph; scaled by the `size` property to keep the glyph
2420
+ proportional to the item box), `--lr-emoji-picker-gap` (default `--lr-space-2xs`, the gap between
2340
2421
  emoji within a windowed row), and `--lr-emoji-picker-row-height` (default
2341
- `calc(var(--lr-emoji-picker-item-size) + var(--lr-space-l))`, one windowed row's height). All three
2342
- are also read back in JS to derive columns-per-row and row offsets for the windowed layout,
2422
+ `calc(var(--lr-emoji-picker-item-size) + var(--lr-space-l))`, one windowed row's height).
2423
+ `--lr-emoji-picker-item-size`, `--lr-emoji-picker-gap`, and `--lr-emoji-picker-row-height` are also
2424
+ read back in JS to derive columns-per-row and row offsets for the windowed layout,
2343
2425
  resolved to real pixels by measuring hidden probe boxes the component's own stylesheet sizes from
2344
2426
  those same tokens — so any CSS length unit works, `rem`/`em` and `calc()` included, and the windowed
2345
2427
  geometry matches what is painted without expressing the tokens in `px`. The measurement is cached
@@ -2356,8 +2438,9 @@ repainting everything else that reads it — as the only way in. Like `lr-time-r
2356
2438
  properties, it is written as an inline `var()` fallback at the point of use rather than declared on
2357
2439
  `:host`, so a value set on **any ancestor** reaches it instead of being shadowed.
2358
2440
 
2359
- Two constraints remain. `--lr-emoji-picker-item-size` is clamped up to `--lr-icon-button-size`, the
2360
- shared minimum tappable box: a smaller value does not shrink the button, and the windowed geometry
2441
+ Two constraints remain. `--lr-emoji-picker-item-size` is held at a flat 24px minimum (WCAG 2.5.8
2442
+ touch target floor): the smaller `size` tier values can shrink the box below the old 40px
2443
+ unconditional floor, but the minimum holds at 24px regardless of tokens, and the windowed geometry
2361
2444
  follows the clamped, painted size. And windowed rows are absolutely positioned at the row-height
2362
2445
  pitch, so `--lr-emoji-picker-row-height` must stay at or above the item size plus the group-label
2363
2446
  band (`--lr-space-l`) — the default's own formula — or consecutive rows overlap. Columns per
@@ -2399,6 +2482,85 @@ dim through `--lr-opacity-disabled`, the same library-wide token every other dis
2399
2482
  reads — so retuning `--lr-theme-opacity-disabled` keeps this form's disabled state consistent with
2400
2483
  the rest of the UI instead of needing a `::part()` rule here.
2401
2484
 
2485
+ ## `lr-locale-picker`
2486
+
2487
+ A closed-list locale switcher over the library's own locale registry. First-party invention (no
2488
+ Web Awesome equivalent). With `locales` unset (the default), the offered rows are exactly
2489
+ `getRegisteredLyraLocales()` — every locale with strings registered via `registerLyraLocale()`,
2490
+ plus `en` — kept live via `subscribeLyraLocaleRegistry()`. Built directly on `lr-select`'s
2491
+ trigger-button/`aria-activedescendant` listbox technique, not composed from it — a plain closed
2492
+ list, no filter/free-text mode.
2493
+
2494
+ **Properties:**
2495
+ - `locales: LyraLocaleCatalog = []` (attribute: false) — `LyraLocaleCatalog = string[] |
2496
+ LyraLocaleEntry[]`, `LyraLocaleEntry { tag: string; label?: string; country?: string }`. Empty
2497
+ (the default) auto-discovers the registry; a non-empty array (either form) overrides it
2498
+ entirely — a curated subset, custom order, custom labels, or a locale offered before its
2499
+ strings are registered. `country` (ISO 3166-1 alpha-2) overrides a row's derived flag — e.g.
2500
+ showing Lebanon's flag for an `'ar'` row instead of the library's default Saudi Arabia mapping;
2501
+ only available on the `{tag,label,country}` object form, not the bare `string[]` form.
2502
+ - `showFlags: boolean = true` — each row's leading `<lr-flag language={tag} variant="compact">`
2503
+ (or `<lr-flag country={country} variant="compact">` when the entry sets `country`); `false`
2504
+ omits the flag element entirely (not just visually).
2505
+ - `value: string = ''` — the **committed** selection (form value, drives `lr-change`). While `''`
2506
+ and untouched, the trigger *displays* `effectiveLocale` as a preview label, but
2507
+ `checkValidity()`/`required` are governed by the real `value`, which stays `''` until a real
2508
+ commit — mirrors a native `<select>` showing its first option's text without that being a
2509
+ committed selection.
2510
+ - `required: boolean = false`, `disabled: boolean = false`, `name: string = ''` — standard
2511
+ form-associated properties.
2512
+ - `label: string = ''`, `hint: string = ''`, `errorText: string = ''` (attribute `error-text`) —
2513
+ same opt-in form-control chrome as `lr-select` (props + matching named slots + parts); unset
2514
+ renders none of it.
2515
+ - `open: boolean = false` (reflected).
2516
+ - `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected — same scale as `lr-select`'s `size`).
2517
+
2518
+ **Events:** `lr-change` (`detail: { value, previousValue }`, **cancelable**) — fired on every
2519
+ explicit pick; if not `defaultPrevented`, the component applies the pick itself via
2520
+ `setLyraLocale(value)`. A listener calling `event.preventDefault()` leaves `value` updated but the
2521
+ active locale untouched, so a host can persist the choice first and apply it later. `blur`/`focus`
2522
+ re-dispatched from the internal trigger as bubbling, composed events.
2523
+
2524
+ **Methods:** `focus(options?)`, `blur()`, and `click()` — all forward to the internal trigger
2525
+ button, same convention as `lr-select`'s identical trio.
2526
+
2527
+ **Slots:** `label`, `hint`, `error`.
2528
+
2529
+ **CSS parts:** `form-control`, `form-control-label`, `trigger`, `listbox`, `option`,
2530
+ `option-flag` (present only while `showFlags` is on), `option-label`, `option-tag` (the row's
2531
+ secondary line — the raw BCP-47 tag), `expand-icon`, `hint`, `error`.
2532
+
2533
+ **Themeable custom properties:** `--lr-locale-picker-trigger-padding`,
2534
+ `--lr-locale-picker-trigger-min-height`, `--lr-locale-picker-trigger-height` (unset by default, a
2535
+ floor-only escape hatch — set a length to both floor and cap the trigger),
2536
+ `--lr-locale-picker-font-size`, `--lr-locale-picker-expand-size` (all scaled by `size`), and
2537
+ `--lr-locale-picker-option-active-bg` (default `--lr-color-brand-quiet`, the hovered/keyboard-active
2538
+ row background).
2539
+
2540
+ **Optional peer deps:** none directly — each row's `<lr-flag>` degrades to an empty render (no
2541
+ peer warning duplication; `lr-flag` itself already logs one) when the optional
2542
+ `@aceshooting/lyra-flags` package isn't installed and `showFlags` is left on.
2543
+
2544
+ ```html
2545
+ <lr-locale-picker label="Language"></lr-locale-picker>
2546
+ <script type="module">
2547
+ import { registerLyraLocale } from '@aceshooting/lyra-ui';
2548
+ registerLyraLocale('fr', { close: 'Fermer' });
2549
+ document
2550
+ .querySelector('lr-locale-picker')
2551
+ .addEventListener('lr-change', (e) => console.log(e.detail.value));
2552
+ </script>
2553
+ ```
2554
+
2555
+ **Known gotchas:**
2556
+ - selecting a row applies `setLyraLocale()` itself unless the listener calls
2557
+ `event.preventDefault()` on `lr-change` — it does not touch
2558
+ `document.documentElement.lang`/`dir`; apply writing-direction changes to the page yourself.
2559
+ - no filter/free-text mode — for a catalog with hundreds+ of rows, roll your own with `lr-select`
2560
+ or `lr-combobox` instead.
2561
+ - arrow-key navigation is vertical-only (Home/End/ArrowUp/ArrowDown); there is no
2562
+ ArrowLeft/ArrowRight remap under RTL, since there is no horizontal axis to remap.
2563
+
2402
2564
  # Data display, dashboards & flow canvas (`components/data/`)
2403
2565
 
2404
2566
  ## `lr-sparkline`
@@ -3645,7 +3807,13 @@ that reads it. The same restriction motivates three more state-scoped outline co
3645
3807
  a node that is an invalid connect-gesture drop target; `--lr-flow-canvas-node-connect-target-outline-color`
3646
3808
  (default `var(--lr-color-brand)`) — outline of a node that is a valid connect-gesture drop target; and
3647
3809
  `--lr-flow-canvas-drop-active-outline-color` (default `var(--lr-color-brand)`) — outline of the
3648
- viewport itself while a palette item is dragged over it (`droppable`).
3810
+ viewport itself while a palette item is dragged over it (`droppable`). A fifth,
3811
+ `--lr-flow-canvas-node-hover-outline-color` (default `var(--lr-color-border-strong)`) — the
3812
+ mouse-hover preview of a node's own `:focus-visible` ring — exists for a different reason than the
3813
+ four above: it is `:hover`-gated rather than attribute-gated, so `::part(node):hover` *is* valid
3814
+ CSS here, but the internal `[part='node']:hover` rule still out-specifies it ((0,2,0) vs. (0,1,1)),
3815
+ which this custom property sidesteps the same way. Set it to `transparent` to opt out of the hover
3816
+ treatment entirely.
3649
3817
 
3650
3818
  **Optional peer deps:** none.
3651
3819
 
@@ -3966,50 +4134,6 @@ numbers, so the two circular-meter components in the library share one visual sc
3966
4134
 
3967
4135
  ---
3968
4136
 
3969
- ## `lr-data-grid`
3970
-
3971
- Keyboard-navigable data grid with typed `columns` and `rows`, sortable headers, roving cell focus,
3972
- loading/empty states, and responsive horizontal overflow.
3973
-
3974
- **Properties:**
3975
- - `columns: DataGridColumn<T>[] = []` (attribute: false) — `{ key, label, width?, sortable?,
3976
- value? }`; `width` becomes the header cell's `inline-size`, `value(row)` overrides the default
3977
- `row[key]` lookup
3978
- - `rows: T[] = []` (attribute: false)
3979
- - `rowKey: (row: T, index: number) => string | number = (_row, index) => index` (attribute: false)
3980
- - `selectedKey: string | number | null = null` (attribute: false) — compared against `rowKey(row, i)`
3981
- to set `[part='row'][data-selected]` and `aria-selected`
3982
- - `sortKey: string = ''`, `sortDirection: 'ascending' | 'descending' = 'ascending'`
3983
- (attribute: false) — the grid updates both on header activation and emits `lr-sort`, but never
3984
- reorders `rows`; sorting stays the consumer's job
3985
- - `loading: boolean = false` (reflected) — replaces the body with a localized "loading" row
3986
- - `emptyText: string = ''` (attribute `empty-text`) — empty-state text; falls back to the localized
3987
- `noData`
3988
- - `accessibleLabel: string = ''` (attribute `aria-label`) — names the `role="grid"` table; falls back
3989
- to the localized `dataGridLabel`
3990
-
3991
- **Keyboard:** exactly one cell is tabbable. Arrows move the roving focus (Left/Right are swapped
3992
- under RTL), Home/End jump to the first/last column of the current row, Enter/Space activate the row.
3993
- The focus position is re-clamped whenever `rows`/`columns` shrink, so the grid can't lose its tab stop.
3994
-
3995
- **Events:** `lr-row-click` (`detail: { row }`, click or Enter/Space), `lr-selection-change`
3996
- (`detail: { row }`, emitted alongside it after `selectedKey` updates), `lr-cell-focus`
3997
- (`detail: { row, column }`, `column` is the column `key`), `lr-sort` (`detail: { key, direction }`,
3998
- `sortable` columns only; re-activating the active column flips `direction`).
3999
-
4000
- **Slots:** none.
4001
-
4002
- **CSS parts:** `viewport` (the scrolling bordered wrapper), `grid` (the `<table role="grid">`),
4003
- `header` (each sticky `<th>`), `row`, `cell`, `empty` (the loading / no-data cell).
4004
-
4005
- **Themeable custom properties:** `--lr-data-grid-row-selected-bg` (default
4006
- `var(--lr-color-brand-quiet)`) — the background of the selected row's cells. It is an inline `var()`
4007
- fallback at its point of use rather than a `:host` declaration, so it can be set on the element *or
4008
- any ancestor*. It exists because Shadow Parts forbids an attribute selector after `::part()` —
4009
- `::part(row)[aria-selected='true']` is invalid CSS — leaving the library-wide
4010
- `--lr-color-brand-quiet` token as the only prior lever, which repaints every other surface reading
4011
- it. `lr-table` exposes the equivalent knob as `--lr-table-row-selected-bg`.
4012
-
4013
4137
  ## `lr-calendar`
4014
4138
 
4015
4139
  Responsive month calendar with event markers and an agenda view.
@@ -4835,14 +4959,18 @@ each falls back to the token its rule used before. Otherwise shared tokens —
4835
4959
 
4836
4960
  ## `lr-control-group`
4837
4961
 
4838
- Responsive semantic grouping for mixed controls and actions. It keeps slotted children in a
4839
- wrapping inline-flex row, centers children with different intrinsic heights, and switches to a
4840
- full-width allocation in narrow containers. Use it for dashboard toolbars that combine segmented
4841
- controls, selects, buttons, and other interactive elements.
4962
+ Semantic grouping for mixed controls and actions. It keeps slotted children in a wrapping
4963
+ inline-flex row and centers children with different intrinsic heights. Use it for dashboard
4964
+ toolbars that combine segmented controls, selects, buttons, and other interactive elements.
4842
4965
 
4843
4966
  **Properties:**
4844
4967
  - `label: string = ''` — accessible name for the internal `role="group"`; when empty, a host
4845
4968
  `aria-label` is forwarded as a fallback.
4969
+ - `responsive: boolean = false` (reflected) — opts into a `@container` narrow-allocation breakpoint
4970
+ (switches to a full-width allocation below `20rem`) by making the host a CSS size-query
4971
+ container. Left unset, the host is `container-type: normal`, since `container-type: inline-size`
4972
+ unconditionally would collapse the group to 0 inline size whenever it sits as an ordinary
4973
+ (`flex-basis: auto`) child of a shrink-to-fit flex row — this component's own primary use case.
4846
4974
 
4847
4975
  **Events:** none.
4848
4976
 
@@ -4865,6 +4993,90 @@ between grouped controls; shared spacing and layout tokens apply as well.
4865
4993
  - This is a layout and semantics primitive; it does not coordinate child values or emit a group
4866
4994
  change event.
4867
4995
  - Children wrap according to the group's own allocated inline size, not the viewport width.
4996
+ - The `@container` narrow-allocation breakpoint only applies when `responsive` is set. Setting
4997
+ `responsive` while this group also sits as a shrink-to-fit flex child re-introduces the 0-width
4998
+ collapse this default is designed to avoid — only opt in when the group's own size comes from
4999
+ somewhere else (a percentage width, a grid track, a block-level parent).
5000
+
5001
+ ---
5002
+
5003
+ ## `lr-reorder-list` / `lr-reorder-item`
5004
+
5005
+ A generic flat-list reorder primitive: per-row move-up/move-down buttons (always available), plus
5006
+ Ctrl/Cmd+ArrowUp/ArrowDown from focus anywhere inside a row — the same modifier convention
5007
+ `<lr-tree>`'s `reorderable` and `<lr-dashboard-grid>`'s `cells-draggable` already establish. Unlike
5008
+ `<lr-tree>`'s controlled `reorderable` mode, this list physically moves its own slotted
5009
+ `<lr-reorder-item>` light-DOM nodes itself (there is no `data` array prop to reconcile against),
5010
+ and emits `lr-reorder` with the full new order so the host can persist it without hand-rolling its
5011
+ own splice/resort logic. `lr-reorder` is cancelable — a listener calling `preventDefault()` holds
5012
+ the move open (mirroring `lr-confirm-bar`'s cancelable approve/deny pattern) until the host calls
5013
+ `finalizePendingMove()`/`revertPendingMove()`.
5014
+
5015
+ ### `lr-reorder-list`
5016
+
5017
+ **Properties:**
5018
+ - `label: string = ''` — accessible name for the internal `role="list"`; when empty, a host
5019
+ `aria-label` is forwarded as a fallback.
5020
+ - `disabled: boolean = false` (reflected) — disables every item's move buttons and the Ctrl/Cmd+
5021
+ Arrow shortcut, without mutating any item's own `disabled` attribute.
5022
+
5023
+ **Events:** `lr-reorder` (`detail: { order: string[], fromIndex: number, toIndex: number }`,
5024
+ cancelable — fired before a move is applied; `order` is every item's `value` (or its
5025
+ DOM-position-index fallback) in the order the move WOULD produce. Uncanceled, the move applies
5026
+ synchronously right after. `preventDefault()` holds the move instead: the affected item reflects
5027
+ `pending`, and no other move can start until the host resolves it — see **Methods** below.
5028
+
5029
+ **Methods:** `finalizePendingMove()` — applies a move held via `preventDefault()`.
5030
+ `revertPendingMove()` — discards a held move, restoring the prior order. Both no-op when nothing
5031
+ is pending.
5032
+
5033
+ **Slots:** default — `<lr-reorder-item>` elements.
5034
+
5035
+ **CSS parts:** `base` — the internal `role="list"` wrapper.
5036
+
5037
+ **Themeable custom properties:** `--lr-reorder-list-gap` (default `var(--lr-space-2xs)`) — gap
5038
+ between rows.
5039
+
5040
+ ```html
5041
+ <lr-reorder-list label="Form fields" @lr-reorder=${(e) => console.log(e.detail.order)}>
5042
+ <lr-reorder-item value="name">Name</lr-reorder-item>
5043
+ <lr-reorder-item value="email">Email</lr-reorder-item>
5044
+ <lr-reorder-item value="phone">Phone</lr-reorder-item>
5045
+ </lr-reorder-list>
5046
+ ```
5047
+
5048
+ **Known gotchas:**
5049
+ - Boundary-disabled state (`atStart`/`atEnd`) and the `listDisabled` cascade are computed and
5050
+ pushed onto each `<lr-reorder-item>` by this list, on every slot change and every move — an item
5051
+ alone can't know its own position.
5052
+ - No pointer drag-and-drop; move-up/move-down buttons and the keyboard shortcut only.
5053
+
5054
+ ---
5055
+
5056
+ ### `lr-reorder-item`
5057
+
5058
+ **Properties:**
5059
+ - `value?: string` — stable identifier included in the parent's `lr-reorder` order array; falls
5060
+ back to this item's live DOM-position index when unset.
5061
+ - `disabled: boolean = false` (reflected) — disables this row's own move buttons only; does not
5062
+ hide its slotted content.
5063
+ - `atStart: boolean = false`, `atEnd: boolean = false`, `listDisabled: boolean = false`
5064
+ (attribute: false) — pushed down by the parent `<lr-reorder-list>`; normally set internally, not
5065
+ by consumers.
5066
+ - `pending: boolean = false` (reflected) — set while this item's move is held via the parent's
5067
+ `lr-reorder` `preventDefault()`. Informational only (doesn't itself disable the item's buttons);
5068
+ style via `lr-reorder-item[pending]`. Pushed down by the parent; normally set internally.
5069
+
5070
+ **Events:** `lr-move-request` (`detail: { direction: 'up' | 'down' }` — a move button was activated
5071
+ while not disabled; handled by the parent `<lr-reorder-list>`, which performs the actual move)
5072
+
5073
+ **Slots:** default — arbitrary row content.
5074
+
5075
+ **CSS parts:** `base` (row wrapper), `move-up-button`, `move-down-button`, `content` (default-slot
5076
+ wrapper).
5077
+
5078
+ **Themeable custom properties:** `--lr-reorder-item-gap` (default `var(--lr-space-xs)`) — gap
5079
+ between the move buttons and the row content.
4868
5080
 
4869
5081
  ---
4870
5082
 
@@ -5087,7 +5299,11 @@ content clickable, and it shows nothing while the viewport is above the first gr
5087
5299
  **Themeable custom properties:** `--lr-virtual-list-height` (default `24rem` — the host's bounded
5088
5300
  scroll extent; component-specific since a virtualized list is meaningless without a sized viewport),
5089
5301
  plus shared `--lr-focus-ring-width/-color/-offset` (inward-offset ring on `[part="base"]`, negative
5090
- so it isn't clipped by the container's own `overflow: auto`).
5302
+ so it isn't clipped by the container's own `overflow: auto`). `[part="base"]` also carries a
5303
+ mouse-hover outline — a subtler preview of that same `:focus-visible` ring, shown because the part
5304
+ always carries `tabindex="0"` and is a real keyboard-navigable target — tinted via
5305
+ `--lr-virtual-list-hover-outline-color` (default `var(--lr-color-border-strong)`); set it to
5306
+ `transparent` to opt out of the hover treatment entirely.
5091
5307
 
5092
5308
  **Optional peer deps:** none.
5093
5309
 
@@ -5255,9 +5471,12 @@ role, matching `<lr-date-input>`'s `accessibleLabel`.
5255
5471
  **Events:** `lr-mode-change` (`detail: AppRailModeChangeDetail` = `{ mode: AppRailMode }`; the
5256
5472
  effective mode changed, whether from a breakpoint crossing or an explicit `mode` assignment — not
5257
5473
  fired for a redundant reassignment to the mode already in effect), `lr-toggle`
5258
- (`detail: AppRailToggleDetail` = `{ open: boolean }`; the mobile overlay opened or closed — via the
5259
- built-in toggle button, Escape, a backdrop click, a nav-item click while open, or a breakpoint/forced
5260
- mode change leaving `'mobile'` while open — not fired when a consumer sets `open` directly),
5474
+ (`detail: AppRailToggleDetail` = `{ open: boolean }`; the mobile overlay is opening or closing — via
5475
+ the built-in toggle button, Escape, a backdrop click, a nav-item click while open, or a
5476
+ breakpoint/forced mode change leaving `'mobile'` while open — not fired when a consumer sets `open`
5477
+ directly. Cancelable for every trigger except the forced mode-change close, which always applies —
5478
+ vetoing that one would leave `open` stuck `true` in a mode where it's meaningless; call
5479
+ `preventDefault()` to keep the overlay as it is for the other triggers),
5261
5480
  `lr-rail-resize` (`detail: AppRailResizeDetail` = `{ widthPx: number }`; the `resizable` rail's
5262
5481
  width changed via drag or keyboard stepping — not fired when a consumer sets `railWidthPx` directly).
5263
5482
 
@@ -5994,7 +6213,10 @@ false` (reflected — disables every gesture grid-wide), `accessibleLabel: strin
5994
6213
  **Themeable custom properties:** `--lr-dashboard-grid-columns`, `--lr-dashboard-grid-row-height`,
5995
6214
  and `--lr-dashboard-grid-gap` back the CSS Grid's `grid-template-columns`/`grid-auto-rows`/`gap`.
5996
6215
  The `columns`/`rowHeight`/`gap` properties write them inline on `[part='base']` on every render, so
5997
- overriding them from a stylesheet has no effect — set the properties instead.
6216
+ overriding them from a stylesheet has no effect — set the properties instead. `--lr-dashboard-grid-cell-hover-outline-color`
6217
+ (default `var(--lr-color-border-strong)`) retints the mouse-hover outline on `[part='cell']` — a
6218
+ preview of its own `:focus-visible` ring, shown because every cell is a real focusable,
6219
+ draggable/resizable target; set it to `transparent` to opt out of the hover treatment entirely.
5998
6220
 
5999
6221
  ## `lr-drilldown-panel`
6000
6222
 
@@ -6468,7 +6690,7 @@ already follow.
6468
6690
  ### `lr-chip`
6469
6691
 
6470
6692
  **Properties:**
6471
- - `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected) — standard visual-density
6693
+ - `size: '3xs' | '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected) — standard visual-density
6472
6694
  scale for typography, padding, gap, and icon size; `m` preserves the original chip dimensions
6473
6695
  - `tone: 'neutral' | 'brand' | 'success' | 'warning' | 'danger' = 'neutral'` (reflected — tints the
6474
6696
  whole pill using a loud-color-on-quiet-tint convention; `neutral` has no dedicated token pair, so
@@ -6518,6 +6740,9 @@ back to `--lr-chip-bg`), the density quintet `--lr-chip-font-size`, `--lr-chip-p
6518
6740
  `:host([size])` rule, so setting one directly on the element overrides that step of the scale; the
6519
6741
  `m` defaults are `--lr-font-size-sm` / `--lr-size-0-25rem` / `--lr-space-s` / `--lr-space-xs` /
6520
6742
  `--lr-font-size-sm`), the height pair `--lr-chip-min-height` / `--lr-chip-height` (below),
6743
+ `--lr-chip-radius` (default `--lr-radius-pill`, the corner radius of both `[part='base']` and
6744
+ `[part='remove-button']` — retunable without a `::part()` rule, and unlike the density quintet
6745
+ above does not vary by `size`; the same `--lr-button-radius` pattern),
6521
6746
  plus shared tokens (`--lr-space-xs`, `--lr-space-s`,
6522
6747
  `--lr-color-brand`/`-brand-quiet`, `--lr-color-success`/`-success-quiet`,
6523
6748
  `--lr-color-warning`/`-warning-quiet`, `--lr-color-danger`/`-danger-quiet`,
@@ -6812,6 +7037,9 @@ color for text and border). Set one directly on the element for a tint outside t
6812
7037
  `var(--lr-space-s)`), and `--lr-badge-min-height` (default `var(--lr-size-1-25rem)`) — the density
6813
7038
  trio each `:host([size])` rule rewrites to that step's font size, inline padding, and minimum block
6814
7039
  size; the `m` defaults above exactly reproduce the pre-`size` fixed badge treatment.
7040
+ `--lr-badge-radius` (default `--lr-radius-pill`) is `[part='base']`'s corner radius, retunable
7041
+ without a `::part(base)` rule and, unlike the density trio, does not vary by `size` — the same
7042
+ `--lr-button-radius` pattern; `lr-tag` inherits it unchanged, the same as `size`.
6815
7043
 
6816
7044
  ## `lr-callout`
6817
7045
 
@@ -7933,11 +8161,15 @@ tag itself, and so does a structurally invalid one — `Intl.DisplayNames` throw
7933
8161
  those rather than falling back, and a language picker should degrade to showing the raw tag rather
7934
8162
  than tearing down the render. Pair it with `languageToCountry()` for the flag half of the same row.
7935
8163
 
7936
- **Locale picker recipe.** A locale picker is a composition, not a component: `<lr-popover>` supplies
7937
- the light-dismiss surface, `<lr-flag>` the country mark, `localeNativeName()` the endonym, and
7938
- `aria-current="true"` marks the active choice. Which locales exist is the app's decision, so the app
7939
- owns the list. Set `lang` on each row so assistive tech pronounces the endonym in its own language,
7940
- and use `variant="compact"` at icon scale.
8164
+ **Locale picker recipe.** `<lr-locale-picker>` (`components/forms/locale-picker/`) is the built-in
8165
+ locale switcher a closed-list dropdown over the locale registry or an explicit catalog, with
8166
+ `lr-flag`/`localeNativeName()` rows and full form association out of the box. The manual
8167
+ composition below remains available for an app that wants different chrome (its own dismiss
8168
+ surface, a different active-state marker, or a layout `<lr-locale-picker>` doesn't offer):
8169
+ `<lr-popover>` supplies the light-dismiss surface, `<lr-flag>` the country mark,
8170
+ `localeNativeName()` the endonym, and `aria-current="true"` marks the active choice. Which locales
8171
+ exist is the app's decision, so the app owns the list. Set `lang` on each row so assistive tech
8172
+ pronounces the endonym in its own language, and use `variant="compact"` at icon scale.
7941
8173
 
7942
8174
  ```html
7943
8175
  <lr-popover placement="bottom-start">
@@ -12609,8 +12841,11 @@ appends host-supplied content (re-invoked per row on every render, e.g. a `lr-me
12609
12841
  actions) after the built-in `rowActions` output in each row's `actions` slot; events it fires reach
12610
12842
  the host normally and never trigger `lr-select`. Unset renders only the built-in `rowActions`.
12611
12843
  `renderLeading?: (thread: ChatThread) => TemplateResult` (attribute: false) — renders non-interactive
12612
- leading content in each virtualized row. `renderMeta?: (thread: ChatThread) => TemplateResult`
12613
- (attribute: false) — appends structured metadata in the row's meta region.
12844
+ leading content in each virtualized row. `renderExcerpt?: (thread: ChatThread) => TemplateResult`
12845
+ (attribute: false) — renders rich content into the row item's own `excerpt` slot, winning over the
12846
+ plain-string `excerpt` property (e.g. a server-highlighted search-match snippet), while leaving the
12847
+ built-in title layout and inline-rename affordance untouched. `renderMeta?: (thread: ChatThread) =>
12848
+ TemplateResult` (attribute: false) — appends structured metadata in the row's meta region.
12614
12849
  `renderRowContent?: (thread: ChatThread) => TemplateResult` (attribute: false) — replaces the
12615
12850
  conversation item's title/excerpt/meta content area with custom non-interactive row content.
12616
12851
  `formatGroupLabel?: (key: ThreadBucketKey, date?: Date) => string` (attribute: false) — overrides
@@ -12643,9 +12878,10 @@ header row and the pinned copy alike, and the band itself is where a shadow or b
12643
12878
  belongs), `row` (all exported across the internal `lr-virtual-list` shadow
12644
12879
  boundary), `row-wrapper` (the wrapper around `wrapRow` output, only present when `wrapRow` is set;
12645
12880
  row-only — group headers are never passed through `wrapRow`, so they never carry it), and
12646
- `row-leading`/`row-content`/`row-meta`/`row-actions` (the library-owned wrappers around
12881
+ `row-leading`/`row-excerpt`/`row-content`/`row-meta`/`row-actions` (the library-owned wrappers around
12647
12882
  their corresponding render-hook output; inherited fonts, layout values, and theme custom properties
12648
- reach callback-rendered descendants through these parts).
12883
+ reach callback-rendered descendants through these parts). `row-excerpt` wraps `renderExcerpt`
12884
+ output, which is slotted into the row item's own `excerpt` slot.
12649
12885
 
12650
12886
  Data mode additionally forwards each row `<lr-conversation-item>`'s own parts under a `row-item-`
12651
12887
  prefix: `row-item-base`, `row-item-option`, `row-item-leading`, `row-item-content`,
@@ -12653,8 +12889,9 @@ prefix: `row-item-base`, `row-item-option`, `row-item-leading`, `row-item-conten
12653
12889
  `row-item-meta`, `row-item-timestamp`, `row-item-actions`.
12654
12890
 
12655
12891
  **Keep the two prefixes straight — they are different surfaces.** The `row-*` parts wrap *this*
12656
- component's own render-callback output (`wrapRow`, `renderLeading`, `renderRowContent`,
12657
- `renderMeta`, `renderActions`); the `row-item-*` parts are the row item's *internals*. Row density
12892
+ component's own render-callback output (`wrapRow`, `renderLeading`, `renderExcerpt`,
12893
+ `renderRowContent`, `renderMeta`, `renderActions`); the `row-item-*` parts are the row item's
12894
+ *internals*. Row density
12658
12895
  in particular lives in `row-item-base`'s padding and `row-item-title`'s font size, so
12659
12896
  `::part(row-item-base)` is the supported way to build a dense sidebar.
12660
12897
 
@@ -13651,17 +13888,26 @@ renders at the start of the action row, before Deny/Edit/Approve.
13651
13888
  `autoCorrect: string = 'off'` (attribute `autocorrect`), `autocomplete: string = 'off'`,
13652
13889
  `wrap: 'hard'|'soft'|'off' = 'soft'`, `inputMode: string = ''` (attribute `inputmode`),
13653
13890
  and `enterKeyHint: string = ''` (attribute `enterkeyhint`) — forwarded to the raw-JSON
13654
- `<textarea>` while editing; the defaults keep browser editing assistance from changing JSON text
13891
+ `<textarea>` while editing; the defaults keep browser editing assistance from changing JSON text.
13892
+ `pending: 'approve' | 'deny' | null = null` (reflected) — which decision is awaiting host
13893
+ resolution while an `lr-approve`/`lr-deny` listener has called `preventDefault()` on the
13894
+ now-cancelable event; the pending button shows `loading`, the other is `disabled` (Approve is
13895
+ also still `disabled` while an in-progress edit is invalid JSON, independent of `pending`).
13896
+ Escape/backdrop dismissal is suppressed while `pending` is set. Finalize by calling
13897
+ `close('approve'|'deny')`, or clear `.pending` back to `null` to bounce back to the undecided
13898
+ state; `pending` also resets to `null` every time the dialog re-opens.
13655
13899
 
13656
13900
  **Methods:** `close(reason: ToolApprovalDialogCloseReason = 'api'): void` — closes the dialog, emits
13657
13901
  `lr-close` with `reason`, and returns focus to whatever had it before the dialog opened; a no-op if
13658
13902
  already closed.
13659
13903
 
13660
13904
  **Events:** `lr-approve` (`detail: { args: unknown }` — the current, already-parsed arguments: the
13661
- original `args` prop, or the user's edited-and-validated version if an edit was in progress; always
13662
- followed by `lr-close` with reason `'approve'`), `lr-deny` (no detail — `this.emit('lr-deny')` is
13663
- called with no second argument, so per the DOM spec's `CustomEventInit` default, `event.detail` is
13664
- `null`, not `undefined`; always followed by `lr-close` with reason `'deny'`), `lr-close`
13905
+ original `args` prop, or the user's edited-and-validated version if an edit was in progress.
13906
+ Cancelable: a listener calling `preventDefault()` sets `pending` to `'approve'` instead of
13907
+ closing; otherwise always followed by `lr-close` with reason `'approve'`), `lr-deny` (no detail
13908
+ `this.emit('lr-deny')` is called with no second argument, so per the DOM spec's `CustomEventInit`
13909
+ default, `event.detail` is `null`, not `undefined`. Cancelable, same `pending` mechanism, setting
13910
+ `pending` to `'deny'`; otherwise always followed by `lr-close` with reason `'deny'`), `lr-close`
13665
13911
  (`detail: ToolApprovalDialogCloseReason` — fired exactly once per dismissal, via Escape, a backdrop
13666
13912
  click, the Approve/Deny buttons, or a `close()` call)
13667
13913
 
@@ -13669,7 +13915,12 @@ click, the Approve/Deny buttons, or a `close()` call)
13669
13915
  rendered before the built-in Deny/Edit/Approve buttons.
13670
13916
 
13671
13917
  **CSS parts:** `backdrop`, `panel`, `header`, `tool-name`, `body`, `args-view`, `args-editor`, `error`,
13672
- `footer`, `deny-button`, `edit-button`, `approve-button`
13918
+ `footer`, `deny-button`, `edit-button`, `approve-button`,
13919
+ `deny-button-base`, `deny-button-label`, `deny-button-start`, `deny-button-end`,
13920
+ `deny-button-spinner`, `approve-button-base`, `approve-button-label`, `approve-button-start`,
13921
+ `approve-button-end`, `approve-button-spinner` (`deny-button`/`approve-button` are each an
13922
+ `<lr-button>` host; these five per-button parts are re-exported from its own `lr-button` parts via
13923
+ `exportparts`; `edit-button` stays a plain `<button>`, unaffected by this).
13673
13924
 
13674
13925
  **Themeable custom properties:** `--lr-tool-approval-dialog-overlay-color` (default
13675
13926
  `rgb(0 0 0 / 0.5)` — the backdrop scrim color; component-specific since no shared overlay token
@@ -13731,6 +13982,16 @@ shared composed-tree focus traversal used by the other modal families.
13731
13982
  this a mobile browser (notably iOS Safari, which defaults textarea `autocapitalize` to
13732
13983
  `'sentences'`) could auto-capitalize or auto-correct key/value text as the user edits, silently
13733
13984
  corrupting the JSON.
13985
+ - `deny-button`/`approve-button` are `<lr-button>` hosts (`variant="neutral"`/`"brand"` — this
13986
+ component has no `tone` property) — `--lr-button-*` theming reaches them directly. A consumer
13987
+ previously styling `::part(deny-button)`/`::part(approve-button)` for
13988
+ padding/border/font/`:hover`/`:focus-visible` must move that CSS onto the re-exported
13989
+ `deny-button-base`/`approve-button-base` sub-parts instead. `edit-button` is unaffected and stays
13990
+ a raw `<button>`.
13991
+ - An `lr-approve`/`lr-deny` listener can call `preventDefault()` to keep the decision open while
13992
+ its own async work is in flight — see `pending` above. While `pending` is set, Escape/backdrop
13993
+ dismissal is suppressed, so a consumer that never resolves the pending decision leaves the
13994
+ dialog open until it clears `.pending` or calls `close()` directly itself.
13734
13995
 
13735
13996
  ---
13736
13997
 
@@ -14298,6 +14559,10 @@ narrow-allocation `@container` treatment is switched off — a compact bar is *e
14298
14559
  so stretching the buttons to fill would be exactly wrong. Re-chrome it through the
14299
14560
  `--lr-confirm-bar-compact-*` properties below. Everything else is unchanged: the event shapes, the
14300
14561
  focus-to-`[part="status"]`-before-unmount contract, and `role="group"` with its heading label.
14562
+ `pending: 'approved' | 'denied' | null = null` (reflected) — which decision is awaiting host
14563
+ resolution while an `lr-approve`/`lr-deny` listener has called `preventDefault()` on the
14564
+ now-cancelable event; the pending button shows `loading`, the other is `disabled`. Set `.decision`
14565
+ to finalize, or clear `.pending` back to `null` to bounce back to the undecided state.
14301
14566
 
14302
14567
  **Slots:** default — supplementary body content between the heading and the actions (e.g. a
14303
14568
  `lr-diff-view`). `footer` — extra content at the start of the action row.
@@ -14307,8 +14572,12 @@ focus-to-`[part="status"]`-before-unmount contract, and `role="group"` with its
14307
14572
 
14308
14573
  **CSS parts:** `base` (`role="group"`), `heading`/`tool-name`, `body`, `args` (the
14309
14574
  details/json-viewer wrapper, only rendered when `args` is defined), `footer`, `deny-button`,
14310
- `approve-button` (named identically to the dialog's parts), `status` (the decided-state text, always
14311
- present in the DOM as a focus landing spot).
14575
+ `approve-button` (each an `<lr-button>` host, named identically to the dialog's parts),
14576
+ `deny-button-base`, `deny-button-label`, `deny-button-start`, `deny-button-end`,
14577
+ `deny-button-spinner`, `approve-button-base`, `approve-button-label`, `approve-button-start`,
14578
+ `approve-button-end`, `approve-button-spinner` (re-exported from each button's own
14579
+ `lr-button` parts via `exportparts`), `status` (the decided-state text, always present in the DOM
14580
+ as a focus landing spot).
14312
14581
 
14313
14582
  **Themeable custom properties:** the `compact` presentation is deliberately chrome-less by default
14314
14583
  and re-chromed entirely through five properties, all scoped to `[part="base"]` while `compact`:
@@ -14325,8 +14594,15 @@ bar in this panel a hairline border" a one-rule change on the panel.
14325
14594
  - `[part="status"]` is always rendered and must never be given `display: none`. Deciding moves focus
14326
14595
  to it synchronously, before the Deny/Approve buttons unmount, so hiding it would drop focus to
14327
14596
  `<body>`. The shipped `:empty` rule on it has never matched, and that is load-bearing.
14328
- - `[part="deny-button"]` and `[part="approve-button"]` are raw `<button>` elements, not composed
14329
- `lr-button`s, so `--lr-button-*` theming does not reach them. Style them through their parts.
14597
+ - `[part="deny-button"]`/`[part="approve-button"]` are `<lr-button>` hosts (`variant="neutral"`/
14598
+ `"brand"`, `"danger"` under `tone="danger"`) — `--lr-button-*` theming reaches them directly. A
14599
+ consumer previously styling `::part(deny-button)`/`::part(approve-button)` for
14600
+ padding/border/font/`:hover`/`:focus-visible` must move that CSS onto the re-exported
14601
+ `deny-button-base`/`approve-button-base` sub-parts instead — the outer part now resolves to the
14602
+ `<lr-button>` host, where those declarations either do nothing or must be re-expressed through
14603
+ `lr-button`'s own parts/custom properties.
14604
+ - An `lr-approve`/`lr-deny` listener can call `preventDefault()` to keep the decision open while
14605
+ its own async work is in flight — see `pending` above.
14330
14606
 
14331
14607
  ```html
14332
14608
  <lr-tool-call-chip status="pending"></lr-tool-call-chip>
@@ -14335,6 +14611,18 @@ bar in this panel a hairline border" a one-rule change on the panel.
14335
14611
  ></lr-confirm-bar>
14336
14612
  ```
14337
14613
 
14614
+ An `lr-approve`/`lr-deny` listener that needs to await its own async work before finalizing calls
14615
+ `preventDefault()` and sets `.decision` (or clears `.pending`) once it resolves:
14616
+
14617
+ ```ts
14618
+ bar.addEventListener('lr-approve', (e) => {
14619
+ e.preventDefault();
14620
+ runApproval(e.detail.args)
14621
+ .then(() => { bar.decision = 'approved'; })
14622
+ .catch(() => { bar.pending = null; }); // bounce back, retry
14623
+ });
14624
+ ```
14625
+
14338
14626
  ## `lr-browser-frame`
14339
14627
 
14340
14628
  Presentational "agent computer" viewport: a screenshot/frame stream (or slotted live media), a
@@ -14594,7 +14882,7 @@ Filterable and taggable evaluation-example list with add, remove, import, and ex
14594
14882
  expectedOutput?: string; tags?: string[]; metadata?: Record<string, unknown> }` (exported here).
14595
14883
  Deliberately its own small shape rather than reusing anything from `src/ai/types.ts` — none of that
14596
14884
  module's interfaces models "one row of a labeled eval dataset". `input`/`expectedOutput` are plain
14597
- strings (not structured payloads) to match `lr-data-grid`'s stringifying cell rendering. Fully
14885
+ strings (not structured payloads), rendered as plain text by every column's `cell()`. Fully
14598
14886
  controlled: add/remove/import/export are all *requests*; the host mutates and passes the array back
14599
14887
  - `searchable: boolean = false` (reflected) — built-in free-text search over `input`,
14600
14888
  `expectedOutput`, and `tags` (case-insensitive substring)
@@ -14625,7 +14913,7 @@ loses focus, since native focus neither bubbles nor crosses the shadow boundary.
14625
14913
 
14626
14914
  Rubric scoring and human-review surface for comparing the runs of one evaluation example.
14627
14915
 
14628
- Composes `lr-data-grid` (the comparison table), `lr-rubric-form` (the review surface), and
14916
+ Composes `lr-table` (the comparison table), `lr-rubric-form` (the review surface), and
14629
14917
  `lr-diff-view` (baseline↔selected output diff) rather than re-deriving any of their behavior.
14630
14918
 
14631
14919
  **Properties:**
@@ -14633,10 +14921,10 @@ Composes `lr-data-grid` (the comparison table), `lr-rubric-form` (the review sur
14633
14921
  model?: string; promptVersion?: string; output: string; scores?: RubricValue; review?: RubricValue }`
14634
14922
  (exported here). One entry per model or prompt version being compared for a single evaluation
14635
14923
  example. `scores`/`review` use the same `RubricValue` shape `lr-rubric-form` itself reads and
14636
- writes, so a `DataGridColumn`'s `value()` accessor and the rubric form's own `value` binding read a
14924
+ writes, so a `TableColumn`'s `cell()` accessor and the rubric form's own `value` binding read a
14637
14925
  run's fields with no conversion
14638
- - `columns: DataGridColumn<EvalRunResult>[] = []` (attribute: false) — plain pass-through to
14639
- `lr-data-grid.columns`, not re-derived here
14926
+ - `columns: TableColumn<EvalRunResult>[] = []` (attribute: false) — plain pass-through to
14927
+ `lr-table.columns`, not re-derived here
14640
14928
  - `rubricKeys: RubricKey[] = []` (attribute: false) — plain pass-through to `lr-rubric-form.keys`
14641
14929
  - `selectedRunId: string = ''` (attribute `selected-run-id`) — the run open for review and the diff's
14642
14930
  **new** side; falls back to `runs[0]?.id` when empty