@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,145 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/conversation.md — do not edit this file. -->
2
+
3
+ # `lr-chat-message`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/conversation/chat-message/chat-message.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraChatMessage`, also available unregistered from `@aceshooting/lyra-ui/components/conversation/chat-message/chat-message.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-chat-message`
14
+
15
+ A role-based message bubble *shell* for a chat/agent conversation surface. It renders none of the
16
+ message content itself — the default slot carries whatever a consumer wants to display (plain text,
17
+ a `<lr-markdown>`, a custom template, anything) and this component only supplies the surrounding
18
+ chrome: alignment/coloring by `role`, an avatar/badges header row, an optional collapse toggle, an
19
+ attachments strip, and a status-aware footer (a live-updating status dot + text, the formatted
20
+ `timestamp`, a built-in retry affordance for `status="failed"`, and an `actions` slot for everything
21
+ else). No built-in copy button is rendered — slot a copy control into `actions` and fire
22
+ `lr-copy` (`detail: { text: string }`) from it if you want one (matching `<lr-json-viewer>`'s
23
+ and `<lr-code-block>`'s copy-affordance event name/shape, for anything listening at the
24
+ conversation-surface level).
25
+
26
+ **Properties:**
27
+ - `role: ChatMessageRole = 'assistant'` (`'user' | 'assistant' | 'system'`) — reflects to
28
+ `data-role`, **not** the bare `role` attribute (those role strings aren't valid ARIA role tokens
29
+ and reflecting to `role` would collide with the element's own ARIA role); a plain `role="..."`
30
+ attribute set directly in markup is ignored entirely
31
+ - `status: ChatMessageStatus = 'sent'` (`'sending' | 'sent' | 'failed' | 'streaming'`, reflected) —
32
+ drives the footer's status dot/text, `status="failed"`'s danger treatment on the bubble, and the
33
+ built-in retry button
34
+ - `timestamp?: Date | string` (attribute: false) — accepts a `Date` or anything `new Date()` can
35
+ parse; invalid input is treated the same as unset (no timestamp rendered)
36
+ - `formatTimestamp?: (date: Date) => string` (attribute: false) — overrides the default
37
+ `hour:minute` (`Intl.DateTimeFormat`, runtime locale) rendering of `timestamp`
38
+ - `collapsible: boolean = false` (reflected) — shows the built-in collapse/expand toggle in the header
39
+ - `collapsed: boolean = false` (reflected) — whether the message body is hidden; effective whenever
40
+ set, independent of `collapsible` (which only controls whether the toggle button itself is
41
+ rendered) — mirrors `lr-widget`'s identical `collapsible`/`collapsed` pair
42
+ - `attachmentsPosition: 'before'|'after' = 'after'` (attribute `attachments-position`) — places the
43
+ `attachments` slot before or after the message body; both the visual and reading order follow it
44
+ - `actionsOutsideBubble: boolean = false` (attribute `actions-outside-bubble`, reflected) — renders
45
+ the `actions` slot's content as a sibling immediately after `[part="bubble"]` instead of nested
46
+ inside `[part="footer"]`'s own padding/background box, for a consumer whose action row (e.g. a
47
+ hover-reveal copy button) must sit visually outside the bubble's chrome
48
+ - `messageId: string = ''` (attribute `message-id`, reflected) — optional stable application id;
49
+ included in `lr-retry` detail when the built-in retry control is activated
50
+
51
+ **Events:** `lr-retry` (`detail: { messageId?: string }`; fired by the built-in retry button, only
52
+ rendered when `status="failed"`), `lr-collapse-toggle` (`detail: boolean`, the new `collapsed` state — fired when
53
+ the user activates the built-in collapse button)
54
+
55
+ **Slots:** default (the message body), `avatar` (an avatar/icon for the message author), `badges`
56
+ (small status/metric chips — e.g. token count, latency, model name — entirely app-supplied), `actions`
57
+ (action controls such as copy/retry, rendered at the end of the footer), `attachments` (file/image
58
+ attachment chips, rendered below the message body), `failure` (only meaningful while
59
+ `status="failed"`: host-supplied content — typically a `role="alert"` banner plus its own retry
60
+ control — that replaces the built-in status text, retry button, and live-region announcement
61
+ entirely; unset, `status="failed"` renders exactly as before)
62
+
63
+ **CSS parts:** `bubble`, `header` (hidden entirely when nothing is in it), `avatar`, `badges`,
64
+ `collapse-button` (only rendered when `collapsible`), `body` (hidden while `collapsed`),
65
+ `attachments`, `footer` (hidden entirely when nothing is in it), `status-indicator` (a small
66
+ decorative `aria-hidden` dot, absent while `status="sent"`), `status-text` (the visible text twin of
67
+ `status-indicator`), `timestamp`, `retry-button` (only rendered when `status="failed"` and the
68
+ `failure` slot is empty), `actions` (rendered inside the footer by default; a sibling immediately
69
+ after `bubble` when `actionsOutsideBubble` is set), `failure` (`display: contents` wrapper for the
70
+ `failure` slot; contributes no box when the slot is empty)
71
+
72
+ **Themeable custom properties:** `--lr-chat-message-max-width` (default `80%` — the bubble's max
73
+ inline size; component-specific, no shared width token exists), four role-scoped bubble color
74
+ properties:
75
+
76
+ - `--lr-chat-message-bubble-bg` (default `var(--lr-color-surface)`) — bubble fill for every role
77
+ except `user`.
78
+ - `--lr-chat-message-bubble-color` (default `var(--lr-color-text)`) — bubble text color for those
79
+ same roles.
80
+ - `--lr-chat-message-user-bubble-bg` (default `var(--lr-color-brand-quiet)`) — bubble fill for
81
+ `data-role="user"`.
82
+ - `--lr-chat-message-user-bubble-color` (default `var(--lr-color-text)`) — bubble text color for
83
+ `data-role="user"`.
84
+
85
+ Prefer these over re-pointing the shared token a default happens to reference. Overriding
86
+ `--lr-color-brand-quiet` on the host also retints `[part='collapse-button']:hover` within this same
87
+ component, and which shared token backs each role's fill is not a stable contract — it changed
88
+ between 4.x and 5.0.0, which silently turned one consumer's inner-surface scrim into the whole
89
+ bubble (near-black text on `rgba(0,0,0,0.22)`, visible only by eye). These four are that stable
90
+ contract.
91
+
92
+ Plus shared tokens `--lr-space-xs/-m`, `--lr-color-border`, `--lr-color-surface`,
93
+ `--lr-color-brand-quiet`, `--lr-color-brand`, `--lr-color-text-quiet`, `--lr-color-danger`,
94
+ `--lr-color-danger-quiet`, `--lr-radius`, `--lr-icon-button-size`, `--lr-focus-ring-*`,
95
+ `--lr-transition-fast`, and `--lr-transition-ambient` (default `1.8s ease-in-out`) — the
96
+ streaming-indicator pulse animation's cycle, the same shared compound token
97
+ `<lr-typing-indicator>` uses.
98
+
99
+ `[part=bubble]`'s background resolves through `--lr-color-surface`. If your own panel/container
100
+ background already maps to that same token, override `[part=bubble]`'s background explicitly (e.g.
101
+ via `::part(bubble)`) so message bubbles stay visually distinct from the surrounding panel.
102
+
103
+ **Optional peer deps:** none. Internally renders a `<lr-live-region>` (a first-party sibling
104
+ component, auto-imported alongside this one, not an npm peer) for the status-transition
105
+ announcements described below.
106
+
107
+ ```html
108
+ <lr-chat-message data-role="assistant" status="streaming">
109
+ <span slot="avatar">🤖</span>
110
+ <span slot="badges">gpt-5.4 · 1.2s</span>
111
+ <lr-markdown content="Here's what I found…"></lr-markdown>
112
+ <button slot="actions">Copy</button>
113
+ </lr-chat-message>
114
+ <script>
115
+ document.querySelector('lr-chat-message').addEventListener('lr-retry', () => resend());
116
+ </script>
117
+ ```
118
+
119
+ Accessibility of `status`: the current status is always available as plain visible text
120
+ (`[part="status-text"]`), never color alone. A transition *to* `"failed"`, or *from* `"streaming"` to
121
+ `"sent"` (a stream finishing), is additionally announced through the internal `<lr-live-region>` —
122
+ `"failed"` announces assertively (`"Message failed to send."`), a streaming→sent completion announces
123
+ politely (`"Message complete."`) — so a screen-reader user not currently focused on this message
124
+ still learns about it. No other status transition is announced (e.g. `streaming`→`sending`, or
125
+ `sending`→`sent` without having passed through `streaming`, produce no announcement). This differs
126
+ from `<lr-typing-indicator>`'s deliberately simpler `role="status"` approach, appropriate there
127
+ since that component only ever announces once (its own mount); this component's `status` can flip
128
+ between several values across a single element's lifetime.
129
+
130
+ **Known gotchas:**
131
+ - mounting a message with `status="failed"` (or any other non-`"sent"` status) already set does
132
+ **not** announce anything — only a genuine *later* transition (`changed.get('status') !==
133
+ undefined`, i.e. not the very first update) triggers the live-region announcement.
134
+ - `lr-retry` fires with no detail payload at all (`undefined`), not e.g. `{ status: 'failed' }`.
135
+ - the header/footer/avatar/badges/attachments/actions wrappers are shown/hidden via the `hidden`
136
+ attribute, not conditional templating. Whether each slot currently has content is checked once via
137
+ a light-DOM children scan on the very first update (`willUpdate`, gated on `!this.hasUpdated`) and
138
+ thereafter only via each slot's own `slotchange` listener — content added directly with
139
+ `appendChild` after first paint still triggers native `slotchange`, so this works transparently,
140
+ but any code that manually re-parents already-slotted nodes without a real slot-assignment change
141
+ won't refresh the corresponding wrapper's visibility.
142
+ - `role` intentionally reflects to `data-role`; CSS or selectors that key off role must target
143
+ `[data-role="user"]` etc., not `[role="user"]`.
144
+
145
+ ---
@@ -0,0 +1,70 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/conversation.md — do not edit this file. -->
2
+
3
+ # `lr-chat-viewport`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/conversation/chat-viewport/chat-viewport.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraChatViewport`, also available unregistered from `@aceshooting/lyra-ui/components/conversation/chat-viewport/chat-viewport.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-chat-viewport`
14
+
15
+ The transcript scroll container: owns stick-to-bottom behavior while an answer streams, the "jump to
16
+ latest" pill, and the unread divider. Two supported content shapes, auto-detected: ordinary element
17
+ children (typically `lr-chat-message`s — *slotted mode*), or exactly one `lr-virtual-list`
18
+ (*virtual mode*, detected via `instanceof`). In virtual mode this component defers all scrolling to
19
+ the slotted list's own `scrollToIndex()`. Follow/release state machine: while `follow` is engaged,
20
+ content growth re-scrolls to the end; release happens only on a user-intent gesture (wheel,
21
+ touchmove, scrollbar-drag, or PageUp/ArrowUp/Home while the log region has focus) that leaves the
22
+ view more than `bottomThreshold` from the end — a scroll caused by this component's own programmatic
23
+ scrolling, or by a layout shift, never releases it. Reaching the bottom again by any means re-engages
24
+ `follow`. The internal log defaults to `live="off"`, which avoids announcing every streaming token;
25
+ consumers that append complete messages at an announcement-safe cadence can opt into `polite` or
26
+ `assertive`.
27
+
28
+ **Properties:** `follow: boolean = true` (reflected) — component-managed stick-to-bottom state,
29
+ host-writable: setting `true` scrolls to the end and re-engages following, setting `false` releases
30
+ it. `bottomThreshold: number = 24` (attribute `bottom-threshold`) — px distance from the end still
31
+ counted as "at bottom." `unreadStartIndex: number | null = null` (attribute `unread-start-index`) —
32
+ index of the first unread item (element-child index in slotted mode, `items` index in virtual mode);
33
+ `null` disables both the divider and the pill's unread count. `live: 'off' | 'polite' | 'assertive' =
34
+ 'off'` (reflected) — live-region policy forwarded to the internal `role="log"`; keep `off` for
35
+ token-by-token streaming and opt in only when messages are committed at an announcement-safe cadence.
36
+ `label: string = ''` — accessible name
37
+ for the log region, defaults to the localized `chatViewportLabel`. `accessibleLabel: string | null =
38
+ null` (attribute `aria-label`) — host `aria-label`, forwarded to the internal `role="log"` element
39
+ (an `aria-label` left on the host itself names nothing, since the log role lives inside the shadow
40
+ root); wins over `label` and the localized default.
41
+
42
+ **Methods:** `scrollToBottom(options?)` — scrolls to the end and re-engages `follow`; default
43
+ `smooth`, forced to `auto` under `prefers-reduced-motion`. `scrollToUnread(options?)` — scrolls the
44
+ unread divider to the top of the view, resolving `false` when `unreadStartIndex` is `null`/out of
45
+ range; does not re-engage `follow`.
46
+
47
+ **Events:** `lr-follow-change` — `detail: { following }`, fired whenever `follow` flips (user
48
+ scroll-up release, or reaching the bottom again). Never fired for the initial mount state.
49
+
50
+ **Slots:** default — the transcript: ordinary element children, or exactly one `lr-virtual-list`.
51
+
52
+ **CSS parts:** `base` (the positioning root), `scroll` (the scroll container, `role="log"`,
53
+ `tabindex="0"`; in virtual mode it stops scrolling itself but keeps the role), `content` (the
54
+ slotted-content wrapper the growth observers watch), `jump-pill` (the built-in jump-to-latest button,
55
+ absent while `follow` is engaged), `unread-divider` (the "New messages" separator, slotted mode
56
+ only).
57
+
58
+ Renders no messages and computes no unread state itself — the host supplies `unreadStartIndex`; no
59
+ virtualization of its own (`lr-virtual-list`); not a generic overflow surface (`lr-scroller`); no
60
+ message semantics (`lr-chat-message`).
61
+
62
+ ```html
63
+ <lr-chat-viewport unread-start-index="12" @lr-follow-change=${(e) => console.log(e.detail.following)}>
64
+ <lr-chat-message role="user">…</lr-chat-message>
65
+ <lr-chat-message role="assistant" status="streaming">
66
+ <lr-streaming-text streaming .content=${partial}></lr-streaming-text>
67
+ </lr-chat-message>
68
+ </lr-chat-viewport>
69
+ <lr-chat-composer status="streaming"></lr-chat-composer>
70
+ ```
@@ -0,0 +1,21 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/forms.md — do not edit this file. -->
2
+
3
+ # `lr-checkbox-group`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/forms/checkbox-group/checkbox-group.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraCheckboxGroup`, also available unregistered from `@aceshooting/lyra-ui/components/forms/checkbox-group/checkbox-group.class.js`
7
+ - **Family** `components/forms/` — 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-checkbox-group`
14
+
15
+ A form-associated collection of `<lr-checkbox>` children. Its `value` is a `string[]`; each
16
+ selected value is submitted under `name` and `required` requires at least one selection.
17
+
18
+ **Properties:** `label`, `hint`, `errorText`, `value`, `name`, `required`, `disabled`, and
19
+ `accessibleLabel` (`aria-label`). **Slots:** default checkboxes, `label`, `hint`, `error`.
20
+ **Events:** `input`, `change`, and `lr-change` with `{ value: string[] }`.
21
+ **CSS parts:** `form-control`, `form-control-label`, `options`, `hint`, `error`.
@@ -0,0 +1,79 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/forms.md — do not edit this file. -->
2
+
3
+ # `lr-checkbox`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/forms/checkbox/checkbox.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraCheckbox`, also available unregistered from `@aceshooting/lyra-ui/components/forms/checkbox/checkbox.class.js`
7
+ - **Family** `components/forms/` — 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-checkbox`
14
+
15
+ A boolean form control. `role="checkbox"` with an `aria-checked` that can also be `"mixed"`, and a
16
+ visual box/checkmark. Structurally the same idea as `<lr-switch>` (form-associated via
17
+ `ElementInternals`, click and Space toggle) but with checkbox semantics.
18
+
19
+ **Properties:**
20
+ - `checked: boolean = false` (reflected)
21
+ - `indeterminate: boolean = false` (reflected) — visual-only mixed state; does not affect `checked`,
22
+ and is cleared back to `false` by any user interaction (click or keyboard), matching native
23
+ `<input type="checkbox">`
24
+ - `disabled: boolean = false` (reflected)
25
+ - `required: boolean = false` (reflected — enforced via `internals.setValidity()`)
26
+ - `name: string = ''`
27
+ - `value: string = 'on'` — only contributed to form submission while `checked` (a native checkbox
28
+ submits nothing at all, not even an empty string, while unchecked)
29
+
30
+ **Events:** user toggles emit bubbling/composed `input`, then `change`, then the compatibility
31
+ `lr-change` alias (`detail: { checked: boolean }`). Programmatic `.checked` assignments are
32
+ silent. Internal `focus`/`blur` are re-dispatched as bubbling, composed host events.
33
+
34
+ **Methods:** `focus(options?)` and `blur()` forward to the internal checkbox control.
35
+
36
+ **Slots:** default — label text, rendered next to the box. Clicking it toggles the checkbox, the
37
+ same as clicking a native checkbox's associated `<label>`. If left empty, set `aria-label` on the
38
+ host so the control still has an accessible name.
39
+
40
+ **CSS parts:** `base` (the whole interactive control, `role="checkbox"`), `box` (the small square
41
+ showing the checkmark/indeterminate dash), `checkmark` (the checkmark or indeterminate-dash glyph),
42
+ `label` (wrapper around the default slot)
43
+
44
+ **Themeable custom properties:** shared tokens only — `--lr-space-s`, `--lr-icon-button-size`,
45
+ `--lr-color-border/-surface/-on-brand/-brand/-text/-danger`, `--lr-radius`,
46
+ `--lr-transition-fast`, `--lr-focus-ring-width/-color/-offset`, `--lr-opacity-disabled`.
47
+
48
+ **Optional peer deps:** none.
49
+
50
+ ```html
51
+ <lr-checkbox name="terms" required>Accept the terms and conditions</lr-checkbox>
52
+ <script type="module">
53
+ document
54
+ .querySelector('lr-checkbox')
55
+ .addEventListener('lr-change', (e) => console.log(e.detail.checked));
56
+ </script>
57
+ ```
58
+
59
+ Form-associated via a directly-attached `ElementInternals` (not the shared `FormAssociated` mixin,
60
+ whose `value` accessor assumes a plain string default flow) with its own hand-rolled
61
+ `updateValidity()` — same shape as `<lr-combobox>`'s and `<lr-switch>`'s direct-`ElementInternals`
62
+ handling.
63
+ Session-history/autofill restoration uses four explicit state tokens: `checked`, `unchecked`,
64
+ `checked/indeterminate`, and `unchecked/indeterminate`. This preserves both public booleans while
65
+ keeping an unchecked control distinguishable from a checked control whose submitted value is an
66
+ empty string. Restoration updates state, form data, and validity synchronously without firing
67
+ `lr-change`.
68
+
69
+ **Known gotchas:**
70
+ - `formResetCallback()` restores `checked` to whatever the declarative `checked` attribute parsed to
71
+ at first connect — captured once via a one-shot flag (not from `attributeChangedCallback` alone,
72
+ since `checked` reflects and that would wrongly re-capture on every later user toggle). A later
73
+ `el.checked = true` assignment never redefines the reset default.
74
+ - `indeterminate` is visual-only and silently clears on any user click/keypress — a consumer relying
75
+ on it staying `true` after a user interacts with the box will be surprised.
76
+ - The rendered `aria-label` is copied from the host's own `aria-label` attribute at render time; if
77
+ neither that nor slotted label text is present, the control has no accessible name.
78
+
79
+ ---
@@ -0,0 +1,48 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/conversation.md — do not edit this file. -->
2
+
3
+ # `lr-checkpoint`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/conversation/checkpoint/checkpoint.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraCheckpoint`, also available unregistered from `@aceshooting/lyra-ui/components/conversation/checkpoint/checkpoint.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-checkpoint`
14
+
15
+ An inline conversation restore point: a labeled marker between messages whose Restore affordance
16
+ confirms inline, then hands the host a `lr-restore` event. This component persists and restores
17
+ nothing itself — host state in, events out. Not a handoff or plain rule
18
+ (`lr-handoff-divider`/`lr-divider`); not branch navigation across regenerated variants
19
+ (`lr-branch-picker`); not recorded-run playback (`lr-playback`).
20
+
21
+ **Properties:** `checkpointId: string = ''` (attribute `checkpoint-id`) — opaque id echoed in the
22
+ `lr-restore` event detail. `label: string = ''` — checkpoint name; the localized `checkpointLabel`
23
+ fallback renders while empty. `timestamp?: Date | string` (attribute: false) — optional creation
24
+ time, rendered as `<time datetime>`, default `hour:minute` in `effectiveLocale`; invalid strings are
25
+ treated as unset. `formatTimestamp?: (date: Date) => string` (attribute: false) — overrides the
26
+ default rendering. `restorable: boolean = true` — when `false`, renders a plain marker with no
27
+ button. `confirmRestore: boolean = true` (attribute `confirm-restore`) — gates the event behind an
28
+ inline confirm step; a string-aware converter parses `confirm-restore="false"` correctly from plain
29
+ HTML. `restoring: boolean = false` (reflected) — host-set busy state: the Restore button becomes
30
+ `aria-disabled="true"` with a spinner beside the localized "Restoring…" text.
31
+
32
+ **Slots:** default — optional supplemental content under the marker row (e.g. what changed since
33
+ this point).
34
+
35
+ **Events:** `lr-restore` — `detail: { checkpointId, label }`; fired on Restore activation, after
36
+ the inline confirm when `confirmRestore` is on. Not cancelable.
37
+
38
+ **CSS parts:** `base` (`role="group"`), `line` (each of the two flanking rules), `icon` (bookmark
39
+ glyph), `label`, `timestamp`, `restore-button` (only while `restorable`), `confirm-group`,
40
+ `confirm-prompt`, `confirm-button`, `cancel-button`.
41
+
42
+ **Themeable custom properties:** `--lr-checkpoint-spin-duration` (default `1s`) — duration of one
43
+ restoring-spinner rotation; stopped under reduced motion.
44
+
45
+ ```html
46
+ <lr-checkpoint checkpoint-id="ck_18" label="Before refactor" .timestamp=${t}
47
+ @lr-restore=${(e) => restoreTo(e.detail.checkpointId)}></lr-checkpoint>
48
+ ```
@@ -0,0 +1,152 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/overlays.md — do not edit this file. -->
2
+
3
+ # `lr-chip-group`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/overlays/chip/chip-group.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraChipGroup`, also available unregistered from `@aceshooting/lyra-ui/components/overlays/chip/chip-group.class.js`
7
+ - **Family** `components/overlays/` — see `llms/index.md` for its siblings
8
+ - **Optional peers** none
9
+ - **Documented with** `lr-chip` (same section below)
10
+ - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
11
+
12
+ ---
13
+
14
+ ## `lr-chip` / `lr-chip-group`
15
+
16
+ A small, content-agnostic pill for a short label: a tag, an active-filter/scope indicator, etc.
17
+ Distinct from `<lr-attachment-chip>` (specifically file-shaped, with a thumbnail/size/upload-
18
+ progress) — this pair carries no domain assumptions at all. `<lr-chip>` is a controlled component:
19
+ clicking its remove (×) button only fires `lr-remove` — the chip never removes itself from the DOM
20
+ on its own interaction, the same contract `<lr-attachment-chip>`/`<lr-conversation-item>`
21
+ already follow.
22
+
23
+ ### `lr-chip`
24
+
25
+ **Properties:**
26
+ - `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected) — standard visual-density
27
+ scale for typography, padding, gap, and icon size; `m` preserves the original chip dimensions
28
+ - `tone: 'neutral' | 'brand' | 'success' | 'warning' | 'danger' = 'neutral'` (reflected — tints the
29
+ whole pill using a loud-color-on-quiet-tint convention; `neutral` has no dedicated token pair, so
30
+ it falls back to a plain bordered-surface look)
31
+ - `removable: boolean = false` (reflected — shows the remove (×) button)
32
+ - `selected: boolean = false` (reflected) — opt-in toggle/pressed mode: when set, `[part='base']`
33
+ itself becomes focusable and keyboard-activatable (Enter/Space, mirroring native `<button>`
34
+ behavior), reflects `aria-pressed` (explicitly `"false"`, not omitted, whenever toggle mode is
35
+ active but unpressed), and toggles on click/activation, emitting `lr-chip-select`.
36
+ Has no effect (no interactive semantics added to `[part='base']`) when combined with `removable`,
37
+ since the remove button already nests inside `[part='base']` — a focusable descendant of a
38
+ `role="button"` ancestor isn't allowed there, and this component's two real use cases (a
39
+ chart-series visibility toggle, a category filter chip) never need both at once. `false` (the
40
+ default, with `toggleable` also left at its default) reproduces the exact passive-label-pill
41
+ output.
42
+ - `toggleable: boolean = false` (reflected) — explicit opt-in into `selected`'s toggle/pressed
43
+ interactive mode, independent of `selected`'s own current value. Setting `selected` to `true` at
44
+ any point opts in automatically and keeps `toggleable` `true` from then on (enough for a chip that
45
+ starts already pressed) — set `toggleable` directly instead for a chip that must be clickable from
46
+ the outset while starting **unselected**, e.g. an initially-inactive category filter chip, since
47
+ `selected`'s own default (`false`) can't otherwise be distinguished from "never opted in".
48
+ - `value?: string` — opaque consumer bookkeeping value, never read, validated, or rendered by this
49
+ component itself, only ever echoed back verbatim (including `undefined` if never set) in
50
+ `lr-remove`'s detail
51
+
52
+ **Events:** `lr-remove` (`detail: { value }` — the remove (×) button was activated via click or
53
+ Enter/Space while focused; only rendered/reachable while `removable`), `lr-chip-select`
54
+ (`detail: { value, selected }` — fired on click, or Enter/Space while focused, when `selected` mode
55
+ is active and `removable` is not set; the chip has already toggled its own `selected` state by the
56
+ time this fires)
57
+
58
+ **Slots:** default (the chip's label content), `icon` (optional leading icon or status dot; nothing
59
+ reserved for it — no extra gap — when left empty)
60
+
61
+ **CSS parts:** `base` (the pill's root container), `icon` (wrapper around the `icon` slot; hidden
62
+ entirely while empty), `label` (wrapper around the default slot), `remove-button` (the remove (×)
63
+ affordance, only rendered while `removable`)
64
+
65
+ **Themeable custom properties:** `--lr-chip-accent`, `--lr-chip-bg`, `--lr-chip-border`
66
+ (component-local trio swapped per `tone` rather than repeating background/color/border per part per
67
+ tone; default `var(--lr-color-text)` / `var(--lr-color-surface)` / `var(--lr-color-border)` —
68
+ mirrors the same accent/bg/border vocabulary `<lr-tool-call-chip>`/`<lr-attachment-chip>` use),
69
+ `--lr-chip-pressed-border` (border color while pressed/selected — falls back to
70
+ `--lr-chip-accent`), `--lr-chip-pressed-bg` (background color while pressed/selected — falls
71
+ back to `--lr-chip-bg`), the density quintet `--lr-chip-font-size`, `--lr-chip-padding-block`,
72
+ `--lr-chip-padding-inline`, `--lr-chip-gap`, `--lr-chip-icon-size` (all five are rewritten by each
73
+ `:host([size])` rule, so setting one directly on the element overrides that step of the scale; the
74
+ `m` defaults are `--lr-font-size-sm` / `--lr-size-0-25rem` / `--lr-space-s` / `--lr-space-xs` /
75
+ `--lr-font-size-sm`), plus shared tokens (`--lr-space-xs`, `--lr-space-s`,
76
+ `--lr-color-brand`/`-brand-quiet`, `--lr-color-success`/`-success-quiet`,
77
+ `--lr-color-warning`/`-warning-quiet`, `--lr-color-danger`/`-danger-quiet`,
78
+ `--lr-icon-button-size`, `--lr-focus-ring-width`, `--lr-focus-ring-color`,
79
+ `--lr-focus-ring-offset`, `--lr-transition-fast`).
80
+
81
+ **Optional peer deps:** none.
82
+
83
+ ```html
84
+ <lr-chip
85
+ toggleable
86
+ selected
87
+ style="--lr-chip-bg: var(--lr-color-surface); --lr-chip-pressed-bg: var(--lr-color-warning-quiet)"
88
+ >
89
+ Priority filter
90
+ </lr-chip>
91
+ ```
92
+
93
+ ### `lr-chip-group`
94
+
95
+ A flex-wrap container for a set of `<lr-chip>` children — plain light-DOM composition, direct
96
+ children are the chips (the same shape `<lr-split>`'s panels / `<lr-source-list>`'s cards take,
97
+ no `.items` array prop).
98
+
99
+ **Properties:**
100
+ - `maxVisible?: number` (attribute `max-visible`) — maximum number of assigned children shown before
101
+ the rest collapse behind a "+N" indicator; flattened slot-forwarded children count the same as
102
+ direct children. Unset means no limit
103
+
104
+ **Events:** `lr-overflow-toggle` (`detail: { expanded }` — the overflow indicator was activated,
105
+ revealing or re-collapsing the excess children; fires only from that click, i.e. only when
106
+ `max-visible` is actually causing an overflow state — never as a side effect of `max-visible`/
107
+ children changing on their own)
108
+
109
+ **Slots:** default (`<lr-chip>` elements, or any content, though the chip pairing is the intended
110
+ usage)
111
+
112
+ **CSS parts:** `base` (the flex-wrap container, holds both the slot and the overflow indicator),
113
+ `overflow-indicator` (the "+N" / "Show less" toggle button; only rendered while `max-visible` is
114
+ actively causing an overflow — a locally-styled pill, not an instantiated real `<lr-chip>`)
115
+
116
+ **Themeable custom properties:** shared tokens only (`--lr-space-xs`, `--lr-space-s`,
117
+ `--lr-color-border`, `--lr-color-surface`, `--lr-color-text-quiet`, `--lr-color-text`,
118
+ `--lr-color-brand`, `--lr-focus-ring-width`, `--lr-focus-ring-color`,
119
+ `--lr-focus-ring-offset`, `--lr-transition-fast`).
120
+
121
+ **Optional peer deps:** none.
122
+
123
+ ```html
124
+ <lr-chip-group max-visible="3">
125
+ <lr-chip removable value="draft">Draft</lr-chip>
126
+ <lr-chip tone="success" removable value="reviewed">Reviewed</lr-chip>
127
+ <lr-chip tone="warning">Needs input</lr-chip>
128
+ <lr-chip tone="danger">Blocked</lr-chip>
129
+ </lr-chip-group>
130
+ <script type="module">
131
+ const group = document.querySelector('lr-chip-group');
132
+ group.addEventListener('lr-overflow-toggle', (e) => console.log(e.detail.expanded));
133
+ group.querySelectorAll('lr-chip').forEach((chip) => chip.addEventListener('lr-remove', (e) => console.log(e.detail.value)));
134
+ </script>
135
+ ```
136
+
137
+ Since CSS alone can't parameterize `:nth-child` on a runtime prop, `<lr-chip-group>` reaches
138
+ directly into the light DOM and sets each excess child's own `hidden` property once `max-visible` is
139
+ exceeded — the same approach `<lr-split>` uses to set each panel's inline `flex`/`order`, rather
140
+ than a stylesheet-only solution.
141
+
142
+ **Known gotchas:**
143
+ - `<lr-chip>`'s accessible remove-button label ("Remove {text}") is computed only from the default
144
+ slot's own text content — text living inside the (decorative) `icon` slot doesn't leak into it.
145
+ - `<lr-chip-group>` silently un-expands (`expanded` resets to `false`, with no event firing) if a
146
+ consumer raises `max-visible` past the current child count while already expanded — only an actual
147
+ click on the overflow indicator fires `lr-overflow-toggle`.
148
+ - `<lr-chip-group>`'s overflow indicator is its own locally-styled pill, not an instantiated
149
+ `<lr-chip>` in its shadow DOM — don't expect `<lr-chip>`'s CSS parts or custom properties to
150
+ reach it.
151
+
152
+ ---