@aceshooting/lyra-ui 16.0.0 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. package/CHANGELOG.md +504 -0
  2. package/custom-elements.json +1 -1
  3. package/dist/cli/migration-contract.json +1 -1
  4. package/dist/components/agent-tools/browser-frame/browser-frame.class.d.ts +3 -3
  5. package/dist/components/agent-tools/browser-frame/browser-frame.class.js +2 -2
  6. package/dist/components/agent-tools/compare-panel/compare-panel.class.d.ts +2 -2
  7. package/dist/components/agent-tools/compare-panel/compare-panel.class.js +3 -3
  8. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.d.ts +37 -13
  9. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +2 -2
  10. package/dist/components/agent-tools/task-list/task-list.class.js +2 -2
  11. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +4 -0
  12. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +2 -2
  13. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.d.ts +3 -3
  14. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +1 -1
  15. package/dist/components/charts/chart/chart.class.d.ts +117 -17
  16. package/dist/components/charts/chart/chart.class.js +3 -3
  17. package/dist/components/charts/chart/histogram-bin.d.ts +5 -1
  18. package/dist/components/charts/chart/histogram-bin.js +1 -1
  19. package/dist/components/charts/chart/lite-chart.class.d.ts +9 -0
  20. package/dist/components/conversation/code-block/code-block.styles.js +1 -1
  21. package/dist/components/conversation/message-actions/message-actions.styles.js +1 -1
  22. package/dist/components/conversation/model-select/model-select.class.d.ts +13 -4
  23. package/dist/components/conversation/model-select/model-select.class.js +2 -1
  24. package/dist/components/conversation/model-select/model-select.styles.js +1 -1
  25. package/dist/components/conversation/streaming-text/streaming-text-base.class.d.ts +40 -2
  26. package/dist/components/conversation/streaming-text/streaming-text-base.class.js +2 -2
  27. package/dist/components/conversation/streaming-text/streaming-text-core.class.d.ts +5 -3
  28. package/dist/components/conversation/streaming-text/streaming-text-core.class.js +10 -0
  29. package/dist/components/conversation/streaming-text/streaming-text.class.d.ts +9 -3
  30. package/dist/components/conversation/streaming-text/streaming-text.class.js +10 -0
  31. package/dist/components/conversation/suggestion-chips/suggestion-chips.class.d.ts +30 -2
  32. package/dist/components/conversation/suggestion-chips/suggestion-chips.class.js +4 -3
  33. package/dist/components/conversation/suggestion-chips/suggestion-chips.styles.js +1 -1
  34. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
  35. package/dist/components/conversation/usage-badge/usage-badge-overlay-runtime.js +1 -1
  36. package/dist/components/conversation/usage-badge/usage-badge.class.d.ts +4 -0
  37. package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +16 -4
  38. package/dist/components/conversation/voice-picker/voice-picker.class.js +2 -1
  39. package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
  40. package/dist/components/data/context-meter/context-meter.class.d.ts +23 -4
  41. package/dist/components/data/context-meter/context-meter.class.js +10 -7
  42. package/dist/components/data/context-meter/context-meter.styles.js +1 -1
  43. package/dist/components/data/data-grid/data-grid.class.d.ts +5 -2
  44. package/dist/components/data/data-grid/data-grid.class.js +1 -1
  45. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +32 -5
  46. package/dist/components/data/flow-canvas/flow-canvas.class.js +3 -1
  47. package/dist/components/data/flow-canvas/flow-canvas.styles.js +1 -1
  48. package/dist/components/data/flow-canvas/flow-model.js +1 -1
  49. package/dist/components/data/flow-canvas/flow-types.d.ts +10 -1
  50. package/dist/components/data/gauge/gauge.class.d.ts +15 -2
  51. package/dist/components/data/gauge/gauge.class.js +20 -20
  52. package/dist/components/data/gauge/gauge.styles.js +1 -1
  53. package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +14 -5
  54. package/dist/components/data/graph-query-builder/graph-query-builder.class.js +2 -2
  55. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +28 -2
  56. package/dist/components/data/sequence-strip/sequence-strip.class.js +3 -2
  57. package/dist/components/data/sequence-strip/sequence-strip.styles.js +1 -1
  58. package/dist/components/data/table/table.class.d.ts +155 -30
  59. package/dist/components/data/table/table.class.js +6 -4
  60. package/dist/components/data/table/table.styles.js +1 -1
  61. package/dist/components/data/timeline/timeline-item.class.d.ts +9 -1
  62. package/dist/components/data/timeline/timeline-item.class.js +2 -2
  63. package/dist/components/data/word-cloud/word-cloud.class.js +1 -1
  64. package/dist/components/data/word-cloud/word-cloud.styles.js +1 -1
  65. package/dist/components/forms/button/button.class.d.ts +30 -1
  66. package/dist/components/forms/button/button.class.js +2 -2
  67. package/dist/components/forms/checkbox/checkbox.class.d.ts +8 -6
  68. package/dist/components/forms/checkbox/checkbox.class.js +2 -2
  69. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +7 -5
  70. package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
  71. package/dist/components/forms/color-picker/color-picker.class.d.ts +16 -2
  72. package/dist/components/forms/color-picker/color-picker.class.js +2 -2
  73. package/dist/components/forms/color-picker/color-picker.styles.js +1 -1
  74. package/dist/components/forms/combobox/combobox.class.d.ts +43 -8
  75. package/dist/components/forms/combobox/combobox.class.js +2 -2
  76. package/dist/components/forms/date-picker/date-input.class.d.ts +4 -0
  77. package/dist/components/forms/date-picker/date-input.class.js +1 -1
  78. package/dist/components/forms/icon-button/icon-button.class.d.ts +20 -3
  79. package/dist/components/forms/icon-button/icon-button.class.js +1 -1
  80. package/dist/components/forms/icon-button/icon-button.styles.js +1 -1
  81. package/dist/components/forms/input/input.class.d.ts +5 -2
  82. package/dist/components/forms/input/input.class.js +1 -1
  83. package/dist/components/forms/input/time-input.class.d.ts +4 -0
  84. package/dist/components/forms/input/time-input.class.js +1 -1
  85. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +11 -5
  86. package/dist/components/forms/locale-picker/locale-picker.class.js +1 -1
  87. package/dist/components/forms/otp-input/otp-input.class.d.ts +7 -2
  88. package/dist/components/forms/otp-input/otp-input.class.js +2 -2
  89. package/dist/components/forms/radio/radio-button.class.d.ts +2 -1
  90. package/dist/components/forms/radio/radio-group.class.d.ts +9 -4
  91. package/dist/components/forms/radio/radio-group.class.js +1 -1
  92. package/dist/components/forms/radio/radio.class.d.ts +13 -7
  93. package/dist/components/forms/radio/radio.class.js +1 -1
  94. package/dist/components/forms/rubric-form/rubric-form.class.d.ts +16 -6
  95. package/dist/components/forms/rubric-form/rubric-form.class.js +2 -2
  96. package/dist/components/forms/select/select.class.d.ts +19 -8
  97. package/dist/components/forms/select/select.class.js +2 -2
  98. package/dist/components/forms/slider/slider.class.d.ts +4 -2
  99. package/dist/components/forms/slider/slider.class.js +1 -1
  100. package/dist/components/forms/switch/switch.class.d.ts +8 -6
  101. package/dist/components/forms/switch/switch.class.js +1 -1
  102. package/dist/components/forms/textarea/textarea.class.d.ts +5 -3
  103. package/dist/components/forms/textarea/textarea.class.js +1 -1
  104. package/dist/components/forms/time-range/time-range.class.d.ts +12 -7
  105. package/dist/components/forms/time-range/time-range.class.js +1 -1
  106. package/dist/components/forms/time-range/time-range.styles.js +1 -1
  107. package/dist/components/forms/token-input/token-input.class.d.ts +6 -4
  108. package/dist/components/forms/token-input/token-input.class.js +1 -1
  109. package/dist/components/layout/app-rail/app-rail-item.class.d.ts +109 -4
  110. package/dist/components/layout/app-rail/app-rail-item.class.js +34 -29
  111. package/dist/components/layout/app-rail/app-rail-item.styles.js +1 -1
  112. package/dist/components/layout/app-rail/app-rail.class.d.ts +25 -3
  113. package/dist/components/layout/app-rail/app-rail.styles.js +1 -1
  114. package/dist/components/layout/app-rail-group/app-rail-group.class.d.ts +2 -2
  115. package/dist/components/layout/app-rail-group/app-rail-group.class.js +2 -2
  116. package/dist/components/layout/carousel/carousel.class.d.ts +1 -1
  117. package/dist/components/layout/carousel/carousel.class.js +1 -1
  118. package/dist/components/layout/details/accordion.class.d.ts +2 -2
  119. package/dist/components/layout/details/accordion.class.js +2 -2
  120. package/dist/components/layout/filter-bar/filter-bar-register.d.ts +1 -0
  121. package/dist/components/layout/filter-bar/filter-bar-register.js +1 -0
  122. package/dist/components/layout/filter-bar/filter-bar.class.d.ts +85 -10
  123. package/dist/components/layout/filter-bar/filter-bar.class.js +7 -4
  124. package/dist/components/layout/menu/menu-item.class.d.ts +3 -3
  125. package/dist/components/layout/menu/menu-item.class.js +3 -3
  126. package/dist/components/layout/menu/menu.class.d.ts +5 -1
  127. package/dist/components/layout/menu/menu.class.js +2 -2
  128. package/dist/components/layout/reorder-list/reorder-item.styles.js +1 -1
  129. package/dist/components/layout/virtual-list/virtual-list.class.js +1 -1
  130. package/dist/components/media/attachment-trigger/attachment-trigger.styles.js +1 -1
  131. package/dist/components/media/avatar-group/avatar-group.class.d.ts +12 -1
  132. package/dist/components/media/avatar-group/avatar-group.class.js +2 -2
  133. package/dist/components/media/drop-zone/drop-zone.class.d.ts +32 -11
  134. package/dist/components/media/drop-zone/drop-zone.class.js +2 -2
  135. package/dist/components/media/file-input/file-input.class.d.ts +40 -19
  136. package/dist/components/media/file-input/file-input.class.js +2 -2
  137. package/dist/components/overlays/callout/callout.styles.js +1 -1
  138. package/dist/components/overlays/dialog/dialog.styles.js +1 -1
  139. package/dist/components/overlays/overlay/dropdown.class.d.ts +13 -3
  140. package/dist/components/overlays/overlay/dropdown.class.js +2 -2
  141. package/dist/components/overlays/overlay/popover.class.d.ts +12 -3
  142. package/dist/components/overlays/overlay/popover.class.js +2 -2
  143. package/dist/components/overlays/rating/rating.class.d.ts +9 -7
  144. package/dist/components/overlays/rating/rating.class.js +1 -1
  145. package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +5 -1
  146. package/dist/components/retrieval/citation-badge/citation-badge.class.js +1 -1
  147. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +1 -1
  148. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +5 -1
  149. package/dist/components/retrieval/entity-chip/entity-chip.class.js +1 -1
  150. package/dist/components/retrieval/graph-legend/graph-legend.styles.js +1 -1
  151. package/dist/components/retrieval/retrieval-value-format.js +1 -1
  152. package/dist/components/retrieval/source-list/source-list.styles.js +1 -1
  153. package/dist/components/utility/copy-button/copy-button.class.d.ts +23 -11
  154. package/dist/components/utility/copy-button/copy-button.class.js +2 -2
  155. package/dist/components/utility/copy-button/copy-button.styles.js +1 -1
  156. package/dist/components/utility/diff-view/diff-view.styles.js +1 -1
  157. package/dist/components/utility/export-button/export-button.class.d.ts +4 -0
  158. package/dist/components/utility/export-button/export-button.class.js +1 -1
  159. package/dist/components/utility/json-viewer/json-viewer.styles.js +1 -1
  160. package/dist/components/utility/known-date/known-date.class.js +1 -1
  161. package/dist/components/utility/mention-popover/mention-popover.class.d.ts +38 -3
  162. package/dist/components/utility/mention-popover/mention-popover.class.js +2 -1
  163. package/dist/components/utility/mention-popover/mention-popover.styles.js +1 -1
  164. package/dist/components/utility/poll-status/poll-status.styles.js +1 -1
  165. package/dist/components/utility/tour/tour.class.d.ts +4 -0
  166. package/dist/components/utility/tour/tour.class.js +1 -1
  167. package/dist/components/utility/tour/tour.styles.js +1 -1
  168. package/dist/components/viewers/document-preview/document-preview.class.js +2 -2
  169. package/dist/components/viewers/docx-viewer/docx-viewer.class.js +2 -2
  170. package/dist/components/viewers/ebook-viewer/ebook-viewer.class.js +2 -2
  171. package/dist/components/viewers/highlight-layer/highlight-layer.class.js +2 -2
  172. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +2 -2
  173. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +2 -2
  174. package/dist/components/viewers/pptx-viewer/pptx-viewer.class.js +2 -2
  175. package/dist/components/viewers/xml-viewer/xml-viewer.class.js +2 -2
  176. package/dist/custom-elements-jsx.d.ts +2 -2
  177. package/dist/events.d.ts +13 -12
  178. package/dist/internal/aggregate-file-limits.d.ts +33 -0
  179. package/dist/internal/aggregate-file-limits.js +1 -0
  180. package/dist/internal/catalog-picker.d.ts +15 -2
  181. package/dist/internal/catalog-picker.js +1 -1
  182. package/dist/internal/debounce-controller.d.ts +14 -0
  183. package/dist/internal/debounce-controller.js +1 -1
  184. package/dist/internal/default-strings.generated.d.ts +1 -1
  185. package/dist/internal/default-strings.generated.js +2 -2
  186. package/dist/internal/focus-navigation.d.ts +45 -0
  187. package/dist/internal/focus-navigation.js +1 -1
  188. package/dist/internal/form-associated.js +1 -1
  189. package/dist/internal/initial-slot-collection.d.ts +30 -0
  190. package/dist/internal/initial-slot-collection.js +1 -0
  191. package/dist/internal/intl-cache.js +1 -1
  192. package/dist/internal/invalid-event-alias.d.ts +46 -0
  193. package/dist/internal/invalid-event-alias.js +1 -1
  194. package/dist/internal/localization-runtime.d.ts +24 -0
  195. package/dist/internal/localization-runtime.js +1 -1
  196. package/dist/internal/localization-types.d.ts +1 -1
  197. package/dist/internal/localization.js +1 -1
  198. package/dist/internal/package-metadata.d.ts +1 -1
  199. package/dist/internal/package-metadata.js +1 -1
  200. package/dist/internal/positioning-strategy.d.ts +3 -1
  201. package/dist/internal/state-part.d.ts +49 -0
  202. package/dist/internal/state-part.js +1 -0
  203. package/dist/internal/variants.styles.js +1 -1
  204. package/dist/lyra.d.ts +1 -1
  205. package/dist/svelte.d.ts +2 -2
  206. package/dist/testing/index.d.ts +1 -1
  207. package/dist/testing/index.js +1 -1
  208. package/dist/testing/lyra-tag-event-map.d.ts +2 -2
  209. package/dist/testing/lyra-tag-event-map.js +1 -1
  210. package/dist/testing/wait-for-mount.d.ts +46 -0
  211. package/dist/testing/wait-for-mount.js +1 -0
  212. package/dist/theme/theme-bootstrap.js +1 -1
  213. package/dist/theme/theme.d.ts +11 -2
  214. package/dist/theme/theme.js +1 -1
  215. package/dist/translations/ar/layout.js +1 -1
  216. package/dist/translations/de/layout.js +1 -1
  217. package/dist/translations/es/layout.js +1 -1
  218. package/dist/translations/fa/layout.js +1 -1
  219. package/dist/translations/fr/layout.js +1 -1
  220. package/dist/translations/he/layout.js +1 -1
  221. package/dist/translations/it/layout.js +1 -1
  222. package/dist/translations/ja/layout.js +1 -1
  223. package/dist/translations/pt-BR/layout.js +1 -1
  224. package/dist/translations/ru/layout.js +1 -1
  225. package/dist/translations/zh-CN/layout.js +1 -1
  226. package/dist/utilities/format.d.ts +17 -0
  227. package/dist/utilities/format.js +1 -1
  228. package/dist/vue.d.ts +2 -2
  229. package/llms/components/lr-app-rail-group.md +87 -10
  230. package/llms/components/lr-app-rail-item.md +88 -11
  231. package/llms/components/lr-app-rail.md +88 -11
  232. package/llms/components/lr-attachment-trigger.md +21 -0
  233. package/llms/components/lr-bar-chart.md +3 -2
  234. package/llms/components/lr-bubble-chart.md +3 -2
  235. package/llms/components/lr-callout.md +10 -0
  236. package/llms/components/lr-chart.md +43 -12
  237. package/llms/components/lr-citation-badge.md +7 -1
  238. package/llms/components/lr-code-block.md +21 -0
  239. package/llms/components/lr-color-picker.md +12 -7
  240. package/llms/components/lr-combobox.md +13 -1
  241. package/llms/components/lr-confirm-bar.md +36 -7
  242. package/llms/components/lr-context-meter.md +17 -4
  243. package/llms/components/lr-date-input.md +7 -1
  244. package/llms/components/lr-date-picker.md +6 -0
  245. package/llms/components/lr-dialog.md +21 -0
  246. package/llms/components/lr-doughnut-chart.md +3 -2
  247. package/llms/components/lr-drawer.md +10 -0
  248. package/llms/components/lr-drop-zone.md +16 -7
  249. package/llms/components/lr-dropdown-item.md +7 -0
  250. package/llms/components/lr-entity-chip.md +7 -1
  251. package/llms/components/lr-export-button.md +7 -1
  252. package/llms/components/lr-file-input.md +21 -10
  253. package/llms/components/lr-filter-bar.md +91 -15
  254. package/llms/components/lr-flow-canvas.md +16 -9
  255. package/llms/components/lr-gauge.md +22 -2
  256. package/llms/components/lr-histogram.md +7 -2
  257. package/llms/components/lr-icon-button.md +15 -7
  258. package/llms/components/lr-input.md +3 -1
  259. package/llms/components/lr-line-chart.md +3 -2
  260. package/llms/components/lr-lite-chart.md +13 -0
  261. package/llms/components/lr-locale-picker.md +7 -1
  262. package/llms/components/lr-mention-popover.md +16 -3
  263. package/llms/components/lr-menu-item.md +7 -0
  264. package/llms/components/lr-menu.md +8 -1
  265. package/llms/components/lr-message-actions.md +10 -0
  266. package/llms/components/lr-model-select.md +8 -3
  267. package/llms/components/lr-native-time-input.md +8 -1
  268. package/llms/components/lr-number-input.md +8 -1
  269. package/llms/components/lr-option.md +12 -0
  270. package/llms/components/lr-otp-input.md +6 -0
  271. package/llms/components/lr-pie-chart.md +3 -2
  272. package/llms/components/lr-polar-area-chart.md +3 -2
  273. package/llms/components/lr-prompt-input.md +2 -2
  274. package/llms/components/lr-radar-chart.md +3 -2
  275. package/llms/components/lr-reorder-item.md +12 -0
  276. package/llms/components/lr-reorder-list.md +12 -0
  277. package/llms/components/lr-scatter-chart.md +3 -2
  278. package/llms/components/lr-sequence-strip.md +10 -4
  279. package/llms/components/lr-streaming-text-core.md +21 -8
  280. package/llms/components/lr-streaming-text.md +34 -4
  281. package/llms/components/lr-suggestion-chips.md +8 -4
  282. package/llms/components/lr-table.md +47 -10
  283. package/llms/components/lr-textarea.md +1 -1
  284. package/llms/components/lr-time-input.md +7 -1
  285. package/llms/components/lr-tool-call-chip.md +7 -1
  286. package/llms/components/lr-tour.md +7 -1
  287. package/llms/components/lr-usage-badge.md +7 -1
  288. package/llms/components/lr-voice-picker.md +7 -3
  289. package/llms/shared.md +169 -16
  290. package/llms/tokens.md +17 -1
  291. package/llms-full.txt +941 -147
  292. package/package.json +16 -2
  293. package/registrations.json +1 -1
  294. package/vscode-css-data.json +1 -1
  295. package/vscode-html-data.json +1 -1
  296. package/web-types.json +1 -1
@@ -28,9 +28,10 @@ of every entry in these lists.**
28
28
  **Properties:** `description`, `grid`, `axes`, `compact`, `indexAxis` (`index-axis`), `label`, `hiddenDatasets`, `legendPosition`
29
29
  (`legend-position`), `hiddenDatums`, `legendMode` (`legend-mode`), `legendDisplay` (`legend-display`),
30
30
  `max`, `min`, `plugins`, `scaleType` (`scale-type`), `annotations`,
31
- `stacked`, `withoutAnimation` (`without-animation`),
31
+ `stacked`, `stackedAxes`, `withoutAnimation` (`without-animation`),
32
32
  `withoutLegend` (`without-legend`), `withoutTooltip` (`without-tooltip`), `xLabel` (`x-label`),
33
- `yLabel` (`y-label`), plus additive `labels`, `datasets`, `valueFormatter`, `formatter`, `area`, `zoom`,
33
+ `yLabel` (`y-label`), plus additive `labels`, `datasets`, `valueFormatter`, `formatter`,
34
+ `tooltipTitleFormatter`, `tooltipFooterFormatter`, `area`, `zoom`,
34
35
  `height`, `y2Label` (`y2-label`), `beginAtZero` (`begin-at-zero`), `dataLabels`
35
36
  (`data-labels`), `stackTotals` (`stack-totals`), `config`, `showDataTable`
36
37
  (`show-data-table`), `dataTableToggle` (`data-table-toggle`), `chartArea` (readonly), and `chart`.
@@ -53,8 +53,8 @@ Every array-valued property above is a clone-owned, bounded, frozen readonly sna
53
53
  nested source children and queued attachments. Mutating a previously assigned collection has no
54
54
  effect; create and reassign a new array after changes.
55
55
 
56
- `LyraPromptSuggestion` extends `LyraMentionItem { suggestionId, label, description?, icon? }` with
57
- optional `insertText` (defaults to `label`). The selected occurrence's original, pre-filter `index`
56
+ `LyraPromptSuggestion` extends `LyraMentionItem { suggestionId, label, description?, icon?, disabled? }`
57
+ with optional `insertText` (defaults to `label`). The selected occurrence's original, pre-filter `index`
58
58
  is preserved in the event detail. `LyraPromptInputAttachment` replaces `DocumentRef.id` with
59
59
  `attachmentId` and adds `file?`, `bytes?`, `status?: 'pending' | 'uploading' | 'error' | 'success'`,
60
60
  and numeric `progress?`.
@@ -28,9 +28,10 @@ of every entry in these lists.**
28
28
  **Properties:** `description`, `grid`, `axes`, `compact`, `indexAxis` (`index-axis`), `label`, `hiddenDatasets`, `legendPosition`
29
29
  (`legend-position`), `hiddenDatums`, `legendMode` (`legend-mode`), `legendDisplay` (`legend-display`),
30
30
  `max`, `min`, `plugins`, `scaleType` (`scale-type`), `annotations`,
31
- `stacked`, `withoutAnimation` (`without-animation`),
31
+ `stacked`, `stackedAxes`, `withoutAnimation` (`without-animation`),
32
32
  `withoutLegend` (`without-legend`), `withoutTooltip` (`without-tooltip`), `xLabel` (`x-label`),
33
- `yLabel` (`y-label`), plus additive `labels`, `datasets`, `valueFormatter`, `formatter`, `area`, `zoom`,
33
+ `yLabel` (`y-label`), plus additive `labels`, `datasets`, `valueFormatter`, `formatter`,
34
+ `tooltipTitleFormatter`, `tooltipFooterFormatter`, `area`, `zoom`,
34
35
  `height`, `y2Label` (`y2-label`), `beginAtZero` (`begin-at-zero`), `dataLabels`
35
36
  (`data-labels`), `stackTotals` (`stack-totals`), `config`, `showDataTable`
36
37
  (`show-data-table`), `dataTableToggle` (`data-table-toggle`), `chartArea` (readonly), and `chart`.
@@ -145,6 +145,18 @@ rotation and activation, while background, radius, hover/press mixes, focus ring
145
145
  come from `--lr-icon-button-*`, and the component's own `--lr-reorder-item-move-button-*` hooks still
146
146
  win over those defaults), `content` (default-slot wrapper).
147
147
 
148
+ **Border reaches the composed move controls the same way background/color/radius do.** This
149
+ component paints no resting border on either move control, so it relays no
150
+ `--_lr-icon-button-border-default` into their private fallback tier — but that absence is not a
151
+ gap. The public `--lr-icon-button-border` (and its `-hover`/`-active` variants) is the FIRST arm
152
+ of the token chain, resolved by ordinary custom-property inheritance regardless of whether this
153
+ component relays a default for that same property, so setting it on either move control or an
154
+ ancestor reaches it exactly as the background/color/radius tokens do. A component with no resting
155
+ border simply has no default to relay, which is different from border theming being broken. Size
156
+ remains the one exception that does not cross this way: use `--lr-theme-icon-button-size`, never
157
+ `--lr-icon-button-size` — every `LyraElement` re-declares the latter on its own `:host`, so it
158
+ never reaches a composed child (see `llms/tokens.md`).
159
+
148
160
  **Themeable custom properties:** `--lr-reorder-item-gap` (default `var(--lr-space-xs)`) — gap
149
161
  between the move buttons and the row content. The move-button interaction paints are independent,
150
162
  inherited inline fallbacks: `--lr-reorder-item-move-button-hover-bg` (default
@@ -145,6 +145,18 @@ rotation and activation, while background, radius, hover/press mixes, focus ring
145
145
  come from `--lr-icon-button-*`, and the component's own `--lr-reorder-item-move-button-*` hooks still
146
146
  win over those defaults), `content` (default-slot wrapper).
147
147
 
148
+ **Border reaches the composed move controls the same way background/color/radius do.** This
149
+ component paints no resting border on either move control, so it relays no
150
+ `--_lr-icon-button-border-default` into their private fallback tier — but that absence is not a
151
+ gap. The public `--lr-icon-button-border` (and its `-hover`/`-active` variants) is the FIRST arm
152
+ of the token chain, resolved by ordinary custom-property inheritance regardless of whether this
153
+ component relays a default for that same property, so setting it on either move control or an
154
+ ancestor reaches it exactly as the background/color/radius tokens do. A component with no resting
155
+ border simply has no default to relay, which is different from border theming being broken. Size
156
+ remains the one exception that does not cross this way: use `--lr-theme-icon-button-size`, never
157
+ `--lr-icon-button-size` — every `LyraElement` re-declares the latter on its own `:host`, so it
158
+ never reaches a composed child (see `llms/tokens.md`).
159
+
148
160
  **Themeable custom properties:** `--lr-reorder-item-gap` (default `var(--lr-space-xs)`) — gap
149
161
  between the move buttons and the row content. The move-button interaction paints are independent,
150
162
  inherited inline fallbacks: `--lr-reorder-item-move-button-hover-bg` (default
@@ -28,9 +28,10 @@ of every entry in these lists.**
28
28
  **Properties:** `description`, `grid`, `axes`, `compact`, `indexAxis` (`index-axis`), `label`, `hiddenDatasets`, `legendPosition`
29
29
  (`legend-position`), `hiddenDatums`, `legendMode` (`legend-mode`), `legendDisplay` (`legend-display`),
30
30
  `max`, `min`, `plugins`, `scaleType` (`scale-type`), `annotations`,
31
- `stacked`, `withoutAnimation` (`without-animation`),
31
+ `stacked`, `stackedAxes`, `withoutAnimation` (`without-animation`),
32
32
  `withoutLegend` (`without-legend`), `withoutTooltip` (`without-tooltip`), `xLabel` (`x-label`),
33
- `yLabel` (`y-label`), plus additive `labels`, `datasets`, `valueFormatter`, `formatter`, `area`, `zoom`,
33
+ `yLabel` (`y-label`), plus additive `labels`, `datasets`, `valueFormatter`, `formatter`,
34
+ `tooltipTitleFormatter`, `tooltipFooterFormatter`, `area`, `zoom`,
34
35
  `height`, `y2Label` (`y2-label`), `beginAtZero` (`begin-at-zero`), `dataLabels`
35
36
  (`data-labels`), `stackTotals` (`stack-totals`), `config`, `showDataTable`
36
37
  (`show-data-table`), `dataTableToggle` (`data-table-toggle`), `chartArea` (readonly), and `chart`.
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 11 parts, 4 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 11 parts, 5 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -61,13 +61,18 @@ numeric disclosure.
61
61
  **Properties:**
62
62
 
63
63
  - `items: readonly SequenceStripItem[] = []` (attribute: false) — `{ readonly id, readonly
64
- categoryId, readonly marker?, readonly label? }`;
64
+ categoryId, readonly marker?, readonly label?, readonly disabled? }`;
65
65
  `marker` renders a small bottom marker on that cell independent of the category color (e.g. a
66
66
  subagent-dispatched turn); `label` is per-item hover/focus tooltip text _and_ that cell's own
67
67
  `role="listitem"` accessible name, falling back to the matching category's own nonblank `label`,
68
68
  then localized `sequenceStripUnnamedCategory` (`"Unnamed category"` in the built-in English
69
69
  catalog) when unset — it is not read by `[part="base"]`'s auto-generated `aria-label`, which
70
- summarizes by category/count only
70
+ summarizes by category/count only. `disabled` marks the item non-actionable:
71
+ `aria-disabled="true"` replaces the selected/active affordances of the cell that represents it,
72
+ activating it (click or Enter/Space) emits nothing, and roving Left/Right/Home/End navigation —
73
+ including the default resting tab stop — steps past it. Above the 200-cell cap, a range cell's
74
+ disabled state follows its own activated item, the range's first. Omitted or `false` renders the
75
+ item exactly as before this field existed
71
76
  - `categories: readonly SequenceStripCategory[] = []` (attribute: false) — `{ readonly id,
72
77
  readonly color, readonly label? }`; `color`
73
78
  is the cell background for every item whose `categoryId` matches `id`; invalid CSS colors,
@@ -143,7 +148,8 @@ block-size), `--lr-sequence-strip-marker-color` (default `var(--lr-color-text)`
143
148
  (default `0.625rem` — a legend swatch's inline- and block-size, category and marker rows alike), and
144
149
  `--lr-sequence-strip-legend-marker-bg` (default `var(--lr-color-surface-raised)` — the neutral chip
145
150
  background behind the marker legend row's bar; it stands in for "any cell", so it deliberately
146
- matches no category color); the tooltip also consumes shared tokens
151
+ matches no category color), and `--lr-sequence-strip-disabled-opacity` (default `var(--lr-opacity-disabled)` opacity of
152
+ a cell whose activated item sets `disabled`); the tooltip also consumes shared tokens
147
153
  `--lr-color-surface`, `--lr-color-text`, `--lr-font-size-xs`, `--lr-radius`, and `--lr-shadow`, and
148
154
  the legend consumes `--lr-space-2xs`, `--lr-space-xs`, `--lr-space-s`, `--lr-font-size-xs`,
149
155
  `--lr-color-text-quiet`, and `--lr-radius-xs`.
@@ -19,13 +19,15 @@
19
19
  A build-lean `<lr-streaming-text>` variant for a consumer whose fenced-code `languages` map already
20
20
  covers every language it will ever stream, or who never renders fenced code at all. Every
21
21
  capability — token coalescing, `contentMode` auto-detection, the blinking cursor, the
22
- `lr-content-settled` event, the `languages` property is identical to `<lr-streaming-text>`; only
23
- which Markdown element Markdown mode composes differs: this variant renders `<lr-markdown-core>`
24
- (`../markdown/markdown-core.js`) instead of `<lr-markdown>`, so importing this entry point instead
25
- of `streaming-text.js` never references `<lr-markdown>`'s ~200-language dynamic-import table at
26
- all. A fenced code block whose language isn't a key in `languages` always renders the plain-text
27
- fallback there is no default/full-table highlighter here to fall back to, mirroring
28
- `<lr-markdown-core>`'s own contract.
22
+ `lr-content-settled` event, the `languages` property, and the full forwarded Markdown configuration
23
+ surface (`tabSize`, `htmlMode`, `gfm`, `linkTarget`, `internalLinkPrefix`, `headingOffset`,
24
+ `highlightCode`, `headingAnchors`, `math`, `maxHeight`) is identical to `<lr-streaming-text>`;
25
+ only which Markdown element Markdown mode composes differs: this variant renders
26
+ `<lr-markdown-core>` (`../markdown/markdown-core.js`) instead of `<lr-markdown>`, so importing this
27
+ entry point instead of `streaming-text.js` never references `<lr-markdown>`'s ~200-language
28
+ dynamic-import table at all. A fenced code block whose language isn't a key in `languages` always
29
+ renders the plain-text fallback — there is no default/full-table highlighter here to fall back to,
30
+ mirroring `<lr-markdown-core>`'s own contract.
29
31
 
30
32
  **Properties:** `content: string = ''` — the full current text so far, identical contract to
31
33
  `<lr-streaming-text>`'s own; `streaming: boolean = false` (reflected); `coalesceMs: number = 50`
@@ -34,7 +36,18 @@ fallback — there is no default/full-table highlighter here to fall back to, mi
34
36
  `content-mode`, reflected) — `auto`
35
37
  uses `looksLikeMarkdown`, `plain`/`markdown` force their named paths; `languages?:
36
38
  Readonly<Record<string, ShikiLanguageInput>>` (property only) — forwarded verbatim to the composed
37
- `<lr-markdown-core>`'s own `languages` instead of `<lr-markdown>`'s.
39
+ `<lr-markdown-core>`'s own `languages` instead of `<lr-markdown>`'s (defaulting the composed
40
+ element's own `languages` to `{}` when unset, unlike the full variant's `undefined`). The rest of
41
+ `<lr-markdown-core>`'s configuration surface forwards verbatim too, sharing the same properties,
42
+ attribute names, and defaults described under `<lr-streaming-text>`'s own **Properties** above:
43
+ `tabSize: number = 4` (attribute `tab-size`); `htmlMode: 'sanitize' | 'escape' | 'trusted' =
44
+ 'sanitize'` (attribute `html-mode`); `gfm: boolean = true`; `linkTarget: string | null = '_blank'`
45
+ (attribute `link-target`, still guarded by the composed element's own
46
+ `rel="noopener noreferrer"` whenever a `target` is emitted); `internalLinkPrefix: string = ''`
47
+ (attribute `internal-link-prefix`); `headingOffset: number = 0` (attribute `heading-offset`);
48
+ `highlightCode: boolean = true` (attribute `highlight-code`); `headingAnchors: boolean = false`
49
+ (attribute `heading-anchors`); `math: boolean = false`; `maxHeight: string = ''` (attribute
50
+ `max-height`).
38
51
 
39
52
  **Exported helper:** `looksLikeMarkdown(text: string): boolean` — the same standalone heuristic
40
53
  `<lr-streaming-text>` exports and documents, in `llms/components/lr-streaming-text.md`; both tags
@@ -36,6 +36,32 @@ not a delta — this component does no accumulation or ordering of its own.
36
36
  `<lr-code-block>`/`<lr-markdown>` support. Unset leaves the composed element's own default
37
37
  untouched.
38
38
 
39
+ The rest of `<lr-markdown>`'s configuration surface forwards verbatim too, each defaulting to
40
+ exactly `<lr-markdown>`'s own default so leaving it unset renders identically to before these
41
+ properties existed:
42
+
43
+ - `tabSize: number = 4` (attribute `tab-size`) — forwarded to the composed `<lr-markdown>`'s own
44
+ `tabSize`.
45
+ - `htmlMode: 'sanitize' | 'escape' | 'trusted' = 'sanitize'` (attribute `html-mode`) — forwarded to
46
+ the composed `<lr-markdown>`'s own `htmlMode`.
47
+ - `gfm: boolean = true` — forwarded to the composed `<lr-markdown>`'s own `gfm`.
48
+ - `linkTarget: string | null = '_blank'` (attribute `link-target`) — forwarded to the composed
49
+ `<lr-markdown>`'s own `linkTarget`; the composed element always applies its own
50
+ `rel="noopener noreferrer"` guard whenever a `target` is emitted, including a forwarded
51
+ non-default value, and never a bare `opener`.
52
+ - `internalLinkPrefix: string = ''` (attribute `internal-link-prefix`) — forwarded to the composed
53
+ `<lr-markdown>`'s own `internalLinkPrefix`.
54
+ - `headingOffset: number = 0` (attribute `heading-offset`) — forwarded to the composed
55
+ `<lr-markdown>`'s own `headingOffset`.
56
+ - `highlightCode: boolean = true` (attribute `highlight-code`) — forwarded to the composed
57
+ `<lr-markdown>`'s own `highlightCode`.
58
+ - `headingAnchors: boolean = false` (attribute `heading-anchors`) — forwarded to the composed
59
+ `<lr-markdown>`'s own `headingAnchors`.
60
+ - `math: boolean = false` — forwarded to the composed `<lr-markdown>`'s own `math`; the transitive
61
+ `katex` peer is requested only once this is set.
62
+ - `maxHeight: string = ''` (attribute `max-height`) — forwarded to the composed `<lr-markdown>`'s
63
+ own `maxHeight`.
64
+
39
65
  **Exported helper:** `looksLikeMarkdown(text: string): boolean` — runs a fixed, ordered list of
40
66
  lightweight regexes (ATX heading, fenced code block, `**bold**`, `_italic_`, inline code, bullet
41
67
  list item, numbered list item, `[text](url)` link, blockquote) against the whole string and returns
@@ -72,8 +98,9 @@ does not register it separately), so its optional-peer module graph includes `ma
72
98
  stay on the peer-free plain-text path; Markdown rendering lazy-loads `marked` plus the default
73
99
  `dompurify` sanitizer and falls back to readable plain text if either is unavailable. Fenced code
74
100
  can additionally use `shiki`, whose absence only leaves code unhighlighted. The composed Markdown
75
- implementation contains the opt-in `katex` loader, but this wrapper does not enable its `math`
76
- property and therefore never requests `katex` itself.
101
+ implementation contains the opt-in `katex` loader; this wrapper forwards its own `math` property
102
+ (default `false`) to the composed element verbatim, so `katex` is requested only once a consumer
103
+ sets `math` here.
77
104
 
78
105
  ```html
79
106
  <lr-streaming-text id="out" coalesce-ms="80" streaming></lr-streaming-text>
@@ -98,8 +125,11 @@ never be left stranded mid-window, and a stream restarting on a reused element c
98
125
  showing the previous stream's stale final content for the length of the window.
99
126
 
100
127
  Rendering itself is never reimplemented here: Markdown mode composes `<lr-markdown>` directly,
101
- forwarding this component's own `streaming` through as that component's `streaming` hint prop and
102
- `languages` verbatim; plain-text mode renders into a `white-space: pre-wrap` span instead. The
128
+ forwarding this component's own `streaming` through as that component's `streaming` hint prop,
129
+ `languages` verbatim, and the rest of `<lr-markdown>`'s configuration surface verbatim too
130
+ (`tabSize`, `htmlMode`, `gfm`, `linkTarget`, `internalLinkPrefix`, `headingOffset`,
131
+ `highlightCode`, `headingAnchors`, `math`, `maxHeight` — see **Properties** above); plain-text mode
132
+ renders into a `white-space: pre-wrap` span instead. The
103
133
  blinking cursor degrades
104
134
  to a static, always-visible bar under `prefers-reduced-motion: reduce`. In plain-text mode it sits
105
135
  inline at the tail of the final character; in Markdown mode it renders as its own trailing block
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 6 parts, 3 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 6 parts, 4 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -25,12 +25,15 @@ identifier disappears, focus repairs to the nearest surviving occurrence without
25
25
  external focus move.
26
26
 
27
27
  **Properties:** `suggestions: readonly LyraChatSuggestion[] = []` (attribute: false) —
28
- `LyraChatSuggestion { suggestionId: string; label: string; icon?: string; detail?: string }`
28
+ `LyraChatSuggestion { suggestionId: string; label: string; icon?: string; detail?: string; disabled?: boolean }`
29
29
  (exported here). Identifiers must be nonempty and unique; invalid/later duplicates are omitted with
30
30
  the first valid occurrence winning. The input is clone-owned, bounded, and frozen; reassign a new
31
31
  array after changing the sequence or a row. `icon` is an optional
32
32
  peer-neutral literal hint (for example, an emoji), rendered decoratively before the text, and
33
- `detail` is an optional secondary line. Empty renders nothing at all. `wrap: boolean = false`
33
+ `detail` is an optional secondary line. `disabled` marks a suggestion non-actionable: its chip
34
+ renders a genuinely disabled `<button>` (no roving tab stop, no hover/press affordance), activating
35
+ it emits nothing, and arrow-key/Home/End roving navigation steps past it. Empty renders nothing at
36
+ all. `wrap: boolean = false`
34
37
  (reflected) — wraps into multiple rows instead of a single horizontally scrollable line. `label?:
35
38
  string` — accessible name for the group. Omitting it uses the localized `suggestionsLabel`; an
36
39
  explicit empty string intentionally leaves the group unnamed.
@@ -49,7 +52,8 @@ cannot do (once the chips wrap, the row fills the available inline size and each
49
52
  start). `--lr-suggestion-chips-hover-bg` (default `var(--lr-color-brand-quiet)`) — a `chip`'s
50
53
  background on hover. `--lr-suggestion-chips-hover-border` (default `var(--lr-color-brand)`) — a
51
54
  `chip`'s border color on hover. All three are declared as `var()` fallbacks at the point of use, not
52
- on `:host`. Plus shared tokens `--lr-space-xs/-m/-2xs`,
55
+ on `:host`. `--lr-suggestion-chips-disabled-opacity` (default `0.5`) — opacity of a chip whose
56
+ suggestion sets `disabled`. Plus shared tokens `--lr-space-xs/-m/-2xs`,
53
57
  `--lr-color-border/-surface/-text/-text-quiet`, `--lr-radius-pill`, `--lr-font-size-xs`,
54
58
  `--lr-focus-ring-width/-color/-offset`.
55
59
 
@@ -61,9 +61,11 @@ unchanged.
61
61
  headerCell?, width?, minWidth?, maxWidth?,
62
62
  resizable?, sortable?, sortValue?, defaultSortDir?: 'asc'|'desc', align?: 'start'|'end',
63
63
  priority?: 'medium'|'low',
64
- sticky?: 'start'|'end', editTrigger?: 'double-click'|'always', editValue?, editType?: 'text'|'number'|'select',
64
+ sticky?: 'start'|'end', editTrigger?: 'double-click'|'always', editValue?, editLabel?: (row) => string,
65
+ editType?: 'text'|'number'|'select',
65
66
  editOptions?: { value: string; label: string }[], footer?, cellStyle?, heatValue?,
66
- cell: (row) => unknown }` —
67
+ cell: (row) => unknown }` — `cell` is required for every `editTrigger` except `'always'`, whose
68
+ persistent editor renders unconditionally so the table's render path never falls back to it —
67
69
  `sortValue(row) => string | number | null | undefined` supplies the comparable value backing
68
70
  client-mode sorting for that column: a finite number sorts numerically, a string sorts through an
69
71
  `Intl.Collator` built from the component's effective locale with `numeric: true` (so `item2`
@@ -103,13 +105,15 @@ cell: (row) => unknown }` —
103
105
  own ramp-token convention; `cellStyle` is applied directly to the generated `<td>` via `styleMap` — e.g. a computed heat-tint
104
106
  background a `cell()`-returned inner element can't paint into the cell's own padding — omit it for
105
107
  no per-cell style override (the default, unchanged output);
106
- `editTrigger: 'double-click'` opens a native editor on that cell's double-click (one cell at a
107
- time), while `'always'` renders a persistent editor in every body cell from first paint, for a
108
+ `editTrigger: 'double-click'` opens a native editor on that cell's double-click, `F2`, or `Enter`
109
+ (one cell at a time), while `'always'` renders a persistent editor in every body cell from first paint, for a
108
110
  settings/rate-style column meant to be typed straight into — while `editValue` supplies the editor
109
111
  value and `editType` selects `'text'`, `'number'`, or `'select'` (a native `<select>` populated
110
112
  from `editOptions: { value: string; label: string }[]`, one `<option>` per entry in order; a
111
113
  `'select'` column with no `editOptions` renders an empty, valueless `<select>` instead of
112
- throwing)
114
+ throwing); `editLabel(row) => string`, read once per row exactly like `editValue`/`cellTitle`,
115
+ overrides that editor's accessible name — omit it and every editor in the column shares the same
116
+ interpolated `tableEditCell` name instead (see the accessibility note under `editTrigger` below)
113
117
  `cellTitle(row) => string | undefined` is the `title` analogue of `cellStyle`, applied directly to
114
118
  the generated `<td>` — e.g. the untruncated text behind an ellipsized cell, or a formatted
115
119
  timestamp behind a relative one;
@@ -131,8 +135,21 @@ cell: (row) => unknown }` —
131
135
  Enter commits and closes, Escape cancels and closes, and blur-after-change commits. `'always'`
132
136
  renders an editor in
133
137
  every body cell of that column, permanently:
134
- - **Focus model.** Each editor is a plain tab stop — no `tabindex` of its own exactly like the
135
- existing row-expand toggle, and stays _outside_ the header/row roving-tabindex model. Tab walks
138
+ - **Keyboard entry (`'double-click'` columns).** The resting (not-currently-editing) cell of a
139
+ `'double-click'` column is its own roving-focus stop — `tabindex="-1"`, carrying `[data-editable]`
140
+ — reachable once the row itself has focus: ArrowRight (ArrowLeft under RTL) enters at the first
141
+ editable cell in the row and steps forward through any further ones; ArrowLeft (ArrowRight under
142
+ RTL) steps back and, from the first editable cell, returns focus to the row. None of this is a Tab
143
+ stop — a table with a `'double-click'` column gains no new entry in the page's Tab order, only a
144
+ new arrow-reachable one — and a table with no `editTrigger` column at all renders no `tabindex`/
145
+ `[data-editable]` anywhere. `F2` or `Enter` on the focused cell opens its editor; `Enter` on the
146
+ row itself (no cell focused) still only activates the row. `editCell(rowKey, columnKey)` (see
147
+ Methods above) is the same open action as a public method. Closing the editor, by commit or by
148
+ cancel, returns focus to the cell that opened it.
149
+ - **Focus model (`'always'` columns).** Each editor is a plain tab stop — no `tabindex` of its own
150
+ — exactly like the
151
+ existing row-expand toggle, and stays _outside_ the header/row/cell roving-tabindex model. Tab
152
+ walks
136
153
  down the column; arrow keys still navigate the grid from a row's own roving stop, and act as
137
154
  ordinary caret movement once focus is inside a field. Non-editable columns are unaffected.
138
155
  - **Value binding.** A persistent `'text'`/`'number'` editor binds its `value` as a **content
@@ -151,8 +168,14 @@ cell: (row) => unknown }` —
151
168
  `<input>` (the typed value rides along) and the table restores focus to the same logical cell
152
169
  afterwards. If the focused row leaves the rendered page entirely (pagination, filtering), focus
153
170
  is simply lost rather than yanked to whichever unrelated row now sits in that position.
154
- - Each editor keeps its own interpolated `tableEditCell` accessible name (`Edit {column}`), so a
155
- column of otherwise-identical inputs is still individually named to a screen reader.
171
+ - **Accessible name.** Each editor's name is `columns[].editLabel(row)` when the column defines
172
+ it, or otherwise the interpolated `tableEditCell` string (`Edit {column}`) identical for every
173
+ row in that column, since the default has no row context. That default is adequate for
174
+ `'double-click'`, where at most one editor is ever open, but not for `'always'`: every row's
175
+ editor there is a permanent, individually focusable Tab stop, so leaving `editLabel` unset on an
176
+ `'always'` column exposes as many identically named controls as there are rows (e.g. fifty "Edit
177
+ Status" comboboxes), failing WCAG 2.4.6 and 1.3.1. Define `editLabel` for any `'always'` column
178
+ to give each row's editor its own name.
156
179
  - `hasHiddenPriorityColumns: boolean = false` (attribute `has-hidden-priority-columns`, reflected) —
157
180
  computed/read-only and true only while a priority column is actually hidden. It becomes false
158
181
  when `priorityColumnsVisible` reveals the columns. Measured via a `ResizeObserver` on
@@ -290,6 +313,14 @@ cell: (row) => unknown }` —
290
313
  rendered panel anyway, `expandedContentElement(rowKey)` (below) resolves that `<td>`;
291
314
  `rowElement(rowKey)` does not, because the panel is a sibling `<tr>` rather than part of the row
292
315
  - `canExpand?: (row: T) => boolean` (attribute: false) — optional per-row gate for expansion
316
+ - `rowExpandLabel?: (row: T, expanded: boolean) => string | undefined` (attribute: false) —
317
+ accessible name for one row's expand/collapse chevron, read once per render for that row,
318
+ exactly like a column's `editLabel`/`cellTitle`; consumer-owned text used verbatim, never
319
+ passed through localization. Omit it and every chevron shares the same localized
320
+ `expand`/`collapse` name, which carries no row context — fine for a handful of rows, but each
321
+ chevron is its own Tab stop, so a long table otherwise announces the same two names over and
322
+ over with no way to tell the rows apart. There is no default row context to derive one from
323
+ here: this component has no row-header notion (`rowKey` is an opaque identity, not a label)
293
324
  - `expansionMode: 'none'|'single'|'multiple' = 'none'` (attribute `expansion-mode`, reflected) —
294
325
  mirrors `selectionMode` member for member, for expansion. The default `'none'` keeps
295
326
  `expandedRowKeys` fully consumer-controlled: an activation only reports `lr-row-expand-toggle`.
@@ -396,8 +427,14 @@ cell: (row) => unknown }` —
396
427
  - `expandedContentElement(rowKey)` — the rendered `[part='expanded-cell']` holding that row's
397
428
  `expandedContent(row)` output, or `null` when the row is not currently rendered, is not expanded,
398
429
  or the table sets no `expandedContent`
430
+ - `editCell(rowKey, columnKey)` — opens the inline editor at that row/column pair, exactly as a
431
+ double-click, `F2`, or `Enter` on the cell's own focus stop would (see `columns[].editTrigger`
432
+ below) — the entry point for a consumer's own key binding or menu action. A no-op for an unknown
433
+ row key, an unknown column key, or a column with no `editTrigger`. For an `editTrigger: 'always'`
434
+ column (already open from first paint) it moves focus into that editor instead of opening
435
+ anything.
399
436
 
400
- All three exist for code that has to reach content a `cell(row)`/`expandedContent(row)` callback
437
+ The first three exist for code that has to reach content a `cell(row)`/`expandedContent(row)` callback
401
438
  rendered into this component's shadow root — measuring it, scrolling it into view, or applying a
402
439
  style `::part()` cannot express, since only pseudo-classes may follow a part selector. One method per
403
440
  callback, and the split is not cosmetic: the expansion panel is a **sibling** `<tr part='expanded-row'>`
@@ -82,7 +82,7 @@ disabled state.
82
82
  | `enterKeyHint` | `enterkeyhint` | `string` | `''` | Virtual-keyboard Enter-key hint forwarded to the native `<textarea>`. |
83
83
  | `minlength` | `minlength` | `number \| undefined` | `undefined` | Minimum text length; forwarded to the native `<textarea>` and reported as `validity.tooShort`. |
84
84
  | `maxlength` | `maxlength` | `number \| undefined` | `undefined` | Maximum text length; forwarded to the native `<textarea>` (which also stops typing past it) and reported as `validity.tooLong`. |
85
- | `debounce` | `debounce` | `number \| undefined` | `undefined` | How long (ms) to wait after the last keystroke before emitting one `lr-input-settled`, while `input`/`lr-input` keep firing per keystroke as before. Omitted, `0`, or non-finite means no debounce: `lr-input-settled` never fires. A pending debounce is flushed immediately by `change`/Enter/blur and cancelled with no stray settle by disconnection and a programmatic `value` write. Shares its `DebounceController` primitive with `lr-filter-bar`'s own per-filter `debounce` and with `lr-input`'s identical property. |
85
+ | `debounce` | `debounce` | `number \| undefined` | `undefined` | How long (ms) to wait after the last keystroke before emitting one `lr-input-settled`, while `input`/`lr-input` keep firing per keystroke as before. Omitted, `0`, or non-finite means no debounce: `lr-input-settled` never fires. A pending debounce is flushed immediately by `change`/Enter/blur and cancelled with no stray settle by disconnection and by a programmatic `value` write that changes the value. A write of the value already held leaves it pending, so a framework binding that writes the just-typed value back on each render (the controlled-input pattern) still settles. Shares its `DebounceController` primitive with `lr-filter-bar`'s own per-filter `debounce` and with `lr-input`'s identical property. |
86
86
  | `name` | `name` | `string` | `''` | Form field name. |
87
87
  | `disabled` | `disabled` | `boolean` | `false` | Disables the control. |
88
88
  | `required` | `required` | `boolean` | `false` | Participates in native constraint validation. |
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 23 parts, 34 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 23 parts, 35 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -178,6 +178,12 @@ mode the raised tone is already distinct from the page, so this panel never had
178
178
  reads-as-a-hole problem the family exists to fix. Setting `--lr-overlay-surface` still repaints it
179
179
  along with every other popup.
180
180
 
181
+ `--lr-positioning-strategy` (16.0.0) — the `popup` panel reads this same cascading
182
+ `absolute`/`fixed` override documented on `<lr-popover>` when it is (re)positioned, falling back to
183
+ its own `fixed` default when nothing is set. There is no per-instance `positioning-strategy`
184
+ property on `<lr-time-input>`; set the custom property on `:root`, a theme, or one clipping
185
+ ancestor to change every unset time input beneath it.
186
+
181
187
  ```html
182
188
  <lr-time-input
183
189
  label="Start time"
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 10 parts, 9 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 10 parts, 10 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -86,6 +86,12 @@ The anchored detail tooltip is a floating surface and paints from the **shared o
86
86
  declared on `:host`, so one declaration on `:root` — or on any ancestor, to scope it — retints this
87
87
  surface together with every other floating surface in the library. `--lr-overlay-radius` (default `var(--lr-radius)`) is the matching corner radius.
88
88
 
89
+ `--lr-positioning-strategy` (16.0.0) — the detail tooltip reads this same cascading
90
+ `absolute`/`fixed` override documented on `<lr-popover>` when it is (re)positioned, falling back to
91
+ its own `fixed` default when nothing is set. There is no per-instance `positioning-strategy`
92
+ property on `<lr-tool-call-chip>`; set the custom property on `:root`, a theme, or one clipping
93
+ ancestor to change every unset chip beneath it.
94
+
89
95
  **Optional peer deps:** none.
90
96
 
91
97
  ```html
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 12 parts, 6 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 12 parts, 7 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -104,6 +104,12 @@ shared ceiling that keeps any floating surface inside a narrow viewport. `lr-tou
104
104
  retuning `--lr-theme-popover-viewport-clamp` once at `:root` narrows or widens all three together
105
105
  rather than per component.
106
106
 
107
+ `--lr-positioning-strategy` (16.0.0) — the step popover reads this same cascading `absolute`/`fixed`
108
+ override documented on `<lr-popover>` when a step is (re)positioned, falling back to its own `fixed`
109
+ default when nothing is set. There is no per-instance `positioning-strategy` property on `<lr-tour>`;
110
+ set the custom property on `:root`, a theme, or one clipping ancestor to change every unset tour
111
+ beneath it.
112
+
107
113
  **Known gotchas:**
108
114
 
109
115
  - By default the spotlighted target is **non-interactive**: it stays visible and announceable (not
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 7 parts, 4 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 7 parts, 5 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -56,6 +56,12 @@ family** (16.0.0): `--lr-overlay-surface` (default `var(--lr-color-surface-overl
56
56
  ancestor, to scope it — retints this surface together with every other floating surface in the
57
57
  library. `--lr-overlay-radius` (default `var(--lr-radius)`) is the matching corner radius.
58
58
 
59
+ `--lr-positioning-strategy` (16.0.0) — the breakdown tooltip reads this same cascading
60
+ `absolute`/`fixed` override documented on `<lr-popover>` when it is (re)positioned, falling back to
61
+ its own `fixed` default when nothing is set. There is no per-instance `positioning-strategy`
62
+ property on `<lr-usage-badge>`; set the custom property on `:root`, a theme, or one clipping
63
+ ancestor to change every unset usage badge beneath it.
64
+
59
65
  ```html
60
66
  <lr-chat-message message-role="assistant" status="sent">
61
67
  <lr-usage-badge
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 17 parts, 27 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 17 parts, 28 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -43,8 +43,11 @@ popup. Ordinary keyboard behavior resumes after composition.
43
43
  **Exported types:** `LyraVoiceCatalogEntry extends LyraCatalogEntry { language?: string;
44
44
  description?: string; previewUrl?: string }` — `language`/`description` render as a quiet
45
45
  `[part="option-meta"]` second line. Voice catalogs use the shared
46
- `LyraCatalog<LyraVoiceCatalogEntry>` homogeneous readonly union documented under `lr-model-select`.
47
- The public `size` property uses `LyraSize`, including the long-form aliases.
46
+ `LyraCatalog<LyraVoiceCatalogEntry>` homogeneous readonly union documented under `lr-model-select`,
47
+ including the shared `disabled` field: a disabled voice row cannot be selected by click or keyboard
48
+ and is stepped over by arrow-key/Home/End navigation, but its own `[part="option-preview"]` stays
49
+ independently clickable, since previewing a voice is a separate affordance from selecting it. The
50
+ public `size` property uses `LyraSize`, including the long-form aliases.
48
51
  `LyraVoicePickerSelectionDirection = 'forward' | 'backward' | 'none'` is the native
49
52
  selection direction exposed in free-text mode.
50
53
 
@@ -204,6 +207,7 @@ trigger), `expand-icon`, `empty`, `hint`, `error`.
204
207
  - `--lr-voice-picker-option-selected-font-weight` — Selected option label weight. Default: `var(--lr-font-weight-semibold)`.
205
208
  - `--lr-voice-picker-option-synthetic-border-style` — Synthetic stale-value row border style. Default: `dashed`.
206
209
  - `--lr-voice-picker-option-synthetic-border-color` — Synthetic stale-value row border color. Default: `var(--lr-color-border)`.
210
+ - `--lr-voice-picker-option-disabled-opacity` — Opacity of an option row whose catalog entry sets `disabled`. Default: `0.5`.
207
211
  - `--lr-voice-picker-option-synthetic-font-style` — Synthetic stale-value option-label font style. Default: `italic`.
208
212
  - `--lr-voice-picker-preview-hover-bg` — Preview hover fill. Default: `var(--lr-color-brand-quiet)`.
209
213
  - `--lr-voice-picker-preview-hover-color` — Preview hover icon. Default: `var(--lr-color-brand)`.