@brightspot/ui 1.11.0 → 3.0.1-cms-ui-migration.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 (347) hide show
  1. package/dist/components/action-bar/ActionBar.d.ts +1 -1
  2. package/dist/components/action-bar/ActionBar.js +7 -7
  3. package/dist/components/action-bar/ActionBar.js.map +1 -1
  4. package/dist/components/action-bar/ActionItem.d.ts +5 -5
  5. package/dist/components/action-bar/ActionItem.d.ts.map +1 -1
  6. package/dist/components/action-bar/ActionItem.js +13 -13
  7. package/dist/components/action-bar/ActionItem.js.map +1 -1
  8. package/dist/components/avatar/AvatarGroup.d.ts +3 -0
  9. package/dist/components/avatar/AvatarGroup.d.ts.map +1 -1
  10. package/dist/components/avatar/AvatarGroup.js +3 -0
  11. package/dist/components/avatar/AvatarGroup.js.map +1 -1
  12. package/dist/components/badge/Badge.d.ts +3 -1
  13. package/dist/components/badge/Badge.d.ts.map +1 -1
  14. package/dist/components/badge/Badge.js +2 -0
  15. package/dist/components/badge/Badge.js.map +1 -1
  16. package/dist/components/button-group/ButtonGroup.d.ts +138 -0
  17. package/dist/components/button-group/ButtonGroup.d.ts.map +1 -0
  18. package/dist/components/button-group/ButtonGroup.js +436 -0
  19. package/dist/components/button-group/ButtonGroup.js.map +1 -0
  20. package/dist/components/checkbox/Checkbox.d.ts +107 -0
  21. package/dist/components/checkbox/Checkbox.d.ts.map +1 -0
  22. package/dist/components/checkbox/Checkbox.js +224 -0
  23. package/dist/components/checkbox/Checkbox.js.map +1 -0
  24. package/dist/components/circular-progress/CircularProgress.d.ts +2 -2
  25. package/dist/components/circular-progress/CircularProgress.js +2 -2
  26. package/dist/components/copy-to-clipboard/CopyToClipboard.d.ts +7 -2
  27. package/dist/components/copy-to-clipboard/CopyToClipboard.d.ts.map +1 -1
  28. package/dist/components/copy-to-clipboard/CopyToClipboard.js +10 -5
  29. package/dist/components/copy-to-clipboard/CopyToClipboard.js.map +1 -1
  30. package/dist/components/dropdown/Dropdown.d.ts +5 -5
  31. package/dist/components/dropdown/Dropdown.d.ts.map +1 -1
  32. package/dist/components/dropdown/Dropdown.js +11 -16
  33. package/dist/components/dropdown/Dropdown.js.map +1 -1
  34. package/dist/components/dropdown/DropdownItem.d.ts +14 -6
  35. package/dist/components/dropdown/DropdownItem.d.ts.map +1 -1
  36. package/dist/components/dropdown/DropdownItem.js +21 -15
  37. package/dist/components/dropdown/DropdownItem.js.map +1 -1
  38. package/dist/components/dropdown/DropdownMenu.d.ts +4 -4
  39. package/dist/components/dropdown/DropdownMenu.d.ts.map +1 -1
  40. package/dist/components/dropdown/DropdownMenu.js +6 -6
  41. package/dist/components/dropdown/DropdownMenu.js.map +1 -1
  42. package/dist/components/empty-state/EmptyState.css +4 -0
  43. package/dist/components/empty-state/EmptyState.d.ts +103 -0
  44. package/dist/components/empty-state/EmptyState.d.ts.map +1 -0
  45. package/dist/components/empty-state/EmptyState.js +209 -0
  46. package/dist/components/empty-state/EmptyState.js.map +1 -0
  47. package/dist/components/icon/Icon.d.ts +23 -10
  48. package/dist/components/icon/Icon.d.ts.map +1 -1
  49. package/dist/components/icon/Icon.js +40 -9
  50. package/dist/components/icon/Icon.js.map +1 -1
  51. package/dist/components/icon-button/IconButton.d.ts +7 -21
  52. package/dist/components/icon-button/IconButton.d.ts.map +1 -1
  53. package/dist/components/icon-button/IconButton.js +12 -18
  54. package/dist/components/icon-button/IconButton.js.map +1 -1
  55. package/dist/components/linear-progress/LinearProgress.d.ts +2 -2
  56. package/dist/components/linear-progress/LinearProgress.js +2 -2
  57. package/dist/components/pagination/Pagination.js +10 -10
  58. package/dist/components/popover/Popover.d.ts +6 -0
  59. package/dist/components/popover/Popover.d.ts.map +1 -1
  60. package/dist/components/popover/Popover.js +6 -0
  61. package/dist/components/popover/Popover.js.map +1 -1
  62. package/dist/components/switch/Switch.d.ts +5 -1
  63. package/dist/components/switch/Switch.d.ts.map +1 -1
  64. package/dist/components/switch/Switch.js +10 -6
  65. package/dist/components/switch/Switch.js.map +1 -1
  66. package/dist/components/tabs/Tab.d.ts +4 -4
  67. package/dist/components/tabs/Tab.d.ts.map +1 -1
  68. package/dist/components/tabs/Tab.js +5 -5
  69. package/dist/components/tabs/Tab.js.map +1 -1
  70. package/dist/components/tabs/Tabs.d.ts +3 -3
  71. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  72. package/dist/components/tabs/Tabs.js +20 -20
  73. package/dist/components/tabs/Tabs.js.map +1 -1
  74. package/dist/components/upload/Upload.d.ts +157 -0
  75. package/dist/components/upload/Upload.d.ts.map +1 -0
  76. package/dist/components/upload/Upload.js +538 -0
  77. package/dist/components/upload/Upload.js.map +1 -0
  78. package/dist/components/upload/UploadItem.d.ts +73 -0
  79. package/dist/components/upload/UploadItem.d.ts.map +1 -0
  80. package/dist/components/upload/UploadItem.js +180 -0
  81. package/dist/components/upload/UploadItem.js.map +1 -0
  82. package/dist/components/widget/Widget.d.ts +1 -6
  83. package/dist/components/widget/Widget.d.ts.map +1 -1
  84. package/dist/components/widget/Widget.js +1 -6
  85. package/dist/components/widget/Widget.js.map +1 -1
  86. package/dist/custom-elements.json +7527 -2115
  87. package/dist/storybook/assets/{ActionBar.stories--nAeDC-G.js → ActionBar.stories-CXEvFUN5.js} +65 -65
  88. package/dist/storybook/assets/{ActionItem.stories-BHrGjk-P.js → ActionItem.stories-8-qQmVGz.js} +41 -41
  89. package/dist/storybook/assets/{Avatar.stories-Da-mRj6_.js → Avatar.stories-LOTCiTgV.js} +2 -2
  90. package/dist/storybook/assets/{AvatarGroup.stories-BQlaC_yl.js → AvatarGroup.stories-N17TVn4O.js} +5 -5
  91. package/dist/storybook/assets/{Badge.stories-DnVnOrnF.js → Badge.stories-2IRfk8Ri.js} +2 -2
  92. package/dist/storybook/assets/{Button-CFLAI1H9.js → Button-CQ2CjiFm.js} +1 -1
  93. package/dist/storybook/assets/{Button.stories-DxaBOjwv.js → Button.stories-DwyviUHj.js} +1 -1
  94. package/dist/storybook/assets/ButtonGroup.stories-D6nkkXxD.js +588 -0
  95. package/dist/storybook/assets/{Celebrate.stories-CuMm15Nr.js → Celebrate.stories-DtKNptXA.js} +7 -7
  96. package/dist/storybook/assets/Checkbox.stories--fetKLgV.js +141 -0
  97. package/dist/storybook/assets/{CircularProgress.stories-DRN8Mtvj.js → CircularProgress.stories-vK3MWdEg.js} +7 -7
  98. package/dist/storybook/assets/{ClipboardMixin.stories-DR7Ou2Av.js → ClipboardMixin.stories-BXOX2e9A.js} +31 -28
  99. package/dist/storybook/assets/{Color-6BZIO3FS-Die62Y0Z.js → Color-6BZIO3FS-DIO6ExZa.js} +1 -1
  100. package/dist/storybook/assets/{Colors.stories-bIq_ssbI.js → Colors.stories-Z-o0Dmyi.js} +1 -1
  101. package/dist/storybook/assets/{CombinedEffects.stories-CtKzOUZn.js → CombinedEffects.stories-BIvRmEL2.js} +33 -33
  102. package/dist/storybook/assets/{ComponentStatesMixin-DMLCk9fE.js → ComponentStatesMixin-BeLIKOsg.js} +1 -1
  103. package/dist/storybook/assets/{ComponentStatesMixin.stories-D8UI9o-d.js → ComponentStatesMixin.stories-u03jgLUU.js} +3 -3
  104. package/dist/storybook/assets/{CopyToClipboard.stories-ti6CpJNp.js → CopyToClipboard.stories-D23guAYu.js} +16 -16
  105. package/dist/storybook/assets/{Debounce.stories-DzZUSvbk.js → Debounce.stories-Bz3JaQJY.js} +9 -9
  106. package/dist/storybook/assets/{DocsRenderer-LL677BLK-CIRGv5IX.js → DocsRenderer-LL677BLK-CaEKjMeC.js} +3 -3
  107. package/dist/storybook/assets/{Dropdown.stories-Lt4cY0Re.js → Dropdown.stories-CNxtx8UX.js} +60 -60
  108. package/dist/storybook/assets/EmptyState.stories-Ck5T6q1T.js +318 -0
  109. package/dist/storybook/assets/{Events.stories-B1ddcgpT.js → Events.stories-Cx10pvVB.js} +1 -1
  110. package/dist/storybook/assets/{Heading.stories-DI4w61cf.js → Heading.stories-mbkSoA5r.js} +1 -1
  111. package/dist/storybook/assets/{HueRipple.stories-DjhoxxEw.js → HueRipple.stories-B-DDviMh.js} +11 -11
  112. package/dist/storybook/assets/Icon.stories-Dodo1jjZ.js +441 -0
  113. package/dist/storybook/assets/{IconButton.stories-KjN28hfc.js → IconButton.stories-eAU6vNiX.js} +126 -146
  114. package/dist/storybook/assets/{LinearProgress.stories-DcIpdz6R.js → LinearProgress.stories-BqAUCgwy.js} +7 -7
  115. package/dist/storybook/assets/{Pagination.stories-BBkLEwoP.js → Pagination.stories-CVK8mlEU.js} +6 -6
  116. package/dist/storybook/assets/{Popover.stories-DLv48c2h.js → Popover.stories-CC2R-jiv.js} +33 -62
  117. package/dist/storybook/assets/ReadyMixin-CAkCCAOH.js +1 -0
  118. package/dist/storybook/assets/{RovingTabindexMixin.stories-BWaFx9mu.js → RovingTabindexMixin.stories-Dgm5izU_.js} +6 -6
  119. package/dist/storybook/assets/{Rtc.stories-Ve7Bwo_l.js → Rtc.stories-D9uVCq71.js} +3 -3
  120. package/dist/storybook/assets/{ScrollShadow.stories-C6XmrRLm.js → ScrollShadow.stories-D5GJ6Zes.js} +2 -2
  121. package/dist/storybook/assets/{Switch.stories-Cf8WM1LG.js → Switch.stories-D7HV0v6i.js} +21 -21
  122. package/dist/storybook/assets/{Tab.stories-CEtdEtOx.js → Tab.stories-CwHBngmO.js} +33 -33
  123. package/dist/storybook/assets/{Tabs.stories-CIAO1bPO.js → Tabs.stories-D87ILflp.js} +2 -2
  124. package/dist/storybook/assets/{Throttle.stories-BqxVIb-r.js → Throttle.stories-C13Vl7yt.js} +10 -10
  125. package/dist/storybook/assets/{Tooltip.stories-B6fw6875.js → Tooltip.stories-BRmAKppC.js} +2 -2
  126. package/dist/storybook/assets/Upload.stories-CvceXasD.js +447 -0
  127. package/dist/storybook/assets/UploadItem.stories-BF6c7tVM.js +167 -0
  128. package/dist/storybook/assets/{Welcome.stories-CfJtSM19.js → Welcome.stories-Ciht_H8A.js} +1 -1
  129. package/dist/storybook/assets/{Widget.stories-CiOho7lO.js → Widget.stories-30UYw1gn.js} +13 -13
  130. package/dist/storybook/assets/{WithTooltip-65CFNBJE-PGcopp73.js → WithTooltip-65CFNBJE-Q8AG_oZS.js} +1 -1
  131. package/dist/storybook/assets/{blocks-dP2DwISI.js → blocks-DIrsUt2U.js} +5 -5
  132. package/dist/storybook/assets/{formatter-EIJCOSYU-CZSAC3tg.js → formatter-EIJCOSYU-BcNb3EA1.js} +1 -1
  133. package/dist/storybook/assets/if-defined-C1_PRAyA.js +1 -0
  134. package/dist/storybook/assets/iframe-BgFj0b5u.css +1 -0
  135. package/dist/storybook/assets/{iframe-DloIUNZz.js → iframe-D5Uwm8Zd.js} +191 -191
  136. package/dist/storybook/assets/{index-DKF0ypu5.js → index-BOlx3-q7.js} +1 -1
  137. package/dist/storybook/assets/{onFind-C0l4Gew0.js → onFind-Cp2DO8R2.js} +1 -1
  138. package/dist/storybook/assets/{onFind.stories-DOTt9puO.js → onFind.stories-BDK06xaW.js} +53 -77
  139. package/dist/storybook/assets/{onRemove.stories-CQ9ZC5dm.js → onRemove.stories-TSKvqih3.js} +6 -10
  140. package/dist/storybook/assets/{onVisible.stories-Cbj5_Vz0.js → onVisible.stories-DiOPobn8.js} +3 -3
  141. package/dist/storybook/assets/{style-map-DLXysq3r.js → style-map-Cy6U2K_U.js} +1 -1
  142. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-Bjjbl9ca.js → syntaxhighlighter-ED5Y7EFY-NNCQVsSv.js} +1 -1
  143. package/dist/storybook/box-illustration.svg +51 -0
  144. package/dist/storybook/cloud-illustration.svg +49 -0
  145. package/dist/storybook/docs-illustration.svg +92 -0
  146. package/dist/storybook/iframe.html +3 -3
  147. package/dist/storybook/index.json +1 -1
  148. package/dist/storybook/project.json +1 -1
  149. package/dist/tailwind-plugin-badge.js +1 -1
  150. package/dist/tailwind-plugin-badge.ts +1 -1
  151. package/dist/tailwind-plugin-button-group.d.ts +2 -0
  152. package/dist/tailwind-plugin-button-group.d.ts.map +1 -0
  153. package/dist/tailwind-plugin-button-group.js +215 -0
  154. package/dist/tailwind-plugin-button-group.js.map +1 -0
  155. package/dist/tailwind-plugin-button-group.ts +238 -0
  156. package/dist/tailwind-plugin-button.js +1 -1
  157. package/dist/tailwind-plugin-button.ts +1 -1
  158. package/dist/tailwind-plugin-checkbox.d.ts +2 -0
  159. package/dist/tailwind-plugin-checkbox.d.ts.map +1 -0
  160. package/dist/tailwind-plugin-checkbox.js +246 -0
  161. package/dist/tailwind-plugin-checkbox.js.map +1 -0
  162. package/dist/tailwind-plugin-checkbox.ts +281 -0
  163. package/dist/tailwind-plugin-empty-state.d.ts +2 -0
  164. package/dist/tailwind-plugin-empty-state.d.ts.map +1 -0
  165. package/dist/tailwind-plugin-empty-state.js +113 -0
  166. package/dist/tailwind-plugin-empty-state.js.map +1 -0
  167. package/dist/tailwind-plugin-empty-state.ts +124 -0
  168. package/dist/tailwind-plugin-icon.js +122 -18
  169. package/dist/tailwind-plugin-icon.js.map +1 -1
  170. package/dist/tailwind-plugin-icon.ts +131 -18
  171. package/dist/tailwind-plugin-loader.js +3 -3
  172. package/dist/tailwind-plugin-loader.ts +3 -3
  173. package/dist/tailwind-plugin-tabs.js +7 -0
  174. package/dist/tailwind-plugin-tabs.js.map +1 -1
  175. package/dist/tailwind-plugin-tabs.ts +7 -0
  176. package/dist/tailwind-plugin-upload.d.ts +2 -0
  177. package/dist/tailwind-plugin-upload.d.ts.map +1 -0
  178. package/dist/tailwind-plugin-upload.js +322 -0
  179. package/dist/tailwind-plugin-upload.js.map +1 -0
  180. package/dist/tailwind-plugin-upload.ts +362 -0
  181. package/dist/tailwind.config.d.ts.map +1 -1
  182. package/dist/tailwind.config.js +1 -0
  183. package/dist/tailwind.config.js.map +1 -1
  184. package/dist/tailwind.config.ts +1 -0
  185. package/dist/util/ClipboardMixin.d.ts +7 -2
  186. package/dist/util/ClipboardMixin.d.ts.map +1 -1
  187. package/dist/util/ClipboardMixin.js +15 -13
  188. package/dist/util/ClipboardMixin.js.map +1 -1
  189. package/dist/util/ComponentStatesMixin.d.ts +2 -1
  190. package/dist/util/ComponentStatesMixin.d.ts.map +1 -1
  191. package/dist/util/ComponentStatesMixin.js +4 -0
  192. package/dist/util/ComponentStatesMixin.js.map +1 -1
  193. package/dist/util/EventEmitterMixin.d.ts +42 -4
  194. package/dist/util/EventEmitterMixin.d.ts.map +1 -1
  195. package/dist/util/EventEmitterMixin.js +5 -2
  196. package/dist/util/EventEmitterMixin.js.map +1 -1
  197. package/dist/util/ProgressMixin.d.ts +9 -2
  198. package/dist/util/ProgressMixin.d.ts.map +1 -1
  199. package/dist/util/ProgressMixin.js +22 -18
  200. package/dist/util/ProgressMixin.js.map +1 -1
  201. package/dist/util/RovingTabindexMixin.d.ts +8 -0
  202. package/dist/util/RovingTabindexMixin.d.ts.map +1 -1
  203. package/dist/util/RovingTabindexMixin.js +8 -8
  204. package/dist/util/RovingTabindexMixin.js.map +1 -1
  205. package/dist/util/TetherLayout.d.ts.map +1 -1
  206. package/dist/util/TetherLayout.js +3 -0
  207. package/dist/util/TetherLayout.js.map +1 -1
  208. package/dist/util/TooltipMixin.d.ts.map +1 -1
  209. package/dist/util/TooltipMixin.js +5 -4
  210. package/dist/util/TooltipMixin.js.map +1 -1
  211. package/dist/util/upload.d.ts +53 -0
  212. package/dist/util/upload.d.ts.map +1 -0
  213. package/dist/util/upload.js +113 -0
  214. package/dist/util/upload.js.map +1 -0
  215. package/docs/adr/0001-retire-cms-ui-package-fold-under-src-legacy.md +78 -0
  216. package/docs/adr/0002-yarn-workspaces-preserve-cms-ui-deps.md +130 -0
  217. package/docs/adr/0003-bundle-equivalence-as-fold-acceptance-criterion.md +286 -0
  218. package/docs/components/ActionBar.md +6 -0
  219. package/docs/components/ActionItem.md +52 -27
  220. package/docs/components/Avatar.md +42 -12
  221. package/docs/components/AvatarGroup.md +4 -3
  222. package/docs/components/Badge.md +13 -1
  223. package/docs/components/ButtonGroup.md +91 -0
  224. package/docs/components/Checkbox.md +91 -0
  225. package/docs/components/CircularProgress.md +41 -12
  226. package/docs/components/CopyToClipboard.md +13 -11
  227. package/docs/components/Dropdown.md +44 -19
  228. package/docs/components/DropdownItem.md +39 -26
  229. package/docs/components/DropdownMenu.md +9 -9
  230. package/docs/components/EmptyState.md +75 -0
  231. package/docs/components/Icon.md +22 -14
  232. package/docs/components/IconButton.md +46 -21
  233. package/docs/components/LinearProgress.md +43 -4
  234. package/docs/components/Pagination.md +11 -10
  235. package/docs/components/Popover.md +16 -0
  236. package/docs/components/README.md +5 -0
  237. package/docs/components/Switch.md +21 -16
  238. package/docs/components/Tab.md +8 -2
  239. package/docs/components/Tabs.md +8 -0
  240. package/docs/components/Upload.md +112 -0
  241. package/docs/components/UploadItem.md +61 -0
  242. package/docs/components/Widget.md +12 -6
  243. package/package.json +9 -5
  244. package/src/legacy/tool-ui/src/main/webapp/dist/011a678e3efe41981754.png +1 -0
  245. package/src/legacy/tool-ui/src/main/webapp/dist/1173.080a90c5923854fc48e6.js +2 -0
  246. package/src/legacy/tool-ui/src/main/webapp/dist/1173.080a90c5923854fc48e6.js.LICENSE.txt +10 -0
  247. package/src/legacy/tool-ui/src/main/webapp/dist/194137260531ee29a5f2.svg +1 -0
  248. package/src/legacy/tool-ui/src/main/webapp/dist/1946.156c6821383df2638492.js +1 -0
  249. package/src/legacy/tool-ui/src/main/webapp/dist/1950.3594aaa4f20df28f39d9.js +1 -0
  250. package/src/legacy/tool-ui/src/main/webapp/dist/1e8408af1a34bdf61457.png +1 -0
  251. package/src/legacy/tool-ui/src/main/webapp/dist/2111.3956b5196a514b2c0131.js +1 -0
  252. package/src/legacy/tool-ui/src/main/webapp/dist/2111.a937b0cafa8cf7c039d2.css +1 -0
  253. package/src/legacy/tool-ui/src/main/webapp/dist/2129.6b044e5564dd3dbb2f94.js +1 -0
  254. package/src/legacy/tool-ui/src/main/webapp/dist/2314.420883b6638f35f40e70.js +1 -0
  255. package/src/legacy/tool-ui/src/main/webapp/dist/2456.5bcfb782c2ec27de32ed.js +1 -0
  256. package/src/legacy/tool-ui/src/main/webapp/dist/2537.e8f1359bedd328bf57f4.js +1 -0
  257. package/src/legacy/tool-ui/src/main/webapp/dist/2565.4ca31a6a46de85cd3b31.js +1 -0
  258. package/src/legacy/tool-ui/src/main/webapp/dist/270.3011484ff80f3093083a.js +1 -0
  259. package/src/legacy/tool-ui/src/main/webapp/dist/2825.c1342ac2662d11fd4125.js +1 -0
  260. package/src/legacy/tool-ui/src/main/webapp/dist/2947.f96d21c44c05980974ef.js +1 -0
  261. package/src/legacy/tool-ui/src/main/webapp/dist/3532.c358dfbb2cde0f802c7f.js +1 -0
  262. package/src/legacy/tool-ui/src/main/webapp/dist/3543.2d704cf9e170322468e7.js +2 -0
  263. package/src/legacy/tool-ui/src/main/webapp/dist/3543.2d704cf9e170322468e7.js.LICENSE.txt +1 -0
  264. package/src/legacy/tool-ui/src/main/webapp/dist/3611.61837ffa933f74502094.js +1 -0
  265. package/src/legacy/tool-ui/src/main/webapp/dist/3790.74b7037d430ed0a47d0c.js +1 -0
  266. package/src/legacy/tool-ui/src/main/webapp/dist/3995.afbec58662cafb46ec2c.js +1 -0
  267. package/src/legacy/tool-ui/src/main/webapp/dist/4017.c3ed1ca3be18b5c080c8.js +1 -0
  268. package/src/legacy/tool-ui/src/main/webapp/dist/4093.152620c022c3013502b7.js +1 -0
  269. package/src/legacy/tool-ui/src/main/webapp/dist/4114.57fe159e416e716f8cbc.js +1 -0
  270. package/src/legacy/tool-ui/src/main/webapp/dist/4168.a224af7c5c5f6f2ddd7b.js +1 -0
  271. package/src/legacy/tool-ui/src/main/webapp/dist/4374.37147747a254da8f5f8a.js +1 -0
  272. package/src/legacy/tool-ui/src/main/webapp/dist/4450.16dd5684292fd0a7ea7f.js +1 -0
  273. package/src/legacy/tool-ui/src/main/webapp/dist/4478.93f64e6a6ccb35a6c6d4.js +1 -0
  274. package/src/legacy/tool-ui/src/main/webapp/dist/44b38a404dec4643c46b.png +1 -0
  275. package/src/legacy/tool-ui/src/main/webapp/dist/4582.243dbaa3d8a8648f6f40.js +1 -0
  276. package/src/legacy/tool-ui/src/main/webapp/dist/4709.4f6b707e225e481a928e.js +1 -0
  277. package/src/legacy/tool-ui/src/main/webapp/dist/4790.10d75f7c7f8e54ce83a1.js +1 -0
  278. package/src/legacy/tool-ui/src/main/webapp/dist/4795.034ebc93a67b7a3d6536.js +1 -0
  279. package/src/legacy/tool-ui/src/main/webapp/dist/4850.6b944738520f69c98070.js +1 -0
  280. package/src/legacy/tool-ui/src/main/webapp/dist/4a4ee777ddc0d4cedee4.png +1 -0
  281. package/src/legacy/tool-ui/src/main/webapp/dist/5001.a61ae5608398d5d98ab1.js +1 -0
  282. package/src/legacy/tool-ui/src/main/webapp/dist/5030.1e8b82e1444067d492b1.js +1 -0
  283. package/src/legacy/tool-ui/src/main/webapp/dist/5055.620ccb3717b4a6427f09.js +1 -0
  284. package/src/legacy/tool-ui/src/main/webapp/dist/5098.33613009827cfc80aafb.js +1 -0
  285. package/src/legacy/tool-ui/src/main/webapp/dist/5385.6656501b67424994820b.js +1 -0
  286. package/src/legacy/tool-ui/src/main/webapp/dist/5598.d84773ca53126661bdca.js +2 -0
  287. package/src/legacy/tool-ui/src/main/webapp/dist/5598.d84773ca53126661bdca.js.LICENSE.txt +11 -0
  288. package/src/legacy/tool-ui/src/main/webapp/dist/5617.c81ecb679371ca302f1f.js +1 -0
  289. package/src/legacy/tool-ui/src/main/webapp/dist/5718.449113ae2463a3bb8a83.js +2 -0
  290. package/src/legacy/tool-ui/src/main/webapp/dist/5718.449113ae2463a3bb8a83.js.LICENSE.txt +8 -0
  291. package/src/legacy/tool-ui/src/main/webapp/dist/6047.291dd2d4b3f79be2c64d.js +1 -0
  292. package/src/legacy/tool-ui/src/main/webapp/dist/6086.7ca02b827506f29db590.js +1 -0
  293. package/src/legacy/tool-ui/src/main/webapp/dist/6216.cf8adc1990ee1111f065.js +1 -0
  294. package/src/legacy/tool-ui/src/main/webapp/dist/6497.b7d8dcbf0e7c8d8d538d.js +1 -0
  295. package/src/legacy/tool-ui/src/main/webapp/dist/6565.0e5abc3bd344c53ae154.js +1 -0
  296. package/src/legacy/tool-ui/src/main/webapp/dist/7033.4cd6efbe12e7aaa35745.js +1 -0
  297. package/src/legacy/tool-ui/src/main/webapp/dist/7202.1e5b8f21215ea6eae20a.js +1 -0
  298. package/src/legacy/tool-ui/src/main/webapp/dist/7361.793163ca71dfac69d9eb.js +1 -0
  299. package/src/legacy/tool-ui/src/main/webapp/dist/75.e45c9aec6e7409bfe21d.js +1 -0
  300. package/src/legacy/tool-ui/src/main/webapp/dist/7524.2990be869cf0a2988d17.js +1 -0
  301. package/src/legacy/tool-ui/src/main/webapp/dist/7554.bb243c1fb06a125f6353.js +1 -0
  302. package/src/legacy/tool-ui/src/main/webapp/dist/7718.a937b0cafa8cf7c039d2.css +1 -0
  303. package/src/legacy/tool-ui/src/main/webapp/dist/7718.f5996ddd99f2353c7785.js +1 -0
  304. package/src/legacy/tool-ui/src/main/webapp/dist/7741.0b2789c4e783af835763.js +1 -0
  305. package/src/legacy/tool-ui/src/main/webapp/dist/7769.d47f40cc83035fc2392a.js +1 -0
  306. package/src/legacy/tool-ui/src/main/webapp/dist/7863.2a1d1fd229778a47e10b.js +1 -0
  307. package/src/legacy/tool-ui/src/main/webapp/dist/7923.8a92f55de8387f7a8a35.js +1 -0
  308. package/src/legacy/tool-ui/src/main/webapp/dist/8684.7171c731d38a9873d6df.js +1 -0
  309. package/src/legacy/tool-ui/src/main/webapp/dist/8752.3d02a0f42ec39786fdf0.js +1 -0
  310. package/src/legacy/tool-ui/src/main/webapp/dist/8897.bfeed19f2a4acbb6d67c.js +1 -0
  311. package/src/legacy/tool-ui/src/main/webapp/dist/8934.e90ceca8169fc25e4e1b.js +1 -0
  312. package/src/legacy/tool-ui/src/main/webapp/dist/9277.88b2d89b3ba1c24e7f93.js +2 -0
  313. package/src/legacy/tool-ui/src/main/webapp/dist/9277.88b2d89b3ba1c24e7f93.js.LICENSE.txt +9 -0
  314. package/src/legacy/tool-ui/src/main/webapp/dist/9360.bb0352313d610cae11de.js +2 -0
  315. package/src/legacy/tool-ui/src/main/webapp/dist/9360.bb0352313d610cae11de.js.LICENSE.txt +33 -0
  316. package/src/legacy/tool-ui/src/main/webapp/dist/9561.64eab18c8c1bbc4ad8ec.js +1 -0
  317. package/src/legacy/tool-ui/src/main/webapp/dist/9576.174d6a99544d17e7416d.js +1 -0
  318. package/src/legacy/tool-ui/src/main/webapp/dist/983.eedba1cd484aa5bee0c4.js +1 -0
  319. package/src/legacy/tool-ui/src/main/webapp/dist/Appetizeio.185641211f7c0e42a455.js +1 -0
  320. package/src/legacy/tool-ui/src/main/webapp/dist/CISpectrum.74db7dc80b3a6797a167.js +1 -0
  321. package/src/legacy/tool-ui/src/main/webapp/dist/Chart.223ea4ee9e3e32b67a26.js +1 -0
  322. package/src/legacy/tool-ui/src/main/webapp/dist/ChartCompat.4dd096dd030942227ec6.js +1 -0
  323. package/src/legacy/tool-ui/src/main/webapp/dist/CodeMirror.5ddffe054374f883d6f8.js +1 -0
  324. package/src/legacy/tool-ui/src/main/webapp/dist/ImageEditor.14e3b3035666436f53a5.js +1 -0
  325. package/src/legacy/tool-ui/src/main/webapp/dist/LocationMap.72a510c0f5ff236f596e.js +1 -0
  326. package/src/legacy/tool-ui/src/main/webapp/dist/RTEProseMirror.7561297911cca56da5dd.js +500 -0
  327. package/src/legacy/tool-ui/src/main/webapp/dist/RTEProseMirror.7561297911cca56da5dd.js.LICENSE.txt +8 -0
  328. package/src/legacy/tool-ui/src/main/webapp/dist/RegionMap.63f3b2303ab369a05073.js +1 -0
  329. package/src/legacy/tool-ui/src/main/webapp/dist/TimedContent.4bb4dc83ffbe4019dd7b.js +1 -0
  330. package/src/legacy/tool-ui/src/main/webapp/dist/VideoEditor.11c89dda5cf125738a33.js +2 -0
  331. package/src/legacy/tool-ui/src/main/webapp/dist/VideoEditor.11c89dda5cf125738a33.js.LICENSE.txt +23 -0
  332. package/src/legacy/tool-ui/src/main/webapp/dist/c6e9c007f41bd4d26c20.png +1 -0
  333. package/src/legacy/tool-ui/src/main/webapp/dist/iframeResizer.contentWindow.map +1 -0
  334. package/src/legacy/tool-ui/src/main/webapp/dist/iframeResizer.contentWindow.min.js +2 -0
  335. package/src/legacy/tool-ui/src/main/webapp/dist/iframeResizer.contentWindow.min.js.LICENSE.txt +7 -0
  336. package/src/legacy/tool-ui/src/main/webapp/dist/lucide.woff2 +0 -0
  337. package/src/legacy/tool-ui/src/main/webapp/dist/preview.d46d98e5ca9dba0a0f5a.js +1 -0
  338. package/src/legacy/tool-ui/src/main/webapp/dist/v4.63bc3566a89786faeb89.js +92 -0
  339. package/src/legacy/tool-ui/src/main/webapp/dist/v4.63bc3566a89786faeb89.js.LICENSE.txt +71 -0
  340. package/src/legacy/tool-ui/src/main/webapp/dist/v4.a6f53058dbb04a69aa5c.css +3 -0
  341. package/src/legacy/tool-ui/src/main/webapp/dist/v5.5e3fdf0f0b20b4e3c170.css +5 -0
  342. package/src/legacy/tool-ui/src/main/webapp/dist/v5.702238fcabd666eba152.js +92 -0
  343. package/src/legacy/tool-ui/src/main/webapp/dist/v5.702238fcabd666eba152.js.LICENSE.txt +78 -0
  344. package/dist/storybook/assets/Icon.stories-CpziAhae.js +0 -264
  345. package/dist/storybook/assets/ReadyMixin-Cw2Dfbu2.js +0 -1
  346. package/dist/storybook/assets/if-defined-B1RdczOE.js +0 -1
  347. package/dist/storybook/assets/iframe-bJgLXZKK.css +0 -1
@@ -0,0 +1,538 @@
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 { LitElement, html, nothing } from 'lit';
8
+ import { property, state } from 'lit/decorators.js';
9
+ import { announce } from '../../util/aria.js';
10
+ import { EventEmitterMixin } from '../../util/EventEmitterMixin.js';
11
+ import { l10n } from '../../util/i18n.js';
12
+ import { ReadyMixin } from '../../util/ReadyMixin.js';
13
+ import { formatFileSize, matchesAccept, validateFileSize } from '../../util/upload.js';
14
+ import '../icon/Icon.js';
15
+ import './UploadItem.js';
16
+ /**
17
+ * A file upload component with drop zone and file list.
18
+ *
19
+ * The component is presentation + file-selection only. It handles file browsing,
20
+ * drag-and-drop reception, client-side validation, and rendering the file list
21
+ * with progress bars. It does not perform network requests — the consumer listens
22
+ * for events, performs their own upload, and drives state back via imperative methods.
23
+ *
24
+ * @element btu-upload
25
+ *
26
+ * @fires {CustomEvent<unknown>} btu-upload-ready - Fired when the component has completed first render
27
+ * @fires {CustomEvent<{id: string, file: File}>} btu-upload-file-added - Fired when a file passes validation and is added
28
+ * @fires {CustomEvent<{id: string, file: File}>} btu-upload-file-removed - Fired when a file is removed (user action, programmatic, or on disconnect for in-flight uploads)
29
+ * @fires {CustomEvent<{id: string, file: File}>} btu-upload-file-retry - Fired when user clicks "Try again" on a failed upload
30
+ * @fires {CustomEvent<{file: File, reason: 'type' | 'size' | 'count'}>} btu-upload-file-rejected - Fired when a file fails client-side validation or the queue is full
31
+ * @fires {CustomEvent<{id: string, file: File}>} btu-upload-file-completed - Fired when a file's status transitions into 'complete'
32
+ * @fires {CustomEvent<{method: string, id: string, reason: 'unknown-id' | 'invalid-transition', message: string}>} btu-upload-api-error - Fired when an imperative API call references an unknown id or an illegal status transition
33
+ *
34
+ * @cssprop --upload-dropzone-bg - Drop zone background color (default: gray-25)
35
+ * @cssprop --upload-dropzone-border-color - Drop zone border color (default: gray-300; gray-200 when disabled, gray-400 in high-contrast)
36
+ * @cssprop --upload-dropzone-border-radius - Drop zone border radius (default: borderRadius.lg)
37
+ * @cssprop --upload-dropzone-hover-bg - Drop zone hover background (hover default: gray-50; drag-over default: primary-25)
38
+ * @cssprop --upload-dropzone-hover-border-color - Drop zone hover/focus border color (default: primary-300; drag-over uses primary-400)
39
+ * @cssprop --upload-dropzone-focus-ring-color - Drop zone focus ring color (default: primary-100)
40
+ * @cssprop --upload-item-bg - Item background color (default: white)
41
+ * @cssprop --upload-item-border-color - Item border color (default: gray-200)
42
+ * @cssprop --upload-item-active-border-color - Item active/in-progress border (default: gray-300)
43
+ * @cssprop --upload-item-complete-border-color - Item completed border color (default: primary-500)
44
+ * @cssprop --upload-item-error-bg - Item error background (default: error-25)
45
+ * @cssprop --upload-item-error-border-color - Item error border color (default: error-300)
46
+ */
47
+ export default class Upload extends EventEmitterMixin(ReadyMixin(LitElement)) {
48
+ constructor() {
49
+ super(...arguments);
50
+ /**
51
+ * Accepted file types, matching the HTML `<input accept>` attribute format.
52
+ * Client-side filter only — the browser's file picker uses this as a hint,
53
+ * and drag-drop is enforced by this component. Server-side validation is
54
+ * still required.
55
+ *
56
+ * Supported forms (comma-separated, any combination):
57
+ * - `image/*` — MIME wildcard (any image)
58
+ * - `application/pdf` — exact MIME type
59
+ * - `.pdf`, `.docx` — file extension (case-insensitive)
60
+ *
61
+ * Examples:
62
+ * - `accept="image/*"` — any image
63
+ * - `accept="image/*,application/pdf"` — images and PDFs
64
+ * - `accept=".jpg,.jpeg,.png,.heic"` — specific extensions
65
+ * - `accept=""` (or omitted) — allow all
66
+ *
67
+ * Note: users can bypass the file picker's filter (most browsers offer an
68
+ * "All Files" option), so this attribute is a UX filter, not a security
69
+ * boundary.
70
+ *
71
+ * @attr
72
+ */
73
+ this.accept = '';
74
+ /**
75
+ * Maximum file size in bytes. Files exceeding this are rejected. 0 means unlimited.
76
+ * @attr max-file-size
77
+ */
78
+ this.maxFileSize = 0;
79
+ /**
80
+ * Maximum number of files allowed. When omitted, uploads are unlimited.
81
+ * `max-files="1"` enters single-file mode (selecting a new file replaces the existing one).
82
+ * `max-files="0"` allows zero files. Values above 1 cap the queue at that many files.
83
+ * @attr max-files
84
+ */
85
+ this.maxFiles = Infinity;
86
+ /**
87
+ * Disables all interaction — file selection, drag-and-drop, and action buttons.
88
+ * @attr
89
+ */
90
+ this.disabled = false;
91
+ /**
92
+ * Disables drag-and-drop. File selection via click still works.
93
+ * @attr no-drag
94
+ */
95
+ this.noDrag = false;
96
+ this._files = new Map();
97
+ this._items = new Map();
98
+ this._milestones = new Map();
99
+ this._dragOver = false;
100
+ this._dragCounter = 0;
101
+ }
102
+ get _inputEl() {
103
+ return this.querySelector('input[type="file"]');
104
+ }
105
+ createRenderRoot() {
106
+ return this;
107
+ }
108
+ connectedCallback() {
109
+ super.connectedCallback();
110
+ this.classList.add('btu-upload');
111
+ }
112
+ disconnectedCallback() {
113
+ super.disconnectedCallback();
114
+ // Notify consumers about files still in flight so they can abort their XHRs
115
+ // and reconcile their own state. Completed files are terminal; don't re-emit.
116
+ for (const state of this._files.values()) {
117
+ if (state.status !== 'complete') {
118
+ this.emit('btu-upload-file-removed', { id: state.id, file: state.file });
119
+ }
120
+ }
121
+ this._files.clear();
122
+ this._items.clear();
123
+ this._milestones.clear();
124
+ this._dragCounter = 0;
125
+ this._dragOver = false;
126
+ }
127
+ firstUpdated() {
128
+ // Contain UploadItem's internal bubbling signals at this boundary so they
129
+ // don't leak to ancestor listeners. Consumers only see the public events.
130
+ this.addEventListener('btu-upload-item-remove', e => {
131
+ e.stopPropagation();
132
+ const { id } = e.detail;
133
+ this.removeFile(id);
134
+ });
135
+ this.addEventListener('btu-upload-item-retry', e => {
136
+ e.stopPropagation();
137
+ const { id } = e.detail;
138
+ const fileState = this._files.get(id);
139
+ if (fileState) {
140
+ this.emit('btu-upload-file-retry', { id: fileState.id, file: fileState.file });
141
+ }
142
+ });
143
+ this.emit('btu-upload-ready');
144
+ }
145
+ _handleInputChange(e) {
146
+ const input = e.target;
147
+ if (!input.files)
148
+ return;
149
+ this._processFiles(Array.from(input.files));
150
+ input.value = '';
151
+ }
152
+ _handleSelectClick(e) {
153
+ // Stop the click from bubbling to the dropzone, which would re-invoke the picker.
154
+ e.stopPropagation();
155
+ if (this._interactionBlocked)
156
+ return;
157
+ this._inputEl?.click();
158
+ }
159
+ _handleDropzoneClick() {
160
+ if (this._interactionBlocked)
161
+ return;
162
+ this._inputEl?.click();
163
+ }
164
+ _handleDragEnter(e) {
165
+ if (this._interactionBlocked || this.noDrag)
166
+ return;
167
+ e.preventDefault();
168
+ this._dragCounter++;
169
+ this._dragOver = true;
170
+ }
171
+ _handleDragOver(e) {
172
+ if (this._interactionBlocked || this.noDrag)
173
+ return;
174
+ e.preventDefault();
175
+ }
176
+ _handleDragLeave(e) {
177
+ if (this._interactionBlocked || this.noDrag)
178
+ return;
179
+ this._dragCounter--;
180
+ if (this._dragCounter <= 0) {
181
+ this._dragCounter = 0;
182
+ this._dragOver = false;
183
+ }
184
+ }
185
+ _handleDrop(e) {
186
+ if (this._interactionBlocked || this.noDrag)
187
+ return;
188
+ e.preventDefault();
189
+ this._dragCounter = 0;
190
+ this._dragOver = false;
191
+ if (!e.dataTransfer?.files)
192
+ return;
193
+ this._processFiles(Array.from(e.dataTransfer.files));
194
+ }
195
+ _processFiles(files) {
196
+ if (this._interactionBlocked)
197
+ return;
198
+ if (this.maxFiles === 1) {
199
+ const file = files[0];
200
+ if (!file)
201
+ return;
202
+ if (this._validateFile(file)) {
203
+ // Replace existing file (fires btu-upload-file-removed, then btu-upload-file-added)
204
+ if (this._files.size > 0) {
205
+ const existingId = this._files.keys().next().value;
206
+ this.removeFile(existingId);
207
+ }
208
+ this._addFile(file);
209
+ }
210
+ // Reject any additional files the user dropped at once — single-file mode
211
+ // only accepts one; without this, files[1..n] would disappear silently.
212
+ for (const extra of files.slice(1)) {
213
+ this._rejectCount(extra);
214
+ }
215
+ return;
216
+ }
217
+ for (const file of files) {
218
+ if (this._files.size >= this.maxFiles) {
219
+ this._rejectCount(file);
220
+ continue;
221
+ }
222
+ if (!this._validateFile(file))
223
+ continue;
224
+ this._addFile(file);
225
+ }
226
+ }
227
+ _rejectCount(file) {
228
+ this.emit('btu-upload-file-rejected', { file, reason: 'count' });
229
+ announce(l10n('upload', 'announceRejectedCount', 'File rejected: ___. Maximum file count reached.', [file.name]));
230
+ }
231
+ _validateFile(file) {
232
+ if (this.accept && !matchesAccept(file, this.accept)) {
233
+ this.emit('btu-upload-file-rejected', { file, reason: 'type' });
234
+ announce(l10n('upload', 'announceRejectedType', 'File rejected: ___. File type not accepted.', [file.name]));
235
+ return false;
236
+ }
237
+ if (this.maxFileSize > 0 && !validateFileSize(file, this.maxFileSize)) {
238
+ this.emit('btu-upload-file-rejected', { file, reason: 'size' });
239
+ announce(l10n('upload', 'announceRejectedSize', 'File rejected: ___. File exceeds size limit.', [file.name]));
240
+ return false;
241
+ }
242
+ return true;
243
+ }
244
+ _addFile(file) {
245
+ const id = crypto.randomUUID();
246
+ const fileState = {
247
+ id,
248
+ file,
249
+ status: 'pending',
250
+ progress: 0,
251
+ };
252
+ this._files.set(id, fileState);
253
+ this._milestones.set(id, new Set());
254
+ this._renderItem(fileState);
255
+ this.requestUpdate();
256
+ this.emit('btu-upload-file-added', { id, file });
257
+ const sizeStr = formatFileSize(file.size);
258
+ announce(l10n('upload', 'announceAdded', 'File added: ___, ___', [file.name, sizeStr]));
259
+ }
260
+ _reportUnknownId(method, id) {
261
+ const message = `no file found with id "${id}"`;
262
+ this.emit('btu-upload-api-error', { method, id, reason: 'unknown-id', message });
263
+ console.warn(`[btu-upload] ${method}: ${message}`);
264
+ }
265
+ _getOrReport(method, id) {
266
+ const current = this._files.get(id);
267
+ if (!current) {
268
+ this._reportUnknownId(method, id);
269
+ return null;
270
+ }
271
+ return current;
272
+ }
273
+ _renderItem(fileState) {
274
+ const list = this.querySelector('.btu-upload-list');
275
+ if (!list)
276
+ return;
277
+ const item = document.createElement('btu-upload-item');
278
+ item.setAttribute('role', 'listitem');
279
+ item._configure(fileState);
280
+ list.appendChild(item);
281
+ this._items.set(fileState.id, item);
282
+ }
283
+ /* ─── Imperative API ─── */
284
+ /**
285
+ * Update the progress of a file upload.
286
+ * Clamps value to 0-100 and coerces non-finite inputs to 0. Announces milestones
287
+ * (25%, 50%, 75%) to screen readers; 100% completion is announced by setFileStatus('complete').
288
+ *
289
+ * Status transitions:
290
+ * - `pending` → `uploading` (auto — first progress report starts the upload)
291
+ * - `uploading` → `uploading` (progress updates)
292
+ * - `error` → `error` (progress updates only; status is preserved so a stale late
293
+ * callback can't wipe the error UI. To recover from error, call
294
+ * `setFileStatus(id, 'uploading')` first, then report progress.)
295
+ * - `complete` → ignored (terminal state)
296
+ */
297
+ setFileProgress(id, percent) {
298
+ const current = this._getOrReport('setFileProgress', id);
299
+ if (!current)
300
+ return;
301
+ if (current.status === 'complete')
302
+ return;
303
+ const safe = Number.isFinite(percent) ? Math.round(percent) : 0;
304
+ const clamped = Math.min(Math.max(safe, 0), 100);
305
+ // No-op when progress hasn't changed and no status transition is needed.
306
+ // Upload callbacks can fire hundreds of times per file; skipping these
307
+ // avoids a per-byte state copy + child re-render.
308
+ if (current.status !== 'pending' && clamped === current.progress)
309
+ return;
310
+ // Pending auto-transitions to uploading once progress is reported.
311
+ const next = current.status === 'error'
312
+ ? { ...current, progress: clamped }
313
+ : { id: current.id, file: current.file, symbol: current.symbol, status: 'uploading', progress: clamped };
314
+ this._files.set(id, next);
315
+ this._items.get(id)?._configure(next);
316
+ const milestones = this._milestones.get(id);
317
+ if (milestones && milestones.size < 3) {
318
+ for (const milestone of [25, 50, 75]) {
319
+ if (clamped >= milestone && !milestones.has(milestone)) {
320
+ milestones.add(milestone);
321
+ announce(l10n('upload', 'announceProgress', '___ ___% uploaded', [current.file.name, String(milestone)]));
322
+ }
323
+ }
324
+ }
325
+ }
326
+ /**
327
+ * Set the status of a file.
328
+ * Valid statuses: 'uploading', 'complete', 'error'. For 'error' status, an
329
+ * optional message can be provided.
330
+ *
331
+ * Transitions from 'complete' are rejected (terminal state) — a late-resolving
332
+ * XHR cannot overwrite a prior success. Rejected calls emit `btu-upload-api-error`
333
+ * with reason: 'invalid-transition'.
334
+ */
335
+ setFileStatus(id, status, message) {
336
+ const current = this._getOrReport('setFileStatus', id);
337
+ if (!current)
338
+ return;
339
+ if (current.status === 'complete' && status !== 'complete') {
340
+ const msg = `cannot transition from 'complete' to '${status}' for id "${id}"`;
341
+ this.emit('btu-upload-api-error', { method: 'setFileStatus', id, reason: 'invalid-transition', message: msg });
342
+ console.warn(`[btu-upload] setFileStatus: ${msg}`);
343
+ return;
344
+ }
345
+ const { id: _id, file, symbol, progress } = current;
346
+ let next;
347
+ switch (status) {
348
+ case 'uploading':
349
+ next = { id: _id, file, symbol, status: 'uploading', progress };
350
+ break;
351
+ case 'complete':
352
+ next = { id: _id, file, symbol, status: 'complete', progress: 100 };
353
+ break;
354
+ case 'error':
355
+ next = { id: _id, file, symbol, status: 'error', progress, errorMessage: message ?? '' };
356
+ break;
357
+ }
358
+ this._files.set(id, next);
359
+ this._items.get(id)?._configure(next);
360
+ if (status === 'complete') {
361
+ announce(l10n('upload', 'announceComplete', '___ upload complete', [file.name]));
362
+ }
363
+ else if (status === 'error') {
364
+ // Include the detail message in the announcement so screen-reader users get
365
+ // the same context the visible error text shows; the global announce() live
366
+ // region is the only path that reaches AT, since the error text itself is
367
+ // not in a live region (would otherwise duplicate the announcement).
368
+ const detail = message?.trim();
369
+ announce(detail
370
+ ? l10n('upload', 'announceErrorWithDetail', '___ upload failed: ___', [file.name, detail])
371
+ : l10n('upload', 'announceError', '___ upload failed', [file.name]));
372
+ }
373
+ if (current.status !== 'complete' && status === 'complete') {
374
+ this.emit('btu-upload-file-completed', { id: next.id, file: next.file });
375
+ }
376
+ }
377
+ /**
378
+ * Override the icon symbol for a file.
379
+ */
380
+ setFileSymbol(id, symbol) {
381
+ const current = this._getOrReport('setFileSymbol', id);
382
+ if (!current)
383
+ return;
384
+ if (current.symbol === symbol)
385
+ return;
386
+ const next = { ...current, symbol };
387
+ this._files.set(id, next);
388
+ this._items.get(id)?._configure(next);
389
+ }
390
+ /**
391
+ * Remove a file programmatically. Fires `btu-upload-file-removed`.
392
+ */
393
+ removeFile(id) {
394
+ const current = this._getOrReport('removeFile', id);
395
+ if (!current)
396
+ return;
397
+ this._files.delete(id);
398
+ this._milestones.delete(id);
399
+ this._items.get(id)?.remove();
400
+ this._items.delete(id);
401
+ this.requestUpdate();
402
+ this.emit('btu-upload-file-removed', { id, file: current.file });
403
+ announce(l10n('upload', 'announceRemoved', 'File removed: ___', [current.file.name]));
404
+ }
405
+ /**
406
+ * Get a snapshot of all current files and their states.
407
+ * States are readonly; mutations on the returned array's elements are ineffective.
408
+ */
409
+ getFiles() {
410
+ return Array.from(this._files.values());
411
+ }
412
+ get _dropzoneFull() {
413
+ // Single-file mode is replace-on-select, not capped — never treat as full,
414
+ // otherwise _interactionBlocked gates every handler once the first file lands.
415
+ if (this.maxFiles === 1)
416
+ return false;
417
+ return this._files.size >= this.maxFiles;
418
+ }
419
+ get _interactionBlocked() {
420
+ return this.disabled || this._dropzoneFull;
421
+ }
422
+ get _showCountPill() {
423
+ return Number.isFinite(this.maxFiles) && this.maxFiles !== 1;
424
+ }
425
+ _renderSelectButton(text) {
426
+ return html `<button
427
+ type="button"
428
+ class="btu-upload-dropzone-action"
429
+ ?disabled="${this._interactionBlocked}"
430
+ @click="${this._handleSelectClick}"
431
+ >
432
+ ${text}
433
+ </button>`;
434
+ }
435
+ render() {
436
+ const isFull = this._dropzoneFull;
437
+ const isDisabled = this.disabled;
438
+ const dropzoneClasses = [
439
+ 'btu-upload-dropzone',
440
+ this._dragOver ? 'btu-upload-dropzone-dragover' : '',
441
+ isDisabled || isFull ? 'btu-upload-dropzone-disabled' : '',
442
+ ]
443
+ .filter(Boolean)
444
+ .join(' ');
445
+ const dropzoneLabel = !isDisabled && isFull
446
+ ? l10n('upload', 'dropzoneLabelFull', 'File upload, maximum reached')
447
+ : l10n('upload', 'dropzoneLabel', 'File upload');
448
+ return html `
449
+ <input
450
+ type="file"
451
+ class="sr-only"
452
+ tabindex="-1"
453
+ aria-hidden="true"
454
+ accept="${this.accept || nothing}"
455
+ ?multiple="${this.maxFiles !== 1}"
456
+ ?disabled="${isDisabled}"
457
+ @change="${this._handleInputChange}"
458
+ />
459
+
460
+ <div
461
+ class="${dropzoneClasses}"
462
+ aria-label="${dropzoneLabel}"
463
+ aria-disabled="${isDisabled || isFull ? 'true' : 'false'}"
464
+ @click="${this._handleDropzoneClick}"
465
+ @dragenter="${this._handleDragEnter}"
466
+ @dragover="${this._handleDragOver}"
467
+ @dragleave="${this._handleDragLeave}"
468
+ @drop="${this._handleDrop}"
469
+ >
470
+ ${this._showCountPill
471
+ ? html `<span
472
+ class="btu-upload-dropzone-count"
473
+ aria-label="${l10n('upload', 'countOfMaxLabel', '___ of ___ files', [this._files.size, this.maxFiles])}"
474
+ >${l10n('upload', 'countOfMax', '___ of ___', [this._files.size, this.maxFiles])}</span
475
+ >`
476
+ : nothing}
477
+ <div class="btu-upload-dropzone-icon">
478
+ <btu-icon symbol="upload-cloud" size="md"></btu-icon>
479
+ </div>
480
+ <div class="btu-upload-dropzone-prompt">
481
+ <span class="btu-upload-dropzone-text" aria-hidden="${this._dragOver ? 'true' : 'false'}">
482
+ ${this.noDrag
483
+ ? this._renderSelectButton(l10n('upload', 'dropzoneActionNoDrag', 'Select files'))
484
+ : html `${l10n('upload', 'dropzonePrefix', 'Drag and drop or')}
485
+ ${this._renderSelectButton(l10n('upload', 'dropzoneAction', 'select'))}
486
+ ${l10n('upload', 'dropzoneSuffix', 'files')}`}
487
+ </span>
488
+ ${this.noDrag
489
+ ? nothing
490
+ : html `<span class="btu-upload-dropzone-drag-message" aria-hidden="${this._dragOver ? 'false' : 'true'}"
491
+ >${l10n('upload', 'dragOver', 'Drop Files Here')}</span
492
+ >`}
493
+ </div>
494
+ </div>
495
+
496
+ <div class="btu-upload-list" role="list" aria-label="${l10n('upload', 'listLabel', 'Uploaded files')}"></div>
497
+ `;
498
+ }
499
+ }
500
+ __decorate([
501
+ property({ type: String })
502
+ ], Upload.prototype, "accept", void 0);
503
+ __decorate([
504
+ property({ type: Number, attribute: 'max-file-size' })
505
+ ], Upload.prototype, "maxFileSize", void 0);
506
+ __decorate([
507
+ property({
508
+ attribute: 'max-files',
509
+ converter: {
510
+ fromAttribute: value => {
511
+ if (value === null || value === '')
512
+ return Infinity;
513
+ const parsed = Number(value);
514
+ if (!Number.isFinite(parsed))
515
+ return Infinity;
516
+ return Math.max(0, Math.floor(parsed));
517
+ },
518
+ toAttribute: value => {
519
+ if (typeof value !== 'number' || !Number.isFinite(value))
520
+ return null;
521
+ return String(value);
522
+ },
523
+ },
524
+ })
525
+ ], Upload.prototype, "maxFiles", void 0);
526
+ __decorate([
527
+ property({ type: Boolean, reflect: true })
528
+ ], Upload.prototype, "disabled", void 0);
529
+ __decorate([
530
+ property({ type: Boolean, attribute: 'no-drag' })
531
+ ], Upload.prototype, "noDrag", void 0);
532
+ __decorate([
533
+ state()
534
+ ], Upload.prototype, "_dragOver", void 0);
535
+ if (!customElements.get('btu-upload')) {
536
+ customElements.define('btu-upload', Upload);
537
+ }
538
+ //# sourceMappingURL=Upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Upload.js","sourceRoot":"","sources":["../../../src/components/upload/Upload.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import { LitElement, nothing } from 'lit';
2
+ import '../icon-button/IconButton.js';
3
+ import '../icon/Icon.js';
4
+ import '../linear-progress/LinearProgress.js';
5
+ export type FileStatus = 'pending' | 'uploading' | 'complete' | 'error';
6
+ export type FileStatusSettable = 'uploading' | 'complete' | 'error';
7
+ interface FileStateBase {
8
+ readonly id: string;
9
+ readonly file: File;
10
+ /** Optional icon override; when absent, derived from file.type */
11
+ readonly symbol?: string;
12
+ }
13
+ /**
14
+ * Discriminated union on `status`. Illegal combinations (error with no message,
15
+ * uploading at 100% without completing, complete with an error message) are
16
+ * unrepresentable by construction.
17
+ */
18
+ export type FileState = (FileStateBase & {
19
+ readonly status: 'pending';
20
+ readonly progress: 0;
21
+ }) | (FileStateBase & {
22
+ readonly status: 'uploading';
23
+ readonly progress: number;
24
+ }) | (FileStateBase & {
25
+ readonly status: 'complete';
26
+ readonly progress: 100;
27
+ }) | (FileStateBase & {
28
+ readonly status: 'error';
29
+ readonly progress: number;
30
+ readonly errorMessage: string;
31
+ });
32
+ declare const UploadItem_base: (new (...args: any[]) => import("../../util/EventEmitterMixin.js").EventEmitterMixinInterface) & (new (...args: any[]) => import("../../util/ReadyMixin.js").ReadyMixinInterface) & typeof LitElement;
33
+ /**
34
+ * Internal upload item sub-component for displaying individual file upload state.
35
+ *
36
+ * This component is not part of the public API — consumers should not create,
37
+ * query, or modify items directly. All interaction goes through `btu-upload` methods.
38
+ *
39
+ * @element btu-upload-item
40
+ *
41
+ * @fires {CustomEvent<{id: string}>} btu-upload-item-remove - Fired when remove button is clicked
42
+ * @fires {CustomEvent<{id: string}>} btu-upload-item-retry - Fired when retry link is clicked
43
+ *
44
+ * @cssprop --upload-item-bg - Item background color (default: white)
45
+ * @cssprop --upload-item-border-color - Item border color (default: gray-200)
46
+ * @cssprop --upload-item-active-border-color - Item active/in-progress border (default: gray-300)
47
+ * @cssprop --upload-item-complete-border-color - Item completed border color (default: primary-500)
48
+ * @cssprop --upload-item-error-bg - Item error background (default: error-25)
49
+ * @cssprop --upload-item-error-border-color - Item error border color (default: error-300)
50
+ */
51
+ export default class UploadItem extends UploadItem_base {
52
+ private _state;
53
+ private _baseClasses;
54
+ private _previousStatus;
55
+ private _stopProgressComplete;
56
+ createRenderRoot(): this;
57
+ connectedCallback(): void;
58
+ disconnectedCallback(): void;
59
+ /** @internal Called by Upload to push file state */
60
+ _configure(state: FileState): void;
61
+ willUpdate(): void;
62
+ private _scheduleCelebrate;
63
+ private _handleRemove;
64
+ private _handleRetry;
65
+ render(): typeof nothing | import("lit-html").TemplateResult<1>;
66
+ }
67
+ declare global {
68
+ interface HTMLElementTagNameMap {
69
+ 'btu-upload-item': UploadItem;
70
+ }
71
+ }
72
+ export {};
73
+ //# sourceMappingURL=UploadItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UploadItem.d.ts","sourceRoot":"","sources":["../../../src/components/upload/UploadItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,OAAO,EAAE,MAAM,KAAK,CAAA;AAM/C,OAAO,8BAA8B,CAAA;AACrC,OAAO,iBAAiB,CAAA;AACxB,OAAO,sCAAsC,CAAA;AAE7C,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAA;AACvE,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAA;AAEnE,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,kEAAkE;IAClE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;;;GAIG;AACH,MAAM,MAAM,SAAS,GACjB,CAAC,aAAa,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;CAAE,CAAC,GACtE,CAAC,aAAa,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GAC7E,CAAC,aAAa,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,CAAC,GACzE,CAAC,aAAa,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;;AAS5G;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,eAAyC;IAC/E,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,qBAAqB,CAAoC;IAEjE,gBAAgB;IAIhB,iBAAiB,IAAI,IAAI;IAQzB,oBAAoB,IAAI,IAAI;IAK5B,oDAAoD;IACpD,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAMlC,UAAU,IAAI,IAAI;IAYlB,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,YAAY;IAOpB,MAAM;CA6EP;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,UAAU,CAAA;KAC9B;CACF"}