@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,218 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/layout.md — do not edit this file. -->
2
+
3
+ # `lr-app-rail`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/layout/app-rail/app-rail.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraAppRail`, also available unregistered from `@aceshooting/lyra-ui/components/layout/app-rail/app-rail.class.js`
7
+ - **Family** `components/layout/` — see `llms/index.md` for its siblings
8
+ - **Optional peers** none
9
+ - **Documented with** `lr-app-rail-item` (same section below)
10
+ - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
11
+
12
+ ---
13
+
14
+ ## `lr-app-rail`
15
+
16
+ A responsive navigation rail that adapts across three presentations as the *viewport* narrows (not
17
+ this element's own inline size): `'full'` (nav items show icon + label, inline), `'icon-only'` (a
18
+ narrower inline rail, icons only), and `'mobile'` (hidden behind a toggle button; opening it shows a
19
+ focus-trapped floating overlay over the page). First-party invention (no Web Awesome equivalent).
20
+ Breakpoints are viewport-width `matchMedia()` queries against `icon-only-breakpoint`/
21
+ `mobile-breakpoint`, not a `ResizeObserver` on this element — presentation tracks the actual device/
22
+ window width the way a native OS shell's navigation does, not however much horizontal space a
23
+ particular layout happens to give it. `[part="base"]` (the inline `'full'`/`'icon-only'`
24
+ presentation) and `[part="panel"]` (the mobile overlay) are the *same* element promoted in place
25
+ across modes (mirrors `<lr-widget>`'s fullscreen mode) — never both at once, and slotted nav
26
+ content is never duplicated.
27
+
28
+ Opting in to `resizable` adds a continuously draggable width for the `'full'` state: a
29
+ `[part="resizer"]` handle (pointer-drag and Left/Right-arrow keyboard stepping, RTL-aware) clamped to
30
+ `[minRailWidthPx, maxRailWidthPx]`, with no built-in persistence — a consumer that wants the chosen
31
+ width to survive a reload listens for `lr-rail-resize` and persists `railWidthPx` itself.
32
+ `preferredMode` separately lets a host manually prefer `'full'`/`'icon-only'` for the non-mobile
33
+ breakpoint axis (e.g. a user's own collapse toggle) while `mobile-breakpoint` continues to be tracked
34
+ automatically regardless — it's only consulted while `mode` isn't force-pinned via the `mode`
35
+ accessor itself, which still takes full priority.
36
+
37
+ **Properties:**
38
+ - `mode: AppRailMode` (custom accessor, reflected) — the getter always returns one of the three real
39
+ modes (`'full'|'icon-only'|'mobile'`), never `'auto'`. The setter accepts
40
+ `AppRailModeInput` (`AppRailMode | 'auto'`): assigning `'full'`/`'icon-only'`/`'mobile'` forces
41
+ that mode and stops the element responding to breakpoint changes; assigning the write-only
42
+ sentinel `'auto'` releases the force and immediately re-syncs to the current viewport width,
43
+ resuming automatic tracking. Settable via the `mode` attribute too (`mode="icon-only"`,
44
+ `mode="auto"`).
45
+ - `iconOnlyBreakpoint: string = '960px'` (attribute `icon-only-breakpoint`) — any valid CSS length,
46
+ used directly in a `(max-width: ...)` media query; below it the rail switches from `'full'` to
47
+ `'icon-only'`.
48
+ - `mobileBreakpoint: string = '600px'` (attribute `mobile-breakpoint`) — same mechanism; below it the
49
+ rail switches from `'icon-only'` to `'mobile'`. Should be smaller than `iconOnlyBreakpoint` to
50
+ produce all three states as the viewport narrows.
51
+ - `open: boolean = false` (reflected) — whether the mobile floating overlay is shown. Only meaningful
52
+ while `mode` is `'mobile'` — the value is preserved (not reset) while another mode is active, but
53
+ no overlay chrome renders until `mode` is `'mobile'` again. Set this directly, or use the built-in
54
+ toggle button — there is no separate `show()`/`hide()` pair.
55
+ - `label: string = 'Navigation'` — accessible name for the rail's navigation landmark, and for its
56
+ dialog role while the mobile overlay is open. A host-level `aria-label` attribute (see below)
57
+ takes precedence over this when both are set.
58
+ - `preferredMode?: 'full' | 'icon-only' | null` (attribute `preferred-mode`) — manually prefers
59
+ `'full'` or `'icon-only'` for the non-mobile breakpoint axis, while `mobile-breakpoint` continues to
60
+ be tracked automatically regardless — e.g. a user's manual collapse toggle that should still yield
61
+ to a genuinely too-narrow-for-any-inline-rail viewport. Only consulted while `mode` isn't
62
+ force-pinned via its own accessor (see above) — that continues to take full priority, unchanged.
63
+ Unset (the default, `null`) reproduces the original breakpoint-only behavior exactly.
64
+ - `hideToggle: boolean = false` (reflected, attribute `hide-toggle`) — suppresses the built-in mobile
65
+ `[part='toggle']` hamburger/close button entirely, for a consumer that already owns an external
66
+ mobile-menu toggle wired to this rail's own `open` property. `false` (the default) reproduces the
67
+ exact existing output; note `open` still has no built-in external trigger of its own once this is
68
+ set, since `lr-toggle` only fires from the toggle button being activated.
69
+ - `resizable: boolean = false` (reflected) — opts a continuously draggable width in for the `'full'`
70
+ state, exposing a `[part='resizer']` handle clamped to `[minRailWidthPx, maxRailWidthPx]`. `false`
71
+ (the default) renders no resizer and leaves the fixed-width `--lr-app-rail-width` CSS token
72
+ exactly as before this property existed.
73
+ - `railWidthPx?: number` (attribute `rail-width-px`) — the rail's current width in px while
74
+ `resizable`; settable/gettable directly. Unset defers to `--lr-app-rail-width`'s own resolved
75
+ width.
76
+ - `minRailWidthPx: number = 190` (attribute `min-rail-width-px`) — minimum `railWidthPx` a
77
+ drag/keyboard resize can reach.
78
+ - `maxRailWidthPx: number = 440` (attribute `max-rail-width-px`) — maximum `railWidthPx` a
79
+ drag/keyboard resize can reach.
80
+ - `dragging: boolean = false` (reflected) — `true` for the duration of an active pointer-driven
81
+ resize drag (not a keyboard step); reflected so a consumer (or this component's own styles) can
82
+ suppress `[part='base']`'s `transition: inline-size` during the drag, which otherwise visibly
83
+ "chases" the pointer instead of tracking it 1:1. Effectively read-only (this component owns the
84
+ transitions), but a plain reflected property like every other boolean here.
85
+
86
+ Also settable as a plain `aria-label` attribute (not a reactive property): overrides the computed
87
+ `label`/localized-default accessible name on both the navigation landmark and the mobile dialog
88
+ role, matching `<lr-date-input>`'s `accessibleLabel`.
89
+
90
+ **Events:** `lr-mode-change` (`detail: AppRailModeChangeDetail` = `{ mode: AppRailMode }`; the
91
+ effective mode changed, whether from a breakpoint crossing or an explicit `mode` assignment — not
92
+ fired for a redundant reassignment to the mode already in effect), `lr-toggle`
93
+ (`detail: AppRailToggleDetail` = `{ open: boolean }`; the mobile overlay opened or closed — via the
94
+ built-in toggle button, Escape, a backdrop click, a nav-item click while open, or a breakpoint/forced
95
+ mode change leaving `'mobile'` while open — not fired when a consumer sets `open` directly),
96
+ `lr-rail-resize` (`detail: AppRailResizeDetail` = `{ widthPx: number }`; the `resizable` rail's
97
+ width changed via drag or keyboard stepping — not fired when a consumer sets `railWidthPx` directly).
98
+
99
+ **Slots:** default (nav items — generic slotted content, e.g. `<a>`/`<button>` elements the consumer
100
+ builds with its own icon+label structure; clicking anywhere in this slot closes the mobile overlay if
101
+ open), `header` (logo/brand content, shown above the nav items in every mode), `footer` (a trailing
102
+ user/settings trigger, shown below the nav items).
103
+
104
+ **CSS parts:** `base`, `header`, `nav`, `footer`, `toggle` (hidden via CSS outside `'mobile'` mode, or
105
+ entirely via `hideToggle`), `backdrop`, `panel` (`base`/`panel` are mutually exclusive on the same
106
+ underlying element — see above), `resizer` (the `resizable` opt-in's drag handle, only rendered while
107
+ `resizable` and `mode` is `'full'`; its hit target is `--lr-icon-button-size`-wide), `resizer-track`
108
+ (the slim 3px visible drag line centered inside that hit target, tinted `--lr-color-brand` on hover).
109
+
110
+ **Themeable custom properties:** `--lr-app-rail-width` (default `15rem` — the inline rail width in
111
+ `'full'` mode), `--lr-app-rail-icon-width` (default `4rem` — the inline rail width in `'icon-only'`
112
+ mode), `--lr-app-rail-mobile-width` (default `18rem`, capped at `85vw` — the mobile overlay panel
113
+ width), `--lr-app-rail-overlay-color` (default `var(--lr-color-overlay)` — the mobile backdrop scrim
114
+ color; component-specific since no shared token exists), plus shared tokens (`--lr-color-border`,
115
+ `--lr-color-surface`, `--lr-color-text`, `--lr-color-brand`, `--lr-color-brand-quiet`,
116
+ `--lr-space-*`, `--lr-radius`, `--lr-shadow`, `--lr-icon-button-size`,
117
+ `--lr-focus-ring-*`, `--lr-transition-base`). `resizable`'s width is driven entirely by
118
+ `railWidthPx`'s inline `inline-size` style rather than a new custom property.
119
+
120
+ **Optional peer deps:** none.
121
+
122
+ ```html
123
+ <lr-app-rail label="Main navigation" icon-only-breakpoint="960px" mobile-breakpoint="600px" resizable>
124
+ <span slot="header"><img src="/logo.svg" alt="Acme" /></span>
125
+ <a href="/inbox" aria-label="Inbox"><svg aria-hidden="true">...</svg><span>Inbox</span></a>
126
+ <a href="/settings" aria-label="Settings"><svg aria-hidden="true">...</svg><span>Settings</span></a>
127
+ <span slot="footer"><button>Profile</button></span>
128
+ </lr-app-rail>
129
+ <script type="module">
130
+ const rail = document.querySelector('lr-app-rail');
131
+ rail.addEventListener('lr-rail-resize', (e) => localStorage.setItem('railWidthPx', String(e.detail.widthPx)));
132
+ </script>
133
+ ```
134
+ ```ts
135
+ rail.mode = 'icon-only'; // force a presentation regardless of viewport width
136
+ rail.mode = 'auto'; // release the force, resume live breakpoint tracking
137
+ ```
138
+
139
+ The package root also exports a pure `computeAppRailMode(iconOnlyMatches: boolean, mobileMatches:
140
+ boolean, preferredMode?: 'full' | 'icon-only' | null): AppRailMode` resolver (plus the
141
+ `AppRailMode`/`AppRailModeInput`/`AppRailModeChangeDetail`/`AppRailToggleDetail`/`AppRailResizeDetail`
142
+ types) — the same logic the element's internal `matchMedia` listeners call, exposed standalone so a
143
+ consumer can compute or unit-test the same resolution without a real browser window. `mobileMatches`
144
+ wins over everything else when true (the viewport is narrower than both breakpoints at once);
145
+ otherwise `preferredMode` (when set) wins over `iconOnlyMatches`.
146
+
147
+ The mobile state keeps its own panel template rather than nesting `<lr-dialog>`, while its modal
148
+ behavior participates in the shared overlay stack. It is a plain `<div>` with an explicit
149
+ `role="navigation"` (swapping to `role="dialog"` while the overlay is open) rather than a literal
150
+ `<nav>` tag, since a
151
+ `<nav>`'s implicit role can't be overridden to `role="dialog"` without an `aria-allowed-role`
152
+ violation. In `'icon-only'` mode, slotted nav items lose their visible text label — give each one a
153
+ real accessible name (`aria-label`, visually hidden text, or `title`) regardless, since this
154
+ component only lays out whatever is slotted and can't inspect or fix up a consumer's own markup.
155
+
156
+ **Known gotchas:**
157
+ - `mode`'s setter accepts the wider `AppRailModeInput` (including the `'auto'` sentinel) but the
158
+ getter's return type is the narrower `AppRailMode` — assigning `'auto'` is a one-way instruction,
159
+ not a value read back later; there is no `isForced`-style property to check whether the rail is
160
+ currently locked to a mode or tracking the viewport.
161
+ - reassigning `icon-only-breakpoint`/`mobile-breakpoint` after first render tears down and rebuilds
162
+ the `matchMedia` listeners, but does not itself un-force a previously-forced `mode` — if a consumer
163
+ set `mode = 'icon-only'`, changing the breakpoints won't resume auto-tracking until `mode = 'auto'`
164
+ is set explicitly.
165
+ - leaving `'mobile'` mode while `open` (via a breakpoint crossing or a forced `mode` reassignment)
166
+ auto-closes the overlay through the same path as the toggle button, so `lr-toggle` still fires
167
+ and the scroll lock/focus trap still release normally — a consumer listening only for explicit
168
+ toggle-button clicks would miss this closure.
169
+ - the mobile panel is also given `inert` whenever `mode === 'mobile'` and `open` is `false` — it's
170
+ removed from the accessibility tree and tab order via `inert` at the same time it's hidden visually
171
+ via `transform: translateX(-100%)`, both applied simultaneously rather than one implying the other.
172
+ - the offscreen slide direction for the mobile panel is flipped for RTL via a `:dir(rtl)` CSS
173
+ selector (`translateX(100%)`), not through the shared `internal/rtl.ts` JS helper used for pointer/
174
+ keyboard math elsewhere in this library — a physical `transform` isn't expressible with logical
175
+ properties, so this one case is handled purely in CSS.
176
+ - a reconnect that preserves the same element instance (e.g. a drag-and-drop reparent) resumes its
177
+ shared overlay registration and re-acquires the scroll lock if the overlay was still active
178
+ across the move — `disconnectedCallback`/`connectedCallback` fire back-to-back with no update in
179
+ between, so `willUpdate()` alone wouldn't otherwise notice.
180
+ - `resizable`'s drag handle is pointer-only (`pointerdown`/`pointermove`/`pointerup`/
181
+ `pointercancel`/`lostpointercapture`) plus discrete Left/Right-arrow keyboard stepping (8px per
182
+ press, RTL-aware) — there's no dedicated touch gesture beyond what Pointer Events already unify.
183
+ - reassigning `railWidthPx` while `resizable` is unset has no visible effect on the rendered width —
184
+ the fixed-width `--lr-app-rail-width` token still governs `'full'`-mode width until `resizable`
185
+ is also set.
186
+ - reassigning `icon-only-breakpoint`/`mobile-breakpoint`/`preferredMode` does not itself un-force a
187
+ previously-forced `mode` — same caveat as above, `preferredMode` is only consulted while `mode`
188
+ isn't force-pinned.
189
+
190
+ ### `lr-app-rail-item`
191
+
192
+ An explicit navigation item for `<lr-app-rail>`. It renders an accessible link when `href` is
193
+ set and enabled, otherwise a button; the rail can add its `icon-only` presentation state without
194
+ removing the label from the accessibility tree.
195
+
196
+ **Properties:**
197
+ - `href: string = ''` — optional destination. Without it, the item renders as a button.
198
+ - `target: string = ''` — optional link target.
199
+ - `disabled: boolean = false` (reflected) — prevents activation while retaining the item in the rail.
200
+ - `active: boolean = false` (reflected) — marks this as the destination for the current page/view;
201
+ reflects `aria-current="page"` on `[part='base']` and drives the active visual treatment. The rail
202
+ has no built-in routing, so the consumer sets this per item (e.g. by comparing `href` against the
203
+ current location).
204
+ - `tooltip: boolean = false` (reflected) — opt-in hover/focus flyout (`[part='tooltip']`) showing
205
+ this item's label text while the rail's `icon-only` mode (set externally by the parent
206
+ `<lr-app-rail>` as the viewport narrows) hides it from view. No effect outside icon-only mode,
207
+ since the label is already visible there. `false` (the default) reproduces the exact existing
208
+ output.
209
+
210
+ **Slots:** default (the visible label), `icon` (the leading icon, hidden from assistive technology
211
+ when the item has an explicit `aria-label`).
212
+
213
+ **CSS parts:** `base`, `icon`, `label`, `tooltip` (the hover/focus label flyout, only rendered while
214
+ `tooltip` is set, the item is `icon-only`, and it is hovered or focused).
215
+
216
+ **Optional peer deps:** none.
217
+
218
+ ---
@@ -0,0 +1,36 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/viewers.md — do not edit this file. -->
2
+
3
+ # `lr-archive-viewer`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/viewers/archive-viewer/archive-viewer.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraArchiveViewer`, also available unregistered from `@aceshooting/lyra-ui/components/viewers/archive-viewer/archive-viewer.class.js`
7
+ - **Family** `components/viewers/` — see `llms/index.md` for its siblings
8
+ - **Optional peers** `jszip` — see `llms/peers.md`
9
+ - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
10
+
11
+ ---
12
+
13
+ ## `lr-archive-viewer`
14
+
15
+ Lists entry names and human-readable uncompressed sizes inside a `.zip` archive using the optional
16
+ `jszip` peer. It is listing-only: entry content is never rendered or previewed. Each entry's size is
17
+ read straight from JSZip's local file header (`uncompressedSize`) when available, falling back to
18
+ fully decompressing only the rare entry missing that header field. The list composes
19
+ `<lr-virtual-list>` for large archives.
20
+
21
+ **Properties:** `src` and `name` are strings — `name` (or a host-level `aria-label`) names the
22
+ listing region as `role="region"`; with neither set, the region is unnamed.
23
+
24
+ **Events:** `lr-render-error` with `detail.error` when fetching or parsing fails.
25
+
26
+ **CSS parts:** `base`, `entry`, `entry-icon`, `entry-name`, `entry-size`, `spinner`, and `error`.
27
+
28
+ **Exports:** `ArchiveEntry` — `{ name: string; dir: boolean; size: number }`.
29
+
30
+ **Optional peer dependency:** install `jszip` with `pnpm add jszip`. The lazy registry registers
31
+ `application/zip` and `application/x-zip-compressed`, with a `.zip` filename fallback, and imports
32
+ the viewer only when a matching archive is opened. `.tar`, `.rar`, and other archive formats fall
33
+ through to `<lr-document-preview>`'s generic download fallback.
34
+
35
+ Remote resources are capped at 25 MB; exceeding it surfaces the localized
36
+ `documentPreviewResourceTooLarge` message instead of the entry listing.
@@ -0,0 +1,60 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/agent-tools.md — do not edit this file. -->
2
+
3
+ # `lr-artifact-panel`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/agent-tools/artifact-panel/artifact-panel.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraArtifactPanel`, also available unregistered from `@aceshooting/lyra-ui/components/agent-tools/artifact-panel/artifact-panel.class.js`
7
+ - **Family** `components/agent-tools/` — 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-artifact-panel`
14
+
15
+ Shell around one agent-generated artifact: a title/kind header, a preview↔code toggle, version
16
+ navigation with restore, a streaming indicator, and built-in copy/download actions. Renders none of
17
+ the artifact itself — content is slotted. No content rendering of its own (slots own it), no
18
+ dialog/dock chrome (compose `lr-dialog`/`lr-dock-panel`/`lr-split`), no version storage or
19
+ diffing (host state; diffs via `lr-diff-view`), no code editing (`lr-code-editor`).
20
+
21
+ **Properties:** `label: string = ''` — the artifact's title, shown in the header. `kind: string = ''`
22
+ — a short kind label (e.g. `document`, `code`), shown as a badge next to `label`. `view: 'preview' |
23
+ 'code' = 'preview'` (reflected) — which slot is currently visible. `versions: ArtifactVersion[] = []`
24
+ (attribute: false, each `{ id, label? }`) — the artifact's version history, oldest first; the last
25
+ entry is the latest version. `activeVersionId: string | null = null` (attribute
26
+ `active-version-id`) — the currently viewed version's id, or `null` for "the latest version."
27
+ `streaming: boolean = false` (reflected) — whether the artifact is still being generated; sets
28
+ `aria-busy` on the body and shows a text indicator (not animated, so it stays legible under reduced
29
+ motion). `copyText: string = ''` (attribute `copy-text`) — the text copied to the clipboard by the
30
+ copy button; empty hides the button. `downloadSrc: string = ''` (attribute `download-src`) — the
31
+ download URL, sanitized through `safeMediaSrc()`; empty hides the button. `downloadName: string =
32
+ ''` (attribute `download-name`) — the suggested filename reported in the `lr-download` event
33
+ detail.
34
+
35
+ **Slots:** default — preview-view content (markdown/html-viewer/browser-frame/image). `code` —
36
+ code-view content (typically a `lr-code-block`); the preview/code toggle only renders once this
37
+ slot has assigned content. `actions` — extra header controls, rendered between the version
38
+ navigation and the built-in copy/download buttons.
39
+
40
+ **Events:** `lr-view-change` (`detail: { view }`), `lr-version-change` (`detail: { versionId }`,
41
+ fired when the previous/next navigation moves to a different version), `lr-restore` (`detail: {
42
+ versionId }`, fired by the restore-this-version button; mutates nothing itself), `lr-copy`
43
+ (`detail: { text }`, after a best-effort clipboard write), `lr-download` (`detail: { filename,
44
+ src? }`, with the sanitized download URL).
45
+
46
+ **CSS parts:** `base`, `header`, `label`, `kind`, `view-toggle` (rendered only once the `code` slot
47
+ has content), `view-button` (carries `data-view="preview"` or `data-view="code"`), `version-nav`
48
+ (rendered only once `versions` is non-empty), `version-previous`, `version-next`, `version-position`
49
+ (the "Version N of M" text), `restore-button` (rendered only while the active version isn't the
50
+ latest), `actions`, `copy-button` (rendered only while `copyText` is non-empty), `download-button`
51
+ (rendered only while `downloadSrc` is non-empty), `body`, `streaming-indicator` (rendered only while
52
+ `streaming`).
53
+
54
+ ```html
55
+ <lr-artifact-panel label="report.md" kind="document" .versions=${versions}
56
+ @lr-restore=${(e) => restoreVersion(e.detail.versionId)}>
57
+ <lr-markdown .content=${markdown}></lr-markdown>
58
+ <lr-code-block slot="code" language="markdown" .code=${markdown}></lr-code-block>
59
+ </lr-artifact-panel>
60
+ ```
@@ -0,0 +1,131 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/media.md — do not edit this file. -->
2
+
3
+ # `lr-attachment-chip`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/media/attachment-chip/attachment-chip.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraAttachmentChip`, also available unregistered from `@aceshooting/lyra-ui/components/media/attachment-chip/attachment-chip.class.js`
7
+ - **Family** `components/media/` — 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-attachment-chip`
14
+
15
+ A compact chip representing one file queued for (or already part of) a chat message — used in a
16
+ composer's pre-send attachment tray or a sent message's attachments display. Two independent ways
17
+ to populate it: set `file` to a real `File` (fresh from a picker/drop), from which `name`/`size`/
18
+ `mime-type` and the image thumbnail are all auto-derived; or set the plain `name`/`size`/
19
+ `mime-type`/`thumbnail-src` props instead, for reconstructing a chip from server-persisted
20
+ attachment metadata after a page reload, when no real `File` object exists any more. `file` always
21
+ wins when both are present. When a real `File` or `preview-src` is available, the chip also offers
22
+ a localized preview action that opens `<lr-document-viewer>` using the same effective MIME type.
23
+
24
+ **Properties:**
25
+ - `file?: File` (attribute `false`, i.e. property-only) — when set, `name`/`size`/`mimeType`/the
26
+ image thumbnail are all derived from it, taking precedence over the independent props below
27
+ - `name: string = ''` — filename, used only while `file` is unset
28
+ - `size: number = 0` — file size in bytes, used only while `file` is unset
29
+ - `mimeType: string = ''` (attribute `mime-type`) — used only while `file` is unset
30
+ - `thumbnailSrc: string = ''` (attribute `thumbnail-src`) — thumbnail image URL, used only while
31
+ `file` is unset; rendered whenever present regardless of `mimeType` (no `file`-derived equivalent
32
+ exists for a non-image file)
33
+ - `previewSrc: string = ''` (attribute `preview-src`) — source URL used for preview and download when
34
+ `file` is unset; a real `File` takes precedence and uses a temporary blob URL
35
+ - `previewable: boolean = true` (reflected) — shows the preview action whenever a `file` or
36
+ `preview-src` is available
37
+ - `status: AttachmentChipStatus = 'pending'` (reflected) — `'pending' | 'uploading' | 'error' |
38
+ 'done'`; drives the accent tint and which of `progress`/`spinner`/`retry-button` renders
39
+ - `progress: number = 0` — upload completion, 0-100; only meaningful while `status="uploading"`, a
40
+ value of `0` or `NaN` falls back to the indeterminate spinner
41
+ - `removable: boolean = true` (reflected) — shows the remove (×) button
42
+ - `compact: boolean = false` (reflected) — renders a smaller, borderless pill presentation instead of
43
+ the default bordered/chrome-heavy chip, e.g. for a composer's pending-attachment tray. `false` (the
44
+ default) is visually identical to the standard chip.
45
+ - `thumbnailOnly: boolean = false` (reflected, attribute `thumbnail-only`) — when both this and
46
+ `compact` are set, hides `[part='meta']` (the filename/size text) entirely for an image-mime
47
+ attachment, leaving only the thumbnail. Has no effect for a non-image chip, or when `compact` is
48
+ unset. `false` (the default) reproduces the chip's exact existing output.
49
+ - `removeLabel: string = 'Remove'` (attribute `remove-label`) — verb used in the remove button's
50
+ accessible name; the default routes through the complete localized `removeWithContext` template
51
+ - `retryLabel: string = 'Retry'` (attribute `retry-label`) — verb used in the retry button's
52
+ accessible name; the default routes through the complete localized attachment template
53
+ - `uploadingLabel: string = 'Uploading'` (attribute `uploading-label`) — verb used in the visible
54
+ uploading status; the untouched default uses complete localized messages for progress,
55
+ indeterminate state, and filename context so translators can reorder every value
56
+ - `uploadFailedLabel: string = 'Upload failed'` (attribute `upload-failed-label`) — visible status
57
+ text shown for `status="error"`; override for i18n/locale
58
+ - `untitledLabel: string = 'Untitled file'` (attribute `untitled-label`) — fallback filename and
59
+ tooltip when neither `file` nor `name` supplies a name
60
+
61
+ The component identifies *which* attachment a `lr-remove`/`lr-retry` event is about via the
62
+ platform's own `id` attribute/property rather than a second, differently-named prop. Set `id="..."`
63
+ when you have a stable server-side attachment id; when unset and `file` is set, a stable id is
64
+ derived from `` `${file.name}:${file.size}:${file.lastModified}` ``; when neither is available, a
65
+ generated internal id is used as a last resort.
66
+
67
+ **Events:** `lr-remove` (`detail: { id }`, only rendered while `removable`), `lr-retry`
68
+ (`detail: { id }`, only rendered while `status="error"`), `lr-preview` (`detail: { id, name,
69
+ mimeType, src }`, emitted when the preview action opens the document viewer)
70
+
71
+ **Slots:** none.
72
+
73
+ **CSS parts:** `base`, `thumbnail`, `meta`, `name`, `size`, `status-text`, `progress`,
74
+ `progress-fill`, `spinner`, `retry-button`, `preview-button`, `remove-button`
75
+
76
+ **Themeable custom properties:** `--lr-attachment-chip-accent` (default
77
+ `var(--lr-color-text-quiet)`), `--lr-attachment-chip-bg` (default `var(--lr-color-surface)`),
78
+ `--lr-attachment-chip-border` (default `var(--lr-color-border)`) — this trio is swapped per
79
+ `status` (`uploading` → brand/brand-quiet/transparent, `error` → danger/danger-quiet/transparent,
80
+ `done` → success/success-quiet/transparent); `--lr-attachment-chip-compact-thumbnail-size` (default
81
+ `1.75rem`), `--lr-attachment-chip-compact-font-size` (default `var(--lr-font-size-xs)`),
82
+ `--lr-attachment-chip-compact-gap` (default `0.25rem`) — govern the chip's thumbnail size, text
83
+ size, and internal gap while `compact` is set; `--lr-attachment-chip-spinner-duration` (default
84
+ `0.8s`) controls the indeterminate rotation and stops under reduced motion; plus shared tokens `--lr-space-xs`, `--lr-space-s`,
85
+ `--lr-radius`, `--lr-color-text`, `--lr-color-danger`, `--lr-icon-button-size`,
86
+ `--lr-transition-fast`, `--lr-transition-base`, `--lr-focus-ring-width`,
87
+ `--lr-focus-ring-color`, `--lr-focus-ring-offset`.
88
+
89
+ **Optional peer deps:** none.
90
+
91
+ Also exported from the package root: `formatFileSize(bytes: number): string` — `512` → `"512 B"`
92
+ (whole bytes never get a decimal), `2415919` → `"2.3 MB"` (every unit past bytes gets exactly one
93
+ decimal place), and a negative or non-finite input (`NaN`, `Infinity`) returns `""` so an unknown
94
+ size renders nothing instead of `"NaN B"`.
95
+
96
+ ```html
97
+ <lr-attachment-chip name="report.pdf" size="245000" mime-type="application/pdf" status="done"></lr-attachment-chip>
98
+ <lr-attachment-chip id="att-2" status="uploading" progress="42"></lr-attachment-chip>
99
+ <script type="module">
100
+ import { formatFileSize } from '@aceshooting/lyra-ui';
101
+
102
+ const chip = document.createElement('lr-attachment-chip');
103
+ chip.file = pickedFile; // name/size/mime-type/thumbnail all derived from the File
104
+ chip.addEventListener('lr-remove', (e) => removeAttachment(e.detail.id));
105
+ chip.addEventListener('lr-retry', (e) => retryUpload(e.detail.id));
106
+ chip.addEventListener('lr-preview', (e) => console.log(e.detail));
107
+ console.log(formatFileSize(pickedFile.size));
108
+ </script>
109
+ ```
110
+
111
+ The image thumbnail for a real `File` is a lazily-created `URL.createObjectURL()` blob URL —
112
+ created only from `render()`, i.e. only once a thumbnail is actually about to paint, never eagerly
113
+ on `file` assignment — and revoked automatically once `file` changes to a different `File` (or to
114
+ `undefined`) and on disconnect, so reassigning `file` several times before the next paint never
115
+ leaks URLs that were created but never shown.
116
+
117
+ **Known gotchas:**
118
+ - `file` always wins over `name`/`size`/`mimeType` when both are set — assigning those props while
119
+ `file` is also set has no visible effect on the rendered chip.
120
+ - A `0`-byte size and an unset size are indistinguishable (there's no separate flag for "genuinely
121
+ empty file"); the `size` part is hidden entirely rather than showing a literal `"0 B"`.
122
+ - `progress` only renders as a numeric bar when `status="uploading"` **and** `progress` is finite
123
+ and `> 0`; otherwise it's either nothing (non-`uploading` status) or the indeterminate spinner
124
+ (`uploading` with no known progress).
125
+ - `thumbnailSrc` is used whenever present regardless of `mimeType` — pass a URL that's already known
126
+ to be an image; there's no non-image fallback check for it the way there is for `file`.
127
+ - `previewSrc` is used only when `file` is unset. A preview action is omitted when neither a real
128
+ `File` nor `preview-src` supplies a source. The viewer's footer omits its download link for unsafe
129
+ source schemes.
130
+
131
+ ---
@@ -0,0 +1,90 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/media.md — do not edit this file. -->
2
+
3
+ # `lr-attachment-trigger`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/media/attachment-trigger/attachment-trigger.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraAttachmentTrigger`, also available unregistered from `@aceshooting/lyra-ui/components/media/attachment-trigger/attachment-trigger.class.js`
7
+ - **Family** `components/media/` — 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-attachment-trigger`
14
+
15
+ A compact attach affordance designed for a chat composer's leading slot (see `lr-chat-composer`'s
16
+ own `leading` slot, which this drops straight into, though it has no code dependency on it). First-
17
+ party invention (no Web Awesome equivalent). Its shape adapts to how many attachment `capabilities`
18
+ are configured: exactly one renders a single plain icon button; more than one renders a small
19
+ anchored menu (composed from the already-landed `lr-menu`/`lr-menu-item`) listing each
20
+ capability as a row.
21
+
22
+ **Properties:**
23
+ - `capabilities: AttachmentCapability[] = ['files']` (property only, no attribute) — which
24
+ capabilities to offer, in display order. `AttachmentCapability = 'files' | 'image' | 'camera' |
25
+ 'audio'`; `FileBackedCapability = 'files' | 'image'` (the two that actually open the file
26
+ picker).
27
+ - `accept: string = ''` — a native-file-input-style accept string (e.g. `'image/*'` or
28
+ `'.pdf,.docx'`), forwarded to the hidden file input for the `files`/`image` capabilities. `image`
29
+ defaults it to `'image/*'` unless this prop overrides it; `files` always uses it as-is (empty
30
+ means "any file type").
31
+ - `multiple: boolean = true` (reflected) — forwarded to the hidden file input's own `multiple`
32
+ attribute.
33
+ - `disabled: boolean = false` (reflected)
34
+ - `triggerLabel?: string` (attribute `trigger-label`) — overrides the single-capability trigger
35
+ button's `aria-label`, which otherwise comes from `CAPABILITY_META[capability].triggerLabel` (e.g.
36
+ `'Attach files'`); only affects the single-capability button (`[part='trigger']`) — the
37
+ multi-capability menu's own trigger keeps its fixed `'Add attachment'` label regardless. Unset
38
+ (the default) keeps the built-in English default.
39
+ - `triggerTitle?: string` (attribute `trigger-title`) — forwards a sighted-user hover tooltip to
40
+ both the single-capability and multi-capability trigger buttons
41
+
42
+ **Events:** `lr-pick` (`detail: { capability: 'files' | 'image'; files: FileList }`) — fired once a
43
+ file-backed capability's hidden input produces a real selection. The `FileList` is an independent
44
+ snapshot (rehomed into a fresh `DataTransfer`), not a live reference to the input's own `.files` —
45
+ see the gotcha below for why that distinction matters. `lr-camera-request` and `lr-audio-request`
46
+ (both no detail — `detail` is `null`, not `undefined`, per the DOM spec's `CustomEventInit`
47
+ default) — fired when the `camera` / `audio` capability is activated; this component implements no
48
+ capture UI of its own, the host owns everything from here (there's no single right answer for
49
+ `getUserMedia` vs. `<input capture>` vs. a native wrapper's own camera API; for `audio` the
50
+ typical host response is opening `<lr-push-to-talk>` in an overlay, then handing the resulting
51
+ blob to `<lr-attachment-chip>`). Internal `focus`/`blur` from the hidden input are re-emitted as
52
+ host events.
53
+
54
+ **Slots:** none — capabilities are configured entirely via the `capabilities` prop.
55
+
56
+ **CSS parts:** `trigger` (the single-capability button, only rendered when
57
+ `capabilities.length === 1`), `menu` (the `lr-menu` wrapper, only rendered when
58
+ `capabilities.length > 1`), `menu-trigger` (the multi-capability button slotted into `lr-menu`'s own
59
+ `trigger` slot, only rendered when `capabilities.length > 1`), `expand-icon` (the disclosure chevron
60
+ inside the multi-capability trigger button, only rendered when `capabilities.length > 1`),
61
+ `hidden-input` (the internal native `<input type="file">` that actually opens the OS file picker;
62
+ hidden via CSS by default, exposed as a part only so a consumer can override that with
63
+ `::part(hidden-input)` in the unlikely case their integration needs to).
64
+
65
+ **Themeable custom properties:** shared tokens only — `--lr-space-xs`, `--lr-color-text`/
66
+ `-text-quiet`, `--lr-icon-button-size`, `--lr-focus-ring-*`, `--lr-opacity-disabled`,
67
+ `--lr-radius`, `--lr-transition-fast`.
68
+
69
+ **Optional peer deps:** none.
70
+
71
+ ```html
72
+ <lr-attachment-trigger .capabilities=${['files', 'image', 'camera']} accept=".pdf,.docx"
73
+ @lr-pick=${(e) => queueFiles(e.detail.capability, e.detail.files)}
74
+ @lr-camera-request=${openCameraFlow}
75
+ ></lr-attachment-trigger>
76
+ ```
77
+
78
+ **Known gotchas:**
79
+ - `HTMLInputElement.files` is a *live* view in most browsers — clearing `input.value` after reading
80
+ `.files` (needed so re-picking the exact same file still fires another `change` event next time)
81
+ mutates that exact `FileList` object back to empty in place, not just detaches a stale reference.
82
+ A consumer reading `lr-pick`'s `detail.files` even one microtask later (an `async` handler, a
83
+ queued upload) would otherwise observe an empty list — this component avoids that by rehoming the
84
+ selection into a fresh `DataTransfer` before emitting, but any other file-input-adjacent code
85
+ emitting `input.files` directly without that rehoming step has the same latent bug.
86
+ - The `camera`/`audio` capabilities never touch the hidden `<input type="file">` at all — both are
87
+ scope-limited by design to firing `lr-camera-request`/`lr-audio-request` and nothing else. The
88
+ hidden input is only rendered when `capabilities` contains `files` or `image`.
89
+
90
+ ---
@@ -0,0 +1,43 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/conversation.md — do not edit this file. -->
2
+
3
+ # `lr-audio-visualizer`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/conversation/audio-visualizer/audio-visualizer.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraAudioVisualizer`, also available unregistered from `@aceshooting/lyra-ui/components/conversation/audio-visualizer/audio-visualizer.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-audio-visualizer`
14
+
15
+ A presentational, canvas-drawn voice-activity visualization (bars or waveform) — the
16
+ LiveKit-BarVisualizer counterpart for this library. Driven by a `MediaStream` (lazily wired to a
17
+ WebAudio `AnalyserNode`), a numeric `level` for hosts that already compute levels (e.g.
18
+ `<lr-push-to-talk>`'s `lr-level`), or `state` alone for an ambient animation when no real signal
19
+ exists. A real signal (`stream` or `level`) always drives amplitude regardless of
20
+ `prefers-reduced-motion`; only the signal-less ambient animation is throttled under reduced motion.
21
+
22
+ **Properties:** `stream: MediaStream | null = null` (attribute: false) — a live capture stream, lazily
23
+ wired to a WebAudio `AnalyserNode`; `level: number | null = null` — a pre-computed 0–1 amplitude for
24
+ hosts that already have one (e.g. `lr-push-to-talk`'s `lr-level` detail); `state: 'idle' |
25
+ 'listening' | 'thinking' | 'speaking' = 'idle'` (reflected) — drives the signal-less ambient
26
+ animation and per-state coloring; `variant: 'bars' | 'waveform' = 'bars'` (reflected); `barCount:
27
+ number = 5` (attribute `bar-count`); `gain: number = 1` — multiplier applied to the resolved
28
+ amplitude; `label: string = ''` — the host's accessible name.
29
+
30
+ **Methods:** `refreshTheme()` re-reads themeable custom properties after a runtime theme change (the
31
+ canvas resolves token values at paint time and cannot inherit `var()` directly).
32
+
33
+ **Events:** none — purely presentational.
34
+
35
+ **Slots:** none.
36
+
37
+ **CSS parts:** `base` (the root wrapper) and `canvas` (the drawing surface, `aria-hidden`; the host
38
+ itself carries `role="img"` and the accessible name).
39
+
40
+ **Themeable custom properties:** `--lr-audio-visualizer-color` (default `--lr-color-brand` —
41
+ active bar/waveform color), `--lr-audio-visualizer-quiet-color` (default
42
+ `--lr-color-brand-quiet` — inactive/idle color), and `--lr-audio-visualizer-height` (default
43
+ `var(--lr-size-3rem)` — the host's block size).
@@ -0,0 +1,50 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/media.md — do not edit this file. -->
2
+
3
+ # `lr-av-player`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/media/av-player/av-player.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraAvPlayer`, also available unregistered from `@aceshooting/lyra-ui/components/media/av-player/av-player.class.js`
7
+ - **Family** `components/media/` — 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-av-player`
14
+
15
+ An audio/video player built on a native `<audio>`/`<video>` element, plus a cue transcript synced to
16
+ `currentTime`, `time-range` anchor/highlight support, an optional dependency-free waveform (peaks
17
+ in, no in-component decoding), and playback-rate control. Owns recorded-media transcript sync —
18
+ distinct from `<lr-transcript-feed>` (live captions for an in-progress voice session) and
19
+ `<lr-playback>` (an index stepper, no media). Adopts `DocumentAnchorTarget` with
20
+ `anchorKinds: ['time-range']` only — no text selection is bound. The transcript virtualizes through
21
+ `<lr-virtual-list>` the same way `lr-pdf-viewer` virtualizes pages.
22
+
23
+ **Properties:** `src: string = ''`, `name: string = ''`, `kind?: 'audio' | 'video'` (attribute:
24
+ false auto-detection override), `mimeType: string = ''` (attribute `mime-type`), `poster: string =
25
+ ''`, `loop: boolean = false`, `muted: boolean = false`, `preload: 'none' | 'metadata' | 'auto' =
26
+ 'metadata'`, `playbackRate: number = 1` (attribute `playback-rate`, reflected), `rates: number[] =
27
+ [0.75, 1, 1.25, 1.5, 2]` (attribute: false), `cues: LyraAvCue[] = []` (attribute: false), `peaks:
28
+ number[] = []` (attribute: false), and `tracks: LyraAvTrack[] = []` (attribute: false).
29
+ `LyraAvCue = { id, start, end?, text, speaker? }`; `LyraAvTrack = { src, kind: 'subtitles' |
30
+ 'captions' | 'descriptions', srclang, label, default? }`.
31
+
32
+ **Methods:** `play()`, `pause()`, and `toggle()` proxy the native media element. `seek(seconds)`
33
+ sets `currentTime` and forces an immediate `lr-time-change`. `search(query)` resolves the match
34
+ count; `searchNext()`/`searchPrevious()` wrap; `clearSearch()` resets.
35
+
36
+ **Events:** `lr-play`, `lr-pause`, `lr-load` (`detail: { duration, kind }`), `lr-time-change`
37
+ (`detail: { currentTime }`, throttled to at most 4/s while playing plus one extra per `seek()`),
38
+ `lr-rate-change` (`detail: { rate }`), `lr-cue-change` (`detail: { id }`, `id` is `null` when no
39
+ cue is active), `lr-highlight-activate` (`detail: { id }`), `lr-anchor-result` (`detail: {
40
+ found }`), `lr-search-change` (`detail: { query, matchCount, activeIndex }`), and
41
+ `lr-render-error` (`detail: { error }`).
42
+
43
+ **CSS parts:** `base`, `media` (the native `<audio>`/`<video>` element), `toolbar`, `rate-select`,
44
+ `timeline` (click-to-seek and arrow-key seeking), `timeline-marker` (one per `time-range` highlight;
45
+ `data-tone`, `data-active`), `transcript` (the `<lr-virtual-list>` itself), `cue` (`aria-current`,
46
+ `data-match`, `data-active-match`), `cue-time`, `cue-speaker`, `cue-text`, and `error`.
47
+
48
+ **Themeable custom properties:** `--lr-av-player-transcript-height` (default
49
+ `var(--lr-size-16rem)` — block size of the transcript pane; forwarded to the embedded
50
+ `<lr-virtual-list>`'s own `--lr-virtual-list-height`).