@aceshooting/lyra-ui 9.1.0 → 10.0.1

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 (622) hide show
  1. package/CHANGELOG.md +843 -0
  2. package/README.md +7 -0
  3. package/custom-elements.json +1 -1
  4. package/dist/cli/migrate-wa.mjs +52 -0
  5. package/dist/cli/migration-contract.json +1 -1
  6. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +2 -2
  7. package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +0 -16
  8. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +1 -1
  9. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.styles.js +9 -7
  10. package/dist/components/agent-tools/agent-run/agent-run.class.js +2 -2
  11. package/dist/components/agent-tools/agent-run/agent-run.styles.js +0 -13
  12. package/dist/components/agent-tools/agent-trace/agent-trace.class.js +1 -1
  13. package/dist/components/agent-tools/agent-trace/agent-trace.styles.js +7 -4
  14. package/dist/components/agent-tools/approval-queue/approval-queue.styles.js +7 -5
  15. package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +0 -3
  16. package/dist/components/agent-tools/browser-frame/browser-frame.class.js +1 -1
  17. package/dist/components/agent-tools/browser-frame/browser-frame.styles.js +3 -5
  18. package/dist/components/agent-tools/commit-card/commit-card.class.js +1 -1
  19. package/dist/components/agent-tools/commit-card/commit-card.styles.js +0 -10
  20. package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +11 -6
  21. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +2 -2
  22. package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.js +0 -46
  23. package/dist/components/agent-tools/context-inspector/context-inspector.class.js +1 -1
  24. package/dist/components/agent-tools/eval-dataset/eval-dataset.styles.js +0 -7
  25. package/dist/components/agent-tools/eval-result/eval-result.class.js +1 -1
  26. package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +2 -2
  27. package/dist/components/agent-tools/policy-summary/policy-summary.class.js +1 -1
  28. package/dist/components/agent-tools/prompt-studio/prompt-studio.styles.js +0 -15
  29. package/dist/components/agent-tools/result-card/result-card.styles.js +0 -7
  30. package/dist/components/agent-tools/result-card/result-field.styles.js +0 -5
  31. package/dist/components/agent-tools/schema-viewer/schema-viewer.styles.js +2 -5
  32. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +1 -1
  33. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +0 -15
  34. package/dist/components/agent-tools/stack-trace/stack-trace.styles.js +0 -20
  35. package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +2 -2
  36. package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +1 -4
  37. package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
  38. package/dist/components/agent-tools/task-list/task-list.styles.js +0 -15
  39. package/dist/components/agent-tools/terminal/terminal.class.d.ts +11 -6
  40. package/dist/components/agent-tools/terminal/terminal.class.js +4 -4
  41. package/dist/components/agent-tools/terminal/terminal.styles.js +0 -46
  42. package/dist/components/agent-tools/test-results/test-results.class.js +2 -2
  43. package/dist/components/agent-tools/test-results/test-results.styles.js +0 -5
  44. package/dist/components/agent-tools/thinking-panel/thinking-panel.class.js +1 -1
  45. package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +0 -41
  46. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.js +0 -41
  47. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +2 -2
  48. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.styles.js +0 -30
  49. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +6 -6
  50. package/dist/components/agent-tools/tool-param-form/tool-param-form.styles.js +0 -5
  51. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +2 -2
  52. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +0 -20
  53. package/dist/components/agent-tools/tool-result-view/tool-result-view.styles.js +0 -4
  54. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.styles.js +0 -21
  55. package/dist/components/agent-tools/trace-tree/trace-tree.class.js +2 -2
  56. package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +7 -31
  57. package/dist/components/charts/chart/bar-chart.class.js +1 -1
  58. package/dist/components/charts/chart/box-plot.styles.js +0 -20
  59. package/dist/components/charts/chart/bubble-chart.class.js +1 -1
  60. package/dist/components/charts/chart/chart-colors.d.ts +1 -1
  61. package/dist/components/charts/chart/chart-colors.js +1 -1
  62. package/dist/components/charts/chart/chart-core-loader.d.ts +1 -0
  63. package/dist/components/charts/chart/chart-core-loader.js +1 -1
  64. package/dist/components/charts/chart/chart-feature-loader.d.ts +35 -0
  65. package/dist/components/charts/chart/chart-feature-loader.js +1 -1
  66. package/dist/components/charts/chart/chart.class.d.ts +93 -0
  67. package/dist/components/charts/chart/chart.class.js +3 -3
  68. package/dist/components/charts/chart/chart.styles.js +0 -27
  69. package/dist/components/charts/chart/doughnut-chart.class.js +1 -1
  70. package/dist/components/charts/chart/histogram.class.js +1 -1
  71. package/dist/components/charts/chart/line-chart.class.js +1 -1
  72. package/dist/components/charts/chart/lite-chart.class.d.ts +20 -1
  73. package/dist/components/charts/chart/lite-chart.class.js +4 -4
  74. package/dist/components/charts/chart/lite-chart.styles.js +0 -27
  75. package/dist/components/charts/chart/pie-chart.class.js +1 -1
  76. package/dist/components/charts/chart/polar-area-chart.class.js +1 -1
  77. package/dist/components/charts/chart/radar-chart.class.js +1 -1
  78. package/dist/components/charts/chart/scatter-chart.class.js +1 -1
  79. package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +20 -0
  80. package/dist/components/conversation/agent-workspace/agent-workspace.class.js +3 -1
  81. package/dist/components/conversation/agent-workspace/agent-workspace.styles.js +3 -0
  82. package/dist/components/conversation/audio-visualizer/audio-visualizer.styles.js +0 -7
  83. package/dist/components/conversation/branch-picker/branch-picker.styles.js +0 -3
  84. package/dist/components/conversation/chat-composer/chat-composer.styles.js +0 -51
  85. package/dist/components/conversation/chat-message/chat-message.class.js +2 -2
  86. package/dist/components/conversation/chat-message/chat-message.styles.js +13 -35
  87. package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
  88. package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +0 -33
  89. package/dist/components/conversation/checkpoint/checkpoint.class.js +1 -1
  90. package/dist/components/conversation/checkpoint/checkpoint.styles.js +0 -3
  91. package/dist/components/conversation/code-block/code-block-shared.d.ts +5 -2
  92. package/dist/components/conversation/code-block/code-block.class.js +1 -1
  93. package/dist/components/conversation/code-block/code-block.styles.js +4 -95
  94. package/dist/components/conversation/code-block/code-loader.d.ts +11 -0
  95. package/dist/components/conversation/code-block/code-loader.js +1 -1
  96. package/dist/components/conversation/code-block/shiki-types.d.ts +12 -0
  97. package/dist/components/conversation/code-block/shiki-types.js +1 -1
  98. package/dist/components/conversation/conversation-item/conversation-item.styles.js +8 -54
  99. package/dist/components/conversation/generation-metrics/generation-metrics.class.js +2 -2
  100. package/dist/components/conversation/generation-metrics/generation-metrics.styles.js +0 -17
  101. package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
  102. package/dist/components/conversation/markdown/markdown.styles.js +0 -41
  103. package/dist/components/conversation/message-actions/message-actions.styles.js +0 -3
  104. package/dist/components/conversation/message-feedback/message-feedback.styles.js +0 -35
  105. package/dist/components/conversation/message-parts/message-parts.class.d.ts +1 -1
  106. package/dist/components/conversation/message-parts/message-parts.styles.js +0 -5
  107. package/dist/components/conversation/model-select/model-select.class.js +3 -3
  108. package/dist/components/conversation/model-select/model-select.styles.js +12 -47
  109. package/dist/components/conversation/model-settings-panel/model-settings-panel.styles.js +0 -6
  110. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +3 -0
  111. package/dist/components/conversation/prompt-input/prompt-input.styles.js +0 -10
  112. package/dist/components/conversation/push-to-talk/push-to-talk.styles.js +0 -8
  113. package/dist/components/conversation/realtime-session/realtime-session.styles.js +1 -1
  114. package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +1 -11
  115. package/dist/components/conversation/stream-status/stream-status.styles.js +0 -16
  116. package/dist/components/conversation/streaming-text/streaming-text.styles.js +0 -15
  117. package/dist/components/conversation/suggestion-chips/suggestion-chips.styles.js +0 -5
  118. package/dist/components/conversation/thread-list/thread-list.styles.js +5 -19
  119. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +16 -4
  120. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
  121. package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +0 -1
  122. package/dist/components/conversation/typing-indicator/typing-indicator.styles.js +0 -23
  123. package/dist/components/conversation/usage-badge/usage-badge.class.js +1 -1
  124. package/dist/components/conversation/usage-badge/usage-badge.styles.js +0 -3
  125. package/dist/components/conversation/voice-picker/voice-picker.class.js +3 -3
  126. package/dist/components/conversation/voice-picker/voice-picker.styles.js +9 -29
  127. package/dist/components/conversation/widget-renderer/resolve.d.ts +2 -0
  128. package/dist/components/conversation/widget-renderer/resolve.js +1 -1
  129. package/dist/components/data/calendar/calendar.class.d.ts +15 -2
  130. package/dist/components/data/calendar/calendar.class.js +2 -2
  131. package/dist/components/data/calendar/calendar.styles.js +2 -28
  132. package/dist/components/data/condition-builder/condition-builder.class.d.ts +10 -6
  133. package/dist/components/data/condition-builder/condition-builder.class.js +2 -2
  134. package/dist/components/data/condition-builder/condition-builder.styles.js +0 -6
  135. package/dist/components/data/context-meter/context-meter.styles.js +0 -24
  136. package/dist/components/data/data-grid/data-grid.class.js +3 -3
  137. package/dist/components/data/data-grid/data-grid.styles.js +0 -22
  138. package/dist/components/data/document-library/document-library.class.js +2 -2
  139. package/dist/components/data/document-library/document-library.styles.js +0 -4
  140. package/dist/components/data/env-list/env-list.class.js +1 -1
  141. package/dist/components/data/env-list/env-list.styles.js +7 -4
  142. package/dist/components/data/file-tree/file-tree.class.d.ts +12 -0
  143. package/dist/components/data/file-tree/file-tree.class.js +1 -1
  144. package/dist/components/data/flow-canvas/flow-canvas.styles.js +12 -19
  145. package/dist/components/data/flow-controls/flow-controls.class.js +2 -2
  146. package/dist/components/data/flow-controls/flow-controls.styles.js +3 -36
  147. package/dist/components/data/flow-minimap/flow-minimap.class.js +1 -1
  148. package/dist/components/data/flow-minimap/flow-minimap.styles.js +0 -9
  149. package/dist/components/data/flow-node/flow-node.styles.js +0 -23
  150. package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
  151. package/dist/components/data/flow-run-status/flow-run-status.styles.js +0 -7
  152. package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +0 -7
  153. package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
  154. package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +0 -10
  155. package/dist/components/data/heatmap/heatmap-scale.d.ts +20 -0
  156. package/dist/components/data/heatmap/heatmap-scale.js +1 -1
  157. package/dist/components/data/heatmap/heatmap.class.d.ts +85 -2
  158. package/dist/components/data/heatmap/heatmap.class.js +2 -2
  159. package/dist/components/data/heatmap/heatmap.styles.js +0 -54
  160. package/dist/components/data/pagination/pagination.class.js +1 -1
  161. package/dist/components/data/pagination/pagination.styles.js +23 -46
  162. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +34 -1
  163. package/dist/components/data/sequence-strip/sequence-strip.class.js +5 -2
  164. package/dist/components/data/sequence-strip/sequence-strip.styles.js +14 -20
  165. package/dist/components/data/sparkline/sparkline.class.js +1 -1
  166. package/dist/components/data/stat/stat.styles.js +0 -67
  167. package/dist/components/data/table/table.class.d.ts +42 -3
  168. package/dist/components/data/table/table.class.js +4 -4
  169. package/dist/components/data/table/table.styles.js +20 -91
  170. package/dist/components/data/timeline/timeline-item.styles.js +0 -30
  171. package/dist/components/data/timeline/timeline.class.d.ts +89 -1
  172. package/dist/components/data/timeline/timeline.class.js +2 -2
  173. package/dist/components/data/timeline/timeline.styles.js +111 -31
  174. package/dist/components/data/tree/tree-item.styles.js +1 -28
  175. package/dist/components/data/tree/tree.class.js +2 -2
  176. package/dist/components/data/tree/tree.styles.js +0 -6
  177. package/dist/components/data/word-cloud/word-cloud.styles.js +0 -5
  178. package/dist/components/forms/button/button.class.js +1 -1
  179. package/dist/components/forms/button/button.styles.js +1 -106
  180. package/dist/components/forms/checkbox/checkbox.class.d.ts +3 -0
  181. package/dist/components/forms/checkbox/checkbox.class.js +1 -1
  182. package/dist/components/forms/checkbox/checkbox.styles.js +0 -39
  183. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +21 -2
  184. package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
  185. package/dist/components/forms/checkbox-group/checkbox-group.styles.js +0 -18
  186. package/dist/components/forms/code-editor/code-editor.styles.js +0 -30
  187. package/dist/components/forms/color-picker/color-picker.class.js +2 -2
  188. package/dist/components/forms/color-picker/color-picker.styles.js +0 -69
  189. package/dist/components/forms/combobox/combobox.class.js +2 -2
  190. package/dist/components/forms/combobox/combobox.styles.js +22 -111
  191. package/dist/components/forms/combobox/option.styles.js +7 -1
  192. package/dist/components/forms/date-picker/date-input.class.js +1 -1
  193. package/dist/components/forms/date-picker/date-input.styles.js +12 -67
  194. package/dist/components/forms/date-picker/date-picker.class.d.ts +1 -0
  195. package/dist/components/forms/date-picker/date-picker.class.js +22 -20
  196. package/dist/components/forms/date-picker/date-picker.styles.js +36 -29
  197. package/dist/components/forms/emoji-picker/emoji-data-loader.d.ts +6 -3
  198. package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
  199. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +8 -1
  200. package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
  201. package/dist/components/forms/emoji-picker/emoji-picker.styles.js +3 -41
  202. package/dist/components/forms/icon-button/icon-button.class.js +1 -1
  203. package/dist/components/forms/icon-button/icon-button.styles.js +0 -16
  204. package/dist/components/forms/input/input.styles.js +0 -54
  205. package/dist/components/forms/input/number-input.styles.d.ts +4 -5
  206. package/dist/components/forms/input/number-input.styles.js +0 -11
  207. package/dist/components/forms/input/time-input-shared.d.ts +11 -0
  208. package/dist/components/forms/input/time-input-shared.js +1 -1
  209. package/dist/components/forms/input/time-input.class.d.ts +11 -2
  210. package/dist/components/forms/input/time-input.class.js +1 -1
  211. package/dist/components/forms/input/time-input.styles.js +0 -6
  212. package/dist/components/forms/locale-picker/locale-picker.class.js +2 -2
  213. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -26
  214. package/dist/components/forms/otp-input/otp-input.class.js +3 -3
  215. package/dist/components/forms/otp-input/otp-input.styles.js +0 -16
  216. package/dist/components/forms/phone-input/phone-input.class.d.ts +9 -1
  217. package/dist/components/forms/phone-input/phone-input.class.js +2 -2
  218. package/dist/components/forms/phone-input/phone-input.styles.js +0 -37
  219. package/dist/components/forms/radio/radio-button.styles.js +1 -30
  220. package/dist/components/forms/radio/radio-group.styles.js +0 -4
  221. package/dist/components/forms/radio/radio.styles.js +0 -44
  222. package/dist/components/forms/rubric-form/rubric-form.styles.js +0 -5
  223. package/dist/components/forms/select/select.class.js +1 -1
  224. package/dist/components/forms/select/select.styles.js +14 -114
  225. package/dist/components/forms/slider/slider.styles.js +0 -55
  226. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +0 -11
  227. package/dist/components/forms/swatch-picker/swatch-picker.class.js +2 -2
  228. package/dist/components/forms/swatch-picker/swatch-picker.styles.js +0 -77
  229. package/dist/components/forms/switch/switch.class.d.ts +3 -0
  230. package/dist/components/forms/switch/switch.class.js +1 -1
  231. package/dist/components/forms/switch/switch.styles.js +3 -38
  232. package/dist/components/forms/textarea/textarea.styles.js +0 -28
  233. package/dist/components/forms/time-range/time-range.styles.js +12 -84
  234. package/dist/components/forms/token-input/token-input.class.d.ts +23 -9
  235. package/dist/components/forms/token-input/token-input.class.js +1 -1
  236. package/dist/components/forms/token-input/token-input.styles.js +1 -54
  237. package/dist/components/layout/app-rail/app-rail-item.class.js +2 -2
  238. package/dist/components/layout/app-rail/app-rail-item.styles.js +0 -13
  239. package/dist/components/layout/app-rail/app-rail.class.d.ts +5 -0
  240. package/dist/components/layout/app-rail/app-rail.class.js +1 -1
  241. package/dist/components/layout/app-rail/app-rail.styles.js +0 -46
  242. package/dist/components/layout/button-group/button-group.styles.js +0 -6
  243. package/dist/components/layout/card/card.class.d.ts +12 -0
  244. package/dist/components/layout/card/card.styles.js +5 -13
  245. package/dist/components/layout/carousel/carousel.styles.js +0 -1
  246. package/dist/components/layout/command-palette/command-palette.class.d.ts +8 -0
  247. package/dist/components/layout/command-palette/command-palette.class.js +3 -1
  248. package/dist/components/layout/command-palette/command-palette.styles.js +1 -13
  249. package/dist/components/layout/control-group/control-group.styles.js +0 -7
  250. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +1 -1
  251. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +6 -25
  252. package/dist/components/layout/details/accordion.class.d.ts +13 -0
  253. package/dist/components/layout/details/accordion.class.js +1 -1
  254. package/dist/components/layout/details/details.class.js +1 -1
  255. package/dist/components/layout/details/details.styles.js +0 -12
  256. package/dist/components/layout/dock-panel/dock-panel.styles.js +0 -45
  257. package/dist/components/layout/drilldown-panel/drilldown-panel.class.d.ts +2 -0
  258. package/dist/components/layout/drilldown-panel/drilldown-panel.class.js +2 -2
  259. package/dist/components/layout/drilldown-panel/drilldown-panel.styles.js +0 -4
  260. package/dist/components/layout/filter-bar/filter-bar.class.js +1 -1
  261. package/dist/components/layout/filter-bar/filter-bar.styles.js +0 -9
  262. package/dist/components/layout/menu/menu-item.class.d.ts +5 -0
  263. package/dist/components/layout/menu/menu-item.class.js +1 -1
  264. package/dist/components/layout/menu/menu-item.styles.js +0 -49
  265. package/dist/components/layout/menu/menu-label.styles.js +0 -2
  266. package/dist/components/layout/menu/menu.styles.js +0 -18
  267. package/dist/components/layout/multi-split/multi-split.class.js +1 -1
  268. package/dist/components/layout/multi-split/multi-split.styles.js +8 -51
  269. package/dist/components/layout/page/page.class.d.ts +4 -0
  270. package/dist/components/layout/page/page.class.js +1 -1
  271. package/dist/components/layout/reorder-list/reorder-item.styles.js +0 -4
  272. package/dist/components/layout/responsive-panel/responsive-panel.styles.js +0 -27
  273. package/dist/components/layout/scroller/scroller.styles.js +0 -20
  274. package/dist/components/layout/segmented/segmented.class.d.ts +7 -1
  275. package/dist/components/layout/segmented/segmented.class.js +1 -1
  276. package/dist/components/layout/segmented/segmented.styles.js +69 -37
  277. package/dist/components/layout/split-panel/split-panel.styles.js +1 -7
  278. package/dist/components/layout/stepper/stepper.class.d.ts +8 -1
  279. package/dist/components/layout/stepper/stepper.class.js +1 -1
  280. package/dist/components/layout/stepper/stepper.styles.js +140 -41
  281. package/dist/components/layout/tab-group/tab-group.class.d.ts +4 -1
  282. package/dist/components/layout/tab-group/tab-group.styles.js +9 -75
  283. package/dist/components/layout/tab-group/tab.styles.js +0 -2
  284. package/dist/components/layout/virtual-list/virtual-list.class.d.ts +4 -4
  285. package/dist/components/layout/virtual-list/virtual-list.class.js +1 -1
  286. package/dist/components/layout/virtual-list/virtual-list.styles.js +0 -68
  287. package/dist/components/layout/widget/widget.class.d.ts +5 -1
  288. package/dist/components/layout/widget/widget.class.js +1 -1
  289. package/dist/components/layout/widget/widget.styles.js +97 -40
  290. package/dist/components/media/animated-image/animated-image.class.d.ts +3 -0
  291. package/dist/components/media/animated-image/animated-image.class.js +1 -1
  292. package/dist/components/media/animated-image/animated-image.styles.js +0 -28
  293. package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +1 -1
  294. package/dist/components/media/attachment-chip/attachment-chip.class.js +2 -2
  295. package/dist/components/media/attachment-chip/attachment-chip.styles.js +0 -31
  296. package/dist/components/media/attachment-trigger/attachment-trigger.class.d.ts +1 -1
  297. package/dist/components/media/attachment-trigger/attachment-trigger.class.js +4 -4
  298. package/dist/components/media/attachment-trigger/attachment-trigger.styles.js +0 -40
  299. package/dist/components/media/av-player/av-player.class.d.ts +5 -6
  300. package/dist/components/media/av-player/av-player.class.js +1 -1
  301. package/dist/components/media/av-player/av-player.styles.js +0 -45
  302. package/dist/components/media/avatar/avatar.styles.js +3 -16
  303. package/dist/components/media/file-icon/file-icon.class.d.ts +1 -2
  304. package/dist/components/media/file-icon/file-icon.class.js +1 -1
  305. package/dist/components/media/file-input/file-input.class.d.ts +12 -0
  306. package/dist/components/media/file-input/file-input.class.js +1 -1
  307. package/dist/components/media/file-input/file-input.styles.js +3 -24
  308. package/dist/components/media/flag/flag.class.d.ts +20 -0
  309. package/dist/components/media/flag/flag.class.js +4 -2
  310. package/dist/components/media/flag/flag.styles.js +7 -1
  311. package/dist/components/media/flag/language-map.d.ts +10 -0
  312. package/dist/components/media/flag/language-map.js +1 -1
  313. package/dist/components/media/image-comparer/image-comparer.styles.js +4 -33
  314. package/dist/components/media/image-viewer/image-viewer.class.js +0 -2
  315. package/dist/components/media/image-viewer/image-viewer.styles.js +7 -27
  316. package/dist/components/media/lightbox/lightbox.class.js +0 -2
  317. package/dist/components/media/lightbox/lightbox.styles.js +2 -21
  318. package/dist/components/media/map/map-loader.d.ts +19 -1
  319. package/dist/components/media/map/map-loader.js +1 -1
  320. package/dist/components/media/map/map.class.d.ts +141 -1
  321. package/dist/components/media/map/map.class.js +15 -3
  322. package/dist/components/media/map/map.styles.js +20 -17
  323. package/dist/components/media/media-card/media-card.class.d.ts +14 -3
  324. package/dist/components/media/media-card/media-card.class.js +1 -1
  325. package/dist/components/media/media-card/media-card.styles.js +2 -28
  326. package/dist/components/media/pan-zoom/pan-zoom.styles.js +0 -3
  327. package/dist/components/media/qr-code/qr-code.class.d.ts +3 -2
  328. package/dist/components/media/qr-code/qr-code.class.js +2 -2
  329. package/dist/components/media/qr-code/qr-code.styles.js +0 -3
  330. package/dist/components/media/sequence-playback/sequence-playback.class.d.ts +2 -0
  331. package/dist/components/media/sequence-playback/sequence-playback.class.js +2 -1
  332. package/dist/components/media/sequence-playback/sequence-playback.styles.js +0 -19
  333. package/dist/components/media/video/video.class.d.ts +23 -2
  334. package/dist/components/media/video/video.class.js +3 -3
  335. package/dist/components/media/video/video.styles.js +4 -2
  336. package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -2
  337. package/dist/components/media/zoomable-frame/zoomable-frame.class.js +2 -2
  338. package/dist/components/media/zoomable-frame/zoomable-frame.styles.js +0 -5
  339. package/dist/components/overlays/alert/alert.styles.js +4 -2
  340. package/dist/components/overlays/badge/badge.styles.js +4 -48
  341. package/dist/components/overlays/badge/tag.styles.js +0 -14
  342. package/dist/components/overlays/callout/callout.styles.js +2 -13
  343. package/dist/components/overlays/chip/chip-group.styles.js +0 -18
  344. package/dist/components/overlays/chip/chip.styles.js +6 -69
  345. package/dist/components/overlays/dialog/confirm.d.ts +1 -4
  346. package/dist/components/overlays/dialog/confirm.js +1 -1
  347. package/dist/components/overlays/dialog/dialog.class.d.ts +12 -9
  348. package/dist/components/overlays/dialog/dialog.class.js +1 -1
  349. package/dist/components/overlays/dialog/dialog.styles.js +0 -43
  350. package/dist/components/overlays/drawer/drawer.class.d.ts +2 -2
  351. package/dist/components/overlays/drawer/drawer.styles.js +0 -9
  352. package/dist/components/overlays/empty/empty.styles.js +0 -12
  353. package/dist/components/overlays/kbd/kbd.class.js +1 -1
  354. package/dist/components/overlays/kbd/kbd.styles.js +0 -8
  355. package/dist/components/overlays/overlay/dropdown.class.d.ts +1 -6
  356. package/dist/components/overlays/overlay/dropdown.class.js +2 -2
  357. package/dist/components/overlays/overlay/overlay.styles.js +0 -28
  358. package/dist/components/overlays/overlay/popover.class.d.ts +9 -1
  359. package/dist/components/overlays/overlay/popover.class.js +2 -2
  360. package/dist/components/overlays/overlay/tooltip.class.d.ts +10 -0
  361. package/dist/components/overlays/overlay/tooltip.class.js +2 -2
  362. package/dist/components/overlays/popup/popup.class.d.ts +1 -0
  363. package/dist/components/overlays/popup/popup.class.js +2 -2
  364. package/dist/components/overlays/popup/popup.styles.js +0 -15
  365. package/dist/components/overlays/progress/progress-ring.class.d.ts +9 -1
  366. package/dist/components/overlays/progress/progress-ring.class.js +3 -3
  367. package/dist/components/overlays/progress/progress.styles.js +0 -21
  368. package/dist/components/overlays/rating/rating.styles.js +0 -25
  369. package/dist/components/overlays/skeleton/skeleton.styles.js +0 -4
  370. package/dist/components/overlays/spinner/spinner.styles.js +2 -5
  371. package/dist/components/overlays/toast/toast-item.styles.js +3 -45
  372. package/dist/components/retrieval/chunk-inspector/chunk-inspector.styles.js +0 -35
  373. package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +2 -2
  374. package/dist/components/retrieval/citation-badge/citation-badge.class.js +3 -3
  375. package/dist/components/retrieval/citation-badge/citation-badge.styles.js +0 -20
  376. package/dist/components/retrieval/claim-evidence/claim-evidence.class.js +1 -1
  377. package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js +0 -8
  378. package/dist/components/retrieval/community-card/community-card.class.d.ts +1 -0
  379. package/dist/components/retrieval/community-card/community-card.styles.js +0 -6
  380. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +8 -12
  381. package/dist/components/retrieval/entity-card/entity-card.class.d.ts +4 -3
  382. package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
  383. package/dist/components/retrieval/entity-card/entity-card.styles.js +0 -12
  384. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +10 -4
  385. package/dist/components/retrieval/entity-chip/entity-chip.class.js +3 -3
  386. package/dist/components/retrieval/entity-chip/entity-chip.styles.js +6 -9
  387. package/dist/components/retrieval/entity-dossier/entity-dossier.class.d.ts +19 -5
  388. package/dist/components/retrieval/entity-dossier/entity-dossier.class.js +1 -1
  389. package/dist/components/retrieval/graph/graph.class.d.ts +5 -0
  390. package/dist/components/retrieval/graph/graph.class.js +1 -1
  391. package/dist/components/retrieval/graph/graph.styles.js +0 -30
  392. package/dist/components/retrieval/graph-legend/graph-legend.styles.js +0 -3
  393. package/dist/components/retrieval/grounding-summary/grounding-summary.class.js +2 -2
  394. package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.js +0 -25
  395. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.d.ts +2 -0
  396. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +0 -7
  397. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +20 -6
  398. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +2 -2
  399. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +6 -11
  400. package/dist/components/retrieval/memory-panel/memory-panel.class.js +1 -1
  401. package/dist/components/retrieval/mind-map/mind-map.class.d.ts +5 -3
  402. package/dist/components/retrieval/mind-map/mind-map.class.js +1 -1
  403. package/dist/components/retrieval/mind-map/mind-map.styles.js +0 -2
  404. package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts +3 -2
  405. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
  406. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +0 -30
  407. package/dist/components/retrieval/node-palette/node-palette.styles.js +0 -11
  408. package/dist/components/retrieval/path-strip/path-strip.styles.js +0 -10
  409. package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +12 -3
  410. package/dist/components/retrieval/provenance-panel/provenance-panel.class.js +1 -1
  411. package/dist/components/retrieval/provenance-panel/provenance-panel.styles.js +0 -2
  412. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +3 -2
  413. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +2 -2
  414. package/dist/components/retrieval/retrieval-results/retrieval-results.styles.js +0 -28
  415. package/dist/components/retrieval/retrieval-search/retrieval-search.styles.js +0 -4
  416. package/dist/components/retrieval/retrieval-trace/retrieval-trace.class.js +1 -1
  417. package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js +0 -2
  418. package/dist/components/retrieval/source-card/source-card.styles.js +0 -13
  419. package/dist/components/retrieval/source-list/source-list.styles.js +0 -7
  420. package/dist/components/retrieval/source-picker/source-picker.class.js +1 -1
  421. package/dist/components/retrieval/source-picker/source-picker.styles.js +0 -7
  422. package/dist/components/utility/copy-button/copy-button.styles.js +0 -10
  423. package/dist/components/utility/diff-view/diff-view.styles.js +0 -14
  424. package/dist/components/utility/export-button/export-button.styles.js +0 -22
  425. package/dist/components/utility/icon/icon.styles.js +0 -6
  426. package/dist/components/utility/json-viewer/json-viewer.styles.js +2 -48
  427. package/dist/components/utility/known-date/known-date.class.d.ts +7 -3
  428. package/dist/components/utility/known-date/known-date.styles.js +10 -51
  429. package/dist/components/utility/live-region/live-region.styles.js +0 -4
  430. package/dist/components/utility/mention-popover/mention-popover.styles.js +0 -25
  431. package/dist/components/utility/poll-status/poll-status.styles.js +0 -4
  432. package/dist/components/utility/random-content/random-content.class.d.ts +22 -0
  433. package/dist/components/utility/random-content/random-content.class.js +3 -2
  434. package/dist/components/utility/random-content/random-content.styles.js +6 -13
  435. package/dist/components/utility/tour/tour.class.d.ts +4 -2
  436. package/dist/components/utility/tour/tour.class.js +3 -3
  437. package/dist/components/utility/tour/tour.styles.js +0 -13
  438. package/dist/components/utility/visually-hidden/visually-hidden.styles.js +0 -5
  439. package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
  440. package/dist/components/viewers/archive-viewer/archive-viewer.styles.d.ts +2 -2
  441. package/dist/components/viewers/archive-viewer/archive-viewer.styles.js +0 -10
  442. package/dist/components/viewers/contact-viewer/contact-viewer.class.js +1 -1
  443. package/dist/components/viewers/csv-viewer/csv-viewer.class.js +1 -1
  444. package/dist/components/viewers/csv-viewer/csv-viewer.styles.js +0 -19
  445. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +1 -1
  446. package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +0 -15
  447. package/dist/components/viewers/document-compare/document-compare.class.js +1 -1
  448. package/dist/components/viewers/document-compare/document-compare.styles.js +0 -3
  449. package/dist/components/viewers/document-preview/document-preview.styles.js +0 -25
  450. package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +2 -1
  451. package/dist/components/viewers/document-viewer/document-viewer.class.js +1 -1
  452. package/dist/components/viewers/document-viewer/document-viewer.styles.js +0 -5
  453. package/dist/components/viewers/docx-viewer/docx-viewer.styles.js +0 -17
  454. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +1 -1
  455. package/dist/components/viewers/ebook-viewer/ebook-viewer.styles.js +0 -4
  456. package/dist/components/viewers/email-viewer/email-viewer.styles.js +0 -7
  457. package/dist/components/viewers/geojson-view/geojson-view.styles.js +0 -5
  458. package/dist/components/viewers/highlight-layer/highlight-layer.styles.js +0 -3
  459. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +1 -1
  460. package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +0 -38
  461. package/dist/components/viewers/page-rail/page-rail.class.js +1 -1
  462. package/dist/components/viewers/page-rail/page-rail.styles.js +0 -13
  463. package/dist/components/viewers/pdf-viewer/pdf-loader.d.ts +13 -2
  464. package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
  465. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +32 -2
  466. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +4 -4
  467. package/dist/components/viewers/pdf-viewer/pdf-viewer.styles.js +1 -27
  468. package/dist/components/viewers/pptx-viewer/pptx-viewer.styles.js +0 -3
  469. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +1 -1
  470. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.styles.js +0 -14
  471. package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +0 -7
  472. package/dist/components/viewers/xml-viewer/xml-viewer.styles.js +2 -24
  473. package/dist/custom-elements-jsx.d.ts +56 -37
  474. package/dist/events.d.ts +43 -33
  475. package/dist/internal/agent-status-variants.d.ts +18 -0
  476. package/dist/internal/agent-status-variants.js +1 -0
  477. package/dist/internal/announcer.d.ts +8 -3
  478. package/dist/internal/announcer.js +1 -1
  479. package/dist/internal/autoloader-manifest.js +1 -1
  480. package/dist/internal/canvas-color.d.ts +16 -0
  481. package/dist/internal/canvas-color.js +1 -1
  482. package/dist/internal/catalog-picker.d.ts +0 -1
  483. package/dist/internal/catalog-picker.js +1 -1
  484. package/dist/internal/default-strings.generated.d.ts +1 -0
  485. package/dist/internal/default-strings.generated.js +1 -1
  486. package/dist/internal/dev-mode-attribute-warning.d.ts +30 -0
  487. package/dist/internal/dev-mode-attribute-warning.js +1 -0
  488. package/dist/internal/localization-runtime.js +1 -1
  489. package/dist/internal/localization-types.d.ts +1 -1
  490. package/dist/internal/localization.js +1 -1
  491. package/dist/internal/lyra-element.d.ts +13 -0
  492. package/dist/internal/lyra-element.js +1 -1
  493. package/dist/internal/media-controller.js +1 -1
  494. package/dist/internal/package-metadata.d.ts +1 -1
  495. package/dist/internal/package-metadata.js +1 -1
  496. package/dist/internal/scroll-overflow.d.ts +35 -13
  497. package/dist/internal/scroll-overflow.js +1 -1
  498. package/dist/internal/sizes.styles.js +0 -2
  499. package/dist/internal/specialist-tokens.styles.js +6 -11
  500. package/dist/internal/text-highlights.d.ts +4 -1
  501. package/dist/internal/text-highlights.js +1 -1
  502. package/dist/internal/tokens/palette.styles.js +0 -15
  503. package/dist/internal/tokens.styles.js +19 -113
  504. package/dist/lyra.d.ts +8 -5
  505. package/dist/styles/reservations.css +82 -0
  506. package/dist/svelte.d.ts +56 -37
  507. package/dist/translations/ar.js +1 -1
  508. package/dist/translations/de.js +1 -1
  509. package/dist/translations/es.js +1 -1
  510. package/dist/translations/fa.js +1 -1
  511. package/dist/translations/fr.js +1 -1
  512. package/dist/translations/he.js +1 -1
  513. package/dist/translations/ja.js +1 -1
  514. package/dist/translations/pt-BR.js +1 -1
  515. package/dist/translations/ru.js +1 -1
  516. package/dist/translations/zh-CN.js +1 -1
  517. package/dist/vue.d.ts +56 -37
  518. package/llms/components/lr-accordion-item.md +12 -3
  519. package/llms/components/lr-accordion.md +11 -2
  520. package/llms/components/lr-agent-eval-dashboard.md +1 -1
  521. package/llms/components/lr-agent-trace.md +3 -1
  522. package/llms/components/lr-agent-workspace.md +20 -0
  523. package/llms/components/lr-artifact-panel.md +10 -4
  524. package/llms/components/lr-attachment-chip.md +7 -4
  525. package/llms/components/lr-attachment-trigger.md +9 -6
  526. package/llms/components/lr-av-player.md +3 -1
  527. package/llms/components/lr-avatar.md +6 -6
  528. package/llms/components/lr-bar-chart.md +4 -3
  529. package/llms/components/lr-box-plot.md +1 -1
  530. package/llms/components/lr-browser-frame.md +7 -3
  531. package/llms/components/lr-bubble-chart.md +4 -3
  532. package/llms/components/lr-calendar.md +9 -2
  533. package/llms/components/lr-card.md +24 -0
  534. package/llms/components/lr-chart.md +32 -8
  535. package/llms/components/lr-chat-viewport.md +7 -2
  536. package/llms/components/lr-checkbox-group.md +13 -5
  537. package/llms/components/lr-checkbox.md +5 -2
  538. package/llms/components/lr-checkpoint.md +6 -2
  539. package/llms/components/lr-combobox.md +5 -2
  540. package/llms/components/lr-command-palette.md +4 -1
  541. package/llms/components/lr-confirm-bar.md +7 -3
  542. package/llms/components/lr-context-meter.md +12 -11
  543. package/llms/components/lr-conversation-item.md +7 -4
  544. package/llms/components/lr-details.md +11 -2
  545. package/llms/components/lr-dialog.md +15 -10
  546. package/llms/components/lr-dock-panel.md +7 -10
  547. package/llms/components/lr-document-preview.md +6 -1
  548. package/llms/components/lr-document-viewer.md +3 -2
  549. package/llms/components/lr-doughnut-chart.md +4 -3
  550. package/llms/components/lr-drawer.md +3 -3
  551. package/llms/components/lr-entity-card.md +3 -3
  552. package/llms/components/lr-entity-chip.md +1 -1
  553. package/llms/components/lr-entity-dossier.md +4 -1
  554. package/llms/components/lr-file-input.md +2 -2
  555. package/llms/components/lr-flag.md +20 -5
  556. package/llms/components/lr-heatmap.md +29 -1
  557. package/llms/components/lr-histogram.md +3 -1
  558. package/llms/components/lr-icon.md +1 -1
  559. package/llms/components/lr-json-schema-viewer.md +2 -1
  560. package/llms/components/lr-knowledge-graph-explorer.md +8 -3
  561. package/llms/components/lr-known-date.md +4 -2
  562. package/llms/components/lr-line-chart.md +4 -3
  563. package/llms/components/lr-lite-chart.md +16 -6
  564. package/llms/components/lr-map.md +72 -8
  565. package/llms/components/lr-markdown-core.md +3 -2
  566. package/llms/components/lr-media-card.md +28 -12
  567. package/llms/components/lr-message-parts.md +2 -1
  568. package/llms/components/lr-model-select.md +9 -10
  569. package/llms/components/lr-model-settings-panel.md +9 -9
  570. package/llms/components/lr-neighbor-list.md +1 -1
  571. package/llms/components/lr-notebook-viewer.md +6 -3
  572. package/llms/components/lr-option.md +5 -2
  573. package/llms/components/lr-pdf-viewer.md +62 -2
  574. package/llms/components/lr-pie-chart.md +4 -3
  575. package/llms/components/lr-polar-area-chart.md +4 -3
  576. package/llms/components/lr-popover.md +5 -0
  577. package/llms/components/lr-progress-ring.md +8 -1
  578. package/llms/components/lr-prompt-studio.md +1 -1
  579. package/llms/components/lr-provenance-panel.md +4 -2
  580. package/llms/components/lr-qr-code.md +1 -1
  581. package/llms/components/lr-radar-chart.md +4 -3
  582. package/llms/components/lr-rag-eval-dashboard.md +2 -2
  583. package/llms/components/lr-random-content.md +13 -0
  584. package/llms/components/lr-reorder-item.md +6 -1
  585. package/llms/components/lr-reorder-list.md +6 -1
  586. package/llms/components/lr-responsive-panel.md +11 -7
  587. package/llms/components/lr-scatter-chart.md +4 -3
  588. package/llms/components/lr-sequence-strip.md +16 -2
  589. package/llms/components/lr-slider.md +12 -5
  590. package/llms/components/lr-sparkline.md +1 -1
  591. package/llms/components/lr-suggestion-chips.md +7 -2
  592. package/llms/components/lr-swatch-picker.md +5 -5
  593. package/llms/components/lr-switch.md +5 -2
  594. package/llms/components/lr-table.md +30 -4
  595. package/llms/components/lr-terminal.md +3 -1
  596. package/llms/components/lr-thread-list.md +8 -8
  597. package/llms/components/lr-time-input.md +6 -1
  598. package/llms/components/lr-timeline-item.md +24 -0
  599. package/llms/components/lr-timeline.md +25 -1
  600. package/llms/components/lr-token-input.md +7 -2
  601. package/llms/components/lr-tool-approval-dialog.md +7 -8
  602. package/llms/components/lr-tool-call-chip.md +5 -1
  603. package/llms/components/lr-tool-param-form.md +14 -12
  604. package/llms/components/lr-tool-result-dialog.md +11 -9
  605. package/llms/components/lr-tool-result-view.md +7 -6
  606. package/llms/components/lr-tool-select-dialog.md +18 -16
  607. package/llms/components/lr-trace-tree.md +3 -1
  608. package/llms/components/lr-usage-badge.md +4 -1
  609. package/llms/components/lr-video-playlist.md +1 -1
  610. package/llms/components/lr-virtual-list.md +22 -14
  611. package/llms/components/lr-voice-picker.md +8 -5
  612. package/llms/components/lr-widget-renderer.md +3 -3
  613. package/llms/components/lr-widget.md +1 -1
  614. package/llms/components/lr-word-cloud.md +6 -2
  615. package/llms/index.md +1 -1
  616. package/llms/peers.md +13 -3
  617. package/llms/shared.md +83 -2
  618. package/llms-full.txt +1159 -288
  619. package/package.json +19 -7
  620. package/vscode-css-data.json +37 -2
  621. package/vscode-html-data.json +402 -45
  622. package/web-types.json +300 -56
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,query}from"lit/decorators.js";import{repeat}from"lit/directives/repeat.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{chevronIcon}from"../../../internal/icons.js";import{getDateTimeFormat,getNumberFormat,getPluralRules}from"../../../internal/intl-cache.js";import{finiteCount}from"../../../internal/numbers.js";import{styles}from"./activity-feed.styles.js";import{literalSetConverter,presenceTrueDefaultBooleanConverter as trueDefaultBooleanConverter}from"../../../internal/converters.js";import{firstByIdentity}from"../collection-identity.js";import{LYRA_DEFAULT_activityFeedCompletedStep,LYRA_DEFAULT_activityFeedCompletedSteps,LYRA_DEFAULT_activityFeedLabel,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_progress,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const ACTIVITY_FEED_MODE=literalSetConverter(["live","post-hoc"],"live"),NEAR_BOTTOM_PX=48;function variantDotPart(variant){return variant==="brand"?"variant-dot variant-dot-brand":variant==="success"?"variant-dot variant-dot-success":variant==="warning"?"variant-dot variant-dot-warning":variant==="danger"?"variant-dot variant-dot-danger":"variant-dot variant-dot-neutral"}function defaultFormatTimestamp(date,locale){return getDateTimeFormat(locale,{hour:"numeric",minute:"2-digit"}).format(date)}class LyraActivityFeed extends LyraElement{constructor(){super(...arguments),this.entries=[],this._mode="live",this.follow=!0,this.expanded=!1,this.showTimestamps=!1,this.virtualizeAt=199,this.headerId=nextId("activity-feed-header"),this.bodyId=nextId("activity-feed-body"),this.isMounting=!0,this.anchoringVirtualTail=!1,this.ownerRealmGeneration=0,this.virtualAnchorRequest=0,this.toggle=()=>{this.expanded=!this.expanded,this.emit("lr-toggle",{expanded:this.expanded})},this.onBodyScroll=e=>{if(this.isVirtualized||this.mode!=="live")return;const body=e.currentTarget,nearBottom=body.scrollHeight-body.scrollTop-body.clientHeight<=NEAR_BOTTOM_PX;this.setFollowFromUser(nearBottom)},this.onVirtualListRangeChanged=e=>{if(e.stopPropagation(),this.mode!=="live"||this.anchoringVirtualTail)return;const entries=this.normalizedEntries,atBottom=entries.length>0&&e.detail.end>=entries.length-1;this.setFollowFromUser(atBottom)}}static{this.defaultStrings={...super.defaultStrings,activityFeedCompletedStep:LYRA_DEFAULT_activityFeedCompletedStep,activityFeedCompletedSteps:LYRA_DEFAULT_activityFeedCompletedSteps,activityFeedLabel:LYRA_DEFAULT_activityFeedLabel,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,progress:LYRA_DEFAULT_progress,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["entries"])}static{this.styles=[LyraElement.styles,styles]}get mode(){return this._mode}set mode(next){const normalized=ACTIVITY_FEED_MODE.normalizeReflected(this,"mode",next),old=this._mode;old!==normalized&&(this._mode=normalized,this.requestUpdate("mode",old))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.shouldFollowLiveTail&&this.scrollToLatest()}disconnectedCallback(){this.resetOwnerRealmWork(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.resetOwnerRealmWork(),this.isConnected&&this.shouldFollowLiveTail&&this.scrollToLatest()}get effectiveVirtualizeAt(){return finiteCount(this.virtualizeAt,199)}get normalizedEntries(){return firstByIdentity(Array.isArray(this.entries)?this.entries:[],entry=>entry.id)}get isVirtualized(){return this.normalizedEntries.length>this.effectiveVirtualizeAt}get shouldFollowLiveTail(){return this.expanded&&this.mode==="live"&&this.follow}cancelScrollFrame(){this.scrollRafId!==void 0&&this.scrollRafOwner?.cancelAnimationFrame(this.scrollRafId),this.scrollRafId=void 0,this.scrollRafOwner=void 0,this.scrollRafDocument=void 0}cancelVirtualAnchorReleaseFrame(){this.virtualAnchorReleaseRafId!==void 0&&this.virtualAnchorReleaseRafOwner?.cancelAnimationFrame(this.virtualAnchorReleaseRafId),this.virtualAnchorReleaseRafId=void 0,this.virtualAnchorReleaseRafOwner=void 0,this.virtualAnchorReleaseRafDocument=void 0}resetOwnerRealmWork(){this.ownerRealmGeneration+=1,this.virtualAnchorRequest+=1,this.cancelScrollFrame(),this.cancelVirtualAnchorReleaseFrame(),this.anchoringVirtualTail=!1}willUpdate(changed){super.willUpdate(changed),(changed.has("expanded")||changed.has("mode"))&&this.expanded&&this.mode==="live"&&(this.follow=!0)}updated(changed){super.updated(changed);const wasMounting=this.isMounting;if(this.isMounting=!1,!wasMounting&&changed.has("mode")&&changed.get("mode")==="live"&&this.mode==="post-hoc"){const region=this.liveRegion;region&&(region.mode="polite",region.announce(this.completedStepsSummary(),{force:!0}))}const justAnchored=(changed.has("expanded")||changed.has("mode"))&&this.expanded&&this.mode==="live",followingChangedRenderPath=changed.has("virtualizeAt")&&this.expanded&&this.mode==="live"&&this.follow;(justAnchored||followingChangedRenderPath||changed.has("entries")&&this.expanded&&this.mode==="live"&&this.follow)&&this.scrollToLatest()}scrollToLatest(){const ownerDocument=this.ownerDocument,ownerWindow=ownerDocument.defaultView;if(!ownerWindow||!this.isConnected||!this.shouldFollowLiveTail)return;const generation=this.ownerRealmGeneration;if(this.isVirtualized){this.cancelScrollFrame(),this.cancelVirtualAnchorReleaseFrame(),this.anchoringVirtualTail=!0;const request=++this.virtualAnchorRequest;this.updateComplete.then(()=>{const list=this.virtualListEl;if(request!==this.virtualAnchorRequest||generation!==this.ownerRealmGeneration||this.ownerDocument!==ownerDocument||!this.isConnected)return;if(!list||!this.isVirtualized||!this.shouldFollowLiveTail){this.anchoringVirtualTail=!1;return}list.scrollToIndex(this.normalizedEntries.length-1,{align:"end",behavior:"auto"});const firstHandle=ownerWindow.requestAnimationFrame(()=>{if(this.virtualAnchorReleaseRafId!==firstHandle||this.virtualAnchorReleaseRafOwner!==ownerWindow||this.virtualAnchorReleaseRafDocument!==ownerDocument||request!==this.virtualAnchorRequest||generation!==this.ownerRealmGeneration||!this.isConnected||this.ownerDocument!==ownerDocument)return;if(this.virtualAnchorReleaseRafId=void 0,this.virtualAnchorReleaseRafOwner=void 0,this.virtualAnchorReleaseRafDocument=void 0,!this.anchoringVirtualTail||!this.isVirtualized||!this.shouldFollowLiveTail){this.anchoringVirtualTail=!1;return}const secondHandle=ownerWindow.requestAnimationFrame(()=>{this.virtualAnchorReleaseRafId!==secondHandle||this.virtualAnchorReleaseRafOwner!==ownerWindow||this.virtualAnchorReleaseRafDocument!==ownerDocument||request!==this.virtualAnchorRequest||generation!==this.ownerRealmGeneration||!this.isConnected||this.ownerDocument!==ownerDocument||(this.virtualAnchorReleaseRafId=void 0,this.virtualAnchorReleaseRafOwner=void 0,this.virtualAnchorReleaseRafDocument=void 0,this.anchoringVirtualTail=!1)});this.virtualAnchorReleaseRafId=secondHandle,this.virtualAnchorReleaseRafOwner=ownerWindow,this.virtualAnchorReleaseRafDocument=ownerDocument});this.virtualAnchorReleaseRafId=firstHandle,this.virtualAnchorReleaseRafOwner=ownerWindow,this.virtualAnchorReleaseRafDocument=ownerDocument});return}if(this.virtualAnchorRequest+=1,this.cancelVirtualAnchorReleaseFrame(),this.anchoringVirtualTail=!1,this.scrollRafId!==void 0)return;const handle=ownerWindow.requestAnimationFrame(()=>{if(this.scrollRafId!==handle||this.scrollRafOwner!==ownerWindow||this.scrollRafDocument!==ownerDocument||generation!==this.ownerRealmGeneration||!this.isConnected||this.ownerDocument!==ownerDocument||(this.scrollRafId=void 0,this.scrollRafOwner=void 0,this.scrollRafDocument=void 0,!this.shouldFollowLiveTail||this.isVirtualized))return;const body=this.renderRoot.querySelector('[part="body"]');body&&(body.scrollTop=body.scrollHeight)});this.scrollRafId=handle,this.scrollRafOwner=ownerWindow,this.scrollRafDocument=ownerDocument}completedStepsSummary(){const count=this.normalizedEntries.length,key=getPluralRules(this.effectiveLocale).select(count)==="one"?"activityFeedCompletedStep":"activityFeedCompletedSteps";return this.localize(key,void 0,{count:getNumberFormat(this.effectiveLocale).format(count)})}setFollowFromUser(following){following!==this.follow&&(this.follow=following,this.emit("lr-follow-change",{following}))}normalizedTimestamp(value){if(value===void 0)return;const date=value instanceof Date?value:new Date(value);return Number.isNaN(date.getTime())?void 0:date}entryTemplate(entry,ownRole){const ts=this.normalizedTimestamp(entry.timestamp),formatter=this.formatTimestamp??(date=>defaultFormatTimestamp(date,this.effectiveLocale)),variant=entry.variant??"neutral",dotPart=variantDotPart(variant);return html`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,query}from"lit/decorators.js";import{repeat}from"lit/directives/repeat.js";import{LyraElement}from"../../../internal/lyra-element.js";import{nextId}from"../../../internal/a11y.js";import{chevronIcon}from"../../../internal/icons.js";import{getDateTimeFormat,getNumberFormat,getPluralRules}from"../../../internal/intl-cache.js";import{finiteCount}from"../../../internal/numbers.js";import{styles}from"./activity-feed.styles.js";import{literalSetConverter,presenceTrueDefaultBooleanConverter as trueDefaultBooleanConverter}from"../../../internal/converters.js";import{firstByIdentity}from"../collection-identity.js";import{LYRA_DEFAULT_activityFeedCompletedStep,LYRA_DEFAULT_activityFeedCompletedSteps,LYRA_DEFAULT_activityFeedLabel,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_progress,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const ACTIVITY_FEED_MODE=literalSetConverter(["live","post-hoc"],"live"),NEAR_BOTTOM_PX=48;function variantDotPart(variant){return variant==="brand"?"variant-dot variant-dot-brand":variant==="success"?"variant-dot variant-dot-success":variant==="warning"?"variant-dot variant-dot-warning":variant==="danger"?"variant-dot variant-dot-danger":"variant-dot variant-dot-neutral"}function defaultFormatTimestamp(date,locale){return getDateTimeFormat(locale,{hour:"numeric",minute:"2-digit"}).format(date)}class LyraActivityFeed extends LyraElement{constructor(){super(...arguments),this.entries=[],this._mode="live",this.follow=!0,this.expanded=!1,this.showTimestamps=!1,this.virtualizeAt=199,this.headerId=nextId("activity-feed-header"),this.bodyId=nextId("activity-feed-body"),this.isMounting=!0,this.anchoringVirtualTail=!1,this.ownerRealmGeneration=0,this.virtualAnchorRequest=0,this.toggle=()=>{this.expanded=!this.expanded,this.emit("lr-toggle",{expanded:this.expanded})},this.onBodyScroll=e=>{if(this.isVirtualized||this.mode!=="live")return;const body=e.currentTarget,nearBottom=body.scrollHeight-body.scrollTop-body.clientHeight<=NEAR_BOTTOM_PX;this.setFollowFromUser(nearBottom)},this.onVirtualListRangeChanged=e=>{if(e.stopPropagation(),this.mode!=="live"||this.anchoringVirtualTail)return;const entries=this.normalizedEntries,atBottom=entries.length>0&&e.detail.end>=entries.length-1;this.setFollowFromUser(atBottom)}}static{this.defaultStrings={...super.defaultStrings,activityFeedCompletedStep:LYRA_DEFAULT_activityFeedCompletedStep,activityFeedCompletedSteps:LYRA_DEFAULT_activityFeedCompletedSteps,activityFeedLabel:LYRA_DEFAULT_activityFeedLabel,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,progress:LYRA_DEFAULT_progress,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["entries"])}static{this.styles=[LyraElement.styles,styles]}get mode(){return this._mode}set mode(next){const normalized=ACTIVITY_FEED_MODE.normalizeReflected(this,"mode",next),old=this._mode;old!==normalized&&(this._mode=normalized,this.requestUpdate("mode",old))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.shouldFollowLiveTail&&this.scrollToLatest()}disconnectedCallback(){this.resetOwnerRealmWork(),super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.resetOwnerRealmWork(),this.isConnected&&this.shouldFollowLiveTail&&this.scrollToLatest()}get effectiveVirtualizeAt(){return finiteCount(this.virtualizeAt,199)}get normalizedEntries(){return firstByIdentity(Array.isArray(this.entries)?this.entries:[],entry=>entry.id)}get isVirtualized(){return this.normalizedEntries.length>this.effectiveVirtualizeAt}get shouldFollowLiveTail(){return this.expanded&&this.mode==="live"&&this.follow}cancelScrollFrame(){this.scrollRafId!==void 0&&this.scrollRafOwner?.cancelAnimationFrame(this.scrollRafId),this.scrollRafId=void 0,this.scrollRafOwner=void 0,this.scrollRafDocument=void 0}cancelVirtualAnchorReleaseFrame(){this.virtualAnchorReleaseRafId!==void 0&&this.virtualAnchorReleaseRafOwner?.cancelAnimationFrame(this.virtualAnchorReleaseRafId),this.virtualAnchorReleaseRafId=void 0,this.virtualAnchorReleaseRafOwner=void 0,this.virtualAnchorReleaseRafDocument=void 0}resetOwnerRealmWork(){this.ownerRealmGeneration+=1,this.virtualAnchorRequest+=1,this.cancelScrollFrame(),this.cancelVirtualAnchorReleaseFrame(),this.anchoringVirtualTail=!1}willUpdate(changed){super.willUpdate(changed),(changed.has("expanded")||changed.has("mode"))&&this.expanded&&this.mode==="live"&&(this.follow=!0)}updated(changed){super.updated(changed);const wasMounting=this.isMounting;if(this.isMounting=!1,!wasMounting&&changed.has("mode")&&changed.get("mode")==="live"&&this.mode==="post-hoc"){const region=this.liveRegion;region&&(region.mode="polite",region.announce(this.completedStepsSummary(),{force:!0}))}const justAnchored=(changed.has("expanded")||changed.has("mode"))&&this.expanded&&this.mode==="live",followingChangedRenderPath=changed.has("virtualizeAt")&&this.expanded&&this.mode==="live"&&this.follow;(justAnchored||followingChangedRenderPath||changed.has("entries")&&this.expanded&&this.mode==="live"&&this.follow)&&this.scrollToLatest()}scrollToLatest(){const ownerDocument=this.ownerDocument,ownerWindow=ownerDocument.defaultView;if(!ownerWindow||!this.isConnected||!this.shouldFollowLiveTail)return;const generation=this.ownerRealmGeneration;if(this.isVirtualized){this.cancelScrollFrame(),this.cancelVirtualAnchorReleaseFrame(),this.anchoringVirtualTail=!0;const request=++this.virtualAnchorRequest;this.updateComplete.then(()=>{const list=this.virtualListEl;if(request!==this.virtualAnchorRequest||generation!==this.ownerRealmGeneration||this.ownerDocument!==ownerDocument||!this.isConnected)return;if(!list||!this.isVirtualized||!this.shouldFollowLiveTail){this.anchoringVirtualTail=!1;return}list.scrollToIndex(this.normalizedEntries.length-1,{align:"end",behavior:"auto"});const firstHandle=ownerWindow.requestAnimationFrame(()=>{if(this.virtualAnchorReleaseRafId!==firstHandle||this.virtualAnchorReleaseRafOwner!==ownerWindow||this.virtualAnchorReleaseRafDocument!==ownerDocument||request!==this.virtualAnchorRequest||generation!==this.ownerRealmGeneration||!this.isConnected||this.ownerDocument!==ownerDocument)return;if(this.virtualAnchorReleaseRafId=void 0,this.virtualAnchorReleaseRafOwner=void 0,this.virtualAnchorReleaseRafDocument=void 0,!this.anchoringVirtualTail||!this.isVirtualized||!this.shouldFollowLiveTail){this.anchoringVirtualTail=!1;return}const secondHandle=ownerWindow.requestAnimationFrame(()=>{this.virtualAnchorReleaseRafId!==secondHandle||this.virtualAnchorReleaseRafOwner!==ownerWindow||this.virtualAnchorReleaseRafDocument!==ownerDocument||request!==this.virtualAnchorRequest||generation!==this.ownerRealmGeneration||!this.isConnected||this.ownerDocument!==ownerDocument||(this.virtualAnchorReleaseRafId=void 0,this.virtualAnchorReleaseRafOwner=void 0,this.virtualAnchorReleaseRafDocument=void 0,this.anchoringVirtualTail=!1)});this.virtualAnchorReleaseRafId=secondHandle,this.virtualAnchorReleaseRafOwner=ownerWindow,this.virtualAnchorReleaseRafDocument=ownerDocument});this.virtualAnchorReleaseRafId=firstHandle,this.virtualAnchorReleaseRafOwner=ownerWindow,this.virtualAnchorReleaseRafDocument=ownerDocument});return}if(this.virtualAnchorRequest+=1,this.cancelVirtualAnchorReleaseFrame(),this.anchoringVirtualTail=!1,this.scrollRafId!==void 0)return;const handle=ownerWindow.requestAnimationFrame(()=>{if(this.scrollRafId!==handle||this.scrollRafOwner!==ownerWindow||this.scrollRafDocument!==ownerDocument||generation!==this.ownerRealmGeneration||!this.isConnected||this.ownerDocument!==ownerDocument||(this.scrollRafId=void 0,this.scrollRafOwner=void 0,this.scrollRafDocument=void 0,!this.shouldFollowLiveTail||this.isVirtualized))return;const body=this.renderRoot.querySelector('[part="body"]');body&&(body.scrollTop=body.scrollHeight)});this.scrollRafId=handle,this.scrollRafOwner=ownerWindow,this.scrollRafDocument=ownerDocument}completedStepsSummary(){const count=this.normalizedEntries.length,key=getPluralRules(this.effectiveLocale).select(count)==="one"?"activityFeedCompletedStep":"activityFeedCompletedSteps";return this.localize(key,void 0,{count:getNumberFormat(this.effectiveLocale).format(count)})}setFollowFromUser(following){following!==this.follow&&(this.follow=following,this.emit("lr-follow-change",{following}))}normalizedTimestamp(value){if(value===void 0)return;const date=value instanceof Date?value:new Date(value);return Number.isNaN(date.getTime())?void 0:date}entryTemplate(entry,ownRole){const ts=this.normalizedTimestamp(entry.timestamp),formatter=this.formatTimestamp??(date=>defaultFormatTimestamp(date,this.effectiveLocale)),variant=entry.variant??"neutral",dotPart=variantDotPart(variant);return html`
2
2
  <div part="entry" role=${ownRole?"listitem":nothing} data-variant=${variant}>
3
3
  <span part="entry-icon" aria-hidden="true">${entry.icon?entry.icon:html`<span part=${dotPart} data-variant=${variant}></span>`}</span>
4
4
  ${this.renderText?this.renderText(entry):html`<span part="entry-text">${entry.text}</span>`}
@@ -34,7 +34,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
34
34
  .renderItem=${item=>this.entryTemplate(item,!1)}
35
35
  .keyFunction=${item=>item.id}
36
36
  aria-label=${ariaLabel}
37
- @lr-visible-range-changed=${this.onVirtualListRangeChanged}
37
+ @lr-visible-range-change=${this.onVirtualListRangeChanged}
38
38
  ></lr-virtual-list>`:repeat(entries,entry=>entry.id,entry=>this.entryTemplate(entry,!0))}
39
39
  </div>
40
40
  <lr-live-region></lr-live-region>
@@ -27,9 +27,6 @@ import{css}from"lit";const styles=css`
27
27
  background: var(--lr-color-brand-quiet);
28
28
  color: var(--lr-color-brand);
29
29
  }
30
- /* Pressed is the hovered tint pushed a further --lr-color-mix-active toward
31
- --lr-color-mix-partner (which follows the text colour), so it reads as a distinctly deeper step
32
- than hover in both light and dark themes rather than repeating it. */
33
30
  [part="header"]:active {
34
31
  background: color-mix(
35
32
  in oklab,
@@ -112,13 +109,6 @@ import{css}from"lit";const styles=css`
112
109
  var(--_lr-activity-feed-max-height)
113
110
  );
114
111
  }
115
- /* Every entry rule below is paired with an lr-virtual-list::part(x) twin because this component
116
- renders entries through two paths. Below virtualize-at, entryTemplate()'s result is
117
- committed into this component's own shadow root and the plain [part=] selector matches. At or
118
- above it, the exact same template becomes <lr-virtual-list>'s .renderItem, and Lit commits it
119
- wherever virtual-list's own render() is updating -- i.e. inside *its* shadow root, a different
120
- shadow tree that a [part=] selector scoped to this one can never reach. ::part() crosses that
121
- single boundary. Both selectors are load-bearing; dropping either silently unstyles one path. */
122
112
  [part="entry"],
123
113
  lr-virtual-list::part(entry) {
124
114
  display: flex;
@@ -141,12 +131,6 @@ import{css}from"lit";const styles=css`
141
131
  block-size: var(--lr-size-0-5rem);
142
132
  border-radius: var(--lr-radius-pill);
143
133
  }
144
- /* Shadow Parts forbids an attribute selector after ::part(), so the variant cannot be matched as
145
- ::part(variant-dot)[data-variant='success'] -- that selector is invalid and would drop the rule
146
- entirely. Each variant carries a second name in the dot's part list instead; ::part() matches
147
- with part~= semantics, so both names select the same element, and a consumer gains a
148
- per-variant hook the [data-variant] form never offered. The [part~=] form is the plain-path
149
- twin: [part='variant-dot-success'] would not match a multi-name part attribute. */
150
134
  [part~="variant-dot-neutral"],
151
135
  lr-virtual-list::part(variant-dot-neutral) {
152
136
  background: var(--lr-color-text-quiet);
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{styles}from"./agent-eval-dashboard.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{finiteCount}from"../../../internal/numbers.js";import{agentStatusKind,agentStatusLabel,agentStatusMessage,agentStatusVariant}from"../agent-status-presentation.js";import{overallSemanticLabel}from"../semantic-owner.js";import{firstByIdentity}from"../collection-identity.js";import{LYRA_DEFAULT_agentRunStatusCancelled,LYRA_DEFAULT_agentRunStatusCollecting,LYRA_DEFAULT_agentRunStatusDone,LYRA_DEFAULT_agentRunStatusIdle,LYRA_DEFAULT_agentRunStatusQueued,LYRA_DEFAULT_agentRunStatusWaitingApproval,LYRA_DEFAULT_agentRunStatusWaitingInput,LYRA_DEFAULT_chartValueLabel,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_evaluationDashboardLabel,LYRA_DEFAULT_evaluationDashboardNoRuns,LYRA_DEFAULT_evaluationDashboardRunsLabel,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_progress,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusRunning}from"../../../internal/default-strings.generated.js";const STATUS_VARIANT={idle:"neutral",queued:"neutral",running:"brand",collecting:"brand","waiting-input":"warning","waiting-approval":"warning",done:"success",error:"danger",cancelled:"neutral"};class LyraAgentEvalDashboard extends LyraElement{constructor(){super(...arguments),this.metrics=[],this.runs=[],this.metricId=null,this.currency="USD",this.showChart=!0,this.chartHeight="220px",this.maxRenderedRuns=100}static{this.defaultStrings={...super.defaultStrings,agentRunStatusCancelled:LYRA_DEFAULT_agentRunStatusCancelled,agentRunStatusCollecting:LYRA_DEFAULT_agentRunStatusCollecting,agentRunStatusDone:LYRA_DEFAULT_agentRunStatusDone,agentRunStatusIdle:LYRA_DEFAULT_agentRunStatusIdle,agentRunStatusQueued:LYRA_DEFAULT_agentRunStatusQueued,agentRunStatusWaitingApproval:LYRA_DEFAULT_agentRunStatusWaitingApproval,agentRunStatusWaitingInput:LYRA_DEFAULT_agentRunStatusWaitingInput,chartValueLabel:LYRA_DEFAULT_chartValueLabel,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,evaluationDashboardLabel:LYRA_DEFAULT_evaluationDashboardLabel,evaluationDashboardNoRuns:LYRA_DEFAULT_evaluationDashboardNoRuns,evaluationDashboardRunsLabel:LYRA_DEFAULT_evaluationDashboardRunsLabel,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,progress:LYRA_DEFAULT_progress,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusError:LYRA_DEFAULT_statusError,statusRunning:LYRA_DEFAULT_statusRunning}}static{this.ownedCollectionProperties=Object.freeze(["metrics","runs"])}static{this.styles=[LyraElement.styles,styles]}get normalizedMetrics(){return firstByIdentity(Array.isArray(this.metrics)?this.metrics:[],metric=>metric.id)}get normalizedRuns(){return firstByIdentity(Array.isArray(this.runs)?this.runs:[],run=>run.id)}get activeMetric(){const metrics=this.normalizedMetrics;return this.metricId===null?metrics[0]:metrics.find(metric=>metric.id===this.metricId)??metrics[0]}statusLabel(status){const override=agentStatusLabel(status);if(override!==void 0)return override;const kind=agentStatusKind(status),keys={idle:"agentRunStatusIdle",queued:"agentRunStatusQueued",running:"statusRunning",collecting:"agentRunStatusCollecting","waiting-input":"agentRunStatusWaitingInput","waiting-approval":"agentRunStatusWaitingApproval",done:"agentRunStatusDone",error:"statusError",cancelled:"agentRunStatusCancelled"};return keys[kind]?this.localize(keys[kind]):kind.replace(/[-_]+/g," ")}get projectedRuns(){const limit=Math.max(1,finiteCount(this.maxRenderedRuns,100,500));return this.normalizedRuns.slice(0,limit)}formatMetric(metric,value=metric.value){const safe=Number.isFinite(value)?value:0;switch(metric.format){case"percent":return getNumberFormat(this.effectiveLocale,{style:"percent",maximumFractionDigits:1}).format(safe);case"milliseconds":return getNumberFormat(this.effectiveLocale,{style:"unit",unit:"millisecond",unitDisplay:"short",maximumFractionDigits:0}).format(safe);case"currency":try{return getNumberFormat(this.effectiveLocale,{style:"currency",currency:this.currency,maximumFractionDigits:2}).format(safe)}catch{return getNumberFormat(this.effectiveLocale,{style:"currency",currency:"USD",maximumFractionDigits:2}).format(safe)}default:return getNumberFormat(this.effectiveLocale,{maximumFractionDigits:2}).format(safe)}}renderRuns(runs){if(!runs.length)return html`<p part="empty">${this.localize("evaluationDashboardNoRuns")}</p>`;const active=this.activeMetric;return html`<section part="runs" aria-label=${this.localize("evaluationDashboardRunsLabel")}><h3 part="runs-heading">${this.localize("evaluationDashboardRunsLabel")}</h3>${runs.map(run=>{const kind=agentStatusKind(run.status),message=agentStatusMessage(run.status);return html`<button part="run" type="button" @click=${()=>this.emit("lr-run-activate",{runId:run.id,run})}><span part="run-label">${run.label}</span><span part="run-meta"><lr-badge part="run-status" variant=${agentStatusVariant(run.status,STATUS_VARIANT[kind]??"neutral")}>${this.statusLabel(run.status)}</lr-badge>${message!==void 0?html`<span part="run-status-message">${message}</span>`:nothing}${active&&run.metrics?.[active.id]!=null?html`<span>${this.formatMetric(active,run.metrics[active.id])}</span>`:nothing}</span></button>`})}</section>`}render(){const label=this.label==null?this.localize("evaluationDashboardLabel"):this.label,semanticLabel=overallSemanticLabel(this,label),active=this.activeMetric,runs=this.projectedRuns,metrics=this.normalizedMetrics,values=runs.map(run=>{const value=active?run.metrics?.[active.id]:void 0;return value!=null&&Number.isFinite(value)?value:null});return html`<section part="base" aria-label=${semanticLabel??nothing}>
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{AGENT_STATUS_VARIANTS}from"../../../internal/agent-status-variants.js";import{styles}from"./agent-eval-dashboard.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{finiteCount}from"../../../internal/numbers.js";import{agentStatusKind,agentStatusLabel,agentStatusMessage,agentStatusVariant}from"../agent-status-presentation.js";import{overallSemanticLabel}from"../semantic-owner.js";import{firstByIdentity}from"../collection-identity.js";import{LYRA_DEFAULT_agentRunStatusCancelled,LYRA_DEFAULT_agentRunStatusCollecting,LYRA_DEFAULT_agentRunStatusDone,LYRA_DEFAULT_agentRunStatusIdle,LYRA_DEFAULT_agentRunStatusQueued,LYRA_DEFAULT_agentRunStatusWaitingApproval,LYRA_DEFAULT_agentRunStatusWaitingInput,LYRA_DEFAULT_chartValueLabel,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_evaluationDashboardLabel,LYRA_DEFAULT_evaluationDashboardNoRuns,LYRA_DEFAULT_evaluationDashboardRunsLabel,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_progress,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusRunning}from"../../../internal/default-strings.generated.js";class LyraAgentEvalDashboard extends LyraElement{constructor(){super(...arguments),this.metrics=[],this.runs=[],this.metricId=null,this.currency="USD",this.showChart=!0,this.chartHeight="220px",this.maxRenderedRuns=100}static{this.defaultStrings={...super.defaultStrings,agentRunStatusCancelled:LYRA_DEFAULT_agentRunStatusCancelled,agentRunStatusCollecting:LYRA_DEFAULT_agentRunStatusCollecting,agentRunStatusDone:LYRA_DEFAULT_agentRunStatusDone,agentRunStatusIdle:LYRA_DEFAULT_agentRunStatusIdle,agentRunStatusQueued:LYRA_DEFAULT_agentRunStatusQueued,agentRunStatusWaitingApproval:LYRA_DEFAULT_agentRunStatusWaitingApproval,agentRunStatusWaitingInput:LYRA_DEFAULT_agentRunStatusWaitingInput,chartValueLabel:LYRA_DEFAULT_chartValueLabel,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,evaluationDashboardLabel:LYRA_DEFAULT_evaluationDashboardLabel,evaluationDashboardNoRuns:LYRA_DEFAULT_evaluationDashboardNoRuns,evaluationDashboardRunsLabel:LYRA_DEFAULT_evaluationDashboardRunsLabel,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,progress:LYRA_DEFAULT_progress,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusError:LYRA_DEFAULT_statusError,statusRunning:LYRA_DEFAULT_statusRunning}}static{this.ownedCollectionProperties=Object.freeze(["metrics","runs"])}static{this.styles=[LyraElement.styles,styles]}get normalizedMetrics(){return firstByIdentity(Array.isArray(this.metrics)?this.metrics:[],metric=>metric.id)}get normalizedRuns(){return firstByIdentity(Array.isArray(this.runs)?this.runs:[],run=>run.id)}get activeMetric(){const metrics=this.normalizedMetrics;return this.metricId===null?metrics[0]:metrics.find(metric=>metric.id===this.metricId)??metrics[0]}statusLabel(status){const override=agentStatusLabel(status);if(override!==void 0)return override;const kind=agentStatusKind(status),keys={idle:"agentRunStatusIdle",queued:"agentRunStatusQueued",running:"statusRunning",collecting:"agentRunStatusCollecting","waiting-input":"agentRunStatusWaitingInput","waiting-approval":"agentRunStatusWaitingApproval",done:"agentRunStatusDone",error:"statusError",cancelled:"agentRunStatusCancelled"};return keys[kind]?this.localize(keys[kind]):kind.replace(/[-_]+/g," ")}get projectedRuns(){const limit=Math.max(1,finiteCount(this.maxRenderedRuns,100,500));return this.normalizedRuns.slice(0,limit)}formatMetric(metric,value=metric.value){const safe=Number.isFinite(value)?value:0;switch(metric.format){case"percent":return getNumberFormat(this.effectiveLocale,{style:"percent",maximumFractionDigits:1}).format(safe);case"milliseconds":return getNumberFormat(this.effectiveLocale,{style:"unit",unit:"millisecond",unitDisplay:"short",maximumFractionDigits:0}).format(safe);case"currency":try{return getNumberFormat(this.effectiveLocale,{style:"currency",currency:this.currency,maximumFractionDigits:2}).format(safe)}catch{return getNumberFormat(this.effectiveLocale,{style:"currency",currency:"USD",maximumFractionDigits:2}).format(safe)}default:return getNumberFormat(this.effectiveLocale,{maximumFractionDigits:2}).format(safe)}}renderRuns(runs){if(!runs.length)return html`<p part="empty">${this.localize("evaluationDashboardNoRuns")}</p>`;const active=this.activeMetric;return html`<section part="runs" aria-label=${this.localize("evaluationDashboardRunsLabel")}><h3 part="runs-heading">${this.localize("evaluationDashboardRunsLabel")}</h3>${runs.map(run=>{const kind=agentStatusKind(run.status),message=agentStatusMessage(run.status);return html`<button part="run" type="button" @click=${()=>this.emit("lr-run-activate",{runId:run.id,run})}><span part="run-label">${run.label}</span><span part="run-meta"><lr-badge part="run-status" variant=${agentStatusVariant(run.status,AGENT_STATUS_VARIANTS[kind]??"neutral")}>${this.statusLabel(run.status)}</lr-badge>${message!==void 0?html`<span part="run-status-message">${message}</span>`:nothing}${active&&run.metrics?.[active.id]!=null?html`<span>${this.formatMetric(active,run.metrics[active.id])}</span>`:nothing}</span></button>`})}</section>`}render(){const label=this.label==null?this.localize("evaluationDashboardLabel"):this.label,semanticLabel=overallSemanticLabel(this,label),active=this.activeMetric,runs=this.projectedRuns,metrics=this.normalizedMetrics,values=runs.map(run=>{const value=active?run.metrics?.[active.id]:void 0;return value!=null&&Number.isFinite(value)?value:null});return html`<section part="base" aria-label=${semanticLabel??nothing}>
2
2
  <h2 part="heading">${label}</h2>
3
3
  ${metrics.length?html`<div part="metrics">${metrics.map(metric=>{const value=this.formatMetric(metric);return html`<button
4
4
  part="metric"
@@ -1,7 +1,7 @@
1
1
  import{css}from"lit";const styles=css`
2
2
  :host { display: block; min-inline-size: 0; max-inline-size: 100%; container-type: inline-size; contain-intrinsic-inline-size: var(--lr-size-20rem); }
3
3
  [part='base'] { display: flex; min-inline-size: 0; max-inline-size: 100%; flex-direction: column; gap: var(--lr-space-m); }
4
- [part='heading'], [part='runs-heading'] { margin: 0; min-inline-size: 0; max-inline-size: 100%; overflow-wrap: anywhere; font-size: var(--lr-font-size-lg); font-weight: var(--lr-font-weight-semibold); }
4
+ [part='heading'], [part='runs-heading'] { margin: 0; min-inline-size: 0; max-inline-size: 100%; overflow-wrap: break-word; font-size: var(--lr-font-size-lg); font-weight: var(--lr-font-weight-semibold); }
5
5
  [part='metrics'] { display: grid; min-inline-size: 0; max-inline-size: 100%; grid-template-columns: repeat(auto-fit, minmax(var(--lr-size-10rem), 1fr)); gap: var(--lr-space-s); }
6
6
  [part='metric'], [part='chart'] { min-inline-size: 0; }
7
7
  [part='metric'] {
@@ -21,11 +21,13 @@ import{css}from"lit";const styles=css`
21
21
  border-color: var(--lr-agent-eval-dashboard-active-border, var(--lr-color-brand));
22
22
  background: var(--lr-agent-eval-dashboard-active-background, var(--lr-color-brand-quiet));
23
23
  }
24
- /* Pressed is the hovered tint pushed a further --lr-color-mix-active toward
25
- --lr-color-mix-partner (which follows the text colour), so it reads as a distinctly deeper step
26
- than hover in both light and dark themes. It must stay after the [aria-pressed='true'] rule: the
27
- two selectors are both (0,2,0), so source order alone decides whether pressing an
28
- already-selected metric shows any feedback at all. */
24
+ [part='metric']:where([aria-pressed='true']):hover {
25
+ background: color-mix(
26
+ in oklab,
27
+ var(--lr-agent-eval-dashboard-active-background, var(--lr-color-brand-quiet)),
28
+ var(--lr-color-mix-partner) var(--lr-color-mix-hover)
29
+ );
30
+ }
29
31
  [part='metric']:active {
30
32
  background: color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active));
31
33
  }
@@ -36,7 +38,7 @@ import{css}from"lit";const styles=css`
36
38
  background: color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active));
37
39
  }
38
40
  [part='run']:focus-visible { outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color); outline-offset: var(--lr-focus-ring-offset); }
39
- [part='run-label'] { min-inline-size: 0; max-inline-size: 100%; overflow-wrap: anywhere; }
41
+ [part='run-label'] { min-inline-size: 0; max-inline-size: 100%; overflow-wrap: break-word; }
40
42
  [part='run-meta'] { display: flex; flex-wrap: wrap; gap: var(--lr-space-2xs); align-items: center; justify-content: flex-end; }
41
43
  [part='empty'] { color: var(--lr-color-text-quiet); }
42
44
  @container (max-inline-size: 319.98px) { [part='metrics'] { grid-template-columns: 1fr; } [part='run'] { grid-template-columns: 1fr; } [part='run-meta'] { justify-content: flex-start; } }
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{spinnerIcon}from"../../../internal/icons.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{durationMessageValue}from"../../../internal/duration.js";import{finiteRange}from"../../../internal/numbers.js";import{srOnly}from"../../../internal/a11y.js";import{styles}from"./agent-run.styles.js";import{firstByIdentity}from"../collection-identity.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_agentRunCurrentStepLabel,LYRA_DEFAULT_agentRunStatusAnnounce,LYRA_DEFAULT_agentRunStatusCancelled,LYRA_DEFAULT_agentRunStatusCollecting,LYRA_DEFAULT_agentRunStatusDone,LYRA_DEFAULT_agentRunStatusIdle,LYRA_DEFAULT_agentRunStatusQueued,LYRA_DEFAULT_agentRunStatusWaitingApproval,LYRA_DEFAULT_agentRunStatusWaitingInput,LYRA_DEFAULT_cancel,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_durationSeconds,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_progress,LYRA_DEFAULT_retry,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusRunning}from"../../../internal/default-strings.generated.js";const TICKING_KINDS=new Set(["running","collecting","waiting-input","waiting-approval"]),TERMINAL_KINDS=new Set(["done","error","cancelled"]),STATUS_LABEL={idle:{key:"agentRunStatusIdle"},running:{key:"statusRunning"},queued:{key:"agentRunStatusQueued"},collecting:{key:"agentRunStatusCollecting"},"waiting-input":{key:"agentRunStatusWaitingInput"},"waiting-approval":{key:"agentRunStatusWaitingApproval"},done:{key:"agentRunStatusDone"},error:{key:"statusError"},cancelled:{key:"agentRunStatusCancelled"}},STATUS_VARIANT={idle:"neutral",running:"brand",queued:"neutral",collecting:"brand","waiting-input":"warning","waiting-approval":"warning",done:"success",error:"danger",cancelled:"neutral"},STEP_TO_TASK_STATUS={idle:"pending",running:"running",collecting:"running","waiting-input":"running","waiting-approval":"running",done:"success",error:"error",cancelled:"error"};function toTaskItem(step){return{id:step.id,label:step.label,status:STEP_TO_TASK_STATUS[step.status.kind]??"pending",detail:step.status.message}}class LyraAgentRun extends LyraElement{constructor(){super(...arguments),this.run=null,this.statusLabels={},this.statusVariants={},this.metrics=[],this.showCancel=!0,this.showRetry=!0,this.compact=!1,this.frame="card",this.retryAttempt=0,this.hasHeaderSlot=!1,this.hasSummarySlot=!1,this.onHeaderSlotChange=e=>{this.hasHeaderSlot=e.target.assignedElements({flatten:!0}).length>0},this.onSummarySlotChange=e=>{this.hasSummarySlot=e.target.assignedElements({flatten:!0}).length>0},this.onCancelClick=()=>{this.emit("lr-cancel",{})},this.onRetryClick=()=>{this.retryAttempt+=1,this.emit("lr-run-retry",{attempt:this.retryAttempt})}}static{this.defaultStrings={...super.defaultStrings,agentRunCurrentStepLabel:LYRA_DEFAULT_agentRunCurrentStepLabel,agentRunStatusAnnounce:LYRA_DEFAULT_agentRunStatusAnnounce,agentRunStatusCancelled:LYRA_DEFAULT_agentRunStatusCancelled,agentRunStatusCollecting:LYRA_DEFAULT_agentRunStatusCollecting,agentRunStatusDone:LYRA_DEFAULT_agentRunStatusDone,agentRunStatusIdle:LYRA_DEFAULT_agentRunStatusIdle,agentRunStatusQueued:LYRA_DEFAULT_agentRunStatusQueued,agentRunStatusWaitingApproval:LYRA_DEFAULT_agentRunStatusWaitingApproval,agentRunStatusWaitingInput:LYRA_DEFAULT_agentRunStatusWaitingInput,cancel:LYRA_DEFAULT_cancel,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,durationSeconds:LYRA_DEFAULT_durationSeconds,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,progress:LYRA_DEFAULT_progress,retry:LYRA_DEFAULT_retry,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusError:LYRA_DEFAULT_statusError,statusRunning:LYRA_DEFAULT_statusRunning}}static{this.ownedCollectionProperties=Object.freeze(["run","statusLabels","statusVariants","metrics"])}static{this.styles=[LyraElement.styles,srOnly,styles]}get normalizedMetrics(){return firstByIdentity(Array.isArray(this.metrics)?this.metrics:[],metric=>metric.id)}willUpdate(changed){super.willUpdate(changed),this.hasUpdated||(this.hasHeaderSlot=this.hasSlotted("header"),this.hasSummarySlot=this.hasSlotted("summary")),changed.has("run")&&this.run?.id!==this.previousRunId&&(this.retryAttempt=0)}hasSlotted(name){return Array.from(this.children).some(element=>element.getAttribute("slot")===name)}updated(changed){super.updated(changed),changed.has("run")&&this.handleRunChange()}handleRunChange(){const runId=this.run?.id,kind=this.run?.status.kind;!(runId!==this.previousRunId)&&kind!==void 0&&kind!==this.previousStatusKind&&this.isAttentionKind(kind)&&this.announceStatus(kind),this.previousRunId=runId,this.previousStatusKind=kind}isAttentionKind(kind){return kind==="waiting-input"||kind==="waiting-approval"||TERMINAL_KINDS.has(kind)}announceStatus(kind){const region=this.liveRegion;region&&(region.mode=kind==="error"||kind==="waiting-input"||kind==="waiting-approval"?"assertive":"polite",region.announce(this.localize("agentRunStatusAnnounce",void 0,{status:this.statusLabel(kind)}),{force:!0}))}statusLabel(kind){const custom=this.statusLabels[kind];if(custom)return custom;const builtIn=STATUS_LABEL[kind];return builtIn?this.localize(builtIn.key):kind.replace(/[-_]+/g," ").replace(/\b\w/g,letter=>letter.toUpperCase())}get currentStep(){const steps=this.run?.steps;if(steps){for(let i=steps.length-1;i>=0;i--)if(steps[i].status.kind==="running")return steps[i]}}get isTicking(){const kind=this.run?.status.kind;return kind!==void 0&&TICKING_KINDS.has(kind)&&Number.isFinite(this.run?.startedAt)}get staticElapsedText(){const run=this.run;if(!run||!TERMINAL_KINDS.has(run.status.kind))return;const startedAt=run.startedAt,endedAt=run.endedAt;if(startedAt==null||endedAt==null||!Number.isFinite(startedAt)||!Number.isFinite(endedAt))return;const d=durationMessageValue(Math.max(0,endedAt-startedAt));return this.localize(d.key,void 0,{value:getNumberFormat(this.effectiveLocale,{maximumFractionDigits:d.key==="durationSeconds"?1:0}).format(d.value)})}get costText(){const cost=this.run?.costEstimate;if(cost==null||!Number.isFinite(cost))return"";const value=finiteRange(cost,cost,0);return(this.formatCost??(c=>getNumberFormat(this.effectiveLocale,{maximumFractionDigits:4}).format(c)))(value)}get canCancel(){const kind=this.run?.status.kind;return this.showCancel&&kind!==void 0&&TICKING_KINDS.has(kind)}get canRetry(){const kind=this.run?.status.kind;return this.showRetry&&(kind==="error"||kind==="cancelled")}render(){const run=this.run;if(!run)return html`<div part="base"><lr-empty part="empty" heading=${this.localize("noData")}></lr-empty></div>`;const kind=run.status.kind,step=this.currentStep,ticking=this.isTicking,staticElapsed=this.staticElapsedText,cost=this.costText,metrics=this.normalizedMetrics,hasSummary=!!run.model||cost!==""||metrics.length>0;return html`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state,query}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{spinnerIcon}from"../../../internal/icons.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{durationMessageValue}from"../../../internal/duration.js";import{finiteRange}from"../../../internal/numbers.js";import{srOnly}from"../../../internal/a11y.js";import{AGENT_STATUS_VARIANTS}from"../../../internal/agent-status-variants.js";import{styles}from"./agent-run.styles.js";import{firstByIdentity}from"../collection-identity.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{LYRA_DEFAULT_agentRunCurrentStepLabel,LYRA_DEFAULT_agentRunStatusAnnounce,LYRA_DEFAULT_agentRunStatusCancelled,LYRA_DEFAULT_agentRunStatusCollecting,LYRA_DEFAULT_agentRunStatusDone,LYRA_DEFAULT_agentRunStatusIdle,LYRA_DEFAULT_agentRunStatusQueued,LYRA_DEFAULT_agentRunStatusWaitingApproval,LYRA_DEFAULT_agentRunStatusWaitingInput,LYRA_DEFAULT_cancel,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_durationSeconds,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_progress,LYRA_DEFAULT_retry,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusRunning}from"../../../internal/default-strings.generated.js";const TICKING_KINDS=new Set(["running","collecting","waiting-input","waiting-approval"]),TERMINAL_KINDS=new Set(["done","error","cancelled"]),STATUS_LABEL={idle:{key:"agentRunStatusIdle"},running:{key:"statusRunning"},queued:{key:"agentRunStatusQueued"},collecting:{key:"agentRunStatusCollecting"},"waiting-input":{key:"agentRunStatusWaitingInput"},"waiting-approval":{key:"agentRunStatusWaitingApproval"},done:{key:"agentRunStatusDone"},error:{key:"statusError"},cancelled:{key:"agentRunStatusCancelled"}},STEP_TO_TASK_STATUS={idle:"pending",running:"running",collecting:"running","waiting-input":"running","waiting-approval":"running",done:"success",error:"error",cancelled:"error"};function toTaskItem(step){return{id:step.id,label:step.label,status:STEP_TO_TASK_STATUS[step.status.kind]??"pending",detail:step.status.message}}class LyraAgentRun extends LyraElement{constructor(){super(...arguments),this.run=null,this.statusLabels={},this.statusVariants={},this.metrics=[],this.showCancel=!0,this.showRetry=!0,this.compact=!1,this.frame="card",this.retryAttempt=0,this.hasHeaderSlot=!1,this.hasSummarySlot=!1,this.onHeaderSlotChange=e=>{this.hasHeaderSlot=e.target.assignedElements({flatten:!0}).length>0},this.onSummarySlotChange=e=>{this.hasSummarySlot=e.target.assignedElements({flatten:!0}).length>0},this.onCancelClick=()=>{this.emit("lr-cancel",{})},this.onRetryClick=()=>{this.retryAttempt+=1,this.emit("lr-run-retry",{attempt:this.retryAttempt})}}static{this.defaultStrings={...super.defaultStrings,agentRunCurrentStepLabel:LYRA_DEFAULT_agentRunCurrentStepLabel,agentRunStatusAnnounce:LYRA_DEFAULT_agentRunStatusAnnounce,agentRunStatusCancelled:LYRA_DEFAULT_agentRunStatusCancelled,agentRunStatusCollecting:LYRA_DEFAULT_agentRunStatusCollecting,agentRunStatusDone:LYRA_DEFAULT_agentRunStatusDone,agentRunStatusIdle:LYRA_DEFAULT_agentRunStatusIdle,agentRunStatusQueued:LYRA_DEFAULT_agentRunStatusQueued,agentRunStatusWaitingApproval:LYRA_DEFAULT_agentRunStatusWaitingApproval,agentRunStatusWaitingInput:LYRA_DEFAULT_agentRunStatusWaitingInput,cancel:LYRA_DEFAULT_cancel,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,durationSeconds:LYRA_DEFAULT_durationSeconds,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,progress:LYRA_DEFAULT_progress,retry:LYRA_DEFAULT_retry,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusError:LYRA_DEFAULT_statusError,statusRunning:LYRA_DEFAULT_statusRunning}}static{this.ownedCollectionProperties=Object.freeze(["run","statusLabels","statusVariants","metrics"])}static{this.styles=[LyraElement.styles,srOnly,styles]}get normalizedMetrics(){return firstByIdentity(Array.isArray(this.metrics)?this.metrics:[],metric=>metric.id)}willUpdate(changed){super.willUpdate(changed),this.hasUpdated||(this.hasHeaderSlot=this.hasSlotted("header"),this.hasSummarySlot=this.hasSlotted("summary")),changed.has("run")&&this.run?.id!==this.previousRunId&&(this.retryAttempt=0)}hasSlotted(name){return Array.from(this.children).some(element=>element.getAttribute("slot")===name)}updated(changed){super.updated(changed),changed.has("run")&&this.handleRunChange()}handleRunChange(){const runId=this.run?.id,kind=this.run?.status.kind;!(runId!==this.previousRunId)&&kind!==void 0&&kind!==this.previousStatusKind&&this.isAttentionKind(kind)&&this.announceStatus(kind),this.previousRunId=runId,this.previousStatusKind=kind}isAttentionKind(kind){return kind==="waiting-input"||kind==="waiting-approval"||TERMINAL_KINDS.has(kind)}announceStatus(kind){const region=this.liveRegion;region&&(region.mode=kind==="error"||kind==="waiting-input"||kind==="waiting-approval"?"assertive":"polite",region.announce(this.localize("agentRunStatusAnnounce",void 0,{status:this.statusLabel(kind)}),{force:!0}))}statusLabel(kind){const custom=this.statusLabels[kind];if(custom)return custom;const builtIn=STATUS_LABEL[kind];return builtIn?this.localize(builtIn.key):kind.replace(/[-_]+/g," ").replace(/\b\w/g,letter=>letter.toUpperCase())}get currentStep(){const steps=this.run?.steps;if(steps){for(let i=steps.length-1;i>=0;i--)if(steps[i].status.kind==="running")return steps[i]}}get isTicking(){const kind=this.run?.status.kind;return kind!==void 0&&TICKING_KINDS.has(kind)&&Number.isFinite(this.run?.startedAt)}get staticElapsedText(){const run=this.run;if(!run||!TERMINAL_KINDS.has(run.status.kind))return;const startedAt=run.startedAt,endedAt=run.endedAt;if(startedAt==null||endedAt==null||!Number.isFinite(startedAt)||!Number.isFinite(endedAt))return;const d=durationMessageValue(Math.max(0,endedAt-startedAt));return this.localize(d.key,void 0,{value:getNumberFormat(this.effectiveLocale,{maximumFractionDigits:d.key==="durationSeconds"?1:0}).format(d.value)})}get costText(){const cost=this.run?.costEstimate;if(cost==null||!Number.isFinite(cost))return"";const value=finiteRange(cost,cost,0);return(this.formatCost??(c=>getNumberFormat(this.effectiveLocale,{maximumFractionDigits:4}).format(c)))(value)}get canCancel(){const kind=this.run?.status.kind;return this.showCancel&&kind!==void 0&&TICKING_KINDS.has(kind)}get canRetry(){const kind=this.run?.status.kind;return this.showRetry&&(kind==="error"||kind==="cancelled")}render(){const run=this.run;if(!run)return html`<div part="base"><lr-empty part="empty" heading=${this.localize("noData")}></lr-empty></div>`;const kind=run.status.kind,step=this.currentStep,ticking=this.isTicking,staticElapsed=this.staticElapsedText,cost=this.costText,metrics=this.normalizedMetrics,hasSummary=!!run.model||cost!==""||metrics.length>0;return html`
2
2
  <div part="base">
3
3
  <div part="header">
4
4
  <slot name="header" @slotchange=${this.onHeaderSlotChange}></slot>
@@ -6,7 +6,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
6
6
  <div part="status">
7
7
  <lr-badge
8
8
  part="status-badge"
9
- variant=${this.statusVariants[kind]??STATUS_VARIANT[kind]??"neutral"}
9
+ variant=${this.statusVariants[kind]??AGENT_STATUS_VARIANTS[kind]??"neutral"}
10
10
  >${this.statusLabel(kind)}</lr-badge
11
11
  >
12
12
  ${run.status.message?html`<span part="status-message">${run.status.message}</span>`:nothing}
@@ -15,19 +15,10 @@ import{css}from"lit";const styles=css`
15
15
  background: var(--lr-color-surface);
16
16
  color: var(--lr-color-text);
17
17
  }
18
- /* Density escape -- same convention as lr-empty's compact. The tuned values sit behind inline
19
- var() fallbacks (rather than a :host declaration, which every instance would re-declare and so
20
- shadow any ancestor value) so a consumer can retune them from outside without restating the
21
- whole rule; the fallbacks are the pre-existing values, so an unset run renders unchanged. */
22
18
  :host([compact]) [part="base"] {
23
19
  padding: var(--lr-agent-run-compact-padding, var(--lr-space-s));
24
20
  gap: var(--lr-agent-run-compact-gap, var(--lr-space-s));
25
21
  }
26
- /* MUST stay after :host([compact]): both selectors are :host([x]) [part='base'], i.e. equal
27
- specificity, so source order alone decides which padding/gap wins when a run is both compact
28
- and frame="plain". plain is the stronger statement ("no chrome at all"), so it goes last. The built-in
29
- Cancel/Retry buttons keep their own border/background -- that chrome is theirs, not the card's,
30
- so a chrome-less run still has a visible interactive affordance. */
31
22
  :host([frame="plain"]) [part="base"] {
32
23
  padding: 0;
33
24
  border: 0;
@@ -174,10 +165,6 @@ import{css}from"lit";const styles=css`
174
165
  border-color: var(--lr-color-brand);
175
166
  color: var(--lr-color-brand);
176
167
  }
177
- /* Both hovers recolour the border and label only, which leaves the pressed step nothing to
178
- deepen -- so pressed tints the button's own surface fill toward --lr-color-mix-partner (which
179
- follows the text colour) instead. The :hover border/label colours still apply underneath while
180
- the pointer is down, so Cancel stays danger-toned and Retry stays brand-toned when pressed. */
181
168
  [part="cancel-button"]:active,
182
169
  [part="retry-button"]:active {
183
170
  background: color-mix(
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{styles}from"./agent-trace.styles.js";import{normalizeLyraSpans}from"../trace-tree/span.js";import{LYRA_DEFAULT_agentTraceFilterLabel,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_handoffFromToAgent,LYRA_DEFAULT_handoffToAgent,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_progress,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_spanKindAgent,LYRA_DEFAULT_spanKindEmbedding,LYRA_DEFAULT_spanKindLlm,LYRA_DEFAULT_spanKindOther,LYRA_DEFAULT_spanKindRetriever,LYRA_DEFAULT_spanKindTool}from"../../../internal/default-strings.generated.js";const KIND_ORDER=["agent","llm","tool","retriever","embedding","other"],KIND_LABEL_KEY={agent:"spanKindAgent",llm:"spanKindLlm",tool:"spanKindTool",retriever:"spanKindRetriever",embedding:"spanKindEmbedding",other:"spanKindOther"};class LyraAgentTrace extends LyraElement{constructor(){super(...arguments),this.spans=[],this.activeSpanId=null,this.hiddenKinds=[],this.showTokens=!1,this.showCost=!1,this.showBars=!0,this.onVisibilityChange=e=>{e.stopPropagation(),this.hiddenKinds=e.detail.hiddenTypes,this.emit("lr-span-visibility-change",{hiddenKinds:[...this.hiddenKinds]})},this.onTreeSpanSelect=e=>{this.activeSpanId=e.detail.spanId}}static{this.defaultStrings={...super.defaultStrings,agentTraceFilterLabel:LYRA_DEFAULT_agentTraceFilterLabel,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,handoffFromToAgent:LYRA_DEFAULT_handoffFromToAgent,handoffToAgent:LYRA_DEFAULT_handoffToAgent,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,progress:LYRA_DEFAULT_progress,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,spanKindAgent:LYRA_DEFAULT_spanKindAgent,spanKindEmbedding:LYRA_DEFAULT_spanKindEmbedding,spanKindLlm:LYRA_DEFAULT_spanKindLlm,spanKindOther:LYRA_DEFAULT_spanKindOther,spanKindRetriever:LYRA_DEFAULT_spanKindRetriever,spanKindTool:LYRA_DEFAULT_spanKindTool}}static{this.ownedCollectionProperties=Object.freeze(["spans","hiddenKinds"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-span-visibility-change"])}presentKinds(spans){const present=new Set(spans.map(s=>s.kind));return KIND_ORDER.filter(k=>present.has(k))}filteredSpans(spans){if(this.hiddenKinds.length===0)return[...spans];const hidden=new Set(this.hiddenKinds);return spans.filter(span=>!hidden.has(span.kind))}handoffSpans(spans){return spans.filter(span=>span.kind==="agent")}handoffFromAgent(span,byId){if(!span.parentId)return"";const parent=byId.get(span.parentId);return parent?.kind==="agent"?parent.name:""}handoffAccessibleLabel(span,fromAgent){return fromAgent?this.localize("handoffFromToAgent",void 0,{from:fromAgent,to:span.name}):this.localize("handoffToAgent",void 0,{agent:span.name})}selectSpan(id){this.activeSpanId=id,this.emit("lr-span-select",{spanId:id})}renderFilter(spans){const kinds=this.presentKinds(spans);if(kinds.length===0)return nothing;const types=kinds.map(k=>({id:k,label:this.localize(KIND_LABEL_KEY[k])}));return html`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{styles}from"./agent-trace.styles.js";import{normalizeLyraSpans}from"../trace-tree/span.js";import{LYRA_DEFAULT_agentTraceFilterLabel,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_handoffFromToAgent,LYRA_DEFAULT_handoffToAgent,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_progress,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_spanKindAgent,LYRA_DEFAULT_spanKindEmbedding,LYRA_DEFAULT_spanKindLlm,LYRA_DEFAULT_spanKindOther,LYRA_DEFAULT_spanKindRetriever,LYRA_DEFAULT_spanKindTool}from"../../../internal/default-strings.generated.js";const KIND_ORDER=["agent","llm","tool","retriever","embedding","other"],KIND_LABEL_KEY={agent:"spanKindAgent",llm:"spanKindLlm",tool:"spanKindTool",retriever:"spanKindRetriever",embedding:"spanKindEmbedding",other:"spanKindOther"};class LyraAgentTrace extends LyraElement{constructor(){super(...arguments),this.spans=[],this.activeSpanId=null,this.hiddenKinds=[],this.showTokens=!1,this.showCost=!1,this.showBars=!0,this.onVisibilityChange=e=>{e.stopPropagation(),this.hiddenKinds=e.detail.hiddenTypes,this.emit("lr-span-visibility-change",{hiddenKinds:[...this.hiddenKinds]})},this.onTreeSpanSelect=e=>{this.activeSpanId=e.detail.spanId}}static{this.defaultStrings={...super.defaultStrings,agentTraceFilterLabel:LYRA_DEFAULT_agentTraceFilterLabel,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,handoffFromToAgent:LYRA_DEFAULT_handoffFromToAgent,handoffToAgent:LYRA_DEFAULT_handoffToAgent,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,progress:LYRA_DEFAULT_progress,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,spanKindAgent:LYRA_DEFAULT_spanKindAgent,spanKindEmbedding:LYRA_DEFAULT_spanKindEmbedding,spanKindLlm:LYRA_DEFAULT_spanKindLlm,spanKindOther:LYRA_DEFAULT_spanKindOther,spanKindRetriever:LYRA_DEFAULT_spanKindRetriever,spanKindTool:LYRA_DEFAULT_spanKindTool}}static{this.ownedCollectionProperties=Object.freeze(["spans","hiddenKinds"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-span-visibility-change"])}presentKinds(spans){const present=new Set(spans.map(s=>s.kind));return KIND_ORDER.filter(k=>present.has(k))}filteredSpans(spans){if(this.hiddenKinds.length===0)return[...spans];const hidden=new Set(this.hiddenKinds);return spans.filter(span=>!hidden.has(span.kind))}handoffSpans(spans){return spans.filter(span=>span.kind==="agent")}handoffFromAgent(span,byId){if(!span.parentId)return"";const parent=byId.get(span.parentId);return parent?.kind==="agent"?parent.name:""}handoffAccessibleLabel(span,fromAgent){return fromAgent?this.localize("handoffFromToAgent",void 0,{from:fromAgent,to:span.name}):this.localize("handoffToAgent",void 0,{agent:span.name})}selectSpan(id){this.activeSpanId=id,this.emit("lr-span-select",{spanId:id})}renderFilter(spans){const kinds=this.presentKinds(spans);if(kinds.length===0)return nothing;const types=kinds.map(k=>({id:k,label:this.localize(KIND_LABEL_KEY[k])}));return html`
2
2
  <lr-graph-legend
3
3
  part="filter"
4
4
  .label=${this.localize("agentTraceFilterLabel")}
@@ -45,10 +45,6 @@ import{css}from"lit";const styles=css`
45
45
  cursor: pointer;
46
46
  border-radius: var(--lr-radius-xs);
47
47
  }
48
- /* The handoff button has no fill of its own, so both states tint the transparent surface toward
49
- --lr-color-mix-partner (which follows the text colour): it darkens in a light theme, lightens in
50
- a dark one. Previously a hand-rolled 8% mix against --lr-color-text -- same idea, but a literal
51
- no consumer could retune and a strength no other control in the library shared. */
52
48
  [part='handoff']:hover {
53
49
  background: color-mix(in oklab, transparent, var(--lr-color-mix-partner) var(--lr-color-mix-hover));
54
50
  }
@@ -62,6 +58,13 @@ import{css}from"lit";const styles=css`
62
58
  [part='handoff'][data-active] {
63
59
  background: var(--lr-agent-trace-handoff-active-bg, var(--lr-color-brand-quiet));
64
60
  }
61
+ [part='handoff'][data-active]:active {
62
+ background: color-mix(
63
+ in oklab,
64
+ var(--lr-agent-trace-handoff-active-bg, var(--lr-color-brand-quiet)),
65
+ var(--lr-color-mix-partner) var(--lr-color-mix-active)
66
+ );
67
+ }
65
68
 
66
69
  [part='tree'] {
67
70
  max-inline-size: 100%;
@@ -64,14 +64,16 @@ import{css}from"lit";const styles=css`
64
64
  cursor: pointer;
65
65
  }
66
66
 
67
- [part='request']:hover {
67
+ [part='request']:disabled {
68
+ opacity: var(--lr-opacity-disabled);
69
+ cursor: not-allowed;
70
+ }
71
+
72
+ [part='request']:not(:disabled):hover {
68
73
  background: var(--lr-color-surface-raised);
69
74
  }
70
75
 
71
- /* Pressed is the hovered tint pushed a further --lr-color-mix-active toward
72
- --lr-color-mix-partner (which follows the text colour), so it reads as a distinctly deeper step
73
- than hover in both light and dark themes rather than repeating it. */
74
- [part='request']:active {
76
+ [part='request']:not(:disabled):active {
75
77
  background: color-mix(in oklab, var(--lr-color-surface-raised), var(--lr-color-mix-partner) var(--lr-color-mix-active));
76
78
  }
77
79
 
@@ -68,9 +68,6 @@ import{css}from"lit";const styles=css`
68
68
  }
69
69
  [part='restore-button']:hover, [part='copy-button']:hover, [part='download-button']:hover,
70
70
  [part='view-button']:hover { background: var(--lr-color-brand-quiet); color: var(--lr-color-brand); }
71
- /* Pressed is the hovered tint pushed a further --lr-color-mix-active toward
72
- --lr-color-mix-partner (which follows the text colour), so it reads as a distinctly deeper step
73
- than hover in both light and dark themes rather than repeating it. */
74
71
  [part='restore-button']:active, [part='copy-button']:active, [part='download-button']:active,
75
72
  [part='view-button']:active {
76
73
  background: color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active));
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{safeMediaSrc}from"../../../internal/safe-url.js";import{srOnly}from"../../../internal/a11y.js";import{styles}from"./browser-frame.styles.js";import{literalSetConverter,trueDefaultBooleanConverter}from"../../../internal/converters.js";import{styleMap}from"lit/directives/style-map.js";import{finiteRange}from"../../../internal/numbers.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{overallSemanticLabel,overallSemanticRole}from"../semantic-owner.js";import{firstByIdentity}from"../collection-identity.js";import{LYRA_DEFAULT_browserFrameControllerAgent,LYRA_DEFAULT_browserFrameControllerUser,LYRA_DEFAULT_browserFrameHandBack,LYRA_DEFAULT_browserFrameLabel,LYRA_DEFAULT_browserFrameStatusConnecting,LYRA_DEFAULT_browserFrameStatusIdle,LYRA_DEFAULT_browserFrameStatusLive,LYRA_DEFAULT_browserFrameStatusStalled,LYRA_DEFAULT_browserFrameStop,LYRA_DEFAULT_browserFrameTakeOver,LYRA_DEFAULT_browserFrameUrlLabel,LYRA_DEFAULT_browserFrameViewOf,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_progress,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const BROWSER_FRAME_PHASE=literalSetConverter(["idle","connecting","streaming","stalled"],"idle");function containRect(containerW,containerH,naturalW,naturalH){if(naturalW===0||naturalH===0||containerW===0||containerH===0)return{left:0,top:0,width:containerW,height:containerH};const containerRatio=containerW/containerH,naturalRatio=naturalW/naturalH;if(naturalRatio>containerRatio){const height=containerW/naturalRatio;return{left:0,top:(containerH-height)/2,width:containerW,height}}const width=containerH*naturalRatio;return{left:(containerW-width)/2,top:0,width,height:containerH}}const STATUS_KEY={idle:"browserFrameStatusIdle",connecting:"browserFrameStatusConnecting",streaming:"browserFrameStatusLive",stalled:"browserFrameStatusStalled"};class LyraBrowserFrame extends LyraElement{constructor(){super(...arguments),this._frameSrc="",this.url="",this._phase="idle",this.controller="agent",this.pings=[],this.controls=!0,this.hasDefaultSlotContent=!1,this.contentRect=null,this.viewportObserverGeneration=0,this.suppressNextStatusAnnouncement=!0,this.onSlotChange=e=>{this.hasDefaultSlotContent=e.target.assignedElements({flatten:!0}).length>0,this.contentRect=null,this.requestUpdate()},this.onFrameLoad=()=>{this.observeViewport(),this.recomputeContentRect()},this.onFrameError=()=>{this.contentRect=null},this.onTakeOver=()=>{const requested=this.controller==="agent"?"user":"agent";this.emit("lr-take-over",{controller:requested})}}static{this.defaultStrings={...super.defaultStrings,browserFrameControllerAgent:LYRA_DEFAULT_browserFrameControllerAgent,browserFrameControllerUser:LYRA_DEFAULT_browserFrameControllerUser,browserFrameHandBack:LYRA_DEFAULT_browserFrameHandBack,browserFrameLabel:LYRA_DEFAULT_browserFrameLabel,browserFrameStatusConnecting:LYRA_DEFAULT_browserFrameStatusConnecting,browserFrameStatusIdle:LYRA_DEFAULT_browserFrameStatusIdle,browserFrameStatusLive:LYRA_DEFAULT_browserFrameStatusLive,browserFrameStatusStalled:LYRA_DEFAULT_browserFrameStatusStalled,browserFrameStop:LYRA_DEFAULT_browserFrameStop,browserFrameTakeOver:LYRA_DEFAULT_browserFrameTakeOver,browserFrameUrlLabel:LYRA_DEFAULT_browserFrameUrlLabel,browserFrameViewOf:LYRA_DEFAULT_browserFrameViewOf,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,progress:LYRA_DEFAULT_progress,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["pings"])}static{this.styles=[LyraElement.styles,styles,srOnly]}get frameSrc(){return this._frameSrc}set frameSrc(next){const old=this._frameSrc;this._frameSrc=next??"",old!==this._frameSrc&&(this.contentRect=null,this.requestUpdate("frameSrc",old))}get phase(){return this._phase}set phase(next){const normalized=BROWSER_FRAME_PHASE.normalizeReflected(this,"phase",next),old=this._phase;old!==normalized&&(this._phase=normalized,this.requestUpdate("phase",old))}syncStatusAnnouncementSink(){this.isConnected&&this.statusAnnouncementSink?.element.ownerDocument!==this.ownerDocument&&(this.statusAnnouncementSink?.release(),this.statusAnnouncementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}connectedCallback(){super.connectedCallback(),this.syncStatusAnnouncementSink(),this.hasUpdated&&(this.suppressNextStatusAnnouncement=!0,this.requestUpdate(),this.observeViewport(),this.recomputeContentRect())}disconnectedCallback(){super.disconnectedCallback(),this.resetViewportObserver(),this.statusAnnouncementSink?.release(),this.statusAnnouncementSink=void 0,this.suppressNextStatusAnnouncement=!0}adoptedCallback(){super.adoptedCallback(),this.resetViewportObserver(),this.statusAnnouncementSink?.release(),this.statusAnnouncementSink=void 0,this.suppressNextStatusAnnouncement=!0}willUpdate(changed){super.willUpdate(changed),this.hasUpdated&&!this.suppressNextStatusAnnouncement&&changed.has("phase")&&this.statusAnnouncementSink?.announce(this.localize(STATUS_KEY[this.phase]))}updated(_changed){super.updated(_changed),this.suppressNextStatusAnnouncement=!1}observeViewport(){const viewport=this.renderRoot.querySelector('[part="viewport"]'),ownerDocument=this.ownerDocument;if(!this.isConnected||!viewport||this.viewportResizeObserver&&this.viewportObserverDocument===ownerDocument&&this.viewportObserverTarget===viewport)return;this.resetViewportObserver();const ResizeObserverCtor=ownerDocument.defaultView?.ResizeObserver;if(!ResizeObserverCtor)return;const generation=this.viewportObserverGeneration,observer=new ResizeObserverCtor(()=>{this.viewportResizeObserver!==observer||this.viewportObserverGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument||this.viewportObserverTarget!==viewport||this.recomputeContentRect()});this.viewportResizeObserver=observer,this.viewportObserverDocument=ownerDocument,this.viewportObserverTarget=viewport,observer.observe(viewport)}resetViewportObserver(){this.viewportObserverGeneration+=1,this.viewportResizeObserver?.disconnect(),this.viewportResizeObserver=void 0,this.viewportObserverDocument=void 0,this.viewportObserverTarget=void 0}recomputeContentRect(){const viewport=this.renderRoot.querySelector('[part="viewport"]'),img=this.renderRoot.querySelector('[part="frame"]');if(!viewport||!img||!img.naturalWidth||!img.naturalHeight){this.contentRect=null;return}this.contentRect=containRect(viewport.clientWidth,viewport.clientHeight,img.naturalWidth,img.naturalHeight)}pingStyle(ping){const x=finiteRange(ping.x,0,0,100),y=finiteRange(ping.y,0,0,100),rect=this.contentRect;return rect?styleMap({left:`${rect.left+x/100*rect.width}px`,top:`${rect.top+y/100*rect.height}px`}):styleMap({left:`${x}%`,top:`${y}%`})}render(){const safeSrc=safeMediaSrc(this.frameSrc);return html`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{safeMediaSrc}from"../../../internal/safe-url.js";import{srOnly}from"../../../internal/a11y.js";import{styles}from"./browser-frame.styles.js";import{literalSetConverter,trueDefaultBooleanConverter}from"../../../internal/converters.js";import{styleMap}from"lit/directives/style-map.js";import{finiteRange}from"../../../internal/numbers.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{overallSemanticLabel,overallSemanticRole}from"../semantic-owner.js";import{firstByIdentity}from"../collection-identity.js";import{LYRA_DEFAULT_browserFrameControllerAgent,LYRA_DEFAULT_browserFrameControllerUser,LYRA_DEFAULT_browserFrameHandBack,LYRA_DEFAULT_browserFrameLabel,LYRA_DEFAULT_browserFrameStatusConnecting,LYRA_DEFAULT_browserFrameStatusIdle,LYRA_DEFAULT_browserFrameStatusLive,LYRA_DEFAULT_browserFrameStatusStalled,LYRA_DEFAULT_browserFrameStop,LYRA_DEFAULT_browserFrameTakeOver,LYRA_DEFAULT_browserFrameUrlLabel,LYRA_DEFAULT_browserFrameViewOf,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_progress,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const BROWSER_FRAME_PHASE=literalSetConverter(["idle","connecting","streaming","stalled"],"idle");function containRect(containerW,containerH,naturalW,naturalH){if(naturalW===0||naturalH===0||containerW===0||containerH===0)return{left:0,top:0,width:containerW,height:containerH};const containerRatio=containerW/containerH,naturalRatio=naturalW/naturalH;if(naturalRatio>containerRatio){const height=containerW/naturalRatio;return{left:0,top:(containerH-height)/2,width:containerW,height}}const width=containerH*naturalRatio;return{left:(containerW-width)/2,top:0,width,height:containerH}}const STATUS_KEY={idle:"browserFrameStatusIdle",connecting:"browserFrameStatusConnecting",streaming:"browserFrameStatusLive",stalled:"browserFrameStatusStalled"};class LyraBrowserFrame extends LyraElement{constructor(){super(...arguments),this._frameSrc="",this.url="",this._phase="idle",this.controller="agent",this.pings=[],this.controls=!0,this.hasDefaultSlotContent=!1,this.contentRect=null,this.viewportObserverGeneration=0,this.suppressNextStatusAnnouncement=!0,this.onSlotChange=e=>{this.hasDefaultSlotContent=e.target.assignedElements({flatten:!0}).length>0,this.contentRect=null,this.requestUpdate()},this.onFrameLoad=()=>{this.observeViewport(),this.recomputeContentRect()},this.onFrameError=()=>{this.contentRect=null},this.onTakeOver=()=>{const requested=this.controller==="agent"?"user":"agent";this.emit("lr-take-over",{controller:requested})}}static{this.defaultStrings={...super.defaultStrings,browserFrameControllerAgent:LYRA_DEFAULT_browserFrameControllerAgent,browserFrameControllerUser:LYRA_DEFAULT_browserFrameControllerUser,browserFrameHandBack:LYRA_DEFAULT_browserFrameHandBack,browserFrameLabel:LYRA_DEFAULT_browserFrameLabel,browserFrameStatusConnecting:LYRA_DEFAULT_browserFrameStatusConnecting,browserFrameStatusIdle:LYRA_DEFAULT_browserFrameStatusIdle,browserFrameStatusLive:LYRA_DEFAULT_browserFrameStatusLive,browserFrameStatusStalled:LYRA_DEFAULT_browserFrameStatusStalled,browserFrameStop:LYRA_DEFAULT_browserFrameStop,browserFrameTakeOver:LYRA_DEFAULT_browserFrameTakeOver,browserFrameUrlLabel:LYRA_DEFAULT_browserFrameUrlLabel,browserFrameViewOf:LYRA_DEFAULT_browserFrameViewOf,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,progress:LYRA_DEFAULT_progress,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["pings"])}static{this.styles=[LyraElement.styles,styles,srOnly]}get frameSrc(){return this._frameSrc}set frameSrc(next){const old=this._frameSrc;this._frameSrc=next??"",old!==this._frameSrc&&(this.contentRect=null,this.requestUpdate("frameSrc",old))}get phase(){return this._phase}set phase(next){const normalized=BROWSER_FRAME_PHASE.normalizeReflected(this,"phase",next),old=this._phase;old!==normalized&&(this._phase=normalized,this.requestUpdate("phase",old))}syncStatusAnnouncementSink(){this.isConnected&&this.statusAnnouncementSink?.element.ownerDocument!==this.ownerDocument&&(this.statusAnnouncementSink?.release(),this.statusAnnouncementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}connectedCallback(){super.connectedCallback(),this.syncStatusAnnouncementSink(),this.hasUpdated&&(this.suppressNextStatusAnnouncement=!0,this.requestUpdate(),this.observeViewport(),this.recomputeContentRect())}disconnectedCallback(){super.disconnectedCallback(),this.resetViewportObserver(),this.statusAnnouncementSink?.release(),this.statusAnnouncementSink=void 0,this.suppressNextStatusAnnouncement=!0}adoptedCallback(){super.adoptedCallback(),this.resetViewportObserver(),this.statusAnnouncementSink?.release(),this.statusAnnouncementSink=void 0,this.suppressNextStatusAnnouncement=!0}willUpdate(changed){super.willUpdate(changed),this.hasUpdated&&!this.suppressNextStatusAnnouncement&&changed.has("phase")&&this.statusAnnouncementSink?.announce(this.localize(STATUS_KEY[this.phase]))}updated(_changed){super.updated(_changed),this.suppressNextStatusAnnouncement=!1}observeViewport(){const viewport=this.renderRoot.querySelector('[part="viewport"]'),ownerDocument=this.ownerDocument;if(!this.isConnected||!viewport||this.viewportResizeObserver&&this.viewportObserverDocument===ownerDocument&&this.viewportObserverTarget===viewport)return;this.resetViewportObserver();const ResizeObserverCtor=ownerDocument.defaultView?.ResizeObserver;if(!ResizeObserverCtor)return;const generation=this.viewportObserverGeneration,observer=new ResizeObserverCtor(()=>{this.viewportResizeObserver!==observer||this.viewportObserverGeneration!==generation||!this.isConnected||this.ownerDocument!==ownerDocument||this.viewportObserverTarget!==viewport||this.recomputeContentRect()});this.viewportResizeObserver=observer,this.viewportObserverDocument=ownerDocument,this.viewportObserverTarget=viewport,observer.observe(viewport)}resetViewportObserver(){this.viewportObserverGeneration+=1,this.viewportResizeObserver?.disconnect(),this.viewportResizeObserver=void 0,this.viewportObserverDocument=void 0,this.viewportObserverTarget=void 0}recomputeContentRect(){const viewport=this.renderRoot.querySelector('[part="viewport"]'),img=this.renderRoot.querySelector('[part="frame"]');if(!viewport||!img||!img.naturalWidth||!img.naturalHeight){this.contentRect=null;return}this.contentRect=containRect(viewport.clientWidth,viewport.clientHeight,img.naturalWidth,img.naturalHeight)}pingStyle(ping){const x=finiteRange(ping.x,0,0,100),y=finiteRange(ping.y,0,0,100),rect=this.contentRect;return rect?styleMap({left:`${rect.left+x/100*rect.width}px`,top:`${rect.top+y/100*rect.height}px`}):styleMap({left:`${x}%`,top:`${y}%`})}render(){const safeSrc=safeMediaSrc(this.frameSrc);return html`
2
2
  <div
3
3
  part="base"
4
4
  role=${overallSemanticRole(this,"group")??nothing}
@@ -1,8 +1,6 @@
1
1
  import{css}from"lit";const styles=css`
2
2
  :host {
3
3
  display: block;
4
- /* Makes the host a query container so the @container rule below reacts to the frame's own
5
- allocated width (a sidebar, a split pane, a dialog) instead of the viewport's. */
6
4
  container-type: inline-size;
7
5
  contain-intrinsic-inline-size: var(--lr-size-20rem);
8
6
  }
@@ -59,9 +57,6 @@ import{css}from"lit";const styles=css`
59
57
  [part='stop-button']:hover {
60
58
  background: var(--lr-color-brand-quiet);
61
59
  }
62
- /* Pressed is the hovered tint pushed a further --lr-color-mix-active toward
63
- --lr-color-mix-partner (which follows the text colour), so it reads as a distinctly deeper step
64
- than hover in both light and dark themes rather than repeating it. */
65
60
  [part='take-over-button']:active,
66
61
  [part='stop-button']:active {
67
62
  background: color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active));
@@ -88,6 +83,9 @@ import{css}from"lit";const styles=css`
88
83
  block-size: 100%;
89
84
  object-fit: contain;
90
85
  }
86
+ ::slotted([hidden]:not([hidden='until-found' i])) {
87
+ display: none;
88
+ }
91
89
  [part='ping'] {
92
90
  position: absolute;
93
91
  inline-size: var(--lr-size-16px);
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteCount,finiteRange}from"../../../internal/numbers.js";import{styles}from"./commit-card.styles.js";import{getDateTimeFormat}from"../../../internal/intl-cache.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{overallSemanticLabel,overallSemanticRole}from"../semantic-owner.js";import{firstByIdentity}from"../collection-identity.js";import{writeClipboardText}from"../../../internal/clipboard.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_commitCardCopyHash,LYRA_DEFAULT_commitCardDiffSummary,LYRA_DEFAULT_commitCardHideFiles,LYRA_DEFAULT_commitCardLabel,LYRA_DEFAULT_commitCardShowFiles,LYRA_DEFAULT_copied,LYRA_DEFAULT_copy,LYRA_DEFAULT_copyFailed,LYRA_DEFAULT_details,LYRA_DEFAULT_gitStatusAdded,LYRA_DEFAULT_gitStatusConflicted,LYRA_DEFAULT_gitStatusDeleted,LYRA_DEFAULT_gitStatusIgnored,LYRA_DEFAULT_gitStatusModified,LYRA_DEFAULT_gitStatusRenamed,LYRA_DEFAULT_gitStatusUntracked,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_progress,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const GIT_STATUS_LETTER={added:"A",modified:"M",deleted:"D",renamed:"R",untracked:"U",conflicted:"C",ignored:"!"},MAX_DATE_EPOCH_MS=864e13,GIT_STATUS_KEY={added:"gitStatusAdded",modified:"gitStatusModified",deleted:"gitStatusDeleted",renamed:"gitStatusRenamed",untracked:"gitStatusUntracked",conflicted:"gitStatusConflicted",ignored:"gitStatusIgnored"};class LyraCommitCard extends LyraElement{constructor(){super(...arguments),this.hash="",this.message="",this.author="",this.files=[],this.filesExpanded=!1,this.copyable=!0,this.compact=!1,this.frame="card",this.copyStatus="rest",this.copyGeneration=0,this.onCopy=()=>{this.copyHash()},this.toggleFiles=()=>{this.filesExpanded=!this.filesExpanded,this.emit("lr-toggle",{collapsed:!this.filesExpanded})}}static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,commitCardCopyHash:LYRA_DEFAULT_commitCardCopyHash,commitCardDiffSummary:LYRA_DEFAULT_commitCardDiffSummary,commitCardHideFiles:LYRA_DEFAULT_commitCardHideFiles,commitCardLabel:LYRA_DEFAULT_commitCardLabel,commitCardShowFiles:LYRA_DEFAULT_commitCardShowFiles,copied:LYRA_DEFAULT_copied,copy:LYRA_DEFAULT_copy,copyFailed:LYRA_DEFAULT_copyFailed,details:LYRA_DEFAULT_details,gitStatusAdded:LYRA_DEFAULT_gitStatusAdded,gitStatusConflicted:LYRA_DEFAULT_gitStatusConflicted,gitStatusDeleted:LYRA_DEFAULT_gitStatusDeleted,gitStatusIgnored:LYRA_DEFAULT_gitStatusIgnored,gitStatusModified:LYRA_DEFAULT_gitStatusModified,gitStatusRenamed:LYRA_DEFAULT_gitStatusRenamed,gitStatusUntracked:LYRA_DEFAULT_gitStatusUntracked,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,progress:LYRA_DEFAULT_progress,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["files"])}static{this.styles=[LyraElement.styles,styles]}get normalizedFiles(){return firstByIdentity(Array.isArray(this.files)?this.files:[],file=>file.path)}disconnectedCallback(){super.disconnectedCallback(),this.resetCopyFeedback()}adoptedCallback(){super.adoptedCallback(),this.resetCopyFeedback()}cancelCopyTimer(){const timer=this.copyTimer;this.copyTimer=void 0,timer&&timer.owner.clearTimeout(timer.handle)}resetCopyFeedback(){this.copyGeneration+=1,this.cancelCopyTimer(),this.copyStatus="rest"}get subject(){return this.message.split(`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteCount,finiteRange}from"../../../internal/numbers.js";import{styles}from"./commit-card.styles.js";import{getDateTimeFormat}from"../../../internal/intl-cache.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{overallSemanticLabel,overallSemanticRole}from"../semantic-owner.js";import{firstByIdentity}from"../collection-identity.js";import{writeClipboardText}from"../../../internal/clipboard.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_commitCardCopyHash,LYRA_DEFAULT_commitCardDiffSummary,LYRA_DEFAULT_commitCardHideFiles,LYRA_DEFAULT_commitCardLabel,LYRA_DEFAULT_commitCardShowFiles,LYRA_DEFAULT_copied,LYRA_DEFAULT_copy,LYRA_DEFAULT_copyFailed,LYRA_DEFAULT_details,LYRA_DEFAULT_gitStatusAdded,LYRA_DEFAULT_gitStatusConflicted,LYRA_DEFAULT_gitStatusDeleted,LYRA_DEFAULT_gitStatusIgnored,LYRA_DEFAULT_gitStatusModified,LYRA_DEFAULT_gitStatusRenamed,LYRA_DEFAULT_gitStatusUntracked,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_progress,LYRA_DEFAULT_search,LYRA_DEFAULT_select}from"../../../internal/default-strings.generated.js";const GIT_STATUS_LETTER={added:"A",modified:"M",deleted:"D",renamed:"R",untracked:"U",conflicted:"C",ignored:"!"},MAX_DATE_EPOCH_MS=864e13,GIT_STATUS_KEY={added:"gitStatusAdded",modified:"gitStatusModified",deleted:"gitStatusDeleted",renamed:"gitStatusRenamed",untracked:"gitStatusUntracked",conflicted:"gitStatusConflicted",ignored:"gitStatusIgnored"};class LyraCommitCard extends LyraElement{constructor(){super(...arguments),this.hash="",this.message="",this.author="",this.files=[],this.filesExpanded=!1,this.copyable=!0,this.compact=!1,this.frame="card",this.copyStatus="rest",this.copyGeneration=0,this.onCopy=()=>{this.copyHash()},this.toggleFiles=()=>{this.filesExpanded=!this.filesExpanded,this.emit("lr-toggle",{collapsed:!this.filesExpanded})}}static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,commitCardCopyHash:LYRA_DEFAULT_commitCardCopyHash,commitCardDiffSummary:LYRA_DEFAULT_commitCardDiffSummary,commitCardHideFiles:LYRA_DEFAULT_commitCardHideFiles,commitCardLabel:LYRA_DEFAULT_commitCardLabel,commitCardShowFiles:LYRA_DEFAULT_commitCardShowFiles,copied:LYRA_DEFAULT_copied,copy:LYRA_DEFAULT_copy,copyFailed:LYRA_DEFAULT_copyFailed,details:LYRA_DEFAULT_details,gitStatusAdded:LYRA_DEFAULT_gitStatusAdded,gitStatusConflicted:LYRA_DEFAULT_gitStatusConflicted,gitStatusDeleted:LYRA_DEFAULT_gitStatusDeleted,gitStatusIgnored:LYRA_DEFAULT_gitStatusIgnored,gitStatusModified:LYRA_DEFAULT_gitStatusModified,gitStatusRenamed:LYRA_DEFAULT_gitStatusRenamed,gitStatusUntracked:LYRA_DEFAULT_gitStatusUntracked,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,progress:LYRA_DEFAULT_progress,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select}}static{this.ownedCollectionProperties=Object.freeze(["files"])}static{this.styles=[LyraElement.styles,styles]}get normalizedFiles(){return firstByIdentity(Array.isArray(this.files)?this.files:[],file=>file.path)}disconnectedCallback(){super.disconnectedCallback(),this.resetCopyFeedback()}adoptedCallback(){super.adoptedCallback(),this.resetCopyFeedback()}cancelCopyTimer(){const timer=this.copyTimer;this.copyTimer=void 0,timer&&timer.owner.clearTimeout(timer.handle)}resetCopyFeedback(){this.copyGeneration+=1,this.cancelCopyTimer(),this.copyStatus="rest"}get subject(){return this.message.split(`
2
2
  `)[0]??""}get body(){return this.message.split(`
3
3
  `).slice(1).join(`
4
4
  `).trim()}get validTimestamp(){if(!(this.timestamp==null||!Number.isFinite(this.timestamp)||this.timestamp>MAX_DATE_EPOCH_MS))return finiteRange(this.timestamp,this.timestamp,0)}get totals(){return this.normalizedFiles.reduce((acc,file)=>({additions:finiteCount(acc.additions+finiteCount(file.additions)),deletions:finiteCount(acc.deletions+finiteCount(file.deletions))}),{additions:0,deletions:0})}async copyHash(){const text=this.hash,owner=this.isConnected?this.ownerDocument.defaultView:null,generation=++this.copyGeneration;this.cancelCopyTimer(),this.copyStatus="rest";const outcome=await writeClipboardText(owner,text);if(!(!owner||!this.isCurrentCopy(generation,owner))){if(!outcome.ok){this.showCopyStatus("error",generation,owner),this.emit("lr-error"),this.emit("lr-copy-error",outcome);return}this.showCopyStatus("success",generation,owner),this.emit("lr-copy",outcome)}}isCurrentCopy(generation,owner){return this.isConnected&&generation===this.copyGeneration&&this.ownerDocument.defaultView===owner}showCopyStatus(status,generation,owner){this.copyStatus=status,this.cancelCopyTimer();let handle=0;handle=owner.setTimeout(()=>{this.copyTimer?.owner!==owner||this.copyTimer.handle!==handle||this.copyTimer.generation!==generation||generation!==this.copyGeneration||!this.isConnected||this.ownerDocument.defaultView!==owner||(this.copyTimer=void 0,this.copyStatus="rest")},1500),this.copyTimer={owner,handle,generation}}render(){const files=this.normalizedFiles,{additions,deletions}=this.totals,timestamp=this.validTimestamp;return html`
@@ -12,16 +12,9 @@ import{css}from"lit";const styles=css`
12
12
  border-radius: var(--lr-radius);
13
13
  padding: var(--lr-space-m);
14
14
  }
15
- /* Density escape -- same convention as lr-agent-run's compact. The tuned value sits behind an
16
- inline var() fallback (rather than a :host declaration, which every instance would re-declare
17
- and so shadow any ancestor value) so a consumer can retune it from outside without restating
18
- the whole rule; the fallback is the pre-existing value, so an unset card renders unchanged. */
19
15
  :host([compact]) [part='base'] {
20
16
  padding: var(--lr-commit-card-compact-padding, var(--lr-space-s));
21
17
  }
22
- /* MUST stay after :host([compact]): both selectors are :host([x]) [part='base'], i.e. equal
23
- specificity, so source order alone decides which padding wins when a card is both compact and
24
- frame="plain". plain is the stronger statement ("no chrome at all"), so it goes last. */
25
18
  :host([frame='plain']) [part='base'] {
26
19
  padding: 0;
27
20
  border: 0;
@@ -76,9 +69,6 @@ import{css}from"lit";const styles=css`
76
69
  cursor: pointer;
77
70
  padding: var(--lr-space-xs) 0;
78
71
  }
79
- /* Pressed, here and on [part='file'] / [part='copy-button'] below, is the hovered tint pushed a
80
- further --lr-color-mix-active toward --lr-color-mix-partner (which follows the text colour), so
81
- it reads as a distinctly deeper step than hover in both light and dark themes. */
82
72
  [part='files-toggle']:hover {
83
73
  background: var(--lr-color-brand-quiet);
84
74
  }
@@ -95,11 +95,6 @@ import{css}from"lit";const styles=css`
95
95
  [part="vote-button"]:hover {
96
96
  background: var(--lr-color-brand-quiet);
97
97
  }
98
- /* Pressed is the hovered tint pushed a further --lr-color-mix-active toward
99
- --lr-color-mix-partner (which follows the text colour), so it reads as a distinctly deeper step
100
- than hover in both light and dark themes rather than repeating it. Placed before the selected
101
- rule deliberately: once a vote is cast, the selected treatment is the state worth showing, and
102
- the button's own :hover already answers the pointer. */
103
98
  [part="vote-button"]:active {
104
99
  background: color-mix(
105
100
  in oklab,
@@ -107,7 +102,7 @@ import{css}from"lit";const styles=css`
107
102
  var(--lr-color-mix-partner) var(--lr-color-mix-active)
108
103
  );
109
104
  }
110
- [part="vote-button"]:where([data-selected]) {
105
+ [part="vote-button"][data-selected] {
111
106
  background: var(
112
107
  --lr-compare-panel-selected-background,
113
108
  var(--lr-color-brand-quiet)
@@ -122,6 +117,16 @@ import{css}from"lit";const styles=css`
122
117
  var(--lr-font-weight-semibold)
123
118
  );
124
119
  }
120
+ [part="vote-button"][data-selected]:active {
121
+ background: color-mix(
122
+ in oklab,
123
+ var(
124
+ --lr-compare-panel-selected-background,
125
+ var(--lr-color-brand-quiet)
126
+ ),
127
+ var(--lr-color-mix-partner) var(--lr-color-mix-active)
128
+ );
129
+ }
125
130
  [part="vote-button"]:disabled {
126
131
  opacity: var(--lr-opacity-disabled);
127
132
  cursor: not-allowed;
@@ -1,4 +1,4 @@
1
- var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing,svg}from"lit";import{property,query,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hasRealContent,nextId}from"../../../internal/a11y.js";import{resolveLocalizedParts}from"../../../internal/localization-runtime.js";import"../../layout/details/details.class.js";import"../../utility/json-viewer/json-viewer.class.js";import"../../utility/live-region/live-region.class.js";import"../../forms/button/button.class.js";import{styles}from"./confirm-bar.styles.js";import{approvalAction}from"../approval-state.js";import{LYRA_DEFAULT_approve,LYRA_DEFAULT_collapse,LYRA_DEFAULT_confirmApproved,LYRA_DEFAULT_confirmApprovedAnnounce,LYRA_DEFAULT_confirmDenied,LYRA_DEFAULT_confirmDeniedAnnounce,LYRA_DEFAULT_deny,LYRA_DEFAULT_details,LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_progress,LYRA_DEFAULT_restore,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_toolApprovalArgsLabel,LYRA_DEFAULT_toolApprovalGenericTool,LYRA_DEFAULT_toolApprovalHeading}from"../../../internal/default-strings.generated.js";const ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function approvedIcon(){return svg`
1
+ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing,svg}from"lit";import{property,query,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{hasRealContent,nextId}from"../../../internal/a11y.js";import{resolveLocalizedParts}from"../../../internal/localization-runtime.js";import"../../layout/details/details.class.js";import"../../utility/json-viewer/json-viewer.class.js";import"../../utility/live-region/live-region.class.js";import"../../forms/button/button.class.js";import{styles}from"./confirm-bar.styles.js";import{approvalAction}from"../approval-state.js";import{LYRA_DEFAULT_approve,LYRA_DEFAULT_collapse,LYRA_DEFAULT_confirmApproved,LYRA_DEFAULT_confirmApprovedAnnounce,LYRA_DEFAULT_confirmDenied,LYRA_DEFAULT_confirmDeniedAnnounce,LYRA_DEFAULT_deny,LYRA_DEFAULT_details,LYRA_DEFAULT_fieldRequired,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_progress,LYRA_DEFAULT_restore,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_toolApprovalArgsLabel,LYRA_DEFAULT_toolApprovalGenericTool,LYRA_DEFAULT_toolApprovalHeading}from"../../../internal/default-strings.generated.js";const ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function approvedIcon(){return svg`
2
2
  <svg width="1em" height="1em" viewBox=${ICON_VIEW_BOX} fill="none" stroke="currentColor" stroke-width=${ICON_STROKE_WIDTH} stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
3
3
  <circle cx="12" cy="12" r="9"></circle>
4
4
  <polyline points="8 12.5 11 15.5 16 9.5"></polyline>
@@ -9,7 +9,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
9
9
  <line x1="9" y1="9" x2="15" y2="15"></line>
10
10
  <line x1="15" y1="9" x2="9" y2="15"></line>
11
11
  </svg>
12
- `}class LyraConfirmBar extends LyraElement{constructor(){super(...arguments),this.toolName="",this.heading="",this.args=void 0,this.decision=null,this.pending=null,this.variant="neutral",this.compact=!1,this.frame="card",this.hasBodySlot=!1,this.headingId=nextId("confirm-bar-heading"),this.onBodySlotChange=e=>{this.hasBodySlot=hasRealContent(e.target.assignedNodes({flatten:!0}))}}static{this.defaultStrings={...super.defaultStrings,approve:LYRA_DEFAULT_approve,collapse:LYRA_DEFAULT_collapse,confirmApproved:LYRA_DEFAULT_confirmApproved,confirmApprovedAnnounce:LYRA_DEFAULT_confirmApprovedAnnounce,confirmDenied:LYRA_DEFAULT_confirmDenied,confirmDeniedAnnounce:LYRA_DEFAULT_confirmDeniedAnnounce,deny:LYRA_DEFAULT_deny,details:LYRA_DEFAULT_details,fieldRequired:LYRA_DEFAULT_fieldRequired,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,progress:LYRA_DEFAULT_progress,restore:LYRA_DEFAULT_restore,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,toolApprovalArgsLabel:LYRA_DEFAULT_toolApprovalArgsLabel,toolApprovalGenericTool:LYRA_DEFAULT_toolApprovalGenericTool,toolApprovalHeading:LYRA_DEFAULT_toolApprovalHeading}}static{this.styles=[LyraElement.styles,styles]}willUpdate(changed){if(super.willUpdate(changed),!this.hasUpdated){const defaultSlotNodes=Array.from(this.childNodes).filter(node=>node.nodeType!==Node.ELEMENT_NODE||!node.getAttribute("slot"));this.hasBodySlot=hasRealContent(defaultSlotNodes)}changed.has("decision")&&changed.get("decision")!==void 0&&this.decision!=null&&this.pending!=null&&(this.statusEl?.focus(),this.pending=null)}decide(next){if(this.decision!=null||this.pending!=null)return;const eventName=next==="approved"?"lr-approve":"lr-deny",detail=next==="approved"?{args:this.args}:void 0;if(this.emit(eventName,detail,{cancelable:!0}).defaultPrevented){this.statusEl?.focus(),this.pending=approvalAction(next);return}this.statusEl?.focus(),this.decision=next}updated(changed){if(super.updated(changed),changed.has("decision")&&changed.get("decision")!==void 0&&this.decision!=null){const key=this.decision==="approved"?"confirmApprovedAnnounce":"confirmDeniedAnnounce";this.liveRegion?.announce(this.localize(key),{force:!0})}}renderHeading(){if(this.heading)return html`${this.heading}`;const toolName=this.toolName||this.localize("toolApprovalGenericTool"),template=this.localize("toolApprovalHeading"),pieces=resolveLocalizedParts(template,marker=>this.localize("toolApprovalHeading",void 0,{tool:marker}));return html`${pieces.map((piece,index)=>index<pieces.length-1?html`${piece}<span part="tool-name">${toolName}</span>`:piece)}`}statusText(){return this.decision==="approved"?this.localize("confirmApproved"):this.localize("confirmDenied")}stopNestedLifecycle(event){event.stopPropagation()}render(){const decided=this.decision!=null;return html`
12
+ `}class LyraConfirmBar extends LyraElement{constructor(){super(...arguments),this.toolName="",this.heading="",this.args=void 0,this.decision=null,this.pending=null,this.variant="neutral",this.compact=!1,this.frame="card",this.hasBodySlot=!1,this.headingId=nextId("confirm-bar-heading"),this.onBodySlotChange=e=>{this.hasBodySlot=hasRealContent(e.target.assignedNodes({flatten:!0}))}}static{this.defaultStrings={...super.defaultStrings,approve:LYRA_DEFAULT_approve,collapse:LYRA_DEFAULT_collapse,confirmApproved:LYRA_DEFAULT_confirmApproved,confirmApprovedAnnounce:LYRA_DEFAULT_confirmApprovedAnnounce,confirmDenied:LYRA_DEFAULT_confirmDenied,confirmDeniedAnnounce:LYRA_DEFAULT_confirmDeniedAnnounce,deny:LYRA_DEFAULT_deny,details:LYRA_DEFAULT_details,fieldRequired:LYRA_DEFAULT_fieldRequired,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,progress:LYRA_DEFAULT_progress,restore:LYRA_DEFAULT_restore,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,toolApprovalArgsLabel:LYRA_DEFAULT_toolApprovalArgsLabel,toolApprovalGenericTool:LYRA_DEFAULT_toolApprovalGenericTool,toolApprovalHeading:LYRA_DEFAULT_toolApprovalHeading}}static{this.styles=[LyraElement.styles,styles]}willUpdate(changed){if(super.willUpdate(changed),!this.hasUpdated){const defaultSlotNodes=Array.from(this.childNodes).filter(node=>node.nodeType!==Node.ELEMENT_NODE||!node.getAttribute("slot"));this.hasBodySlot=hasRealContent(defaultSlotNodes)}changed.has("decision")&&changed.get("decision")!==void 0&&this.decision!=null&&this.pending!=null&&(this.statusEl?.focus(),this.pending=null)}decide(next){if(this.decision!=null||this.pending!=null)return;const eventName=next==="approved"?"lr-approve":"lr-deny",detail=next==="approved"?{args:this.args}:void 0;if(this.emit(eventName,detail,{cancelable:!0}).defaultPrevented){this.statusEl?.focus(),this.pending=approvalAction(next);return}this.statusEl?.focus(),this.decision=next}updated(changed){if(super.updated(changed),changed.has("decision")&&changed.get("decision")!==void 0&&this.decision!=null){const key=this.decision==="approved"?"confirmApprovedAnnounce":"confirmDeniedAnnounce";this.liveRegion?.announce(this.localize(key),{force:!0})}}renderHeading(){if(this.heading)return html`${this.heading}`;const toolName=this.toolName||this.localize("toolApprovalGenericTool"),template=this.localize("toolApprovalHeading"),pieces=resolveLocalizedParts(template,marker=>this.localize("toolApprovalHeading",void 0,{tool:marker}));return html`${pieces.map((piece,index)=>index<pieces.length-1?html`${piece}<span part="tool-name">${toolName}</span>`:piece)}`}statusText(){return this.decision==="approved"?this.localize("confirmApproved"):this.localize("confirmDenied")}stopNestedLifecycle(event){event.stopPropagation()}render(){const decided=this.decision!=null;return html`
13
13
  <div part="base" role="group" aria-labelledby=${this.headingId}>
14
14
  <div part="heading" id=${this.headingId}>${this.renderHeading()}</div>
15
15
  <div part="body" ?hidden=${!this.hasBodySlot}><slot @slotchange=${this.onBodySlotChange}></slot></div>