@aceshooting/lyra-ui 2.13.0 → 3.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 (362) hide show
  1. package/README.md +103 -28
  2. package/custom-elements.json +13276 -4793
  3. package/dist/components/archive-viewer/archive-loader.d.ts +8 -0
  4. package/dist/components/archive-viewer/archive-loader.d.ts.map +1 -0
  5. package/dist/components/archive-viewer/archive-loader.js +19 -0
  6. package/dist/components/archive-viewer/archive-loader.js.map +1 -0
  7. package/dist/components/archive-viewer/archive-viewer-register.d.ts +2 -0
  8. package/dist/components/archive-viewer/archive-viewer-register.d.ts.map +1 -0
  9. package/dist/components/archive-viewer/archive-viewer-register.js +8 -0
  10. package/dist/components/archive-viewer/archive-viewer-register.js.map +1 -0
  11. package/dist/components/archive-viewer/archive-viewer.class.d.ts +47 -0
  12. package/dist/components/archive-viewer/archive-viewer.class.d.ts.map +1 -0
  13. package/dist/components/archive-viewer/archive-viewer.class.js +115 -0
  14. package/dist/components/archive-viewer/archive-viewer.class.js.map +1 -0
  15. package/dist/components/archive-viewer/archive-viewer.d.ts +4 -0
  16. package/dist/components/archive-viewer/archive-viewer.d.ts.map +1 -0
  17. package/dist/components/archive-viewer/archive-viewer.js +7 -0
  18. package/dist/components/archive-viewer/archive-viewer.js.map +1 -0
  19. package/dist/components/archive-viewer/archive-viewer.styles.d.ts +2 -0
  20. package/dist/components/archive-viewer/archive-viewer.styles.d.ts.map +1 -0
  21. package/dist/components/archive-viewer/archive-viewer.styles.js +14 -0
  22. package/dist/components/archive-viewer/archive-viewer.styles.js.map +1 -0
  23. package/dist/components/attachment-chip/attachment-chip.styles.js +2 -2
  24. package/dist/components/button/button.class.d.ts +7 -9
  25. package/dist/components/button/button.class.d.ts.map +1 -1
  26. package/dist/components/button/button.class.js +12 -14
  27. package/dist/components/button/button.class.js.map +1 -1
  28. package/dist/components/button/button.styles.d.ts.map +1 -1
  29. package/dist/components/button/button.styles.js +30 -10
  30. package/dist/components/button/button.styles.js.map +1 -1
  31. package/dist/components/calendar-viewer/calendar-loader.d.ts +5 -0
  32. package/dist/components/calendar-viewer/calendar-loader.d.ts.map +1 -0
  33. package/dist/components/calendar-viewer/calendar-loader.js +18 -0
  34. package/dist/components/calendar-viewer/calendar-loader.js.map +1 -0
  35. package/dist/components/calendar-viewer/calendar-viewer.class.d.ts +55 -0
  36. package/dist/components/calendar-viewer/calendar-viewer.class.d.ts.map +1 -0
  37. package/dist/components/calendar-viewer/calendar-viewer.class.js +123 -0
  38. package/dist/components/calendar-viewer/calendar-viewer.class.js.map +1 -0
  39. package/dist/components/calendar-viewer/calendar-viewer.d.ts +3 -0
  40. package/dist/components/calendar-viewer/calendar-viewer.d.ts.map +1 -0
  41. package/dist/components/calendar-viewer/calendar-viewer.js +12 -0
  42. package/dist/components/calendar-viewer/calendar-viewer.js.map +1 -0
  43. package/dist/components/calendar-viewer/calendar-viewer.styles.d.ts +2 -0
  44. package/dist/components/calendar-viewer/calendar-viewer.styles.d.ts.map +1 -0
  45. package/dist/components/calendar-viewer/calendar-viewer.styles.js +16 -0
  46. package/dist/components/calendar-viewer/calendar-viewer.styles.js.map +1 -0
  47. package/dist/components/callout/callout.class.d.ts +4 -0
  48. package/dist/components/callout/callout.class.d.ts.map +1 -1
  49. package/dist/components/callout/callout.class.js +7 -0
  50. package/dist/components/callout/callout.class.js.map +1 -1
  51. package/dist/components/callout/callout.styles.d.ts.map +1 -1
  52. package/dist/components/callout/callout.styles.js +13 -0
  53. package/dist/components/callout/callout.styles.js.map +1 -1
  54. package/dist/components/chat-message/chat-message.styles.js +1 -1
  55. package/dist/components/code-block/code-block-core.class.d.ts +3 -0
  56. package/dist/components/code-block/code-block-core.class.d.ts.map +1 -1
  57. package/dist/components/code-block/code-block-core.class.js +41 -16
  58. package/dist/components/code-block/code-block-core.class.js.map +1 -1
  59. package/dist/components/code-block/code-block.class.d.ts +3 -0
  60. package/dist/components/code-block/code-block.class.d.ts.map +1 -1
  61. package/dist/components/code-block/code-block.class.js +41 -16
  62. package/dist/components/code-block/code-block.class.js.map +1 -1
  63. package/dist/components/code-block/code-block.styles.d.ts.map +1 -1
  64. package/dist/components/code-block/code-block.styles.js +17 -1
  65. package/dist/components/code-block/code-block.styles.js.map +1 -1
  66. package/dist/components/code-block/code-loader.d.ts +2 -0
  67. package/dist/components/code-block/code-loader.d.ts.map +1 -1
  68. package/dist/components/code-block/code-loader.js +14 -4
  69. package/dist/components/code-block/code-loader.js.map +1 -1
  70. package/dist/components/code-block/greycat-language.d.ts +9 -0
  71. package/dist/components/code-block/greycat-language.d.ts.map +1 -0
  72. package/dist/components/code-block/greycat-language.js +73 -0
  73. package/dist/components/code-block/greycat-language.js.map +1 -0
  74. package/dist/components/contact-viewer/contact-viewer.class.d.ts +31 -0
  75. package/dist/components/contact-viewer/contact-viewer.class.d.ts.map +1 -0
  76. package/dist/components/contact-viewer/contact-viewer.class.js +92 -0
  77. package/dist/components/contact-viewer/contact-viewer.class.js.map +1 -0
  78. package/dist/components/contact-viewer/contact-viewer.d.ts +3 -0
  79. package/dist/components/contact-viewer/contact-viewer.d.ts.map +1 -0
  80. package/dist/components/contact-viewer/contact-viewer.js +13 -0
  81. package/dist/components/contact-viewer/contact-viewer.js.map +1 -0
  82. package/dist/components/contact-viewer/contact-viewer.styles.d.ts +2 -0
  83. package/dist/components/contact-viewer/contact-viewer.styles.d.ts.map +1 -0
  84. package/dist/components/contact-viewer/contact-viewer.styles.js +16 -0
  85. package/dist/components/contact-viewer/contact-viewer.styles.js.map +1 -0
  86. package/dist/components/contact-viewer/vcard.d.ts +31 -0
  87. package/dist/components/contact-viewer/vcard.d.ts.map +1 -0
  88. package/dist/components/contact-viewer/vcard.js +87 -0
  89. package/dist/components/contact-viewer/vcard.js.map +1 -0
  90. package/dist/components/csv-viewer/csv-loader.d.ts +8 -0
  91. package/dist/components/csv-viewer/csv-loader.d.ts.map +1 -0
  92. package/dist/components/csv-viewer/csv-loader.js +19 -0
  93. package/dist/components/csv-viewer/csv-loader.js.map +1 -0
  94. package/dist/components/csv-viewer/csv-viewer.class.d.ts +31 -0
  95. package/dist/components/csv-viewer/csv-viewer.class.d.ts.map +1 -0
  96. package/dist/components/csv-viewer/csv-viewer.class.js +108 -0
  97. package/dist/components/csv-viewer/csv-viewer.class.js.map +1 -0
  98. package/dist/components/csv-viewer/csv-viewer.d.ts +3 -0
  99. package/dist/components/csv-viewer/csv-viewer.d.ts.map +1 -0
  100. package/dist/components/csv-viewer/csv-viewer.js +9 -0
  101. package/dist/components/csv-viewer/csv-viewer.js.map +1 -0
  102. package/dist/components/csv-viewer/csv-viewer.styles.d.ts +2 -0
  103. package/dist/components/csv-viewer/csv-viewer.styles.d.ts.map +1 -0
  104. package/dist/components/csv-viewer/csv-viewer.styles.js +14 -0
  105. package/dist/components/csv-viewer/csv-viewer.styles.js.map +1 -0
  106. package/dist/components/dataset-viewer/dataset-loader.d.ts +7 -0
  107. package/dist/components/dataset-viewer/dataset-loader.d.ts.map +1 -0
  108. package/dist/components/dataset-viewer/dataset-loader.js +19 -0
  109. package/dist/components/dataset-viewer/dataset-loader.js.map +1 -0
  110. package/dist/components/dataset-viewer/dataset-viewer.class.d.ts +34 -0
  111. package/dist/components/dataset-viewer/dataset-viewer.class.d.ts.map +1 -0
  112. package/dist/components/dataset-viewer/dataset-viewer.class.js +93 -0
  113. package/dist/components/dataset-viewer/dataset-viewer.class.js.map +1 -0
  114. package/dist/components/dataset-viewer/dataset-viewer.d.ts +3 -0
  115. package/dist/components/dataset-viewer/dataset-viewer.d.ts.map +1 -0
  116. package/dist/components/dataset-viewer/dataset-viewer.js +13 -0
  117. package/dist/components/dataset-viewer/dataset-viewer.js.map +1 -0
  118. package/dist/components/dataset-viewer/dataset-viewer.styles.d.ts +2 -0
  119. package/dist/components/dataset-viewer/dataset-viewer.styles.d.ts.map +1 -0
  120. package/dist/components/dataset-viewer/dataset-viewer.styles.js +13 -0
  121. package/dist/components/dataset-viewer/dataset-viewer.styles.js.map +1 -0
  122. package/dist/components/date-picker/date-input.class.d.ts +4 -0
  123. package/dist/components/date-picker/date-input.class.d.ts.map +1 -1
  124. package/dist/components/date-picker/date-input.class.js +16 -0
  125. package/dist/components/date-picker/date-input.class.js.map +1 -1
  126. package/dist/components/details/details.class.d.ts +7 -2
  127. package/dist/components/details/details.class.d.ts.map +1 -1
  128. package/dist/components/details/details.class.js +23 -3
  129. package/dist/components/details/details.class.js.map +1 -1
  130. package/dist/components/dialog/dialog.styles.js +1 -1
  131. package/dist/components/document-viewer/document-viewer.class.d.ts +47 -0
  132. package/dist/components/document-viewer/document-viewer.class.d.ts.map +1 -0
  133. package/dist/components/document-viewer/document-viewer.class.js +141 -0
  134. package/dist/components/document-viewer/document-viewer.class.js.map +1 -0
  135. package/dist/components/document-viewer/document-viewer.d.ts +5 -0
  136. package/dist/components/document-viewer/document-viewer.d.ts.map +1 -0
  137. package/dist/components/document-viewer/document-viewer.js +8 -0
  138. package/dist/components/document-viewer/document-viewer.js.map +1 -0
  139. package/dist/components/document-viewer/document-viewer.styles.d.ts +2 -0
  140. package/dist/components/document-viewer/document-viewer.styles.d.ts.map +1 -0
  141. package/dist/components/document-viewer/document-viewer.styles.js +24 -0
  142. package/dist/components/document-viewer/document-viewer.styles.js.map +1 -0
  143. package/dist/components/document-viewer/registry.d.ts +30 -0
  144. package/dist/components/document-viewer/registry.d.ts.map +1 -0
  145. package/dist/components/document-viewer/registry.js +42 -0
  146. package/dist/components/document-viewer/registry.js.map +1 -0
  147. package/dist/components/docx-viewer/docx-loader.d.ts +11 -0
  148. package/dist/components/docx-viewer/docx-loader.d.ts.map +1 -0
  149. package/dist/components/docx-viewer/docx-loader.js +39 -0
  150. package/dist/components/docx-viewer/docx-loader.js.map +1 -0
  151. package/dist/components/docx-viewer/docx-viewer.class.d.ts +42 -0
  152. package/dist/components/docx-viewer/docx-viewer.class.d.ts.map +1 -0
  153. package/dist/components/docx-viewer/docx-viewer.class.js +131 -0
  154. package/dist/components/docx-viewer/docx-viewer.class.js.map +1 -0
  155. package/dist/components/docx-viewer/docx-viewer.d.ts +3 -0
  156. package/dist/components/docx-viewer/docx-viewer.d.ts.map +1 -0
  157. package/dist/components/docx-viewer/docx-viewer.js +12 -0
  158. package/dist/components/docx-viewer/docx-viewer.js.map +1 -0
  159. package/dist/components/docx-viewer/docx-viewer.styles.d.ts +2 -0
  160. package/dist/components/docx-viewer/docx-viewer.styles.d.ts.map +1 -0
  161. package/dist/components/docx-viewer/docx-viewer.styles.js +99 -0
  162. package/dist/components/docx-viewer/docx-viewer.styles.js.map +1 -0
  163. package/dist/components/docx-viewer/fixtures/minimal-docx-fixture.d.ts +2 -0
  164. package/dist/components/docx-viewer/fixtures/minimal-docx-fixture.d.ts.map +1 -0
  165. package/dist/components/docx-viewer/fixtures/minimal-docx-fixture.js +3 -0
  166. package/dist/components/docx-viewer/fixtures/minimal-docx-fixture.js.map +1 -0
  167. package/dist/components/ebook-viewer/ebook-loader.d.ts +9 -0
  168. package/dist/components/ebook-viewer/ebook-loader.d.ts.map +1 -0
  169. package/dist/components/ebook-viewer/ebook-loader.js +21 -0
  170. package/dist/components/ebook-viewer/ebook-loader.js.map +1 -0
  171. package/dist/components/ebook-viewer/ebook-viewer-register.d.ts +2 -0
  172. package/dist/components/ebook-viewer/ebook-viewer-register.d.ts.map +1 -0
  173. package/dist/components/ebook-viewer/ebook-viewer-register.js +9 -0
  174. package/dist/components/ebook-viewer/ebook-viewer-register.js.map +1 -0
  175. package/dist/components/ebook-viewer/ebook-viewer.class.d.ts +51 -0
  176. package/dist/components/ebook-viewer/ebook-viewer.class.d.ts.map +1 -0
  177. package/dist/components/ebook-viewer/ebook-viewer.class.js +164 -0
  178. package/dist/components/ebook-viewer/ebook-viewer.class.js.map +1 -0
  179. package/dist/components/ebook-viewer/ebook-viewer.d.ts +2 -0
  180. package/dist/components/ebook-viewer/ebook-viewer.d.ts.map +1 -0
  181. package/dist/components/ebook-viewer/ebook-viewer.js +5 -0
  182. package/dist/components/ebook-viewer/ebook-viewer.js.map +1 -0
  183. package/dist/components/ebook-viewer/ebook-viewer.styles.d.ts +2 -0
  184. package/dist/components/ebook-viewer/ebook-viewer.styles.d.ts.map +1 -0
  185. package/dist/components/ebook-viewer/ebook-viewer.styles.js +73 -0
  186. package/dist/components/ebook-viewer/ebook-viewer.styles.js.map +1 -0
  187. package/dist/components/ebook-viewer/fixtures/minimal-epub-fixture.d.ts +2 -0
  188. package/dist/components/ebook-viewer/fixtures/minimal-epub-fixture.d.ts.map +1 -0
  189. package/dist/components/ebook-viewer/fixtures/minimal-epub-fixture.js +2 -0
  190. package/dist/components/ebook-viewer/fixtures/minimal-epub-fixture.js.map +1 -0
  191. package/dist/components/email-viewer/email-loader.d.ts +10 -0
  192. package/dist/components/email-viewer/email-loader.d.ts.map +1 -0
  193. package/dist/components/email-viewer/email-loader.js +38 -0
  194. package/dist/components/email-viewer/email-loader.js.map +1 -0
  195. package/dist/components/email-viewer/email-viewer.class.d.ts +72 -0
  196. package/dist/components/email-viewer/email-viewer.class.d.ts.map +1 -0
  197. package/dist/components/email-viewer/email-viewer.class.js +154 -0
  198. package/dist/components/email-viewer/email-viewer.class.js.map +1 -0
  199. package/dist/components/email-viewer/email-viewer.d.ts +3 -0
  200. package/dist/components/email-viewer/email-viewer.d.ts.map +1 -0
  201. package/dist/components/email-viewer/email-viewer.js +12 -0
  202. package/dist/components/email-viewer/email-viewer.js.map +1 -0
  203. package/dist/components/email-viewer/email-viewer.styles.d.ts +2 -0
  204. package/dist/components/email-viewer/email-viewer.styles.d.ts.map +1 -0
  205. package/dist/components/email-viewer/email-viewer.styles.js +35 -0
  206. package/dist/components/email-viewer/email-viewer.styles.js.map +1 -0
  207. package/dist/components/file-icon/file-icon.class.d.ts +31 -0
  208. package/dist/components/file-icon/file-icon.class.d.ts.map +1 -0
  209. package/dist/components/file-icon/file-icon.class.js +74 -0
  210. package/dist/components/file-icon/file-icon.class.js.map +1 -0
  211. package/dist/components/file-icon/file-icon.d.ts +3 -0
  212. package/dist/components/file-icon/file-icon.d.ts.map +1 -0
  213. package/dist/components/file-icon/file-icon.js +6 -0
  214. package/dist/components/file-icon/file-icon.js.map +1 -0
  215. package/dist/components/file-icon/file-icon.styles.d.ts +2 -0
  216. package/dist/components/file-icon/file-icon.styles.d.ts.map +1 -0
  217. package/dist/components/file-icon/file-icon.styles.js +23 -0
  218. package/dist/components/file-icon/file-icon.styles.js.map +1 -0
  219. package/dist/components/file-icon/file-type-metadata.d.ts +14 -0
  220. package/dist/components/file-icon/file-type-metadata.d.ts.map +1 -0
  221. package/dist/components/file-icon/file-type-metadata.js +81 -0
  222. package/dist/components/file-icon/file-type-metadata.js.map +1 -0
  223. package/dist/components/heatmap/heatmap.class.d.ts +27 -0
  224. package/dist/components/heatmap/heatmap.class.d.ts.map +1 -1
  225. package/dist/components/heatmap/heatmap.class.js +125 -1
  226. package/dist/components/heatmap/heatmap.class.js.map +1 -1
  227. package/dist/components/heatmap/heatmap.styles.d.ts.map +1 -1
  228. package/dist/components/heatmap/heatmap.styles.js +27 -0
  229. package/dist/components/heatmap/heatmap.styles.js.map +1 -1
  230. package/dist/components/html-viewer/dompurify-loader.d.ts +7 -0
  231. package/dist/components/html-viewer/dompurify-loader.d.ts.map +1 -0
  232. package/dist/components/html-viewer/dompurify-loader.js +19 -0
  233. package/dist/components/html-viewer/dompurify-loader.js.map +1 -0
  234. package/dist/components/html-viewer/html-viewer.class.d.ts +29 -0
  235. package/dist/components/html-viewer/html-viewer.class.d.ts.map +1 -0
  236. package/dist/components/html-viewer/html-viewer.class.js +88 -0
  237. package/dist/components/html-viewer/html-viewer.class.js.map +1 -0
  238. package/dist/components/html-viewer/html-viewer.d.ts +2 -0
  239. package/dist/components/html-viewer/html-viewer.d.ts.map +1 -0
  240. package/dist/components/html-viewer/html-viewer.js +15 -0
  241. package/dist/components/html-viewer/html-viewer.js.map +1 -0
  242. package/dist/components/html-viewer/html-viewer.styles.d.ts +2 -0
  243. package/dist/components/html-viewer/html-viewer.styles.d.ts.map +1 -0
  244. package/dist/components/html-viewer/html-viewer.styles.js +26 -0
  245. package/dist/components/html-viewer/html-viewer.styles.js.map +1 -0
  246. package/dist/components/json-viewer/json-viewer.styles.js +1 -1
  247. package/dist/components/markdown/markdown.styles.js +1 -1
  248. package/dist/components/model-select/model-select.class.d.ts +4 -0
  249. package/dist/components/model-select/model-select.class.d.ts.map +1 -1
  250. package/dist/components/model-select/model-select.class.js +16 -1
  251. package/dist/components/model-select/model-select.class.js.map +1 -1
  252. package/dist/components/overlay/overlay.styles.d.ts.map +1 -1
  253. package/dist/components/overlay/overlay.styles.js +11 -1
  254. package/dist/components/overlay/overlay.styles.js.map +1 -1
  255. package/dist/components/pdf-viewer/pdf-loader.d.ts +6 -0
  256. package/dist/components/pdf-viewer/pdf-loader.d.ts.map +1 -0
  257. package/dist/components/pdf-viewer/pdf-loader.js +22 -0
  258. package/dist/components/pdf-viewer/pdf-loader.js.map +1 -0
  259. package/dist/components/pdf-viewer/pdf-viewer.class.d.ts +80 -0
  260. package/dist/components/pdf-viewer/pdf-viewer.class.d.ts.map +1 -0
  261. package/dist/components/pdf-viewer/pdf-viewer.class.js +296 -0
  262. package/dist/components/pdf-viewer/pdf-viewer.class.js.map +1 -0
  263. package/dist/components/pdf-viewer/pdf-viewer.d.ts +2 -0
  264. package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -0
  265. package/dist/components/pdf-viewer/pdf-viewer.js +13 -0
  266. package/dist/components/pdf-viewer/pdf-viewer.js.map +1 -0
  267. package/dist/components/pdf-viewer/pdf-viewer.styles.d.ts +2 -0
  268. package/dist/components/pdf-viewer/pdf-viewer.styles.d.ts.map +1 -0
  269. package/dist/components/pdf-viewer/pdf-viewer.styles.js +19 -0
  270. package/dist/components/pdf-viewer/pdf-viewer.styles.js.map +1 -0
  271. package/dist/components/pptx-viewer/pptx-loader.d.ts +5 -0
  272. package/dist/components/pptx-viewer/pptx-loader.d.ts.map +1 -0
  273. package/dist/components/pptx-viewer/pptx-loader.js +20 -0
  274. package/dist/components/pptx-viewer/pptx-loader.js.map +1 -0
  275. package/dist/components/pptx-viewer/pptx-viewer.class.d.ts +68 -0
  276. package/dist/components/pptx-viewer/pptx-viewer.class.d.ts.map +1 -0
  277. package/dist/components/pptx-viewer/pptx-viewer.class.js +205 -0
  278. package/dist/components/pptx-viewer/pptx-viewer.class.js.map +1 -0
  279. package/dist/components/pptx-viewer/pptx-viewer.d.ts +2 -0
  280. package/dist/components/pptx-viewer/pptx-viewer.d.ts.map +1 -0
  281. package/dist/components/pptx-viewer/pptx-viewer.js +11 -0
  282. package/dist/components/pptx-viewer/pptx-viewer.js.map +1 -0
  283. package/dist/components/pptx-viewer/pptx-viewer.styles.d.ts +2 -0
  284. package/dist/components/pptx-viewer/pptx-viewer.styles.d.ts.map +1 -0
  285. package/dist/components/pptx-viewer/pptx-viewer.styles.js +66 -0
  286. package/dist/components/pptx-viewer/pptx-viewer.styles.js.map +1 -0
  287. package/dist/components/responsive-panel/responsive-panel.styles.js +1 -1
  288. package/dist/components/segmented/segmented.class.d.ts +6 -4
  289. package/dist/components/segmented/segmented.class.d.ts.map +1 -1
  290. package/dist/components/segmented/segmented.class.js +3 -2
  291. package/dist/components/segmented/segmented.class.js.map +1 -1
  292. package/dist/components/segmented/segmented.styles.js +1 -1
  293. package/dist/components/spreadsheet-viewer/spreadsheet-loader.d.ts +8 -0
  294. package/dist/components/spreadsheet-viewer/spreadsheet-loader.d.ts.map +1 -0
  295. package/dist/components/spreadsheet-viewer/spreadsheet-loader.js +19 -0
  296. package/dist/components/spreadsheet-viewer/spreadsheet-loader.js.map +1 -0
  297. package/dist/components/spreadsheet-viewer/spreadsheet-viewer.class.d.ts +32 -0
  298. package/dist/components/spreadsheet-viewer/spreadsheet-viewer.class.d.ts.map +1 -0
  299. package/dist/components/spreadsheet-viewer/spreadsheet-viewer.class.js +99 -0
  300. package/dist/components/spreadsheet-viewer/spreadsheet-viewer.class.js.map +1 -0
  301. package/dist/components/spreadsheet-viewer/spreadsheet-viewer.d.ts +3 -0
  302. package/dist/components/spreadsheet-viewer/spreadsheet-viewer.d.ts.map +1 -0
  303. package/dist/components/spreadsheet-viewer/spreadsheet-viewer.js +12 -0
  304. package/dist/components/spreadsheet-viewer/spreadsheet-viewer.js.map +1 -0
  305. package/dist/components/spreadsheet-viewer/spreadsheet-viewer.styles.d.ts +2 -0
  306. package/dist/components/spreadsheet-viewer/spreadsheet-viewer.styles.d.ts.map +1 -0
  307. package/dist/components/spreadsheet-viewer/spreadsheet-viewer.styles.js +14 -0
  308. package/dist/components/spreadsheet-viewer/spreadsheet-viewer.styles.js.map +1 -0
  309. package/dist/components/svg-viewer/dompurify-loader.d.ts +7 -0
  310. package/dist/components/svg-viewer/dompurify-loader.d.ts.map +1 -0
  311. package/dist/components/svg-viewer/dompurify-loader.js +19 -0
  312. package/dist/components/svg-viewer/dompurify-loader.js.map +1 -0
  313. package/dist/components/svg-viewer/svg-viewer.class.d.ts +29 -0
  314. package/dist/components/svg-viewer/svg-viewer.class.d.ts.map +1 -0
  315. package/dist/components/svg-viewer/svg-viewer.class.js +95 -0
  316. package/dist/components/svg-viewer/svg-viewer.class.js.map +1 -0
  317. package/dist/components/svg-viewer/svg-viewer.d.ts +2 -0
  318. package/dist/components/svg-viewer/svg-viewer.d.ts.map +1 -0
  319. package/dist/components/svg-viewer/svg-viewer.js +15 -0
  320. package/dist/components/svg-viewer/svg-viewer.js.map +1 -0
  321. package/dist/components/svg-viewer/svg-viewer.styles.d.ts +2 -0
  322. package/dist/components/svg-viewer/svg-viewer.styles.d.ts.map +1 -0
  323. package/dist/components/svg-viewer/svg-viewer.styles.js +50 -0
  324. package/dist/components/svg-viewer/svg-viewer.styles.js.map +1 -0
  325. package/dist/components/tool-approval-dialog/tool-approval-dialog.class.d.ts +13 -6
  326. package/dist/components/tool-approval-dialog/tool-approval-dialog.class.d.ts.map +1 -1
  327. package/dist/components/tool-approval-dialog/tool-approval-dialog.class.js +48 -10
  328. package/dist/components/tool-approval-dialog/tool-approval-dialog.class.js.map +1 -1
  329. package/dist/components/tool-approval-dialog/tool-approval-dialog.styles.js +1 -1
  330. package/dist/components/tool-result-dialog/tool-result-dialog.styles.js +1 -1
  331. package/dist/components/tool-select-dialog/tool-select-dialog.class.d.ts +7 -0
  332. package/dist/components/tool-select-dialog/tool-select-dialog.class.d.ts.map +1 -1
  333. package/dist/components/tool-select-dialog/tool-select-dialog.class.js +31 -0
  334. package/dist/components/tool-select-dialog/tool-select-dialog.class.js.map +1 -1
  335. package/dist/components/tool-select-dialog/tool-select-dialog.styles.js +1 -1
  336. package/dist/components/widget/widget.styles.js +1 -1
  337. package/dist/components/word-cloud/word-cloud.styles.js +4 -4
  338. package/dist/internal/localization.d.ts +1 -1
  339. package/dist/internal/localization.d.ts.map +1 -1
  340. package/dist/internal/localization.js +63 -0
  341. package/dist/internal/localization.js.map +1 -1
  342. package/dist/internal/lyra-element.d.ts +2 -2
  343. package/dist/internal/lyra-element.js +2 -2
  344. package/dist/internal/root-registration-allowlist.d.ts +1 -1
  345. package/dist/internal/root-registration-allowlist.d.ts.map +1 -1
  346. package/dist/internal/root-registration-allowlist.js +15 -0
  347. package/dist/internal/root-registration-allowlist.js.map +1 -1
  348. package/dist/internal/tokens.styles.d.ts.map +1 -1
  349. package/dist/internal/tokens.styles.js +202 -198
  350. package/dist/internal/tokens.styles.js.map +1 -1
  351. package/dist/lyra.d.ts +43 -0
  352. package/dist/lyra.d.ts.map +1 -1
  353. package/dist/lyra.js +32 -0
  354. package/dist/lyra.js.map +1 -1
  355. package/dist/testing/happy-dom-shims.d.ts +4 -2
  356. package/dist/testing/happy-dom-shims.d.ts.map +1 -1
  357. package/dist/testing/happy-dom-shims.js +6 -2
  358. package/dist/testing/happy-dom-shims.js.map +1 -1
  359. package/dist/theme.css +58 -0
  360. package/llms-full.txt +431 -37
  361. package/llms.txt +11 -9
  362. package/package.json +91 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-viewer.styles.d.ts","sourceRoot":"","sources":["../../../src/components/email-viewer/email-viewer.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAgClB,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { css } from 'lit';
2
+ export const styles = css `
3
+ :host { display: block; --lyra-email-viewer-max-height: none; }
4
+ [part='base'] {
5
+ display: flex;
6
+ flex-direction: column;
7
+ box-sizing: border-box;
8
+ border: var(--lyra-border-width-thin) solid var(--lyra-color-border);
9
+ border-radius: var(--lyra-radius);
10
+ background: var(--lyra-color-surface);
11
+ overflow: hidden;
12
+ }
13
+ [part='headers'] {
14
+ display: grid;
15
+ grid-template-columns: auto minmax(0, 1fr);
16
+ gap: var(--lyra-space-2xs) var(--lyra-space-s);
17
+ padding: var(--lyra-space-m);
18
+ border-block-end: var(--lyra-border-width-thin) solid var(--lyra-color-border);
19
+ font-size: var(--lyra-font-size-md-sm);
20
+ }
21
+ [part$='-label'] { color: var(--lyra-color-text-quiet); font-weight: var(--lyra-font-weight-semibold); text-align: end; }
22
+ [part='subject'] { font-weight: var(--lyra-font-weight-semibold); overflow-wrap: anywhere; }
23
+ [part='body'] { box-sizing: border-box; overflow: auto; max-block-size: var(--lyra-email-viewer-max-height); padding: var(--lyra-space-m); }
24
+ [part='body-html'], [part='body-text'] { color: var(--lyra-color-text); font-size: var(--lyra-font-size-md-sm); line-height: var(--lyra-line-height-normal); }
25
+ [part='body-html'] { overflow-wrap: anywhere; }
26
+ [part='body-text'] { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
27
+ [part='attachments'] { padding: var(--lyra-space-m); border-block-start: var(--lyra-border-width-thin) solid var(--lyra-color-border); }
28
+ [part='attachments-label'] { display: block; margin-block-end: var(--lyra-space-xs); color: var(--lyra-color-text-quiet); font-weight: var(--lyra-font-weight-semibold); font-size: var(--lyra-font-size-xs); text-transform: uppercase; }
29
+ [part='attachment-list'] { display: flex; flex-direction: column; gap: var(--lyra-space-2xs); margin: 0; padding: 0; list-style: none; }
30
+ [part='attachment-item'] { display: flex; justify-content: space-between; gap: var(--lyra-space-s); padding: var(--lyra-space-xs) var(--lyra-space-s); border-radius: var(--lyra-radius); background: var(--lyra-color-brand-quiet); font-size: var(--lyra-font-size-sm); }
31
+ .empty-note { margin: 0; padding: var(--lyra-space-m); color: var(--lyra-color-text-quiet); font-size: var(--lyra-font-size-md-sm); }
32
+ [part='error'] { margin: 0; padding: var(--lyra-space-l); color: var(--lyra-color-danger); font-size: var(--lyra-font-size-md-sm); text-align: center; }
33
+ [part='spinner'] { display: flex; justify-content: center; padding: var(--lyra-space-l); }
34
+ `;
35
+ //# sourceMappingURL=email-viewer.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-viewer.styles.js","sourceRoot":"","sources":["../../../src/components/email-viewer/email-viewer.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCxB,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { type TemplateResult } from 'lit';
2
+ import { LyraElement } from '../../internal/lyra-element.js';
3
+ export type LyraFileIconVariant = 'icon' | 'label';
4
+ /**
5
+ * Displays a localized, tokenized file-type badge from a MIME type.
6
+ *
7
+ * @customElement lyra-file-icon
8
+ * @csspart base - The outer presentation wrapper.
9
+ * @csspart icon - The format badge.
10
+ * @csspart label - The localized format label in `variant="label"` mode.
11
+ */
12
+ export declare class LyraFileIcon extends LyraElement {
13
+ static styles: import("lit").CSSResultGroup[];
14
+ /** MIME type used to resolve metadata. */
15
+ mimeType: string;
16
+ /** Optional filename used for fallback detection with an empty or generic MIME type. */
17
+ name: string;
18
+ /** Whether the badge is decorative and hidden from assistive technology. */
19
+ decorative: boolean;
20
+ /** Shows only the icon or the icon together with its localized label. */
21
+ variant: LyraFileIconVariant;
22
+ /** Optional visible/accessibility label override. */
23
+ label: string;
24
+ render(): TemplateResult;
25
+ }
26
+ declare global {
27
+ interface HTMLElementTagNameMap {
28
+ 'lyra-file-icon': LyraFileIcon;
29
+ }
30
+ }
31
+ //# sourceMappingURL=file-icon.class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-icon.class.d.ts","sourceRoot":"","sources":["../../../src/components/file-icon/file-icon.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAmB7D,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnD;;;;;;;GAOG;AACH,qBAAa,YAAa,SAAQ,WAAW;IAC3C,MAAM,CAAC,MAAM,iCAAgC;IAE7C,0CAA0C;IACJ,QAAQ,SAAM;IACpD,wFAAwF;IAC5E,IAAI,SAAM;IACtB,4EAA4E;IAChC,UAAU,UAAS;IAC/D,yEAAyE;IAC5C,OAAO,EAAE,mBAAmB,CAAU;IACnE,qDAAqD;IACzC,KAAK,SAAM;IAEvB,MAAM,IAAI,cAAc,CASvB;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAAG,gBAAgB,EAAE,YAAY,CAAC;KAAE;CACpE"}
@@ -0,0 +1,74 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { html, nothing } from 'lit';
8
+ import { property } from 'lit/decorators.js';
9
+ import { LyraElement } from '../../internal/lyra-element.js';
10
+ import { getFileTypeMetadata } from './file-type-metadata.js';
11
+ import { styles } from './file-icon.styles.js';
12
+ const ICON_LABELS = {
13
+ file: 'fileTypeFile',
14
+ pdf: 'fileTypePdf',
15
+ word: 'fileTypeWord',
16
+ spreadsheet: 'fileTypeSpreadsheet',
17
+ presentation: 'fileTypePresentation',
18
+ text: 'fileTypeText',
19
+ code: 'fileTypeCode',
20
+ archive: 'fileTypeArchive',
21
+ image: 'fileTypeImage',
22
+ audio: 'fileTypeAudio',
23
+ video: 'fileTypeVideo',
24
+ };
25
+ /**
26
+ * Displays a localized, tokenized file-type badge from a MIME type.
27
+ *
28
+ * @customElement lyra-file-icon
29
+ * @csspart base - The outer presentation wrapper.
30
+ * @csspart icon - The format badge.
31
+ * @csspart label - The localized format label in `variant="label"` mode.
32
+ */
33
+ export class LyraFileIcon extends LyraElement {
34
+ constructor() {
35
+ super(...arguments);
36
+ /** MIME type used to resolve metadata. */
37
+ this.mimeType = '';
38
+ /** Optional filename used for fallback detection with an empty or generic MIME type. */
39
+ this.name = '';
40
+ /** Whether the badge is decorative and hidden from assistive technology. */
41
+ this.decorative = false;
42
+ /** Shows only the icon or the icon together with its localized label. */
43
+ this.variant = 'icon';
44
+ /** Optional visible/accessibility label override. */
45
+ this.label = '';
46
+ }
47
+ static { this.styles = [LyraElement.styles, styles]; }
48
+ render() {
49
+ const metadata = getFileTypeMetadata(this.mimeType, this.name);
50
+ const localizedLabel = this.label || this.localize(ICON_LABELS[metadata.icon]);
51
+ return html `
52
+ <span part="base" role=${this.decorative ? 'presentation' : 'img'} aria-label=${this.decorative ? nothing : localizedLabel}>
53
+ <span part="icon" aria-hidden="true">${this.localize(ICON_LABELS[metadata.icon])}</span>
54
+ ${this.variant === 'label' ? html `<span part="label">${localizedLabel}</span>` : nothing}
55
+ </span>
56
+ `;
57
+ }
58
+ }
59
+ __decorate([
60
+ property({ attribute: 'mime-type' })
61
+ ], LyraFileIcon.prototype, "mimeType", void 0);
62
+ __decorate([
63
+ property()
64
+ ], LyraFileIcon.prototype, "name", void 0);
65
+ __decorate([
66
+ property({ type: Boolean, reflect: true })
67
+ ], LyraFileIcon.prototype, "decorative", void 0);
68
+ __decorate([
69
+ property({ reflect: true })
70
+ ], LyraFileIcon.prototype, "variant", void 0);
71
+ __decorate([
72
+ property()
73
+ ], LyraFileIcon.prototype, "label", void 0);
74
+ //# sourceMappingURL=file-icon.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-icon.class.js","sourceRoot":"","sources":["../../../src/components/file-icon/file-icon.class.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAuB,MAAM,KAAK,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAyB,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,WAAW,GAA6C;IAC5D,IAAI,EAAE,cAAc;IACpB,GAAG,EAAE,aAAa;IAClB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,qBAAqB;IAClC,YAAY,EAAE,sBAAsB;IACpC,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,cAAc;IACpB,OAAO,EAAE,iBAAiB;IAC1B,KAAK,EAAE,eAAe;IACtB,KAAK,EAAE,eAAe;IACtB,KAAK,EAAE,eAAe;CACvB,CAAC;AAIF;;;;;;;GAOG;AACH,MAAM,OAAO,YAAa,SAAQ,WAAW;IAA7C;;QAGE,0CAA0C;QACJ,aAAQ,GAAG,EAAE,CAAC;QACpD,wFAAwF;QAC5E,SAAI,GAAG,EAAE,CAAC;QACtB,4EAA4E;QAChC,eAAU,GAAG,KAAK,CAAC;QAC/D,yEAAyE;QAC5C,YAAO,GAAwB,MAAM,CAAC;QACnE,qDAAqD;QACzC,UAAK,GAAG,EAAE,CAAC;IAYzB,CAAC;aAvBQ,WAAM,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,AAA/B,CAAgC;IAa7C,MAAM;QACJ,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAA;+BACgB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,eAAe,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc;+CACjF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;UAC9E,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA,sBAAsB,cAAc,SAAS,CAAC,CAAC,CAAC,OAAO;;KAE3F,CAAC;IACJ,CAAC;CACF;AApBuC;IAArC,QAAQ,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;8CAAe;AAExC;IAAX,QAAQ,EAAE;0CAAW;AAEsB;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gDAAoB;AAElC;IAA5B,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;6CAAuC;AAEvD;IAAX,QAAQ,EAAE;2CAAY"}
@@ -0,0 +1,3 @@
1
+ export * from './file-icon.class.js';
2
+ export * from './file-type-metadata.js';
3
+ //# sourceMappingURL=file-icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-icon.d.ts","sourceRoot":"","sources":["../../../src/components/file-icon/file-icon.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './file-icon.class.js';
2
+ export * from './file-type-metadata.js';
3
+ import { LyraFileIcon } from './file-icon.class.js';
4
+ import { defineElement } from '../../internal/prefix.js';
5
+ defineElement('file-icon', LyraFileIcon);
6
+ //# sourceMappingURL=file-icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-icon.js","sourceRoot":"","sources":["../../../src/components/file-icon/file-icon.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,aAAa,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const styles: import("lit").CSSResult;
2
+ //# sourceMappingURL=file-icon.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-icon.styles.d.ts","sourceRoot":"","sources":["../../../src/components/file-icon/file-icon.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAoBlB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { css } from 'lit';
2
+ export const styles = css `
3
+ :host { display: inline-flex; vertical-align: middle; }
4
+ [part='base'] { display: inline-flex; align-items: center; gap: var(--lyra-space-xs); min-inline-size: 0; }
5
+ [part='icon'] {
6
+ display: inline-flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+ inline-size: var(--lyra-file-icon-size, var(--lyra-size-2rem));
10
+ block-size: var(--lyra-file-icon-size, var(--lyra-size-2rem));
11
+ box-sizing: border-box;
12
+ border: var(--lyra-border-width-thin) solid var(--lyra-color-border);
13
+ border-radius: var(--lyra-radius);
14
+ background: var(--lyra-color-brand-quiet);
15
+ color: var(--lyra-color-brand);
16
+ font-size: var(--lyra-font-size-xs);
17
+ font-weight: var(--lyra-font-weight-bold);
18
+ line-height: var(--lyra-line-height-none);
19
+ text-transform: uppercase;
20
+ }
21
+ [part='label'] { min-inline-size: 0; color: var(--lyra-color-text); }
22
+ `;
23
+ //# sourceMappingURL=file-icon.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-icon.styles.js","sourceRoot":"","sources":["../../../src/components/file-icon/file-icon.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;CAoBxB,CAAC"}
@@ -0,0 +1,14 @@
1
+ export type LyraFileTypeIcon = 'file' | 'pdf' | 'word' | 'spreadsheet' | 'presentation' | 'text' | 'code' | 'archive' | 'image' | 'audio' | 'video';
2
+ export type LyraFileTypeCategory = 'document' | 'spreadsheet' | 'presentation' | 'image' | 'audio' | 'video' | 'archive' | 'code' | 'generic';
3
+ export type LyraFileTypeMetadata = {
4
+ label: string;
5
+ description?: string;
6
+ icon: LyraFileTypeIcon;
7
+ category: LyraFileTypeCategory;
8
+ extensions?: readonly string[];
9
+ };
10
+ /** Adds or replaces a custom MIME mapping used by future metadata lookups. */
11
+ export declare function registerFileTypeMetadata(mimeTypes: string | readonly string[], metadata: LyraFileTypeMetadata): void;
12
+ /** Returns presentation metadata for a MIME type, with a safe generic fallback. */
13
+ export declare function getFileTypeMetadata(mimeType: string, fileName?: string): LyraFileTypeMetadata;
14
+ //# sourceMappingURL=file-type-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-type-metadata.d.ts","sourceRoot":"","sources":["../../../src/components/file-icon/file-type-metadata.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,KAAK,GACL,MAAM,GACN,aAAa,GACb,cAAc,GACd,MAAM,GACN,MAAM,GACN,SAAS,GACT,OAAO,GACP,OAAO,GACP,OAAO,CAAC;AAEZ,MAAM,MAAM,oBAAoB,GAC5B,UAAU,GACV,aAAa,GACb,cAAc,GACd,OAAO,GACP,OAAO,GACP,OAAO,GACP,SAAS,GACT,MAAM,GACN,SAAS,CAAC;AAEd,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC,CAAC;AA2DF,8EAA8E;AAC9E,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EACrC,QAAQ,EAAE,oBAAoB,GAC7B,IAAI,CAaN;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,oBAAoB,CAUzF"}
@@ -0,0 +1,81 @@
1
+ const generic = { label: 'File', icon: 'file', category: 'generic' };
2
+ const catalog = {
3
+ 'application/pdf': { label: 'PDF', icon: 'pdf', category: 'document', extensions: ['.pdf'] },
4
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': { label: 'Word document', icon: 'word', category: 'document', extensions: ['.docx'] },
5
+ 'application/msword': { label: 'Word document', icon: 'word', category: 'document', extensions: ['.doc'] },
6
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': { label: 'Excel spreadsheet', icon: 'spreadsheet', category: 'spreadsheet', extensions: ['.xlsx'] },
7
+ 'application/vnd.ms-excel': { label: 'Excel spreadsheet', icon: 'spreadsheet', category: 'spreadsheet', extensions: ['.xls'] },
8
+ 'application/vnd.openxmlformats-officedocument.presentationml.presentation': { label: 'PowerPoint presentation', icon: 'presentation', category: 'presentation', extensions: ['.pptx'] },
9
+ 'application/vnd.ms-powerpoint': { label: 'PowerPoint presentation', icon: 'presentation', category: 'presentation', extensions: ['.ppt'] },
10
+ 'application/vnd.oasis.opendocument.text': { label: 'OpenDocument text', icon: 'word', category: 'document', extensions: ['.odt'] },
11
+ 'application/vnd.oasis.opendocument.spreadsheet': { label: 'OpenDocument spreadsheet', icon: 'spreadsheet', category: 'spreadsheet', extensions: ['.ods'] },
12
+ 'application/vnd.oasis.opendocument.presentation': { label: 'OpenDocument presentation', icon: 'presentation', category: 'presentation', extensions: ['.odp'] },
13
+ 'application/rtf': { label: 'Rich text document', icon: 'word', category: 'document', extensions: ['.rtf'] },
14
+ 'application/epub+zip': { label: 'EPUB ebook', icon: 'word', category: 'document', extensions: ['.epub'] },
15
+ 'application/x-mobipocket-ebook': { label: 'MOBI ebook', icon: 'word', category: 'document', extensions: ['.mobi'] },
16
+ 'text/plain': { label: 'Plain text', icon: 'text', category: 'document', extensions: ['.txt'] },
17
+ 'text/csv': { label: 'CSV spreadsheet', icon: 'spreadsheet', category: 'spreadsheet', extensions: ['.csv'] },
18
+ 'text/markdown': { label: 'Markdown', icon: 'code', category: 'code', extensions: ['.md', '.markdown'] },
19
+ 'text/html': { label: 'HTML document', icon: 'code', category: 'code', extensions: ['.html', '.htm'] },
20
+ 'text/xml': { label: 'XML document', icon: 'code', category: 'code', extensions: ['.xml'] },
21
+ 'application/xml': { label: 'XML document', icon: 'code', category: 'code', extensions: ['.xml'] },
22
+ 'application/json': { label: 'JSON data', icon: 'code', category: 'code', extensions: ['.json'] },
23
+ 'application/yaml': { label: 'YAML data', icon: 'code', category: 'code', extensions: ['.yaml', '.yml'] },
24
+ 'text/yaml': { label: 'YAML data', icon: 'code', category: 'code', extensions: ['.yaml', '.yml'] },
25
+ 'application/zip': { label: 'ZIP archive', icon: 'archive', category: 'archive', extensions: ['.zip'] },
26
+ 'application/x-zip-compressed': { label: 'ZIP archive', icon: 'archive', category: 'archive', extensions: ['.zip'] },
27
+ 'application/gzip': { label: 'GZip archive', icon: 'archive', category: 'archive', extensions: ['.gz', '.gzip'] },
28
+ 'application/x-gzip': { label: 'GZip archive', icon: 'archive', category: 'archive', extensions: ['.gz', '.gzip'] },
29
+ 'application/x-tar': { label: 'TAR archive', icon: 'archive', category: 'archive', extensions: ['.tar'] },
30
+ 'application/x-7z-compressed': { label: '7-Zip archive', icon: 'archive', category: 'archive', extensions: ['.7z'] },
31
+ 'application/vnd.rar': { label: 'RAR archive', icon: 'archive', category: 'archive', extensions: ['.rar'] },
32
+ 'image/jpeg': { label: 'JPEG image', icon: 'image', category: 'image', extensions: ['.jpg', '.jpeg'] },
33
+ 'image/png': { label: 'PNG image', icon: 'image', category: 'image', extensions: ['.png'] },
34
+ 'image/gif': { label: 'GIF image', icon: 'image', category: 'image', extensions: ['.gif'] },
35
+ 'image/webp': { label: 'WebP image', icon: 'image', category: 'image', extensions: ['.webp'] },
36
+ 'image/svg+xml': { label: 'SVG image', icon: 'image', category: 'image', extensions: ['.svg'] },
37
+ 'image/tiff': { label: 'TIFF image', icon: 'image', category: 'image', extensions: ['.tif', '.tiff'] },
38
+ 'image/bmp': { label: 'BMP image', icon: 'image', category: 'image', extensions: ['.bmp'] },
39
+ 'image/heic': { label: 'HEIC image', icon: 'image', category: 'image', extensions: ['.heic'] },
40
+ 'audio/mpeg': { label: 'MPEG audio', icon: 'audio', category: 'audio', extensions: ['.mp3', '.mpeg'] },
41
+ 'audio/mp3': { label: 'MP3 audio', icon: 'audio', category: 'audio', extensions: ['.mp3'] },
42
+ 'audio/wav': { label: 'WAV audio', icon: 'audio', category: 'audio', extensions: ['.wav'] },
43
+ 'audio/x-wav': { label: 'WAV audio', icon: 'audio', category: 'audio', extensions: ['.wav'] },
44
+ 'video/mp4': { label: 'MP4 video', icon: 'video', category: 'video', extensions: ['.mp4'] },
45
+ 'video/webm': { label: 'WebM video', icon: 'video', category: 'video', extensions: ['.webm'] },
46
+ };
47
+ const extensionCatalog = new Map();
48
+ for (const metadata of Object.values(catalog)) {
49
+ for (const extension of metadata.extensions ?? [])
50
+ extensionCatalog.set(extension, metadata);
51
+ }
52
+ function normalizeMimeType(value) {
53
+ return value.trim().toLowerCase().split(';', 1)[0];
54
+ }
55
+ /** Adds or replaces a custom MIME mapping used by future metadata lookups. */
56
+ export function registerFileTypeMetadata(mimeTypes, metadata) {
57
+ for (const mimeType of typeof mimeTypes === 'string' ? [mimeTypes] : mimeTypes) {
58
+ catalog[normalizeMimeType(mimeType)] = metadata;
59
+ }
60
+ for (const extension of metadata.extensions ?? []) {
61
+ const normalizedExtension = extension.trim().toLowerCase();
62
+ if (normalizedExtension) {
63
+ extensionCatalog.set(normalizedExtension.startsWith('.') ? normalizedExtension : `.${normalizedExtension}`, metadata);
64
+ }
65
+ }
66
+ }
67
+ /** Returns presentation metadata for a MIME type, with a safe generic fallback. */
68
+ export function getFileTypeMetadata(mimeType, fileName = '') {
69
+ const normalized = normalizeMimeType(mimeType);
70
+ const explicit = normalized && normalized !== 'application/octet-stream' ? catalog[normalized] : undefined;
71
+ if (explicit)
72
+ return { ...explicit };
73
+ if (!normalized || normalized === 'application/octet-stream') {
74
+ const match = /(?:^|\.)((?:[a-z0-9]+))$/i.exec(fileName.trim().toLowerCase());
75
+ const byExtension = match ? extensionCatalog.get(`.${match[1]}`) : undefined;
76
+ if (byExtension)
77
+ return { ...byExtension };
78
+ }
79
+ return { ...generic };
80
+ }
81
+ //# sourceMappingURL=file-type-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-type-metadata.js","sourceRoot":"","sources":["../../../src/components/file-icon/file-type-metadata.ts"],"names":[],"mappings":"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"}
@@ -121,6 +121,11 @@ export interface LyraHeatmapEventMap {
121
121
  * `lyra-cell-click`. `annotations` additionally strokes a ring around
122
122
  * specific cells (e.g. to call out an anomaly), each one optionally
123
123
  * surfaced in the legend too via `[part="legend-annotation"]`.
124
+ * Set `accessibleCells` when each cell needs a persistent DOM control for
125
+ * assistive technology. The opt-in overlay uses native buttons with a
126
+ * roving tabindex, localized `aria-label`, and explicit `aria-pressed` state
127
+ * derived from the controlled `selectedCell` property; the canvas remains the
128
+ * visual rendering surface underneath.
124
129
  *
125
130
  * `columnX` (calendar mode only) overrides the x-origin computed for each
126
131
  * week column — drawing, hit-testing, the focus ring, and month-label
@@ -151,6 +156,8 @@ export interface LyraHeatmapEventMap {
151
156
  * `cellColor` overrides a cell's ramp-computed color entirely for an exact value.
152
157
  * @csspart base - The heatmap wrapper.
153
158
  * @csspart canvas - The heatmap canvas.
159
+ * @csspart cells - The opt-in per-cell accessibility overlay.
160
+ * @csspart cell - An opt-in native button for one matrix or calendar cell.
154
161
  * @csspart tooltip - The hover tooltip.
155
162
  * @csspart live-region - The visually hidden keyboard announcement region.
156
163
  * @csspart legend - The color legend.
@@ -222,6 +229,15 @@ export declare class LyraHeatmap extends LyraElement<LyraHeatmapEventMap> {
222
229
  * reproducing today's exact output.
223
230
  */
224
231
  selectedCell: HeatmapSelectedCell | null;
232
+ /**
233
+ * Renders an opt-in DOM overlay of native buttons over the canvas. Each
234
+ * button has a localized accessible name, explicit `aria-pressed="true"` or
235
+ * `"false"` from `selectedCell`, and participates in a roving tabindex so a
236
+ * dense calendar does not create hundreds of tab stops. The selection is
237
+ * controlled: clicking a cell still emits `lyra-cell-click`, and the
238
+ * consumer updates `selectedCell` when it wants `aria-pressed` to change.
239
+ */
240
+ accessibleCells: boolean;
225
241
  /** Formats the per-cell tooltip and keyboard live-region text — receives the cell position
226
242
  * (`MatrixCellPos` in matrix mode, `CalendarCellPos` in calendar mode) and its value. Falls back to
227
243
  * the built-in English "Row X, Col Y: value" / "Mon DD: value" template when unset. */
@@ -546,6 +562,17 @@ export declare class LyraHeatmap extends LyraElement<LyraHeatmapEventMap> {
546
562
  * spec, leaving whatever the previous cell painted. Falls back to
547
563
  * noDataFill() for a genuinely invalid color. */
548
564
  private resolveCanvasColor;
565
+ /** Positions represented by the optional DOM accessibility overlay. The
566
+ * canvas paints empty calendar grid positions too, so those positions get a
567
+ * real date and a no-data announcement just like pointer/keyboard hit tests. */
568
+ private accessibleCellPositions;
569
+ private accessibleCellKey;
570
+ private accessibleCellAtKey;
571
+ private focusAccessibleCell;
572
+ private onAccessibleCellFocus;
573
+ private onAccessibleCellClick;
574
+ private onAccessibleCellKeyDown;
575
+ private renderAccessibleCells;
549
576
  render(): TemplateResult;
550
577
  }
551
578
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"heatmap.class.d.ts","sourceRoot":"","sources":["../../../src/components/heatmap/heatmap.class.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heatmap.class.d.ts","sourceRoot":"","sources":["../../../src/components/heatmap/heatmap.class.ts"],"names":[],"mappings":"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"}
@@ -201,6 +201,11 @@ export function mixColor(fromColor, toColor, t) {
201
201
  * `lyra-cell-click`. `annotations` additionally strokes a ring around
202
202
  * specific cells (e.g. to call out an anomaly), each one optionally
203
203
  * surfaced in the legend too via `[part="legend-annotation"]`.
204
+ * Set `accessibleCells` when each cell needs a persistent DOM control for
205
+ * assistive technology. The opt-in overlay uses native buttons with a
206
+ * roving tabindex, localized `aria-label`, and explicit `aria-pressed` state
207
+ * derived from the controlled `selectedCell` property; the canvas remains the
208
+ * visual rendering surface underneath.
204
209
  *
205
210
  * `columnX` (calendar mode only) overrides the x-origin computed for each
206
211
  * week column — drawing, hit-testing, the focus ring, and month-label
@@ -231,6 +236,8 @@ export function mixColor(fromColor, toColor, t) {
231
236
  * `cellColor` overrides a cell's ramp-computed color entirely for an exact value.
232
237
  * @csspart base - The heatmap wrapper.
233
238
  * @csspart canvas - The heatmap canvas.
239
+ * @csspart cells - The opt-in per-cell accessibility overlay.
240
+ * @csspart cell - An opt-in native button for one matrix or calendar cell.
234
241
  * @csspart tooltip - The hover tooltip.
235
242
  * @csspart live-region - The visually hidden keyboard announcement region.
236
243
  * @csspart legend - The color legend.
@@ -289,6 +296,15 @@ export class LyraHeatmap extends LyraElement {
289
296
  * reproducing today's exact output.
290
297
  */
291
298
  this.selectedCell = null;
299
+ /**
300
+ * Renders an opt-in DOM overlay of native buttons over the canvas. Each
301
+ * button has a localized accessible name, explicit `aria-pressed="true"` or
302
+ * `"false"` from `selectedCell`, and participates in a roving tabindex so a
303
+ * dense calendar does not create hundreds of tab stops. The selection is
304
+ * controlled: clicking a cell still emits `lyra-cell-click`, and the
305
+ * consumer updates `selectedCell` when it wants `aria-pressed` to change.
306
+ */
307
+ this.accessibleCells = false;
292
308
  this.themeRefreshQueued = false;
293
309
  /** The current value range, refreshed once per update cycle by `willUpdate()`. See `computeValueRange()`. */
294
310
  this.cachedValueRange = null;
@@ -382,6 +398,35 @@ export class LyraHeatmap extends LyraElement {
382
398
  * the very next full redraw, while repeated identical cellColor() outputs
383
399
  * within the same pass resolve only once. */
384
400
  this.canvasColorCache = new Map();
401
+ this.onAccessibleCellFocus = (e) => {
402
+ const key = e.currentTarget.dataset.cellKey;
403
+ const pos = key ? this.accessibleCellAtKey(key) : null;
404
+ if (!pos)
405
+ return;
406
+ this.focusedCell = pos;
407
+ this.announce(pos);
408
+ };
409
+ this.onAccessibleCellClick = (e) => {
410
+ const key = e.currentTarget.dataset.cellKey;
411
+ const pos = key ? this.accessibleCellAtKey(key) : null;
412
+ if (!pos)
413
+ return;
414
+ this.focusedCell = pos;
415
+ this.announce(pos);
416
+ this.emitCellClick(pos);
417
+ };
418
+ this.onAccessibleCellKeyDown = (e) => {
419
+ if (!ARROW_KEYS.has(e.key))
420
+ return;
421
+ const key = e.currentTarget.dataset.cellKey;
422
+ const pos = key ? this.accessibleCellAtKey(key) : null;
423
+ if (!pos)
424
+ return;
425
+ e.preventDefault();
426
+ this.focusedCell = pos;
427
+ this.onKeyDown(e);
428
+ this.focusAccessibleCell(this.focusedCell);
429
+ };
385
430
  }
386
431
  static { this.styles = [LyraElement.styles, styles, srOnly]; }
387
432
  /**
@@ -1370,6 +1415,80 @@ export class LyraHeatmap extends LyraElement {
1370
1415
  this.canvasColorCache.set(value, resolved);
1371
1416
  return resolved;
1372
1417
  }
1418
+ /** Positions represented by the optional DOM accessibility overlay. The
1419
+ * canvas paints empty calendar grid positions too, so those positions get a
1420
+ * real date and a no-data announcement just like pointer/keyboard hit tests. */
1421
+ accessibleCellPositions() {
1422
+ if (this.mode === 'calendar') {
1423
+ const { weekCount } = this.cachedCalendarGrid;
1424
+ const positions = [];
1425
+ for (let week = 0; week < weekCount; week++) {
1426
+ for (let weekday = 0; weekday < 7; weekday++) {
1427
+ const pos = { week, weekday };
1428
+ if (this.isCellInteractive(pos))
1429
+ positions.push(pos);
1430
+ }
1431
+ }
1432
+ return positions;
1433
+ }
1434
+ const positions = [];
1435
+ for (let row = 0; row < this.rowLabels.length; row++) {
1436
+ for (let col = 0; col < this.colLabels.length; col++) {
1437
+ const pos = { row, col };
1438
+ if (this.isCellInteractive(pos))
1439
+ positions.push(pos);
1440
+ }
1441
+ }
1442
+ return positions;
1443
+ }
1444
+ accessibleCellKey(pos) {
1445
+ return 'week' in pos ? `calendar-${pos.week}-${pos.weekday}` : `matrix-${pos.row}-${pos.col}`;
1446
+ }
1447
+ accessibleCellAtKey(key) {
1448
+ return (this.accessibleCellPositions().find((pos) => this.accessibleCellKey(pos) === key) ?? null);
1449
+ }
1450
+ focusAccessibleCell(pos) {
1451
+ if (!pos)
1452
+ return;
1453
+ void this.updateComplete.then(() => {
1454
+ const button = [...(this.shadowRoot?.querySelectorAll('[part="cell"]') ?? [])].find((candidate) => candidate.dataset.cellKey === this.accessibleCellKey(pos));
1455
+ button?.focus();
1456
+ });
1457
+ }
1458
+ renderAccessibleCells() {
1459
+ if (!this.accessibleCells)
1460
+ return html ``;
1461
+ const positions = this.accessibleCellPositions();
1462
+ const tabStop = this.focusedCell ?? positions[0] ?? null;
1463
+ return html `
1464
+ <div part="cells">
1465
+ ${positions.map((pos) => {
1466
+ const rect = this.cellRect(pos);
1467
+ const key = this.accessibleCellKey(pos);
1468
+ return html `
1469
+ <button
1470
+ part="cell"
1471
+ class="cell"
1472
+ type="button"
1473
+ data-cell-key=${key}
1474
+ aria-label=${this.resolveCellText(pos)}
1475
+ aria-pressed=${this.isSelectedPos(pos) ? 'true' : 'false'}
1476
+ tabindex=${this.samePos(tabStop, pos) ? '0' : '-1'}
1477
+ style=${styleMap({
1478
+ insetInlineStart: `${rect.x}px`,
1479
+ insetBlockStart: `${rect.y}px`,
1480
+ inlineSize: `${rect.w}px`,
1481
+ blockSize: `${rect.h}px`,
1482
+ })}
1483
+ @focus=${this.onAccessibleCellFocus}
1484
+ @click=${this.onAccessibleCellClick}
1485
+ @keydown=${this.onAccessibleCellKeyDown}
1486
+ ></button>
1487
+ `;
1488
+ })}
1489
+ </div>
1490
+ `;
1491
+ }
1373
1492
  render() {
1374
1493
  const range = this.cachedValueRange;
1375
1494
  const labeledAnnotations = this.annotations.filter((a) => a.label);
@@ -1377,12 +1496,14 @@ export class LyraHeatmap extends LyraElement {
1377
1496
  <div part="base">
1378
1497
  <canvas
1379
1498
  part="canvas"
1380
- tabindex="0"
1499
+ tabindex=${this.accessibleCells ? '-1' : '0'}
1500
+ ?aria-hidden=${this.accessibleCells}
1381
1501
  @pointermove=${this.onPointerMove}
1382
1502
  @pointerleave=${this.onPointerLeave}
1383
1503
  @click=${this.onCanvasClick}
1384
1504
  @keydown=${this.onKeyDown}
1385
1505
  ></canvas>
1506
+ ${this.renderAccessibleCells()}
1386
1507
  <div
1387
1508
  part="tooltip"
1388
1509
  ?hidden=${!this.hoverCell}
@@ -1441,6 +1562,9 @@ __decorate([
1441
1562
  __decorate([
1442
1563
  property({ attribute: false })
1443
1564
  ], LyraHeatmap.prototype, "selectedCell", void 0);
1565
+ __decorate([
1566
+ property({ type: Boolean, attribute: 'accessible-cells' })
1567
+ ], LyraHeatmap.prototype, "accessibleCells", void 0);
1444
1568
  __decorate([
1445
1569
  property({ attribute: false })
1446
1570
  ], LyraHeatmap.prototype, "cellText", void 0);