@aceshooting/lyra-ui 5.2.0 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/CHANGELOG.md +3979 -0
  2. package/README.md +6 -5
  3. package/custom-elements.json +3580 -1047
  4. package/dist/components/agent-tools/artifact-panel/artifact-panel.class.d.ts +4 -2
  5. package/dist/components/agent-tools/artifact-panel/artifact-panel.class.d.ts.map +1 -1
  6. package/dist/components/agent-tools/artifact-panel/artifact-panel.class.js.map +1 -1
  7. package/dist/components/agent-tools/browser-frame/browser-frame.class.d.ts +7 -3
  8. package/dist/components/agent-tools/browser-frame/browser-frame.class.d.ts.map +1 -1
  9. package/dist/components/agent-tools/browser-frame/browser-frame.class.js.map +1 -1
  10. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.d.ts +36 -4
  11. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.d.ts.map +1 -1
  12. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js +68 -19
  13. package/dist/components/agent-tools/confirm-bar/confirm-bar.class.js.map +1 -1
  14. package/dist/components/agent-tools/confirm-bar/confirm-bar.d.ts +1 -0
  15. package/dist/components/agent-tools/confirm-bar/confirm-bar.d.ts.map +1 -1
  16. package/dist/components/agent-tools/confirm-bar/confirm-bar.js +1 -0
  17. package/dist/components/agent-tools/confirm-bar/confirm-bar.js.map +1 -1
  18. package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.d.ts.map +1 -1
  19. package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.js +10 -29
  20. package/dist/components/agent-tools/confirm-bar/confirm-bar.styles.js.map +1 -1
  21. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.d.ts +7 -7
  22. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.d.ts.map +1 -1
  23. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js +14 -13
  24. package/dist/components/agent-tools/eval-dataset/eval-dataset.class.js.map +1 -1
  25. package/dist/components/agent-tools/eval-dataset/eval-dataset.d.ts +1 -1
  26. package/dist/components/agent-tools/eval-dataset/eval-dataset.d.ts.map +1 -1
  27. package/dist/components/agent-tools/eval-dataset/eval-dataset.js +1 -1
  28. package/dist/components/agent-tools/eval-dataset/eval-dataset.js.map +1 -1
  29. package/dist/components/agent-tools/eval-result/eval-result.class.d.ts +11 -9
  30. package/dist/components/agent-tools/eval-result/eval-result.class.d.ts.map +1 -1
  31. package/dist/components/agent-tools/eval-result/eval-result.class.js +9 -7
  32. package/dist/components/agent-tools/eval-result/eval-result.class.js.map +1 -1
  33. package/dist/components/agent-tools/eval-result/eval-result.d.ts +1 -1
  34. package/dist/components/agent-tools/eval-result/eval-result.d.ts.map +1 -1
  35. package/dist/components/agent-tools/eval-result/eval-result.js +1 -1
  36. package/dist/components/agent-tools/eval-result/eval-result.js.map +1 -1
  37. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts +47 -5
  38. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.d.ts.map +1 -1
  39. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js +90 -15
  40. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.class.js.map +1 -1
  41. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.d.ts +2 -1
  42. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.d.ts.map +1 -1
  43. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.js +2 -1
  44. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.js.map +1 -1
  45. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.d.ts.map +1 -1
  46. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.js +6 -26
  47. package/dist/components/agent-tools/tool-approval-dialog/tool-approval-dialog.styles.js.map +1 -1
  48. package/dist/components/charts/chart/chart.class.d.ts.map +1 -1
  49. package/dist/components/charts/chart/chart.class.js.map +1 -1
  50. package/dist/components/charts/chart/lite-chart.class.d.ts +5 -1
  51. package/dist/components/charts/chart/lite-chart.class.d.ts.map +1 -1
  52. package/dist/components/charts/chart/lite-chart.class.js.map +1 -1
  53. package/dist/components/conversation/code-block/greycat-language.d.ts +5 -0
  54. package/dist/components/conversation/code-block/greycat-language.d.ts.map +1 -1
  55. package/dist/components/conversation/code-block/greycat-language.js +48 -6
  56. package/dist/components/conversation/code-block/greycat-language.js.map +1 -1
  57. package/dist/components/conversation/message-feedback/message-feedback.class.d.ts +5 -3
  58. package/dist/components/conversation/message-feedback/message-feedback.class.d.ts.map +1 -1
  59. package/dist/components/conversation/message-feedback/message-feedback.class.js.map +1 -1
  60. package/dist/components/conversation/thread-list/thread-list.class.d.ts +16 -3
  61. package/dist/components/conversation/thread-list/thread-list.class.d.ts.map +1 -1
  62. package/dist/components/conversation/thread-list/thread-list.class.js +13 -3
  63. package/dist/components/conversation/thread-list/thread-list.class.js.map +1 -1
  64. package/dist/components/data/calendar/calendar.class.d.ts +3 -1
  65. package/dist/components/data/calendar/calendar.class.d.ts.map +1 -1
  66. package/dist/components/data/calendar/calendar.class.js.map +1 -1
  67. package/dist/components/data/calendar/calendar.styles.js +3 -3
  68. package/dist/components/data/document-library/document-library.class.d.ts +6 -5
  69. package/dist/components/data/document-library/document-library.class.d.ts.map +1 -1
  70. package/dist/components/data/document-library/document-library.class.js +2 -3
  71. package/dist/components/data/document-library/document-library.class.js.map +1 -1
  72. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts +8 -1
  73. package/dist/components/data/flow-canvas/flow-canvas.class.d.ts.map +1 -1
  74. package/dist/components/data/flow-canvas/flow-canvas.class.js +5 -0
  75. package/dist/components/data/flow-canvas/flow-canvas.class.js.map +1 -1
  76. package/dist/components/data/flow-canvas/flow-canvas.styles.d.ts.map +1 -1
  77. package/dist/components/data/flow-canvas/flow-canvas.styles.js +2 -1
  78. package/dist/components/data/flow-canvas/flow-canvas.styles.js.map +1 -1
  79. package/dist/components/data/heatmap/heatmap.class.d.ts +6 -2
  80. package/dist/components/data/heatmap/heatmap.class.d.ts.map +1 -1
  81. package/dist/components/data/heatmap/heatmap.class.js.map +1 -1
  82. package/dist/components/data/table/table.class.d.ts +16 -4
  83. package/dist/components/data/table/table.class.d.ts.map +1 -1
  84. package/dist/components/data/table/table.class.js.map +1 -1
  85. package/dist/components/data/tree/tree.class.d.ts +3 -1
  86. package/dist/components/data/tree/tree.class.d.ts.map +1 -1
  87. package/dist/components/data/tree/tree.class.js.map +1 -1
  88. package/dist/components/data/word-cloud/word-cloud-layout.d.ts +7 -2
  89. package/dist/components/data/word-cloud/word-cloud-layout.d.ts.map +1 -1
  90. package/dist/components/data/word-cloud/word-cloud-layout.js.map +1 -1
  91. package/dist/components/data/word-cloud/word-cloud.class.d.ts +3 -3
  92. package/dist/components/data/word-cloud/word-cloud.class.d.ts.map +1 -1
  93. package/dist/components/data/word-cloud/word-cloud.class.js.map +1 -1
  94. package/dist/components/forms/button/button.class.d.ts +5 -0
  95. package/dist/components/forms/button/button.class.d.ts.map +1 -1
  96. package/dist/components/forms/button/button.class.js +5 -0
  97. package/dist/components/forms/button/button.class.js.map +1 -1
  98. package/dist/components/forms/button/button.styles.d.ts.map +1 -1
  99. package/dist/components/forms/button/button.styles.js +6 -2
  100. package/dist/components/forms/button/button.styles.js.map +1 -1
  101. package/dist/components/forms/color-picker/color-picker.class.d.ts +4 -0
  102. package/dist/components/forms/color-picker/color-picker.class.d.ts.map +1 -1
  103. package/dist/components/forms/color-picker/color-picker.class.js +6 -0
  104. package/dist/components/forms/color-picker/color-picker.class.js.map +1 -1
  105. package/dist/components/forms/color-picker/color-picker.styles.d.ts.map +1 -1
  106. package/dist/components/forms/color-picker/color-picker.styles.js +20 -2
  107. package/dist/components/forms/color-picker/color-picker.styles.js.map +1 -1
  108. package/dist/components/forms/combobox/combobox.class.d.ts +2 -2
  109. package/dist/components/forms/combobox/combobox.class.d.ts.map +1 -1
  110. package/dist/components/forms/combobox/combobox.class.js +1 -1
  111. package/dist/components/forms/combobox/combobox.class.js.map +1 -1
  112. package/dist/components/forms/combobox/combobox.styles.d.ts.map +1 -1
  113. package/dist/components/forms/combobox/combobox.styles.js +8 -0
  114. package/dist/components/forms/combobox/combobox.styles.js.map +1 -1
  115. package/dist/components/forms/date-picker/date-picker.class.d.ts +4 -0
  116. package/dist/components/forms/date-picker/date-picker.class.d.ts.map +1 -1
  117. package/dist/components/forms/date-picker/date-picker.class.js +6 -0
  118. package/dist/components/forms/date-picker/date-picker.class.js.map +1 -1
  119. package/dist/components/forms/date-picker/date-picker.styles.d.ts.map +1 -1
  120. package/dist/components/forms/date-picker/date-picker.styles.js +15 -0
  121. package/dist/components/forms/date-picker/date-picker.styles.js.map +1 -1
  122. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts +9 -2
  123. package/dist/components/forms/emoji-picker/emoji-picker.class.d.ts.map +1 -1
  124. package/dist/components/forms/emoji-picker/emoji-picker.class.js +11 -2
  125. package/dist/components/forms/emoji-picker/emoji-picker.class.js.map +1 -1
  126. package/dist/components/forms/emoji-picker/emoji-picker.styles.d.ts.map +1 -1
  127. package/dist/components/forms/emoji-picker/emoji-picker.styles.js +30 -7
  128. package/dist/components/forms/emoji-picker/emoji-picker.styles.js.map +1 -1
  129. package/dist/components/forms/icon-button/icon-button.class.d.ts +20 -3
  130. package/dist/components/forms/icon-button/icon-button.class.d.ts.map +1 -1
  131. package/dist/components/forms/icon-button/icon-button.class.js +84 -4
  132. package/dist/components/forms/icon-button/icon-button.class.js.map +1 -1
  133. package/dist/components/forms/icon-button/icon-button.styles.d.ts.map +1 -1
  134. package/dist/components/forms/icon-button/icon-button.styles.js +4 -0
  135. package/dist/components/forms/icon-button/icon-button.styles.js.map +1 -1
  136. package/dist/components/forms/locale-picker/locale-picker.class.d.ts +221 -0
  137. package/dist/components/forms/locale-picker/locale-picker.class.d.ts.map +1 -0
  138. package/dist/components/forms/locale-picker/locale-picker.class.js +630 -0
  139. package/dist/components/forms/locale-picker/locale-picker.class.js.map +1 -0
  140. package/dist/components/forms/locale-picker/locale-picker.d.ts +3 -0
  141. package/dist/components/forms/locale-picker/locale-picker.d.ts.map +1 -0
  142. package/dist/components/forms/locale-picker/locale-picker.js +6 -0
  143. package/dist/components/forms/locale-picker/locale-picker.js.map +1 -0
  144. package/dist/components/forms/locale-picker/locale-picker.styles.d.ts +2 -0
  145. package/dist/components/forms/locale-picker/locale-picker.styles.d.ts.map +1 -0
  146. package/dist/components/forms/locale-picker/locale-picker.styles.js +213 -0
  147. package/dist/components/forms/locale-picker/locale-picker.styles.js.map +1 -0
  148. package/dist/components/forms/phone-input/phone-input.class.d.ts +11 -0
  149. package/dist/components/forms/phone-input/phone-input.class.d.ts.map +1 -1
  150. package/dist/components/forms/phone-input/phone-input.class.js +13 -0
  151. package/dist/components/forms/phone-input/phone-input.class.js.map +1 -1
  152. package/dist/components/forms/phone-input/phone-input.styles.d.ts.map +1 -1
  153. package/dist/components/forms/phone-input/phone-input.styles.js +39 -3
  154. package/dist/components/forms/phone-input/phone-input.styles.js.map +1 -1
  155. package/dist/components/forms/select/select.class.d.ts +2 -2
  156. package/dist/components/forms/select/select.class.d.ts.map +1 -1
  157. package/dist/components/forms/select/select.class.js +1 -1
  158. package/dist/components/forms/select/select.class.js.map +1 -1
  159. package/dist/components/forms/select/select.styles.d.ts.map +1 -1
  160. package/dist/components/forms/select/select.styles.js +6 -0
  161. package/dist/components/forms/select/select.styles.js.map +1 -1
  162. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts +12 -3
  163. package/dist/components/forms/swatch-picker/swatch-picker.class.d.ts.map +1 -1
  164. package/dist/components/forms/swatch-picker/swatch-picker.class.js +14 -3
  165. package/dist/components/forms/swatch-picker/swatch-picker.class.js.map +1 -1
  166. package/dist/components/forms/swatch-picker/swatch-picker.styles.d.ts.map +1 -1
  167. package/dist/components/forms/swatch-picker/swatch-picker.styles.js +32 -9
  168. package/dist/components/forms/swatch-picker/swatch-picker.styles.js.map +1 -1
  169. package/dist/components/forms/time-range/time-range.class.d.ts +8 -0
  170. package/dist/components/forms/time-range/time-range.class.d.ts.map +1 -1
  171. package/dist/components/forms/time-range/time-range.class.js +10 -0
  172. package/dist/components/forms/time-range/time-range.class.js.map +1 -1
  173. package/dist/components/forms/time-range/time-range.styles.d.ts.map +1 -1
  174. package/dist/components/forms/time-range/time-range.styles.js +42 -13
  175. package/dist/components/forms/time-range/time-range.styles.js.map +1 -1
  176. package/dist/components/forms/token-input/token-input.class.d.ts +11 -0
  177. package/dist/components/forms/token-input/token-input.class.d.ts.map +1 -1
  178. package/dist/components/forms/token-input/token-input.class.js +13 -0
  179. package/dist/components/forms/token-input/token-input.class.js.map +1 -1
  180. package/dist/components/forms/token-input/token-input.styles.d.ts.map +1 -1
  181. package/dist/components/forms/token-input/token-input.styles.js +36 -2
  182. package/dist/components/forms/token-input/token-input.styles.js.map +1 -1
  183. package/dist/components/layout/app-rail/app-rail.class.d.ts +6 -2
  184. package/dist/components/layout/app-rail/app-rail.class.d.ts.map +1 -1
  185. package/dist/components/layout/app-rail/app-rail.class.js.map +1 -1
  186. package/dist/components/layout/control-group/control-group.class.d.ts +16 -0
  187. package/dist/components/layout/control-group/control-group.class.d.ts.map +1 -1
  188. package/dist/components/layout/control-group/control-group.class.js +19 -0
  189. package/dist/components/layout/control-group/control-group.class.js.map +1 -1
  190. package/dist/components/layout/control-group/control-group.styles.d.ts.map +1 -1
  191. package/dist/components/layout/control-group/control-group.styles.js +8 -3
  192. package/dist/components/layout/control-group/control-group.styles.js.map +1 -1
  193. package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts +3 -0
  194. package/dist/components/layout/dashboard-grid/dashboard-grid.class.d.ts.map +1 -1
  195. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js +3 -0
  196. package/dist/components/layout/dashboard-grid/dashboard-grid.class.js.map +1 -1
  197. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.d.ts.map +1 -1
  198. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js +2 -1
  199. package/dist/components/layout/dashboard-grid/dashboard-grid.styles.js.map +1 -1
  200. package/dist/components/layout/reorder-list/reorder-item.class.d.ts +59 -0
  201. package/dist/components/layout/reorder-list/reorder-item.class.d.ts.map +1 -0
  202. package/dist/components/layout/reorder-list/reorder-item.class.js +110 -0
  203. package/dist/components/layout/reorder-list/reorder-item.class.js.map +1 -0
  204. package/dist/components/layout/reorder-list/reorder-item.d.ts +2 -0
  205. package/dist/components/layout/reorder-list/reorder-item.d.ts.map +1 -0
  206. package/dist/components/layout/reorder-list/reorder-item.js +5 -0
  207. package/dist/components/layout/reorder-list/reorder-item.js.map +1 -0
  208. package/dist/components/{data/data-grid/data-grid.styles.d.ts → layout/reorder-list/reorder-item.styles.d.ts} +1 -1
  209. package/dist/components/layout/reorder-list/reorder-item.styles.d.ts.map +1 -0
  210. package/dist/components/layout/reorder-list/reorder-item.styles.js +62 -0
  211. package/dist/components/layout/reorder-list/reorder-item.styles.js.map +1 -0
  212. package/dist/components/layout/reorder-list/reorder-list.class.d.ts +77 -0
  213. package/dist/components/layout/reorder-list/reorder-list.class.d.ts.map +1 -0
  214. package/dist/components/layout/reorder-list/reorder-list.class.js +197 -0
  215. package/dist/components/layout/reorder-list/reorder-list.class.js.map +1 -0
  216. package/dist/components/layout/reorder-list/reorder-list.d.ts +3 -0
  217. package/dist/components/layout/reorder-list/reorder-list.d.ts.map +1 -0
  218. package/dist/components/layout/reorder-list/reorder-list.js +6 -0
  219. package/dist/components/layout/reorder-list/reorder-list.js.map +1 -0
  220. package/dist/components/layout/reorder-list/reorder-list.styles.d.ts +2 -0
  221. package/dist/components/layout/reorder-list/reorder-list.styles.d.ts.map +1 -0
  222. package/dist/components/layout/reorder-list/reorder-list.styles.js +12 -0
  223. package/dist/components/layout/reorder-list/reorder-list.styles.js.map +1 -0
  224. package/dist/components/layout/virtual-list/virtual-list.class.d.ts +7 -1
  225. package/dist/components/layout/virtual-list/virtual-list.class.d.ts.map +1 -1
  226. package/dist/components/layout/virtual-list/virtual-list.class.js +3 -0
  227. package/dist/components/layout/virtual-list/virtual-list.class.js.map +1 -1
  228. package/dist/components/layout/virtual-list/virtual-list.styles.d.ts.map +1 -1
  229. package/dist/components/layout/virtual-list/virtual-list.styles.js +2 -1
  230. package/dist/components/layout/virtual-list/virtual-list.styles.js.map +1 -1
  231. package/dist/components/overlays/chip/chip.class.d.ts +2 -2
  232. package/dist/components/overlays/chip/chip.class.d.ts.map +1 -1
  233. package/dist/components/overlays/chip/chip.class.js +1 -1
  234. package/dist/components/overlays/chip/chip.styles.d.ts.map +1 -1
  235. package/dist/components/overlays/chip/chip.styles.js +10 -0
  236. package/dist/components/overlays/chip/chip.styles.js.map +1 -1
  237. package/dist/components/overlays/overlay/popover.class.d.ts +3 -1
  238. package/dist/components/overlays/overlay/popover.class.d.ts.map +1 -1
  239. package/dist/components/overlays/overlay/popover.class.js.map +1 -1
  240. package/dist/components/retrieval/graph/graph.class.d.ts +7 -3
  241. package/dist/components/retrieval/graph/graph.class.d.ts.map +1 -1
  242. package/dist/components/retrieval/graph/graph.class.js.map +1 -1
  243. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +6 -3
  244. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts.map +1 -1
  245. package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js.map +1 -1
  246. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +4 -2
  247. package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts.map +1 -1
  248. package/dist/components/retrieval/retrieval-results/retrieval-results.class.js.map +1 -1
  249. package/dist/components/utility/diff-view/diff-view.class.d.ts +4 -1
  250. package/dist/components/utility/diff-view/diff-view.class.d.ts.map +1 -1
  251. package/dist/components/utility/diff-view/diff-view.class.js.map +1 -1
  252. package/dist/components/utility/format/relative-time.class.d.ts.map +1 -1
  253. package/dist/components/utility/format/relative-time.class.js +4 -1
  254. package/dist/components/utility/format/relative-time.class.js.map +1 -1
  255. package/dist/components/viewers/document-compare/document-compare.class.d.ts +9 -2
  256. package/dist/components/viewers/document-compare/document-compare.class.d.ts.map +1 -1
  257. package/dist/components/viewers/document-compare/document-compare.class.js.map +1 -1
  258. package/dist/components/viewers/geojson-view/geojson-view.class.d.ts +6 -0
  259. package/dist/components/viewers/geojson-view/geojson-view.class.d.ts.map +1 -1
  260. package/dist/components/viewers/geojson-view/geojson-view.class.js.map +1 -1
  261. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.d.ts.map +1 -1
  262. package/dist/components/viewers/notebook-viewer/notebook-viewer.class.js.map +1 -1
  263. package/dist/internal/localization.d.ts +11 -1
  264. package/dist/internal/localization.d.ts.map +1 -1
  265. package/dist/internal/localization.js +24 -1
  266. package/dist/internal/localization.js.map +1 -1
  267. package/dist/internal/root-registration-allowlist.d.ts +1 -1
  268. package/dist/internal/root-registration-allowlist.d.ts.map +1 -1
  269. package/dist/internal/root-registration-allowlist.js +3 -1
  270. package/dist/internal/root-registration-allowlist.js.map +1 -1
  271. package/dist/internal/tokens.styles.d.ts.map +1 -1
  272. package/dist/internal/tokens.styles.js +1 -0
  273. package/dist/internal/tokens.styles.js.map +1 -1
  274. package/dist/lyra.d.ts +11 -5
  275. package/dist/lyra.d.ts.map +1 -1
  276. package/dist/lyra.js +7 -3
  277. package/dist/lyra.js.map +1 -1
  278. package/dist/theme.css +1 -0
  279. package/llms/components/lr-button.md +4 -1
  280. package/llms/components/lr-chip-group.md +1 -1
  281. package/llms/components/lr-chip.md +1 -1
  282. package/llms/components/lr-color-picker.md +7 -1
  283. package/llms/components/lr-combobox.md +1 -1
  284. package/llms/components/lr-confirm-bar.md +31 -4
  285. package/llms/components/lr-control-group.md +12 -4
  286. package/llms/components/lr-dashboard-grid.md +4 -1
  287. package/llms/components/lr-date-input.md +5 -1
  288. package/llms/components/lr-date-picker.md +5 -1
  289. package/llms/components/lr-emoji-picker.md +11 -6
  290. package/llms/components/lr-eval-dataset.md +1 -1
  291. package/llms/components/lr-eval-result.md +4 -4
  292. package/llms/components/lr-flag.md +9 -5
  293. package/llms/components/lr-flow-canvas.md +7 -1
  294. package/llms/components/lr-icon-button.md +10 -5
  295. package/llms/components/lr-locale-picker.md +86 -0
  296. package/llms/components/lr-option.md +1 -1
  297. package/llms/components/lr-phone-input.md +10 -3
  298. package/llms/components/lr-reorder-item.md +81 -0
  299. package/llms/components/lr-reorder-list.md +81 -0
  300. package/llms/components/lr-select.md +2 -2
  301. package/llms/components/lr-swatch-picker.md +15 -9
  302. package/llms/components/lr-thread-list.md +11 -6
  303. package/llms/components/lr-time-range.md +8 -0
  304. package/llms/components/lr-token-input.md +14 -6
  305. package/llms/components/lr-tool-approval-dialog.md +30 -6
  306. package/llms/components/lr-virtual-list.md +5 -1
  307. package/llms/index.md +7 -5
  308. package/llms/shared.md +13 -4
  309. package/llms/tokens.md +4 -2
  310. package/llms-full.txt +362 -120
  311. package/llms.txt +4 -4
  312. package/package.json +8 -3
  313. package/vscode-css-data.json +183 -8
  314. package/vscode-html-data.json +521 -366
  315. package/web-types.json +810 -96
  316. package/dist/components/data/data-grid/data-grid.class.d.ts +0 -69
  317. package/dist/components/data/data-grid/data-grid.class.d.ts.map +0 -1
  318. package/dist/components/data/data-grid/data-grid.class.js +0 -123
  319. package/dist/components/data/data-grid/data-grid.class.js.map +0 -1
  320. package/dist/components/data/data-grid/data-grid.d.ts +0 -2
  321. package/dist/components/data/data-grid/data-grid.d.ts.map +0 -1
  322. package/dist/components/data/data-grid/data-grid.js +0 -5
  323. package/dist/components/data/data-grid/data-grid.js.map +0 -1
  324. package/dist/components/data/data-grid/data-grid.styles.d.ts.map +0 -1
  325. package/dist/components/data/data-grid/data-grid.styles.js +0 -15
  326. package/dist/components/data/data-grid/data-grid.styles.js.map +0 -1
  327. package/llms/components/lr-data-grid.md +0 -55
@@ -36,7 +36,8 @@ search/grid; unset renders no label chrome. When `label` (or the `label` slot) i
36
36
  localized default to `aria-labelledby` pointing at the visible label. `hint: string = ''` —
37
37
  supporting text rendered below the search/grid; unset renders no hint chrome. `errorText: string =
38
38
  ''` (attribute `error-text`) — validation-error text rendered below the hint (overridden by slotted
39
- `error` content when provided); unset renders no error chrome.
39
+ `error` content when provided); unset renders no error chrome. `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` —
40
+ visual size; scales the emoji grid item box and its glyph proportionally, floored at 24px (WCAG 2.5.8).
40
41
 
41
42
  **Events:** `lr-change` with `detail: { emoji }` (an emoji was picked — click, or Enter/Space on
42
43
  the active grid cell; also sets `value`), plus the shared form `input`, `change`, `focus`, and `blur`.
@@ -62,10 +63,13 @@ error message). While windowing is active the rows are wrapped in `virtual-space
62
63
  emoji flex line).
63
64
 
64
65
  **Themeable custom properties:** `--lr-emoji-picker-item-size` (default `--lr-icon-button-size`,
65
- each emoji button's box), `--lr-emoji-picker-gap` (default `--lr-space-2xs`, the gap between
66
+ each emoji button's box; scaled by the `size` property), `--lr-emoji-picker-glyph-size` (default
67
+ `--lr-font-size-lg`, the font size of the emoji glyph; scaled by the `size` property to keep the glyph
68
+ proportional to the item box), `--lr-emoji-picker-gap` (default `--lr-space-2xs`, the gap between
66
69
  emoji within a windowed row), and `--lr-emoji-picker-row-height` (default
67
- `calc(var(--lr-emoji-picker-item-size) + var(--lr-space-l))`, one windowed row's height). All three
68
- are also read back in JS to derive columns-per-row and row offsets for the windowed layout,
70
+ `calc(var(--lr-emoji-picker-item-size) + var(--lr-space-l))`, one windowed row's height).
71
+ `--lr-emoji-picker-item-size`, `--lr-emoji-picker-gap`, and `--lr-emoji-picker-row-height` are also
72
+ read back in JS to derive columns-per-row and row offsets for the windowed layout,
69
73
  resolved to real pixels by measuring hidden probe boxes the component's own stylesheet sizes from
70
74
  those same tokens — so any CSS length unit works, `rem`/`em` and `calc()` included, and the windowed
71
75
  geometry matches what is painted without expressing the tokens in `px`. The measurement is cached
@@ -82,8 +86,9 @@ repainting everything else that reads it — as the only way in. Like `lr-time-r
82
86
  properties, it is written as an inline `var()` fallback at the point of use rather than declared on
83
87
  `:host`, so a value set on **any ancestor** reaches it instead of being shadowed.
84
88
 
85
- Two constraints remain. `--lr-emoji-picker-item-size` is clamped up to `--lr-icon-button-size`, the
86
- shared minimum tappable box: a smaller value does not shrink the button, and the windowed geometry
89
+ Two constraints remain. `--lr-emoji-picker-item-size` is held at a flat 24px minimum (WCAG 2.5.8
90
+ touch target floor): the smaller `size` tier values can shrink the box below the old 40px
91
+ unconditional floor, but the minimum holds at 24px regardless of tokens, and the windowed geometry
87
92
  follows the clamped, painted size. And windowed rows are absolutely positioned at the row-height
88
93
  pitch, so `--lr-emoji-picker-row-height` must stay at or above the item size plus the group-label
89
94
  band (`--lr-space-l`) — the default's own formula — or consecutive rows overlap. Columns per
@@ -19,7 +19,7 @@ Filterable and taggable evaluation-example list with add, remove, import, and ex
19
19
  expectedOutput?: string; tags?: string[]; metadata?: Record<string, unknown> }` (exported here).
20
20
  Deliberately its own small shape rather than reusing anything from `src/ai/types.ts` — none of that
21
21
  module's interfaces models "one row of a labeled eval dataset". `input`/`expectedOutput` are plain
22
- strings (not structured payloads) to match `lr-data-grid`'s stringifying cell rendering. Fully
22
+ strings (not structured payloads), rendered as plain text by every column's `cell()`. Fully
23
23
  controlled: add/remove/import/export are all *requests*; the host mutates and passes the array back
24
24
  - `searchable: boolean = false` (reflected) — built-in free-text search over `input`,
25
25
  `expectedOutput`, and `tags` (case-insensitive substring)
@@ -14,7 +14,7 @@
14
14
 
15
15
  Rubric scoring and human-review surface for comparing the runs of one evaluation example.
16
16
 
17
- Composes `lr-data-grid` (the comparison table), `lr-rubric-form` (the review surface), and
17
+ Composes `lr-table` (the comparison table), `lr-rubric-form` (the review surface), and
18
18
  `lr-diff-view` (baseline↔selected output diff) rather than re-deriving any of their behavior.
19
19
 
20
20
  **Properties:**
@@ -22,10 +22,10 @@ Composes `lr-data-grid` (the comparison table), `lr-rubric-form` (the review sur
22
22
  model?: string; promptVersion?: string; output: string; scores?: RubricValue; review?: RubricValue }`
23
23
  (exported here). One entry per model or prompt version being compared for a single evaluation
24
24
  example. `scores`/`review` use the same `RubricValue` shape `lr-rubric-form` itself reads and
25
- writes, so a `DataGridColumn`'s `value()` accessor and the rubric form's own `value` binding read a
25
+ writes, so a `TableColumn`'s `cell()` accessor and the rubric form's own `value` binding read a
26
26
  run's fields with no conversion
27
- - `columns: DataGridColumn<EvalRunResult>[] = []` (attribute: false) — plain pass-through to
28
- `lr-data-grid.columns`, not re-derived here
27
+ - `columns: TableColumn<EvalRunResult>[] = []` (attribute: false) — plain pass-through to
28
+ `lr-table.columns`, not re-derived here
29
29
  - `rubricKeys: RubricKey[] = []` (attribute: false) — plain pass-through to `lr-rubric-form.keys`
30
30
  - `selectedRunId: string = ''` (attribute `selected-run-id`) — the run open for review and the diff's
31
31
  **new** side; falls back to `runs[0]?.id` when empty
@@ -70,11 +70,15 @@ tag itself, and so does a structurally invalid one — `Intl.DisplayNames` throw
70
70
  those rather than falling back, and a language picker should degrade to showing the raw tag rather
71
71
  than tearing down the render. Pair it with `languageToCountry()` for the flag half of the same row.
72
72
 
73
- **Locale picker recipe.** A locale picker is a composition, not a component: `<lr-popover>` supplies
74
- the light-dismiss surface, `<lr-flag>` the country mark, `localeNativeName()` the endonym, and
75
- `aria-current="true"` marks the active choice. Which locales exist is the app's decision, so the app
76
- owns the list. Set `lang` on each row so assistive tech pronounces the endonym in its own language,
77
- and use `variant="compact"` at icon scale.
73
+ **Locale picker recipe.** `<lr-locale-picker>` (`components/forms/locale-picker/`) is the built-in
74
+ locale switcher a closed-list dropdown over the locale registry or an explicit catalog, with
75
+ `lr-flag`/`localeNativeName()` rows and full form association out of the box. The manual
76
+ composition below remains available for an app that wants different chrome (its own dismiss
77
+ surface, a different active-state marker, or a layout `<lr-locale-picker>` doesn't offer):
78
+ `<lr-popover>` supplies the light-dismiss surface, `<lr-flag>` the country mark,
79
+ `localeNativeName()` the endonym, and `aria-current="true"` marks the active choice. Which locales
80
+ exist is the app's decision, so the app owns the list. Set `lang` on each row so assistive tech
81
+ pronounces the endonym in its own language, and use `variant="compact"` at icon scale.
78
82
 
79
83
  ```html
80
84
  <lr-popover placement="bottom-start">
@@ -87,7 +87,13 @@ that reads it. The same restriction motivates three more state-scoped outline co
87
87
  a node that is an invalid connect-gesture drop target; `--lr-flow-canvas-node-connect-target-outline-color`
88
88
  (default `var(--lr-color-brand)`) — outline of a node that is a valid connect-gesture drop target; and
89
89
  `--lr-flow-canvas-drop-active-outline-color` (default `var(--lr-color-brand)`) — outline of the
90
- viewport itself while a palette item is dragged over it (`droppable`).
90
+ viewport itself while a palette item is dragged over it (`droppable`). A fifth,
91
+ `--lr-flow-canvas-node-hover-outline-color` (default `var(--lr-color-border-strong)`) — the
92
+ mouse-hover preview of a node's own `:focus-visible` ring — exists for a different reason than the
93
+ four above: it is `:hover`-gated rather than attribute-gated, so `::part(node):hover` *is* valid
94
+ CSS here, but the internal `[part='node']:hover` rule still out-specifies it ((0,2,0) vs. (0,1,1)),
95
+ which this custom property sidesteps the same way. Set it to `transparent` to opt out of the hover
96
+ treatment entirely.
91
97
 
92
98
  **Optional peer deps:** none.
93
99
 
@@ -40,11 +40,16 @@ complete element — an `<svg>`, an `<img>`, an `<lr-flag>` — render at its ow
40
40
  instead of being forced into a 1:1 box. Setting both `icon` and slotted content renders both, side
41
41
  by side; that is a valid composition, not a fallback.
42
42
 
43
- **Migration note:** bare SVG *geometry* (`<path>`, `<circle>`, `<rect>` …) slotted with no `icon`
44
- set has no SVG parent here and will not paint. Wrap it in an `<lr-icon>`, or in a complete `<svg>`
45
- of your own.
46
-
47
- **CSS parts:** `button`
43
+ **Bare SVG geometry fallback:** slotted bare SVG *geometry* (`path`, `circle`, `rect`, `line`,
44
+ `polygon`, `polyline`, `ellipse`, `g`, `use`) with no `icon` set and no enclosing `<svg>` of its
45
+ own has no real SVG parent as parsed, and is detected and cloned into an internal
46
+ `[part="fallback"]` SVG-namespaced element so it still paints — the same fallback `<lr-icon>`'s own
47
+ custom-content slot uses. This is narrowly scoped to that whitelist: a complete `<svg>`, `<img>`,
48
+ or custom element (e.g. `<lr-flag>`) is never touched by it and keeps rendering as an untouched
49
+ sibling at its own natural aspect ratio.
50
+
51
+ **CSS parts:** `button`, `fallback` (only present in the DOM while at least one top-level slotted
52
+ element needs the bare-geometry fallback above)
48
53
 
49
54
  **Themeable custom properties:** `--lr-icon-button-size` (default `2.5rem`) is the **minimum**
50
55
  tappable inline and block size of the native button — a floor, not a fixed size. Content larger
@@ -0,0 +1,86 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/forms.md — do not edit this file. -->
2
+
3
+ # `lr-locale-picker`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/forms/locale-picker/locale-picker.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraLocalePicker`, also available unregistered from `@aceshooting/lyra-ui/components/forms/locale-picker/locale-picker.class.js`
7
+ - **Family** `components/forms/` — see `llms/index.md` for its siblings
8
+ - **Optional peers** none
9
+ - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
10
+
11
+ ---
12
+
13
+ ## `lr-locale-picker`
14
+
15
+ A closed-list locale switcher over the library's own locale registry. First-party invention (no
16
+ Web Awesome equivalent). With `locales` unset (the default), the offered rows are exactly
17
+ `getRegisteredLyraLocales()` — every locale with strings registered via `registerLyraLocale()`,
18
+ plus `en` — kept live via `subscribeLyraLocaleRegistry()`. Built directly on `lr-select`'s
19
+ trigger-button/`aria-activedescendant` listbox technique, not composed from it — a plain closed
20
+ list, no filter/free-text mode.
21
+
22
+ **Properties:**
23
+ - `locales: LyraLocaleCatalog = []` (attribute: false) — `LyraLocaleCatalog = string[] |
24
+ LyraLocaleEntry[]`, `LyraLocaleEntry { tag: string; label?: string }`. Empty (the default)
25
+ auto-discovers the registry; a non-empty array (either form) overrides it entirely — a curated
26
+ subset, custom order, custom labels, or a locale offered before its strings are registered.
27
+ - `showFlags: boolean = true` — each row's leading `<lr-flag language={tag} variant="compact">`;
28
+ `false` omits the flag element entirely (not just visually).
29
+ - `value: string = ''` — the **committed** selection (form value, drives `lr-change`). While `''`
30
+ and untouched, the trigger *displays* `effectiveLocale` as a preview label, but
31
+ `checkValidity()`/`required` are governed by the real `value`, which stays `''` until a real
32
+ commit — mirrors a native `<select>` showing its first option's text without that being a
33
+ committed selection.
34
+ - `required: boolean = false`, `disabled: boolean = false`, `name: string = ''` — standard
35
+ form-associated properties.
36
+ - `label: string = ''`, `hint: string = ''`, `errorText: string = ''` (attribute `error-text`) —
37
+ same opt-in form-control chrome as `lr-select` (props + matching named slots + parts); unset
38
+ renders none of it.
39
+ - `open: boolean = false` (reflected).
40
+ - `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected — same scale as `lr-select`'s `size`).
41
+
42
+ **Events:** `lr-change` (`detail: { value, previousValue }`, **cancelable**) — fired on every
43
+ explicit pick; if not `defaultPrevented`, the component applies the pick itself via
44
+ `setLyraLocale(value)`. A listener calling `event.preventDefault()` leaves `value` updated but the
45
+ active locale untouched, so a host can persist the choice first and apply it later. `blur`/`focus`
46
+ re-dispatched from the internal trigger as bubbling, composed events.
47
+
48
+ **Methods:** `focus(options?)`, `blur()`, and `click()` — all forward to the internal trigger
49
+ button, same convention as `lr-select`'s identical trio.
50
+
51
+ **Slots:** `label`, `hint`, `error`.
52
+
53
+ **CSS parts:** `form-control`, `form-control-label`, `trigger`, `listbox`, `option`,
54
+ `option-flag` (present only while `showFlags` is on), `option-label`, `option-tag` (the row's
55
+ secondary line — the raw BCP-47 tag), `expand-icon`, `hint`, `error`.
56
+
57
+ **Themeable custom properties:** `--lr-locale-picker-trigger-padding`,
58
+ `--lr-locale-picker-trigger-min-height`, `--lr-locale-picker-trigger-height` (unset by default, a
59
+ floor-only escape hatch — set a length to both floor and cap the trigger),
60
+ `--lr-locale-picker-font-size`, `--lr-locale-picker-expand-size` (all scaled by `size`), and
61
+ `--lr-locale-picker-option-active-bg` (default `--lr-color-brand-quiet`, the hovered/keyboard-active
62
+ row background).
63
+
64
+ **Optional peer deps:** none directly — each row's `<lr-flag>` degrades to an empty render (no
65
+ peer warning duplication; `lr-flag` itself already logs one) when the optional
66
+ `@aceshooting/lyra-flags` package isn't installed and `showFlags` is left on.
67
+
68
+ ```html
69
+ <lr-locale-picker label="Language"></lr-locale-picker>
70
+ <script type="module">
71
+ import { registerLyraLocale } from '@aceshooting/lyra-ui';
72
+ registerLyraLocale('fr', { close: 'Fermer' });
73
+ document
74
+ .querySelector('lr-locale-picker')
75
+ .addEventListener('lr-change', (e) => console.log(e.detail.value));
76
+ </script>
77
+ ```
78
+
79
+ **Known gotchas:**
80
+ - selecting a row applies `setLyraLocale()` itself unless the listener calls
81
+ `event.preventDefault()` on `lr-change` — it does not touch
82
+ `document.documentElement.lang`/`dir`; apply writing-direction changes to the page yourself.
83
+ - no filter/free-text mode — for a catalog with hundreds+ of rows, roll your own with `lr-select`
84
+ or `lr-combobox` instead.
85
+ - arrow-key navigation is vertical-only (Home/End/ArrowUp/ArrowDown); there is no
86
+ ArrowLeft/ArrowRight remap under RTL, since there is no horizontal axis to remap.
@@ -21,7 +21,7 @@ shared `FormAssociated` mixin — see gotchas).
21
21
 
22
22
  **Properties:**
23
23
  - `multiple: boolean = false` (reflected)
24
- - `size: 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected — same scale as `lr-select`'s `size`;
24
+ - `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected — same scale as `lr-select`'s `size`;
25
25
  also scales the "+N" overflow tag and decorative expand icon; `size="s"` shares its outer
26
26
  control height with `lr-input`, `lr-select`, and `lr-segmented` without part overrides)
27
27
  - `placeholder: string = ''`
@@ -71,6 +71,9 @@ interface PhoneNumberAdapter {
71
71
  `@aceshooting/lyra-ui/components/media/flag/flag-peer.js` once; without that registration the
72
72
  trigger simply omits the image. The open popup list stays text-only — a native `<option>` cannot
73
73
  contain elements.
74
+ - `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected — same scale as `lr-input`'s
75
+ `size`; scales input padding, font size, and wrapper min-height; `size="s"` shares its outer
76
+ control height with `lr-input`, `lr-select`, and `lr-combobox` without part overrides)
74
77
  - `country: string` — current uppercase ISO alpha-2 selection; falls back to `defaultCountry`, then
75
78
  the first explicit/adapter country. Changing the country reparses the editable number.
76
79
  - `label: string = ''`, `hint: string = ''`, `errorText: string = ''` (attribute `error-text`) —
@@ -137,9 +140,13 @@ such as a consumer-owned `<lr-flag>`; no flag package is imported automatically)
137
140
  `flags`), `country-code` (selected alpha-2 code, `data-placeholder` when no country exists),
138
141
  `expand-icon`, `calling-code`, `input`, `hint`, `error`.
139
142
 
140
- **Themeable custom properties:** shared tokens only. The phone-number input and calling code are
141
- deliberately `dir="ltr"`/isolated because telephone numbers are algorithmic content; surrounding
142
- form chrome and the country selector inherit LTR/RTL and use logical spacing/borders.
143
+ **Themeable custom properties:** `--lr-phone-input-padding-block`, `--lr-phone-input-font-size`,
144
+ and `--lr-phone-input-control-min-height` (each scaled by `size`), plus `--lr-phone-input-control-height`
145
+ to pin an exact input-wrapper height (both floors and caps it — use it for pixel-matching an
146
+ `<lr-input>` or `<lr-select>` in the same toolbar row; undeclared by default, leaving the min height
147
+ as a floor only). The phone-number input and calling code are deliberately `dir="ltr"`/isolated
148
+ because telephone numbers are algorithmic content; surrounding form chrome and the country selector
149
+ inherit LTR/RTL and use logical spacing/borders.
143
150
 
144
151
  **Optional peer deps:** `libphonenumber-js` is declared optional but never imported by Lyra itself.
145
152
  For full national parsing/formatting, install it in the consuming app and pass it through the
@@ -0,0 +1,81 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/layout.md — do not edit this file. -->
2
+
3
+ # `lr-reorder-item`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/layout/reorder-list/reorder-item.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraReorderItem`, also available unregistered from `@aceshooting/lyra-ui/components/layout/reorder-list/reorder-item.class.js`
7
+ - **Family** `components/layout/` — see `llms/index.md` for its siblings
8
+ - **Optional peers** none
9
+ - **Documented with** `lr-reorder-list` (same section below)
10
+ - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
11
+
12
+ ---
13
+
14
+ ## `lr-reorder-list` / `lr-reorder-item`
15
+
16
+ A generic flat-list reorder primitive: per-row move-up/move-down buttons (always available), plus
17
+ Ctrl/Cmd+ArrowUp/ArrowDown from focus anywhere inside a row — the same modifier convention
18
+ `<lr-tree>`'s `reorderable` and `<lr-dashboard-grid>`'s `cells-draggable` already establish. Unlike
19
+ `<lr-tree>`'s controlled `reorderable` mode, this list physically moves its own slotted
20
+ `<lr-reorder-item>` light-DOM nodes itself (there is no `data` array prop to reconcile against),
21
+ and emits `lr-reorder` with the full new order so the host can persist it without hand-rolling its
22
+ own splice/resort logic.
23
+
24
+ ### `lr-reorder-list`
25
+
26
+ **Properties:**
27
+ - `label: string = ''` — accessible name for the internal `role="list"`; when empty, a host
28
+ `aria-label` is forwarded as a fallback.
29
+ - `disabled: boolean = false` (reflected) — disables every item's move buttons and the Ctrl/Cmd+
30
+ Arrow shortcut, without mutating any item's own `disabled` attribute.
31
+
32
+ **Events:** `lr-reorder` (`detail: { order: string[], fromIndex: number, toIndex: number }` — fired
33
+ after every successful move; `order` is every current item's `value` (or its DOM-position-index
34
+ fallback) in the new top-to-bottom order)
35
+
36
+ **Slots:** default — `<lr-reorder-item>` elements.
37
+
38
+ **CSS parts:** `base` — the internal `role="list"` wrapper.
39
+
40
+ **Themeable custom properties:** `--lr-reorder-list-gap` (default `var(--lr-space-2xs)`) — gap
41
+ between rows.
42
+
43
+ ```html
44
+ <lr-reorder-list label="Form fields" @lr-reorder=${(e) => console.log(e.detail.order)}>
45
+ <lr-reorder-item value="name">Name</lr-reorder-item>
46
+ <lr-reorder-item value="email">Email</lr-reorder-item>
47
+ <lr-reorder-item value="phone">Phone</lr-reorder-item>
48
+ </lr-reorder-list>
49
+ ```
50
+
51
+ **Known gotchas:**
52
+ - Boundary-disabled state (`atStart`/`atEnd`) and the `listDisabled` cascade are computed and
53
+ pushed onto each `<lr-reorder-item>` by this list, on every slot change and every move — an item
54
+ alone can't know its own position.
55
+ - No pointer drag-and-drop; move-up/move-down buttons and the keyboard shortcut only.
56
+
57
+ ---
58
+
59
+ ### `lr-reorder-item`
60
+
61
+ **Properties:**
62
+ - `value?: string` — stable identifier included in the parent's `lr-reorder` order array; falls
63
+ back to this item's live DOM-position index when unset.
64
+ - `disabled: boolean = false` (reflected) — disables this row's own move buttons only; does not
65
+ hide its slotted content.
66
+ - `atStart: boolean = false`, `atEnd: boolean = false`, `listDisabled: boolean = false`
67
+ (attribute: false) — pushed down by the parent `<lr-reorder-list>`; normally set internally, not
68
+ by consumers.
69
+
70
+ **Events:** `lr-move-request` (`detail: { direction: 'up' | 'down' }` — a move button was activated
71
+ while not disabled; handled by the parent `<lr-reorder-list>`, which performs the actual move)
72
+
73
+ **Slots:** default — arbitrary row content.
74
+
75
+ **CSS parts:** `base` (row wrapper), `move-up-button`, `move-down-button`, `content` (default-slot
76
+ wrapper).
77
+
78
+ **Themeable custom properties:** `--lr-reorder-item-gap` (default `var(--lr-space-xs)`) — gap
79
+ between the move buttons and the row content.
80
+
81
+ ---
@@ -0,0 +1,81 @@
1
+ <!-- GENERATED by scripts/build-llms.mjs from llms/layout.md — do not edit this file. -->
2
+
3
+ # `lr-reorder-list`
4
+
5
+ - **Import** `import '@aceshooting/lyra-ui/components/layout/reorder-list/reorder-list.js';` (registers the tag; side-effect import)
6
+ - **Class** `LyraReorderList`, also available unregistered from `@aceshooting/lyra-ui/components/layout/reorder-list/reorder-list.class.js`
7
+ - **Family** `components/layout/` — see `llms/index.md` for its siblings
8
+ - **Optional peers** none
9
+ - **Documented with** `lr-reorder-item` (same section below)
10
+ - **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`
11
+
12
+ ---
13
+
14
+ ## `lr-reorder-list` / `lr-reorder-item`
15
+
16
+ A generic flat-list reorder primitive: per-row move-up/move-down buttons (always available), plus
17
+ Ctrl/Cmd+ArrowUp/ArrowDown from focus anywhere inside a row — the same modifier convention
18
+ `<lr-tree>`'s `reorderable` and `<lr-dashboard-grid>`'s `cells-draggable` already establish. Unlike
19
+ `<lr-tree>`'s controlled `reorderable` mode, this list physically moves its own slotted
20
+ `<lr-reorder-item>` light-DOM nodes itself (there is no `data` array prop to reconcile against),
21
+ and emits `lr-reorder` with the full new order so the host can persist it without hand-rolling its
22
+ own splice/resort logic.
23
+
24
+ ### `lr-reorder-list`
25
+
26
+ **Properties:**
27
+ - `label: string = ''` — accessible name for the internal `role="list"`; when empty, a host
28
+ `aria-label` is forwarded as a fallback.
29
+ - `disabled: boolean = false` (reflected) — disables every item's move buttons and the Ctrl/Cmd+
30
+ Arrow shortcut, without mutating any item's own `disabled` attribute.
31
+
32
+ **Events:** `lr-reorder` (`detail: { order: string[], fromIndex: number, toIndex: number }` — fired
33
+ after every successful move; `order` is every current item's `value` (or its DOM-position-index
34
+ fallback) in the new top-to-bottom order)
35
+
36
+ **Slots:** default — `<lr-reorder-item>` elements.
37
+
38
+ **CSS parts:** `base` — the internal `role="list"` wrapper.
39
+
40
+ **Themeable custom properties:** `--lr-reorder-list-gap` (default `var(--lr-space-2xs)`) — gap
41
+ between rows.
42
+
43
+ ```html
44
+ <lr-reorder-list label="Form fields" @lr-reorder=${(e) => console.log(e.detail.order)}>
45
+ <lr-reorder-item value="name">Name</lr-reorder-item>
46
+ <lr-reorder-item value="email">Email</lr-reorder-item>
47
+ <lr-reorder-item value="phone">Phone</lr-reorder-item>
48
+ </lr-reorder-list>
49
+ ```
50
+
51
+ **Known gotchas:**
52
+ - Boundary-disabled state (`atStart`/`atEnd`) and the `listDisabled` cascade are computed and
53
+ pushed onto each `<lr-reorder-item>` by this list, on every slot change and every move — an item
54
+ alone can't know its own position.
55
+ - No pointer drag-and-drop; move-up/move-down buttons and the keyboard shortcut only.
56
+
57
+ ---
58
+
59
+ ### `lr-reorder-item`
60
+
61
+ **Properties:**
62
+ - `value?: string` — stable identifier included in the parent's `lr-reorder` order array; falls
63
+ back to this item's live DOM-position index when unset.
64
+ - `disabled: boolean = false` (reflected) — disables this row's own move buttons only; does not
65
+ hide its slotted content.
66
+ - `atStart: boolean = false`, `atEnd: boolean = false`, `listDisabled: boolean = false`
67
+ (attribute: false) — pushed down by the parent `<lr-reorder-list>`; normally set internally, not
68
+ by consumers.
69
+
70
+ **Events:** `lr-move-request` (`detail: { direction: 'up' | 'down' }` — a move button was activated
71
+ while not disabled; handled by the parent `<lr-reorder-list>`, which performs the actual move)
72
+
73
+ **Slots:** default — arbitrary row content.
74
+
75
+ **CSS parts:** `base` (row wrapper), `move-up-button`, `move-down-button`, `content` (default-slot
76
+ wrapper).
77
+
78
+ **Themeable custom properties:** `--lr-reorder-item-gap` (default `var(--lr-space-xs)`) — gap
79
+ between the move buttons and the row content.
80
+
81
+ ---
@@ -45,8 +45,8 @@ exactly like the multi-option case, until the trigger is actually activated.
45
45
  - `errorText: string = ''` (attribute `error-text` — static error copy shown below the hint;
46
46
  overridden by slotted `error` content when provided)
47
47
  - `open: boolean = false` (reflected)
48
- - `size: 'xs'|'s'|'m'|'l'|'xl' = 'm'` (reflected — same scale as `lr-toast-item`'s `size`, for
49
- compact toolbar placements that don't fit the default trigger height)
48
+ - `size: '2xs'|'xs'|'s'|'m'|'l'|'xl' = 'm'` (reflected — same scale as `lr-input`/`lr-combobox`'s
49
+ `size`, for compact toolbar placements that don't fit the default trigger height)
50
50
  - `autoCommitSingleOption: boolean = false` (attribute `auto-commit-single-option`) — opts in to the
51
51
  single-option auto-commit behavior described above
52
52
  - `value: string` — a getter/setter; always a single string (no `multiple` mode)
@@ -28,6 +28,9 @@ named colors, the shape apps otherwise hand-roll as a row of round accent-color
28
28
  `<lr-segmented>`'s `SegmentedItem.icon`.
29
29
  - `value: string | null = null` — the currently selected option's `value` (controlled); `null`
30
30
  leaves nothing selected while keeping the first swatch tabbable.
31
+ - `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected — scales the swatch hit-area and
32
+ fill diameter proportionally, hit-area floored at 24px; not pixel-matched to `lr-input`'s
33
+ row-height scale)
31
34
  - `label: string = ''` — accessible name copied to the internal `role="radiogroup"`; when empty, a
32
35
  host-level `aria-label` is used as a fallback.
33
36
 
@@ -37,11 +40,13 @@ changes via click or keyboard (re-selecting the current swatch is a no-op).
37
40
  **Slots:** none.
38
41
 
39
42
  **CSS parts:** `base` (the `role="radiogroup"` root), `swatch` (a single `role="radio"` color
40
- swatch's interactive hit target, floored at the shared `--lr-icon-button-size` tap size; the
41
- selected one is `[part='swatch'][aria-checked='true']`), `swatch-fill` (the compact
42
- `--lr-size-1-5rem` filled circle inside it, rendered when the option has no `icon`), `swatch-icon`
43
- (the option's `icon` shape, rendered in its place when it has one). Exactly one of
44
- `swatch-fill`/`swatch-icon` is mounted per swatch, so the two never coexist.
43
+ swatch's interactive hit target, sized via `--lr-swatch-picker-hit-size` defaults to
44
+ `--lr-size-2-5rem`, swapped per `size` tier and floored at 24px; the selected one is
45
+ `[part='swatch'][aria-checked='true']`), `swatch-fill` (the filled circle inside it, sized via
46
+ `--lr-swatch-picker-fill-size` defaults to `--lr-size-1-5rem`, also swapped per `size` tier
47
+ rendered when the option has no `icon`), `swatch-icon` (the option's `icon` shape, rendered in its
48
+ place when it has one). Exactly one of `swatch-fill`/`swatch-icon` is mounted per swatch, so the
49
+ two never coexist.
45
50
 
46
51
  **Themeable custom properties:** `--lr-swatch-picker-selected-color` (ring color around the
47
52
  selected swatch, defaults to `--lr-color-brand`, themeable independently of the focus ring),
@@ -52,10 +57,11 @@ shape), `--lr-swatch-picker-shine-duration` (default `0s`, a no-op; set a durati
52
57
  for a looping brighten-and-settle pulse on the selected swatch. It drives a separate
53
58
  `filter: brightness()` keyframe rather than `box-shadow`, so it composes with the blur token and
54
59
  works identically for a fill and an icon; disabled outright under `prefers-reduced-motion: reduce`,
55
- which also drops the hover/selection scale transition); plus
56
- shared tokens `--lr-color-border`/`-brand`, `--lr-icon-button-size`, `--lr-space-xs`,
57
- `--lr-size-1-5rem`, `--lr-border-width-thin`/`-thick`, `--lr-radius`, `--lr-transition-fast`,
58
- `--lr-focus-ring-*`.
60
+ which also drops the hover/selection scale transition), `--lr-swatch-picker-hit-size` (hit-area
61
+ size, swapped per `size` tier), `--lr-swatch-picker-fill-size` (visible fill/icon diameter, swapped
62
+ per `size` tier); plus shared tokens — `--lr-color-border`/`-brand`, `--lr-space-xs`,
63
+ `--lr-border-width-thin`/`-thick`, `--lr-radius`, `--lr-transition-fast`, `--lr-focus-ring-*`,
64
+ and the per-tier `--lr-size-*` tokens.
59
65
 
60
66
  **Optional peer deps:** none.
61
67
 
@@ -66,8 +66,11 @@ appends host-supplied content (re-invoked per row on every render, e.g. a `lr-me
66
66
  actions) after the built-in `rowActions` output in each row's `actions` slot; events it fires reach
67
67
  the host normally and never trigger `lr-select`. Unset renders only the built-in `rowActions`.
68
68
  `renderLeading?: (thread: ChatThread) => TemplateResult` (attribute: false) — renders non-interactive
69
- leading content in each virtualized row. `renderMeta?: (thread: ChatThread) => TemplateResult`
70
- (attribute: false) — appends structured metadata in the row's meta region.
69
+ leading content in each virtualized row. `renderExcerpt?: (thread: ChatThread) => TemplateResult`
70
+ (attribute: false) — renders rich content into the row item's own `excerpt` slot, winning over the
71
+ plain-string `excerpt` property (e.g. a server-highlighted search-match snippet), while leaving the
72
+ built-in title layout and inline-rename affordance untouched. `renderMeta?: (thread: ChatThread) =>
73
+ TemplateResult` (attribute: false) — appends structured metadata in the row's meta region.
71
74
  `renderRowContent?: (thread: ChatThread) => TemplateResult` (attribute: false) — replaces the
72
75
  conversation item's title/excerpt/meta content area with custom non-interactive row content.
73
76
  `formatGroupLabel?: (key: ThreadBucketKey, date?: Date) => string` (attribute: false) — overrides
@@ -100,9 +103,10 @@ header row and the pinned copy alike, and the band itself is where a shadow or b
100
103
  belongs), `row` (all exported across the internal `lr-virtual-list` shadow
101
104
  boundary), `row-wrapper` (the wrapper around `wrapRow` output, only present when `wrapRow` is set;
102
105
  row-only — group headers are never passed through `wrapRow`, so they never carry it), and
103
- `row-leading`/`row-content`/`row-meta`/`row-actions` (the library-owned wrappers around
106
+ `row-leading`/`row-excerpt`/`row-content`/`row-meta`/`row-actions` (the library-owned wrappers around
104
107
  their corresponding render-hook output; inherited fonts, layout values, and theme custom properties
105
- reach callback-rendered descendants through these parts).
108
+ reach callback-rendered descendants through these parts). `row-excerpt` wraps `renderExcerpt`
109
+ output, which is slotted into the row item's own `excerpt` slot.
106
110
 
107
111
  Data mode additionally forwards each row `<lr-conversation-item>`'s own parts under a `row-item-`
108
112
  prefix: `row-item-base`, `row-item-option`, `row-item-leading`, `row-item-content`,
@@ -110,8 +114,9 @@ prefix: `row-item-base`, `row-item-option`, `row-item-leading`, `row-item-conten
110
114
  `row-item-meta`, `row-item-timestamp`, `row-item-actions`.
111
115
 
112
116
  **Keep the two prefixes straight — they are different surfaces.** The `row-*` parts wrap *this*
113
- component's own render-callback output (`wrapRow`, `renderLeading`, `renderRowContent`,
114
- `renderMeta`, `renderActions`); the `row-item-*` parts are the row item's *internals*. Row density
117
+ component's own render-callback output (`wrapRow`, `renderLeading`, `renderExcerpt`,
118
+ `renderRowContent`, `renderMeta`, `renderActions`); the `row-item-*` parts are the row item's
119
+ *internals*. Row density
115
120
  in particular lives in `row-item-base`'s padding and `row-item-title`'s font size, so
116
121
  `::part(row-item-base)` is the supported way to build a dense sidebar.
117
122
 
@@ -24,6 +24,10 @@ consumer-facing `disabled` property/attribute itself.
24
24
  - `start: number = 0`
25
25
  - `end: number = 100`
26
26
  - `step: number = 1`
27
+ - `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected) — visual size; proportionally
28
+ scales the handle, track, and preset buttons via a single `--lr-time-range-size-scale` multiplier
29
+ (not pixel-matched to `lr-input`'s row-height scale — this component's own dimensions aren't on
30
+ that ladder); the drag hit-area never shrinks below 24px (WCAG 2.5.8)
27
31
  - `disabled: boolean = false` (reflected)
28
32
  - `startLabel: string = 'Range start'` (attribute `start-label`) — `aria-label` for the start handle
29
33
  - `endLabel: string = 'Range end'` (attribute `end-label`) — `aria-label` for the end handle
@@ -53,6 +57,10 @@ palette: `--lr-time-range-preset-active-bg` (falls back to `--lr-color-brand`),
53
57
  `--lr-time-range-preset-active-color` (falls back to `--lr-color-on-brand`). Unset, each resolves
54
58
  to exactly the token the rule used before they existed, so the default rendering is unchanged.
55
59
 
60
+ One additional component-local property, `--lr-time-range-size-scale` (unitless multiplier,
61
+ default 1, automatically set based on the `size` property), scales the handle, track, and preset
62
+ button dimensions proportionally — unset, it defaults to 1 (size='m', no scaling).
63
+
56
64
  They exist because the active preset is marked with an attribute on a part, and
57
65
  `::part(preset-button)[data-active]` is **invalid CSS** — an attribute selector cannot follow
58
66
  `::part()`. Without these, recoloring just the active preset meant hijacking the shared
@@ -17,8 +17,11 @@ the last token. `value` is a `string[]` and repeated values are submitted under
17
17
 
18
18
  **Properties:** `value`, `label`, `hint`, `errorText` (`error-text`), `placeholder`, `name`,
19
19
  `required`, `disabled`, `accessibleLabel` (attribute `aria-label` — forwarded to the internal text
20
- input), `allowDuplicates` (`allow-duplicates`, default `false`), `editable` (reflected, default
21
- `false` see below), and `delimiter: string | null` (default `','` see below).
20
+ input), `size: '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' = 'm'` (reflected — same scale as `lr-input`'s
21
+ `size`, scaling the input-wrapper's row height and text size across six tiers; the remove button's
22
+ hit area stays fixed at `40px` across all sizes), `allowDuplicates` (`allow-duplicates`, default
23
+ `false`), `editable` (reflected, default `false` — see below), and `delimiter: string | null` (default
24
+ `','` — see below).
22
25
  **Slots:** `label`, `hint`, `error`.
23
26
  **Events:** `input`, `change`, `lr-add` (`detail: { value }`), `lr-remove`
24
27
  (`detail: { value, index }`), and `lr-token-edit`
@@ -51,8 +54,13 @@ does not work** — that is the four-character string `null`. Use `delimiter="no
51
54
  (both of which the attribute converter maps to `null`), or a property binding
52
55
  (`.delimiter=${null}`). Removing the attribute restores the `,` default.
53
56
 
54
- **Themeable custom properties:** `--lr-token-input-input-inline-size` (the editable input's
55
- `flex-basis` inside the wrapped token row; undeclared by default, falling back inline to
56
- `--lr-size-8rem`), `--lr-token-input-min-input-inline-size` (default `--lr-size-4rem`, the floor
57
- that input keeps once tokens have consumed the row), and `--lr-token-input-editor-inline-size`
57
+ **Themeable custom properties:** `--lr-token-input-padding` (the input-wrapper padding, scaled by
58
+ `size`), `--lr-token-input-font-size` (the input-wrapper and token font size, scaled by `size`),
59
+ `--lr-token-input-control-min-height` (the input-wrapper's block-size floor, scaled by `size`),
60
+ `--lr-token-input-control-height` (exact input-wrapper height undeclared by default, leaving the
61
+ `--lr-token-input-control-min-height` floor only; set it to a length to both floor and cap the row,
62
+ e.g. to pixel-match a sibling field in the same toolbar row), `--lr-token-input-input-inline-size`
63
+ (the editable input's `flex-basis` inside the wrapped token row; undeclared by default, falling back
64
+ inline to `--lr-size-8rem`), `--lr-token-input-min-input-inline-size` (default `--lr-size-4rem`, the
65
+ floor that input keeps once tokens have consumed the row), and `--lr-token-input-editor-inline-size`
58
66
  (default `--lr-size-6rem`, the inline size of the inline token editor opened by `editable`).