@aceshooting/lyra-ui 29.0.2 → 29.1.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 (521) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +19 -26
  3. package/design-tokens.json +1 -1
  4. package/dist/cli/migrate-wa.mjs +2 -0
  5. package/dist/components/agent-tools/activity-feed/activity-feed.class.d.ts +5 -3
  6. package/dist/components/agent-tools/activity-feed/activity-feed.class.js +4 -3
  7. package/dist/components/agent-tools/activity-feed/activity-feed.styles.js +1 -1
  8. package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +21 -5
  9. package/dist/components/agent-tools/agent-trace/agent-trace.class.js +14 -11
  10. package/dist/components/agent-tools/agent-trace/agent-trace.styles.js +1 -1
  11. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +2 -2
  12. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.d.ts +34 -7
  13. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +25 -11
  14. package/dist/components/agent-tools/eval-result/eval-result-source.js +1 -0
  15. package/dist/components/agent-tools/eval-result/eval-result.class.d.ts +31 -11
  16. package/dist/components/agent-tools/eval-result/eval-result.class.js +29 -15
  17. package/dist/components/agent-tools/eval-result/eval-result.styles.js +1 -1
  18. package/dist/components/agent-tools/eval-result/eval-run-result.d.ts +10 -0
  19. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.d.ts +26 -5
  20. package/dist/components/agent-tools/span-waterfall/span-waterfall.class.js +16 -6
  21. package/dist/components/agent-tools/span-waterfall/span-waterfall.d.ts +1 -1
  22. package/dist/components/agent-tools/span-waterfall/span-waterfall.js +1 -1
  23. package/dist/components/agent-tools/span-waterfall/span-waterfall.styles.js +1 -1
  24. package/dist/components/agent-tools/task-list/task-list.class.d.ts +29 -6
  25. package/dist/components/agent-tools/task-list/task-list.class.js +13 -7
  26. package/dist/components/agent-tools/task-list/task-list.d.ts +1 -1
  27. package/dist/components/agent-tools/task-list/task-list.js +1 -1
  28. package/dist/components/agent-tools/task-list/task-list.styles.js +1 -1
  29. package/dist/components/agent-tools/terminal/terminal.class.d.ts +9 -5
  30. package/dist/components/agent-tools/terminal/terminal.class.js +8 -8
  31. package/dist/components/agent-tools/test-results/test-results.class.d.ts +16 -4
  32. package/dist/components/agent-tools/test-results/test-results.class.js +15 -6
  33. package/dist/components/agent-tools/test-results/test-results.d.ts +1 -0
  34. package/dist/components/agent-tools/test-results/test-results.js +1 -1
  35. package/dist/components/agent-tools/test-results/test-results.styles.js +1 -1
  36. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +7 -4
  37. package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +2 -1
  38. package/dist/components/agent-tools/trace-tree/span-projection.js +1 -0
  39. package/dist/components/agent-tools/trace-tree/span-shared.d.ts +29 -0
  40. package/dist/components/agent-tools/trace-tree/span-shared.js +1 -0
  41. package/dist/components/agent-tools/trace-tree/span.d.ts +5 -35
  42. package/dist/components/agent-tools/trace-tree/span.js +1 -1
  43. package/dist/components/agent-tools/trace-tree/trace-tree.class.d.ts +27 -5
  44. package/dist/components/agent-tools/trace-tree/trace-tree.class.js +19 -9
  45. package/dist/components/agent-tools/trace-tree/trace-tree.d.ts +1 -1
  46. package/dist/components/agent-tools/trace-tree/trace-tree.js +1 -1
  47. package/dist/components/agent-tools/trace-tree/trace-tree.styles.js +1 -1
  48. package/dist/components/charts/chart/bar-chart.class.d.ts +5 -1
  49. package/dist/components/charts/chart/box-plot.class.d.ts +2 -2
  50. package/dist/components/charts/chart/box-plot.class.js +3 -3
  51. package/dist/components/charts/chart/bubble-chart.class.d.ts +5 -1
  52. package/dist/components/charts/chart/chart-prepared-data.d.ts +9 -0
  53. package/dist/components/charts/chart/chart-prepared-data.js +1 -0
  54. package/dist/components/charts/chart/chart-spatial-data.js +2 -0
  55. package/dist/components/charts/chart/chart-sync.js +1 -1
  56. package/dist/components/charts/chart/chart-table-sampling.js +1 -1
  57. package/dist/components/charts/chart/chart.class.d.ts +56 -6
  58. package/dist/components/charts/chart/chart.class.js +18 -8
  59. package/dist/components/charts/chart/chart.styles.js +1 -1
  60. package/dist/components/charts/chart/doughnut-chart.class.d.ts +5 -1
  61. package/dist/components/charts/chart/histogram-buckets.d.ts +1 -1
  62. package/dist/components/charts/chart/histogram-buckets.js +1 -1
  63. package/dist/components/charts/chart/histogram.class.d.ts +19 -4
  64. package/dist/components/charts/chart/histogram.class.js +1 -1
  65. package/dist/components/charts/chart/line-chart.class.d.ts +5 -1
  66. package/dist/components/charts/chart/lite-chart.class.d.ts +51 -11
  67. package/dist/components/charts/chart/lite-chart.class.js +33 -27
  68. package/dist/components/charts/chart/lite-chart.styles.js +1 -1
  69. package/dist/components/charts/chart/pie-chart.class.d.ts +5 -1
  70. package/dist/components/charts/chart/polar-area-chart.class.d.ts +5 -1
  71. package/dist/components/charts/chart/radar-chart.class.d.ts +5 -1
  72. package/dist/components/charts/chart/scatter-chart.class.d.ts +5 -1
  73. package/dist/components/conversation/agent-workspace/agent-workspace.class.d.ts +6 -3
  74. package/dist/components/conversation/agent-workspace/agent-workspace.class.js +6 -5
  75. package/dist/components/conversation/agent-workspace/agent-workspace.styles.js +1 -1
  76. package/dist/components/conversation/chat-viewport/chat-viewport.class.d.ts +8 -0
  77. package/dist/components/conversation/chat-viewport/chat-viewport.class.js +1 -1
  78. package/dist/components/conversation/code-block/code-block-base.class.d.ts +5 -3
  79. package/dist/components/conversation/code-block/code-block-base.class.js +1 -1
  80. package/dist/components/conversation/code-block/code-block-core.class.d.ts +4 -1
  81. package/dist/components/conversation/code-block/code-block-core.class.js +1 -1
  82. package/dist/components/conversation/code-block/code-block-shared.d.ts +6 -4
  83. package/dist/components/conversation/code-block/code-block-shared.js +3 -2
  84. package/dist/components/conversation/code-block/code-block.class.d.ts +11 -4
  85. package/dist/components/conversation/code-block/code-block.class.js +1 -1
  86. package/dist/components/conversation/code-block/code-block.d.ts +1 -1
  87. package/dist/components/conversation/code-block/code-block.styles.js +1 -1
  88. package/dist/components/conversation/code-block/shiki-types.d.ts +2 -0
  89. package/dist/components/conversation/code-block/shiki-types.js +1 -1
  90. package/dist/components/conversation/markdown/markdown-base.class.d.ts +6 -4
  91. package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
  92. package/dist/components/conversation/markdown/markdown-code-header.d.ts +2 -2
  93. package/dist/components/conversation/markdown/markdown-code-header.js +1 -1
  94. package/dist/components/conversation/markdown/markdown-core.class.d.ts +8 -3
  95. package/dist/components/conversation/markdown/markdown-progressive.js +2 -2
  96. package/dist/components/conversation/markdown/markdown-shared.d.ts +5 -10
  97. package/dist/components/conversation/markdown/markdown-shared.js +5 -5
  98. package/dist/components/conversation/markdown/markdown-streaming-tail.js +1 -1
  99. package/dist/components/conversation/markdown/markdown.class.d.ts +17 -10
  100. package/dist/components/conversation/markdown/markdown.class.js +1 -1
  101. package/dist/components/conversation/markdown/markdown.styles.js +1 -1
  102. package/dist/components/conversation/model-select/model-select.class.d.ts +4 -3
  103. package/dist/components/conversation/model-select/model-select.class.js +3 -2
  104. package/dist/components/conversation/model-select/model-select.styles.js +1 -1
  105. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.d.ts +2 -1
  106. package/dist/components/conversation/model-settings-panel/model-settings-panel.class.js +2 -1
  107. package/dist/components/conversation/model-settings-panel/model-settings-panel.styles.js +1 -1
  108. package/dist/components/conversation/prompt-input/prompt-input.class.d.ts +3 -2
  109. package/dist/components/conversation/prompt-input/prompt-input.class.js +2 -1
  110. package/dist/components/conversation/prompt-input/prompt-input.styles.js +1 -1
  111. package/dist/components/conversation/prompt-queue/prompt-queue.class.d.ts +10 -2
  112. package/dist/components/conversation/prompt-queue/prompt-queue.class.js +15 -6
  113. package/dist/components/conversation/prompt-queue/prompt-queue.styles.js +1 -1
  114. package/dist/components/conversation/realtime-session/realtime-session.class.d.ts +3 -1
  115. package/dist/components/conversation/realtime-session/realtime-session.class.js +2 -1
  116. package/dist/components/conversation/realtime-session/realtime-session.styles.js +1 -1
  117. package/dist/components/conversation/streaming-text/markdown-detection.d.ts +2 -0
  118. package/dist/components/conversation/streaming-text/markdown-detection.js +4 -1
  119. package/dist/components/conversation/streaming-text/streaming-text-base.class.d.ts +6 -2
  120. package/dist/components/conversation/streaming-text/streaming-text-base.class.js +3 -3
  121. package/dist/components/conversation/streaming-text/streaming-text-core.class.js +1 -1
  122. package/dist/components/conversation/streaming-text/streaming-text.class.js +1 -0
  123. package/dist/components/conversation/thread-list/thread-list.class.d.ts +34 -4
  124. package/dist/components/conversation/thread-list/thread-list.class.js +22 -15
  125. package/dist/components/conversation/thread-list/thread-list.d.ts +1 -1
  126. package/dist/components/conversation/thread-list/thread-list.js +1 -1
  127. package/dist/components/conversation/thread-list/thread-list.styles.js +1 -1
  128. package/dist/components/conversation/transcript-feed/transcript-feed.class.d.ts +6 -2
  129. package/dist/components/conversation/transcript-feed/transcript-feed.class.js +3 -2
  130. package/dist/components/conversation/transcript-feed/transcript-feed.styles.js +1 -1
  131. package/dist/components/conversation/voice-picker/voice-picker.class.d.ts +3 -2
  132. package/dist/components/conversation/voice-picker/voice-picker.class.js +3 -2
  133. package/dist/components/conversation/voice-picker/voice-picker.styles.js +1 -1
  134. package/dist/components/data/calendar/calendar.class.d.ts +5 -2
  135. package/dist/components/data/calendar/calendar.class.js +1 -1
  136. package/dist/components/data/data-grid/data-grid-processing.js +2 -2
  137. package/dist/components/data/data-grid/data-grid.class.d.ts +22 -8
  138. package/dist/components/data/data-grid/data-grid.class.js +20 -19
  139. package/dist/components/data/data-grid/data-grid.styles.js +1 -1
  140. package/dist/components/data/document-library/document-library.class.d.ts +31 -4
  141. package/dist/components/data/document-library/document-library.class.js +25 -12
  142. package/dist/components/data/document-library/document-library.styles.js +1 -1
  143. package/dist/components/data/file-tree/file-tree.class.d.ts +30 -6
  144. package/dist/components/data/file-tree/file-tree.class.js +4 -3
  145. package/dist/components/data/file-tree/file-tree.d.ts +1 -0
  146. package/dist/components/data/file-tree/file-tree.js +1 -1
  147. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +31 -6
  148. package/dist/components/data/flow-canvas/flow-canvas.class.js +40 -19
  149. package/dist/components/data/flow-canvas/flow-canvas.styles.js +1 -1
  150. package/dist/components/data/flow-canvas/flow-model.js +1 -1
  151. package/dist/components/data/flow-canvas/flow-source.js +1 -0
  152. package/dist/components/data/flow-canvas/flow-types.d.ts +4 -2
  153. package/dist/components/data/flow-canvas/flow-viewport-index.js +1 -0
  154. package/dist/components/data/flow-minimap/flow-minimap.class.d.ts +9 -3
  155. package/dist/components/data/flow-minimap/flow-minimap.class.js +11 -2
  156. package/dist/components/data/flow-minimap/flow-minimap.styles.js +1 -1
  157. package/dist/components/data/funnel/funnel.class.d.ts +7 -3
  158. package/dist/components/data/funnel/funnel.class.js +2 -2
  159. package/dist/components/data/heatmap/calendar-grid.d.ts +1 -1
  160. package/dist/components/data/heatmap/calendar-grid.js +1 -1
  161. package/dist/components/data/heatmap/heatmap-grid-navigation.js +1 -1
  162. package/dist/components/data/heatmap/heatmap-limits.d.ts +1 -1
  163. package/dist/components/data/heatmap/heatmap-matrix-source-controller.js +1 -0
  164. package/dist/components/data/heatmap/heatmap-matrix-source.d.ts +5 -0
  165. package/dist/components/data/heatmap/heatmap-matrix-source.js +1 -0
  166. package/dist/components/data/heatmap/heatmap-scale.d.ts +0 -16
  167. package/dist/components/data/heatmap/heatmap-scale.js +1 -1
  168. package/dist/components/data/heatmap/heatmap.class.d.ts +40 -11
  169. package/dist/components/data/heatmap/heatmap.class.js +26 -6
  170. package/dist/components/data/heatmap/heatmap.styles.js +1 -1
  171. package/dist/components/data/pagination/pagination.class.js +1 -1
  172. package/dist/components/data/sequence-strip/sequence-strip-item.d.ts +17 -0
  173. package/dist/components/data/sequence-strip/sequence-strip-source-controller.js +1 -0
  174. package/dist/components/data/sequence-strip/sequence-strip-source.d.ts +5 -0
  175. package/dist/components/data/sequence-strip/sequence-strip-source.js +1 -0
  176. package/dist/components/data/sequence-strip/sequence-strip.class.d.ts +24 -19
  177. package/dist/components/data/sequence-strip/sequence-strip.class.js +23 -4
  178. package/dist/components/data/sequence-strip/sequence-strip.styles.js +1 -1
  179. package/dist/components/data/sparkline/sparkline.class.d.ts +17 -4
  180. package/dist/components/data/sparkline/sparkline.class.js +3 -3
  181. package/dist/components/data/sparkline/sparkline.styles.js +1 -1
  182. package/dist/components/data/table/table.class.d.ts +14 -10
  183. package/dist/components/data/table/table.class.js +17 -16
  184. package/dist/components/data/timeline/timeline.class.d.ts +5 -2
  185. package/dist/components/data/timeline/timeline.class.js +1 -1
  186. package/dist/components/data/tree/tree-item.class.js +1 -1
  187. package/dist/components/data/tree/tree-owner-controller.js +1 -1
  188. package/dist/components/data/tree/tree.class.d.ts +28 -6
  189. package/dist/components/data/tree/tree.class.js +3 -3
  190. package/dist/components/data/tree/tree.d.ts +1 -0
  191. package/dist/components/data/tree/tree.js +1 -1
  192. package/dist/components/data/word-cloud/word-cloud.class.d.ts +17 -7
  193. package/dist/components/data/word-cloud/word-cloud.class.js +6 -4
  194. package/dist/components/data/word-cloud/word-cloud.styles.js +1 -1
  195. package/dist/components/forms/catalog-picker-base.d.ts +1 -1
  196. package/dist/components/forms/catalog-picker-base.js +6 -6
  197. package/dist/components/forms/catalog-picker-base.styles.js +1 -1
  198. package/dist/components/forms/combobox/combobox.class.d.ts +7 -3
  199. package/dist/components/forms/combobox/combobox.class.js +1 -1
  200. package/dist/components/forms/combobox/option.class.d.ts +4 -2
  201. package/dist/components/forms/combobox/option.class.js +2 -2
  202. package/dist/components/forms/country-picker/country-picker.class.d.ts +3 -1
  203. package/dist/components/forms/country-picker/country-picker.class.js +1 -1
  204. package/dist/components/forms/currency-picker/currency-picker.class.d.ts +2 -0
  205. package/dist/components/forms/currency-picker/currency-picker.class.js +1 -1
  206. package/dist/components/forms/currency-picker/currency-presentation.js +1 -1
  207. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +6 -2
  208. package/dist/components/forms/emoji-picker/emoji-picker.class.js +3 -2
  209. package/dist/components/forms/emoji-picker/emoji-picker.styles.js +1 -1
  210. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +8 -2
  211. package/dist/components/forms/locale-picker/locale-picker.class.js +5 -4
  212. package/dist/components/forms/locale-picker/locale-picker.styles.js +1 -1
  213. package/dist/components/forms/select/select.class.d.ts +11 -3
  214. package/dist/components/forms/select/select.class.js +4 -4
  215. package/dist/components/forms/time-zone-picker/time-zone-picker.class.d.ts +2 -0
  216. package/dist/components/forms/time-zone-picker/time-zone-picker.class.js +1 -1
  217. package/dist/components/forms/token-input/token-input.class.d.ts +6 -1
  218. package/dist/components/forms/token-input/token-input.class.js +15 -13
  219. package/dist/components/forms/unit-picker/unit-picker.class.d.ts +2 -0
  220. package/dist/components/forms/unit-picker/unit-picker.class.js +1 -1
  221. package/dist/components/layout/app-rail/app-rail.class.d.ts +1 -1
  222. package/dist/components/layout/app-rail/app-rail.class.js +1 -1
  223. package/dist/components/layout/command-palette/command-palette.class.d.ts +5 -2
  224. package/dist/components/layout/command-palette/command-palette.class.js +2 -1
  225. package/dist/components/layout/command-palette/command-palette.styles.js +1 -1
  226. package/dist/components/layout/menu/menu-item.class.d.ts +2 -2
  227. package/dist/components/layout/menu/menu-item.class.js +2 -2
  228. package/dist/components/layout/menu/menu.class.d.ts +1 -1
  229. package/dist/components/layout/menu/menu.class.js +1 -1
  230. package/dist/components/layout/menubar/menubar.class.d.ts +1 -1
  231. package/dist/components/layout/menubar/menubar.class.js +1 -1
  232. package/dist/components/layout/reorder-list/reorder-item.class.d.ts +2 -2
  233. package/dist/components/layout/reorder-list/reorder-item.class.js +2 -2
  234. package/dist/components/layout/reorder-list/reorder-list.class.d.ts +1 -1
  235. package/dist/components/layout/reorder-list/reorder-list.class.js +1 -1
  236. package/dist/components/layout/virtual-list/virtual-list.class.d.ts +13 -9
  237. package/dist/components/layout/virtual-list/virtual-list.class.js +21 -17
  238. package/dist/components/media/av-player/av-cue-index.js +1 -0
  239. package/dist/components/media/av-player/av-cue-source.d.ts +13 -0
  240. package/dist/components/media/av-player/av-cue-source.js +1 -0
  241. package/dist/components/media/av-player/av-metadata.d.ts +2 -2
  242. package/dist/components/media/av-player/av-metadata.js +1 -1
  243. package/dist/components/media/av-player/av-player-cue-source-controller.js +1 -0
  244. package/dist/components/media/av-player/av-player.class.d.ts +34 -12
  245. package/dist/components/media/av-player/av-player.class.js +15 -10
  246. package/dist/components/media/flag/flag.class.js +1 -1
  247. package/dist/components/media/flag/language-map.js +1 -1
  248. package/dist/components/media/lightbox/lightbox-source.js +1 -0
  249. package/dist/components/media/lightbox/lightbox-types.d.ts +15 -0
  250. package/dist/components/media/lightbox/lightbox.class.d.ts +22 -21
  251. package/dist/components/media/lightbox/lightbox.class.js +6 -4
  252. package/dist/components/media/lightbox/lightbox.styles.js +1 -1
  253. package/dist/components/media/map/map-geojson-diff.d.ts +6 -6
  254. package/dist/components/media/map/map-geojson-diff.js +1 -1
  255. package/dist/components/media/map/map-loader.d.ts +5 -1
  256. package/dist/components/media/map/map.class.d.ts +24 -6
  257. package/dist/components/media/map/map.class.js +2 -2
  258. package/dist/components/media/map/map.styles.js +1 -1
  259. package/dist/components/media/video-playlist/video-playlist.class.d.ts +2 -1
  260. package/dist/components/media/video-playlist/video-playlist.class.js +1 -1
  261. package/dist/components/overlays/chip/chip.class.d.ts +1 -1
  262. package/dist/components/overlays/chip/chip.class.js +1 -1
  263. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.d.ts +30 -8
  264. package/dist/components/retrieval/embedding-explorer/embedding-explorer.class.js +22 -8
  265. package/dist/components/retrieval/embedding-explorer/embedding-explorer.styles.js +1 -1
  266. package/dist/components/retrieval/graph/graph-canvas.js +1 -1
  267. package/dist/components/retrieval/graph/graph-source-composition.js +1 -0
  268. package/dist/components/retrieval/graph/graph-source-controller.js +1 -0
  269. package/dist/components/retrieval/graph/graph-spatial-controller.js +2 -2
  270. package/dist/components/retrieval/graph/graph-spatial-model.js +1 -0
  271. package/dist/components/retrieval/graph/graph-spatial.js +1 -1
  272. package/dist/components/retrieval/graph/graph.class.d.ts +31 -6
  273. package/dist/components/retrieval/graph/graph.class.js +26 -5
  274. package/dist/components/retrieval/graph/graph.d.ts +1 -1
  275. package/dist/components/retrieval/graph/graph.js +1 -1
  276. package/dist/components/retrieval/graph/graph.styles.js +1 -1
  277. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.d.ts +33 -4
  278. package/dist/components/retrieval/ingestion-queue/ingestion-queue.class.js +27 -17
  279. package/dist/components/retrieval/ingestion-queue/ingestion-queue.d.ts +1 -1
  280. package/dist/components/retrieval/ingestion-queue/ingestion-queue.js +1 -1
  281. package/dist/components/retrieval/ingestion-queue/ingestion-queue.styles.js +1 -1
  282. package/dist/components/retrieval/knowledge-base/knowledge-base.class.d.ts +27 -4
  283. package/dist/components/retrieval/knowledge-base/knowledge-base.class.js +29 -14
  284. package/dist/components/retrieval/knowledge-base/knowledge-base.styles.js +1 -1
  285. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.d.ts +17 -3
  286. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.class.js +15 -10
  287. package/dist/components/retrieval/knowledge-base-admin/knowledge-base-admin.styles.js +1 -1
  288. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +24 -5
  289. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +17 -10
  290. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.d.ts +1 -1
  291. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.js +1 -1
  292. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.styles.js +1 -1
  293. package/dist/components/retrieval/mind-map/mind-map-layout.js +1 -1
  294. package/dist/components/retrieval/mind-map/mind-map-model.js +1 -0
  295. package/dist/components/retrieval/mind-map/mind-map.class.d.ts +27 -4
  296. package/dist/components/retrieval/mind-map/mind-map.class.js +11 -7
  297. package/dist/components/retrieval/mind-map/mind-map.d.ts +1 -0
  298. package/dist/components/retrieval/mind-map/mind-map.js +1 -1
  299. package/dist/components/retrieval/mind-map/mind-map.styles.js +1 -1
  300. package/dist/components/retrieval/neighbor-list/neighbor-list.class.d.ts +24 -2
  301. package/dist/components/retrieval/neighbor-list/neighbor-list.class.js +17 -3
  302. package/dist/components/retrieval/neighbor-list/neighbor-list.d.ts +1 -1
  303. package/dist/components/retrieval/neighbor-list/neighbor-list.js +1 -1
  304. package/dist/components/retrieval/neighbor-list/neighbor-list.styles.js +1 -1
  305. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.d.ts +8 -4
  306. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.class.js +11 -7
  307. package/dist/components/retrieval/rag-eval-dashboard/rag-eval-dashboard.styles.js +1 -1
  308. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.d.ts +12 -6
  309. package/dist/components/retrieval/retrieval-compare/retrieval-compare.class.js +30 -17
  310. package/dist/components/retrieval/retrieval-compare/retrieval-compare.styles.js +1 -1
  311. package/dist/components/retrieval/retrieval-results/retrieval-results-model.js +1 -0
  312. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +46 -5
  313. package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +31 -9
  314. package/dist/components/retrieval/retrieval-results/retrieval-results.d.ts +1 -1
  315. package/dist/components/retrieval/retrieval-results/retrieval-results.js +1 -1
  316. package/dist/components/retrieval/retrieval-results/retrieval-results.styles.js +1 -1
  317. package/dist/components/utility/diff-view/diff-view.class.d.ts +16 -8
  318. package/dist/components/utility/diff-view/diff-view.class.js +3 -2
  319. package/dist/components/utility/diff-view/diff-view.styles.js +1 -1
  320. package/dist/components/utility/json-viewer/json-viewer.class.d.ts +31 -3
  321. package/dist/components/utility/json-viewer/json-viewer.class.js +13 -4
  322. package/dist/components/utility/json-viewer/json-viewer.d.ts +1 -0
  323. package/dist/components/utility/json-viewer/json-viewer.js +1 -1
  324. package/dist/components/utility/json-viewer/json-viewer.styles.js +1 -1
  325. package/dist/components/utility/mention-popover/mention-popover.class.d.ts +6 -4
  326. package/dist/components/utility/mention-popover/mention-popover.class.js +6 -5
  327. package/dist/components/viewers/csv-viewer/csv-viewer.class.d.ts +34 -7
  328. package/dist/components/viewers/csv-viewer/csv-viewer.class.js +9 -7
  329. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.d.ts +28 -4
  330. package/dist/components/viewers/dataset-viewer/dataset-viewer.class.js +12 -11
  331. package/dist/components/viewers/geojson-view/geojson-viewer.class.d.ts +3 -1
  332. package/dist/components/viewers/geojson-view/geojson-viewer.class.js +17 -16
  333. package/dist/components/viewers/geojson-view/geojson-viewer.d.ts +1 -1
  334. package/dist/components/viewers/geojson-view/geojson-viewer.js +1 -1
  335. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.d.ts +31 -5
  336. package/dist/components/viewers/spreadsheet-viewer/spreadsheet-viewer.class.js +11 -8
  337. package/dist/components/viewers/table-viewer-shared.js +19 -3
  338. package/dist/components/viewers/viewer-search-limits.js +1 -1
  339. package/dist/components/viewers/xml-viewer/xml-viewer.class.d.ts +35 -3
  340. package/dist/components/viewers/xml-viewer/xml-viewer.class.js +20 -5
  341. package/dist/components/viewers/xml-viewer/xml-viewer.d.ts +1 -1
  342. package/dist/components/viewers/xml-viewer/xml-viewer.js +1 -1
  343. package/dist/components/viewers/xml-viewer/xml-viewer.styles.js +1 -1
  344. package/dist/countries.js +1 -1
  345. package/dist/data-sources.d.ts +34 -0
  346. package/dist/data-sources.js +1 -0
  347. package/dist/events.d.ts +51 -7
  348. package/dist/framework-types.d.ts +1 -1
  349. package/dist/internal/accessibility-visibility.d.ts +4 -2
  350. package/dist/internal/accessibility-visibility.js +1 -1
  351. package/dist/internal/accessible-text-controller.js +1 -1
  352. package/dist/internal/anchor-target.js +2 -2
  353. package/dist/internal/catalog-picker.d.ts +1 -7
  354. package/dist/internal/catalog-picker.js +1 -1
  355. package/dist/internal/collection-snapshot.js +1 -1
  356. package/dist/internal/default-strings/agent-tools.generated.js +1 -1
  357. package/dist/internal/default-strings/charts.generated.js +1 -1
  358. package/dist/internal/default-strings/conversation.generated.js +1 -1
  359. package/dist/internal/default-strings/data.generated.js +1 -1
  360. package/dist/internal/default-strings/forms.generated.js +1 -1
  361. package/dist/internal/default-strings/layout.generated.js +1 -1
  362. package/dist/internal/default-strings/media.generated.js +1 -1
  363. package/dist/internal/default-strings/retrieval.generated.js +1 -1
  364. package/dist/internal/default-strings/shared.generated.js +1 -1
  365. package/dist/internal/default-strings/utility.generated.js +1 -1
  366. package/dist/internal/delimited-data.js +1 -1
  367. package/dist/internal/fixed-containing-block.js +1 -1
  368. package/dist/internal/flow-scene-envelope.js +1 -0
  369. package/dist/internal/graph-scene-controller.js +1 -0
  370. package/dist/internal/hierarchy-source-controller.js +1 -0
  371. package/dist/internal/hierarchy-source-view.js +29 -0
  372. package/dist/internal/hierarchy-source-view.styles.js +1 -0
  373. package/dist/internal/inherited-attribute-hub.d.ts +6 -0
  374. package/dist/internal/inherited-attribute-hub.js +1 -1
  375. package/dist/internal/intl-cache.js +1 -1
  376. package/dist/internal/keyed-index.js +1 -0
  377. package/dist/internal/localization-types.d.ts +1 -1
  378. package/dist/internal/localization.js +2 -2
  379. package/dist/internal/lyra-element.d.ts +2 -2
  380. package/dist/internal/lyra-element.js +3 -2
  381. package/dist/internal/native-modal-context.js +1 -1
  382. package/dist/internal/option-selection.js +1 -1
  383. package/dist/internal/package-metadata.js +1 -1
  384. package/dist/internal/positioner.js +1 -1
  385. package/dist/internal/resource-loader.d.ts +2 -0
  386. package/dist/internal/resource-loader.js +1 -1
  387. package/dist/internal/scoped-definitions.generated.js +1 -1
  388. package/dist/internal/search-haystack.js +1 -0
  389. package/dist/internal/selection-catalog.d.ts +5 -0
  390. package/dist/internal/selection-catalog.js +1 -1
  391. package/dist/internal/shiki-language-sources.js +1 -0
  392. package/dist/internal/source-page-controller.js +1 -0
  393. package/dist/internal/source-page-scope.js +1 -0
  394. package/dist/internal/source-request-controller.js +1 -0
  395. package/dist/internal/source-window-controller.js +1 -0
  396. package/dist/internal/spatial-source-controller.js +1 -0
  397. package/dist/internal/text-quote.d.ts +2 -6
  398. package/dist/internal/text-quote.js +1 -1
  399. package/dist/internal/theme-watcher.js +1 -1
  400. package/dist/internal/virtual-list-composition.js +1 -0
  401. package/dist/lyra.d.ts +1 -1
  402. package/dist/lyra.js +1 -1
  403. package/dist/testing/interaction-drivers.js +1 -1
  404. package/dist/testing/lyra-tag-event-map.js +1 -1
  405. package/dist/units.js +1 -1
  406. package/dist/utilities/data-preparation.d.ts +56 -0
  407. package/dist/utilities/data-preparation.js +1 -0
  408. package/dist/utilities/data-spatial.d.ts +26 -0
  409. package/dist/utilities/data-spatial.js +1 -0
  410. package/dist/utilities/index.d.ts +1 -1
  411. package/dist/utilities/index.js +1 -1
  412. package/llms/components/lr-activity-feed.md +7 -2
  413. package/llms/components/lr-agent-trace.md +49 -9
  414. package/llms/components/lr-agent-workspace.md +15 -8
  415. package/llms/components/lr-av-player.md +180 -10
  416. package/llms/components/lr-bar-chart.md +1 -1
  417. package/llms/components/lr-box-plot.md +8 -0
  418. package/llms/components/lr-bubble-chart.md +1 -1
  419. package/llms/components/lr-calendar.md +26 -3
  420. package/llms/components/lr-chart.md +310 -23
  421. package/llms/components/lr-chat-viewport.md +6 -0
  422. package/llms/components/lr-code-block-core.md +12 -7
  423. package/llms/components/lr-code-block.md +23 -9
  424. package/llms/components/lr-combobox.md +27 -15
  425. package/llms/components/lr-command-palette.md +16 -3
  426. package/llms/components/lr-country-picker.md +23 -6
  427. package/llms/components/lr-csv-viewer.md +95 -12
  428. package/llms/components/lr-currency-picker.md +23 -3
  429. package/llms/components/lr-data-grid.md +24 -6
  430. package/llms/components/lr-dataset-viewer.md +92 -11
  431. package/llms/components/lr-dialog.md +1 -1
  432. package/llms/components/lr-diff-view.md +19 -6
  433. package/llms/components/lr-document-library.md +60 -5
  434. package/llms/components/lr-doughnut-chart.md +1 -1
  435. package/llms/components/lr-embedding-explorer.md +89 -9
  436. package/llms/components/lr-emoji-picker.md +7 -2
  437. package/llms/components/lr-eval-dataset.md +56 -7
  438. package/llms/components/lr-eval-result.md +89 -4
  439. package/llms/components/lr-export-button.md +1 -1
  440. package/llms/components/lr-file-tree.md +60 -6
  441. package/llms/components/lr-flag.md +5 -2
  442. package/llms/components/lr-flow-canvas.md +152 -14
  443. package/llms/components/lr-flow-minimap.md +32 -4
  444. package/llms/components/lr-funnel.md +14 -0
  445. package/llms/components/lr-geojson-viewer.md +27 -10
  446. package/llms/components/lr-graph.md +43 -7
  447. package/llms/components/lr-heatmap.md +161 -5
  448. package/llms/components/lr-histogram.md +55 -9
  449. package/llms/components/lr-ingestion-queue.md +54 -3
  450. package/llms/components/lr-json-viewer.md +87 -7
  451. package/llms/components/lr-knowledge-base-admin.md +60 -4
  452. package/llms/components/lr-knowledge-base.md +121 -9
  453. package/llms/components/lr-knowledge-graph-explorer.md +106 -11
  454. package/llms/components/lr-lightbox.md +42 -6
  455. package/llms/components/lr-line-chart.md +28 -5
  456. package/llms/components/lr-lite-chart.md +96 -31
  457. package/llms/components/lr-locale-picker.md +6 -4
  458. package/llms/components/lr-map.md +67 -8
  459. package/llms/components/lr-markdown-core.md +10 -5
  460. package/llms/components/lr-markdown.md +23 -6
  461. package/llms/components/lr-mention-popover.md +11 -6
  462. package/llms/components/lr-mind-map.md +91 -10
  463. package/llms/components/lr-model-select.md +8 -4
  464. package/llms/components/lr-model-settings-panel.md +10 -2
  465. package/llms/components/lr-navigation-menu.md +1 -1
  466. package/llms/components/lr-neighbor-list.md +69 -2
  467. package/llms/components/lr-pie-chart.md +1 -1
  468. package/llms/components/lr-polar-area-chart.md +1 -1
  469. package/llms/components/lr-prompt-input.md +9 -2
  470. package/llms/components/lr-prompt-queue.md +11 -3
  471. package/llms/components/lr-radar-chart.md +1 -1
  472. package/llms/components/lr-rag-eval-dashboard.md +9 -2
  473. package/llms/components/lr-realtime-session.md +6 -2
  474. package/llms/components/lr-reorder-list.md +4 -0
  475. package/llms/components/lr-retrieval-compare.md +9 -4
  476. package/llms/components/lr-retrieval-results.md +104 -6
  477. package/llms/components/lr-scatter-chart.md +1 -1
  478. package/llms/components/lr-select.md +20 -10
  479. package/llms/components/lr-sequence-strip.md +92 -2
  480. package/llms/components/lr-span-waterfall.md +78 -8
  481. package/llms/components/lr-sparkline.md +42 -11
  482. package/llms/components/lr-spreadsheet-viewer.md +109 -14
  483. package/llms/components/lr-streaming-text-core.md +4 -2
  484. package/llms/components/lr-streaming-text.md +5 -1
  485. package/llms/components/lr-table.md +96 -115
  486. package/llms/components/lr-task-list.md +93 -9
  487. package/llms/components/lr-terminal.md +9 -0
  488. package/llms/components/lr-test-results.md +77 -3
  489. package/llms/components/lr-thread-list.md +86 -1
  490. package/llms/components/lr-time-zone-picker.md +8 -3
  491. package/llms/components/lr-timeline.md +5 -0
  492. package/llms/components/lr-token-input.md +7 -2
  493. package/llms/components/lr-tool-timeline.md +13 -4
  494. package/llms/components/lr-trace-tree.md +96 -10
  495. package/llms/components/lr-transcript-feed.md +9 -2
  496. package/llms/components/lr-tree.md +87 -15
  497. package/llms/components/lr-unit-picker.md +8 -3
  498. package/llms/components/lr-video-playlist.md +2 -0
  499. package/llms/components/lr-virtual-list.md +17 -8
  500. package/llms/components/lr-voice-picker.md +8 -3
  501. package/llms/components/lr-word-cloud.md +128 -12
  502. package/llms/components/lr-xml-viewer.md +106 -9
  503. package/llms/index.md +1 -1
  504. package/llms/peers.md +1 -1
  505. package/llms/shared/events-and-types.md +725 -264
  506. package/llms/shared/forms-and-accessibility.md +3 -17
  507. package/llms/shared/imports-and-registration.md +3 -17
  508. package/llms/shared/localization-and-rtl.md +0 -2
  509. package/llms/shared/styles-and-tokens.md +27 -36
  510. package/llms/shared/testing-and-utilities.md +4 -5
  511. package/llms/shared.md +770 -349
  512. package/llms.txt +1 -2
  513. package/locales.json +139 -139
  514. package/package.json +13 -4
  515. package/registrations.json +1 -1
  516. package/skills/compose-lyra-interfaces/SKILL.md +6 -8
  517. package/skills/lyra-ui/SKILL.md +20 -51
  518. package/skills/lyra-ui/commands/review.md +16 -33
  519. package/skills/lyra-ui/commands/update.md +6 -5
  520. package/skills/lyra-ui/online-api.md +15 -0
  521. package/skills/lyra-ui/reporting.md +2 -1
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [retrieval](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/retrieval.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 29 parts, 10 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 30 parts, 10 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
@@ -22,9 +22,113 @@ Controlled source list for a retrieval knowledge base: sync status, indexing hea
22
22
  per-row create/sync/pause/delete requests. Composes `lr-table`, `lr-badge`, `lr-stat`, and a per-row
23
23
  `lr-dropdown` containing `lr-menu`. Never syncs or indexes anything itself.
24
24
 
25
+ **Full-source inventory:** `dataSource: KnowledgeBaseSource | undefined`
26
+ (attribute: false) takes precedence over `sources`. Only `undefined` restores the current legacy
27
+ array; invalid defined providers, including untyped null, fail visibly. The provider stays
28
+ caller-owned by identity, with an immutable revision and records for that revision.
29
+ `sourcePage: number = 0` (`source-page`) is zero-based; `sourcePageSize: number = 100`
30
+ (`source-page-size`) normalizes to 1–500. Readonly `sourceTotal: number | null` is the accepted
31
+ global total, or null outside source mode and while the current provider page is pending or failed.
32
+ Page indices truncate/clamp to a safe nonnegative offset; nonfinite page/size inputs use 0/100.
33
+ Page-size and accepted sort changes reset page zero. An out-of-range page receives at most one
34
+ corrective last-page request; controlled page writes and correction emit no user page event.
35
+ The table's compact server pagination navigates global pages; its internal one-based page-change
36
+ event is consumed to update `sourcePage`.
37
+
38
+ ```ts
39
+ import "@aceshooting/lyra-ui/components/lr-knowledge-base.js";
40
+ import type { KnowledgeBaseSource, KnowledgeBaseSourceQuery, KnowledgeBaseSourceSummary,
41
+ KnowledgeSource } from
42
+ "@aceshooting/lyra-ui/components/retrieval/knowledge-base/knowledge-base.class.js";
43
+ import type { LyraPageSource, LyraPageResult, LyraSourceRecord } from
44
+ "@aceshooting/lyra-ui/data-sources.js";
45
+
46
+ declare const provider: KnowledgeBaseSource;
47
+ const inventory = document.querySelector('lr-knowledge-base')!;
48
+ inventory.dataSource = provider;
49
+ ```
50
+
51
+ **Exported source declarations:**
52
+
53
+ `KnowledgeBaseSource = LyraPageSource<KnowledgeSource, KnowledgeBaseSourceQuery, KnowledgeBaseSourceSummary>`.
54
+
55
+ `KnowledgeBaseSourceQuery {
56
+ readonly sortKey: string | null;
57
+ readonly sortDir: 'asc' | 'desc';
58
+ }`
59
+
60
+ `KnowledgeBaseSourceSummary {
61
+ readonly total: number;
62
+ readonly synced: number;
63
+ readonly syncing: number;
64
+ readonly attention: number;
65
+ }`
66
+
67
+ `query({ revision, locale, signal, page, pageSize, query })` returns a promise for
68
+ `{ rows, total, summary }`; each row is `{ key, order, value: KnowledgeSource }`.
69
+ The revision is a nonempty string or finite number. Counts/orders are safe nonnegative integers,
70
+ `key === value.id` is nonblank, and keys/orders are unique within a page. Rows must exactly fill
71
+ the requested in-bounds page, including its short final page; rejected or duplicate records fail
72
+ the response rather than being omitted. `order` is stable canonical source order, independent
73
+ of query sorting. The shared page-source contract also requires `lookup(keys, context)` and
74
+ `locate(key, query, context)`; this component uses only `query` and exposes no selection/lookup UI.
75
+ Query ordering describes the complete inventory; the component does not sort or filter an
76
+ accepted page locally.
77
+
78
+ The required summary describes the complete inventory on every page, even with `withoutSummary`.
79
+ `summary.total` must equal the response `total`; every count is at most total, and
80
+ `synced + syncing <= total`. Attention counts each source with sync status `'error'` or indexing
81
+ health `'degraded'`/`'failed'`, and may overlap synced or syncing. For example, total 10, synced 8,
82
+ syncing 2 and attention 4 is valid. Loaded-page category counts cannot exceed the corresponding
83
+ global counts. Empty total requires all counts zero. Missing, malformed or inconsistent summaries
84
+ fail visibly; page rows never supply a substitute global summary. These checks detect local
85
+ contradictions but cannot verify unseen provider records.
86
+
87
+ Only the current page, at most 500 projected rows, is retained; historic pages and the complete
88
+ inventory are not cached. There is one physical page request plus the latest queued intent;
89
+ an aborted provider call keeps its permit until it settles, including when it ignores abort.
90
+ Providers should settle promptly after cancellation. The fixed display fields are `id`, `name`,
91
+ `type`, `syncStatus`, `indexingHealth`, `permission`, `documentCount`, `lastSyncedAt` and
92
+ `errorMessage`, read as own data properties without enumerating extra fields. Accessor-backed,
93
+ oversized or invalid required fields fail the page. Their text shares a 65,536 UTF-16-unit budget
94
+ per row; individual page metadata strings are at most 65,536 units and share a 2,000,000-unit
95
+ page metadata budget. Source enums must match the declared unions and optional `documentCount`
96
+ must be a safe nonnegative integer. Blank string names retain the untitled-source presentation;
97
+ invalid string dates retain “never synced”, while valid Date values are copied into owned dates.
98
+
99
+ The source-only sortable headers are `name`, `sync`, `health` and `permission`; `actions` stays
100
+ unsortable. Query sort state starts at `{ sortKey: null, sortDir: 'asc' }`. The table's original
101
+ cancelable `lr-sort-request { phase: 'request', sortKey, sortDir }` and accepted
102
+ `lr-sort { phase: 'commit', sortKey, sortDir }` bubble once with their frozen readonly detail.
103
+ A veto prevents a query change. Only a current accepted commit updates the global server order
104
+ and resets page zero; synchronous source/page replacement prevents an obsolete commit from
105
+ changing the replacement view. These headers remain unsortable in the legacy route.
106
+
107
+ Pending and failed pages clear accepted rows/counts and show localized `source-status`, including
108
+ with `withoutSummary`; they do not paint invented zeros, stale stats or successful-empty copy.
109
+ A successful empty result keeps the toolbar and existing empty state. Current page failures use
110
+ the nested table's error/retry surface; `error`, `errorHeading`, `errorDescription` and the `error`
111
+ slot keep their existing precedence. The canonical cancelable `lr-retry-request` is proposed once;
112
+ a veto prevents both refresh and error clearing. An accepted current provider-failure retry clears
113
+ the host error and retries that page; an external-error-only retry just clears the host error.
114
+ Retained old retry controls cannot refresh a replacement source. Initial failure is quiet;
115
+ later page failures have one localized light-DOM announcement owned by the table.
116
+
117
+ Open row menus belong to the particular admitted row and current page. Page/sort/revision/source
118
+ replacement, refresh, disconnect and adoption close/release them; retained callbacks cannot act
119
+ on a replacement record that happens to reuse the same ID. Existing sync/pause/delete requests
120
+ retain original source IDs and remain host-owned actions. Create remains independent of a loaded
121
+ row and available unless `withoutCreate` is set. Reassign even the same provider,
122
+ or call a keyless `requestUpdate()`, after revision/state changes. Ordinary named presentation
123
+ updates reuse admitted data unless revision or effective locale has changed. Reconnect requests
124
+ the current source anew; obsolete replies and controls cannot publish rows or actions.
125
+
126
+ The following array normalization and unknown-enum fallback rules apply with `dataSource` unset;
127
+ row presentation, action enablement and host error contracts apply to both routes.
128
+
25
129
  **Properties:**
26
130
 
27
- - `sources: KnowledgeSource[] = []` (attribute: false) — `KnowledgeSource { id: string; name: string;
131
+ - `sources: readonly KnowledgeSource[] = []` (attribute: false) — `KnowledgeSource { id: string; name: string;
28
132
  type?: string; syncStatus: KnowledgeSourceSyncStatus; indexingHealth?: KnowledgeSourceIndexingHealth;
29
133
  permission?: KnowledgeSourcePermission; documentCount?: number; lastSyncedAt?: Date | string;
30
134
  errorMessage?: string }` (all four types exported here), where
@@ -33,7 +137,8 @@ errorMessage?: string }` (all four types exported here), where
33
137
  as `'unknown'`), and `KnowledgeSourcePermission = 'owner' | 'editor' | 'viewer' | 'restricted'`.
34
138
  `type` is a free-form connector kind (`'drive'`, `'notion'`, `'upload'`, `'url'`, …) rendered
35
139
  as-is. `lastSyncedAt` follows this library's `Date | string` timestamp convention (a `Date` or an
36
- ISO-8601 string); absent/unparseable renders "never synced". A `syncStatus`, `indexingHealth` or
140
+ ISO-8601 string); absent/unparseable renders "never synced". With `dataSource` unset, a
141
+ `syncStatus`, `indexingHealth` or
37
142
  `permission` outside these unions renders a neutral localized "Unknown" badge, offers no "Sync now",
38
143
  and is left out of the synced/syncing/needs-attention counts. `errorMessage` shows only while
39
144
  `syncStatus === 'error'`. `id`/`name` follow `DocumentRef`'s spirit, but a source is a _connector
@@ -55,8 +160,8 @@ errorMessage?: string }` (all four types exported here), where
55
160
  - `errorDescription: string = ''` (attribute `error-description`) — failed-load supporting copy,
56
161
  forwarded to the nested table
57
162
 
58
- Source ids must be nonblank and unique. Malformed rows and later duplicates are omitted first-wins
59
- before summary totals, empty state, table rows, or source actions. A retained source whose `name` is
163
+ With `dataSource` unset, source ids must be nonblank and unique. Malformed rows and later duplicates
164
+ are omitted first-wins before summary totals, empty state, table rows, or source actions. A retained source whose `name` is
60
165
  missing, blank, or nonstring uses the localized “untitled source” label in both the row and its action
61
166
  names. Row action triggers stay mounted; their three menu items mount only while the dropdown is
62
167
  open and clear after it closes.
@@ -70,15 +175,22 @@ re-emitted them under the `lr-source-*` names, so a host listening on the admin
70
175
  change; a host listening directly on `<lr-knowledge-base>` renames its four listeners.
71
176
  `lr-retry-request` (`detail: null`, cancelable) proposes a retry when the nested table's built-in
72
177
  retry button is activated. Preventing it keeps both the parent and table in the error state.
73
- Without a veto, the default action clears `error`. This component contains the nested table request
74
- and re-proposes its own canonical request, so hosts receive the parent event once.
178
+ Without a veto, the default action clears `error` and, for a current provider failure, retries its
179
+ page. This component contains the nested table request and re-proposes its own canonical request,
180
+ so hosts receive the parent event once.
181
+ In source mode, `lr-sort-request` is the original cancelable table proposal with frozen
182
+ `TableSortRequestDetail { phase: 'request', sortKey, sortDir }`; `sortDir` is `'asc' | 'desc'`.
183
+ `lr-sort` is the accepted, noncancelable table commit with frozen
184
+ `TableSortCommitDetail { phase: 'commit', sortKey, sortDir }`. Preventing the request suppresses
185
+ the commit and leaves the current source sort unchanged.
75
186
 
76
187
  **Slots:** `error` — replaces the nested table's built-in failed-load state, including its retry
77
- button, while `error` is set.
188
+ button, while the host error or a current provider failure is shown.
78
189
 
79
190
  **CSS parts:** `base`, `toolbar` (heading + "Add source" row), `heading` (the heading text),
80
191
  `create-button` (omitted while `without-create` is set), `summary` (omitted while `without-summary`
81
- is set or `sources` is empty), `summary-stat`, `table`, `name-cell`, `source-name`, `source-type` (omitted when `type` is
192
+ is set or the accepted current collection is empty; provider pending/failure uses `source-status`),
193
+ `summary-stat`, `source-status` (localized provider loading/failed-summary status), `table`, `name-cell`, `source-name`, `source-type` (omitted when `type` is
82
194
  unset), `sync-cell`, `sync-badge`, `sync-timestamp`, `sync-error`, `health-cell`, `health-badge`,
83
195
  `document-count` (omitted when unset), `permission-badge` (omitted when `permission` is unset),
84
196
  `actions-menu`, `actions-trigger` (the kebab `<button>`), `error-row`, `error-cell`, `error` (the
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [retrieval](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/retrieval.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** `d3-drag`, `d3-force`, `d3-selection`, `d3-zoom` — see `llms/peers.md`
12
- - **Themeable via** 15 parts, 1 custom property — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 19 parts, 1 custom property — 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
  ---
@@ -28,6 +28,10 @@ focus and details flow as other entity activations, emitting one `lr-selection-c
28
28
  `lr-relation-activate` continues to pass through unchanged. The canonical search event fields remain
29
29
  `query`, `matchCount`, `matchCountExact`, and `activeIndex: -1`.
30
30
 
31
+ With `graphSource` unset, the `input-limit` part preserves the outer `nodes` and `edges` admission counts before the
32
+ bounded model is passed to the graph. Counts describe retained/source root entries, independently
33
+ of filtering, search limits and child rendering.
34
+
31
35
  `view: LyraGraphView = '2d'` and `camera?: LyraGraphCamera` forward the graph's spatial/list
32
36
  options. `nodes[].position` supplies real x/y/z coordinates. The default remains the existing 2D
33
37
  view; spatial/list views need no d3 peer. Search, filtering, selection, pinning and neighborhood
@@ -37,6 +41,86 @@ popovers use `getNodeScreenPosition()` so their viewport anchor follows the proj
37
41
  orbit, pan, dolly or focus. Spatial node activation includes optional world `z`; it never substitutes
38
42
  screen pixels for the existing event's coordinate domain.
39
43
 
44
+ **Complete graph provider:** `graphSource: KnowledgeGraphExplorerSource | undefined`
45
+ (attribute: false) takes precedence over legacy `nodes`/`edges`; invalid defined providers fail
46
+ visibly. Setting `undefined` restores the current legacy model and local search/details behavior.
47
+ `KnowledgeGraphExplorerSource` is exactly the public `GraphSource` alias, forwarded unchanged to
48
+ the existing single `lr-graph` child.
49
+
50
+ ```ts
51
+ import type { KnowledgeGraphExplorerSource } from
52
+ "@aceshooting/lyra-ui/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js";
53
+ import type { GraphSource } from
54
+ "@aceshooting/lyra-ui/components/retrieval/graph/graph.class.js";
55
+ import type { LyraGraphSourceQuery, LyraGraphSourceSummary } from
56
+ "@aceshooting/lyra-ui/data-sources.js";
57
+ ```
58
+
59
+ The child owns global record pages, accepted bounded diagram scenes, camera/focus and bounded
60
+ exact selection lookup; the explorer adds no second source controller or loaded graph cache.
61
+ The source has immutable `revision`, same-revision `records` with `query`/`lookup`/`locate`, required
62
+ `scene(request)` and optional `overview(request)`. Record/scene summaries report complete
63
+ `{ nodes, edges }` counts. Global record keys are `'node:' + node.id` and `'edge:' + edge.id`, with
64
+ explicit stable edge IDs; user event payloads keep original entity/edge IDs. Full-source record
65
+ navigation is separate from the bounded accepted canvas scene: a source does not imply every
66
+ record is drawn simultaneously or that a global minimap is available. Source editing remains
67
+ read-only; existing editing/drag mutation controls do not become provider write operations.
68
+
69
+ `sourcePage: number = 0` (`source-page`) is the child's zero-based global record page;
70
+ `sourcePageSize: number = 100` (`source-page-size`) normalizes to 1–500, and size changes reset page
71
+ zero. Readonly `sourceTotal: number | null` is the exact active filtered node/edge record total,
72
+ distinct from the complete graph summary. It is null without an accepted current total, without a
73
+ source, or for an invalid type catalog. The child retains at most 500 page records, diagram scenes
74
+ of at most 500 nodes/1,000 edges, and at most 32 active/focused lookup reservations. Lookup for
75
+ explorer selection shares that child lane rather than enumerating the graph. Source pagination,
76
+ node/edge kind and incident/global navigation remain available in the child.
77
+
78
+ The explorer toolbar is the sole search input in source mode; its legacy local match list is
79
+ absent. `query` supplies global provider search, with at most 65,536 UTF-16 units forwarded.
80
+ Toolbar query/type changes reset the child to global node scope rather than leaving an unrelated
81
+ edge/incident filter active. `lr-search-change` waits for the latest user query's accepted exact
82
+ source total, not a page-local count. It retains `{ query, matchCount, matchCountExact: true,
83
+ activeIndex: -1 }`; empty query reports zero. Direct controlled query assignments remain silent.
84
+
85
+ When `hiddenTypes` is nonempty, configured `nodeTypes` must describe the provider's complete type
86
+ catalog, with at most 500 canonical nonblank IDs, each at most 65,536 UTF-16 units and together at
87
+ most 2,000,000. The source query receives the positive complement of those IDs. With no hidden
88
+ types, no positive filter applies and unknown provider types remain navigable. A partial catalog
89
+ cannot represent a correct hidden-type complement. Hiding every configured type intentionally
90
+ suppresses/revokes record, scene and neighbor requests and reports zero scoped matches; it never
91
+ sends an empty positive array as a false claim that the entire graph is empty. The complete source
92
+ summary stays distinct. `source-status` explains all-hidden/invalid catalog state and `source-clear`
93
+ clears hidden types to restore the unfiltered scope. Existing `lr-hidden-types-change` reports
94
+ user commits; controlled assignments remain silent.
95
+
96
+ Controlled `selectedNodeId` resolves an off-scene original ID through exact lookup without moving
97
+ the record page, opening details or emitting selection. Only a current authoritative global
98
+ absence proof clears it silently. User entity activation resolves the exact original ID, updates
99
+ selection and emits the existing `lr-selection-change` once, then requires an accepted scene and
100
+ real mounted list-row or projected camera anchor before opening the details popover. Reentrant
101
+ selection listeners can revoke that continuation. The details `lr-neighbor-list` binds its source
102
+ only after actual opening and is synchronously unbound on close/source change; hidden closed
103
+ details do not fetch neighbors. Unknown degree is omitted unless `entityDetails` supplies it,
104
+ rather than inferred from the partial scene. Pins and `path` remain bounded host configuration;
105
+ the explorer does not look up every configured ID or compute a full graph traversal.
106
+
107
+ `revealSourceKey(key: string): Promise<boolean>` clears toolbar query/hidden types and delegates
108
+ global node/edge reveal to the sole child, without selection or detail activation. Keys retain the
109
+ canonical node/edge prefixes above. Missing, invalid, failed, obsolete, disconnected or unset-source
110
+ requests resolve `false`. Off-page list entity activation likewise clears toolbar scope before
111
+ its global focus/details flow. `fit`, `resetView` and `focusNode` retain the child's bounded current
112
+ scene semantics; they do not promise a full-source canvas fit.
113
+
114
+ Reassign even the same source, or call a keyless `requestUpdate()`, after revision/state changes.
115
+ Named presentation changes reuse accepted data. Source replacement/removal and lifecycle
116
+ transitions revoke obsolete controls, focus/selection continuations and popover/neighbor bindings.
117
+ Changed scope invalidates obsolete child requests and controls. The child's fixed page/scene/lookup scheduling keeps ignored-abort
118
+ physical calls occupied until settlement and coalesces newer intent. Existing original-ID
119
+ activation/expansion/path/pin/camera/view events keep their payloads and ownership; there is no
120
+ new source selection or editing event. `detail-neighbors` identifies the open-details neighborhood;
121
+ existing graph/legend/details parts remain applicable. The following local-array lookup/search
122
+ rules describe the legacy route unless a source qualification is stated.
123
+
40
124
  **Properties:** (host-supplied data, identity-normalized before rendering)
41
125
 
42
126
  - `nodes: LyraGraphNode[] = []`, `edges: LyraGraphEdge[] = []`, `nodeTypes: LyraNodeTypeStyle[] = []`,
@@ -56,10 +140,13 @@ screen pixels for the existing event's coordinate domain.
56
140
  `{ description?: string; properties?: Record<string, string | number>; degree?: number }`, keyed by
57
141
  node id. Merged onto the matching `LyraGraphNode` to build the entity shown in the details popover and
58
142
  neighbor rows. A node with no entry still renders: `degree` falls back to a live count derived from
59
- `edges`, `description`/`properties` are omitted
143
+ `edges` in the legacy route; source mode leaves unknown degree omitted.
144
+ `description`/`properties` are omitted
60
145
  - `path: LyraPathElement[] = []` (attribute: false) — host-supplied path-finding _result_, rendered
61
146
  via `lr-path-strip` (`{ kind: 'node'; node: LyraEntity } | { kind: 'edge'; relation: string;
62
- directed?: boolean; reverse?: boolean }`). Empty renders no strip
147
+ directed?: boolean; reverse?: boolean }`). Empty renders no strip. The child registers on the
148
+ first nonempty path; await `updateComplete` before accessing it. The `path` part shows localized
149
+ loading or error status while unavailable. Clearing and replacing the path retries a failed load.
63
150
 
64
151
  (self-managed but presettable/observable — this component toggles its own copy on interaction, the
65
152
  same self-toggle-then-emit contract `lr-graph-legend` uses, so every feature works with zero host wiring)
@@ -67,8 +154,10 @@ same self-toggle-then-emit contract `lr-graph-legend` uses, so every feature wor
67
154
  - `hiddenTypes: string[] = []` (attribute: false) — forwarded to both `lr-graph.hiddenTypes` and
68
155
  `lr-graph-legend.hiddenTypes`; hidden nodes are also excluded from explorer search results,
69
156
  neighbor rows, and activation
70
- - `selectedNodeId: string | null = null` (attribute `selected-node-id`) — drives the details popover
71
- and `lr-graph.selectedNodeIds`; `null` shows no selection and keeps the popover closed
157
+ - `selectedNodeId: string | null = null` (attribute `selected-node-id`) — drives
158
+ `lr-graph.selectedNodeIds`; legacy selection drives the details popover, while controlled source
159
+ selection resolves silently and user activation opens it. `null` shows no selection and keeps
160
+ the popover closed
72
161
  - `pinnedNodeIds: string[] = []` (attribute: false) — exactly two pinned nodes reveals the "Find
73
162
  path" action
74
163
  - `query: string = ''` — the filter applied to the visible node
@@ -107,7 +196,7 @@ same self-toggle-then-emit contract `lr-graph-legend` uses, so every feature wor
107
196
  `graphExplorerLabel`. A non-empty host `aria-label` makes the host the sole overall owner; an
108
197
  explicitly empty host label stays empty on the group
109
198
 
110
- **Methods:** `fit(options?: { padding?: number })` frames every visible node in the composed
199
+ **Methods:** `fit(options?: { padding?: number })` frames every currently visible node in the composed
111
200
  graph (forwards to `lr-graph.fit()`); `resetView()` is `fit()` with the default padding, for a
112
201
  reset-view action; `focusNode(id, options?: { zoom? }): Promise<boolean>` centers a visible node
113
202
  without selecting it or opening the details popover (resolves `false` for an unknown or
@@ -136,8 +225,9 @@ filtered-out id). None change `selectedNodeId` or filters.
136
225
  - `lr-search-change` (`detail: { query: string; matchCount: number; matchCountExact: boolean }`) —
137
226
  the user typed in the toolbar's search box. `query` is the canonical `LyraSearchChangeDetail`
138
227
  field name. `matchCount` is the same live node-filter total the result list and its live-region
139
- announcement already compute (`0` while the query is empty). `matchCountExact` is always `true` —
140
- this component's node filter has no truncating ceiling, unlike a paginated text-search viewer.
228
+ announcement compute in the legacy route (`0` while the query is empty). In source mode the
229
+ event waits for the accepted global query total described above. `matchCountExact` is `true`
230
+ for emitted accepted results.
141
231
  `activeIndex` is `-1`: this is a live node filter with no search cursor. The component
142
232
  has already applied the query to its own `query` property before emitting, so reassigning
143
233
  it back is optional and a direct host assignment stays silent.
@@ -149,7 +239,7 @@ filtered-out id). None change `selectedNodeId` or filters.
149
239
  **Slots:** `details` — overrides the details popover's default content (an `lr-entity-card` with a
150
240
  nested `lr-neighbor-list` and a pin toggle) entirely, including the two additive slots below.
151
241
  Receives no data; an overriding consumer reads the selected entity from `selectedNodeId`/`nodes`
152
- itself. `detail-body` — additive content appended inside the default `lr-entity-card`'s body,
242
+ in the legacy route, or resolves the controlled original ID from its own provider in source mode. `detail-body` — additive content appended inside the default `lr-entity-card`'s body,
153
243
  alongside its `lr-neighbor-list`; no effect while `details` is overridden. `detail-actions` —
154
244
  additive content appended into the default `lr-entity-card`'s `actions` slot, beside its built-in
155
245
  pin toggle; no effect while `details` is overridden.
@@ -159,9 +249,13 @@ pin toggle; no effect while `details` is overridden.
159
249
  composed `lr-graph-legend`), `search-results` (only while `query` is non-empty; at most 50 rows,
160
250
  one tab stop moved with ArrowUp/ArrowDown/Home/End, while the announced count covers every match),
161
251
  `search-result` (`role="listitem"` wrapping a `<button>`), `search-empty`, `search-limit` (a localized
162
- shown/total notice when more than 50 nodes match), `details-limit` (a localized shown/total notice when `entityDetails` is too large to keep), `pinned` (only while
252
+ shown/total notice when more than 50 nodes match), `input-limit` (outer node/edge admission notice),
253
+ `details-limit` (a localized shown/total notice when `entityDetails` is too large to keep), `pinned` (only while
163
254
  `pinnedNodeIds` is non-empty), `pinned-heading`, `graph` (the composed `lr-graph`), `path` (only
164
255
  while `path` is non-empty), `detail-popover`, `detail-card`.
256
+ Source-mode parts: `source-status` (filter error or all-types-hidden feedback) and `source-clear`
257
+ (the action that clears hidden types). `detail-neighbors` is the details neighborhood;
258
+ its provider binding is active only while source-mode details are open.
165
259
 
166
260
  **Themeable custom properties:** `--lr-canvas-reserved-height` (default
167
261
  `var(--lr-size-24rem)`) sets the explorer's host block size and matches its pre-upgrade
@@ -197,6 +291,7 @@ the composed graph too. Retheme the composed graph through `lr-graph`'s own cust
197
291
  - Selecting a node any _other_ way (search result, neighbor row, path element, keyboard Enter/Space
198
292
  on a graph node — which dispatches no native `click`) has no rect to read, so it calls
199
293
  `lr-graph.focusNode(id)` and anchors at the graph element's own bounding-box center instead; no
200
- continuous tracking applies on that path.
294
+ continuous tracking applies on that legacy path. Source activation instead waits for the
295
+ authoritative scene and real row/projected anchor described above.
201
296
 
202
297
  ---
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [media](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/media.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 17 parts, 3 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 20 parts, 3 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
  ---
@@ -34,8 +34,15 @@ A lightbox opened outside an existing native `dialog.showModal()` stays interact
34
34
  Assignment clones/freezes the records and inspects at most 10,000 candidates; malformed records
35
35
  are omitted and updates require a new collection assignment. `src` is passed to the embedded
36
36
  frame, which runs it through `safeMediaSrc()`. `alt`/`caption` are caller data, never localized.
37
+ - `imageSource: LyraLightboxSource | undefined` (attribute: false) — identity-owned
38
+ access to the complete ordered collection, taking precedence over `images` while defined.
39
+ Invalid defined sources show a localized error and retry action; they never fall back to the
40
+ legacy array. Setting `undefined` restores the current `images` input. Reassign the source,
41
+ including the same object, or call a keyless `requestUpdate()` after changing its revision or
42
+ mutable provider state. Unrelated named display updates do not refresh the source.
37
43
  - `index: number = 0` (reflected) — clamped defensively for rendering and re-synced (emitting
38
- `lr-index-change`) when `images` shrinks.
44
+ `lr-index-change`) when the active collection shrinks. In source mode, it retains the requested
45
+ logical index while its descriptor and image load.
39
46
  - `loop: boolean = false` (reflected) — wraps prev/next past the ends.
40
47
  - `lightDismiss: boolean = false` (attribute `light-dismiss`) — opt in to backdrop dismissal. Off by default, matching `lr-dialog`.
41
48
  - `withoutCounter: boolean = false` (attribute `without-counter`, **not reflected**) — hides the
@@ -63,9 +70,36 @@ A lightbox opened outside an existing native `dialog.showModal()` stays interact
63
70
  without changing state. `goTo()` ignores a non-finite
64
71
  index without changing state or emitting `lr-index-change`. A finite fractional index is truncated
65
72
  toward zero before clamping or loop wrapping, so `lr-index-change.detail.index` is always the
66
- actual rendered integer index; `reason` defaults to `'api'` and is forwarded as the close event's
73
+ accepted logical integer index, including while a source image is loading; `reason` defaults to
74
+ `'api'` and is forwarded as the close event's
67
75
  detail.
68
76
 
77
+ **Full image collections:** `LyraLightboxSource` has `revision` and
78
+ `images: LyraIndexedView<LyraSourceRecord<LyraLightboxImage>>`, using the types from
79
+ `@aceshooting/lyra-ui/data-sources.js`. The host supplies a nonnegative safe-integer `images.count`
80
+ and either synchronous indexed access or asynchronous bounded range reads. Each record supplies
81
+ a stable global `key`, canonical nonnegative safe-integer `order`, and image `value`. Keep the view
82
+ stable within a revision; publish a new revision and refresh when its contents change. Navigation,
83
+ clamping, looping and the localized counter use the full logical count, so first, middle and final
84
+ images remain reachable in a million-image host collection without copying it into `images`.
85
+ Current navigation emits `lr-index-change` for the logical destination before its image finishes
86
+ loading; direct consumer `index` writes stay event-silent. Source mode adds no new event.
87
+
88
+ Only the current image loads, after resolving its descriptor. The component retains at most three
89
+ descriptors in one-record pages, with one range read physically pending and no neighbour prefetch.
90
+ Supplied record and image fields must be own data properties; accessors are rejected without
91
+ invocation. Each key, `src`, `alt` and `caption` admits at most 65,536 UTF-16 units; oversized or
92
+ malformed values fail visibly instead of being clipped. URLs pass `safeMediaSrc()` before loading.
93
+ The host owns provider storage and response allocations; actual image decode/pixel memory belongs
94
+ to the browser and is not bounded by the descriptor cache.
95
+
96
+ Source loading clears the old image/caption, marks the stage busy and leaves logical navigation
97
+ available. Descriptor or image-load failure shows localized retry chrome; a valid empty collection
98
+ is a separate state. Replacing a source, navigating, refreshing, disconnecting or changing owner
99
+ document revokes obsolete work, so a late completion cannot display an old image. The same
100
+ pan/zoom frame stays mounted and retains focus. The provider should honor the request's abort
101
+ signal; stale-result protection does not make an abort-ignoring provider settle promptly.
102
+
69
103
  **Events:** cancelable `lr-show`, followed after a successful open render by `lr-after-show`;
70
104
  conditionally cancelable `lr-hide` (`detail: LyraLightboxHideDetail = { source: Element }`):
71
105
  cancelable before a requested close, non-cancelable when an open instance unmounts. A requested
@@ -76,7 +110,7 @@ object. Use
76
110
  `lr-after-hide` follows the closed render. Removal while open cannot be vetoed and reports reason
77
111
  `unmount`. `lr-index-change` (`detail: { index }`, fired
78
112
  for internally-driven navigation — a button, a keyboard shortcut, or `next()`/`previous()`/
79
- `goTo()` — and when a shrinking `images` moves the shown image; **not** when a consumer sets
113
+ `goTo()` — and when a shrinking active collection normalizes the index; **not** when a consumer sets
80
114
  `index` directly); `lr-zoom-change` (`detail: {
81
115
  zoom }`) is not emitted by the lightbox itself — it bubbles up composed from the embedded frame.
82
116
 
@@ -93,7 +127,9 @@ including a consumer-driven one, appends the localized position to the document'
93
127
  embedded `<lr-pan-zoom>`), forwarded aliases `frame-viewport`, `frame-content`, `frame-controls`,
94
128
  `previous-button`,
95
129
  `previous-glyph`, `next-button`, `next-glyph`, `caption` (only when the current image has one; its
96
- `id` is the panel's `aria-describedby` target).
130
+ `id` is the panel's `aria-describedby` target), `source-loading`, `source-error`, and `source-retry`
131
+ (the current source image's retry button). `stage` exposes `aria-busy="true"` while source
132
+ descriptor or native image loading is pending.
97
133
 
98
134
  **Themeable custom properties:** `--lr-lightbox-overlay-color` (default
99
135
  `var(--lr-color-overlay-strong)` — the backdrop scrim), `--lr-lightbox-control-bg` (default
@@ -118,6 +154,6 @@ photo content.
118
154
  measured by the lightbox, so stale load events cannot apply a previous image's size. The fit
119
155
  policy covers the painted image only; the lightbox's DOM caption, toolbar, legend-like actions,
120
156
  and tooltip content remain outside that image surface.
121
- - scope for v1: no per-image slotted content (data-driven via `images` only), no dot indicators, no
157
+ - scope for v1: no per-image slotted content (data-driven via `images` or `imageSource`), no dot indicators, no
122
158
  visual open/close animation, no click-image-to-navigate, no touch-swipe. Lifecycle phases are
123
159
  still observable through the before/after events and methods above.
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [charts](https://github.com/aceshooting/lyra-ui/blob/main/packages/lyra-ui/llms/charts.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** `chart.js`, `chartjs-plugin-annotation`, `chartjs-plugin-datalabels`, `chartjs-plugin-zoom` — see `llms/peers.md`
12
- - **Themeable via** 17 parts, 39 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 18 parts, 39 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **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)
14
14
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
15
15
 
@@ -28,6 +28,19 @@ types leave it inert; changing `type` or raw `config` to an admitted vertical ca
28
28
  configuration enables participation regardless of the tag. Horizontal or continuous-x
29
29
  configurations remain outside synchronization.
30
30
 
31
+ `preparedData: LyraChartPreparedData | null = null` is inherited as a property-only input. Its
32
+ compatibility follows the effective writable type: ordered series for `line`/`bar`, categories for
33
+ `bar`/`pie`/`doughnut`/`radar`/`polarArea`, and `LyraSpatialChartSource` (`kind: 'spatial'`)
34
+ for `scatter`/`bubble` with linear scales. Changing `type`
35
+ can therefore make a previously admitted descriptor incompatible; it does not convert the
36
+ descriptor. Whole-source counts/domains, aggregate gap/overlay/table admission, explicit exact
37
+ point reveal, bounded displayed CSV export and refresh/unset behavior follow the core contract.
38
+ Series/category zoom stays summary-only; spatial zoom updates and queries its explicit viewport.
39
+ The spatial contract includes complete all-series density, bounded representatives plus independent
40
+ selected/revealed exact overlays, semantic radius/original coordinates, and the spatial event/table/CSV
41
+ routes described above. Scatter/bubble typed class entries re-export spatial source/point/series,
42
+ viewport and immutable spatial event-detail types; import them from their granular class routes.
43
+
31
44
  Everything else is inherited verbatim from `lr-chart`; each name below has the same type, default,
32
45
  and behavior there. **See `llms/components/lr-chart.md` for the details, code example, and gotchas
33
46
  of every entry in these lists.**
@@ -38,19 +51,29 @@ of every entry in these lists.**
38
51
  `stacked`, `stackedAxes`, `withoutAnimation` (`without-animation`),
39
52
  `withoutLegend` (`without-legend`), `withoutTooltip` (`without-tooltip`), `xLabel` (`x-label`),
40
53
  `yLabel` (`y-label`), plus additive `labels`, `datasets`, `valueFormatter`, `formatter`,
41
- `tooltipTitleFormatter`, `tooltipFooterFormatter`, `area`, `zoomable`,
54
+ `tooltipTitleFormatter`, `tooltipFooterFormatter`, `area`, `zoomable`, `preparedData`,
55
+ `viewport` (property only, default null), `selectedPointId` (property only, default ''),
42
56
  `height`, `y2Label` (`y2-label`), `withoutZeroBaseline` (`without-zero-baseline`), `dataLabels`
43
57
  (`data-labels`), `stackTotals` (`stack-totals`), `config`, `withDataTable`
44
- (`with-data-table`), `dataTableToggle` (`data-table-toggle`), `chartArea` (readonly), and `chart`.
58
+ (`with-data-table`), `dataTableToggle` (`data-table-toggle`), `maxRecords` (`max-records`, default
59
+ `1000`, range 2–1,000), `chartArea` (readonly), and `chart`.
45
60
  `type` differs only in its initial value.
46
61
 
47
62
  **Methods:** `appendData(label, values, maxPoints?)`, `exportData('csv' | 'png')`, `renderChart()`, `resetZoom()`,
48
- `refreshTheme()`.
63
+ `refreshTheme()`, `revealSourcePoint(ref: LyraSeriesPointRef): Promise<boolean>` and
64
+ `revealSourcePoint(id: string): Promise<boolean>` (spatial only).
49
65
 
50
66
  **Events:** `lr-zoom` (`detail: { zoomed: boolean }`), `lr-datum-activate`, `lr-point-activate` (`detail: { datasetIndex,
51
67
  index, label, value }`), `lr-legend-visibility-change-request` (cancelable), and
52
68
  `lr-legend-visibility-change` (commit; both legend events carry `datasetIndex`, `visible`, and the
53
69
  complete `hiddenDatasets` snapshot).
70
+ Prepared activation additionally emits `lr-source-point-select` or `lr-source-category-select`
71
+ with the core chart's immutable original-reference details. Spatial activation uses
72
+ `lr-spatial-point-select`/`lr-spatial-bin-select` with the exact core source semantics;
73
+ existing activation events retain
74
+ plotted indices. The typed component entries re-export `LyraChartPreparedData`,
75
+ `LyraChartSourcePointSelectDetail`, `LyraChartSourceCategorySelectDetail`, `LyraPreparedSeriesData`,
76
+ `LyraPreparedCategoryData` and `LyraSeriesPointRef`.
54
77
  Radial category legends additionally emit `lr-datum-visibility-change-request` (cancelable) and
55
78
  `lr-datum-visibility-change`, carrying `index`, `visible` and the frozen `hiddenDatums` snapshot.
56
79
 
@@ -60,7 +83,7 @@ Radial category legends additionally emit `lr-datum-visibility-change-request` (
60
83
  **CSS parts:** `base`, `plot`, `canvas`, `legend`, `legend-item`, `legend-item-hidden`, `legend-swatch`,
61
84
  `sync-crosshair` (inherited decorative category line, rendered only for an admitted synchronized
62
85
  configuration; the native canvas tooltip has no CSS part),
63
- `reset-zoom-button`, `description`, `notices`, `data-table`, `data-table-toggle`, `data-truncation`, `feature-warning`, `center`, `error` (neutral visible message
86
+ `reset-zoom-button`, `description`, `notices`, `data-table`, `data-table-toggle`, `data-truncation`, `limit`, `feature-warning`, `center`, `error` (neutral visible message
64
87
  rendered in place of `canvas` when the optional `chart.js` peer dependency fails to load; the
65
88
  failure transition is announced through the shared document-level light-DOM assertive sink — see
66
89
  `llms/components/lr-chart.md`).