@strapi/upload 5.58.0 → 5.60.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 (395) hide show
  1. package/dist/admin/components/AssetPickerDialog/AssetPickerDialog.js +434 -0
  2. package/dist/admin/components/AssetPickerDialog/AssetPickerDialog.js.map +1 -0
  3. package/dist/admin/components/AssetPickerDialog/AssetPickerDialog.mjs +432 -0
  4. package/dist/admin/components/AssetPickerDialog/AssetPickerDialog.mjs.map +1 -0
  5. package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.js +91 -0
  6. package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.js.map +1 -0
  7. package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.mjs +89 -0
  8. package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.mjs.map +1 -0
  9. package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.js +178 -0
  10. package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.js.map +1 -0
  11. package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.mjs +175 -0
  12. package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.mjs.map +1 -0
  13. package/dist/admin/components/AssetPickerDialog/SortableSelection.js +143 -0
  14. package/dist/admin/components/AssetPickerDialog/SortableSelection.js.map +1 -0
  15. package/dist/admin/components/AssetPickerDialog/SortableSelection.mjs +141 -0
  16. package/dist/admin/components/AssetPickerDialog/SortableSelection.mjs.map +1 -0
  17. package/dist/admin/components/AssetPickerDialog/pickerSelection.js +49 -0
  18. package/dist/admin/components/AssetPickerDialog/pickerSelection.js.map +1 -0
  19. package/dist/admin/components/AssetPickerDialog/pickerSelection.mjs +41 -0
  20. package/dist/admin/components/AssetPickerDialog/pickerSelection.mjs.map +1 -0
  21. package/dist/admin/components/MediaLibraryInput/AddAssetMenu.js +142 -0
  22. package/dist/admin/components/MediaLibraryInput/AddAssetMenu.js.map +1 -0
  23. package/dist/admin/components/MediaLibraryInput/AddAssetMenu.mjs +140 -0
  24. package/dist/admin/components/MediaLibraryInput/AddAssetMenu.mjs.map +1 -0
  25. package/dist/admin/components/MediaLibraryInput/AssetCard.js +240 -0
  26. package/dist/admin/components/MediaLibraryInput/AssetCard.js.map +1 -0
  27. package/dist/admin/components/MediaLibraryInput/AssetCard.mjs +237 -0
  28. package/dist/admin/components/MediaLibraryInput/AssetCard.mjs.map +1 -0
  29. package/dist/admin/components/MediaLibraryInput/AssetCarousel.js +161 -0
  30. package/dist/admin/components/MediaLibraryInput/AssetCarousel.js.map +1 -0
  31. package/dist/admin/components/MediaLibraryInput/AssetCarousel.mjs +159 -0
  32. package/dist/admin/components/MediaLibraryInput/AssetCarousel.mjs.map +1 -0
  33. package/dist/admin/components/MediaLibraryInput/AssetDropZone.js +156 -0
  34. package/dist/admin/components/MediaLibraryInput/AssetDropZone.js.map +1 -0
  35. package/dist/admin/components/MediaLibraryInput/AssetDropZone.mjs +154 -0
  36. package/dist/admin/components/MediaLibraryInput/AssetDropZone.mjs.map +1 -0
  37. package/dist/admin/components/MediaLibraryInput/AssetPreview.js +109 -0
  38. package/dist/admin/components/MediaLibraryInput/AssetPreview.js.map +1 -0
  39. package/dist/admin/components/MediaLibraryInput/AssetPreview.mjs +106 -0
  40. package/dist/admin/components/MediaLibraryInput/AssetPreview.mjs.map +1 -0
  41. package/dist/admin/components/MediaLibraryInput/AssetRow.js +211 -0
  42. package/dist/admin/components/MediaLibraryInput/AssetRow.js.map +1 -0
  43. package/dist/admin/components/MediaLibraryInput/AssetRow.mjs +208 -0
  44. package/dist/admin/components/MediaLibraryInput/AssetRow.mjs.map +1 -0
  45. package/dist/admin/components/MediaLibraryInput/FieldControls.js +32 -0
  46. package/dist/admin/components/MediaLibraryInput/FieldControls.js.map +1 -0
  47. package/dist/admin/components/MediaLibraryInput/FieldControls.mjs +29 -0
  48. package/dist/admin/components/MediaLibraryInput/FieldControls.mjs.map +1 -0
  49. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +439 -0
  50. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -0
  51. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs +433 -0
  52. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -0
  53. package/dist/admin/components/MediaLibraryInput/UploadProgressBar.js +42 -0
  54. package/dist/admin/components/MediaLibraryInput/UploadProgressBar.js.map +1 -0
  55. package/dist/admin/components/MediaLibraryInput/UploadProgressBar.mjs +40 -0
  56. package/dist/admin/components/MediaLibraryInput/UploadProgressBar.mjs.map +1 -0
  57. package/dist/admin/components/MediaLibraryInput/useFieldUploads.js +122 -0
  58. package/dist/admin/components/MediaLibraryInput/useFieldUploads.js.map +1 -0
  59. package/dist/admin/components/MediaLibraryInput/useFieldUploads.mjs +120 -0
  60. package/dist/admin/components/MediaLibraryInput/useFieldUploads.mjs.map +1 -0
  61. package/dist/admin/components/UploadProgressDialog.js +2 -1
  62. package/dist/admin/components/UploadProgressDialog.js.map +1 -1
  63. package/dist/admin/components/UploadProgressDialog.mjs +2 -1
  64. package/dist/admin/components/UploadProgressDialog.mjs.map +1 -1
  65. package/dist/admin/hooks/useAIMetadataAvailability.js +5 -1
  66. package/dist/admin/hooks/useAIMetadataAvailability.js.map +1 -1
  67. package/dist/admin/hooks/useAIMetadataAvailability.mjs +5 -1
  68. package/dist/admin/hooks/useAIMetadataAvailability.mjs.map +1 -1
  69. package/dist/admin/hooks/useAIMetadataEnabled.js +7 -1
  70. package/dist/admin/hooks/useAIMetadataEnabled.js.map +1 -1
  71. package/dist/admin/hooks/useAIMetadataEnabled.mjs +7 -1
  72. package/dist/admin/hooks/useAIMetadataEnabled.mjs.map +1 -1
  73. package/dist/admin/hooks/useMediaLibraryPermissions.js +16 -2
  74. package/dist/admin/hooks/useMediaLibraryPermissions.js.map +1 -1
  75. package/dist/admin/hooks/useMediaLibraryPermissions.mjs +16 -2
  76. package/dist/admin/hooks/useMediaLibraryPermissions.mjs.map +1 -1
  77. package/dist/admin/hooks/useTracking.js +5 -1
  78. package/dist/admin/hooks/useTracking.js.map +1 -1
  79. package/dist/admin/hooks/useTracking.mjs +5 -1
  80. package/dist/admin/hooks/useTracking.mjs.map +1 -1
  81. package/dist/admin/index.js +7 -2
  82. package/dist/admin/index.js.map +1 -1
  83. package/dist/admin/index.mjs +7 -2
  84. package/dist/admin/index.mjs.map +1 -1
  85. package/dist/admin/legacy/components/AssetCard/AssetCardBase.js.map +1 -1
  86. package/dist/admin/legacy/components/AssetCard/AssetCardBase.mjs.map +1 -1
  87. package/dist/admin/legacy/components/AssetCard/VideoPreview.js +2 -1
  88. package/dist/admin/legacy/components/AssetCard/VideoPreview.js.map +1 -1
  89. package/dist/admin/legacy/components/AssetCard/VideoPreview.mjs +2 -1
  90. package/dist/admin/legacy/components/AssetCard/VideoPreview.mjs.map +1 -1
  91. package/dist/admin/legacy/components/AssetDialog/AssetDialog.js +3 -1
  92. package/dist/admin/legacy/components/AssetDialog/AssetDialog.js.map +1 -1
  93. package/dist/admin/legacy/components/AssetDialog/AssetDialog.mjs +3 -1
  94. package/dist/admin/legacy/components/AssetDialog/AssetDialog.mjs.map +1 -1
  95. package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.js +3 -1
  96. package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
  97. package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.mjs +3 -1
  98. package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
  99. package/dist/admin/legacy/components/AssetDialog/BrowseStep/Filters.js.map +1 -1
  100. package/dist/admin/legacy/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -1
  101. package/dist/admin/legacy/components/AssetGridList/AssetGridList.js +7 -6
  102. package/dist/admin/legacy/components/AssetGridList/AssetGridList.js.map +1 -1
  103. package/dist/admin/legacy/components/AssetGridList/AssetGridList.mjs +7 -6
  104. package/dist/admin/legacy/components/AssetGridList/AssetGridList.mjs.map +1 -1
  105. package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.js +2 -1
  106. package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -1
  107. package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs +2 -1
  108. package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +1 -1
  109. package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.js +2 -1
  110. package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -1
  111. package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.mjs +2 -1
  112. package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -1
  113. package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.js +3 -1
  114. package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.js.map +1 -1
  115. package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.mjs +3 -1
  116. package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
  117. package/dist/admin/legacy/components/FilterList/FilterList.js.map +1 -1
  118. package/dist/admin/legacy/components/FilterList/FilterList.mjs.map +1 -1
  119. package/dist/admin/legacy/components/FilterPopover/FilterPopover.js.map +1 -1
  120. package/dist/admin/legacy/components/FilterPopover/FilterPopover.mjs.map +1 -1
  121. package/dist/admin/legacy/components/FilterPopover/FilterValueInput.js +2 -1
  122. package/dist/admin/legacy/components/FilterPopover/FilterValueInput.js.map +1 -1
  123. package/dist/admin/legacy/components/FilterPopover/FilterValueInput.mjs +2 -1
  124. package/dist/admin/legacy/components/FilterPopover/FilterValueInput.mjs.map +1 -1
  125. package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.js +4 -2
  126. package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.js.map +1 -1
  127. package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.mjs +4 -2
  128. package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.mjs.map +1 -1
  129. package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.js +2 -1
  130. package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
  131. package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.mjs +2 -1
  132. package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -1
  133. package/dist/admin/legacy/components/SelectTree/SelectTree.js +3 -1
  134. package/dist/admin/legacy/components/SelectTree/SelectTree.js.map +1 -1
  135. package/dist/admin/legacy/components/SelectTree/SelectTree.mjs +3 -1
  136. package/dist/admin/legacy/components/SelectTree/SelectTree.mjs.map +1 -1
  137. package/dist/admin/legacy/components/TableList/TableList.js +3 -1
  138. package/dist/admin/legacy/components/TableList/TableList.js.map +1 -1
  139. package/dist/admin/legacy/components/TableList/TableList.mjs +3 -1
  140. package/dist/admin/legacy/components/TableList/TableList.mjs.map +1 -1
  141. package/dist/admin/legacy/components/TableList/TableRows.js +3 -1
  142. package/dist/admin/legacy/components/TableList/TableRows.js.map +1 -1
  143. package/dist/admin/legacy/components/TableList/TableRows.mjs +3 -1
  144. package/dist/admin/legacy/components/TableList/TableRows.mjs.map +1 -1
  145. package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.js +3 -1
  146. package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.js.map +1 -1
  147. package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.mjs +3 -1
  148. package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.mjs.map +1 -1
  149. package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
  150. package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -1
  151. package/dist/admin/legacy/pages/App/components/BulkActions.js +2 -1
  152. package/dist/admin/legacy/pages/App/components/BulkActions.js.map +1 -1
  153. package/dist/admin/legacy/pages/App/components/BulkActions.mjs +2 -1
  154. package/dist/admin/legacy/pages/App/components/BulkActions.mjs.map +1 -1
  155. package/dist/admin/legacy/pages/App/components/BulkMoveButton.js +2 -1
  156. package/dist/admin/legacy/pages/App/components/BulkMoveButton.js.map +1 -1
  157. package/dist/admin/legacy/pages/App/components/BulkMoveButton.mjs +2 -1
  158. package/dist/admin/legacy/pages/App/components/BulkMoveButton.mjs.map +1 -1
  159. package/dist/admin/pages/Assets/AssetsPage.js +13 -302
  160. package/dist/admin/pages/Assets/AssetsPage.js.map +1 -1
  161. package/dist/admin/pages/Assets/AssetsPage.mjs +11 -280
  162. package/dist/admin/pages/Assets/AssetsPage.mjs.map +1 -1
  163. package/dist/admin/pages/Assets/components/AssetsGrid.js +143 -31
  164. package/dist/admin/pages/Assets/components/AssetsGrid.js.map +1 -1
  165. package/dist/admin/pages/Assets/components/AssetsGrid.mjs +146 -34
  166. package/dist/admin/pages/Assets/components/AssetsGrid.mjs.map +1 -1
  167. package/dist/admin/pages/Assets/components/AssetsSearchInput.js +43 -2
  168. package/dist/admin/pages/Assets/components/AssetsSearchInput.js.map +1 -1
  169. package/dist/admin/pages/Assets/components/AssetsSearchInput.mjs +45 -4
  170. package/dist/admin/pages/Assets/components/AssetsSearchInput.mjs.map +1 -1
  171. package/dist/admin/pages/Assets/components/AssetsTable.js +60 -35
  172. package/dist/admin/pages/Assets/components/AssetsTable.js.map +1 -1
  173. package/dist/admin/pages/Assets/components/AssetsTable.mjs +62 -37
  174. package/dist/admin/pages/Assets/components/AssetsTable.mjs.map +1 -1
  175. package/dist/admin/pages/Assets/components/AssetsView.js +145 -0
  176. package/dist/admin/pages/Assets/components/AssetsView.js.map +1 -0
  177. package/dist/admin/pages/Assets/components/AssetsView.mjs +143 -0
  178. package/dist/admin/pages/Assets/components/AssetsView.mjs.map +1 -0
  179. package/dist/admin/pages/Assets/components/BulkActionsBar.js +3 -1
  180. package/dist/admin/pages/Assets/components/BulkActionsBar.js.map +1 -1
  181. package/dist/admin/pages/Assets/components/BulkActionsBar.mjs +4 -2
  182. package/dist/admin/pages/Assets/components/BulkActionsBar.mjs.map +1 -1
  183. package/dist/admin/pages/Assets/components/BusyOverlay.mjs +1 -1
  184. package/dist/admin/pages/Assets/components/DateRangeCalendar.js +10 -7
  185. package/dist/admin/pages/Assets/components/DateRangeCalendar.js.map +1 -1
  186. package/dist/admin/pages/Assets/components/DateRangeCalendar.mjs +10 -7
  187. package/dist/admin/pages/Assets/components/DateRangeCalendar.mjs.map +1 -1
  188. package/dist/admin/pages/Assets/components/Dnd/DragOverlayChip.mjs +1 -1
  189. package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.js +40 -0
  190. package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.js.map +1 -0
  191. package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.mjs +38 -0
  192. package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.mjs.map +1 -0
  193. package/dist/admin/pages/Assets/components/Dnd/assetSortable.js +29 -0
  194. package/dist/admin/pages/Assets/components/Dnd/assetSortable.js.map +1 -0
  195. package/dist/admin/pages/Assets/components/Dnd/assetSortable.mjs +24 -0
  196. package/dist/admin/pages/Assets/components/Dnd/assetSortable.mjs.map +1 -0
  197. package/dist/admin/pages/Assets/components/Dnd/dndIds.js +5 -0
  198. package/dist/admin/pages/Assets/components/Dnd/dndIds.js.map +1 -1
  199. package/dist/admin/pages/Assets/components/Dnd/dndIds.mjs +5 -1
  200. package/dist/admin/pages/Assets/components/Dnd/dndIds.mjs.map +1 -1
  201. package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.js +41 -13
  202. package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.js.map +1 -1
  203. package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.mjs +41 -13
  204. package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.mjs.map +1 -1
  205. package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.js +4 -2
  206. package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.js.map +1 -1
  207. package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.mjs +5 -3
  208. package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.mjs.map +1 -1
  209. package/dist/admin/pages/Assets/components/FilterBadges.js +32 -3
  210. package/dist/admin/pages/Assets/components/FilterBadges.js.map +1 -1
  211. package/dist/admin/pages/Assets/components/FilterBadges.mjs +35 -6
  212. package/dist/admin/pages/Assets/components/FilterBadges.mjs.map +1 -1
  213. package/dist/admin/pages/Assets/components/FilterMenu.mjs +2 -2
  214. package/dist/admin/pages/Assets/components/FolderTree/FolderTree.js +274 -55
  215. package/dist/admin/pages/Assets/components/FolderTree/FolderTree.js.map +1 -1
  216. package/dist/admin/pages/Assets/components/FolderTree/FolderTree.mjs +277 -59
  217. package/dist/admin/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -1
  218. package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.js +32 -0
  219. package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.js.map +1 -0
  220. package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.mjs +29 -0
  221. package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.mjs.map +1 -0
  222. package/dist/admin/pages/Assets/components/ViewToggle.js +126 -0
  223. package/dist/admin/pages/Assets/components/ViewToggle.js.map +1 -0
  224. package/dist/admin/pages/Assets/components/ViewToggle.mjs +104 -0
  225. package/dist/admin/pages/Assets/components/ViewToggle.mjs.map +1 -0
  226. package/dist/admin/pages/Assets/hooks/useAssetSearch.js +2 -2
  227. package/dist/admin/pages/Assets/hooks/useAssetSearch.js.map +1 -1
  228. package/dist/admin/pages/Assets/hooks/useAssetSearch.mjs +2 -2
  229. package/dist/admin/pages/Assets/hooks/useAssetSearch.mjs.map +1 -1
  230. package/dist/admin/pages/Assets/hooks/useAssetSelection.js +19 -1
  231. package/dist/admin/pages/Assets/hooks/useAssetSelection.js.map +1 -1
  232. package/dist/admin/pages/Assets/hooks/useAssetSelection.mjs +20 -3
  233. package/dist/admin/pages/Assets/hooks/useAssetSelection.mjs.map +1 -1
  234. package/dist/admin/pages/Assets/hooks/useAssetsList.js +87 -0
  235. package/dist/admin/pages/Assets/hooks/useAssetsList.js.map +1 -0
  236. package/dist/admin/pages/Assets/hooks/useAssetsList.mjs +85 -0
  237. package/dist/admin/pages/Assets/hooks/useAssetsList.mjs.map +1 -0
  238. package/dist/admin/pages/Assets/hooks/useBusyAssets.mjs +1 -1
  239. package/dist/admin/pages/Assets/hooks/useFolderNavigation.js +2 -1
  240. package/dist/admin/pages/Assets/hooks/useFolderNavigation.js.map +1 -1
  241. package/dist/admin/pages/Assets/hooks/useFolderNavigation.mjs +3 -2
  242. package/dist/admin/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -1
  243. package/dist/admin/pages/Assets/hooks/useListFilters.js +2 -1
  244. package/dist/admin/pages/Assets/hooks/useListFilters.js.map +1 -1
  245. package/dist/admin/pages/Assets/hooks/useListFilters.mjs +3 -2
  246. package/dist/admin/pages/Assets/hooks/useListFilters.mjs.map +1 -1
  247. package/dist/admin/pages/Assets/hooks/useListQueryParams.js +80 -0
  248. package/dist/admin/pages/Assets/hooks/useListQueryParams.js.map +1 -0
  249. package/dist/admin/pages/Assets/hooks/useListQueryParams.mjs +77 -0
  250. package/dist/admin/pages/Assets/hooks/useListQueryParams.mjs.map +1 -0
  251. package/dist/admin/pages/Assets/hooks/useListSettings.js +32 -0
  252. package/dist/admin/pages/Assets/hooks/useListSettings.js.map +1 -0
  253. package/dist/admin/pages/Assets/hooks/useListSettings.mjs +29 -0
  254. package/dist/admin/pages/Assets/hooks/useListSettings.mjs.map +1 -0
  255. package/dist/admin/pages/Assets/hooks/useListSort.js +2 -1
  256. package/dist/admin/pages/Assets/hooks/useListSort.js.map +1 -1
  257. package/dist/admin/pages/Assets/hooks/useListSort.mjs +3 -2
  258. package/dist/admin/pages/Assets/hooks/useListSort.mjs.map +1 -1
  259. package/dist/admin/services/api.js +106 -11
  260. package/dist/admin/services/api.js.map +1 -1
  261. package/dist/admin/services/api.mjs +105 -13
  262. package/dist/admin/services/api.mjs.map +1 -1
  263. package/dist/admin/src/components/AssetPickerDialog/AssetPickerDialog.d.ts +19 -0
  264. package/dist/admin/src/components/AssetPickerDialog/FolderBreadcrumbs.d.ts +10 -0
  265. package/dist/admin/src/components/AssetPickerDialog/PickerSelectionProvider.d.ts +28 -0
  266. package/dist/admin/src/components/AssetPickerDialog/SortableSelection.d.ts +12 -0
  267. package/dist/admin/src/components/AssetPickerDialog/pickerSelection.d.ts +26 -0
  268. package/dist/admin/src/components/MediaLibraryInput/AddAssetMenu.d.ts +19 -0
  269. package/dist/admin/src/components/MediaLibraryInput/AssetCard.d.ts +25 -0
  270. package/dist/admin/src/components/MediaLibraryInput/AssetCarousel.d.ts +16 -0
  271. package/dist/admin/src/components/MediaLibraryInput/AssetDropZone.d.ts +21 -0
  272. package/dist/admin/src/components/MediaLibraryInput/AssetPreview.d.ts +17 -0
  273. package/dist/admin/src/components/MediaLibraryInput/AssetRow.d.ts +25 -0
  274. package/dist/admin/src/components/MediaLibraryInput/FieldControls.d.ts +19 -0
  275. package/dist/admin/src/components/MediaLibraryInput/MediaLibraryInput.d.ts +28 -0
  276. package/dist/admin/src/components/MediaLibraryInput/UploadProgressBar.d.ts +7 -0
  277. package/dist/admin/src/components/MediaLibraryInput/useFieldUploads.d.ts +31 -0
  278. package/dist/admin/src/hooks/useMediaLibraryPermissions.d.ts +3 -0
  279. package/dist/admin/src/legacy/components/BulkMoveDialog/BulkMoveDialog.d.ts +1 -1
  280. package/dist/admin/src/legacy/pages/App/components/BulkActions.d.ts +1 -1
  281. package/dist/admin/src/pages/Assets/components/AssetsGrid.d.ts +3 -1
  282. package/dist/admin/src/pages/Assets/components/AssetsSearchInput.d.ts +11 -1
  283. package/dist/admin/src/pages/Assets/components/AssetsView.d.ts +29 -0
  284. package/dist/admin/src/pages/Assets/components/Dnd/ReorderHandle.d.ts +12 -0
  285. package/dist/admin/src/pages/Assets/components/Dnd/assetSortable.d.ts +37 -0
  286. package/dist/admin/src/pages/Assets/components/Dnd/dndIds.d.ts +5 -0
  287. package/dist/admin/src/pages/Assets/components/Dnd/useAssetDnd.d.ts +23 -2
  288. package/dist/admin/src/pages/Assets/components/FolderTree/FolderTree.d.ts +1 -0
  289. package/dist/admin/src/pages/Assets/components/FolderTree/collapsedBranch.d.ts +21 -0
  290. package/dist/admin/src/pages/Assets/components/ViewToggle.d.ts +8 -0
  291. package/dist/admin/src/pages/Assets/hooks/useAssetSelection.d.ts +26 -0
  292. package/dist/admin/src/pages/Assets/hooks/useAssetsList.d.ts +30 -0
  293. package/dist/admin/src/pages/Assets/hooks/useListQueryParams.d.ts +27 -0
  294. package/dist/admin/src/pages/Assets/hooks/useListSettings.d.ts +29 -0
  295. package/dist/admin/src/services/api.d.ts +30 -1
  296. package/dist/admin/src/store/uploadProgress.d.ts +14 -1
  297. package/dist/admin/src/utils/allowedMediaTypes.d.ts +16 -0
  298. package/dist/admin/src/utils/findFolderPath.d.ts +6 -0
  299. package/dist/admin/src/utils/isAllowedAssetType.d.ts +14 -0
  300. package/dist/admin/store/uploadProgress.js +30 -3
  301. package/dist/admin/store/uploadProgress.js.map +1 -1
  302. package/dist/admin/store/uploadProgress.mjs +29 -4
  303. package/dist/admin/store/uploadProgress.mjs.map +1 -1
  304. package/dist/admin/translations/ca.json.js +3 -3
  305. package/dist/admin/translations/ca.json.mjs +3 -3
  306. package/dist/admin/translations/da.json.js +1 -1
  307. package/dist/admin/translations/da.json.mjs +1 -1
  308. package/dist/admin/translations/de.json.js +1 -1
  309. package/dist/admin/translations/de.json.mjs +1 -1
  310. package/dist/admin/translations/en.json.js +29 -0
  311. package/dist/admin/translations/en.json.js.map +1 -1
  312. package/dist/admin/translations/en.json.mjs +29 -0
  313. package/dist/admin/translations/en.json.mjs.map +1 -1
  314. package/dist/admin/translations/es.json.js +1 -1
  315. package/dist/admin/translations/es.json.mjs +1 -1
  316. package/dist/admin/translations/sk.json.js +2 -2
  317. package/dist/admin/translations/sk.json.mjs +2 -2
  318. package/dist/admin/translations/tr.json.js +2 -2
  319. package/dist/admin/translations/tr.json.mjs +2 -2
  320. package/dist/admin/translations/zh-Hans.json.js +1 -1
  321. package/dist/admin/translations/zh-Hans.json.mjs +1 -1
  322. package/dist/admin/translations/zh.json.js +2 -2
  323. package/dist/admin/translations/zh.json.mjs +2 -2
  324. package/dist/admin/utils/allowedMediaTypes.js +42 -0
  325. package/dist/admin/utils/allowedMediaTypes.js.map +1 -0
  326. package/dist/admin/utils/allowedMediaTypes.mjs +39 -0
  327. package/dist/admin/utils/allowedMediaTypes.mjs.map +1 -0
  328. package/dist/admin/utils/findFolderPath.js +26 -0
  329. package/dist/admin/utils/findFolderPath.js.map +1 -0
  330. package/dist/admin/utils/findFolderPath.mjs +24 -0
  331. package/dist/admin/utils/findFolderPath.mjs.map +1 -0
  332. package/dist/admin/utils/isAllowedAssetType.js +33 -0
  333. package/dist/admin/utils/isAllowedAssetType.js.map +1 -0
  334. package/dist/admin/utils/isAllowedAssetType.mjs +31 -0
  335. package/dist/admin/utils/isAllowedAssetType.mjs.map +1 -0
  336. package/dist/server/config.js +6 -0
  337. package/dist/server/config.js.map +1 -1
  338. package/dist/server/config.mjs +6 -0
  339. package/dist/server/config.mjs.map +1 -1
  340. package/dist/server/controllers/admin-settings.js +5 -1
  341. package/dist/server/controllers/admin-settings.js.map +1 -1
  342. package/dist/server/controllers/admin-settings.mjs +5 -1
  343. package/dist/server/controllers/admin-settings.mjs.map +1 -1
  344. package/dist/server/controllers/validation/admin/upload.js.map +1 -1
  345. package/dist/server/controllers/validation/admin/upload.mjs.map +1 -1
  346. package/dist/server/controllers/validation/content-api/upload.js.map +1 -1
  347. package/dist/server/controllers/validation/content-api/upload.mjs.map +1 -1
  348. package/dist/server/mcp/ambient-instance.js +7 -5
  349. package/dist/server/mcp/ambient-instance.js.map +1 -1
  350. package/dist/server/mcp/ambient-instance.mjs +7 -5
  351. package/dist/server/mcp/ambient-instance.mjs.map +1 -1
  352. package/dist/server/mcp/handlers/folder-handlers.js +4 -16
  353. package/dist/server/mcp/handlers/folder-handlers.js.map +1 -1
  354. package/dist/server/mcp/handlers/folder-handlers.mjs +5 -17
  355. package/dist/server/mcp/handlers/folder-handlers.mjs.map +1 -1
  356. package/dist/server/mcp/handlers/read-handlers.js +6 -14
  357. package/dist/server/mcp/handlers/read-handlers.js.map +1 -1
  358. package/dist/server/mcp/handlers/read-handlers.mjs +7 -15
  359. package/dist/server/mcp/handlers/read-handlers.mjs.map +1 -1
  360. package/dist/server/mcp/handlers/write-handlers.js +3 -13
  361. package/dist/server/mcp/handlers/write-handlers.js.map +1 -1
  362. package/dist/server/mcp/handlers/write-handlers.mjs +3 -13
  363. package/dist/server/mcp/handlers/write-handlers.mjs.map +1 -1
  364. package/dist/server/mcp/register-upload-mcp-tools.js +215 -195
  365. package/dist/server/mcp/register-upload-mcp-tools.js.map +1 -1
  366. package/dist/server/mcp/register-upload-mcp-tools.mjs +215 -195
  367. package/dist/server/mcp/register-upload-mcp-tools.mjs.map +1 -1
  368. package/dist/server/services/image-manipulation.js +35 -16
  369. package/dist/server/services/image-manipulation.js.map +1 -1
  370. package/dist/server/services/image-manipulation.mjs +35 -16
  371. package/dist/server/services/image-manipulation.mjs.map +1 -1
  372. package/dist/server/services/upload.js.map +1 -1
  373. package/dist/server/services/upload.mjs.map +1 -1
  374. package/dist/server/src/config.d.ts +3 -0
  375. package/dist/server/src/config.d.ts.map +1 -1
  376. package/dist/server/src/controllers/admin-settings.d.ts.map +1 -1
  377. package/dist/server/src/controllers/validation/admin/upload.d.ts.map +1 -1
  378. package/dist/server/src/controllers/validation/content-api/upload.d.ts.map +1 -1
  379. package/dist/server/src/index.d.ts +4 -1
  380. package/dist/server/src/index.d.ts.map +1 -1
  381. package/dist/server/src/mcp/ambient-instance.d.ts +7 -5
  382. package/dist/server/src/mcp/ambient-instance.d.ts.map +1 -1
  383. package/dist/server/src/mcp/handlers/folder-handlers.d.ts.map +1 -1
  384. package/dist/server/src/mcp/handlers/read-handlers.d.ts +3 -2
  385. package/dist/server/src/mcp/handlers/read-handlers.d.ts.map +1 -1
  386. package/dist/server/src/mcp/handlers/write-handlers.d.ts.map +1 -1
  387. package/dist/server/src/mcp/register-upload-mcp-tools.d.ts +9 -14
  388. package/dist/server/src/mcp/register-upload-mcp-tools.d.ts.map +1 -1
  389. package/dist/server/src/services/extensions/utils.d.ts +11 -11
  390. package/dist/server/src/services/image-manipulation.d.ts +1 -1
  391. package/dist/server/src/services/image-manipulation.d.ts.map +1 -1
  392. package/dist/server/src/services/index.d.ts +1 -1
  393. package/dist/server/src/types.d.ts +64 -12
  394. package/dist/server/src/types.d.ts.map +1 -1
  395. package/package.json +8 -6
@@ -0,0 +1,19 @@
1
+ interface AddAssetMenuProps {
2
+ disabled?: boolean;
3
+ onBrowseLibrary: () => void;
4
+ onUploadFromDevice: () => void;
5
+ onUploadFromUrl: () => void;
6
+ }
7
+ /**
8
+ * The field's "Add asset" menu, on the label row.
9
+ *
10
+ * Browsing needs the Media Library's read permission, the two upload entries
11
+ * `assets.create`; each entry disappears without its permission, and the
12
+ * trigger itself goes when nothing is left to offer, rather than opening an
13
+ * empty menu.
14
+ *
15
+ * The drop zone below keeps working whatever this shows — it is a second way
16
+ * in, not the only one.
17
+ */
18
+ export declare const AddAssetMenu: ({ disabled, onBrowseLibrary, onUploadFromDevice, onUploadFromUrl, }: AddAssetMenuProps) => import("react/jsx-runtime").JSX.Element | null;
19
+ export {};
@@ -0,0 +1,25 @@
1
+ import type { FieldUpload } from './useFieldUploads';
2
+ import type { File } from '../../../../shared/contracts/files';
3
+ interface AssetCardProps {
4
+ asset: File;
5
+ disabled?: boolean;
6
+ onCopyLink: (asset: File) => void;
7
+ onEdit?: (asset: File) => void;
8
+ onRemove: (asset: File) => void;
9
+ }
10
+ /**
11
+ * An asset a multiple-value field holds.
12
+ */
13
+ export declare const AssetCard: ({ asset, disabled, onCopyLink, onEdit, onRemove, }: AssetCardProps) => import("react/jsx-runtime").JSX.Element;
14
+ interface UploadCardProps {
15
+ upload: FieldUpload;
16
+ disabled?: boolean;
17
+ onCancel: (upload: FieldUpload) => void;
18
+ onRetry: (upload: FieldUpload) => void;
19
+ onRemove: (upload: FieldUpload) => void;
20
+ }
21
+ /**
22
+ * A file a multiple-value field is uploading, or failed to upload.
23
+ */
24
+ export declare const UploadCard: ({ upload, disabled, onCancel, onRetry, onRemove, }: UploadCardProps) => import("react/jsx-runtime").JSX.Element;
25
+ export {};
@@ -0,0 +1,16 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { ZoneVariant } from './AssetDropZone';
3
+ interface AssetCarouselProps {
4
+ /** One card per asset or upload, in field order. */
5
+ children: ReactNode;
6
+ /** Always shown: after the cards, or below them on a narrow field. */
7
+ renderDropZone: (variant: Exclude<ZoneVariant, 'bar'>) => ReactNode;
8
+ /** The field's width in the edit layout, out of 12, when the host knows it. */
9
+ layoutSize?: number;
10
+ }
11
+ /**
12
+ * A single row of cards followed by the drop tile. When the field holds more
13
+ * than fit, arrows page through the cards and the tile stays put.
14
+ */
15
+ export declare const AssetCarousel: ({ children, renderDropZone, layoutSize }: AssetCarouselProps) => import("react/jsx-runtime").JSX.Element;
16
+ export {};
@@ -0,0 +1,21 @@
1
+ /**
2
+ * `bar` on an empty field, `tile` after a multiple field's cards, `stacked`
3
+ * below them when the field is too narrow for both on one row.
4
+ */
5
+ export type ZoneVariant = 'bar' | 'tile' | 'stacked';
6
+ interface AssetDropZoneProps {
7
+ variant?: ZoneVariant;
8
+ disabled?: boolean;
9
+ onDropFiles: (files: globalThis.File[]) => void;
10
+ }
11
+ /**
12
+ * The field's own drop target. It only takes drops: browsing and picking files
13
+ * go through the "Add asset" menu, so the field has one way in, not two.
14
+ *
15
+ * Deliberately not the Media Library page's
16
+ * `UploadDropZoneProvider`: that one covers a whole route and paints a
17
+ * full-surface overlay, where this has to stay inside one field on a form that
18
+ * may hold several of them.
19
+ */
20
+ export declare const AssetDropZone: ({ variant, disabled, onDropFiles, }: AssetDropZoneProps) => import("react/jsx-runtime").JSX.Element;
21
+ export {};
@@ -0,0 +1,17 @@
1
+ import type { File } from '../../../../shared/contracts/files';
2
+ type PreviewSize = 'S' | 'L';
3
+ interface AssetPreviewProps {
4
+ asset: File;
5
+ size: PreviewSize;
6
+ }
7
+ export declare const AssetPreview: ({ asset, size }: AssetPreviewProps) => import("react/jsx-runtime").JSX.Element;
8
+ interface UploadPreviewProps {
9
+ file?: globalThis.File;
10
+ size: PreviewSize;
11
+ }
12
+ /**
13
+ * Previews a file that has not reached the server yet, straight from the
14
+ * user's disk.
15
+ */
16
+ export declare const UploadPreview: ({ file, size }: UploadPreviewProps) => import("react/jsx-runtime").JSX.Element;
17
+ export {};
@@ -0,0 +1,25 @@
1
+ import type { FieldUpload } from './useFieldUploads';
2
+ import type { File } from '../../../../shared/contracts/files';
3
+ interface AssetRowProps {
4
+ asset: File;
5
+ disabled?: boolean;
6
+ onCopyLink: (asset: File) => void;
7
+ onEdit?: (asset: File) => void;
8
+ onRemove: (asset: File) => void;
9
+ }
10
+ /**
11
+ * The asset a single-value field holds.
12
+ */
13
+ export declare const AssetRow: ({ asset, disabled, onCopyLink, onEdit, onRemove, }: AssetRowProps) => import("react/jsx-runtime").JSX.Element;
14
+ interface UploadRowProps {
15
+ upload: FieldUpload;
16
+ disabled?: boolean;
17
+ onCancel: (upload: FieldUpload) => void;
18
+ onRetry: (upload: FieldUpload) => void;
19
+ onRemove: (upload: FieldUpload) => void;
20
+ }
21
+ /**
22
+ * A file a single-value field is uploading, or failed to upload.
23
+ */
24
+ export declare const UploadRow: ({ upload, disabled, onCancel, onRetry, onRemove, }: UploadRowProps) => import("react/jsx-runtime").JSX.Element;
25
+ export {};
@@ -0,0 +1,19 @@
1
+ import { Menu } from '@strapi/design-system';
2
+ /**
3
+ * A ghost `IconButton` that stays a bare icon when disabled. The design system
4
+ * paints every disabled button, ghost included, as a bordered grey plate.
5
+ */
6
+ export declare const GhostIconButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("styled-components").FastOmit<Omit<Omit<import("@strapi/design-system").IconButtonProps<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>>, "ref"> & import("react").RefAttributes<unknown>, "ref"> & {
7
+ ref?: ((instance: unknown) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<unknown> | null | undefined;
8
+ }, string | number | symbol> & Omit<Omit<import("@strapi/design-system").IconButtonProps<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>>, "ref"> & import("react").RefAttributes<unknown>, "ref"> & {
9
+ ref?: ((instance: unknown) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<unknown> | null | undefined;
10
+ }, "variant"> & Partial<Pick<import("styled-components").FastOmit<Omit<Omit<import("@strapi/design-system").IconButtonProps<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>>, "ref"> & import("react").RefAttributes<unknown>, "ref"> & {
11
+ ref?: ((instance: unknown) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<unknown> | null | undefined;
12
+ }, string | number | symbol> & Omit<Omit<import("@strapi/design-system").IconButtonProps<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>>, "ref"> & import("react").RefAttributes<unknown>, "ref"> & {
13
+ ref?: ((instance: unknown) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<unknown> | null | undefined;
14
+ }, "variant">>> & string & Omit<(<C extends React.ElementType<any, keyof React.JSX.IntrinsicElements> = "button">(props: React.PropsWithoutRef<import("@strapi/design-system").IconButtonProps<C>> & React.RefAttributes<unknown>) => React.ReactNode), keyof import("react").Component<any, {}, any>>;
15
+ /**
16
+ * A `Menu.Item` whose label greys out with its icon when disabled. The design
17
+ * system computes a disabled text colour, then its own stylesheet overrides it.
18
+ */
19
+ export declare const FieldMenuItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<Menu.ItemProps<(props: Omit<import("@strapi/design-system").BaseLinkProps<"a">, "ref"> & React.RefAttributes<HTMLAnchorElement>) => React.ReactNode> & import("styled-components/dist/types").BaseObject, never> & Partial<Pick<Menu.ItemProps<(props: Omit<import("@strapi/design-system").BaseLinkProps<"a">, "ref"> & React.RefAttributes<HTMLAnchorElement>) => React.ReactNode> & import("styled-components/dist/types").BaseObject, never>>> & string & Omit<({ onSelect, disabled, isLink, startIcon, endIcon, isExternal, variant, ...props }: Menu.ItemProps) => import("react/jsx-runtime").JSX.Element, keyof import("react").Component<any, {}, any>>;
@@ -0,0 +1,28 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type AllowedMediaType } from '../../utils/allowedMediaTypes';
3
+ export interface MediaLibraryInputProps {
4
+ name: string;
5
+ label?: string;
6
+ labelAction?: ReactNode;
7
+ hint?: string;
8
+ required?: boolean;
9
+ disabled?: boolean;
10
+ attribute?: {
11
+ allowedTypes?: AllowedMediaType[] | null;
12
+ multiple?: boolean;
13
+ };
14
+ /** The field's width in the edit layout, out of 12. Set by the Content Manager. */
15
+ layoutSize?: number;
16
+ }
17
+ /**
18
+ * The Content Manager's `media` field, on the current Media Library stack.
19
+ *
20
+ * Files dropped here (or picked from the device) upload straight through
21
+ * `uploadFiles`, which is what drives the global upload progress dialog — so the
22
+ * entry form stays usable while they go, instead of being covered by the legacy
23
+ * wizard.
24
+ *
25
+ * The legacy input is still registered when `useLegacyMediaLibrary` is on, and
26
+ * is untouched by this.
27
+ */
28
+ export declare const MediaLibraryInput: ({ name, label, labelAction, hint, required, disabled, attribute, layoutSize, }: MediaLibraryInputProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ interface UploadProgressBarProps {
2
+ /** 0–100, or `null` for an upload whose size is not known. */
3
+ progress: number | null;
4
+ label: string;
5
+ }
6
+ export declare const UploadProgressBar: ({ progress, label }: UploadProgressBarProps) => import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,31 @@
1
+ export interface FieldUpload {
2
+ key: string;
3
+ uploadId: number;
4
+ index: number;
5
+ name: string;
6
+ status: 'uploading' | 'failed';
7
+ /** 0–100, or `null` while the size is unknown. */
8
+ progress: number | null;
9
+ /** The file the user picked, for the preview. Gone once the page reloads. */
10
+ sourceFile?: globalThis.File;
11
+ /** Whether the progress store still holds the row, i.e. it can be retried in place. */
12
+ isInStore: boolean;
13
+ }
14
+ /**
15
+ * The uploads a field started, read from the shared progress store so the field
16
+ * and the progress dialog always agree.
17
+ *
18
+ * The store only holds the latest batch, and closing the dialog empties it. Rows
19
+ * are therefore remembered here once seen: a failed upload stays on the field
20
+ * until the user retries or removes it, whatever happened to the dialog. A row
21
+ * that vanished while still in flight was cancelled along with its batch.
22
+ *
23
+ * Completed rows leave the list. Attaching them to the field is the upload's
24
+ * `onFileUploaded`, which outlives the input.
25
+ */
26
+ export declare const useFieldUploads: (owner: string) => {
27
+ uploads: FieldUpload[];
28
+ cancel: ({ uploadId, index }: FieldUpload) => void;
29
+ retry: (upload: FieldUpload, reupload: (file: globalThis.File) => void) => Promise<void>;
30
+ dismiss: (key: string) => void;
31
+ };
@@ -6,6 +6,8 @@
6
6
  * hook is what keeps the UI honest so users don't discover a missing
7
7
  * permission through a 403.
8
8
  *
9
+ * - `canRead` — browse the library (the Content Manager asset picker needs
10
+ * nothing more)
9
11
  * - `canCreate` — upload (files, from URL) and New folder
10
12
  * - `canUpdate` — edit details, replace, crop, move (dnd + bulk), delete
11
13
  * (single + bulk), AI metadata — the `assets.update` action covers
@@ -14,6 +16,7 @@
14
16
  */
15
17
  export declare const useMediaLibraryPermissions: () => {
16
18
  isLoading: boolean;
19
+ canRead: boolean;
17
20
  canCreate: boolean;
18
21
  canUpdate: boolean;
19
22
  canDownload: boolean;
@@ -11,5 +11,5 @@ export interface BulkMoveDialogProps {
11
11
  selected?: Array<FolderWithType | FileWithType>;
12
12
  currentFolder?: FolderWithType;
13
13
  }
14
- export declare const BulkMoveDialog: ({ onClose, selected, currentFolder }: BulkMoveDialogProps) => import("react/jsx-runtime").JSX.Element | null;
14
+ export declare const BulkMoveDialog: ({ onClose, selected, currentFolder, }: BulkMoveDialogProps) => import("react/jsx-runtime").JSX.Element | null;
15
15
  export {};
@@ -11,5 +11,5 @@ export interface BulkActionsProps {
11
11
  onSuccess: () => void;
12
12
  currentFolder?: FolderWithType;
13
13
  }
14
- export declare const BulkActions: ({ selected, onSuccess, currentFolder }: BulkActionsProps) => import("react/jsx-runtime").JSX.Element;
14
+ export declare const BulkActions: ({ selected, onSuccess, currentFolder, }: BulkActionsProps) => import("react/jsx-runtime").JSX.Element;
15
15
  export {};
@@ -3,10 +3,12 @@ import type { File } from '../../../../../shared/contracts/files';
3
3
  import type { Folder } from '../../../../../shared/contracts/folders';
4
4
  interface AssetsGridProps {
5
5
  assets: File[];
6
+ /** Shown in the "Assets (n)" heading; falls back to the loaded count. */
7
+ assetsTotal?: number;
6
8
  folders?: Folder[];
7
9
  /** Keys of the rendered items, in render order. Owned by the view. */
8
10
  renderedKeys?: ItemKey[];
9
11
  onAssetItemClick: (assetId: number) => void;
10
12
  }
11
- export declare const AssetsGrid: ({ assets, folders, renderedKeys, onAssetItemClick, }: AssetsGridProps) => import("react/jsx-runtime").JSX.Element | null;
13
+ export declare const AssetsGrid: ({ assets, assetsTotal, folders, renderedKeys, onAssetItemClick, }: AssetsGridProps) => import("react/jsx-runtime").JSX.Element | null;
12
14
  export {};
@@ -1,5 +1,15 @@
1
+ interface AssetsSearchInputProps {
2
+ /**
3
+ * Starts as an icon button that opens the field, which folds back once it
4
+ * loses focus empty, like the admin's own `SearchInput` in list views. Used
5
+ * where the toolbar is narrow (the Content Manager asset picker). Mobile
6
+ * always shows the field.
7
+ */
8
+ collapsible?: boolean;
9
+ }
1
10
  /**
2
11
  * Keyword search over the whole Media Library. Owns the typing state and the
3
12
  * debounce; `useAssetSearch` owns the `?_q=` URL param.
4
13
  */
5
- export declare const AssetsSearchInput: () => import("react/jsx-runtime").JSX.Element;
14
+ export declare const AssetsSearchInput: ({ collapsible }: AssetsSearchInputProps) => import("react/jsx-runtime").JSX.Element;
15
+ export {};
@@ -0,0 +1,29 @@
1
+ import { type ItemLocations } from '../../../utils/itemLocations';
2
+ import { type FoldersPosition } from '../hooks/useListSort';
3
+ import type { File } from '../../../../../shared/contracts/files';
4
+ import type { Folder } from '../../../../../shared/contracts/folders';
5
+ interface AssetsViewProps {
6
+ view: number;
7
+ folders: Folder[];
8
+ isLoadingFolders: boolean;
9
+ assets: File[];
10
+ /** Total matching assets on the server, beyond the pages loaded so far. */
11
+ assetsTotal?: number;
12
+ isLoadingAssets: boolean;
13
+ isFetchingMore: boolean;
14
+ hasNextPage: boolean;
15
+ fetchNextPage: () => void;
16
+ error: unknown;
17
+ locations: ItemLocations;
18
+ searchQuery: string;
19
+ assetsSort: string;
20
+ foldersPosition: FoldersPosition;
21
+ hasActiveFilters: boolean;
22
+ onClearFilters: () => void;
23
+ onAssetItemClick: (assetId: number) => void;
24
+ onAddAssets: () => void;
25
+ canAddAssets: boolean;
26
+ onClearSearch: () => void;
27
+ }
28
+ export declare const AssetsView: ({ view, folders, isLoadingFolders, assets, assetsTotal, isLoadingAssets, isFetchingMore, hasNextPage, fetchNextPage, error, locations, searchQuery, assetsSort, foldersPosition, hasActiveFilters, onClearFilters, onAssetItemClick, onAddAssets, canAddAssets, onClearSearch, }: AssetsViewProps) => import("react/jsx-runtime").JSX.Element;
29
+ export {};
@@ -0,0 +1,12 @@
1
+ import { type AssetSortable } from './assetSortable';
2
+ interface ReorderHandleProps {
3
+ name: string;
4
+ handle: AssetSortable['handle'];
5
+ }
6
+ /**
7
+ * The keyboard path into reordering (Space picks the item up, arrows move it,
8
+ * Space drops it). Pointer drags start from anywhere on the item, this grip
9
+ * included.
10
+ */
11
+ export declare const ReorderHandle: ({ name, handle }: ReorderHandleProps) => import("react/jsx-runtime").JSX.Element;
12
+ export {};
@@ -0,0 +1,37 @@
1
+ import { type CSSProperties, type KeyboardEvent, type SyntheticEvent } from 'react';
2
+ import type { DraggableAttributes, DraggableSyntheticListeners } from '@dnd-kit/core';
3
+ /**
4
+ * What a list item needs to take part in reordering: the whole item drags with
5
+ * the pointer, and a grip button carries the keyboard path (Space to pick up,
6
+ * arrows to move) so it doesn't collide with the item's own Space/click.
7
+ */
8
+ export interface AssetSortable {
9
+ setNodeRef: (node: HTMLElement | null) => void;
10
+ isDragging: boolean;
11
+ style: CSSProperties;
12
+ /** Pointer activation, for the item itself. */
13
+ listeners: DraggableSyntheticListeners;
14
+ handle: Partial<DraggableAttributes> & {
15
+ ref: (node: HTMLElement | null) => void;
16
+ onKeyDown?: (event: KeyboardEvent) => void;
17
+ };
18
+ }
19
+ type UseAssetSortable = (assetId: number) => AssetSortable | null;
20
+ /**
21
+ * Holds the hook that makes an asset sortable, rather than a value: the hook
22
+ * needs each item's id. A given subtree always gets the same hook, so calling
23
+ * it from `useAssetSortable` keeps the rules of hooks.
24
+ */
25
+ export declare const AssetSortableContext: import("react").Context<UseAssetSortable>;
26
+ export declare const useAssetSortable: (assetId: number) => AssetSortable | null;
27
+ /** Marks the reorder grip, so the item can tell its keys apart. */
28
+ export declare const REORDER_HANDLE_PROPS: {
29
+ "data-reorder-handle": string;
30
+ };
31
+ /**
32
+ * Keys pressed on the grip, including the arrows and the drop key mid-drag,
33
+ * belong to reordering. The item must not also read them as its own
34
+ * Enter/Space.
35
+ */
36
+ export declare const isFromReorderHandle: (event: SyntheticEvent) => boolean;
37
+ export {};
@@ -3,5 +3,10 @@ export declare const toFolderDraggableId: (id: number) => `folder:${number}`;
3
3
  export declare const toFolderTargetId: (id: number) => `folder-target:${number}`;
4
4
  export declare const parseFolderTargetId: (dndId: string | number) => number | null;
5
5
  export declare const toFolderTreeTargetId: (id: number) => `folder-tree-target:${number}`;
6
+ /**
7
+ * The "N parent folders" row in the sidebar. Only there so hovering it during a
8
+ * drag opens it; no parser recognises it, so a drop on it moves nothing.
9
+ */
10
+ export declare const toFolderTreeSummaryId: (rootId: number) => `folder-tree-summary:${number}`;
6
11
  export declare const HOME_TREE_TARGET_ID: "folder-tree-target:home";
7
12
  export declare const parseFolderTreeTargetId: (dndId: string | number) => number | "root" | null;
@@ -1,3 +1,4 @@
1
+ import { type DraggableAttributes } from '@dnd-kit/core';
1
2
  import type { DragFileData, DragFolderData } from '../../../../types/dnd';
2
3
  export declare const useFileDraggable: (asset: {
3
4
  id: number;
@@ -6,11 +7,31 @@ export declare const useFileDraggable: (asset: {
6
7
  id?: number;
7
8
  } | null;
8
9
  }) => {
10
+ setNodeRef: (node: HTMLElement | null) => void;
11
+ isDragging: boolean;
12
+ listeners: import("@dnd-kit/core").DraggableSyntheticListeners;
13
+ dragStyle: import("react").CSSProperties;
14
+ dragHandle: Partial<DraggableAttributes> & {
15
+ ref: (node: HTMLElement | null) => void;
16
+ onKeyDown?: (event: import("react").KeyboardEvent) => void;
17
+ };
18
+ dragData: DragFileData;
19
+ active: import("@dnd-kit/core").Active | null;
20
+ activatorEvent: Event | null;
21
+ activeNodeRect: import("@dnd-kit/core").ClientRect | null;
22
+ attributes: DraggableAttributes;
23
+ node: import("react").MutableRefObject<HTMLElement | null>;
24
+ over: import("@dnd-kit/core").Over | null;
25
+ setActivatorNodeRef: (element: HTMLElement | null) => void;
26
+ transform: import("@dnd-kit/utilities").Transform | null;
27
+ } | {
28
+ dragStyle: undefined;
29
+ dragHandle: undefined;
9
30
  dragData: DragFileData;
10
31
  active: import("@dnd-kit/core").Active | null;
11
32
  activatorEvent: Event | null;
12
33
  activeNodeRect: import("@dnd-kit/core").ClientRect | null;
13
- attributes: import("@dnd-kit/core").DraggableAttributes;
34
+ attributes: DraggableAttributes;
14
35
  isDragging: boolean;
15
36
  listeners: import("@dnd-kit/core/dist/hooks/utilities").SyntheticListenerMap | undefined;
16
37
  node: import("react").MutableRefObject<HTMLElement | null>;
@@ -31,7 +52,7 @@ export declare const useFolderDraggableDroppable: (folder: {
31
52
  active: import("@dnd-kit/core").Active | null;
32
53
  activatorEvent: Event | null;
33
54
  activeNodeRect: import("@dnd-kit/core").ClientRect | null;
34
- attributes: import("@dnd-kit/core").DraggableAttributes;
55
+ attributes: DraggableAttributes;
35
56
  isDragging: boolean;
36
57
  listeners: import("@dnd-kit/core/dist/hooks/utilities").SyntheticListenerMap | undefined;
37
58
  node: import("react").MutableRefObject<HTMLElement | null>;
@@ -1,4 +1,5 @@
1
1
  import { type ReactNode } from 'react';
2
+ export declare const getIndentRem: (level: number) => number;
2
3
  interface FolderTreeProps {
3
4
  currentFolderId: number | null;
4
5
  /**
@@ -0,0 +1,21 @@
1
+ import type { FolderNode } from '../../../../../../shared/contracts/folders';
2
+ /**
3
+ * Depth (0 = a root folder) from which the selected folder's ancestors fold into
4
+ * a single "N parent folders" row in the sidebar. Picked so the deepest visible
5
+ * row still has room for a readable name in the 23.2rem rail.
6
+ */
7
+ export declare const COLLAPSE_FROM_DEPTH = 4;
8
+ export interface CollapsedBranch {
9
+ root: FolderNode;
10
+ /** Between `root` and `parent`, shallowest first. */
11
+ hidden: FolderNode[];
12
+ /** The selected folder's parent. */
13
+ parent: FolderNode;
14
+ }
15
+ /**
16
+ * How the selected folder's branch folds once it is deep enough: the root stays,
17
+ * everything between the root and the parent is hidden, and the parent stays so
18
+ * the selected folder is shown alongside its siblings. `null` means the branch
19
+ * renders in full.
20
+ */
21
+ export declare const getCollapsedBranch: (nodes: FolderNode[], selectedId: number | null) => CollapsedBranch | null;
@@ -0,0 +1,8 @@
1
+ interface ViewToggleProps {
2
+ view: number;
3
+ onChange: (view: number) => void;
4
+ /** Drops the visible labels at every width, for narrow hosts like a modal. */
5
+ iconsOnly?: boolean;
6
+ }
7
+ export declare const ViewToggle: ({ view, onChange, iconsOnly }: ViewToggleProps) => import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -12,7 +12,21 @@ import { type ItemKey } from '../utils/selection';
12
12
  * ordered key array from the caller (the view owns the rendered order), keeping
13
13
  * the context data-source-agnostic.
14
14
  */
15
+ /**
16
+ * How an item takes part in selection: `enabled` shows a working checkbox,
17
+ * `disabled` shows it greyed out (the item cannot be chosen here), `hidden`
18
+ * shows none (the item is not something this selection is about).
19
+ */
20
+ export type Selectability = 'enabled' | 'disabled' | 'hidden';
15
21
  export interface AssetSelection {
22
+ /**
23
+ * Whether selection is on at all. Views show the checkbox column and
24
+ * select-all only when it is.
25
+ */
26
+ isEnabled: boolean;
27
+ /** Whether the table offers a select-all header (not on a single-value picker). */
28
+ canSelectAll: boolean;
29
+ getSelectability: (key: ItemKey) => Selectability;
16
30
  /** Every selected item key (assets and folders), render-order agnostic. */
17
31
  selectedKeys: Set<ItemKey>;
18
32
  /** Selected asset ids, derived from {@link selectedKeys}. */
@@ -34,9 +48,21 @@ export interface AssetSelection {
34
48
  selectOnly: (key: ItemKey) => void;
35
49
  /** Row-level "..." menu — drops one key when its item leaves the list (move, delete). */
36
50
  deselect: (key: ItemKey) => void;
51
+ /**
52
+ * Header checkbox, when everything it covers is selected. The host decides how
53
+ * far that reaches: the Media Library page clears the whole selection, because
54
+ * it can still hold keys that left the list without being deselected (moved or
55
+ * deleted from the details drawer). The picker drops only these keys.
56
+ */
57
+ deselectAll: (orderedKeys: ItemKey[]) => void;
37
58
  /** Close button / folder navigation / list-identity changes. */
38
59
  clear: () => void;
39
60
  }
61
+ /**
62
+ * Exported so a host with its own selection rules (the Content Manager asset
63
+ * picker) can feed the same views a different implementation.
64
+ */
65
+ export declare const AssetSelectionContext: import("react").Context<AssetSelection | null>;
40
66
  interface AssetSelectionProviderProps {
41
67
  children: ReactNode;
42
68
  /**
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The list behind the Media Library page and the Content Manager asset picker:
3
+ * the current folder, search, sort and filters, and the folders and assets they
4
+ * select. Where that query state lives (URL or memory) is decided by
5
+ * `ListQueryStateProvider`, not here.
6
+ */
7
+ export declare const useAssetsList: () => {
8
+ listSort: import("./useListSort").ListSort;
9
+ listFilters: import("./useListFilters").ListFilters;
10
+ assets: import("../../../../../shared/contracts/files").File[];
11
+ subscribers: import("react").FunctionComponentElement<{
12
+ children?: import("react").ReactNode | undefined;
13
+ }> | null;
14
+ pagination: import("../../../../../shared/contracts/files").Pagination | undefined;
15
+ isLoadingAssets: boolean;
16
+ isFetchingMore: boolean;
17
+ hasNextPage: boolean;
18
+ fetchNextPage: () => void;
19
+ assetsError: import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError | undefined;
20
+ folders: import("../../../../../shared/contracts/folders").Folder[];
21
+ isLoadingFolders: boolean;
22
+ searchQuery: string;
23
+ isSearching: boolean;
24
+ setSearchQuery: (value: string) => void;
25
+ clearSearch: () => void;
26
+ currentFolderId: number | null;
27
+ navigateToFolder: (folder: import("../../../../../shared/contracts/folders").Folder) => void;
28
+ navigateToRoot: () => void;
29
+ navigateToFolderId: (folderId: number | null) => void;
30
+ };
@@ -0,0 +1,27 @@
1
+ import { type Dispatch, type ReactNode, type SetStateAction } from 'react';
2
+ interface ListQueryState {
3
+ search: string;
4
+ setSearch: Dispatch<SetStateAction<string>>;
5
+ }
6
+ interface ListQueryStateProviderProps {
7
+ children: ReactNode;
8
+ }
9
+ /**
10
+ * Keeps the list query (folder, search, filters, sort) in memory instead of the
11
+ * URL, for surfaces hosted inside another page — the Content Manager asset
12
+ * picker would otherwise overwrite the entry's own URL. Without this provider,
13
+ * `useListQueryParams` falls back to the URL, which is what the Media Library
14
+ * page relies on.
15
+ */
16
+ export declare const ListQueryStateProvider: ({ children }: ListQueryStateProviderProps) => import("react").FunctionComponentElement<import("react").ProviderProps<ListQueryState | null>>;
17
+ /**
18
+ * Drop-in for `useQueryParams` used by the list hooks. The in-memory store keeps
19
+ * a serialized search string and goes through the same `qs` round trip as the
20
+ * URL, so callers that pre-encode values (`withEncodedUserParams`,
21
+ * `encodeSearchQuery`) read back exactly what they would from the URL.
22
+ */
23
+ export declare const useListQueryParams: <TQuery extends object>() => readonly [{
24
+ readonly query: TQuery;
25
+ readonly rawQuery: string;
26
+ }, (nextParams: TQuery, method?: "push" | "remove", replace?: boolean) => void];
27
+ export {};
@@ -0,0 +1,29 @@
1
+ import { type ReactNode } from 'react';
2
+ interface ListSettings {
3
+ /**
4
+ * Management affordances on list items: the right-click menu and the bulk
5
+ * actions bar. A picker hosted elsewhere (the Content Manager asset picker)
6
+ * turns them off — choosing an asset is not the place to delete or move it.
7
+ */
8
+ showItemActions: boolean;
9
+ /**
10
+ * "Folders (n)" / "Assets (n)" headings above each grid section, with a
11
+ * divider between them. The page carries the count in its own header instead.
12
+ */
13
+ showSectionHeadings: boolean;
14
+ /** Narrowest a grid tile may get before the grid drops a column. */
15
+ gridMinTileWidth: string;
16
+ /**
17
+ * A "Select all" checkbox beside the grid's "Assets (n)" heading, the grid's
18
+ * counterpart of the table's header checkbox. The page reaches select-all
19
+ * from its bulk actions bar instead.
20
+ */
21
+ showGridSelectAll: boolean;
22
+ }
23
+ interface ListSettingsProviderProps extends Partial<ListSettings> {
24
+ children: ReactNode;
25
+ }
26
+ export declare const ListSettingsProvider: ({ children, showItemActions, showSectionHeadings, gridMinTileWidth, showGridSelectAll, }: ListSettingsProviderProps) => import("react").FunctionComponentElement<import("react").ProviderProps<ListSettings>>;
27
+ /** Without a provider, returns the Media Library page's settings. */
28
+ export declare const useListSettings: () => ListSettings;
29
+ export {};