@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/web-types.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/web-types",
3
3
  "name": "@aceshooting/lyra-ui",
4
- "version": "5.2.0",
4
+ "version": "6.1.0",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -701,7 +701,7 @@
701
701
  },
702
702
  {
703
703
  "name": "preferred-mode",
704
- "description": "Manually prefers `'full'` or `'icon-only'` for the non-mobile breakpoint axis, while the\n`mobile-breakpoint` continues to be tracked automatically regardless — e.g. a user's manual\ncollapse toggle that should still yield to a genuinely too-narrow-for-any-inline-rail\nviewport. Only consulted while `mode` isn't force-pinned via its own accessor (see the class\ndoc) — that continues to take full priority, unchanged. Unset (the default, `null`)\nreproduces today's exact breakpoint-only behavior.\n\nType: `'full' | 'icon-only' | null | undefined`"
704
+ "description": "Manually prefers `'full'` or `'icon-only'` for the non-mobile breakpoint axis, while the\n`mobile-breakpoint` continues to be tracked automatically regardless — e.g. a user's manual\ncollapse toggle that should still yield to a genuinely too-narrow-for-any-inline-rail\nviewport. Only consulted while `mode` isn't force-pinned via its own accessor (see the class\ndoc) — that continues to take full priority, unchanged. Unset (the default, `null`)\nreproduces today's exact breakpoint-only behavior.\n\nType: `AppRailPreferredMode | null | undefined`"
705
705
  },
706
706
  {
707
707
  "name": "rail-width-px",
@@ -884,7 +884,12 @@
884
884
  },
885
885
  {
886
886
  "name": "view",
887
- "description": "Which slot is currently visible.\n\nType: `'preview' | 'code'` \nDefault: `'preview'`"
887
+ "description": "Which slot is currently visible.\n\nType: `ArtifactPanelView` \nDefault: `'preview'`",
888
+ "value": {
889
+ "type": [
890
+ "ArtifactPanelView"
891
+ ]
892
+ }
888
893
  }
889
894
  ]
890
895
  },
@@ -1368,7 +1373,7 @@
1368
1373
  },
1369
1374
  {
1370
1375
  "name": "lr-badge",
1371
- "description": "`<lr-badge>` — a compact status label.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | Badge content. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The badge surface. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-badge-background` (default: `var(--lr-color-surface)`) — The badge's background. Each non-neutral `variant` sets it to that variant's `-quiet` tint.\n- `--lr-badge-border` (default: `var(--lr-color-border)`) — The badge's border color. Each non-neutral `variant` sets it to that variant's loud color.\n- `--lr-badge-color` (default: `var(--lr-color-text)`) — The badge's text color. Each non-neutral `variant` sets it to that variant's loud color.\n- `--lr-badge-font-size` (default: `var(--lr-font-size-sm)`) — The badge's label font size. Each `size` sets it to that step's font size.\n- `--lr-badge-padding-inline` (default: `var(--lr-space-s)`) — The badge's inline padding. Each `size` sets it to that step's inline padding.\n- `--lr-badge-min-height` (default: `var(--lr-size-1-25rem)`) — The badge's minimum block size. Each `size` sets it to that step's minimum block size.",
1376
+ "description": "`<lr-badge>` — a compact status label.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | Badge content. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The badge surface. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-badge-background` (default: `var(--lr-color-surface)`) — The badge's background. Each non-neutral `variant` sets it to that variant's `-quiet` tint.\n- `--lr-badge-border` (default: `var(--lr-color-border)`) — The badge's border color. Each non-neutral `variant` sets it to that variant's loud color.\n- `--lr-badge-color` (default: `var(--lr-color-text)`) — The badge's text color. Each non-neutral `variant` sets it to that variant's loud color.\n- `--lr-badge-font-size` (default: `var(--lr-font-size-sm)`) — The badge's label font size. Each `size` sets it to that step's font size.\n- `--lr-badge-padding-inline` (default: `var(--lr-space-s)`) — The badge's inline padding. Each `size` sets it to that step's inline padding.\n- `--lr-badge-min-height` (default: `var(--lr-size-1-25rem)`) — The badge's minimum block size. Each `size` sets it to that step's minimum block size.\n- `--lr-badge-radius` (default: `var(--lr-radius-pill)`) — Corner radius of the badge surface. Does not vary by `size` tier.",
1372
1377
  "attributes": [
1373
1378
  {
1374
1379
  "name": "locale",
@@ -1732,7 +1737,12 @@
1732
1737
  "attributes": [
1733
1738
  {
1734
1739
  "name": "controller",
1735
- "description": "Type: `'agent' | 'user'` \nDefault: `'agent'`"
1740
+ "description": "Type: `BrowserFrameController` \nDefault: `'agent'`",
1741
+ "value": {
1742
+ "type": [
1743
+ "BrowserFrameController"
1744
+ ]
1745
+ }
1736
1746
  },
1737
1747
  {
1738
1748
  "name": "controls",
@@ -1763,7 +1773,12 @@
1763
1773
  },
1764
1774
  {
1765
1775
  "name": "status",
1766
- "description": "Type: `'idle' | 'connecting' | 'streaming' | 'stalled'` \nDefault: `'idle'`"
1776
+ "description": "Type: `BrowserFrameStatus` \nDefault: `'idle'`",
1777
+ "value": {
1778
+ "type": [
1779
+ "BrowserFrameStatus"
1780
+ ]
1781
+ }
1767
1782
  },
1768
1783
  {
1769
1784
  "name": "url",
@@ -1928,7 +1943,7 @@
1928
1943
  },
1929
1944
  {
1930
1945
  "name": "lr-button",
1931
- "description": "`<lr-button>` — a generic action-button primitive. Renders an internal native\n`<button part=\"base\">`. `type=\"submit\"`/`type=\"reset\"`\nare handled by this component itself via the host's own `closest('form')` — a shadow-internal\nnative `<button type=\"submit\">` does not participate in an ancestor light-DOM form's submission\non its own, since form-submitter semantics don't cross the shadow boundary.\n\nA host `aria-label` is forwarded to the internal button as a literal string (for an icon-only\nbutton with no visible label); external `aria-labelledby`/`aria-describedby` idrefs are not\ncopied across the shadow boundary.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | Default slot: the button's label content. |\n| `end` | Trailing icon/content, rendered after the label. |\n| `start` | Leading icon/content, rendered before the label. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The internal native `<button>`. |\n| `end` | The `end` slot wrapper. |\n| `label` | The default-slot label wrapper. |\n| `spinner` | The loading spinner, present only while `loading` is `true`. |\n| `start` | The `start` slot wrapper. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-button-width` (default: `100%`) — Inline size of the internal button. The host defaults it to `100%` so the native button follows the host's own width; override to `auto` (or any other value) for a compact inline composition.\n- `--lr-button-hover-brightness` (default: `1.08`) — `filter: brightness()` multiplier applied while hovering a non-disabled button.\n- `--lr-button-active-scale` (default: `0.9875`) — `transform: scale()` factor applied while a non-disabled button is pressed.\n- `--lr-button-spinner-duration` (default: `1s`) — Rotation period of the `loading` spinner.\n- `--lr-button-accent` (default: `var(--lr-color-text)`) — Text/glyph color for the chrome-less appearances (`outlined`, `plain`, `link`). Swapped per `variant` to that variant's semantic color.\n- `--lr-button-fill` (default: `var(--lr-color-surface)`) — Background of `appearance=\"filled\"`. Swapped per `variant` to that variant's semantic color.\n- `--lr-button-on-fill` (default: `var(--lr-color-text)`) — Text color on top of `--lr-button-fill`. Swapped per `variant` to that variant's `on-*` color.\n- `--lr-button-accent-fill` (default: `var(--lr-color-neutral)`) — Background of `appearance=\"accent\"` (and its border color). Swapped per `variant` to that variant's semantic color.\n- `--lr-button-accent-on-fill` (default: `var(--lr-color-on-neutral)`) — Text color on top of `--lr-button-accent-fill`. Swapped per `variant` to that variant's `on-*` color.\n- `--lr-button-border` (default: `var(--lr-color-border)`) — Border color of the internal button. Swapped per `variant` to that variant's semantic color.\n- `--lr-button-outlined-border` (default: `var(--lr-color-border-strong)`) — Border color of `appearance=\"outlined\"`, which overrides `--lr-button-border`.\n- `--lr-button-outlined-fill` (default: `transparent`) — Background of `appearance=\"outlined\"`. Transparent by default; set it to tint the button (e.g. a faint surface wash behind the outline) without a `::part(base)` rule. Like `--lr-button-quiet-*`, it is deliberately *not* swapped per `variant`. Note that the `:hover` `filter: brightness()` applies to whatever fill is set, so a tinted outlined button now visibly brightens on hover where a transparent one did not.\n- `--lr-button-quiet-border` (default: `var(--lr-color-border)`) — Border color of `appearance=\"quiet\"`.\n- `--lr-button-quiet-text` (default: `var(--lr-color-text-quiet)`) — Text color of `appearance=\"quiet\"`.\n- `--lr-button-size-2xs` (default: `var(--lr-size-1-25rem)`) — `min-block-size` at `size=\"2xs\"`.\n- `--lr-button-size-xs` (default: `var(--lr-size-1-5rem)`) — `min-block-size` at `size=\"xs\"`.\n- `--lr-button-size-s` (default: `var(--lr-size-1-875rem)`) — `min-block-size` at `size=\"s\"`. Matches `lr-input`/`lr-select`/`lr-combobox`'s own `size=\"s\"` control height.\n- `--lr-button-size-m` (default: `var(--lr-size-2-5rem)`) — `min-block-size` at `size=\"m\"`. Matches `lr-input`/`lr-select`/`lr-combobox`'s own default control height, so a default-size button sitting next to a default-size input/select/combobox in the same row lines up.\n- `--lr-button-size-l` (default: `var(--lr-size-3rem)`) — `min-block-size` at `size=\"l\"`. Matches `lr-input`/`lr-select`/`lr-combobox`'s own `size=\"l\"` control height.\n- `--lr-button-size-xl` (default: `var(--lr-size-3-5rem)`) — `min-block-size` at `size=\"xl\"`. Matches `lr-input`/`lr-select`/`lr-combobox`'s own `size=\"xl\"` control height.\n- `--lr-button-padding-block` (default: `var(--lr-space-xs)`) — Block padding of the internal button, re-assigned per `size` tier (the default is the `m` tier's value). Override it to retune a tier without a `::part(base)` rule; `appearance=\"link\"` ignores it (it renders with zero padding).\n- `--lr-button-padding-inline` (default: `var(--lr-space-m)`) — Inline padding of the internal button, re-assigned per `size` tier (the default is the `m` tier's value). `appearance=\"link\"` ignores it.\n- `--lr-button-font-size` (default: `var(--lr-font-size-m)`) — Font size of the internal button, re-assigned per `size` tier (the default is the `m` tier's value). `appearance=\"link\"` ignores it and inherits the ambient font instead.\n- `--lr-button-min-height` (default: `var(--lr-button-size-m)`) — The active tier's `min-block-size` floor. Re-assigned per `size` tier to that tier's own `--lr-button-size-*` token, and used as the fallback when `--lr-button-height` is unset.\n- `--lr-button-height` — Exact height of the internal button. **Undeclared by default** — so the button keeps the active tier's `min-block-size` floor and an `auto` height, exactly as before. Set it (e.g. to pin the button to a fixed toolbar row) to both floor *and* cap the height. Never declare it as `auto`: a declared value wins over the `var()` fallback arm and would make every tier's floor dead code. `appearance=\"link\"` ignores it.",
1946
+ "description": "`<lr-button>` — a generic action-button primitive. Renders an internal native\n`<button part=\"base\">`. `type=\"submit\"`/`type=\"reset\"`\nare handled by this component itself via the host's own `closest('form')` — a shadow-internal\nnative `<button type=\"submit\">` does not participate in an ancestor light-DOM form's submission\non its own, since form-submitter semantics don't cross the shadow boundary.\n\nA host `aria-label` is forwarded to the internal button as a literal string (for an icon-only\nbutton with no visible label); external `aria-labelledby`/`aria-describedby` idrefs are not\ncopied across the shadow boundary.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | Default slot: the button's label content. |\n| `end` | Trailing icon/content, rendered after the label. |\n| `start` | Leading icon/content, rendered before the label. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The internal native `<button>`. |\n| `end` | The `end` slot wrapper. |\n| `label` | The default-slot label wrapper. |\n| `spinner` | The loading spinner, present only while `loading` is `true`. |\n| `start` | The `start` slot wrapper. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-button-width` (default: `100%`) — Inline size of the internal button. The host defaults it to `100%` so the native button follows the host's own width; override to `auto` (or any other value) for a compact inline composition.\n- `--lr-button-hover-brightness` (default: `1.08`) — `filter: brightness()` multiplier applied while hovering a non-disabled button.\n- `--lr-button-active-scale` (default: `0.9875`) — `transform: scale()` factor applied while a non-disabled button is pressed.\n- `--lr-button-spinner-duration` (default: `1s`) — Rotation period of the `loading` spinner.\n- `--lr-button-accent` (default: `var(--lr-color-text)`) — Text/glyph color for the chrome-less appearances (`outlined`, `plain`, `link`). Swapped per `variant` to that variant's semantic color.\n- `--lr-button-fill` (default: `var(--lr-color-surface)`) — Background of `appearance=\"filled\"`. Swapped per `variant` to that variant's semantic color.\n- `--lr-button-on-fill` (default: `var(--lr-color-text)`) — Text color on top of `--lr-button-fill`. Swapped per `variant` to that variant's `on-*` color.\n- `--lr-button-accent-fill` (default: `var(--lr-color-neutral)`) — Background of `appearance=\"accent\"` (and its border color). Swapped per `variant` to that variant's semantic color.\n- `--lr-button-accent-on-fill` (default: `var(--lr-color-on-neutral)`) — Text color on top of `--lr-button-accent-fill`. Swapped per `variant` to that variant's `on-*` color.\n- `--lr-button-border` (default: `var(--lr-color-border)`) — Border color of the internal button. Swapped per `variant` to that variant's semantic color.\n- `--lr-button-outlined-border` (default: `var(--lr-color-border-strong)`) — Border color of `appearance=\"outlined\"`, which overrides `--lr-button-border`.\n- `--lr-button-outlined-fill` (default: `transparent`) — Background of `appearance=\"outlined\"`. Transparent by default; set it to tint the button (e.g. a faint surface wash behind the outline) without a `::part(base)` rule. Like `--lr-button-quiet-*`, it is deliberately *not* swapped per `variant`. Note that the `:hover` `filter: brightness()` applies to whatever fill is set, so a tinted outlined button now visibly brightens on hover where a transparent one did not.\n- `--lr-button-quiet-border` (default: `var(--lr-color-border)`) — Border color of `appearance=\"quiet\"`.\n- `--lr-button-quiet-text` (default: `var(--lr-color-text-quiet)`) — Text color of `appearance=\"quiet\"`.\n- `--lr-button-size-2xs` (default: `var(--lr-size-1-25rem)`) — `min-block-size` at `size=\"2xs\"`.\n- `--lr-button-size-xs` (default: `var(--lr-size-1-5rem)`) — `min-block-size` at `size=\"xs\"`.\n- `--lr-button-size-s` (default: `var(--lr-size-1-875rem)`) — `min-block-size` at `size=\"s\"`. Matches `lr-input`/`lr-select`/`lr-combobox`'s own `size=\"s\"` control height.\n- `--lr-button-size-m` (default: `var(--lr-size-2-5rem)`) — `min-block-size` at `size=\"m\"`. Matches `lr-input`/`lr-select`/`lr-combobox`'s own default control height, so a default-size button sitting next to a default-size input/select/combobox in the same row lines up.\n- `--lr-button-size-l` (default: `var(--lr-size-3rem)`) — `min-block-size` at `size=\"l\"`. Matches `lr-input`/`lr-select`/`lr-combobox`'s own `size=\"l\"` control height.\n- `--lr-button-size-xl` (default: `var(--lr-size-3-5rem)`) — `min-block-size` at `size=\"xl\"`. Matches `lr-input`/`lr-select`/`lr-combobox`'s own `size=\"xl\"` control height.\n- `--lr-button-padding-block` (default: `var(--lr-space-xs)`) — Block padding of the internal button, re-assigned per `size` tier (the default is the `m` tier's value). Override it to retune a tier without a `::part(base)` rule; `appearance=\"link\"` ignores it (it renders with zero padding).\n- `--lr-button-padding-inline` (default: `var(--lr-space-m)`) — Inline padding of the internal button, re-assigned per `size` tier (the default is the `m` tier's value). `appearance=\"link\"` ignores it.\n- `--lr-button-font-size` (default: `var(--lr-font-size-m)`) — Font size of the internal button, re-assigned per `size` tier (the default is the `m` tier's value). `appearance=\"link\"` ignores it and inherits the ambient font instead.\n- `--lr-button-min-height` (default: `var(--lr-button-size-m)`) — The active tier's `min-block-size` floor. Re-assigned per `size` tier to that tier's own `--lr-button-size-*` token, and used as the fallback when `--lr-button-height` is unset.\n- `--lr-button-height` — Exact height of the internal button. **Undeclared by default** — so the button keeps the active tier's `min-block-size` floor and an `auto` height, exactly as before. Set it (e.g. to pin the button to a fixed toolbar row) to both floor *and* cap the height. Never declare it as `auto`: a declared value wins over the `var()` fallback arm and would make every tier's floor dead code. `appearance=\"link\"` ignores it.\n- `--lr-button-gap` (default: `var(--lr-space-2xs)`) — Gap between the icon/label and any slotted content in the internal button. Unlike the size knobs above it does not vary by `size` tier. Override it to retune without a `::part(base)` rule.\n- `--lr-button-radius` (default: `var(--lr-radius)`) — Corner radius of the internal button. Does not vary by `size` tier. `appearance=\"link\"` ignores it (it renders with zero radius).",
1932
1947
  "attributes": [
1933
1948
  {
1934
1949
  "name": "appearance",
@@ -2070,7 +2085,12 @@
2070
2085
  },
2071
2086
  {
2072
2087
  "name": "view",
2073
- "description": "Type: `'month' | 'agenda'` \nDefault: `'month'`"
2088
+ "description": "Type: `CalendarView` \nDefault: `'month'`",
2089
+ "value": {
2090
+ "type": [
2091
+ "CalendarView"
2092
+ ]
2093
+ }
2074
2094
  },
2075
2095
  {
2076
2096
  "name": "view-date"
@@ -2507,6 +2527,15 @@
2507
2527
  ]
2508
2528
  }
2509
2529
  },
2530
+ {
2531
+ "name": "disabled",
2532
+ "description": "Type: `boolean`",
2533
+ "value": {
2534
+ "type": [
2535
+ "boolean"
2536
+ ]
2537
+ }
2538
+ },
2510
2539
  {
2511
2540
  "name": "enterkeyhint",
2512
2541
  "description": "Type: `string` \nDefault: `''`",
@@ -2552,6 +2581,15 @@
2552
2581
  ]
2553
2582
  }
2554
2583
  },
2584
+ {
2585
+ "name": "name",
2586
+ "description": "Type: `string`",
2587
+ "value": {
2588
+ "type": [
2589
+ "string"
2590
+ ]
2591
+ }
2592
+ },
2555
2593
  {
2556
2594
  "name": "placeholder",
2557
2595
  "description": "Type: `string` \nDefault: `''`",
@@ -2561,6 +2599,15 @@
2561
2599
  ]
2562
2600
  }
2563
2601
  },
2602
+ {
2603
+ "name": "required",
2604
+ "description": "Type: `boolean`",
2605
+ "value": {
2606
+ "type": [
2607
+ "boolean"
2608
+ ]
2609
+ }
2610
+ },
2564
2611
  {
2565
2612
  "name": "spellcheck",
2566
2613
  "description": "Forwarded to the internal `<textarea>`'s own `spellcheck`. Defaults to `true`, matching the\nnative element's own default. Uses trueDefaultBooleanConverter rather than Lit's\ndefault presence-based `type: Boolean` handling, so a plain-HTML consumer with no way to write\na `.spellcheck` property binding can still turn this off with `spellcheck=\"false\"`; a Lit\ntemplate can do the same with either that attribute string or a `.spellcheck=${false}`\nproperty binding.\n\nType: `boolean` \nDefault: `true`",
@@ -2958,7 +3005,7 @@
2958
3005
  },
2959
3006
  {
2960
3007
  "name": "lr-chip",
2961
- "description": "`<lr-chip>` — a small, content-agnostic pill for a short label: a tag, an\nactive-filter/scope indicator, etc. Distinct from `<lr-attachment-chip>`\n(specifically file-shaped, with a thumbnail/size/upload-progress) — this\none carries no domain assumptions at all, just a label and an optional\nleading icon/dot.\n\n`tone` tints the whole pill using the same loud-color-on-quiet-tint\nconvention `<lr-tool-call-chip>`/`<lr-citation-badge>` already\nestablish for status coloring: background is the tone's `-quiet` tint,\ntext/icon is the tone's loud color. `neutral` (the default) has no\ndedicated token pair of its own, so it falls back to a plain\nbordered-surface look — the same \"no signal\" treatment\n`<lr-citation-badge>`'s `default` status and `<lr-tool-call-chip>`'s\n`pending` status already use.\n\nThis is a controlled component: clicking the remove (×) button only fires\n`lr-remove` — the chip never removes itself from the DOM on its own\ninteraction, the same contract `<lr-attachment-chip>`/\n`<lr-conversation-item>` already follow. A consumer owns the underlying\nlist and decides whether/how the click actually removes anything.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | The chip's label content. |\n| `icon` | Optional leading icon or status dot. Nothing is reserved for it (no extra gap) when left empty. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The pill's root container. |\n| `icon` | Wrapper around the `icon` slot. Hidden entirely while empty. |\n| `label` | Wrapper around the default slot. |\n| `remove-button` | The remove (×) affordance, only rendered while `removable`. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-chip-accent` (default: `var(--lr-color-text)`) — Text/icon color of the pill. Each `tone` sets it to that tone's loud color.\n- `--lr-chip-bg` (default: `var(--lr-color-surface)`) — Background of the pill. Each `tone` sets it to that tone's `-quiet` tint.\n- `--lr-chip-border` (default: `var(--lr-color-border)`) — Border color of the pill. Every non-neutral `tone` sets it to `transparent`.\n- `--lr-chip-font-size` (default: `var(--lr-font-size-sm)`) — Label font size. Each `size` sets it to that step's font size.\n- `--lr-chip-gap` (default: `var(--lr-space-xs)`) — Gap between the icon, label, and remove button. Each `size` sets it to that step's gap.\n- `--lr-chip-icon-size` (default: `var(--lr-font-size-sm)`) — Font size of the `icon` slot wrapper. Each `size` sets it to that step's icon size.\n- `--lr-chip-padding-block` (default: `var(--lr-size-0-25rem)`) — Block padding of the pill. Each `size` sets it to that step's block padding.\n- `--lr-chip-padding-inline` (default: `var(--lr-space-s)`) — Inline padding of the pill. Each `size` sets it to that step's inline padding.\n- `--lr-chip-min-height` (default: `var(--lr-size-1-5rem)`) — Minimum block size of an interactive (`removable`/`toggleable`) chip's tap target. `size` keeps `2xs`/`xs`/`s`/`m` at the `1.5rem` (24px) WCAG 2.2 SC 2.5.8 minimum and raises `l` to `var(--lr-size-1-75rem)` and `xl` to `var(--lr-size-2rem)`. Non-interactive display chips are unaffected by this floor.\n- `--lr-chip-height` — Exact block size of the chip. Undeclared by default, so the chip grows to fit its content (floored by `--lr-chip-min-height` when interactive). Set it to pin a fixed height. A value below the 24px interactive target is for non-interactive chips only.\n- `--lr-chip-pressed-bg` (default: `var(--lr-chip-bg)`) — Background while a toggleable chip is selected, independently themeable from its resting background.\n- `--lr-chip-pressed-border` (default: `var(--lr-chip-accent)`) — Border color while a toggleable chip is selected, independently themeable from the label/icon color.",
3008
+ "description": "`<lr-chip>` — a small, content-agnostic pill for a short label: a tag, an\nactive-filter/scope indicator, etc. Distinct from `<lr-attachment-chip>`\n(specifically file-shaped, with a thumbnail/size/upload-progress) — this\none carries no domain assumptions at all, just a label and an optional\nleading icon/dot.\n\n`tone` tints the whole pill using the same loud-color-on-quiet-tint\nconvention `<lr-tool-call-chip>`/`<lr-citation-badge>` already\nestablish for status coloring: background is the tone's `-quiet` tint,\ntext/icon is the tone's loud color. `neutral` (the default) has no\ndedicated token pair of its own, so it falls back to a plain\nbordered-surface look — the same \"no signal\" treatment\n`<lr-citation-badge>`'s `default` status and `<lr-tool-call-chip>`'s\n`pending` status already use.\n\nThis is a controlled component: clicking the remove (×) button only fires\n`lr-remove` — the chip never removes itself from the DOM on its own\ninteraction, the same contract `<lr-attachment-chip>`/\n`<lr-conversation-item>` already follow. A consumer owns the underlying\nlist and decides whether/how the click actually removes anything.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | The chip's label content. |\n| `icon` | Optional leading icon or status dot. Nothing is reserved for it (no extra gap) when left empty. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The pill's root container. |\n| `icon` | Wrapper around the `icon` slot. Hidden entirely while empty. |\n| `label` | Wrapper around the default slot. |\n| `remove-button` | The remove (×) affordance, only rendered while `removable`. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-chip-accent` (default: `var(--lr-color-text)`) — Text/icon color of the pill. Each `tone` sets it to that tone's loud color.\n- `--lr-chip-bg` (default: `var(--lr-color-surface)`) — Background of the pill. Each `tone` sets it to that tone's `-quiet` tint.\n- `--lr-chip-border` (default: `var(--lr-color-border)`) — Border color of the pill. Every non-neutral `tone` sets it to `transparent`.\n- `--lr-chip-font-size` (default: `var(--lr-font-size-sm)`) — Label font size. Each `size` sets it to that step's font size.\n- `--lr-chip-gap` (default: `var(--lr-space-xs)`) — Gap between the icon, label, and remove button. Each `size` sets it to that step's gap.\n- `--lr-chip-radius` (default: `var(--lr-radius-pill)`) — Corner radius of the pill and of the remove button, kept in sync so retuning one retunes both. Does not vary by `size` tier.\n- `--lr-chip-icon-size` (default: `var(--lr-font-size-sm)`) — Font size of the `icon` slot wrapper. Each `size` sets it to that step's icon size.\n- `--lr-chip-padding-block` (default: `var(--lr-size-0-25rem)`) — Block padding of the pill. Each `size` sets it to that step's block padding.\n- `--lr-chip-padding-inline` (default: `var(--lr-space-s)`) — Inline padding of the pill. Each `size` sets it to that step's inline padding.\n- `--lr-chip-min-height` (default: `var(--lr-size-1-5rem)`) — Minimum block size of an interactive (`removable`/`toggleable`) chip's tap target. `size` keeps `3xs`/`2xs`/`xs`/`s`/`m` at the `1.5rem` (24px) WCAG 2.2 SC 2.5.8 minimum and raises `l` to `var(--lr-size-1-75rem)` and `xl` to `var(--lr-size-2rem)`. Non-interactive display chips are unaffected by this floor.\n- `--lr-chip-height` — Exact block size of the chip. Undeclared by default, so the chip grows to fit its content (floored by `--lr-chip-min-height` when interactive). Set it to pin a fixed height. A value below the 24px interactive target is for non-interactive chips only.\n- `--lr-chip-pressed-bg` (default: `var(--lr-chip-bg)`) — Background while a toggleable chip is selected, independently themeable from its resting background.\n- `--lr-chip-pressed-border` (default: `var(--lr-chip-accent)`) — Border color while a toggleable chip is selected, independently themeable from the label/icon color.",
2962
3009
  "attributes": [
2963
3010
  {
2964
3011
  "name": "locale",
@@ -3430,6 +3477,15 @@
3430
3477
  ]
3431
3478
  }
3432
3479
  },
3480
+ {
3481
+ "name": "disabled",
3482
+ "description": "Type: `boolean`",
3483
+ "value": {
3484
+ "type": [
3485
+ "boolean"
3486
+ ]
3487
+ }
3488
+ },
3433
3489
  {
3434
3490
  "name": "error-text",
3435
3491
  "description": "Type: `string` \nDefault: `''`",
@@ -3484,6 +3540,15 @@
3484
3540
  ]
3485
3541
  }
3486
3542
  },
3543
+ {
3544
+ "name": "name",
3545
+ "description": "Type: `string`",
3546
+ "value": {
3547
+ "type": [
3548
+ "string"
3549
+ ]
3550
+ }
3551
+ },
3487
3552
  {
3488
3553
  "name": "placeholder",
3489
3554
  "description": "Type: `string` \nDefault: `''`",
@@ -3502,6 +3567,15 @@
3502
3567
  ]
3503
3568
  }
3504
3569
  },
3570
+ {
3571
+ "name": "required",
3572
+ "description": "Type: `boolean`",
3573
+ "value": {
3574
+ "type": [
3575
+ "boolean"
3576
+ ]
3577
+ }
3578
+ },
3505
3579
  {
3506
3580
  "name": "resize",
3507
3581
  "description": "Type: `'none' | 'both' | 'horizontal' | 'vertical'` \nDefault: `'both'`"
@@ -3532,7 +3606,7 @@
3532
3606
  },
3533
3607
  {
3534
3608
  "name": "lr-color-picker",
3535
- "description": "`<lr-color-picker>` — a form-associated native color picker with label, hint and error chrome.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `error` | Custom validation-error content. |\n| `hint` | Supporting text. |\n| `label` | Custom label content. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `error` | The validation message. |\n| `form-control` | The field wrapper. |\n| `form-control-label` | The label. Also carries the `label` part token for back-compat. |\n| `hint` | Supporting text. |\n| `input` | The native color input. |\n| `label` | Alias of `form-control-label`, kept for back-compat. |",
3609
+ "description": "`<lr-color-picker>` — a form-associated native color picker with label, hint and error chrome.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `error` | Custom validation-error content. |\n| `hint` | Supporting text. |\n| `label` | Custom label content. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `error` | The validation message. |\n| `form-control` | The field wrapper. |\n| `form-control-label` | The label. Also carries the `label` part token for back-compat. |\n| `hint` | Supporting text. |\n| `input` | The native color input. |\n| `label` | Alias of `form-control-label`, kept for back-compat. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-color-picker-swatch-size` — The swatch's inline and block size, scaled by `size`.",
3536
3610
  "attributes": [
3537
3611
  {
3538
3612
  "name": "aria-label",
@@ -3543,6 +3617,15 @@
3543
3617
  ]
3544
3618
  }
3545
3619
  },
3620
+ {
3621
+ "name": "disabled",
3622
+ "description": "Type: `boolean`",
3623
+ "value": {
3624
+ "type": [
3625
+ "boolean"
3626
+ ]
3627
+ }
3628
+ },
3546
3629
  {
3547
3630
  "name": "error-text",
3548
3631
  "description": "Type: `string` \nDefault: `''`",
@@ -3578,12 +3661,39 @@
3578
3661
  "string"
3579
3662
  ]
3580
3663
  }
3664
+ },
3665
+ {
3666
+ "name": "name",
3667
+ "description": "Type: `string`",
3668
+ "value": {
3669
+ "type": [
3670
+ "string"
3671
+ ]
3672
+ }
3673
+ },
3674
+ {
3675
+ "name": "required",
3676
+ "description": "Type: `boolean`",
3677
+ "value": {
3678
+ "type": [
3679
+ "boolean"
3680
+ ]
3681
+ }
3682
+ },
3683
+ {
3684
+ "name": "size",
3685
+ "description": "Visual size — same `2xs`–`xl` scale as `lr-input`/`lr-select`'s own `size`.\n\nType: `LyraColorPickerSize` \nDefault: `'m'`",
3686
+ "value": {
3687
+ "type": [
3688
+ "LyraColorPickerSize"
3689
+ ]
3690
+ }
3581
3691
  }
3582
3692
  ]
3583
3693
  },
3584
3694
  {
3585
3695
  "name": "lr-combobox",
3586
- "description": "`<lr-combobox>` — a filterable single/multi select that combines a text\ninput with a listbox. Mirrors the core `<wa-combobox>` API under `lr-`.\n\nOptions are `<lr-option value>` children. Emits native-style `change`/`input`\n(like Web Awesome) plus `lr-show`/`lr-hide`/`lr-clear`.\nStandard size tiers share their outer control height with sibling Lyra controls; the decorative\nexpand icon scales inside that allocation without creating an independent action target.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | `<lr-option>` elements. |\n| `end` | Adornment after the filter input and the built-in clear action, and before the expand icon — so consumer content never sits outboard of the dropdown chevron. |\n| `error` | Custom error content. |\n| `hint` | Custom hint content. |\n| `label` | Custom label content. |\n| `start` | Adornment at the inline-start of the trigger row, before the selected-value tags and the filter input. Slotted content is decorative chrome, not an option: `collectOptions()` only ever collects `<lr-option>` elements from the default slot. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `clear-button` | The clear button. |\n| `combobox` | The input container (positioning anchor). |\n| `combobox-input` | The text input. |\n| `end` | Wrapper around the `end` adornment slot; `hidden` while nothing is slotted. |\n| `error` | The error message. |\n| `expand-icon` | The dropdown indicator. |\n| `form-control` | The outer wrapper around label, combobox, listbox, error and hint. |\n| `form-control-label` | The `<label>` element. |\n| `hint` | The hint message. |\n| `listbox` | The options popover. |\n| `option` | An option row. |\n| `option-badge` | An async option row's optional trailing metadata badge. |\n| `option-dot` | An option row's leading status dot (when `dot-color` is set). |\n| `option-icon` | An async option row's optional decorative leading visual. |\n| `option-label` | An option row's label/sub wrapper. |\n| `option-overflow` | The \"+N more\" indicator shown when rows are capped by `maxRender`. |\n| `option-sub` | An option row's secondary line (when `sub` is set). |\n| `start` | Wrapper around the `start` adornment slot; `hidden` while nothing is slotted. |\n| `tag` | An individual selected tag. |\n| `tag__remove-button` | A tag's remove button. |\n| `tags` | The multi-select tag container. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-combobox-trigger-padding` — Padding inside the input container.\n- `--lr-combobox-trigger-min-height` — Minimum input-container block size, scaled by `size`.\n- `--lr-combobox-trigger-height` — Exact input-container height. Unset by default, which leaves `--lr-combobox-trigger-min-height` as a floor only; set it to a length to both floor and cap the row (e.g. to pixel-match `<lr-input>`/`<lr-select>` in the same toolbar). Because it is never declared by the component itself, it can be set from an ancestor or an outer-tree rule as well as inline on the element. Intended for a single-row combobox: in `multiple` mode a tag row long enough to wrap overflows the pinned box visibly (nothing is clipped or made unreachable), so leave it unset there.\n- `--lr-combobox-font-size` — Input text size.\n- `--lr-combobox-tag-padding` — Selected-tag padding.\n- `--lr-combobox-tag-font-size` — Selected-tag text size.\n- `--lr-combobox-expand-size` — Decorative expand-icon box size, scaled by `size`.\n- `--lr-combobox-option-active-bg` (default: `var(--lr-color-brand-quiet)`) — Background of a hovered or keyboard-active option row.",
3696
+ "description": "`<lr-combobox>` — a filterable single/multi select that combines a text\ninput with a listbox. Mirrors the core `<wa-combobox>` API under `lr-`.\n\nOptions are `<lr-option value>` children. Emits native-style `change`/`input`\n(like Web Awesome) plus `lr-show`/`lr-hide`/`lr-clear`.\nStandard size tiers share their outer control height with sibling Lyra controls; the decorative\nexpand icon scales inside that allocation without creating an independent action target.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | `<lr-option>` elements. |\n| `end` | Adornment after the filter input and the built-in clear action, and before the expand icon — so consumer content never sits outboard of the dropdown chevron. |\n| `error` | Custom error content. |\n| `hint` | Custom hint content. |\n| `label` | Custom label content. |\n| `start` | Adornment at the inline-start of the trigger row, before the selected-value tags and the filter input. Slotted content is decorative chrome, not an option: `collectOptions()` only ever collects `<lr-option>` elements from the default slot. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `clear-button` | The clear button. |\n| `combobox` | The input container (positioning anchor). |\n| `combobox-input` | The text input. |\n| `end` | Wrapper around the `end` adornment slot; `hidden` while nothing is slotted. |\n| `error` | The error message. |\n| `expand-icon` | The dropdown indicator. |\n| `form-control` | The outer wrapper around label, combobox, listbox, error and hint. |\n| `form-control-label` | The `<label>` element. |\n| `hint` | The hint message. |\n| `listbox` | The options popover. |\n| `option` | An option row. |\n| `option-badge` | An async option row's optional trailing metadata badge. |\n| `option-dot` | An option row's leading status dot (when `dot-color` is set). |\n| `option-icon` | An async option row's optional decorative leading visual. |\n| `option-label` | An option row's label/sub wrapper. |\n| `option-overflow` | The \"+N more\" indicator shown when rows are capped by `maxRender`. |\n| `option-sub` | An option row's secondary line (when `sub` is set). |\n| `start` | Wrapper around the `start` adornment slot; `hidden` while nothing is slotted. |\n| `tag` | An individual selected tag. |\n| `tag__remove-button` | A tag's remove button. |\n| `tags` | The multi-select tag container. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-combobox-trigger-padding` — Padding inside the input container.\n- `--lr-combobox-trigger-min-height` — Minimum input-container block size, scaled by `size`.\n- `--lr-combobox-trigger-height` — Exact input-container height. Unset by default, which leaves `--lr-combobox-trigger-min-height` as a floor only; set it to a length to both floor and cap the row (e.g. to pixel-match `<lr-input>`/`<lr-select>` in the same toolbar). Because it is never declared by the component itself, it can be set from an ancestor or an outer-tree rule as well as inline on the element. Intended for a single-row combobox: in `multiple` mode a tag row long enough to wrap overflows the pinned box visibly (nothing is clipped or made unreachable), so leave it unset there.\n- `--lr-combobox-font-size` — Input text size.\n- `--lr-combobox-tag-padding` — Selected-tag padding.\n- `--lr-combobox-tag-font-size` — Selected-tag text size.\n- `--lr-combobox-expand-size` — Decorative expand-icon box size, scaled by `size`.\n- `--lr-combobox-gap` (default: `var(--lr-space-xs)`) — Gap between the start/end adornments, tags, and filter input inside the trigger row. Unlike the size knobs above it does not vary by `size` tier. Override it to retune without a `::part(combobox)` rule.\n- `--lr-combobox-radius` (default: `var(--lr-radius)`) — Corner radius of the trigger row (`[part='combobox']`). Does not vary by `size` tier.\n- `--lr-combobox-option-active-bg` (default: `var(--lr-color-brand-quiet)`) — Background of a hovered or keyboard-active option row.",
3587
3697
  "attributes": [
3588
3698
  {
3589
3699
  "name": "autocapitalize",
@@ -3776,7 +3886,7 @@
3776
3886
  },
3777
3887
  {
3778
3888
  "name": "size",
3779
- "description": "Visual size — same `xs`–`xl` scale as `lr-select`'s `size`.\n\nType: `LyraComboboxSize` \nDefault: `'m'`",
3889
+ "description": "Visual size — same `2xs`–`xl` scale as `lr-select`'s `size`.\n\nType: `LyraComboboxSize` \nDefault: `'m'`",
3780
3890
  "value": {
3781
3891
  "type": [
3782
3892
  "LyraComboboxSize"
@@ -4053,7 +4163,7 @@
4053
4163
  },
4054
4164
  {
4055
4165
  "name": "lr-confirm-bar",
4056
- "description": "`<lr-confirm-bar>` — an inline, non-modal approve/deny block for one proposed action: the\nin-flow sibling of `<lr-tool-approval-dialog>` for confirmations that should sit in the\ntranscript instead of hijacking focus. Same `lr-approve`/`lr-deny` event shapes as the dialog,\nand the same `toolApprovalHeading`/`toolApprovalArgsLabel`/`deny`/`approve` localization keys, so\nthe two always translate in lockstep.\n\nNon-modal by contract: no focus trap, no scroll lock, no Escape/backdrop semantics, and it never\nsteals focus when it appears in the transcript. DOM and tab order put Deny before Approve (the\ndialog's safe-action-first rationale). On activation, focus moves synchronously to `[part=\"status\"]`\n(an always-rendered, `tabindex=\"-1\"` element) *before* the Deny/Approve buttons unmount, so focus\nnever has a gap where it would otherwise fall back to `<body>`.\n\nNo argument editing (escalate to `<lr-tool-approval-dialog>`'s `editable` when edit-before-approve\nmatters); no blocking/modality guarantee (a user can scroll past); no decision persistence or\n\"remember choice\" logic (the `footer` slot + host own that).\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | Supplementary body content between the heading and the actions (e.g. a `lr-diff-view` of the proposed change). |\n| `footer` | Extra content at the start of the action row (e.g. a \"remember this choice\" checkbox), mirroring `lr-tool-approval-dialog`'s own `footer` slot. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `approve-button` | Named identically to the dialog's part. |\n| `args` | The `lr-details` + `lr-json-viewer` wrapper. Only rendered when `args` is defined. |\n| `base` | The root (`role=\"group\"`). |\n| `body` | The default-slot wrapper. |\n| `deny-button` | Named identically to the dialog's part. |\n| `footer` | The action row. |\n| `heading` | The heading. |\n| `status` | The decided-state text. Always present in the DOM (`tabindex=\"-1\"`) so focus has a stable, synchronous landing spot on activation. |\n| `tool-name` | The tool-name span within the heading. Only rendered when `heading` is unset. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-confirm-bar-compact-padding` (default: `0`) — Padding of `[part='base']` while `compact`. Accepts any padding shorthand.\n- `--lr-confirm-bar-compact-gap` (default: `var(--lr-space-s)`) — Gap between the row's items while `compact`.\n- `--lr-confirm-bar-compact-border` (default: `none`) — Border of `[part='base']` while `compact`. Accepts any `border` shorthand.\n- `--lr-confirm-bar-compact-radius` (default: `0`) — Border radius of `[part='base']` while `compact` (only visible once `--lr-confirm-bar-compact-border`/`-background` are set).\n- `--lr-confirm-bar-compact-background` (default: `transparent`) — Background of `[part='base']` while `compact`.",
4166
+ "description": "`<lr-confirm-bar>` — an inline, non-modal approve/deny block for one proposed action: the\nin-flow sibling of `<lr-tool-approval-dialog>` for confirmations that should sit in the\ntranscript instead of hijacking focus. Same `lr-approve`/`lr-deny` event shapes as the dialog,\nand the same `toolApprovalHeading`/`toolApprovalArgsLabel`/`deny`/`approve` localization keys, so\nthe two always translate in lockstep.\n\nNon-modal by contract: no focus trap, no scroll lock, no Escape/backdrop semantics, and it never\nsteals focus when it appears in the transcript. DOM and tab order put Deny before Approve (the\ndialog's safe-action-first rationale). On activation, focus moves synchronously to `[part=\"status\"]`\n(an always-rendered, `tabindex=\"-1\"` element) *before* the Deny/Approve buttons unmount, so focus\nnever has a gap where it would otherwise fall back to `<body>`.\n\nNo argument editing (escalate to `<lr-tool-approval-dialog>`'s `editable` when edit-before-approve\nmatters); no blocking/modality guarantee (a user can scroll past); no decision persistence or\n\"remember choice\" logic (the `footer` slot + host own that).\n\nDeny/Approve are `<lr-button>`s (`variant=\"neutral\"`/`\"brand\"`, `\"danger\"` under `tone=\"danger\"`),\nre-exporting `lr-button`'s own `base`/`label`/`start`/`end`/`spinner` parts under\n`{deny,approve}-button-{base,label,start,end,spinner}` so `--lr-button-*` theming and a consumer's\nexisting `lr-button` style fragments reach them like every other button in an app. An\n`lr-approve`/`lr-deny` listener can call `preventDefault()` to keep the decision open while its own\nasync work (e.g. a network call) is in flight: `pending` is set to the decision being made, showing\n`loading` on that button and `disabled` on the other, until the host finalizes by setting `.decision`\nor bounces back by clearing `.pending` to `null`.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | Supplementary body content between the heading and the actions (e.g. a `lr-diff-view` of the proposed change). |\n| `footer` | Extra content at the start of the action row (e.g. a \"remember this choice\" checkbox), mirroring `lr-tool-approval-dialog`'s own `footer` slot. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `approve-button` | The built-in Approve `<lr-button>`. Named identically to the dialog's part. |\n| `approve-button-base` | Forwarded from the internal Approve `<lr-button>`'s own `base` part. |\n| `approve-button-end` | Forwarded from the internal Approve `<lr-button>`'s own `end` part. |\n| `approve-button-label` | Forwarded from the internal Approve `<lr-button>`'s own `label` part. |\n| `approve-button-spinner` | Forwarded from the internal Approve `<lr-button>`'s own `spinner` part, present only while `pending` is `'approved'`. |\n| `approve-button-start` | Forwarded from the internal Approve `<lr-button>`'s own `start` part. |\n| `args` | The `lr-details` + `lr-json-viewer` wrapper. Only rendered when `args` is defined. |\n| `base` | The root (`role=\"group\"`). |\n| `body` | The default-slot wrapper. |\n| `deny-button` | The built-in Deny `<lr-button>`. Named identically to the dialog's part. |\n| `deny-button-base` | Forwarded from the internal Deny `<lr-button>`'s own `base` part. |\n| `deny-button-end` | Forwarded from the internal Deny `<lr-button>`'s own `end` part. |\n| `deny-button-label` | Forwarded from the internal Deny `<lr-button>`'s own `label` part. |\n| `deny-button-spinner` | Forwarded from the internal Deny `<lr-button>`'s own `spinner` part, present only while `pending` is `'denied'`. |\n| `deny-button-start` | Forwarded from the internal Deny `<lr-button>`'s own `start` part. |\n| `footer` | The action row. |\n| `heading` | The heading. |\n| `status` | The decided-state text. Always present in the DOM (`tabindex=\"-1\"`) so focus has a stable, synchronous landing spot on activation. |\n| `tool-name` | The tool-name span within the heading. Only rendered when `heading` is unset. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-confirm-bar-compact-padding` (default: `0`) — Padding of `[part='base']` while `compact`. Accepts any padding shorthand.\n- `--lr-confirm-bar-compact-gap` (default: `var(--lr-space-s)`) — Gap between the row's items while `compact`.\n- `--lr-confirm-bar-compact-border` (default: `none`) — Border of `[part='base']` while `compact`. Accepts any `border` shorthand.\n- `--lr-confirm-bar-compact-radius` (default: `0`) — Border radius of `[part='base']` while `compact` (only visible once `--lr-confirm-bar-compact-border`/`-background` are set).\n- `--lr-confirm-bar-compact-background` (default: `transparent`) — Background of `[part='base']` while `compact`.",
4057
4167
  "attributes": [
4058
4168
  {
4059
4169
  "name": "compact",
@@ -4091,6 +4201,15 @@
4091
4201
  ]
4092
4202
  }
4093
4203
  },
4204
+ {
4205
+ "name": "pending",
4206
+ "description": "Which decision is awaiting host resolution, while an lr-approve/lr-deny listener has called\npreventDefault(). Host-writable: set back to null to bounce back to the undecided state (e.g.\non failure, so the user can retry), or set `decision` to finalize.\n\nType: `ConfirmBarDecision` \nDefault: `null`",
4207
+ "value": {
4208
+ "type": [
4209
+ "ConfirmBarDecision"
4210
+ ]
4211
+ }
4212
+ },
4094
4213
  {
4095
4214
  "name": "tone",
4096
4215
  "description": "Token-mapped emphasis for destructive proposals.\n\nType: `ConfirmBarTone` \nDefault: `'neutral'`",
@@ -4239,7 +4358,7 @@
4239
4358
  },
4240
4359
  {
4241
4360
  "name": "lr-control-group",
4242
- "description": "`<lr-control-group>` — a responsive layout primitive for a row of mixed form\ncontrols and action buttons (e.g. a segmented metric switcher beside a compact\nselect and an export button in a dashboard toolbar). Unlike `<lr-button-group>`\n(a uniform-height row of `<lr-button>`s that stretches every child to the row's\nfull height), this centers children of differing intrinsic heights and does not\nassume any particular child type.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | Form controls, buttons, or any other action content. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The group wrapper (`role=\"group\"`). |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-control-group-gap` (default: `var(--lr-space-xs)`) — Gap between grouped controls.",
4361
+ "description": "`<lr-control-group>` — a responsive layout primitive for a row of mixed form\ncontrols and action buttons (e.g. a segmented metric switcher beside a compact\nselect and an export button in a dashboard toolbar). Unlike `<lr-button-group>`\n(a uniform-height row of `<lr-button>`s that stretches every child to the row's\nfull height), this centers children of differing intrinsic heights and does not\nassume any particular child type.\n\n`container-type: inline-size` (needed for the `@container` breakpoint below) is opt-in via\n`responsive`, not automatic: unconditionally applying it made the group collapse to 0 inline\nsize whenever it sat as an ordinary flex-basis:auto child of a shrink-to-fit flex row -- exactly\nthis component's own toolbar-row use case. Set `responsive` when this group's own size instead\ncomes from a percentage width, grid track, or block-level parent.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | Form controls, buttons, or any other action content. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The group wrapper (`role=\"group\"`). |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-control-group-gap` (default: `var(--lr-space-xs)`) — Gap between grouped controls.",
4243
4362
  "attributes": [
4244
4363
  {
4245
4364
  "name": "label",
@@ -4258,6 +4377,15 @@
4258
4377
  "string"
4259
4378
  ]
4260
4379
  }
4380
+ },
4381
+ {
4382
+ "name": "responsive",
4383
+ "description": "Opts into the group's own `@container` narrow-allocation breakpoint (see the class doc) by\nmaking the host a CSS size-query container. Left unset (the default), the host uses\n`container-type: normal` instead: `container-type: inline-size` forces this element's own\nauto/content-based inline size to be computed as if it had no content, which silently\ncollapses it to 0 width whenever it sits as an ordinary (`flex-basis: auto`) child of a\nshrink-to-fit flex row — exactly this component's own stated primary use case (a toolbar\nrow of mixed controls). Set `responsive` only when the group's own size instead comes from\nsomewhere else (a percentage width, a grid track, a block-level parent), where that failure\nmode does not apply and the narrow-allocation breakpoint is wanted.\n\nType: `boolean` \nDefault: `false`",
4384
+ "value": {
4385
+ "type": [
4386
+ "boolean"
4387
+ ]
4388
+ }
4261
4389
  }
4262
4390
  ]
4263
4391
  },
@@ -4442,7 +4570,7 @@
4442
4570
  },
4443
4571
  {
4444
4572
  "name": "lr-dashboard-grid",
4445
- "description": "`<lr-dashboard-grid>` — a responsive, keyboard-accessible widget grid: positions `layout`\nentries (`DashboardCell`: `x`/`y`/`w`/`h` grid units + a widget descriptor) on a CSS Grid,\ncomposing `<lr-widget>` + `<lr-widget-renderer>` for each cell's default content, and owns all\ndrag/resize/collision interaction as controlled events -- it never mutates `layout` itself, nor\never touches `localStorage`/network; the host applies (or ignores) every emitted event and owns\npersistence entirely, mirroring `lr-flow-canvas`/`lr-table`'s own controlled-component\nconvention. Readonly (viewer) by default; opt into editor gestures individually via\n`cells-draggable`/`cells-resizable`, or lock the whole grid via `locked`.\n\nCell content: a `layout` entry with no matching light-DOM child (matched by `cell-id`) gets a\ndefault `<lr-widget label=\"...\">` wrapping an `<lr-widget-renderer .tree=${cell.widget}>`\nauto-created and adopted into `slot=\"cell-{id}\"` -- this component's own job is the grid\nlayout/drag/resize/collision/persistence-event mechanics *around* that content, not widget\nrendering itself (see `lr-widget-renderer`'s own doc for its declarative-tree contract). A\nconsumer wanting full control over one cell's markup can instead author\n`<div cell-id=\"...\">...</div>` as a direct child; it is adopted in place of the default cell.\n\nKeyboard: cells share one roving tabindex, in row-major (`sortSpatial`) order. Arrow\nkeys/Home/End move the roving focus (RTL-aware: physical Left/Right always match what the\ncursor visually does, matching `lr-flow-canvas`'s own convention). While a cell has focus,\nCtrl/Cmd+Arrow moves it by one grid unit and Ctrl/Cmd+Shift+Arrow resizes it by one grid unit\n(Right/Down grow, Left/Up shrink) -- the full keyboard-operable equivalent of the pointer\ndrag/resize gestures below, per this library's accessibility bar (no pointer-only interaction).\n\nCollision: every move/resize request -- pointer or keyboard -- is resolved through `collision`\n(`'reject'` the default, `'push'`, or `'overlap'`; see `resolvePlacement()` in `layout.ts` for\nthe exact rule). A rejected request leaves `layout` untouched and only announces; an accepted\none emits `lr-cell-move`/`lr-cell-resize` plus a `lr-layout-change` snapshot of the full\nproposed layout (including any `'push'` cascade) -- the host's one persistence hook: listen for\nit and persist `event.detail.layout` however it likes (`localStorage`, a network call, neither).\n\nResponsive: below a ~40rem container allocation (`@container`, not the viewport -- a dashboard\ngrid is commonly embedded in a panel of varying width), cells stack into a single flowing\ncolumn in the same row-major order the grid itself renders them in, instead of overflowing or\nshrinking columns unreadably.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `cell-{id}` | A `layout` entry's cell content; auto-populated by a default composed `<lr-widget>`/`<lr-widget-renderer>` pair unless a light-DOM `[cell-id=\"{id}\"]` child is authored instead. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The grid root. |\n| `cell` | A single cell's positioned wrapper. |\n| `empty` | The `lr-empty` shown when `layout` is empty. |\n| `live-region` | The current move/resize/collision announcement. |\n| `resize-handle` | The pointer resize grip in a cell's trailing/bottom corner (only rendered while `cells-resizable`); the Ctrl/Cmd+Shift+Arrow keyboard path is the resize handle's full accessible equivalent, so the handle itself is `aria-hidden`. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-dashboard-grid-columns` (default: `12`) — Column count of the underlying CSS Grid. Written inline on `[part=\"base\"]` from the `columns` property on every render, so the fallback only applies to a `[part=\"base\"]` this component has not rendered yet.\n- `--lr-dashboard-grid-row-height` (default: `var(--lr-size-5rem)`) — Row track height. Written inline on `[part=\"base\"]` from the `rowHeight` property (in px) on every render.\n- `--lr-dashboard-grid-gap` (default: `var(--lr-space-m)`) — Gap between cells on both axes. Written inline on `[part=\"base\"]` from the `gap` property (in px) on every render.",
4573
+ "description": "`<lr-dashboard-grid>` — a responsive, keyboard-accessible widget grid: positions `layout`\nentries (`DashboardCell`: `x`/`y`/`w`/`h` grid units + a widget descriptor) on a CSS Grid,\ncomposing `<lr-widget>` + `<lr-widget-renderer>` for each cell's default content, and owns all\ndrag/resize/collision interaction as controlled events -- it never mutates `layout` itself, nor\never touches `localStorage`/network; the host applies (or ignores) every emitted event and owns\npersistence entirely, mirroring `lr-flow-canvas`/`lr-table`'s own controlled-component\nconvention. Readonly (viewer) by default; opt into editor gestures individually via\n`cells-draggable`/`cells-resizable`, or lock the whole grid via `locked`.\n\nCell content: a `layout` entry with no matching light-DOM child (matched by `cell-id`) gets a\ndefault `<lr-widget label=\"...\">` wrapping an `<lr-widget-renderer .tree=${cell.widget}>`\nauto-created and adopted into `slot=\"cell-{id}\"` -- this component's own job is the grid\nlayout/drag/resize/collision/persistence-event mechanics *around* that content, not widget\nrendering itself (see `lr-widget-renderer`'s own doc for its declarative-tree contract). A\nconsumer wanting full control over one cell's markup can instead author\n`<div cell-id=\"...\">...</div>` as a direct child; it is adopted in place of the default cell.\n\nKeyboard: cells share one roving tabindex, in row-major (`sortSpatial`) order. Arrow\nkeys/Home/End move the roving focus (RTL-aware: physical Left/Right always match what the\ncursor visually does, matching `lr-flow-canvas`'s own convention). While a cell has focus,\nCtrl/Cmd+Arrow moves it by one grid unit and Ctrl/Cmd+Shift+Arrow resizes it by one grid unit\n(Right/Down grow, Left/Up shrink) -- the full keyboard-operable equivalent of the pointer\ndrag/resize gestures below, per this library's accessibility bar (no pointer-only interaction).\n\nCollision: every move/resize request -- pointer or keyboard -- is resolved through `collision`\n(`'reject'` the default, `'push'`, or `'overlap'`; see `resolvePlacement()` in `layout.ts` for\nthe exact rule). A rejected request leaves `layout` untouched and only announces; an accepted\none emits `lr-cell-move`/`lr-cell-resize` plus a `lr-layout-change` snapshot of the full\nproposed layout (including any `'push'` cascade) -- the host's one persistence hook: listen for\nit and persist `event.detail.layout` however it likes (`localStorage`, a network call, neither).\n\nResponsive: below a ~40rem container allocation (`@container`, not the viewport -- a dashboard\ngrid is commonly embedded in a panel of varying width), cells stack into a single flowing\ncolumn in the same row-major order the grid itself renders them in, instead of overflowing or\nshrinking columns unreadably.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `cell-{id}` | A `layout` entry's cell content; auto-populated by a default composed `<lr-widget>`/`<lr-widget-renderer>` pair unless a light-DOM `[cell-id=\"{id}\"]` child is authored instead. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The grid root. |\n| `cell` | A single cell's positioned wrapper. |\n| `empty` | The `lr-empty` shown when `layout` is empty. |\n| `live-region` | The current move/resize/collision announcement. |\n| `resize-handle` | The pointer resize grip in a cell's trailing/bottom corner (only rendered while `cells-resizable`); the Ctrl/Cmd+Shift+Arrow keyboard path is the resize handle's full accessible equivalent, so the handle itself is `aria-hidden`. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-dashboard-grid-columns` (default: `12`) — Column count of the underlying CSS Grid. Written inline on `[part=\"base\"]` from the `columns` property on every render, so the fallback only applies to a `[part=\"base\"]` this component has not rendered yet.\n- `--lr-dashboard-grid-row-height` (default: `var(--lr-size-5rem)`) — Row track height. Written inline on `[part=\"base\"]` from the `rowHeight` property (in px) on every render.\n- `--lr-dashboard-grid-gap` (default: `var(--lr-space-m)`) — Gap between cells on both axes. Written inline on `[part=\"base\"]` from the `gap` property (in px) on every render.\n- `--lr-dashboard-grid-cell-hover-outline-color` (default: `var(--lr-color-border-strong)`) — Outline color of a cell's mouse-hover preview of its own `:focus-visible` ring (shown because every cell is a real focusable, draggable/resizable target). Set to `transparent` to opt out.",
4446
4574
  "attributes": [
4447
4575
  {
4448
4576
  "name": "aria-label",
@@ -4522,48 +4650,6 @@
4522
4650
  }
4523
4651
  ]
4524
4652
  },
4525
- {
4526
- "name": "lr-data-grid",
4527
- "description": "`<lr-data-grid>` — keyboard-navigable, responsive data grid with sortable columns.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `cell` | Body cell. |\n| `empty` | The single full-width cell rendered in place of body rows while `loading`, or when `rows` is empty. |\n| `grid` | Native table grid. |\n| `header` | Header cell. |\n| `row` | Body row. |\n| `viewport` | Scrollable grid viewport. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-data-grid-row-selected-bg` (default: `var(--lr-color-brand-quiet)`) — Background of the selected row's cells. Shadow Parts forbids an attribute selector after `::part()`, so `::part(row)[aria-selected]` is invalid CSS and the selected row could otherwise only be restyled by hijacking the library-wide `--lr-color-brand-quiet` token.",
4528
- "attributes": [
4529
- {
4530
- "name": "aria-label",
4531
- "description": "Type: `string` \nDefault: `''`",
4532
- "value": {
4533
- "type": [
4534
- "string"
4535
- ]
4536
- }
4537
- },
4538
- {
4539
- "name": "empty-text",
4540
- "description": "Type: `string` \nDefault: `''`",
4541
- "value": {
4542
- "type": [
4543
- "string"
4544
- ]
4545
- }
4546
- },
4547
- {
4548
- "name": "loading",
4549
- "description": "Type: `boolean` \nDefault: `false`",
4550
- "value": {
4551
- "type": [
4552
- "boolean"
4553
- ]
4554
- }
4555
- },
4556
- {
4557
- "name": "locale",
4558
- "description": "Optional locale override. Otherwise the nearest `locale`/`lang` ancestor is used.\n\nType: `string` \nDefault: `''`",
4559
- "value": {
4560
- "type": [
4561
- "string"
4562
- ]
4563
- }
4564
- }
4565
- ]
4566
- },
4567
4653
  {
4568
4654
  "name": "lr-dataset-viewer",
4569
4655
  "description": "Fetches delimited text and renders a virtualized, accessible data table: a `role=\"table\"`\ncontainer with a sticky `role=\"row\"` header, composed with `<lr-virtual-list item-role=\"row\">`\nfor the body so files far larger than a real synchronous `<table>` can render without locking the\nmain thread.\n\nAdopts `DocumentAnchorTarget`: a `cell-range` anchor addresses the raw file grid, 1-based, with\nthe header row always occupying row 1 (this component always parses with PapaParse's `header:\ntrue`, so the first row is never part of the virtualized body) -- `scrollToAnchor()` scrolls the\naddressed row into view via the virtualized list's `active-id`. A `sheet`-qualified anchor never\nresolves here -- this viewer has no sheets. `highlights` paint as a `part=\"cell-highlight\"` cell\nwrapping a focusable `part=\"cell-highlight-action\"` native button (keeping the ARIA table tree\nintact) on membership, recomputed per row inside `renderRow()` so a row scrolled out and back\nin reconstructs its highlight for free, with no persistent DOM to keep in sync. `search()` is a\ncase-insensitive substring match over every body cell's raw string value, ordered row then column.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The root wrapper. |\n| `body` | The scrollable body wrapper. |\n| `cell` | One rendered cell (`role=\"cell\"`). |\n| `cell-highlight` | A cell (`role=\"cell\"`) covered by a `highlights` entry; wraps the `cell-highlight-action` button. |\n| `cell-highlight-action` | The native button filling a highlighted cell -- focusable, emits `lr-highlight-activate` on click or Enter/Space. |\n| `data-row` | One virtualized data row. |\n| `error` | The error message region. |\n| `header-cell` | A header cell (`role=\"columnheader\"`). |\n| `header-row` | The sticky header row (`role=\"row\"`). |\n| `spinner` | The loading status region. |\n| `table` | The `role=\"table\"` container. Its accessible name is `name` when set, otherwise a host `aria-label`, otherwise a localized row-count caption. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-dataset-viewer-max-height` (default: `none`) — Maximum block size of `[part=\"body\"]` before it scrolls internally. The `maxHeight` property sets this token inline on `[part=\"base\"]`.\n- `--lr-dataset-viewer-highlight-color` (default: `var(--lr-color-brand)`) — Outline color of a highlighted cell. The active highlight sets it inline to `var(--lr-color-warning, var(--lr-color-brand))`.",
@@ -4677,6 +4763,15 @@
4677
4763
  ]
4678
4764
  }
4679
4765
  },
4766
+ {
4767
+ "name": "disabled",
4768
+ "description": "Type: `boolean`",
4769
+ "value": {
4770
+ "type": [
4771
+ "boolean"
4772
+ ]
4773
+ }
4774
+ },
4680
4775
  {
4681
4776
  "name": "enterkeyhint",
4682
4777
  "description": "Type: `string` \nDefault: `''`",
@@ -4766,6 +4861,15 @@
4766
4861
  "name": "months",
4767
4862
  "description": "Type: `1 | 2` \nDefault: `1`"
4768
4863
  },
4864
+ {
4865
+ "name": "name",
4866
+ "description": "Type: `string`",
4867
+ "value": {
4868
+ "type": [
4869
+ "string"
4870
+ ]
4871
+ }
4872
+ },
4769
4873
  {
4770
4874
  "name": "open",
4771
4875
  "description": "Type: `boolean` \nDefault: `false`",
@@ -4802,6 +4906,15 @@
4802
4906
  ]
4803
4907
  }
4804
4908
  },
4909
+ {
4910
+ "name": "required",
4911
+ "description": "Type: `boolean`",
4912
+ "value": {
4913
+ "type": [
4914
+ "boolean"
4915
+ ]
4916
+ }
4917
+ },
4805
4918
  {
4806
4919
  "name": "size",
4807
4920
  "description": "Visual size — same `2xs`–`xl` scale as `lr-input`/`lr-select`/`lr-combobox`'s own `size`.\n`'2xs'` is the tightest tier, for dense toolbar-embedded fields.\n\nType: `LyraDateInputSize` \nDefault: `'m'`",
@@ -4956,6 +5069,15 @@
4956
5069
  ]
4957
5070
  }
4958
5071
  },
5072
+ {
5073
+ "name": "size",
5074
+ "description": "Visual size — scales `--lr-cell-size` proportionally; not pixel-matched to\n`lr-input`'s row-height scale (a calendar cell isn't a text row).\n\nType: `LyraDatePickerSize` \nDefault: `'m'`",
5075
+ "value": {
5076
+ "type": [
5077
+ "LyraDatePickerSize"
5078
+ ]
5079
+ }
5080
+ },
4959
5081
  {
4960
5082
  "name": "value",
4961
5083
  "description": "ISO value: `YYYY-MM-DD` or `YYYY-MM-DD/YYYY-MM-DD`.\n\nType: `string` \nDefault: `''`",
@@ -5114,7 +5236,12 @@
5114
5236
  },
5115
5237
  {
5116
5238
  "name": "layout",
5117
- "description": "`'unified'` (the default) renders today's single interleaved `<pre>`; `'split'` renders two\nside-by-side columns derived from the same `DiffOp[]` (see `pairOpsForSplit()`).\n\nType: `'unified' | 'split'` \nDefault: `'unified'`"
5239
+ "description": "`'unified'` (the default) renders today's single interleaved `<pre>`; `'split'` renders two\nside-by-side columns derived from the same `DiffOp[]` (see `pairOpsForSplit()`).\n\nType: `LyraDiffViewLayout` \nDefault: `'unified'`",
5240
+ "value": {
5241
+ "type": [
5242
+ "LyraDiffViewLayout"
5243
+ ]
5244
+ }
5118
5245
  },
5119
5246
  {
5120
5247
  "name": "locale",
@@ -5244,7 +5371,12 @@
5244
5371
  },
5245
5372
  {
5246
5373
  "name": "diff-layout",
5247
- "description": "Forwarded to the internal `<lr-diff-view>`'s own `layout` property while `view=\"diff\"`.\n\nType: `'unified' | 'split'` \nDefault: `'unified'`"
5374
+ "description": "Forwarded to the internal `<lr-diff-view>`'s own `layout` property while `view=\"diff\"`.\n\nType: `LyraDiffViewLayout` \nDefault: `'unified'`",
5375
+ "value": {
5376
+ "type": [
5377
+ "LyraDiffViewLayout"
5378
+ ]
5379
+ }
5248
5380
  },
5249
5381
  {
5250
5382
  "name": "language",
@@ -5275,13 +5407,18 @@
5275
5407
  },
5276
5408
  {
5277
5409
  "name": "view",
5278
- "description": "`'diff'` (the default) renders one inline `<lr-diff-view>`; `'side-by-side'` renders two\nindependently-scrollable `<lr-document-preview>` panes -- see the class doc's \"Synchronized\nanchors\" section for how the two panes are kept in sync.\n\nType: `'diff' | 'side-by-side'` \nDefault: `'diff'`"
5410
+ "description": "`'diff'` (the default) renders one inline `<lr-diff-view>`; `'side-by-side'` renders two\nindependently-scrollable `<lr-document-preview>` panes -- see the class doc's \"Synchronized\nanchors\" section for how the two panes are kept in sync.\n\nType: `LyraDocumentCompareView` \nDefault: `'diff'`",
5411
+ "value": {
5412
+ "type": [
5413
+ "LyraDocumentCompareView"
5414
+ ]
5415
+ }
5279
5416
  }
5280
5417
  ]
5281
5418
  },
5282
5419
  {
5283
5420
  "name": "lr-document-library",
5284
- "description": "`<lr-document-library>` — a searchable, filterable inventory of documents with versions, tags,\nowners, freshness, and bulk selection. A controlled data view: it performs no upload, sync, or\nmutation of its own, only presents `documents` and emits request/notification events, mirroring\nthis package's other orchestration-level list surfaces (`<lr-thread-list>`'s\n`lr-thread-pin`/`-archive`/`-delete` convention).\n\nComposes `<lr-table>` (not `<lr-data-grid>`) for the inventory grid itself: `<lr-data-grid>`\nonly supports a single `selectedKey` and stringifies every cell value (`String(value)`), so it\ncannot host the checkbox/chip/icon content bulk selection, tags, and per-row type icons need.\n`<lr-table>` supports arbitrary `cell()`/`headerCell()` content and `priority`-driven responsive\ncolumn hiding, which this component relies on for its 320px-allocation behavior. Search\n(`<lr-input type=\"search\">`) and the tag facet (`<lr-combobox multiple>`) are both self-managed\n(client-side filtering against `documents`, like `<lr-thread-list>`'s own `searchable` field) —\noverride matching entirely via `filter`. Row selection uses `<lr-checkbox>` per cell rather than\n`<lr-table>`'s own built-in `selectionMode`, since that mode's click-anywhere-in-the-row toggle\nwould conflict with the row's own name button opening the document; `<lr-table>`'s\n`selectedKeys` is still fed from `selectedIds` purely for its `aria-selected` row styling.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The root region. |\n| `cell` | Exported from `<lr-table>`'s own `cell` part. |\n| `clear-selection` | The \"Clear selection\" button inside `selection-bar`. |\n| `document-name` | Each row's clickable document-name button. |\n| `header-cell` | Exported from `<lr-table>`'s own `header-cell` part. |\n| `row` | Exported from `<lr-table>`'s own `row` part. |\n| `search` | The `<lr-input>` search field. |\n| `selection-bar` | The \"N selected\" / \"Clear selection\" bar. Only rendered while `selectedIds` is non-empty. |\n| `selection-count` | The selected-count text inside `selection-bar`. |\n| `table` | The `<lr-table>` inventory grid. |\n| `tag-filter` | The `<lr-combobox>` tag facet filter. Only rendered while at least one document declares a `tags` entry. |\n| `toolbar` | Wraps the search field and tag filter. |",
5421
+ "description": "`<lr-document-library>` — a searchable, filterable inventory of documents with versions, tags,\nowners, freshness, and bulk selection. A controlled data view: it performs no upload, sync, or\nmutation of its own, only presents `documents` and emits request/notification events, mirroring\nthis package's other orchestration-level list surfaces (`<lr-thread-list>`'s\n`lr-thread-pin`/`-archive`/`-delete` convention).\n\nComposes `<lr-table>` for the inventory grid itself, since bulk selection, tags, and per-row\ntype icons all need arbitrary cell content rather than a stringified value.\n`<lr-table>` supports arbitrary `cell()`/`headerCell()` content and `priority`-driven responsive\ncolumn hiding, which this component relies on for its 320px-allocation behavior. Search\n(`<lr-input type=\"search\">`) and the tag facet (`<lr-combobox multiple>`) are both self-managed\n(client-side filtering against `documents`, like `<lr-thread-list>`'s own `searchable` field) —\noverride matching entirely via `filter`. Row selection uses `<lr-checkbox>` per cell rather than\n`<lr-table>`'s own built-in `selectionMode`, since that mode's click-anywhere-in-the-row toggle\nwould conflict with the row's own name button opening the document; `<lr-table>`'s\n`selectedKeys` is still fed from `selectedIds` purely for its `aria-selected` row styling.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The root region. |\n| `cell` | Exported from `<lr-table>`'s own `cell` part. |\n| `clear-selection` | The \"Clear selection\" button inside `selection-bar`. |\n| `document-name` | Each row's clickable document-name button. |\n| `header-cell` | Exported from `<lr-table>`'s own `header-cell` part. |\n| `row` | Exported from `<lr-table>`'s own `row` part. |\n| `search` | The `<lr-input>` search field. |\n| `selection-bar` | The \"N selected\" / \"Clear selection\" bar. Only rendered while `selectedIds` is non-empty. |\n| `selection-count` | The selected-count text inside `selection-bar`. |\n| `table` | The `<lr-table>` inventory grid. |\n| `tag-filter` | The `<lr-combobox>` tag facet filter. Only rendered while at least one document declares a `tags` entry. |\n| `toolbar` | Wraps the search field and tag filter. |",
5285
5422
  "attributes": [
5286
5423
  {
5287
5424
  "name": "label",
@@ -5312,7 +5449,12 @@
5312
5449
  },
5313
5450
  {
5314
5451
  "name": "sort-direction",
5315
- "description": "Type: `'ascending' | 'descending'` \nDefault: `'ascending'`"
5452
+ "description": "Type: `DocumentLibrarySortDirection` \nDefault: `'ascending'`",
5453
+ "value": {
5454
+ "type": [
5455
+ "DocumentLibrarySortDirection"
5456
+ ]
5457
+ }
5316
5458
  },
5317
5459
  {
5318
5460
  "name": "sort-key",
@@ -5818,7 +5960,12 @@
5818
5960
  },
5819
5961
  {
5820
5962
  "name": "popup-role",
5821
- "description": "Semantic role used by the popup. Dropdown subclasses set this to `menu`.\n\nType: `'dialog' | 'menu'` \nDefault: `'dialog'`"
5963
+ "description": "Semantic role used by the popup. Dropdown subclasses set this to `menu`.\n\nType: `LyraPopupRole` \nDefault: `'dialog'`",
5964
+ "value": {
5965
+ "type": [
5966
+ "LyraPopupRole"
5967
+ ]
5968
+ }
5822
5969
  }
5823
5970
  ]
5824
5971
  },
@@ -5986,7 +6133,7 @@
5986
6133
  },
5987
6134
  {
5988
6135
  "name": "lr-emoji-picker",
5989
- "description": "`<lr-emoji-picker>` — a searchable, keyboard-navigable, form-associated emoji picker. In the\nsame \"zero/optional-peer dependency\" spirit as `<lr-lite-chart>`/`<lr-heatmap>`: `groups` is\nfully consumer-suppliable (this component ships no emoji data of its own), with an *optional*\nconvenience auto-loader for a default set — see `emoji-data-loader.ts` and the class doc there for\nexactly what that covers.\n\nKeyboard model: the grid is a roving-tabindex listbox (a single Tab stop — only the active emoji\nis tabbable). Arrow keys move the active option (Left/Right follow reading direction and swap\nunder RTL; Up/Down move by one visual row, measured from the live wrap layout), Home/End jump to\nthe first/last option, and Enter/Space picks. The search input doubles as a `role=\"combobox\"`\nover the same listbox: the arrow keys and Enter also work there while focus stays in the input,\nwith `aria-activedescendant` tracking the active option. Large data sets automatically window\ntheir visible rows so scrolling does not create one button per supplied emoji in the DOM.\n\nShips the same opt-in `label`/`hint`/`errorText` form-control chrome as `<lr-select>`/\n`<lr-color-picker>` (props + matching named slots + `form-control`/`form-control-label`/`hint`/\n`error` parts) — left unset, the chrome stays hidden. When `label` (or the `label` slot) is set\nand `aria-label`/`accessibleLabel` is not, the grid's accessible name switches from the\nlocalized default to `aria-labelledby` pointing at the visible label, mirroring\n`<lr-checkbox-group>`'s identical `accessibleLabel`-wins-over-`aria-labelledby` precedence.\n\n`disabled` (from the `FormAssociated` mixin) gates every self-rendered interactive\nsub-control — the search input and every emoji button — not just one of them.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `error` | Custom error content. |\n| `hint` | Custom hint content. |\n| `label` | Custom label content. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The wrapper around the search input and grid. |\n| `emoji` | Each emoji's own `<button>`; meets the shared minimum tappable size (`--lr-icon-button-size`) without enlarging the rendered emoji glyph itself. |\n| `empty` | The empty-state message, shown when the search matches nothing. |\n| `error` | The error message. |\n| `form-control` | The outer wrapper around label, base, error and hint. |\n| `form-control-label` | The visible label. |\n| `grid` | The keyboard-navigable emoji grid. |\n| `group-label` | Each group's heading, rendered above its emojis. |\n| `hint` | The hint message. |\n| `search` | The search/filter `<input>` (`role=\"combobox\"` over the grid). |\n| `virtual-items` | The flex row holding one windowed row's emoji buttons. |\n| `virtual-label` | The `aria-hidden` placeholder that reserves a row's group-label band when that row has no label, keeping every row the same height. Rendered on the windowed path only. |\n| `virtual-row` | One windowed row, absolutely positioned at the `--lr-emoji-picker-row-height` pitch. Rendered on the windowed path only. |\n| `virtual-spacer` | The full-height scroll spacer that gives the grid its scrollbar while only the visible rows exist in the DOM. Rendered on the windowed path only. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-emoji-picker-item-size` (default: `var(--lr-icon-button-size)`) — Each emoji button's box. Clamped up to `--lr-icon-button-size`: a smaller value does not shrink the button.\n- `--lr-emoji-picker-gap` (default: `var(--lr-space-2xs)`) — Gap between emoji within a windowed row.\n- `--lr-emoji-picker-row-height` (default: `calc(var(--lr-emoji-picker-item-size) + var(--lr-space-l))`) — One windowed row's height. Must stay at or above the item size plus the group-label band, or consecutive absolutely-positioned rows overlap.\n- `--lr-emoji-picker-active-bg` (default: `var(--lr-color-brand-quiet)`) — Background of the keyboard-active (`data-active`) **and** hovered emoji button — the two share a single rule, so this one hook retints both consistently. Declared as an inline `var()` fallback (never on `:host`), so setting it on the element or an ancestor recolors only the emoji highlight without hijacking the library-wide `--lr-color-brand-quiet` token.",
6136
+ "description": "`<lr-emoji-picker>` — a searchable, keyboard-navigable, form-associated emoji picker. In the\nsame \"zero/optional-peer dependency\" spirit as `<lr-lite-chart>`/`<lr-heatmap>`: `groups` is\nfully consumer-suppliable (this component ships no emoji data of its own), with an *optional*\nconvenience auto-loader for a default set — see `emoji-data-loader.ts` and the class doc there for\nexactly what that covers.\n\nKeyboard model: the grid is a roving-tabindex listbox (a single Tab stop — only the active emoji\nis tabbable). Arrow keys move the active option (Left/Right follow reading direction and swap\nunder RTL; Up/Down move by one visual row, measured from the live wrap layout), Home/End jump to\nthe first/last option, and Enter/Space picks. The search input doubles as a `role=\"combobox\"`\nover the same listbox: the arrow keys and Enter also work there while focus stays in the input,\nwith `aria-activedescendant` tracking the active option. Large data sets automatically window\ntheir visible rows so scrolling does not create one button per supplied emoji in the DOM.\n\nShips the same opt-in `label`/`hint`/`errorText` form-control chrome as `<lr-select>`/\n`<lr-color-picker>` (props + matching named slots + `form-control`/`form-control-label`/`hint`/\n`error` parts) — left unset, the chrome stays hidden. When `label` (or the `label` slot) is set\nand `aria-label`/`accessibleLabel` is not, the grid's accessible name switches from the\nlocalized default to `aria-labelledby` pointing at the visible label, mirroring\n`<lr-checkbox-group>`'s identical `accessibleLabel`-wins-over-`aria-labelledby` precedence.\n\n`disabled` (from the `FormAssociated` mixin) gates every self-rendered interactive\nsub-control — the search input and every emoji button — not just one of them.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `error` | Custom error content. |\n| `hint` | Custom hint content. |\n| `label` | Custom label content. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The wrapper around the search input and grid. |\n| `emoji` | Each emoji's own `<button>`; its box and glyph both scale with the `size` property (`--lr-emoji-picker-item-size`/`-glyph-size`), with the hit area floored at a flat 24px (WCAG 2.5.8) rather than the shared `--lr-icon-button-size`. |\n| `empty` | The empty-state message, shown when the search matches nothing. |\n| `error` | The error message. |\n| `form-control` | The outer wrapper around label, base, error and hint. |\n| `form-control-label` | The visible label. |\n| `grid` | The keyboard-navigable emoji grid. |\n| `group-label` | Each group's heading, rendered above its emojis. |\n| `hint` | The hint message. |\n| `search` | The search/filter `<input>` (`role=\"combobox\"` over the grid). |\n| `virtual-items` | The flex row holding one windowed row's emoji buttons. |\n| `virtual-label` | The `aria-hidden` placeholder that reserves a row's group-label band when that row has no label, keeping every row the same height. Rendered on the windowed path only. |\n| `virtual-row` | One windowed row, absolutely positioned at the `--lr-emoji-picker-row-height` pitch. Rendered on the windowed path only. |\n| `virtual-spacer` | The full-height scroll spacer that gives the grid its scrollbar while only the visible rows exist in the DOM. Rendered on the windowed path only. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-emoji-picker-item-size` (default: `var(--lr-icon-button-size)`) — Each emoji button's box. Clamped up to `--lr-icon-button-size`: a smaller value does not shrink the button.\n- `--lr-emoji-picker-glyph-size` (default: `var(--lr-font-size-lg)`) — Font size of the emoji glyph, scaled by the `size` property to keep the glyph proportional to the item box.\n- `--lr-emoji-picker-gap` (default: `var(--lr-space-2xs)`) — Gap between emoji within a windowed row.\n- `--lr-emoji-picker-row-height` (default: `calc(var(--lr-emoji-picker-item-size) + var(--lr-space-l))`) — One windowed row's height. Must stay at or above the item size plus the group-label band, or consecutive absolutely-positioned rows overlap.\n- `--lr-emoji-picker-active-bg` (default: `var(--lr-color-brand-quiet)`) — Background of the keyboard-active (`data-active`) **and** hovered emoji button — the two share a single rule, so this one hook retints both consistently. Declared as an inline `var()` fallback (never on `:host`), so setting it on the element or an ancestor recolors only the emoji highlight without hijacking the library-wide `--lr-color-brand-quiet` token.",
5990
6137
  "attributes": [
5991
6138
  {
5992
6139
  "name": "aria-label",
@@ -5997,6 +6144,15 @@
5997
6144
  ]
5998
6145
  }
5999
6146
  },
6147
+ {
6148
+ "name": "disabled",
6149
+ "description": "Type: `boolean`",
6150
+ "value": {
6151
+ "type": [
6152
+ "boolean"
6153
+ ]
6154
+ }
6155
+ },
6000
6156
  {
6001
6157
  "name": "error-text",
6002
6158
  "description": "Validation-error text rendered below the hint.\n\nType: `string` \nDefault: `''`",
@@ -6032,6 +6188,33 @@
6032
6188
  "string"
6033
6189
  ]
6034
6190
  }
6191
+ },
6192
+ {
6193
+ "name": "name",
6194
+ "description": "Type: `string`",
6195
+ "value": {
6196
+ "type": [
6197
+ "string"
6198
+ ]
6199
+ }
6200
+ },
6201
+ {
6202
+ "name": "required",
6203
+ "description": "Type: `boolean`",
6204
+ "value": {
6205
+ "type": [
6206
+ "boolean"
6207
+ ]
6208
+ }
6209
+ },
6210
+ {
6211
+ "name": "size",
6212
+ "description": "Visual size — scales the emoji grid item box proportionally, floored at 24px\n(WCAG 2.5.8); not pixel-matched to `lr-input`'s row-height scale.\n\nType: `LyraEmojiPickerSize` \nDefault: `'m'`",
6213
+ "value": {
6214
+ "type": [
6215
+ "LyraEmojiPickerSize"
6216
+ ]
6217
+ }
6035
6218
  }
6036
6219
  ]
6037
6220
  },
@@ -6273,7 +6456,7 @@
6273
6456
  },
6274
6457
  {
6275
6458
  "name": "lr-eval-dataset",
6276
- "description": "`<lr-eval-dataset>` — dataset management for an evaluation suite: a filterable/taggable list of\n`EvalExample` rows, plus add/remove/import/export affordances.\n\nFully controlled, matching this library's established convention for every other\norchestration-level component in this family (e.g. `<lr-thread-list>`'s\n`lr-thread-pin`/`-archive`/`-delete`): `examples` is the host's own data, and this component\nnever mutates it or performs any I/O itself. Every action a user takes -- adding a row,\nremoving the selected row, importing files, exporting to a format -- fires a `*-request` event\ncarrying just enough information to act on; the host decides how (a local mutation, a network\nround-trip, opening its own creation dialog, parsing an imported file's actual contents, writing\nan exported file to disk or a server) and passes an updated `examples` array back in.\n\nComposes `<lr-data-grid>` for the row list (columns for `input`/`expectedOutput`/joined\n`tags`), `<lr-chip>`/`<lr-chip-group>` as a tag-based browse filter (one toggleable chip per\ndistinct tag currently present across `examples`; multiple active tags OR together, matching\nthe common \"browse by any of these tags\" idiom rather than requiring every tag to match),\n`<lr-file-input>` for the import affordance, and `<lr-export-button>` for the export affordance\n-- its own built-in client-side CSV/JSON download is deliberately suppressed\n(`event.preventDefault()` on its `lr-export`) since `<lr-export-button>`'s flat `rows`/`columns`\nCSV/JSON builder can't preserve an `EvalExample`'s own `tags`/`metadata` shape faithfully, and\nproducing the actual exported file/API-call either way is the host's job per this component's\nown controlled contract; this keeps `lr-export-request` the single source of truth for every\nconfigured format rather than one format silently downloading locally while every other format\ndoes nothing.\n\nRow sorting is *not* re-implemented here: `<lr-data-grid>`'s own `lr-sort` bubbles through\n(composed events cross a shadow boundary automatically) for a host that wants to reorder\n`examples` and hand back a resorted array -- the same \"the host owns the actual data\" contract\nas every other mutation this component surfaces.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `add-button` | The \"Add example\" button. |\n| `base` | The root. |\n| `export` | The internal `<lr-export-button>`. |\n| `grid` | The internal `<lr-data-grid>`. |\n| `import` | The internal `<lr-file-input>`. |\n| `remove-button` | The \"Remove\" button, disabled while nothing is selected. |\n| `search` | The search field's wrapper. Only rendered while `searchable`. |\n| `search-input` | The `<input type=\"search\">`. Only rendered while `searchable`. |\n| `tag-filter` | The tag-filter chip group's wrapper. Only rendered while `examples` carries at least one tag. |\n| `toolbar` | The row of add/remove/import/export controls. |",
6459
+ "description": "`<lr-eval-dataset>` — dataset management for an evaluation suite: a filterable/taggable list of\n`EvalExample` rows, plus add/remove/import/export affordances.\n\nFully controlled, matching this library's established convention for every other\norchestration-level component in this family (e.g. `<lr-thread-list>`'s\n`lr-thread-pin`/`-archive`/`-delete`): `examples` is the host's own data, and this component\nnever mutates it or performs any I/O itself. Every action a user takes -- adding a row,\nremoving the selected row, importing files, exporting to a format -- fires a `*-request` event\ncarrying just enough information to act on; the host decides how (a local mutation, a network\nround-trip, opening its own creation dialog, parsing an imported file's actual contents, writing\nan exported file to disk or a server) and passes an updated `examples` array back in.\n\nComposes `<lr-table>` for the row list (columns for `input`/`expectedOutput`/joined\n`tags`), `<lr-chip>`/`<lr-chip-group>` as a tag-based browse filter (one toggleable chip per\ndistinct tag currently present across `examples`; multiple active tags OR together, matching\nthe common \"browse by any of these tags\" idiom rather than requiring every tag to match),\n`<lr-file-input>` for the import affordance, and `<lr-export-button>` for the export affordance\n-- its own built-in client-side CSV/JSON download is deliberately suppressed\n(`event.preventDefault()` on its `lr-export`) since `<lr-export-button>`'s flat `rows`/`columns`\nCSV/JSON builder can't preserve an `EvalExample`'s own `tags`/`metadata` shape faithfully, and\nproducing the actual exported file/API-call either way is the host's job per this component's\nown controlled contract; this keeps `lr-export-request` the single source of truth for every\nconfigured format rather than one format silently downloading locally while every other format\ndoes nothing.\n\nRow sorting is *not* re-implemented here: `<lr-table>`'s own `lr-sort` bubbles through\n(composed events cross a shadow boundary automatically) for a host that wants to reorder\n`examples` and hand back a resorted array -- the same \"the host owns the actual data\" contract\nas every other mutation this component surfaces.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `add-button` | The \"Add example\" button. |\n| `base` | The root. |\n| `export` | The internal `<lr-export-button>`. |\n| `grid` | The internal `<lr-table>`. |\n| `import` | The internal `<lr-file-input>`. |\n| `remove-button` | The \"Remove\" button, disabled while nothing is selected. |\n| `search` | The search field's wrapper. Only rendered while `searchable`. |\n| `search-input` | The `<input type=\"search\">`. Only rendered while `searchable`. |\n| `tag-filter` | The tag-filter chip group's wrapper. Only rendered while `examples` carries at least one tag. |\n| `toolbar` | The row of add/remove/import/export controls. |",
6277
6460
  "attributes": [
6278
6461
  {
6279
6462
  "name": "accept",
@@ -6324,7 +6507,7 @@
6324
6507
  },
6325
6508
  {
6326
6509
  "name": "lr-eval-result",
6327
- "description": "`<lr-eval-result>` — rubric scoring, human review, and comparison across a single evaluation\nexample's runs (one per model or prompt version), LangSmith/Arize-eval-result style.\n\nComposes three existing primitives directly rather than re-deriving any of their behavior:\n`<lr-data-grid>` renders the `runs` comparison table (`columns` is a plain pass-through to its\nown `DataGridColumn[]` shape, the same way `rubricKeys` is a pass-through to\n`<lr-rubric-form>`'s own `keys` -- neither is re-derived here); `<lr-rubric-form>` is the\nhuman-review scoring surface for whichever run is currently selected, reading/writing that\nrun's own `review` value and re-emitting its `lr-input`/`lr-validity-change`/`lr-submit`/\n`lr-skip` events with the run id attached; `<lr-diff-view>` compares the selected run's output\nagainst `baselineRunId`'s output -- `layout=\"split\"` once they resolve to two distinct runs,\n`layout=\"unified\"` (an all-equal diff, i.e. a plain read of the one run's output) once they\nresolve to the same run or no baseline resolves at all -- so there is no separate un-diffed\n\"just show the output\" code path to keep in sync with the comparison one.\n\n`selectedRunId`/`baselineRunId` are both fully controlled: this component never mutates either\nproperty itself. Each one falls back to `runs[0]?.id` purely for *rendering* whenever the\nproperty is unset, so the component renders something useful with zero configuration beyond\n`runs` -- but moving the selection for real requires the host to set `selectedRunId` in\nresponse to `lr-run-select`, the same shape `<lr-rubric-form>`'s own `itemId` already uses. A\n`selectedRunId`/`baselineRunId` that doesn't match any entry in `runs` degrades gracefully: the\ncomparison grid still renders, and the review/diff sections simply don't (no error, no crash).\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The outer wrapper. |\n| `diff` | The wrapper around the diff caption and `<lr-diff-view>`. |\n| `diff-label-new` | The selected run's caption. |\n| `diff-label-old` | The baseline run's caption. |\n| `diff-labels` | The caption row naming the two compared runs (only rendered while comparing two distinct runs). |\n| `diff-view` | The `<lr-diff-view>` comparing the baseline and selected runs' output. |\n| `empty` | The message shown when `runs` has no entries. |\n| `grid` | The `<lr-data-grid>` comparison table. |\n| `review` | The `<lr-rubric-form>` scoring the selected run. |",
6510
+ "description": "`<lr-eval-result>` — rubric scoring, human review, and comparison across a single evaluation\nexample's runs (one per model or prompt version), LangSmith/Arize-eval-result style.\n\nComposes three existing primitives directly rather than re-deriving any of their behavior:\n`<lr-table>` renders the `runs` comparison table (`columns` is a plain pass-through to its\nown `TableColumn[]` shape, the same way `rubricKeys` is a pass-through to\n`<lr-rubric-form>`'s own `keys` -- neither is re-derived here); `<lr-rubric-form>` is the\nhuman-review scoring surface for whichever run is currently selected, reading/writing that\nrun's own `review` value and re-emitting its `lr-input`/`lr-validity-change`/`lr-submit`/\n`lr-skip` events with the run id attached; `<lr-diff-view>` compares the selected run's output\nagainst `baselineRunId`'s output -- `layout=\"split\"` once they resolve to two distinct runs,\n`layout=\"unified\"` (an all-equal diff, i.e. a plain read of the one run's output) once they\nresolve to the same run or no baseline resolves at all -- so there is no separate un-diffed\n\"just show the output\" code path to keep in sync with the comparison one.\n\n`selectedRunId`/`baselineRunId` are both fully controlled: this component never mutates either\nproperty itself. Each one falls back to `runs[0]?.id` purely for *rendering* whenever the\nproperty is unset, so the component renders something useful with zero configuration beyond\n`runs` -- but moving the selection for real requires the host to set `selectedRunId` in\nresponse to `lr-run-select`, the same shape `<lr-rubric-form>`'s own `itemId` already uses. A\n`selectedRunId`/`baselineRunId` that doesn't match any entry in `runs` degrades gracefully: the\ncomparison grid still renders, and the review/diff sections simply don't (no error, no crash).\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The outer wrapper. |\n| `diff` | The wrapper around the diff caption and `<lr-diff-view>`. |\n| `diff-label-new` | The selected run's caption. |\n| `diff-label-old` | The baseline run's caption. |\n| `diff-labels` | The caption row naming the two compared runs (only rendered while comparing two distinct runs). |\n| `diff-view` | The `<lr-diff-view>` comparing the baseline and selected runs' output. |\n| `empty` | The message shown when `runs` has no entries. |\n| `grid` | The `<lr-table>` comparison table. |\n| `review` | The `<lr-rubric-form>` scoring the selected run. |",
6328
6511
  "attributes": [
6329
6512
  {
6330
6513
  "name": "baseline-run-id",
@@ -6782,7 +6965,7 @@
6782
6965
  },
6783
6966
  {
6784
6967
  "name": "lr-flow-canvas",
6785
- "description": "`<lr-flow-canvas>` — a pannable/zoomable DAG workflow canvas: positions HTML node cards, draws\nSVG edges between their handles, runs a shared layered auto-layout for unpositioned nodes, and owns\nall selection/drag/connect interaction as controlled events. Readonly (viewer) by default; opt into\neditor gestures individually via `nodes-draggable`, `connectable`, `droppable`. Never mutates `nodes`\nor `edges` itself — every edit intent is an event the host applies, mirroring `lr-stepper`/\n`lr-table`'s controlled-component contract.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | `lr-flow-node` children to adopt by `node-id`; non-matching children are ignored with a console warning. |\n| `bottom-end` | Floating corner overlay (e.g. `lr-flow-minimap`). |\n| `bottom-start` | Floating corner overlay (e.g. `lr-flow-controls`). |\n| `top-end` | Floating corner overlay. |\n| `top-start` | Floating corner overlay (e.g. `lr-flow-run-overlay`). |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `arrowhead` | The shared directed-edge arrowhead marker. |\n| `background` | The dotted background grid. |\n| `base` | The root wrapper. |\n| `connection-line` | The in-progress connect-gesture path. |\n| `edge` | A single edge path. |\n| `edge-label` | An edge's drawn label. |\n| `edge-list` | A visually hidden list of every edge. |\n| `edges` | The edges SVG. |\n| `empty` | The `lr-empty` shown when `nodes` is empty. |\n| `live-region` | The current item/gesture announcement. |\n| `node` | A node's positioned wrapper. |\n| `stub` | A dangling-edge stub line. |\n| `viewport` | The focusable pan/zoom surface. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-flow-canvas-grid-size` (default: `var(--lr-size-0-5rem)`) — Dotted background spacing. The canvas also writes it inline as `${grid}px` from the `grid` property, which wins over the stylesheet fallback whenever a grid is in effect.\n- `--lr-flow-canvas-march-duration` (default: `var(--lr-transition-ambient)`) — Running-edge march animation duration.\n- `--lr-flow-canvas-node-current-outline-color` (default: `var(--lr-color-brand)`) — Outline color of the current (`aria-current`) node. Shadow Parts forbids an attribute selector after `::part()`, so the current node could otherwise only be restyled by hijacking the library-wide `--lr-color-brand` token.\n- `--lr-flow-canvas-node-connect-invalid-outline-color` (default: `var(--lr-color-danger)`) — Outline color of a node that is an invalid connect-gesture drop target. Same `::part()` attribute-selector restriction as `--lr-flow-canvas-node-current-outline-color` above.\n- `--lr-flow-canvas-node-connect-target-outline-color` (default: `var(--lr-color-brand)`) — Outline color of a node that is a valid connect-gesture drop target.\n- `--lr-flow-canvas-drop-active-outline-color` (default: `var(--lr-color-brand)`) — Outline color of the viewport while a palette item is dragged over it (`droppable`).",
6968
+ "description": "`<lr-flow-canvas>` — a pannable/zoomable DAG workflow canvas: positions HTML node cards, draws\nSVG edges between their handles, runs a shared layered auto-layout for unpositioned nodes, and owns\nall selection/drag/connect interaction as controlled events. Readonly (viewer) by default; opt into\neditor gestures individually via `nodes-draggable`, `connectable`, `droppable`. Never mutates `nodes`\nor `edges` itself — every edit intent is an event the host applies, mirroring `lr-stepper`/\n`lr-table`'s controlled-component contract.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | `lr-flow-node` children to adopt by `node-id`; non-matching children are ignored with a console warning. |\n| `bottom-end` | Floating corner overlay (e.g. `lr-flow-minimap`). |\n| `bottom-start` | Floating corner overlay (e.g. `lr-flow-controls`). |\n| `top-end` | Floating corner overlay. |\n| `top-start` | Floating corner overlay (e.g. `lr-flow-run-overlay`). |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `arrowhead` | The shared directed-edge arrowhead marker. |\n| `background` | The dotted background grid. |\n| `base` | The root wrapper. |\n| `connection-line` | The in-progress connect-gesture path. |\n| `edge` | A single edge path. |\n| `edge-label` | An edge's drawn label. |\n| `edge-list` | A visually hidden list of every edge. |\n| `edges` | The edges SVG. |\n| `empty` | The `lr-empty` shown when `nodes` is empty. |\n| `live-region` | The current item/gesture announcement. |\n| `node` | A node's positioned wrapper. |\n| `stub` | A dangling-edge stub line. |\n| `viewport` | The focusable pan/zoom surface. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-flow-canvas-grid-size` (default: `var(--lr-size-0-5rem)`) — Dotted background spacing. The canvas also writes it inline as `${grid}px` from the `grid` property, which wins over the stylesheet fallback whenever a grid is in effect.\n- `--lr-flow-canvas-march-duration` (default: `var(--lr-transition-ambient)`) — Running-edge march animation duration.\n- `--lr-flow-canvas-node-current-outline-color` (default: `var(--lr-color-brand)`) — Outline color of the current (`aria-current`) node. Shadow Parts forbids an attribute selector after `::part()`, so the current node could otherwise only be restyled by hijacking the library-wide `--lr-color-brand` token.\n- `--lr-flow-canvas-node-connect-invalid-outline-color` (default: `var(--lr-color-danger)`) — Outline color of a node that is an invalid connect-gesture drop target. Same `::part()` attribute-selector restriction as `--lr-flow-canvas-node-current-outline-color` above.\n- `--lr-flow-canvas-node-connect-target-outline-color` (default: `var(--lr-color-brand)`) — Outline color of a node that is a valid connect-gesture drop target.\n- `--lr-flow-canvas-drop-active-outline-color` (default: `var(--lr-color-brand)`) — Outline color of the viewport while a palette item is dragged over it (`droppable`).\n- `--lr-flow-canvas-node-hover-outline-color` (default: `var(--lr-color-border-strong)`) — Outline color of a node's mouse-hover preview of its own `:focus-visible` ring. Unlike the four state-scoped colors above this one is `:hover`-gated rather than attribute-gated, so a `::part(node):hover` override would lose to this rule's own higher internal specificity rather than to the `::part()[attr]` restriction those four work around. Set to `transparent` to opt out.",
6786
6969
  "attributes": [
6787
6970
  {
6788
6971
  "name": "aria-label",
@@ -7389,7 +7572,12 @@
7389
7572
  },
7390
7573
  {
7391
7574
  "name": "layout",
7392
- "description": "`'force'` (default) runs the existing d3-force simulation, untouched. `'layered'` computes a\ndeterministic Sugiyama-lite layout (`src/internal/layered-layout.ts`, a shared,\ndependency-free util suitable for any future layered-diagram consumer) instead -- no settle\nanimation, node drag disabled (dragging would fight a computed layout), `chargeStrength` a\ndocumented no-op, `linkDistance` retunes the layer gap. Switching at runtime repositions\nwithout a tween.\n\nType: `'force' | 'layered'` \nDefault: `'force'`"
7575
+ "description": "`'force'` (default) runs the existing d3-force simulation, untouched. `'layered'` computes a\ndeterministic Sugiyama-lite layout (`src/internal/layered-layout.ts`, a shared,\ndependency-free util suitable for any future layered-diagram consumer) instead -- no settle\nanimation, node drag disabled (dragging would fight a computed layout), `chargeStrength` a\ndocumented no-op, `linkDistance` retunes the layer gap. Switching at runtime repositions\nwithout a tween.\n\nType: `GraphLayout` \nDefault: `'force'`",
7576
+ "value": {
7577
+ "type": [
7578
+ "GraphLayout"
7579
+ ]
7580
+ }
7393
7581
  },
7394
7582
  {
7395
7583
  "name": "link-distance",
@@ -7429,7 +7617,12 @@
7429
7617
  },
7430
7618
  {
7431
7619
  "name": "renderer",
7432
- "description": "`'svg'` (default, unchanged) renders the existing per-node/per-link DOM. `'canvas'` swaps to\na single `<canvas part=\"canvas\">` -- the scale path (an honest ceiling for `'svg'`: dozens to\nlow hundreds of nodes; `'canvas'` targets roughly 5,000 nodes / 10,000 links). Feature-reduced\nby design: no `::part(node)`/`::part(link)` styling (pixels, not elements -- theme via\ncssprops), no SVG `<title>`, a drawn focus ring instead of a CSS one. All events/methods/\nprops otherwise behave identically across renderers. Runtime changes tear down and rebuild\nthe surface; positions survive via `prevById`/`lastPositionById`.\n\nType: `'svg' | 'canvas'` \nDefault: `'svg'`"
7620
+ "description": "`'svg'` (default, unchanged) renders the existing per-node/per-link DOM. `'canvas'` swaps to\na single `<canvas part=\"canvas\">` -- the scale path (an honest ceiling for `'svg'`: dozens to\nlow hundreds of nodes; `'canvas'` targets roughly 5,000 nodes / 10,000 links). Feature-reduced\nby design: no `::part(node)`/`::part(link)` styling (pixels, not elements -- theme via\ncssprops), no SVG `<title>`, a drawn focus ring instead of a CSS one. All events/methods/\nprops otherwise behave identically across renderers. Runtime changes tear down and rebuild\nthe surface; positions survive via `prevById`/`lastPositionById`.\n\nType: `GraphRenderer` \nDefault: `'svg'`",
7621
+ "value": {
7622
+ "type": [
7623
+ "GraphRenderer"
7624
+ ]
7625
+ }
7433
7626
  },
7434
7627
  {
7435
7628
  "name": "seed",
@@ -7437,7 +7630,12 @@
7437
7630
  },
7438
7631
  {
7439
7632
  "name": "selection-mode",
7440
- "description": "`'none'` (default) preserves today's behavior exactly -- no `aria-pressed`/`data-selected`,\nno `lr-selection-change`. Controlled, mirroring `lr-heatmap.selectedCell`: the component\nnever mutates `selectedNodeIds`/`selectedLinkIds` itself, only emits intent; the host assigns\nthem back.\n\nType: `'none' | 'single' | 'multiple'` \nDefault: `'none'`"
7633
+ "description": "`'none'` (default) preserves today's behavior exactly -- no `aria-pressed`/`data-selected`,\nno `lr-selection-change`. Controlled, mirroring `lr-heatmap.selectedCell`: the component\nnever mutates `selectedNodeIds`/`selectedLinkIds` itself, only emits intent; the host assigns\nthem back.\n\nType: `GraphSelectionMode` \nDefault: `'none'`",
7634
+ "value": {
7635
+ "type": [
7636
+ "GraphSelectionMode"
7637
+ ]
7638
+ }
7441
7639
  },
7442
7640
  {
7443
7641
  "name": "show-edge-labels",
@@ -7677,11 +7875,21 @@
7677
7875
  },
7678
7876
  {
7679
7877
  "name": "mode",
7680
- "description": "Type: `'matrix' | 'calendar'` \nDefault: `'matrix'`"
7878
+ "description": "Type: `HeatmapMode` \nDefault: `'matrix'`",
7879
+ "value": {
7880
+ "type": [
7881
+ "HeatmapMode"
7882
+ ]
7883
+ }
7681
7884
  },
7682
7885
  {
7683
7886
  "name": "scale",
7684
- "description": "`\"linear\"` (default) maps values linearly to the color ramp in matrix\nmode, and buckets calendar-mode values via `quartileBucket()` — both\nunchanged from before this property governed calendar mode too.\n`\"sqrt\"` compresses via `sqrtStep()`'s square-root magnitude compression\ninstead, in *both* modes, so one heavy cell/day doesn't wash out the\nrest of a skewed dataset.\n\nType: `'linear' | 'sqrt'` \nDefault: `'linear'`"
7887
+ "description": "`\"linear\"` (default) maps values linearly to the color ramp in matrix\nmode, and buckets calendar-mode values via `quartileBucket()` — both\nunchanged from before this property governed calendar mode too.\n`\"sqrt\"` compresses via `sqrtStep()`'s square-root magnitude compression\ninstead, in *both* modes, so one heavy cell/day doesn't wash out the\nrest of a skewed dataset.\n\nType: `HeatmapScale` \nDefault: `'linear'`",
7888
+ "value": {
7889
+ "type": [
7890
+ "HeatmapScale"
7891
+ ]
7892
+ }
7685
7893
  },
7686
7894
  {
7687
7895
  "name": "value-label",
@@ -7976,7 +8184,7 @@
7976
8184
  },
7977
8185
  {
7978
8186
  "name": "lr-icon-button",
7979
- "description": "`<lr-icon-button>` — an accessible icon-only action button.\n\nSet `icon` for one of `<lr-icon>`'s named glyphs, or slot your own content instead. Slotted\ncontent is a **sibling** of the built-in glyph rather than being piped through `<lr-icon>`, so\nany complete element — an `<svg>`, an `<img>`, an `<lr-flag>` — renders at its own natural\naspect ratio instead of being forced into a 1:1 box. Bare SVG geometry (`<path>`, `<circle>`)\nhas no SVG parent here and must be wrapped in an `<lr-icon>` or a complete `<svg>` of your own.\n\nForm-associated (mirroring `<lr-button>`'s identical shape): discoverable through\n`form.elements`, and `type=\"submit\"`/`type=\"reset\"` are handled by this component itself via\nthe host's own `closest('form')` — a shadow-internal native `<button type=\"submit\">` does not\nparticipate in an ancestor light-DOM form's submission on its own, since form-submitter\nsemantics don't cross the shadow boundary.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | Optional custom icon content, rendered beside (not inside) the `icon` glyph. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `button` | Native button. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-icon-button-size` (default: `2.5rem`) — Minimum tappable inline and block size of the native button — a **floor**, not a fixed size: content larger than it grows the button and keeps its own aspect ratio, while a small glyph pads out to it. A library-wide token (declared on `:root` by `tokens.styles.ts`, and the shared minimum tappable size several other components size their icon controls against), so overriding it globally resizes all of them together.",
8187
+ "description": "`<lr-icon-button>` — an accessible icon-only action button.\n\nSet `icon` for one of `<lr-icon>`'s named glyphs, or slot your own content instead. Slotted\ncontent is a **sibling** of the built-in glyph rather than being piped through `<lr-icon>`, so\nany complete element — an `<svg>`, an `<img>`, an `<lr-flag>` — renders at its own natural\naspect ratio instead of being forced into a 1:1 box. Bare SVG geometry (`<path>`, `<circle>`,\nand a handful of other raw primitives) with no enclosing `<svg>` of its own is detected and\ncloned into a real, internal SVG-namespaced element so it still paints — the same fallback\n`<lr-icon>`'s own custom-content slot uses, but narrowly scoped so a custom element (e.g. a\nslotted `<lr-flag>`) is never run through it.\n\nForm-associated (mirroring `<lr-button>`'s identical shape): discoverable through\n`form.elements`, and `type=\"submit\"`/`type=\"reset\"` are handled by this component itself via\nthe host's own `closest('form')` — a shadow-internal native `<button type=\"submit\">` does not\nparticipate in an ancestor light-DOM form's submission on its own, since form-submitter\nsemantics don't cross the shadow boundary.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | Optional custom icon content, rendered beside (not inside) the `icon` glyph. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `button` | Native button. |\n| `fallback` | The internal SVG-namespaced clone target for slotted bare geometry. Carries the same `fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\"` defaults `<lr-icon>`'s own wrapper svg does, so bare stroke-style geometry (no fill/stroke of its own) renders outlined instead of as a solid shape; an explicit `fill`/`stroke`/etc. already present on the slotted node still wins for that node. Only present in the DOM while at least one top-level slotted element needs it; a complete `<svg>`, `<img>`, or custom element never mounts it. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-icon-button-size` (default: `2.5rem`) — Minimum tappable inline and block size of the native button — a **floor**, not a fixed size: content larger than it grows the button and keeps its own aspect ratio, while a small glyph pads out to it. A library-wide token (declared on `:root` by `tokens.styles.ts`, and the shared minimum tappable size several other components size their icon controls against), so overriding it globally resizes all of them together.\n- `--lr-icon-button-radius` (default: `var(--lr-radius)`) — Corner radius of the native button.",
7980
8188
  "attributes": [
7981
8189
  {
7982
8190
  "name": "aria-label",
@@ -8247,7 +8455,7 @@
8247
8455
  },
8248
8456
  {
8249
8457
  "name": "lr-input",
8250
- "description": "`<lr-input>` — a single-line plain-text input primitive, the `lr-*` equivalent of a plain\n`wa-input`, form-associated via the `FormAssociated` mixin (same shape as `<lr-textarea>`).\n\nShips the same opt-in `label`/`hint`/`errorText` form-control chrome as `<lr-textarea>`/\n`<lr-select>` (props + matching named slots + `form-control`/`form-control-label`/`hint`/`error`\nparts) — left unset, the chrome stays hidden. `size` uses the same `xs`–`xl` scale as\n`<lr-select>`/`<lr-combobox>`. `type=\"password\"` always renders a\n`password-toggle` eye-icon button that flips the internal native input between\n`type=\"password\"`/`type=\"text\"` and tracks `passwordVisible`. `type=\"email\"`/`type=\"number\"`\n(with `min`/`max`/`step`) delegate constraint validation to the internal native `<input>`'s own\nbrowser-computed `validity`, bridged into this element's `ElementInternals` by `updateValidity()`.\n`type=\"search\"`/`type=\"time\"` forward straight through to the native input with no additional\nchrome or validation, the same as `type=\"text\"`.\n\nA host `aria-label` is forwarded to the internal textbox via the typed `accessibleLabel` property;\nexternal `aria-labelledby`/`aria-describedby` idrefs are not copied across the shadow boundary.\n\nForwards the full native selection/editing surface (`selectionStart`/`selectionEnd`,\n`setSelectionRange()`, `setRangeText()`), the same as `<lr-textarea>`, in addition to\n`focus()`/`blur()`/`select()`.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `end` | Adornment after the native input and built-in actions. |\n| `error` | Custom error content. |\n| `hint` | Custom hint content. |\n| `label` | Custom label content. |\n| `start` | Adornment before the native input. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `clear-button` | The clear action, rendered for non-empty clearable text/search inputs. |\n| `end` | Wrapper around the `end` adornment slot. |\n| `error` | The error message. |\n| `form-control` | The outer wrapper around label, input, error and hint. |\n| `form-control-label` | The `<label>` element. |\n| `hint` | The hint message. |\n| `input` | The native `<input>` element. |\n| `input-wrapper` | The row wrapping the native input and the password-toggle button. |\n| `password-toggle` | The show/hide-password button, present only when `type=\"password\"`. |\n| `start` | Wrapper around the `start` adornment slot. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-input-control-min-height` — Outer control height floor, scaled by `size`.\n- `--lr-input-control-height` — Exact outer control height. Unset by default, which leaves `--lr-input-control-min-height` as a floor only; set it to a length to both floor and cap the control row (e.g. to pixel-match `<lr-select>`/`<lr-combobox>` in the same toolbar). Because it is never declared by the component itself, it can be set from an ancestor or an outer-tree rule as well as inline on the element.\n- `--lr-input-padding-block` — Block padding of the native input, scaled by `size`.\n- `--lr-input-padding-inline` — Inline padding of the control row, scaled by `size`.\n- `--lr-input-font-size` — Font size of the native input, scaled by `size`.",
8458
+ "description": "`<lr-input>` — a single-line plain-text input primitive, the `lr-*` equivalent of a plain\n`wa-input`, form-associated via the `FormAssociated` mixin (same shape as `<lr-textarea>`).\n\nShips the same opt-in `label`/`hint`/`errorText` form-control chrome as `<lr-textarea>`/\n`<lr-select>` (props + matching named slots + `form-control`/`form-control-label`/`hint`/`error`\nparts) — left unset, the chrome stays hidden. `size` uses the same `xs`–`xl` scale as\n`<lr-select>`/`<lr-combobox>`. `type=\"password\"` always renders a\n`password-toggle` eye-icon button that flips the internal native input between\n`type=\"password\"`/`type=\"text\"` and tracks `passwordVisible`. `type=\"email\"`/`type=\"number\"`\n(with `min`/`max`/`step`) delegate constraint validation to the internal native `<input>`'s own\nbrowser-computed `validity`, bridged into this element's `ElementInternals` by `updateValidity()`.\n`type=\"search\"`/`type=\"time\"` forward straight through to the native input with no additional\nchrome or validation, the same as `type=\"text\"`.\n\nA host `aria-label` is forwarded to the internal textbox via the typed `accessibleLabel` property;\nexternal `aria-labelledby`/`aria-describedby` idrefs are not copied across the shadow boundary.\n\nForwards the full native selection/editing surface (`selectionStart`/`selectionEnd`,\n`setSelectionRange()`, `setRangeText()`), the same as `<lr-textarea>`, in addition to\n`focus()`/`blur()`/`select()`.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `end` | Adornment after the native input and built-in actions. |\n| `error` | Custom error content. |\n| `hint` | Custom hint content. |\n| `label` | Custom label content. |\n| `start` | Adornment before the native input. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `clear-button` | The clear action, rendered for non-empty clearable text/search inputs. |\n| `end` | Wrapper around the `end` adornment slot. |\n| `error` | The error message. |\n| `form-control` | The outer wrapper around label, input, error and hint. |\n| `form-control-label` | The `<label>` element. |\n| `hint` | The hint message. |\n| `input` | The native `<input>` element. |\n| `input-wrapper` | The row wrapping the native input and the password-toggle button. |\n| `password-toggle` | The show/hide-password button, present only when `type=\"password\"`. |\n| `start` | Wrapper around the `start` adornment slot. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-input-control-min-height` — Outer control height floor, scaled by `size`.\n- `--lr-input-control-height` — Exact outer control height. Unset by default, which leaves `--lr-input-control-min-height` as a floor only; set it to a length to both floor and cap the control row (e.g. to pixel-match `<lr-select>`/`<lr-combobox>` in the same toolbar). Because it is never declared by the component itself, it can be set from an ancestor or an outer-tree rule as well as inline on the element.\n- `--lr-input-padding-block` — Block padding of the native input, scaled by `size`.\n- `--lr-input-padding-inline` — Inline padding of the control row, scaled by `size`.\n- `--lr-input-font-size` — Font size of the native input, scaled by `size`.\n- `--lr-input-gap` (default: `var(--lr-space-xs)`) — Gap between the start/end adornments and the native input in the control row. Unlike the size knobs above it does not vary by `size` tier. Override it to retune without a `::part(input-wrapper)` rule.\n- `--lr-input-radius` (default: `var(--lr-radius)`) — Corner radius of the control row. Does not vary by `size` tier.",
8251
8459
  "attributes": [
8252
8460
  {
8253
8461
  "name": "aria-label",
@@ -8289,6 +8497,15 @@
8289
8497
  ]
8290
8498
  }
8291
8499
  },
8500
+ {
8501
+ "name": "disabled",
8502
+ "description": "Type: `boolean`",
8503
+ "value": {
8504
+ "type": [
8505
+ "boolean"
8506
+ ]
8507
+ }
8508
+ },
8292
8509
  {
8293
8510
  "name": "enterkeyhint",
8294
8511
  "description": "Type: `string` \nDefault: `''`",
@@ -8351,6 +8568,15 @@
8351
8568
  "name": "min",
8352
8569
  "description": "`type=\"number\"` only — forwarded to the internal native `<input>`'s own `min`/`max`/`step`\nand consulted by that same native input's constraint validation (see `updateValidity()`).\nDefaults to `undefined` (no lower bound). The `min` attribute is parsed as a number here; the\ndeclared type also admits a string so a subclass bound to a non-numeric native input type can\nnarrow the attribute parsing to that type's own literal form (`<lr-time-input>`'s `09:00`)\nwithout redeclaring the whole property surface.\n\nType: `number | string | undefined`"
8353
8570
  },
8571
+ {
8572
+ "name": "name",
8573
+ "description": "Type: `string`",
8574
+ "value": {
8575
+ "type": [
8576
+ "string"
8577
+ ]
8578
+ }
8579
+ },
8354
8580
  {
8355
8581
  "name": "password-visible",
8356
8582
  "description": "`type=\"password\"` only — whether the field currently reveals its raw text. Toggled by the\nbuilt-in `password-toggle` button; also settable by a consumer up front.\n\nType: `boolean` \nDefault: `false`",
@@ -8378,6 +8604,15 @@
8378
8604
  ]
8379
8605
  }
8380
8606
  },
8607
+ {
8608
+ "name": "required",
8609
+ "description": "Type: `boolean`",
8610
+ "value": {
8611
+ "type": [
8612
+ "boolean"
8613
+ ]
8614
+ }
8615
+ },
8381
8616
  {
8382
8617
  "name": "size",
8383
8618
  "description": "Visual size — same `2xs`–`xl` scale as `lr-select`/`lr-combobox`'s own `size`. `'2xs'` is\nthe tightest tier, for dense toolbar-embedded controls.\n\nType: `LyraInputSize` \nDefault: `'m'`",
@@ -8571,7 +8806,12 @@
8571
8806
  },
8572
8807
  {
8573
8808
  "name": "highlight",
8574
- "description": "What drives this component's own `dimmedNodeIds`/`dimmedLinkIds` forwarding, on top of the\nalways-active search-match dimming -- see the class doc's dedicated paragraph.\n\nType: `'selection' | 'hover' | 'none'` \nDefault: `'selection'`"
8809
+ "description": "What drives this component's own `dimmedNodeIds`/`dimmedLinkIds` forwarding, on top of the\nalways-active search-match dimming -- see the class doc's dedicated paragraph.\n\nType: `KnowledgeGraphHighlight` \nDefault: `'selection'`",
8810
+ "value": {
8811
+ "type": [
8812
+ "KnowledgeGraphHighlight"
8813
+ ]
8814
+ }
8575
8815
  },
8576
8816
  {
8577
8817
  "name": "label",
@@ -8593,7 +8833,12 @@
8593
8833
  },
8594
8834
  {
8595
8835
  "name": "renderer",
8596
- "description": "Forwarded to `lr-graph.renderer`. `renderer=\"canvas\"` has no per-node DOM element, which\nnarrows how the node-detail popover anchors and disables its pan/zoom tracking -- see the\nclass doc's anchoring note.\n\nType: `'svg' | 'canvas'` \nDefault: `'svg'`"
8836
+ "description": "Forwarded to `lr-graph.renderer`. `renderer=\"canvas\"` has no per-node DOM element, which\nnarrows how the node-detail popover anchors and disables its pan/zoom tracking -- see the\nclass doc's anchoring note.\n\nType: `GraphRenderer` \nDefault: `'svg'`",
8837
+ "value": {
8838
+ "type": [
8839
+ "GraphRenderer"
8840
+ ]
8841
+ }
8597
8842
  },
8598
8843
  {
8599
8844
  "name": "selected-node-id",
@@ -8636,6 +8881,15 @@
8636
8881
  ]
8637
8882
  }
8638
8883
  },
8884
+ {
8885
+ "name": "disabled",
8886
+ "description": "Type: `boolean`",
8887
+ "value": {
8888
+ "type": [
8889
+ "boolean"
8890
+ ]
8891
+ }
8892
+ },
8639
8893
  {
8640
8894
  "name": "error-text",
8641
8895
  "description": "Type: `string` \nDefault: `''`",
@@ -8699,6 +8953,15 @@
8699
8953
  ]
8700
8954
  }
8701
8955
  },
8956
+ {
8957
+ "name": "name",
8958
+ "description": "Type: `string`",
8959
+ "value": {
8960
+ "type": [
8961
+ "string"
8962
+ ]
8963
+ }
8964
+ },
8702
8965
  {
8703
8966
  "name": "readonly",
8704
8967
  "description": "Type: `boolean`",
@@ -8708,6 +8971,15 @@
8708
8971
  ]
8709
8972
  }
8710
8973
  },
8974
+ {
8975
+ "name": "required",
8976
+ "description": "Type: `boolean`",
8977
+ "value": {
8978
+ "type": [
8979
+ "boolean"
8980
+ ]
8981
+ }
8982
+ },
8711
8983
  {
8712
8984
  "name": "size",
8713
8985
  "description": "Type: `LyraKnownDateSize` \nDefault: `'m'`",
@@ -9067,7 +9339,12 @@
9067
9339
  },
9068
9340
  {
9069
9341
  "name": "scale",
9070
- "description": "`type=\"bar\"` only (no effect on `type=\"line\"`): `'linear'` (default) maps a bar's value to\nheight via the standard `niceDomain`-based fraction, unchanged from before this property\nexisted. `'sqrt'` instead maps via `Math.sqrt(value / domainMax)` (mirroring `lr-heatmap`'s\nmatrix-mode `sqrt` scale), boosting smaller values relative to one dominant value so a skewed\ndataset's smaller bars don't get washed out. Gridlines/tick labels stay on the linear domain\neither way — only the bar marks' own height mapping changes.\n\nType: `'linear' | 'sqrt'` \nDefault: `'linear'`"
9342
+ "description": "`type=\"bar\"` only (no effect on `type=\"line\"`): `'linear'` (default) maps a bar's value to\nheight via the standard `niceDomain`-based fraction, unchanged from before this property\nexisted. `'sqrt'` instead maps via `Math.sqrt(value / domainMax)` (mirroring `lr-heatmap`'s\nmatrix-mode `sqrt` scale), boosting smaller values relative to one dominant value so a skewed\ndataset's smaller bars don't get washed out. Gridlines/tick labels stay on the linear domain\neither way — only the bar marks' own height mapping changes.\n\nType: `LyraLiteChartScale` \nDefault: `'linear'`",
9343
+ "value": {
9344
+ "type": [
9345
+ "LyraLiteChartScale"
9346
+ ]
9347
+ }
9071
9348
  },
9072
9349
  {
9073
9350
  "name": "skip-zero",
@@ -9149,6 +9426,111 @@
9149
9426
  }
9150
9427
  ]
9151
9428
  },
9429
+ {
9430
+ "name": "lr-locale-picker",
9431
+ "description": "`<lr-locale-picker>` — a closed-list locale switcher over the library's own locale registry.\n\nWith `locales` left unset (the default), the offered rows are exactly\n`getRegisteredLyraLocales()` — every locale with strings registered via `registerLyraLocale()`,\nplus `'en'` (always available through the library's built-in English fallback) — kept live via\n`subscribeLyraLocaleRegistry()` so a locale registered after mount (e.g. a lazily-loaded\ntranslation pack) appears without a manual refresh. Passing an explicit `locales` array\noverrides the auto-discovered list entirely: a curated subset, a custom order, custom labels,\nor a locale the host wants to offer before its strings are registered.\n\n`value` is the *committed* selection (form-submitted, drives `lr-change`) and starts `''`.\nWhile unset, the trigger displays `effectiveLocale` (the same ancestor-`lang`/registry\nresolution every other component already uses) as a live preview — but that preview is never a\ncommitment: `checkValidity()`/`required` are governed by the real `value`, which stays `''`\nuntil the host sets it or the user actually picks a row. This mirrors a native `<select>`\nrendering its first option's text without that being a committed selection.\n\nBuilt directly on the shared trigger-button/`aria-activedescendant` listbox technique\n`<lr-select>` uses (not composed from it) — a plain closed list, no filter/free-text mode; a\nlocale catalog is realistically dozens of rows, not thousands, so `<lr-combobox>`'s filterable\nmodel would be more surface than the job needs.\n\nSelecting a row sets `value` and emits a cancelable `lr-change` — if a listener doesn't call\n`event.preventDefault()`, the component applies the pick itself via `setLyraLocale()`. A host\nthat wants to intercept the pick (e.g. persist it to a profile first) calls\n`event.preventDefault()`; `value` still updates so the trigger reflects the pick, but the\npage-level locale is untouched until the host calls `setLyraLocale()` itself.\n\nDoes not touch `document.documentElement.lang`/`dir` — applying a picked locale's writing\ndirection to the page is left to the host, which already has everything it needs from\n`lr-change`'s `value` to do that itself.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `error` | Custom error content. |\n| `hint` | Custom hint content. |\n| `label` | Custom label content. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `error` | The error message. |\n| `expand-icon` | The dropdown indicator. |\n| `form-control` | The outer wrapper around label, trigger, listbox, error and hint. |\n| `form-control-label` | The `<label>` element (only rendered — and only contributes to the accessible name — once `label` is non-empty). |\n| `hint` | The hint message. |\n| `listbox` | The options popover. |\n| `option` | An option row. |\n| `option-flag` | The row's leading `<lr-flag>` (present only while `showFlags` is on). |\n| `option-label` | An option row's label wrapper (native name + tag). |\n| `option-tag` | An option row's secondary line — the raw BCP-47 tag. |\n| `trigger` | The trigger button (positioning anchor). |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-locale-picker-trigger-padding` — Trigger padding shorthand, scaled by `size`.\n- `--lr-locale-picker-trigger-min-height` — Trigger block-size floor, scaled by `size`.\n- `--lr-locale-picker-trigger-height` — Exact trigger height. Unset by default (a floor only via `-trigger-min-height`); set a length to both floor and cap the trigger, e.g. to pixel-match a sibling field in the same toolbar row.\n- `--lr-locale-picker-font-size` — Trigger font size, scaled by `size`.\n- `--lr-locale-picker-expand-size` — Decorative expand-icon box size, scaled by `size`.\n- `--lr-locale-picker-option-active-bg` (default: `var(--lr-color-brand-quiet)`) — Background of a hovered or keyboard-active option row.",
9432
+ "attributes": [
9433
+ {
9434
+ "name": "disabled",
9435
+ "description": "Type: `boolean`",
9436
+ "value": {
9437
+ "type": [
9438
+ "boolean"
9439
+ ]
9440
+ }
9441
+ },
9442
+ {
9443
+ "name": "error-text",
9444
+ "description": "Type: `string` \nDefault: `''`",
9445
+ "value": {
9446
+ "type": [
9447
+ "string"
9448
+ ]
9449
+ }
9450
+ },
9451
+ {
9452
+ "name": "hint",
9453
+ "description": "Type: `string` \nDefault: `''`",
9454
+ "value": {
9455
+ "type": [
9456
+ "string"
9457
+ ]
9458
+ }
9459
+ },
9460
+ {
9461
+ "name": "label",
9462
+ "description": "Type: `string` \nDefault: `''`",
9463
+ "value": {
9464
+ "type": [
9465
+ "string"
9466
+ ]
9467
+ }
9468
+ },
9469
+ {
9470
+ "name": "locale",
9471
+ "description": "Optional locale override. Otherwise the nearest `locale`/`lang` ancestor is used.\n\nType: `string` \nDefault: `''`",
9472
+ "value": {
9473
+ "type": [
9474
+ "string"
9475
+ ]
9476
+ }
9477
+ },
9478
+ {
9479
+ "name": "name",
9480
+ "description": "Type: `string`",
9481
+ "value": {
9482
+ "type": [
9483
+ "string"
9484
+ ]
9485
+ }
9486
+ },
9487
+ {
9488
+ "name": "open",
9489
+ "description": "Type: `boolean` \nDefault: `false`",
9490
+ "value": {
9491
+ "type": [
9492
+ "boolean"
9493
+ ]
9494
+ }
9495
+ },
9496
+ {
9497
+ "name": "required",
9498
+ "description": "Type: `boolean`",
9499
+ "value": {
9500
+ "type": [
9501
+ "boolean"
9502
+ ]
9503
+ }
9504
+ },
9505
+ {
9506
+ "name": "show-flags",
9507
+ "description": "Each row's leading `<lr-flag>`. The composition recipe this component supersedes\n(`lr-popover` + `lr-flag`) already pairs a locale switcher with flags by convention --\ndefaulting to `true` keeps that continuity; set `false` for text-only rows.\n\nType: `boolean` \nDefault: `true`",
9508
+ "value": {
9509
+ "type": [
9510
+ "boolean"
9511
+ ]
9512
+ }
9513
+ },
9514
+ {
9515
+ "name": "size",
9516
+ "description": "Visual size — same `2xs`–`xl` scale as `lr-select`'s `size`.\n\nType: `LyraLocalePickerSize` \nDefault: `'m'`",
9517
+ "value": {
9518
+ "type": [
9519
+ "LyraLocalePickerSize"
9520
+ ]
9521
+ }
9522
+ },
9523
+ {
9524
+ "name": "value",
9525
+ "description": "The current locale tag (empty string when nothing is committed).\n\nType: `string`",
9526
+ "value": {
9527
+ "type": [
9528
+ "string"
9529
+ ]
9530
+ }
9531
+ }
9532
+ ]
9533
+ },
9152
9534
  {
9153
9535
  "name": "lr-map",
9154
9536
  "description": "`<lr-map>` — a maplibre-gl wrapper with a declarative legend, choropleth\nGeoJSON layer, markers, and additive `dataLayers` GeoJSON overlays\n(arbitrary shapes rendered as a source plus fill/line/circle layers,\nindependent of `choropleth`'s field/stops color-interpolation), plus a raw\n`map` escape hatch. Requires the optional peer dep `maplibre-gl`\n(consumers also import its CSS once).\n\nThe underlying `maplibregl.Map` — and the WebGL context it opens — isn't\nconstructed until this element is first visible in the viewport (tracked\nvia `IntersectionObserver`), even once the `maplibre-gl` peer dependency\nhas finished loading. Browsers hard-cap concurrent WebGL contexts per\npage, so a grid/dashboard of many `<lr-map>` instances only constructs\nthe ones actually on-screen instead of racing to exhaust that budget the\ninstant each one mounts. `map` stays `undefined` (and `lr-map-load`\ndoesn't fire) until construction actually happens.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The map wrapper. |\n| `container` | The maplibre container. |\n| `error` | `role=\"alert\"` message shown instead of `container` if the optional `maplibre-gl` peer dependency fails to load (e.g. not installed). ⚠️ The default `mapStyle` (when unset) uses OpenStreetMap's demo tile server, which is not suitable for production traffic — see the `DEFAULT_STYLE` doc comment above. Always pass an explicit `mapStyle` in production. |\n| `legend` | The map legend. |\n| `legend-swatch` | A legend color swatch. |",
@@ -9781,7 +10163,12 @@
9781
10163
  },
9782
10164
  {
9783
10165
  "name": "value",
9784
- "description": "Current rating. Host-writable (e.g. to reflect a previously-recorded rating back).\n\nType: `'up' | 'down' | null` \nDefault: `null`"
10166
+ "description": "Current rating. Host-writable (e.g. to reflect a previously-recorded rating back).\n\nType: `MessageFeedbackValue` \nDefault: `null`",
10167
+ "value": {
10168
+ "type": [
10169
+ "MessageFeedbackValue"
10170
+ ]
10171
+ }
9785
10172
  }
9786
10173
  ]
9787
10174
  },
@@ -10263,7 +10650,7 @@
10263
10650
  },
10264
10651
  {
10265
10652
  "name": "lr-number-input",
10266
- "description": "`<lr-number-input>` — a numeric-input alias with the complete `lr-input`\nform, validation, and native editing contract.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `end` | Adornment after the native input and built-in actions. |\n| `error` | Custom error content. |\n| `hint` | Custom hint content. |\n| `label` | Custom label content. |\n| `start` | Adornment before the native input. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `clear-button` | The clear action, rendered for non-empty clearable text/search inputs. |\n| `end` | Wrapper around the `end` adornment slot. |\n| `error` | The error message. |\n| `form-control` | The outer wrapper around label, input, error and hint. |\n| `form-control-label` | The `<label>` element. |\n| `hint` | The hint message. |\n| `input` | The native `<input>` element. |\n| `input-wrapper` | The row wrapping the native input and the password-toggle button. |\n| `password-toggle` | The show/hide-password button, present only when `type=\"password\"`. |\n| `start` | Wrapper around the `start` adornment slot. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-input-control-min-height` — Outer control height floor, scaled by `size`.\n- `--lr-input-control-height` — Exact outer control height. Unset by default, which leaves `--lr-input-control-min-height` as a floor only; set it to a length to both floor and cap the control row (e.g. to pixel-match `<lr-select>`/`<lr-combobox>` in the same toolbar). Because it is never declared by the component itself, it can be set from an ancestor or an outer-tree rule as well as inline on the element.\n- `--lr-input-padding-block` — Block padding of the native input, scaled by `size`.\n- `--lr-input-padding-inline` — Inline padding of the control row, scaled by `size`.\n- `--lr-input-font-size` — Font size of the native input, scaled by `size`.",
10653
+ "description": "`<lr-number-input>` — a numeric-input alias with the complete `lr-input`\nform, validation, and native editing contract.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `end` | Adornment after the native input and built-in actions. |\n| `error` | Custom error content. |\n| `hint` | Custom hint content. |\n| `label` | Custom label content. |\n| `start` | Adornment before the native input. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `clear-button` | The clear action, rendered for non-empty clearable text/search inputs. |\n| `end` | Wrapper around the `end` adornment slot. |\n| `error` | The error message. |\n| `form-control` | The outer wrapper around label, input, error and hint. |\n| `form-control-label` | The `<label>` element. |\n| `hint` | The hint message. |\n| `input` | The native `<input>` element. |\n| `input-wrapper` | The row wrapping the native input and the password-toggle button. |\n| `password-toggle` | The show/hide-password button, present only when `type=\"password\"`. |\n| `start` | Wrapper around the `start` adornment slot. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-input-control-min-height` — Outer control height floor, scaled by `size`.\n- `--lr-input-control-height` — Exact outer control height. Unset by default, which leaves `--lr-input-control-min-height` as a floor only; set it to a length to both floor and cap the control row (e.g. to pixel-match `<lr-select>`/`<lr-combobox>` in the same toolbar). Because it is never declared by the component itself, it can be set from an ancestor or an outer-tree rule as well as inline on the element.\n- `--lr-input-padding-block` — Block padding of the native input, scaled by `size`.\n- `--lr-input-padding-inline` — Inline padding of the control row, scaled by `size`.\n- `--lr-input-font-size` — Font size of the native input, scaled by `size`.\n- `--lr-input-gap` (default: `var(--lr-space-xs)`) — Gap between the start/end adornments and the native input in the control row. Unlike the size knobs above it does not vary by `size` tier. Override it to retune without a `::part(input-wrapper)` rule.\n- `--lr-input-radius` (default: `var(--lr-radius)`) — Corner radius of the control row. Does not vary by `size` tier.",
10267
10654
  "attributes": [
10268
10655
  {
10269
10656
  "name": "aria-label",
@@ -10778,7 +11165,7 @@
10778
11165
  },
10779
11166
  {
10780
11167
  "name": "lr-phone-input",
10781
- "description": "`<lr-phone-input>` — a country-aware telephone field whose form value is\ncanonical E.164. National formatting and numbering-plan validation are\nsupplied through `adapter`; without one, already-international E.164 input\nremains useful and national input stays editable with `incomplete` validity.\n\nUser edits emit native-style `input` and `change` events. Event detail\nexposes both the canonical `value` and editable `inputValue`; programmatic\nproperty changes are silent. Phone-number text is deliberately LTR while\nthe form chrome and country selector follow the inherited direction. A host\n`aria-label` names the internal telephone input and wins over every derived\nor component-specific fallback.\n\nThe country selector keeps the real, fully accessible native `<select>`\n(full country names in its popup, native mobile pickers, type-ahead) but\nrenders it invisibly over a compact visual trigger — selected alpha-2 code\nplus a design-system chevron — so long localized country names never clip\nthe closed control and the calling code isn't shown twice. With `flags`\nset, the trigger also shows the selected country's `<lr-flag>`; actual flag\nartwork still comes from the optional `@aceshooting/lyra-flags` peer,\nregistered by the consumer via `components/media/flag/flag-peer.js`\nexactly as for a standalone `<lr-flag>` (without that registration the\ntrigger simply omits the image). Native `<option>`s cannot contain\nelements, so the open popup remains text-only by platform design.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `country-prefix` | Optional visual displayed before the country selector, such as a flag. |\n| `error` | Custom error content. |\n| `hint` | Custom hint content. |\n| `label` | Custom label content. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `calling-code` | The selected country's calling code. |\n| `country` | The country selector region (invisible native select over the visual trigger). |\n| `country-code` | The selected alpha-2 code (or placeholder text) inside the trigger. |\n| `country-prefix` | Optional country adornment slot wrapper. |\n| `country-select` | The native country selector, stretched invisibly over the trigger. |\n| `country-trigger` | The visible, decorative closed-state trigger. |\n| `error` | The error or validation message. |\n| `expand-icon` | The dropdown indicator inside the trigger. |\n| `flag` | The selected country's `<lr-flag>` inside the trigger (only with `flags`). |\n| `form-control` | The outer form-control wrapper. |\n| `form-control-label` | The visible label. |\n| `hint` | The hint message. |\n| `input` | The native telephone input. |\n| `input-wrapper` | The country selector and telephone input wrapper. |",
11168
+ "description": "`<lr-phone-input>` — a country-aware telephone field whose form value is\ncanonical E.164. National formatting and numbering-plan validation are\nsupplied through `adapter`; without one, already-international E.164 input\nremains useful and national input stays editable with `incomplete` validity.\n\nUser edits emit native-style `input` and `change` events. Event detail\nexposes both the canonical `value` and editable `inputValue`; programmatic\nproperty changes are silent. Phone-number text is deliberately LTR while\nthe form chrome and country selector follow the inherited direction. A host\n`aria-label` names the internal telephone input and wins over every derived\nor component-specific fallback.\n\nThe country selector keeps the real, fully accessible native `<select>`\n(full country names in its popup, native mobile pickers, type-ahead) but\nrenders it invisibly over a compact visual trigger — selected alpha-2 code\nplus a design-system chevron — so long localized country names never clip\nthe closed control and the calling code isn't shown twice. With `flags`\nset, the trigger also shows the selected country's `<lr-flag>`; actual flag\nartwork still comes from the optional `@aceshooting/lyra-flags` peer,\nregistered by the consumer via `components/media/flag/flag-peer.js`\nexactly as for a standalone `<lr-flag>` (without that registration the\ntrigger simply omits the image). Native `<option>`s cannot contain\nelements, so the open popup remains text-only by platform design.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `country-prefix` | Optional visual displayed before the country selector, such as a flag. |\n| `error` | Custom error content. |\n| `hint` | Custom hint content. |\n| `label` | Custom label content. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `calling-code` | The selected country's calling code. |\n| `country` | The country selector region (invisible native select over the visual trigger). |\n| `country-code` | The selected alpha-2 code (or placeholder text) inside the trigger. |\n| `country-prefix` | Optional country adornment slot wrapper. |\n| `country-select` | The native country selector, stretched invisibly over the trigger. |\n| `country-trigger` | The visible, decorative closed-state trigger. |\n| `error` | The error or validation message. |\n| `expand-icon` | The dropdown indicator inside the trigger. |\n| `flag` | The selected country's `<lr-flag>` inside the trigger (only with `flags`). |\n| `form-control` | The outer form-control wrapper. |\n| `form-control-label` | The visible label. |\n| `hint` | The hint message. |\n| `input` | The native telephone input. |\n| `input-wrapper` | The country selector and telephone input wrapper. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-phone-input-padding-block` — Input block-padding, scaled by `size`.\n- `--lr-phone-input-font-size` — Input/flag/country-code/calling-code font size, scaled by `size`.\n- `--lr-phone-input-control-min-height` — Input-wrapper block-size floor, scaled by `size`.\n- `--lr-phone-input-control-height` — Exact input-wrapper height. Unset by default, which leaves `--lr-phone-input-control-min-height` as a floor only; set it to a length to both floor and cap the row (e.g. to pixel-match a sibling field in the same toolbar row). Because it is never declared by the component itself, it can be set from an ancestor or an outer-tree rule as well as inline on the element.",
10782
11169
  "attributes": [
10783
11170
  {
10784
11171
  "name": "aria-label",
@@ -10838,6 +11225,15 @@
10838
11225
  ]
10839
11226
  }
10840
11227
  },
11228
+ {
11229
+ "name": "disabled",
11230
+ "description": "Type: `boolean`",
11231
+ "value": {
11232
+ "type": [
11233
+ "boolean"
11234
+ ]
11235
+ }
11236
+ },
10841
11237
  {
10842
11238
  "name": "enterkeyhint",
10843
11239
  "description": "Type: `string` \nDefault: `''`",
@@ -10915,20 +11311,47 @@
10915
11311
  }
10916
11312
  },
10917
11313
  {
10918
- "name": "phone-label",
10919
- "description": "Accessible-name override for the telephone input.\n\nType: `string` \nDefault: `''`",
11314
+ "name": "name",
11315
+ "description": "Type: `string`",
11316
+ "value": {
11317
+ "type": [
11318
+ "string"
11319
+ ]
11320
+ }
11321
+ },
11322
+ {
11323
+ "name": "phone-label",
11324
+ "description": "Accessible-name override for the telephone input.\n\nType: `string` \nDefault: `''`",
11325
+ "value": {
11326
+ "type": [
11327
+ "string"
11328
+ ]
11329
+ }
11330
+ },
11331
+ {
11332
+ "name": "placeholder",
11333
+ "description": "Type: `string` \nDefault: `''`",
11334
+ "value": {
11335
+ "type": [
11336
+ "string"
11337
+ ]
11338
+ }
11339
+ },
11340
+ {
11341
+ "name": "required",
11342
+ "description": "Type: `boolean`",
10920
11343
  "value": {
10921
11344
  "type": [
10922
- "string"
11345
+ "boolean"
10923
11346
  ]
10924
11347
  }
10925
11348
  },
10926
11349
  {
10927
- "name": "placeholder",
10928
- "description": "Type: `string` \nDefault: `''`",
11350
+ "name": "size",
11351
+ "description": "Visual size — same `2xs`–`xl` scale as `lr-input`'s own `size`.\n\nType: `LyraPhoneInputSize` \nDefault: `'m'`",
10929
11352
  "value": {
10930
11353
  "type": [
10931
- "string"
11354
+ "LyraPhoneInputSize"
10932
11355
  ]
10933
11356
  }
10934
11357
  },
@@ -11410,7 +11833,12 @@
11410
11833
  },
11411
11834
  {
11412
11835
  "name": "popup-role",
11413
- "description": "Semantic role used by the popup. Dropdown subclasses set this to `menu`.\n\nType: `'dialog' | 'menu'` \nDefault: `'dialog'`"
11836
+ "description": "Semantic role used by the popup. Dropdown subclasses set this to `menu`.\n\nType: `LyraPopupRole` \nDefault: `'dialog'`",
11837
+ "value": {
11838
+ "type": [
11839
+ "LyraPopupRole"
11840
+ ]
11841
+ }
11414
11842
  }
11415
11843
  ]
11416
11844
  },
@@ -12224,6 +12652,76 @@
12224
12652
  }
12225
12653
  ]
12226
12654
  },
12655
+ {
12656
+ "name": "lr-reorder-item",
12657
+ "description": "`<lr-reorder-item>` — one row inside `<lr-reorder-list>`. Renders arbitrary slotted content plus\nmove-up/move-down buttons. This item alone doesn't know whether it's first or last in the list,\nso its boundary-disabled state (`atStart`/`atEnd`), list-level cascade (`listDisabled`), and\nheld-move state (`pending`) are all pushed down by the parent `<lr-reorder-list>` — normally\nset internally, not by consumers.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | Arbitrary row content (a label, a mini-form, anything). |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The row's root wrapper. |\n| `content` | Wrapper around the default slot. |\n| `move-down-button` | The move-down button. |\n| `move-up-button` | The move-up button. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-reorder-item-gap` (default: `var(--lr-space-xs)`) — Gap between the move buttons and content.",
12658
+ "attributes": [
12659
+ {
12660
+ "name": "disabled",
12661
+ "description": "Disables this row's own move-up/move-down buttons without removing it or its slotted content\nfrom the DOM. Does not gate the default slot's own content.\n\nType: `boolean` \nDefault: `false`",
12662
+ "value": {
12663
+ "type": [
12664
+ "boolean"
12665
+ ]
12666
+ }
12667
+ },
12668
+ {
12669
+ "name": "locale",
12670
+ "description": "Optional locale override. Otherwise the nearest `locale`/`lang` ancestor is used.\n\nType: `string` \nDefault: `''`",
12671
+ "value": {
12672
+ "type": [
12673
+ "string"
12674
+ ]
12675
+ }
12676
+ },
12677
+ {
12678
+ "name": "pending",
12679
+ "description": "Whether this item's move is currently held pending host resolution, after an `lr-reorder`\nlistener on the parent `<lr-reorder-list>` called `preventDefault()`. Purely informational —\nit does not itself disable this item's move buttons (the list already refuses to start any\nfurther move while one is pending, so a second click here is already a no-op); style it via\n`lr-reorder-item[pending]` if desired. Pushed down by `<lr-reorder-list>`; normally set\ninternally, not by consumers.\n\nType: `boolean` \nDefault: `false`",
12680
+ "value": {
12681
+ "type": [
12682
+ "boolean"
12683
+ ]
12684
+ }
12685
+ },
12686
+ {
12687
+ "name": "value",
12688
+ "description": "Stable identifier included in the parent list's emitted `lr-reorder` order array. Falls back\nto this item's live DOM-position index (stringified) when unset — a consumer that cares about\nstable identity across moves should set this explicitly, since the fallback string changes as\nthe item's position changes.\n\nType: `string | undefined`"
12689
+ }
12690
+ ]
12691
+ },
12692
+ {
12693
+ "name": "lr-reorder-list",
12694
+ "description": "`<lr-reorder-list>` — a generic vertical list of `<lr-reorder-item>` rows, reorderable via\nper-row move-up/move-down buttons (always available) or Ctrl/Cmd+ArrowUp/ArrowDown from focus\nanywhere inside a row — the same modifier convention `<lr-tree>`'s `reorderable` and\n`<lr-dashboard-grid>`'s `cells-draggable` already establish.\n\nUnlike `<lr-tree>`'s `reorderable` mode (a *controlled* request — `data` is host-owned and\nnothing moves until the host reassigns it), this list physically moves its own slotted\n`<lr-reorder-item>` light-DOM nodes itself. That is a deliberate difference, not an\ninconsistency: `<lr-tree>` re-derives its child elements from a `data` array prop on every\nrender, so a direct DOM move there would just be overwritten on the next render — it must stay\ncontrolled. This list has no such data-array prop; its children are plain author-authored\nslotted content with nothing to reconcile against, so DOM order genuinely is the source of\ntruth (the same principle `<lr-tree>` relies on for its own children). The `lr-reorder` event\nstill tells the host the resulting order, so it can persist it without hand-rolling its own\nsplice/resort logic.\n\nAn `lr-reorder` listener can call `preventDefault()` to hold a move open while its own async\nwork (e.g. a network call persisting the new order) is in flight -- the same\ncancelable-event-plus-host-resolvable-pending-state pattern `<lr-confirm-bar>` and\n`<lr-tool-approval-dialog>` already establish for their own approve/deny decisions.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | `<lr-reorder-item>` elements. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The list's root wrapper (`role=\"list\"`). |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-reorder-list-gap` (default: `var(--lr-space-2xs)`) — Gap between rows.",
12695
+ "attributes": [
12696
+ {
12697
+ "name": "disabled",
12698
+ "description": "Disables every item's move-up/move-down buttons and the Ctrl/Cmd+Arrow shortcut, without\nremoving any item from the DOM or mutating any item's own `disabled` attribute.\n\nType: `boolean` \nDefault: `false`",
12699
+ "value": {
12700
+ "type": [
12701
+ "boolean"
12702
+ ]
12703
+ }
12704
+ },
12705
+ {
12706
+ "name": "label",
12707
+ "description": "Accessible name for the list, set as `aria-label` on the internal `role=\"list\"` element. A\nplain `aria-label` attribute on the host itself is honored as a fallback when this is left\nunset, matching `<lr-control-group>`. Native lists don't require an accessible name, so this\nhas no forced fallback string when both are left unset.\n\nType: `string` \nDefault: `''`",
12708
+ "value": {
12709
+ "type": [
12710
+ "string"
12711
+ ]
12712
+ }
12713
+ },
12714
+ {
12715
+ "name": "locale",
12716
+ "description": "Optional locale override. Otherwise the nearest `locale`/`lang` ancestor is used.\n\nType: `string` \nDefault: `''`",
12717
+ "value": {
12718
+ "type": [
12719
+ "string"
12720
+ ]
12721
+ }
12722
+ }
12723
+ ]
12724
+ },
12227
12725
  {
12228
12726
  "name": "lr-resize-observer",
12229
12727
  "description": "`<lr-resize-observer>` — observes the first-party or consumer-owned\nelements in its default slot and emits typed resize entries. The wrapper has\nno visual layout of its own (`display: contents`).\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | Elements to observe. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The non-layout wrapper around the observed slot. |",
@@ -12429,7 +12927,12 @@
12429
12927
  },
12430
12928
  {
12431
12929
  "name": "grouping",
12432
- "description": "`'source'` buckets rows under a header per `source.id` (always rendered through the internal\n`<lr-virtual-list>`, regardless of `virtualize-at`); `'none'` (default) is a flat ranked list.\n\nType: `'source' | 'none'` \nDefault: `'none'`"
12930
+ "description": "`'source'` buckets rows under a header per `source.id` (always rendered through the internal\n`<lr-virtual-list>`, regardless of `virtualize-at`); `'none'` (default) is a flat ranked list.\n\nType: `RetrievalResultsGrouping` \nDefault: `'none'`",
12931
+ "value": {
12932
+ "type": [
12933
+ "RetrievalResultsGrouping"
12934
+ ]
12935
+ }
12433
12936
  },
12434
12937
  {
12435
12938
  "name": "has-more",
@@ -12469,7 +12972,12 @@
12469
12972
  },
12470
12973
  {
12471
12974
  "name": "presentation",
12472
- "description": "`'expanded'` (default) shows each chunk's full `<lr-chunk-inspector>` row (score bar, text\npreview with its own expand toggle) plus any `metadata`; `'compact'` shows title + score bar\nonly, on both.\n\nType: `'compact' | 'expanded'` \nDefault: `'expanded'`"
12975
+ "description": "`'expanded'` (default) shows each chunk's full `<lr-chunk-inspector>` row (score bar, text\npreview with its own expand toggle) plus any `metadata`; `'compact'` shows title + score bar\nonly, on both.\n\nType: `RetrievalResultsPresentation` \nDefault: `'expanded'`",
12976
+ "value": {
12977
+ "type": [
12978
+ "RetrievalResultsPresentation"
12979
+ ]
12980
+ }
12473
12981
  },
12474
12982
  {
12475
12983
  "name": "selectable",
@@ -12919,7 +13427,7 @@
12919
13427
  },
12920
13428
  {
12921
13429
  "name": "lr-select",
12922
- "description": "`<lr-select>` — a plain closed-list dropdown: a direct `<lr-*>`\ncounterpart to `<wa-select>`/`<wa-option>`. Trigger is a button (not a text\ninput) -- click/Enter/Space/ArrowDown opens it, there's no typing-to-filter.\nA printable keypress instead jumps (or, while closed, directly selects) the\nnext option whose label starts with what's been typed, like a native\n`<select>`'s type-ahead.\n\nOptions are `<lr-option value>` children, the same element `<lr-combobox>`\nuses. Unlike `lr-combobox` this is single-select only, with no filter/\nsource/with-clear/max-options-visible/empty-text/max-render/multiple surface\n-- see `<lr-combobox>` for the filterable/multi-select case.\n\nReuses `lr-combobox`'s popup positioning (`internal/positioner.js`) and\nclick-outside/Escape/Home/End/Arrow-key listbox navigation patterns,\nadapted to a trigger button that keeps DOM focus throughout (the listbox's\n\"active\" row is conveyed via `aria-activedescendant`, never actual focus),\nmatching the WAI-ARIA \"select-only combobox\" pattern.\n\nWhen `autoCommitSingleOption` is set and exactly one option is enabled\n(regardless of how many disabled ones exist alongside it), the popup never\nopens at all: a click, Enter, Space, ArrowDown, or ArrowUp on the trigger\ncommits that sole option directly, and the trigger renders as a plain\n`role=\"button\"` with no chevron/`aria-haspopup`/`aria-expanded` rather than\na combobox with a permanently inert popup state — opening a one-row list to\npick the only available choice is pure friction with no real decision\nbehind it. This never changes `value`/validity defaults on its own — an\nunselected single-option select stays unselected (and a `required` one\nstays invalid) exactly like the multi-option case, until the trigger is\nactually activated. `autoCommitSingleOption` defaults to `false`: by\ndefault a select always renders the normal combobox/listbox/chevron\ntrigger no matter how many options are enabled, matching pre-1.3.0\nbehavior — opt in explicitly if a narrowing-to-one option list should\nauto-commit.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | `<lr-option>` elements. |\n| `end` | Adornment after the selected-value label and before the expand icon. |\n| `error` | Custom error content. |\n| `hint` | Custom hint content. |\n| `label` | Custom label content. |\n| `start` | Adornment at the inline-start of the trigger row, before the selected-value label. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `end` | Wrapper around the `end` adornment slot; `hidden` while nothing is slotted. |\n| `error` | The error message. |\n| `expand-icon` | The dropdown indicator. |\n| `form-control` | The outer wrapper around label, trigger, listbox, error and hint. |\n| `form-control-label` | The `<label>` element. |\n| `group-label` | An option group's heading row (shown when any option declares a `group`). |\n| `hint` | The hint message. |\n| `listbox` | The options popover. |\n| `option` | An option row. |\n| `option-dot` | An option row's leading status dot (when `dot-color` is set). |\n| `option-label` | An option row's label/sub wrapper. |\n| `option-sub` | An option row's secondary line (when `sub` is set). |\n| `start` | Wrapper around the `start` adornment slot; `hidden` while nothing is slotted. |\n| `trigger` | The trigger button (positioning anchor). |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-select-expand-size` — Decorative expand-icon box size, scaled by `size`.\n- `--lr-select-trigger-padding` — Trigger padding shorthand, scaled by `size`.\n- `--lr-select-trigger-min-height` — Trigger block-size floor, scaled by `size`, and live at every tier including the default `m` (`2.5rem`, matching `<lr-input>`/`<lr-combobox>` at that tier).\n- `--lr-select-font-size` — Trigger font size, scaled by `size`.\n- `--lr-select-option-active-bg` (default: `var(--lr-color-brand-quiet)`) — Background of the hovered/keyboard-active option row. Not declared on `:host`, so a value set on any ancestor is never shadowed -- retheme just this row state without hijacking the shared `--lr-color-brand-quiet` token used by every other component's own hover/active state.\n- `--lr-select-trigger-height` — Exact trigger height. Unset by default, which leaves `--lr-select-trigger-min-height` as a floor only; set it to a length to both floor and cap the trigger (e.g. to pixel-match a sibling field in the same toolbar row). Because it is never declared by the component itself, it can be set from an ancestor or an outer-tree rule as well as inline on the element.",
13430
+ "description": "`<lr-select>` — a plain closed-list dropdown: a direct `<lr-*>`\ncounterpart to `<wa-select>`/`<wa-option>`. Trigger is a button (not a text\ninput) -- click/Enter/Space/ArrowDown opens it, there's no typing-to-filter.\nA printable keypress instead jumps (or, while closed, directly selects) the\nnext option whose label starts with what's been typed, like a native\n`<select>`'s type-ahead.\n\nOptions are `<lr-option value>` children, the same element `<lr-combobox>`\nuses. Unlike `lr-combobox` this is single-select only, with no filter/\nsource/with-clear/max-options-visible/empty-text/max-render/multiple surface\n-- see `<lr-combobox>` for the filterable/multi-select case.\n\nReuses `lr-combobox`'s popup positioning (`internal/positioner.js`) and\nclick-outside/Escape/Home/End/Arrow-key listbox navigation patterns,\nadapted to a trigger button that keeps DOM focus throughout (the listbox's\n\"active\" row is conveyed via `aria-activedescendant`, never actual focus),\nmatching the WAI-ARIA \"select-only combobox\" pattern.\n\nWhen `autoCommitSingleOption` is set and exactly one option is enabled\n(regardless of how many disabled ones exist alongside it), the popup never\nopens at all: a click, Enter, Space, ArrowDown, or ArrowUp on the trigger\ncommits that sole option directly, and the trigger renders as a plain\n`role=\"button\"` with no chevron/`aria-haspopup`/`aria-expanded` rather than\na combobox with a permanently inert popup state — opening a one-row list to\npick the only available choice is pure friction with no real decision\nbehind it. This never changes `value`/validity defaults on its own — an\nunselected single-option select stays unselected (and a `required` one\nstays invalid) exactly like the multi-option case, until the trigger is\nactually activated. `autoCommitSingleOption` defaults to `false`: by\ndefault a select always renders the normal combobox/listbox/chevron\ntrigger no matter how many options are enabled, matching pre-1.3.0\nbehavior — opt in explicitly if a narrowing-to-one option list should\nauto-commit.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | `<lr-option>` elements. |\n| `end` | Adornment after the selected-value label and before the expand icon. |\n| `error` | Custom error content. |\n| `hint` | Custom hint content. |\n| `label` | Custom label content. |\n| `start` | Adornment at the inline-start of the trigger row, before the selected-value label. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `end` | Wrapper around the `end` adornment slot; `hidden` while nothing is slotted. |\n| `error` | The error message. |\n| `expand-icon` | The dropdown indicator. |\n| `form-control` | The outer wrapper around label, trigger, listbox, error and hint. |\n| `form-control-label` | The `<label>` element. |\n| `group-label` | An option group's heading row (shown when any option declares a `group`). |\n| `hint` | The hint message. |\n| `listbox` | The options popover. |\n| `option` | An option row. |\n| `option-dot` | An option row's leading status dot (when `dot-color` is set). |\n| `option-label` | An option row's label/sub wrapper. |\n| `option-sub` | An option row's secondary line (when `sub` is set). |\n| `start` | Wrapper around the `start` adornment slot; `hidden` while nothing is slotted. |\n| `trigger` | The trigger button (positioning anchor). |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-select-expand-size` — Decorative expand-icon box size, scaled by `size`.\n- `--lr-select-gap` — Gap between the trigger's start adornment, label, end adornment, and expand icon. Doesn't vary by `size`.\n- `--lr-select-radius` — Trigger corner radius. Doesn't vary by `size`.\n- `--lr-select-trigger-padding` — Trigger padding shorthand, scaled by `size`.\n- `--lr-select-trigger-min-height` — Trigger block-size floor, scaled by `size`, and live at every tier including the default `m` (`2.5rem`, matching `<lr-input>`/`<lr-combobox>` at that tier).\n- `--lr-select-font-size` — Trigger font size, scaled by `size`.\n- `--lr-select-option-active-bg` (default: `var(--lr-color-brand-quiet)`) — Background of the hovered/keyboard-active option row. Not declared on `:host`, so a value set on any ancestor is never shadowed -- retheme just this row state without hijacking the shared `--lr-color-brand-quiet` token used by every other component's own hover/active state.\n- `--lr-select-trigger-height` — Exact trigger height. Unset by default, which leaves `--lr-select-trigger-min-height` as a floor only; set it to a length to both floor and cap the trigger (e.g. to pixel-match a sibling field in the same toolbar row). Because it is never declared by the component itself, it can be set from an ancestor or an outer-tree rule as well as inline on the element.",
12923
13431
  "attributes": [
12924
13432
  {
12925
13433
  "name": "auto-commit-single-option",
@@ -13013,7 +13521,7 @@
13013
13521
  },
13014
13522
  {
13015
13523
  "name": "size",
13016
- "description": "Visual size — same `xs`–`xl` scale as `lr-toast-item`'s `size`.\n\nType: `LyraSelectSize` \nDefault: `'m'`",
13524
+ "description": "Visual size — same `2xs`–`xl` scale as `lr-input`/`lr-combobox`/`lr-locale-picker`'s own `size`.\n\nType: `LyraSelectSize` \nDefault: `'m'`",
13017
13525
  "value": {
13018
13526
  "type": [
13019
13527
  "LyraSelectSize"
@@ -13130,6 +13638,15 @@
13130
13638
  "name": "lr-slider",
13131
13639
  "description": "`<lr-slider>` — a numeric range control (e.g. an LLM \"temperature\"\nsetting), form-associated. Mirrors native `<input type=\"range\">`\nsemantics: `value` is the string form-submitted via `FormAssociated`,\n`valueAsNumber` is the ergonomic numeric accessor (mirroring the native\n`<input type=range>` IDL attribute of the same name) kept in sync with it\nin both directions — reads parse `value`, writes stringify back to it.\n\nUnlike the mixin's other consumers, an unset `value` is eagerly defaulted\n— on connect, and again after `form.reset()` — to the midpoint of\n`[min, max]` snapped to `step`, the same \"range sanitization algorithm\"\ndefault a native range input applies. A slider always represents *some*\nnumber, so `required` (inherited from `FormAssociated`) only has a window\nto block submission before that default lands, matching how `required`\nisn't a meaningful constraint on a native range input either.\n\nClicking anywhere on the track (not just the 16px thumb) jumps the thumb\nto that point and continues the same gesture as a drag, matching native\n`<input type=range>` click-to-seek.\n\nDeliberately no label/hint/error chrome -- `label` here is an accessible-name override, not\nvisible label text; a labeled-field consumer wraps this element in their own layout.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The row wrapping the track and the optional value readout. |\n| `fill` | The filled portion of the track from `min` up to the current value. |\n| `thumb` | The draggable handle (`role=\"slider\"`). |\n| `track` | The full-width background line. |\n| `value` | The visible numeric readout, rendered when `show-value` is true. |",
13132
13640
  "attributes": [
13641
+ {
13642
+ "name": "disabled",
13643
+ "description": "Type: `boolean`",
13644
+ "value": {
13645
+ "type": [
13646
+ "boolean"
13647
+ ]
13648
+ }
13649
+ },
13133
13650
  {
13134
13651
  "name": "label",
13135
13652
  "description": "Accessible name for the slider, used when no visible label context\nexists around it (e.g. no wrapping `<label>` or adjacent heading). Set\nas `aria-label` on the interactive `role=\"slider\"` element. A plain\n`aria-label` attribute on the host itself is honored as a fallback when\nthis is left unset, matching `<lr-checkbox>`/`<lr-switch>`; with\nneither, the localized generic `sliderLabel` message applies so the\nfocusable thumb is never nameless (the same pattern as\n`<lr-input>`/`<lr-textarea>`'s built-in generic labels).\n\nType: `string` \nDefault: `''`",
@@ -13166,6 +13683,24 @@
13166
13683
  ]
13167
13684
  }
13168
13685
  },
13686
+ {
13687
+ "name": "name",
13688
+ "description": "Type: `string`",
13689
+ "value": {
13690
+ "type": [
13691
+ "string"
13692
+ ]
13693
+ }
13694
+ },
13695
+ {
13696
+ "name": "required",
13697
+ "description": "Type: `boolean`",
13698
+ "value": {
13699
+ "type": [
13700
+ "boolean"
13701
+ ]
13702
+ }
13703
+ },
13169
13704
  {
13170
13705
  "name": "show-value",
13171
13706
  "description": "Whether to render the current numeric value as visible text next to the track. Defaults to\n`true`; uses `trueDefaultBooleanConverter` (like `<lr-agent-run>`'s `show-cancel`/\n`show-retry`) rather than Lit's default presence-based `type: Boolean` converter, so a plain\nHTML `show-value=\"false\"` content attribute actually turns it off, not just a\n`.showValue=${false}` property binding.\n\nType: `boolean` \nDefault: `true`",
@@ -14009,7 +14544,7 @@
14009
14544
  },
14010
14545
  {
14011
14546
  "name": "lr-swatch-picker",
14012
- "description": "`<lr-swatch-picker>` -- a single-select picker over a small, fixed set of color swatches with\nthe WAI-ARIA APG `radiogroup` contract built in: `role=\"radiogroup\"`/`role=\"radio\"`, roving\ntabindex, automatic activation (click or arrow-key move both select immediately, like a native\nradio group), cyclic Arrow/Home/End navigation. Distinct from `<lr-color-picker>`'s freeform\nnative color input -- this picks exactly one of N designer-chosen named colors, the shape apps\notherwise hand-roll as a row of round accent-color buttons.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The `role=\"radiogroup\"` root. |\n| `swatch` | A single `role=\"radio\"` color swatch's interactive hit target; sized to the shared minimum tappable size (`--lr-icon-button-size`), independent of the smaller visible fill/icon rendered inside it. The selected one is `[part='swatch'][aria-checked='true']`. |\n| `swatch-fill` | The compact filled circle rendered when the option has no custom `icon`. |\n| `swatch-icon` | Optional custom shape supplied by the option's `icon` field; when present it replaces `swatch-fill` and the swatch renders unfilled/unbordered behind it. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-swatch-picker-selected-color` (default: `var(--lr-color-brand)`) — Ring color drawn around the selected swatch, themeable independently of the focus ring and every other ring color.\n- `--lr-swatch-picker-selected-blur` (default: `0`) — Blur radius of that same ring. 0 by default (a crisp ring); set a real length (e.g. 0.4rem) for a soft glow instead.\n- `--lr-swatch-picker-shine-duration` (default: `0s`) — Duration of a rhythmic brighten-and-settle \"shine\" on the selected swatch. `0s` (the default) is a no-op -- today's static look for every existing consumer. Set a real duration (e.g. 1.6s) for a pulsing shine; disabled outright under `prefers-reduced-motion: reduce`. Independent of `--lr-swatch-picker-selected-blur` (a separate `filter: brightness()` animation, not `box-shadow`), so the two compose freely, and works identically for a plain color circle and an icon swatch alike.",
14547
+ "description": "`<lr-swatch-picker>` -- a single-select picker over a small, fixed set of color swatches with\nthe WAI-ARIA APG `radiogroup` contract built in: `role=\"radiogroup\"`/`role=\"radio\"`, roving\ntabindex, automatic activation (click or arrow-key move both select immediately, like a native\nradio group), cyclic Arrow/Home/End navigation. Distinct from `<lr-color-picker>`'s freeform\nnative color input -- this picks exactly one of N designer-chosen named colors, the shape apps\notherwise hand-roll as a row of round accent-color buttons.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The `role=\"radiogroup\"` root. |\n| `swatch` | A single `role=\"radio\"` color swatch's interactive hit target; sized via `--lr-swatch-picker-hit-size` (defaults to `--lr-size-2-5rem`, swapped per `size` tier and floored at 24px), independent of the smaller visible fill/icon rendered inside it. The selected one is `[part='swatch'][aria-checked='true']`. |\n| `swatch-fill` | The compact filled circle rendered when the option has no custom `icon`. |\n| `swatch-icon` | Optional custom shape supplied by the option's `icon` field; when present it replaces `swatch-fill` and the swatch renders unfilled/unbordered behind it. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-swatch-picker-selected-color` (default: `var(--lr-color-brand)`) — Ring color drawn around the selected swatch, themeable independently of the focus ring and every other ring color.\n- `--lr-swatch-picker-selected-blur` (default: `0`) — Blur radius of that same ring. 0 by default (a crisp ring); set a real length (e.g. 0.4rem) for a soft glow instead.\n- `--lr-swatch-picker-shine-duration` (default: `0s`) — Duration of a rhythmic brighten-and-settle \"shine\" on the selected swatch. `0s` (the default) is a no-op -- today's static look for every existing consumer. Set a real duration (e.g. 1.6s) for a pulsing shine; disabled outright under `prefers-reduced-motion: reduce`. Independent of `--lr-swatch-picker-selected-blur` (a separate `filter: brightness()` animation, not `box-shadow`), so the two compose freely, and works identically for a plain color circle and an icon swatch alike.\n- `--lr-swatch-picker-hit-size` (default: `var(--lr-size-2-5rem)`) — Hit-area size (both min-inline-size and min-block-size) for the swatch button, swapped per tier and floored at 24px.\n- `--lr-swatch-picker-fill-size` (default: `var(--lr-size-1-5rem)`) — Visible fill/icon diameter for the swatch, swapped per tier.",
14013
14548
  "attributes": [
14014
14549
  {
14015
14550
  "name": "label",
@@ -14029,6 +14564,15 @@
14029
14564
  ]
14030
14565
  }
14031
14566
  },
14567
+ {
14568
+ "name": "size",
14569
+ "description": "Visual size — scales the swatch hit-area and fill diameter proportionally, hit-area\nfloored at 24px (WCAG 2.5.8); not pixel-matched to `lr-input`'s row-height scale.\n\nType: `LyraSwatchPickerSize` \nDefault: `'m'`",
14570
+ "value": {
14571
+ "type": [
14572
+ "LyraSwatchPickerSize"
14573
+ ]
14574
+ }
14575
+ },
14032
14576
  {
14033
14577
  "name": "value",
14034
14578
  "description": "The currently selected option's `value`, or `null` when nothing is selected.\n\nType: `string | null` \nDefault: `null`"
@@ -14320,7 +14864,12 @@
14320
14864
  },
14321
14865
  {
14322
14866
  "name": "selection-mode",
14323
- "description": "Type: `'none' | 'single' | 'multiple'` \nDefault: `'none'`"
14867
+ "description": "Type: `TableSelectionMode` \nDefault: `'none'`",
14868
+ "value": {
14869
+ "type": [
14870
+ "TableSelectionMode"
14871
+ ]
14872
+ }
14324
14873
  },
14325
14874
  {
14326
14875
  "name": "show-all-columns",
@@ -14403,7 +14952,7 @@
14403
14952
  },
14404
14953
  {
14405
14954
  "name": "lr-tag",
14406
- "description": "`<lr-tag>` — a semantic alias for the compact badge treatment.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | Badge content. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The badge surface. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-badge-background` (default: `var(--lr-color-surface)`) — The badge's background. Each non-neutral `variant` sets it to that variant's `-quiet` tint.\n- `--lr-badge-border` (default: `var(--lr-color-border)`) — The badge's border color. Each non-neutral `variant` sets it to that variant's loud color.\n- `--lr-badge-color` (default: `var(--lr-color-text)`) — The badge's text color. Each non-neutral `variant` sets it to that variant's loud color.\n- `--lr-badge-font-size` (default: `var(--lr-font-size-sm)`) — The badge's label font size. Each `size` sets it to that step's font size.\n- `--lr-badge-padding-inline` (default: `var(--lr-space-s)`) — The badge's inline padding. Each `size` sets it to that step's inline padding.\n- `--lr-badge-min-height` (default: `var(--lr-size-1-25rem)`) — The badge's minimum block size. Each `size` sets it to that step's minimum block size.",
14955
+ "description": "`<lr-tag>` — a semantic alias for the compact badge treatment.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | Badge content. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The badge surface. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-badge-background` (default: `var(--lr-color-surface)`) — The badge's background. Each non-neutral `variant` sets it to that variant's `-quiet` tint.\n- `--lr-badge-border` (default: `var(--lr-color-border)`) — The badge's border color. Each non-neutral `variant` sets it to that variant's loud color.\n- `--lr-badge-color` (default: `var(--lr-color-text)`) — The badge's text color. Each non-neutral `variant` sets it to that variant's loud color.\n- `--lr-badge-font-size` (default: `var(--lr-font-size-sm)`) — The badge's label font size. Each `size` sets it to that step's font size.\n- `--lr-badge-padding-inline` (default: `var(--lr-space-s)`) — The badge's inline padding. Each `size` sets it to that step's inline padding.\n- `--lr-badge-min-height` (default: `var(--lr-size-1-25rem)`) — The badge's minimum block size. Each `size` sets it to that step's minimum block size.\n- `--lr-badge-radius` (default: `var(--lr-radius-pill)`) — Corner radius of the badge surface. Does not vary by `size` tier.",
14407
14956
  "attributes": [
14408
14957
  {
14409
14958
  "name": "locale",
@@ -14649,6 +15198,15 @@
14649
15198
  ]
14650
15199
  }
14651
15200
  },
15201
+ {
15202
+ "name": "disabled",
15203
+ "description": "Type: `boolean`",
15204
+ "value": {
15205
+ "type": [
15206
+ "boolean"
15207
+ ]
15208
+ }
15209
+ },
14652
15210
  {
14653
15211
  "name": "enterkeyhint",
14654
15212
  "description": "Type: `string` \nDefault: `''`",
@@ -14703,6 +15261,15 @@
14703
15261
  ]
14704
15262
  }
14705
15263
  },
15264
+ {
15265
+ "name": "name",
15266
+ "description": "Type: `string`",
15267
+ "value": {
15268
+ "type": [
15269
+ "string"
15270
+ ]
15271
+ }
15272
+ },
14706
15273
  {
14707
15274
  "name": "placeholder",
14708
15275
  "description": "Type: `string` \nDefault: `''`",
@@ -14712,6 +15279,15 @@
14712
15279
  ]
14713
15280
  }
14714
15281
  },
15282
+ {
15283
+ "name": "required",
15284
+ "description": "Type: `boolean`",
15285
+ "value": {
15286
+ "type": [
15287
+ "boolean"
15288
+ ]
15289
+ }
15290
+ },
14715
15291
  {
14716
15292
  "name": "resize",
14717
15293
  "description": "Native CSS `resize` behavior for the textarea, plus `'auto'`: a `ResizeObserver`-driven\ngrow-to-content mode with no manual drag handle (mirrors `wa-textarea`'s `resize=\"auto\"`).\n\nType: `TextareaResize` \nDefault: `'vertical'`",
@@ -14798,7 +15374,7 @@
14798
15374
  },
14799
15375
  {
14800
15376
  "name": "lr-thread-list",
14801
- "description": "`<lr-thread-list>` — the conversation sidebar: a grouped, searchable list of chat sessions with\npin/archive/delete/rename affordances. *Data mode* (non-empty `threads`, or empty `threads` with\nnothing slotted) renders every row as a `<lr-conversation-item>` inside an internal\n`<lr-virtual-list>` — virtualized by construction, scroll position and per-row state survive a\n`threads` replacement; zero rows renders the built-in empty state. *Slotted mode* (empty `threads`\n*and* real slotted content) renders host-supplied `<lr-conversation-item>`s from the default slot\nas-is: no grouping, virtualization, or row actions in that mode — those are data-mode-only by design\n(shadow DOM cannot inject group headers between slotted children).\n\nNo thread CRUD or persistence: every mutation (`lr-thread-pin`/`-archive`/`-delete`/`-rename`) is\na controlled event carrying the *requested* new state — the host mutates `threads`.\n\nData mode: a host needing content with no home in `lr-conversation-item`'s own\n`title`/`excerpt`/`meta`/`actions` surface sets `wrapRow` to wrap the already-built row. For\ncommon row composition, `renderLeading`, `renderMeta`, and `renderRowContent` provide focused\nvirtualized render hooks. A host needing a fully custom\n`actions` surface itself — beyond `rowActions`'s closed `pin | archive | delete` set, e.g. a\n`<lr-menu>` with Rename/Delete — sets `renderActions` instead; its content is appended after any\nbuilt-in `rowActions` output in the same slot, and `wrapRow` continues to compose around the result.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | Slotted mode only: host-supplied `lr-conversation-item`s, rendered in order. Each top-level assigned element that doesn't already carry an explicit `role` is given `role=\"listitem\"`, since `[part=\"list\"]` is `role=\"list\"` in this mode and `lr-conversation-item` deliberately doesn't self-apply that role (see its own class doc). |\n| `empty` | Replaces the built-in empty state. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The root. |\n| `empty` | The empty/no-matches state. |\n| `group-header` | A date/custom group header in data mode. |\n| `group-icon` | The decorative expand/collapse glyph. |\n| `group-label` | The group label inside `group-toggle`. |\n| `group-sticky` | `sticky-groups` only: the pinned copy of the current group's header, exported from the internal `lr-virtual-list`'s sticky layer. It wraps a full copy of the `group-header`/`group-toggle`/`group-label`/`group-icon` markup (which therefore styles both the real header row and the pinned copy), and carries `aria-hidden` — style it for the pinned band itself, e.g. a shadow or a border under the band. |\n| `group-toggle` | The controlled group expand/collapse button. |\n| `list` | The list region. |\n| `pin-glyph` | The small pin indicator shown in a pinned row's `meta` slot (data mode). |\n| `row` | Exported from the internal `lr-virtual-list`'s `row` part (data mode). |\n| `row-action` | A built-in pin/archive/delete icon button (data mode, when `rowActions` includes it). |\n| `row-actions` | The wrapper around built-in and `renderActions` output. |\n| `row-content` | The wrapper around `renderRowContent` output. |\n| `row-item-actions` | Data mode: the row item's `actions` wrapper. |\n| `row-item-base` | Data mode: the row `<lr-conversation-item>`'s own `base` part — the box whose padding sets row height. `row-item-*` parts are the item's *internals*; the `row-*` parts above wrap this component's own callback output and are a different surface. Styling row density here replaces the older `::part(row) { --lr-theme-*: … }` workaround, which retheme'd the whole row subtree (`renderActions` popups included). |\n| `row-item-content` | Data mode: the row item's title/excerpt content column. |\n| `row-item-excerpt` | Data mode: the row item's excerpt line. |\n| `row-item-leading` | Data mode: the row item's `leading` wrapper. |\n| `row-item-meta` | Data mode: the row item's `meta` wrapper. |\n| `row-item-option` | Data mode: the row item's selectable `option` region. |\n| `row-item-rename-button` | Data mode: the row item's pencil/rename affordance. |\n| `row-item-timestamp` | Data mode: the row item's `<time>` element. |\n| `row-item-title` | Data mode: the row item's title text. |\n| `row-item-title-input` | Data mode: the row item's in-place rename `<input>`. |\n| `row-leading` | The wrapper around `renderLeading` output. |\n| `row-meta` | A wrapper around built-in or `renderMeta` metadata. |\n| `row-wrapper` | The wrapper around `wrapRow` output (data mode, only when `wrapRow` is set). Row-only: group headers are never passed through `wrapRow`, so they never carry it. |\n| `search` | The search field wrapper. |\n| `search-input` | The `<input type=\"search\">`. |\n| `viewport` | The real scroll container, exported from the internal `lr-virtual-list`. It fills this component's height with no consumer CSS (and falls back to `lr-virtual-list`'s own 24rem `--lr-virtual-list-height` default when the container has no resolvable height). |",
15377
+ "description": "`<lr-thread-list>` — the conversation sidebar: a grouped, searchable list of chat sessions with\npin/archive/delete/rename affordances. *Data mode* (non-empty `threads`, or empty `threads` with\nnothing slotted) renders every row as a `<lr-conversation-item>` inside an internal\n`<lr-virtual-list>` — virtualized by construction, scroll position and per-row state survive a\n`threads` replacement; zero rows renders the built-in empty state. *Slotted mode* (empty `threads`\n*and* real slotted content) renders host-supplied `<lr-conversation-item>`s from the default slot\nas-is: no grouping, virtualization, or row actions in that mode — those are data-mode-only by design\n(shadow DOM cannot inject group headers between slotted children).\n\nNo thread CRUD or persistence: every mutation (`lr-thread-pin`/`-archive`/`-delete`/`-rename`) is\na controlled event carrying the *requested* new state — the host mutates `threads`.\n\nData mode: a host needing content with no home in `lr-conversation-item`'s own\n`title`/`excerpt`/`meta`/`actions` surface sets `wrapRow` to wrap the already-built row. For\ncommon row composition, `renderLeading`, `renderExcerpt`, `renderMeta`, and `renderRowContent`\nprovide focused virtualized render hooks -- `renderExcerpt` renders into the row item's own\n`excerpt` slot (winning over the plain-string `excerpt` property) for rich per-row content such\nas a highlighted search snippet. A host needing a fully custom\n`actions` surface itself — beyond `rowActions`'s closed `pin | archive | delete` set, e.g. a\n`<lr-menu>` with Rename/Delete — sets `renderActions` instead; its content is appended after any\nbuilt-in `rowActions` output in the same slot, and `wrapRow` continues to compose around the result.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| (default) | Slotted mode only: host-supplied `lr-conversation-item`s, rendered in order. Each top-level assigned element that doesn't already carry an explicit `role` is given `role=\"listitem\"`, since `[part=\"list\"]` is `role=\"list\"` in this mode and `lr-conversation-item` deliberately doesn't self-apply that role (see its own class doc). |\n| `empty` | Replaces the built-in empty state. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The root. |\n| `empty` | The empty/no-matches state. |\n| `group-header` | A date/custom group header in data mode. |\n| `group-icon` | The decorative expand/collapse glyph. |\n| `group-label` | The group label inside `group-toggle`. |\n| `group-sticky` | `sticky-groups` only: the pinned copy of the current group's header, exported from the internal `lr-virtual-list`'s sticky layer. It wraps a full copy of the `group-header`/`group-toggle`/`group-label`/`group-icon` markup (which therefore styles both the real header row and the pinned copy), and carries `aria-hidden` — style it for the pinned band itself, e.g. a shadow or a border under the band. |\n| `group-toggle` | The controlled group expand/collapse button. |\n| `list` | The list region. |\n| `pin-glyph` | The small pin indicator shown in a pinned row's `meta` slot (data mode). |\n| `row` | Exported from the internal `lr-virtual-list`'s `row` part (data mode). |\n| `row-action` | A built-in pin/archive/delete icon button (data mode, when `rowActions` includes it). |\n| `row-actions` | The wrapper around built-in and `renderActions` output. |\n| `row-content` | The wrapper around `renderRowContent` output. |\n| `row-excerpt` | The wrapper around `renderExcerpt` output, slotted into the row item's own `excerpt` slot. |\n| `row-item-actions` | Data mode: the row item's `actions` wrapper. |\n| `row-item-base` | Data mode: the row `<lr-conversation-item>`'s own `base` part — the box whose padding sets row height. `row-item-*` parts are the item's *internals*; the `row-*` parts above wrap this component's own callback output and are a different surface. Styling row density here replaces the older `::part(row) { --lr-theme-*: … }` workaround, which retheme'd the whole row subtree (`renderActions` popups included). |\n| `row-item-content` | Data mode: the row item's title/excerpt content column. |\n| `row-item-excerpt` | Data mode: the row item's excerpt line. |\n| `row-item-leading` | Data mode: the row item's `leading` wrapper. |\n| `row-item-meta` | Data mode: the row item's `meta` wrapper. |\n| `row-item-option` | Data mode: the row item's selectable `option` region. |\n| `row-item-rename-button` | Data mode: the row item's pencil/rename affordance. |\n| `row-item-timestamp` | Data mode: the row item's `<time>` element. |\n| `row-item-title` | Data mode: the row item's title text. |\n| `row-item-title-input` | Data mode: the row item's in-place rename `<input>`. |\n| `row-leading` | The wrapper around `renderLeading` output. |\n| `row-meta` | A wrapper around built-in or `renderMeta` metadata. |\n| `row-wrapper` | The wrapper around `wrapRow` output (data mode, only when `wrapRow` is set). Row-only: group headers are never passed through `wrapRow`, so they never carry it. |\n| `search` | The search field wrapper. |\n| `search-input` | The `<input type=\"search\">`. |\n| `viewport` | The real scroll container, exported from the internal `lr-virtual-list`. It fills this component's height with no consumer CSS (and falls back to `lr-virtual-list`'s own 24rem `--lr-virtual-list-height` default when the container has no resolvable height). |",
14802
15378
  "attributes": [
14803
15379
  {
14804
15380
  "name": "active-id",
@@ -14829,7 +15405,12 @@
14829
15405
  },
14830
15406
  {
14831
15407
  "name": "grouping",
14832
- "description": "Data mode: bucket rows under localized date headers, use `groupBy` with `'custom'`, or use\n`'none'` for a flat list in host order.\n\nType: `'date' | 'custom' | 'none'` \nDefault: `'date'`"
15408
+ "description": "Data mode: bucket rows under localized date headers, use `groupBy` with `'custom'`, or use\n`'none'` for a flat list in host order.\n\nType: `ThreadListGrouping` \nDefault: `'date'`",
15409
+ "value": {
15410
+ "type": [
15411
+ "ThreadListGrouping"
15412
+ ]
15413
+ }
14833
15414
  },
14834
15415
  {
14835
15416
  "name": "label",
@@ -14880,7 +15461,7 @@
14880
15461
  },
14881
15462
  {
14882
15463
  "name": "lr-time-input",
14883
- "description": "`<lr-time-input>` — a native time-input alias with Lyra form chrome and events.\n\nAdds no API of its own beyond re-typing the inherited `min`/`max` bounds for time values; every\nother property, event, slot and part is `<lr-input>`'s.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `end` | Adornment after the native input and built-in actions. |\n| `error` | Custom error content. |\n| `hint` | Custom hint content. |\n| `label` | Custom label content. |\n| `start` | Adornment before the native input. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `clear-button` | The clear action, rendered for non-empty clearable text/search inputs. |\n| `end` | Wrapper around the `end` adornment slot. |\n| `error` | The error message. |\n| `form-control` | The outer wrapper around label, input, error and hint. |\n| `form-control-label` | The `<label>` element. |\n| `hint` | The hint message. |\n| `input` | The native `<input>` element. |\n| `input-wrapper` | The row wrapping the native input and the password-toggle button. |\n| `password-toggle` | The show/hide-password button, present only when `type=\"password\"`. |\n| `start` | Wrapper around the `start` adornment slot. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-input-control-min-height` — Outer control height floor, scaled by `size`.\n- `--lr-input-control-height` — Exact outer control height. Unset by default, which leaves `--lr-input-control-min-height` as a floor only; set it to a length to both floor and cap the control row (e.g. to pixel-match `<lr-select>`/`<lr-combobox>` in the same toolbar). Because it is never declared by the component itself, it can be set from an ancestor or an outer-tree rule as well as inline on the element.\n- `--lr-input-padding-block` — Block padding of the native input, scaled by `size`.\n- `--lr-input-padding-inline` — Inline padding of the control row, scaled by `size`.\n- `--lr-input-font-size` — Font size of the native input, scaled by `size`.",
15464
+ "description": "`<lr-time-input>` — a native time-input alias with Lyra form chrome and events.\n\nAdds no API of its own beyond re-typing the inherited `min`/`max` bounds for time values; every\nother property, event, slot and part is `<lr-input>`'s.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `end` | Adornment after the native input and built-in actions. |\n| `error` | Custom error content. |\n| `hint` | Custom hint content. |\n| `label` | Custom label content. |\n| `start` | Adornment before the native input. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `clear-button` | The clear action, rendered for non-empty clearable text/search inputs. |\n| `end` | Wrapper around the `end` adornment slot. |\n| `error` | The error message. |\n| `form-control` | The outer wrapper around label, input, error and hint. |\n| `form-control-label` | The `<label>` element. |\n| `hint` | The hint message. |\n| `input` | The native `<input>` element. |\n| `input-wrapper` | The row wrapping the native input and the password-toggle button. |\n| `password-toggle` | The show/hide-password button, present only when `type=\"password\"`. |\n| `start` | Wrapper around the `start` adornment slot. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-input-control-min-height` — Outer control height floor, scaled by `size`.\n- `--lr-input-control-height` — Exact outer control height. Unset by default, which leaves `--lr-input-control-min-height` as a floor only; set it to a length to both floor and cap the control row (e.g. to pixel-match `<lr-select>`/`<lr-combobox>` in the same toolbar). Because it is never declared by the component itself, it can be set from an ancestor or an outer-tree rule as well as inline on the element.\n- `--lr-input-padding-block` — Block padding of the native input, scaled by `size`.\n- `--lr-input-padding-inline` — Inline padding of the control row, scaled by `size`.\n- `--lr-input-font-size` — Font size of the native input, scaled by `size`.\n- `--lr-input-gap` (default: `var(--lr-space-xs)`) — Gap between the start/end adornments and the native input in the control row. Unlike the size knobs above it does not vary by `size` tier. Override it to retune without a `::part(input-wrapper)` rule.\n- `--lr-input-radius` (default: `var(--lr-radius)`) — Corner radius of the control row. Does not vary by `size` tier.",
14884
15465
  "attributes": [
14885
15466
  {
14886
15467
  "name": "aria-label",
@@ -15046,7 +15627,7 @@
15046
15627
  },
15047
15628
  {
15048
15629
  "name": "lr-time-range",
15049
- "description": "`<lr-time-range>` — a two-handle brush/scrubber over a numeric domain.\nCallers map their own time axis to `[min, max]`; no date logic lives here\n(matches the no-date-library constraint used elsewhere in this library).\n\nOptionally paired with a row of discrete presets (`presets`) — e.g. \"Last\n7 days\" / \"Last 30 days\" — rendered above the track; picking one is just a\nshortcut that sets both handles at once, the continuous brush underneath\nis unaffected and both interaction modes coexist.\n\nForm-associated only for the `<fieldset disabled>` cascade, not for a\nsubmitted value: it attaches `ElementInternals` (like `<lr-combobox>`'s\nminimal pattern, rather than the single-string-value `FormAssociated`\nmixin, which doesn't fit a two-handle range) purely so an ancestor\n`<fieldset disabled>` disables both handles and every preset button\nthrough `effectiveDisabled`, the same way it would a native `<input>`,\nwithout touching the consumer-facing `disabled` property/attribute itself.\nUnlike `<lr-combobox>`, it never calls `internals.setFormValue()` and\nhas no `name` — the selected range is not included in the owning form's\n`FormData` on submit; read `start`/`end` directly (e.g. from `lr-change`)\ninstead of relying on native form submission.\n\nDeliberately no label/hint/error chrome -- `startLabel`/`endLabel` here are per-handle\naccessible-name overrides, not visible label text, the same carve-out `<lr-slider>` states for\nits own single-handle `label`; a labeled-field consumer wraps this element in their own layout.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The time-range wrapper. |\n| `handle-end` | The end handle. |\n| `handle-start` | The start handle. |\n| `preset-button` | A preset button. |\n| `presets` | The preset controls wrapper. |\n| `range` | The selected range. |\n| `track` | The complete range track. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-time-range-preset-active-bg` (default: `var(--lr-color-brand)`) — Background of the active preset button (`[data-active]`, i.e. the preset whose range matches the current value). Declared as an inline `var()` fallback (never on `:host`), so setting it on the element or an ancestor recolors only the active preset without hijacking the library-wide `--lr-color-brand` token.\n- `--lr-time-range-preset-active-border-color` (default: `var(--lr-color-brand)`) — Border color of the active preset button.\n- `--lr-time-range-preset-active-color` (default: `var(--lr-color-on-brand)`) — Text color of the active preset button.",
15630
+ "description": "`<lr-time-range>` — a two-handle brush/scrubber over a numeric domain.\nCallers map their own time axis to `[min, max]`; no date logic lives here\n(matches the no-date-library constraint used elsewhere in this library).\n\nOptionally paired with a row of discrete presets (`presets`) — e.g. \"Last\n7 days\" / \"Last 30 days\" — rendered above the track; picking one is just a\nshortcut that sets both handles at once, the continuous brush underneath\nis unaffected and both interaction modes coexist.\n\nForm-associated only for the `<fieldset disabled>` cascade, not for a\nsubmitted value: it attaches `ElementInternals` (like `<lr-combobox>`'s\nminimal pattern, rather than the single-string-value `FormAssociated`\nmixin, which doesn't fit a two-handle range) purely so an ancestor\n`<fieldset disabled>` disables both handles and every preset button\nthrough `effectiveDisabled`, the same way it would a native `<input>`,\nwithout touching the consumer-facing `disabled` property/attribute itself.\nUnlike `<lr-combobox>`, it never calls `internals.setFormValue()` and\nhas no `name` — the selected range is not included in the owning form's\n`FormData` on submit; read `start`/`end` directly (e.g. from `lr-change`)\ninstead of relying on native form submission.\n\nDeliberately no label/hint/error chrome -- `startLabel`/`endLabel` here are per-handle\naccessible-name overrides, not visible label text, the same carve-out `<lr-slider>` states for\nits own single-handle `label`; a labeled-field consumer wraps this element in their own layout.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The time-range wrapper. |\n| `handle-end` | The end handle. |\n| `handle-start` | The start handle. |\n| `preset-button` | A preset button. |\n| `presets` | The preset controls wrapper. |\n| `range` | The selected range. |\n| `track` | The complete range track. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-time-range-preset-active-bg` (default: `var(--lr-color-brand)`) — Background of the active preset button (`[data-active]`, i.e. the preset whose range matches the current value). Declared as an inline `var()` fallback (never on `:host`), so setting it on the element or an ancestor recolors only the active preset without hijacking the library-wide `--lr-color-brand` token.\n- `--lr-time-range-preset-active-border-color` (default: `var(--lr-color-brand)`) — Border color of the active preset button.\n- `--lr-time-range-preset-active-color` (default: `var(--lr-color-on-brand)`) — Text color of the active preset button.\n- `--lr-time-range-size-scale` (default: `1`) — Unitless multiplier applied proportionally to the handle, track, and preset-button dimensions based on the current `size` tier; the drag hit-area is floored at 24px (WCAG 2.5.8).",
15050
15631
  "attributes": [
15051
15632
  {
15052
15633
  "name": "disabled",
@@ -15102,6 +15683,15 @@
15102
15683
  ]
15103
15684
  }
15104
15685
  },
15686
+ {
15687
+ "name": "size",
15688
+ "description": "Visual size — proportionally scales the handle, track, and preset buttons via a single\nmultiplier; the drag hit-area never shrinks below 24px (WCAG 2.5.8). Not pixel-matched to\n`lr-input`'s row-height scale -- this component's own dimensions aren't on that ladder.\n\nType: `LyraTimeRangeSize` \nDefault: `'m'`",
15689
+ "value": {
15690
+ "type": [
15691
+ "LyraTimeRangeSize"
15692
+ ]
15693
+ }
15694
+ },
15105
15695
  {
15106
15696
  "name": "start",
15107
15697
  "description": "Type: `number` \nDefault: `0`",
@@ -15283,7 +15873,7 @@
15283
15873
  },
15284
15874
  {
15285
15875
  "name": "lr-token-input",
15286
- "description": "`<lr-token-input>` — an editable, form-associated list of removable tokens.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `error` | Validation message. |\n| `hint` | Supporting text. |\n| `label` | Visible label content. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `error` | Validation message. |\n| `form-control` | Outer control wrapper. |\n| `form-control-label` | Label. |\n| `hint` | Supporting text. |\n| `input` | Native text input. |\n| `input-wrapper` | Token and input row. |\n| `remove` | Token remove button. |\n| `token` | Individual token. |\n| `token-editor` | The inline text field replacing a token's text while it is being edited. Rendered only while `editable` is set and that token is open for editing. |\n| `token-label` | The token's text, as the roving-focus edit trigger. Rendered only while `editable` is set. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-token-input-input-inline-size` (default: `var(--lr-size-8rem)`) — `flex-basis` of the native text input within the token row.\n- `--lr-token-input-min-input-inline-size` (default: `var(--lr-size-4rem)`) — Inline-size floor of the native text input, so it stays usable once tokens wrap.\n- `--lr-token-input-editor-inline-size` (default: `var(--lr-size-6rem)`) — Inline size of the inline token editor opened by `editable`.",
15876
+ "description": "`<lr-token-input>` — an editable, form-associated list of removable tokens.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `error` | Validation message. |\n| `hint` | Supporting text. |\n| `label` | Visible label content. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `error` | Validation message. |\n| `form-control` | Outer control wrapper. |\n| `form-control-label` | Label. |\n| `hint` | Supporting text. |\n| `input` | Native text input. |\n| `input-wrapper` | Token and input row. |\n| `remove` | Token remove button. |\n| `token` | Individual token. |\n| `token-editor` | The inline text field replacing a token's text while it is being edited. Rendered only while `editable` is set and that token is open for editing. |\n| `token-label` | The token's text, as the roving-focus edit trigger. Rendered only while `editable` is set. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-token-input-input-inline-size` (default: `var(--lr-size-8rem)`) — `flex-basis` of the native text input within the token row.\n- `--lr-token-input-min-input-inline-size` (default: `var(--lr-size-4rem)`) — Inline-size floor of the native text input, so it stays usable once tokens wrap.\n- `--lr-token-input-editor-inline-size` (default: `var(--lr-size-6rem)`) — Inline size of the inline token editor opened by `editable`.\n- `--lr-token-input-padding` — Input-wrapper padding, scaled by `size`.\n- `--lr-token-input-font-size` — Input-wrapper/token font size, scaled by `size`.\n- `--lr-token-input-control-min-height` — Input-wrapper block-size floor, scaled by `size`.\n- `--lr-token-input-control-height` — Exact input-wrapper height. Unset by default, which leaves `--lr-token-input-control-min-height` as a floor only; set it to a length to both floor and cap the row (e.g. to pixel-match a sibling field in the same toolbar row). Because it is never declared by the component itself, it can be set from an ancestor or an outer-tree rule as well as inline on the element.",
15287
15877
  "attributes": [
15288
15878
  {
15289
15879
  "name": "allow-duplicates",
@@ -15387,12 +15977,21 @@
15387
15977
  "boolean"
15388
15978
  ]
15389
15979
  }
15980
+ },
15981
+ {
15982
+ "name": "size",
15983
+ "description": "Visual size — same `2xs`–`xl` scale as `lr-input`'s own `size`.\n\nType: `LyraTokenInputSize` \nDefault: `'m'`",
15984
+ "value": {
15985
+ "type": [
15986
+ "LyraTokenInputSize"
15987
+ ]
15988
+ }
15390
15989
  }
15391
15990
  ]
15392
15991
  },
15393
15992
  {
15394
15993
  "name": "lr-tool-approval-dialog",
15395
- "description": "`<lr-tool-approval-dialog>` — a human-in-the-loop gate: presents one\nproposed tool/function call (`toolName` + `args`) and blocks an agent from\nexecuting it until a person explicitly approves or denies it, with an\noptional inline \"edit the arguments before approving\" step.\n\nThis renders its own dialog panel rather than nesting a `<lr-dialog>` in\nits shadow template. Shared overlay infrastructure coordinates stacking,\nfocus trapping, Escape/backdrop dismissal, and focus return with every\nother overlay in the same document.\n\nApprove/Deny/Edit are built-in chrome (not a `footer` slot a consumer must\nassemble) — this component's interaction shape is fixed enough (there is\nexactly one correct set of actions for \"approve this call\") that requiring\nevery consumer to re-build it would just be boilerplate. A `footer` slot is\nstill offered for *supplementary* content a consumer wants alongside those\nbuttons (e.g. a \"remember this choice for this tool\" checkbox) — its\ncontent renders to the start of the action row, before Deny/Edit/Approve.\n\nEditing: while `editable`, an Edit button swaps the read-only\n`<lr-json-viewer>` for a plain `<textarea>` pre-filled with\n`JSON.stringify(args, null, 2)`. Every keystroke is re-validated with\n`JSON.parse` — the Approve button is `disabled` for as long as the current\ntextarea content fails to parse, so a malformed edit can never be silently\napproved as either the broken text or a stale copy of the original args.\nThe editor defaults to `spellcheck=\"false\"`, `autocapitalize=\"off\"`,\n`autocorrect=\"off\"`, and `autocomplete=\"off\"` because its content is raw\nJSON, never prose. The corresponding native editing properties remain\nconfigurable for integrations that need different browser behavior.\nThe same button relabels to \"Cancel\" while editing; clicking it discards\nthe draft entirely and returns to the read-only view of the *original*\n`args` — there is no separate \"save\" step independent of Approve itself.\nBoth `editing` and any in-progress draft reset back to the read-only view\nevery time the dialog transitions from closed to open, so a reused\ninstance never leaks one proposal's half-finished edit into the next.\n`editable` flipping to `false` mid-edit does the same (see `willUpdate()`)\nand, if the textarea it unmounts still held focus, `updated()` refocuses\nDeny so the focus trap keeps engaging instead of silently letting focus\nfall through to the document.\n\nInitial focus deliberately does *not* land on Approve:\napproving a tool call is a consequential, potentially irreversible action,\nso a user who opens this dialog and reflexively presses Enter/Space before\nreading anything should deny, not approve. Deny gets the initial focus\ninstead — the same \"focus the safe action\" convention a native destructive-\nconfirmation dialog (delete, discard, etc.) typically follows for its own\nCancel button — rather than the inert dialog panel, which would need an\nextra Tab press before *any* action is reachable at all.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `footer` | Optional supplementary content (e.g. a \"remember this choice\" checkbox), rendered before the built-in Deny/Edit/Approve buttons. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `approve-button` | The built-in Approve button — `disabled` while an in-progress edit is invalid JSON. |\n| `args-editor` | The raw-JSON `<textarea>` shown while editing. |\n| `args-view` | The read-only `<lr-json-viewer>` shown while not editing. |\n| `backdrop` | The full-viewport scrim behind the panel. |\n| `body` | The wrapper around the args view/editor. |\n| `deny-button` | The built-in Deny button. |\n| `edit-button` | The built-in Edit/Cancel toggle button (only rendered while `editable`). |\n| `error` | The inline \"invalid JSON\" message, shown only while editing with unparseable content. |\n| `footer` | The action row wrapping the `footer` slot and the built-in buttons. |\n| `header` | The wrapper around the heading. |\n| `panel` | The dialog panel itself (`role=\"dialog\"` while open). |\n| `tool-name` | The `toolName` text within the heading. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-tool-approval-dialog-overlay-color` (default: `var(--lr-color-overlay)`) — Backdrop scrim color.\n- `--lr-tool-approval-dialog-mono-font` (default: `var(--lr-font-mono)`) — Font family for the tool name and the raw-JSON args editor.",
15994
+ "description": "`<lr-tool-approval-dialog>` — a human-in-the-loop gate: presents one\nproposed tool/function call (`toolName` + `args`) and blocks an agent from\nexecuting it until a person explicitly approves or denies it, with an\noptional inline \"edit the arguments before approving\" step.\n\nThis renders its own dialog panel rather than nesting a `<lr-dialog>` in\nits shadow template. Shared overlay infrastructure coordinates stacking,\nfocus trapping, Escape/backdrop dismissal, and focus return with every\nother overlay in the same document.\n\nApprove/Deny/Edit are built-in chrome (not a `footer` slot a consumer must\nassemble) — this component's interaction shape is fixed enough (there is\nexactly one correct set of actions for \"approve this call\") that requiring\nevery consumer to re-build it would just be boilerplate. A `footer` slot is\nstill offered for *supplementary* content a consumer wants alongside those\nbuttons (e.g. a \"remember this choice for this tool\" checkbox) — its\ncontent renders to the start of the action row, before Deny/Edit/Approve.\n\nEditing: while `editable`, an Edit button swaps the read-only\n`<lr-json-viewer>` for a plain `<textarea>` pre-filled with\n`JSON.stringify(args, null, 2)`. Every keystroke is re-validated with\n`JSON.parse` — the Approve button is `disabled` for as long as the current\ntextarea content fails to parse, so a malformed edit can never be silently\napproved as either the broken text or a stale copy of the original args.\nThe editor defaults to `spellcheck=\"false\"`, `autocapitalize=\"off\"`,\n`autocorrect=\"off\"`, and `autocomplete=\"off\"` because its content is raw\nJSON, never prose. The corresponding native editing properties remain\nconfigurable for integrations that need different browser behavior.\nThe same button relabels to \"Cancel\" while editing; clicking it discards\nthe draft entirely and returns to the read-only view of the *original*\n`args` — there is no separate \"save\" step independent of Approve itself.\nBoth `editing` and any in-progress draft reset back to the read-only view\nevery time the dialog transitions from closed to open, so a reused\ninstance never leaks one proposal's half-finished edit into the next.\n`editable` flipping to `false` mid-edit does the same (see `willUpdate()`)\nand, if the textarea it unmounts still held focus, `updated()` refocuses\nDeny so the focus trap keeps engaging instead of silently letting focus\nfall through to the document.\n\nInitial focus deliberately does *not* land on Approve:\napproving a tool call is a consequential, potentially irreversible action,\nso a user who opens this dialog and reflexively presses Enter/Space before\nreading anything should deny, not approve. Deny gets the initial focus\ninstead — the same \"focus the safe action\" convention a native destructive-\nconfirmation dialog (delete, discard, etc.) typically follows for its own\nCancel button — rather than the inert dialog panel, which would need an\nextra Tab press before *any* action is reachable at all.\n\nDeny/Approve are `<lr-button>`s (`variant=\"neutral\"`/`\"brand\"`; this component has no `tone`\nproperty, unlike `<lr-confirm-bar>`), re-exporting `lr-button`'s own `base`/`label`/`start`/\n`end`/`spinner` parts under `{deny,approve}-button-{base,label,start,end,spinner}`. An\n`lr-approve`/`lr-deny` listener can call `preventDefault()` to keep the decision open while its\nown async work (e.g. a network call) is in flight: `pending` is set to `'approve'`/`'deny'`,\nshowing `loading` on that button and `disabled` on the other (and, for Approve, alongside the\nexisting invalid-JSON `disabled` gate), until the host finalizes by calling\n`close('approve'|'deny')` or bounces back by clearing `.pending` to `null`. While `pending` is\nset, Escape and backdrop dismissal are suppressed -- a decision in flight should not be\nabandonable out from under the host mid-request -- and `pending` itself resets to `null` every\ntime the dialog transitions from closed to open, mirroring `editing`'s own reset-on-reopen\ncontract.\n\n---\n\n**Slots**\n\n| Name | Description |\n| --- | --- |\n| `footer` | Optional supplementary content (e.g. a \"remember this choice\" checkbox), rendered before the built-in Deny/Edit/Approve buttons. |\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `approve-button` | The built-in Approve `<lr-button>` — `disabled` while an in-progress edit is invalid JSON (or while Deny is pending). |\n| `approve-button-base` | Forwarded from the internal Approve `<lr-button>`'s own `base` part. |\n| `approve-button-end` | Forwarded from the internal Approve `<lr-button>`'s own `end` part. |\n| `approve-button-label` | Forwarded from the internal Approve `<lr-button>`'s own `label` part. |\n| `approve-button-spinner` | Forwarded from the internal Approve `<lr-button>`'s own `spinner` part, present only while `pending` is `'approve'`. |\n| `approve-button-start` | Forwarded from the internal Approve `<lr-button>`'s own `start` part. |\n| `args-editor` | The raw-JSON `<textarea>` shown while editing. |\n| `args-view` | The read-only `<lr-json-viewer>` shown while not editing. |\n| `backdrop` | The full-viewport scrim behind the panel. |\n| `body` | The wrapper around the args view/editor. |\n| `deny-button` | The built-in Deny `<lr-button>`. |\n| `deny-button-base` | Forwarded from the internal Deny `<lr-button>`'s own `base` part. |\n| `deny-button-end` | Forwarded from the internal Deny `<lr-button>`'s own `end` part. |\n| `deny-button-label` | Forwarded from the internal Deny `<lr-button>`'s own `label` part. |\n| `deny-button-spinner` | Forwarded from the internal Deny `<lr-button>`'s own `spinner` part, present only while `pending` is `'deny'`. |\n| `deny-button-start` | Forwarded from the internal Deny `<lr-button>`'s own `start` part. |\n| `edit-button` | The built-in Edit/Cancel toggle button (only rendered while `editable`). |\n| `error` | The inline \"invalid JSON\" message, shown only while editing with unparseable content. |\n| `footer` | The action row wrapping the `footer` slot and the built-in buttons. |\n| `header` | The wrapper around the heading. |\n| `panel` | The dialog panel itself (`role=\"dialog\"` while open). |\n| `tool-name` | The `toolName` text within the heading. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-tool-approval-dialog-overlay-color` (default: `var(--lr-color-overlay)`) — Backdrop scrim color.\n- `--lr-tool-approval-dialog-mono-font` (default: `var(--lr-font-mono)`) — Font family for the tool name and the raw-JSON args editor.",
15396
15995
  "attributes": [
15397
15996
  {
15398
15997
  "name": "aria-label",
@@ -15470,6 +16069,15 @@
15470
16069
  ]
15471
16070
  }
15472
16071
  },
16072
+ {
16073
+ "name": "pending",
16074
+ "description": "Which decision is awaiting host resolution, while an lr-approve/lr-deny listener has called\npreventDefault(). Host-writable: set back to null to bounce back to the undecided state (e.g.\non failure, so the user can retry), or call `close('approve'|'deny')` to finalize. Also reset\nto `null` every time the dialog transitions from closed to open, mirroring\n`editing`/`draftText`/`draftError`'s own reset-on-reopen contract below, so a reused instance\nnever leaks one proposal's stuck pending state into the next. While non-null, Escape/backdrop\ndismissal is suppressed (see `activateOverlay()`).\n\nType: `ToolApprovalDialogPending` \nDefault: `null`",
16075
+ "value": {
16076
+ "type": [
16077
+ "ToolApprovalDialogPending"
16078
+ ]
16079
+ }
16080
+ },
15473
16081
  {
15474
16082
  "name": "spellcheck",
15475
16083
  "description": "Native editing-assistance attributes forwarded to the raw-JSON textarea.\n\nType: `boolean` \nDefault: `false`",
@@ -16244,7 +16852,7 @@
16244
16852
  },
16245
16853
  {
16246
16854
  "name": "lr-virtual-list",
16247
- "description": "`<lr-virtual-list>` — a generic windowed/virtualized list host. Renders\nonly the items within the current viewport (plus `overscan` padding rows\non each side) as real DOM, regardless of how large `items` is, so a\nmulti-thousand-row chat history sidebar or long message thread stays cheap\nto scroll.\n\nContent is entirely caller-supplied: `renderItem(item, index)` returns\nwhatever `lit-html` value should represent that row (typically a\n`TemplateResult`), and `keyFunction(item, index)` gives it a stable\nidentity for `repeat()`'s DOM-reconciliation key, so scroll position and\nany per-row state (e.g. an `<audio>` element's playback position) survive\nan `items` mutation instead of every row remounting from scratch.\n\n**Windowing math.** Every row — in both `row-height` modes — is positioned\nby a `transform: translateY(offset)` computed from a single cumulative\n`offsets` array (`offsets[i]` = the pixel top of row `i`), rather than by\npage flow. This is what lets only a small DOM window exist while the\nscrollbar still reflects the *true* total content height:\n- **`row-height=\"auto\"` (default).** Each currently-rendered row is\n watched by a `ResizeObserver`; its real height lands in a per-key\n `Map`, and any row not yet measured contributes `DEFAULT_ROW_ESTIMATE_PX`\n to the offsets array until it has been. `offsets` is *not* the same\n thing as a page-count-based `padding-top`/`padding-bottom` spacer pair —\n that approach reflows every unmeasured row's position on every new\n measurement, which is exactly what per-row transform offsets avoid: only\n the rows *after* a newly-measured one shift, and even that shift is a\n cheap style recompute, not a layout-affecting padding change.\n- **Fixed numeric `row-height`.** No measurement needed — `offsets[i]` is\n just `i * rowHeightPx`, computed by the exact same cumulative-array code\n path (a dedicated \"single spacer + start-index\" special case was\n considered and would work too, but reusing one code path for both modes\n avoids maintaining two parallel rendering strategies for a difference\n that's otherwise just \"how is row *i*'s height looked up\").\n\nThe `offsets` array is rebuilt only when `items`, `row-height`, or\n`keyFunction` change, or a row's measured height changes -- not on every\nupdate, so a pure scroll-position tick (potentially every rAF while\nscrolling) only re-runs the cheap range/visibility math in\n`computeRange()`, never the `O(n)` offsets rebuild (which, in\n`row-height=\"auto\"` mode, also means a `keyFunction` call per item). For\nthe list sizes this component is meant for (a scrollable history sidebar,\nrealistically hundreds to a few thousand rows) that rebuild is a trivial\n`O(n)` arithmetic loop even when it does run; it is *not* the right\napproach for a hundred-thousand-row list without further work (e.g. a\nFenwick/segment tree for `O(log n)` offset queries+updates), which is out\nof scope here.\n\n**Accessibility.** The scroll container is `role=\"list\"` and each rendered\nrow is `role=\"listitem\"`, deliberately *not* `listbox`/`option` — this\ncomponent only provides windowing, not the roving-tabindex/\n`aria-activedescendant` keyboard-interaction contract ARIA requires\nalongside a real `listbox`. A consumer that wants full single-select\nlistbox semantics on top of this should compose that behavior itself (see\n`<lr-select>`'s pattern), the same way this component's `active-id`\nonly *scrolls* the matching row into view and marks it `aria-current` —\nit never claims to be a selection widget. `aria-setsize`/`aria-posinset`\nare computed from the row's real index in the full `items` array (not its\nposition among the currently-rendered DOM window), so a screen reader\nstill announces e.g. \"item 12 of 340\" correctly. `[part=\"base\"]` itself\ncarries `tabindex=\"0\"` — `renderItem`'s content is caller-supplied and not\nguaranteed to contain a focusable element, and a scrollable region with no\nfocusable content of its own is otherwise unreachable by keyboard (native\narrow/Page Up/Page Down scrolling included).\n\n**Grouping.** When supplied, `groups` renders a labeled group marker at the\ncorresponding `startIndex`. Group markers are positioned independently of\nthe row window, so they remain available when the first row in a group is\noutside the current overscanned range.\n\n**Sticky group headers.** `renderStickyGroup` adds a `[part=\"sticky-group\"]` overlay pinned to the\ntop of the scroll viewport, showing the `groups` entry the viewport is currently inside; as the\nnext group's header arrives it is pushed out by the overlap rather than swapped abruptly. Unset\n(the default) renders no overlay element at all, and the list renders exactly as it does without\nthis feature. Four properties of the overlay matter to a consumer:\n- It is a **visual copy** of content that already exists in the list, so it is `aria-hidden` and\n any ordinary focusable element inside it is forced to `tabindex=\"-1\"`: the real row keeps sole\n ownership of the heading semantics and of the tab order. (`inert` would express this more\n directly but would also block the pointer opt-in below, so it is deliberately not used; a\n focus-delegating custom element rendered into the overlay needs its own `tabindex=\"-1\"`.)\n- It is **`pointer-events: none` by default**; a consumer whose header content is interactive\n opts in with `lr-virtual-list::part(sticky-group) { pointer-events: auto; }`.\n- It is **never measured as a row.** It contributes nothing to `offsets`, so a group header that\n is also a real row is not counted twice in `row-height=\"auto\"` mode.\n- Its measured height becomes a `scroll-padding-block-start` on the scroll container, so both\n `active-id`/`scrollToIndex` and native keyboard scrolling stop *below* the band instead of\n parking the target row behind it. Scrolled above the first group the band shows nothing but\n stays mounted, so that height is known before the first jump rather than after it.\nA host that renders its own group headers as ordinary rows supplies `groups` purely as position\nanchors, with `label: ''` so no duplicate `[part=\"group\"]` marker renders.\n\n**Position queries.** `offsetForIndex(index)` and `indexAtOffset(px)` expose the windowing math\nitself: they translate between an item index and the pixel offset that row renders at, in the same\ncoordinate space as the scroll container's `scrollTop`. A host doing its own scroll-linked layout\n(a pinned group header, a scrollbar minimap, a \"jump to here\" affordance) needs those numbers and\nwould otherwise have to duplicate the offsets array.\n\n**Programmatic scrolling.** `scrollToIndex()` is the public counterpart to `active-id`'s automatic\nscroll-into-view -- used by `<lr-chat-viewport>`'s virtual mode and any other host that needs to\nscroll to a specific row without also changing which row is \"active.\"\n\n**`item-role=\"row\"` mode.** Additive to the default `'listitem'` mapping above: `[part=\"base\"]`\nbecomes `role=\"rowgroup\"`, `[part=\"spacer\"]` becomes `role=\"presentation\"`, and each row becomes\n`role=\"row\"` with `aria-rowindex` (the row's 1-based index plus `row-index-offset`) instead of\n`aria-setsize`/`aria-posinset`. For a consumer composing its own `role=\"table\"` wrapper and header\nrow around this component (see `<lr-dataset-viewer>`), where `row-index-offset=\"1\"` accounts for\nthat external header row occupying `aria-rowindex=\"1\"`.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The scrollable container (`role=\"list\"`). |\n| `group` | A positioned group label. Not rendered for a `groups` entry whose `label` is the empty string (a position-anchor-only entry). |\n| `row` | One rendered row's absolutely-positioned wrapper (`role=\"listitem\"`); `renderItem`'s return value renders inside it. |\n| `spacer` | The full-content-height inner element that gives the container its true scrollable extent. |\n| `sticky-group` | The pinned copy of the current group, rendered only while `renderStickyGroup` is set (and showing nothing while the viewport is above the first group, where there is no group to pin). `aria-hidden` and `pointer-events: none` by default — style this part with `pointer-events: auto` to make copied interactive content clickable again. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-virtual-list-height` (default: `var(--lr-size-24rem)`) — The scroll viewport's height. A virtualized list needs a bounded scroll extent, so this ships a default rather than collapsing to zero when a caller does not size the host.",
16855
+ "description": "`<lr-virtual-list>` — a generic windowed/virtualized list host. Renders\nonly the items within the current viewport (plus `overscan` padding rows\non each side) as real DOM, regardless of how large `items` is, so a\nmulti-thousand-row chat history sidebar or long message thread stays cheap\nto scroll.\n\nContent is entirely caller-supplied: `renderItem(item, index)` returns\nwhatever `lit-html` value should represent that row (typically a\n`TemplateResult`), and `keyFunction(item, index)` gives it a stable\nidentity for `repeat()`'s DOM-reconciliation key, so scroll position and\nany per-row state (e.g. an `<audio>` element's playback position) survive\nan `items` mutation instead of every row remounting from scratch.\n\n**Windowing math.** Every row — in both `row-height` modes — is positioned\nby a `transform: translateY(offset)` computed from a single cumulative\n`offsets` array (`offsets[i]` = the pixel top of row `i`), rather than by\npage flow. This is what lets only a small DOM window exist while the\nscrollbar still reflects the *true* total content height:\n- **`row-height=\"auto\"` (default).** Each currently-rendered row is\n watched by a `ResizeObserver`; its real height lands in a per-key\n `Map`, and any row not yet measured contributes `DEFAULT_ROW_ESTIMATE_PX`\n to the offsets array until it has been. `offsets` is *not* the same\n thing as a page-count-based `padding-top`/`padding-bottom` spacer pair —\n that approach reflows every unmeasured row's position on every new\n measurement, which is exactly what per-row transform offsets avoid: only\n the rows *after* a newly-measured one shift, and even that shift is a\n cheap style recompute, not a layout-affecting padding change.\n- **Fixed numeric `row-height`.** No measurement needed — `offsets[i]` is\n just `i * rowHeightPx`, computed by the exact same cumulative-array code\n path (a dedicated \"single spacer + start-index\" special case was\n considered and would work too, but reusing one code path for both modes\n avoids maintaining two parallel rendering strategies for a difference\n that's otherwise just \"how is row *i*'s height looked up\").\n\nThe `offsets` array is rebuilt only when `items`, `row-height`, or\n`keyFunction` change, or a row's measured height changes -- not on every\nupdate, so a pure scroll-position tick (potentially every rAF while\nscrolling) only re-runs the cheap range/visibility math in\n`computeRange()`, never the `O(n)` offsets rebuild (which, in\n`row-height=\"auto\"` mode, also means a `keyFunction` call per item). For\nthe list sizes this component is meant for (a scrollable history sidebar,\nrealistically hundreds to a few thousand rows) that rebuild is a trivial\n`O(n)` arithmetic loop even when it does run; it is *not* the right\napproach for a hundred-thousand-row list without further work (e.g. a\nFenwick/segment tree for `O(log n)` offset queries+updates), which is out\nof scope here.\n\n**Accessibility.** The scroll container is `role=\"list\"` and each rendered\nrow is `role=\"listitem\"`, deliberately *not* `listbox`/`option` — this\ncomponent only provides windowing, not the roving-tabindex/\n`aria-activedescendant` keyboard-interaction contract ARIA requires\nalongside a real `listbox`. A consumer that wants full single-select\nlistbox semantics on top of this should compose that behavior itself (see\n`<lr-select>`'s pattern), the same way this component's `active-id`\nonly *scrolls* the matching row into view and marks it `aria-current` —\nit never claims to be a selection widget. `aria-setsize`/`aria-posinset`\nare computed from the row's real index in the full `items` array (not its\nposition among the currently-rendered DOM window), so a screen reader\nstill announces e.g. \"item 12 of 340\" correctly. `[part=\"base\"]` itself\ncarries `tabindex=\"0\"` — `renderItem`'s content is caller-supplied and not\nguaranteed to contain a focusable element, and a scrollable region with no\nfocusable content of its own is otherwise unreachable by keyboard (native\narrow/Page Up/Page Down scrolling included).\n\n**Grouping.** When supplied, `groups` renders a labeled group marker at the\ncorresponding `startIndex`. Group markers are positioned independently of\nthe row window, so they remain available when the first row in a group is\noutside the current overscanned range.\n\n**Sticky group headers.** `renderStickyGroup` adds a `[part=\"sticky-group\"]` overlay pinned to the\ntop of the scroll viewport, showing the `groups` entry the viewport is currently inside; as the\nnext group's header arrives it is pushed out by the overlap rather than swapped abruptly. Unset\n(the default) renders no overlay element at all, and the list renders exactly as it does without\nthis feature. Four properties of the overlay matter to a consumer:\n- It is a **visual copy** of content that already exists in the list, so it is `aria-hidden` and\n any ordinary focusable element inside it is forced to `tabindex=\"-1\"`: the real row keeps sole\n ownership of the heading semantics and of the tab order. (`inert` would express this more\n directly but would also block the pointer opt-in below, so it is deliberately not used; a\n focus-delegating custom element rendered into the overlay needs its own `tabindex=\"-1\"`.)\n- It is **`pointer-events: none` by default**; a consumer whose header content is interactive\n opts in with `lr-virtual-list::part(sticky-group) { pointer-events: auto; }`.\n- It is **never measured as a row.** It contributes nothing to `offsets`, so a group header that\n is also a real row is not counted twice in `row-height=\"auto\"` mode.\n- Its measured height becomes a `scroll-padding-block-start` on the scroll container, so both\n `active-id`/`scrollToIndex` and native keyboard scrolling stop *below* the band instead of\n parking the target row behind it. Scrolled above the first group the band shows nothing but\n stays mounted, so that height is known before the first jump rather than after it.\nA host that renders its own group headers as ordinary rows supplies `groups` purely as position\nanchors, with `label: ''` so no duplicate `[part=\"group\"]` marker renders.\n\n**Position queries.** `offsetForIndex(index)` and `indexAtOffset(px)` expose the windowing math\nitself: they translate between an item index and the pixel offset that row renders at, in the same\ncoordinate space as the scroll container's `scrollTop`. A host doing its own scroll-linked layout\n(a pinned group header, a scrollbar minimap, a \"jump to here\" affordance) needs those numbers and\nwould otherwise have to duplicate the offsets array.\n\n**Programmatic scrolling.** `scrollToIndex()` is the public counterpart to `active-id`'s automatic\nscroll-into-view -- used by `<lr-chat-viewport>`'s virtual mode and any other host that needs to\nscroll to a specific row without also changing which row is \"active.\"\n\n**`item-role=\"row\"` mode.** Additive to the default `'listitem'` mapping above: `[part=\"base\"]`\nbecomes `role=\"rowgroup\"`, `[part=\"spacer\"]` becomes `role=\"presentation\"`, and each row becomes\n`role=\"row\"` with `aria-rowindex` (the row's 1-based index plus `row-index-offset`) instead of\n`aria-setsize`/`aria-posinset`. For a consumer composing its own `role=\"table\"` wrapper and header\nrow around this component (see `<lr-dataset-viewer>`), where `row-index-offset=\"1\"` accounts for\nthat external header row occupying `aria-rowindex=\"1\"`.\n\n---\n\n**CSS Shadow Parts**\n\n| Name | Description |\n| --- | --- |\n| `base` | The scrollable container (`role=\"list\"`). |\n| `group` | A positioned group label. Not rendered for a `groups` entry whose `label` is the empty string (a position-anchor-only entry). |\n| `row` | One rendered row's absolutely-positioned wrapper (`role=\"listitem\"`); `renderItem`'s return value renders inside it. |\n| `spacer` | The full-content-height inner element that gives the container its true scrollable extent. |\n| `sticky-group` | The pinned copy of the current group, rendered only while `renderStickyGroup` is set (and showing nothing while the viewport is above the first group, where there is no group to pin). `aria-hidden` and `pointer-events: none` by default — style this part with `pointer-events: auto` to make copied interactive content clickable again. |\n\n---\n\n**CSS Custom Properties**\n\n- `--lr-virtual-list-height` (default: `var(--lr-size-24rem)`) — The scroll viewport's height. A virtualized list needs a bounded scroll extent, so this ships a default rather than collapsing to zero when a caller does not size the host.\n- `--lr-virtual-list-hover-outline-color` (default: `var(--lr-color-border-strong)`) — Outline color of the mouse-hover preview on `[part=\"base\"]` (a subtler, always-focusable-target preview of its own `:focus-visible` ring). Set to `transparent` to opt out of the hover treatment entirely.",
16248
16856
  "attributes": [
16249
16857
  {
16250
16858
  "name": "active-id",
@@ -16261,7 +16869,12 @@
16261
16869
  },
16262
16870
  {
16263
16871
  "name": "item-role",
16264
- "description": "`'listitem'` (default) preserves today's `role=\"list\"`/`role=\"listitem\"` mapping with\n`aria-setsize`/`aria-posinset`. `'row'` maps to `role=\"rowgroup\"`/`role=\"row\"` with\n`aria-rowindex` instead -- for a consumer composing a virtualized `role=\"table\"` (see\n`<lr-dataset-viewer>`).\n\nType: `'listitem' | 'row'` \nDefault: `'listitem'`"
16872
+ "description": "`'listitem'` (default) preserves today's `role=\"list\"`/`role=\"listitem\"` mapping with\n`aria-setsize`/`aria-posinset`. `'row'` maps to `role=\"rowgroup\"`/`role=\"row\"` with\n`aria-rowindex` instead -- for a consumer composing a virtualized `role=\"table\"` (see\n`<lr-dataset-viewer>`).\n\nType: `VirtualListItemRole` \nDefault: `'listitem'`",
16873
+ "value": {
16874
+ "type": [
16875
+ "VirtualListItemRole"
16876
+ ]
16877
+ }
16265
16878
  },
16266
16879
  {
16267
16880
  "name": "loading",
@@ -16620,11 +17233,21 @@
16620
17233
  },
16621
17234
  {
16622
17235
  "name": "orientations",
16623
- "description": "`mixed` lets some words render rotated 90° for denser packing.\n\nType: `'horizontal' | 'mixed'` \nDefault: `'horizontal'`"
17236
+ "description": "`mixed` lets some words render rotated 90° for denser packing.\n\nType: `WordCloudOrientations` \nDefault: `'horizontal'`",
17237
+ "value": {
17238
+ "type": [
17239
+ "WordCloudOrientations"
17240
+ ]
17241
+ }
16624
17242
  },
16625
17243
  {
16626
17244
  "name": "scale",
16627
- "description": "`sqrt` compresses the weight->font-size mapping so one heavy word doesn't dwarf the rest.\n\nType: `'linear' | 'sqrt'` \nDefault: `'linear'`"
17245
+ "description": "`sqrt` compresses the weight->font-size mapping so one heavy word doesn't dwarf the rest.\n\nType: `WordCloudScale` \nDefault: `'linear'`",
17246
+ "value": {
17247
+ "type": [
17248
+ "WordCloudScale"
17249
+ ]
17250
+ }
16628
17251
  }
16629
17252
  ]
16630
17253
  },
@@ -16984,6 +17607,10 @@
16984
17607
  "name": "--lr-badge-padding-inline",
16985
17608
  "description": "**`<lr-badge>`, `<lr-tag>`** (default: `var(--lr-space-s)`) — The badge's inline padding. Each `size` sets it to that step's inline padding."
16986
17609
  },
17610
+ {
17611
+ "name": "--lr-badge-radius",
17612
+ "description": "**`<lr-badge>`, `<lr-tag>`** (default: `var(--lr-radius-pill)`) — Corner radius of the badge surface. Does not vary by `size` tier."
17613
+ },
16987
17614
  {
16988
17615
  "name": "--lr-breadcrumb-current-color",
16989
17616
  "description": "**`<lr-breadcrumb-item>`** (default: `var(--lr-color-text-quiet)`) — Text color of the current-page item (`current`/`aria-current=\"page\"`). Declared as an inline `var()` fallback (never on `:host`), so setting it on the element or an ancestor recolors only the current item without hijacking the library-wide `--lr-color-text-quiet` token."
@@ -17020,6 +17647,10 @@
17020
17647
  "name": "--lr-button-font-size",
17021
17648
  "description": "**`<lr-button>`** (default: `var(--lr-font-size-m)`) — Font size of the internal button, re-assigned per `size` tier (the default is the `m` tier's value). `appearance=\"link\"` ignores it and inherits the ambient font instead."
17022
17649
  },
17650
+ {
17651
+ "name": "--lr-button-gap",
17652
+ "description": "**`<lr-button>`** (default: `var(--lr-space-2xs)`) — Gap between the icon/label and any slotted content in the internal button. Unlike the size knobs above it does not vary by `size` tier. Override it to retune without a `::part(base)` rule."
17653
+ },
17023
17654
  {
17024
17655
  "name": "--lr-button-group-gap",
17025
17656
  "description": "**`<lr-button-group>`** (default: `var(--lr-space-2xs)`) — Gap between grouped controls."
@@ -17064,6 +17695,10 @@
17064
17695
  "name": "--lr-button-quiet-text",
17065
17696
  "description": "**`<lr-button>`** (default: `var(--lr-color-text-quiet)`) — Text color of `appearance=\"quiet\"`."
17066
17697
  },
17698
+ {
17699
+ "name": "--lr-button-radius",
17700
+ "description": "**`<lr-button>`** (default: `var(--lr-radius)`) — Corner radius of the internal button. Does not vary by `size` tier. `appearance=\"link\"` ignores it (it renders with zero radius)."
17701
+ },
17067
17702
  {
17068
17703
  "name": "--lr-button-size-2xs",
17069
17704
  "description": "**`<lr-button>`** (default: `var(--lr-size-1-25rem)`) — `min-block-size` at `size=\"2xs\"`."
@@ -17238,7 +17873,7 @@
17238
17873
  },
17239
17874
  {
17240
17875
  "name": "--lr-chip-min-height",
17241
- "description": "**`<lr-chip>`** (default: `var(--lr-size-1-5rem)`) — Minimum block size of an interactive (`removable`/`toggleable`) chip's tap target. `size` keeps `2xs`/`xs`/`s`/`m` at the `1.5rem` (24px) WCAG 2.2 SC 2.5.8 minimum and raises `l` to `var(--lr-size-1-75rem)` and `xl` to `var(--lr-size-2rem)`. Non-interactive display chips are unaffected by this floor."
17876
+ "description": "**`<lr-chip>`** (default: `var(--lr-size-1-5rem)`) — Minimum block size of an interactive (`removable`/`toggleable`) chip's tap target. `size` keeps `3xs`/`2xs`/`xs`/`s`/`m` at the `1.5rem` (24px) WCAG 2.2 SC 2.5.8 minimum and raises `l` to `var(--lr-size-1-75rem)` and `xl` to `var(--lr-size-2rem)`. Non-interactive display chips are unaffected by this floor."
17242
17877
  },
17243
17878
  {
17244
17879
  "name": "--lr-chip-padding-block",
@@ -17256,6 +17891,10 @@
17256
17891
  "name": "--lr-chip-pressed-border",
17257
17892
  "description": "**`<lr-chip>`** (default: `var(--lr-chip-accent)`) — Border color while a toggleable chip is selected, independently themeable from the label/icon color."
17258
17893
  },
17894
+ {
17895
+ "name": "--lr-chip-radius",
17896
+ "description": "**`<lr-chip>`** (default: `var(--lr-radius-pill)`) — Corner radius of the pill and of the remove button, kept in sync so retuning one retunes both. Does not vary by `size` tier."
17897
+ },
17259
17898
  {
17260
17899
  "name": "--lr-chunk-inspector-current-bg",
17261
17900
  "description": "**`<lr-chunk-inspector>`** (default: `var(--lr-color-brand-quiet)`) — Background of the chunk matching `activeId`. **Contrast-sensitive:** paired with `--lr-chunk-inspector-current-color`, which has to keep a 4.5:1 ratio against it."
@@ -17304,6 +17943,10 @@
17304
17943
  "name": "--lr-code-editor-tab-size",
17305
17944
  "description": "**`<lr-code-editor>`** (default: `2`) — The textarea's `tab-size`. The single channel for tab width — the class writes this token rather than setting `tab-size` directly."
17306
17945
  },
17946
+ {
17947
+ "name": "--lr-color-picker-swatch-size",
17948
+ "description": "**`<lr-color-picker>`** — The swatch's inline and block size, scaled by `size`."
17949
+ },
17307
17950
  {
17308
17951
  "name": "--lr-combobox-expand-size",
17309
17952
  "description": "**`<lr-combobox>`** — Decorative expand-icon box size, scaled by `size`."
@@ -17312,10 +17955,18 @@
17312
17955
  "name": "--lr-combobox-font-size",
17313
17956
  "description": "**`<lr-combobox>`** — Input text size."
17314
17957
  },
17958
+ {
17959
+ "name": "--lr-combobox-gap",
17960
+ "description": "**`<lr-combobox>`** (default: `var(--lr-space-xs)`) — Gap between the start/end adornments, tags, and filter input inside the trigger row. Unlike the size knobs above it does not vary by `size` tier. Override it to retune without a `::part(combobox)` rule."
17961
+ },
17315
17962
  {
17316
17963
  "name": "--lr-combobox-option-active-bg",
17317
17964
  "description": "**`<lr-combobox>`** (default: `var(--lr-color-brand-quiet)`) — Background of a hovered or keyboard-active option row."
17318
17965
  },
17966
+ {
17967
+ "name": "--lr-combobox-radius",
17968
+ "description": "**`<lr-combobox>`** (default: `var(--lr-radius)`) — Corner radius of the trigger row (`[part='combobox']`). Does not vary by `size` tier."
17969
+ },
17319
17970
  {
17320
17971
  "name": "--lr-combobox-tag-font-size",
17321
17972
  "description": "**`<lr-combobox>`** — Selected-tag text size."
@@ -17424,6 +18075,10 @@
17424
18075
  "name": "--lr-csv-viewer-max-height",
17425
18076
  "description": "**`<lr-csv-viewer>`** (default: `none`) — Maximum block size of `[part=\"body\"]` before it scrolls internally. The `maxHeight` property sets this token inline on `[part=\"base\"]`."
17426
18077
  },
18078
+ {
18079
+ "name": "--lr-dashboard-grid-cell-hover-outline-color",
18080
+ "description": "**`<lr-dashboard-grid>`** (default: `var(--lr-color-border-strong)`) — Outline color of a cell's mouse-hover preview of its own `:focus-visible` ring (shown because every cell is a real focusable, draggable/resizable target). Set to `transparent` to opt out."
18081
+ },
17427
18082
  {
17428
18083
  "name": "--lr-dashboard-grid-columns",
17429
18084
  "description": "**`<lr-dashboard-grid>`** (default: `12`) — Column count of the underlying CSS Grid. Written inline on `[part=\"base\"]` from the `columns` property on every render, so the fallback only applies to a `[part=\"base\"]` this component has not rendered yet."
@@ -17436,10 +18091,6 @@
17436
18091
  "name": "--lr-dashboard-grid-row-height",
17437
18092
  "description": "**`<lr-dashboard-grid>`** (default: `var(--lr-size-5rem)`) — Row track height. Written inline on `[part=\"base\"]` from the `rowHeight` property (in px) on every render."
17438
18093
  },
17439
- {
17440
- "name": "--lr-data-grid-row-selected-bg",
17441
- "description": "**`<lr-data-grid>`** (default: `var(--lr-color-brand-quiet)`) — Background of the selected row's cells. Shadow Parts forbids an attribute selector after `::part()`, so `::part(row)[aria-selected]` is invalid CSS and the selected row could otherwise only be restyled by hijacking the library-wide `--lr-color-brand-quiet` token."
17442
- },
17443
18094
  {
17444
18095
  "name": "--lr-dataset-viewer-highlight-color",
17445
18096
  "description": "**`<lr-dataset-viewer>`** (default: `var(--lr-color-brand)`) — Outline color of a highlighted cell. The active highlight sets it inline to `var(--lr-color-warning, var(--lr-color-brand))`."
@@ -17548,6 +18199,10 @@
17548
18199
  "name": "--lr-emoji-picker-gap",
17549
18200
  "description": "**`<lr-emoji-picker>`** (default: `var(--lr-space-2xs)`) — Gap between emoji within a windowed row."
17550
18201
  },
18202
+ {
18203
+ "name": "--lr-emoji-picker-glyph-size",
18204
+ "description": "**`<lr-emoji-picker>`** (default: `var(--lr-font-size-lg)`) — Font size of the emoji glyph, scaled by the `size` property to keep the glyph proportional to the item box."
18205
+ },
17551
18206
  {
17552
18207
  "name": "--lr-emoji-picker-item-size",
17553
18208
  "description": "**`<lr-emoji-picker>`** (default: `var(--lr-icon-button-size)`) — Each emoji button's box. Clamped up to `--lr-icon-button-size`: a smaller value does not shrink the button."
@@ -17664,6 +18319,10 @@
17664
18319
  "name": "--lr-flow-canvas-node-current-outline-color",
17665
18320
  "description": "**`<lr-flow-canvas>`** (default: `var(--lr-color-brand)`) — Outline color of the current (`aria-current`) node. Shadow Parts forbids an attribute selector after `::part()`, so the current node could otherwise only be restyled by hijacking the library-wide `--lr-color-brand` token."
17666
18321
  },
18322
+ {
18323
+ "name": "--lr-flow-canvas-node-hover-outline-color",
18324
+ "description": "**`<lr-flow-canvas>`** (default: `var(--lr-color-border-strong)`) — Outline color of a node's mouse-hover preview of its own `:focus-visible` ring. Unlike the four state-scoped colors above this one is `:hover`-gated rather than attribute-gated, so a `::part(node):hover` override would lose to this rule's own higher internal specificity rather than to the `::part()[attr]` restriction those four work around. Set to `transparent` to opt out."
18325
+ },
17667
18326
  {
17668
18327
  "name": "--lr-flow-minimap-block-size",
17669
18328
  "description": "**`<lr-flow-minimap>`** (default: `var(--lr-size-8rem)`) — Map block size."
@@ -17776,6 +18435,10 @@
17776
18435
  "name": "--lr-html-viewer-max-height",
17777
18436
  "description": "**`<lr-html-viewer>`** (default: `none`) — Maximum block size of `[part=\"body\"]` before it scrolls internally. The `maxHeight` property sets this token inline on `[part=\"base\"]`."
17778
18437
  },
18438
+ {
18439
+ "name": "--lr-icon-button-radius",
18440
+ "description": "**`<lr-icon-button>`** (default: `var(--lr-radius)`) — Corner radius of the native button."
18441
+ },
17779
18442
  {
17780
18443
  "name": "--lr-icon-button-size",
17781
18444
  "description": "**`<lr-icon-button>`** (default: `2.5rem`) — Minimum tappable inline and block size of the native button — a **floor**, not a fixed size: content larger than it grows the button and keeps its own aspect ratio, while a small glyph pads out to it. A library-wide token (declared on `:root` by `tokens.styles.ts`, and the shared minimum tappable size several other components size their icon controls against), so overriding it globally resizes all of them together."
@@ -17812,6 +18475,10 @@
17812
18475
  "name": "--lr-input-font-size",
17813
18476
  "description": "**`<lr-input>`, `<lr-number-input>`, `<lr-time-input>`** — Font size of the native input, scaled by `size`."
17814
18477
  },
18478
+ {
18479
+ "name": "--lr-input-gap",
18480
+ "description": "**`<lr-input>`, `<lr-number-input>`, `<lr-time-input>`** (default: `var(--lr-space-xs)`) — Gap between the start/end adornments and the native input in the control row. Unlike the size knobs above it does not vary by `size` tier. Override it to retune without a `::part(input-wrapper)` rule."
18481
+ },
17815
18482
  {
17816
18483
  "name": "--lr-input-padding-block",
17817
18484
  "description": "**`<lr-input>`, `<lr-number-input>`, `<lr-time-input>`** — Block padding of the native input, scaled by `size`."
@@ -17820,6 +18487,10 @@
17820
18487
  "name": "--lr-input-padding-inline",
17821
18488
  "description": "**`<lr-input>`, `<lr-number-input>`, `<lr-time-input>`** — Inline padding of the control row, scaled by `size`."
17822
18489
  },
18490
+ {
18491
+ "name": "--lr-input-radius",
18492
+ "description": "**`<lr-input>`, `<lr-number-input>`, `<lr-time-input>`** (default: `var(--lr-radius)`) — Corner radius of the control row. Does not vary by `size` tier."
18493
+ },
17823
18494
  {
17824
18495
  "name": "--lr-json-viewer-font",
17825
18496
  "description": "**`<lr-json-viewer>`** (default: `var(--lr-font-mono)`) — Font family used for the rendered tree."
@@ -17892,6 +18563,30 @@
17892
18563
  "name": "--lr-lite-chart-selected-outline-color",
17893
18564
  "description": "**`<lr-lite-chart>`** (default: `var(--lr-color-brand)`) — Stroke for a bar/point whose category index is in `selectedIndex`."
17894
18565
  },
18566
+ {
18567
+ "name": "--lr-locale-picker-expand-size",
18568
+ "description": "**`<lr-locale-picker>`** — Decorative expand-icon box size, scaled by `size`."
18569
+ },
18570
+ {
18571
+ "name": "--lr-locale-picker-font-size",
18572
+ "description": "**`<lr-locale-picker>`** — Trigger font size, scaled by `size`."
18573
+ },
18574
+ {
18575
+ "name": "--lr-locale-picker-option-active-bg",
18576
+ "description": "**`<lr-locale-picker>`** (default: `var(--lr-color-brand-quiet)`) — Background of a hovered or keyboard-active option row."
18577
+ },
18578
+ {
18579
+ "name": "--lr-locale-picker-trigger-height",
18580
+ "description": "**`<lr-locale-picker>`** — Exact trigger height. Unset by default (a floor only via `-trigger-min-height`); set a length to both floor and cap the trigger, e.g. to pixel-match a sibling field in the same toolbar row."
18581
+ },
18582
+ {
18583
+ "name": "--lr-locale-picker-trigger-min-height",
18584
+ "description": "**`<lr-locale-picker>`** — Trigger block-size floor, scaled by `size`."
18585
+ },
18586
+ {
18587
+ "name": "--lr-locale-picker-trigger-padding",
18588
+ "description": "**`<lr-locale-picker>`** — Trigger padding shorthand, scaled by `size`."
18589
+ },
17895
18590
  {
17896
18591
  "name": "--lr-markdown-font-mono",
17897
18592
  "description": "**`<lr-markdown>`** (default: `var(--lr-font-mono)`) — Monospace family for rendered `<code>` inside `content`."
@@ -18008,6 +18703,22 @@
18008
18703
  "name": "--lr-pdf-viewer-height",
18009
18704
  "description": "**`<lr-pdf-viewer>`** (default: `var(--lr-size-24rem)`) — Block size of the virtualized page list. Also settable via the `max-height` property."
18010
18705
  },
18706
+ {
18707
+ "name": "--lr-phone-input-control-height",
18708
+ "description": "**`<lr-phone-input>`** — Exact input-wrapper height. Unset by default, which leaves `--lr-phone-input-control-min-height` as a floor only; set it to a length to both floor and cap the row (e.g. to pixel-match a sibling field in the same toolbar row). Because it is never declared by the component itself, it can be set from an ancestor or an outer-tree rule as well as inline on the element."
18709
+ },
18710
+ {
18711
+ "name": "--lr-phone-input-control-min-height",
18712
+ "description": "**`<lr-phone-input>`** — Input-wrapper block-size floor, scaled by `size`."
18713
+ },
18714
+ {
18715
+ "name": "--lr-phone-input-font-size",
18716
+ "description": "**`<lr-phone-input>`** — Input/flag/country-code/calling-code font size, scaled by `size`."
18717
+ },
18718
+ {
18719
+ "name": "--lr-phone-input-padding-block",
18720
+ "description": "**`<lr-phone-input>`** — Input block-padding, scaled by `size`."
18721
+ },
18011
18722
  {
18012
18723
  "name": "--lr-playback-icon-size",
18013
18724
  "description": "**`<lr-playback>`** (default: `calc(var(--lr-icon-button-size) * 0.35)`) — Font size of the play/pause glyph, derived from the shared icon-button hit-target size."
@@ -18076,6 +18787,14 @@
18076
18787
  "name": "--lr-rating-size",
18077
18788
  "description": "**`<lr-rating>`** (default: `var(--lr-font-size-xl)`) — Star size."
18078
18789
  },
18790
+ {
18791
+ "name": "--lr-reorder-item-gap",
18792
+ "description": "**`<lr-reorder-item>`** (default: `var(--lr-space-xs)`) — Gap between the move buttons and content."
18793
+ },
18794
+ {
18795
+ "name": "--lr-reorder-list-gap",
18796
+ "description": "**`<lr-reorder-list>`** (default: `var(--lr-space-2xs)`) — Gap between rows."
18797
+ },
18079
18798
  {
18080
18799
  "name": "--lr-responsive-panel-overlay-color",
18081
18800
  "description": "**`<lr-responsive-panel>`** (default: `var(--lr-color-overlay)`) — The overlay presentation's scrim color, applied to `[part=\"backdrop\"]`."
@@ -18156,10 +18875,18 @@
18156
18875
  "name": "--lr-select-font-size",
18157
18876
  "description": "**`<lr-select>`** — Trigger font size, scaled by `size`."
18158
18877
  },
18878
+ {
18879
+ "name": "--lr-select-gap",
18880
+ "description": "**`<lr-select>`** — Gap between the trigger's start adornment, label, end adornment, and expand icon. Doesn't vary by `size`."
18881
+ },
18159
18882
  {
18160
18883
  "name": "--lr-select-option-active-bg",
18161
18884
  "description": "**`<lr-select>`** (default: `var(--lr-color-brand-quiet)`) — Background of the hovered/keyboard-active option row. Not declared on `:host`, so a value set on any ancestor is never shadowed -- retheme just this row state without hijacking the shared `--lr-color-brand-quiet` token used by every other component's own hover/active state."
18162
18885
  },
18886
+ {
18887
+ "name": "--lr-select-radius",
18888
+ "description": "**`<lr-select>`** — Trigger corner radius. Doesn't vary by `size`."
18889
+ },
18163
18890
  {
18164
18891
  "name": "--lr-select-trigger-height",
18165
18892
  "description": "**`<lr-select>`** — Exact trigger height. Unset by default, which leaves `--lr-select-trigger-min-height` as a floor only; set it to a length to both floor and cap the trigger (e.g. to pixel-match a sibling field in the same toolbar row). Because it is never declared by the component itself, it can be set from an ancestor or an outer-tree rule as well as inline on the element."
@@ -18332,6 +19059,14 @@
18332
19059
  "name": "--lr-svg-viewer-max-height",
18333
19060
  "description": "**`<lr-svg-viewer>`** (default: `none`) — Maximum block size of the scrollable body before it scrolls internally. Also settable via the `max-height` property."
18334
19061
  },
19062
+ {
19063
+ "name": "--lr-swatch-picker-fill-size",
19064
+ "description": "**`<lr-swatch-picker>`** (default: `var(--lr-size-1-5rem)`) — Visible fill/icon diameter for the swatch, swapped per tier."
19065
+ },
19066
+ {
19067
+ "name": "--lr-swatch-picker-hit-size",
19068
+ "description": "**`<lr-swatch-picker>`** (default: `var(--lr-size-2-5rem)`) — Hit-area size (both min-inline-size and min-block-size) for the swatch button, swapped per tier and floored at 24px."
19069
+ },
18335
19070
  {
18336
19071
  "name": "--lr-swatch-picker-selected-blur",
18337
19072
  "description": "**`<lr-swatch-picker>`** (default: `0`) — Blur radius of that same ring. 0 by default (a crisp ring); set a real length (e.g. 0.4rem) for a soft glow instead."
@@ -18472,6 +19207,10 @@
18472
19207
  "name": "--lr-time-range-preset-active-color",
18473
19208
  "description": "**`<lr-time-range>`** (default: `var(--lr-color-on-brand)`) — Text color of the active preset button."
18474
19209
  },
19210
+ {
19211
+ "name": "--lr-time-range-size-scale",
19212
+ "description": "**`<lr-time-range>`** (default: `1`) — Unitless multiplier applied proportionally to the handle, track, and preset-button dimensions based on the current `size` tier; the drag hit-area is floored at 24px (WCAG 2.5.8)."
19213
+ },
18475
19214
  {
18476
19215
  "name": "--lr-timeline-gap",
18477
19216
  "description": "**`<lr-timeline>`** (default: `var(--lr-space-l)`) — Spacing between consecutive items along the timeline's main axis; also the length each item's own rail visually bridges to reach the next item's marker. Declared here but actually consumed inside each `<lr-timeline-item>`'s own stylesheet, via ordinary CSS custom-property inheritance across the slot boundary."
@@ -18544,10 +19283,22 @@
18544
19283
  "name": "--lr-toast-width",
18545
19284
  "description": "**`<lr-toast>`** (default: `var(--lr-size-28rem)`) — Inline size of the stack, capped by the viewport minus the placement insets."
18546
19285
  },
19286
+ {
19287
+ "name": "--lr-token-input-control-height",
19288
+ "description": "**`<lr-token-input>`** — Exact input-wrapper height. Unset by default, which leaves `--lr-token-input-control-min-height` as a floor only; set it to a length to both floor and cap the row (e.g. to pixel-match a sibling field in the same toolbar row). Because it is never declared by the component itself, it can be set from an ancestor or an outer-tree rule as well as inline on the element."
19289
+ },
19290
+ {
19291
+ "name": "--lr-token-input-control-min-height",
19292
+ "description": "**`<lr-token-input>`** — Input-wrapper block-size floor, scaled by `size`."
19293
+ },
18547
19294
  {
18548
19295
  "name": "--lr-token-input-editor-inline-size",
18549
19296
  "description": "**`<lr-token-input>`** (default: `var(--lr-size-6rem)`) — Inline size of the inline token editor opened by `editable`."
18550
19297
  },
19298
+ {
19299
+ "name": "--lr-token-input-font-size",
19300
+ "description": "**`<lr-token-input>`** — Input-wrapper/token font size, scaled by `size`."
19301
+ },
18551
19302
  {
18552
19303
  "name": "--lr-token-input-input-inline-size",
18553
19304
  "description": "**`<lr-token-input>`** (default: `var(--lr-size-8rem)`) — `flex-basis` of the native text input within the token row."
@@ -18556,6 +19307,10 @@
18556
19307
  "name": "--lr-token-input-min-input-inline-size",
18557
19308
  "description": "**`<lr-token-input>`** (default: `var(--lr-size-4rem)`) — Inline-size floor of the native text input, so it stays usable once tokens wrap."
18558
19309
  },
19310
+ {
19311
+ "name": "--lr-token-input-padding",
19312
+ "description": "**`<lr-token-input>`** — Input-wrapper padding, scaled by `size`."
19313
+ },
18559
19314
  {
18560
19315
  "name": "--lr-tool-approval-dialog-mono-font",
18561
19316
  "description": "**`<lr-tool-approval-dialog>`** (default: `var(--lr-font-mono)`) — Font family for the tool name and the raw-JSON args editor."
@@ -18680,6 +19435,10 @@
18680
19435
  "name": "--lr-virtual-list-height",
18681
19436
  "description": "**`<lr-virtual-list>`** (default: `var(--lr-size-24rem)`) — The scroll viewport's height. A virtualized list needs a bounded scroll extent, so this ships a default rather than collapsing to zero when a caller does not size the host."
18682
19437
  },
19438
+ {
19439
+ "name": "--lr-virtual-list-hover-outline-color",
19440
+ "description": "**`<lr-virtual-list>`** (default: `var(--lr-color-border-strong)`) — Outline color of the mouse-hover preview on `[part=\"base\"]` (a subtler, always-focusable-target preview of its own `:focus-visible` ring). Set to `transparent` to opt out of the hover treatment entirely."
19441
+ },
18683
19442
  {
18684
19443
  "name": "--lr-widget-backdrop-inset",
18685
19444
  "description": "**`<lr-widget>`** (default: `var(--lr-widget-fullscreen-inset)`) — The `inset` applied to `[part=\"backdrop\"]`, so the scrim can be pulled back independently of the panel. Also set inline from the `backdrop-inset` attribute (falling back to `fullscreen-inset`). `fullscreen-inset` overrides the default `var(--lr-space-l)` inset applied to `[part=\"base\"]` and `[part=\"backdrop\"]` while fullscreen (e.g. `\"0 0 0 240px\"` to leave a persistent sidebar visible). `compact` tightens header/body padding — same convention as `lr-empty`'s `compact`."