@aceshooting/lyra-ui 9.1.1 → 11.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 (585) hide show
  1. package/CHANGELOG.md +785 -0
  2. package/custom-elements.json +1 -1
  3. package/design-tokens.json +13 -0
  4. package/dist/cli/migrate-wa.mjs +216 -1
  5. package/dist/cli/migration-contract.json +1 -1
  6. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +1 -1
  7. package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +0 -16
  8. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.class.js +1 -1
  9. package/dist/components/agent-tools/agent-eval-dashboard/agent-eval-dashboard.styles.js +7 -5
  10. package/dist/components/agent-tools/agent-run/agent-run.class.js +2 -2
  11. package/dist/components/agent-tools/agent-run/agent-run.styles.js +0 -13
  12. package/dist/components/agent-tools/agent-trace/agent-trace.styles.js +7 -4
  13. package/dist/components/agent-tools/approval-queue/approval-queue.styles.js +7 -5
  14. package/dist/components/agent-tools/artifact-panel/artifact-panel.styles.js +0 -3
  15. package/dist/components/agent-tools/browser-frame/browser-frame.styles.js +3 -5
  16. package/dist/components/agent-tools/commit-card/commit-card.styles.js +0 -10
  17. package/dist/components/agent-tools/compare-panel/compare-panel.styles.js +11 -6
  18. package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.js +0 -46
  19. package/dist/components/agent-tools/eval-dataset/eval-dataset.styles.js +0 -7
  20. package/dist/components/agent-tools/evaluation-run/evaluation-run.class.js +2 -2
  21. package/dist/components/agent-tools/prompt-studio/prompt-studio.styles.js +0 -15
  22. package/dist/components/agent-tools/result-card/result-card.styles.js +0 -7
  23. package/dist/components/agent-tools/result-card/result-field.styles.js +0 -5
  24. package/dist/components/agent-tools/schema-viewer/schema-viewer.styles.js +0 -3
  25. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +0 -15
  26. package/dist/components/agent-tools/stack-trace/stack-trace.styles.js +0 -20
  27. package/dist/components/agent-tools/subagent-panel/subagent-panel.class.js +2 -2
  28. package/dist/components/agent-tools/subagent-panel/subagent-panel.styles.js +0 -3
  29. package/dist/components/agent-tools/task-list/task-list.styles.js +0 -15
  30. package/dist/components/agent-tools/terminal/terminal.class.d.ts +11 -6
  31. package/dist/components/agent-tools/terminal/terminal.class.js +4 -4
  32. package/dist/components/agent-tools/terminal/terminal.styles.js +0 -46
  33. package/dist/components/agent-tools/test-results/test-results.class.js +2 -2
  34. package/dist/components/agent-tools/test-results/test-results.styles.js +0 -5
  35. package/dist/components/agent-tools/thinking-panel/thinking-panel.styles.js +0 -41
  36. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.js +0 -41
  37. package/dist/components/agent-tools/tool-call-chip/tool-call-chip.styles.js +0 -30
  38. package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +6 -6
  39. package/dist/components/agent-tools/tool-param-form/tool-param-form.styles.js +0 -5
  40. package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +0 -20
  41. package/dist/components/agent-tools/tool-result-view/tool-result-view.styles.js +0 -4
  42. package/dist/components/agent-tools/tool-select-dialog/tool-select-dialog.styles.js +0 -21
  43. package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +7 -31
  44. package/dist/components/charts/chart/box-plot.class.d.ts +27 -0
  45. package/dist/components/charts/chart/box-plot.class.js +14 -4
  46. package/dist/components/charts/chart/box-plot.styles.js +28 -20
  47. package/dist/components/charts/chart/chart-colors.d.ts +1 -1
  48. package/dist/components/charts/chart/chart-colors.js +1 -1
  49. package/dist/components/charts/chart/chart-core-loader.d.ts +1 -0
  50. package/dist/components/charts/chart/chart-core-loader.js +1 -1
  51. package/dist/components/charts/chart/chart-feature-loader.d.ts +35 -0
  52. package/dist/components/charts/chart/chart-feature-loader.js +1 -1
  53. package/dist/components/charts/chart/chart.class.d.ts +120 -0
  54. package/dist/components/charts/chart/chart.class.js +16 -6
  55. package/dist/components/charts/chart/chart.styles.js +28 -27
  56. package/dist/components/charts/chart/lite-chart.class.d.ts +20 -1
  57. package/dist/components/charts/chart/lite-chart.class.js +4 -4
  58. package/dist/components/charts/chart/lite-chart.styles.js +0 -27
  59. package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +20 -0
  60. package/dist/components/conversation/agent-workspace/agent-workspace.class.js +3 -1
  61. package/dist/components/conversation/agent-workspace/agent-workspace.styles.js +3 -0
  62. package/dist/components/conversation/audio-visualizer/audio-visualizer.styles.js +0 -7
  63. package/dist/components/conversation/branch-picker/branch-picker.styles.js +0 -3
  64. package/dist/components/conversation/chat-composer/chat-composer.styles.js +0 -51
  65. package/dist/components/conversation/chat-message/chat-message.styles.js +7 -35
  66. package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
  67. package/dist/components/conversation/chat-viewport/chat-viewport.styles.js +0 -33
  68. package/dist/components/conversation/checkpoint/checkpoint.class.js +1 -1
  69. package/dist/components/conversation/checkpoint/checkpoint.styles.js +0 -3
  70. package/dist/components/conversation/code-block/code-block-shared.d.ts +5 -2
  71. package/dist/components/conversation/code-block/code-block.class.js +1 -1
  72. package/dist/components/conversation/code-block/code-block.styles.js +4 -95
  73. package/dist/components/conversation/code-block/code-loader.d.ts +11 -0
  74. package/dist/components/conversation/code-block/code-loader.js +1 -1
  75. package/dist/components/conversation/code-block/shiki-types.d.ts +12 -0
  76. package/dist/components/conversation/code-block/shiki-types.js +1 -1
  77. package/dist/components/conversation/conversation-item/conversation-item.styles.js +8 -54
  78. package/dist/components/conversation/generation-metrics/generation-metrics.class.js +2 -2
  79. package/dist/components/conversation/generation-metrics/generation-metrics.styles.js +0 -17
  80. package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
  81. package/dist/components/conversation/markdown/markdown.styles.js +0 -41
  82. package/dist/components/conversation/message-actions/message-actions.styles.js +0 -3
  83. package/dist/components/conversation/message-feedback/message-feedback.styles.js +0 -35
  84. package/dist/components/conversation/message-parts/message-parts.class.d.ts +1 -1
  85. package/dist/components/conversation/message-parts/message-parts.styles.js +0 -5
  86. package/dist/components/conversation/model-select/model-select.class.js +3 -3
  87. package/dist/components/conversation/model-select/model-select.styles.js +12 -47
  88. package/dist/components/conversation/model-settings-panel/model-settings-panel.styles.js +0 -6
  89. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +3 -0
  90. package/dist/components/conversation/prompt-input/prompt-input.styles.js +0 -10
  91. package/dist/components/conversation/push-to-talk/push-to-talk.styles.js +0 -8
  92. package/dist/components/conversation/selection-toolbar/selection-toolbar.styles.js +1 -11
  93. package/dist/components/conversation/stream-status/stream-status.styles.js +0 -16
  94. package/dist/components/conversation/streaming-text/streaming-text.styles.js +0 -15
  95. package/dist/components/conversation/suggestion-chips/suggestion-chips.styles.js +0 -5
  96. package/dist/components/conversation/thread-list/thread-list.styles.js +0 -23
  97. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +16 -4
  98. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +1 -1
  99. package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +0 -1
  100. package/dist/components/conversation/typing-indicator/typing-indicator.styles.js +0 -23
  101. package/dist/components/conversation/usage-badge/usage-badge.styles.js +0 -3
  102. package/dist/components/conversation/voice-picker/voice-picker.class.js +3 -3
  103. package/dist/components/conversation/voice-picker/voice-picker.styles.js +9 -29
  104. package/dist/components/conversation/widget-renderer/resolve.d.ts +2 -0
  105. package/dist/components/conversation/widget-renderer/resolve.js +1 -1
  106. package/dist/components/data/calendar/calendar.class.d.ts +15 -2
  107. package/dist/components/data/calendar/calendar.class.js +2 -2
  108. package/dist/components/data/calendar/calendar.styles.js +2 -28
  109. package/dist/components/data/condition-builder/condition-builder.class.d.ts +10 -6
  110. package/dist/components/data/condition-builder/condition-builder.class.js +2 -2
  111. package/dist/components/data/condition-builder/condition-builder.styles.js +0 -6
  112. package/dist/components/data/context-meter/context-meter.styles.js +0 -24
  113. package/dist/components/data/data-grid/data-grid.class.js +3 -3
  114. package/dist/components/data/data-grid/data-grid.styles.js +0 -22
  115. package/dist/components/data/document-library/document-library.class.js +2 -2
  116. package/dist/components/data/document-library/document-library.styles.js +0 -4
  117. package/dist/components/data/env-list/env-list.class.js +1 -1
  118. package/dist/components/data/env-list/env-list.styles.js +7 -4
  119. package/dist/components/data/file-tree/file-tree.class.d.ts +12 -0
  120. package/dist/components/data/flow-canvas/flow-canvas.styles.js +12 -19
  121. package/dist/components/data/flow-controls/flow-controls.class.js +2 -2
  122. package/dist/components/data/flow-controls/flow-controls.styles.js +3 -36
  123. package/dist/components/data/flow-minimap/flow-minimap.class.js +1 -1
  124. package/dist/components/data/flow-minimap/flow-minimap.styles.js +0 -9
  125. package/dist/components/data/flow-node/flow-node.styles.js +0 -23
  126. package/dist/components/data/flow-run-status/flow-run-status.class.js +1 -1
  127. package/dist/components/data/flow-run-status/flow-run-status.styles.js +0 -7
  128. package/dist/components/data/graph-query-builder/graph-query-builder.class.d.ts +0 -7
  129. package/dist/components/data/graph-query-builder/graph-query-builder.class.js +1 -1
  130. package/dist/components/data/graph-query-builder/graph-query-builder.styles.js +0 -10
  131. package/dist/components/data/heatmap/heatmap-scale.d.ts +20 -0
  132. package/dist/components/data/heatmap/heatmap-scale.js +1 -1
  133. package/dist/components/data/heatmap/heatmap.class.d.ts +117 -1
  134. package/dist/components/data/heatmap/heatmap.class.js +2 -2
  135. package/dist/components/data/heatmap/heatmap.styles.js +0 -54
  136. package/dist/components/data/pagination/pagination.styles.js +23 -46
  137. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +34 -1
  138. package/dist/components/data/sequence-strip/sequence-strip.class.js +5 -2
  139. package/dist/components/data/sequence-strip/sequence-strip.styles.js +14 -20
  140. package/dist/components/data/sparkline/sparkline.class.js +1 -1
  141. package/dist/components/data/stat/stat.styles.js +0 -67
  142. package/dist/components/data/table/table.class.d.ts +42 -3
  143. package/dist/components/data/table/table.class.js +4 -4
  144. package/dist/components/data/table/table.styles.js +20 -91
  145. package/dist/components/data/timeline/timeline-item.styles.js +0 -30
  146. package/dist/components/data/timeline/timeline.class.d.ts +89 -1
  147. package/dist/components/data/timeline/timeline.class.js +2 -2
  148. package/dist/components/data/timeline/timeline.styles.js +111 -31
  149. package/dist/components/data/tree/tree-item.styles.js +1 -28
  150. package/dist/components/data/tree/tree.class.js +2 -2
  151. package/dist/components/data/tree/tree.styles.js +0 -6
  152. package/dist/components/data/word-cloud/word-cloud.styles.js +0 -5
  153. package/dist/components/forms/button/button.class.js +1 -1
  154. package/dist/components/forms/button/button.styles.js +0 -105
  155. package/dist/components/forms/checkbox/checkbox.class.d.ts +3 -0
  156. package/dist/components/forms/checkbox/checkbox.class.js +1 -1
  157. package/dist/components/forms/checkbox/checkbox.styles.js +0 -39
  158. package/dist/components/forms/checkbox-group/checkbox-group.class.d.ts +21 -2
  159. package/dist/components/forms/checkbox-group/checkbox-group.class.js +1 -1
  160. package/dist/components/forms/checkbox-group/checkbox-group.styles.js +0 -18
  161. package/dist/components/forms/code-editor/code-editor.styles.js +0 -30
  162. package/dist/components/forms/color-picker/color-picker.class.js +2 -2
  163. package/dist/components/forms/color-picker/color-picker.styles.js +0 -69
  164. package/dist/components/forms/combobox/combobox.class.d.ts +71 -3
  165. package/dist/components/forms/combobox/combobox.class.js +5 -3
  166. package/dist/components/forms/combobox/combobox.styles.js +31 -111
  167. package/dist/components/forms/combobox/option.styles.js +7 -1
  168. package/dist/components/forms/date-picker/date-input.class.js +1 -1
  169. package/dist/components/forms/date-picker/date-input.styles.js +12 -67
  170. package/dist/components/forms/date-picker/date-picker.class.d.ts +47 -0
  171. package/dist/components/forms/date-picker/date-picker.class.js +36 -22
  172. package/dist/components/forms/date-picker/date-picker.styles.js +82 -29
  173. package/dist/components/forms/emoji-picker/emoji-data-loader.d.ts +6 -3
  174. package/dist/components/forms/emoji-picker/emoji-data-loader.js +1 -1
  175. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +8 -1
  176. package/dist/components/forms/emoji-picker/emoji-picker.class.js +1 -1
  177. package/dist/components/forms/emoji-picker/emoji-picker.styles.js +3 -41
  178. package/dist/components/forms/icon-button/icon-button.class.js +1 -1
  179. package/dist/components/forms/icon-button/icon-button.styles.js +0 -16
  180. package/dist/components/forms/input/input.styles.js +0 -54
  181. package/dist/components/forms/input/number-input.styles.d.ts +4 -5
  182. package/dist/components/forms/input/number-input.styles.js +0 -11
  183. package/dist/components/forms/input/time-input-shared.d.ts +11 -0
  184. package/dist/components/forms/input/time-input-shared.js +1 -1
  185. package/dist/components/forms/input/time-input.class.d.ts +11 -2
  186. package/dist/components/forms/input/time-input.class.js +1 -1
  187. package/dist/components/forms/input/time-input.styles.js +0 -6
  188. package/dist/components/forms/locale-picker/locale-picker.class.js +2 -2
  189. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -26
  190. package/dist/components/forms/otp-input/otp-input.class.js +3 -3
  191. package/dist/components/forms/otp-input/otp-input.styles.js +0 -16
  192. package/dist/components/forms/phone-input/phone-input.class.d.ts +9 -1
  193. package/dist/components/forms/phone-input/phone-input.class.js +2 -2
  194. package/dist/components/forms/phone-input/phone-input.styles.js +0 -37
  195. package/dist/components/forms/radio/radio-button.styles.js +1 -30
  196. package/dist/components/forms/radio/radio-group.styles.js +0 -4
  197. package/dist/components/forms/radio/radio.styles.js +0 -44
  198. package/dist/components/forms/rubric-form/rubric-form.styles.js +0 -5
  199. package/dist/components/forms/select/select.class.js +1 -1
  200. package/dist/components/forms/select/select.styles.js +14 -114
  201. package/dist/components/forms/slider/slider.styles.js +0 -55
  202. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +0 -11
  203. package/dist/components/forms/swatch-picker/swatch-picker.class.js +2 -2
  204. package/dist/components/forms/swatch-picker/swatch-picker.styles.js +0 -77
  205. package/dist/components/forms/switch/switch.class.d.ts +3 -0
  206. package/dist/components/forms/switch/switch.class.js +1 -1
  207. package/dist/components/forms/switch/switch.styles.js +0 -37
  208. package/dist/components/forms/textarea/textarea.styles.js +0 -28
  209. package/dist/components/forms/time-range/time-range.styles.js +12 -84
  210. package/dist/components/forms/token-input/token-input.class.d.ts +23 -9
  211. package/dist/components/forms/token-input/token-input.class.js +1 -1
  212. package/dist/components/forms/token-input/token-input.styles.js +1 -54
  213. package/dist/components/layout/app-rail/app-rail-item.class.js +2 -2
  214. package/dist/components/layout/app-rail/app-rail-item.styles.js +0 -13
  215. package/dist/components/layout/app-rail/app-rail.class.d.ts +5 -0
  216. package/dist/components/layout/app-rail/app-rail.class.js +1 -1
  217. package/dist/components/layout/app-rail/app-rail.styles.js +0 -46
  218. package/dist/components/layout/button-group/button-group.styles.js +0 -6
  219. package/dist/components/layout/card/card.class.d.ts +12 -0
  220. package/dist/components/layout/card/card.styles.js +3 -11
  221. package/dist/components/layout/carousel/carousel.styles.js +0 -1
  222. package/dist/components/layout/command-palette/command-palette.class.d.ts +8 -0
  223. package/dist/components/layout/command-palette/command-palette.class.js +3 -1
  224. package/dist/components/layout/command-palette/command-palette.styles.js +1 -13
  225. package/dist/components/layout/control-group/control-group.styles.js +0 -7
  226. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +6 -25
  227. package/dist/components/layout/details/accordion.class.d.ts +13 -0
  228. package/dist/components/layout/details/accordion.class.js +1 -1
  229. package/dist/components/layout/details/details.class.js +1 -1
  230. package/dist/components/layout/details/details.styles.js +0 -12
  231. package/dist/components/layout/dock-panel/dock-panel.styles.js +0 -45
  232. package/dist/components/layout/drilldown-panel/drilldown-panel.class.d.ts +2 -0
  233. package/dist/components/layout/drilldown-panel/drilldown-panel.class.js +2 -2
  234. package/dist/components/layout/drilldown-panel/drilldown-panel.styles.js +0 -4
  235. package/dist/components/layout/filter-bar/filter-bar.class.js +1 -1
  236. package/dist/components/layout/filter-bar/filter-bar.styles.js +0 -9
  237. package/dist/components/layout/menu/menu-item.class.d.ts +5 -0
  238. package/dist/components/layout/menu/menu-item.class.js +1 -1
  239. package/dist/components/layout/menu/menu-item.styles.js +0 -49
  240. package/dist/components/layout/menu/menu-label.styles.js +0 -2
  241. package/dist/components/layout/menu/menu.styles.js +0 -18
  242. package/dist/components/layout/multi-split/multi-split.styles.js +0 -63
  243. package/dist/components/layout/page/page.class.d.ts +4 -0
  244. package/dist/components/layout/page/page.class.js +1 -1
  245. package/dist/components/layout/reorder-list/reorder-item.styles.js +0 -4
  246. package/dist/components/layout/responsive-panel/responsive-panel.styles.js +0 -27
  247. package/dist/components/layout/scroller/scroller.styles.js +0 -20
  248. package/dist/components/layout/segmented/segmented.class.d.ts +7 -1
  249. package/dist/components/layout/segmented/segmented.class.js +1 -1
  250. package/dist/components/layout/segmented/segmented.styles.js +69 -37
  251. package/dist/components/layout/split-panel/split-panel.styles.js +1 -7
  252. package/dist/components/layout/stepper/stepper.class.d.ts +8 -1
  253. package/dist/components/layout/stepper/stepper.class.js +1 -1
  254. package/dist/components/layout/stepper/stepper.styles.js +140 -41
  255. package/dist/components/layout/tab-group/tab-group.class.d.ts +4 -1
  256. package/dist/components/layout/tab-group/tab-group.styles.js +9 -75
  257. package/dist/components/layout/tab-group/tab.styles.js +0 -2
  258. package/dist/components/layout/virtual-list/virtual-list.class.d.ts +4 -4
  259. package/dist/components/layout/virtual-list/virtual-list.class.js +1 -1
  260. package/dist/components/layout/virtual-list/virtual-list.styles.js +0 -68
  261. package/dist/components/layout/widget/widget.class.d.ts +5 -1
  262. package/dist/components/layout/widget/widget.class.js +1 -1
  263. package/dist/components/layout/widget/widget.styles.js +97 -40
  264. package/dist/components/media/animated-image/animated-image.class.d.ts +3 -0
  265. package/dist/components/media/animated-image/animated-image.class.js +1 -1
  266. package/dist/components/media/animated-image/animated-image.styles.js +0 -28
  267. package/dist/components/media/attachment-chip/attachment-chip.class.d.ts +1 -1
  268. package/dist/components/media/attachment-chip/attachment-chip.class.js +1 -1
  269. package/dist/components/media/attachment-chip/attachment-chip.styles.js +0 -31
  270. package/dist/components/media/attachment-trigger/attachment-trigger.class.js +3 -3
  271. package/dist/components/media/attachment-trigger/attachment-trigger.styles.js +0 -40
  272. package/dist/components/media/av-player/av-player.class.d.ts +5 -6
  273. package/dist/components/media/av-player/av-player.class.js +1 -1
  274. package/dist/components/media/av-player/av-player.styles.js +0 -45
  275. package/dist/components/media/avatar/avatar.styles.js +3 -16
  276. package/dist/components/media/file-icon/file-icon.class.d.ts +1 -2
  277. package/dist/components/media/file-icon/file-icon.class.js +1 -1
  278. package/dist/components/media/file-input/file-input.class.d.ts +12 -0
  279. package/dist/components/media/file-input/file-input.styles.js +3 -24
  280. package/dist/components/media/flag/flag.class.d.ts +23 -1
  281. package/dist/components/media/flag/flag.class.js +4 -2
  282. package/dist/components/media/flag/flag.styles.js +7 -1
  283. package/dist/components/media/flag/language-map.d.ts +10 -0
  284. package/dist/components/media/flag/language-map.js +1 -1
  285. package/dist/components/media/image-comparer/image-comparer.styles.js +4 -33
  286. package/dist/components/media/image-viewer/image-viewer.class.js +0 -2
  287. package/dist/components/media/image-viewer/image-viewer.styles.js +7 -27
  288. package/dist/components/media/lightbox/lightbox.class.js +0 -2
  289. package/dist/components/media/lightbox/lightbox.styles.js +0 -21
  290. package/dist/components/media/map/map-loader.d.ts +19 -1
  291. package/dist/components/media/map/map-loader.js +1 -1
  292. package/dist/components/media/map/map.class.d.ts +178 -1
  293. package/dist/components/media/map/map.class.js +15 -3
  294. package/dist/components/media/map/map.styles.js +20 -17
  295. package/dist/components/media/media-card/media-card.class.d.ts +14 -3
  296. package/dist/components/media/media-card/media-card.class.js +1 -1
  297. package/dist/components/media/media-card/media-card.styles.js +2 -28
  298. package/dist/components/media/pan-zoom/pan-zoom.styles.js +0 -3
  299. package/dist/components/media/qr-code/qr-code.class.d.ts +3 -2
  300. package/dist/components/media/qr-code/qr-code.class.js +2 -2
  301. package/dist/components/media/qr-code/qr-code.styles.js +0 -3
  302. package/dist/components/media/sequence-playback/sequence-playback.class.d.ts +2 -0
  303. package/dist/components/media/sequence-playback/sequence-playback.class.js +2 -1
  304. package/dist/components/media/sequence-playback/sequence-playback.styles.js +0 -19
  305. package/dist/components/media/video/video.class.d.ts +23 -2
  306. package/dist/components/media/video/video.class.js +3 -3
  307. package/dist/components/media/video/video.styles.js +4 -2
  308. package/dist/components/media/zoomable-frame/zoomable-frame.class.d.ts +3 -2
  309. package/dist/components/media/zoomable-frame/zoomable-frame.class.js +2 -2
  310. package/dist/components/media/zoomable-frame/zoomable-frame.styles.js +0 -5
  311. package/dist/components/overlays/alert/alert.styles.js +4 -2
  312. package/dist/components/overlays/badge/badge.styles.js +4 -48
  313. package/dist/components/overlays/badge/tag.styles.js +0 -14
  314. package/dist/components/overlays/callout/callout.styles.js +0 -11
  315. package/dist/components/overlays/chip/chip-group.styles.js +0 -18
  316. package/dist/components/overlays/chip/chip.styles.js +6 -69
  317. package/dist/components/overlays/dialog/confirm.d.ts +1 -4
  318. package/dist/components/overlays/dialog/confirm.js +1 -1
  319. package/dist/components/overlays/dialog/dialog.class.d.ts +32 -9
  320. package/dist/components/overlays/dialog/dialog.class.js +1 -1
  321. package/dist/components/overlays/dialog/dialog.styles.js +0 -43
  322. package/dist/components/overlays/drawer/drawer.class.d.ts +2 -2
  323. package/dist/components/overlays/drawer/drawer.styles.js +0 -9
  324. package/dist/components/overlays/empty/empty.styles.js +0 -12
  325. package/dist/components/overlays/kbd/kbd.styles.js +0 -8
  326. package/dist/components/overlays/overlay/dropdown.class.d.ts +1 -6
  327. package/dist/components/overlays/overlay/dropdown.class.js +2 -2
  328. package/dist/components/overlays/overlay/overlay.styles.js +0 -28
  329. package/dist/components/overlays/overlay/popover.class.d.ts +28 -4
  330. package/dist/components/overlays/overlay/popover.class.js +2 -2
  331. package/dist/components/overlays/overlay/tooltip.class.d.ts +10 -0
  332. package/dist/components/overlays/overlay/tooltip.class.js +1 -1
  333. package/dist/components/overlays/popup/popup.class.d.ts +1 -0
  334. package/dist/components/overlays/popup/popup.class.js +1 -1
  335. package/dist/components/overlays/popup/popup.styles.js +0 -15
  336. package/dist/components/overlays/progress/progress-ring.class.d.ts +9 -1
  337. package/dist/components/overlays/progress/progress-ring.class.js +3 -3
  338. package/dist/components/overlays/progress/progress.styles.js +0 -21
  339. package/dist/components/overlays/rating/rating.styles.js +0 -25
  340. package/dist/components/overlays/skeleton/skeleton.styles.js +0 -4
  341. package/dist/components/overlays/spinner/spinner.styles.js +0 -3
  342. package/dist/components/overlays/toast/toast-item.styles.js +3 -45
  343. package/dist/components/retrieval/chunk-inspector/chunk-inspector.styles.js +0 -35
  344. package/dist/components/retrieval/citation-badge/citation-badge.class.d.ts +2 -2
  345. package/dist/components/retrieval/citation-badge/citation-badge.class.js +3 -3
  346. package/dist/components/retrieval/citation-badge/citation-badge.styles.js +0 -20
  347. package/dist/components/retrieval/claim-evidence/claim-evidence.styles.js +0 -8
  348. package/dist/components/retrieval/community-card/community-card.class.d.ts +1 -0
  349. package/dist/components/retrieval/community-card/community-card.styles.js +0 -6
  350. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +8 -12
  351. package/dist/components/retrieval/entity-card/entity-card.class.d.ts +4 -3
  352. package/dist/components/retrieval/entity-card/entity-card.class.js +1 -1
  353. package/dist/components/retrieval/entity-card/entity-card.styles.js +0 -12
  354. package/dist/components/retrieval/entity-chip/entity-chip.class.d.ts +10 -4
  355. package/dist/components/retrieval/entity-chip/entity-chip.class.js +3 -3
  356. package/dist/components/retrieval/entity-chip/entity-chip.styles.js +6 -9
  357. package/dist/components/retrieval/entity-dossier/entity-dossier.class.d.ts +19 -5
  358. package/dist/components/retrieval/graph/graph.class.d.ts +5 -0
  359. package/dist/components/retrieval/graph/graph.class.js +1 -1
  360. package/dist/components/retrieval/graph/graph.styles.js +0 -30
  361. package/dist/components/retrieval/graph-legend/graph-legend.styles.js +0 -3
  362. package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.js +0 -25
  363. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.d.ts +2 -0
  364. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +0 -7
  365. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +20 -6
  366. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +2 -2
  367. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +0 -16
  368. package/dist/components/retrieval/mind-map/mind-map.class.d.ts +5 -3
  369. package/dist/components/retrieval/mind-map/mind-map.class.js +1 -1
  370. package/dist/components/retrieval/mind-map/mind-map.styles.js +0 -2
  371. package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts +3 -2
  372. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +1 -1
  373. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +0 -30
  374. package/dist/components/retrieval/node-palette/node-palette.styles.js +0 -11
  375. package/dist/components/retrieval/path-strip/path-strip.styles.js +0 -10
  376. package/dist/components/retrieval/provenance-panel/provenance-panel.class.d.ts +12 -3
  377. package/dist/components/retrieval/provenance-panel/provenance-panel.styles.js +0 -2
  378. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +3 -2
  379. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +2 -2
  380. package/dist/components/retrieval/retrieval-results/retrieval-results.styles.js +0 -28
  381. package/dist/components/retrieval/retrieval-search/retrieval-search.styles.js +0 -4
  382. package/dist/components/retrieval/retrieval-trace/retrieval-trace.styles.js +0 -2
  383. package/dist/components/retrieval/source-card/source-card.styles.js +0 -13
  384. package/dist/components/retrieval/source-list/source-list.styles.js +0 -7
  385. package/dist/components/retrieval/source-picker/source-picker.styles.js +0 -7
  386. package/dist/components/utility/copy-button/copy-button.styles.js +0 -10
  387. package/dist/components/utility/diff-view/diff-view.styles.js +0 -14
  388. package/dist/components/utility/export-button/export-button.styles.js +0 -22
  389. package/dist/components/utility/icon/icon.styles.js +0 -6
  390. package/dist/components/utility/json-viewer/json-viewer.styles.js +2 -48
  391. package/dist/components/utility/known-date/known-date.class.d.ts +7 -3
  392. package/dist/components/utility/known-date/known-date.styles.js +10 -51
  393. package/dist/components/utility/live-region/live-region.styles.js +0 -4
  394. package/dist/components/utility/mention-popover/mention-popover.styles.js +0 -25
  395. package/dist/components/utility/poll-status/poll-status.styles.js +0 -4
  396. package/dist/components/utility/random-content/random-content.class.d.ts +22 -0
  397. package/dist/components/utility/random-content/random-content.class.js +3 -2
  398. package/dist/components/utility/random-content/random-content.styles.js +6 -13
  399. package/dist/components/utility/tour/tour.class.d.ts +4 -2
  400. package/dist/components/utility/tour/tour.class.js +3 -3
  401. package/dist/components/utility/tour/tour.styles.js +0 -13
  402. package/dist/components/utility/visually-hidden/visually-hidden.styles.js +0 -5
  403. package/dist/components/viewers/archive-viewer/archive-viewer.class.js +1 -1
  404. package/dist/components/viewers/archive-viewer/archive-viewer.styles.d.ts +2 -2
  405. package/dist/components/viewers/archive-viewer/archive-viewer.styles.js +0 -10
  406. package/dist/components/viewers/csv-viewer/csv-viewer.class.js +1 -1
  407. package/dist/components/viewers/csv-viewer/csv-viewer.styles.js +0 -19
  408. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +1 -1
  409. package/dist/components/viewers/dataset-viewer/dataset-viewer.styles.js +0 -15
  410. package/dist/components/viewers/document-compare/document-compare.styles.js +0 -3
  411. package/dist/components/viewers/document-preview/document-preview.styles.js +0 -25
  412. package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +2 -1
  413. package/dist/components/viewers/document-viewer/document-viewer.class.js +1 -1
  414. package/dist/components/viewers/document-viewer/document-viewer.styles.js +0 -5
  415. package/dist/components/viewers/docx-viewer/docx-viewer.styles.js +0 -17
  416. package/dist/components/viewers/ebook-viewer/ebook-viewer.styles.js +0 -4
  417. package/dist/components/viewers/email-viewer/email-viewer.styles.js +0 -7
  418. package/dist/components/viewers/geojson-view/geojson-view.styles.js +0 -5
  419. package/dist/components/viewers/highlight-layer/highlight-layer.styles.js +0 -3
  420. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js +1 -1
  421. package/dist/components/viewers/notebook-viewer/notebook-viewer.styles.js +0 -38
  422. package/dist/components/viewers/page-rail/page-rail.class.js +1 -1
  423. package/dist/components/viewers/page-rail/page-rail.styles.js +0 -13
  424. package/dist/components/viewers/pdf-viewer/pdf-loader.d.ts +13 -2
  425. package/dist/components/viewers/pdf-viewer/pdf-loader.js +1 -1
  426. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.d.ts +32 -2
  427. package/dist/components/viewers/pdf-viewer/pdf-viewer.class.js +4 -4
  428. package/dist/components/viewers/pdf-viewer/pdf-viewer.styles.js +1 -27
  429. package/dist/components/viewers/pptx-viewer/pptx-viewer.styles.js +0 -3
  430. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +1 -1
  431. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.styles.js +0 -14
  432. package/dist/components/viewers/svg-viewer/svg-viewer.styles.js +0 -7
  433. package/dist/components/viewers/xml-viewer/xml-viewer.styles.js +2 -24
  434. package/dist/custom-elements-jsx.d.ts +72 -40
  435. package/dist/events.d.ts +43 -33
  436. package/dist/internal/agent-status-variants.d.ts +18 -0
  437. package/dist/internal/agent-status-variants.js +1 -0
  438. package/dist/internal/announcer.d.ts +8 -3
  439. package/dist/internal/announcer.js +1 -1
  440. package/dist/internal/autoloader-manifest.js +1 -1
  441. package/dist/internal/canvas-color.d.ts +16 -0
  442. package/dist/internal/canvas-color.js +1 -1
  443. package/dist/internal/catalog-picker.d.ts +0 -1
  444. package/dist/internal/catalog-picker.js +1 -1
  445. package/dist/internal/default-strings.generated.d.ts +1 -0
  446. package/dist/internal/default-strings.generated.js +1 -1
  447. package/dist/internal/dev-mode-attribute-warning.d.ts +27 -4
  448. package/dist/internal/dev-mode-attribute-warning.js +1 -1
  449. package/dist/internal/localization-runtime.js +1 -1
  450. package/dist/internal/localization-types.d.ts +1 -1
  451. package/dist/internal/localization.js +1 -1
  452. package/dist/internal/lyra-element.d.ts +13 -0
  453. package/dist/internal/lyra-element.js +1 -1
  454. package/dist/internal/media-controller.js +1 -1
  455. package/dist/internal/package-metadata.d.ts +1 -1
  456. package/dist/internal/package-metadata.js +1 -1
  457. package/dist/internal/scroll-overflow.d.ts +35 -13
  458. package/dist/internal/scroll-overflow.js +1 -1
  459. package/dist/internal/sizes.styles.js +0 -2
  460. package/dist/internal/specialist-tokens.styles.js +6 -11
  461. package/dist/internal/text-highlights.d.ts +4 -1
  462. package/dist/internal/text-highlights.js +1 -1
  463. package/dist/internal/tokens/palette.styles.js +0 -15
  464. package/dist/internal/tokens.styles.js +20 -113
  465. package/dist/lyra.d.ts +9 -6
  466. package/dist/styles/reservations.css +82 -0
  467. package/dist/svelte.d.ts +72 -40
  468. package/dist/translations/ar.js +1 -1
  469. package/dist/translations/de.js +1 -1
  470. package/dist/translations/es.js +1 -1
  471. package/dist/translations/fa.js +1 -1
  472. package/dist/translations/fr.js +1 -1
  473. package/dist/translations/he.js +1 -1
  474. package/dist/translations/ja.js +1 -1
  475. package/dist/translations/pt-BR.js +1 -1
  476. package/dist/translations/ru.js +1 -1
  477. package/dist/translations/zh-CN.js +1 -1
  478. package/dist/vue.d.ts +72 -40
  479. package/llms/components/lr-accordion-item.md +12 -3
  480. package/llms/components/lr-accordion.md +11 -2
  481. package/llms/components/lr-agent-eval-dashboard.md +1 -1
  482. package/llms/components/lr-agent-trace.md +3 -1
  483. package/llms/components/lr-agent-workspace.md +20 -0
  484. package/llms/components/lr-artifact-panel.md +10 -4
  485. package/llms/components/lr-attachment-chip.md +7 -4
  486. package/llms/components/lr-attachment-trigger.md +7 -4
  487. package/llms/components/lr-av-player.md +3 -1
  488. package/llms/components/lr-avatar.md +6 -6
  489. package/llms/components/lr-bar-chart.md +8 -6
  490. package/llms/components/lr-box-plot.md +15 -4
  491. package/llms/components/lr-browser-frame.md +7 -3
  492. package/llms/components/lr-bubble-chart.md +8 -6
  493. package/llms/components/lr-calendar.md +9 -2
  494. package/llms/components/lr-card.md +24 -0
  495. package/llms/components/lr-chart.md +45 -11
  496. package/llms/components/lr-chat-viewport.md +7 -2
  497. package/llms/components/lr-checkbox-group.md +13 -5
  498. package/llms/components/lr-checkbox.md +5 -2
  499. package/llms/components/lr-checkpoint.md +6 -2
  500. package/llms/components/lr-combobox.md +47 -8
  501. package/llms/components/lr-command-palette.md +4 -1
  502. package/llms/components/lr-confirm-bar.md +7 -3
  503. package/llms/components/lr-context-meter.md +12 -11
  504. package/llms/components/lr-conversation-item.md +7 -4
  505. package/llms/components/lr-date-input.md +22 -2
  506. package/llms/components/lr-date-picker.md +23 -3
  507. package/llms/components/lr-details.md +11 -2
  508. package/llms/components/lr-dialog.md +16 -10
  509. package/llms/components/lr-dock-panel.md +7 -10
  510. package/llms/components/lr-document-preview.md +6 -1
  511. package/llms/components/lr-document-viewer.md +3 -2
  512. package/llms/components/lr-doughnut-chart.md +8 -6
  513. package/llms/components/lr-drawer.md +3 -3
  514. package/llms/components/lr-entity-card.md +3 -3
  515. package/llms/components/lr-entity-chip.md +1 -1
  516. package/llms/components/lr-entity-dossier.md +4 -1
  517. package/llms/components/lr-file-input.md +2 -2
  518. package/llms/components/lr-flag.md +30 -8
  519. package/llms/components/lr-heatmap.md +46 -0
  520. package/llms/components/lr-histogram.md +7 -4
  521. package/llms/components/lr-icon.md +1 -1
  522. package/llms/components/lr-json-schema-viewer.md +2 -1
  523. package/llms/components/lr-knowledge-graph-explorer.md +8 -3
  524. package/llms/components/lr-known-date.md +4 -2
  525. package/llms/components/lr-line-chart.md +8 -6
  526. package/llms/components/lr-lite-chart.md +16 -6
  527. package/llms/components/lr-map.md +91 -10
  528. package/llms/components/lr-markdown-core.md +3 -2
  529. package/llms/components/lr-media-card.md +28 -12
  530. package/llms/components/lr-message-parts.md +2 -1
  531. package/llms/components/lr-model-select.md +9 -10
  532. package/llms/components/lr-model-settings-panel.md +9 -9
  533. package/llms/components/lr-neighbor-list.md +1 -1
  534. package/llms/components/lr-notebook-viewer.md +6 -3
  535. package/llms/components/lr-option.md +46 -7
  536. package/llms/components/lr-pdf-viewer.md +62 -2
  537. package/llms/components/lr-pie-chart.md +8 -6
  538. package/llms/components/lr-polar-area-chart.md +8 -6
  539. package/llms/components/lr-popover.md +25 -1
  540. package/llms/components/lr-progress-ring.md +8 -1
  541. package/llms/components/lr-prompt-studio.md +1 -1
  542. package/llms/components/lr-provenance-panel.md +4 -2
  543. package/llms/components/lr-qr-code.md +1 -1
  544. package/llms/components/lr-radar-chart.md +8 -6
  545. package/llms/components/lr-rag-eval-dashboard.md +2 -2
  546. package/llms/components/lr-random-content.md +13 -0
  547. package/llms/components/lr-reorder-item.md +6 -1
  548. package/llms/components/lr-reorder-list.md +6 -1
  549. package/llms/components/lr-responsive-panel.md +11 -7
  550. package/llms/components/lr-scatter-chart.md +8 -6
  551. package/llms/components/lr-sequence-strip.md +16 -2
  552. package/llms/components/lr-slider.md +12 -5
  553. package/llms/components/lr-sparkline.md +1 -1
  554. package/llms/components/lr-suggestion-chips.md +7 -2
  555. package/llms/components/lr-swatch-picker.md +5 -5
  556. package/llms/components/lr-switch.md +5 -2
  557. package/llms/components/lr-table.md +30 -4
  558. package/llms/components/lr-terminal.md +3 -1
  559. package/llms/components/lr-thread-list.md +8 -8
  560. package/llms/components/lr-time-input.md +6 -1
  561. package/llms/components/lr-timeline-item.md +24 -0
  562. package/llms/components/lr-timeline.md +25 -1
  563. package/llms/components/lr-token-input.md +7 -2
  564. package/llms/components/lr-tool-approval-dialog.md +7 -8
  565. package/llms/components/lr-tool-call-chip.md +5 -1
  566. package/llms/components/lr-tool-param-form.md +14 -12
  567. package/llms/components/lr-tool-result-dialog.md +11 -9
  568. package/llms/components/lr-tool-result-view.md +7 -6
  569. package/llms/components/lr-tool-select-dialog.md +18 -16
  570. package/llms/components/lr-trace-tree.md +3 -1
  571. package/llms/components/lr-usage-badge.md +4 -1
  572. package/llms/components/lr-video-playlist.md +1 -1
  573. package/llms/components/lr-virtual-list.md +22 -14
  574. package/llms/components/lr-voice-picker.md +8 -5
  575. package/llms/components/lr-widget-renderer.md +3 -3
  576. package/llms/components/lr-widget.md +1 -1
  577. package/llms/components/lr-word-cloud.md +6 -2
  578. package/llms/peers.md +12 -2
  579. package/llms/shared.md +70 -2
  580. package/llms/tokens.md +15 -1
  581. package/llms-full.txt +1335 -306
  582. package/package.json +17 -5
  583. package/vscode-css-data.json +93 -2
  584. package/vscode-html-data.json +513 -59
  585. package/web-types.json +457 -72
@@ -8,7 +8,7 @@
8
8
  - **Status** `stable` since `4.0.0` — see the maturity and deprecation policy in `llms/shared.md`
9
9
  - **Deprecations** none
10
10
  - **Optional peers** `@aceshooting/lyra-flags` — see `llms/peers.md`
11
- - **Themeable via** 2 parts, 3 custom properties — see this component's own `@csspart`/`@cssprop` list below
11
+ - **Themeable via** 3 parts, 3 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
12
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
13
13
 
14
14
  ---
@@ -20,7 +20,16 @@ Country/language flag image. Flag artwork ships in a **separate, optional peer p
20
20
 
21
21
  **Properties:**
22
22
 
23
- - `country?: string` (ISO 3166-1 alpha-2, e.g. `"fr"` — takes precedence over `language`)
23
+ - `country?: string` (ISO 3166-1 **alpha-2 or alpha-3**, e.g. `"fr"` or `"FRA"` — takes
24
+ precedence over `language`). Length alone disambiguates the two code spaces, so no format hint
25
+ is needed: a 2-letter value is alpha-2, a 3-letter value is alpha-3. Alpha-3 support exists
26
+ because public statistical sources (World Bank, UN, IMF, most open-data portals) key country
27
+ records on alpha-3; the 249 officially-assigned mappings are packed as a ~1.2 KB fixed-width
28
+ string and expanded lazily on the first alpha-3 lookup, so an alpha-2-only app never pays for
29
+ them. Withdrawn and user-assigned codes deliberately do not map to a successor state — they
30
+ take the unresolved path below
31
+ - `fallback?: string` — placeholder image URL rendered when the code cannot resolve to a current
32
+ flag. The `fallback` slot wins over it
24
33
  - `language?: string` (BCP-47-ish tag, e.g. `"en"`/`"en-US"`, resolved to a representative country
25
34
  via `languageToCountry()`)
26
35
  - `src?: string` (a pre-resolved flag image URL — takes precedence over `country`/`language` and
@@ -45,11 +54,17 @@ authoring types are `LyraFlagShape`, `LyraFlagFidelity`, and `LyraFlagUrlResolve
45
54
 
46
55
  **Events:** none.
47
56
 
48
- **Slots:** none.
57
+ **Slots:** `fallback` — rendered in place of the flag when `country`/`language` cannot resolve to a
58
+ current flag (an unassigned, historical, or malformed code). Wins over the `fallback` property.
49
59
 
50
- **CSS parts:** `image` (the underlying `<img>`, exposed once native loading succeeds), `error`
60
+ **CSS parts:** `image` (the underlying `<img>`, exposed once native loading succeeds),
61
+ `fallback-image` (the `fallback` property's placeholder, when no slot content is supplied), `error`
51
62
  (contained localized visible text rendered when URL validation, peer resolution, or native image
52
- loading fails). The host reflects the terminal error state with `data-error`.
63
+ loading fails). The host reflects the terminal error state with `data-error`, and an unresolvable
64
+ code with `data-unresolved`. **The two are deliberately distinct:** a dissolved federation or
65
+ unrecognized territory in a longitudinal dataset is *data*, not a defect, so it renders the neutral
66
+ fallback (occupying its normal footprint in a table or card grid) rather than localized error
67
+ wording that reads to a user as a bug. Style the two states apart with those attributes.
53
68
 
54
69
  **Themeable custom properties:** `--lr-flag-radius` (default `calc(var(--lr-radius) * 0.33)` —
55
70
  rectangular corner radius), `--lr-flag-aspect-ratio` (default `4 / 3`), and
@@ -59,8 +74,10 @@ rectangular corner radius), `--lr-flag-aspect-ratio` (default `4 / 3`), and
59
74
  image when `country` or `language` is used. Import
60
75
  `@aceshooting/lyra-ui/components/media/flag/flag-peer.js` once to opt into
61
76
  that resolver; a pre-resolved `src` works without the peer registration entry. If the peer is not
62
- installed, the component fails closed with localized visible `[part="error"]` text and a shared
63
- light-DOM assertive announcement (see gotchas).
77
+ installed or if `flag-peer.js` was simply never imported, which looks identical from the page —
78
+ the component fails closed with localized visible `[part="error"]` text, a shared light-DOM
79
+ assertive announcement, and a one-time `console.warn` naming the unresolved code and this import
80
+ (see gotchas).
64
81
 
65
82
  Also exported from the package root:
66
83
  `languageToCountry(language: string): string | undefined` and the `LANGUAGE_TO_COUNTRY` lookup
@@ -146,7 +163,12 @@ import "@aceshooting/lyra-ui/components/media/flag/flag-peer.js";
146
163
  `[data-lr-live-region="assertive"]` sink, so the shadow chrome itself is not live and identical
147
164
  retries remain separate additions. The failure also produces a one-time `console.warn`
148
165
  once the resolver rejects (lazy `import()`, cached module-wide so the warning fires only once per
149
- page even with many `<lr-flag>` instances). An _empty_ template is a different, non-error outcome:
166
+ page even with many `<lr-flag>` instances). A **separate** one-time `console.warn` covers the
167
+ commonest setup mistake — `country`/`language` set while no resolver was ever registered, i.e.
168
+ `flag-peer.js` was not imported. It names the offending code and that import path, because the
169
+ visible `[part="error"]` state alone is indistinguishable from missing flag data. It is armed
170
+ once per resolver-registration generation, so a table of many flags warns once.
171
+ An _empty_ template is a different, non-error outcome:
150
172
  the peer resolved fine but returned no URL for that code (e.g. `country="zz"`) — no `[part="error"]`,
151
173
  no `<img>`, no warning.
152
174
  - Rendering is async even when the peer _is_ installed: `src` resolves after an `import()` +
@@ -69,6 +69,35 @@ weekdayLabelText?: (jsWeekday:number)=>string|undefined; monthLabelText?:
69
69
  measured `clientWidth` on every draw/resize instead of the fixed `cell-size`, so the grid actually
70
70
  fills the available width; now applies to calendar mode as well as matrix mode — see gotchas for
71
71
  the default, non-`fit-to-width` behavior)
72
+ - `rowLabelWidth?: number | 'auto'` (attribute `row-label-width`, reflected) — width, in CSS px, of
73
+ the **matrix** row-label gutter, or `'auto'` to measure the widest label and size the gutter to
74
+ fit (never below the built-in `60`, never above 40% of the host width, so one long label cannot
75
+ squeeze out the cells it describes). Unset keeps the built-in `60`, so no existing chart reflows.
76
+ Independently of this, a label too wide for the resolved gutter is truncated with an ellipsis
77
+ rather than clipped mid-glyph — clipping read as a rendering fault, truncation reads as "there is
78
+ more here". `cellText` still carries the full label to the tooltip and the keyboard announcement.
79
+ A malformed value is ignored rather than collapsing the gutter. Calendar mode is unaffected; it
80
+ has its own fixed weekday gutter
81
+ - `colLabelHeight?: number | 'auto'` (attribute `col-label-height`, not reflected, `'auto'` new in
82
+ 10.1.0) — height, in CSS px, of the matrix column-label band, or `'auto'` to measure the labels
83
+ and size the band to fit them. Under a non-zero `colLabelRotation` the measurement projects each
84
+ label's width through the rotation, which is what makes a rotated axis usable without hand-tuning
85
+ a magic number. Never below the built-in `20`, and bounded above by a sanity ceiling so a
86
+ pathological label cannot produce an absurd canvas. Note this deliberately does **not** use
87
+ `rowLabelWidth`'s "40% of the host" rule: the row gutter steals width from the cells and so must
88
+ be bounded relative to them, whereas the canvas simply grows taller for this band and the cells
89
+ keep their size. Unset keeps the built-in `20`, so no existing chart reflows. A malformed value is
90
+ ignored
91
+ - `colLabelRotation?: number` (attribute `col-label-rotation`, new in 10.1.0) — rotation, in
92
+ degrees, applied to matrix column labels. Unset or `0` paints them horizontally exactly as before.
93
+ In a dense matrix the per-column width is far narrower than a typical label, so horizontal labels
94
+ collide with their neighbours; `45` or `90` is the standard remedy. Each label rotates about an
95
+ anchor at its own column's centre with the label's *end* at that anchor, so it leans back over the
96
+ columns to its left and the last column's label cannot overflow the canvas. Values outside
97
+ `[0, 90]` clamp into that range and non-finite values normalize to `0`. Pair with
98
+ `colLabelHeight="auto"` to have the band size itself to the rotated extent. **Not mirrored under
99
+ `dir="rtl"`** — both grid modes deliberately retain physical LTR geometry, so leaning one axis'
100
+ labels the other way would be incoherent
72
101
  - `maxCellSize?: number` (attribute `max-cell-size`) — ceiling, in CSS px, on the cell size
73
102
  `fitToWidth` derives from the host width, in **both** modes. Exists because `fitToWidth` divides
74
103
  the _whole_ host width across the grid, so a 5-week calendar or a 3-column matrix in a wide pane
@@ -86,6 +115,23 @@ weekdayLabelText?: (jsWeekday:number)=>string|undefined; monthLabelText?:
86
115
  color ramp via `sqrtStep()` instead of mapping linearly; in calendar mode, the default `'linear'`
87
116
  still buckets by quartile (`quartileBucket()`, unchanged), while `'sqrt'` instead compresses via the
88
117
  same `sqrtStep()` magnitude compression as matrix mode, so one heavy day doesn't wash out the rest
118
+ - `domain?: [number, number]` (attribute: false) — pins the color ramp's input domain instead of
119
+ deriving it from the data's own extremes, so two heatmaps of comparable data can share a scale
120
+ rather than each normalizing to its own min/max. A reversed pair is normalized; a degenerate or
121
+ non-finite one falls back to the derived range
122
+ - `midpoint?: number` — anchors a diverging ramp's neutral color on this value rather than at the
123
+ middle of the domain, scaling the two halves independently (`lo`→0, `midpoint`→0.5, `hi`→1). A
124
+ midpoint outside the resolved domain degrades to plain normalization rather than distorting the
125
+ ramp
126
+ - **Signed data.** Setting either `domain` or `midpoint` opts the component into signed data, where
127
+ only a **non-finite** value is no-data. With neither set (the default), a negative value is
128
+ no-data — matching the long-documented `-1` sentinel, since a matrix of counts has no meaningful
129
+ negative. Declaring a domain or midpoint is what disambiguates "a real negative" from "the
130
+ sentinel", so signed datasets render their negative half instead of dropping it. In signed mode a
131
+ structurally absent matrix cell reads as `NaN` so it stays no-data while a real `-1` beside it
132
+ renders on the ramp; in default mode an absent cell still resolves to `-1`, keeping `valueAt()`
133
+ and the `lr-cell-click` payload unchanged. `scale="sqrt"` rejects negatives in both modes — a
134
+ square root of a negative has no meaning
89
135
  - `bucketCount: number = 5` (attribute `bucket-count` — calendar mode only; non-finite values fall
90
136
  back to 5, while finite values are floored and clamped to 2–256 before the color-ramp allocation)
91
137
  - `annotations: readonly HeatmapAnnotation[] = []` (attribute: false) — `HeatmapAnnotation { row?: number;
@@ -7,8 +7,8 @@
7
7
  - **Family** `components/charts/` — see `llms/index.md` for its siblings
8
8
  - **Status** `stable` since `4.0.0` — see the maturity and deprecation policy in `llms/shared.md`
9
9
  - **Deprecations** none
10
- - **Optional peers** `chart.js`, `chartjs-plugin-datalabels`, `chartjs-plugin-zoom` — see `llms/peers.md`
11
- - **Themeable via** 15 parts, 33 custom properties — see this component's own `@csspart`/`@cssprop` list below
10
+ - **Optional peers** `chart.js`, `chartjs-plugin-annotation`, `chartjs-plugin-datalabels`, `chartjs-plugin-zoom` — see `llms/peers.md`
11
+ - **Themeable via** 16 parts, 35 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
12
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
13
13
 
14
14
  ---
@@ -25,6 +25,8 @@ Bins `values` into `bins` equal-width buckets and renders as a bar chart (extend
25
25
  - `seriesLabel: string = ''` (attribute `series-label`) — dataset label used for the
26
26
  legend/tooltip/table; empty falls back to localized "Frequency". Inherited `label` keeps its
27
27
  chart-wide accessible-name meaning.
28
+ - inherits `lr-chart`'s full surface, including `scaleType` (`scale-type`) and `annotations` —
29
+ a logarithmic frequency axis and threshold/band markers both apply to a histogram
28
30
  - `labels`/`datasets`/`type` are **derived, read-only** (installed as getter/setter pairs on the
29
31
  prototype; direct writes are silently ignored) — `labels`/`datasets` are computed from
30
32
  `values`/`bins` (memoized per instance, keyed by reference equality on `values` plus the
@@ -50,7 +52,7 @@ maxSamples?)` appends finite raw samples and optionally retains only the newest
50
52
  **Slots:** default JSON configuration script, `data-table`, `center`.
51
53
 
52
54
  **CSS parts:** `base`, `plot`, `canvas`, `legend`, `legend-item`, `legend-item-hidden`, `legend-swatch`,
53
- `reset-zoom-button`, `description`, `notices`, `data-table`, `data-truncation`, `feature-warning`, `center`, `error` (neutral visible message
55
+ `reset-zoom-button`, `description`, `notices`, `data-table`, `data-table-toggle`, `data-truncation`, `feature-warning`, `center`, `error` (neutral visible message
54
56
  rendered in place of `canvas` when the optional `chart.js` peer dependency fails to load; the
55
57
  failure transition is announced through the shared document-level light-DOM assertive sink —
56
58
  inherited from `LyraChart`, unaffected by the binning logic).
@@ -59,7 +61,8 @@ inherited from `LyraChart`, unaffected by the binning logic).
59
61
  `--lr-chart-tick-color`, `--lr-chart-legend-color`, `--lr-chart-tooltip-bg`,
60
62
  `--lr-chart-tooltip-text`, `--lr-chart-legend-item-hover-bg`,
61
63
  `--lr-chart-legend-item-active-bg`, `--lr-chart-data-table-button-hover-bg`,
62
- `--lr-chart-data-table-button-active-bg`, `--lr-chart-reset-zoom-button-hover-bg`,
64
+ `--lr-chart-data-table-button-active-bg`, `--lr-chart-data-table-toggle-hover-bg`,
65
+ `--lr-chart-data-table-toggle-active-bg`, `--lr-chart-reset-zoom-button-hover-bg`,
63
66
  `--lr-chart-reset-zoom-button-active-bg`, `--lr-chart-canvas-hover-outline-width`, and
64
67
  `--lr-chart-pattern-step`, plus `--lr-chart-legend-side-max` — inherited from `LyraChart`, identical in meaning, together with the
65
68
  mirrored `--border-color-1`,
@@ -6,7 +6,7 @@
6
6
  - **Class** `LyraIcon`, also available unregistered from `@aceshooting/lyra-ui/components/utility/icon/icon.class.js`
7
7
  - **Family** `components/utility/` — see `llms/index.md` for its siblings
8
8
  - **Status** `stable` since `4.0.0` — see the maturity and deprecation policy in `llms/shared.md`
9
- - **Deprecated property** `autoWidth` / `auto-width` since `8.0.0`; use property `canvas="auto"`; removal not before `10.0.0` — autoWidth is a boolean compatibility spelling that cannot express fixed canvas sizes; canvas covers both automatic and explicit sizing.
9
+ - **Deprecated property** `autoWidth` / `auto-width` since `8.0.0`; use property `canvas="auto"`; removal not before `10.0.0` — autoWidth is a boolean compatibility spelling that cannot express fixed canvas sizes; canvas covers both automatic and explicit sizing. That version is a policy floor, not a plan: `wa-icon` still publishes its own deprecated `auto-width` attribute, so this alias is removed only when upstream's is.
10
10
  - **Optional peers** `dompurify` — see `llms/peers.md`
11
11
  - **Themeable via** 4 parts, 45 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
12
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
@@ -21,7 +21,8 @@ It intentionally does not fetch remote references or validate values.
21
21
 
22
22
  **Properties:** clone-owned, bounded, frozen `schema: JsonSchemaNode | null = null` and
23
23
  `issues: readonly SchemaValidationIssue[] = []` (attribute: false); reassign a new schema record or
24
- issue array after changes. `selectedPath: string = ''` (attribute `selected-path`);
24
+ issue array after changes. `selectedPath: string | null = null` (attribute `selected-path`)
25
+ `null` means no selection, while the empty string is the valid JSON Pointer for the schema root;
25
26
  `maxDepth: number = 20` (attribute `max-depth`, clamped to 100); `label: string = ''`.
26
27
 
27
28
  **Exported types:** `JsonSchemaNode` covers `$ref`, type/title/description, properties/items,
@@ -79,9 +79,14 @@ same self-toggle-then-emit contract `lr-graph-legend` uses, so every feature wor
79
79
  - `lr-hidden-types-change` (`detail: { hiddenTypes: string[] }`) — a node type's visibility changed
80
80
  via the composed legend. Follows the same self-toggle-then-emit contract as `lr-pin-change`/
81
81
  `lr-search-change`, so reassigning back is optional.
82
- - `lr-search-change` (`detail: { searchQuery: string }`) — the user typed in the toolbar's search
83
- box. Already self-applied before emitting, so reassigning back is optional; a direct host
84
- assignment to `searchQuery` stays silent.
82
+ - `lr-search-change` (`detail: { query: string; matchCount: number; matchCountExact: boolean }`) —
83
+ the user typed in the toolbar's search box. `query` is the canonical `LyraSearchChangeDetail`
84
+ field name. `matchCount` is the same live node-filter total the result list and its live-region
85
+ announcement already compute (`0` while the query is empty). `matchCountExact` is always `true` —
86
+ this component's node filter has no truncating ceiling, unlike a paginated text-search viewer.
87
+ There is no `activeIndex`: this is a live node filter, not a cursor-based search. The component
88
+ has already applied the query to its own `searchQuery` property before emitting, so reassigning
89
+ it back is optional and a direct host assignment stays silent.
85
90
  - Bubbling straight through from composed children, unmodified: `lr-node-click`
86
91
  (`detail: { nodeId, x, y }`), `lr-link-click` (`detail: { sourceNodeId, targetNodeId, linkId? }`), `lr-community-click`
87
92
  (`detail: { communityId }`), `lr-node-expand` (`detail: { nodeId }`, from `lr-graph` and/or `lr-neighbor-list`),
@@ -6,7 +6,7 @@
6
6
  - **Class** `LyraKnownDate`, also available unregistered from `@aceshooting/lyra-ui/components/utility/known-date/known-date.class.js`
7
7
  - **Family** `components/utility/` — see `llms/index.md` for its siblings
8
8
  - **Status** `stable` since `4.0.0` — see the maturity and deprecation policy in `llms/shared.md`
9
- - **Deprecated part** `label` since `8.0.0`; use part `::part(form-control-label)`; removal not before `10.0.0` — The form-control-label part matches the shared form-control vocabulary; label remains on that same node during the compatibility window.
9
+ - **Deprecated part** `label` since `8.0.0`; use part `::part(form-control-label)`; removal not before `10.0.0` — The form-control-label part matches the shared form-control vocabulary; label remains on that same node during the compatibility window. That version is a policy floor, not a plan: `wa-known-date` still publishes its own deprecated `label` part, so this alias is removed only when upstream's is.
10
10
  - **Optional peers** none
11
11
  - **Themeable via** 17 parts, 13 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
12
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
@@ -119,7 +119,9 @@ assigned nodes update the announcement without requiring the wrapper component t
119
119
 
120
120
  The `label` part alias was deprecated in 8.0.0 in favor of the shared form vocabulary
121
121
  `form-control-label`. Both names remain on the same node during the compatibility window; use
122
- `::part(form-control-label)` in new CSS. The alias will not be removed before 10.0.0.
122
+ `::part(form-control-label)` in new CSS. Removal is not scheduled: Web Awesome still publishes its
123
+ own deprecated `label` part on `<wa-known-date>`, and a mirrored tag owes its whole upstream
124
+ surface, so the alias goes only when upstream's does.
123
125
 
124
126
  **The required marker.** The `*` the legend grows while `required` is the library's shared
125
127
  required-field marker, and it takes the same three consumer-settable properties every other
@@ -7,8 +7,8 @@
7
7
  - **Family** `components/charts/` — see `llms/index.md` for its siblings
8
8
  - **Status** `stable` since `4.0.0` — see the maturity and deprecation policy in `llms/shared.md`
9
9
  - **Deprecations** none
10
- - **Optional peers** `chart.js`, `chartjs-plugin-datalabels`, `chartjs-plugin-zoom` — see `llms/peers.md`
11
- - **Themeable via** 15 parts, 33 custom properties — see this component's own `@csspart`/`@cssprop` list below
10
+ - **Optional peers** `chart.js`, `chartjs-plugin-annotation`, `chartjs-plugin-datalabels`, `chartjs-plugin-zoom` — see `llms/peers.md`
11
+ - **Themeable via** 16 parts, 35 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
12
  - **Documented with** `lr-bar-chart`, `lr-pie-chart`, `lr-doughnut-chart`, `lr-radar-chart`, `lr-polar-area-chart`, `lr-bubble-chart`, `lr-scatter-chart` (same section below)
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
@@ -25,7 +25,8 @@ and behavior there. **See `llms/components/lr-chart.md` for the details, code ex
25
25
  of every entry in these lists.**
26
26
 
27
27
  **Properties:** `description`, `grid`, `indexAxis` (`index-axis`), `label`, `hiddenDatasets`, `legendPosition`
28
- (`legend-position`), `max`, `min`, `plugins`, `stacked`, `withoutAnimation` (`without-animation`),
28
+ (`legend-position`), `max`, `min`, `plugins`, `scaleType` (`scale-type`), `annotations`,
29
+ `stacked`, `withoutAnimation` (`without-animation`),
29
30
  `withoutLegend` (`without-legend`), `withoutTooltip` (`without-tooltip`), `xLabel` (`x-label`),
30
31
  `yLabel` (`y-label`), plus additive `labels`, `datasets`, `valueFormatter`, `formatter`, `area`, `zoom`,
31
32
  `height`, `y2Label` (`y2-label`), `beginAtZero` (`begin-at-zero`), `dataLabels`
@@ -43,7 +44,7 @@ complete `hiddenDatasets` snapshot).
43
44
  **Slots:** default JSON configuration script, `data-table`, `center`.
44
45
 
45
46
  **CSS parts:** `base`, `plot`, `canvas`, `legend`, `legend-item`, `legend-item-hidden`, `legend-swatch`,
46
- `reset-zoom-button`, `description`, `notices`, `data-table`, `data-truncation`, `feature-warning`, `center`, `error` (neutral visible message
47
+ `reset-zoom-button`, `description`, `notices`, `data-table`, `data-table-toggle`, `data-truncation`, `feature-warning`, `center`, `error` (neutral visible message
47
48
  rendered in place of `canvas` when the optional `chart.js` peer dependency fails to load; the
48
49
  failure transition is announced through the shared document-level light-DOM assertive sink — see
49
50
  `llms/components/lr-chart.md`).
@@ -52,7 +53,8 @@ failure transition is announced through the shared document-level light-DOM asse
52
53
  `--lr-chart-tick-color`, `--lr-chart-legend-color`, `--lr-chart-tooltip-bg`,
53
54
  `--lr-chart-tooltip-text`, `--lr-chart-legend-item-hover-bg`,
54
55
  `--lr-chart-legend-item-active-bg`, `--lr-chart-data-table-button-hover-bg`,
55
- `--lr-chart-data-table-button-active-bg`, `--lr-chart-reset-zoom-button-hover-bg`,
56
+ `--lr-chart-data-table-button-active-bg`, `--lr-chart-data-table-toggle-hover-bg`,
57
+ `--lr-chart-data-table-toggle-active-bg`, `--lr-chart-reset-zoom-button-hover-bg`,
56
58
  `--lr-chart-reset-zoom-button-active-bg`, `--lr-chart-canvas-hover-outline-width`, and
57
59
  `--lr-chart-pattern-step`, plus `--lr-chart-legend-side-max` — all inherited from `LyraChart`, identical in meaning and default (see
58
60
  `lr-chart` above); each of the eight variants below reads the same set, so one rule retunes them
@@ -66,7 +68,7 @@ together. The mirrored hooks are `--border-color-1`,
66
68
  `zoom` is set, and `chartjs-plugin-datalabels` only once `data-labels`/`stack-totals` is set.
67
69
 
68
70
  ```html
69
- <lr-bar-chart legend></lr-bar-chart>
71
+ <lr-bar-chart></lr-bar-chart>
70
72
  <lr-pie-chart></lr-pie-chart>
71
73
  <script>
72
74
  document.querySelector('lr-bar-chart').labels = ['A', 'B'];
@@ -7,7 +7,7 @@
7
7
  - **Family** `components/charts/` — see `llms/index.md` for its siblings
8
8
  - **Status** `stable` since `4.0.0` — see the maturity and deprecation policy in `llms/shared.md`
9
9
  - **Deprecations** none
10
- - **Optional peers** `chart.js`, `chartjs-plugin-datalabels`, `chartjs-plugin-zoom` — see `llms/peers.md`
10
+ - **Optional peers** `chart.js`, `chartjs-plugin-annotation`, `chartjs-plugin-datalabels`, `chartjs-plugin-zoom` — see `llms/peers.md`
11
11
  - **Themeable via** 17 parts, 16 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
12
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
13
13
 
@@ -103,11 +103,21 @@ passthrough). Not a subclass of `LyraChart`.
103
103
  - `valueAxisGutter?: number` (attribute `value-axis-gutter`) — value-axis gutter width.
104
104
  - `barGapRatio?: number` (attribute `bar-gap-ratio`) — overrides the internal 0.2 `BAR_GROUP_GAP`
105
105
  fraction of a category slot left as a gap between categories. Unset keeps the fixed 0.2.
106
- - `scale: 'linear' | 'sqrt' = 'linear'` (bar type only) — `'sqrt'` maps a bar's value to height via
107
- `Math.sqrt(value / domainMax)` instead of the standard linear `niceDomain` fraction (mirroring
108
- `lr-heatmap`'s matrix-mode `sqrt` scale), so a skewed dataset's smaller bars aren't washed out
109
- by one dominant value; gridlines/tick labels stay on the linear domain either way, and `type="line"`
110
- ignores it entirely.
106
+ - `scale: 'linear' | 'sqrt' | 'logarithmic' = 'linear'` — `'sqrt'` (**bar type only**) maps a bar's
107
+ value to height via `Math.sqrt(value / domainMax)` instead of the standard linear `niceDomain`
108
+ fraction (mirroring `lr-heatmap`'s matrix-mode `sqrt` scale), so a skewed dataset's smaller bars
109
+ aren't washed out by one dominant value; under `'sqrt'` gridlines/tick labels stay on the linear
110
+ domain and `type="line"` ignores it entirely.
111
+ `'logarithmic'` is the base-10 value axis for data spanning several orders of magnitude, where a
112
+ linear axis collapses everything below the maximum into the baseline. Unlike `'sqrt'` it applies
113
+ to **bars, line points and gridlines alike**, since a log axis whose gridlines stayed linear
114
+ would misrepresent the plot. Its lower bound is the smallest *positive* datum rather than the
115
+ linear `lo`: `beginAtZero` defaults to true, so `lo` is normally `0`, which has no logarithm —
116
+ deriving the floor from the data is what makes a 1…1000 series span three even decades instead of
117
+ collapsing onto one. Values at or below that floor (including zero and negatives, which have no
118
+ real logarithm) pin to the axis floor rather than producing `-Infinity` geometry, and a degenerate
119
+ domain falls back to the linear fraction. `lr-chart`'s own `scaleType` is the Chart.js-backed
120
+ equivalent for the full charts.
111
121
  - `withoutValueAxis: boolean = false` (attribute `without-value-axis`) — suppresses gridlines and
112
122
  value-axis tick labels; x-axis category labels remain.
113
123
  - `selectedIndices: readonly number[] = []` (attribute: false) — applies to every interactive data mark for
@@ -8,7 +8,7 @@
8
8
  - **Status** `stable` since `4.0.0` — see the maturity and deprecation policy in `llms/shared.md`
9
9
  - **Deprecations** none
10
10
  - **Optional peers** `maplibre-gl` — see `llms/peers.md`
11
- - **Themeable via** 12 parts, 5 custom properties — see this component's own `@csspart`/`@cssprop` list below
11
+ - **Themeable via** 15 parts, 5 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
12
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
13
13
 
14
14
  ---
@@ -31,6 +31,22 @@ operations. Its runtime value is the underlying MapLibre map.
31
31
  style-required failure and makes no tile/style request. Assign a hosted vector/raster style from
32
32
  a provider whose terms fit your application, or an explicitly network-silent style for local
33
33
  geometry.
34
+ - `legendGradient: readonly (readonly [number, string])[] = []` (attribute: false, type
35
+ `LyraMapLegendGradientStop[]`) — renders the legend as a **continuous** gradient bar with endpoint
36
+ captions instead of (or alongside) the discrete `legend` swatches, which is the standard key for a
37
+ choropleth whose `interpolate` fill is itself a continuous ramp. Takes the same `[value, color]`
38
+ stop shape as `choropleth.stops`, so the usual assignment is `map.legendGradient =
39
+ myChoropleth.stops` and the key cannot drift from the layer it describes. Stops are sorted
40
+ ascending, bounded to 64, and filtered to finite values carrying a CSS-parsable color; fewer than
41
+ two usable stops render no bar at all, since a one-stop "gradient" is a flat block that describes
42
+ nothing. Each stop sits at its true proportion of the value range, so the bar shows the ramp the
43
+ expression actually produces rather than evenly spacing unevenly-spaced values. Part names
44
+ (`legend-gradient`, `legend-lo`, `legend-hi`) mirror `lr-heatmap`'s gradient legend, and the bar
45
+ is `aria-hidden`/`inert` with the captions carrying the meaning. Mirrors under RTL
46
+ - `legendGradientLoLabel: string | null = null` (attribute `legend-gradient-lo-label`),
47
+ `legendGradientHiLabel: string | null = null` (attribute `legend-gradient-hi-label`) — override
48
+ the endpoint captions, which otherwise default to the lowest/highest stop value in the component's
49
+ own locale-aware numeric formatting
34
50
  - `legend: readonly LyraMapLegendEntry[] = []` (attribute: false) — immutable defensive snapshots
35
51
  of `LyraMapLegendEntry { readonly color: string; readonly label: string; readonly pattern:
36
52
  LyraMapLegendPattern }`, where `LyraMapLegendPattern` is `'solid' | 'diagonal' | 'dots' |
@@ -42,10 +58,27 @@ omittedCount, truncatedLabelCount, truncated }` result for the latest assignment
42
58
  projection renders a localized visible `1–N of M items` summary rather than silently claiming
43
59
  the bounded rows are complete.
44
60
  - `choropleth?: LyraMapChoroplethLayer` (attribute: false) — `LyraMapChoroplethLayer { sourceId:
45
- string; geojson: GeoJSON.FeatureCollection; field: string; stops: [number, string][] }` (interpolated
61
+ string; geojson: GeoJSON.FeatureCollection; field: string; stops: [number, string][]; interpolation?:
62
+ 'linear' | 'logarithmic' | 'step'; stepBaseColor?: string }` (interpolated
46
63
  fill-color expression from `field`'s value against `stops`; `stops` must contain at least one
47
64
  `[value, color]` pair — an empty array is ignored, leaving whatever fill layer already exists, if
48
- any, untouched, rather than being applied)
65
+ any, untouched, rather than being applied).
66
+ `interpolation` (type `LyraMapChoroplethInterpolation`, default `'linear'`) chooses how the colour
67
+ is interpolated between stops. `'logarithmic'` compresses the ramp, which is what a heavy-tailed
68
+ quantity — price, population, income — needs: on a linear ramp every value below the maximum falls
69
+ into the first colour band, so the map reads as one flat colour plus a couple of outliers. It
70
+ emits maplibre's own `['interpolate', ['exponential', 0.25], …]`, exposing an existing capability
71
+ rather than adding one (maplibre has no `['log']` interpolation type; a sub-1 exponential base is
72
+ the documented way to weight a ramp toward the low end). **`stops` stay in the data's own units
73
+ under either mode**, so the legend keeps reading in real values instead of log units — no
74
+ pre-transforming to log10 and hand-relabelling the legend back.
75
+ `'step'` (new in 10.1.0) emits maplibre's `['step', …]` instead of `['interpolate', …]`, giving
76
+ **discrete bands rather than a continuous ramp**. Use it whenever the legend advertises a fixed
77
+ set of ranges with one swatch each: a ramp would put colours on the map that appear nowhere in the
78
+ legend, and would render two regions in the same advertised band as visibly different colours
79
+ (`legendGradient` covers the opposite case, a gradient legend). `stepBaseColor` is the colour for
80
+ values below the first threshold, which `['step', …]` requires; it defaults to the first stop's own
81
+ colour, so a legend whose first band starts at the data minimum needs no extra configuration
49
82
  - `markers: LyraMapMarker[] = []` (attribute: false) — `LyraMapMarker { id?: string; lngLat:
50
83
  [number, number]; color?: string; label?: string; unsafeHtml?: string }`; an explicit `id` is
51
84
  trimmed and must be nonempty, and the first marker for an explicit ID wins. Markers are reconciled
@@ -67,11 +100,21 @@ string; geojson: GeoJSON.FeatureCollection; field: string; stops: [number, strin
67
100
  - `dataLayers: LyraMapGeoJsonDataLayer[] = []` (attribute: false) —
68
101
  `LyraMapGeoJsonDataLayer { sourceId: string; geojson: GeoJSON.Feature |
69
102
  GeoJSON.FeatureCollection; tone?: 'accent' | 'success' | 'warning' |
70
- 'danger' | 'neutral' }`. `sourceId` is trimmed and must be nonempty; the first layer for a
103
+ 'danger' | 'neutral'; color?: string; strokeColor?: string }`. `sourceId` is trimmed and must be nonempty; the first layer for a
71
104
  `sourceId` wins and blank or later duplicate records are ignored. Each retained entry adds one
72
105
  GeoJSON source plus three geometry-filtered layers
73
106
  (fill, line, and circle, so a mixed `FeatureCollection` renders correctly), colored from the
74
- matching `--lr-color-*` token (`tone` defaults to `'accent'` → `--lr-color-brand`). The component
107
+ matching `--lr-color-*` token (`tone` defaults to `'accent'` → `--lr-color-brand`).
108
+ `color` and `strokeColor` (both new in 10.1.0) override that per surface — `color` paints the
109
+ polygon fill, `strokeColor` the line and circle layers, falling back to `color` and then to `tone`.
110
+ They are separable because a fill and its outline want opposite things on a
111
+ choropleth-plus-overlay map, and the difference is measurable rather than aesthetic: the fill
112
+ competes for area with the choropleth beside it and has to sit quiet, while the 1px outline
113
+ competes with nothing and is the only thing keeping a no-data region's shape readable once the
114
+ fill is that faint. Deriving one from the other measured 1.41:1 against a light basemap — under
115
+ WCAG 1.4.11's 3:1 floor for graphical objects. A `var(--lr-…)` reference is resolved against the
116
+ host before it reaches MapLibre, which paints to a WebGL canvas and never sees the CSS cascade.
117
+ The component
75
118
  assigns collision-free private MapLibre ids for those resources: `sourceId` is the stable
76
119
  declarative reconciliation key, **not** an id to retrieve from `map`. This prevents a data layer
77
120
  from overwriting or removing a same-named source supplied by `mapStyle`. Independent of
@@ -80,6 +123,37 @@ GeoJSON.FeatureCollection; tone?: 'accent' | 'success' | 'warning' |
80
123
  persists across a `dataLayers` reassignment gets its GeoJSON updated in place (`setData()`), one
81
124
  that's dropped has its private source/layers removed, and a genuinely new `sourceId` gets new
82
125
  resources — nothing leaks on removal, style change, or disconnect.
126
+ - `maxBounds: LyraMapBounds | null = null` (attribute: false) — box the map may not pan outside,
127
+ `[[west, south], [east, north]]`. Prefer it over calling `map.setMaxBounds()` through the `.map`
128
+ escape hatch: constraining the camera can wedge maplibre-gl at a sub-1 fractional zoom in a wide
129
+ container, leaving `getZoom()` returning `null` permanently, every frame throwing from inside the
130
+ peer's own matrix math, and the canvas never painting again — a blank map, with nothing thrown at
131
+ the call site to attribute it to. This property applies the same call, then reads the camera back
132
+ and reverts (restoring zoom and centre) if it did not survive, so the worst case is an
133
+ unconstrained map plus a dev-mode warning. A malformed box is rejected rather than clamped
134
+
135
+ **Choropleth and `dataLayers` updates are diffed before they reach the peer.** `setData()`
136
+ unconditionally re-tiles and repaints an entire source, which is invisible on a static map and
137
+ expensive on an animated one. When an update changes only feature *properties* — the values driving
138
+ the colour ramp — the component emits maplibre-gl's incremental `updateData()` instead. The fast
139
+ path is deliberately strict, and needs all of: the same feature count, a `string`/`number` `id` on
140
+ every feature in the same order, and geometry that is the **same object** as last time (not merely
141
+ deep-equal). Structurally comparing polygon rings would cost about what the re-tile costs, and a
142
+ false positive would paint stale geometry. Reuse your geometry objects across frames — the
143
+ efficient way to build an animation anyway — and the fast path applies; otherwise it falls back to
144
+ `setData()` with no change in behaviour. Peers predating `updateData()` always take the old path.
145
+
146
+ **Feature properties are tiled, and therefore bounded in numeric magnitude.** MapLibre GL tiles
147
+ every GeoJSON source through a worker into a protobuf vector tile, so a property carrying a huge
148
+ integer throws *inside that worker* — "Given varint doesn't fit into 10 bytes". That throw is not
149
+ catchable by your app and not a rejected promise; it reaches you only as an opaque message on
150
+ `lr-map`'s own error handler, while the rest of the layer still paints, so one bad feature in a
151
+ large collection is invisible until someone walks the data by hand. Both `choropleth.geojson` and
152
+ `dataLayers[].geojson` are now pre-scanned (first 10,000 features) and any numeric property beyond
153
+ `Number.MAX_SAFE_INTEGER` draws a dev-mode warning naming the feature and the property. Carry a
154
+ reduced figure in the feature — a log, a bucket, an index — and keep the exact value in your own
155
+ payload beside the map.
156
+
83
157
  - `label: string = ''` — purpose-specific accessible name for MapLibre's actual focusable canvas.
84
158
  A nonempty host `aria-label` remains on the host and is not duplicated onto the canvas; the canvas
85
159
  uses `label` or the localized map name. An explicitly empty host `aria-label` is preserved as an
@@ -102,13 +176,20 @@ shared `maplibre-gl` import without constructing a map or allocating a WebGL con
102
176
  an element.
103
177
 
104
178
  **Events:** `lr-map-load` (fired once, after the underlying map's own `'load'`), `lr-map-click`
105
- (frozen `detail: { readonly lngLat: readonly [lng, lat], readonly feature? }`; the tuple and any
106
- hit GeoJSON feature are detached and recursively frozen feature is only populated if a
107
- choropleth fill layer exists and was hit)
179
+ (frozen `detail: { readonly lngLat: readonly [lng, lat], readonly feature?, readonly origin?,
180
+ readonly sourceId? }`; the tuple and any hit GeoJSON feature are detached and recursively frozen).
181
+ `feature` resolves against the choropleth fill layer **and** every applied `dataLayers`
182
+ fill/line/circle layer, topmost first — so a shape painted through `dataLayers` is identifiable
183
+ instead of being indistinguishable from empty space. `origin` is `'choropleth'` or `'data-layer'`,
184
+ and `sourceId` carries the authored `dataLayers[].sourceId` for a data-layer hit; both are
185
+ `undefined` whenever `feature` is
108
186
 
109
- **Slots:** none.
187
+ **Slots:** `legend` — custom legend content, rendered inside the legend panel's own layout so it
188
+ stays positioned with the map instead of floating beside it. Supplying it opens the panel even
189
+ when `legend` and `legendGradient` are both empty.
110
190
 
111
- **CSS parts:** `base`, `container`, `legend`, `legend-swatch`, `legend-limit`, `marker`, `popup`,
191
+ **CSS parts:** `base`, `container`, `legend`, `legend-swatch`, `legend-gradient`, `legend-lo`,
192
+ `legend-hi`, `legend-limit`, `marker`, `popup`,
112
193
  `popup-content`, `popup-close-button`, `attribution`, `attribution-toggle`, `error`.
113
194
  `legend` is a localized `role="group"` containing a real list associated to the map canvas with
114
195
  `aria-describedby`; each entry is a `listitem`, decorative swatches are inert/accessibility-hidden,
@@ -36,8 +36,9 @@ support (`highlights`, `activeHighlightId`, `scrollToAnchor()`, the `lr-highligh
36
36
  section above for the full write-up of shared behavior.
37
37
 
38
38
  **Properties:** `content: string = ''`, `tabSize: number = 4` (attribute `tab-size`) — the same
39
- finite-integer-guarded leading-indentation expansion used by `<lr-markdown>`; values outside 1–32
40
- or non-finite values fall back to `4`, independently of rendered code's
39
+ finite-integer-guarded leading-indentation expansion used by `<lr-markdown>`; finite values are
40
+ clamped to `[1, 32]` (`0` becomes `1`, `33` becomes `32`), and only non-finite values (`NaN`,
41
+ `Infinity`) fall back to `4`, independently of rendered code's
41
42
  `--lr-code-block-tab-size`; `marked: LyraMarkedParser | undefined` (readonly, no attribute) — this
42
43
  instance's isolated peer-neutral configurable parser; `htmlMode: 'sanitize' | 'escape' | 'trusted' =
43
44
  'sanitize'` (attribute `html-mode`), `gfm: boolean = true`, `linkTarget: string | null = '_blank'` (attribute
@@ -30,13 +30,18 @@ final.
30
30
  - `mimeType: string = ''` (attribute `mime-type`) — drives auto-detection when `kind` is unset.
31
31
  - `filename: string = ''` — shown in the file-chip fallback, used as the download link's suggested
32
32
  filename, and folded into the accessible name.
33
- - `alt: string = ''` — alt text for the image case (and reused as a video label fallback). Falls
34
- back to `filename`, then a generic per-kind description.
35
- - `accessibleLabel: string = ''` (attribute `aria-label`) a declarative attribute names the host
36
- as a whole while its nested button/link keeps a purpose-specific localized action name. A
37
- property-only assignment can override the nested action when no host label is present. Image alt
38
- text and the native video's own purpose label remain independent; an explicitly empty host still
39
- leaves every interactive descendant named.
33
+ - `alt?: string` — alt text for the image case (and reused as a video label fallback). Unset falls
34
+ back to `filename`, then a generic per-kind description. An explicit `alt=""` survives to the
35
+ rendered `<img alt="">`, which is the HTML idiom for a decorative image same contract as
36
+ `<lr-image-viewer>` and `<lr-document-preview>`. The `<video>` case is deliberately outside that
37
+ carve-out: an empty `alt` there still falls through to `filename`/the generic description, because
38
+ an empty accessible name would leave an interactive player unnamed rather than mark it decorative.
39
+ - `accessibleLabel: string | null = null` (attribute `aria-label`) — a declarative attribute names
40
+ the host as a whole while its nested button/link keeps a purpose-specific localized action name. A
41
+ property-only assignment can override the nested action when no host label is present. An explicit
42
+ empty string behaves like the unset `null` default — both fall through to the generated
43
+ purpose-specific name. Image alt text and the native video's own purpose label remain independent;
44
+ an explicitly empty host still leaves every interactive descendant named.
40
45
  - `maxHeight: string = ''` (attribute `max-height`) — a CSS length (e.g. `"16rem"`); once set,
41
46
  overrides the `--lr-media-card-max-height` custom property for this instance only (applied
42
47
  inline on `[part="base"]`, so it reliably wins over a `:host{}`-declared default from outside the
@@ -102,12 +107,23 @@ sizing), `--lr-focus-ring-*`, `--lr-transition-fast`.
102
107
  **Optional peer deps:** none.
103
108
 
104
109
  ```html
105
- <lr-media-card kind="image" src="https://example.com/photo.jpg" alt="Screenshot" filename="photo.jpg"
106
- @lr-media-open=${(e) => openLightbox(e.detail.src)}
107
- ></lr-media-card>
108
- <lr-media-card kind="file" src="https://example.com/report.pdf" filename="report.pdf"
109
- @lr-before-media-download=${(e) => shouldUseNativeDownload || e.preventDefault()}
110
+ <lr-media-card
111
+ id="image-card"
112
+ kind="image"
113
+ src="https://example.com/photo.jpg"
114
+ alt="Screenshot"
115
+ filename="photo.jpg"
110
116
  ></lr-media-card>
117
+ <lr-media-card id="file-card" kind="file" src="https://example.com/report.pdf" filename="report.pdf">
118
+ </lr-media-card>
119
+ <script type="module">
120
+ document
121
+ .getElementById("image-card")
122
+ .addEventListener("lr-media-open", (e) => openLightbox(e.detail.src));
123
+ document
124
+ .getElementById("file-card")
125
+ .addEventListener("lr-before-media-download", (e) => shouldUseNativeDownload || e.preventDefault());
126
+ </script>
111
127
  ```
112
128
 
113
129
  **Safe-URL checking.** `src` is validated by internal sink-specific helpers before it's
@@ -74,7 +74,8 @@ import "@aceshooting/lyra-ui/components/conversation/message-parts/message-parts
74
74
  - `lr-copy` event — Passthrough from rendered JSON content.
75
75
  - `lr-highlight-activate` event — Passthrough from rendered Markdown.
76
76
  - `lr-link-click` event — Passthrough from rendered Markdown.
77
- - `lr-preview-request` event — Cancelable passthrough from a rendered attachment.
77
+ - `lr-preview-request` event — Passthrough from a rendered attachment. Not cancelable as of 10.0.0:
78
+ `<lr-attachment-chip>` dropped the flag, since it owns no preview default action to veto.
78
79
  - `lr-remove` event — Passthrough from a rendered attachment.
79
80
  - `lr-render-error` event — Passthrough from rendered Markdown, tool-result, or widget content.
80
81
  - `lr-retry` event — Passthrough from a rendered attachment.
@@ -225,19 +225,18 @@ shared tokens — `--lr-space-xs/-s`, `--lr-color-border/-surface/-brand/-brand-
225
225
  **Optional peer deps:** none.
226
226
 
227
227
  ```html
228
- <lr-model-select
229
- provider="openai"
230
- .catalog=${[
231
- { id: 'gpt-4o', label: 'GPT-4o', icon: '✦' },
232
- { id: 'gpt-4o-mini', label: 'GPT-4o mini' },
233
- ]}
234
- value="gpt-4o"
235
- placeholder="Choose a model…"
236
- @lr-change=${(e) => setModel(e.detail.value, e.detail.inCatalog)}
237
- ></lr-model-select>
228
+ <lr-model-select provider="openai" value="gpt-4o" placeholder="Choose a model…"></lr-model-select>
238
229
 
239
230
  <!-- No fixed catalog yet: falls back to free-text entry -->
240
231
  <lr-model-select provider="ollama" placeholder="Type a model id…" allow-custom></lr-model-select>
232
+ <script type="module">
233
+ const select = document.querySelector("lr-model-select");
234
+ select.catalog = [
235
+ { id: "gpt-4o", label: "GPT-4o", icon: "✦" },
236
+ { id: "gpt-4o-mini", label: "GPT-4o mini" },
237
+ ];
238
+ select.addEventListener("lr-change", (e) => setModel(e.detail.value, e.detail.inCatalog));
239
+ </script>
241
240
  ```
242
241
 
243
242
  **Known gotchas:**