@payloadcms/ui 4.0.0-internal.a7ca468 → 4.0.0-internal.af6aad0

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 (558) hide show
  1. package/dist/elements/AddNewRelation/index.css +0 -4
  2. package/dist/elements/AddNewRelation/index.js +2 -2
  3. package/dist/elements/AddNewRelation/index.js.map +1 -1
  4. package/dist/elements/AppHeader/index.css +5 -0
  5. package/dist/elements/AppHeader/index.d.ts +1 -8
  6. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  7. package/dist/elements/AppHeader/index.js +4 -13
  8. package/dist/elements/AppHeader/index.js.map +1 -1
  9. package/dist/elements/ArrayAction/index.d.ts +1 -0
  10. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  11. package/dist/elements/ArrayAction/index.js +45 -32
  12. package/dist/elements/ArrayAction/index.js.map +1 -1
  13. package/dist/elements/BulkUpload/AddFilesView/index.css +10 -4
  14. package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
  15. package/dist/elements/BulkUpload/AddFilesView/index.js +71 -51
  16. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  17. package/dist/elements/Button/index.css +25 -2
  18. package/dist/elements/Button/index.d.ts.map +1 -1
  19. package/dist/elements/Button/index.js +2 -0
  20. package/dist/elements/Button/index.js.map +1 -1
  21. package/dist/elements/Button/types.d.ts +1 -1
  22. package/dist/elements/Button/types.d.ts.map +1 -1
  23. package/dist/elements/Button/types.js.map +1 -1
  24. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts +10 -0
  25. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
  26. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +65 -3
  27. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
  28. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js +345 -1
  29. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js.map +1 -1
  30. package/dist/elements/DefaultListViewTabs/index.css +1 -0
  31. package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -1
  32. package/dist/elements/DefaultListViewTabs/index.js +84 -62
  33. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  34. package/dist/elements/DocumentDrawer/types.d.ts +1 -1
  35. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  36. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  37. package/dist/elements/Drawer/index.css +10 -4
  38. package/dist/elements/Drawer/types.d.ts +2 -2
  39. package/dist/elements/Drawer/types.d.ts.map +1 -1
  40. package/dist/elements/Drawer/types.js.map +1 -1
  41. package/dist/elements/Dropzone/index.css +10 -4
  42. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +3 -2
  43. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  44. package/dist/elements/FileManager/index.css +0 -30
  45. package/dist/elements/FileManager/index.d.ts.map +1 -1
  46. package/dist/elements/FileManager/index.js +379 -287
  47. package/dist/elements/FileManager/index.js.map +1 -1
  48. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.css +22 -4
  49. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.d.ts.map +1 -1
  50. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js +68 -49
  51. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -1
  52. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +100 -15
  53. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.d.ts.map +1 -1
  54. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js +97 -137
  55. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -1
  56. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts +1 -1
  57. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
  58. package/dist/elements/Hierarchy/ColumnBrowser/index.js +51 -23
  59. package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -1
  60. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts +26 -3
  61. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +1 -1
  62. package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +1 -1
  63. package/dist/elements/Hierarchy/CreateNewButton/index.css +9 -0
  64. package/dist/elements/Hierarchy/CreateNewButton/index.d.ts +9 -0
  65. package/dist/elements/Hierarchy/CreateNewButton/index.d.ts.map +1 -0
  66. package/dist/elements/Hierarchy/CreateNewButton/index.js +111 -0
  67. package/dist/elements/Hierarchy/CreateNewButton/index.js.map +1 -0
  68. package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts.map +1 -1
  69. package/dist/elements/Hierarchy/DocHeaderButton/index.js +6 -1
  70. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
  71. package/dist/elements/Hierarchy/DocHeaderButton/index.server.js +1 -3
  72. package/dist/elements/Hierarchy/DocHeaderButton/index.server.js.map +1 -1
  73. package/dist/elements/Hierarchy/Field/index.client.d.ts +5 -0
  74. package/dist/elements/Hierarchy/Field/index.client.d.ts.map +1 -1
  75. package/dist/elements/Hierarchy/Field/index.client.js +120 -95
  76. package/dist/elements/Hierarchy/Field/index.client.js.map +1 -1
  77. package/dist/elements/Hierarchy/Field/index.css +3 -34
  78. package/dist/elements/Hierarchy/Modal/Footer/index.css +45 -0
  79. package/dist/elements/Hierarchy/Modal/Footer/index.d.ts +28 -0
  80. package/dist/elements/Hierarchy/Modal/Footer/index.d.ts.map +1 -0
  81. package/dist/elements/Hierarchy/Modal/Footer/index.js +166 -0
  82. package/dist/elements/Hierarchy/Modal/Footer/index.js.map +1 -0
  83. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts +18 -4
  84. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -1
  85. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js +88 -24
  86. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -1
  87. package/dist/elements/Hierarchy/Modal/index.css +4 -53
  88. package/dist/elements/Hierarchy/Modal/index.d.ts +5 -2
  89. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
  90. package/dist/elements/Hierarchy/Modal/index.js +136 -99
  91. package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
  92. package/dist/elements/Hierarchy/Modal/types.d.ts +15 -0
  93. package/dist/elements/Hierarchy/Modal/types.d.ts.map +1 -1
  94. package/dist/elements/Hierarchy/Modal/types.js.map +1 -1
  95. package/dist/elements/Hierarchy/MoveMany/index.d.ts +7 -3
  96. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  97. package/dist/elements/Hierarchy/MoveMany/index.js +43 -170
  98. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  99. package/dist/elements/Hierarchy/Search/index.css +2 -9
  100. package/dist/elements/Hierarchy/Search/index.d.ts.map +1 -1
  101. package/dist/elements/Hierarchy/Search/index.js +6 -73
  102. package/dist/elements/Hierarchy/Search/index.js.map +1 -1
  103. package/dist/elements/Hierarchy/Search/types.d.ts +2 -6
  104. package/dist/elements/Hierarchy/Search/types.d.ts.map +1 -1
  105. package/dist/elements/Hierarchy/Search/types.js.map +1 -1
  106. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts +0 -4
  107. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
  108. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +101 -186
  109. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  110. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -1
  111. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +1 -21
  112. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -1
  113. package/dist/elements/Hierarchy/Tree/LoadMore/index.css +3 -3
  114. package/dist/elements/Hierarchy/Tree/TreeNode/index.css +59 -29
  115. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts +1 -1
  116. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
  117. package/dist/elements/Hierarchy/Tree/TreeNode/index.js +54 -10
  118. package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -1
  119. package/dist/elements/Hierarchy/Tree/index.css +8 -9
  120. package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -1
  121. package/dist/elements/Hierarchy/Tree/index.js +29 -47
  122. package/dist/elements/Hierarchy/Tree/index.js.map +1 -1
  123. package/dist/elements/Hierarchy/Tree/types.d.ts +9 -1
  124. package/dist/elements/Hierarchy/Tree/types.d.ts.map +1 -1
  125. package/dist/elements/Hierarchy/Tree/types.js.map +1 -1
  126. package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -1
  127. package/dist/elements/Hierarchy/Tree/useChildren.js +11 -1
  128. package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -1
  129. package/dist/elements/Hierarchy/getFolderHierarchySlug.d.ts +22 -0
  130. package/dist/elements/Hierarchy/getFolderHierarchySlug.d.ts.map +1 -0
  131. package/dist/elements/Hierarchy/getFolderHierarchySlug.js +17 -0
  132. package/dist/elements/Hierarchy/getFolderHierarchySlug.js.map +1 -0
  133. package/dist/elements/Hierarchy/move/moveDocuments.d.ts +34 -0
  134. package/dist/elements/Hierarchy/move/moveDocuments.d.ts.map +1 -0
  135. package/dist/elements/Hierarchy/move/moveDocuments.js +94 -0
  136. package/dist/elements/Hierarchy/move/moveDocuments.js.map +1 -0
  137. package/dist/elements/IDLabel/index.css +6 -0
  138. package/dist/elements/IDLabel/index.d.ts +1 -1
  139. package/dist/elements/IDLabel/index.d.ts.map +1 -1
  140. package/dist/elements/IDLabel/index.js +16 -21
  141. package/dist/elements/IDLabel/index.js.map +1 -1
  142. package/dist/elements/ListControls/index.d.ts.map +1 -1
  143. package/dist/elements/ListControls/index.js +3 -2
  144. package/dist/elements/ListControls/index.js.map +1 -1
  145. package/dist/elements/ListControls/types.d.ts +4 -0
  146. package/dist/elements/ListControls/types.d.ts.map +1 -1
  147. package/dist/elements/ListControls/types.js.map +1 -1
  148. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts +1 -7
  149. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
  150. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +26 -32
  151. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  152. package/dist/elements/Nav/NavSidebarToggle/index.js +1 -1
  153. package/dist/elements/Nav/NavSidebarToggle/index.js.map +1 -1
  154. package/dist/elements/Nav/NavWrapper/index.d.ts +1 -0
  155. package/dist/elements/Nav/NavWrapper/index.d.ts.map +1 -1
  156. package/dist/elements/Nav/NavWrapper/index.js +12 -18
  157. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  158. package/dist/elements/Nav/SidebarTabs/index.css +1 -2
  159. package/dist/elements/Nav/context.d.ts +0 -1
  160. package/dist/elements/Nav/context.d.ts.map +1 -1
  161. package/dist/elements/Nav/context.js +92 -67
  162. package/dist/elements/Nav/context.js.map +1 -1
  163. package/dist/elements/Nav/index.css +47 -42
  164. package/dist/elements/Nav/index.d.ts +4 -0
  165. package/dist/elements/Nav/index.d.ts.map +1 -1
  166. package/dist/elements/Nav/index.js +16 -1
  167. package/dist/elements/Nav/index.js.map +1 -1
  168. package/dist/elements/NavGroup/index.css +29 -15
  169. package/dist/elements/Popup/PopupButtonList/index.css +33 -17
  170. package/dist/elements/Popup/index.css +6 -0
  171. package/dist/elements/Popup/index.d.ts +10 -0
  172. package/dist/elements/Popup/index.d.ts.map +1 -1
  173. package/dist/elements/Popup/index.js +13 -6
  174. package/dist/elements/Popup/index.js.map +1 -1
  175. package/dist/elements/PublishButton/ScheduleDrawer/index.js +1 -1
  176. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  177. package/dist/elements/QueryPresets/QueryPresetBar/index.js +1 -3
  178. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  179. package/dist/elements/ReactSelect/types.d.ts +5 -0
  180. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  181. package/dist/elements/ReactSelect/types.js.map +1 -1
  182. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  183. package/dist/elements/RelationshipTable/index.js +5 -2
  184. package/dist/elements/RelationshipTable/index.js.map +1 -1
  185. package/dist/elements/SegmentedControl/index.css +58 -0
  186. package/dist/elements/SegmentedControl/index.d.ts +19 -0
  187. package/dist/elements/SegmentedControl/index.d.ts.map +1 -0
  188. package/dist/elements/SegmentedControl/index.js +104 -0
  189. package/dist/elements/SegmentedControl/index.js.map +1 -0
  190. package/dist/elements/SelectAll/index.d.ts.map +1 -1
  191. package/dist/elements/SelectAll/index.js +1 -2
  192. package/dist/elements/SelectAll/index.js.map +1 -1
  193. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  194. package/dist/elements/SelectRow/index.js +1 -2
  195. package/dist/elements/SelectRow/index.js.map +1 -1
  196. package/dist/elements/SidebarRow/index.css +1 -5
  197. package/dist/elements/SidebarToggle/index.css +3 -1
  198. package/dist/elements/SortHeader/index.d.ts.map +1 -1
  199. package/dist/elements/SortHeader/index.js +29 -26
  200. package/dist/elements/SortHeader/index.js.map +1 -1
  201. package/dist/elements/StepNav/DropTarget/index.css +20 -0
  202. package/dist/elements/StepNav/DropTarget/index.d.ts +16 -0
  203. package/dist/elements/StepNav/DropTarget/index.d.ts.map +1 -0
  204. package/dist/elements/StepNav/DropTarget/index.js +71 -0
  205. package/dist/elements/StepNav/DropTarget/index.js.map +1 -0
  206. package/dist/elements/StepNav/index.css +64 -14
  207. package/dist/elements/StepNav/index.d.ts.map +1 -1
  208. package/dist/elements/StepNav/index.js +147 -69
  209. package/dist/elements/StepNav/index.js.map +1 -1
  210. package/dist/elements/StepNav/types.d.ts +6 -0
  211. package/dist/elements/StepNav/types.d.ts.map +1 -1
  212. package/dist/elements/StepNav/types.js.map +1 -1
  213. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.css +5 -7
  214. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -1
  215. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +14 -3
  216. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
  217. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  218. package/dist/elements/Table/DefaultCell/index.js +3 -11
  219. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  220. package/dist/elements/Upload/UploadFromURLModal/index.d.ts +1 -1
  221. package/dist/elements/Upload/UploadFromURLModal/index.d.ts.map +1 -1
  222. package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -1
  223. package/dist/elements/Upload/index.css +39 -32
  224. package/dist/elements/Upload/index.d.ts.map +1 -1
  225. package/dist/elements/Upload/index.js +37 -99
  226. package/dist/elements/Upload/index.js.map +1 -1
  227. package/dist/elements/Upload/usePasteFromClipboard.d.ts +14 -0
  228. package/dist/elements/Upload/usePasteFromClipboard.d.ts.map +1 -0
  229. package/dist/elements/Upload/usePasteFromClipboard.js +93 -0
  230. package/dist/elements/Upload/usePasteFromClipboard.js.map +1 -0
  231. package/dist/elements/Upload/useUploadFromUrl.d.ts +20 -0
  232. package/dist/elements/Upload/useUploadFromUrl.d.ts.map +1 -0
  233. package/dist/elements/Upload/useUploadFromUrl.js +201 -0
  234. package/dist/elements/Upload/useUploadFromUrl.js.map +1 -0
  235. package/dist/elements/UploadDropzoneContent/index.css +31 -0
  236. package/dist/elements/UploadDropzoneContent/index.d.ts +17 -0
  237. package/dist/elements/UploadDropzoneContent/index.d.ts.map +1 -0
  238. package/dist/elements/UploadDropzoneContent/index.js +62 -0
  239. package/dist/elements/UploadDropzoneContent/index.js.map +1 -0
  240. package/dist/elements/UserMenu/HoverSubmenuGroup.d.ts +18 -0
  241. package/dist/elements/UserMenu/HoverSubmenuGroup.d.ts.map +1 -0
  242. package/dist/elements/UserMenu/HoverSubmenuGroup.js +38 -0
  243. package/dist/elements/UserMenu/HoverSubmenuGroup.js.map +1 -0
  244. package/dist/elements/UserMenu/LanguageMenu/index.d.ts.map +1 -1
  245. package/dist/elements/UserMenu/LanguageMenu/index.js +83 -39
  246. package/dist/elements/UserMenu/LanguageMenu/index.js.map +1 -1
  247. package/dist/elements/UserMenu/SettingsMenu/index.d.ts.map +1 -1
  248. package/dist/elements/UserMenu/SettingsMenu/index.js +57 -21
  249. package/dist/elements/UserMenu/SettingsMenu/index.js.map +1 -1
  250. package/dist/elements/UserMenu/ThemeMenu/index.d.ts.map +1 -1
  251. package/dist/elements/UserMenu/ThemeMenu/index.js +83 -39
  252. package/dist/elements/UserMenu/ThemeMenu/index.js.map +1 -1
  253. package/dist/elements/UserMenu/index.css +32 -2
  254. package/dist/elements/UserMenu/index.d.ts +1 -0
  255. package/dist/elements/UserMenu/index.d.ts.map +1 -1
  256. package/dist/elements/UserMenu/index.js +77 -51
  257. package/dist/elements/UserMenu/index.js.map +1 -1
  258. package/dist/elements/UserMenu/useHoverSubmenu.d.ts +21 -0
  259. package/dist/elements/UserMenu/useHoverSubmenu.d.ts.map +1 -0
  260. package/dist/elements/UserMenu/useHoverSubmenu.js +260 -0
  261. package/dist/elements/UserMenu/useHoverSubmenu.js.map +1 -0
  262. package/dist/elements/ViewModeToggle/index.d.ts +8 -0
  263. package/dist/elements/ViewModeToggle/index.d.ts.map +1 -0
  264. package/dist/elements/ViewModeToggle/index.js +29 -0
  265. package/dist/elements/ViewModeToggle/index.js.map +1 -0
  266. package/dist/elements/WhereBuilder/conditionValue.d.ts +32 -0
  267. package/dist/elements/WhereBuilder/conditionValue.d.ts.map +1 -0
  268. package/dist/elements/WhereBuilder/conditionValue.js +32 -0
  269. package/dist/elements/WhereBuilder/conditionValue.js.map +1 -0
  270. package/dist/elements/WhereBuilder/conditionValue.spec.js +65 -0
  271. package/dist/elements/WhereBuilder/conditionValue.spec.js.map +1 -0
  272. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  273. package/dist/elements/WhereBuilder/index.js +15 -4
  274. package/dist/elements/WhereBuilder/index.js.map +1 -1
  275. package/dist/exports/client/index.d.ts +6 -1
  276. package/dist/exports/client/index.d.ts.map +1 -1
  277. package/dist/exports/client/index.js +1 -1
  278. package/dist/exports/client/index.js.map +3 -3
  279. package/dist/fields/Array/ArrayRow.d.ts +1 -0
  280. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  281. package/dist/fields/Array/ArrayRow.js +2 -0
  282. package/dist/fields/Array/ArrayRow.js.map +1 -1
  283. package/dist/fields/Array/index.d.ts.map +1 -1
  284. package/dist/fields/Array/index.js +38 -10
  285. package/dist/fields/Array/index.js.map +1 -1
  286. package/dist/fields/Blocks/BlockRow.d.ts +1 -0
  287. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  288. package/dist/fields/Blocks/BlockRow.js +2 -0
  289. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  290. package/dist/fields/Blocks/RowActions.d.ts +1 -0
  291. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  292. package/dist/fields/Blocks/RowActions.js +22 -19
  293. package/dist/fields/Blocks/RowActions.js.map +1 -1
  294. package/dist/fields/Blocks/index.d.ts.map +1 -1
  295. package/dist/fields/Blocks/index.js +35 -7
  296. package/dist/fields/Blocks/index.js.map +1 -1
  297. package/dist/fields/Checkbox/Input.d.ts +2 -2
  298. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  299. package/dist/fields/Checkbox/Input.js +134 -152
  300. package/dist/fields/Checkbox/Input.js.map +1 -1
  301. package/dist/fields/Checkbox/index.css +168 -155
  302. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  303. package/dist/fields/Relationship/Input.js +24 -6
  304. package/dist/fields/Relationship/Input.js.map +1 -1
  305. package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
  306. package/dist/fields/Relationship/optionsReducer.js +2 -0
  307. package/dist/fields/Relationship/optionsReducer.js.map +1 -1
  308. package/dist/fields/Relationship/types.d.ts +24 -0
  309. package/dist/fields/Relationship/types.d.ts.map +1 -1
  310. package/dist/fields/Relationship/types.js.map +1 -1
  311. package/dist/fields/Upload/Input.d.ts.map +1 -1
  312. package/dist/fields/Upload/Input.js +44 -16
  313. package/dist/fields/Upload/Input.js.map +1 -1
  314. package/dist/fields/Upload/Input.spec.js +241 -0
  315. package/dist/fields/Upload/Input.spec.js.map +1 -0
  316. package/dist/forms/Form/index.d.ts.map +1 -1
  317. package/dist/forms/Form/index.js +4 -1
  318. package/dist/forms/Form/index.js.map +1 -1
  319. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  320. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -0
  321. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  322. package/dist/icons/CollapseLayers/index.css +5 -0
  323. package/dist/icons/CollapseLayers/index.d.ts +7 -0
  324. package/dist/icons/CollapseLayers/index.d.ts.map +1 -0
  325. package/dist/icons/CollapseLayers/index.js +23 -0
  326. package/dist/icons/CollapseLayers/index.js.map +1 -0
  327. package/dist/icons/Edit/index.d.ts +0 -1
  328. package/dist/icons/Edit/index.d.ts.map +1 -1
  329. package/dist/icons/Edit/index.js +4 -4
  330. package/dist/icons/Edit/index.js.map +1 -1
  331. package/dist/icons/Table/index.css +5 -0
  332. package/dist/icons/Table/index.d.ts +7 -0
  333. package/dist/icons/Table/index.d.ts.map +1 -0
  334. package/dist/icons/Table/index.js +25 -0
  335. package/dist/icons/Table/index.js.map +1 -0
  336. package/dist/providers/Actions/index.d.ts +1 -0
  337. package/dist/providers/Actions/index.d.ts.map +1 -1
  338. package/dist/providers/Actions/index.js +43 -11
  339. package/dist/providers/Actions/index.js.map +1 -1
  340. package/dist/providers/Auth/AuthSessionDebug/index.css +48 -0
  341. package/dist/providers/Auth/AuthSessionDebug/index.d.ts +13 -0
  342. package/dist/providers/Auth/AuthSessionDebug/index.d.ts.map +1 -0
  343. package/dist/providers/Auth/AuthSessionDebug/index.js +93 -0
  344. package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -0
  345. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts +21 -0
  346. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts.map +1 -0
  347. package/dist/providers/Auth/AuthSessionDebug/utilities.js +53 -0
  348. package/dist/providers/Auth/AuthSessionDebug/utilities.js.map +1 -0
  349. package/dist/providers/Auth/authSessionRequests.d.ts +27 -0
  350. package/dist/providers/Auth/authSessionRequests.d.ts.map +1 -0
  351. package/dist/providers/Auth/authSessionRequests.js +119 -0
  352. package/dist/providers/Auth/authSessionRequests.js.map +1 -0
  353. package/dist/providers/Auth/authSessionRequests.spec.js +121 -0
  354. package/dist/providers/Auth/authSessionRequests.spec.js.map +1 -0
  355. package/dist/providers/Auth/index.d.ts +2 -56
  356. package/dist/providers/Auth/index.d.ts.map +1 -1
  357. package/dist/providers/Auth/index.js +283 -135
  358. package/dist/providers/Auth/index.js.map +1 -1
  359. package/dist/providers/Auth/sessionActivity.d.ts +23 -0
  360. package/dist/providers/Auth/sessionActivity.d.ts.map +1 -0
  361. package/dist/providers/Auth/sessionActivity.js +49 -0
  362. package/dist/providers/Auth/sessionActivity.js.map +1 -0
  363. package/dist/providers/Auth/sessionActivity.spec.js +44 -0
  364. package/dist/providers/Auth/sessionActivity.spec.js.map +1 -0
  365. package/dist/providers/Auth/sessionTiming.d.ts +11 -0
  366. package/dist/providers/Auth/sessionTiming.d.ts.map +1 -0
  367. package/dist/providers/Auth/sessionTiming.js +18 -0
  368. package/dist/providers/Auth/sessionTiming.js.map +1 -0
  369. package/dist/providers/Auth/tabSessionSync/index.d.ts +17 -0
  370. package/dist/providers/Auth/tabSessionSync/index.d.ts.map +1 -0
  371. package/dist/providers/Auth/tabSessionSync/index.js +263 -0
  372. package/dist/providers/Auth/tabSessionSync/index.js.map +1 -0
  373. package/dist/providers/Auth/tabSessionSync/index.spec.js +463 -0
  374. package/dist/providers/Auth/tabSessionSync/index.spec.js.map +1 -0
  375. package/dist/providers/Auth/tabSessionSync/types.d.ts +107 -0
  376. package/dist/providers/Auth/tabSessionSync/types.d.ts.map +1 -0
  377. package/dist/providers/Auth/tabSessionSync/types.js +6 -0
  378. package/dist/providers/Auth/tabSessionSync/types.js.map +1 -0
  379. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts +11 -0
  380. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts.map +1 -0
  381. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js +90 -0
  382. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -0
  383. package/dist/providers/Auth/tabSessionSync/utilities.d.ts +26 -0
  384. package/dist/providers/Auth/tabSessionSync/utilities.d.ts.map +1 -0
  385. package/dist/providers/Auth/tabSessionSync/utilities.js +159 -0
  386. package/dist/providers/Auth/tabSessionSync/utilities.js.map +1 -0
  387. package/dist/providers/Auth/types.d.ts +65 -0
  388. package/dist/providers/Auth/types.d.ts.map +1 -0
  389. package/dist/providers/Auth/types.js +2 -0
  390. package/dist/providers/Auth/types.js.map +1 -0
  391. package/dist/providers/Auth/useAuthSessionTimers.d.ts +26 -0
  392. package/dist/providers/Auth/useAuthSessionTimers.d.ts.map +1 -0
  393. package/dist/providers/Auth/useAuthSessionTimers.js +203 -0
  394. package/dist/providers/Auth/useAuthSessionTimers.js.map +1 -0
  395. package/dist/providers/Auth/useAuthSessionTimers.spec.js +311 -0
  396. package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +1 -0
  397. package/dist/providers/FormErrorHandler/index.d.ts +5 -1
  398. package/dist/providers/FormErrorHandler/index.d.ts.map +1 -1
  399. package/dist/providers/FormErrorHandler/index.js.map +1 -1
  400. package/dist/providers/Hierarchy/index.d.ts.map +1 -1
  401. package/dist/providers/Hierarchy/index.js +53 -24
  402. package/dist/providers/Hierarchy/index.js.map +1 -1
  403. package/dist/providers/Hierarchy/types.d.ts +2 -0
  404. package/dist/providers/Hierarchy/types.d.ts.map +1 -1
  405. package/dist/providers/Hierarchy/types.js.map +1 -1
  406. package/dist/providers/HierarchyDnd/index.css +51 -0
  407. package/dist/providers/HierarchyDnd/index.d.ts +21 -0
  408. package/dist/providers/HierarchyDnd/index.d.ts.map +1 -0
  409. package/dist/providers/HierarchyDnd/index.js +163 -0
  410. package/dist/providers/HierarchyDnd/index.js.map +1 -0
  411. package/dist/providers/HierarchyDnd/types.d.ts +56 -0
  412. package/dist/providers/HierarchyDnd/types.d.ts.map +1 -0
  413. package/dist/providers/HierarchyDnd/types.js +21 -0
  414. package/dist/providers/HierarchyDnd/types.js.map +1 -0
  415. package/dist/providers/Locale/index.d.ts.map +1 -1
  416. package/dist/providers/Locale/index.js +41 -36
  417. package/dist/providers/Locale/index.js.map +1 -1
  418. package/dist/providers/Root/index.js +4 -4
  419. package/dist/providers/Root/index.js.map +1 -1
  420. package/dist/providers/RouteTransition/ProgressBar/index.js +4 -1
  421. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  422. package/dist/providers/RouteTransition/ProgressBar/index.spec.js +44 -0
  423. package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +1 -0
  424. package/dist/providers/RouteTransition/index.d.ts +2 -0
  425. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  426. package/dist/providers/RouteTransition/index.js +42 -14
  427. package/dist/providers/RouteTransition/index.js.map +1 -1
  428. package/dist/styles.css +1 -1
  429. package/dist/templates/Default/Wrapper/index.css +2 -1
  430. package/dist/templates/Default/Wrapper/index.d.ts +2 -0
  431. package/dist/templates/Default/Wrapper/index.d.ts.map +1 -1
  432. package/dist/templates/Default/Wrapper/index.js +12 -6
  433. package/dist/templates/Default/Wrapper/index.js.map +1 -1
  434. package/dist/templates/Default/index.css +3 -1
  435. package/dist/templates/Default/index.d.ts +1 -0
  436. package/dist/templates/Default/index.d.ts.map +1 -1
  437. package/dist/templates/Default/index.js +19 -15
  438. package/dist/templates/Default/index.js.map +1 -1
  439. package/dist/utilities/formatMetadata.d.ts.map +1 -1
  440. package/dist/utilities/formatMetadata.js +0 -5
  441. package/dist/utilities/formatMetadata.js.map +1 -1
  442. package/dist/utilities/getFilesFromClipboard.d.ts +10 -0
  443. package/dist/utilities/getFilesFromClipboard.d.ts.map +1 -0
  444. package/dist/utilities/getFilesFromClipboard.js +49 -0
  445. package/dist/utilities/getFilesFromClipboard.js.map +1 -0
  446. package/dist/utilities/slugify.d.ts.map +1 -1
  447. package/dist/utilities/slugify.js +1 -0
  448. package/dist/utilities/slugify.js.map +1 -1
  449. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
  450. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +3 -2
  451. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  452. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
  453. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +7 -7
  454. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
  455. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
  456. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +104 -66
  457. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  458. package/dist/views/Dashboard/Default/ModularDashboard/index.css +33 -140
  459. package/dist/views/Edit/SetDocumentTitle/index.d.ts.map +1 -1
  460. package/dist/views/Edit/SetDocumentTitle/index.js +4 -1
  461. package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
  462. package/dist/views/Edit/index.d.ts.map +1 -1
  463. package/dist/views/Edit/index.js +3 -2
  464. package/dist/views/Edit/index.js.map +1 -1
  465. package/dist/views/HierarchyList/DocumentListSelection/index.d.ts.map +1 -1
  466. package/dist/views/HierarchyList/DocumentListSelection/index.js +100 -105
  467. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
  468. package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.css +216 -0
  469. package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.d.ts +20 -0
  470. package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.d.ts.map +1 -0
  471. package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.js +182 -0
  472. package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.js.map +1 -0
  473. package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.css +38 -0
  474. package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.d.ts +15 -0
  475. package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.d.ts.map +1 -0
  476. package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.js +85 -0
  477. package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.js.map +1 -0
  478. package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.css +98 -0
  479. package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.d.ts +27 -0
  480. package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.d.ts.map +1 -0
  481. package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.js +84 -0
  482. package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.js.map +1 -0
  483. package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.d.ts +19 -0
  484. package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.d.ts.map +1 -0
  485. package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.js +100 -0
  486. package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.js.map +1 -0
  487. package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.d.ts +53 -0
  488. package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.d.ts.map +1 -0
  489. package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.js +145 -0
  490. package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.js.map +1 -0
  491. package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.d.ts +8 -0
  492. package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.d.ts.map +1 -0
  493. package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.js +21 -0
  494. package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.js.map +1 -0
  495. package/dist/views/HierarchyList/HierarchyCards/index.css +115 -0
  496. package/dist/views/HierarchyList/HierarchyCards/index.d.ts +80 -0
  497. package/dist/views/HierarchyList/HierarchyCards/index.d.ts.map +1 -0
  498. package/dist/views/HierarchyList/HierarchyCards/index.js +457 -0
  499. package/dist/views/HierarchyList/HierarchyCards/index.js.map +1 -0
  500. package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts +6 -1
  501. package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts.map +1 -1
  502. package/dist/views/HierarchyList/HierarchyListHeader/index.js +10 -8
  503. package/dist/views/HierarchyList/HierarchyListHeader/index.js.map +1 -1
  504. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.d.ts.map +1 -1
  505. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js +11 -10
  506. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js.map +1 -1
  507. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts.map +1 -1
  508. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js +3 -6
  509. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js.map +1 -1
  510. package/dist/views/HierarchyList/HierarchyTable/index.css +51 -0
  511. package/dist/views/HierarchyList/HierarchyTable/index.d.ts +13 -1
  512. package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
  513. package/dist/views/HierarchyList/HierarchyTable/index.js +156 -38
  514. package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
  515. package/dist/views/HierarchyList/HierarchyTable/types.d.ts +6 -0
  516. package/dist/views/HierarchyList/HierarchyTable/types.d.ts.map +1 -1
  517. package/dist/views/HierarchyList/HierarchyTable/types.js.map +1 -1
  518. package/dist/views/HierarchyList/index.d.ts.map +1 -1
  519. package/dist/views/HierarchyList/index.js +103 -20
  520. package/dist/views/HierarchyList/index.js.map +1 -1
  521. package/dist/views/List/ListHeader/index.d.ts +1 -10
  522. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  523. package/dist/views/List/ListHeader/index.js +1 -3
  524. package/dist/views/List/ListHeader/index.js.map +1 -1
  525. package/dist/views/List/ListSelection/index.d.ts.map +1 -1
  526. package/dist/views/List/ListSelection/index.js +138 -122
  527. package/dist/views/List/ListSelection/index.js.map +1 -1
  528. package/dist/views/List/handleHierarchy.d.ts +6 -1
  529. package/dist/views/List/handleHierarchy.d.ts.map +1 -1
  530. package/dist/views/List/handleHierarchy.js +34 -3
  531. package/dist/views/List/handleHierarchy.js.map +1 -1
  532. package/dist/views/List/index.client.d.ts.map +1 -1
  533. package/dist/views/List/index.client.js +128 -18
  534. package/dist/views/List/index.client.js.map +1 -1
  535. package/dist/views/List/index.css +5 -0
  536. package/dist/views/List/index.d.ts.map +1 -1
  537. package/dist/views/List/index.js +27 -16
  538. package/dist/views/List/index.js.map +1 -1
  539. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
  540. package/dist/views/Root/getCustomCollectionViewByRoute.js.map +1 -1
  541. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
  542. package/dist/views/Root/getCustomGlobalViewByRoute.js.map +1 -1
  543. package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
  544. package/dist/views/Root/getCustomViewByKey.js.map +1 -1
  545. package/dist/views/Root/getRouteData.d.ts.map +1 -1
  546. package/dist/views/Root/getRouteData.js +8 -2
  547. package/dist/views/Root/getRouteData.js.map +1 -1
  548. package/dist/views/Root/index.d.ts.map +1 -1
  549. package/dist/views/Root/index.js +1 -0
  550. package/dist/views/Root/index.js.map +1 -1
  551. package/dist/views/Version/generateVersionViewMetadata.js.map +1 -1
  552. package/dist/views/Versions/generateVersionsViewMetadata.js.map +1 -1
  553. package/package.json +4 -4
  554. package/dist/elements/Hierarchy/Field/SelectedHierarchies.css +0 -36
  555. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts +0 -13
  556. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +0 -1
  557. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +0 -141
  558. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +0 -1
@@ -6,6 +6,7 @@ import { useWindowInfo } from '@faceless-ui/window-info';
6
6
  import { formatAdminURL } from 'payload/shared';
7
7
  import React, { useEffect, useState } from 'react';
8
8
  import { Account } from '../../graphics/Account/index.js';
9
+ import { ChevronIcon } from '../../icons/Chevron/index.js';
9
10
  import { LogOutIcon } from '../../icons/LogOut/index.js';
10
11
  import { useAuth } from '../../providers/Auth/index.js';
11
12
  import { useConfig } from '../../providers/Config/index.js';
@@ -13,20 +14,23 @@ import { useTranslation } from '../../providers/Translation/index.js';
13
14
  import { MenuSeparator } from '../MenuSeparator/index.js';
14
15
  import { Popup, PopupList } from '../Popup/index.js';
15
16
  import { RenderCustomComponent } from '../RenderCustomComponent/index.js';
17
+ import { HoverSubmenuGroupProvider } from './HoverSubmenuGroup.js';
16
18
  import { LanguageMenu, LanguageMenuContent } from './LanguageMenu/index.js';
17
19
  import { SettingsMenu, SettingsMenuContent } from './SettingsMenu/index.js';
18
20
  import { SubMenuHeader } from './SubMenuHeader/index.js';
19
- import { ThemeMenu, ThemeMenuContent } from './ThemeMenu/index.js';
20
21
  import './index.css';
22
+ import { ThemeMenu, ThemeMenuContent } from './ThemeMenu/index.js';
21
23
  const baseClass = 'user-menu';
22
24
  export const UserMenu = t0 => {
23
- const $ = _c(7);
25
+ const $ = _c(9);
24
26
  const {
25
27
  CustomAvatar,
26
28
  CustomLogoutButton,
27
- settingsItemGroups: t1
29
+ settingsItemGroups: t1,
30
+ showTitle: t2
28
31
  } = t0;
29
32
  const settingsItemGroups = t1 === undefined ? [] : t1;
33
+ const showTitle = t2 === undefined ? false : t2;
30
34
  const {
31
35
  user
32
36
  } = useAuth();
@@ -35,50 +39,51 @@ export const UserMenu = t0 => {
35
39
  t
36
40
  } = useTranslation();
37
41
  const {
38
- config: t2,
42
+ config: t3,
39
43
  getEntityConfig
40
44
  } = useConfig();
41
45
  const {
42
- admin: t3,
43
- routes: t4
44
- } = t2;
46
+ admin: t4,
47
+ routes: t5
48
+ } = t3;
45
49
  const {
46
- routes: t5,
50
+ routes: t6,
47
51
  theme: adminTheme,
48
52
  user: userSlug
49
- } = t3;
53
+ } = t4;
50
54
  const {
51
55
  account: accountRoute,
52
56
  logout: logoutRoute
53
- } = t5;
57
+ } = t6;
54
58
  const {
55
59
  admin: adminRoute
56
- } = t4;
60
+ } = t5;
57
61
  const {
58
- breakpoints: t6
62
+ breakpoints: t7
59
63
  } = useWindowInfo();
60
64
  const {
61
65
  s: smallBreak
62
- } = t6;
66
+ } = t7;
63
67
  const isMobile = Boolean(smallBreak);
64
68
  const [activeMobileSubmenu, setActiveMobileSubmenu] = useState(null);
65
- let t7;
69
+ const [menuInstanceKey, setMenuInstanceKey] = useState(0);
66
70
  let t8;
71
+ let t9;
67
72
  if ($[0] !== isMobile) {
68
- t7 = () => {
73
+ t8 = () => {
69
74
  if (!isMobile) {
70
75
  setActiveMobileSubmenu(null);
71
76
  }
72
77
  };
73
- t8 = [isMobile];
78
+ t9 = [isMobile];
74
79
  $[0] = isMobile;
75
- $[1] = t7;
76
- $[2] = t8;
80
+ $[1] = t8;
81
+ $[2] = t9;
77
82
  } else {
78
- t7 = $[1];
79
- t8 = $[2];
83
+ t8 = $[1];
84
+ t9 = $[2];
80
85
  }
81
- useEffect(t7, t8);
86
+ useEffect(t8, t9);
82
87
  const userCollectionConfig = getEntityConfig({
83
88
  collectionSlug: userSlug
84
89
  });
@@ -98,43 +103,55 @@ export const UserMenu = t0 => {
98
103
  adminRoute,
99
104
  path: accountRoute
100
105
  });
101
- let t9;
106
+ let t10;
102
107
  if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
103
- t9 = () => setActiveMobileSubmenu(null);
104
- $[3] = t9;
108
+ t10 = () => {
109
+ setActiveMobileSubmenu(null);
110
+ setMenuInstanceKey(_temp2);
111
+ };
112
+ $[3] = t10;
105
113
  } else {
106
- t9 = $[3];
114
+ t10 = $[3];
107
115
  }
108
- let t10;
109
- if ($[4] !== CustomAvatar || $[5] !== t) {
110
- t10 = t11 => {
116
+ let t11;
117
+ if ($[4] !== identifier || $[5] !== showTitle || $[6] !== t || $[7] !== titleString) {
118
+ t11 = t12 => {
111
119
  const {
112
120
  active,
113
121
  ...ariaProps
114
- } = t11;
122
+ } = t12;
115
123
  return _jsx("button", {
116
124
  ...ariaProps,
117
125
  "aria-label": t("authentication:account"),
118
- className: [`${baseClass}__trigger`, active && `${baseClass}__trigger--active`].filter(Boolean).join(" "),
126
+ className: [`${baseClass}__trigger`, active && `${baseClass}__trigger--active`, showTitle && `${baseClass}__trigger--with-title`].filter(Boolean).join(" "),
119
127
  type: "button",
120
- children: _jsx(RenderCustomComponent, {
121
- CustomComponent: CustomAvatar,
122
- Fallback: _jsx(Account, {})
128
+ children: _jsxs("div", {
129
+ className: `${baseClass}__trigger-content`,
130
+ children: [showTitle && (titleString || identifier) && _jsx("p", {
131
+ className: `${baseClass}__trigger-label`,
132
+ children: titleString || identifier
133
+ }), _jsx(ChevronIcon, {
134
+ direction: "down",
135
+ size: 16
136
+ })]
123
137
  })
124
138
  });
125
139
  };
126
- $[4] = CustomAvatar;
127
- $[5] = t;
128
- $[6] = t10;
140
+ $[4] = identifier;
141
+ $[5] = showTitle;
142
+ $[6] = t;
143
+ $[7] = titleString;
144
+ $[8] = t11;
129
145
  } else {
130
- t10 = $[6];
146
+ t11 = $[8];
131
147
  }
132
148
  return _jsx(Popup, {
133
149
  caret: false,
134
150
  className: baseClass,
135
151
  horizontalAlign: "right",
136
- onToggleClose: t9,
137
- renderButton: t10,
152
+ onToggleClose: t10,
153
+ renderButton: t11,
154
+ showScrim: true,
138
155
  size: "large",
139
156
  theme: "dark",
140
157
  verticalAlign: "bottom",
@@ -176,19 +193,25 @@ export const UserMenu = t0 => {
176
193
  children: identifier
177
194
  })]
178
195
  })]
179
- }), showPreferencesGroup && _jsxs(PopupList.ButtonGroup, {
180
- children: [showThemeMenu && _jsx(ThemeMenu, {
181
- onMobileOpen: isMobile ? () => setActiveMobileSubmenu("theme") : undefined
182
- }), hasMultipleLanguages && _jsx(LanguageMenu, {
183
- onMobileOpen: isMobile ? () => setActiveMobileSubmenu("language") : undefined
196
+ }), _jsxs(HoverSubmenuGroupProvider, {
197
+ children: [showPreferencesGroup && _jsxs(_Fragment, {
198
+ children: [showThemeMenu && _jsx(PopupList.MenuItem, {
199
+ children: _jsx(ThemeMenu, {
200
+ onMobileOpen: isMobile ? () => setActiveMobileSubmenu("theme") : undefined
201
+ }, menuInstanceKey)
202
+ }), hasMultipleLanguages && _jsx(PopupList.MenuItem, {
203
+ children: _jsx(LanguageMenu, {
204
+ onMobileOpen: isMobile ? () => setActiveMobileSubmenu("language") : undefined
205
+ }, menuInstanceKey)
206
+ })]
207
+ }), _jsx(MenuSeparator, {}), hasSettingsItems && _jsxs(_Fragment, {
208
+ children: [_jsx(PopupList.MenuItem, {
209
+ children: _jsx(SettingsMenu, {
210
+ groups: settingsItemGroups,
211
+ onMobileOpen: isMobile ? () => setActiveMobileSubmenu("settings") : undefined
212
+ }, menuInstanceKey)
213
+ }), _jsx(MenuSeparator, {})]
184
214
  })]
185
- }), _jsx(MenuSeparator, {}), hasSettingsItems && _jsxs(_Fragment, {
186
- children: [_jsx(PopupList.ButtonGroup, {
187
- children: _jsx(SettingsMenu, {
188
- groups: settingsItemGroups,
189
- onMobileOpen: isMobile ? () => setActiveMobileSubmenu("settings") : undefined
190
- })
191
- }), _jsx(MenuSeparator, {})]
192
215
  }), _jsx(PopupList.MenuItem, {
193
216
  children: CustomLogoutButton ?? _jsx(PopupList.Button, {
194
217
  href: logoutHref,
@@ -202,4 +225,7 @@ export const UserMenu = t0 => {
202
225
  function _temp(group) {
203
226
  return group.items.length > 0;
204
227
  }
228
+ function _temp2(key) {
229
+ return key + 1;
230
+ }
205
231
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useWindowInfo","formatAdminURL","React","useEffect","useState","Account","LogOutIcon","useAuth","useConfig","useTranslation","MenuSeparator","Popup","PopupList","RenderCustomComponent","LanguageMenu","LanguageMenuContent","SettingsMenu","SettingsMenuContent","SubMenuHeader","ThemeMenu","ThemeMenuContent","baseClass","UserMenu","t0","$","CustomAvatar","CustomLogoutButton","settingsItemGroups","t1","undefined","user","languageOptions","t","config","t2","getEntityConfig","admin","t3","routes","t4","t5","theme","adminTheme","userSlug","account","accountRoute","logout","logoutRoute","adminRoute","breakpoints","t6","s","smallBreak","isMobile","Boolean","activeMobileSubmenu","setActiveMobileSubmenu","t7","t8","userCollectionConfig","collectionSlug","useAsTitle","titleValue","titleString","identifier","username","email","hasMultipleLanguages","Array","isArray","length","showThemeMenu","hasSettingsItems","some","_temp","showPreferencesGroup","logoutHref","path","accountHref","t9","Symbol","for","t10","t11","active","ariaProps","_jsx","className","filter","join","type","children","CustomComponent","Fallback","caret","horizontalAlign","onToggleClose","renderButton","verticalAlign","_jsxs","_Fragment","onBack","title","groups","href","ButtonGroup","onMobileOpen","MenuItem","Button","icon","group","items"],"sources":["../../../src/elements/UserMenu/index.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useEffect, useState } from 'react'\n\nimport type { UserMenuSettingsGroup } from './SettingsMenu/index.js'\n\nimport { Account } from '../../graphics/Account/index.js'\nimport { LogOutIcon } from '../../icons/LogOut/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MenuSeparator } from '../MenuSeparator/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { RenderCustomComponent } from '../RenderCustomComponent/index.js'\nimport { LanguageMenu, LanguageMenuContent } from './LanguageMenu/index.js'\nimport { SettingsMenu, SettingsMenuContent } from './SettingsMenu/index.js'\nimport { SubMenuHeader } from './SubMenuHeader/index.js'\nimport { ThemeMenu, ThemeMenuContent } from './ThemeMenu/index.js'\nimport './index.css'\n\nconst baseClass = 'user-menu'\n\ntype UserMenuProps = {\n CustomAvatar?: React.ReactNode\n CustomLogoutButton?: React.ReactNode\n settingsItemGroups?: UserMenuSettingsGroup[]\n}\n\nexport const UserMenu: React.FC<UserMenuProps> = ({\n CustomAvatar,\n CustomLogoutButton,\n settingsItemGroups = [],\n}) => {\n const { user } = useAuth()\n const { languageOptions, t } = useTranslation()\n const {\n config: {\n admin: {\n routes: { account: accountRoute, logout: logoutRoute },\n theme: adminTheme,\n user: userSlug,\n },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const isMobile = Boolean(smallBreak)\n\n const [activeMobileSubmenu, setActiveMobileSubmenu] = useState<\n 'language' | 'settings' | 'theme' | null\n >(null)\n\n useEffect(() => {\n if (!isMobile) {\n setActiveMobileSubmenu(null)\n }\n }, [isMobile])\n\n const userCollectionConfig = getEntityConfig({ collectionSlug: userSlug })\n const useAsTitle = userCollectionConfig?.admin?.useAsTitle ?? 'email'\n const titleValue =\n useAsTitle !== 'email' && user ? (user as Record<string, unknown>)[useAsTitle] : undefined\n const titleString = typeof titleValue === 'string' ? titleValue : undefined\n\n const identifier = user?.username ?? user?.email ?? ''\n const hasMultipleLanguages = Array.isArray(languageOptions) && languageOptions.length > 1\n const showThemeMenu = adminTheme === 'all'\n const hasSettingsItems = settingsItemGroups.some((group) => group.items.length > 0)\n const showPreferencesGroup = showThemeMenu || hasMultipleLanguages\n\n const logoutHref = formatAdminURL({ adminRoute, path: logoutRoute })\n const accountHref = formatAdminURL({ adminRoute, path: accountRoute })\n\n return (\n <Popup\n caret={false}\n className={baseClass}\n horizontalAlign=\"right\"\n onToggleClose={() => setActiveMobileSubmenu(null)}\n renderButton={({ active, ...ariaProps }) => (\n <button\n {...ariaProps}\n aria-label={t('authentication:account')}\n className={[`${baseClass}__trigger`, active && `${baseClass}__trigger--active`]\n .filter(Boolean)\n .join(' ')}\n type=\"button\"\n >\n <RenderCustomComponent CustomComponent={CustomAvatar} Fallback={<Account />} />\n </button>\n )}\n size=\"large\"\n theme=\"dark\"\n verticalAlign=\"bottom\"\n >\n {isMobile && activeMobileSubmenu ? (\n // Mobile submenu panel\n <>\n {activeMobileSubmenu === 'theme' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:theme')}\n />\n <ThemeMenuContent />\n </>\n )}\n {activeMobileSubmenu === 'language' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:language')}\n />\n <LanguageMenuContent />\n </>\n )}\n {activeMobileSubmenu === 'settings' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:settings')}\n />\n <SettingsMenuContent groups={settingsItemGroups} />\n </>\n )}\n </>\n ) : (\n // Normal menu content (desktop always; mobile when no active submenu)\n <>\n {/* Profile header */}\n <a className={`${baseClass}__profile`} href={accountHref}>\n <div className={`${baseClass}__avatar`}>\n <RenderCustomComponent CustomComponent={CustomAvatar} Fallback={<Account />} />\n </div>\n <div>\n {titleString && <p className={`${baseClass}__name`}>{titleString}</p>}\n {identifier && <p className={`${baseClass}__identifier`}>{identifier}</p>}\n </div>\n </a>\n\n {/* Preferences group: Theme + Language */}\n {showPreferencesGroup && (\n <PopupList.ButtonGroup>\n {showThemeMenu && (\n <ThemeMenu\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('theme') : undefined}\n />\n )}\n {hasMultipleLanguages && (\n <LanguageMenu\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('language') : undefined}\n />\n )}\n </PopupList.ButtonGroup>\n )}\n\n <MenuSeparator />\n\n {/* Settings group */}\n {hasSettingsItems && (\n <>\n <PopupList.ButtonGroup>\n <SettingsMenu\n groups={settingsItemGroups}\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('settings') : undefined}\n />\n </PopupList.ButtonGroup>\n <MenuSeparator />\n </>\n )}\n\n {/* Account actions */}\n <PopupList.MenuItem>\n {CustomLogoutButton ?? (\n <PopupList.Button href={logoutHref} icon={<LogOutIcon />}>\n {t('authentication:logOut')}\n </PopupList.Button>\n )}\n </PopupList.MenuItem>\n </>\n )}\n </Popup>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useWindowInfo","formatAdminURL","React","useEffect","useState","Account","ChevronIcon","LogOutIcon","useAuth","useConfig","useTranslation","MenuSeparator","Popup","PopupList","RenderCustomComponent","HoverSubmenuGroupProvider","LanguageMenu","LanguageMenuContent","SettingsMenu","SettingsMenuContent","SubMenuHeader","ThemeMenu","ThemeMenuContent","baseClass","UserMenu","t0","$","CustomAvatar","CustomLogoutButton","settingsItemGroups","t1","showTitle","t2","undefined","user","languageOptions","t","config","t3","getEntityConfig","admin","t4","routes","t5","t6","theme","adminTheme","userSlug","account","accountRoute","logout","logoutRoute","adminRoute","breakpoints","t7","s","smallBreak","isMobile","Boolean","activeMobileSubmenu","setActiveMobileSubmenu","menuInstanceKey","setMenuInstanceKey","t8","t9","userCollectionConfig","collectionSlug","useAsTitle","titleValue","titleString","identifier","username","email","hasMultipleLanguages","Array","isArray","length","showThemeMenu","hasSettingsItems","some","_temp","showPreferencesGroup","logoutHref","path","accountHref","t10","Symbol","for","_temp2","t11","t12","active","ariaProps","_jsx","className","filter","join","type","children","_jsxs","direction","size","caret","horizontalAlign","onToggleClose","renderButton","verticalAlign","_Fragment","onBack","title","groups","href","CustomComponent","Fallback","MenuItem","onMobileOpen","Button","icon","group","items","key"],"sources":["../../../src/elements/UserMenu/index.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useEffect, useState } from 'react'\n\nimport type { UserMenuSettingsGroup } from './SettingsMenu/index.js'\n\nimport { Account } from '../../graphics/Account/index.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { LogOutIcon } from '../../icons/LogOut/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MenuSeparator } from '../MenuSeparator/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { RenderCustomComponent } from '../RenderCustomComponent/index.js'\nimport { HoverSubmenuGroupProvider } from './HoverSubmenuGroup.js'\nimport { LanguageMenu, LanguageMenuContent } from './LanguageMenu/index.js'\nimport { SettingsMenu, SettingsMenuContent } from './SettingsMenu/index.js'\nimport { SubMenuHeader } from './SubMenuHeader/index.js'\nimport './index.css'\nimport { ThemeMenu, ThemeMenuContent } from './ThemeMenu/index.js'\n\nconst baseClass = 'user-menu'\n\ntype UserMenuProps = {\n CustomAvatar?: React.ReactNode\n CustomLogoutButton?: React.ReactNode\n settingsItemGroups?: UserMenuSettingsGroup[]\n showTitle?: boolean\n}\n\nexport const UserMenu: React.FC<UserMenuProps> = ({\n CustomAvatar,\n CustomLogoutButton,\n settingsItemGroups = [],\n showTitle = false,\n}) => {\n const { user } = useAuth()\n const { languageOptions, t } = useTranslation()\n const {\n config: {\n admin: {\n routes: { account: accountRoute, logout: logoutRoute },\n theme: adminTheme,\n user: userSlug,\n },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const isMobile = Boolean(smallBreak)\n\n const [activeMobileSubmenu, setActiveMobileSubmenu] = useState<\n 'language' | 'settings' | 'theme' | null\n >(null)\n\n // Bumped whenever the account menu closes, so submenu triggers (Theme/Language/Settings)\n // remount and reset their own open/hover state - otherwise a submenu left open via hover\n // stays mounted and open even after the parent menu itself has closed.\n const [menuInstanceKey, setMenuInstanceKey] = useState(0)\n\n useEffect(() => {\n if (!isMobile) {\n setActiveMobileSubmenu(null)\n }\n }, [isMobile])\n\n const userCollectionConfig = getEntityConfig({ collectionSlug: userSlug })\n const useAsTitle = userCollectionConfig?.admin?.useAsTitle ?? 'email'\n const titleValue =\n useAsTitle !== 'email' && user ? (user as Record<string, unknown>)[useAsTitle] : undefined\n const titleString = typeof titleValue === 'string' ? titleValue : undefined\n\n const identifier = user?.username ?? user?.email ?? ''\n const hasMultipleLanguages = Array.isArray(languageOptions) && languageOptions.length > 1\n const showThemeMenu = adminTheme === 'all'\n const hasSettingsItems = settingsItemGroups.some((group) => group.items.length > 0)\n const showPreferencesGroup = showThemeMenu || hasMultipleLanguages\n\n const logoutHref = formatAdminURL({ adminRoute, path: logoutRoute })\n const accountHref = formatAdminURL({ adminRoute, path: accountRoute })\n\n return (\n <Popup\n caret={false}\n className={baseClass}\n horizontalAlign=\"right\"\n onToggleClose={() => {\n setActiveMobileSubmenu(null)\n setMenuInstanceKey((key) => key + 1)\n }}\n renderButton={({ active, ...ariaProps }) => (\n <button\n {...ariaProps}\n aria-label={t('authentication:account')}\n className={[\n `${baseClass}__trigger`,\n active && `${baseClass}__trigger--active`,\n showTitle && `${baseClass}__trigger--with-title`,\n ]\n .filter(Boolean)\n .join(' ')}\n type=\"button\"\n >\n <div className={`${baseClass}__trigger-content`}>\n {showTitle && (titleString || identifier) && (\n <p className={`${baseClass}__trigger-label`}>{titleString || identifier}</p>\n )}\n <ChevronIcon direction=\"down\" size={16} />\n </div>\n </button>\n )}\n showScrim\n size=\"large\"\n theme=\"dark\"\n verticalAlign=\"bottom\"\n >\n {isMobile && activeMobileSubmenu ? (\n // Mobile submenu panel\n <>\n {activeMobileSubmenu === 'theme' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:theme')}\n />\n <ThemeMenuContent />\n </>\n )}\n {activeMobileSubmenu === 'language' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:language')}\n />\n <LanguageMenuContent />\n </>\n )}\n {activeMobileSubmenu === 'settings' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:settings')}\n />\n <SettingsMenuContent groups={settingsItemGroups} />\n </>\n )}\n </>\n ) : (\n // Normal menu content (desktop always; mobile when no active submenu)\n <>\n {/* Profile header */}\n <a className={`${baseClass}__profile`} href={accountHref}>\n <div className={`${baseClass}__avatar`}>\n <RenderCustomComponent CustomComponent={CustomAvatar} Fallback={<Account />} />\n </div>\n <div>\n {titleString && <p className={`${baseClass}__name`}>{titleString}</p>}\n {identifier && <p className={`${baseClass}__identifier`}>{identifier}</p>}\n </div>\n </a>\n\n <HoverSubmenuGroupProvider>\n {/* Preferences group: Theme + Language */}\n {showPreferencesGroup && (\n <>\n {showThemeMenu && (\n <PopupList.MenuItem>\n <ThemeMenu\n key={menuInstanceKey}\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('theme') : undefined}\n />\n </PopupList.MenuItem>\n )}\n {hasMultipleLanguages && (\n <PopupList.MenuItem>\n <LanguageMenu\n key={menuInstanceKey}\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('language') : undefined}\n />\n </PopupList.MenuItem>\n )}\n </>\n )}\n\n <MenuSeparator />\n\n {/* Settings group */}\n {hasSettingsItems && (\n <>\n <PopupList.MenuItem>\n <SettingsMenu\n groups={settingsItemGroups}\n key={menuInstanceKey}\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('settings') : undefined}\n />\n </PopupList.MenuItem>\n <MenuSeparator />\n </>\n )}\n </HoverSubmenuGroupProvider>\n\n {/* Account actions */}\n <PopupList.MenuItem>\n {CustomLogoutButton ?? (\n <PopupList.Button href={logoutHref} icon={<LogOutIcon />}>\n {t('authentication:logOut')}\n </PopupList.Button>\n )}\n </PopupList.MenuItem>\n </>\n )}\n </Popup>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Opens a submenu on hover and keeps it open while the cursor is inside the trigger, the
3
+ * content, the trough between them, or the funnel-shaped safe zone connecting the two -
4
+ * closing once it has genuinely left all of those for `HOVER_CLOSE_DELAY`.
5
+ *
6
+ * `id` identifies this submenu within its `HoverSubmenuGroupProvider` (if any) - when
7
+ * a sibling submenu becomes active, this one closes immediately rather than waiting on
8
+ * its own hover-out timer.
9
+ */
10
+ export declare const useHoverSubmenu: (id: string) => {
11
+ close: () => void;
12
+ contentRef: import("react").RefObject<HTMLElement>;
13
+ isOpen: boolean;
14
+ keepOpen: () => void;
15
+ open: (e?: {
16
+ clientX: number;
17
+ clientY: number;
18
+ }) => void;
19
+ triggerRef: import("react").RefObject<HTMLElement>;
20
+ };
21
+ //# sourceMappingURL=useHoverSubmenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHoverSubmenu.d.ts","sourceRoot":"","sources":["../../../src/elements/UserMenu/useHoverSubmenu.ts"],"names":[],"mappings":"AAuHA;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,OAAQ,MAAM;;;;;eA2BjC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;;CAwH5C,CAAA"}
@@ -0,0 +1,260 @@
1
+ 'use client';
2
+
3
+ import { c as _c } from "react/compiler-runtime";
4
+ import { useCallback, useEffect, useRef, useState } from 'react';
5
+ import { useHoverSubmenuGroup } from './HoverSubmenuGroup.js';
6
+ const HOVER_CLOSE_DELAY = 75;
7
+ const POLYGON_BUFFER = 2;
8
+ const isInsideRect = (x, y, rect) => x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom;
9
+ const isInsideAxisAlignedRect = (x, y, x1, y1, x2, y2) => {
10
+ const minX = Math.min(x1, x2);
11
+ const maxX = Math.max(x1, x2);
12
+ const minY = Math.min(y1, y2);
13
+ const maxY = Math.max(y1, y2);
14
+ return x >= minX && x <= maxX && y >= minY && y <= maxY;
15
+ };
16
+ const hasIntersectingEdge = (px, py, xi, yi, xj, yj) => yi >= py !== yj >= py && px <= (xj - xi) * (py - yi) / (yj - yi) + xi;
17
+ /** Ray-casting point-in-polygon test, ported from Floating UI's `safePolygon`. */
18
+ const isPointInPolygon = (px, py, points) => {
19
+ let inside = false;
20
+ for (let i = 0; i < points.length; i++) {
21
+ const [xi, yi] = points[i];
22
+ const [xj, yj] = points[(i + 1) % points.length];
23
+ if (hasIntersectingEdge(px, py, xi, yi, xj, yj)) {
24
+ inside = !inside;
25
+ }
26
+ }
27
+ return inside;
28
+ };
29
+ /**
30
+ * Computes the funnel-shaped safe zone connecting `anchor` (the last cursor position over
31
+ * the trigger) to the content panel, ported from Floating UI's `safePolygon` 'left'/'right'
32
+ * cases. Unlike a bounding-box union, this narrows toward the panel, so hovering something
33
+ * far below/above the trigger-to-panel path (e.g. an unrelated item below a short submenu)
34
+ * correctly falls outside the zone.
35
+ */
36
+ const getFunnelPolygon = (anchor, triggerRect, contentRect, contentIsLeft) => {
37
+ const isContentTaller = contentRect.height > triggerRect.height;
38
+ const leaveFromBottom = anchor.y > contentRect.bottom - contentRect.height / 2;
39
+ const yOffset = isContentTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;
40
+ const pointOneY = isContentTaller ? anchor.y + yOffset : leaveFromBottom ? anchor.y + yOffset : anchor.y - yOffset;
41
+ const pointTwoY = isContentTaller ? anchor.y - yOffset : leaveFromBottom ? anchor.y + yOffset : anchor.y - yOffset;
42
+ if (contentIsLeft) {
43
+ const cursorPointX = anchor.x + POLYGON_BUFFER + 1;
44
+ const commonXTop = leaveFromBottom ? contentRect.right - POLYGON_BUFFER : isContentTaller ? contentRect.right - POLYGON_BUFFER : contentRect.left;
45
+ const commonXBottom = leaveFromBottom ? isContentTaller ? contentRect.right - POLYGON_BUFFER : contentRect.left : contentRect.right - POLYGON_BUFFER;
46
+ return [[commonXTop, contentRect.top], [commonXBottom, contentRect.bottom], [cursorPointX, pointOneY], [cursorPointX, pointTwoY]];
47
+ }
48
+ const cursorPointX = anchor.x - POLYGON_BUFFER;
49
+ const commonXTop = leaveFromBottom ? contentRect.left + POLYGON_BUFFER : isContentTaller ? contentRect.left + POLYGON_BUFFER : contentRect.right;
50
+ const commonXBottom = leaveFromBottom ? isContentTaller ? contentRect.left + POLYGON_BUFFER : contentRect.right : contentRect.left + POLYGON_BUFFER;
51
+ return [[cursorPointX, pointOneY], [cursorPointX, pointTwoY], [commonXTop, contentRect.top], [commonXBottom, contentRect.bottom]];
52
+ };
53
+ /**
54
+ * Opens a submenu on hover and keeps it open while the cursor is inside the trigger, the
55
+ * content, the trough between them, or the funnel-shaped safe zone connecting the two -
56
+ * closing once it has genuinely left all of those for `HOVER_CLOSE_DELAY`.
57
+ *
58
+ * `id` identifies this submenu within its `HoverSubmenuGroupProvider` (if any) - when
59
+ * a sibling submenu becomes active, this one closes immediately rather than waiting on
60
+ * its own hover-out timer.
61
+ */
62
+ export const useHoverSubmenu = id => {
63
+ const $ = _c(21);
64
+ const [isOpen, setIsOpen] = useState(false);
65
+ const closeTimeoutRef = useRef(null);
66
+ const triggerRef = useRef(null);
67
+ const contentRef = useRef(null);
68
+ const anchorRef = useRef(null);
69
+ const hasLandedRef = useRef(false);
70
+ const group = useHoverSubmenuGroup();
71
+ let t0;
72
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
73
+ t0 = () => {
74
+ if (closeTimeoutRef.current) {
75
+ clearTimeout(closeTimeoutRef.current);
76
+ closeTimeoutRef.current = null;
77
+ }
78
+ };
79
+ $[0] = t0;
80
+ } else {
81
+ t0 = $[0];
82
+ }
83
+ const cancelClose = t0;
84
+ let t1;
85
+ if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
86
+ t1 = () => {
87
+ if (closeTimeoutRef.current) {
88
+ return;
89
+ }
90
+ closeTimeoutRef.current = setTimeout(() => {
91
+ setIsOpen(false);
92
+ closeTimeoutRef.current = null;
93
+ }, HOVER_CLOSE_DELAY);
94
+ };
95
+ $[1] = t1;
96
+ } else {
97
+ t1 = $[1];
98
+ }
99
+ const scheduleClose = t1;
100
+ let t2;
101
+ if ($[2] !== group || $[3] !== id) {
102
+ t2 = e => {
103
+ cancelClose();
104
+ hasLandedRef.current = false;
105
+ if (e) {
106
+ anchorRef.current = {
107
+ x: e.clientX,
108
+ y: e.clientY
109
+ };
110
+ }
111
+ group?.setActiveId(id);
112
+ setIsOpen(true);
113
+ };
114
+ $[2] = group;
115
+ $[3] = id;
116
+ $[4] = t2;
117
+ } else {
118
+ t2 = $[4];
119
+ }
120
+ const open = t2;
121
+ let t3;
122
+ if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
123
+ t3 = () => {
124
+ cancelClose();
125
+ hasLandedRef.current = true;
126
+ };
127
+ $[5] = t3;
128
+ } else {
129
+ t3 = $[5];
130
+ }
131
+ const keepOpen = t3;
132
+ let t4;
133
+ if ($[6] !== group || $[7] !== id) {
134
+ t4 = () => {
135
+ cancelClose();
136
+ setIsOpen(false);
137
+ group?.setActiveId(current => current === id ? null : current);
138
+ };
139
+ $[6] = group;
140
+ $[7] = id;
141
+ $[8] = t4;
142
+ } else {
143
+ t4 = $[8];
144
+ }
145
+ const close = t4;
146
+ let t5;
147
+ let t6;
148
+ if ($[9] !== group || $[10] !== id || $[11] !== isOpen) {
149
+ t5 = () => {
150
+ if (isOpen && group && group.activeId !== null && group.activeId !== id) {
151
+ cancelClose();
152
+ setIsOpen(false);
153
+ }
154
+ };
155
+ t6 = [group, isOpen, id, cancelClose];
156
+ $[9] = group;
157
+ $[10] = id;
158
+ $[11] = isOpen;
159
+ $[12] = t5;
160
+ $[13] = t6;
161
+ } else {
162
+ t5 = $[12];
163
+ t6 = $[13];
164
+ }
165
+ useEffect(t5, t6);
166
+ let t7;
167
+ let t8;
168
+ if ($[14] !== isOpen) {
169
+ t7 = () => {
170
+ if (!isOpen) {
171
+ return;
172
+ }
173
+ const handlePointerMove = e_0 => {
174
+ const triggerRect = triggerRef.current?.getBoundingClientRect();
175
+ const contentRect = contentRef.current?.getBoundingClientRect();
176
+ if (!triggerRect || !contentRect) {
177
+ return;
178
+ }
179
+ const {
180
+ clientX,
181
+ clientY
182
+ } = e_0;
183
+ if (isInsideRect(clientX, clientY, triggerRect)) {
184
+ anchorRef.current = {
185
+ x: clientX,
186
+ y: clientY
187
+ };
188
+ hasLandedRef.current = false;
189
+ cancelClose();
190
+ return;
191
+ }
192
+ if (isInsideRect(clientX, clientY, contentRect)) {
193
+ hasLandedRef.current = true;
194
+ cancelClose();
195
+ return;
196
+ }
197
+ const contentIsLeft = contentRect.right <= triggerRect.left + 1;
198
+ const isContentTaller = contentRect.height > triggerRect.height;
199
+ const boundTop = (isContentTaller ? triggerRect : contentRect).top;
200
+ const boundBottom = (isContentTaller ? triggerRect : contentRect).bottom;
201
+ const movedPastTrigger = contentIsLeft ? clientX >= triggerRect.right - 1 : clientX <= triggerRect.left + 1;
202
+ const troughX1 = contentIsLeft ? contentRect.right - 1 : triggerRect.right - 1;
203
+ const troughX2 = contentIsLeft ? triggerRect.left + 1 : contentRect.left + 1;
204
+ const isInsideTrough = isInsideAxisAlignedRect(clientX, clientY, troughX1, boundBottom, troughX2, boundTop);
205
+ if (movedPastTrigger) {
206
+ scheduleClose();
207
+ return;
208
+ }
209
+ if (isInsideTrough) {
210
+ cancelClose();
211
+ return;
212
+ }
213
+ if (hasLandedRef.current) {
214
+ scheduleClose();
215
+ return;
216
+ }
217
+ const anchor = anchorRef.current ?? {
218
+ x: contentIsLeft ? triggerRect.left : triggerRect.right,
219
+ y: (triggerRect.top + triggerRect.bottom) / 2
220
+ };
221
+ const polygon = getFunnelPolygon(anchor, triggerRect, contentRect, contentIsLeft);
222
+ const isInsidePolygon = isPointInPolygon(clientX, clientY, polygon);
223
+ if (isInsidePolygon) {
224
+ cancelClose();
225
+ } else {
226
+ scheduleClose();
227
+ }
228
+ };
229
+ document.addEventListener("mousemove", handlePointerMove);
230
+ return () => document.removeEventListener("mousemove", handlePointerMove);
231
+ };
232
+ t8 = [isOpen, cancelClose, scheduleClose];
233
+ $[14] = isOpen;
234
+ $[15] = t7;
235
+ $[16] = t8;
236
+ } else {
237
+ t7 = $[15];
238
+ t8 = $[16];
239
+ }
240
+ useEffect(t7, t8);
241
+ let t9;
242
+ if ($[17] !== close || $[18] !== isOpen || $[19] !== open) {
243
+ t9 = {
244
+ close,
245
+ contentRef,
246
+ isOpen,
247
+ keepOpen,
248
+ open,
249
+ triggerRef
250
+ };
251
+ $[17] = close;
252
+ $[18] = isOpen;
253
+ $[19] = open;
254
+ $[20] = t9;
255
+ } else {
256
+ t9 = $[20];
257
+ }
258
+ return t9;
259
+ };
260
+ //# sourceMappingURL=useHoverSubmenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHoverSubmenu.js","names":["c","_c","useCallback","useEffect","useRef","useState","useHoverSubmenuGroup","HOVER_CLOSE_DELAY","POLYGON_BUFFER","isInsideRect","x","y","rect","left","right","top","bottom","isInsideAxisAlignedRect","x1","y1","x2","y2","minX","Math","min","maxX","max","minY","maxY","hasIntersectingEdge","px","py","xi","yi","xj","yj","isPointInPolygon","points","inside","i","length","getFunnelPolygon","anchor","triggerRect","contentRect","contentIsLeft","isContentTaller","height","leaveFromBottom","yOffset","pointOneY","pointTwoY","cursorPointX","commonXTop","commonXBottom","useHoverSubmenu","id","$","isOpen","setIsOpen","closeTimeoutRef","triggerRef","contentRef","anchorRef","hasLandedRef","group","t0","Symbol","for","current","clearTimeout","cancelClose","t1","setTimeout","scheduleClose","t2","e","clientX","clientY","setActiveId","open","t3","keepOpen","t4","close","t5","t6","activeId","t7","t8","handlePointerMove","e_0","getBoundingClientRect","boundTop","boundBottom","movedPastTrigger","troughX1","troughX2","isInsideTrough","polygon","isInsidePolygon","document","addEventListener","removeEventListener","t9"],"sources":["../../../src/elements/UserMenu/useHoverSubmenu.ts"],"sourcesContent":["'use client'\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { useHoverSubmenuGroup } from './HoverSubmenuGroup.js'\n\nconst HOVER_CLOSE_DELAY = 75\nconst POLYGON_BUFFER = 2\n\ntype Point = [x: number, y: number]\n\nconst isInsideRect = (x: number, y: number, rect: DOMRect) =>\n x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom\n\nconst isInsideAxisAlignedRect = (\n x: number,\n y: number,\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n) => {\n const minX = Math.min(x1, x2)\n const maxX = Math.max(x1, x2)\n const minY = Math.min(y1, y2)\n const maxY = Math.max(y1, y2)\n return x >= minX && x <= maxX && y >= minY && y <= maxY\n}\n\nconst hasIntersectingEdge = (\n px: number,\n py: number,\n xi: number,\n yi: number,\n xj: number,\n yj: number,\n) => yi >= py !== yj >= py && px <= ((xj - xi) * (py - yi)) / (yj - yi) + xi\n\n/** Ray-casting point-in-polygon test, ported from Floating UI's `safePolygon`. */\nconst isPointInPolygon = (px: number, py: number, points: Point[]) => {\n let inside = false\n for (let i = 0; i < points.length; i++) {\n const [xi, yi] = points[i]\n const [xj, yj] = points[(i + 1) % points.length]\n if (hasIntersectingEdge(px, py, xi, yi, xj, yj)) {\n inside = !inside\n }\n }\n return inside\n}\n\n/**\n * Computes the funnel-shaped safe zone connecting `anchor` (the last cursor position over\n * the trigger) to the content panel, ported from Floating UI's `safePolygon` 'left'/'right'\n * cases. Unlike a bounding-box union, this narrows toward the panel, so hovering something\n * far below/above the trigger-to-panel path (e.g. an unrelated item below a short submenu)\n * correctly falls outside the zone.\n */\nconst getFunnelPolygon = (\n anchor: { x: number; y: number },\n triggerRect: DOMRect,\n contentRect: DOMRect,\n contentIsLeft: boolean,\n): Point[] => {\n const isContentTaller = contentRect.height > triggerRect.height\n const leaveFromBottom = anchor.y > contentRect.bottom - contentRect.height / 2\n\n const yOffset = isContentTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4\n const pointOneY = isContentTaller\n ? anchor.y + yOffset\n : leaveFromBottom\n ? anchor.y + yOffset\n : anchor.y - yOffset\n const pointTwoY = isContentTaller\n ? anchor.y - yOffset\n : leaveFromBottom\n ? anchor.y + yOffset\n : anchor.y - yOffset\n\n if (contentIsLeft) {\n const cursorPointX = anchor.x + POLYGON_BUFFER + 1\n const commonXTop = leaveFromBottom\n ? contentRect.right - POLYGON_BUFFER\n : isContentTaller\n ? contentRect.right - POLYGON_BUFFER\n : contentRect.left\n const commonXBottom = leaveFromBottom\n ? isContentTaller\n ? contentRect.right - POLYGON_BUFFER\n : contentRect.left\n : contentRect.right - POLYGON_BUFFER\n\n return [\n [commonXTop, contentRect.top],\n [commonXBottom, contentRect.bottom],\n [cursorPointX, pointOneY],\n [cursorPointX, pointTwoY],\n ]\n }\n\n const cursorPointX = anchor.x - POLYGON_BUFFER\n const commonXTop = leaveFromBottom\n ? contentRect.left + POLYGON_BUFFER\n : isContentTaller\n ? contentRect.left + POLYGON_BUFFER\n : contentRect.right\n const commonXBottom = leaveFromBottom\n ? isContentTaller\n ? contentRect.left + POLYGON_BUFFER\n : contentRect.right\n : contentRect.left + POLYGON_BUFFER\n\n return [\n [cursorPointX, pointOneY],\n [cursorPointX, pointTwoY],\n [commonXTop, contentRect.top],\n [commonXBottom, contentRect.bottom],\n ]\n}\n\n/**\n * Opens a submenu on hover and keeps it open while the cursor is inside the trigger, the\n * content, the trough between them, or the funnel-shaped safe zone connecting the two -\n * closing once it has genuinely left all of those for `HOVER_CLOSE_DELAY`.\n *\n * `id` identifies this submenu within its `HoverSubmenuGroupProvider` (if any) - when\n * a sibling submenu becomes active, this one closes immediately rather than waiting on\n * its own hover-out timer.\n */\nexport const useHoverSubmenu = (id: string) => {\n const [isOpen, setIsOpen] = useState(false)\n const closeTimeoutRef = useRef<null | ReturnType<typeof setTimeout>>(null)\n const triggerRef = useRef<HTMLElement | null>(null)\n const contentRef = useRef<HTMLElement | null>(null)\n const anchorRef = useRef<{ x: number; y: number } | null>(null)\n const hasLandedRef = useRef(false)\n const group = useHoverSubmenuGroup()\n\n const cancelClose = useCallback(() => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current)\n closeTimeoutRef.current = null\n }\n }, [])\n\n const scheduleClose = useCallback(() => {\n if (closeTimeoutRef.current) {\n return\n }\n closeTimeoutRef.current = setTimeout(() => {\n setIsOpen(false)\n closeTimeoutRef.current = null\n }, HOVER_CLOSE_DELAY)\n }, [])\n\n const open = useCallback(\n (e?: { clientX: number; clientY: number }) => {\n cancelClose()\n hasLandedRef.current = false\n if (e) {\n anchorRef.current = { x: e.clientX, y: e.clientY }\n }\n group?.setActiveId(id)\n setIsOpen(true)\n },\n [cancelClose, group, id],\n )\n\n // For the content panel's own onMouseEnter - just cancels a pending close and marks us\n // as \"landed\", without touching the trigger anchor point `open()` seeds.\n const keepOpen = useCallback(() => {\n cancelClose()\n hasLandedRef.current = true\n }, [cancelClose])\n\n const close = useCallback(() => {\n cancelClose()\n setIsOpen(false)\n group?.setActiveId((current) => (current === id ? null : current))\n }, [cancelClose, group, id])\n\n // A sibling became active (its trigger was hovered) - force-close this one now,\n // instead of relying on this submenu's own hover-zone timeout to eventually catch up.\n useEffect(() => {\n if (isOpen && group && group.activeId !== null && group.activeId !== id) {\n cancelClose()\n setIsOpen(false)\n }\n }, [group, isOpen, id, cancelClose])\n\n useEffect(() => {\n if (!isOpen) {\n return\n }\n\n const handlePointerMove = (e: MouseEvent) => {\n const triggerRect = triggerRef.current?.getBoundingClientRect()\n const contentRect = contentRef.current?.getBoundingClientRect()\n if (!triggerRect || !contentRect) {\n return\n }\n\n const { clientX, clientY } = e\n\n if (isInsideRect(clientX, clientY, triggerRect)) {\n anchorRef.current = { x: clientX, y: clientY }\n hasLandedRef.current = false\n cancelClose()\n return\n }\n\n if (isInsideRect(clientX, clientY, contentRect)) {\n hasLandedRef.current = true\n cancelClose()\n return\n }\n\n const contentIsLeft = contentRect.right <= triggerRect.left + 1\n const isContentTaller = contentRect.height > triggerRect.height\n const boundTop = (isContentTaller ? triggerRect : contentRect).top\n const boundBottom = (isContentTaller ? triggerRect : contentRect).bottom\n\n // Cursor has already moved past the trigger, away from the content entirely - no\n // amount of funnel forgiveness should keep it open.\n const movedPastTrigger = contentIsLeft\n ? clientX >= triggerRect.right - 1\n : clientX <= triggerRect.left + 1\n\n // The strip directly between the trigger and content is always safe, regardless of\n // funnel shape - prevents flapping when moving back and forth in the gap.\n const troughX1 = contentIsLeft ? contentRect.right - 1 : triggerRect.right - 1\n const troughX2 = contentIsLeft ? triggerRect.left + 1 : contentRect.left + 1\n const isInsideTrough = isInsideAxisAlignedRect(\n clientX,\n clientY,\n troughX1,\n boundBottom,\n troughX2,\n boundTop,\n )\n\n if (movedPastTrigger) {\n scheduleClose()\n return\n }\n\n if (isInsideTrough) {\n cancelClose()\n return\n }\n\n if (hasLandedRef.current) {\n scheduleClose()\n return\n }\n\n const anchor = anchorRef.current ?? {\n x: contentIsLeft ? triggerRect.left : triggerRect.right,\n y: (triggerRect.top + triggerRect.bottom) / 2,\n }\n\n const polygon = getFunnelPolygon(anchor, triggerRect, contentRect, contentIsLeft)\n const isInsidePolygon = isPointInPolygon(clientX, clientY, polygon)\n\n if (isInsidePolygon) {\n cancelClose()\n } else {\n scheduleClose()\n }\n }\n\n document.addEventListener('mousemove', handlePointerMove)\n return () => document.removeEventListener('mousemove', handlePointerMove)\n }, [isOpen, cancelClose, scheduleClose])\n\n return { close, contentRef, isOpen, keepOpen, open, triggerRef }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export type DocumentViewMode = 'grid' | 'table';
3
+ export type ViewModeToggleProps = {
4
+ onChange: (viewMode: DocumentViewMode) => void;
5
+ viewMode: DocumentViewMode;
6
+ };
7
+ export declare const ViewModeToggle: React.FC<ViewModeToggleProps>;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ViewModeToggle/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAA;AAE/C,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAA;IAC9C,QAAQ,EAAE,gBAAgB,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAaxD,CAAA"}