@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
@@ -4,11 +4,6 @@ import{css}from"lit";const styles=css`
4
4
  min-inline-size: 0;
5
5
  container-type: inline-size;
6
6
  contain-intrinsic-inline-size: var(--lr-size-20rem);
7
- /* Both knobs read the shared control ladder, which owns every tier and matches both the s/m/l
8
- and small/medium/large spellings in one selector list. Keeping the public
9
- --lr-pagination-* names in front lets a consumer retune this component alone, while the
10
- values still come from one place. The literal fallbacks are the ladder's own "m" tier, so
11
- this sheet resolves to the resting control footprint on its own. */
12
7
  --_lr-pagination-control-size: var(
13
8
  --lr-form-control-height,
14
9
  var(--lr-size-2-5rem)
@@ -18,17 +13,7 @@ import{css}from"lit";const styles=css`
18
13
  var(--lr-font-size-m)
19
14
  );
20
15
  --_lr-pagination-control-radius: var(--lr-radius);
21
- /* Inner padding of the nav buttons and the page input. Exposed as a single knob (previously
22
- a hardcoded var(--lr-space-xs) repeated at both sites) so a consumer can adjust the icon /
23
- digit inset. Kept uniform across every tier -- today's padding is identical at every tier,
24
- and per-tier divergence would visibly change the current rendering, which must stay
25
- byte-identical. The control's outer footprint is fixed by --lr-pagination-control-size
26
- (border-box), so this only affects the inner inset, not the button size. */
27
16
  --_lr-pagination-control-padding: var(--lr-space-xs);
28
- /* Resting fill and border of every control, varied by the appearance variant below. Routed through two
29
- properties rather than one rule per appearance so the rule that consumes them stays at the
30
- specificity of a bare [part] selector -- a consumer's ::part(page) override has to be able
31
- to win, and an :host([appearance=...]) [part=...] rule would out-specify it. */
32
17
  --_lr-pagination-control-bg-default: var(--lr-color-surface);
33
18
  --_lr-pagination-control-border-color-default: var(--lr-color-border);
34
19
  }
@@ -123,14 +108,9 @@ import{css}from"lit";const styles=css`
123
108
  text-decoration: none;
124
109
  cursor: pointer;
125
110
  }
126
- /* A numbered page grows with its digits instead of clipping a four-digit page number, while the
127
- icon-only controls keep their square footprint. */
128
111
  [part~="page"] {
129
112
  inline-size: auto;
130
113
  }
131
- /* The applied page reads as a solid chip in every appearance -- which page you are on must not
132
- depend on which look the consumer picked. Declared after the appearance-driven rule above and
133
- at the same specificity, so a consumer ::part(page-current) override still wins. */
134
114
  [part~="page-current"] {
135
115
  border-color: var(--lr-pagination-current-border-color, transparent);
136
116
  background: var(--lr-pagination-current-bg, var(--lr-color-brand));
@@ -140,8 +120,6 @@ import{css}from"lit";const styles=css`
140
120
  [part~="ellipsis"] {
141
121
  color: var(--lr-color-text-quiet);
142
122
  }
143
- /* :where() zeroes every state qualifier's specificity contribution, so a consumer's
144
- ::part(previous-button):hover / ::part(next-button):hover override wins without !important. */
145
123
  [part~="first-button"]:where(:hover):where(:not(:disabled)):where(
146
124
  :not([aria-disabled="true"])
147
125
  ),
@@ -159,17 +137,13 @@ import{css}from"lit";const styles=css`
159
137
  ),
160
138
  [part~="page"]:where(:hover):where(:not(:disabled)):where(
161
139
  :not([aria-disabled="true"])
162
- ):where(:not([part~="page-current"])),
163
- [part="page-input"]:where(:hover):where(:not(:disabled)) {
140
+ ):where(:not([part~="page-current"])) {
164
141
  background: var(--lr-pagination-hover-bg, var(--lr-color-brand-quiet));
165
142
  border-color: var(
166
143
  --lr-pagination-hover-border-color,
167
144
  var(--lr-color-brand)
168
145
  );
169
146
  }
170
- /* Same selectors, same zeroed specificity, one step further toward --lr-color-mix-partner (which
171
- follows the text colour) -- so the pressed fill is unmistakably deeper than the hovered one in
172
- either theme, and a consumer's ::part(next-button):active still wins. */
173
147
  [part~="first-button"]:where(:active):where(:not(:disabled)):where(
174
148
  :not([aria-disabled="true"])
175
149
  ),
@@ -187,8 +161,7 @@ import{css}from"lit";const styles=css`
187
161
  ),
188
162
  [part~="page"]:where(:active):where(:not(:disabled)):where(
189
163
  :not([aria-disabled="true"])
190
- ):where(:not([part~="page-current"])),
191
- [part="page-input"]:where(:active):where(:not(:disabled)) {
164
+ ):where(:not([part~="page-current"])) {
192
165
  background: var(
193
166
  --lr-pagination-active-bg,
194
167
  color-mix(
@@ -202,15 +175,10 @@ import{css}from"lit";const styles=css`
202
175
  var(--lr-color-brand)
203
176
  );
204
177
  }
205
- /* The current page is already a brand chip; without its own :hover arm it would fall back to the
206
- rule above and visibly lighten under the pointer, reading as "not selected". */
207
178
  [part~="page-current"]:where(:hover) {
208
179
  background: var(--lr-pagination-current-hover-bg, var(--lr-color-brand));
209
180
  border-color: var(--lr-pagination-current-hover-border-color, transparent);
210
181
  }
211
- /* Pressing the page you are already on is a no-op, but it still has to acknowledge the click --
212
- the chip deepens rather than lightening, so it never momentarily reads as deselected. MUST stay
213
- after the generic :active rule above: both are (0,1,0) after :where(), so source order decides. */
214
182
  [part~="page-current"]:where(:active) {
215
183
  background: var(
216
184
  --lr-pagination-current-active-bg,
@@ -242,8 +210,6 @@ import{css}from"lit";const styles=css`
242
210
  cursor: not-allowed;
243
211
  opacity: var(--lr-opacity-disabled);
244
212
  }
245
- /* Link mode has no :disabled to hang off -- the anchors carry aria-disabled and lose their href
246
- instead, so the resting look has to follow that attribute. */
247
213
  [part~="button"]:where([aria-disabled="true"]) {
248
214
  cursor: not-allowed;
249
215
  opacity: var(--lr-opacity-disabled);
@@ -257,8 +223,6 @@ import{css}from"lit";const styles=css`
257
223
  justify-content: center;
258
224
  line-height: var(--lr-line-height-none);
259
225
  }
260
- /* The two chevrons of an edge control overlap slightly so they read as one doubled glyph rather
261
- than two separate arrows. */
262
226
  [part="first-icon"] slot > svg + svg,
263
227
  [part="last-icon"] slot > svg + svg {
264
228
  margin-inline-start: var(--lr-size-neg-4px);
@@ -319,11 +283,27 @@ import{css}from"lit";const styles=css`
319
283
  appearance: none;
320
284
  margin: 0;
321
285
  }
322
- /* :where() zeroes the [aria-invalid='true'] qualifier's specificity contribution -- otherwise
323
- this (0,2,0) rule would beat a consumer's own ::part(page-input) border-color override
324
- whenever the typed page is out of range. The color routes through a scoped cssprop so a
325
- consumer can retint just the invalid state without hijacking the shared --lr-color-danger
326
- token used everywhere else. */
286
+ [part="page-input"]:where(:hover):where(:not(:disabled)) {
287
+ background: var(--lr-pagination-hover-bg, var(--lr-color-brand-quiet));
288
+ border-color: var(
289
+ --lr-pagination-hover-border-color,
290
+ var(--lr-color-brand)
291
+ );
292
+ }
293
+ [part="page-input"]:where(:active):where(:not(:disabled)) {
294
+ background: var(
295
+ --lr-pagination-active-bg,
296
+ color-mix(
297
+ in oklab,
298
+ var(--lr-color-brand-quiet),
299
+ var(--lr-color-mix-partner) var(--lr-color-mix-active)
300
+ )
301
+ );
302
+ border-color: var(
303
+ --lr-pagination-active-border-color,
304
+ var(--lr-color-brand)
305
+ );
306
+ }
327
307
  [part="page-input"]:where([aria-invalid="true"]) {
328
308
  border-color: var(--lr-pagination-invalid-border, var(--lr-color-danger));
329
309
  }
@@ -338,9 +318,6 @@ import{css}from"lit";const styles=css`
338
318
  white-space: nowrap;
339
319
  border: 0;
340
320
  }
341
- /* Container-query lengths cannot reference custom properties. This is the
342
- documented 320px narrow-allocation baseline expressed in root-relative
343
- units so it still follows the page's type scale. */
344
321
  @container (max-inline-size: 20rem) {
345
322
  [part~="base"] {
346
323
  flex-direction: column;
@@ -19,6 +19,15 @@ export interface SequenceStripCategory {
19
19
  * localized unnamed-category label rather than exposing an internal id. */
20
20
  readonly label?: string;
21
21
  }
22
+ /** Detail of `lr-item-activate`: which strip item the user picked. */
23
+ export interface LyraSequenceStripActivateDetail {
24
+ readonly index: number;
25
+ readonly id: string;
26
+ readonly item: SequenceStripItem;
27
+ }
28
+ export interface LyraSequenceStripEventMap {
29
+ 'lr-item-activate': CustomEvent<LyraSequenceStripActivateDetail>;
30
+ }
22
31
  /**
23
32
  * `<lr-sequence-strip>` — a compact, one-thin-cell-per-item strip visualizing a sequence of
24
33
  * categorical states, with an optional secondary per-cell marker. Pure CSS/flex, no chart.js/SVG/
@@ -40,6 +49,10 @@ export interface SequenceStripCategory {
40
49
  * collection after changing it.
41
50
  *
42
51
  * @customElement lr-sequence-strip
52
+ * @event lr-item-activate - Fired when a cell is clicked, or activated with Enter/Space on the
53
+ * roving-tabindex focus. `detail: { index, id, item }` identifies the picked item. Not
54
+ * cancelable, and it does not move `selectedIndex` on its own -- the selection is controlled,
55
+ * so the consumer stays the single source of truth for a playback index this strip does not own.
43
56
  * @csspart base - The root strip wrapper (`role="list"`).
44
57
  * @csspart cell - Each named, roving-focus item cell, background-colored by its category.
45
58
  * @csspart marker - The small bottom marker on a cell whose item sets `marker: true`.
@@ -63,7 +76,7 @@ export interface SequenceStripCategory {
63
76
  * @status stable
64
77
  * @since 4.0.0
65
78
  */
66
- export declare class LyraSequenceStrip extends LyraElement {
79
+ export declare class LyraSequenceStrip extends LyraElement<LyraSequenceStripEventMap> {
67
80
  static styles: import("lit").CSSResultGroup[];
68
81
  private _items;
69
82
  private _categories;
@@ -79,6 +92,26 @@ export declare class LyraSequenceStrip extends LyraElement {
79
92
  * computes the summary from `items`/`categories`; an explicitly empty string renders as an
80
93
  * empty label rather than falling back to the auto-generated summary. */
81
94
  accessibleLabel?: string;
95
+ /**
96
+ * Index of the currently selected item, or `-1` (the default) for none — the controlled selection
97
+ * this strip's natural companion, `lr-sequence-playback`, scrubs through. Mirrors the shape
98
+ * `lr-lite-chart`'s `selectedIndices` and `lr-heatmap`'s `selectedCell` already establish.
99
+ *
100
+ * Controlled, not self-managing: activating a cell emits `lr-item-activate` and does **not**
101
+ * move the selection on its own, so the consumer stays the single source of truth and the
102
+ * component cannot drift from a playback index it does not own. An out-of-range or non-integer
103
+ * value selects nothing rather than throwing.
104
+ */
105
+ selectedIndex: number;
106
+ /** Whether `index` is the selected one, guarding a non-integer or out-of-range value. */
107
+ private isSelected;
108
+ /**
109
+ * Emits `lr-item-activate` for `index`.
110
+ *
111
+ * Not cancelable: nothing in this component branches on `defaultPrevented`, and the library's
112
+ * contract reserves cancelable events for real veto points.
113
+ */
114
+ private activateItem;
82
115
  /** Renders a static `[part="legend"]` key of every `categories` entry below the strip, so the
83
116
  * color-to-category mapping is readable without hovering each cell. Deliberately
84
117
  * non-interactive: unlike `<lr-graph-legend>` this toggles nothing and emits nothing — the
@@ -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{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{isRtl}from"../../../internal/rtl.js";import{sanitizeCssColor}from"../../../internal/safe-css.js";import{styles}from"./sequence-strip.styles.js";import{LYRA_DEFAULT_sequenceStripCategoryCount,LYRA_DEFAULT_sequenceStripEmpty,LYRA_DEFAULT_sequenceStripUnnamedCategory}from"../../../internal/default-strings.generated.js";const MAX_RENDERED_ITEMS=200,MAX_RENDERED_CATEGORIES=200,MAX_SEQUENCE_COLLECTION_ENTRIES=1e4;class LyraSequenceStrip extends LyraElement{constructor(){super(...arguments),this._items=[],this._categories=[],this.showLegend=!1,this.hoverIndex=null,this.keyboardIndex=null,this.restoringOwnedFocus=!1,this.focusRestoreGeneration=0}static{this.defaultStrings={...super.defaultStrings,sequenceStripCategoryCount:LYRA_DEFAULT_sequenceStripCategoryCount,sequenceStripEmpty:LYRA_DEFAULT_sequenceStripEmpty,sequenceStripUnnamedCategory:LYRA_DEFAULT_sequenceStripUnnamedCategory}}static{this.styles=[LyraElement.styles,styles]}get items(){return this._items}set items(value){const previous=this._items,seen=new Set,next=[];if(Array.isArray(value))for(const item of value.slice(0,MAX_SEQUENCE_COLLECTION_ENTRIES))try{if(!item||typeof item.id!="string"||item.id.trim().length===0||seen.has(item.id))continue;seen.add(item.id),next.push(Object.freeze({id:item.id,categoryId:typeof item.categoryId=="string"?item.categoryId:"",...item.marker===void 0?{}:{marker:!!item.marker},...typeof item.label=="string"?{label:item.label}:{}}))}catch{}this._items=Object.freeze(next),this.requestUpdate("items",previous)}get categories(){return this._categories}set categories(value){const previous=this._categories,seen=new Set,next=[];if(Array.isArray(value))for(const category of value.slice(0,MAX_SEQUENCE_COLLECTION_ENTRIES))try{if(!category||typeof category.id!="string"||category.id.trim().length===0||seen.has(category.id))continue;seen.add(category.id),next.push(Object.freeze({id:category.id,color:typeof category.color=="string"?category.color:"",...typeof category.label=="string"?{label:category.label}:{}}))}catch{}this._categories=Object.freeze(next),this.requestUpdate("categories",previous)}willUpdate(changed){if(super.willUpdate(changed),changed.has("items")){this.focusRestoreGeneration++,this.hoverIndex=null;const focusedCell=this.shadowRoot?.activeElement,focusedIndex=Number(focusedCell?.dataset.index);if(!Number.isInteger(focusedIndex)||focusedIndex<0){this.keyboardIndex=null;return}const focusedId=(changed.get("items")??[])[focusedIndex]?.id,retainedIndex=focusedId==null?-1:this.items.findIndex(item=>item.id===focusedId),nextIndex=retainedIndex>=0?retainedIndex:this.items.length?Math.min(focusedIndex,this.items.length-1):-1;this.keyboardIndex=nextIndex>=0?nextIndex:null,this.pendingFocusTarget=nextIndex>=0?nextIndex:"base",this.restoringOwnedFocus=!0}}updated(changed){super.updated(changed);const pending=this.pendingFocusTarget;if(pending===void 0)return;this.pendingFocusTarget=void 0;const generation=this.focusRestoreGeneration;this.scheduleAfterUpdate(()=>{try{if(generation!==this.focusRestoreGeneration||!this.isConnected)return;if(pending==="base"){this.shadowRoot?.querySelector('[part="base"]')?.focus();return}this.shadowRoot?.querySelector(`[part="cell"][data-index="${pending}"]`)?.focus()}finally{this.restoringOwnedFocus=!1}},"sequence-strip-focus")}disconnectedCallback(){this.focusRestoreGeneration++,this.pendingFocusTarget=void 0,this.restoringOwnedFocus=!1,this.hoverIndex=null,this.keyboardIndex=null,super.disconnectedCallback()}categoryMap(){return new Map(this.categories.map(category=>[category.id,category]))}categoryColor(categoryId,categories){return sanitizeCssColor(categories.get(categoryId)?.color)??"transparent"}categoryLabel(categoryId,categories){const label=categories.get(categoryId)?.label;return label!==void 0&&label.trim().length>0?label:this.localize("sequenceStripUnnamedCategory")}autoSummary(){const counts=new Map,categories=this.categoryMap();for(const item of this.items)counts.set(item.categoryId,(counts.get(item.categoryId)??0)+1);if(counts.size===0)return this.localize("sequenceStripEmpty");const clauses=[...counts.entries()].map(([categoryId,count])=>{const label=this.categoryLabel(categoryId,categories);return this.localize("sequenceStripCategoryCount",void 0,{label,count:getNumberFormat(this.effectiveLocale).format(count),pluralCount:count})}),markerCount=this.items.filter(item=>item.marker).length;return this.markerLabel&&markerCount>0&&clauses.push(this.localize("sequenceStripCategoryCount",void 0,{label:this.markerLabel,count:getNumberFormat(this.effectiveLocale).format(markerCount),pluralCount:markerCount})),getListFormat(this.effectiveLocale,{style:"long",type:"unit"}).format(clauses)}itemLabel(item,categories=this.categoryMap()){return item.label!==void 0&&item.label.trim().length>0?item.label:this.categoryLabel(item.categoryId,categories)}onCellEnter(index){this.hoverIndex=index}onCellLeave(){this.hoverIndex=null}onCellFocus(index){this.restoringOwnedFocus||(this.keyboardIndex=index)}onStripFocusOut(e){if(this.restoringOwnedFocus)return;const next=e.relatedTarget;(!(next instanceof Element)||next.getAttribute("part")!=="cell")&&(this.keyboardIndex=null)}onCellKeyDown(e,index){if(!["ArrowLeft","ArrowRight","Home","End"].includes(e.key)||this.items.length===0)return;e.preventDefault();const forwardKey=isRtl(this)?"ArrowLeft":"ArrowRight",backwardKey=isRtl(this)?"ArrowRight":"ArrowLeft";let next=index;e.key==="Home"?next=0:e.key==="End"?next=this.items.length-1:e.key===forwardKey?next=Math.min(this.items.length-1,index+1):e.key===backwardKey&&(next=Math.max(0,index-1));const items=this.items,targetId=items[next]?.id;if(targetId===void 0)return;const generation=this.focusRestoreGeneration;this.keyboardIndex=next,this.updateComplete.then(()=>{if(generation!==this.focusRestoreGeneration||!this.isConnected||this.items!==items)return;const target=this.shadowRoot?.querySelector(`[part="cell"][data-index="${next}"]`);target?.dataset.itemId===targetId&&target.focus()})}renderLegend(){const renderedCategories=this.categories.slice(0,MAX_RENDERED_CATEGORIES),categoryMap=this.categoryMap(),number=getNumberFormat(this.effectiveLocale);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{styleMap}from"lit/directives/style-map.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getListFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{isRtl}from"../../../internal/rtl.js";import{sanitizeCssColor}from"../../../internal/safe-css.js";import{styles}from"./sequence-strip.styles.js";import{LYRA_DEFAULT_sequenceStripCategoryCount,LYRA_DEFAULT_sequenceStripEmpty,LYRA_DEFAULT_sequenceStripUnnamedCategory}from"../../../internal/default-strings.generated.js";const MAX_RENDERED_ITEMS=200,MAX_RENDERED_CATEGORIES=200,MAX_SEQUENCE_COLLECTION_ENTRIES=1e4;class LyraSequenceStrip extends LyraElement{constructor(){super(...arguments),this._items=[],this._categories=[],this.selectedIndex=-1,this.showLegend=!1,this.hoverIndex=null,this.keyboardIndex=null,this.restoringOwnedFocus=!1,this.focusRestoreGeneration=0}static{this.defaultStrings={...super.defaultStrings,sequenceStripCategoryCount:LYRA_DEFAULT_sequenceStripCategoryCount,sequenceStripEmpty:LYRA_DEFAULT_sequenceStripEmpty,sequenceStripUnnamedCategory:LYRA_DEFAULT_sequenceStripUnnamedCategory}}static{this.styles=[LyraElement.styles,styles]}get items(){return this._items}set items(value){const previous=this._items,seen=new Set,next=[];if(Array.isArray(value))for(const item of value.slice(0,MAX_SEQUENCE_COLLECTION_ENTRIES))try{if(!item||typeof item.id!="string"||item.id.trim().length===0||seen.has(item.id))continue;seen.add(item.id),next.push(Object.freeze({id:item.id,categoryId:typeof item.categoryId=="string"?item.categoryId:"",...item.marker===void 0?{}:{marker:!!item.marker},...typeof item.label=="string"?{label:item.label}:{}}))}catch{}this._items=Object.freeze(next),this.requestUpdate("items",previous)}get categories(){return this._categories}set categories(value){const previous=this._categories,seen=new Set,next=[];if(Array.isArray(value))for(const category of value.slice(0,MAX_SEQUENCE_COLLECTION_ENTRIES))try{if(!category||typeof category.id!="string"||category.id.trim().length===0||seen.has(category.id))continue;seen.add(category.id),next.push(Object.freeze({id:category.id,color:typeof category.color=="string"?category.color:"",...typeof category.label=="string"?{label:category.label}:{}}))}catch{}this._categories=Object.freeze(next),this.requestUpdate("categories",previous)}isSelected(index){return Number.isInteger(this.selectedIndex)&&this.selectedIndex>=0&&this.selectedIndex<this.items.length&&this.selectedIndex===index}activateItem(index){const item=this.items[index];item&&this.emit("lr-item-activate",{index,id:item.id,item})}willUpdate(changed){if(super.willUpdate(changed),changed.has("items")){this.focusRestoreGeneration++,this.hoverIndex=null;const focusedCell=this.shadowRoot?.activeElement,focusedIndex=Number(focusedCell?.dataset.index);if(!Number.isInteger(focusedIndex)||focusedIndex<0){this.keyboardIndex=null;return}const focusedId=(changed.get("items")??[])[focusedIndex]?.id,retainedIndex=focusedId==null?-1:this.items.findIndex(item=>item.id===focusedId),nextIndex=retainedIndex>=0?retainedIndex:this.items.length?Math.min(focusedIndex,this.items.length-1):-1;this.keyboardIndex=nextIndex>=0?nextIndex:null,this.pendingFocusTarget=nextIndex>=0?nextIndex:"base",this.restoringOwnedFocus=!0}}updated(changed){super.updated(changed);const pending=this.pendingFocusTarget;if(pending===void 0)return;this.pendingFocusTarget=void 0;const generation=this.focusRestoreGeneration;this.scheduleAfterUpdate(()=>{try{if(generation!==this.focusRestoreGeneration||!this.isConnected)return;if(pending==="base"){this.shadowRoot?.querySelector('[part="base"]')?.focus();return}this.shadowRoot?.querySelector(`[part="cell"][data-index="${pending}"]`)?.focus()}finally{this.restoringOwnedFocus=!1}},"sequence-strip-focus")}disconnectedCallback(){this.focusRestoreGeneration++,this.pendingFocusTarget=void 0,this.restoringOwnedFocus=!1,this.hoverIndex=null,this.keyboardIndex=null,super.disconnectedCallback()}categoryMap(){return new Map(this.categories.map(category=>[category.id,category]))}categoryColor(categoryId,categories){return sanitizeCssColor(categories.get(categoryId)?.color)??"transparent"}categoryLabel(categoryId,categories){const label=categories.get(categoryId)?.label;return label!==void 0&&label.trim().length>0?label:this.localize("sequenceStripUnnamedCategory")}autoSummary(){const counts=new Map,categories=this.categoryMap();for(const item of this.items)counts.set(item.categoryId,(counts.get(item.categoryId)??0)+1);if(counts.size===0)return this.localize("sequenceStripEmpty");const clauses=[...counts.entries()].map(([categoryId,count])=>{const label=this.categoryLabel(categoryId,categories);return this.localize("sequenceStripCategoryCount",void 0,{label,count:getNumberFormat(this.effectiveLocale).format(count),pluralCount:count})}),markerCount=this.items.filter(item=>item.marker).length;return this.markerLabel&&markerCount>0&&clauses.push(this.localize("sequenceStripCategoryCount",void 0,{label:this.markerLabel,count:getNumberFormat(this.effectiveLocale).format(markerCount),pluralCount:markerCount})),getListFormat(this.effectiveLocale,{style:"long",type:"unit"}).format(clauses)}itemLabel(item,categories=this.categoryMap()){return item.label!==void 0&&item.label.trim().length>0?item.label:this.categoryLabel(item.categoryId,categories)}onCellEnter(index){this.hoverIndex=index}onCellLeave(){this.hoverIndex=null}onCellFocus(index){this.restoringOwnedFocus||(this.keyboardIndex=index)}onStripFocusOut(e){if(this.restoringOwnedFocus)return;const next=e.relatedTarget;(!(next instanceof Element)||next.getAttribute("part")!=="cell")&&(this.keyboardIndex=null)}onCellKeyDown(e,index){if(e.key==="Enter"||e.key===" "||e.key==="Spacebar"){e.preventDefault(),this.activateItem(index);return}if(!["ArrowLeft","ArrowRight","Home","End"].includes(e.key)||this.items.length===0)return;e.preventDefault();const forwardKey=isRtl(this)?"ArrowLeft":"ArrowRight",backwardKey=isRtl(this)?"ArrowRight":"ArrowLeft";let next=index;e.key==="Home"?next=0:e.key==="End"?next=this.items.length-1:e.key===forwardKey?next=Math.min(this.items.length-1,index+1):e.key===backwardKey&&(next=Math.max(0,index-1));const items=this.items,targetId=items[next]?.id;if(targetId===void 0)return;const generation=this.focusRestoreGeneration;this.keyboardIndex=next,this.updateComplete.then(()=>{if(generation!==this.focusRestoreGeneration||!this.isConnected||this.items!==items)return;const target=this.shadowRoot?.querySelector(`[part="cell"][data-index="${next}"]`);target?.dataset.itemId===targetId&&target.focus()})}renderLegend(){const renderedCategories=this.categories.slice(0,MAX_RENDERED_CATEGORIES),categoryMap=this.categoryMap(),number=getNumberFormat(this.effectiveLocale);return html`
2
2
  <div part="legend" aria-hidden="true">
3
3
  ${renderedCategories.map(category=>html`
4
4
  <span part="legend-item">
@@ -41,6 +41,9 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
41
41
  @pointerleave=${()=>this.onCellLeave()}
42
42
  @focus=${()=>this.onCellFocus(index)}
43
43
  @keydown=${e=>this.onCellKeyDown(e,index)}
44
+ @click=${()=>this.activateItem(index)}
45
+ aria-current=${this.isSelected(index)?"true":"false"}
46
+ ?data-selected=${this.isSelected(index)}
44
47
  >
45
48
  ${item.marker?html`<span part="marker"></span>`:nothing}
46
49
  ${index===tooltipIndex?html`
@@ -52,4 +55,4 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
52
55
  </div>
53
56
  ${this.items.length>renderedItems.length?html`<div part="window-range" aria-hidden="true">${number.format(windowStart+1)}–${number.format(windowStart+renderedItems.length)} / ${number.format(this.items.length)}</div>`:nothing}
54
57
  ${this.showLegend?this.renderLegend():nothing}
55
- `}}__decorate([property({attribute:!1})],LyraSequenceStrip.prototype,"items",null),__decorate([property({attribute:!1})],LyraSequenceStrip.prototype,"categories",null),__decorate([property({attribute:"accessible-label"})],LyraSequenceStrip.prototype,"accessibleLabel",void 0),__decorate([property({type:Boolean,reflect:!0,attribute:"show-legend"})],LyraSequenceStrip.prototype,"showLegend",void 0),__decorate([property({attribute:"marker-label"})],LyraSequenceStrip.prototype,"markerLabel",void 0),__decorate([state()],LyraSequenceStrip.prototype,"hoverIndex",void 0),__decorate([state()],LyraSequenceStrip.prototype,"keyboardIndex",void 0);export{LyraSequenceStrip};
58
+ `}}__decorate([property({attribute:!1})],LyraSequenceStrip.prototype,"items",null),__decorate([property({attribute:!1})],LyraSequenceStrip.prototype,"categories",null),__decorate([property({attribute:"accessible-label"})],LyraSequenceStrip.prototype,"accessibleLabel",void 0),__decorate([property({type:Number,attribute:"selected-index"})],LyraSequenceStrip.prototype,"selectedIndex",void 0),__decorate([property({type:Boolean,reflect:!0,attribute:"show-legend"})],LyraSequenceStrip.prototype,"showLegend",void 0),__decorate([property({attribute:"marker-label"})],LyraSequenceStrip.prototype,"markerLabel",void 0),__decorate([state()],LyraSequenceStrip.prototype,"hoverIndex",void 0),__decorate([state()],LyraSequenceStrip.prototype,"keyboardIndex",void 0);export{LyraSequenceStrip};
@@ -9,9 +9,6 @@ import{css}from"lit";const styles=css`
9
9
  gap: var(--lr-size-1px);
10
10
  block-size: var(--lr-sequence-strip-height, var(--lr-size-1-5rem));
11
11
  }
12
- /* Above the documented 320-item dense threshold, retaining a 1px gap per item would make the
13
- gaps alone wider than the 320px responsive baseline. Collapse only that decorative spacing;
14
- every semantic cell stays rendered, colored, named, and keyboard reachable. */
15
12
  [part='base'][data-dense] {
16
13
  gap: 0;
17
14
  }
@@ -23,17 +20,25 @@ import{css}from"lit";const styles=css`
23
20
  align-items: flex-end;
24
21
  justify-content: center;
25
22
  }
26
- /* no-pressed-state: a cell is a role="listitem" span with no activation of any kind -- it takes a
27
- roving tabindex and reacts to pointerenter/focus purely to move the tooltip, and there is no
28
- click handler and no lr-* event behind it. Nothing happens on press, so a pressed treatment
29
- would be promising an action the strip does not have. */
23
+ [part='cell'] {
24
+ cursor: pointer;
25
+ }
30
26
  [part='cell']:hover,
31
27
  [part='cell']:focus-visible {
32
28
  outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);
33
29
  outline-offset: calc(-1 * var(--lr-focus-ring-width));
34
30
  }
35
- /* Round the strip's own outer ends via the first/last cell, not overflow:hidden on [part='base'] --
36
- that would clip [part='tooltip'], which is deliberately positioned outside the base's own box. */
31
+ [part='cell']:active {
32
+ outline: var(--lr-focus-ring-width) solid var(--lr-color-text);
33
+ outline-offset: calc(-1 * var(--lr-focus-ring-width));
34
+ }
35
+ [part='cell'][data-selected] {
36
+ outline: var(--lr-focus-ring-width) solid var(--lr-color-text);
37
+ outline-offset: calc(-1 * var(--lr-focus-ring-width));
38
+ }
39
+ [part='cell'][data-selected]:focus-visible {
40
+ outline-color: var(--lr-focus-ring-color);
41
+ }
37
42
  [part='cell']:first-child {
38
43
  border-start-start-radius: var(--lr-radius-xs);
39
44
  border-end-start-radius: var(--lr-radius-xs);
@@ -63,19 +68,12 @@ import{css}from"lit";const styles=css`
63
68
  pointer-events: none;
64
69
  z-index: var(--lr-layer-content);
65
70
  }
66
- /* The tooltip is a child of the active cell, so this 50% inset tracks that cell instead of the
67
- strip. Under RTL the inset anchors to the physical right edge; the fixed horizontal -50%
68
- translate must flip sign there because translateX is physical, not logical. */
69
71
  :host(:dir(rtl)) [part='tooltip'] {
70
72
  transform: translate(50%, calc(-1 * var(--lr-size-6px)));
71
73
  }
72
74
  [part='tooltip'][hidden] {
73
75
  display: none;
74
76
  }
75
- /* The legend keys the whole category scheme, so its row count grows with the consumer's
76
- categories and its labels grow with translation -- it wraps rather than overflowing, and each
77
- item keeps min-inline-size: 0 so a long label shrinks inside its own row instead of forcing
78
- the strip's allocation wider. */
79
77
  [part='legend'] {
80
78
  display: flex;
81
79
  flex-wrap: wrap;
@@ -108,10 +106,6 @@ import{css}from"lit";const styles=css`
108
106
  block-size: var(--lr-sequence-strip-legend-swatch-size, var(--lr-size-0-625rem));
109
107
  border-radius: var(--lr-radius-xs);
110
108
  }
111
- /* The marker legend row stands for the marker on *any* cell, so its chip is deliberately a
112
- neutral background rather than a category color, with the cell's own bottom bar reproduced as
113
- an inset shadow (same thickness, same --lr-sequence-strip-marker-color) instead of a child
114
- element -- the chip has no children to give the bar its own box. */
115
109
  [part='legend-marker-swatch'] {
116
110
  background: var(--lr-sequence-strip-legend-marker-bg, var(--lr-color-surface-raised));
117
111
  box-shadow: inset 0 calc(-1 * var(--lr-size-2px)) 0 0
@@ -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}from"lit/decorators.js";import{nextId}from"../../../internal/a11y.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteNumber,finiteRatio}from"../../../internal/numbers.js";import{styles}from"./sparkline.styles.js";import{LYRA_DEFAULT_noData,LYRA_DEFAULT_trendOf}from"../../../internal/default-strings.generated.js";const VIEW=100,MAX_POINTS=500;function decimate(arr,max){if(arr.length<=max)return[...arr];const step=(arr.length-1)/(max-1);return Array.from({length:max},(_,i)=>arr[Math.round(i*step)])}function finiteData(value){const source=value.trim();return source?source.split(/\s+/u).map(Number).filter(item=>Number.isFinite(item)):[]}function normalizeAppearance(value){return value==="gradient"||value==="line"||value==="solid"?value:"solid"}function normalizeCurve(value){return value==="natural"||value==="step"||value==="linear"?value:"linear"}class LyraSparkline extends LyraElement{constructor(){super(...arguments),this.appearance="solid",this.curve="linear",this.data="",this.label="",this.accessibleLabel=null,this.values=[],this._mark="line",this.gradientId=nextId("sparkline-gradient")}static{this.defaultStrings={...super.defaultStrings,noData:LYRA_DEFAULT_noData,trendOf:LYRA_DEFAULT_trendOf}}static{this.styles=[LyraElement.styles,styles]}get mark(){return this._mark}set mark(value){const normalized=value==="bar"?"bar":"line",previous=this._mark;if(previous===normalized){value!==normalized&&this.requestUpdate("mark",previous);return}this._mark=normalized,this.requestUpdate("mark",previous)}plotValues(){if(this.data.trim()){const parsed=finiteData(this.data);return parsed.length>=2?parsed:[]}return Array.isArray(this.values)?this.values.filter(item=>Number.isFinite(item)):[]}points(values=this.plotValues()){let autoLo=values[0]??0,autoHi=values[0]??0;if(!Number.isFinite(this.min)||!Number.isFinite(this.max))for(const value of values)value<autoLo&&(autoLo=value),value>autoHi&&(autoHi=value);let lo=finiteNumber(this.min??autoLo,autoLo),hi=finiteNumber(this.max??autoHi,autoHi);lo>hi&&([lo,hi]=[hi,lo]);const samples=values.length>MAX_POINTS?decimate(values,MAX_POINTS):[...values];return samples.map((value,index)=>{const forwardX=samples.length>1?index/(samples.length-1)*VIEW:VIEW/2,x=this.effectiveDirection==="rtl"?VIEW-forwardX:forwardX,y=lo===hi?VIEW/2:VIEW-finiteRatio(value,lo,hi)*VIEW;return[x,y]})}linePath(points){const first=points[0];if(!first)return"";if(points.length===1)return`M${first[0]},${first[1]} L${first[0]},${first[1]}`;const curve=normalizeCurve(this.curve);if(curve==="step")return points.slice(1).reduce((path,point)=>`${path} H${point[0]} V${point[1]}`,`M${first[0]},${first[1]}`);if(curve==="natural"){let path=`M${first[0]},${first[1]}`;for(let index=0;index<points.length-1;index++){const before=points[Math.max(0,index-1)],start=points[index],end=points[index+1],after=points[Math.min(points.length-1,index+2)],c1x=start[0]+(end[0]-before[0])/6,c1y=start[1]+(end[1]-before[1])/6,c2x=end[0]-(after[0]-start[0])/6,c2y=end[1]-(after[1]-start[1])/6;path+=` C${c1x},${c1y} ${c2x},${c2y} ${end[0]},${end[1]}`}return path}return points.map(([x,y],index)=>`${index?"L":"M"}${x},${y}`).join(" ")}accessibleName(values){if(this.label)return this.label;if(this.accessibleLabel)return this.accessibleLabel;const last=values.at(-1);return last===void 0?this.localize("noData"):this.localize("trendOf",void 0,{count:getNumberFormat(this.effectiveLocale).format(values.length),value:getNumberFormat(this.effectiveLocale,{maximumFractionDigits:2}).format(last)})}renderBars(points){const slot=VIEW/Math.max(1,points.length),barWidth=Math.min(4,Math.max(1,slot*.7));return html`${points.map(([x,y])=>{const barY=Math.min(VIEW,Math.max(0,y));return svg`<rect
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}from"lit/decorators.js";import{nextId}from"../../../internal/a11y.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{finiteNumber,finiteRatio}from"../../../internal/numbers.js";import{styles}from"./sparkline.styles.js";import{LYRA_DEFAULT_noData,LYRA_DEFAULT_trendOf}from"../../../internal/default-strings.generated.js";const VIEW=100,MAX_POINTS=500;function decimate(arr,max){if(arr.length<=max)return[...arr];const step=(arr.length-1)/(max-1);return Array.from({length:max},(_,i)=>arr[Math.round(i*step)])}function finiteData(value){const source=value.trim();return source?source.split(/\s+/u).map(Number).filter(item=>Number.isFinite(item)):[]}function normalizeAppearance(value){return value==="gradient"||value==="line"||value==="solid"?value:"solid"}function normalizeCurve(value){return value==="natural"||value==="step"||value==="linear"?value:"linear"}class LyraSparkline extends LyraElement{constructor(){super(...arguments),this.appearance="solid",this.curve="linear",this.data="",this.label="",this.accessibleLabel=null,this.values=[],this._mark="line",this.gradientId=nextId("sparkline-gradient")}static{this.defaultStrings={...super.defaultStrings,noData:LYRA_DEFAULT_noData,trendOf:LYRA_DEFAULT_trendOf}}static{this.styles=[LyraElement.styles,styles]}get mark(){return this._mark}set mark(value){const normalized=value==="bar"?"bar":"line",previous=this._mark;if(previous===normalized){value!==normalized&&this.requestUpdate("mark",previous);return}this._mark=normalized,this.requestUpdate("mark",previous)}plotValues(){if(this.data.trim()){const parsed=finiteData(this.data);return parsed.length>=2?parsed:[]}return Array.isArray(this.values)?this.values.filter(item=>Number.isFinite(item)):[]}points(values=this.plotValues()){let autoLo=values[0]??0,autoHi=values[0]??0;if(!Number.isFinite(this.min)||!Number.isFinite(this.max))for(const value of values)value<autoLo&&(autoLo=value),value>autoHi&&(autoHi=value);let lo=finiteNumber(this.min??autoLo,autoLo),hi=finiteNumber(this.max??autoHi,autoHi);lo>hi&&([lo,hi]=[hi,lo]);const samples=values.length>MAX_POINTS?decimate(values,MAX_POINTS):[...values];return samples.map((value,index)=>{const forwardX=samples.length>1?index/(samples.length-1)*VIEW:VIEW/2,x=this.effectiveDirection==="rtl"?VIEW-forwardX:forwardX,y=lo===hi?VIEW/2:VIEW-finiteRatio(value,lo,hi)*VIEW;return[x,y]})}linePath(points){const first=points[0];if(!first)return"";if(points.length===1)return`M${first[0]},${first[1]} L${first[0]},${first[1]}`;const curve=normalizeCurve(this.curve);if(curve==="step")return points.slice(1).reduce((path,point)=>`${path} H${point[0]} V${point[1]}`,`M${first[0]},${first[1]}`);if(curve==="natural"){let path=`M${first[0]},${first[1]}`;for(let index=0;index<points.length-1;index++){const before=points[Math.max(0,index-1)],start=points[index],end=points[index+1],after=points[Math.min(points.length-1,index+2)],c1x=start[0]+(end[0]-before[0])/6,c1y=start[1]+(end[1]-before[1])/6,c2x=end[0]-(after[0]-start[0])/6,c2y=end[1]-(after[1]-start[1])/6;path+=` C${c1x},${c1y} ${c2x},${c2y} ${end[0]},${end[1]}`}return path}return points.map(([x,y],index)=>`${index?"L":"M"}${x},${y}`).join(" ")}accessibleName(values){if(this.accessibleLabel)return this.accessibleLabel;if(this.label)return this.label;const last=values.at(-1);return last===void 0?this.localize("noData"):this.localize("trendOf",void 0,{count:getNumberFormat(this.effectiveLocale).format(values.length),value:getNumberFormat(this.effectiveLocale,{maximumFractionDigits:2}).format(last)})}renderBars(points){const slot=VIEW/Math.max(1,points.length),barWidth=Math.min(4,Math.max(1,slot*.7));return html`${points.map(([x,y])=>{const barY=Math.min(VIEW,Math.max(0,y));return svg`<rect
2
2
  part="bar"
3
3
  x="${x-barWidth/2}"
4
4
  y="${barY}"
@@ -28,10 +28,6 @@ import{css}from"lit";const styles=css`
28
28
  inset: 0;
29
29
  z-index: var(--lr-layer-base);
30
30
  }
31
- /* The visible content is a sibling of the stretched native link. Built-in, non-interactive
32
- regions let pointer input pass through to that link; public slots opt back into hit testing so
33
- their own controls remain independently operable. Plain slotted content delegates its click
34
- to the link in the class rather than becoming a dead patch in the card. */
35
31
  .linked-content {
36
32
  position: relative;
37
33
  z-index: var(--lr-layer-content);
@@ -53,19 +49,11 @@ import{css}from"lit";const styles=css`
53
49
  cursor: pointer;
54
50
  transition: border-color var(--lr-transition-fast), box-shadow var(--lr-transition-fast);
55
51
  }
56
- /* :where() zeroes the extra [href] attribute selector's specificity contribution, leaving only
57
- :hover itself so a consumer's ::part(base):hover override ((0,1,1)) wins without needing
58
- !important. */
59
52
  :where([part='base'][href]):hover,
60
53
  :where(.linked-shell:hover > [part='base']) {
61
54
  border-color: var(--lr-stat-link-hover-border-color, var(--lr-color-brand));
62
- /* One step of lift on an otherwise flat resting card -- a hovered tile is still resting chrome,
63
- not an overlay, so it stops at the card step. */
64
55
  box-shadow: var(--lr-stat-link-hover-shadow, var(--lr-shadow-s));
65
56
  }
66
- /* The pressed tile keeps the hovered border and lift and adds a fill: a shadow change alone is
67
- nearly invisible on a card this large, and the tint mixes toward --lr-color-mix-partner (the
68
- text colour) so it darkens a light theme and lightens a dark one rather than always doing one. */
69
57
  :where([part='base'][href]):active {
70
58
  border-color: var(
71
59
  --lr-stat-link-active-border-color,
@@ -100,8 +88,6 @@ import{css}from"lit";const styles=css`
100
88
  letter-spacing: var(--lr-size-0-04em);
101
89
  color: var(--lr-color-text-quiet);
102
90
  }
103
- /* An empty label part is still a flex item and still picks up [part='base']'s gap, leaving a
104
- stray blank line above the value — collapse it the same way icon/sub/spark/caption/rows do. */
105
91
  [part='label'][hidden] {
106
92
  display: none;
107
93
  }
@@ -120,26 +106,11 @@ import{css}from"lit";const styles=css`
120
106
  font-weight: var(--lr-font-weight-bold);
121
107
  font-family: var(--lr-font-mono);
122
108
  }
123
- /* [part='value']/[part='row-value'] become keyboard-focusable (tabindex="0")
124
- whenever exactValue/row.exactValue is set (see stat.class.ts), so they
125
- need their own visible focus ring like every other focusable part in the
126
- library. */
127
109
  [part='value']:focus-visible,
128
110
  [part='row-value']:focus-visible {
129
111
  outline: var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);
130
112
  outline-offset: var(--lr-focus-ring-offset);
131
113
  }
132
- /* Mouse-user counterpart to the :focus-visible rule above: only the [tabindex] state (i.e.
133
- exactValue/row.exactValue is actually set, so there's a tooltip to reveal) gets a hover
134
- affordance -- a value with nothing to reveal stays inert on hover, matching its own lack of a
135
- focus ring. :where() zeroes the extra [tabindex] attribute selector's specificity
136
- contribution, leaving only :hover itself so a consumer's ::part(value):hover /
137
- ::part(row-value):hover override wins without needing !important. */
138
- /* no-pressed-state: the [tabindex] on these parts exists only so a keyboard user can reach the
139
- same native title tooltip a mouse user gets by hovering -- there is no click handler and
140
- nothing to activate, which is exactly what cursor: help says. A value part inside a linked
141
- stat never takes the tabindex at all (the anchor owns the interaction, and its own pressed
142
- state above covers it). */
143
114
  :where([part='value'][tabindex]):hover,
144
115
  :where([part='row-value'][tabindex]):hover {
145
116
  color: var(--lr-color-brand);
@@ -159,10 +130,6 @@ import{css}from"lit";const styles=css`
159
130
  font-size: var(--lr-font-size-sm);
160
131
  font-weight: var(--lr-font-weight-semibold);
161
132
  border-radius: var(--lr-radius);
162
- /* 0.05rem/0.4rem don't cleanly map to any --lr-space-* step (the
163
- smallest, --lr-space-xs, is 0.25rem): rounding the vertical value
164
- up to xs would 5x this chip's padding and blow out the compact
165
- trend-chip look, so both stay literal here. */
166
133
  padding: var(--lr-size-0-05rem) var(--lr-size-0-4rem);
167
134
  align-self: flex-start;
168
135
  }
@@ -172,10 +139,6 @@ import{css}from"lit";const styles=css`
172
139
  [part='trend'][data-direction='down'] svg {
173
140
  transform: rotate(90deg);
174
141
  }
175
- /* Scoped cssprops (falling back to today's exact shared-token values) so a consumer can retint
176
- just the trend pill without also recoloring the headline value's variant="success"/"danger"
177
- tint below, which deliberately keeps reading the shared --lr-color-success/-danger tokens
178
- directly -- and vice versa. */
179
142
  [part='trend'][data-polarity='good'] {
180
143
  color: var(--lr-stat-trend-good-color, var(--lr-color-success));
181
144
  background: var(--lr-stat-trend-good-bg, color-mix(in srgb, var(--lr-color-success) 8%, transparent));
@@ -197,8 +160,6 @@ import{css}from"lit";const styles=css`
197
160
  color: var(--lr-stat-value-danger-color, var(--lr-color-danger));
198
161
  }
199
162
  [part='spark'] {
200
- /* Consumers compose their own <lr-sparkline slot="spark">; this part
201
- only needs to reserve width for it. */
202
163
  display: block;
203
164
  }
204
165
  [part='spark'][hidden] {
@@ -226,9 +187,6 @@ import{css}from"lit";const styles=css`
226
187
  display: flex;
227
188
  min-inline-size: 0;
228
189
  flex-direction: column;
229
- /* Slightly tighter than the card's own --lr-space-xs gap so the
230
- breakdown list reads as one nested group rather than siblings of
231
- equal weight with label/value/caption. */
232
190
  gap: var(--lr-size-0-125rem);
233
191
  }
234
192
  [part='rows'][hidden] {
@@ -255,14 +213,9 @@ import{css}from"lit";const styles=css`
255
213
  font-family: var(--lr-font-mono);
256
214
  font-weight: var(--lr-font-weight-semibold);
257
215
  }
258
- /* Orthogonal to the status variant: an accent edge that marks a stat as
259
- visually emphasized (e.g. the "headline" stat in a group) regardless of
260
- status color. */
261
216
  :host([emphasis]) [part='base'] {
262
217
  border-inline-start: var(--lr-border-width-thick) solid var(--lr-stat-emphasis-border-color, var(--lr-color-brand));
263
218
  }
264
- /* Status semantics win over visual emphasis: only tint the value with the
265
- brand color when there's no status variant already claiming it. */
266
219
  :host([emphasis][variant='neutral']) [part='value'] {
267
220
  color: var(--lr-stat-emphasis-value-color, var(--lr-color-brand));
268
221
  }
@@ -283,13 +236,6 @@ import{css}from"lit";const styles=css`
283
236
  padding: var(--lr-space-s);
284
237
  gap: var(--lr-size-0-125rem);
285
238
  }
286
- /* MUST stay after :host([compact]): both selectors are :host([x]) [part='base'], i.e. equal
287
- specificity, so source order alone decides which padding wins when a stat is both compact and
288
- plain. plain is the stronger statement ("no chrome at all"), so it goes last.
289
- Also drops block-size: 100% — stretching to fill an arbitrarily tall parent is card behavior;
290
- a chrome-less stat sits at its content height so it can be dropped inline in prose or a
291
- toolbar. The emphasis accent edge is card chrome too and goes with the rest of the border;
292
- the emphasis brand value tint is unaffected and still applies. */
293
239
  :host([frame='plain']) [part='base'] {
294
240
  padding: 0;
295
241
  border: 0;
@@ -304,15 +250,9 @@ import{css}from"lit";const styles=css`
304
250
  :host([frame='plain']) .linked-content {
305
251
  padding: 0;
306
252
  }
307
- /* The card's interactive affordance is a border-color shift plus a lift shadow, and neither
308
- reads on a border-less, background-less box — a linked plain stat underlines its headline
309
- value instead. The :focus-visible outline above needs no border and still applies as-is. */
310
253
  :host([frame='plain']) [part='base'][href]:hover {
311
254
  box-shadow: none;
312
255
  }
313
- /* The pressed card treatment has to be stripped for the same reason the hovered one is: a lift
314
- shadow with no surface under it reads as a smudge, and a fill would put back exactly the box
315
- frame="plain" exists to remove. The thicker underline below carries the press instead. */
316
256
  :host([frame='plain']) [part='base'][href]:active {
317
257
  box-shadow: none;
318
258
  background: transparent;
@@ -321,9 +261,6 @@ import{css}from"lit";const styles=css`
321
261
  :host([frame='plain']) [part='base'][href]:focus-visible + .linked-content [part='value'] {
322
262
  text-decoration: underline;
323
263
  }
324
- /* Pressed thickens the same underline rather than recolouring the value -- the value already
325
- carries the status variant's colour, and overriding it for the length of a click would read as
326
- the stat changing state. */
327
264
  :host([frame='plain']) [part='base'][href]:active + .linked-content [part='value'] {
328
265
  text-decoration: underline;
329
266
  text-decoration-thickness: var(--lr-border-width-medium);
@@ -340,13 +277,9 @@ import{css}from"lit";const styles=css`
340
277
  align-items: baseline;
341
278
  column-gap: var(--lr-space-s);
342
279
  }
343
- /* The trend pill opts out of baseline alignment in the stacked layout; on a single baseline row
344
- it has to sit on that baseline like everything else. */
345
280
  :host([orientation='horizontal']) [part='trend'] {
346
281
  align-self: baseline;
347
282
  }
348
- /* A breakdown list and a sparkline have no sensible place on a text baseline, so they claim a
349
- full line of their own and stay stacked beneath the horizontal row. */
350
283
  :host([orientation='horizontal']) [part='spark'],
351
284
  :host([orientation='horizontal']) [part='rows'] {
352
285
  flex-basis: 100%;
@@ -18,6 +18,18 @@ export type TableSelectionMode = 'none' | 'single' | 'multiple';
18
18
  * `sortKey`/`sortDir`, `'server'` renders `rows` in the order given. Mirrors the
19
19
  * `paginationMode` split of the same two names. */
20
20
  export type TableSortMode = 'client' | 'server';
21
+ /** `<lr-table>`'s `scrollMode`: which element scrolls when the table overflows.
22
+ *
23
+ * `'self'` (default) makes `[part="base"]` the scroll container, which is what pairs with
24
+ * `--lr-table-max-height` and what makes the sticky header pin inside the table's own viewport.
25
+ *
26
+ * `'page'` hands scrolling back to the page. Necessary because a scroll container clips *both*
27
+ * axes -- CSS gives no way to scroll one axis and not the other -- so an uncapped table that is
28
+ * still `overflow: auto` creates a sticky containing block that never scrolls, and its header
29
+ * scrolls off with the document instead of pinning. With `'page'` the header's nearest scrollport
30
+ * is the page, so it pins there; the cost is that a table wider than its host overflows the page
31
+ * rather than scrolling inside itself. */
32
+ export type TableScrollMode = 'self' | 'page';
21
33
  /** Canonical table sort direction. */
22
34
  export type TableSortDirection = 'asc' | 'desc';
23
35
  /** Cancelable sort proposal detail. */
@@ -320,8 +332,10 @@ export interface LyraTableEventMap<T = unknown> {
320
332
  * Frozen readonly `detail: { row, rowKey }`. Fired only when `expandedContent` is set and
321
333
  * the row passes `canExpand`; does not itself mutate `expandedRowKeys` — the
322
334
  * consumer updates it and passes the new value back in.
323
- * @event lr-selection-change - Opt-in row selection changed. Frozen readonly
324
- * `detail: { rowKeys: readonly (string | number)[] }`.
335
+ * @event lr-selection-change - Opt-in row selection changed, from a row activation or from a
336
+ * `selectionMode` flip to `'single'` coercing an existing multi-row selection down to one key.
337
+ * Frozen readonly `detail: { rowKeys: readonly (string | number)[] }`. Not cancelable in either
338
+ * case: it announces a selection that has already changed rather than proposing one.
325
339
  * @event lr-filter-change - The filter field changed. Frozen readonly `detail: { text }`.
326
340
  * @event lr-page-change - A pagination control requested a page. Frozen readonly `detail: { page }`.
327
341
  * @event lr-cell-edit - An inline editor committed a value. `detail: { row, columnKey, value }`.
@@ -401,6 +415,15 @@ export interface LyraTableEventMap<T = unknown> {
401
415
  * @cssprop [--lr-table-resize-handle-hover-opacity=var(--lr-table-resize-handle-opacity,0.12)] - Resize-handle hover/focus opacity.
402
416
  * @cssprop [--lr-table-resize-handle-active-bg=var(--lr-table-resize-handle-hover-bg,var(--lr-color-brand))] - Resize-handle pressed background.
403
417
  * @cssprop [--lr-table-resize-handle-active-opacity=calc(var(--lr-table-resize-handle-hover-opacity,var(--lr-table-resize-handle-opacity,0.12))*2)] - Resize-handle pressed opacity.
418
+ * @cssprop [--lr-table-cell-color=inherit] - Text colour of body cells; inherits the host's own
419
+ * colour by default.
420
+ * @cssprop [--lr-table-cell-link-color=var(--lr-color-brand)] - Colour of an anchor returned from a
421
+ * column's `cell(row)`. Such an anchor renders inside this component's shadow root, so page CSS
422
+ * cannot reach it and `::part()` cannot select past the first compound selector to reach it
423
+ * either; without this hook it computes to the UA default link blue. Set `revert` for the UA
424
+ * default.
425
+ * @cssprop [--lr-table-cell-link-hover-color=var(--lr-table-cell-link-color,var(--lr-color-brand))] -
426
+ * Colour of that anchor on hover and `:focus-visible`, which also thicken its underline.
404
427
  * @cssprop [--lr-table-max-height=none] - Cap on the scroll container's block size, past which the
405
428
  * table body scrolls.
406
429
  * @cssprop [--lr-table-heat-tint-lo=var(--lr-color-brand-quiet)] - Low endpoint of the heat-tint
@@ -500,6 +523,9 @@ export declare class LyraTable<T = unknown> extends LyraElement<LyraTableEventMa
500
523
  * wins. */
501
524
  rowKey?: (row: T) => string | number;
502
525
  selectionMode: TableSelectionMode;
526
+ /** Which element scrolls when the table overflows; see `TableScrollMode`. Defaults to `'self'`,
527
+ * which is the pre-10.0 behaviour. */
528
+ scrollMode: TableScrollMode;
503
529
  private _selectedKeys;
504
530
  /** Selected raw row keys in every selection mode, bounded to 10,000 keys. Single mode replaces
505
531
  * this set with exactly one key per row activation; multiple mode toggles membership. Reads
@@ -574,7 +600,15 @@ export declare class LyraTable<T = unknown> extends LyraElement<LyraTableEventMa
574
600
  * `expandedRowKeys`. Table-level (not per-column) since the panel spans
575
601
  * every column via `colspan`. Setting this makes every row render a
576
602
  * leading chevron-toggle cell before all data columns; omit for no
577
- * leading cell at all (unchanged output). */
603
+ * leading cell at all (unchanged output). The returned content renders inside this
604
+ * component's shadow root, behind the `expanded-cell` part -- page-level CSS selectors cannot
605
+ * reach it, and `::part(expanded-cell)` only reaches that wrapping `<td>`, not the descendants
606
+ * this callback returns (`::part()` is a pseudo-element; only pseudo-classes may follow it, so
607
+ * `::part(expanded-cell) .child` never matches, the same limitation `cell(row)`'s returned
608
+ * anchors run into). Style such content by returning already-styled elements -- inline
609
+ * `style`, or elements that reference this table's own `--lr-*` design tokens, which inherit
610
+ * across the shadow boundary like any custom property -- rather than depending on a
611
+ * page-level selector to find it. */
578
612
  expandedContent?: (row: T) => unknown;
579
613
  /** Gates whether a given row gets an interactive chevron/toggle at all,
580
614
  * when `expandedContent` is set. Omit to make every row expandable. A
@@ -704,6 +738,11 @@ export declare class LyraTable<T = unknown> extends LyraElement<LyraTableEventMa
704
738
  private observedBase?;
705
739
  private readonly observedHeaders;
706
740
  private parsePixelLength;
741
+ /** The themed floor a column may be dragged/keyed down to, in used pixels. `rem`/`em` resolve
742
+ * against the live root/own font size through the shared `resolveCssLength()` -- a hardcoded
743
+ * `* 16` would pick the wrong floor on a page whose root font-size isn't the browser default.
744
+ * A token in a unit with no used pixel length here (`ch`, `pt`, `calc()`, a bare `%` with no
745
+ * base) falls back to DEFAULT_RESIZE_MIN_WIDTH_PX rather than being read as raw pixels. */
707
746
  private minimumResizeWidth;
708
747
  private maximumResizeWidth;
709
748
  private currentResizeWidth;