@parallelworks/ui 0.20.0 → 0.21.1

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 (437) hide show
  1. package/README.md +5 -0
  2. package/dist/ai/adapter/openai/createOpenAIStream.js +3 -2
  3. package/dist/ai/agent/diff.d.ts +0 -1
  4. package/dist/ai/agent/diff.js +3 -2
  5. package/dist/ai/agent/toolfmt.js +2 -3
  6. package/dist/ai/ai.css +5 -0
  7. package/dist/ai/components/AllocationSelector.js +3 -2
  8. package/dist/ai/components/AttachmentManager.js +7 -5
  9. package/dist/ai/components/AttachmentUpload.js +11 -7
  10. package/dist/ai/components/BlockedGroupBanner.js +2 -2
  11. package/dist/ai/components/BranchNavigator.js +8 -5
  12. package/dist/ai/components/ChatEmptyState.js +8 -5
  13. package/dist/ai/components/ChatInput.d.ts +2 -5
  14. package/dist/ai/components/ChatInput.js +16 -11
  15. package/dist/ai/components/ChatMessage.js +25 -17
  16. package/dist/ai/components/ChatMessageList.js +4 -3
  17. package/dist/ai/components/ChatSidebar.d.ts +0 -1
  18. package/dist/ai/components/ChatSidebar.js +22 -16
  19. package/dist/ai/components/ChatThread.js +9 -11
  20. package/dist/ai/components/ComposerChrome.js +2 -2
  21. package/dist/ai/components/ModelSelector.js +20 -14
  22. package/dist/ai/components/ShareDialog.js +10 -6
  23. package/dist/ai/components/SlashMenu.d.ts +0 -1
  24. package/dist/ai/components/agent/ActivityLine.d.ts +0 -1
  25. package/dist/ai/components/agent/ActivityLine.js +5 -4
  26. package/dist/ai/components/agent/AgentMessageParts.d.ts +1 -26
  27. package/dist/ai/components/agent/AgentMessageParts.js +13 -12
  28. package/dist/ai/core/ChatProvider.d.ts +2 -6
  29. package/dist/ai/core/ChatProvider.js +42 -67
  30. package/dist/ai/core/KeyboardShortcutsProvider.js +1 -1
  31. package/dist/ai/core/chatReducer.d.ts +0 -6
  32. package/dist/ai/core/chatReducer.js +1 -15
  33. package/dist/ai/core/useKeyboardShortcuts.d.ts +3 -1
  34. package/dist/ai/core/useKeyboardShortcuts.js +9 -11
  35. package/dist/ai/core/useSSEStream.d.ts +0 -1
  36. package/dist/ai/core/useSSEStream.js +5 -17
  37. package/dist/ai/strings.d.ts +0 -1
  38. package/dist/ai/strings.js +0 -1
  39. package/dist/ai/types.d.ts +1 -1
  40. package/dist/ai/ui/Avatar.d.ts +1 -2
  41. package/dist/ai/ui/Avatar.js +7 -18
  42. package/dist/ai/ui/Dropdown.js +2 -2
  43. package/dist/ai/ui/Markdown.d.ts +1 -3
  44. package/dist/ai/ui/Markdown.js +1 -2
  45. package/dist/ai/ui/Notice.js +5 -3
  46. package/dist/ai/ui/sidebar.d.ts +0 -1
  47. package/dist/ai/ui/sidebar.js +5 -3
  48. package/dist/ai/utils.js +1 -1
  49. package/dist/components/Avatar.js +4 -2
  50. package/dist/components/BareModal.js +1 -5
  51. package/dist/components/Breadcrumbs.js +21 -14
  52. package/dist/components/Button.js +3 -2
  53. package/dist/components/Callout.js +4 -3
  54. package/dist/components/CollapsiblePanel.d.ts +1 -3
  55. package/dist/components/CollapsiblePanel.js +7 -7
  56. package/dist/components/CopyToClipboard.js +8 -4
  57. package/dist/components/CreateModal.js +11 -7
  58. package/dist/components/Dropdown.d.ts +0 -4
  59. package/dist/components/Dropdown.js +7 -8
  60. package/dist/components/Filter.js +2 -2
  61. package/dist/components/Indicator.js +14 -9
  62. package/dist/components/Input.js +6 -4
  63. package/dist/components/Listbox.js +16 -20
  64. package/dist/components/Loader.js +1 -1
  65. package/dist/components/MultiSelect.js +5 -8
  66. package/dist/components/PageHeader.js +10 -7
  67. package/dist/components/Pagination.js +1 -1
  68. package/dist/components/Provider.d.ts +0 -8
  69. package/dist/components/Sort.js +6 -4
  70. package/dist/components/StatusIcons.d.ts +11 -0
  71. package/dist/components/StatusIcons.js +20 -0
  72. package/dist/components/SwitchToggle.js +3 -5
  73. package/dist/components/Table.d.ts +1 -3
  74. package/dist/components/Tooltip.js +3 -3
  75. package/dist/components/dropdownUtils.js +7 -8
  76. package/dist/components/relativeTime.d.ts +0 -7
  77. package/dist/components/relativeTime.js +1 -1
  78. package/dist/duration.js +1 -1
  79. package/dist/editor/Editor.d.ts +1 -1
  80. package/dist/editor/Editor.js +1 -1
  81. package/dist/editor/EditorField.d.ts +0 -1
  82. package/dist/editor/EditorField.js +8 -8
  83. package/dist/editor/FormCodePanel.js +20 -23
  84. package/dist/editor/yamlLanguage.js +2 -2
  85. package/dist/file-explorer/FileExplorer.js +94 -82
  86. package/dist/file-explorer/FileExplorerContext.d.ts +1 -2
  87. package/dist/file-explorer/FileExplorerContext.js +92 -125
  88. package/dist/file-explorer/FilePreview/Inline.d.ts +1 -2
  89. package/dist/file-explorer/FilePreview/Inline.js +4 -4
  90. package/dist/file-explorer/FilePreview/StreamedBadge.js +2 -2
  91. package/dist/file-explorer/FilePreview/Viewer.js +14 -14
  92. package/dist/file-explorer/FilePreview/index.d.ts +1 -2
  93. package/dist/file-explorer/FilePreview/index.js +20 -13
  94. package/dist/file-explorer/FilePreview/parse.d.ts +2 -1
  95. package/dist/file-explorer/FilePreview/useObjectBlobUrl.d.ts +5 -4
  96. package/dist/file-explorer/FilePreview/useObjectBlobUrl.js +23 -36
  97. package/dist/file-explorer/FilePreview/useObjectText.d.ts +1 -2
  98. package/dist/file-explorer/FilePreview/useObjectText.js +5 -7
  99. package/dist/file-explorer/FileRow.js +3 -3
  100. package/dist/file-explorer/FileRowsWindow.d.ts +5 -12
  101. package/dist/file-explorer/FileRowsWindow.js +3 -2
  102. package/dist/file-explorer/FileTable.d.ts +2 -6
  103. package/dist/file-explorer/LoadMoreRow.d.ts +8 -0
  104. package/dist/file-explorer/TreeView.d.ts +0 -1
  105. package/dist/file-explorer/TreeView.js +11 -9
  106. package/dist/file-explorer/helpers.js +45 -33
  107. package/dist/file-explorer/lib/fileExplorer.d.ts +0 -2
  108. package/dist/file-explorer/lib/types.d.ts +0 -1
  109. package/dist/file-explorer/lib/utils.js +15 -20
  110. package/dist/file-explorer/toasts.js +54 -45
  111. package/dist/form/Fields/BooleanField.js +5 -4
  112. package/dist/form/Fields/CheckboxGroupField.js +5 -4
  113. package/dist/form/Fields/ColorField.js +5 -4
  114. package/dist/form/Fields/DropdownField.d.ts +0 -1
  115. package/dist/form/Fields/DropdownField.js +10 -13
  116. package/dist/form/Fields/DurationField.js +2 -2
  117. package/dist/form/Fields/LabelField.js +5 -5
  118. package/dist/form/Fields/MultiDropdownField.d.ts +1 -1
  119. package/dist/form/Fields/MultiDropdownField.js +8 -11
  120. package/dist/form/Fields/NumberField.js +6 -5
  121. package/dist/form/Fields/ObjectField.d.ts +1 -2
  122. package/dist/form/Fields/ObjectField.js +22 -21
  123. package/dist/form/Fields/RadioField.js +4 -3
  124. package/dist/form/Fields/RangeField.js +7 -6
  125. package/dist/form/Fields/StringField.js +2 -1
  126. package/dist/form/Fields/TextAreaField.js +2 -1
  127. package/dist/form/Form.d.ts +7 -8
  128. package/dist/form/Form.js +56 -81
  129. package/dist/form/SpecialTypes/DropdownWrapper.d.ts +0 -2
  130. package/dist/form/SpecialTypes/DropdownWrapper.js +1 -3
  131. package/dist/form/SpecialTypes/FormikCustomDropdown.d.ts +1 -3
  132. package/dist/form/SpecialTypes/FormikCustomDropdown.js +4 -7
  133. package/dist/form/SpecialTypes/FormikCustomInput.js +16 -13
  134. package/dist/form/Wizard/WizardContainer.js +8 -25
  135. package/dist/form/Wizard/WizardNavigation.d.ts +1 -1
  136. package/dist/form/Wizard/WizardNavigation.js +5 -6
  137. package/dist/form/Wizard/WizardStepContent.d.ts +1 -1
  138. package/dist/form/Wizard/WizardStepContent.js +2 -2
  139. package/dist/form/Wizard/WizardStepIndicator.js +7 -17
  140. package/dist/form/Wizard/types.d.ts +4 -46
  141. package/dist/form/Wizard/useWizardState.d.ts +2 -10
  142. package/dist/form/Wizard/useWizardState.js +42 -92
  143. package/dist/form/Wizard/utils.js +6 -11
  144. package/dist/form/lib.js +28 -54
  145. package/dist/form/types/fieldTypes.d.ts +4 -5
  146. package/dist/form/utils/dependentOptions.d.ts +6 -0
  147. package/dist/form/utils/dependentOptions.js +21 -0
  148. package/dist/form/utils/getParentValue.d.ts +2 -1
  149. package/dist/form/utils/getParentValue.js +10 -15
  150. package/dist/form/utils/getValueUsingPath.js +1 -1
  151. package/dist/graph/AnnotationBanner.d.ts +1 -1
  152. package/dist/graph/AnnotationBanner.js +10 -6
  153. package/dist/graph/Collapse.d.ts +3 -3
  154. package/dist/graph/Collapse.js +3 -8
  155. package/dist/graph/DependencyGraph.d.ts +5 -4
  156. package/dist/graph/DependencyGraph.js +178 -226
  157. package/dist/graph/JobSummary.d.ts +10 -8
  158. package/dist/graph/JobSummary.js +17 -16
  159. package/dist/graph/MatrixGroup.d.ts +5 -17
  160. package/dist/graph/MatrixGroup.js +11 -22
  161. package/dist/graph/TreeView.d.ts +1 -3
  162. package/dist/graph/TreeView.js +106 -492
  163. package/dist/graph/types.d.ts +3 -2
  164. package/dist/graph/util.d.ts +5 -0
  165. package/dist/graph/util.js +18 -0
  166. package/dist/icons/ai/AiOutlineRollback.js +16 -0
  167. package/dist/icons/bi/BiBell.js +16 -0
  168. package/dist/icons/bi/BiBellOff.js +16 -0
  169. package/dist/icons/bi/BiBuildings.js +20 -0
  170. package/dist/icons/bi/BiError.js +20 -0
  171. package/dist/icons/bi/BiExpandVertical.js +16 -0
  172. package/dist/icons/bi/BiPause.js +16 -0
  173. package/dist/icons/bi/BiPlay.js +16 -0
  174. package/dist/icons/bi/BiSolidCheckShield.js +16 -0
  175. package/dist/icons/bi/BiSolidTrashAlt.js +16 -0
  176. package/dist/icons/bi/BiStop.js +16 -0
  177. package/dist/icons/bs/BsArrowsCollapse.js +22 -0
  178. package/dist/icons/bs/BsBank2.js +19 -0
  179. package/dist/icons/bs/BsBriefcase.js +19 -0
  180. package/dist/icons/bs/BsBucket.js +19 -0
  181. package/dist/icons/bs/BsCalendarX.js +23 -0
  182. package/dist/icons/bs/BsChatLeft.js +19 -0
  183. package/dist/icons/bs/BsChevronDoubleDown.js +29 -0
  184. package/dist/icons/bs/BsChevronDoubleUp.js +29 -0
  185. package/dist/icons/bs/BsClipboardCheck.js +34 -0
  186. package/dist/icons/bs/BsCurrencyDollar.js +19 -0
  187. package/dist/icons/bs/BsDash.js +19 -0
  188. package/dist/icons/bs/BsFileEarmarkZip.js +23 -0
  189. package/dist/icons/bs/BsFiles.js +19 -0
  190. package/dist/icons/bs/BsGeoAlt.js +23 -0
  191. package/dist/icons/bs/BsGrid.js +19 -0
  192. package/dist/icons/bs/BsLayers.js +19 -0
  193. package/dist/icons/bs/BsLayoutThreeColumns.js +19 -0
  194. package/dist/icons/bs/BsListUl.js +22 -0
  195. package/dist/icons/bs/BsMortarboard.js +23 -0
  196. package/dist/icons/bs/BsMusicNoteBeamed.js +34 -0
  197. package/dist/icons/bs/BsOpenai.js +19 -0
  198. package/dist/icons/bs/BsPersonPlus.js +26 -0
  199. package/dist/icons/bs/BsSearch.js +19 -0
  200. package/dist/icons/bs/BsSend.js +19 -0
  201. package/dist/icons/bs/BsShieldSlash.js +22 -0
  202. package/dist/icons/bs/BsStar.js +19 -0
  203. package/dist/icons/bs/BsStarFill.js +19 -0
  204. package/dist/icons/bs/BsStopCircle.js +23 -0
  205. package/dist/icons/bs/BsTag.js +23 -0
  206. package/dist/icons/bs/BsTelephone.js +19 -0
  207. package/dist/icons/bs/BsTerminal.js +23 -0
  208. package/dist/icons/bs/BsTerminalFill.js +19 -0
  209. package/dist/icons/bs/BsThreeDots.js +19 -0
  210. package/dist/icons/bs/BsThreeDotsVertical.js +19 -0
  211. package/dist/icons/bs/BsZoomIn.js +37 -0
  212. package/dist/icons/fa/FaAmazon.js +16 -0
  213. package/dist/icons/fa/FaAngleDown.js +16 -0
  214. package/dist/icons/fa/FaAngleLeft.js +16 -0
  215. package/dist/icons/fa/FaAngleRight.js +16 -0
  216. package/dist/icons/fa/FaAngleUp.js +16 -0
  217. package/dist/icons/fa/FaArrowDown.js +16 -0
  218. package/dist/icons/fa/FaArrowLeft.js +16 -0
  219. package/dist/icons/fa/FaArrowRight.js +16 -0
  220. package/dist/icons/fa/FaArrowUp.js +16 -0
  221. package/dist/icons/fa/FaBalanceScale.js +16 -0
  222. package/dist/icons/fa/FaCaretDown.js +16 -0
  223. package/dist/icons/fa/FaCentos.js +16 -0
  224. package/dist/icons/fa/FaChartLine.js +16 -0
  225. package/dist/icons/fa/FaChartPie.js +16 -0
  226. package/dist/icons/fa/FaCheck.js +16 -0
  227. package/dist/icons/fa/FaChevronDown.js +16 -0
  228. package/dist/icons/fa/FaChevronUp.js +16 -0
  229. package/dist/icons/fa/FaChrome.js +16 -0
  230. package/dist/icons/fa/FaCircleNotch.js +16 -0
  231. package/dist/icons/fa/FaCloud.js +16 -0
  232. package/dist/icons/fa/FaCloudDownloadAlt.js +16 -0
  233. package/dist/icons/fa/FaCog.js +16 -0
  234. package/dist/icons/fa/FaCogs.js +16 -0
  235. package/dist/icons/fa/FaComments.js +16 -0
  236. package/dist/icons/fa/FaCompress.js +16 -0
  237. package/dist/icons/fa/FaDesktop.js +16 -0
  238. package/dist/icons/fa/FaDocker.js +16 -0
  239. package/dist/icons/fa/FaDollarSign.js +16 -0
  240. package/dist/icons/fa/FaEdge.js +16 -0
  241. package/dist/icons/fa/FaEdit.js +16 -0
  242. package/dist/icons/fa/FaExclamationTriangle.js +16 -0
  243. package/dist/icons/fa/FaExpand.js +16 -0
  244. package/dist/icons/fa/FaEye.js +16 -0
  245. package/dist/icons/fa/FaEyeSlash.js +16 -0
  246. package/dist/icons/fa/FaFile.js +16 -0
  247. package/dist/icons/fa/FaFilePdf.js +16 -0
  248. package/dist/icons/fa/FaFilter.js +16 -0
  249. package/dist/icons/fa/FaFirefoxBrowser.js +16 -0
  250. package/dist/icons/fa/FaFlask.js +16 -0
  251. package/dist/icons/fa/FaFolder.js +16 -0
  252. package/dist/icons/fa/FaGithub.js +16 -0
  253. package/dist/icons/fa/FaGitlab.js +16 -0
  254. package/dist/icons/fa/FaGlobe.js +16 -0
  255. package/dist/icons/fa/FaGlobeAmericas.js +16 -0
  256. package/dist/icons/fa/FaImage.js +16 -0
  257. package/dist/icons/fa/FaInfoCircle.js +16 -0
  258. package/dist/icons/fa/FaKey.js +16 -0
  259. package/dist/icons/fa/FaLayerGroup.js +16 -0
  260. package/dist/icons/fa/FaLink.js +16 -0
  261. package/dist/icons/fa/FaLinkedin.js +16 -0
  262. package/dist/icons/fa/FaLinux.js +16 -0
  263. package/dist/icons/fa/FaList.js +16 -0
  264. package/dist/icons/fa/FaLock.js +16 -0
  265. package/dist/icons/fa/FaOpenid.js +16 -0
  266. package/dist/icons/fa/FaOpera.js +16 -0
  267. package/dist/icons/fa/FaPaperclip.js +16 -0
  268. package/dist/icons/fa/FaPlus.js +16 -0
  269. package/dist/icons/fa/FaPowerOff.js +16 -0
  270. package/dist/icons/fa/FaPrint.js +16 -0
  271. package/dist/icons/fa/FaQrcode.js +16 -0
  272. package/dist/icons/fa/FaQuestionCircle.js +16 -0
  273. package/dist/icons/fa/FaRedhat.js +16 -0
  274. package/dist/icons/fa/FaRegCircle.js +16 -0
  275. package/dist/icons/fa/FaRegFileImage.js +16 -0
  276. package/dist/icons/fa/FaRegFolder.js +16 -0
  277. package/dist/icons/fa/FaRobot.js +16 -0
  278. package/dist/icons/fa/FaRocket.js +16 -0
  279. package/dist/icons/fa/FaRunning.js +16 -0
  280. package/dist/icons/fa/FaSafari.js +16 -0
  281. package/dist/icons/fa/FaSave.js +16 -0
  282. package/dist/icons/fa/FaSearch.js +16 -0
  283. package/dist/icons/fa/FaShieldAlt.js +16 -0
  284. package/dist/icons/fa/FaSlack.js +16 -0
  285. package/dist/icons/fa/FaStar.js +16 -0
  286. package/dist/icons/fa/FaStop.js +16 -0
  287. package/dist/icons/fa/FaSuse.js +16 -0
  288. package/dist/icons/fa/FaTerminal.js +16 -0
  289. package/dist/icons/fa/FaTimes.js +16 -0
  290. package/dist/icons/fa/FaUbuntu.js +16 -0
  291. package/dist/icons/fa/FaUndoAlt.js +16 -0
  292. package/dist/icons/fa/FaUnlink.js +16 -0
  293. package/dist/icons/fa/FaUser.js +16 -0
  294. package/dist/icons/fa/FaUsers.js +16 -0
  295. package/dist/icons/fa/FaWindows.js +16 -0
  296. package/dist/icons/fa6/FaApple.js +16 -0
  297. package/dist/icons/fa6/FaArrowsRotate.js +16 -0
  298. package/dist/icons/fa6/FaDebian.js +16 -0
  299. package/dist/icons/fa6/FaFilterCircleXmark.js +16 -0
  300. package/dist/icons/fa6/FaInbox.js +16 -0
  301. package/dist/icons/fa6/FaLocationDot.js +16 -0
  302. package/dist/icons/fa6/FaRegFilePdf.js +16 -0
  303. package/dist/icons/fa6/FaRegFolderOpen.js +16 -0
  304. package/dist/icons/fa6/FaUpRightFromSquare.js +16 -0
  305. package/dist/icons/fa6/FaWandMagicSparkles.js +16 -0
  306. package/dist/icons/fa6/FaXTwitter.js +16 -0
  307. package/dist/icons/fi/FiActivity.js +23 -0
  308. package/dist/icons/fi/FiAlertCircle.js +49 -0
  309. package/dist/icons/fi/FiChevronDown.js +23 -0
  310. package/dist/icons/fi/FiClock.js +31 -0
  311. package/dist/icons/fi/FiCopy.js +34 -0
  312. package/dist/icons/fi/FiDownload.js +40 -0
  313. package/dist/icons/fi/FiFile.js +27 -0
  314. package/dist/icons/fi/FiFileText.js +55 -0
  315. package/dist/icons/fi/FiHardDrive.js +55 -0
  316. package/dist/icons/fi/FiRotateCcw.js +27 -0
  317. package/dist/icons/fi/FiUpload.js +40 -0
  318. package/dist/icons/fi/FiX.js +37 -0
  319. package/dist/icons/fi/FiZap.js +23 -0
  320. package/dist/icons/gi/GiSpy.js +16 -0
  321. package/dist/icons/go/GoGitCommit.js +16 -0
  322. package/dist/icons/go/GoGitPullRequest.js +20 -0
  323. package/dist/icons/go/GoIssueOpened.js +16 -0
  324. package/dist/icons/go/GoPlus.js +16 -0
  325. package/dist/icons/go/GoRepoForked.js +28 -0
  326. package/dist/icons/go/GoSignOut.js +16 -0
  327. package/dist/icons/go/GoSkip.js +20 -0
  328. package/dist/icons/go/GoVideo.js +20 -0
  329. package/dist/icons/gr/GrCloudComputer.js +20 -0
  330. package/dist/icons/gr/GrInbox.js +20 -0
  331. package/dist/icons/gr/GrServerCluster.js +20 -0
  332. package/dist/icons/gr/GrStorage.js +20 -0
  333. package/dist/icons/gr/GrTasks.js +20 -0
  334. package/dist/icons/hi/HiCog.js +24 -0
  335. package/dist/icons/hi/HiDuplicate.js +24 -0
  336. package/dist/icons/hi/HiOutlineArchive.js +26 -0
  337. package/dist/icons/hi/HiOutlineClipboardCopy.js +26 -0
  338. package/dist/icons/hi/HiOutlineHome.js +26 -0
  339. package/dist/icons/hi/HiQuestionMarkCircle.js +24 -0
  340. package/dist/icons/hi/HiServer.js +24 -0
  341. package/dist/icons/hi2/HiMiniCheckCircle.js +24 -0
  342. package/dist/icons/hi2/HiMiniLanguage.js +28 -0
  343. package/dist/icons/hi2/HiMiniMinusCircle.js +24 -0
  344. package/dist/icons/hi2/HiMiniXCircle.js +24 -0
  345. package/dist/icons/hi2/HiSparkles.js +24 -0
  346. package/dist/icons/im/ImSpinner5.js +19 -0
  347. package/dist/icons/io/IoIosNotifications.js +16 -0
  348. package/dist/icons/io/IoMdBuild.js +16 -0
  349. package/dist/icons/io/IoMdClose.js +16 -0
  350. package/dist/icons/io5/IoCloudUploadOutline.js +32 -0
  351. package/dist/icons/io5/IoDocumentTextOutline.js +31 -0
  352. package/dist/icons/io5/IoFileTrayFullOutline.js +31 -0
  353. package/dist/icons/io5/IoHeart.js +16 -0
  354. package/dist/icons/io5/IoHeartDislike.js +16 -0
  355. package/dist/icons/io5/IoHeartOutline.js +22 -0
  356. package/dist/icons/io5/IoInformationCircleOutline.js +50 -0
  357. package/dist/icons/io5/IoSettingsOutline.js +22 -0
  358. package/dist/icons/io5/IoWarningOutline.js +40 -0
  359. package/dist/icons/lu/LuArrowRight.js +27 -0
  360. package/dist/icons/lu/LuBadgeCheck.js +27 -0
  361. package/dist/icons/lu/LuBrainCircuit.js +101 -0
  362. package/dist/icons/lu/LuCalendar.js +46 -0
  363. package/dist/icons/lu/LuCheck.js +23 -0
  364. package/dist/icons/lu/LuChevronLeft.js +23 -0
  365. package/dist/icons/lu/LuChevronRight.js +23 -0
  366. package/dist/icons/lu/LuExternalLink.js +35 -0
  367. package/dist/icons/lu/LuEye.js +31 -0
  368. package/dist/icons/lu/LuEyeOff.js +40 -0
  369. package/dist/icons/lu/LuFolderTree.js +40 -0
  370. package/dist/icons/lu/LuIdCard.js +55 -0
  371. package/dist/icons/lu/LuLogs.js +65 -0
  372. package/dist/icons/lu/LuMail.js +33 -0
  373. package/dist/icons/lu/LuMegaphone.js +27 -0
  374. package/dist/icons/lu/LuMoon.js +23 -0
  375. package/dist/icons/lu/LuPartyPopper.js +65 -0
  376. package/dist/icons/lu/LuSettings2.js +48 -0
  377. package/dist/icons/lu/LuSheet.js +72 -0
  378. package/dist/icons/lu/LuShield.js +23 -0
  379. package/dist/icons/lu/LuSun.js +69 -0
  380. package/dist/icons/lu/LuX.js +27 -0
  381. package/dist/icons/lu/LuZoomIn.js +59 -0
  382. package/dist/icons/lu/LuZoomOut.js +49 -0
  383. package/dist/icons/md/MdClear.js +23 -0
  384. package/dist/icons/md/MdDragHandle.js +23 -0
  385. package/dist/icons/md/MdInstallDesktop.js +31 -0
  386. package/dist/icons/md/MdOutlineAttachMoney.js +23 -0
  387. package/dist/icons/md/MdOutlineMoneyOff.js +23 -0
  388. package/dist/icons/md/MdPieChart.js +23 -0
  389. package/dist/icons/md/MdRefresh.js +23 -0
  390. package/dist/icons/md/MdReplay.js +23 -0
  391. package/dist/icons/md/MdSmartphone.js +23 -0
  392. package/dist/icons/pi/PiArrowBendUpRightBold.js +19 -0
  393. package/dist/icons/pi/PiPlugsConnectedFill.js +19 -0
  394. package/dist/icons/pi/PiRectangleDashed.js +19 -0
  395. package/dist/icons/pi/PiShareBold.js +19 -0
  396. package/dist/icons/si/SiAnthropic.js +19 -0
  397. package/dist/icons/si/SiHelm.js +19 -0
  398. package/dist/icons/si/SiKubernetes.js +19 -0
  399. package/dist/icons/tb/TbAlertTriangle.js +35 -0
  400. package/dist/icons/tb/TbAlertTriangleFilled.js +19 -0
  401. package/dist/icons/tb/TbApi.js +40 -0
  402. package/dist/icons/tb/TbBrain.js +50 -0
  403. package/dist/icons/tb/TbBuildingTunnel.js +65 -0
  404. package/dist/icons/tb/TbEdit.js +35 -0
  405. package/dist/icons/tb/TbLayoutSidebar.js +27 -0
  406. package/dist/icons/tb/TbLayoutSidebarLeftCollapse.js +35 -0
  407. package/dist/icons/tb/TbLayoutSidebarRightCollapse.js +35 -0
  408. package/dist/icons/tb/TbUser.js +27 -0
  409. package/dist/icons/tb/TbUserOff.js +35 -0
  410. package/dist/icons/tb/TbWorldShare.js +55 -0
  411. package/dist/icons/tb/TbWorldWww.js +65 -0
  412. package/dist/icons/ti/TiArrowSortedDown.js +20 -0
  413. package/dist/icons/ti/TiArrowSortedUp.js +20 -0
  414. package/dist/icons/ti/TiArrowUnsorted.js +20 -0
  415. package/dist/icons/ti/TiCancel.js +20 -0
  416. package/dist/icons/vsc/VscChromeMinimize.js +19 -0
  417. package/dist/icons/vsc/VscJson.js +19 -0
  418. package/dist/icons/vsc/VscLayoutSidebarLeft.js +19 -0
  419. package/dist/icons/vsc/VscPass.js +27 -0
  420. package/dist/icons/vsc/VscSplitHorizontal.js +19 -0
  421. package/dist/icons/vsc/VscTerminalPowershell.js +19 -0
  422. package/dist/icons.d.ts +7 -22
  423. package/dist/icons.js +257 -38
  424. package/dist/index.d.ts +1 -1
  425. package/dist/list/ActionToolbar.js +2 -2
  426. package/dist/list/ListPager.js +4 -3
  427. package/dist/list/ListTable.js +2 -2
  428. package/dist/list/ListViewControls.js +29 -42
  429. package/dist/list/RowContextMenu.js +28 -19
  430. package/dist/list/listSearch.js +6 -5
  431. package/dist/logviewer/LogViewer.js +28 -20
  432. package/dist/logviewer/segments.js +2 -2
  433. package/dist/styles/theme.css +1 -0
  434. package/dist/styles.css +1 -1
  435. package/dist/theme/index.js +5 -5
  436. package/package.json +28 -30
  437. package/dist/ai/ui/buttons.d.ts +0 -1
@@ -3,44 +3,40 @@ import { fetchPreviewObject, loadPreviewContent, peekPreviewContent } from "./pr
3
3
  import { readCappedBytes } from "./readCappedBytes.js";
4
4
  import { useEffect, useState } from "react";
5
5
  //#region src/file-explorer/FilePreview/useObjectBlobUrl.ts
6
+ var IDLE = {
7
+ blobUrl: null,
8
+ loading: false,
9
+ error: null,
10
+ tooLarge: false,
11
+ corsError: false
12
+ };
6
13
  function toState(result) {
7
14
  return {
8
- blobUrl: result.blobUrl,
9
- loading: false,
10
- error: null,
11
- tooLarge: result.tooLarge,
12
- corsError: false
15
+ ...IDLE,
16
+ ...result
13
17
  };
14
18
  }
15
19
  function disposeBlob(result) {
16
20
  if (result.blobUrl) URL.revokeObjectURL(result.blobUrl);
17
21
  }
18
22
  /** Fetch an object into a blob URL with a forced MIME type so e.g. PDFs render inline even when served as octet-stream; cached per `cacheKey` so repeated mounts share one download and one blob URL, revoked when the cache drops it. */
19
- function useObjectBlobUrl(url, { enabled, maxBytes, knownSize, mimeType, cacheKey }) {
23
+ function useObjectBlobUrl(url, { maxBytes, knownSize, mimeType, cacheKey }) {
20
24
  const [state, setState] = useState({
21
- blobUrl: null,
22
- loading: enabled,
23
- error: null,
24
- tooLarge: false,
25
- corsError: false
25
+ ...IDLE,
26
+ loading: true
26
27
  });
27
28
  const tooLarge = typeof knownSize === "number" && knownSize > maxBytes;
28
- const key = enabled ? cacheKey : null;
29
29
  useEffect(() => {
30
- if (!enabled || !url || !key) return;
31
30
  if (tooLarge) {
32
31
  setState({
33
- blobUrl: null,
34
- loading: false,
35
- error: null,
36
- tooLarge: true,
37
- corsError: false
32
+ ...IDLE,
33
+ tooLarge: true
38
34
  });
39
35
  return;
40
36
  }
41
37
  let cancelled = false;
42
- const record = loadPreviewContent(key, async (signal) => {
43
- const response = await fetchPreviewObject(key, url, signal);
38
+ const record = loadPreviewContent(cacheKey, async (signal) => {
39
+ const response = await fetchPreviewObject(cacheKey, url, signal);
44
40
  const { bytes, tooLarge: exceeded } = await readCappedBytes(response, maxBytes);
45
41
  if (exceeded) return {
46
42
  blobUrl: null,
@@ -52,21 +48,16 @@ function useObjectBlobUrl(url, { enabled, maxBytes, knownSize, mimeType, cacheKe
52
48
  };
53
49
  }, disposeBlob);
54
50
  setState(record.value ? toState(record.value) : {
55
- blobUrl: null,
56
- loading: true,
57
- error: null,
58
- tooLarge: false,
59
- corsError: false
51
+ ...IDLE,
52
+ loading: true
60
53
  });
61
54
  record.promise.then((result) => {
62
55
  if (!cancelled) setState(toState(result));
63
56
  }).catch((err) => {
64
57
  if (err instanceof DOMException && err.name === "AbortError") return;
65
58
  if (!cancelled) setState({
66
- blobUrl: null,
67
- loading: false,
59
+ ...IDLE,
68
60
  error: err instanceof Error ? err.message : "Failed to load file",
69
- tooLarge: false,
70
61
  corsError: err instanceof CorsError
71
62
  });
72
63
  });
@@ -75,20 +66,16 @@ function useObjectBlobUrl(url, { enabled, maxBytes, knownSize, mimeType, cacheKe
75
66
  };
76
67
  }, [
77
68
  url,
78
- enabled,
79
- key,
69
+ cacheKey,
80
70
  maxBytes,
81
71
  mimeType,
82
72
  tooLarge
83
73
  ]);
84
74
  if (tooLarge) return {
85
- blobUrl: null,
86
- loading: false,
87
- error: null,
88
- tooLarge: true,
89
- corsError: false
75
+ ...IDLE,
76
+ tooLarge: true
90
77
  };
91
- const cached = key ? peekPreviewContent(key) : void 0;
78
+ const cached = peekPreviewContent(cacheKey);
92
79
  return cached ? toState(cached) : state;
93
80
  }
94
81
  //#endregion
@@ -12,8 +12,7 @@ interface ObjectTextState extends TextResult {
12
12
  * download it once. `maxLines` stops the read early and `maxBytes` cuts short what it
13
13
  * hasn't. `tail` reads the end of the object instead of the start, and caches
14
14
  * separately because the same object yields different text. */
15
- export declare function useObjectText(url: string | null, { enabled, maxBytes, maxLines, knownSize, cacheKey, tail, }: {
16
- enabled: boolean;
15
+ export declare function useObjectText(url: string, { maxBytes, maxLines, knownSize, cacheKey, tail, }: {
17
16
  maxBytes: number;
18
17
  maxLines?: number | undefined;
19
18
  knownSize?: number | undefined;
@@ -37,23 +37,22 @@ async function readObjectText(signal, { url, cacheKey, maxBytes, maxLines, known
37
37
  * download it once. `maxLines` stops the read early and `maxBytes` cuts short what it
38
38
  * hasn't. `tail` reads the end of the object instead of the start, and caches
39
39
  * separately because the same object yields different text. */
40
- function useObjectText(url, { enabled, maxBytes, maxLines, knownSize, cacheKey, tail = false }) {
40
+ function useObjectText(url, { maxBytes, maxLines, knownSize, cacheKey, tail = false }) {
41
41
  const tooLarge = maxLines === void 0 && !tail && typeof knownSize === "number" && knownSize > maxBytes;
42
- const key = enabled ? tail ? `${cacheKey}#tail` : cacheKey : null;
42
+ const key = tail ? `${cacheKey}#tail` : cacheKey;
43
43
  const [state, setState] = useState({
44
44
  ...IDLE,
45
- loading: enabled
45
+ loading: true
46
46
  });
47
47
  const [stateKey, setStateKey] = useState(key);
48
48
  if (stateKey !== key) {
49
49
  setStateKey(key);
50
50
  setState({
51
51
  ...IDLE,
52
- loading: key !== null
52
+ loading: true
53
53
  });
54
54
  }
55
55
  useEffect(() => {
56
- if (!enabled || !url || !key) return;
57
56
  if (tooLarge) {
58
57
  setState({
59
58
  ...IDLE,
@@ -89,7 +88,6 @@ function useObjectText(url, { enabled, maxBytes, maxLines, knownSize, cacheKey,
89
88
  };
90
89
  }, [
91
90
  url,
92
- enabled,
93
91
  key,
94
92
  maxBytes,
95
93
  maxLines,
@@ -102,7 +100,7 @@ function useObjectText(url, { enabled, maxBytes, maxLines, knownSize, cacheKey,
102
100
  ...IDLE,
103
101
  tooLarge: true
104
102
  };
105
- const cached = key ? peekPreviewContent(key) : void 0;
103
+ const cached = peekPreviewContent(key);
106
104
  return cached ? toState(cached) : state;
107
105
  }
108
106
  //#endregion
@@ -1,5 +1,5 @@
1
1
  import { useStrings } from "../components/Provider.js";
2
- import { EyeIcon } from "../icons.js";
2
+ import { LuEye } from "../icons/lu/LuEye.js";
3
3
  import { TOOLTIP_ID } from "../components/Tooltip.js";
4
4
  import { MoreButton, useRowMenuActive } from "../list/RowContextMenu.js";
5
5
  import { Table } from "../components/Table.js";
@@ -111,7 +111,7 @@ function FileRow({ node, icon, rowId, rowIndex, active, checked, canPreview, get
111
111
  children: [/* @__PURE__ */ jsx("div", {
112
112
  className: "truncate text-[13px] font-medium leading-tight text-(--theme-app)",
113
113
  children: node.displayName || node.name
114
- }), !isDir && node.contentType && /* @__PURE__ */ jsx("div", {
114
+ }), isTwoLineRow(node) && /* @__PURE__ */ jsx("div", {
115
115
  className: "truncate text-xs leading-tight text-(--theme-muted-text-color)",
116
116
  children: node.contentType
117
117
  })]
@@ -151,7 +151,7 @@ function FileRow({ node, icon, rowId, rowIndex, active, checked, canPreview, get
151
151
  onPreview(node);
152
152
  },
153
153
  className: cx("rounded p-1 text-(--theme-muted-text-color) transition-colors hover:bg-(--theme-muted-panel-bg) hover:text-(--theme-app) [&>svg]:h-4 [&>svg]:w-4", menuActive ? "opacity-100" : "opacity-0 group-hover:opacity-100 focus-visible:opacity-100"),
154
- children: /* @__PURE__ */ jsx(EyeIcon, {})
154
+ children: /* @__PURE__ */ jsx(LuEye, {})
155
155
  }), /* @__PURE__ */ jsx(MoreButton, {
156
156
  active: menuActive,
157
157
  onOpen: (x, y) => openRowMenu(x, y, getItems())
@@ -1,4 +1,5 @@
1
1
  import type { OpenMenu, RowMenuItem } from '../list/index.js';
2
+ import { type LoadMoreState } from './LoadMoreRow.js';
2
3
  import type { TreeNode } from './lib/types.js';
3
4
  interface Span {
4
5
  start: number;
@@ -10,13 +11,10 @@ export declare function spacerHeights(items: readonly Span[], totalSize: number,
10
11
  top: number;
11
12
  bottom: number;
12
13
  };
13
- interface VirtualRow {
14
- index: number;
15
- start: number;
16
- size: number;
17
- }
18
14
  interface FileRowsWindowProps {
19
- items: readonly VirtualRow[];
15
+ items: readonly {
16
+ index: number;
17
+ }[];
20
18
  padTop: number;
21
19
  padBottom: number;
22
20
  nodes: TreeNode[];
@@ -25,12 +23,7 @@ interface FileRowsWindowProps {
25
23
  activeIndex: number;
26
24
  rowIdPrefix: string;
27
25
  scrollEl: HTMLElement | null;
28
- loadMore?: {
29
- loading: boolean;
30
- error: string | undefined;
31
- auto: boolean;
32
- onLoadMore: () => void;
33
- } | undefined;
26
+ loadMore?: LoadMoreState | undefined;
34
27
  getItems: (node: TreeNode) => RowMenuItem[];
35
28
  openMenu: OpenMenu;
36
29
  onOpen: (node: TreeNode) => void;
@@ -1,5 +1,6 @@
1
1
  import { useSlots, useStrings } from "../components/Provider.js";
2
- import { FileIcon, FolderIcon } from "../icons.js";
2
+ import { FaRegFolder } from "../icons/fa/FaRegFolder.js";
3
+ import { FiFile } from "../icons/fi/FiFile.js";
3
4
  import { canPreview } from "./FilePreview/previewType.js";
4
5
  import { getNodeIcon } from "./helpers.js";
5
6
  import { FileRow } from "./FileRow.js";
@@ -41,7 +42,7 @@ function FileRowsWindow({ items, padTop, padBottom, nodes, checkedItems, activeI
41
42
  root: scrollEl,
42
43
  onLoadMore: loadMore.onLoadMore
43
44
  }, "load-more") : null;
44
- const icon = getNodeIcon(node, storageIconUrl, storageIconAlt) ?? (node.type === "directory" ? /* @__PURE__ */ jsx(FolderIcon, { className: "h-4 w-4 text-sky-500/80" }) : /* @__PURE__ */ jsx(FileIcon, { className: "h-4 w-4 theme-muted-text" }));
45
+ const icon = getNodeIcon(node, storageIconUrl, storageIconAlt) ?? (node.type === "directory" ? /* @__PURE__ */ jsx(FaRegFolder, { className: "h-4 w-4 text-sky-500/80" }) : /* @__PURE__ */ jsx(FiFile, { className: "h-4 w-4 theme-muted-text" }));
45
46
  return /* @__PURE__ */ jsx(FileRow, {
46
47
  rowId: `${rowIdPrefix}-${item.index}`,
47
48
  rowIndex: item.index + 2,
@@ -1,4 +1,5 @@
1
1
  import { type OpenMenu, type RowMenuItem } from '../list/index.js';
2
+ import { type LoadMoreState } from './LoadMoreRow.js';
2
3
  import type { TreeNode } from './lib/types.js';
3
4
  interface FileTableProps {
4
5
  nodes: TreeNode[];
@@ -12,12 +13,7 @@ interface FileTableProps {
12
13
  onToggleCheck: (node: TreeNode, checked: boolean) => void;
13
14
  onPreview: (node: TreeNode) => void;
14
15
  /** Set when the folder has pages left to fetch. */
15
- loadMore?: {
16
- loading: boolean;
17
- error: string | undefined;
18
- auto: boolean;
19
- onLoadMore: () => void;
20
- } | undefined;
16
+ loadMore?: LoadMoreState | undefined;
21
17
  }
22
18
  /** The file table. Give it a `key` of the folder path: a folder change must reset
23
19
  * the cursor, the scroll offset and the virtualizer's measurements, and a remount
@@ -1,5 +1,13 @@
1
1
  /** The virtualizer sizes this row from the constant, never by measuring it. */
2
2
  export declare const LOAD_MORE_ROW_HEIGHT = 45;
3
+ /** A folder's paging state, as the table's sentinel row needs it. */
4
+ export interface LoadMoreState {
5
+ loading: boolean;
6
+ error: string | undefined;
7
+ /** False past the auto-load cap, where the user asks for each page. */
8
+ auto: boolean;
9
+ onLoadMore: () => void;
10
+ }
3
11
  interface LoadMoreRowProps {
4
12
  rowId: string;
5
13
  rowIndex: number;
@@ -2,7 +2,6 @@ import type { TreeNode } from './lib/types.js';
2
2
  /** Row pitch, with `space-y-0.5` folded in: absolutely positioned rows cannot use
3
3
  * sibling margins. useTreePitchAudit warns if this drifts from the DOM. */
4
4
  export declare const TREE_ROW_HEIGHT = 30;
5
- export declare const TREE_SKELETON_HEIGHT = 64;
6
5
  interface TreeViewProps {
7
6
  rootNodes: TreeNode[];
8
7
  parentToChildrenMap: Record<string, TreeNode[]>;
@@ -1,5 +1,7 @@
1
1
  import { useStrings } from "../components/Provider.js";
2
- import { AngleRightIcon, FolderIcon, FolderOpenIcon } from "../icons.js";
2
+ import { FaAngleRight } from "../icons/fa/FaAngleRight.js";
3
+ import { FaRegFolder } from "../icons/fa/FaRegFolder.js";
4
+ import { FaRegFolderOpen } from "../icons/fa6/FaRegFolderOpen.js";
3
5
  import { positionKeys } from "../components/keys.js";
4
6
  import { getParentPath } from "./lib/utils.js";
5
7
  import { canPreview } from "./FilePreview/previewType.js";
@@ -16,8 +18,9 @@ var INDENT_PER_LEVEL = 21;
16
18
  var GUIDE_OFFSET = 9;
17
19
  var ROW_PAD_DIRECTORY = 8;
18
20
  var ROW_PAD_FILE = 28;
21
+ var TREE_SKELETON_HEIGHT = 64;
19
22
  function rowHeight(row) {
20
- return row.kind === "skeleton" ? 64 : 30;
23
+ return row.kind === "skeleton" ? TREE_SKELETON_HEIGHT : 30;
21
24
  }
22
25
  /** The sidebar tree, flattened and windowed. The flat array is the single source
23
26
  * of truth for rendering, arrow keys and ARIA. */
@@ -191,12 +194,9 @@ function RowIcons({ isDirectory, isExpanded, customIcon }) {
191
194
  className: "shrink-0",
192
195
  children: customIcon
193
196
  });
194
- const folder = isExpanded ? /* @__PURE__ */ jsx(FolderOpenIcon, { className: "h-4 w-4 mr-1 text-sky-500" }) : /* @__PURE__ */ jsx(FolderIcon, { className: "h-4 w-4 mr-1 text-sky-500/80" });
195
- return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(AngleRightIcon, { className: cx("h-3.5 w-3.5 shrink-0 theme-muted-text transition-transform duration-150", isExpanded && "rotate-90") }), customIcon ?? folder] });
197
+ const folder = isExpanded ? /* @__PURE__ */ jsx(FaRegFolderOpen, { className: "h-4 w-4 mr-1 text-sky-500" }) : /* @__PURE__ */ jsx(FaRegFolder, { className: "h-4 w-4 mr-1 text-sky-500/80" });
198
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(FaAngleRight, { className: cx("h-3.5 w-3.5 shrink-0 theme-muted-text transition-transform duration-150", isExpanded && "rotate-90") }), customIcon ?? folder] });
196
199
  }
197
- /** Sized by the slot, not by its contents: react-loading-skeleton wraps each bar
198
- * in an inline span, so a bar occupies a line box taller than its `height` and
199
- * the overflow would sit on top of the absolutely positioned row below. */
200
200
  /** Click-only, unlike the table's sentinel: the tree is a navigation aid, and
201
201
  * growing it automatically as the user scrolls is what the cap exists to prevent. */
202
202
  function TreeMoreRow({ depth, hiddenFiles, partial, loading, failed, onReveal }) {
@@ -220,6 +220,9 @@ function TreeMoreRow({ depth, hiddenFiles, partial, loading, failed, onReveal })
220
220
  })]
221
221
  });
222
222
  }
223
+ /** Sized by the slot, not by its contents: react-loading-skeleton wraps each bar
224
+ * in an inline span, so a bar occupies a line box taller than its `height` and
225
+ * the overflow would sit on top of the absolutely positioned row below. */
223
226
  function TreeSkeletonRow({ depth }) {
224
227
  return /* @__PURE__ */ jsxs("div", {
225
228
  className: "relative h-full overflow-hidden",
@@ -312,7 +315,6 @@ function dispatchRowKey(e, { node, isDirectory, isExpanded, onSelect, onToggleEx
312
315
  var TreeRowItem = memo(function TreeRowItem({ row, isSelected, onToggleExpand, onSelect, onDropToFolder, onContextMenu, onKeyDown }) {
313
316
  const { node, depth, isExpanded } = row;
314
317
  const isDirectory = node.type === "directory";
315
- const isStorageNode = !!node.displayName && node.storageId;
316
318
  const { dragActive, dragHandlers } = useSpringLoadedDrop({
317
319
  node,
318
320
  dropPath: isDirectory ? node.path : getParentPath(node.path),
@@ -335,7 +337,7 @@ var TreeRowItem = memo(function TreeRowItem({ row, isSelected, onToggleExpand, o
335
337
  onDelegate: onKeyDown
336
338
  });
337
339
  const customIcon = getNodeIcon(node);
338
- const label = isDirectory && isStorageNode && node.displayName ? node.displayName : node.name;
340
+ const label = isDirectory && node.storageId && node.displayName ? node.displayName : node.name;
339
341
  return /* @__PURE__ */ jsxs("div", {
340
342
  className: cx("relative h-full rounded-md transition-[box-shadow,background-color] duration-150", dragActive && "ring-1 ring-(--theme-link)/60"),
341
343
  ...dragHandlers,
@@ -1,5 +1,19 @@
1
1
  import { useNotify, useProvisionCorsRules, useStrings } from "../components/Provider.js";
2
- import { AlertIcon, CustomizeIcon, DiskIcon, DocumentIcon, FileIcon, FileTextIcon, FolderIcon, ImageIcon, PdfIcon, RefreshIcon, ShareIcon, SpreadsheetIcon, UserIcon, VideoIcon, ZipIcon } from "../icons.js";
2
+ import { BsFileEarmarkZip } from "../icons/bs/BsFileEarmarkZip.js";
3
+ import { FaRegFileImage } from "../icons/fa/FaRegFileImage.js";
4
+ import { FaRegFolder } from "../icons/fa/FaRegFolder.js";
5
+ import { FaUser } from "../icons/fa/FaUser.js";
6
+ import { FaRegFilePdf } from "../icons/fa6/FaRegFilePdf.js";
7
+ import { FaWandMagicSparkles } from "../icons/fa6/FaWandMagicSparkles.js";
8
+ import { FiFile } from "../icons/fi/FiFile.js";
9
+ import { FiFileText } from "../icons/fi/FiFileText.js";
10
+ import { FiHardDrive } from "../icons/fi/FiHardDrive.js";
11
+ import { GoVideo } from "../icons/go/GoVideo.js";
12
+ import { IoDocumentTextOutline } from "../icons/io5/IoDocumentTextOutline.js";
13
+ import { LuSheet } from "../icons/lu/LuSheet.js";
14
+ import { MdRefresh } from "../icons/md/MdRefresh.js";
15
+ import { PiShareBold } from "../icons/pi/PiShareBold.js";
16
+ import { TbAlertTriangle } from "../icons/tb/TbAlertTriangle.js";
3
17
  import { positionKeys } from "../components/keys.js";
4
18
  import Callout from "../components/Callout.js";
5
19
  import { ListSkeleton } from "../list/ListTable.js";
@@ -15,73 +29,73 @@ var SIDEBAR_WIDTH_STORAGE_KEY = "fileExplorerSidebarWidth";
15
29
  var contentTypeIconMap = [
16
30
  {
17
31
  pattern: /^image\//,
18
- icon: /* @__PURE__ */ jsx(ImageIcon, { className: "h-4 w-4 text-blue-500" })
32
+ icon: /* @__PURE__ */ jsx(FaRegFileImage, { className: "h-4 w-4 text-blue-500" })
19
33
  },
20
34
  {
21
35
  pattern: /^video\//,
22
- icon: /* @__PURE__ */ jsx(VideoIcon, { className: "h-4 w-4 text-purple-500" })
36
+ icon: /* @__PURE__ */ jsx(GoVideo, { className: "h-4 w-4 text-purple-500" })
23
37
  },
24
38
  {
25
39
  pattern: /^application\/pdf$/,
26
- icon: /* @__PURE__ */ jsx(PdfIcon, { className: "h-4 w-4 text-red-500" })
40
+ icon: /* @__PURE__ */ jsx(FaRegFilePdf, { className: "h-4 w-4 text-red-500" })
27
41
  },
28
42
  {
29
43
  pattern: /(spreadsheet|csv|excel)/,
30
- icon: /* @__PURE__ */ jsx(SpreadsheetIcon, { className: "h-4 w-4 text-green-500" })
44
+ icon: /* @__PURE__ */ jsx(LuSheet, { className: "h-4 w-4 text-green-500" })
31
45
  },
32
46
  {
33
47
  pattern: /(document|word)/,
34
- icon: /* @__PURE__ */ jsx(DocumentIcon, { className: "h-4 w-4 text-blue-400" })
48
+ icon: /* @__PURE__ */ jsx(IoDocumentTextOutline, { className: "h-4 w-4 text-blue-400" })
35
49
  },
36
50
  {
37
51
  pattern: /(javascript|json|css|html)/,
38
- icon: /* @__PURE__ */ jsx(FileTextIcon, { className: "h-4 w-4 text-yellow-500" })
52
+ icon: /* @__PURE__ */ jsx(FiFileText, { className: "h-4 w-4 text-yellow-500" })
39
53
  },
40
54
  {
41
55
  pattern: /(zip|gzip|tar)/,
42
- icon: /* @__PURE__ */ jsx(ZipIcon, { className: "h-4 w-4 text-purple-600" })
56
+ icon: /* @__PURE__ */ jsx(BsFileEarmarkZip, { className: "h-4 w-4 text-purple-600" })
43
57
  }
44
58
  ];
45
59
  var extensionIconMap = [
46
60
  {
47
61
  pattern: /^(jpe?g|png|gif|svg|webp)$/i,
48
- icon: /* @__PURE__ */ jsx(ImageIcon, { className: "h-4 w-4 text-blue-500" })
62
+ icon: /* @__PURE__ */ jsx(FaRegFileImage, { className: "h-4 w-4 text-blue-500" })
49
63
  },
50
64
  {
51
65
  pattern: /^(mp4|mov|avi|mkv)$/i,
52
- icon: /* @__PURE__ */ jsx(VideoIcon, { className: "h-4 w-4 text-purple-500" })
66
+ icon: /* @__PURE__ */ jsx(GoVideo, { className: "h-4 w-4 text-purple-500" })
53
67
  },
54
68
  {
55
69
  pattern: /^pdf$/i,
56
- icon: /* @__PURE__ */ jsx(PdfIcon, { className: "h-4 w-4 text-red-500" })
70
+ icon: /* @__PURE__ */ jsx(FaRegFilePdf, { className: "h-4 w-4 text-red-500" })
57
71
  },
58
72
  {
59
73
  pattern: /^(xlsx?|csv|ods)$/i,
60
- icon: /* @__PURE__ */ jsx(SpreadsheetIcon, { className: "h-4 w-4 text-green-500" })
74
+ icon: /* @__PURE__ */ jsx(LuSheet, { className: "h-4 w-4 text-green-500" })
61
75
  },
62
76
  {
63
77
  pattern: /^(docx?|odt)$/i,
64
- icon: /* @__PURE__ */ jsx(DocumentIcon, { className: "h-4 w-4 text-blue-400" })
78
+ icon: /* @__PURE__ */ jsx(IoDocumentTextOutline, { className: "h-4 w-4 text-blue-400" })
65
79
  },
66
80
  {
67
81
  pattern: /^(js|ts|json|css|html|md|txt)$/i,
68
- icon: /* @__PURE__ */ jsx(FileTextIcon, { className: "h-4 w-4 text-yellow-500" })
82
+ icon: /* @__PURE__ */ jsx(FiFileText, { className: "h-4 w-4 text-yellow-500" })
69
83
  },
70
84
  {
71
85
  pattern: /^(zip|gz|gzip|tar|rar)$/i,
72
- icon: /* @__PURE__ */ jsx(ZipIcon, { className: "h-4 w-4 text-purple-600" })
86
+ icon: /* @__PURE__ */ jsx(BsFileEarmarkZip, { className: "h-4 w-4 text-purple-600" })
73
87
  }
74
88
  ];
75
89
  function getNodeIcon(node, storageIconUrl, storageIconAlt = "Storage icon") {
76
90
  const isUserNode = !node.storageId;
77
91
  const isStorageNode = node.root;
78
- if (isUserNode) return /* @__PURE__ */ jsx(UserIcon, { className: "h-3 w-3 mr-2" });
79
- if (isStorageNode && node.storageType === "workspace") return /* @__PURE__ */ jsx(DiskIcon, { className: "h-4 w-4 mr-2" });
92
+ if (isUserNode) return /* @__PURE__ */ jsx(FaUser, { className: "h-3 w-3 mr-2" });
93
+ if (isStorageNode && node.storageType === "workspace") return /* @__PURE__ */ jsx(FiHardDrive, { className: "h-4 w-4 mr-2" });
80
94
  if (isStorageNode && node.storageNodeIcon) {
81
95
  const storageNodeIcon = node.storageNodeIcon;
82
96
  const fallbackSrc = storageIconUrl?.({ type: storageNodeIcon });
83
97
  const iconSrc = node.storageImageUrl || fallbackSrc;
84
- if (!iconSrc) return /* @__PURE__ */ jsx(DiskIcon, { className: "h-4 w-4 mr-2" });
98
+ if (!iconSrc) return /* @__PURE__ */ jsx(FiHardDrive, { className: "h-4 w-4 mr-2" });
85
99
  return /* @__PURE__ */ jsx("img", {
86
100
  className: "h-4 w-4 mr-2",
87
101
  src: iconSrc,
@@ -91,7 +105,7 @@ function getNodeIcon(node, storageIconUrl, storageIconAlt = "Storage icon") {
91
105
  }
92
106
  });
93
107
  }
94
- if (!isStorageNode && !isUserNode && node.type === "directory") return null;
108
+ if (!isStorageNode && node.type === "directory") return null;
95
109
  if (node.contentType) {
96
110
  for (const { pattern, icon } of contentTypeIconMap) if (pattern.test(node.contentType)) return icon;
97
111
  }
@@ -99,7 +113,7 @@ function getNodeIcon(node, storageIconUrl, storageIconAlt = "Storage icon") {
99
113
  if (ext) {
100
114
  for (const { pattern, icon } of extensionIconMap) if (pattern.test(ext)) return icon;
101
115
  }
102
- return /* @__PURE__ */ jsx(FileIcon, { className: "h-4 w-4 theme-muted-text" });
116
+ return /* @__PURE__ */ jsx(FiFile, { className: "h-4 w-4 theme-muted-text" });
103
117
  }
104
118
  function renderUploadNodes(uploadNodes) {
105
119
  const sorted = [...uploadNodes].sort((a, b) => a.relativePath.localeCompare(b.relativePath));
@@ -112,7 +126,7 @@ function renderUploadNodes(uploadNodes) {
112
126
  while (common < folders.length && common < lastFolders.length && folders[common] === lastFolders[common]) common++;
113
127
  const folderElements = folders.slice(common).map((folder, i) => /* @__PURE__ */ jsxs("div", {
114
128
  style: { marginLeft: (common + i) * 16 },
115
- children: [/* @__PURE__ */ jsx(FolderIcon, { className: "inline h-3 w-3 mr-1" }), /* @__PURE__ */ jsxs("span", {
129
+ children: [/* @__PURE__ */ jsx(FaRegFolder, { className: "inline h-3 w-3 mr-1" }), /* @__PURE__ */ jsxs("span", {
116
130
  className: "font-semibold",
117
131
  children: [folder, "/"]
118
132
  })]
@@ -144,7 +158,7 @@ function NoFileSelectedPreview() {
144
158
  children: [
145
159
  /* @__PURE__ */ jsx("div", {
146
160
  className: "inline-flex items-center justify-center w-14 h-14 rounded-full theme-muted-panel mb-4",
147
- children: /* @__PURE__ */ jsx(DiskIcon, { className: "h-6 w-6 theme-muted-text" })
161
+ children: /* @__PURE__ */ jsx(FiHardDrive, { className: "h-6 w-6 theme-muted-text" })
148
162
  }),
149
163
  /* @__PURE__ */ jsx("h2", {
150
164
  className: "text-base font-semibold mb-1",
@@ -169,7 +183,7 @@ function NotFoundPreview({ path, onRetry }) {
169
183
  children: [
170
184
  /* @__PURE__ */ jsx("div", {
171
185
  className: "inline-flex items-center justify-center w-14 h-14 rounded-full theme-muted-panel mb-4",
172
- children: /* @__PURE__ */ jsx(DiskIcon, { className: "h-6 w-6 theme-muted-text" })
186
+ children: /* @__PURE__ */ jsx(FiHardDrive, { className: "h-6 w-6 theme-muted-text" })
173
187
  }),
174
188
  /* @__PURE__ */ jsx("h2", {
175
189
  className: "text-base font-semibold mb-1",
@@ -183,7 +197,7 @@ function NotFoundPreview({ path, onRetry }) {
183
197
  type: "button",
184
198
  className: "btn btn-info gap-2",
185
199
  onClick: onRetry,
186
- children: [/* @__PURE__ */ jsx(RefreshIcon, { className: "h-4 w-4" }), t.retry]
200
+ children: [/* @__PURE__ */ jsx(MdRefresh, { className: "h-4 w-4" }), t.retry]
187
201
  })
188
202
  ]
189
203
  })
@@ -237,12 +251,12 @@ function CorsIssuePreview({ selectedStorage, onRefresh }) {
237
251
  type: "button",
238
252
  className: "btn btn-info cursor-pointer flex items-center",
239
253
  onClick: onRefresh ? () => onRefresh() : void 0,
240
- children: [/* @__PURE__ */ jsx(RefreshIcon, { className: "h-4 w-4 mr-2" }), t.actions.retry]
254
+ children: [/* @__PURE__ */ jsx(MdRefresh, { className: "h-4 w-4 mr-2" }), t.actions.retry]
241
255
  }), provisionCorsRules && /* @__PURE__ */ jsxs("button", {
242
256
  type: "button",
243
257
  className: "btn btn-info cursor-pointer flex items-center",
244
258
  onClick: handleAddCorsRules,
245
- children: [/* @__PURE__ */ jsx(CustomizeIcon, { className: "h-4 w-4 mr-2" }), /* @__PURE__ */ jsx("span", { children: t.actions.addRules })]
259
+ children: [/* @__PURE__ */ jsx(FaWandMagicSparkles, { className: "h-4 w-4 mr-2" }), /* @__PURE__ */ jsx("span", { children: t.actions.addRules })]
246
260
  })]
247
261
  })]
248
262
  });
@@ -253,7 +267,6 @@ function CorsPropagatingPreview() {
253
267
  const [elapsedMs, setElapsedMs] = useState(0);
254
268
  useEffect(() => {
255
269
  const start = Date.now();
256
- setElapsedMs(0);
257
270
  const id = setInterval(() => {
258
271
  setElapsedMs(Date.now() - start);
259
272
  }, 500);
@@ -399,7 +412,7 @@ function NoDataAvailablePreview({ selectedStorage, error, onRefresh, connectionI
399
412
  children: [
400
413
  /* @__PURE__ */ jsx("div", {
401
414
  className: "inline-flex items-center justify-center w-14 h-14 rounded-full theme-muted-panel mb-4",
402
- children: /* @__PURE__ */ jsx(FileIcon, { className: "h-6 w-6 theme-muted-text" })
415
+ children: /* @__PURE__ */ jsx(FiFile, { className: "h-6 w-6 theme-muted-text" })
403
416
  }),
404
417
  /* @__PURE__ */ jsx("h2", {
405
418
  className: "text-base font-semibold mb-1",
@@ -415,7 +428,7 @@ function NoDataAvailablePreview({ selectedStorage, error, onRefresh, connectionI
415
428
  children: [
416
429
  /* @__PURE__ */ jsx("div", {
417
430
  className: "inline-flex items-center justify-center w-14 h-14 rounded-full bg-amber-500/10 mb-4",
418
- children: /* @__PURE__ */ jsx(AlertIcon, { className: "h-6 w-6 text-amber-500" })
431
+ children: /* @__PURE__ */ jsx(TbAlertTriangle, { className: "h-6 w-6 text-amber-500" })
419
432
  }),
420
433
  /* @__PURE__ */ jsx("h2", {
421
434
  className: "text-base font-semibold mb-1",
@@ -429,7 +442,7 @@ function NoDataAvailablePreview({ selectedStorage, error, onRefresh, connectionI
429
442
  type: "button",
430
443
  className: "btn btn-info cursor-pointer flex items-center gap-2",
431
444
  onClick: onRefresh ? () => onRefresh() : void 0,
432
- children: [/* @__PURE__ */ jsx(RefreshIcon, { className: "h-4 w-4" }), t.empty.tryAgain]
445
+ children: [/* @__PURE__ */ jsx(MdRefresh, { className: "h-4 w-4" }), t.empty.tryAgain]
433
446
  })
434
447
  ]
435
448
  })
@@ -493,7 +506,7 @@ function ShareFileButton({ node, onShare }) {
493
506
  });
494
507
  },
495
508
  disabled: isPending,
496
- children: [/* @__PURE__ */ jsx(ShareIcon, { className: "h-4 w-4" }), /* @__PURE__ */ jsx("span", {
509
+ children: [/* @__PURE__ */ jsx(PiShareBold, { className: "h-4 w-4" }), /* @__PURE__ */ jsx("span", {
497
510
  className: "hidden md:inline",
498
511
  children: t.empty.shareThisFile
499
512
  })]
@@ -523,8 +536,7 @@ async function addCorsRules({ provision, notify, strings, csp, type, username, s
523
536
  const deadline = Date.now() + pollBudgetMs;
524
537
  await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
525
538
  while (Date.now() < deadline) {
526
- const result = await onRefresh({ silent: true });
527
- if (!result || !result.corsError) {
539
+ if (!(await onRefresh({ silent: true }))?.corsError) {
528
540
  await onRefresh();
529
541
  notify.success(strings.corsAdded);
530
542
  return;
@@ -8,7 +8,6 @@ export interface FileExplorerDeleteFilesResult {
8
8
  Errors?: unknown[] | undefined;
9
9
  }
10
10
  export interface IFileExplorerClient {
11
- getStorageName(): string;
12
11
  getExpiresAt(): Date;
13
12
  getFile(input: unknown): Promise<FileExplorerGetFileResult>;
14
13
  listDirectory(input: unknown): Promise<unknown>;
@@ -20,7 +19,6 @@ export interface IFileExplorerClient {
20
19
  }) => void, abortController?: AbortController): Promise<unknown>;
21
20
  }
22
21
  export interface IFileExplorerProvider {
23
- createClient: ((organization: string, username: string, name: string) => Promise<IFileExplorerClient | null>) | null;
24
22
  convertDataToStorageObjects?(data: unknown): TStorageObject[];
25
23
  /** Absent ⇒ the explorer treats one page as the whole directory. Method syntax for
26
24
  * the same bivariance reason as the two above. */
@@ -8,7 +8,6 @@ export type TStorage = {
8
8
  type?: string;
9
9
  created?: string;
10
10
  modified?: string;
11
- region?: string;
12
11
  csp?: string;
13
12
  imageUrl?: string;
14
13
  canWrite?: boolean | undefined;