@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
@@ -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** 26 parts, 2 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 29 parts, 2 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
  ---
@@ -23,6 +23,38 @@ omitted independently, while supplied empty strings remain valid. A custom defin
23
23
  adapter and a callable `render`; a rejected definition does not reserve its filter ID. Valid
24
24
  siblings remain available. Exceptions thrown by an admitted trusted renderer still propagate.
25
25
 
26
+ **Lean registration entry.** `components/layout/filter-bar/filter-bar.js` (the default entry)
27
+ eagerly imports every composed control this bar could possibly render — `<lr-select>`,
28
+ `<lr-combobox>`, `<lr-dropdown>` + `<lr-dropdown-item>` (the `'checkbox-menu'` branch),
29
+ `<lr-date-input>`, `<lr-input>`, `<lr-chip>`/`<lr-chip-group>` (the active-filter row), and
30
+ `<lr-button>`/`<lr-spinner>` (the reset action and the loading status) — because `filters` is a
31
+ runtime value it cannot inspect ahead of time. A bar that only ever declares `'select'`/`'text'`
32
+ filters still pays for `<lr-combobox>` and `<lr-date-input>` through that entry: a measured ~69.5 kB
33
+ gzip more than importing only what it uses. A consumer who knows their own filter `type`s ahead of
34
+ time can import `components/layout/filter-bar/filter-bar-register.js` instead, which registers
35
+ `<lr-filter-bar>` and nothing else, then import each composed control's own registration entry for
36
+ the filter `type`s actually declared:
37
+
38
+ | Filter `type` | Registration entry |
39
+ | --- | --- |
40
+ | `'select'` | `components/forms/select/select.js` |
41
+ | `'combobox'` | `components/forms/combobox/combobox.js` |
42
+ | `'checkbox-menu'` | `components/overlays/overlay/dropdown.js` **and** `components/layout/menu/dropdown-item.js` |
43
+ | `'date'` / `'date-range'` | `components/forms/date-picker/date-input.js` |
44
+ | `'text'` | `components/forms/input/input.js` |
45
+
46
+ Two more are unconditional regardless of which filter `type`s are declared: `<lr-button>` renders
47
+ the reset action on every bar, and `<lr-chip>`/`<lr-chip-group>` render the active-filter row
48
+ whenever any filter has a value (further gated by `activeFiltersDisplay`, but never provably absent
49
+ for a generic bar) — `components/forms/button/button.js` and `components/overlays/chip/chip.js` +
50
+ `components/overlays/chip/chip-group.js`. `<lr-spinner>`
51
+ (`components/overlays/spinner/spinner.js`) is the one built-in dependency the lean entry omits even
52
+ though every bar could use it: `loading` is a plain boolean any consumer can leave unset entirely,
53
+ unlike a filter `type`, which `filters` always names outright — import it too if the bar ever sets
54
+ `loading`. A filter definition whose `type` has no matching import above renders no usable control
55
+ until something else registers it, the same trade `icon-button-register.js` documents for
56
+ `<lr-icon-button>`'s own `icon`/`src` attribute.
57
+
26
58
  **Properties:**
27
59
 
28
60
  - `filters: readonly LyraFilterBarFilterDefinition[] = []` (attribute: false) — filter schema in
@@ -47,8 +79,20 @@ siblings remain available. Exceptions thrown by an admitted trusted renderer sti
47
79
  - `loading: boolean = false` (reflected) — shows the status spinner and disables reset while leaving
48
80
  filters editable.
49
81
  - `hasActiveFilters: boolean` (read-only) — whether any configured filter currently has a value.
82
+ Drives the reset button's own disabled state; unaffected by `activeFiltersDisplay`.
50
83
  - `invalidFilterIds: readonly string[]` (read-only) — immutable ids of required filters whose
51
84
  values are unset.
85
+ - `activeFiltersDisplay: 'all' | 'changed' | 'hidden' = 'all'` (reflected, attribute
86
+ `active-filters-display`) — which currently-active filters render as removable chips in the row
87
+ below the fields. `'all'` (the default, and this component's only behavior before this property
88
+ existed) shows one chip per non-empty filter, including one sitting at its own `defaultValue`.
89
+ `'changed'` shows a chip only for a filter whose value differs from its own `defaultValue` — so a
90
+ bar whose defaults narrow the view on load does not claim the user narrowed it — and a filter with
91
+ no declared `defaultValue` counts as changed as soon as it has any value at all. `'hidden'` never
92
+ renders the row. Array values compare against `defaultValue` positionally (same length, same entry
93
+ at each index), matching this component's only other array-equality precedent (a custom adapter's
94
+ own `clearValue` comparison); a `'date-range'` value is a single composed string, so it compares
95
+ like any other string. Removing a chip always clears that filter, unaffected by this property.
52
96
 
53
97
  The composed reset action uses `lr-button`'s default `m` size tier, matching the default rendered
54
98
  height of adjacent select, combobox, input, and date fields instead of introducing a shorter action
@@ -77,12 +121,13 @@ action) rendered inside `controls`, next to the reset button. Hidden and claimin
77
121
  space while nothing is slotted.
78
122
 
79
123
  **CSS parts:** `base`, `controls`, `field`, `field-<filterId>`, `end`, `filter-control`,
80
- `filter-control-label`, `filter-control-field`, `filter-control-input`, `filter-control-start`,
81
- `filter-control-end`, `filter-control-listbox`, `filter-control-option`, `filter-control-tags`,
82
- `filter-control-tag`, `filter-control-tag-label`, `filter-control-clear-button`,
83
- `filter-control-expand-button`, `filter-control-expand-icon`, `filter-control-popup`,
84
- `filter-control-error`, `filter-control-hint`, `active-filters`, `chips`, `chip`, `reset-button`,
85
- `status`.
124
+ `filter-control-label`, `filter-control-label-group`, `filter-control-field`,
125
+ `filter-control-input`, `filter-control-start`, `filter-control-end`, `filter-control-listbox`,
126
+ `filter-control-option`, `filter-control-tags`, `filter-control-tag`, `filter-control-tag-label`,
127
+ `filter-control-tag-remove-button`, `filter-control-tag-remove-button-base`,
128
+ `filter-control-clear-button`, `filter-control-expand-button`, `filter-control-expand-icon`,
129
+ `filter-control-popup`, `filter-control-error`, `filter-control-hint`, `active-filters`, `chips`,
130
+ `chip`, `reset-button`, `status`.
86
131
 
87
132
  The `filter-control-*` parts are semantic aliases forwarded from each built-in control's shadow
88
133
  surface. `filter-control-field` consistently reaches the select trigger, combobox container, or
@@ -90,9 +135,23 @@ text/date input wrapper; `filter-control-input` reaches the corresponding displa
90
135
  Listbox/option aliases apply to select and combobox filters, `filter-control-tags`/
91
136
  `filter-control-tag`/`filter-control-tag-label` apply to a `multiple` combobox filter's selected-tag
92
137
  chips (`filter-control-tag-label` is capped by that control's own `--tag-max-size`), and
93
- expand-button/popup apply to date filters. This lets a consumer theme the composed tier from
138
+ expand-button/popup apply to date filters. `filter-control-tag-remove-button`/
139
+ `filter-control-tag-remove-button-base` reach a selected tag's own remove button and its inner icon
140
+ wrapper — the same reach a standalone `lr-combobox`/`lr-select` consumer already has, now available
141
+ from `lr-filter-bar` too, for a consumer re-skinning filter tags as pills who needs the remove
142
+ target inside one to be stylable. This lets a consumer theme the composed tier from
94
143
  `lr-filter-bar::part(...)` without depending on the built-in control type selected by a filter
95
144
  definition. Custom renderers retain ownership of their own part forwarding.
145
+
146
+ A `multiple` `'combobox'` filter collapses past its own `max-options-visible` (3 by default, an
147
+ `<lr-combobox>` property this component does not forward) into a localized "+N" overflow indicator,
148
+ the same substance as `lr-select`'s own `multiple`-mode overflow chip. The one remaining difference:
149
+ `lr-select`'s overflow chip carries a second, distinguishing `tag-overflow` part
150
+ (`part="tag tag-overflow tag__base"`) so a consumer can style just that chip; `lr-combobox`'s
151
+ overflow chip carries only the plain `tag` part, with no equivalent token to forward as
152
+ `filter-control-tag-overflow`. Adding one is `<lr-combobox>`'s own surface to grow, not something
153
+ `lr-filter-bar`'s `exportparts` can manufacture for a part its composed child never renders — noted
154
+ here as a known, deliberate gap rather than silently undocumented.
96
155
  On a `'checkbox-menu'` filter, `filter-control-field` is the trigger button's own frame — the
97
156
  element inside `<lr-button>` that draws the border, background and radius, not the chrome-less
98
157
  button host, so a `::part(filter-control-field) { border-color: … }` rule works there exactly as it
@@ -101,7 +160,19 @@ a definition `icon` lands), `filter-control-input` is its selection summary, `fi
101
160
  is the trigger's own label text (not a stacked label above the control), `filter-control-listbox` is
102
161
  the dropdown's popup surface, `filter-control-option` is one `role="menuitemcheckbox"` row, and
103
162
  `filter-control-error` is the revealed required message — rendered by the bar itself, because the
104
- composed dropdown has no error chrome of its own.
163
+ composed dropdown has no error chrome of its own. The trigger also renders a `with-caret` disclosure
164
+ chevron, matching `lr-select`'s own — forwarded as `filter-control-expand-icon`, the same name a
165
+ select/combobox/date-input filter's own chevron already uses, so one consumer rule styles every
166
+ filter type's expand icon. `filter-control-label-group` reaches the trigger's own label wrapper —
167
+ the flex row this component lays `filter-control-label` and `filter-control-input` out in, which
168
+ also grows to fill the stretched trigger (via `with-caret`) so its content starts at the leading
169
+ edge instead of centring; no other filter type renders this part, since every other type's label and
170
+ input are two independent elements with no shared wrapper of their own. This component does not
171
+ render a stacked label above a `'checkbox-menu'` field the way every other built-in type does:
172
+ every other type's stacked label is rendered by the composed control itself, and there is no
173
+ equivalent shared "stacked label" template inside `<lr-filter-bar>` for this branch to reuse without
174
+ inventing a new one, so `labelVisibility` keeps its narrower meaning here (whether the trigger's own
175
+ baked-in label text is visible or screen-reader-only).
105
176
 
106
177
  `field` wraps one filter's composed control and its validation spacer inside `controls`; its
107
178
  flex-basis is themeable via `--lr-filter-bar-field-basis` (default `var(--lr-size-12rem)`).
@@ -119,12 +190,17 @@ alone, exactly as before this part existed, rather than risking a `part` attribu
119
190
  space-separated token list fabricates an unrelated second token.
120
191
 
121
192
  A `'select'`, `'combobox'` or `'checkbox-menu'` filter's required `options` entries are
122
- `LyraFilterBarOption { value, label, icon?, searchText? }`. `searchText` is extra text the option
123
- also matches on, forwarded verbatim to `<lr-option>`'s own `search-text`, so a row can keep a short
124
- visible `label` ("Urgent") while still matching a long canonical key ("SEV-1 production outage").
125
- It affects a `'combobox'` filter only: the attribute is written on every choice type's `<lr-option>`,
126
- but `<lr-select>`'s listbox type-ahead matches the option's `label` alone and never reads it, and a
127
- `'checkbox-menu'` has no text entry to match against.
193
+ `LyraFilterBarOption { value, label, icon?, searchText?, disabled? }`. `searchText` is extra text
194
+ the option also matches on, forwarded verbatim to `<lr-option>`'s own `search-text`, so a row can
195
+ keep a short visible `label` ("Urgent") while still matching a long canonical key ("SEV-1
196
+ production outage"). It affects a `'combobox'` filter only: the attribute is written on every
197
+ choice type's `<lr-option>`, but `<lr-select>`'s listbox type-ahead matches the option's `label`
198
+ alone and never reads it, and a `'checkbox-menu'` has no text entry to match against. `disabled`
199
+ marks the option non-actionable: forwarded to `<lr-option disabled>` for `'select'`/`'combobox'`
200
+ and to the composed `<lr-dropdown-item disabled>` for `'checkbox-menu'`, so the row renders
201
+ genuinely disabled (no tab/roving stop, no hover/press affordance) and arrow-key navigation already
202
+ steps past it, since that is the composed control's own existing `disabled` behavior. Omitted or
203
+ `false` renders the option exactly as before this field existed.
128
204
  `icon` is optional Lit content — a status dot, a type glyph, a flag — rendered into the composed
129
205
  `<lr-option>`'s own `start` slot as inert, `aria-hidden` chrome, so it never joins the option's
130
206
  accessible name:
@@ -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** 29 parts, 14 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 29 parts, 15 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
  ---
@@ -47,14 +47,19 @@ import type {
47
47
  **Properties:**
48
48
 
49
49
  - `nodes: readonly FlowNode[] = []` (attribute: false) — each record has readonly `id`, optional
50
- `type`, `position`, `data`, `accessibleLabel`, `inputs`, and `outputs`. A missing `position` opts
51
- into layered layout. String `data.label` and `data.description` feed the declarative fallback
52
- card. Assignment takes a detached, deeply frozen snapshot of plain arrays/records, omitting blank
53
- ids and later duplicates first-wins before layout, focus, selection, gestures, companion
54
- snapshots, and events. At most the first 10,000 source nodes are retained, with finite nested
55
- depth/entry budgets; reassign `nodes` after changes. Replacing the model cancels node-drag and
56
- connect gestures whose ids belonged to the old model and silently prunes selected ids that no
57
- longer exist.
50
+ `type`, `position`, `data`, `accessibleLabel`, `inputs`, `outputs`, and `disabled`. A missing
51
+ `position` opts into layered layout. String `data.label` and `data.description` feed the
52
+ declarative fallback card. Assignment takes a detached, deeply frozen snapshot of plain
53
+ arrays/records, omitting blank ids and later duplicates first-wins before layout, focus,
54
+ selection, gestures, companion snapshots, and events. At most the first 10,000 source nodes are
55
+ retained, with finite nested depth/entry budgets; reassign `nodes` after changes. Replacing the
56
+ model cancels node-drag and connect gestures whose ids belonged to the old model and silently
57
+ prunes selected ids that no longer exist. `disabled` marks a node non-actionable: it keeps its
58
+ position and card content but cannot be selected/activated by click or keyboard, roving-tabindex
59
+ navigation (arrow keys, Home/End) steps past it, it cannot be dragged even while
60
+ `nodes-draggable`, and it is excluded from starting or receiving a new connection while
61
+ `connectable` (an edge already touching it is left alone). Omitted or `false` renders the node
62
+ exactly as before this field existed.
58
63
  - `edges: readonly FlowEdge[] = []` (attribute: false) — readonly `id`, `source`, `target`, optional
59
64
  handle ids, optional drawn `label`, and optional `tone: LyraVariant`. The canonical brand value is
60
65
  `brand`; the former `accent` value and `FlowEdgeTone` alias are not part of this contract. Blank
@@ -220,5 +225,7 @@ four above. Set it to `transparent` to opt out of the hover treatment.
220
225
  - `part="edge-hit-area"` — The transparent wide pointer target behind an edge.
221
226
  - `part="node-control"` — The visually hidden, roving selection button for a node.
222
227
  - `--lr-flow-canvas-node-selected-outline-color` — Outline color of a selected node. Default: `var(--lr-color-brand)`.
228
+ - `--lr-flow-canvas-node-disabled-opacity` — Opacity of a node whose `FlowNode` entry sets
229
+ `disabled`. Default: `var(--lr-opacity-disabled)`.
223
230
 
224
231
  ---
@@ -42,6 +42,12 @@ explicitly empty labels remain empty and later labels render normally.
42
42
  - `valueText?: string` (attribute `value-text` — overrides both the visible text and the host's
43
43
  `aria-valuetext`; an empty string is treated the same as unset and falls back to the numeric
44
44
  `value` while removing `aria-valuetext`)
45
+ - `showValue: boolean = true` (attribute `show-value`, not reflected) — whether the decorative
46
+ `part="value"` caption renders at all; `show-value="false"` omits it the same way an empty
47
+ `label` already omits `part="label"`. `aria-valuenow`/`aria-valuetext` and the host's accessible
48
+ name are unaffected either way, since the caption itself is always `aria-hidden`. Mirrors
49
+ `<lr-progress-bar>`'s/`<lr-progress-ring>`'s own `showValue` name and meaning; the default here
50
+ is `true` (a gauge's whole purpose is showing the reading it announces) where theirs is `false`.
45
51
  - `variant: LyraProgressVariant = 'brand'` (reflected) — the same shared semantic-tone vocabulary
46
52
  `<lr-progress-bar>` uses (`'neutral'|'brand'|'success'|'warning'|'danger'`). The fallback color
47
53
  whenever `thresholds` is empty or matches nothing.
@@ -58,7 +64,8 @@ explicitly empty labels remain empty and later labels render normally.
58
64
 
59
65
  **Slots:** none.
60
66
 
61
- **CSS parts:** `base` (the `<svg>`), `track`, `fill`, `value`, `label`
67
+ **CSS parts:** `base` (the `<svg>`), `track`, `fill`, `value` (rendered only while `showValue` is
68
+ true), `label` (rendered only while `label` is non-empty)
62
69
 
63
70
  **Themeable custom properties:** `--lr-gauge-fill` (fill stroke; overrides `variant`/`thresholds`
64
71
  entirely and falls back to the effective variant's shared semantic token —
@@ -75,6 +82,15 @@ entirely and falls back to the effective variant's shared semantic token —
75
82
  style="--lr-gauge-fill: var(--lr-color-success)"
76
83
  ></lr-gauge>
77
84
  <lr-gauge shape="linear" value="0.4" max="1" value-text="72°F"></lr-gauge>
85
+ <!-- compact dashboard meter: a slim, captionless, thresholded row -->
86
+ <lr-gauge
87
+ shape="linear"
88
+ size="xs"
89
+ show-value="false"
90
+ aria-label="Spend"
91
+ value="84"
92
+ max="100"
93
+ ></lr-gauge>
78
94
  <!-- automatic threshold coloring: same rule, opposite direction -->
79
95
  <lr-gauge id="cpu" value="82" label="CPU"></lr-gauge>
80
96
  <script>
@@ -118,7 +134,11 @@ entirely and falls back to the effective variant's shared semantic token —
118
134
  - no documented component-specific sizing custom property. The host box is fixed em values
119
135
  (`8em` radial/ring, `12em`/`1.5em` linear) against the host font size, so `size` is the supported
120
136
  way to step it; for a dimension off the ladder, set plain CSS `width`/`height` (or `font-size`)
121
- on the element instead.
137
+ on the element instead. The value/label captions are `em`-sized against that same host font-size,
138
+ so they shrink right along with the frame at a smaller tier or a smaller host `font-size` —
139
+ combine a small tier (or a small host `font-size`) with `show-value="false"` for a slim,
140
+ thresholded dashboard meter, matching `<lr-progress-bar size="xs">`'s footprint but with
141
+ `role="meter"` and one `thresholds` array instead of a hand-written ratio-to-variant mapping.
122
142
  - Divide-by-zero guarded, and radial/linear share one component via the `shape`
123
143
  attribute.
124
144
  - non-finite `value` text remains blank unless `valueText` supplies a truthful fallback; that
@@ -37,9 +37,10 @@ Bins `values` into `bins` equal-width buckets and renders as a bar chart (extend
37
37
  (`index-axis`), `hiddenDatasets`, `hiddenDatums`, `legendPosition` (`legend-position`),
38
38
  `legendMode` (`legend-mode`), `legendDisplay` (`legend-display`), `max`, `min`, `plugins`,
39
39
  `withoutAnimation` (`without-animation`), `withoutLegend` (`without-legend`), `withoutTooltip`
40
- (`without-tooltip`), `valueFormatter`, `formatter`, `area`, `zoom`, `config`, `height`, `xLabel` (`x-label`),
40
+ (`without-tooltip`), `valueFormatter`, `formatter`, `tooltipTitleFormatter`,
41
+ `tooltipFooterFormatter`, `area`, `zoom`, `config`, `height`, `xLabel` (`x-label`),
41
42
  `yLabel` (`y-label`), `y2Label` (`y2-label`), `beginAtZero` (`begin-at-zero`),
42
- `stacked`, `dataLabels` (`data-labels`), `stackTotals` (`stack-totals`), `showDataTable`
43
+ `stacked`, `stackedAxes`, `dataLabels` (`data-labels`), `stackTotals` (`stack-totals`), `showDataTable`
43
44
  (`show-data-table`), `dataTableToggle` (`data-table-toggle`), `chartArea` (readonly).
44
45
 
45
46
  **Methods:** `resetZoom()`, `refreshTheme()`, and `renderChart()` are inherited; `appendSamples(values,
@@ -103,5 +104,9 @@ their semantics, defaults, and gotchas.
103
104
  - `values`/`bins`/`seriesLabel` changes join the inherited connected-and-visible redraw path. There is no
104
105
  second post-update refresh, so a same-tick disconnect cannot recreate Chart.js on a detached
105
106
  canvas and off-screen sample updates do not repaint it.
107
+ - calling `binValues()` directly (not through `<lr-histogram>`, which always passes its own
108
+ resolved `effectiveLocale`) with an omitted `locale` (or `'auto'`) now resolves to the page's
109
+ active `setLyraLocale()` locale instead of a hardcoded `'en'`, matching `utilities/format.ts`'s
110
+ helpers; an app that never calls `setLyraLocale()` sees no change, and an explicit tag still wins.
106
111
 
107
112
  ---
@@ -123,16 +123,24 @@ DOM while at least one top-level slotted element needs the bare-geometry fallbac
123
123
  **Themeable custom properties:** `--lr-icon-button-size` (default `2.5rem`) is the **minimum**
124
124
  tappable inline and block size of the native button — a floor, not a fixed size. Content larger
125
125
  than it grows the button and keeps its own aspect ratio; a small glyph pads out to it. It is a
126
- library-wide token (declared on `:root` by the token layer, and the shared minimum tappable size
126
+ library-wide token (declared on every `lr-*` host by the shared token layer, and the shared minimum tappable size
127
127
  that several other components size their icon-only controls against), so overriding
128
128
  `--lr-theme-icon-button-size` globally resizes all of them together. Keep the resolved value at or
129
- above 24px — see `llms/shared.md`. Lowering the floor for a dense action row (directly via
130
- `--lr-icon-button-size`, or via `--lr-theme-icon-button-size` on an ancestor to reach a
129
+ above 24px — see `llms/shared.md`. **`--lr-icon-button-size` is element-scoped, unlike every other
130
+ token in this section:** the shared token layer re-declares it on every `lr-*` host's own `:host`,
131
+ so a rule that sets `--lr-icon-button-size` on an ancestor wrapper is reset the moment it crosses
132
+ into any intervening `lr-*` component and never reaches a `<lr-icon-button>` composed inside it
133
+ (e.g. one slotted through `<lr-popover>`). The only two levers that actually reach it are: setting
134
+ `--lr-icon-button-size` directly on the icon button element itself, where no intervening component
135
+ sits between the rule and the property; or setting `--lr-theme-icon-button-size` on an ancestor,
136
+ which the shared layer reads through `var()` at every level and which therefore reaches a
131
137
  `<lr-icon-button>` composed inside another component, e.g. `<lr-copy-button>`/
132
- `<lr-message-actions>`) is safe even below 24px: a coarse-pointer/no-hover media rule floors the
133
- RENDERED hit area back at 2.75rem/44px regardless of how far the override lowered it, so the
134
- control stays comfortably tappable the moment the pointer reaching it is a finger rather than a
135
- mouse. `--lr-icon-button-radius` (default `--lr-radius`) is the
138
+ `<lr-message-actions>`. Lowering the floor for a dense action row through either lever is safe even
139
+ below 24px: a coarse-pointer/no-hover media rule floors the RENDERED hit area back at 2.75rem/44px
140
+ regardless of how far the override lowered it, so the control stays comfortably tappable the moment
141
+ the pointer reaching it is a finger rather than a mouse. `--lr-icon-button-radius` (default
142
+ `--lr-radius`) is not re-declared anywhere in the shared layer, so — like every other token below —
143
+ it inherits normally from an ancestor even through an intervening component; it is the
136
144
  `[part='button']` corner radius, retunable without a `::part(button)` rule — the same
137
145
  `--lr-button-radius` pattern; `lr-icon-button` has no `size` tiers, so there is no per-tier gap
138
146
  counterpart to it. The internal control sets `font: inherit`, so an `em`-sized slotted glyph takes
@@ -153,7 +153,9 @@ writes remain valid and read back as booleans. Markup uses `autocorrect="on"` /
153
153
  before. Omitted, `0`, or a non-finite value means no debounce at all: `lr-input-settled` never
154
154
  fires. A pending debounce is flushed immediately by `change`/Enter/blur (so a blur never drops
155
155
  the last keystroke) and cancelled with no stray settle by disconnection, the built-in clear
156
- button, and a programmatic `value` write. Shares its `DebounceController` primitive with
156
+ button, and a programmatic `value` write that changes the value. A write of the value already
157
+ held leaves it pending, so a framework binding that writes the just-typed value back on each
158
+ render (the controlled-input pattern) still settles. Shares its `DebounceController` primitive with
157
159
  `lr-filter-bar`'s own per-filter `debounce` and with `lr-textarea`'s identical property
158
160
  - `name`/`disabled`/`required` (from `FormAssociated`)
159
161
 
@@ -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`.
@@ -23,6 +23,19 @@ tooltips (native SVG `<title>`, no positioning JS) — not a full `lr-chart` rep
23
23
  zoom/pan, no pie/doughnut/radar/scatter/bubble types, no horizontal/dual-y-axis, no raw-config
24
24
  passthrough). Not a subclass of `LyraChart`.
25
25
 
26
+ Deliberate omissions, assessed and not implemented: `lr-chart`'s per-series `LyraChartSeries.stack`
27
+ group and per-axis `stackedAxes` have no `lr-lite-chart` counterpart. `stacked` here is already
28
+ chart-wide only (see below) and this component has exactly one value scale — no `y2` — so "an
29
+ unstacked overlay on a second axis," the motivating case for `stackedAxes`, has no equivalent
30
+ shape to express. A per-series stack-group id would also need the hand-rolled SVG bar-geometry
31
+ pass (linear/sqrt/log stack compression, `minBarHeight`) to track independent running offsets per
32
+ group instead of one per category, which is a materially larger, higher-risk change than this
33
+ component's existing single-stack model. `tooltipTitleFormatter`/`tooltipFooterFormatter` are
34
+ similarly absent: this component's hover tooltip is a native SVG `<title>` on each mark — one
35
+ self-contained string per mark, generated by `pointText` — not a Chart.js-style multi-item tooltip
36
+ with separate title/body/footer regions for several datasets sharing a hovered category, so there
37
+ is no "every item in the tooltip" surface to hook a title or footer formatter onto.
38
+
26
39
  **Properties:**
27
40
  - `type: LyraLiteChartType = 'bar'` — `'bar' | 'line'`
28
41
  - `labels: readonly string[] = []` (attribute: false)
@@ -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** 13 parts, 24 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 13 parts, 25 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
  ---
@@ -159,6 +159,12 @@ this listbox together with every other floating surface. `--lr-overlay-radius` r
159
159
  only as the middle arm of this component's own `--lr-locale-picker-radius`, which still wins when
160
160
  set: a component-scoped override outranks the shared family, never the other way round.
161
161
 
162
+ `--lr-positioning-strategy` (16.0.0) — the listbox reads this same cascading `absolute`/`fixed`
163
+ override documented on `<lr-popover>` when it is (re)positioned, falling back to its own `fixed`
164
+ default when nothing is set. There is no per-instance `positioning-strategy` property on
165
+ `<lr-locale-picker>`; set the custom property on `:root`, a theme, or one clipping ancestor to
166
+ change every unset locale picker beneath it.
167
+
162
168
  **Optional peer deps:** none directly — each row's `<lr-flag>` degrades to an empty render (no
163
169
  peer warning duplication; `lr-flag` itself already logs one) when the optional
164
170
  `@aceshooting/lyra-flags` package isn't installed and `showFlags` is left on.
@@ -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, 5 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 6 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
  ---
@@ -41,6 +41,11 @@ preserving null readback; an explicitly empty query remains empty.
41
41
  pre-`query`-filtering. Assignment takes a shallow frozen snapshot. Runtime rows without a string
42
42
  `label` remain in that diagnostic snapshot but are omitted from filtering/rendering before the
43
43
  built-in or custom predicate runs, so one malformed provider row cannot take down valid siblings.
44
+ An entry's `disabled` marks that row non-actionable: `aria-disabled="true"` replaces its
45
+ selected/active affordances, activating it (click, or Enter/Tab while highlighted) commits
46
+ nothing and emits no `lr-mention-select`, and ArrowDown/ArrowUp highlighting -- including the
47
+ default pre-highlighted first row -- steps past it instead of landing on it. Omitted or `false`
48
+ renders the row exactly as before this field existed.
44
49
  - `query: string = ''` — the text typed since the trigger character; drives the built-in filtering
45
50
  (see `filter`).
46
51
  - `open: boolean = false` (reflected)
@@ -85,7 +90,7 @@ preserving null readback; an explicitly empty query remains empty.
85
90
  disconnect/adoption, a newer transfer, or failed ownership resolves `false` without moving focus.
86
91
 
87
92
  **Exported types:** `LyraMentionItem { suggestionId: string; label: string; description?: string;
88
- icon?: string }`; `LyraMentionFilter = (item: LyraMentionItem, query: string) => boolean`;
93
+ icon?: string; disabled?: boolean }`; `LyraMentionFilter = (item: LyraMentionItem, query: string) => boolean`;
89
94
  `LyraMentionFocusOptions { ownsFocus?: () => boolean }`;
90
95
  `LyraMentionSelectDetail { suggestionId: string; index: number; label: string }`.
91
96
 
@@ -106,7 +111,9 @@ renders `open="false"` on first paint)
106
111
  `var(--lr-color-brand-quiet)`) — background of the hovered or `[data-active]`
107
112
  (keyboard-highlighted) suggestion row. Component-scoped indirection over the shared
108
113
  `--lr-color-brand-quiet` token, so a consumer can retheme just this highlighted/active row without
109
- repainting every other component that reuses the same shared token. Plus shared tokens —
114
+ repainting every other component that reuses the same shared token.
115
+ `--lr-mention-popover-option-disabled-opacity` (default `0.5`) — opacity of a row whose `items`
116
+ entry sets `disabled`. Plus shared tokens —
110
117
  `--lr-space-xs`/`-s`/`-m` (popup padding,
111
118
  row padding/gap), `--lr-radius`
112
119
  (row corners — the popup's own corner is the overlay family's, below),
@@ -123,6 +130,12 @@ The popup is a floating surface and paints from the **shared overlay-surface fam
123
130
  declared on `:host`, so one declaration on `:root` — or on any ancestor, to scope it — retints this
124
131
  surface together with every other floating surface in the library. `--lr-overlay-radius` (default `var(--lr-radius)`) is the matching corner radius.
125
132
 
133
+ `--lr-positioning-strategy` (16.0.0) — the popup reads this same cascading `absolute`/`fixed`
134
+ override documented on `<lr-popover>` when it is (re)positioned, falling back to its own `fixed`
135
+ default when nothing is set. There is no per-instance `positioning-strategy` property on
136
+ `<lr-mention-popover>`; set the custom property on `:root`, a theme, or one clipping ancestor to
137
+ change every unset mention popover beneath it.
138
+
126
139
  **Optional peer deps:** none.
127
140
 
128
141
  ```html
@@ -97,6 +97,13 @@ an out-of-syntax value falls back cleanly instead of invalidating the whole decl
97
97
  without `CSS.registerProperty` degrades to "use `100%`, not `none`".) A menu contained by
98
98
  `<lr-dropdown>` sizes from its dropdown and is unaffected by both names.
99
99
 
100
+ **`--lr-positioning-strategy`** (16.0.0) — the private submenu surface reads this same cascading
101
+ `absolute`/`fixed` override documented on `<lr-popover>` when it is (re)positioned, falling back to
102
+ its own `fixed` default when nothing is set. There is no per-instance `positioning-strategy`
103
+ property on `<lr-menu>`; set the custom property on `:root`, a theme, or one clipping ancestor to
104
+ change every unset submenu beneath it. A menu contained by `<lr-dropdown>` is positioned by the
105
+ dropdown instead and is unaffected.
106
+
100
107
  **Methods:** no menu-specific public overlay methods. Use `<lr-dropdown>`'s `show()`/`hide()` and
101
108
  `open` state for an overlay. Menu-item submenu methods remain public because they drive a row's
102
109
  nested disclosure.
@@ -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** 3 parts, 6 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 3 parts, 7 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Documented with** `lr-menu-item`, `lr-dropdown-item` (same section below)
14
14
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
15
15
 
@@ -97,6 +97,13 @@ an out-of-syntax value falls back cleanly instead of invalidating the whole decl
97
97
  without `CSS.registerProperty` degrades to "use `100%`, not `none`".) A menu contained by
98
98
  `<lr-dropdown>` sizes from its dropdown and is unaffected by both names.
99
99
 
100
+ **`--lr-positioning-strategy`** (16.0.0) — the private submenu surface reads this same cascading
101
+ `absolute`/`fixed` override documented on `<lr-popover>` when it is (re)positioned, falling back to
102
+ its own `fixed` default when nothing is set. There is no per-instance `positioning-strategy`
103
+ property on `<lr-menu>`; set the custom property on `:root`, a theme, or one clipping ancestor to
104
+ change every unset submenu beneath it. A menu contained by `<lr-dropdown>` is positioned by the
105
+ dropdown instead and is unaffected.
106
+
100
107
  **Methods:** no menu-specific public overlay methods. Use `<lr-dropdown>`'s `show()`/`hide()` and
101
108
  `open` state for an overlay. Menu-item submenu methods remain public because they drive a row's
102
109
  nested disclosure.
@@ -89,3 +89,13 @@ or an ancestor, or reach a built-in's composed native control directly through
89
89
  `::part(regenerate-button__control)` / `::part(edit-button__control)`. A coarse-pointer/no-hover
90
90
  media rule then floors the rendered hit area at 2.75rem/44px regardless of how far a dense-row
91
91
  override lowered it, so the shrink is safe on a touch device.
92
+
93
+ **Migrating a pre-16.0.0 `::part()` rule.** This component's icon-only actions are composed
94
+ `<lr-icon-button>`s, so a part naming one of them now names the composed child's HOST, which paints
95
+ nothing. A `border`, `background` or `border-radius` set on it is silently dead — only `color` still
96
+ appears to work, because it inherits, which makes such a rule look half-alive rather than broken.
97
+ Set `--lr-icon-button-background`/`-color`/`-border`/`-radius` (and their `-hover`/`-active`
98
+ variants) on this element or an ancestor instead: the composed control reads those public tokens
99
+ ahead of any default this component supplies. For SIZE use `--lr-theme-icon-button-size`, not
100
+ `--lr-icon-button-size` — every `LyraElement` re-declares the latter on its own `:host`, so it never
101
+ reaches a composed child (see `llms/tokens.md`).
@@ -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** 15 parts, 25 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 15 parts, 26 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
  ---
@@ -42,7 +42,11 @@ focus move.
42
42
 
43
43
  **Exported types:**
44
44
 
45
- - `LyraCatalogEntry { id: string; label: string }` — the shared minimum row vocabulary.
45
+ - `LyraCatalogEntry { id: string; label: string; disabled?: boolean }` — the shared minimum row
46
+ vocabulary. `disabled` marks a row non-actionable: `aria-disabled="true"` replaces its
47
+ selected/active affordances, activating it (click or keyboard) commits nothing and changes no
48
+ state, and arrow-key/Home/End active-descendant navigation steps past it instead of landing on
49
+ it. Omitted or `false` renders the row exactly as before this field existed.
46
50
  - `LyraCatalog<T extends LyraCatalogEntry = LyraCatalogEntry> = readonly string[] | readonly T[]`
47
51
  — a homogeneous catalog shared by model-select, voice-picker, and composed controls. String
48
52
  shorthand uses the same string for both id and label; readonly tuples/arrays are accepted. Ids
@@ -236,7 +240,8 @@ use, not on `:host`, so it isn't tied to `size`. The selected row
236
240
  `--lr-model-select-option-selected-border` and `--lr-model-select-option-selected-color` (both
237
241
  `var(--lr-color-brand)`), and `--lr-model-select-option-selected-font-weight`
238
242
  (`var(--lr-font-weight-semibold)`), all inline `var()` fallbacks so the selected row is rethemeable
239
- without hijacking `--lr-color-brand`. `--lr-model-select-max-inline-size` (default
243
+ without hijacking `--lr-color-brand`. `--lr-model-select-option-disabled-opacity` (default `0.5`)
244
+ — opacity of an option row whose catalog entry sets `disabled`. `--lr-model-select-max-inline-size` (default
240
245
  `var(--lr-size-24rem)`) publishes the host's own width ceiling, which was previously a hard-wired
241
246
  literal: set a length to retune it, or `none` to let the control fill its container the way
242
247
  `lr-select` does. Like every other name here it is read as a `var()` fallback and never declared on
@@ -39,7 +39,14 @@ properties apply. `step` is native seconds; `showPicker()`, `stepUp()`, and `ste
39
39
  native-wrapper behavior. The control row carries `base input-wrapper time-input` part tokens on one
40
40
  node. Its native picker UI and AM/PM presentation are browser-owned and intentionally unstyled.
41
41
  The inherited `--lr-input-*` theme inputs therefore remain configurable from an ancestor theme
42
- wrapper without being shadowed by the subclass.
42
+ wrapper without being shadowed by the subclass. Among those inherited properties and methods:
43
+ `defaultValue: string = ''` (attribute `value`, reflected) is the reset value, and
44
+ `customError: string | null = null` (attribute `custom-error`, reflected) is a consumer-supplied
45
+ validation message. `getForm()` returns the browser-resolved form owner, including an external
46
+ owner selected by `form`; `setCustomValidity(message)` sets or clears `customError` without
47
+ discarding intrinsic validity; `resetValidity()` clears only that consumer layer and recomputes
48
+ the current intrinsic constraints, leaving `value`/`defaultValue` and prior interaction state
49
+ unchanged.
43
50
 
44
51
  **Events:** native-style `input` and `change`; bubbling, composed `focus` and `blur` bridges; the
45
52
  `lr-input` / `lr-change` aliases with `{ value }`;
@@ -46,7 +46,14 @@ action-height ladder as `lr-input` instead of remaining at the default tier for
46
46
  identical meaning. This component changes the mapped defaults to `appearance='outlined'`,
47
47
  `inputMode='numeric'`, and `step=1`. `clearable` (and its `with-clear` spelling),
48
48
  `passwordVisible` (`password-visible`), and `minlength`/`maxlength`/`pattern` are inherited but
49
- inert — see gotchas.
49
+ inert — see gotchas. Also inherited from `lr-input`, with identical meaning:
50
+ `defaultValue: string = ''` (attribute `value`, reflected) — the reset value; and
51
+ `customError: string | null = null` (attribute `custom-error`, reflected) — a consumer-supplied
52
+ validation message. `getForm()` returns the browser-resolved form owner, including an external
53
+ owner selected by `form`; `setCustomValidity(message)` sets or clears `customError` without
54
+ discarding intrinsic validity; `resetValidity()` clears only that consumer layer and recomputes
55
+ the current intrinsic constraints, leaving `value`/`defaultValue` and prior interaction state
56
+ unchanged.
50
57
 
51
58
  Stepper switches:
52
59
 
@@ -155,6 +155,18 @@ An async `source` row can carry the same two fields (`start`, `end`) alongside i
155
155
  that window instead, since the value is not yet known to be unmatched at all
156
156
  - `appearance: 'filled' | 'outlined' | 'filled-outlined' = 'outlined'` (reflected)
157
157
  - `placement: 'top' | 'bottom' = 'bottom'` (reflected; flip/shift can still keep the listbox in view)
158
+ - `positioningStrategy: PlaceStrategy = 'fixed'` (attribute `positioning-strategy`, reflected) —
159
+ the CSS positioning scheme the listbox is laid out with, spelled the same as on `lr-select`,
160
+ `lr-popover`, `lr-dropdown`, `lr-tooltip` and `lr-color-picker`. `fixed` is this control's
161
+ default and what it has always rendered: it positions against the viewport and escapes most
162
+ clipping ancestors, which suits a typeahead list that usually sits inside a scrollable region.
163
+ `absolute` positions against the nearest containing block and scrolls with it. An unsupported
164
+ value resolves to the default. Like `placement`, a change takes effect the next time the listbox
165
+ opens. When the instance sets nothing, the cascading `--lr-positioning-strategy` custom property
166
+ (`absolute`/`fixed`, set on `:root`, a theme, or one clipping ancestor) is honoured ahead of the
167
+ default; an explicit instance value always wins. There is deliberately no `hoist` alias here:
168
+ unlike on `lr-select`, where it is Shoelace's established spelling, it would be a boolean
169
+ defaulting to `true`, so its attribute could only ever express the value the control already has
158
170
  - `clearable: boolean = false` (reflected) — displays the clear button while there is something to
159
171
  clear on **either** axis this control owns: a committed selection, or _visible_ filter text. See
160
172
  "the clear button covers two axes" below
@@ -154,6 +154,12 @@ The exact-320px RTL story covers an eight-cell row and an unbroken localized lab
154
154
  horizontal reachability for every cell.
155
155
  The internal role token `--lr-otp-input-segment-size` supplies that `2.5em` default and can be
156
156
  retuned through `--lr-theme-otp-input-segment-size` when the `--segment-size` override is absent.
157
+ Like `--lr-icon-button-size`, `--lr-otp-input-segment-size` is element-scoped: the shared token
158
+ layer re-declares it on every `lr-*` host, so a rule that sets it on an ancestor wrapper is reset at
159
+ the first intervening `lr-*` component and never reaches a nested `<lr-otp-input>`. Set it directly
160
+ on the element, or set `--lr-theme-otp-input-segment-size` on an ancestor to resize every OTP input
161
+ in the subtree at once — the retained per-cell hooks below are not re-declared anywhere in the
162
+ shared layer and inherit normally.
157
163
 
158
164
  The retained per-cell hooks are `--lr-otp-input-segment-fill` (default `transparent`),
159
165
  `--lr-otp-input-segment-border-color` (default `var(--lr-color-border)`), and
@@ -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`.