@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
@@ -21,12 +21,11 @@ Filterable single/multi-select combining a text input with a listbox. Mirrors th
21
21
  `<wa-combobox>` API under the `lr-` prefix. **Form-associated**, with shared internals and validation plumbing while retaining its own
22
22
  single/multiple value and option synchronization.
23
23
 
24
- Consumer writes on mounted options immediately update the owning picker and its submission,
25
- without changing the reset default or emitting picker input/change events. Owner synchronization
26
- does not echo as a consumer selected write.
27
-
28
- A mounted `option.selected` assignment updates the live picker value and form submission
29
- immediately, including deselection and equal-value writes; it emits no user input/change event.
24
+ Programmatic `option.selected` writes update the option immediately, including deselection and
25
+ equal-value writes. The owning combobox reconciles selection and form state once in the next
26
+ microtask; await one microtask before reading settled parent state. These writes do not change the
27
+ reset default or emit picker input/change events. Assign the parent value array for a bulk
28
+ replacement. Owner synchronization does not echo as a consumer selected write.
30
29
 
31
30
  When `multiple` becomes false, the public value, live option flags, popup `aria-selected`,
32
31
  `selectedRows`, event `data` and `with-unknown-option` rows expose one selected occurrence. The
@@ -139,7 +138,8 @@ other value (a plain object, a function) is dropped from the row instead of reac
139
138
  - `hint: string = ''`
140
139
  - `errorText: string = ''` (attribute `error-text` — static error copy shown below the hint;
141
140
  overridden by slotted `error` content when provided)
142
- - `open: boolean = false` (reflected). Rows mount the first time the listbox opens. Disabling the
141
+ - `open: boolean = false` (reflected). Rows mount when the listbox opens and are removed after it
142
+ closes; reopening restores them. Disabling the
143
143
  combobox, making it `readonly` or disabling its fieldset closes an open listbox at once; that
144
144
  close is policy, so it emits no `lr-hide`/`lr-after-hide` and cannot be vetoed.
145
145
  - `allowCreate: boolean = false` (attribute `allow-create`) — a nonmatching query renders a
@@ -290,10 +290,12 @@ AbortSignal; limit: number }) => Promise<readonly ComboboxSourceRow[] | { rows,
290
290
  - `sourceDelay: number = 200` (attribute `source-delay` — debounce in ms between the last keystroke
291
291
  and the `source` call; `0` fires on every keystroke. Sanitized to a finite non-negative duration,
292
292
  falling back to `200` for a non-finite value)
293
- - `maxRender: number = 200` (attribute `max-render` — caps how many rows render at once, always
294
- keeping the current selection visible even if it's outside the cap; the excess renders as one
295
- `overflowText` row instead of being dropped silently. See "Large option lists" below for how to
296
- size it, and when `source` is the better answer. Runtime writes are capped at 1,000)
293
+ - `maxRender: number = 200` (attribute `max-render`) — ordinary suggestion-prefix size, retaining
294
+ active and selected options within an absolute 1,000-row ceiling. The active option has priority;
295
+ selections remain committed even when every selected row cannot mount. Zero omits the ordinary
296
+ prefix while retaining active/selected rows; non-finite values use 200. Rows keep source order,
297
+ and excess options are summarized by `overflowText`. See "Large option lists" below for sizing
298
+ and the async `source` alternative
297
299
  - `sourceTotal: number` (read-only) — provider-side total for the latest accepted response
298
300
  - `sourceTruncated: boolean` (read-only) — whether the response reported or contained more rows
299
301
  than the bounded retained snapshot; the overflow row includes that hidden count
@@ -469,6 +471,14 @@ element-reflection replacement can reach — element reflection resolves same-ro
469
471
  `<lr-virtual-list>` stays `role="list"`/`role="listitem"` and is the right tool for feeds and
470
472
  viewers, not for a listbox whose active row must stay addressable.
471
473
 
474
+ A remote `source` can search a backend containing millions of records without supplying that entire
475
+ collection to the component. Keep the search index on the host or server, return at most
476
+ `options.limit` candidate rows, and include `total` to disclose omitted matches. A discriminating
477
+ query can select an identity anywhere in the backend; selected labels and data survive later
478
+ result windows. This is bounded search, with no paging or cursor for traversing every match of a
479
+ broad query. Refine the query to reach the desired record, or use a paged or indexed data browser
480
+ when complete match traversal is required.
481
+
472
482
  What that means in practice:
473
483
 
474
484
  - **Up to a few hundred rows, raise `maxRender` and move on.** A few hundred flex rows is an
@@ -480,9 +490,10 @@ What that means in practice:
480
490
  rendering everything and asking the browser to lay it out. Pair it with `sourceDelay` to debounce.
481
491
  - **Leave the overflow row doing its job.** When the cap does bite, the excess collapses into one
482
492
  `overflowText` row (default `"+{n} more — refine your search"`) rather than disappearing
483
- silently, and the current selection is always kept visible even when it falls outside the cap.
484
- Suppressing that row by setting `maxRender` far above the real list size trades a useful "keep
485
- typing" affordance for layout work no user asked for.
493
+ silently. Active and selected rows reserve space inside the absolute 1,000-row ceiling;
494
+ oversized selections remain selected even when some selected rows cannot mount.
495
+ Increasing `maxRender` can expose more rows only within the absolute 1,000-row ceiling;
496
+ use filtering or `source` to narrow larger catalogs.
486
497
 
487
498
  **Slots:** default (`<lr-option>` children), `label`, `hint`, `error` (overrides the `errorText`
488
499
  attribute when provided), plus two adornment slots:
@@ -621,7 +632,8 @@ box visibly (nothing is clipped or made unreachable), so leave it unset there.
621
632
  baseline without overwriting a dirty live selection
622
633
  - `selected: boolean = false` (property only) — live selectedness. The parent combobox/select
623
634
  updates it as the current value changes; those live writes never rewrite the `selected`
624
- attribute or `defaultSelected`
635
+ attribute or `defaultSelected`. Consumer writes update the option immediately and reconcile
636
+ parent selection/form state once in the next microtask, without parent input/change events
625
637
  - `title: string = ''` — tooltip text forwarded to the row the owning `lr-select`/`lr-combobox` renders
626
638
  for this option and to its multiple-mode tag; never part of the accessible name; omitted when empty
627
639
  - `group: string = ''` (section header)
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 15 parts, 16 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 16 parts, 16 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,6 +34,14 @@ Valid string keywords still participate in search alongside the command's label,
34
34
  group. Unsafe keyword entries are skipped without invoking accessors, and selection returns the
35
35
  original command object.
36
36
 
37
+ `commands` admits the first 10,000 input positions; invalid or duplicate records inside that prefix
38
+ do not extend the admission window. In the open dialog, `part="limit"` shows the localized
39
+ `commandPaletteInputLimit` notice when the original assignment lost entries. This is independent
40
+ of the search-result count and the virtual result window. Rebinding the retained snapshot
41
+ preserves the notice while refreshing live command records; a fresh input below the limit clears
42
+ it. Initial mounting and reconnecting are quiet. Later changed input loss is politely announced
43
+ while open; changes made while closed remain quiet, and the notice appears on the next opening.
44
+
37
45
  **Properties:**
38
46
 
39
47
  - `open: boolean = false` (reflected) — after the initial silent render, property and attribute
@@ -66,7 +74,11 @@ shortcut?, keywords?: readonly string[], disabled?, icon?, onSelect? }`. The seq
66
74
  **Methods:** `openPalette()` (after an accepted open, clears the query and resets the active row;
67
75
  no-op if already open),
68
76
  `close()`, `show()`/`hide()` (aliases of `openPalette()`/`close('api')`, the surface every Lyra
69
- overlay exposes), `registerCommand(command)` — appends to `commands` and returns an unregister function.
77
+ overlay exposes), `registerCommand(command)` — queues an addition to `commands` and returns an
78
+ unregister function. Calls in the same turn are admitted together in a microtask; await
79
+ `updateComplete` after that turn before inspecting rendered commands. The disposer also cancels a
80
+ pending registration. Assign `commands` for an immediate bulk update; replacing it before a queued
81
+ batch flush supersedes that older batch.
70
82
 
71
83
  **Keyboard:** ArrowUp/ArrowDown move the active option, skipping `disabled` rows and clamping (not
72
84
  cycling) at the ends; Home/End jump to the first/last enabled row and PageUp/PageDown by one visible
@@ -99,7 +111,8 @@ replacing the native search-cancel glyph the component resets; rendered only whi
99
111
  value), `list` (the `role="listbox"`), `group` (a group
100
112
  heading), `command-group` (a labeled ARIA group of commands), `command` (a `role="option"` button),
101
113
  `icon` (a command's leading icon glyph; only rendered when the command has one), `label`,
102
- `description`, `shortcut`, `list-spacer` (the virtual result extent), `empty`.
114
+ `description`, `shortcut`, `list-spacer` (the virtual result extent), `empty`, `limit` (original
115
+ command input-loss notice).
103
116
 
104
117
  The palette dialog paints with the shared overlay-surface family, like `lr-dialog`:
105
118
  `--lr-overlay-surface` (default `var(--lr-color-surface-container-highest)`), `--lr-overlay-border`,
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 12 parts, 0 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 14 parts, 0 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
  ---
@@ -44,9 +44,25 @@ rows, `disabled` prevents selection, and literal `label` overrides include expli
44
44
  A nonempty unknown, malformed or disabled selected value stays visible and invalid until cleared
45
45
  or replaced. It is never silently replaced or added as a selectable row.
46
46
 
47
- **SSR:** All three render declarative shadow DOM with catalog rows and the committed identifier
48
- without browser globals. Country flag emoji need no asset loader. Interactive selection requires
49
- hydration; use the same explicit catalog and locale on server and client for consistent options.
47
+ A localized `catalogPickerInputLimit` notice in `part="limit"` reports original catalog positions
48
+ omitted beyond the 1,024-position inspection ceiling. Invalid and duplicate positions inside the
49
+ prefix still consume that allowance. This notice is separate from `select-option-overflow`, which
50
+ counts admitted rows outside the popup's render window. Search covers only admitted entries;
51
+ provide a narrower or replacement catalog to include omitted input. Rebinding the picker's retained
52
+ catalog snapshot preserves the notice; a fresh below-limit catalog, `[]`, or restoring defaults
53
+ clears it. Initial mounting and reconnecting are quiet; later changed input loss is politely
54
+ announced. The message supports the usual per-instance `.strings` override.
55
+
56
+ All four regional pickers mount only the committed option before first focus or opening, then
57
+ reuse the initialized catalog until its inputs change. An explicit `requestUpdate()` refreshes
58
+ consumer presentation overrides. Popup rendering is capped at 1,000 options, with omitted rows
59
+ reported through `select-option-overflow`; source admission still accepts up to 1,024 rows.
60
+ Built-in catalogs remain fully available. Enable `searchable` to filter admitted custom catalog
61
+ entries outside the initial popup window; committed tail values remain represented.
62
+
63
+ **SSR:** All three render declarative shadow DOM with the committed option and identifier, without
64
+ browser globals. Country flag emoji need no asset loader. Interactive selection and the remaining
65
+ catalog require hydration; use the same explicit catalog and locale on server and client.
50
66
 
51
67
  `label=''`, `hint=''`, `errorText=''` (`error-text`) and the `label`, `hint`, `error` slots supply
52
68
  field chrome. `accessibleLabel=null` (attribute `aria-label`) overrides the actual control's name;
@@ -88,8 +104,9 @@ and `LyraUnitChangeDetail` from their respective component modules. Reselecting
88
104
  programmatic updates, catalog/locale changes and resets emit no selection events. Native `focus`
89
105
  and `blur` relay once; canceling `lr-invalid` suppresses native validation UI.
90
106
 
91
- **CSS parts:** `form-control`, `form-control-label`, `hint`, `error`, `select-trigger`,
92
- `select-display-input`, `select-listbox`, `select-option`, `select-option-sub`, `select-group-label`
107
+ **CSS parts:** `form-control`, `form-control-label`, `hint`, `error`, `limit` (original catalog
108
+ input-loss notice), `select-trigger`,
109
+ `select-display-input`, `select-listbox`, `select-option`, `select-option-overflow`, `select-option-sub`, `select-group-label`
93
110
  and `select-clear-button`; country additionally exposes `flag`. The three field slots are the only content slots; supply options through
94
111
  the catalog property. Shared form-control and surface tokens apply, including RTL and dark themes.
95
112
 
@@ -9,20 +9,21 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** `papaparse` — see `llms/peers.md`
12
- - **Themeable via** 12 parts, 2 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 13 parts, 2 custom properties — see this component's own `@csspart`/`@cssprop` list below
13
13
  - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
14
14
 
15
15
  ---
16
16
 
17
17
  ## `lr-csv-viewer`
18
18
 
19
- Fetches CSV text, parses quoted fields with the optional `papaparse` peer, and virtualizes body rows.
19
+ Fetches CSV text with the optional `papaparse` peer, or reads a host-owned `dataSource`, and
20
+ virtualizes body rows.
20
21
 
21
22
  Adopts `DocumentAnchorTarget`: a `cell-range` anchor addresses the raw file grid, 1-based, with the
22
23
  header row included unless `without-header-row` is set; `scrollToAnchor()` scrolls the addressed
23
24
  row/column into view via the virtualized list's `active-item-id`. `highlights` paint as a focusable
24
- `part="cell-highlight"`. A jump whose document is replaced by a concurrent `src` reassignment
25
- mid-flight reports `found: false` rather than a phantom success.
25
+ `part="cell-highlight"`. A jump whose document is replaced by a concurrent `src`, `rows`, or
26
+ `dataSource` reassignment mid-flight reports `found: false` rather than a phantom success.
26
27
 
27
28
  **Properties:** `src: string = ''` and `name: string = ''`. `withoutHeaderRow: boolean = false`
28
29
  (attribute `without-header-row`) renders the first parsed row as an ordinary data row instead of the
@@ -35,13 +36,92 @@ values, declaration breaks, and `url()` are ignored. `anchorKinds: readonly Lyra
35
36
  ['cell-range']` (this viewer's supported `LyraAnchor.kind` values for the shared anchor-target
36
37
  contract).
37
38
 
38
- **Methods:** `search(query)` resolves the match count via a case-insensitive substring match over
39
+ Input properties and legacy limits:
40
+
41
+ - `maxRows: number = 10000` (attribute `max-rows`) — raw rows, including the first row whether it
42
+ is displayed as a header or a body row; effective range 1–100,000.
43
+ - `maxColumns: number = 1000` (attribute `max-columns`) — columns in any row;
44
+ effective range 1–10,000.
45
+ - `maxBytes: number = 26214400` (attribute `max-bytes`) — source bytes, default 25 MiB;
46
+ effective range 1–262,144,000 bytes (250 MiB).
47
+ - `rows: unknown[][] | undefined` (property only, default `undefined`) — an already parsed grid,
48
+ including its first row. `withoutHeaderRow` still controls whether that row is a header.
49
+
50
+ - `dataSource: CsvViewerSource | undefined` (property only, default `undefined`) — a host-owned
51
+ logical source, described below; `CsvViewerSource = LyraTabularSource`.
52
+
53
+ Limits truncate finite fractions and clamp to their effective ranges; non-finite inputs use the
54
+ stated defaults. Set limits before assigning `rows`. In-memory input bypasses fetching and
55
+ PapaParse, takes precedence over `src` even when empty, and setting it to `undefined` restores
56
+ the configured URL source. Admission reads own data properties and rejects accessors in those
57
+ fields without invoking them; cells may be strings, numbers, booleans, `null` or `undefined`.
58
+ The outer grid and rows are frozen snapshots. Reassigning the accepted caller array or getter
59
+ snapshot is a no-op while effective limits are unchanged; replace the outer array after caller
60
+ mutation. Limit changes revalidate the current snapshot. Byte admission counts UTF-8 cell text,
61
+ with nullish cells contributing empty text; the independent 1,000,000-cell ceiling includes the
62
+ first row. Malformed or over-limit input displays a localized error and emits `lr-render-error`.
63
+
64
+ **Host-owned source input:** A defined `dataSource` takes precedence over `rows` and `src`,
65
+ bypassing file fetching and parsing. Invalid defined sources show a localized error and emit
66
+ `lr-render-error`; they do not fall back to legacy input. Setting `dataSource = undefined` cancels
67
+ source work and restores the current `rows` or URL input. Source pages never overwrite the
68
+ legacy `rows` getter. The source remains host-owned by identity rather than being cloned. After
69
+ changing its data or revision, reassign it (the same identity is accepted) or call the viewer's
70
+ unnamed `requestUpdate()`. Source replacement, refresh and locale changes invalidate stale reads,
71
+ search results and navigation. Unrelated presentation updates reuse source data.
72
+
73
+ The source supplies `revision`, full logical body `rowCount`, `columnCount` and `columnAt(index)`
74
+ returning `{ key, label }`, plus either synchronous scalar `cellAt(row, column)` or asynchronous
75
+ `readCells(request)`. Requests carry revision, locale, an `AbortSignal`, and an absolute zero-based
76
+ rectangle; return exactly its requested rows and columns. Accepted cells are strings, finite
77
+ numbers, booleans, `null` or `undefined`, with nullish values displaying empty text.
78
+ Logical body rows are not truncated by `maxRows` or materialized as a complete array. Each active
79
+ source's `columnCount` must fit `maxColumns` (default 1,000, effective hard maximum 10,000); an
80
+ oversized column count is an error. Reads remain bounded to at most 500 rows, 100 columns and
81
+ 10,000 cells per rectangle, with two retained rectangles. Each scalar's display text and each
82
+ column key/label is limited to 65,536 UTF-16 units. Retained cell and column metadata text shares a
83
+ 2,000,000-unit ceiling.
84
+ Malformed or oversized replies fail visibly instead of silently clipping source values.
85
+
86
+ Only source mode uses fixed row boxes and matching virtual-list row geometry, both resolved live
87
+ from `--lr-size-3rem` (3rem, or 48px at a 16px root font). Oversized cell display stays within that
88
+ row box without changing the source scalar. Legacy file and in-memory rows keep their automatic
89
+ heights. Column windows retain absolute `aria-colindex` values; anchors still use one-based display
90
+ coordinates and can reveal unloaded rows and offscreen columns.
91
+ Source column labels are separate metadata: hit `row: -1` is the header and body row `0` appears
92
+ at display row 2 by default, or row 1 with `withoutHeaderRow`. Hidden header hits are omitted from
93
+ search results and make the retained count nonexact. Changing `withoutHeaderRow` in source mode
94
+ clears search results and pending navigation because displayed coordinates change; cached cells
95
+ remain available.
96
+
97
+ In source mode, `search(query)` delegates to the source's global search capability rather than
98
+ scanning loaded rectangles or an admitted prefix. The viewer requests at most 1,000 hits and keeps
99
+ `matchCount` equal to retained, cursor-addressable hits. A larger known provider total does not
100
+ replace that count; `matchCountExact` is true only for exhaustive, fully retained results. Without
101
+ that capability, a nonempty query returns 0 with `matchCountExact: false` and `part="search-status"`
102
+ shows the localized `sourceSearchUnavailable` message. This adds no local search toolbar or event
103
+ fields. `searchNext()`/`searchPrevious()` report whether the target was actually revealed;
104
+ `clearSearch()` cancels pending search and dependent navigation.
105
+ `LyraTabularHit` coordinates use zero-based body `row` (or -1 for labels) and zero-based `column`.
106
+
107
+ `CsvViewerSource` is available from the component entry and package root. The component entry also
108
+ re-exports `LyraSourceCell`, `LyraTabularColumn`, `LyraTabularHit`, `LyraTabularReadRequest`,
109
+ `LyraSourceSearchRequest` and `LyraSourceSearchResult`. Shared contracts can be imported with
110
+ `import type` from `@aceshooting/lyra-ui/data-sources.js`.
111
+
112
+ Body rows and columns are windowed. Header and body share the visible column window, with
113
+ `aria-colindex` preserving full-grid positions. Search and anchors reveal offscreen columns
114
+ before navigating; admitted row/column counts and raw-grid anchor coordinates remain complete.
115
+
116
+ **Methods:** With `dataSource` undefined, `search(query)` resolves the match count via a
117
+ case-insensitive substring match over
39
118
  the same stringified cell values `cell()` renders, ordered row then column (empty/whitespace query
40
119
  behaves like `clearSearch()`); `searchNext()`/`searchPrevious()` advance/step back through matches
41
120
  (wrapping, resolving `false` when there are none); `clearSearch()` clears the query, matches, and
42
121
  painted marks.
43
122
 
44
- **Events:** `lr-render-error` with `detail.error` when fetching or parsing fails.
123
+ **Events:** `lr-render-error` with `detail.error` when fetching, parsing, in-memory admission, or
124
+ data-source validation/read/search fails.
45
125
  `lr-viewer-diagnostic` reports up to 100 recoverable PapaParse errors in one
46
126
  `detail.diagnostic` (`code: 'delimited-parse-diagnostic'`, `source: 'papaparse'`,
47
127
  `severity: 'warning'`, `fatal: false`, `cause: errors`) while the partial grid remains rendered.
@@ -59,7 +139,7 @@ cell covered by a `highlights` entry), `cell-highlight-action` (the native butto
59
139
  highlighted cell; emits `lr-highlight-activate`; its complete accessible name uses the localized
60
140
  `cellHighlightWithLabel` message with independent `{value}` and `{label}` placeholders; this action,
61
141
  not the structural `cell-highlight`, owns keyboard focus and its focus ring), `rows`,
62
- `spinner`, `error`, and `anchor-live-region` (an aria-hidden, non-live shadow mirror of the latest
142
+ `spinner`, `error`, `search-status` (global source-search unavailable notice), and `anchor-live-region` (an aria-hidden, non-live shadow mirror of the latest
63
143
  anchor-jump message; the spoken copy is appended to the shared document-level polite sink only while
64
144
  the viewer and its composed ancestors are exposed to the accessibility tree). `data-row`,
65
145
  `cell`, `cell-highlight`, and `cell-highlight-action` are rendered inside the internal
@@ -85,10 +165,13 @@ that deferred too can instead import
85
165
  same registration lazily and exports `CSV_VIEWER_TAG` (`'lr-csv-viewer'`) as a stable reference to
86
166
  the tag it eventually registers.
87
167
 
88
- Remote resources are capped at 25 MB. A quote-aware scan stops before PapaParse at 10,000 raw rows
89
- (the first row consumes the same budget whether or not it is displayed as the header),
90
- 1,000 columns in any row, 1,000,000 aggregate cells, or more than 100 parser diagnostics; streaming
91
- row callbacks enforce the same ceilings again. Exceeding any ceiling surfaces the localized
92
- `documentPreviewResourceTooLarge` message instead of a partial grid.
168
+ Remote resources use `maxBytes`. By default, a quote-aware scan stops before PapaParse at 10,000
169
+ raw rows and 1,000 columns in any row; `maxRows` and `maxColumns` configure those limits. The
170
+ first row consumes the row budget whether displayed as the header or as a body row. The
171
+ 1,000,000 aggregate-cell ceiling and 100-parser-diagnostic budget remain independent. Streaming
172
+ row callbacks enforce the same ceilings again. Exceeding a ceiling surfaces the localized
173
+ `documentPreviewResourceTooLarge` message instead of a partial grid. The fetched-text path yields
174
+ between dialect detection, structural admission and materialization; each parse pass remains
175
+ synchronous.
93
176
 
94
177
  ---
@@ -9,7 +9,7 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** none
12
- - **Themeable via** 11 parts, 0 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 13 parts, 0 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
  ---
@@ -37,6 +37,25 @@ to change options. At most 1024 rows are examined, invalid rows are skipped, and
37
37
  entry for each normalized code wins. Caller order is preserved. Names and symbols resolve once per
38
38
  catalog and locale and are shared by every picker using that catalog.
39
39
 
40
+ A localized `catalogPickerInputLimit` notice in `part="limit"` reports original catalog positions
41
+ omitted beyond the 1,024-position inspection ceiling. Invalid and duplicate positions inside the
42
+ prefix still consume that allowance. This notice is separate from `select-option-overflow`, which
43
+ counts admitted rows outside the popup's render window. Search covers only admitted entries;
44
+ provide a narrower or replacement catalog to include omitted input. Rebinding the picker's retained
45
+ catalog snapshot preserves the notice; a fresh below-limit catalog, `[]`, or restoring defaults
46
+ clears it. Initial mounting and reconnecting are quiet; later changed input loss is politely
47
+ announced. The message supports the usual per-instance `.strings` override.
48
+
49
+ Country, currency, time-zone and unit pickers defer their option catalog until first focus or
50
+ opening. Before that, only the committed option is mounted to preserve its label; an unset picker
51
+ mounts none. Programmatic option inspection should await that interaction and update completion.
52
+ After initialization, unchanged option presentations are reused; explicit `requestUpdate()`
53
+ refreshes consumer presentation overrides. Each popup renders at most 1,000 options, exposing
54
+ omitted rows through `select-option-overflow`. Built-in catalogs remain fully available. For an
55
+ admitted catalog larger than the popup window, enable `searchable` and filter to entries outside
56
+ that initial window;
57
+ a committed tail value remains represented within the bounded popup.
58
+
40
59
  **Unavailable values stay visible.** A value outside the configured catalog, a malformed nonempty
41
60
  value, or a selected entry that becomes disabled is retained and marked unavailable. It fails
42
61
  validation until cleared or replaced; it is never silently switched to another currency. Such a
@@ -83,8 +102,9 @@ updates, resets, locale changes and catalog replacements emit no change event. N
83
102
  **Slots:** `label`, `hint`, `error` — custom field copy. There is no option/default content slot;
84
103
  bind `currencies` to supply rows.
85
104
 
86
- **CSS parts:** `form-control`, `form-control-label`, `hint`, `error`;
87
- `select-trigger`, `select-display-input`, `select-listbox`, `select-option`, `select-option-sub`,
105
+ **CSS parts:** `form-control`, `form-control-label`, `hint`, `error`, `limit` (original catalog
106
+ input-loss notice);
107
+ `select-trigger`, `select-display-input`, `select-listbox`, `select-option`, `select-option-overflow`, `select-option-sub`,
88
108
  `select-clear-button`, `select-group-label`. Both composed controls preserve these part names
89
109
  and inherit shared form-control and surface tokens.
90
110
 
@@ -45,18 +45,34 @@ only that page plus the header. In server mode, `total` still drives `pageCount`
45
45
  does not inflate `aria-rowcount` while `aria-rowindex` restarts for each loaded page. Treat these
46
46
  ARIA values as page-local positions rather than as the dataset-wide total.
47
47
 
48
+ Row details remain virtualized as part of their owning row's measured block. `--max-height: none`
49
+ still opts out of row virtualization. Wide grids mount columns intersecting the inline viewport
50
+ plus overscan, pinned columns, and the focused column; ARIA column positions refer to the complete
51
+ visible column sequence. Above 50 columns, CSS-resolved widths stay stable while scrolling; newly
52
+ mounted content fits those widths. Column definitions/widths, row projection, allocation, font
53
+ changes and explicit refresh recalculate them. Header, body and footer share these tracks.
54
+ Search and text filters reuse folded cells, sorting is independent of query changes, and
55
+ footers/aggregates reuse results until their row/column inputs change. Call `requestUpdate()` after
56
+ changing borrowed row content or callback-dependent external state in place.
57
+
48
58
  **Properties:**
49
59
 
50
60
  - `appearance: 'outlined' | 'plain' = 'outlined'` (`appearance`, reflected).
51
61
  - `childRows: string | ((row) => readonly Row[] | undefined) | null = null` (`child-rows`) — dot path or
52
62
  callback for nested rows. Tree sorting stays within each parent and paging keeps a subtree with
53
- its top-level parent. Projection is iterative, cycle-safe, and bounded to 10,000 total rows and
63
+ its top-level parent. Projection is iterative, cycle-safe, and bounded to `maxRows` total rows and
54
64
  64 descendant levels; exceeding a budget renders the localized `tree-limit` notice.
55
65
  - `columnOrder: readonly string[] = []` (JS-only) — empty preserves declaration order.
56
66
  - `columns: readonly DataGridColumn<Row>[] = []` (JS-only).
57
67
  - `data: readonly Row[] = []` (JS-only) — client rows, or the currently loaded server page.
58
- Flat input beyond 10,000 rows shows the localized `row-limit` notice; nested input retains its
68
+ Flat input beyond `maxRows` rows shows the localized `row-limit` notice; nested input retains its
59
69
  `tree-limit` notice when the node or depth budget is reached.
70
+ - `maxRows: number = 10000` (`max-rows`) — client-row and tree-descendant admission limit,
71
+ normalized to 1–100,000. Set it before assigning `data`; after raising it, reassign the source
72
+ array to restore excluded rows. Admission reads at most `maxRows` source positions through own
73
+ data descriptors while preserving row object identities. Tree depth remains bounded to 64
74
+ descendant levels, and column definitions retain at most 10,000 entries. Controlled selected
75
+ and expanded keys remain independent of this row-admission cap.
60
76
  - `dataSource: ((request) => Promise<{ rows, total }>) | null = null` (JS-only) — providing it
61
77
  enables server behavior.
62
78
  - `error: boolean = false` (`error`, reflected) — replaces the body row with the failed-load
@@ -71,7 +87,7 @@ ARIA values as page-local positions rather than as the dataset-wide total.
71
87
  The mirrored `expandedKeys` spelling remains a compatibility alias for this same state.
72
88
  - `filterDebounce: number = 250` (`filter-debounce`) — finite server search/filter delay.
73
89
  - `filteredCount: number` (read-only, JS-only) — matching client rows before paging.
74
- - `dataTruncated: boolean` (read-only, JS-only) — true when projection drops input over 10,000 rows
90
+ - `dataTruncated: boolean` (read-only, JS-only) — true when projection drops input over `maxRows` rows
75
91
  or 64 nesting levels; controlled `selectedRowKeys` remain because omitted keys may exist.
76
92
  - `filterFromLeafRows: boolean = false` (`filter-from-leaf-rows`) — retains ancestors of matching
77
93
  tree descendants.
@@ -180,9 +196,11 @@ are `text`, `equals`, `number-range`, `date-range`, `set`, `includes-any`, and `
180
196
  group/tree/detail display rows, and scrolls with `align: 'start' | 'center' | 'end'`. A row hidden
181
197
  in a collapsed branch is a no-op.
182
198
 
183
- **Server mode:** `dataSource` receives `{ sort, filters, search, page, pageSize, signal }`. A newer
184
- request aborts and supersedes the previous one; rejected requests keep prior rows and emit
185
- `lr-data-error`. Filter/search requests use `filterDebounce`; sorting and paging load immediately.
199
+ **Server mode:** `dataSource` receives `{ sort, filters, search, page, pageSize, signal }`. A new
200
+ query immediately aborts and supersedes the previous request, including while its replacement
201
+ waits for `filterDebounce`. Obsolete results and errors cannot update the grid even when a loader
202
+ ignores the signal. A rejected current request keeps prior rows and emits `lr-data-error`.
203
+ Filter/search requests use `filterDebounce`; sorting and paging load immediately.
186
204
  For event-driven loading, set `server`, listen to the mirrored `request` event, and assign `data`,
187
205
  `total`, and `loading` yourself. The redundant Lyra-only `lr-data-request` event was removed in
188
206
  9.0.0; rename that listener to `request`. Each dispatch carries a fresh frozen detail that cannot
@@ -9,15 +9,15 @@
9
9
  - **Release history** [CHANGELOG.md](../../CHANGELOG.md)
10
10
  - **Deprecations** none
11
11
  - **Optional peers** `papaparse` — see `llms/peers.md`
12
- - **Themeable via** 12 parts, 3 custom properties — see this component's own `@csspart`/`@cssprop` list below
12
+ - **Themeable via** 13 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
  ---
16
16
 
17
17
  ## `lr-dataset-viewer`
18
18
 
19
- Fetches tab-, pipe-, or delimiter-separated text and renders a virtualized, accessible table (a
20
- `role="table"` container with a sticky `role="row"` header, composed with `<lr-virtual-list
19
+ Fetches tab-, pipe-, or delimiter-separated text, or reads a host-owned `dataSource`, and renders a
20
+ virtualized, accessible table (a `role="table"` container with a sticky `role="row"` header, composed with `<lr-virtual-list
21
21
  item-role="row">` for the body) using the optional `papaparse` peer. The document registry matches
22
22
  `.tsv`, `.psv`, and `.dat` filenames.
23
23
 
@@ -26,7 +26,7 @@ header row always occupying row 1 (this component always parses with a header ro
26
26
  is never part of the virtualized body); `scrollToAnchor()` scrolls the addressed row into view via
27
27
  the virtualized list's `active-item-id`. `highlights` paint as a `part="cell-highlight"` cell wrapping a
28
28
  focusable `part="cell-highlight-action"` native button, keeping the ARIA table tree intact. A jump
29
- whose document is replaced by a concurrent `src` reassignment mid-flight reports `found: false`
29
+ whose document is replaced by a concurrent `src`, `table`, or `dataSource` reassignment mid-flight reports `found: false`
30
30
  rather than a phantom success, and a header-row target scrolls with the same
31
31
  `prefers-reduced-motion`-gated smooth behavior every other row uses.
32
32
 
@@ -50,12 +50,90 @@ complementary, matching `lr-csv-viewer`/`lr-archive-viewer`'s base-vs-content sp
50
50
  `anchorKinds: readonly LyraAnchorKind[] = ['cell-range']` (this viewer's supported `LyraAnchor.kind`
51
51
  values for the shared anchor-target contract).
52
52
 
53
- **Methods:** `search(query)` resolves the match count via a case-insensitive substring search over
54
- every body cell's raw string value, ordered row then column (empty/whitespace query behaves like
53
+ Input properties and legacy limits:
54
+
55
+ - `maxRows: number = 10000` (attribute `max-rows`) — data rows, excluding the separate header;
56
+ effective range 1–100,000.
57
+ - `maxColumns: number = 1000` (attribute `max-columns`) — fields; effective range 1–10,000.
58
+ - `maxBytes: number = 26214400` (attribute `max-bytes`) — source bytes, default 25 MiB;
59
+ effective range 1–262,144,000 bytes (250 MiB).
60
+ - `table: DatasetTable | undefined` (property only, default `undefined`) — an already parsed
61
+ `{ fields: string[]; rows: Record<string, string>[] }` table, with the header in `fields` rather
62
+ than in `rows`. Field names must be unique strings. Runtime scalar cell values are normalized to
63
+ strings, with `null` and `undefined` becoming empty text.
64
+
65
+ - `dataSource: DatasetViewerSource | undefined` (property only, default `undefined`) — a host-owned
66
+ logical source, described below; `DatasetViewerSource = LyraTabularSource`.
67
+
68
+ Limits truncate finite fractions and clamp to their effective ranges; non-finite inputs use the
69
+ stated defaults. Set limits before assigning `table`. In-memory input bypasses fetching and
70
+ PapaParse, takes precedence over `src` even when empty, and setting it to `undefined` restores
71
+ the configured URL source. Admission reads own data properties, rejecting accessors in those
72
+ fields without invoking them, and accepts only string, number, boolean, `null` or `undefined`
73
+ cells. The table, rows and records are frozen snapshots. Reassigning the accepted caller object or
74
+ getter snapshot is a no-op while effective limits are unchanged; replace the outer table after
75
+ caller mutation. Limit changes revalidate the current snapshot. Byte admission counts the UTF-8
76
+ text of cells and field names; the independent 1,000,000-cell budget includes the header.
77
+ Malformed or over-limit input displays a localized error and emits `lr-render-error`.
78
+
79
+ **Host-owned source input:** A defined `dataSource` takes precedence over `table` and `src`,
80
+ bypassing file fetching and parsing. Invalid defined sources show a localized error and emit
81
+ `lr-render-error`; they do not fall back to legacy input. Setting `dataSource = undefined` cancels
82
+ source work and restores the current `table` or URL input. Source pages never overwrite the
83
+ legacy `table` getter. The source remains host-owned by identity rather than being cloned. After
84
+ changing its data or revision, reassign it (the same identity is accepted) or call the viewer's
85
+ unnamed `requestUpdate()`. Source replacement, refresh and locale changes invalidate stale reads,
86
+ search results and navigation. Unrelated presentation updates reuse source data.
87
+
88
+ The source supplies `revision`, full logical body `rowCount`, `columnCount` and `columnAt(index)`
89
+ returning `{ key, label }`, plus either synchronous scalar `cellAt(row, column)` or asynchronous
90
+ `readCells(request)`. Requests carry revision, locale, an `AbortSignal`, and an absolute zero-based
91
+ rectangle; return exactly its requested rows and columns. Accepted cells are strings, finite
92
+ numbers, booleans, `null` or `undefined`, with nullish values displaying empty text.
93
+ Logical body rows are not truncated by `maxRows` or materialized as a complete array. Each active
94
+ source's `columnCount` must fit `maxColumns` (default 1,000, effective hard maximum 10,000); an
95
+ oversized column count is an error. Reads remain bounded to at most 500 rows, 100 columns and
96
+ 10,000 cells per rectangle, with two retained rectangles. Each scalar's display text and each
97
+ column key/label is limited to 65,536 UTF-16 units. Retained cell and column metadata text shares a
98
+ 2,000,000-unit ceiling.
99
+ Malformed or oversized replies fail visibly instead of silently clipping source values.
100
+
101
+ Only source mode uses fixed row boxes and matching virtual-list row geometry, both resolved live
102
+ from `--lr-size-3rem` (3rem, or 48px at a 16px root font). Oversized cell display stays within that
103
+ row box without changing the source scalar. Legacy file and in-memory rows keep their automatic
104
+ heights. Column windows retain absolute `aria-colindex` values; anchors still use one-based display
105
+ coordinates and can reveal unloaded rows and offscreen columns.
106
+ Source column labels always occupy display row 1; hit `row: -1` addresses those labels and body
107
+ row `0` appears at display row 2. The same mapping applies in both `scrollMode` values.
108
+
109
+ In source mode, `search(query)` delegates to the source's global search capability rather than
110
+ scanning loaded rectangles or an admitted prefix. The viewer requests at most 1,000 hits and keeps
111
+ `matchCount` equal to retained, cursor-addressable hits. A larger known provider total does not
112
+ replace that count; `matchCountExact` is true only for exhaustive, fully retained results. Without
113
+ that capability, a nonempty query returns 0 with `matchCountExact: false` and `part="search-status"`
114
+ shows the localized `sourceSearchUnavailable` message. This adds no local search toolbar or event
115
+ fields. `searchNext()`/`searchPrevious()` report whether the target was actually revealed;
116
+ `clearSearch()` cancels pending search and dependent navigation.
117
+ `LyraTabularHit` coordinates use zero-based body `row` (or -1 for labels) and zero-based `column`.
118
+
119
+ `DatasetViewerSource` is available from the component entry and package root. The component entry also
120
+ re-exports `LyraSourceCell`, `LyraTabularColumn`, `LyraTabularHit`, `LyraTabularReadRequest`,
121
+ `LyraSourceSearchRequest` and `LyraSourceSearchResult`. Shared contracts can be imported with
122
+ `import type` from `@aceshooting/lyra-ui/data-sources.js`.
123
+
124
+ Both body rows and columns are windowed. Header and body share the visible column window, with
125
+ `aria-colindex` retaining each cell's full-grid position. Search and anchors reveal offscreen
126
+ columns before navigating; admitted row/column counts and raw-grid anchor coordinates remain
127
+ complete. This also applies to the page scroll mode.
128
+
129
+ **Methods:** With `dataSource` undefined, `search(query)` resolves the match count via a
130
+ case-insensitive substring search over header fields followed by every body cell's raw string
131
+ value, ordered row then column (empty/whitespace query behaves like
55
132
  `clearSearch()`); `searchNext()`/`searchPrevious()` advance/step back through matches (wrapping,
56
133
  resolving `false` when there are none); `clearSearch()` clears the query, matches, and cursor.
57
134
 
58
- **Events:** `lr-render-error` with `detail.error` when fetching or parsing fails.
135
+ **Events:** `lr-render-error` with `detail.error` when fetching, parsing, in-memory admission, or
136
+ data-source validation/read/search fails.
59
137
  `lr-viewer-diagnostic` reports up to 100 recoverable PapaParse errors in one
60
138
  `detail.diagnostic` (`code: 'delimited-parse-diagnostic'`, `source: 'papaparse'`,
61
139
  `severity: 'warning'`, `fatal: false`, `cause: errors`) while the partial table remains rendered.
@@ -73,7 +151,7 @@ every fetch state), `body`, `table`, `header-row`, `header-cell`, `data-row`, `c
73
151
  `cell-highlight-action` (the native button filling a highlighted cell — focusable, emits
74
152
  `lr-highlight-activate` on click or Enter/Space; its complete accessible name uses the localized
75
153
  `cellHighlightWithLabel` message with independent `{value}` and `{label}` placeholders), `spinner`,
76
- `error`, and `anchor-live-region` (an aria-hidden, non-live shadow mirror of the latest anchor-jump
154
+ `error`, `search-status` (global source-search unavailable notice), and `anchor-live-region` (an aria-hidden, non-live shadow mirror of the latest anchor-jump
77
155
  message; the spoken copy is appended to the shared document-level polite sink only while the viewer
78
156
  and its composed ancestors are exposed to the accessibility tree). `data-row`, `cell`,
79
157
  `cell-highlight` and `cell-highlight-action` render inside the internal `<lr-virtual-list>` and are
@@ -96,7 +174,10 @@ sticky header row, independent of the highlight outline above.
96
174
 
97
175
  **Optional peer dependency:** `papaparse`.
98
176
 
99
- Remote resources are capped at 25 MB. A quote-aware scan stops before PapaParse at 10,000 data rows,
100
- 1,000 fields in any row, 1,000,000 aggregate cells (including the header), or more than 100 parser
101
- diagnostics; streaming record callbacks enforce the same ceilings again. Exceeding any ceiling
177
+ Remote resources use `maxBytes`. By default, a quote-aware scan stops before PapaParse at 10,000
178
+ data rows and 1,000 fields in any row; `maxRows` and `maxColumns` configure those limits. The
179
+ 1,000,000 aggregate-cell ceiling (including the header) and 100-parser-diagnostic budget remain
180
+ independent. Streaming record callbacks enforce the same ceilings again. Exceeding a ceiling
102
181
  surfaces the localized `documentPreviewResourceTooLarge` message instead of a partial table.
182
+ The fetched-text path yields between dialect detection, structural admission and materialization;
183
+ each parse pass remains synchronous.
@@ -24,7 +24,7 @@ nested and `slot=""` headings remain outside automatic discovery.
24
24
 
25
25
  ### `lr-dialog`
26
26
 
27
- Dialog and drawer panels follow the [shared surface treatment](shared/styles-and-tokens.md).
27
+ Dialog and drawer panels follow the [shared surface treatment](../shared/styles-and-tokens.md).
28
28
  The public panel and body retain their scrolling and focus behavior.
29
29
 
30
30
  A modal/overlay: `role="dialog"`, focus-trapped while open, dismissible via Escape or (opt-in) a