@aceshooting/lyra-ui 5.0.0 → 5.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 (636) hide show
  1. package/README.md +30 -12
  2. package/custom-elements.json +2150 -220
  3. package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +2 -0
  4. package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts.map +1 -1
  5. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +2 -0
  6. package/dist/components/agent-tools/activity-feed/activity-feed.class.js.map +1 -1
  7. package/dist/components/agent-tools/agent-run/agent-run.class.d.ts +1 -0
  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 +1 -0
  10. package/dist/components/agent-tools/agent-run/agent-run.class.js.map +1 -1
  11. package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts +2 -0
  12. package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts.map +1 -1
  13. package/dist/components/agent-tools/compare-panel/compare-panel.class.js +2 -0
  14. package/dist/components/agent-tools/compare-panel/compare-panel.class.js.map +1 -1
  15. package/dist/components/agent-tools/stack-trace/stack-trace.class.d.ts +5 -0
  16. package/dist/components/agent-tools/stack-trace/stack-trace.class.d.ts.map +1 -1
  17. package/dist/components/agent-tools/stack-trace/stack-trace.class.js +5 -0
  18. package/dist/components/agent-tools/stack-trace/stack-trace.class.js.map +1 -1
  19. package/dist/components/agent-tools/terminal/terminal.class.d.ts +3 -0
  20. package/dist/components/agent-tools/terminal/terminal.class.d.ts.map +1 -1
  21. package/dist/components/agent-tools/terminal/terminal.class.js +3 -0
  22. package/dist/components/agent-tools/terminal/terminal.class.js.map +1 -1
  23. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts +2 -0
  24. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.d.ts.map +1 -1
  25. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js +2 -0
  26. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js.map +1 -1
  27. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts +2 -0
  28. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts.map +1 -1
  29. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +2 -0
  30. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js.map +1 -1
  31. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +3 -0
  32. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts.map +1 -1
  33. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +3 -0
  34. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js.map +1 -1
  35. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts +1 -0
  36. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.d.ts.map +1 -1
  37. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js +1 -0
  38. package/dist/components/agent-tools/tool-result-view/tool-result-view.class.js.map +1 -1
  39. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts +1 -0
  40. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.d.ts.map +1 -1
  41. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js +1 -0
  42. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.class.js.map +1 -1
  43. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +2 -0
  44. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts.map +1 -1
  45. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +2 -0
  46. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js.map +1 -1
  47. package/dist/components/charts/chart/chart.class.d.ts +15 -0
  48. package/dist/components/charts/chart/chart.class.d.ts.map +1 -1
  49. package/dist/components/charts/chart/chart.class.js +15 -0
  50. package/dist/components/charts/chart/chart.class.js.map +1 -1
  51. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts +2 -0
  52. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.d.ts.map +1 -1
  53. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js +2 -0
  54. package/dist/components/conversation/audio-visualizer/audio-visualizer.class.js.map +1 -1
  55. package/dist/components/conversation/branch-picker/branch-picker.class.d.ts +2 -0
  56. package/dist/components/conversation/branch-picker/branch-picker.class.d.ts.map +1 -1
  57. package/dist/components/conversation/branch-picker/branch-picker.class.js +2 -0
  58. package/dist/components/conversation/branch-picker/branch-picker.class.js.map +1 -1
  59. package/dist/components/conversation/chat-message/chat-message.class.d.ts +5 -1
  60. package/dist/components/conversation/chat-message/chat-message.class.d.ts.map +1 -1
  61. package/dist/components/conversation/chat-message/chat-message.class.js +5 -1
  62. package/dist/components/conversation/chat-message/chat-message.class.js.map +1 -1
  63. package/dist/components/conversation/chat-message/chat-message.styles.d.ts.map +1 -1
  64. package/dist/components/conversation/chat-message/chat-message.styles.js +15 -2
  65. package/dist/components/conversation/chat-message/chat-message.styles.js.map +1 -1
  66. package/dist/components/conversation/code-block/code-block.class.d.ts +4 -0
  67. package/dist/components/conversation/code-block/code-block.class.d.ts.map +1 -1
  68. package/dist/components/conversation/code-block/code-block.class.js +4 -0
  69. package/dist/components/conversation/code-block/code-block.class.js.map +1 -1
  70. package/dist/components/conversation/conversation-item/conversation-item.class.d.ts +2 -0
  71. package/dist/components/conversation/conversation-item/conversation-item.class.d.ts.map +1 -1
  72. package/dist/components/conversation/conversation-item/conversation-item.class.js +2 -0
  73. package/dist/components/conversation/conversation-item/conversation-item.class.js.map +1 -1
  74. package/dist/components/conversation/markdown/markdown.class.d.ts +2 -0
  75. package/dist/components/conversation/markdown/markdown.class.d.ts.map +1 -1
  76. package/dist/components/conversation/markdown/markdown.class.js +2 -0
  77. package/dist/components/conversation/markdown/markdown.class.js.map +1 -1
  78. package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts +2 -0
  79. package/dist/components/conversation/push-to-talk/push-to-talk.class.d.ts.map +1 -1
  80. package/dist/components/conversation/push-to-talk/push-to-talk.class.js +2 -0
  81. package/dist/components/conversation/push-to-talk/push-to-talk.class.js.map +1 -1
  82. package/dist/components/conversation/stream-status/stream-status.class.d.ts +5 -0
  83. package/dist/components/conversation/stream-status/stream-status.class.d.ts.map +1 -1
  84. package/dist/components/conversation/stream-status/stream-status.class.js +5 -0
  85. package/dist/components/conversation/stream-status/stream-status.class.js.map +1 -1
  86. package/dist/components/conversation/streaming-text/streaming-text.class.d.ts +2 -0
  87. package/dist/components/conversation/streaming-text/streaming-text.class.d.ts.map +1 -1
  88. package/dist/components/conversation/streaming-text/streaming-text.class.js +2 -0
  89. package/dist/components/conversation/streaming-text/streaming-text.class.js.map +1 -1
  90. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +1 -0
  91. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts.map +1 -1
  92. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -0
  93. package/dist/components/conversation/transcript-feed/transcript-feed.class.js.map +1 -1
  94. package/dist/components/data/calendar/calendar.class.d.ts +6 -0
  95. package/dist/components/data/calendar/calendar.class.d.ts.map +1 -1
  96. package/dist/components/data/calendar/calendar.class.js +6 -0
  97. package/dist/components/data/calendar/calendar.class.js.map +1 -1
  98. package/dist/components/data/context-meter/context-meter.class.d.ts +1 -0
  99. package/dist/components/data/context-meter/context-meter.class.d.ts.map +1 -1
  100. package/dist/components/data/context-meter/context-meter.class.js +1 -0
  101. package/dist/components/data/context-meter/context-meter.class.js.map +1 -1
  102. package/dist/components/data/data-grid/data-grid.class.d.ts +1 -0
  103. package/dist/components/data/data-grid/data-grid.class.d.ts.map +1 -1
  104. package/dist/components/data/data-grid/data-grid.class.js +1 -0
  105. package/dist/components/data/data-grid/data-grid.class.js.map +1 -1
  106. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +3 -1
  107. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts.map +1 -1
  108. package/dist/components/data/flow-canvas/flow-canvas.class.js +3 -1
  109. package/dist/components/data/flow-canvas/flow-canvas.class.js.map +1 -1
  110. package/dist/components/data/flow-minimap/flow-minimap.class.d.ts +2 -2
  111. package/dist/components/data/flow-minimap/flow-minimap.class.js +2 -2
  112. package/dist/components/data/flow-node/flow-node.class.d.ts +1 -1
  113. package/dist/components/data/flow-node/flow-node.class.js +1 -1
  114. package/dist/components/data/heatmap/heatmap.class.d.ts +51 -2
  115. package/dist/components/data/heatmap/heatmap.class.d.ts.map +1 -1
  116. package/dist/components/data/heatmap/heatmap.class.js +42 -6
  117. package/dist/components/data/heatmap/heatmap.class.js.map +1 -1
  118. package/dist/components/data/heatmap/heatmap.styles.d.ts.map +1 -1
  119. package/dist/components/data/heatmap/heatmap.styles.js +19 -0
  120. package/dist/components/data/heatmap/heatmap.styles.js.map +1 -1
  121. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +20 -0
  122. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts.map +1 -1
  123. package/dist/components/data/sequence-strip/sequence-strip.class.js +35 -0
  124. package/dist/components/data/sequence-strip/sequence-strip.class.js.map +1 -1
  125. package/dist/components/data/sequence-strip/sequence-strip.styles.d.ts.map +1 -1
  126. package/dist/components/data/sequence-strip/sequence-strip.styles.js +29 -0
  127. package/dist/components/data/sequence-strip/sequence-strip.styles.js.map +1 -1
  128. package/dist/components/data/table/table.class.d.ts +11 -0
  129. package/dist/components/data/table/table.class.d.ts.map +1 -1
  130. package/dist/components/data/table/table.class.js +11 -0
  131. package/dist/components/data/table/table.class.js.map +1 -1
  132. package/dist/components/data/timeline/timeline-item.class.d.ts +17 -0
  133. package/dist/components/data/timeline/timeline-item.class.d.ts.map +1 -1
  134. package/dist/components/data/timeline/timeline-item.class.js +17 -0
  135. package/dist/components/data/timeline/timeline-item.class.js.map +1 -1
  136. package/dist/components/data/timeline/timeline.styles.d.ts.map +1 -1
  137. package/dist/components/data/timeline/timeline.styles.js +6 -3
  138. package/dist/components/data/timeline/timeline.styles.js.map +1 -1
  139. package/dist/components/data/tree/tree-node.class.d.ts +3 -0
  140. package/dist/components/data/tree/tree-node.class.d.ts.map +1 -1
  141. package/dist/components/data/tree/tree-node.class.js +3 -0
  142. package/dist/components/data/tree/tree-node.class.js.map +1 -1
  143. package/dist/components/forms/button/button.class.d.ts +24 -0
  144. package/dist/components/forms/button/button.class.d.ts.map +1 -1
  145. package/dist/components/forms/button/button.class.js +24 -0
  146. package/dist/components/forms/button/button.class.js.map +1 -1
  147. package/dist/components/forms/code-editor/code-editor.class.d.ts +28 -12
  148. package/dist/components/forms/code-editor/code-editor.class.d.ts.map +1 -1
  149. package/dist/components/forms/code-editor/code-editor.class.js +44 -14
  150. package/dist/components/forms/code-editor/code-editor.class.js.map +1 -1
  151. package/dist/components/forms/code-editor/code-editor.styles.d.ts.map +1 -1
  152. package/dist/components/forms/code-editor/code-editor.styles.js +4 -0
  153. package/dist/components/forms/code-editor/code-editor.styles.js.map +1 -1
  154. package/dist/components/forms/combobox/combobox.class.d.ts +10 -0
  155. package/dist/components/forms/combobox/combobox.class.d.ts.map +1 -1
  156. package/dist/components/forms/combobox/combobox.class.js +16 -0
  157. package/dist/components/forms/combobox/combobox.class.js.map +1 -1
  158. package/dist/components/forms/combobox/option.class.d.ts +3 -3
  159. package/dist/components/forms/combobox/option.class.d.ts.map +1 -1
  160. package/dist/components/forms/combobox/option.class.js +9 -0
  161. package/dist/components/forms/combobox/option.class.js.map +1 -1
  162. package/dist/components/forms/date-picker/date-input.class.d.ts +3 -0
  163. package/dist/components/forms/date-picker/date-input.class.d.ts.map +1 -1
  164. package/dist/components/forms/date-picker/date-input.class.js +3 -0
  165. package/dist/components/forms/date-picker/date-input.class.js.map +1 -1
  166. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +37 -2
  167. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts.map +1 -1
  168. package/dist/components/forms/emoji-picker/emoji-picker.class.js +113 -10
  169. package/dist/components/forms/emoji-picker/emoji-picker.class.js.map +1 -1
  170. package/dist/components/forms/emoji-picker/emoji-picker.styles.d.ts.map +1 -1
  171. package/dist/components/forms/emoji-picker/emoji-picker.styles.js +30 -0
  172. package/dist/components/forms/emoji-picker/emoji-picker.styles.js.map +1 -1
  173. package/dist/components/forms/icon-button/icon-button.class.d.ts +4 -0
  174. package/dist/components/forms/icon-button/icon-button.class.d.ts.map +1 -1
  175. package/dist/components/forms/icon-button/icon-button.class.js +4 -0
  176. package/dist/components/forms/icon-button/icon-button.class.js.map +1 -1
  177. package/dist/components/forms/input/input.class.d.ts +11 -3
  178. package/dist/components/forms/input/input.class.d.ts.map +1 -1
  179. package/dist/components/forms/input/input.class.js +3 -0
  180. package/dist/components/forms/input/input.class.js.map +1 -1
  181. package/dist/components/forms/input/time-input.class.d.ts +12 -0
  182. package/dist/components/forms/input/time-input.class.d.ts.map +1 -1
  183. package/dist/components/forms/input/time-input.class.js +27 -0
  184. package/dist/components/forms/input/time-input.class.js.map +1 -1
  185. package/dist/components/forms/rubric-form/rubric-form.class.d.ts +7 -0
  186. package/dist/components/forms/rubric-form/rubric-form.class.d.ts.map +1 -1
  187. package/dist/components/forms/rubric-form/rubric-form.class.js +7 -0
  188. package/dist/components/forms/rubric-form/rubric-form.class.js.map +1 -1
  189. package/dist/components/forms/select/select.class.d.ts +8 -0
  190. package/dist/components/forms/select/select.class.d.ts.map +1 -1
  191. package/dist/components/forms/select/select.class.js +8 -0
  192. package/dist/components/forms/select/select.class.js.map +1 -1
  193. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +1 -1
  194. package/dist/components/forms/swatch-picker/swatch-picker.class.js +1 -1
  195. package/dist/components/forms/switch/switch.class.d.ts +6 -0
  196. package/dist/components/forms/switch/switch.class.d.ts.map +1 -1
  197. package/dist/components/forms/switch/switch.class.js +6 -0
  198. package/dist/components/forms/switch/switch.class.js.map +1 -1
  199. package/dist/components/forms/token-input/token-input.class.d.ts +2 -0
  200. package/dist/components/forms/token-input/token-input.class.d.ts.map +1 -1
  201. package/dist/components/forms/token-input/token-input.class.js +2 -0
  202. package/dist/components/forms/token-input/token-input.class.js.map +1 -1
  203. package/dist/components/layout/app-rail/app-rail.class.d.ts +8 -0
  204. package/dist/components/layout/app-rail/app-rail.class.d.ts.map +1 -1
  205. package/dist/components/layout/app-rail/app-rail.class.js +8 -0
  206. package/dist/components/layout/app-rail/app-rail.class.js.map +1 -1
  207. package/dist/components/layout/button-group/button-group.class.d.ts +1 -1
  208. package/dist/components/layout/button-group/button-group.class.js +1 -1
  209. package/dist/components/layout/command-palette/command-palette.class.d.ts +12 -0
  210. package/dist/components/layout/command-palette/command-palette.class.d.ts.map +1 -1
  211. package/dist/components/layout/command-palette/command-palette.class.js +12 -0
  212. package/dist/components/layout/command-palette/command-palette.class.js.map +1 -1
  213. package/dist/components/layout/control-group/control-group.class.d.ts +1 -1
  214. package/dist/components/layout/control-group/control-group.class.js +1 -1
  215. package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts +7 -0
  216. package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts.map +1 -1
  217. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +7 -0
  218. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js.map +1 -1
  219. package/dist/components/layout/dock-panel/dock-panel.class.d.ts +3 -0
  220. package/dist/components/layout/dock-panel/dock-panel.class.d.ts.map +1 -1
  221. package/dist/components/layout/dock-panel/dock-panel.class.js +3 -0
  222. package/dist/components/layout/dock-panel/dock-panel.class.js.map +1 -1
  223. package/dist/components/layout/responsive-panel/responsive-panel.class.d.ts +2 -0
  224. package/dist/components/layout/responsive-panel/responsive-panel.class.d.ts.map +1 -1
  225. package/dist/components/layout/responsive-panel/responsive-panel.class.js +2 -0
  226. package/dist/components/layout/responsive-panel/responsive-panel.class.js.map +1 -1
  227. package/dist/components/layout/scroller/scroller.class.d.ts +2 -2
  228. package/dist/components/layout/scroller/scroller.class.js +2 -2
  229. package/dist/components/layout/segmented/segmented.class.d.ts +6 -0
  230. package/dist/components/layout/segmented/segmented.class.d.ts.map +1 -1
  231. package/dist/components/layout/segmented/segmented.class.js +6 -0
  232. package/dist/components/layout/segmented/segmented.class.js.map +1 -1
  233. package/dist/components/layout/split/split.class.d.ts +68 -15
  234. package/dist/components/layout/split/split.class.d.ts.map +1 -1
  235. package/dist/components/layout/split/split.class.js +80 -21
  236. package/dist/components/layout/split/split.class.js.map +1 -1
  237. package/dist/components/layout/stepper/stepper.class.d.ts +52 -11
  238. package/dist/components/layout/stepper/stepper.class.d.ts.map +1 -1
  239. package/dist/components/layout/stepper/stepper.class.js +69 -17
  240. package/dist/components/layout/stepper/stepper.class.js.map +1 -1
  241. package/dist/components/layout/virtual-list/virtual-list.class.d.ts +3 -0
  242. package/dist/components/layout/virtual-list/virtual-list.class.d.ts.map +1 -1
  243. package/dist/components/layout/virtual-list/virtual-list.class.js +3 -0
  244. package/dist/components/layout/virtual-list/virtual-list.class.js.map +1 -1
  245. package/dist/components/layout/widget/widget.class.d.ts +6 -0
  246. package/dist/components/layout/widget/widget.class.d.ts.map +1 -1
  247. package/dist/components/layout/widget/widget.class.js +6 -0
  248. package/dist/components/layout/widget/widget.class.js.map +1 -1
  249. package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +13 -0
  250. package/dist/components/media/attachment-chip/attachment-chip.class.d.ts.map +1 -1
  251. package/dist/components/media/attachment-chip/attachment-chip.class.js +13 -0
  252. package/dist/components/media/attachment-chip/attachment-chip.class.js.map +1 -1
  253. package/dist/components/media/avatar/avatar.class.d.ts +6 -0
  254. package/dist/components/media/avatar/avatar.class.d.ts.map +1 -1
  255. package/dist/components/media/avatar/avatar.class.js +6 -0
  256. package/dist/components/media/avatar/avatar.class.js.map +1 -1
  257. package/dist/components/media/media-card/media-card.class.d.ts +2 -0
  258. package/dist/components/media/media-card/media-card.class.d.ts.map +1 -1
  259. package/dist/components/media/media-card/media-card.class.js +2 -0
  260. package/dist/components/media/media-card/media-card.class.js.map +1 -1
  261. package/dist/components/media/playback/playback.class.d.ts +2 -0
  262. package/dist/components/media/playback/playback.class.d.ts.map +1 -1
  263. package/dist/components/media/playback/playback.class.js +2 -0
  264. package/dist/components/media/playback/playback.class.js.map +1 -1
  265. package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -0
  266. package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts.map +1 -1
  267. package/dist/components/media/zoomable-frame/zoomable-frame.class.js +3 -0
  268. package/dist/components/media/zoomable-frame/zoomable-frame.class.js.map +1 -1
  269. package/dist/components/overlays/badge/badge.class.d.ts +6 -0
  270. package/dist/components/overlays/badge/badge.class.d.ts.map +1 -1
  271. package/dist/components/overlays/badge/badge.class.js +6 -0
  272. package/dist/components/overlays/badge/badge.class.js.map +1 -1
  273. package/dist/components/overlays/callout/callout.class.d.ts +6 -0
  274. package/dist/components/overlays/callout/callout.class.d.ts.map +1 -1
  275. package/dist/components/overlays/callout/callout.class.js +6 -0
  276. package/dist/components/overlays/callout/callout.class.js.map +1 -1
  277. package/dist/components/overlays/chip/chip.class.d.ts +18 -0
  278. package/dist/components/overlays/chip/chip.class.d.ts.map +1 -1
  279. package/dist/components/overlays/chip/chip.class.js +18 -0
  280. package/dist/components/overlays/chip/chip.class.js.map +1 -1
  281. package/dist/components/overlays/dialog/dialog.class.d.ts +6 -0
  282. package/dist/components/overlays/dialog/dialog.class.d.ts.map +1 -1
  283. package/dist/components/overlays/dialog/dialog.class.js +6 -0
  284. package/dist/components/overlays/dialog/dialog.class.js.map +1 -1
  285. package/dist/components/overlays/drawer/drawer.class.d.ts +6 -0
  286. package/dist/components/overlays/drawer/drawer.class.d.ts.map +1 -1
  287. package/dist/components/overlays/drawer/drawer.class.js +6 -0
  288. package/dist/components/overlays/drawer/drawer.class.js.map +1 -1
  289. package/dist/components/overlays/progress/progress-ring.class.d.ts +1 -0
  290. package/dist/components/overlays/progress/progress-ring.class.d.ts.map +1 -1
  291. package/dist/components/overlays/progress/progress-ring.class.js +1 -0
  292. package/dist/components/overlays/progress/progress-ring.class.js.map +1 -1
  293. package/dist/components/overlays/skeleton/skeleton.class.d.ts +2 -0
  294. package/dist/components/overlays/skeleton/skeleton.class.d.ts.map +1 -1
  295. package/dist/components/overlays/skeleton/skeleton.class.js +2 -0
  296. package/dist/components/overlays/skeleton/skeleton.class.js.map +1 -1
  297. package/dist/components/overlays/spinner/spinner.class.d.ts +4 -0
  298. package/dist/components/overlays/spinner/spinner.class.d.ts.map +1 -1
  299. package/dist/components/overlays/spinner/spinner.class.js +4 -0
  300. package/dist/components/overlays/spinner/spinner.class.js.map +1 -1
  301. package/dist/components/overlays/toast/toast-item.class.d.ts +11 -0
  302. package/dist/components/overlays/toast/toast-item.class.d.ts.map +1 -1
  303. package/dist/components/overlays/toast/toast-item.class.js +11 -0
  304. package/dist/components/overlays/toast/toast-item.class.js.map +1 -1
  305. package/dist/components/overlays/toast/toast.class.d.ts +15 -0
  306. package/dist/components/overlays/toast/toast.class.d.ts.map +1 -1
  307. package/dist/components/overlays/toast/toast.class.js +15 -0
  308. package/dist/components/overlays/toast/toast.class.js.map +1 -1
  309. package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +8 -0
  310. package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts.map +1 -1
  311. package/dist/components/retrieval/citation-badge/citation-badge.class.js +8 -0
  312. package/dist/components/retrieval/citation-badge/citation-badge.class.js.map +1 -1
  313. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +1 -0
  314. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts.map +1 -1
  315. package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -0
  316. package/dist/components/retrieval/entity-chip/entity-chip.class.js.map +1 -1
  317. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +2 -0
  318. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts.map +1 -1
  319. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +2 -0
  320. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js.map +1 -1
  321. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.d.ts +1 -0
  322. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.d.ts.map +1 -1
  323. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -0
  324. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js.map +1 -1
  325. package/dist/components/utility/diff-view/diff-view.class.d.ts +1 -0
  326. package/dist/components/utility/diff-view/diff-view.class.d.ts.map +1 -1
  327. package/dist/components/utility/diff-view/diff-view.class.js +1 -0
  328. package/dist/components/utility/diff-view/diff-view.class.js.map +1 -1
  329. package/dist/components/utility/icon/icon.class.d.ts +1 -0
  330. package/dist/components/utility/icon/icon.class.d.ts.map +1 -1
  331. package/dist/components/utility/icon/icon.class.js +1 -0
  332. package/dist/components/utility/icon/icon.class.js.map +1 -1
  333. package/dist/components/utility/json-viewer/json-viewer.class.d.ts +3 -0
  334. package/dist/components/utility/json-viewer/json-viewer.class.d.ts.map +1 -1
  335. package/dist/components/utility/json-viewer/json-viewer.class.js +3 -0
  336. package/dist/components/utility/json-viewer/json-viewer.class.js.map +1 -1
  337. package/dist/components/utility/known-date/known-date.class.d.ts +11 -0
  338. package/dist/components/utility/known-date/known-date.class.d.ts.map +1 -1
  339. package/dist/components/utility/known-date/known-date.class.js +11 -0
  340. package/dist/components/utility/known-date/known-date.class.js.map +1 -1
  341. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts +2 -0
  342. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.d.ts.map +1 -1
  343. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js +2 -0
  344. package/dist/components/viewers/calendar-viewer/calendar-viewer.class.js.map +1 -1
  345. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +5 -0
  346. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts.map +1 -1
  347. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +5 -0
  348. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js.map +1 -1
  349. package/dist/components/viewers/document-compare/document-compare.class.d.ts +1 -1
  350. package/dist/components/viewers/document-compare/document-compare.class.js +1 -1
  351. package/dist/components/viewers/document-preview/document-preview.class.d.ts +3 -0
  352. package/dist/components/viewers/document-preview/document-preview.class.d.ts.map +1 -1
  353. package/dist/components/viewers/document-preview/document-preview.class.js +3 -0
  354. package/dist/components/viewers/document-preview/document-preview.class.js.map +1 -1
  355. package/dist/components/viewers/email-viewer/email-viewer.class.d.ts +2 -0
  356. package/dist/components/viewers/email-viewer/email-viewer.class.d.ts.map +1 -1
  357. package/dist/components/viewers/email-viewer/email-viewer.class.js +2 -0
  358. package/dist/components/viewers/email-viewer/email-viewer.class.js.map +1 -1
  359. package/dist/components/viewers/html-viewer/html-viewer.class.d.ts +2 -0
  360. package/dist/components/viewers/html-viewer/html-viewer.class.d.ts.map +1 -1
  361. package/dist/components/viewers/html-viewer/html-viewer.class.js +2 -0
  362. package/dist/components/viewers/html-viewer/html-viewer.class.js.map +1 -1
  363. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts.map +1 -1
  364. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +41 -9
  365. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js.map +1 -1
  366. package/dist/internal/css-length.d.ts +40 -0
  367. package/dist/internal/css-length.d.ts.map +1 -0
  368. package/dist/internal/css-length.js +72 -0
  369. package/dist/internal/css-length.js.map +1 -0
  370. package/dist/internal/orientation-breakpoint.d.ts +12 -0
  371. package/dist/internal/orientation-breakpoint.d.ts.map +1 -0
  372. package/dist/internal/orientation-breakpoint.js +127 -0
  373. package/dist/internal/orientation-breakpoint.js.map +1 -0
  374. package/dist/lyra.d.ts +2 -2
  375. package/dist/lyra.d.ts.map +1 -1
  376. package/dist/lyra.js.map +1 -1
  377. package/llms/components/lr-accordion-item.md +23 -0
  378. package/llms/components/lr-accordion.md +23 -0
  379. package/llms/components/lr-activity-feed.md +45 -0
  380. package/llms/components/lr-agent-run.md +66 -0
  381. package/llms/components/lr-agent-trace.md +42 -0
  382. package/llms/components/lr-agent-workspace.md +109 -0
  383. package/llms/components/lr-animated-image.md +66 -0
  384. package/llms/components/lr-animation.md +73 -0
  385. package/llms/components/lr-app-rail-item.md +218 -0
  386. package/llms/components/lr-app-rail.md +218 -0
  387. package/llms/components/lr-archive-viewer.md +36 -0
  388. package/llms/components/lr-artifact-panel.md +60 -0
  389. package/llms/components/lr-attachment-chip.md +131 -0
  390. package/llms/components/lr-attachment-trigger.md +90 -0
  391. package/llms/components/lr-audio-visualizer.md +43 -0
  392. package/llms/components/lr-av-player.md +50 -0
  393. package/llms/components/lr-avatar-group.md +69 -0
  394. package/llms/components/lr-avatar.md +69 -0
  395. package/llms/components/lr-badge.md +25 -0
  396. package/llms/components/lr-bar-chart.md +70 -0
  397. package/llms/components/lr-box-plot.md +67 -0
  398. package/llms/components/lr-branch-picker.md +32 -0
  399. package/llms/components/lr-breadcrumb-item.md +30 -0
  400. package/llms/components/lr-breadcrumb.md +30 -0
  401. package/llms/components/lr-browser-frame.md +51 -0
  402. package/llms/components/lr-bubble-chart.md +70 -0
  403. package/llms/components/lr-button-group.md +30 -0
  404. package/llms/components/lr-button.md +89 -0
  405. package/llms/components/lr-calendar-viewer.md +32 -0
  406. package/llms/components/lr-calendar.md +52 -0
  407. package/llms/components/lr-callout.md +37 -0
  408. package/llms/components/lr-card.md +67 -0
  409. package/llms/components/lr-carousel-item.md +29 -0
  410. package/llms/components/lr-carousel.md +43 -0
  411. package/llms/components/lr-chart.md +148 -0
  412. package/llms/components/lr-chat-composer.md +139 -0
  413. package/llms/components/lr-chat-message.md +145 -0
  414. package/llms/components/lr-chat-viewport.md +70 -0
  415. package/llms/components/lr-checkbox-group.md +21 -0
  416. package/llms/components/lr-checkbox.md +79 -0
  417. package/llms/components/lr-checkpoint.md +48 -0
  418. package/llms/components/lr-chip-group.md +152 -0
  419. package/llms/components/lr-chip.md +152 -0
  420. package/llms/components/lr-chunk-inspector.md +66 -0
  421. package/llms/components/lr-citation-badge.md +102 -0
  422. package/llms/components/lr-code-block-core.md +113 -0
  423. package/llms/components/lr-code-block.md +146 -0
  424. package/llms/components/lr-code-editor.md +72 -0
  425. package/llms/components/lr-color-picker.md +21 -0
  426. package/llms/components/lr-combobox.md +196 -0
  427. package/llms/components/lr-command-palette.md +50 -0
  428. package/llms/components/lr-commit-card.md +33 -0
  429. package/llms/components/lr-community-card.md +54 -0
  430. package/llms/components/lr-compare-panel.md +38 -0
  431. package/llms/components/lr-confirm-bar.md +48 -0
  432. package/llms/components/lr-contact-viewer.md +34 -0
  433. package/llms/components/lr-context-inspector.md +50 -0
  434. package/llms/components/lr-context-meter.md +92 -0
  435. package/llms/components/lr-control-group.md +46 -0
  436. package/llms/components/lr-conversation-item.md +118 -0
  437. package/llms/components/lr-copy-button.md +52 -0
  438. package/llms/components/lr-csv-viewer.md +49 -0
  439. package/llms/components/lr-dashboard-grid.md +34 -0
  440. package/llms/components/lr-data-grid.md +47 -0
  441. package/llms/components/lr-dataset-viewer.md +60 -0
  442. package/llms/components/lr-date-input.md +201 -0
  443. package/llms/components/lr-date-picker.md +201 -0
  444. package/llms/components/lr-details.md +23 -0
  445. package/llms/components/lr-dialog.md +185 -0
  446. package/llms/components/lr-diff-view.md +86 -0
  447. package/llms/components/lr-divider.md +28 -0
  448. package/llms/components/lr-dock-panel.md +110 -0
  449. package/llms/components/lr-document-compare.md +22 -0
  450. package/llms/components/lr-document-library.md +21 -0
  451. package/llms/components/lr-document-preview.md +179 -0
  452. package/llms/components/lr-document-viewer.md +84 -0
  453. package/llms/components/lr-docx-viewer.md +63 -0
  454. package/llms/components/lr-doughnut-chart.md +70 -0
  455. package/llms/components/lr-drawer.md +48 -0
  456. package/llms/components/lr-drilldown-panel.md +25 -0
  457. package/llms/components/lr-dropdown-item.md +171 -0
  458. package/llms/components/lr-dropdown.md +24 -0
  459. package/llms/components/lr-ebook-viewer.md +60 -0
  460. package/llms/components/lr-email-viewer.md +51 -0
  461. package/llms/components/lr-emoji-picker.md +71 -0
  462. package/llms/components/lr-empty.md +56 -0
  463. package/llms/components/lr-entity-card.md +64 -0
  464. package/llms/components/lr-entity-chip.md +50 -0
  465. package/llms/components/lr-entity-dossier.md +71 -0
  466. package/llms/components/lr-env-list.md +27 -0
  467. package/llms/components/lr-eval-dataset.md +45 -0
  468. package/llms/components/lr-eval-result.md +45 -0
  469. package/llms/components/lr-evaluation-run.md +50 -0
  470. package/llms/components/lr-export-button.md +104 -0
  471. package/llms/components/lr-file-icon.md +34 -0
  472. package/llms/components/lr-file-input.md +104 -0
  473. package/llms/components/lr-file-tree.md +29 -0
  474. package/llms/components/lr-filter-bar.md +20 -0
  475. package/llms/components/lr-flag.md +122 -0
  476. package/llms/components/lr-flow-canvas.md +112 -0
  477. package/llms/components/lr-flow-controls.md +47 -0
  478. package/llms/components/lr-flow-minimap.md +52 -0
  479. package/llms/components/lr-flow-node.md +56 -0
  480. package/llms/components/lr-flow-run-overlay.md +56 -0
  481. package/llms/components/lr-format-bytes.md +31 -0
  482. package/llms/components/lr-format-date.md +33 -0
  483. package/llms/components/lr-format-number.md +41 -0
  484. package/llms/components/lr-gauge.md +65 -0
  485. package/llms/components/lr-generation-status.md +105 -0
  486. package/llms/components/lr-geojson-view.md +43 -0
  487. package/llms/components/lr-graph-legend.md +64 -0
  488. package/llms/components/lr-graph-query-builder.md +27 -0
  489. package/llms/components/lr-graph.md +224 -0
  490. package/llms/components/lr-grounding-summary.md +57 -0
  491. package/llms/components/lr-handoff-divider.md +27 -0
  492. package/llms/components/lr-heatmap.md +232 -0
  493. package/llms/components/lr-highlight-layer.md +31 -0
  494. package/llms/components/lr-histogram.md +69 -0
  495. package/llms/components/lr-html-viewer.md +30 -0
  496. package/llms/components/lr-icon-button.md +39 -0
  497. package/llms/components/lr-icon.md +36 -0
  498. package/llms/components/lr-image-comparer.md +38 -0
  499. package/llms/components/lr-image-viewer.md +35 -0
  500. package/llms/components/lr-include.md +53 -0
  501. package/llms/components/lr-ingestion-queue.md +60 -0
  502. package/llms/components/lr-input.md +82 -0
  503. package/llms/components/lr-intersection-observer.md +25 -0
  504. package/llms/components/lr-json-viewer.md +98 -0
  505. package/llms/components/lr-kbd.md +74 -0
  506. package/llms/components/lr-knowledge-base.md +64 -0
  507. package/llms/components/lr-knowledge-graph-explorer.md +92 -0
  508. package/llms/components/lr-known-date.md +84 -0
  509. package/llms/components/lr-lightbox.md +79 -0
  510. package/llms/components/lr-line-chart.md +70 -0
  511. package/llms/components/lr-lite-chart.md +143 -0
  512. package/llms/components/lr-live-region.md +105 -0
  513. package/llms/components/lr-map.md +127 -0
  514. package/llms/components/lr-markdown-core.md +70 -0
  515. package/llms/components/lr-markdown.md +171 -0
  516. package/llms/components/lr-media-card.md +106 -0
  517. package/llms/components/lr-memory-panel.md +67 -0
  518. package/llms/components/lr-mention-popover.md +139 -0
  519. package/llms/components/lr-menu-item.md +171 -0
  520. package/llms/components/lr-menu.md +171 -0
  521. package/llms/components/lr-message-actions.md +48 -0
  522. package/llms/components/lr-message-feedback.md +37 -0
  523. package/llms/components/lr-mind-map.md +64 -0
  524. package/llms/components/lr-model-select.md +144 -0
  525. package/llms/components/lr-model-settings-panel.md +99 -0
  526. package/llms/components/lr-mutation-observer.md +27 -0
  527. package/llms/components/lr-neighbor-list.md +56 -0
  528. package/llms/components/lr-node-palette.md +67 -0
  529. package/llms/components/lr-notebook-viewer.md +65 -0
  530. package/llms/components/lr-number-input.md +44 -0
  531. package/llms/components/lr-option.md +196 -0
  532. package/llms/components/lr-page-rail.md +37 -0
  533. package/llms/components/lr-pagination.md +88 -0
  534. package/llms/components/lr-path-strip.md +55 -0
  535. package/llms/components/lr-pdf-viewer.md +78 -0
  536. package/llms/components/lr-phone-input.md +162 -0
  537. package/llms/components/lr-pie-chart.md +70 -0
  538. package/llms/components/lr-playback.md +74 -0
  539. package/llms/components/lr-polar-area-chart.md +70 -0
  540. package/llms/components/lr-policy-summary.md +33 -0
  541. package/llms/components/lr-poll-status.md +71 -0
  542. package/llms/components/lr-popover.md +31 -0
  543. package/llms/components/lr-pptx-viewer.md +35 -0
  544. package/llms/components/lr-progress-bar.md +22 -0
  545. package/llms/components/lr-progress-ring.md +26 -0
  546. package/llms/components/lr-provenance-panel.md +58 -0
  547. package/llms/components/lr-push-to-talk.md +50 -0
  548. package/llms/components/lr-qr-code.md +20 -0
  549. package/llms/components/lr-query-builder.md +21 -0
  550. package/llms/components/lr-radar-chart.md +70 -0
  551. package/llms/components/lr-radio-group.md +25 -0
  552. package/llms/components/lr-radio.md +31 -0
  553. package/llms/components/lr-random-content.md +62 -0
  554. package/llms/components/lr-rating.md +21 -0
  555. package/llms/components/lr-relative-time.md +31 -0
  556. package/llms/components/lr-resize-observer.md +25 -0
  557. package/llms/components/lr-responsive-panel.md +112 -0
  558. package/llms/components/lr-result-card.md +88 -0
  559. package/llms/components/lr-result-field.md +88 -0
  560. package/llms/components/lr-retrieval-results.md +84 -0
  561. package/llms/components/lr-retrieval-search.md +70 -0
  562. package/llms/components/lr-retrieval-trace.md +59 -0
  563. package/llms/components/lr-rubric-form.md +37 -0
  564. package/llms/components/lr-scatter-chart.md +70 -0
  565. package/llms/components/lr-scroller.md +47 -0
  566. package/llms/components/lr-segmented.md +74 -0
  567. package/llms/components/lr-select.md +113 -0
  568. package/llms/components/lr-sequence-strip.md +95 -0
  569. package/llms/components/lr-skeleton.md +53 -0
  570. package/llms/components/lr-slider.md +92 -0
  571. package/llms/components/lr-source-card.md +131 -0
  572. package/llms/components/lr-source-list.md +131 -0
  573. package/llms/components/lr-source-picker.md +63 -0
  574. package/llms/components/lr-span-waterfall.md +42 -0
  575. package/llms/components/lr-sparkline.md +60 -0
  576. package/llms/components/lr-spinner.md +32 -0
  577. package/llms/components/lr-split.md +191 -0
  578. package/llms/components/lr-spreadsheet-viewer.md +47 -0
  579. package/llms/components/lr-stack-trace.md +77 -0
  580. package/llms/components/lr-stat.md +89 -0
  581. package/llms/components/lr-stepper.md +118 -0
  582. package/llms/components/lr-stream-status.md +128 -0
  583. package/llms/components/lr-streaming-text.md +101 -0
  584. package/llms/components/lr-suggestion-chips.md +40 -0
  585. package/llms/components/lr-svg-viewer.md +47 -0
  586. package/llms/components/lr-swatch-picker.md +91 -0
  587. package/llms/components/lr-switch.md +82 -0
  588. package/llms/components/lr-table.md +201 -0
  589. package/llms/components/lr-tabs.md +80 -0
  590. package/llms/components/lr-tag.md +25 -0
  591. package/llms/components/lr-task-list.md +42 -0
  592. package/llms/components/lr-terminal.md +44 -0
  593. package/llms/components/lr-test-results.md +38 -0
  594. package/llms/components/lr-textarea.md +111 -0
  595. package/llms/components/lr-thinking-panel.md +93 -0
  596. package/llms/components/lr-thread-list.md +97 -0
  597. package/llms/components/lr-time-input.md +53 -0
  598. package/llms/components/lr-time-range.md +91 -0
  599. package/llms/components/lr-timeline-item.md +65 -0
  600. package/llms/components/lr-timeline.md +65 -0
  601. package/llms/components/lr-toast-item.md +123 -0
  602. package/llms/components/lr-toast.md +123 -0
  603. package/llms/components/lr-token-input.md +31 -0
  604. package/llms/components/lr-tool-approval-dialog.md +131 -0
  605. package/llms/components/lr-tool-call-chip.md +101 -0
  606. package/llms/components/lr-tool-param-form.md +148 -0
  607. package/llms/components/lr-tool-result-dialog.md +106 -0
  608. package/llms/components/lr-tool-result-view.md +162 -0
  609. package/llms/components/lr-tool-select-dialog.md +124 -0
  610. package/llms/components/lr-tool-timeline.md +56 -0
  611. package/llms/components/lr-tooltip.md +47 -0
  612. package/llms/components/lr-tour.md +100 -0
  613. package/llms/components/lr-trace-tree.md +35 -0
  614. package/llms/components/lr-transcript-feed.md +45 -0
  615. package/llms/components/lr-tree-node.md +133 -0
  616. package/llms/components/lr-tree.md +133 -0
  617. package/llms/components/lr-typing-indicator.md +80 -0
  618. package/llms/components/lr-usage-badge.md +44 -0
  619. package/llms/components/lr-virtual-list.md +145 -0
  620. package/llms/components/lr-voice-picker.md +78 -0
  621. package/llms/components/lr-widget-renderer.md +78 -0
  622. package/llms/components/lr-widget.md +104 -0
  623. package/llms/components/lr-word-cloud.md +112 -0
  624. package/llms/components/lr-xml-viewer.md +58 -0
  625. package/llms/components/lr-zoomable-frame.md +57 -0
  626. package/llms/index.md +301 -0
  627. package/llms/migration.md +86 -0
  628. package/llms/peers.md +41 -0
  629. package/llms/shared.md +321 -0
  630. package/llms/tokens.md +533 -0
  631. package/llms-full.txt +10731 -8563
  632. package/llms.txt +64 -121
  633. package/package.json +14 -2
  634. package/vscode-css-data.json +1424 -185
  635. package/vscode-html-data.json +128 -107
  636. package/web-types.json +853 -118
@@ -0,0 +1,171 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/layout.md — do not edit this file. -->
2
+
3
+ # `lr-menu-item`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/layout/menu/menu-item.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraMenuItem`, also available unregistered from `@aceshooting/lyra-ui/components/layout/menu/menu-item.class.js`
7
+ - **Family** `components/layout/` — see `llms/index.md` for its siblings
8
+ - **Optional peers** none
9
+ - **Documented with** `lr-menu`, `lr-dropdown-item` (same section below)
10
+ - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
11
+
12
+ ---
13
+
14
+ ## `lr-menu` / `lr-menu-item`
15
+
16
+ An anchored dropdown built around a consumer-supplied trigger element (typically an icon button)
17
+ assigned to the `trigger` slot. First-party invention (no Web Awesome equivalent) — a close, drop-
18
+ in-shaped replacement for reaching outside this library for a third-party dropdown to build a gear
19
+ menu, an avatar menu, or a history row's overflow menu. Uses the WAI-ARIA "menu button" pattern —
20
+ `role="menu"`/`role="menuitem"` with real roving DOM focus moving between actual focusable
21
+ `<lr-menu-item>` rows — deliberately not a `role="listbox"`/`aria-activedescendant` shape (that's
22
+ `<lr-select>`'s pattern instead).
23
+
24
+ ### `lr-menu`
25
+
26
+ **Properties:**
27
+ - `open: boolean = false` (reflected)
28
+ - `placement?: Placement` (reflected — resolved through `rtlAwarePlacement()` (`internal/rtl.ts`),
29
+ then forwarded to `place()`; defaults to whatever `place()` itself defaults to. A `left`/`right`
30
+ side is mirrored under `dir="rtl"`, so e.g. `placement="left-start"` still anchors to the menu's
31
+ trailing edge instead of pinning to the physical left)
32
+ - `label: string = 'Menu'` — accessible name for the `role="menu"` popup; override with something
33
+ specific (e.g. "Row actions") when a page has more than one menu. A host-level `aria-label`
34
+ attribute takes precedence over both this prop and the localized default (unset by default, so
35
+ a no-op for existing consumers), matching `lr-select`/`lr-model-select`'s
36
+ `this.getAttribute('aria-label') || <computed default>` precedence
37
+
38
+ - `closeOnEscapeAnywhere: boolean = false` (attribute `close-on-escape-anywhere`) — lets Escape
39
+ close the menu when focus is on slotted non-menu-item content inside the popup; item activation
40
+ remains scoped to actual menu items
41
+
42
+ **Events:** `lr-show` (no detail — fires only when `open` transitions to `true`, not for markup
43
+ that renders `open` true from the start), `lr-hide` (same first-render guard, opposite
44
+ transition), `lr-menu-select` (`detail: { value }` — a consolidated re-fire of the activated
45
+ `<lr-menu-item>`'s own `lr-menu-item-select`; always followed by the menu closing and focus
46
+ returning to the trigger)
47
+
48
+ **Slots:** `trigger` (the consumer's own trigger element — first assigned element wins if several
49
+ are assigned; enhanced imperatively with `aria-haspopup="menu"`/`aria-expanded`/`aria-controls`
50
+ since those attributes belong on the actual interactive trigger, which lives outside this
51
+ component's shadow root), default (`<lr-menu-item>` elements, plus optionally plain `<hr>`
52
+ dividers between groups — native `<hr>` already carries an implicit `separator` role)
53
+
54
+ **CSS parts:** `trigger` (wrapper around the `trigger` slot — the positioning anchor), `popup` (the
55
+ positioned floating panel), `list` (the `role="menu"` container wrapping the default slot)
56
+
57
+ **Themeable custom properties:** shared tokens only (`--lr-color-surface`, `--lr-color-border`,
58
+ `--lr-radius`, `--lr-shadow`, `--lr-space-xs`, `--lr-transition-fast`).
59
+
60
+ **Optional peer deps:** none.
61
+
62
+ ### `lr-menu-item`
63
+
64
+ Not meaningful standalone — it exists purely as `<lr-menu>`'s light-DOM child, the same
65
+ relationship `<lr-option>` has to `<lr-combobox>`/`<lr-select>`. `role="menuitem"` and the
66
+ roving `tabindex` both live on the host element itself (mirroring `<lr-tree-node>`), not an
67
+ internal shadow-DOM button; `<lr-menu>` is the sole owner of this element's `tabIndex`.
68
+
69
+ **Properties:**
70
+ - `value: string = ''` — an id/value echoed back in the parent `<lr-menu>`'s `lr-menu-select`
71
+ detail
72
+ - `disabled: boolean = false` (reflected — disables selection and excludes this item from
73
+ `<lr-menu>`'s roving-tabindex navigation entirely)
74
+ - `destructive: boolean = false` (reflected — tints the row with `--lr-color-danger`, for a
75
+ dangerous action like "Delete")
76
+ - `type: 'normal' | 'checkbox' = 'normal'` — `'checkbox'` (mirroring `wa-dropdown-item`'s identical
77
+ `type` option) renders `role="menuitemcheckbox"` in place of `role="menuitem"`, with `aria-checked`
78
+ reflecting `checked` and a checkmark glyph shown once `checked` is `true`. `'normal'` (the default)
79
+ renders and behaves exactly as before this option existed.
80
+ - `checked: boolean = false` (reflected) — whether a `type="checkbox"` item is checked; meaningless
81
+ (ignored) for `type="normal"`
82
+
83
+ **Methods:** `select(): void` — fires `lr-menu-item-select` (no-op while `disabled`). Called
84
+ internally by this element's own click handler and by `<lr-menu>`'s Enter/Space keydown handling
85
+ of the roving-focused item; also the cleanest way for a consumer/test to trigger selection
86
+ programmatically instead of clicking the shadow-DOM `[part="base"]` element (see the gotcha below).
87
+ For `type="checkbox"`, also toggles `checked` and fires `lr-menu-item-change` first.
88
+
89
+ **Events:** `lr-menu-item-select` (no detail payload — `this.emit('lr-menu-item-select')` is
90
+ called with no second argument, so `event.detail` is `null`, not `undefined`; fires on click, or
91
+ when the parent `<lr-menu>`'s own Enter/Space keydown handling calls `select()` on the currently
92
+ roving-focused item), `lr-menu-item-change` (`detail: { value, checked }` — fired when a
93
+ `type="checkbox"` item is activated and its `checked` state toggled, in addition to — never instead
94
+ of — `lr-menu-item-select`; never fired for `type="normal"`)
95
+
96
+ **Slots:** default (the item's label content), `icon` (optional leading icon)
97
+
98
+ **CSS parts:** `base` (the row — `role` lives on the host, not this part), `icon` (wrapper around
99
+ the `icon` slot; not rendered/hidden entirely while the slot is empty), `label` (wrapper around the
100
+ default slot), `checkmark` (the checkmark glyph shown when a `type="checkbox"` item is `checked`;
101
+ not rendered at all for `type="normal"`)
102
+
103
+ **Themeable custom properties:** shared tokens only (`--lr-radius`, `--lr-focus-ring-width`,
104
+ `--lr-focus-ring-color`, `--lr-space-xs`, `--lr-space-s`, `--lr-color-brand-quiet`,
105
+ `--lr-opacity-disabled`, `--lr-color-danger`, `--lr-color-danger-quiet`).
106
+
107
+ **Optional peer deps:** none.
108
+
109
+ ### `lr-dropdown-item`
110
+
111
+ Compatibility naming alias for `<lr-menu-item>`. It is a subclass of the same implementation,
112
+ so `value`, `disabled`, `destructive`, `type`, `checked`, `select()`, checkbox events, and menu
113
+ roving focus behave identically.
114
+
115
+ **Slots:** default label content and optional `icon`.
116
+
117
+ ```html
118
+ <lr-menu>
119
+ <button slot="trigger">Actions</button>
120
+ <lr-dropdown-item value="archive">Archive</lr-dropdown-item>
121
+ </lr-menu>
122
+ ```
123
+
124
+ ```html
125
+ <lr-menu label="Row actions">
126
+ <button slot="trigger" aria-label="More actions">⋮</button>
127
+ <lr-menu-item value="edit">Edit</lr-menu-item>
128
+ <lr-menu-item value="duplicate">Duplicate</lr-menu-item>
129
+ <hr />
130
+ <lr-menu-item value="delete" destructive>Delete</lr-menu-item>
131
+ </lr-menu>
132
+ <script type="module">
133
+ document.querySelector('lr-menu').addEventListener('lr-menu-select', (e) => console.log(e.detail.value));
134
+ </script>
135
+ ```
136
+
137
+ The popup is always rendered in the DOM (never `display:none`) so `.focus()` calls on its content
138
+ work synchronously the instant it opens — closed state is conveyed via `visibility`/`opacity`
139
+ instead. `visibility` is an inherited CSS property that pierces the `<slot>` projection boundary, so
140
+ every closed-state `<lr-menu-item>` is automatically excluded from sequential (Tab-key)
141
+ navigation with no separate JS bookkeeping. ArrowDown/ArrowUp *on the trigger while closed* also
142
+ opens the menu, focusing the first/last non-disabled item respectively (mirrors native `<select>`).
143
+ Once open, ArrowDown/ArrowUp move the roving focus among non-disabled items and wrap past either end
144
+ (unlike `<lr-select>`'s clamped listbox nav); Home/End jump to the first/last non-disabled item;
145
+ Enter/Space activate the focused item; Escape closes and refocuses the trigger; Tab closes without
146
+ `preventDefault()`, letting the browser's own Tab navigation proceed untouched. All of this list-level
147
+ keydown handling — Escape, Tab, the arrow keys, Home/End, and type-ahead alike — only responds when
148
+ the triggering keydown event's own target is an actual `<lr-menu-item>` element; a keydown bubbling
149
+ up from any other node inside the popup is ignored rather than misread as list navigation. A printable
150
+ keypress runs type-ahead: roving focus jumps to the next non-disabled item whose text starts with the
151
+ accumulated buffer (cycling from just after the active item, buffer resets ~500ms after the last
152
+ keystroke) — mirrors `<lr-select>`'s identical listbox type-ahead. A click outside both the trigger
153
+ and the open popup also closes it, but deliberately does *not* refocus the trigger — the outside
154
+ click itself already moved focus somewhere the user chose.
155
+
156
+ **Known gotchas:**
157
+ - `<lr-menu-item>`'s click handler lives on an inner shadow-DOM element (`[part="base"]`), not the
158
+ host — calling `.click()` directly on the `<lr-menu-item>` host element in a test does **not**
159
+ trigger selection; either click (or dispatch on) the element returned by
160
+ `menuItemEl.shadowRoot.querySelector('[part="base"]')`, or just call the item's own `select()`
161
+ method directly.
162
+ - `lr-show`/`lr-hide` are suppressed on the very first render even if `open` is already `true`
163
+ in markup — only later `open` transitions fire them.
164
+ - `lr-menu-item-select` carries no detail payload (`event.detail === null`); read
165
+ `event.target.value` instead. `<lr-menu>`'s own re-fired `lr-menu-select` is the one that
166
+ carries `detail: { value }`.
167
+ - Tab closes the menu without `preventDefault()` or focus trapping — the browser's own default Tab
168
+ navigation proceeds untouched, only the (now-stale) open state is cleared.
169
+ - Only Escape and a committed selection refocus the trigger on close; a click outside does not.
170
+
171
+ ---
@@ -0,0 +1,171 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/layout.md — do not edit this file. -->
2
+
3
+ # `lr-menu`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/layout/menu/menu.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraMenu`, also available unregistered from `@aceshooting/lyra-ui/components/layout/menu/menu.class.js`
7
+ - **Family** `components/layout/` — see `llms/index.md` for its siblings
8
+ - **Optional peers** none
9
+ - **Documented with** `lr-menu-item`, `lr-dropdown-item` (same section below)
10
+ - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
11
+
12
+ ---
13
+
14
+ ## `lr-menu` / `lr-menu-item`
15
+
16
+ An anchored dropdown built around a consumer-supplied trigger element (typically an icon button)
17
+ assigned to the `trigger` slot. First-party invention (no Web Awesome equivalent) — a close, drop-
18
+ in-shaped replacement for reaching outside this library for a third-party dropdown to build a gear
19
+ menu, an avatar menu, or a history row's overflow menu. Uses the WAI-ARIA "menu button" pattern —
20
+ `role="menu"`/`role="menuitem"` with real roving DOM focus moving between actual focusable
21
+ `<lr-menu-item>` rows — deliberately not a `role="listbox"`/`aria-activedescendant` shape (that's
22
+ `<lr-select>`'s pattern instead).
23
+
24
+ ### `lr-menu`
25
+
26
+ **Properties:**
27
+ - `open: boolean = false` (reflected)
28
+ - `placement?: Placement` (reflected — resolved through `rtlAwarePlacement()` (`internal/rtl.ts`),
29
+ then forwarded to `place()`; defaults to whatever `place()` itself defaults to. A `left`/`right`
30
+ side is mirrored under `dir="rtl"`, so e.g. `placement="left-start"` still anchors to the menu's
31
+ trailing edge instead of pinning to the physical left)
32
+ - `label: string = 'Menu'` — accessible name for the `role="menu"` popup; override with something
33
+ specific (e.g. "Row actions") when a page has more than one menu. A host-level `aria-label`
34
+ attribute takes precedence over both this prop and the localized default (unset by default, so
35
+ a no-op for existing consumers), matching `lr-select`/`lr-model-select`'s
36
+ `this.getAttribute('aria-label') || <computed default>` precedence
37
+
38
+ - `closeOnEscapeAnywhere: boolean = false` (attribute `close-on-escape-anywhere`) — lets Escape
39
+ close the menu when focus is on slotted non-menu-item content inside the popup; item activation
40
+ remains scoped to actual menu items
41
+
42
+ **Events:** `lr-show` (no detail — fires only when `open` transitions to `true`, not for markup
43
+ that renders `open` true from the start), `lr-hide` (same first-render guard, opposite
44
+ transition), `lr-menu-select` (`detail: { value }` — a consolidated re-fire of the activated
45
+ `<lr-menu-item>`'s own `lr-menu-item-select`; always followed by the menu closing and focus
46
+ returning to the trigger)
47
+
48
+ **Slots:** `trigger` (the consumer's own trigger element — first assigned element wins if several
49
+ are assigned; enhanced imperatively with `aria-haspopup="menu"`/`aria-expanded`/`aria-controls`
50
+ since those attributes belong on the actual interactive trigger, which lives outside this
51
+ component's shadow root), default (`<lr-menu-item>` elements, plus optionally plain `<hr>`
52
+ dividers between groups — native `<hr>` already carries an implicit `separator` role)
53
+
54
+ **CSS parts:** `trigger` (wrapper around the `trigger` slot — the positioning anchor), `popup` (the
55
+ positioned floating panel), `list` (the `role="menu"` container wrapping the default slot)
56
+
57
+ **Themeable custom properties:** shared tokens only (`--lr-color-surface`, `--lr-color-border`,
58
+ `--lr-radius`, `--lr-shadow`, `--lr-space-xs`, `--lr-transition-fast`).
59
+
60
+ **Optional peer deps:** none.
61
+
62
+ ### `lr-menu-item`
63
+
64
+ Not meaningful standalone — it exists purely as `<lr-menu>`'s light-DOM child, the same
65
+ relationship `<lr-option>` has to `<lr-combobox>`/`<lr-select>`. `role="menuitem"` and the
66
+ roving `tabindex` both live on the host element itself (mirroring `<lr-tree-node>`), not an
67
+ internal shadow-DOM button; `<lr-menu>` is the sole owner of this element's `tabIndex`.
68
+
69
+ **Properties:**
70
+ - `value: string = ''` — an id/value echoed back in the parent `<lr-menu>`'s `lr-menu-select`
71
+ detail
72
+ - `disabled: boolean = false` (reflected — disables selection and excludes this item from
73
+ `<lr-menu>`'s roving-tabindex navigation entirely)
74
+ - `destructive: boolean = false` (reflected — tints the row with `--lr-color-danger`, for a
75
+ dangerous action like "Delete")
76
+ - `type: 'normal' | 'checkbox' = 'normal'` — `'checkbox'` (mirroring `wa-dropdown-item`'s identical
77
+ `type` option) renders `role="menuitemcheckbox"` in place of `role="menuitem"`, with `aria-checked`
78
+ reflecting `checked` and a checkmark glyph shown once `checked` is `true`. `'normal'` (the default)
79
+ renders and behaves exactly as before this option existed.
80
+ - `checked: boolean = false` (reflected) — whether a `type="checkbox"` item is checked; meaningless
81
+ (ignored) for `type="normal"`
82
+
83
+ **Methods:** `select(): void` — fires `lr-menu-item-select` (no-op while `disabled`). Called
84
+ internally by this element's own click handler and by `<lr-menu>`'s Enter/Space keydown handling
85
+ of the roving-focused item; also the cleanest way for a consumer/test to trigger selection
86
+ programmatically instead of clicking the shadow-DOM `[part="base"]` element (see the gotcha below).
87
+ For `type="checkbox"`, also toggles `checked` and fires `lr-menu-item-change` first.
88
+
89
+ **Events:** `lr-menu-item-select` (no detail payload — `this.emit('lr-menu-item-select')` is
90
+ called with no second argument, so `event.detail` is `null`, not `undefined`; fires on click, or
91
+ when the parent `<lr-menu>`'s own Enter/Space keydown handling calls `select()` on the currently
92
+ roving-focused item), `lr-menu-item-change` (`detail: { value, checked }` — fired when a
93
+ `type="checkbox"` item is activated and its `checked` state toggled, in addition to — never instead
94
+ of — `lr-menu-item-select`; never fired for `type="normal"`)
95
+
96
+ **Slots:** default (the item's label content), `icon` (optional leading icon)
97
+
98
+ **CSS parts:** `base` (the row — `role` lives on the host, not this part), `icon` (wrapper around
99
+ the `icon` slot; not rendered/hidden entirely while the slot is empty), `label` (wrapper around the
100
+ default slot), `checkmark` (the checkmark glyph shown when a `type="checkbox"` item is `checked`;
101
+ not rendered at all for `type="normal"`)
102
+
103
+ **Themeable custom properties:** shared tokens only (`--lr-radius`, `--lr-focus-ring-width`,
104
+ `--lr-focus-ring-color`, `--lr-space-xs`, `--lr-space-s`, `--lr-color-brand-quiet`,
105
+ `--lr-opacity-disabled`, `--lr-color-danger`, `--lr-color-danger-quiet`).
106
+
107
+ **Optional peer deps:** none.
108
+
109
+ ### `lr-dropdown-item`
110
+
111
+ Compatibility naming alias for `<lr-menu-item>`. It is a subclass of the same implementation,
112
+ so `value`, `disabled`, `destructive`, `type`, `checked`, `select()`, checkbox events, and menu
113
+ roving focus behave identically.
114
+
115
+ **Slots:** default label content and optional `icon`.
116
+
117
+ ```html
118
+ <lr-menu>
119
+ <button slot="trigger">Actions</button>
120
+ <lr-dropdown-item value="archive">Archive</lr-dropdown-item>
121
+ </lr-menu>
122
+ ```
123
+
124
+ ```html
125
+ <lr-menu label="Row actions">
126
+ <button slot="trigger" aria-label="More actions">⋮</button>
127
+ <lr-menu-item value="edit">Edit</lr-menu-item>
128
+ <lr-menu-item value="duplicate">Duplicate</lr-menu-item>
129
+ <hr />
130
+ <lr-menu-item value="delete" destructive>Delete</lr-menu-item>
131
+ </lr-menu>
132
+ <script type="module">
133
+ document.querySelector('lr-menu').addEventListener('lr-menu-select', (e) => console.log(e.detail.value));
134
+ </script>
135
+ ```
136
+
137
+ The popup is always rendered in the DOM (never `display:none`) so `.focus()` calls on its content
138
+ work synchronously the instant it opens — closed state is conveyed via `visibility`/`opacity`
139
+ instead. `visibility` is an inherited CSS property that pierces the `<slot>` projection boundary, so
140
+ every closed-state `<lr-menu-item>` is automatically excluded from sequential (Tab-key)
141
+ navigation with no separate JS bookkeeping. ArrowDown/ArrowUp *on the trigger while closed* also
142
+ opens the menu, focusing the first/last non-disabled item respectively (mirrors native `<select>`).
143
+ Once open, ArrowDown/ArrowUp move the roving focus among non-disabled items and wrap past either end
144
+ (unlike `<lr-select>`'s clamped listbox nav); Home/End jump to the first/last non-disabled item;
145
+ Enter/Space activate the focused item; Escape closes and refocuses the trigger; Tab closes without
146
+ `preventDefault()`, letting the browser's own Tab navigation proceed untouched. All of this list-level
147
+ keydown handling — Escape, Tab, the arrow keys, Home/End, and type-ahead alike — only responds when
148
+ the triggering keydown event's own target is an actual `<lr-menu-item>` element; a keydown bubbling
149
+ up from any other node inside the popup is ignored rather than misread as list navigation. A printable
150
+ keypress runs type-ahead: roving focus jumps to the next non-disabled item whose text starts with the
151
+ accumulated buffer (cycling from just after the active item, buffer resets ~500ms after the last
152
+ keystroke) — mirrors `<lr-select>`'s identical listbox type-ahead. A click outside both the trigger
153
+ and the open popup also closes it, but deliberately does *not* refocus the trigger — the outside
154
+ click itself already moved focus somewhere the user chose.
155
+
156
+ **Known gotchas:**
157
+ - `<lr-menu-item>`'s click handler lives on an inner shadow-DOM element (`[part="base"]`), not the
158
+ host — calling `.click()` directly on the `<lr-menu-item>` host element in a test does **not**
159
+ trigger selection; either click (or dispatch on) the element returned by
160
+ `menuItemEl.shadowRoot.querySelector('[part="base"]')`, or just call the item's own `select()`
161
+ method directly.
162
+ - `lr-show`/`lr-hide` are suppressed on the very first render even if `open` is already `true`
163
+ in markup — only later `open` transitions fire them.
164
+ - `lr-menu-item-select` carries no detail payload (`event.detail === null`); read
165
+ `event.target.value` instead. `<lr-menu>`'s own re-fired `lr-menu-select` is the one that
166
+ carries `detail: { value }`.
167
+ - Tab closes the menu without `preventDefault()` or focus trapping — the browser's own default Tab
168
+ navigation proceeds untouched, only the (now-stale) open state is cleared.
169
+ - Only Escape and a committed selection refocus the trigger on close; a click outside does not.
170
+
171
+ ---
@@ -0,0 +1,48 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/conversation.md — do not edit this file. -->
2
+
3
+ # `lr-message-actions`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/conversation/message-actions/message-actions.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraMessageActions`, also available unregistered from `@aceshooting/lyra-ui/components/conversation/message-actions/message-actions.class.js`
7
+ - **Family** `components/conversation/` — see `llms/index.md` for its siblings
8
+ - **Optional peers** none
9
+ - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
10
+
11
+ ---
12
+
13
+ ## `lr-message-actions`
14
+
15
+ The per-message action toolbar for `lr-chat-message`'s `actions` slot: opt-in built-ins (copy /
16
+ regenerate / edit / feedback) that emit intent events, plus a default slot for custom controls (e.g.
17
+ a slotted `lr-branch-picker`). `role="toolbar"` with WAI-ARIA APG roving-tabindex; ArrowLeft/
18
+ ArrowRight (RTL-aware) plus Home/End move focus across every stop — built-ins and slotted controls
19
+ alike — via `.focus()`. Only the plain-button built-ins (`regenerate`/`edit`) get their `tabindex`
20
+ toggled by this component itself; a composite child (`lr-copy-button`, the `feedback` built-in, any
21
+ slotted custom element) remains independently reachable via the page's native Tab order alongside the
22
+ toolbar's single roving stop, since a shadow-root-internal focusable element can't be suppressed from
23
+ outside its own component.
24
+
25
+ **Properties:** `controls: MessageActionControl[] = []` (attribute: false) —
26
+ `MessageActionControl = 'copy' | 'regenerate' | 'edit' | 'feedback'` (exported here); which built-ins
27
+ render, in that order. `copyText: string = ''`
28
+ (attribute `copy-text`) — required for the `copy` built-in to render at all. `feedbackValue: 'up' |
29
+ 'down' | null = null` (attribute `feedback-value`) — forwarded to the embedded, thumbs-only
30
+ `lr-message-feedback` (its `reasons`/`commentable`/`detailFor` are never forwarded, so its detail
31
+ panel never opens). `revealOnHover: boolean = false` (reflected, attribute `reveal-on-hover`) — hides
32
+ the bar until the closest `lr-chat-message` ancestor is hovered or a control inside has focus.
33
+ `label: string = ''` — accessible name override for the toolbar. `accessibleLabel: string | null =
34
+ null` (attribute `aria-label`) — overrides the toolbar's computed accessible name, winning over
35
+ `label` and the localized default; attribute-reflects from a host-level `aria-label`.
36
+
37
+ **Events:** `lr-regenerate`/`lr-edit` — a built-in was activated, no detail. `lr-copy` —
38
+ `detail: { text }`, surfaced by the embedded `lr-copy-button` (bubbles/composed already, not
39
+ re-emitted). `lr-change`/`lr-submit` — bubble unchanged from the embedded, thumbs-only
40
+ `lr-message-feedback`.
41
+
42
+ **Slots:** default — additional controls (e.g. `lr-copy-button`, `lr-icon-button`,
43
+ `lr-branch-picker`) appended after the built-ins; they participate in the toolbar's arrow-key
44
+ navigation.
45
+
46
+ **CSS parts:** `base` (the toolbar, `role="toolbar"`), `copy-button` (the embedded
47
+ `lr-copy-button`), `regenerate-button`, `edit-button`, and `feedback` (the embedded
48
+ `lr-message-feedback`).
@@ -0,0 +1,37 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/conversation.md — do not edit this file. -->
2
+
3
+ # `lr-message-feedback`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/conversation/message-feedback/message-feedback.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraMessageFeedback`, also available unregistered from `@aceshooting/lyra-ui/components/conversation/message-feedback/message-feedback.class.js`
7
+ - **Family** `components/conversation/` — see `llms/index.md` for its siblings
8
+ - **Optional peers** none
9
+ - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
10
+
11
+ ---
12
+
13
+ ## `lr-message-feedback`
14
+
15
+ Thumbs up/down for one assistant message, with an optional inline detail step (categorical reason
16
+ chips + a free-text comment) that opens as a disclosure directly below the thumbs. Emits; never
17
+ persists — a host reflects a previously-recorded rating back via `value` (+ `disabled` for a
18
+ read-only display). Activating the pressed thumb again toggles it off to `null` unless its own detail
19
+ panel is currently open, in which case that click re-opens the panel instead.
20
+
21
+ **Properties:** `value: 'up' | 'down' | null = null` (reflected), `reasons: MessageFeedbackReason[] =
22
+ []` (attribute: false, each `{ id, label }`), `commentable: boolean = false` (reflected) adds a
23
+ free-text comment field, `detailFor: 'down' | 'both' = 'down'` (attribute `detail-for`) — which
24
+ rating opens the detail panel, and `disabled: boolean = false` (reflected) for a read-only display.
25
+
26
+ **Methods:** `focus()` focuses the thumb matching the current `value` (the up thumb when `null`);
27
+ `blur()` blurs both thumbs.
28
+
29
+ **Events:** `lr-change` — `detail: { value: 'up' | 'down' | null }`, fired when a thumb's rating
30
+ changes or clears. `lr-submit` — `detail: { value: 'up' | 'down'; reasonIds: string[]; comment:
31
+ string }`, fired by the panel's submit button (`value` is never `null` here — the panel only exists
32
+ for a set rating).
33
+
34
+ **CSS parts:** `base` (the root), `thumbs` (wrapper around both thumb buttons), `up-button`,
35
+ `down-button`, `panel` (the inline detail disclosure, only rendered when `reasons` is non-empty or
36
+ `commentable` is set), `reasons` (the reason-chip group), `comment` (the comment `<textarea>`), and
37
+ `submit-button`.
@@ -0,0 +1,64 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/retrieval.md — do not edit this file. -->
2
+
3
+ # `lr-mind-map`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/retrieval/mind-map/mind-map.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraMindMap`, also available unregistered from `@aceshooting/lyra-ui/components/retrieval/mind-map/mind-map.class.js`
7
+ - **Family** `components/retrieval/` — see `llms/index.md` for its siblings
8
+ - **Optional peers** none
9
+ - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
10
+
11
+ ---
12
+
13
+ ## `lr-mind-map`
14
+
15
+ A radial expandable topic tree (NotebookLM Mind Maps): a spatial overview of a topic hierarchy where
16
+ activating a topic drills in or hands the topic to the chat. Hierarchy, not network — no cross-links,
17
+ no force simulation, no communities, no edge labels (that's `lr-graph`). Zero-dependency SVG; the
18
+ radial layout is closed-form arithmetic, in its own `mind-map-layout.ts` module, mirroring
19
+ `lr-word-cloud`'s dependency-free precedent.
20
+
21
+ **Properties:**
22
+ - `topics: LyraTopic[] = []` (attribute: false) — `LyraTopic { id: string; label: string; children?:
23
+ LyraTopic[] }`; a single root sits at the center, multiple roots hang off an implicit center hub
24
+ - `label: string = ''` — accessible name for the SVG group and the implicit hub's text
25
+ - `expandDepth: number = 1` (attribute `expand-depth`) — initial expansion depth (root + first
26
+ ring); expansion state afterward is component-managed per topic id and survives `topics`
27
+ reassignment
28
+
29
+ **Events:** `lr-topic-select` (`detail: { id }`, a *leaf* topic was activated),
30
+ `lr-topic-toggle` (`detail: { id, expanded }`, a parent topic was activated, or auto-expanded by
31
+ keyboard descent).
32
+
33
+ **Slots:** none.
34
+
35
+ **CSS parts:** `base`, `svg` (the single-tab-stop focus target), `node`, `node-label`, `link`
36
+ (parent-child connector), `focus-ring` (keyboard focus ring), `live-region` (visually hidden
37
+ announcement region), `empty` (shown when `topics` is empty).
38
+
39
+ **Themeable custom properties:** `--lr-mind-map-ring-gap` (default `6rem`, radius step per depth
40
+ ring).
41
+
42
+ **Optional peer deps:** none.
43
+
44
+ ```html
45
+ <lr-mind-map style="height:480px" expand-depth="2"></lr-mind-map>
46
+ <script>
47
+ document.querySelector('lr-mind-map').topics = [
48
+ { id: 'root', label: 'Computing history', children: [
49
+ { id: 'people', label: 'People', children: [{ id: 'ada', label: 'Ada Lovelace' }] },
50
+ { id: 'machines', label: 'Machines' },
51
+ ] },
52
+ ];
53
+ </script>
54
+ ```
55
+
56
+ **Known gotchas:**
57
+ - A user's explicit expand/collapse only ever overrides the `depth < expandDepth` default in the
58
+ direction chosen — reassigning `topics` (even with the same ids) never silently discards that
59
+ override.
60
+ - Node-position transitions use `--lr-transition-base`, which already collapses to near-zero under
61
+ `prefers-reduced-motion: reduce` globally, so expansion snaps rather than tweening for a
62
+ reduced-motion user with no extra branching in this component.
63
+
64
+ ---
@@ -0,0 +1,144 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/conversation.md — do not edit this file. -->
2
+
3
+ # `lr-model-select`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/conversation/model-select/model-select.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraModelSelect`, also available unregistered from `@aceshooting/lyra-ui/components/conversation/model-select/model-select.class.js`
7
+ - **Family** `components/conversation/` — see `llms/index.md` for its siblings
8
+ - **Optional peers** none
9
+ - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
10
+
11
+ ---
12
+
13
+ ## `lr-model-select`
14
+
15
+ A provider/model picker that renders as a closed dropdown when a fixed `catalog` is available, or as a
16
+ filterable free-text combobox when it isn't (or when `allow-custom` explicitly permits typing something
17
+ outside the catalog). Form-associated (hand-rolled internals via `attachInternals()` directly, not the
18
+ shared `FormAssociated` mixin — same reasoning as `lr-combobox`/`lr-select`: see the shared-foundation
19
+ notes). Built on the same trigger-button/`aria-activedescendant` listbox technique `<lr-select>` uses
20
+ and the filter-as-you-type suggestion-popup technique `<lr-combobox>` uses, without composing either
21
+ element. First-party invention (no Web Awesome equivalent).
22
+ Session-history/autofill restoration synchronously restores the model id and form entry without
23
+ emitting `lr-change`.
24
+
25
+ **Exported types:**
26
+ - `LyraModelCatalogEntry { id: string; label: string }` — one catalog row.
27
+ - `LyraModelCatalog = string[] | LyraModelCatalogEntry[]` — either every entry is a plain string (used
28
+ as both id and label) or every entry is a full `{ id, label }` row; the two shapes are not meant to be
29
+ mixed within one array.
30
+
31
+ **Properties:**
32
+ - `provider: string = ''` — informational only (e.g. `'ollama'`); rendered as a small leading badge.
33
+ - `catalog?: LyraModelCatalog` (attribute: false) — the full model list. Omit (or leave empty) to fall
34
+ back to plain free-text entry.
35
+ - `allowCustom: boolean = false` (attribute `allow-custom`, reflected) — let the user type/commit a
36
+ value that isn't in `catalog`, even when `catalog` is non-empty.
37
+ - `label: string = ''` — optional visible title above the control, mirroring `<lr-select>`'s own
38
+ `label` exactly: rendered via a `[part="form-control-label"]` `<label>` paired with the control's
39
+ id, and once non-empty it takes over as the accessible-name source (an `aria-label` override is
40
+ then only consulted as the fallback). Empty (the default) keeps the original
41
+ `aria-label || placeholder || 'Model'` accessible-name chain untouched.
42
+ - `hint: string = ''` — hint text below the field. Unset (the default): no hint chrome renders.
43
+ - `errorText: string = ''` (attribute `error-text`) — error text below the field (overridden by
44
+ slotted `error` content). Unset (the default): no error chrome renders.
45
+ - `placeholder: string = ''`
46
+ - `spellcheck: boolean = true` — forwarded to the free-text mode's native `<input>`; no effect in
47
+ closed-dropdown mode (no native text input there). `spellcheck="false"` is parsed as `false` (a
48
+ custom converter, not Lit's presence-based `type: Boolean`, so the literal attribute string is
49
+ honored — matches `<lr-textarea>`/`<lr-date-input>`).
50
+ - `autocapitalize: string = ''` — forwarded to the free-text mode's native `<input>`; empty omits
51
+ the attribute.
52
+ - `autoCorrect: string = ''` (attribute `autocorrect`) — forwarded to the free-text mode's native
53
+ `<input>`'s own `autocorrect` (Safari/WebKit-specific); empty omits the attribute. Named
54
+ `autoCorrect` in JS purely to dodge a `lib.dom.d.ts` typing collision — the wire attribute is
55
+ still plain `autocorrect`.
56
+ - `autocomplete: string = 'off'`, `inputMode: string = ''` (attribute `inputmode`), and
57
+ `enterKeyHint: string = ''` (attribute `enterkeyhint`) — forwarded to the free-text input;
58
+ they have no effect in closed-dropdown mode
59
+ - `autocomplete: string = 'off'`, `inputMode: string = ''` (`inputmode`), and `enterKeyHint: string = ''`
60
+ (`enterkeyhint`) — forwarded to the free-text mode's native `<input>`.
61
+ - `name: string = ''` (reflected)
62
+ - `disabled: boolean = false` (reflected)
63
+ - `required: boolean = false` (reflected — enforced via `internals.setValidity()`)
64
+ - `open: boolean = false` (reflected)
65
+ - `value: string` — getter/setter (hand-rolled, not the `FormAssociated` mixin); the current model id,
66
+ `''` when nothing is selected. Writing it calls `internals.setFormValue()` synchronously. A named,
67
+ untouched model-select contributes `''` to `FormData` instead of omitting its key.
68
+
69
+ **Mode switching:** `closedMode` (private) is `true` whenever `normalizedCatalog.length > 0 &&
70
+ !allowCustom` — a non-empty `catalog` with `allowCustom` left `false` renders the closed dropdown
71
+ trigger-button UI (`[part="trigger"]`, `role="combobox"` on a `<button>`, no typing). Any other
72
+ combination (`catalog` empty/unset, or `allowCustom` true) renders the free-text `<input>` UI
73
+ (`[part="combobox"]`/`[part="combobox-input"]`) with live substring filtering against the catalog (id or
74
+ label, case-insensitive). The mode is re-evaluated on every render, so toggling `allowCustom` or clearing
75
+ `catalog` at runtime switches modes live, repositioning the shared `[part="listbox"]` popover against
76
+ whichever element is the active anchor.
77
+
78
+ A `value` that isn't present in `catalog` (e.g. a model id saved from a provider whose live catalog has
79
+ since changed) is never silently dropped: it's appended to the rendered option list as a synthetic,
80
+ visually-distinct row (dashed border, italic label, "not in catalog" badge) computed fresh from
81
+ `catalog` + `value` on every access, without ever mutating the `catalog` property itself.
82
+
83
+ **Events:**
84
+ - `lr-change` (`detail: { value: string; inCatalog: boolean }` — fired when a value is selected
85
+ from the listbox or committed in free-text mode; `inCatalog` reflects whether that value was
86
+ actually present in `normalizedCatalog`, so a consumer can flag a freshly-typed custom value
87
+ distinctly from a real catalog pick)
88
+ - `blur` (no detail) — re-dispatched from the free-text mode's internal `<input>`'s own `blur`,
89
+ bubbling and composed unlike the native event. Closed-dropdown mode's trigger `<button>` has no
90
+ equivalent re-dispatch, matching `<lr-select>`'s own trigger.
91
+ - `focus` (no detail) — re-dispatched from the free-text mode's internal `<input>`'s own `focus`,
92
+ for the same reason as `blur`.
93
+
94
+ **Slots:** `hint` (custom hint content), `error` (custom error content).
95
+
96
+ **CSS parts:** `form-control-label` (the `<label>` element — only rendered, and only contributes to
97
+ the accessible name, once `label` is non-empty), `trigger` (closed-dropdown mode's
98
+ `<button role="combobox">`, also its positioning anchor), `combobox` (free-text mode's input
99
+ container, also its positioning anchor), `combobox-input` (the free-text `<input>`),
100
+ `provider-badge` (the optional leading `provider` label), `listbox` (the options popover, shared by
101
+ both modes), `option`, `option-label`, `option-badge` (the "not in catalog" badge on a synthetic
102
+ stale-value row), `expand-icon` (the dropdown chevron, present in both modes), `hint` (the hint
103
+ message), `error` (the error message)
104
+
105
+ **Themeable custom properties:** shared tokens only — `--lr-space-xs/-s`,
106
+ `--lr-color-border/-surface/-brand/-brand-quiet/-text-quiet`, `--lr-radius`, `--lr-shadow`,
107
+ `--lr-focus-ring-width/-color/-offset`, `--lr-icon-button-size`, `--lr-transition-fast`,
108
+ `--lr-opacity-disabled`.
109
+
110
+ **Optional peer deps:** none.
111
+
112
+ ```html
113
+ <lr-model-select
114
+ provider="openai"
115
+ .catalog=${[
116
+ { id: 'gpt-4o', label: 'GPT-4o' },
117
+ { id: 'gpt-4o-mini', label: 'GPT-4o mini' },
118
+ ]}
119
+ value="gpt-4o"
120
+ placeholder="Choose a model…"
121
+ @lr-change=${(e) => setModel(e.detail.value, e.detail.inCatalog)}
122
+ ></lr-model-select>
123
+
124
+ <!-- No fixed catalog yet: falls back to free-text entry -->
125
+ <lr-model-select provider="ollama" placeholder="Type a model id…" allow-custom></lr-model-select>
126
+ ```
127
+
128
+ **Known gotchas:**
129
+ - `catalog` must be homogeneous — an array of plain strings, or an array of `{ id, label }` objects, not
130
+ a mix; `LyraModelCatalog` is a union of two array *types*, not an array of a union item type.
131
+ - The synthetic "not in catalog" row only ever appears when `catalog` is non-empty and `value` isn't one
132
+ of its ids — with no `catalog` at all, there's no catalog list to diff `value` against, so no badge.
133
+ - `value`/form-association here is hand-rolled via `attachInternals()` directly, not the shared
134
+ `FormAssociated` mixin — mirrors `lr-combobox`/`lr-select`'s identical divergence.
135
+ - `aria-invalid`/`data-invalid` only reflect once the control has been blurred (touched) at least once,
136
+ matching `lr-select`'s identical pattern — validity styling never flashes on first render.
137
+ - In free-text mode, the input's displayed text is `query` only while `open`; while closed it shows the
138
+ committed value's label — so setting `.value` programmatically doesn't require also touching the live
139
+ typed text.
140
+ - `hint`/`errorText` mirror `<lr-select>`'s identical chrome, including the `aria-describedby` wiring
141
+ to the rendered `hint`/`error` ids — set on whichever element (`trigger` or `combobox-input`) owns
142
+ `role="combobox"` for the active mode.
143
+
144
+ ---