@payloadcms/ui 4.0.0-internal.011fd46 → 4.0.0-internal.0b9bec1

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 (1009) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/css/colors.css +3 -0
  3. package/dist/css/forms.css +6 -3
  4. package/dist/css/spacing.css +1 -0
  5. package/dist/css/theme.css +2 -1
  6. package/dist/css/utilities.css +3 -2
  7. package/dist/css/z-index.css +9 -0
  8. package/dist/elements/APIKeyInput/index.css +4 -4
  9. package/dist/elements/AddNewRelation/index.css +28 -28
  10. package/dist/elements/AnimateHeight/usePatchAnimateHeight.d.ts.map +1 -1
  11. package/dist/elements/AppHeader/index.css +2 -15
  12. package/dist/elements/AppHeader/index.d.ts +2 -1
  13. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  14. package/dist/elements/AppHeader/index.js +13 -8
  15. package/dist/elements/AppHeader/index.js.map +1 -1
  16. package/dist/elements/ArrayAction/index.d.ts +2 -0
  17. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  18. package/dist/elements/ArrayAction/index.js +65 -24
  19. package/dist/elements/ArrayAction/index.js.map +1 -1
  20. package/dist/elements/BulkUpload/ActionsBar/index.css +4 -8
  21. package/dist/elements/BulkUpload/ActionsBar/index.d.ts +1 -5
  22. package/dist/elements/BulkUpload/ActionsBar/index.d.ts.map +1 -1
  23. package/dist/elements/BulkUpload/ActionsBar/index.js +15 -22
  24. package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
  25. package/dist/elements/BulkUpload/AddFilesView/index.css +14 -8
  26. package/dist/elements/BulkUpload/AddFilesView/index.d.ts +2 -2
  27. package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
  28. package/dist/elements/BulkUpload/AddFilesView/index.js +41 -36
  29. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  30. package/dist/elements/BulkUpload/AddingFilesView/index.css +158 -6
  31. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts +5 -1
  32. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts.map +1 -1
  33. package/dist/elements/BulkUpload/AddingFilesView/index.js +134 -65
  34. package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
  35. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js +4 -4
  36. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js.map +1 -1
  37. package/dist/elements/BulkUpload/EditForm/index.d.ts +1 -1
  38. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  39. package/dist/elements/BulkUpload/EditForm/index.js +16 -17
  40. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  41. package/dist/elements/BulkUpload/EditForm/types.d.ts +2 -3
  42. package/dist/elements/BulkUpload/EditForm/types.d.ts.map +1 -1
  43. package/dist/elements/BulkUpload/EditForm/types.js.map +1 -1
  44. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -1
  45. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +78 -64
  46. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  47. package/dist/elements/BulkUpload/EditMany/index.d.ts.map +1 -1
  48. package/dist/elements/BulkUpload/EditMany/index.js +28 -10
  49. package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
  50. package/dist/elements/BulkUpload/FileSidebar/index.css +66 -142
  51. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  52. package/dist/elements/BulkUpload/FileSidebar/index.js +42 -175
  53. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  54. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts +2 -2
  55. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts.map +1 -1
  56. package/dist/elements/BulkUpload/FormsManager/createFormData.js +4 -15
  57. package/dist/elements/BulkUpload/FormsManager/createFormData.js.map +1 -1
  58. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  59. package/dist/elements/BulkUpload/FormsManager/index.js +15 -2
  60. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  61. package/dist/elements/BulkUpload/index.css +48 -0
  62. package/dist/elements/BulkUpload/index.d.ts +6 -5
  63. package/dist/elements/BulkUpload/index.d.ts.map +1 -1
  64. package/dist/elements/BulkUpload/index.js +42 -41
  65. package/dist/elements/BulkUpload/index.js.map +1 -1
  66. package/dist/elements/Button/index.d.ts.map +1 -1
  67. package/dist/elements/Button/index.js +5 -0
  68. package/dist/elements/Button/index.js.map +1 -1
  69. package/dist/elements/Card/index.css +1 -1
  70. package/dist/elements/ClipboardAction/ClipboardActionLabel.d.ts.map +1 -1
  71. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts +8 -1
  72. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts.map +1 -1
  73. package/dist/elements/ClipboardAction/clipboardUtilities.js +40 -8
  74. package/dist/elements/ClipboardAction/clipboardUtilities.js.map +1 -1
  75. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js +120 -0
  76. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js.map +1 -0
  77. package/dist/elements/ClipboardAction/index.d.ts.map +1 -1
  78. package/dist/elements/ClipboardAction/index.js +18 -1
  79. package/dist/elements/ClipboardAction/index.js.map +1 -1
  80. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js +144 -0
  81. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js.map +1 -0
  82. package/dist/elements/ClipboardAction/types.d.ts +3 -0
  83. package/dist/elements/ClipboardAction/types.d.ts.map +1 -1
  84. package/dist/elements/ClipboardAction/types.js.map +1 -1
  85. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts +10 -0
  86. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts.map +1 -0
  87. package/dist/elements/ClipboardAction/useCanPasteClipboard.js +21 -0
  88. package/dist/elements/ClipboardAction/useCanPasteClipboard.js.map +1 -0
  89. package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
  90. package/dist/elements/CodeEditor/index.css +5 -0
  91. package/dist/elements/Collapsible/index.d.ts.map +1 -1
  92. package/dist/elements/Collapsible/index.js +2 -0
  93. package/dist/elements/Collapsible/index.js.map +1 -1
  94. package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -1
  95. package/dist/elements/ColumnSelection/Popup.js +5 -1
  96. package/dist/elements/ColumnSelection/Popup.js.map +1 -1
  97. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts +10 -0
  98. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts.map +1 -0
  99. package/dist/elements/ColumnSelection/matchesColumnSearch.js +21 -0
  100. package/dist/elements/ColumnSelection/matchesColumnSearch.js.map +1 -0
  101. package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js +87 -0
  102. package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js.map +1 -0
  103. package/dist/elements/CopyLocaleData/index.js +1 -1
  104. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  105. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
  106. package/dist/elements/CreateDocumentButton/index.js +0 -1
  107. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  108. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  109. package/dist/elements/DatePicker/getFormattedLocale.d.ts.map +1 -1
  110. package/dist/elements/DatePicker/index.css +9 -9
  111. package/dist/elements/DatePicker/index.js +1 -1
  112. package/dist/elements/DatePicker/index.js.map +1 -1
  113. package/dist/elements/Dialog/DialogHeader/index.d.ts +4 -0
  114. package/dist/elements/Dialog/DialogHeader/index.d.ts.map +1 -1
  115. package/dist/elements/Dialog/DialogHeader/index.js +45 -30
  116. package/dist/elements/Dialog/DialogHeader/index.js.map +1 -1
  117. package/dist/elements/Dialog/DialogModal/index.d.ts +5 -0
  118. package/dist/elements/Dialog/DialogModal/index.d.ts.map +1 -1
  119. package/dist/elements/Dialog/DialogModal/index.js +58 -31
  120. package/dist/elements/Dialog/DialogModal/index.js.map +1 -1
  121. package/dist/elements/Dialog/DialogTitle/index.css +9 -0
  122. package/dist/elements/Dialog/DialogTitle/index.d.ts +5 -0
  123. package/dist/elements/Dialog/DialogTitle/index.d.ts.map +1 -0
  124. package/dist/elements/Dialog/DialogTitle/index.js +10 -0
  125. package/dist/elements/Dialog/DialogTitle/index.js.map +1 -0
  126. package/dist/elements/Dialog/index.css +7 -1
  127. package/dist/elements/DocumentControls/index.css +1 -3
  128. package/dist/elements/DocumentControls/index.d.ts +2 -2
  129. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  130. package/dist/elements/DocumentControls/index.js +11 -1
  131. package/dist/elements/DocumentControls/index.js.map +1 -1
  132. package/dist/elements/DocumentDrawer/DrawerHeader/index.d.ts +2 -2
  133. package/dist/elements/DocumentDrawer/DrawerHeader/index.d.ts.map +1 -1
  134. package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
  135. package/dist/elements/DocumentFields/index.css +14 -2
  136. package/dist/elements/DocumentFields/index.d.ts +5 -0
  137. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  138. package/dist/elements/DocumentFields/index.js +9 -1
  139. package/dist/elements/DocumentFields/index.js.map +1 -1
  140. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.d.ts +12 -0
  141. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.d.ts.map +1 -0
  142. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.js +28 -0
  143. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.js.map +1 -0
  144. package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts.map +1 -1
  145. package/dist/elements/DocumentHeader/index.js +2 -3
  146. package/dist/elements/DocumentHeader/index.js.map +1 -1
  147. package/dist/elements/DocumentLocked/index.d.ts +2 -2
  148. package/dist/elements/DocumentLocked/index.d.ts.map +1 -1
  149. package/dist/elements/DocumentLocked/index.js.map +1 -1
  150. package/dist/elements/DraggableSortable/DragOverlayPreview/index.css +1 -1
  151. package/dist/elements/DraggableSortable/useDraggableSortable/index.d.ts.map +1 -1
  152. package/dist/elements/Drawer/index.d.ts.map +1 -1
  153. package/dist/elements/Drawer/index.js +1 -0
  154. package/dist/elements/Drawer/index.js.map +1 -1
  155. package/dist/elements/Drawer/useDrawerSlug.d.ts.map +1 -1
  156. package/dist/elements/DrawerActionHeader/index.css +1 -1
  157. package/dist/elements/DrawerActionHeader/index.d.ts.map +1 -1
  158. package/dist/elements/{BulkUpload/Header → DrawerHeader}/index.css +7 -1
  159. package/dist/elements/DrawerHeader/index.d.ts +10 -0
  160. package/dist/elements/DrawerHeader/index.d.ts.map +1 -0
  161. package/dist/elements/{BulkUpload/Header → DrawerHeader}/index.js +16 -11
  162. package/dist/elements/DrawerHeader/index.js.map +1 -0
  163. package/dist/elements/Dropzone/index.css +5 -13
  164. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +1 -1
  165. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  166. package/dist/elements/EditUpload/index.css +97 -158
  167. package/dist/elements/EditUpload/index.d.ts +2 -1
  168. package/dist/elements/EditUpload/index.d.ts.map +1 -1
  169. package/dist/elements/EditUpload/index.js +209 -231
  170. package/dist/elements/EditUpload/index.js.map +1 -1
  171. package/dist/elements/EditUpload/{library.scss → library.css} +108 -46
  172. package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -1
  173. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts +1 -1
  174. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
  175. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  176. package/dist/elements/FileDetails/FileMeta/index.css +27 -0
  177. package/dist/elements/FileDetails/FileMeta/index.d.ts +1 -1
  178. package/dist/elements/FileDetails/FileMeta/index.d.ts.map +1 -1
  179. package/dist/elements/FileDetails/FileMeta/index.js +1 -1
  180. package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
  181. package/dist/elements/FileDetails/StaticFileDetails/index.css +140 -0
  182. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts +2 -2
  183. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts.map +1 -1
  184. package/dist/elements/FileDetails/StaticFileDetails/index.js +1 -1
  185. package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
  186. package/dist/elements/FileDetails/index.d.ts +1 -1
  187. package/dist/elements/FileDetails/index.d.ts.map +1 -1
  188. package/dist/elements/FileDetails/index.js.map +1 -1
  189. package/dist/elements/FileManager/FilePreview/AudioPreview/index.css +8 -0
  190. package/dist/elements/FileManager/FilePreview/AudioPreview/index.d.ts +10 -0
  191. package/dist/elements/FileManager/FilePreview/AudioPreview/index.d.ts.map +1 -0
  192. package/dist/elements/FileManager/FilePreview/AudioPreview/index.js +24 -0
  193. package/dist/elements/FileManager/FilePreview/AudioPreview/index.js.map +1 -0
  194. package/dist/elements/FileManager/FilePreview/PdfPreview/index.css +9 -0
  195. package/dist/elements/FileManager/FilePreview/PdfPreview/index.d.ts +12 -0
  196. package/dist/elements/FileManager/FilePreview/PdfPreview/index.d.ts.map +1 -0
  197. package/dist/elements/FileManager/FilePreview/PdfPreview/index.js +27 -0
  198. package/dist/elements/FileManager/FilePreview/PdfPreview/index.js.map +1 -0
  199. package/dist/elements/FileManager/FilePreview/VideoPreview/index.css +8 -0
  200. package/dist/elements/FileManager/FilePreview/VideoPreview/index.d.ts +10 -0
  201. package/dist/elements/FileManager/FilePreview/VideoPreview/index.d.ts.map +1 -0
  202. package/dist/elements/FileManager/FilePreview/VideoPreview/index.js +24 -0
  203. package/dist/elements/FileManager/FilePreview/VideoPreview/index.js.map +1 -0
  204. package/dist/elements/FileManager/FilePreview/index.css +83 -0
  205. package/dist/elements/FileManager/FilePreview/index.d.ts +13 -0
  206. package/dist/elements/FileManager/FilePreview/index.d.ts.map +1 -0
  207. package/dist/elements/FileManager/FilePreview/index.js +140 -0
  208. package/dist/elements/FileManager/FilePreview/index.js.map +1 -0
  209. package/dist/elements/FileManager/FileToolbar/index.css +91 -0
  210. package/dist/elements/FileManager/FileToolbar/index.d.ts +14 -0
  211. package/dist/elements/FileManager/FileToolbar/index.d.ts.map +1 -0
  212. package/dist/elements/FileManager/FileToolbar/index.js +106 -0
  213. package/dist/elements/FileManager/FileToolbar/index.js.map +1 -0
  214. package/dist/elements/FileManager/index.css +167 -0
  215. package/dist/elements/FileManager/index.d.ts +19 -0
  216. package/dist/elements/FileManager/index.d.ts.map +1 -0
  217. package/dist/elements/FileManager/index.js +434 -0
  218. package/dist/elements/FileManager/index.js.map +1 -0
  219. package/dist/elements/GroupBy/Popup.d.ts.map +1 -1
  220. package/dist/elements/GroupBy/Popup.js +0 -1
  221. package/dist/elements/GroupBy/Popup.js.map +1 -1
  222. package/dist/elements/HTMLDiff/diff/index.d.ts.map +1 -1
  223. package/dist/elements/HTMLDiff/index.d.ts.map +1 -1
  224. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.css +5 -3
  225. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +1 -0
  226. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
  227. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts +1 -1
  228. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +1 -1
  229. package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +1 -1
  230. package/dist/elements/Hierarchy/DocHeaderButton/index.js +12 -12
  231. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
  232. package/dist/elements/Hierarchy/Field/index.client.js +14 -14
  233. package/dist/elements/Hierarchy/Field/index.client.js.map +1 -1
  234. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -0
  235. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -0
  236. package/dist/elements/Hierarchy/Modal/index.css +88 -0
  237. package/dist/elements/Hierarchy/Modal/index.d.ts +20 -0
  238. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -0
  239. package/dist/elements/Hierarchy/{Drawer → Modal}/index.js +105 -81
  240. package/dist/elements/Hierarchy/Modal/index.js.map +1 -0
  241. package/dist/elements/Hierarchy/{Drawer → Modal}/types.d.ts +22 -18
  242. package/dist/elements/Hierarchy/Modal/types.d.ts.map +1 -0
  243. package/dist/elements/Hierarchy/Modal/types.js.map +1 -0
  244. package/dist/elements/Hierarchy/Modal/useHierarchyModal.d.ts +30 -0
  245. package/dist/elements/Hierarchy/Modal/useHierarchyModal.d.ts.map +1 -0
  246. package/dist/elements/Hierarchy/{Drawer/useHierarchyDrawer.js → Modal/useHierarchyModal.js} +51 -50
  247. package/dist/elements/Hierarchy/Modal/useHierarchyModal.js.map +1 -0
  248. package/dist/elements/Hierarchy/MoveMany/index.d.ts +2 -2
  249. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  250. package/dist/elements/Hierarchy/MoveMany/index.js +9 -9
  251. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  252. package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -1
  253. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts +1 -1
  254. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts.map +1 -1
  255. package/dist/elements/Hierarchy/Tree/TreeNode/index.css +38 -13
  256. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
  257. package/dist/elements/Hierarchy/Tree/TreeNode/index.js +37 -31
  258. package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -1
  259. package/dist/elements/Hierarchy/Tree/index.css +1 -1
  260. package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -1
  261. package/dist/elements/Hierarchy/Tree/index.js +18 -5
  262. package/dist/elements/Hierarchy/Tree/index.js.map +1 -1
  263. package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -1
  264. package/dist/elements/LeaveWithoutSaving/index.d.ts.map +1 -1
  265. package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts.map +1 -1
  266. package/dist/elements/ListControls/index.d.ts.map +1 -1
  267. package/dist/elements/ListControls/index.js +1 -2
  268. package/dist/elements/ListControls/index.js.map +1 -1
  269. package/dist/elements/ListDrawer/DrawerContent.js +1 -1
  270. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  271. package/dist/elements/ListDrawer/Provider.d.ts +1 -1
  272. package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
  273. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  274. package/dist/elements/ListDrawer/index.d.ts.map +1 -1
  275. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.d.ts.map +1 -1
  276. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js +2 -0
  277. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js.map +1 -1
  278. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +4 -4
  279. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  280. package/dist/elements/LivePreview/Toolbar/Controls/index.js +2 -2
  281. package/dist/elements/LivePreview/Toolbar/Controls/index.js.map +1 -1
  282. package/dist/elements/LivePreview/Toolbar/SizeInput/index.css +5 -44
  283. package/dist/elements/LivePreview/Toolbar/SizeInput/index.d.ts.map +1 -1
  284. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js +26 -43
  285. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js.map +1 -1
  286. package/dist/elements/LivePreview/Window/index.css +6 -0
  287. package/dist/elements/LoadingOverlay/reducer.d.ts.map +1 -1
  288. package/dist/elements/Locked/index.css +7 -4
  289. package/dist/elements/Locked/index.d.ts +2 -2
  290. package/dist/elements/Locked/index.d.ts.map +1 -1
  291. package/dist/elements/Locked/index.js +66 -53
  292. package/dist/elements/Locked/index.js.map +1 -1
  293. package/dist/elements/MiniCarousel/index.css +96 -0
  294. package/dist/elements/MiniCarousel/index.d.ts +15 -0
  295. package/dist/elements/MiniCarousel/index.d.ts.map +1 -0
  296. package/dist/elements/MiniCarousel/index.js +84 -0
  297. package/dist/elements/MiniCarousel/index.js.map +1 -0
  298. package/dist/elements/Nav/SettingsMenuButton/index.css +5 -0
  299. package/dist/elements/Nav/SettingsMenuButton/index.d.ts +1 -1
  300. package/dist/elements/Nav/SettingsMenuButton/index.d.ts.map +1 -1
  301. package/dist/elements/Nav/SettingsMenuButton/index.js +1 -1
  302. package/dist/elements/Nav/SettingsMenuButton/index.js.map +1 -1
  303. package/dist/elements/Nav/index.css +2 -7
  304. package/dist/elements/NavGroup/index.css +1 -1
  305. package/dist/elements/Pagination/index.css +5 -0
  306. package/dist/elements/Pagination/index.d.ts.map +1 -1
  307. package/dist/elements/Pagination/index.js +21 -21
  308. package/dist/elements/Pagination/index.js.map +1 -1
  309. package/dist/elements/Popup/PopupTrigger/index.d.ts +1 -0
  310. package/dist/elements/Popup/PopupTrigger/index.d.ts.map +1 -1
  311. package/dist/elements/Popup/PopupTrigger/index.js +3 -0
  312. package/dist/elements/Popup/PopupTrigger/index.js.map +1 -1
  313. package/dist/elements/Popup/index.d.ts +7 -1
  314. package/dist/elements/Popup/index.d.ts.map +1 -1
  315. package/dist/elements/Popup/index.js +3 -1
  316. package/dist/elements/Popup/index.js.map +1 -1
  317. package/dist/elements/PreviewSizes/index.css +149 -0
  318. package/dist/elements/PreviewSizes/index.d.ts +2 -2
  319. package/dist/elements/PreviewSizes/index.d.ts.map +1 -1
  320. package/dist/elements/PreviewSizes/index.js +1 -1
  321. package/dist/elements/PreviewSizes/index.js.map +1 -1
  322. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts.map +1 -1
  323. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.d.ts.map +1 -1
  324. package/dist/elements/ReactSelect/DefaultMenuPortal.d.ts +7 -0
  325. package/dist/elements/ReactSelect/DefaultMenuPortal.d.ts.map +1 -0
  326. package/dist/elements/ReactSelect/DefaultMenuPortal.js +120 -0
  327. package/dist/elements/ReactSelect/DefaultMenuPortal.js.map +1 -0
  328. package/dist/elements/ReactSelect/DropdownIndicator/index.css +1 -1
  329. package/dist/elements/ReactSelect/DropdownIndicator/index.d.ts.map +1 -1
  330. package/dist/elements/ReactSelect/DropdownIndicator/index.js +19 -12
  331. package/dist/elements/ReactSelect/DropdownIndicator/index.js.map +1 -1
  332. package/dist/elements/ReactSelect/MultiValueLabel/index.css +2 -2
  333. package/dist/elements/ReactSelect/getCaptureMenuScroll.d.ts.map +1 -1
  334. package/dist/elements/ReactSelect/getMenuListStyles.d.ts +1 -1
  335. package/dist/elements/ReactSelect/getMenuListStyles.d.ts.map +1 -1
  336. package/dist/elements/ReactSelect/getMenuListStyles.js +13 -5
  337. package/dist/elements/ReactSelect/getMenuListStyles.js.map +1 -1
  338. package/dist/elements/ReactSelect/getMenuStyles.d.ts +10 -0
  339. package/dist/elements/ReactSelect/getMenuStyles.d.ts.map +1 -0
  340. package/dist/elements/ReactSelect/getMenuStyles.js +21 -0
  341. package/dist/elements/ReactSelect/getMenuStyles.js.map +1 -0
  342. package/dist/elements/ReactSelect/index.css +10 -3
  343. package/dist/elements/ReactSelect/index.d.ts.map +1 -1
  344. package/dist/elements/ReactSelect/index.js +25 -102
  345. package/dist/elements/ReactSelect/index.js.map +1 -1
  346. package/dist/elements/ReactSelect/types.d.ts +2 -2
  347. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  348. package/dist/elements/ReactSelect/types.js.map +1 -1
  349. package/dist/elements/RelationshipTable/AddNewButton.d.ts +2 -2
  350. package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -1
  351. package/dist/elements/RelationshipTable/AddNewButton.js +1 -2
  352. package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -1
  353. package/dist/elements/RelationshipTable/Pagination.d.ts +0 -1
  354. package/dist/elements/RelationshipTable/Pagination.d.ts.map +1 -1
  355. package/dist/elements/RelationshipTable/Pagination.js +27 -77
  356. package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
  357. package/dist/elements/RelationshipTable/index.css +1 -4
  358. package/dist/elements/RelationshipTable/index.d.ts +1 -0
  359. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  360. package/dist/elements/RelationshipTable/index.js +4 -3
  361. package/dist/elements/RelationshipTable/index.js.map +1 -1
  362. package/dist/elements/RenderServerComponent/clientOnly.d.ts +8 -0
  363. package/dist/elements/RenderServerComponent/clientOnly.d.ts.map +1 -0
  364. package/dist/elements/RenderServerComponent/clientOnly.js +56 -0
  365. package/dist/elements/RenderServerComponent/clientOnly.js.map +1 -0
  366. package/dist/elements/RenderTitle/index.css +4 -0
  367. package/dist/elements/RenderTitle/index.d.ts.map +1 -1
  368. package/dist/elements/RenderTitle/index.js +18 -13
  369. package/dist/elements/RenderTitle/index.js.map +1 -1
  370. package/dist/elements/Search/ListSearchFilter/index.d.ts.map +1 -1
  371. package/dist/elements/Search/ListSearchFilter/index.js +1 -0
  372. package/dist/elements/Search/ListSearchFilter/index.js.map +1 -1
  373. package/dist/elements/Search/SearchInput/index.d.ts +2 -0
  374. package/dist/elements/Search/SearchInput/index.d.ts.map +1 -1
  375. package/dist/elements/Search/SearchInput/index.js +22 -19
  376. package/dist/elements/Search/SearchInput/index.js.map +1 -1
  377. package/dist/elements/SelectAll/index.css +3 -1
  378. package/dist/elements/SelectRow/index.d.ts +2 -2
  379. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  380. package/dist/elements/SelectRow/index.js.map +1 -1
  381. package/dist/elements/SidebarRow/index.css +0 -2
  382. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -1
  383. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +32 -13
  384. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
  385. package/dist/elements/Table/DefaultCell/fields/index.d.ts +1 -1
  386. package/dist/elements/Table/DefaultCell/fields/index.d.ts.map +1 -1
  387. package/dist/elements/Table/OrderableRow.d.ts.map +1 -1
  388. package/dist/elements/Table/OrderableRowDragPreview.d.ts.map +1 -1
  389. package/dist/elements/Table/index.css +26 -2
  390. package/dist/elements/TableSection/index.css +0 -1
  391. package/dist/elements/Tabs/index.d.ts.map +1 -1
  392. package/dist/elements/Thumbnail/createThumbnail.d.ts.map +1 -1
  393. package/dist/elements/Thumbnail/index.css +41 -0
  394. package/dist/elements/Thumbnail/index.d.ts +4 -4
  395. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  396. package/dist/elements/Thumbnail/index.js +1 -1
  397. package/dist/elements/Thumbnail/index.js.map +1 -1
  398. package/dist/elements/TimezonePicker/index.css +1 -1
  399. package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
  400. package/dist/elements/TimezonePicker/index.js +5 -1
  401. package/dist/elements/TimezonePicker/index.js.map +1 -1
  402. package/dist/elements/Upload/UploadFromURLModal/index.d.ts +11 -0
  403. package/dist/elements/Upload/UploadFromURLModal/index.d.ts.map +1 -0
  404. package/dist/elements/Upload/UploadFromURLModal/index.js +88 -0
  405. package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -0
  406. package/dist/elements/Upload/index.css +134 -45
  407. package/dist/elements/Upload/index.d.ts +3 -8
  408. package/dist/elements/Upload/index.d.ts.map +1 -1
  409. package/dist/elements/Upload/index.js +71 -92
  410. package/dist/elements/Upload/index.js.map +1 -1
  411. package/dist/elements/UserMenu/SubMenuHeader/index.d.ts.map +1 -1
  412. package/dist/elements/UserMenu/SubMenuHeader/index.js +8 -9
  413. package/dist/elements/UserMenu/SubMenuHeader/index.js.map +1 -1
  414. package/dist/elements/UserMenu/index.css +26 -1
  415. package/dist/elements/UserMenu/index.d.ts +1 -0
  416. package/dist/elements/UserMenu/index.d.ts.map +1 -1
  417. package/dist/elements/UserMenu/index.js +2 -1
  418. package/dist/elements/UserMenu/index.js.map +1 -1
  419. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.d.ts.map +1 -1
  420. package/dist/elements/WhereBuilder/Condition/Select/formatOptions.d.ts.map +1 -1
  421. package/dist/elements/WhereBuilder/Condition/validOperators.d.ts.map +1 -1
  422. package/dist/elements/WhereBuilder/field-types.d.ts.map +1 -1
  423. package/dist/exports/client/index.d.ts +8 -5
  424. package/dist/exports/client/index.d.ts.map +1 -1
  425. package/dist/exports/client/index.js +1 -86
  426. package/dist/exports/client/index.js.map +4 -4
  427. package/dist/exports/layouts.d.ts +1 -0
  428. package/dist/exports/layouts.d.ts.map +1 -1
  429. package/dist/exports/layouts.js +1 -0
  430. package/dist/exports/layouts.js.map +1 -1
  431. package/dist/exports/rsc/index.d.ts +3 -0
  432. package/dist/exports/rsc/index.d.ts.map +1 -1
  433. package/dist/exports/rsc/index.js +3 -0
  434. package/dist/exports/rsc/index.js.map +1 -1
  435. package/dist/exports/server.d.ts +3 -0
  436. package/dist/exports/server.d.ts.map +1 -0
  437. package/dist/exports/server.js +2 -0
  438. package/dist/exports/server.js.map +1 -0
  439. package/dist/exports/shared/index.d.ts +1 -0
  440. package/dist/exports/shared/index.d.ts.map +1 -1
  441. package/dist/exports/shared/index.js +2 -2
  442. package/dist/exports/shared/index.js.map +4 -4
  443. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  444. package/dist/fields/Array/ArrayRow.js +97 -160
  445. package/dist/fields/Array/ArrayRow.js.map +1 -1
  446. package/dist/fields/Array/index.d.ts +1 -1
  447. package/dist/fields/Array/index.d.ts.map +1 -1
  448. package/dist/fields/Array/index.js +7 -4
  449. package/dist/fields/Array/index.js.map +1 -1
  450. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  451. package/dist/fields/Blocks/BlockRow.js +134 -195
  452. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  453. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.css +1 -1
  454. package/dist/fields/Blocks/BlockSelector/index.css +2 -5
  455. package/dist/fields/Blocks/RowActions.d.ts +2 -0
  456. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  457. package/dist/fields/Blocks/RowActions.js +23 -20
  458. package/dist/fields/Blocks/RowActions.js.map +1 -1
  459. package/dist/fields/Blocks/SectionTitle/index.d.ts.map +1 -1
  460. package/dist/fields/Blocks/SectionTitle/index.js +1 -0
  461. package/dist/fields/Blocks/SectionTitle/index.js.map +1 -1
  462. package/dist/fields/Blocks/index.d.ts +1 -1
  463. package/dist/fields/Blocks/index.d.ts.map +1 -1
  464. package/dist/fields/Blocks/index.js +9 -6
  465. package/dist/fields/Blocks/index.js.map +1 -1
  466. package/dist/fields/Checkbox/index.css +2 -2
  467. package/dist/fields/Checkbox/index.d.ts +1 -1
  468. package/dist/fields/Code/index.css +1 -1
  469. package/dist/fields/Code/index.d.ts +2 -2
  470. package/dist/fields/Collapsible/index.d.ts +1 -1
  471. package/dist/fields/ConfirmPassword/index.d.ts +4 -0
  472. package/dist/fields/ConfirmPassword/index.d.ts.map +1 -1
  473. package/dist/fields/ConfirmPassword/index.js +37 -33
  474. package/dist/fields/ConfirmPassword/index.js.map +1 -1
  475. package/dist/fields/DateTime/index.d.ts +1 -1
  476. package/dist/fields/Email/index.d.ts +1 -1
  477. package/dist/fields/Group/index.css +4 -10
  478. package/dist/fields/Group/index.d.ts +2 -2
  479. package/dist/fields/JSON/index.d.ts +1 -1
  480. package/dist/fields/Join/index.css +9 -0
  481. package/dist/fields/Join/index.d.ts +1 -1
  482. package/dist/fields/Join/index.d.ts.map +1 -1
  483. package/dist/fields/Join/index.js +13 -9
  484. package/dist/fields/Join/index.js.map +1 -1
  485. package/dist/fields/Number/Input.d.ts.map +1 -1
  486. package/dist/fields/Number/Input.js +62 -46
  487. package/dist/fields/Number/Input.js.map +1 -1
  488. package/dist/fields/Number/index.css +19 -0
  489. package/dist/fields/Number/index.d.ts +1 -1
  490. package/dist/fields/Number/types.d.ts +10 -0
  491. package/dist/fields/Number/types.d.ts.map +1 -1
  492. package/dist/fields/Number/types.js.map +1 -1
  493. package/dist/fields/Password/input.d.ts.map +1 -1
  494. package/dist/fields/Password/input.js +33 -29
  495. package/dist/fields/Password/input.js.map +1 -1
  496. package/dist/fields/Password/types.d.ts +7 -3
  497. package/dist/fields/Password/types.d.ts.map +1 -1
  498. package/dist/fields/Password/types.js.map +1 -1
  499. package/dist/fields/Point/index.d.ts +1 -1
  500. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  501. package/dist/fields/Relationship/Input.js +4 -0
  502. package/dist/fields/Relationship/Input.js.map +1 -1
  503. package/dist/fields/Relationship/findOptionsByValue.d.ts.map +1 -1
  504. package/dist/fields/Relationship/index.d.ts +1 -1
  505. package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
  506. package/dist/fields/Relationship/select-components/MultiValueLabel/index.css +2 -2
  507. package/dist/fields/Relationship/types.d.ts +4 -0
  508. package/dist/fields/Relationship/types.d.ts.map +1 -1
  509. package/dist/fields/Relationship/types.js.map +1 -1
  510. package/dist/fields/Row/index.d.ts +1 -1
  511. package/dist/fields/Select/Input.d.ts +4 -0
  512. package/dist/fields/Select/Input.d.ts.map +1 -1
  513. package/dist/fields/Select/Input.js +45 -40
  514. package/dist/fields/Select/Input.js.map +1 -1
  515. package/dist/fields/Select/index.d.ts +1 -1
  516. package/dist/fields/Select/index.d.ts.map +1 -1
  517. package/dist/fields/Slug/index.d.ts +7 -5
  518. package/dist/fields/Slug/index.d.ts.map +1 -1
  519. package/dist/fields/Slug/index.js +39 -28
  520. package/dist/fields/Slug/index.js.map +1 -1
  521. package/dist/fields/Tabs/index.d.ts +1 -1
  522. package/dist/fields/Text/Input.d.ts.map +1 -1
  523. package/dist/fields/Text/Input.js +44 -37
  524. package/dist/fields/Text/Input.js.map +1 -1
  525. package/dist/fields/Text/index.d.ts +1 -1
  526. package/dist/fields/Text/types.d.ts +11 -2
  527. package/dist/fields/Text/types.d.ts.map +1 -1
  528. package/dist/fields/Text/types.js.map +1 -1
  529. package/dist/fields/Textarea/Input.d.ts.map +1 -1
  530. package/dist/fields/Textarea/Input.js +27 -23
  531. package/dist/fields/Textarea/Input.js.map +1 -1
  532. package/dist/fields/Textarea/index.css +1 -1
  533. package/dist/fields/Textarea/index.d.ts +1 -1
  534. package/dist/fields/Textarea/types.d.ts +4 -0
  535. package/dist/fields/Textarea/types.d.ts.map +1 -1
  536. package/dist/fields/Textarea/types.js.map +1 -1
  537. package/dist/fields/Upload/Input.d.ts.map +1 -1
  538. package/dist/fields/Upload/Input.js +12 -11
  539. package/dist/fields/Upload/Input.js.map +1 -1
  540. package/dist/fields/Upload/index.css +19 -4
  541. package/dist/fields/Upload/index.js +1 -1
  542. package/dist/fields/Upload/index.js.map +1 -1
  543. package/dist/fields/index.d.ts.map +1 -1
  544. package/dist/fields/index.js +2 -0
  545. package/dist/fields/index.js.map +1 -1
  546. package/dist/fields/mergeFieldStyles.d.ts +1 -1
  547. package/dist/fields/mergeFieldStyles.d.ts.map +1 -1
  548. package/dist/forms/Form/context.d.ts.map +1 -1
  549. package/dist/forms/Form/createNestedClientFieldPath.d.ts.map +1 -1
  550. package/dist/forms/Form/errorMessages.d.ts.map +1 -1
  551. package/dist/forms/Form/index.d.ts.map +1 -1
  552. package/dist/forms/Form/index.js +3 -14
  553. package/dist/forms/Form/index.js.map +1 -1
  554. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  555. package/dist/forms/Form/reduceToSerializableFields.d.ts.map +1 -1
  556. package/dist/forms/Form/rowHelpers.d.ts.map +1 -1
  557. package/dist/forms/Form/rows.d.ts.map +1 -1
  558. package/dist/forms/Form/types.d.ts +2 -2
  559. package/dist/forms/Form/types.d.ts.map +1 -1
  560. package/dist/forms/Form/types.js.map +1 -1
  561. package/dist/forms/RenderFields/RenderField.d.ts +1 -1
  562. package/dist/forms/RenderFields/RenderField.d.ts.map +1 -1
  563. package/dist/forms/RenderFields/RenderField.js +10 -0
  564. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  565. package/dist/forms/RenderFields/index.css +17 -3
  566. package/dist/forms/WatchChildErrors/buildPathSegments.d.ts.map +1 -1
  567. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts +1 -0
  568. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  569. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +21 -5
  570. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  571. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.d.ts +2 -2
  572. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.d.ts.map +1 -1
  573. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.js.map +1 -1
  574. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.d.ts +2 -2
  575. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.d.ts.map +1 -1
  576. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.js.map +1 -1
  577. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts +2 -2
  578. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts.map +1 -1
  579. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js.map +1 -1
  580. package/dist/forms/fieldSchemasToFormState/index.d.ts +2 -1
  581. package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
  582. package/dist/forms/fieldSchemasToFormState/index.js +2 -0
  583. package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
  584. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts +2 -1
  585. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
  586. package/dist/forms/fieldSchemasToFormState/iterateFields.js +2 -0
  587. package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
  588. package/dist/forms/useField/index.d.ts.map +1 -1
  589. package/dist/forms/withCondition/index.d.ts +1 -1
  590. package/dist/forms/withCondition/index.d.ts.map +1 -1
  591. package/dist/graphics/Icon/index.js +1 -1
  592. package/dist/graphics/Icon/index.js.map +1 -1
  593. package/dist/hooks/useDebouncedCallback.d.ts.map +1 -1
  594. package/dist/hooks/useDelay.d.ts.map +1 -1
  595. package/dist/hooks/useElementHeightVariable.d.ts +15 -0
  596. package/dist/hooks/useElementHeightVariable.d.ts.map +1 -0
  597. package/dist/hooks/useElementHeightVariable.js +53 -0
  598. package/dist/hooks/useElementHeightVariable.js.map +1 -0
  599. package/dist/hooks/useHotkey.d.ts.map +1 -1
  600. package/dist/hooks/useIntersect.d.ts.map +1 -1
  601. package/dist/hooks/usePopupWindow.d.ts +1 -1
  602. package/dist/hooks/usePopupWindow.d.ts.map +1 -1
  603. package/dist/hooks/useRelatedCollections.d.ts.map +1 -1
  604. package/dist/hooks/useResize.d.ts.map +1 -1
  605. package/dist/hooks/useUseAsTitle.d.ts.map +1 -1
  606. package/dist/icons/Crop/index.css +5 -0
  607. package/dist/icons/Crop/index.d.ts +7 -0
  608. package/dist/icons/Crop/index.d.ts.map +1 -0
  609. package/dist/icons/Crop/index.js +24 -0
  610. package/dist/icons/Crop/index.js.map +1 -0
  611. package/dist/icons/Download/index.css +5 -0
  612. package/dist/icons/{ExternalLink → Download}/index.d.ts +1 -1
  613. package/dist/icons/Download/index.d.ts.map +1 -0
  614. package/dist/icons/Download/index.js +27 -0
  615. package/dist/icons/Download/index.js.map +1 -0
  616. package/dist/icons/{ExternalLink → NewTab}/index.css +1 -1
  617. package/dist/icons/NewTab/index.d.ts +7 -0
  618. package/dist/icons/NewTab/index.d.ts.map +1 -0
  619. package/dist/icons/NewTab/index.js +25 -0
  620. package/dist/icons/NewTab/index.js.map +1 -0
  621. package/dist/icons/Replace/index.css +5 -0
  622. package/dist/icons/Replace/index.d.ts +6 -0
  623. package/dist/icons/Replace/index.d.ts.map +1 -0
  624. package/dist/icons/Replace/index.js +20 -0
  625. package/dist/icons/Replace/index.js.map +1 -0
  626. package/dist/icons/Reset/index.css +5 -0
  627. package/dist/icons/Reset/index.d.ts +7 -0
  628. package/dist/icons/Reset/index.d.ts.map +1 -0
  629. package/dist/icons/Reset/index.js +25 -0
  630. package/dist/icons/Reset/index.js.map +1 -0
  631. package/dist/icons/Swap/index.js +1 -1
  632. package/dist/icons/Swap/index.js.map +1 -1
  633. package/dist/layouts/Root/index.d.ts.map +1 -1
  634. package/dist/layouts/Root/index.js +7 -3
  635. package/dist/layouts/Root/index.js.map +1 -1
  636. package/dist/layouts/Root/index.spec.js +20 -0
  637. package/dist/layouts/Root/index.spec.js.map +1 -0
  638. package/dist/layouts/Root/viewport.d.ts +5 -0
  639. package/dist/layouts/Root/viewport.d.ts.map +1 -0
  640. package/dist/layouts/Root/viewport.js +17 -0
  641. package/dist/layouts/Root/viewport.js.map +1 -0
  642. package/dist/providers/Auth/index.d.ts +7 -7
  643. package/dist/providers/Auth/index.d.ts.map +1 -1
  644. package/dist/providers/Auth/index.js.map +1 -1
  645. package/dist/providers/ClientFunction/index.d.ts.map +1 -1
  646. package/dist/providers/DocumentInfo/index.js.map +1 -1
  647. package/dist/providers/DocumentInfo/types.d.ts +6 -6
  648. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  649. package/dist/providers/DocumentInfo/types.js.map +1 -1
  650. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
  651. package/dist/providers/DocumentTitle/index.d.ts +1 -0
  652. package/dist/providers/DocumentTitle/index.d.ts.map +1 -1
  653. package/dist/providers/DocumentTitle/index.js +2 -0
  654. package/dist/providers/DocumentTitle/index.js.map +1 -1
  655. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  656. package/dist/providers/ListQuery/index.js +8 -1
  657. package/dist/providers/ListQuery/index.js.map +1 -1
  658. package/dist/providers/ListQuery/mergeQuery.d.ts.map +1 -1
  659. package/dist/providers/ListQuery/sanitizeQuery.d.ts.map +1 -1
  660. package/dist/providers/LivePreview/sizeReducer.d.ts +1 -1
  661. package/dist/providers/LivePreview/sizeReducer.d.ts.map +1 -1
  662. package/dist/providers/Root/index.d.ts +2 -2
  663. package/dist/providers/Root/index.d.ts.map +1 -1
  664. package/dist/providers/Root/index.js.map +1 -1
  665. package/dist/providers/TableColumns/buildColumnState/filterFields.d.ts.map +1 -1
  666. package/dist/providers/TableColumns/buildColumnState/filterFieldsWithPermissions.d.ts.map +1 -1
  667. package/dist/providers/TableColumns/buildColumnState/findValueFromPath.d.ts.map +1 -1
  668. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  669. package/dist/providers/TableColumns/buildColumnState/index.js +1 -1
  670. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  671. package/dist/providers/TableColumns/buildColumnState/index.spec.js +40 -0
  672. package/dist/providers/TableColumns/buildColumnState/index.spec.js.map +1 -0
  673. package/dist/providers/TableColumns/getInitialColumns.d.ts +1 -1
  674. package/dist/providers/TableColumns/getInitialColumns.d.ts.map +1 -1
  675. package/dist/providers/Theme/index.d.ts +2 -2
  676. package/dist/providers/Theme/index.d.ts.map +1 -1
  677. package/dist/providers/Theme/index.js +2 -1
  678. package/dist/providers/Theme/index.js.map +1 -1
  679. package/dist/providers/Theme/shared.d.ts +3 -0
  680. package/dist/providers/Theme/shared.d.ts.map +1 -0
  681. package/dist/providers/Theme/shared.js +2 -0
  682. package/dist/providers/Theme/shared.js.map +1 -0
  683. package/dist/providers/UploadEdits/index.d.ts.map +1 -1
  684. package/dist/providers/UploadHandlers/index.d.ts +2 -7
  685. package/dist/providers/UploadHandlers/index.d.ts.map +1 -1
  686. package/dist/providers/UploadHandlers/index.js +102 -42
  687. package/dist/providers/UploadHandlers/index.js.map +1 -1
  688. package/dist/scss/app.scss +3 -2
  689. package/dist/styles.css +1380 -1
  690. package/dist/templates/Default/index.d.ts.map +1 -1
  691. package/dist/templates/Default/index.js +7 -1
  692. package/dist/templates/Default/index.js.map +1 -1
  693. package/dist/utilities/api.d.ts.map +1 -1
  694. package/dist/utilities/buildClientFieldSchemaMap/index.d.ts.map +1 -1
  695. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
  696. package/dist/utilities/buildFieldSchemaMap/index.d.ts.map +1 -1
  697. package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts.map +1 -1
  698. package/dist/utilities/buildFormState.d.ts +2 -2
  699. package/dist/utilities/buildFormState.d.ts.map +1 -1
  700. package/dist/utilities/buildFormState.js +1 -0
  701. package/dist/utilities/buildFormState.js.map +1 -1
  702. package/dist/utilities/checkDependencies.d.ts.map +1 -1
  703. package/dist/utilities/combineFieldLabel.d.ts.map +1 -1
  704. package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
  705. package/dist/utilities/copyDataFromLocale.js +1 -0
  706. package/dist/utilities/copyDataFromLocale.js.map +1 -1
  707. package/dist/utilities/filterOutUploadFields.d.ts.map +1 -1
  708. package/dist/utilities/findLocaleFromCode.d.ts.map +1 -1
  709. package/dist/utilities/formatAbsoluteURL.d.ts.map +1 -1
  710. package/dist/utilities/formatDocTitle/formatDateTitle.d.ts.map +1 -1
  711. package/dist/utilities/formatDocTitle/formatRelationshipTitle.d.ts.map +1 -1
  712. package/dist/utilities/formatDocTitle/index.d.ts +1 -1
  713. package/dist/utilities/formatDocTitle/index.d.ts.map +1 -1
  714. package/dist/utilities/formatDocTitle/index.js +1 -1
  715. package/dist/utilities/formatDocTitle/index.js.map +1 -1
  716. package/dist/utilities/formatFields.d.ts.map +1 -1
  717. package/dist/utilities/formatMetadata.d.ts.map +1 -1
  718. package/dist/utilities/formatRelativeDate.d.ts +15 -0
  719. package/dist/utilities/formatRelativeDate.d.ts.map +1 -0
  720. package/dist/utilities/formatRelativeDate.js +62 -0
  721. package/dist/utilities/formatRelativeDate.js.map +1 -0
  722. package/dist/utilities/generateFieldID.d.ts.map +1 -1
  723. package/dist/utilities/getColumns.d.ts.map +1 -1
  724. package/dist/utilities/getDisplayedFieldValue.d.ts.map +1 -1
  725. package/dist/utilities/getDocPreferences.d.ts +2 -2
  726. package/dist/utilities/getDocPreferences.d.ts.map +1 -1
  727. package/dist/utilities/getDocPreferences.js.map +1 -1
  728. package/dist/utilities/getDocumentData.d.ts +2 -2
  729. package/dist/utilities/getDocumentData.d.ts.map +1 -1
  730. package/dist/utilities/getDocumentData.js.map +1 -1
  731. package/dist/utilities/getDocumentPermissions.d.ts.map +1 -1
  732. package/dist/utilities/getGlobalData.d.ts +2 -2
  733. package/dist/utilities/getGlobalData.d.ts.map +1 -1
  734. package/dist/utilities/getGlobalData.js.map +1 -1
  735. package/dist/utilities/getHasScheduledPublish.d.ts +2 -2
  736. package/dist/utilities/getHasScheduledPublish.d.ts.map +1 -1
  737. package/dist/utilities/getHasScheduledPublish.js.map +1 -1
  738. package/dist/utilities/getIsLocked.d.ts +2 -2
  739. package/dist/utilities/getIsLocked.d.ts.map +1 -1
  740. package/dist/utilities/getIsLocked.js.map +1 -1
  741. package/dist/utilities/getLanguageDir.d.ts +12 -0
  742. package/dist/utilities/getLanguageDir.d.ts.map +1 -0
  743. package/dist/utilities/getLanguageDir.js +12 -0
  744. package/dist/utilities/getLanguageDir.js.map +1 -0
  745. package/dist/utilities/getOffsetTop.d.ts.map +1 -1
  746. package/dist/utilities/getRequestHighContrast.d.ts.map +1 -1
  747. package/dist/utilities/getRequestLanguage.d.ts.map +1 -1
  748. package/dist/utilities/getRequestTheme.d.ts +1 -1
  749. package/dist/utilities/getRequestTheme.d.ts.map +1 -1
  750. package/dist/utilities/getRequestTheme.js +1 -1
  751. package/dist/utilities/getRequestTheme.js.map +1 -1
  752. package/dist/utilities/getRouteWithoutAdmin.d.ts.map +1 -1
  753. package/dist/utilities/getSupportedMonacoLocale.d.ts.map +1 -1
  754. package/dist/utilities/getVersions.d.ts +2 -2
  755. package/dist/utilities/getVersions.d.ts.map +1 -1
  756. package/dist/utilities/getVersions.js.map +1 -1
  757. package/dist/utilities/handleAuthRedirect.d.ts +2 -2
  758. package/dist/utilities/handleAuthRedirect.d.ts.map +1 -1
  759. package/dist/utilities/handleAuthRedirect.js.map +1 -1
  760. package/dist/utilities/handleBackToDashboard.d.ts.map +1 -1
  761. package/dist/utilities/handleFormStateLocking.d.ts +2 -2
  762. package/dist/utilities/handleFormStateLocking.d.ts.map +1 -1
  763. package/dist/utilities/handleFormStateLocking.js.map +1 -1
  764. package/dist/utilities/handleGoBack.d.ts.map +1 -1
  765. package/dist/utilities/handleLivePreview.d.ts +1 -0
  766. package/dist/utilities/handleLivePreview.d.ts.map +1 -1
  767. package/dist/utilities/handlePreview.d.ts.map +1 -1
  768. package/dist/utilities/handleServerFunctions.d.ts +32 -8
  769. package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
  770. package/dist/utilities/handleServerFunctions.js +17 -37
  771. package/dist/utilities/handleServerFunctions.js.map +1 -1
  772. package/dist/utilities/handleStaleDataCheck.d.ts.map +1 -1
  773. package/dist/utilities/handleTakeOver.d.ts +5 -5
  774. package/dist/utilities/handleTakeOver.d.ts.map +1 -1
  775. package/dist/utilities/handleTakeOver.js.map +1 -1
  776. package/dist/utilities/hasOptionLabelJSXElement.d.ts.map +1 -1
  777. package/dist/utilities/hasSavePermission.d.ts.map +1 -1
  778. package/dist/utilities/initReq.d.ts.map +1 -1
  779. package/dist/utilities/isClientUserObject.d.ts +2 -2
  780. package/dist/utilities/isClientUserObject.d.ts.map +1 -1
  781. package/dist/utilities/isClientUserObject.js.map +1 -1
  782. package/dist/utilities/isCustomAdminView.d.ts.map +1 -1
  783. package/dist/utilities/isEditing.d.ts.map +1 -1
  784. package/dist/utilities/isPathMatchingRoute.d.ts.map +1 -1
  785. package/dist/utilities/isPublicAdminRoute.d.ts.map +1 -1
  786. package/dist/utilities/isURLAllowed.d.ts.map +1 -1
  787. package/dist/utilities/isURLAllowed.js +9 -3
  788. package/dist/utilities/isURLAllowed.js.map +1 -1
  789. package/dist/utilities/recentlyViewed.d.ts +16 -0
  790. package/dist/utilities/recentlyViewed.d.ts.map +1 -0
  791. package/dist/utilities/recentlyViewed.js +21 -0
  792. package/dist/utilities/recentlyViewed.js.map +1 -0
  793. package/dist/utilities/recentlyViewed.spec.js +92 -0
  794. package/dist/utilities/recentlyViewed.spec.js.map +1 -0
  795. package/dist/utilities/reduceFieldsToOptions.d.ts.map +1 -1
  796. package/dist/utilities/reduceFieldsToValuesWithValidation.d.ts.map +1 -1
  797. package/dist/utilities/renderTable.d.ts +2 -2
  798. package/dist/utilities/renderTable.d.ts.map +1 -1
  799. package/dist/utilities/resolveFilterOptions.d.ts +1 -1
  800. package/dist/utilities/resolveFilterOptions.d.ts.map +1 -1
  801. package/dist/utilities/sanitizeFilterOptionsQuery.d.ts.map +1 -1
  802. package/dist/utilities/scrollToID.d.ts.map +1 -1
  803. package/dist/utilities/selectiveCache.d.ts.map +1 -1
  804. package/dist/utilities/serverFunctionRegistry.d.ts +18 -0
  805. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -0
  806. package/dist/utilities/serverFunctionRegistry.js +43 -0
  807. package/dist/utilities/serverFunctionRegistry.js.map +1 -0
  808. package/dist/utilities/setsAreEqual.d.ts.map +1 -1
  809. package/dist/utilities/slugify.d.ts +1 -1
  810. package/dist/utilities/slugify.js +1 -1
  811. package/dist/utilities/slugify.js.map +1 -1
  812. package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
  813. package/dist/utilities/upsertPreferences.d.ts.map +1 -1
  814. package/dist/views/API/index.client.js +2 -2
  815. package/dist/views/API/index.client.js.map +1 -1
  816. package/dist/views/Account/ResetPreferences/index.d.ts +2 -2
  817. package/dist/views/Account/ResetPreferences/index.d.ts.map +1 -1
  818. package/dist/views/Account/ResetPreferences/index.js.map +1 -1
  819. package/dist/views/Account/Settings/index.d.ts +2 -2
  820. package/dist/views/Account/Settings/index.d.ts.map +1 -1
  821. package/dist/views/Account/Settings/index.js.map +1 -1
  822. package/dist/views/CollectionTrash/generateCollectionTrashMetadata.d.ts.map +1 -1
  823. package/dist/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.d.ts.map +1 -1
  824. package/dist/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.js +27 -23
  825. package/dist/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.js.map +1 -1
  826. package/dist/views/Dashboard/Default/ModularDashboard/index.css +2 -0
  827. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +2 -2
  828. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  829. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +2 -2
  830. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  831. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.d.ts +2 -2
  832. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.d.ts.map +1 -1
  833. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.js.map +1 -1
  834. package/dist/views/Dashboard/Default/index.d.ts +2 -2
  835. package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
  836. package/dist/views/Dashboard/Default/index.js.map +1 -1
  837. package/dist/views/Document/getCustomDocumentViewByKey.d.ts +1 -1
  838. package/dist/views/Document/getCustomDocumentViewByKey.d.ts.map +1 -1
  839. package/dist/views/Document/getCustomViewByRoute.d.ts +1 -1
  840. package/dist/views/Document/getCustomViewByRoute.d.ts.map +1 -1
  841. package/dist/views/Document/getDocumentView.d.ts.map +1 -1
  842. package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
  843. package/dist/views/Document/index.d.ts +1 -1
  844. package/dist/views/Document/index.d.ts.map +1 -1
  845. package/dist/views/Document/index.js +18 -1
  846. package/dist/views/Document/index.js.map +1 -1
  847. package/dist/views/Document/recordRecentlyViewed.d.ts +12 -0
  848. package/dist/views/Document/recordRecentlyViewed.d.ts.map +1 -0
  849. package/dist/views/Document/recordRecentlyViewed.js +40 -0
  850. package/dist/views/Document/recordRecentlyViewed.js.map +1 -0
  851. package/dist/views/Document/renderDocumentSlots.d.ts +1 -0
  852. package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -1
  853. package/dist/views/Document/renderDocumentSlots.js +47 -1
  854. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  855. package/dist/views/Edit/index.css +151 -6
  856. package/dist/views/Edit/index.d.ts +1 -1
  857. package/dist/views/Edit/index.d.ts.map +1 -1
  858. package/dist/views/Edit/index.js +34 -31
  859. package/dist/views/Edit/index.js.map +1 -1
  860. package/dist/views/HierarchyList/HierarchyTable/SlotTable.css +2 -2
  861. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts +2 -2
  862. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts.map +1 -1
  863. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js.map +1 -1
  864. package/dist/views/HierarchyList/HierarchyTable/types.d.ts +2 -2
  865. package/dist/views/HierarchyList/HierarchyTable/types.d.ts.map +1 -1
  866. package/dist/views/HierarchyList/HierarchyTable/types.js.map +1 -1
  867. package/dist/views/HierarchyList/TypeFilter/index.d.ts.map +1 -1
  868. package/dist/views/HierarchyList/TypeFilter/index.js +3 -0
  869. package/dist/views/HierarchyList/TypeFilter/index.js.map +1 -1
  870. package/dist/views/HierarchyList/index.d.ts.map +1 -1
  871. package/dist/views/HierarchyList/index.js +2 -6
  872. package/dist/views/HierarchyList/index.js.map +1 -1
  873. package/dist/views/List/ListHeader/index.css +5 -0
  874. package/dist/views/List/createSerializableValue.d.ts.map +1 -1
  875. package/dist/views/List/extractRelationshipDisplayValue.d.ts.map +1 -1
  876. package/dist/views/List/extractValueOrRelationshipID.d.ts.map +1 -1
  877. package/dist/views/List/generateListViewMetadata.d.ts.map +1 -1
  878. package/dist/views/List/handleGroupBy.d.ts.map +1 -1
  879. package/dist/views/List/handleHierarchy.d.ts +1 -1
  880. package/dist/views/List/handleHierarchy.d.ts.map +1 -1
  881. package/dist/views/List/index.client.js +3 -3
  882. package/dist/views/List/index.client.js.map +1 -1
  883. package/dist/views/List/index.d.ts.map +1 -1
  884. package/dist/views/List/renderListViewSlots.d.ts.map +1 -1
  885. package/dist/views/List/resolveAllFilterOptions.d.ts.map +1 -1
  886. package/dist/views/List/transformColumnsToSelect.d.ts.map +1 -1
  887. package/dist/views/Logout/LogoutClient.d.ts +14 -0
  888. package/dist/views/Logout/LogoutClient.d.ts.map +1 -1
  889. package/dist/views/Logout/LogoutClient.js +6 -4
  890. package/dist/views/Logout/LogoutClient.js.map +1 -1
  891. package/dist/views/Logout/index.d.ts.map +1 -1
  892. package/dist/views/Logout/index.js +7 -2
  893. package/dist/views/Logout/index.js.map +1 -1
  894. package/dist/views/NotFound/page.d.ts.map +1 -1
  895. package/dist/views/Root/generateCustomViewMetadata.d.ts.map +1 -1
  896. package/dist/views/Root/generatePageMetadata.d.ts.map +1 -1
  897. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts +1 -1
  898. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
  899. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts +1 -1
  900. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
  901. package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
  902. package/dist/views/Root/getCustomViewByRoute.d.ts.map +1 -1
  903. package/dist/views/Root/getRouteData.d.ts.map +1 -1
  904. package/dist/views/Root/index.d.ts +12 -1
  905. package/dist/views/Root/index.d.ts.map +1 -1
  906. package/dist/views/Root/index.js +10 -3
  907. package/dist/views/Root/index.js.map +1 -1
  908. package/dist/views/Unauthorized/index.d.ts.map +1 -1
  909. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.d.ts.map +1 -1
  910. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -1
  911. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.d.ts.map +1 -1
  912. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts.map +1 -1
  913. package/dist/views/Version/RenderFieldsToDiff/fields/index.js +1 -0
  914. package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -1
  915. package/dist/views/Version/RenderFieldsToDiff/index.d.ts.map +1 -1
  916. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts.map +1 -1
  917. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +1 -0
  918. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -1
  919. package/dist/views/Version/SelectComparison/VersionDrawer/index.d.ts.map +1 -1
  920. package/dist/views/Version/SelectComparison/index.d.ts.map +1 -1
  921. package/dist/views/Version/SelectComparison/index.js +1 -0
  922. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  923. package/dist/views/Versions/buildColumns.d.ts +1 -1
  924. package/dist/views/Versions/buildColumns.d.ts.map +1 -1
  925. package/dist/views/Versions/fetchVersions.d.ts +8 -8
  926. package/dist/views/Versions/fetchVersions.d.ts.map +1 -1
  927. package/dist/views/Versions/fetchVersions.js.map +1 -1
  928. package/dist/views/Versions/types.d.ts +2 -2
  929. package/dist/views/Versions/types.d.ts.map +1 -1
  930. package/dist/views/Versions/types.js.map +1 -1
  931. package/dist/widgets/CollectionCards/getCollectionCardsData.d.ts +20 -0
  932. package/dist/widgets/CollectionCards/getCollectionCardsData.d.ts.map +1 -0
  933. package/dist/widgets/CollectionCards/getCollectionCardsData.js +29 -0
  934. package/dist/widgets/CollectionCards/getCollectionCardsData.js.map +1 -0
  935. package/dist/widgets/CollectionCards/index.client.d.ts +5 -0
  936. package/dist/widgets/CollectionCards/index.client.d.ts.map +1 -0
  937. package/dist/widgets/CollectionCards/index.client.js +139 -0
  938. package/dist/widgets/CollectionCards/index.client.js.map +1 -0
  939. package/dist/widgets/CollectionQuery/SortField/index.d.ts +3 -0
  940. package/dist/widgets/CollectionQuery/SortField/index.d.ts.map +1 -0
  941. package/dist/widgets/CollectionQuery/SortField/index.js +118 -0
  942. package/dist/widgets/CollectionQuery/SortField/index.js.map +1 -0
  943. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.d.ts +18 -0
  944. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.d.ts.map +1 -0
  945. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.js +91 -0
  946. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.js.map +1 -0
  947. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.spec.js +100 -0
  948. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.spec.js.map +1 -0
  949. package/dist/widgets/CollectionQuery/index.css +64 -0
  950. package/dist/widgets/CollectionQuery/index.d.ts +16 -0
  951. package/dist/widgets/CollectionQuery/index.d.ts.map +1 -0
  952. package/dist/widgets/CollectionQuery/index.js +328 -0
  953. package/dist/widgets/CollectionQuery/index.js.map +1 -0
  954. package/dist/widgets/RecentlyViewed/CollectionsField/index.css +14 -0
  955. package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts +10 -0
  956. package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts.map +1 -0
  957. package/dist/widgets/RecentlyViewed/CollectionsField/index.js +76 -0
  958. package/dist/widgets/RecentlyViewed/CollectionsField/index.js.map +1 -0
  959. package/dist/widgets/RecentlyViewed/index.d.ts +10 -0
  960. package/dist/widgets/RecentlyViewed/index.d.ts.map +1 -0
  961. package/dist/widgets/RecentlyViewed/index.js +148 -0
  962. package/dist/widgets/RecentlyViewed/index.js.map +1 -0
  963. package/dist/widgets/WidgetCard/index.css +155 -0
  964. package/dist/widgets/WidgetCard/index.d.ts +19 -0
  965. package/dist/widgets/WidgetCard/index.d.ts.map +1 -0
  966. package/dist/widgets/WidgetCard/index.js +49 -0
  967. package/dist/widgets/WidgetCard/index.js.map +1 -0
  968. package/package.json +59 -8
  969. package/dist/elements/BulkUpload/Header/index.d.ts +0 -9
  970. package/dist/elements/BulkUpload/Header/index.d.ts.map +0 -1
  971. package/dist/elements/BulkUpload/Header/index.js.map +0 -1
  972. package/dist/elements/FileDetails/FileMeta/index.scss +0 -31
  973. package/dist/elements/FileDetails/StaticFileDetails/index.scss +0 -134
  974. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.d.ts.map +0 -1
  975. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.js.map +0 -1
  976. package/dist/elements/Hierarchy/Drawer/index.css +0 -90
  977. package/dist/elements/Hierarchy/Drawer/index.d.ts +0 -20
  978. package/dist/elements/Hierarchy/Drawer/index.d.ts.map +0 -1
  979. package/dist/elements/Hierarchy/Drawer/index.js.map +0 -1
  980. package/dist/elements/Hierarchy/Drawer/types.d.ts.map +0 -1
  981. package/dist/elements/Hierarchy/Drawer/types.js.map +0 -1
  982. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.d.ts +0 -30
  983. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.d.ts.map +0 -1
  984. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.js.map +0 -1
  985. package/dist/elements/Nav/NavToggler/index.css +0 -12
  986. package/dist/elements/Nav/NavToggler/index.d.ts +0 -9
  987. package/dist/elements/Nav/NavToggler/index.d.ts.map +0 -1
  988. package/dist/elements/Nav/NavToggler/index.js +0 -91
  989. package/dist/elements/Nav/NavToggler/index.js.map +0 -1
  990. package/dist/elements/Nav/SettingsMenuButton/index.scss +0 -11
  991. package/dist/elements/PreviewSizes/index.scss +0 -147
  992. package/dist/elements/RelationshipTable/Pagination.css +0 -39
  993. package/dist/elements/Thumbnail/index.scss +0 -53
  994. package/dist/exports/client/CodeEditor-T3624SG3.js +0 -14
  995. package/dist/exports/client/CodeEditor-T3624SG3.js.map +0 -7
  996. package/dist/exports/client/DatePicker-6KF52Z3G.js +0 -14
  997. package/dist/exports/client/DatePicker-6KF52Z3G.js.map +0 -7
  998. package/dist/exports/client/chunk-5LKBKI4T.js +0 -14
  999. package/dist/exports/client/chunk-5LKBKI4T.js.map +0 -7
  1000. package/dist/exports/client/chunk-7T64ULOM.js +0 -29
  1001. package/dist/exports/client/chunk-7T64ULOM.js.map +0 -7
  1002. package/dist/exports/client/chunk-DMFYTMX6.js +0 -27
  1003. package/dist/exports/client/chunk-DMFYTMX6.js.map +0 -7
  1004. package/dist/icons/ExternalLink/index.d.ts.map +0 -1
  1005. package/dist/icons/ExternalLink/index.js +0 -26
  1006. package/dist/icons/ExternalLink/index.js.map +0 -1
  1007. /package/dist/elements/Hierarchy/{Drawer → Modal}/fetchAncestorPath.d.ts +0 -0
  1008. /package/dist/elements/Hierarchy/{Drawer → Modal}/fetchAncestorPath.js +0 -0
  1009. /package/dist/elements/Hierarchy/{Drawer → Modal}/types.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["React","useTranslation","appendCacheTag","baseClass","MiniCarouselItem","active","imageCacheTag","label","onClick","url","src","_jsx","className","filter","Boolean","join","type","alt","MiniCarousel","doc","onSelect","selectedSize","uploadConfig","t","imageSizes","sizes","originalUrl","orderedSizeKeys","useMemo","length","Object","keys","map","name","_jsxs","_Fragment","key","sizeData"],"sources":["../../../src/elements/MiniCarousel/index.tsx"],"sourcesContent":["'use client'\nimport type { Data, FileSizes, SanitizedCollectionConfig } from 'payload'\n\nimport React from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { appendCacheTag } from '../../utilities/appendCacheTag.js'\nimport './index.css'\n\nconst baseClass = 'mini-carousel'\n\ntype MiniCarouselItemProps = {\n active: boolean\n imageCacheTag?: false | string\n label: string\n onClick: () => void\n url: string\n}\n\nconst MiniCarouselItem: React.FC<MiniCarouselItemProps> = ({\n active,\n imageCacheTag,\n label,\n onClick,\n url,\n}) => {\n const src = appendCacheTag(url, imageCacheTag)\n\n return (\n <button\n aria-label={label}\n aria-pressed={active ? 'true' : 'false'}\n className={[`${baseClass}__item`, active && `${baseClass}__item--active`]\n .filter(Boolean)\n .join(' ')}\n onClick={onClick}\n type=\"button\"\n >\n <img alt={label} src={src} />\n </button>\n )\n}\n\nexport type MiniCarouselProps = {\n doc: {\n sizes?: FileSizes\n url?: string\n } & Data\n imageCacheTag?: false | string\n onSelect: (sizeKey: null | string) => void\n selectedSize: null | string\n uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const MiniCarousel: React.FC<MiniCarouselProps> = ({\n doc,\n imageCacheTag,\n onSelect,\n selectedSize,\n uploadConfig,\n}) => {\n const { t } = useTranslation()\n const { imageSizes } = uploadConfig\n const { sizes, url: originalUrl } = doc\n\n const orderedSizeKeys = React.useMemo(() => {\n if (!imageSizes || imageSizes.length === 0) {\n return Object.keys(sizes || {})\n }\n return imageSizes.map(({ name }) => name).filter((name) => sizes?.[name]?.url)\n }, [imageSizes, sizes])\n\n if (!originalUrl) {\n return null\n }\n\n return (\n <div className={[baseClass, 'scrollbar-thin'].join(' ')}>\n <MiniCarouselItem\n active={selectedSize === null}\n imageCacheTag={imageCacheTag}\n label={t('general:original')}\n onClick={() => onSelect(null)}\n url={originalUrl}\n />\n\n {orderedSizeKeys.length > 0 && (\n <>\n <div className={`${baseClass}__divider`} />\n {orderedSizeKeys.map((key) => {\n const sizeData = sizes?.[key]\n if (!sizeData?.url) {\n return null\n }\n return (\n <MiniCarouselItem\n active={selectedSize === key}\n imageCacheTag={imageCacheTag}\n key={key}\n label={key}\n onClick={() => onSelect(key)}\n url={sizeData.url}\n />\n )\n })}\n </>\n )}\n </div>\n )\n}\n"],"mappings":"AAAA;;;AAGA,OAAOA,KAAA,MAAW;AAElB,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAUlB,MAAMC,gBAAA,GAAoDA,CAAC;EACzDC,MAAM;EACNC,aAAa;EACbC,KAAK;EACLC,OAAO;EACPC;AAAG,CACJ;EACC,MAAMC,GAAA,GAAMR,cAAA,CAAeO,GAAA,EAAKH,aAAA;EAEhC,oBACEK,IAAA,CAAC;IACC,cAAYJ,KAAA;IACZ,gBAAcF,MAAA,GAAS,SAAS;IAChCO,SAAA,EAAW,CAAC,GAAGT,SAAA,QAAiB,EAAEE,MAAA,IAAU,GAAGF,SAAA,gBAAyB,CAAC,CACtEU,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;IACRP,OAAA,EAASA,OAAA;IACTQ,IAAA,EAAK;cAEL,aAAAL,IAAA,CAAC;MAAIM,GAAA,EAAKV,KAAA;MAAOG,GAAA,EAAKA;;;AAG5B;AAaA,OAAO,MAAMQ,YAAA,GAA4CA,CAAC;EACxDC,GAAG;EACHb,aAAa;EACbc,QAAQ;EACRC,YAAY;EACZC;AAAY,CACb;EACC,MAAM;IAAEC;EAAC,CAAE,GAAGtB,cAAA;EACd,MAAM;IAAEuB;EAAU,CAAE,GAAGF,YAAA;EACvB,MAAM;IAAEG,KAAK;IAAEhB,GAAA,EAAKiB;EAAW,CAAE,GAAGP,GAAA;EAEpC,MAAMQ,eAAA,GAAkB3B,KAAA,CAAM4B,OAAO,CAAC;IACpC,IAAI,CAACJ,UAAA,IAAcA,UAAA,CAAWK,MAAM,KAAK,GAAG;MAC1C,OAAOC,MAAA,CAAOC,IAAI,CAACN,KAAA,IAAS,CAAC;IAC/B;IACA,OAAOD,UAAA,CAAWQ,GAAG,CAAC,CAAC;MAAEC;IAAI,CAAE,KAAKA,IAAA,EAAMpB,MAAM,CAAEoB,MAAA,IAASR,KAAA,GAAQQ,MAAA,CAAK,EAAExB,GAAA;EAC5E,GAAG,CAACe,UAAA,EAAYC,KAAA,CAAM;EAEtB,IAAI,CAACC,WAAA,EAAa;IAChB,OAAO;EACT;EAEA,oBACEQ,KAAA,CAAC;IAAItB,SAAA,EAAW,CAACT,SAAA,EAAW,iBAAiB,CAACY,IAAI,CAAC;4BACjDJ,IAAA,CAACP,gBAAA;MACCC,MAAA,EAAQgB,YAAA,KAAiB;MACzBf,aAAA,EAAeA,aAAA;MACfC,KAAA,EAAOgB,CAAA,CAAE;MACTf,OAAA,EAASA,CAAA,KAAMY,QAAA,CAAS;MACxBX,GAAA,EAAKiB;QAGNC,eAAA,CAAgBE,MAAM,GAAG,kBACxBK,KAAA,CAAAC,SAAA;8BACExB,IAAA,CAAC;QAAIC,SAAA,EAAW,GAAGT,SAAA;UAClBwB,eAAA,CAAgBK,GAAG,CAAEI,GAAA;QACpB,MAAMC,QAAA,GAAWZ,KAAA,GAAQW,GAAA,CAAI;QAC7B,IAAI,CAACC,QAAA,EAAU5B,GAAA,EAAK;UAClB,OAAO;QACT;QACA,oBACEE,IAAA,CAACP,gBAAA;UACCC,MAAA,EAAQgB,YAAA,KAAiBe,GAAA;UACzB9B,aAAA,EAAeA,aAAA;UAEfC,KAAA,EAAO6B,GAAA;UACP5B,OAAA,EAASA,CAAA,KAAMY,QAAA,CAASgB,GAAA;UACxB3B,GAAA,EAAK4B,QAAA,CAAS5B;WAHT2B,GAAA;MAMX;;;AAKV","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ @layer payload-default {
2
+ .settings-menu-button.popup--h-align-left .popup__content {
3
+ left: calc(var(--nav-padding-inline-start) * -0.5);
4
+ }
5
+ }
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import './index.scss';
2
+ import './index.css';
3
3
  export type SettingsMenuButtonProps = {
4
4
  settingsMenu?: React.ReactNode[];
5
5
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Nav/SettingsMenuButton/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAqBhE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Nav/SettingsMenuButton/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;CACjC,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAqBhE,CAAA"}
@@ -6,7 +6,7 @@ import React, { Fragment } from 'react';
6
6
  import { GearIcon } from '../../../icons/Gear/index.js';
7
7
  import { useTranslation } from '../../../providers/Translation/index.js';
8
8
  import { Popup } from '../../Popup/index.js';
9
- import './index.scss';
9
+ import './index.css';
10
10
  const baseClass = 'settings-menu-button';
11
11
  export const SettingsMenuButton = t0 => {
12
12
  const $ = _c(3);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","Fragment","GearIcon","useTranslation","Popup","baseClass","SettingsMenuButton","t0","$","settingsMenu","t","length","t1","_jsx","button","ariaLabel","id","size","verticalAlign","children","map","_temp","item","i"],"sources":["../../../../src/elements/Nav/SettingsMenuButton/index.tsx"],"sourcesContent":["'use client'\nimport React, { Fragment } from 'react'\n\nimport { GearIcon } from '../../../icons/Gear/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Popup } from '../../Popup/index.js'\nimport './index.scss'\n\nconst baseClass = 'settings-menu-button'\n\nexport type SettingsMenuButtonProps = {\n settingsMenu?: React.ReactNode[]\n}\n\nexport const SettingsMenuButton: React.FC<SettingsMenuButtonProps> = ({ settingsMenu }) => {\n const { t } = useTranslation()\n\n if (!settingsMenu || settingsMenu.length === 0) {\n return null\n }\n\n return (\n <Popup\n button={<GearIcon ariaLabel={t('general:menu')} />}\n className={baseClass}\n horizontalAlign=\"left\"\n id=\"settings-menu\"\n size=\"small\"\n verticalAlign=\"bottom\"\n >\n {settingsMenu.map((item, i) => (\n <Fragment key={`settings-menu-item-${i}`}>{item}</Fragment>\n ))}\n </Popup>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,QAAQ,QAAQ;AAEhC,SAASC,QAAQ,QAAQ;AACzB,SAASC,cAAc,QAAQ;AAC/B,SAASC,KAAK,QAAQ;AACtB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAMlB,OAAO,MAAMC,kBAAA,GAAwDC,EAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EAAC;IAAAU;EAAA,IAAAF,EAAgB;EACpF;IAAAG;EAAA,IAAcP,cAAA;EAAA,IAEV,CAACM,YAAA,IAAgBA,YAAA,CAAAE,MAAA,MAAwB;IAAA;EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAJ,CAAA,QAAAC,YAAA,IAAAD,CAAA,QAAAE,CAAA;IAK3CE,EAAA,GAAAC,IAAA,CAAAT,KAAA;MAAAU,MAAA,EACUD,IAAA,CAAAX,QAAA;QAAAa,SAAA,EAAqBL,CAAA,CAAE;MAAA,C;;uBAEf;MAAAM,EAAA,EACb;MAAAC,IAAA,EACE;MAAAC,aAAA,EACS;MAAAC,QAAA,EAEbV,YAAA,CAAAW,GAAA,CAAAC,KACyC;IAAA,C;;;;;;;SAT5CT,E;CAaJ;AArBqE,SAAAS,MAAAC,IAAA,EAAAC,CAAA;EAAA,OAiB7DV,IAAA,CAAAZ,QAAA;IAAAkB,QAAA,EAA2CG;EAAA,GAA5B,sBAAsBC,CAAA,EAAG;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","Fragment","GearIcon","useTranslation","Popup","baseClass","SettingsMenuButton","t0","$","settingsMenu","t","length","t1","_jsx","button","ariaLabel","id","size","verticalAlign","children","map","_temp","item","i"],"sources":["../../../../src/elements/Nav/SettingsMenuButton/index.tsx"],"sourcesContent":["'use client'\nimport React, { Fragment } from 'react'\n\nimport { GearIcon } from '../../../icons/Gear/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Popup } from '../../Popup/index.js'\nimport './index.css'\n\nconst baseClass = 'settings-menu-button'\n\nexport type SettingsMenuButtonProps = {\n settingsMenu?: React.ReactNode[]\n}\n\nexport const SettingsMenuButton: React.FC<SettingsMenuButtonProps> = ({ settingsMenu }) => {\n const { t } = useTranslation()\n\n if (!settingsMenu || settingsMenu.length === 0) {\n return null\n }\n\n return (\n <Popup\n button={<GearIcon ariaLabel={t('general:menu')} />}\n className={baseClass}\n horizontalAlign=\"left\"\n id=\"settings-menu\"\n size=\"small\"\n verticalAlign=\"bottom\"\n >\n {settingsMenu.map((item, i) => (\n <Fragment key={`settings-menu-item-${i}`}>{item}</Fragment>\n ))}\n </Popup>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,QAAQ,QAAQ;AAEhC,SAASC,QAAQ,QAAQ;AACzB,SAASC,cAAc,QAAQ;AAC/B,SAASC,KAAK,QAAQ;AACtB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAMlB,OAAO,MAAMC,kBAAA,GAAwDC,EAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EAAC;IAAAU;EAAA,IAAAF,EAAgB;EACpF;IAAAG;EAAA,IAAcP,cAAA;EAAA,IAEV,CAACM,YAAA,IAAgBA,YAAA,CAAAE,MAAA,MAAwB;IAAA;EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAJ,CAAA,QAAAC,YAAA,IAAAD,CAAA,QAAAE,CAAA;IAK3CE,EAAA,GAAAC,IAAA,CAAAT,KAAA;MAAAU,MAAA,EACUD,IAAA,CAAAX,QAAA;QAAAa,SAAA,EAAqBL,CAAA,CAAE;MAAA,C;;uBAEf;MAAAM,EAAA,EACb;MAAAC,IAAA,EACE;MAAAC,aAAA,EACS;MAAAC,QAAA,EAEbV,YAAA,CAAAW,GAAA,CAAAC,KACyC;IAAA,C;;;;;;;SAT5CT,E;CAaJ;AArBqE,SAAAS,MAAAC,IAAA,EAAAC,CAAA;EAAA,OAiB7DV,IAAA,CAAAZ,QAAA;IAAAkB,QAAA,EAA2CG;EAAA,GAA5B,sBAAsBC,CAAA,EAAG;AAAA","ignoreList":[]}
@@ -6,7 +6,7 @@
6
6
  flex-shrink: 0;
7
7
  height: 100vh;
8
8
  width: var(--nav-width);
9
- border-right: 1px solid var(--color-border);
9
+ border-right: var(--stroke-width-small) solid var(--color-border);
10
10
  overflow: hidden;
11
11
  --nav-padding-inline-start: var(--spacer-2-5);
12
12
  --nav-padding-inline-end: var(--spacer-2-5);
@@ -16,7 +16,7 @@
16
16
 
17
17
  [dir='rtl'] .nav {
18
18
  border-right: none;
19
- border-left: 1px solid var(--color-border);
19
+ border-left: var(--stroke-width-small) solid var(--color-border);
20
20
  }
21
21
 
22
22
  .nav__mobile-close {
@@ -119,11 +119,6 @@
119
119
  --nav-padding-inline-end: var(--gutter-h);
120
120
  }
121
121
 
122
- .nav__link {
123
- font-size: var(--text-body-small-font-size);
124
- line-height: var(--spacer-4);
125
- }
126
-
127
122
  .nav__mobile-close {
128
123
  display: flex;
129
124
  align-items: center;
@@ -6,7 +6,7 @@
6
6
 
7
7
  & + .nav-group {
8
8
  margin-block-start: var(--spacer-2);
9
- border-top: 1px solid var(--color-border);
9
+ border-top: var(--stroke-width-small) solid var(--color-border);
10
10
  padding-top: var(--spacer-2-5);
11
11
  }
12
12
  }
@@ -37,6 +37,11 @@
37
37
  &:focus-visible {
38
38
  outline: none;
39
39
  }
40
+
41
+ &:disabled {
42
+ cursor: not-allowed;
43
+ opacity: 0.5;
44
+ }
40
45
  }
41
46
 
42
47
  .paginator__page-total {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Pagination/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAGpD,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAsGhD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Pagination/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAGpD,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAqGhD,CAAA"}
@@ -7,7 +7,7 @@ import { ClickableArrow } from './ClickableArrow/index.js';
7
7
  import './index.css';
8
8
  const baseClass = 'paginator';
9
9
  export const Pagination = props => {
10
- const $ = _c(34);
10
+ const $ = _c(35);
11
11
  const {
12
12
  hasNextPage: t0,
13
13
  hasPrevPage: t1,
@@ -122,10 +122,8 @@ export const Pagination = props => {
122
122
  t11 = $[14];
123
123
  }
124
124
  const handleInputKeyDown = t11;
125
- if (!totalPages || totalPages <= 1) {
126
- return null;
127
- }
128
- const t12 = !hasPrevPage;
125
+ const isSinglePage = !totalPages || totalPages <= 1;
126
+ const t12 = isSinglePage || !hasPrevPage;
129
127
  let t13;
130
128
  if ($[15] !== currentPage || $[16] !== prevPage || $[17] !== updatePage) {
131
129
  t13 = () => updatePage(prevPage ?? Math.max(1, currentPage - 1));
@@ -137,16 +135,16 @@ export const Pagination = props => {
137
135
  t13 = $[18];
138
136
  }
139
137
  let t14;
140
- if ($[19] !== currentPage || $[20] !== handleInputBlur || $[21] !== handleInputKeyDown || $[22] !== hasNextPage || $[23] !== inputValue || $[24] !== nextPage || $[25] !== t12 || $[26] !== t13 || $[27] !== totalPages || $[28] !== updatePage) {
138
+ if ($[19] !== currentPage || $[20] !== handleInputBlur || $[21] !== handleInputKeyDown || $[22] !== hasNextPage || $[23] !== inputValue || $[24] !== isSinglePage || $[25] !== nextPage || $[26] !== t12 || $[27] !== t13 || $[28] !== totalPages || $[29] !== updatePage) {
141
139
  let t15;
142
- if ($[30] !== currentPage || $[31] !== nextPage || $[32] !== updatePage) {
140
+ if ($[31] !== currentPage || $[32] !== nextPage || $[33] !== updatePage) {
143
141
  t15 = () => updatePage(nextPage ?? currentPage + 1);
144
- $[30] = currentPage;
145
- $[31] = nextPage;
146
- $[32] = updatePage;
147
- $[33] = t15;
142
+ $[31] = currentPage;
143
+ $[32] = nextPage;
144
+ $[33] = updatePage;
145
+ $[34] = t15;
148
146
  } else {
149
- t15 = $[33];
147
+ t15 = $[34];
150
148
  }
151
149
  t14 = _jsxs("div", {
152
150
  className: baseClass,
@@ -156,13 +154,14 @@ export const Pagination = props => {
156
154
  updatePage: t13
157
155
  }), _jsx(ClickableArrow, {
158
156
  direction: "right",
159
- isDisabled: !hasNextPage,
157
+ isDisabled: isSinglePage || !hasNextPage,
160
158
  updatePage: t15
161
159
  }), _jsxs("div", {
162
160
  className: `${baseClass}__page-input-wrapper`,
163
161
  children: [_jsx("input", {
164
162
  "aria-label": "Go to page",
165
163
  className: `${baseClass}__page-input`,
164
+ disabled: isSinglePage,
166
165
  inputMode: "numeric",
167
166
  max: totalPages,
168
167
  min: 1,
@@ -176,7 +175,7 @@ export const Pagination = props => {
176
175
  value: inputValue
177
176
  }), _jsxs("span", {
178
177
  className: `${baseClass}__page-total`,
179
- children: ["of ", totalPages]
178
+ children: ["of ", isSinglePage ? 1 : totalPages]
180
179
  })]
181
180
  })]
182
181
  });
@@ -185,14 +184,15 @@ export const Pagination = props => {
185
184
  $[21] = handleInputKeyDown;
186
185
  $[22] = hasNextPage;
187
186
  $[23] = inputValue;
188
- $[24] = nextPage;
189
- $[25] = t12;
190
- $[26] = t13;
191
- $[27] = totalPages;
192
- $[28] = updatePage;
193
- $[29] = t14;
187
+ $[24] = isSinglePage;
188
+ $[25] = nextPage;
189
+ $[26] = t12;
190
+ $[27] = t13;
191
+ $[28] = totalPages;
192
+ $[29] = updatePage;
193
+ $[30] = t14;
194
194
  } else {
195
- t14 = $[29];
195
+ t14 = $[30];
196
196
  }
197
197
  return t14;
198
198
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","useCallback","useState","ClickableArrow","baseClass","Pagination","props","$","hasNextPage","t0","hasPrevPage","t1","nextPage","t2","onChange","page","t3","prevPage","t4","totalPages","t5","undefined","currentPage","inputValue","setInputValue","String","t6","t7","useEffect","t8","updatePage","t9","Symbol","for","e","target","value","handleInputChange","t10","parsed","parseInt","isNaN","clamped","Math","max","min","handleInputBlur","t11","e_0","key","currentTarget","blur","preventDefault","parsed_0","parsed_1","handleInputKeyDown","t12","t13","t14","t15","_jsxs","className","children","_jsx","direction","isDisabled","inputMode","onBlur","onKeyDown","style","width","length","type"],"sources":["../../../src/elements/Pagination/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback, useState } from 'react'\n\nimport { ClickableArrow } from './ClickableArrow/index.js'\nimport './index.css'\n\nconst baseClass = 'paginator'\n\nexport type PaginationProps = {\n hasNextPage?: boolean\n hasPrevPage?: boolean\n limit?: number\n nextPage?: number\n numberOfNeighbors?: number\n onChange?: (page: number) => void\n page?: number\n prevPage?: number\n totalPages?: number\n}\n\nexport const Pagination: React.FC<PaginationProps> = (props) => {\n const {\n hasNextPage = false,\n hasPrevPage = false,\n nextPage = null,\n onChange,\n page: currentPage = 1,\n prevPage = null,\n totalPages = 1,\n } = props\n\n const [inputValue, setInputValue] = useState(String(currentPage))\n\n // Sync input value when currentPage changes externally\n React.useEffect(() => {\n setInputValue(String(currentPage))\n }, [currentPage])\n\n const updatePage = useCallback(\n (page: number) => {\n if (typeof onChange === 'function') {\n onChange(page)\n }\n },\n [onChange],\n )\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value)\n }\n\n const handleInputBlur = () => {\n const parsed = parseInt(inputValue, 10)\n if (!isNaN(parsed)) {\n // Clamp to valid range\n const clamped = Math.max(1, Math.min(parsed, totalPages))\n if (clamped !== currentPage) {\n updatePage(clamped)\n } else {\n setInputValue(String(currentPage))\n }\n } else {\n // Reset to current page if not a number\n setInputValue(String(currentPage))\n }\n }\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.currentTarget.blur()\n } else if (e.key === 'Escape') {\n setInputValue(String(currentPage))\n e.currentTarget.blur()\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n const parsed = parseInt(inputValue, 10)\n if (!isNaN(parsed) && parsed < totalPages) {\n setInputValue(String(parsed + 1))\n }\n } else if (e.key === 'ArrowDown') {\n e.preventDefault()\n const parsed = parseInt(inputValue, 10)\n if (!isNaN(parsed) && parsed > 1) {\n setInputValue(String(parsed - 1))\n }\n }\n }\n\n if (!totalPages || totalPages <= 1) {\n return null\n }\n\n return (\n <div className={baseClass}>\n <ClickableArrow\n direction=\"left\"\n isDisabled={!hasPrevPage}\n updatePage={() => updatePage(prevPage ?? Math.max(1, currentPage - 1))}\n />\n <ClickableArrow\n direction=\"right\"\n isDisabled={!hasNextPage}\n updatePage={() => updatePage(nextPage ?? currentPage + 1)}\n />\n <div className={`${baseClass}__page-input-wrapper`}>\n <input\n aria-label=\"Go to page\"\n className={`${baseClass}__page-input`}\n inputMode=\"numeric\"\n max={totalPages}\n min={1}\n onBlur={handleInputBlur}\n onChange={handleInputChange}\n onKeyDown={handleInputKeyDown}\n style={{ width: `${Math.max(inputValue.length, 1)}ch` }}\n type=\"text\"\n value={inputValue}\n />\n <span className={`${baseClass}__page-total`}>of {totalPages}</span>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useCallback","useState","ClickableArrow","baseClass","Pagination","props","$","hasNextPage","t0","hasPrevPage","t1","nextPage","t2","onChange","page","t3","prevPage","t4","totalPages","t5","undefined","currentPage","inputValue","setInputValue","String","t6","t7","useEffect","t8","updatePage","t9","Symbol","for","e","target","value","handleInputChange","t10","parsed","parseInt","isNaN","clamped","Math","max","min","handleInputBlur","t11","e_0","key","currentTarget","blur","preventDefault","parsed_0","parsed_1","handleInputKeyDown","isSinglePage","t12","t13","t14","t15","_jsxs","className","children","_jsx","direction","isDisabled","disabled","inputMode","onBlur","onKeyDown","style","width","length","type"],"sources":["../../../src/elements/Pagination/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback, useState } from 'react'\n\nimport { ClickableArrow } from './ClickableArrow/index.js'\nimport './index.css'\n\nconst baseClass = 'paginator'\n\nexport type PaginationProps = {\n hasNextPage?: boolean\n hasPrevPage?: boolean\n limit?: number\n nextPage?: number\n numberOfNeighbors?: number\n onChange?: (page: number) => void\n page?: number\n prevPage?: number\n totalPages?: number\n}\n\nexport const Pagination: React.FC<PaginationProps> = (props) => {\n const {\n hasNextPage = false,\n hasPrevPage = false,\n nextPage = null,\n onChange,\n page: currentPage = 1,\n prevPage = null,\n totalPages = 1,\n } = props\n\n const [inputValue, setInputValue] = useState(String(currentPage))\n\n // Sync input value when currentPage changes externally\n React.useEffect(() => {\n setInputValue(String(currentPage))\n }, [currentPage])\n\n const updatePage = useCallback(\n (page: number) => {\n if (typeof onChange === 'function') {\n onChange(page)\n }\n },\n [onChange],\n )\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value)\n }\n\n const handleInputBlur = () => {\n const parsed = parseInt(inputValue, 10)\n if (!isNaN(parsed)) {\n // Clamp to valid range\n const clamped = Math.max(1, Math.min(parsed, totalPages))\n if (clamped !== currentPage) {\n updatePage(clamped)\n } else {\n setInputValue(String(currentPage))\n }\n } else {\n // Reset to current page if not a number\n setInputValue(String(currentPage))\n }\n }\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.currentTarget.blur()\n } else if (e.key === 'Escape') {\n setInputValue(String(currentPage))\n e.currentTarget.blur()\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n const parsed = parseInt(inputValue, 10)\n if (!isNaN(parsed) && parsed < totalPages) {\n setInputValue(String(parsed + 1))\n }\n } else if (e.key === 'ArrowDown') {\n e.preventDefault()\n const parsed = parseInt(inputValue, 10)\n if (!isNaN(parsed) && parsed > 1) {\n setInputValue(String(parsed - 1))\n }\n }\n }\n\n const isSinglePage = !totalPages || totalPages <= 1\n\n return (\n <div className={baseClass}>\n <ClickableArrow\n direction=\"left\"\n isDisabled={isSinglePage || !hasPrevPage}\n updatePage={() => updatePage(prevPage ?? Math.max(1, currentPage - 1))}\n />\n <ClickableArrow\n direction=\"right\"\n isDisabled={isSinglePage || !hasNextPage}\n updatePage={() => updatePage(nextPage ?? currentPage + 1)}\n />\n <div className={`${baseClass}__page-input-wrapper`}>\n <input\n aria-label=\"Go to page\"\n className={`${baseClass}__page-input`}\n disabled={isSinglePage}\n inputMode=\"numeric\"\n max={totalPages}\n min={1}\n onBlur={handleInputBlur}\n onChange={handleInputChange}\n onKeyDown={handleInputKeyDown}\n style={{ width: `${Math.max(inputValue.length, 1)}ch` }}\n type=\"text\"\n value={inputValue}\n />\n <span className={`${baseClass}__page-total`}>of {isSinglePage ? 1 : totalPages}</span>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -10,6 +10,7 @@ export type PopupButtonRenderProps = {
10
10
  export type PopupTriggerProps = {
11
11
  active: boolean;
12
12
  button?: React.ReactNode;
13
+ buttonAriaLabel?: string;
13
14
  buttonType: 'custom' | 'default';
14
15
  className?: string;
15
16
  disabled?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Popup/PopupTrigger/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,OAAO,CAAA;IACf,eAAe,EAAE,OAAO,CAAA;IACxB,eAAe,EAAE,IAAI,CAAA;IACrB,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAA;IAChC,SAAS,EAAE,KAAK,CAAC,oBAAoB,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,KAAK,CAAC,SAAS,CAAA;IACjE,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3D,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA6EpD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Popup/PopupTrigger/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,OAAO,CAAA;IACf,eAAe,EAAE,OAAO,CAAA;IACxB,eAAe,EAAE,IAAI,CAAA;IACrB,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAA;IAChC,SAAS,EAAE,KAAK,CAAC,oBAAoB,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,KAAK,CAAC,SAAS,CAAA;IACjE,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3D,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAgFpD,CAAA"}
@@ -8,6 +8,7 @@ export const PopupTrigger = props => {
8
8
  const {
9
9
  active,
10
10
  button,
11
+ buttonAriaLabel,
11
12
  buttonType,
12
13
  className,
13
14
  disabled,
@@ -40,6 +41,7 @@ export const PopupTrigger = props => {
40
41
  }
41
42
  if (buttonType === 'custom') {
42
43
  return /*#__PURE__*/_jsx("div", {
44
+ "aria-label": buttonAriaLabel,
43
45
  className: classes,
44
46
  onClick: handleClick,
45
47
  onKeyDown: handleKeyDown,
@@ -49,6 +51,7 @@ export const PopupTrigger = props => {
49
51
  });
50
52
  }
51
53
  return /*#__PURE__*/_jsx("button", {
54
+ "aria-label": buttonAriaLabel,
52
55
  className: classes,
53
56
  disabled: disabled,
54
57
  onClick: handleClick,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","baseClass","PopupTrigger","props","active","button","buttonType","className","disabled","noBackground","renderButton","setActive","size","classes","filter","Boolean","join","handleClick","handleKeyDown","e","key","preventDefault","_jsx","_Fragment","onClick","onKeyDown","role","tabIndex","type"],"sources":["../../../../src/elements/Popup/PopupTrigger/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport './index.css'\n\nconst baseClass = 'popup-button'\n\nexport type PopupButtonRenderProps = {\n active: boolean\n 'aria-expanded': boolean\n 'aria-haspopup': true\n onClick: React.MouseEventHandler\n onKeyDown: React.KeyboardEventHandler\n}\n\nexport type PopupTriggerProps = {\n active: boolean\n button?: React.ReactNode\n buttonType: 'custom' | 'default'\n className?: string\n disabled?: boolean\n noBackground?: boolean\n renderButton?: (props: PopupButtonRenderProps) => React.ReactNode\n setActive: (active: boolean, viaKeyboard?: boolean) => void\n size?: 'large' | 'medium'\n}\n\nexport const PopupTrigger: React.FC<PopupTriggerProps> = (props) => {\n const {\n active,\n button,\n buttonType,\n className,\n disabled,\n noBackground,\n renderButton,\n setActive,\n size,\n } = props\n\n const classes = [\n baseClass,\n className,\n `${baseClass}--${buttonType}`,\n !noBackground && `${baseClass}--background`,\n size && `${baseClass}--size-${size}`,\n disabled && `${baseClass}--disabled`,\n active && `${baseClass}--active`,\n ]\n .filter(Boolean)\n .join(' ')\n\n const handleClick: React.MouseEventHandler = () => {\n setActive(!active, false)\n }\n\n const handleKeyDown: React.KeyboardEventHandler = (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n setActive(!active, true)\n }\n }\n\n // Render prop mode: consumer provides the button, we provide the handlers\n if (renderButton) {\n return (\n <>\n {renderButton({\n active,\n 'aria-expanded': active,\n 'aria-haspopup': true,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n })}\n </>\n )\n }\n\n if (buttonType === 'custom') {\n return (\n <div\n className={classes}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n role=\"button\"\n tabIndex={0}\n >\n {button}\n </div>\n )\n }\n\n return (\n <button\n className={classes}\n disabled={disabled}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n tabIndex={0}\n type=\"button\"\n >\n {button}\n </button>\n )\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,KAAA,MAAW;AAElB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAsBlB,OAAO,MAAMC,YAAA,GAA6CC,KAAA;EACxD,MAAM;IACJC,MAAM;IACNC,MAAM;IACNC,UAAU;IACVC,SAAS;IACTC,QAAQ;IACRC,YAAY;IACZC,YAAY;IACZC,SAAS;IACTC;EAAI,CACL,GAAGT,KAAA;EAEJ,MAAMU,OAAA,GAAU,CACdZ,SAAA,EACAM,SAAA,EACA,GAAGN,SAAA,KAAcK,UAAA,EAAY,EAC7B,CAACG,YAAA,IAAgB,GAAGR,SAAA,cAAuB,EAC3CW,IAAA,IAAQ,GAAGX,SAAA,UAAmBW,IAAA,EAAM,EACpCJ,QAAA,IAAY,GAAGP,SAAA,YAAqB,EACpCG,MAAA,IAAU,GAAGH,SAAA,UAAmB,CACjC,CACEa,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;EAER,MAAMC,WAAA,GAAuCA,CAAA;IAC3CN,SAAA,CAAU,CAACP,MAAA,EAAQ;EACrB;EAEA,MAAMc,aAAA,GAA6CC,CAAA;IACjD,IAAIA,CAAA,CAAEC,GAAG,KAAK,WAAWD,CAAA,CAAEC,GAAG,KAAK,KAAK;MACtCD,CAAA,CAAEE,cAAc;MAChBV,SAAA,CAAU,CAACP,MAAA,EAAQ;IACrB;EACF;EAEA;EACA,IAAIM,YAAA,EAAc;IAChB,oBACEY,IAAA,CAAAC,SAAA;gBACGb,YAAA,CAAa;QACZN,MAAA;QACA,iBAAiBA,MAAA;QACjB,iBAAiB;QACjBoB,OAAA,EAASP,WAAA;QACTQ,SAAA,EAAWP;MACb;;EAGN;EAEA,IAAIZ,UAAA,KAAe,UAAU;IAC3B,oBACEgB,IAAA,CAAC;MACCf,SAAA,EAAWM,OAAA;MACXW,OAAA,EAASP,WAAA;MACTQ,SAAA,EAAWP,aAAA;MACXQ,IAAA,EAAK;MACLC,QAAA,EAAU;gBAETtB;;EAGP;EAEA,oBACEiB,IAAA,CAAC;IACCf,SAAA,EAAWM,OAAA;IACXL,QAAA,EAAUA,QAAA;IACVgB,OAAA,EAASP,WAAA;IACTQ,SAAA,EAAWP,aAAA;IACXS,QAAA,EAAU;IACVC,IAAA,EAAK;cAEJvB;;AAGP","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","baseClass","PopupTrigger","props","active","button","buttonAriaLabel","buttonType","className","disabled","noBackground","renderButton","setActive","size","classes","filter","Boolean","join","handleClick","handleKeyDown","e","key","preventDefault","_jsx","_Fragment","onClick","onKeyDown","role","tabIndex","type"],"sources":["../../../../src/elements/Popup/PopupTrigger/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport './index.css'\n\nconst baseClass = 'popup-button'\n\nexport type PopupButtonRenderProps = {\n active: boolean\n 'aria-expanded': boolean\n 'aria-haspopup': true\n onClick: React.MouseEventHandler\n onKeyDown: React.KeyboardEventHandler\n}\n\nexport type PopupTriggerProps = {\n active: boolean\n button?: React.ReactNode\n buttonAriaLabel?: string\n buttonType: 'custom' | 'default'\n className?: string\n disabled?: boolean\n noBackground?: boolean\n renderButton?: (props: PopupButtonRenderProps) => React.ReactNode\n setActive: (active: boolean, viaKeyboard?: boolean) => void\n size?: 'large' | 'medium'\n}\n\nexport const PopupTrigger: React.FC<PopupTriggerProps> = (props) => {\n const {\n active,\n button,\n buttonAriaLabel,\n buttonType,\n className,\n disabled,\n noBackground,\n renderButton,\n setActive,\n size,\n } = props\n\n const classes = [\n baseClass,\n className,\n `${baseClass}--${buttonType}`,\n !noBackground && `${baseClass}--background`,\n size && `${baseClass}--size-${size}`,\n disabled && `${baseClass}--disabled`,\n active && `${baseClass}--active`,\n ]\n .filter(Boolean)\n .join(' ')\n\n const handleClick: React.MouseEventHandler = () => {\n setActive(!active, false)\n }\n\n const handleKeyDown: React.KeyboardEventHandler = (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n setActive(!active, true)\n }\n }\n\n // Render prop mode: consumer provides the button, we provide the handlers\n if (renderButton) {\n return (\n <>\n {renderButton({\n active,\n 'aria-expanded': active,\n 'aria-haspopup': true,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n })}\n </>\n )\n }\n\n if (buttonType === 'custom') {\n return (\n <div\n aria-label={buttonAriaLabel}\n className={classes}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n role=\"button\"\n tabIndex={0}\n >\n {button}\n </div>\n )\n }\n\n return (\n <button\n aria-label={buttonAriaLabel}\n className={classes}\n disabled={disabled}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n tabIndex={0}\n type=\"button\"\n >\n {button}\n </button>\n )\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,KAAA,MAAW;AAElB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAuBlB,OAAO,MAAMC,YAAA,GAA6CC,KAAA;EACxD,MAAM;IACJC,MAAM;IACNC,MAAM;IACNC,eAAe;IACfC,UAAU;IACVC,SAAS;IACTC,QAAQ;IACRC,YAAY;IACZC,YAAY;IACZC,SAAS;IACTC;EAAI,CACL,GAAGV,KAAA;EAEJ,MAAMW,OAAA,GAAU,CACdb,SAAA,EACAO,SAAA,EACA,GAAGP,SAAA,KAAcM,UAAA,EAAY,EAC7B,CAACG,YAAA,IAAgB,GAAGT,SAAA,cAAuB,EAC3CY,IAAA,IAAQ,GAAGZ,SAAA,UAAmBY,IAAA,EAAM,EACpCJ,QAAA,IAAY,GAAGR,SAAA,YAAqB,EACpCG,MAAA,IAAU,GAAGH,SAAA,UAAmB,CACjC,CACEc,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;EAER,MAAMC,WAAA,GAAuCA,CAAA;IAC3CN,SAAA,CAAU,CAACR,MAAA,EAAQ;EACrB;EAEA,MAAMe,aAAA,GAA6CC,CAAA;IACjD,IAAIA,CAAA,CAAEC,GAAG,KAAK,WAAWD,CAAA,CAAEC,GAAG,KAAK,KAAK;MACtCD,CAAA,CAAEE,cAAc;MAChBV,SAAA,CAAU,CAACR,MAAA,EAAQ;IACrB;EACF;EAEA;EACA,IAAIO,YAAA,EAAc;IAChB,oBACEY,IAAA,CAAAC,SAAA;gBACGb,YAAA,CAAa;QACZP,MAAA;QACA,iBAAiBA,MAAA;QACjB,iBAAiB;QACjBqB,OAAA,EAASP,WAAA;QACTQ,SAAA,EAAWP;MACb;;EAGN;EAEA,IAAIZ,UAAA,KAAe,UAAU;IAC3B,oBACEgB,IAAA,CAAC;MACC,cAAYjB,eAAA;MACZE,SAAA,EAAWM,OAAA;MACXW,OAAA,EAASP,WAAA;MACTQ,SAAA,EAAWP,aAAA;MACXQ,IAAA,EAAK;MACLC,QAAA,EAAU;gBAETvB;;EAGP;EAEA,oBACEkB,IAAA,CAAC;IACC,cAAYjB,eAAA;IACZE,SAAA,EAAWM,OAAA;IACXL,QAAA,EAAUA,QAAA;IACVgB,OAAA,EAASP,WAAA;IACTQ,SAAA,EAAWP,aAAA;IACXS,QAAA,EAAU;IACVC,IAAA,EAAK;cAEJxB;;AAGP","ignoreList":[]}
@@ -6,6 +6,12 @@ export type PopupProps = {
6
6
  backgroundColor?: CSSProperties['backgroundColor'];
7
7
  boundingRef?: React.RefObject<HTMLElement>;
8
8
  button?: React.ReactNode;
9
+ /**
10
+ * Accessible label for the trigger button.
11
+ * Necessary when the button has an icon-only content,
12
+ * so the button has an accessible name for screen readers.
13
+ */
14
+ buttonAriaLabel?: string;
9
15
  /**
10
16
  * The class name to apply to the button that triggers the popup.
11
17
  */
@@ -68,7 +74,7 @@ export type PopupProps = {
68
74
  * When set, `verticalAlign`, `horizontalAlign`, and the caret are ignored.
69
75
  */
70
76
  side?: 'left' | 'right';
71
- size?: 'fit-content' | 'large' | 'medium' | 'small';
77
+ size?: 'fit-content' | 'large' | 'small';
72
78
  /**
73
79
  * Theme for the popup content. Defaults to 'dark'.
74
80
  * Set to 'auto' to inherit the current theme.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Popup/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AAEvD,OAAO,KAAuE,MAAM,OAAO,CAAA;AAK3F,OAAO,aAAa,CAAA;AA4CpB,MAAM,MAAM,UAAU,GAAG;IACvB,eAAe,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;IAClD,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IAC1C,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC/B,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;IACjC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IAC7C,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACxC;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAA;IACzD;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;QACrB,MAAM,EAAE,OAAO,CAAA;QACf,eAAe,EAAE,OAAO,CAAA;QACxB,eAAe,EAAE,IAAI,CAAA;QACrB,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAA;QAChC,SAAS,EAAE,KAAK,CAAC,oBAAoB,CAAA;KACtC,KAAK,KAAK,CAAC,SAAS,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACvB,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;IACnD;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;IACjC;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAA;CACjC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAoftC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Popup/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AAEvD,OAAO,KAAuE,MAAM,OAAO,CAAA;AAK3F,OAAO,aAAa,CAAA;AA4CpB,MAAM,MAAM,UAAU,GAAG;IACvB,eAAe,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;IAClD,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IAC1C,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC/B,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;IACjC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IAC7C,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACxC;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAA;IACzD;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;QACrB,MAAM,EAAE,OAAO,CAAA;QACf,eAAe,EAAE,OAAO,CAAA;QACxB,eAAe,EAAE,IAAI,CAAA;QACrB,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAA;QAChC,SAAS,EAAE,KAAK,CAAC,oBAAoB,CAAA;KACtC,KAAK,KAAK,CAAC,SAAS,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACvB,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,GAAG,OAAO,CAAA;IACxC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;IACjC;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAA;CACjC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAsftC,CAAA"}
@@ -38,6 +38,7 @@ export const Popup = props => {
38
38
  const {
39
39
  id,
40
40
  button,
41
+ buttonAriaLabel,
41
42
  buttonClassName,
42
43
  buttonSize,
43
44
  buttonType = 'default',
@@ -57,7 +58,7 @@ export const Popup = props => {
57
58
  showOnHover = false,
58
59
  showScrollbar = false,
59
60
  side,
60
- size = 'medium',
61
+ size = 'fit-content',
61
62
  theme = 'dark',
62
63
  verticalAlign = 'bottom'
63
64
  } = props;
@@ -384,6 +385,7 @@ export const Popup = props => {
384
385
  const Trigger = /*#__PURE__*/_jsx(PopupTrigger, {
385
386
  active: active,
386
387
  button: button,
388
+ buttonAriaLabel: buttonAriaLabel,
387
389
  buttonType: buttonType,
388
390
  className: buttonClassName,
389
391
  disabled: disabled,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["PopupList","React","createContext","use","useCallback","useEffect","useRef","useState","createPortal","useEffectEvent","ThemeProvider","PopupTrigger","baseClass","PopupContext","TABBABLE_SELECTOR","map","s","join","hasFixedAncestor","element","node","parentElement","document","body","window","getComputedStyle","position","Popup","props","id","button","buttonClassName","buttonSize","buttonType","caret","children","className","disabled","forceOpen","horizontalAlign","initActive","noBackground","onToggleClose","onToggleOpen","portalClassName","render","renderButton","showOnHover","showScrollbar","side","size","theme","verticalAlign","popupRef","triggerRef","isFixedRef","openedViaKeyboardRef","parentPopup","mounted","setMounted","active","setActiveInternal","isOnTop","setIsOnTop","setActive","isActive","viaKeyboard","current","updatePosition","trigger","popup","triggerRect","getBoundingClientRect","popupRect","useFixed","scrollY","scrollX","offset","sideOffset","top","left","caretLeft","maxTop","innerHeight","height","Math","max","min","anchorRect","width","right","innerWidth","onTop","bottom","topIfAbove","triggerCenter","newTop","round","newLeft","newCaretLeft","newPosition","style","getPropertyValue","setProperty","handleClickOutside","e","target","isOutsidePopup","contains","isOutsideTrigger","clickedPopupContent","closest","isInsideChildPopup","handleKeyDown","key","preventDefault","querySelector","focus","focusable","Array","from","querySelectorAll","length","currentIndex","findIndex","el","activeElement","goBackward","shiftKey","nextIndex","handleActionableClick","actionable","rafId","requestAnimationFrame","firstFocusable","addEventListener","capture","passive","cancelAnimationFrame","removeEventListener","undefined","Trigger","_jsx","_jsxs","filter","Boolean","ref","onMouseEnter","onMouseLeave","role","tabIndex","value","_Fragment","close"],"sources":["../../../src/elements/Popup/index.tsx"],"sourcesContent":["'use client'\nimport type { CSSProperties } from 'react'\n\nexport * as PopupList from './PopupButtonList/index.js'\n\nimport React, { createContext, use, useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { ThemeProvider } from '../../providers/Theme/index.js'\nimport './index.css'\nimport { PopupTrigger } from './PopupTrigger/index.js'\n\nconst baseClass = 'popup'\n\ntype PopupContextValue = {\n popupRef: React.RefObject<HTMLDivElement | null>\n}\n\nconst PopupContext = createContext<null | PopupContextValue>(null)\n\n/**\n * Selector for all elements the browser considers tabbable.\n */\nconst TABBABLE_SELECTOR = [\n 'a[href]',\n 'button:not(:disabled)',\n 'input:not(:disabled):not([type=\"hidden\"])',\n 'select:not(:disabled)',\n 'textarea:not(:disabled)',\n '[tabindex]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'audio[controls]',\n 'video[controls]',\n 'summary',\n]\n .map((s) => `${s}:not([tabindex=\"-1\"])`)\n .join(', ')\n\n/**\n * Returns whether the element has a `position: fixed` ancestor (e.g. an open Drawer).\n * Such popups must be positioned with `fixed` so they don't drift when the background scrolls.\n */\nconst hasFixedAncestor = (element: HTMLElement | null): boolean => {\n let node = element?.parentElement\n while (node && node !== document.body) {\n if (window.getComputedStyle(node).position === 'fixed') {\n return true\n }\n node = node.parentElement\n }\n return false\n}\n\nexport type PopupProps = {\n backgroundColor?: CSSProperties['backgroundColor']\n boundingRef?: React.RefObject<HTMLElement>\n button?: React.ReactNode\n /**\n * The class name to apply to the button that triggers the popup.\n */\n buttonClassName?: string\n buttonSize?: 'large' | 'medium'\n buttonType?: 'custom' | 'default'\n caret?: boolean\n children?: React.ReactNode\n /**\n * The class name to apply to the popup container containing the trigger.\n * This does not wrap the actual popup content, which is rendered in a portal.\n */\n className?: string\n disabled?: boolean\n /**\n * Force control the open state of the popup, regardless of the trigger.\n */\n forceOpen?: boolean\n /**\n * Preferred horizontal alignment of the popup, if there is enough space available.\n *\n * @default 'left'\n */\n horizontalAlign?: 'center' | 'left' | 'right'\n id?: string\n initActive?: boolean\n noBackground?: boolean\n onToggleClose?: () => void\n onToggleOpen?: (active: boolean) => void\n /**\n * Class name to apply to the portal container.\n */\n portalClassName?: string\n render?: (args: { close: () => void }) => React.ReactNode\n /**\n * Render prop for custom trigger button. Receives onClick/onKeyDown/aria props.\n * When provided, `button` and `buttonType` are ignored.\n */\n renderButton?: (props: {\n active: boolean\n 'aria-expanded': boolean\n 'aria-haspopup': true\n onClick: React.MouseEventHandler\n onKeyDown: React.KeyboardEventHandler\n }) => React.ReactNode\n showOnHover?: boolean\n /**\n * By default, the scrollbar is hidden. If you want to show it, set this to true.\n * In both cases, the container is still scrollable.\n *\n * @default false\n */\n showScrollbar?: boolean\n /**\n * Position the popup to the side of the trigger instead of above/below.\n * The popup's top edge aligns with the trigger's top edge (with viewport clamping).\n * Automatically flips to the opposite side if there is not enough space.\n * When set, `verticalAlign`, `horizontalAlign`, and the caret are ignored.\n */\n side?: 'left' | 'right'\n size?: 'fit-content' | 'large' | 'medium' | 'small'\n /**\n * Theme for the popup content. Defaults to 'dark'.\n * Set to 'auto' to inherit the current theme.\n *\n * @default 'dark'\n */\n theme?: 'auto' | 'dark' | 'light'\n /**\n * Preferred vertical alignment of the popup (position below or above the trigger),\n * if there is enough space available.\n *\n * If the popup is too close to the edge of the viewport, it will flip to the opposite side\n * regardless of the preferred vertical alignment.\n *\n * @default 'bottom'\n */\n verticalAlign?: 'bottom' | 'top'\n}\n\n/**\n * Component that renders a popup, as well as a button that triggers the popup.\n *\n * The popup is rendered in a portal, and is automatically positioned above / below the trigger,\n * depending on the verticalAlign prop and the space available.\n */\nexport const Popup: React.FC<PopupProps> = (props) => {\n const {\n id,\n button,\n buttonClassName,\n buttonSize,\n buttonType = 'default',\n caret = true,\n children,\n className,\n disabled,\n forceOpen,\n horizontalAlign = 'left',\n initActive = false,\n noBackground,\n onToggleClose,\n onToggleOpen,\n portalClassName,\n render,\n renderButton,\n showOnHover = false,\n showScrollbar = false,\n side,\n size = 'medium',\n theme = 'dark',\n verticalAlign = 'bottom',\n } = props\n\n const popupRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLDivElement>(null)\n\n /**\n * Whether the trigger is inside a `position: fixed` ancestor (e.g. a Drawer),\n * in which case the popup is positioned with `fixed` instead of `absolute`.\n */\n const isFixedRef = useRef(false)\n\n /**\n * Keeps track of whether the popup was opened via keyboard.\n * This is used to determine whether to autofocus the first element in the popup.\n * If the popup was opened via mouse, we do not want to autofocus the first element.\n */\n const openedViaKeyboardRef = useRef(false)\n\n const parentPopup = use(PopupContext)\n\n const [mounted, setMounted] = useState(false)\n const [active, setActiveInternal] = useState(initActive)\n const [isOnTop, setIsOnTop] = useState(verticalAlign === 'top')\n\n // Track when component is mounted to avoid SSR/client hydration mismatch\n useEffect(() => {\n setMounted(true)\n }, [])\n\n const setActive = useCallback(\n (isActive: boolean, viaKeyboard = false) => {\n if (isActive) {\n openedViaKeyboardRef.current = viaKeyboard\n onToggleOpen?.(true)\n } else {\n onToggleClose?.()\n }\n setActiveInternal(isActive)\n },\n [onToggleClose, onToggleOpen],\n )\n\n // /////////////////////////////////////\n // Position Calculation\n //\n // Calculates and applies popup position relative to trigger.\n // Always checks viewport bounds (for flipping), but only updates\n // styles if the calculated position differs from current position.\n // /////////////////////////////////////\n\n const updatePosition = useEffectEvent(() => {\n const trigger = triggerRef.current\n const popup = popupRef.current\n if (!trigger || !popup) {\n return\n }\n\n const triggerRect = trigger.getBoundingClientRect()\n const popupRect = popup.getBoundingClientRect()\n\n // Inside a fixed ancestor, use `fixed` (no scroll offset) so background scrolling\n // doesn't shift the popup. Otherwise use page coordinates (absolute).\n const useFixed = isFixedRef.current\n const scrollY = useFixed ? 0 : window.scrollY\n const scrollX = useFixed ? 0 : window.scrollX\n\n // Gap between the popup and the trigger/viewport edges (in pixels)\n const offset = 10\n // Additional gap used in side mode so the child popup has breathing room from its parent\n const sideOffset = 4\n\n let top: number\n let left: number\n let caretLeft: number\n\n if (side) {\n // /////////////////////////////////////\n // Side Positioning\n // Places the popup to the left or right of the parent popup (not just the trigger),\n // top-aligned with the trigger. Flips to the opposite side if there is not enough\n // viewport space.\n // /////////////////////////////////////\n\n // Top: align with trigger top, clamped to viewport\n top = triggerRect.top + scrollY\n const maxTop = scrollY + window.innerHeight - popupRect.height - offset\n top = Math.max(scrollY + offset, Math.min(top, maxTop))\n\n // Use the parent popup's bounding rect as the reference for left/right positioning\n // so the child appears 4px from the parent popup edge, not just the trigger button.\n const anchorRect = parentPopup?.popupRef.current\n ? parentPopup.popupRef.current.getBoundingClientRect()\n : triggerRect\n\n if (side === 'left') {\n left = anchorRect.left - popupRect.width - sideOffset\n if (left < offset) {\n // flip to right side\n left = anchorRect.right + sideOffset\n }\n } else {\n left = anchorRect.right + sideOffset\n if (left + popupRect.width + offset > window.innerWidth) {\n // flip to left side\n left = anchorRect.left - popupRect.width - sideOffset\n }\n }\n\n left = left + scrollX\n // Caret not used in side mode; set a neutral value\n caretLeft = popupRect.width / 2\n\n setIsOnTop(false)\n } else {\n // /////////////////////////////////////\n // Vertical Positioning\n // Calculates the `top` position in absolute page coordinates.\n // Uses `verticalAlign` prop as the preferred direction, but flips\n // to the opposite side if there's not enough viewport space.\n // /////////////////////////////////////\n\n let onTop = verticalAlign === 'top'\n\n if (verticalAlign === 'bottom') {\n top = triggerRect.bottom + scrollY + offset\n\n if (triggerRect.bottom + popupRect.height + offset > window.innerHeight) {\n // Try to flip above — only do so if there's actually enough room\n const topIfAbove = triggerRect.top + scrollY - popupRect.height - offset\n if (topIfAbove >= scrollY) {\n top = topIfAbove\n onTop = true\n }\n // else: not enough room above either — keep below and let it overflow rather than going off-screen\n }\n } else {\n top = triggerRect.top + scrollY - popupRect.height - offset\n\n if (triggerRect.top - popupRect.height - offset < 0) {\n top = triggerRect.bottom + scrollY + offset\n onTop = false\n }\n }\n\n setIsOnTop(onTop)\n\n // /////////////////////////////////////\n // Horizontal Positioning\n // Calculates the `left` position based on `horizontalAlign` prop:\n // - 'left': aligns popup's left edge with trigger's left edge\n // - 'right': aligns popup's right edge with trigger's right edge\n // - 'center': centers popup horizontally relative to trigger\n // Then clamps to keep the popup within viewport bounds.\n // /////////////////////////////////////\n\n left =\n horizontalAlign === 'right'\n ? triggerRect.right - popupRect.width\n : horizontalAlign === 'center'\n ? triggerRect.left + triggerRect.width / 2 - popupRect.width / 2\n : triggerRect.left\n\n left = Math.max(offset, Math.min(left, window.innerWidth - popupRect.width - offset))\n\n // /////////////////////////////////////\n // Caret Positioning\n // Positions the caret arrow to point at the trigger's horizontal center.\n // Clamps between 12px from edges to prevent caret from overflowing the popup.\n // /////////////////////////////////////\n\n const triggerCenter = triggerRect.left + triggerRect.width / 2\n caretLeft = Math.max(12, Math.min(triggerCenter - left, popupRect.width - 12))\n }\n\n // /////////////////////////////////////\n // Apply Styles (only if changed)\n // Compares calculated position with current styles to avoid unnecessary\n // DOM updates during scroll. This prevents visual lag by relying on the absolute\n // positioning where possible (popup slightly lags behind when scrolling really fast),\n // while still allowing position changes when needed (e.g., sticky parent, viewport flip).\n // Values are rounded to match browser's CSS precision and avoid false updates.\n // /////////////////////////////////////\n\n const newTop = `${Math.round(top)}px`\n const newLeft = `${Math.round(left + scrollX)}px`\n const newCaretLeft = `${Math.round(caretLeft)}px`\n const newPosition = useFixed ? 'fixed' : ''\n\n if (popup.style.position !== newPosition) {\n popup.style.position = newPosition\n }\n if (popup.style.top !== newTop) {\n popup.style.top = newTop\n }\n if (popup.style.left !== newLeft) {\n popup.style.left = newLeft\n }\n if (popup.style.getPropertyValue('--caret-left') !== newCaretLeft) {\n popup.style.setProperty('--caret-left', newCaretLeft)\n }\n })\n\n // /////////////////////////////////////\n // Click Outside Handler\n // Closes popup when clicking outside both the popup and trigger.\n // Distinguishes between parent and child popups:\n // - Click in child popup: parent stays open\n // - Click in parent popup: child closes\n // /////////////////////////////////////\n\n const handleClickOutside = useEffectEvent((e: MouseEvent) => {\n const target = e.target as Node\n const isOutsidePopup = !popupRef.current?.contains(target)\n const isOutsideTrigger = !triggerRef.current?.contains(target)\n\n // Check if click is inside a popup portal\n const clickedPopupContent = (target as Element).closest?.('.popup__content')\n\n // If the clicked popup contains this popup's trigger, it's a parent popup\n // and we should close. If it doesn't contain our trigger, it's a child popup\n // and we should stay open to avoid closing parent when interacting with child.\n const isInsideChildPopup =\n clickedPopupContent && !clickedPopupContent.contains(triggerRef.current)\n\n if (isOutsidePopup && isOutsideTrigger && !isInsideChildPopup) {\n setActive(false)\n }\n })\n\n // /////////////////////////////////////\n // Keyboard Navigation\n // Handles keyboard interactions when popup is open:\n // - Escape: closes popup and returns focus to trigger\n // - Tab/Shift+Tab: cycles through focusable items with wrapping\n // - ArrowUp/ArrowDown: same as Shift+Tab/Tab for menu-style navigation\n // Focus is managed manually to support elements the browser might skip.\n // /////////////////////////////////////\n\n const handleKeyDown = useEffectEvent((e: KeyboardEvent) => {\n const popup = popupRef.current\n if (!popup || !active) {\n return\n }\n\n if (e.key === 'Escape') {\n e.preventDefault()\n setActive(false)\n triggerRef.current?.querySelector<HTMLElement>('button, [tabindex=\"0\"]')?.focus()\n return\n }\n\n if (e.key === 'Tab' || e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n const focusable = Array.from(popup.querySelectorAll<HTMLElement>(TABBABLE_SELECTOR))\n if (focusable.length === 0) {\n return\n }\n\n e.preventDefault()\n\n const currentIndex = focusable.findIndex((el) => el === document.activeElement)\n const goBackward = e.key === 'ArrowUp' || (e.key === 'Tab' && e.shiftKey)\n\n let nextIndex: number\n if (currentIndex === -1) {\n nextIndex = goBackward ? focusable.length - 1 : 0\n } else if (goBackward) {\n nextIndex = currentIndex === 0 ? focusable.length - 1 : currentIndex - 1\n } else {\n nextIndex = currentIndex === focusable.length - 1 ? 0 : currentIndex + 1\n }\n\n focusable[nextIndex].focus()\n }\n })\n\n // /////////////////////////////////////\n // Click Handler for Actionable Elements\n // Closes popup when buttons/links inside are clicked (includes Enter/Space activation).\n // /////////////////////////////////////\n\n const handleActionableClick = useEffectEvent((e: MouseEvent) => {\n const target = e.target as HTMLElement\n\n // Allow opting out with data-popup-prevent-close attribute on element or ancestor\n if (target.closest('[data-popup-prevent-close]')) {\n return\n }\n\n // Check if the clicked element or any ancestor is an actionable element\n const actionable = target.closest('button, a[href], [role=\"button\"], [role=\"menuitem\"]')\n if (actionable && popupRef.current?.contains(actionable)) {\n // Don't close if clicking a nested popup's trigger — it will manage its own open state\n if (actionable.closest(`.${baseClass}__trigger-wrap`)) {\n return\n }\n setActive(false)\n }\n })\n\n // /////////////////////////////////////\n // Effect: Setup/Teardown position and focus management\n // /////////////////////////////////////\n\n useEffect(() => {\n if (!active) {\n const popup = popupRef.current\n if (popup) {\n // Clear inline position styles so the CSS `top: -9999px` rule on\n // `.popup__hidden-content` takes effect. Without this, the inline\n // styles set during positioning would win over the CSS rule, keeping\n // portaled children (e.g. a ReactSelect menu) visually on-screen.\n popup.style.position = ''\n popup.style.top = ''\n popup.style.left = ''\n }\n return\n }\n\n const popup = popupRef.current\n if (!popup) {\n return\n }\n\n // /////////////////////////////////////\n // Initial Position\n // Calculate and apply popup position.\n // getBoundingClientRect() forces synchronous layout.\n //\n // We call updatePosition() twice: once synchronously (so the popup\n // snaps to roughly the right place immediately rather than flashing\n // from -9999px) and once in a requestAnimationFrame, which fires\n // after the browser has finished laying out the newly-visible popup\n // content. The rAF call is the authoritative one — it catches cases\n // where the popup height wasn't stable yet during the first call\n // (e.g. ColumnSelection popup content rendering after hidden → visible\n // class switch), which was causing incorrect flip-to-top decisions.\n // /////////////////////////////////////\n\n // Decide the positioning strategy once per open.\n isFixedRef.current = hasFixedAncestor(triggerRef.current)\n\n updatePosition()\n const rafId = requestAnimationFrame(() => {\n updatePosition()\n })\n\n // /////////////////////////////////////\n // Focus Management\n // When opened via keyboard, autofocus the first focusable button.\n // When opened via mouse, skip autofocus to avoid unwanted highlights.\n // /////////////////////////////////////\n\n if (openedViaKeyboardRef.current) {\n // Use requestAnimationFrame to ensure DOM is ready.\n requestAnimationFrame(() => {\n const firstFocusable = popup.querySelector<HTMLElement>(TABBABLE_SELECTOR)\n firstFocusable?.focus()\n })\n }\n\n // /////////////////////////////////////\n // Event Listeners\n // - resize/scroll: recalculate position (only applies styles if changed)\n // - mousedown: detect clicks outside to close\n // - keydown: handle keyboard navigation\n // /////////////////////////////////////\n\n window.addEventListener('resize', updatePosition)\n window.addEventListener('scroll', updatePosition, { capture: true, passive: true })\n document.addEventListener('mousedown', handleClickOutside)\n document.addEventListener('keydown', handleKeyDown)\n popup.addEventListener('click', handleActionableClick)\n\n return () => {\n cancelAnimationFrame(rafId)\n window.removeEventListener('resize', updatePosition)\n window.removeEventListener('scroll', updatePosition, { capture: true })\n document.removeEventListener('mousedown', handleClickOutside)\n document.removeEventListener('keydown', handleKeyDown)\n popup.removeEventListener('click', handleActionableClick)\n }\n }, [active])\n\n useEffect(() => {\n if (forceOpen !== undefined) {\n setActive(forceOpen)\n }\n }, [forceOpen, setActive])\n\n const Trigger = (\n <PopupTrigger\n active={active}\n button={button}\n buttonType={buttonType}\n className={buttonClassName}\n disabled={disabled}\n noBackground={noBackground}\n renderButton={renderButton}\n setActive={setActive}\n size={buttonSize}\n />\n )\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')} id={id}>\n <div className={`${baseClass}__trigger-wrap`} ref={triggerRef}>\n {showOnHover ? (\n <div\n className={`${baseClass}__on-hover-watch`}\n onMouseEnter={() => setActive(true)}\n onMouseLeave={() => setActive(false)}\n role=\"button\"\n tabIndex={0}\n >\n {Trigger}\n </div>\n ) : (\n Trigger\n )}\n </div>\n\n {mounted\n ? // We need to make sure the popup is part of the DOM (although invisible), even if it's not active.\n // This ensures that components within the popup, like modals, do not unmount when the popup closes.\n // Otherwise, modals opened from the popup will close unexpectedly when clicking within the modal, since\n // that closes the popup due to the click outside handler.\n createPortal(\n <PopupContext value={{ popupRef }}>\n <div\n className={\n active\n ? [\n `${baseClass}__content`,\n `${baseClass}--size-${size}`,\n side\n ? `${baseClass}--side-${side}`\n : isOnTop\n ? `${baseClass}--v-top`\n : `${baseClass}--v-bottom`,\n portalClassName,\n ]\n .filter(Boolean)\n .join(' ')\n : // Do not share any class names between active and disabled popups, to make sure\n // tests do not accidentally target inactive popups.\n `${baseClass}__hidden-content`\n }\n data-popup-id={id || undefined}\n data-theme={theme === 'auto' ? undefined : theme}\n ref={popupRef}\n >\n <div\n className={`${baseClass}__scroll-container${showScrollbar ? ` ${baseClass}__scroll-container--show-scrollbar` : ''}`}\n >\n {theme === 'auto' ? (\n <>\n {render?.({ close: () => setActive(false) })}\n {children}\n </>\n ) : (\n <ThemeProvider theme={theme}>\n {render?.({ close: () => setActive(false) })}\n {children}\n </ThemeProvider>\n )}\n </div>\n {caret && !side && <div className={`${baseClass}__caret`} />}\n </div>\n </PopupContext>,\n document.body,\n )\n : null}\n </div>\n )\n}\n"],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,SAAS,MAAM;AAE3B,OAAOC,KAAA,IAASC,aAAa,EAAEC,GAAG,EAAEC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AACpF,SAASC,YAAY,QAAQ;AAE7B,SAASC,cAAc,QAAQ;AAC/B,SAASC,aAAa,QAAQ;AAC9B,OAAO;AACP,SAASC,YAAY,QAAQ;AAE7B,MAAMC,SAAA,GAAY;AAMlB,MAAMC,YAAA,gBAAeX,aAAA,CAAwC;AAE7D;;;AAGA,MAAMY,iBAAA,GAAoB,CACxB,WACA,yBACA,6CACA,yBACA,2BACA,cACA,oDACA,mBACA,mBACA,UACD,CACEC,GAAG,CAAEC,CAAA,IAAM,GAAGA,CAAA,uBAAwB,EACtCC,IAAI,CAAC;AAER;;;;AAIA,MAAMC,gBAAA,GAAoBC,OAAA;EACxB,IAAIC,IAAA,GAAOD,OAAA,EAASE,aAAA;EACpB,OAAOD,IAAA,IAAQA,IAAA,KAASE,QAAA,CAASC,IAAI,EAAE;IACrC,IAAIC,MAAA,CAAOC,gBAAgB,CAACL,IAAA,EAAMM,QAAQ,KAAK,SAAS;MACtD,OAAO;IACT;IACAN,IAAA,GAAOA,IAAA,CAAKC,aAAa;EAC3B;EACA,OAAO;AACT;AAsFA;;;;;;AAMA,OAAO,MAAMM,KAAA,GAA+BC,KAAA;EAC1C,MAAM;IACJC,EAAE;IACFC,MAAM;IACNC,eAAe;IACfC,UAAU;IACVC,UAAA,GAAa,SAAS;IACtBC,KAAA,GAAQ,IAAI;IACZC,QAAQ;IACRC,SAAS;IACTC,QAAQ;IACRC,SAAS;IACTC,eAAA,GAAkB,MAAM;IACxBC,UAAA,GAAa,KAAK;IAClBC,YAAY;IACZC,aAAa;IACbC,YAAY;IACZC,eAAe;IACfC,MAAM;IACNC,YAAY;IACZC,WAAA,GAAc,KAAK;IACnBC,aAAA,GAAgB,KAAK;IACrBC,IAAI;IACJC,IAAA,GAAO,QAAQ;IACfC,KAAA,GAAQ,MAAM;IACdC,aAAA,GAAgB;EAAQ,CACzB,GAAGxB,KAAA;EAEJ,MAAMyB,QAAA,GAAW/C,MAAA,CAAuB;EACxC,MAAMgD,UAAA,GAAahD,MAAA,CAAuB;EAE1C;;;;EAIA,MAAMiD,UAAA,GAAajD,MAAA,CAAO;EAE1B;;;;;EAKA,MAAMkD,oBAAA,GAAuBlD,MAAA,CAAO;EAEpC,MAAMmD,WAAA,GAActD,GAAA,CAAIU,YAAA;EAExB,MAAM,CAAC6C,OAAA,EAASC,UAAA,CAAW,GAAGpD,QAAA,CAAS;EACvC,MAAM,CAACqD,MAAA,EAAQC,iBAAA,CAAkB,GAAGtD,QAAA,CAASiC,UAAA;EAC7C,MAAM,CAACsB,OAAA,EAASC,UAAA,CAAW,GAAGxD,QAAA,CAAS6C,aAAA,KAAkB;EAEzD;EACA/C,SAAA,CAAU;IACRsD,UAAA,CAAW;EACb,GAAG,EAAE;EAEL,MAAMK,SAAA,GAAY5D,WAAA,CAChB,CAAC6D,QAAA,EAAmBC,WAAA,GAAc,KAAK;IACrC,IAAID,QAAA,EAAU;MACZT,oBAAA,CAAqBW,OAAO,GAAGD,WAAA;MAC/BvB,YAAA,GAAe;IACjB,OAAO;MACLD,aAAA;IACF;IACAmB,iBAAA,CAAkBI,QAAA;EACpB,GACA,CAACvB,aAAA,EAAeC,YAAA,CAAa;EAG/B;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,MAAMyB,cAAA,GAAiB3D,cAAA,CAAe;IACpC,MAAM4D,OAAA,GAAUf,UAAA,CAAWa,OAAO;IAClC,MAAMG,KAAA,GAAQjB,QAAA,CAASc,OAAO;IAC9B,IAAI,CAACE,OAAA,IAAW,CAACC,KAAA,EAAO;MACtB;IACF;IAEA,MAAMC,WAAA,GAAcF,OAAA,CAAQG,qBAAqB;IACjD,MAAMC,SAAA,GAAYH,KAAA,CAAME,qBAAqB;IAE7C;IACA;IACA,MAAME,QAAA,GAAWnB,UAAA,CAAWY,OAAO;IACnC,MAAMQ,OAAA,GAAUD,QAAA,GAAW,IAAIlD,MAAA,CAAOmD,OAAO;IAC7C,MAAMC,OAAA,GAAUF,QAAA,GAAW,IAAIlD,MAAA,CAAOoD,OAAO;IAE7C;IACA,MAAMC,MAAA,GAAS;IACf;IACA,MAAMC,UAAA,GAAa;IAEnB,IAAIC,GAAA;IACJ,IAAIC,IAAA;IACJ,IAAIC,SAAA;IAEJ,IAAIhC,IAAA,EAAM;MACR;MACA;MACA;MACA;MACA;MACA;MAEA;MACA8B,GAAA,GAAMR,WAAA,CAAYQ,GAAG,GAAGJ,OAAA;MACxB,MAAMO,MAAA,GAASP,OAAA,GAAUnD,MAAA,CAAO2D,WAAW,GAAGV,SAAA,CAAUW,MAAM,GAAGP,MAAA;MACjEE,GAAA,GAAMM,IAAA,CAAKC,GAAG,CAACX,OAAA,GAAUE,MAAA,EAAQQ,IAAA,CAAKE,GAAG,CAACR,GAAA,EAAKG,MAAA;MAE/C;MACA;MACA,MAAMM,UAAA,GAAa/B,WAAA,EAAaJ,QAAA,CAASc,OAAA,GACrCV,WAAA,CAAYJ,QAAQ,CAACc,OAAO,CAACK,qBAAqB,KAClDD,WAAA;MAEJ,IAAItB,IAAA,KAAS,QAAQ;QACnB+B,IAAA,GAAOQ,UAAA,CAAWR,IAAI,GAAGP,SAAA,CAAUgB,KAAK,GAAGX,UAAA;QAC3C,IAAIE,IAAA,GAAOH,MAAA,EAAQ;UACjB;UACAG,IAAA,GAAOQ,UAAA,CAAWE,KAAK,GAAGZ,UAAA;QAC5B;MACF,OAAO;QACLE,IAAA,GAAOQ,UAAA,CAAWE,KAAK,GAAGZ,UAAA;QAC1B,IAAIE,IAAA,GAAOP,SAAA,CAAUgB,KAAK,GAAGZ,MAAA,GAASrD,MAAA,CAAOmE,UAAU,EAAE;UACvD;UACAX,IAAA,GAAOQ,UAAA,CAAWR,IAAI,GAAGP,SAAA,CAAUgB,KAAK,GAAGX,UAAA;QAC7C;MACF;MAEAE,IAAA,GAAOA,IAAA,GAAOJ,OAAA;MACd;MACAK,SAAA,GAAYR,SAAA,CAAUgB,KAAK,GAAG;MAE9B1B,UAAA,CAAW;IACb,OAAO;MACL;MACA;MACA;MACA;MACA;MACA;MAEA,IAAI6B,KAAA,GAAQxC,aAAA,KAAkB;MAE9B,IAAIA,aAAA,KAAkB,UAAU;QAC9B2B,GAAA,GAAMR,WAAA,CAAYsB,MAAM,GAAGlB,OAAA,GAAUE,MAAA;QAErC,IAAIN,WAAA,CAAYsB,MAAM,GAAGpB,SAAA,CAAUW,MAAM,GAAGP,MAAA,GAASrD,MAAA,CAAO2D,WAAW,EAAE;UACvE;UACA,MAAMW,UAAA,GAAavB,WAAA,CAAYQ,GAAG,GAAGJ,OAAA,GAAUF,SAAA,CAAUW,MAAM,GAAGP,MAAA;UAClE,IAAIiB,UAAA,IAAcnB,OAAA,EAAS;YACzBI,GAAA,GAAMe,UAAA;YACNF,KAAA,GAAQ;UACV;UACA;QACF;MACF,OAAO;QACLb,GAAA,GAAMR,WAAA,CAAYQ,GAAG,GAAGJ,OAAA,GAAUF,SAAA,CAAUW,MAAM,GAAGP,MAAA;QAErD,IAAIN,WAAA,CAAYQ,GAAG,GAAGN,SAAA,CAAUW,MAAM,GAAGP,MAAA,GAAS,GAAG;UACnDE,GAAA,GAAMR,WAAA,CAAYsB,MAAM,GAAGlB,OAAA,GAAUE,MAAA;UACrCe,KAAA,GAAQ;QACV;MACF;MAEA7B,UAAA,CAAW6B,KAAA;MAEX;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MAEAZ,IAAA,GACEzC,eAAA,KAAoB,UAChBgC,WAAA,CAAYmB,KAAK,GAAGjB,SAAA,CAAUgB,KAAK,GACnClD,eAAA,KAAoB,WAClBgC,WAAA,CAAYS,IAAI,GAAGT,WAAA,CAAYkB,KAAK,GAAG,IAAIhB,SAAA,CAAUgB,KAAK,GAAG,IAC7DlB,WAAA,CAAYS,IAAI;MAExBA,IAAA,GAAOK,IAAA,CAAKC,GAAG,CAACT,MAAA,EAAQQ,IAAA,CAAKE,GAAG,CAACP,IAAA,EAAMxD,MAAA,CAAOmE,UAAU,GAAGlB,SAAA,CAAUgB,KAAK,GAAGZ,MAAA;MAE7E;MACA;MACA;MACA;MACA;MAEA,MAAMkB,aAAA,GAAgBxB,WAAA,CAAYS,IAAI,GAAGT,WAAA,CAAYkB,KAAK,GAAG;MAC7DR,SAAA,GAAYI,IAAA,CAAKC,GAAG,CAAC,IAAID,IAAA,CAAKE,GAAG,CAACQ,aAAA,GAAgBf,IAAA,EAAMP,SAAA,CAAUgB,KAAK,GAAG;IAC5E;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA,MAAMO,MAAA,GAAS,GAAGX,IAAA,CAAKY,KAAK,CAAClB,GAAA,KAAQ;IACrC,MAAMmB,OAAA,GAAU,GAAGb,IAAA,CAAKY,KAAK,CAACjB,IAAA,GAAOJ,OAAA,KAAY;IACjD,MAAMuB,YAAA,GAAe,GAAGd,IAAA,CAAKY,KAAK,CAAChB,SAAA,KAAc;IACjD,MAAMmB,WAAA,GAAc1B,QAAA,GAAW,UAAU;IAEzC,IAAIJ,KAAA,CAAM+B,KAAK,CAAC3E,QAAQ,KAAK0E,WAAA,EAAa;MACxC9B,KAAA,CAAM+B,KAAK,CAAC3E,QAAQ,GAAG0E,WAAA;IACzB;IACA,IAAI9B,KAAA,CAAM+B,KAAK,CAACtB,GAAG,KAAKiB,MAAA,EAAQ;MAC9B1B,KAAA,CAAM+B,KAAK,CAACtB,GAAG,GAAGiB,MAAA;IACpB;IACA,IAAI1B,KAAA,CAAM+B,KAAK,CAACrB,IAAI,KAAKkB,OAAA,EAAS;MAChC5B,KAAA,CAAM+B,KAAK,CAACrB,IAAI,GAAGkB,OAAA;IACrB;IACA,IAAI5B,KAAA,CAAM+B,KAAK,CAACC,gBAAgB,CAAC,oBAAoBH,YAAA,EAAc;MACjE7B,KAAA,CAAM+B,KAAK,CAACE,WAAW,CAAC,gBAAgBJ,YAAA;IAC1C;EACF;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,MAAMK,kBAAA,GAAqB/F,cAAA,CAAgBgG,CAAA;IACzC,MAAMC,MAAA,GAASD,CAAA,CAAEC,MAAM;IACvB,MAAMC,cAAA,GAAiB,CAACtD,QAAA,CAASc,OAAO,EAAEyC,QAAA,CAASF,MAAA;IACnD,MAAMG,gBAAA,GAAmB,CAACvD,UAAA,CAAWa,OAAO,EAAEyC,QAAA,CAASF,MAAA;IAEvD;IACA,MAAMI,mBAAA,GAAsBJ,MAAC,CAAmBK,OAAO,GAAG;IAE1D;IACA;IACA;IACA,MAAMC,kBAAA,GACJF,mBAAA,IAAuB,CAACA,mBAAA,CAAoBF,QAAQ,CAACtD,UAAA,CAAWa,OAAO;IAEzE,IAAIwC,cAAA,IAAkBE,gBAAA,IAAoB,CAACG,kBAAA,EAAoB;MAC7DhD,SAAA,CAAU;IACZ;EACF;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,MAAMiD,aAAA,GAAgBxG,cAAA,CAAgBgG,GAAA;IACpC,MAAMnC,OAAA,GAAQjB,QAAA,CAASc,OAAO;IAC9B,IAAI,CAACG,OAAA,IAAS,CAACV,MAAA,EAAQ;MACrB;IACF;IAEA,IAAI6C,GAAA,CAAES,GAAG,KAAK,UAAU;MACtBT,GAAA,CAAEU,cAAc;MAChBnD,SAAA,CAAU;MACVV,UAAA,CAAWa,OAAO,EAAEiD,aAAA,CAA2B,2BAA2BC,KAAA;MAC1E;IACF;IAEA,IAAIZ,GAAA,CAAES,GAAG,KAAK,SAAST,GAAA,CAAES,GAAG,KAAK,eAAeT,GAAA,CAAES,GAAG,KAAK,WAAW;MACnE,MAAMI,SAAA,GAAYC,KAAA,CAAMC,IAAI,CAAClD,OAAA,CAAMmD,gBAAgB,CAAc3G,iBAAA;MACjE,IAAIwG,SAAA,CAAUI,MAAM,KAAK,GAAG;QAC1B;MACF;MAEAjB,GAAA,CAAEU,cAAc;MAEhB,MAAMQ,YAAA,GAAeL,SAAA,CAAUM,SAAS,CAAEC,EAAA,IAAOA,EAAA,KAAOvG,QAAA,CAASwG,aAAa;MAC9E,MAAMC,UAAA,GAAatB,GAAA,CAAES,GAAG,KAAK,aAAcT,GAAA,CAAES,GAAG,KAAK,SAAST,GAAA,CAAEuB,QAAQ;MAExE,IAAIC,SAAA;MACJ,IAAIN,YAAA,KAAiB,CAAC,GAAG;QACvBM,SAAA,GAAYF,UAAA,GAAaT,SAAA,CAAUI,MAAM,GAAG,IAAI;MAClD,OAAO,IAAIK,UAAA,EAAY;QACrBE,SAAA,GAAYN,YAAA,KAAiB,IAAIL,SAAA,CAAUI,MAAM,GAAG,IAAIC,YAAA,GAAe;MACzE,OAAO;QACLM,SAAA,GAAYN,YAAA,KAAiBL,SAAA,CAAUI,MAAM,GAAG,IAAI,IAAIC,YAAA,GAAe;MACzE;MAEAL,SAAS,CAACW,SAAA,CAAU,CAACZ,KAAK;IAC5B;EACF;EAEA;EACA;EACA;EACA;EAEA,MAAMa,qBAAA,GAAwBzH,cAAA,CAAgBgG,GAAA;IAC5C,MAAMC,QAAA,GAASD,GAAA,CAAEC,MAAM;IAEvB;IACA,IAAIA,QAAA,CAAOK,OAAO,CAAC,+BAA+B;MAChD;IACF;IAEA;IACA,MAAMoB,UAAA,GAAazB,QAAA,CAAOK,OAAO,CAAC;IAClC,IAAIoB,UAAA,IAAc9E,QAAA,CAASc,OAAO,EAAEyC,QAAA,CAASuB,UAAA,GAAa;MACxD;MACA,IAAIA,UAAA,CAAWpB,OAAO,CAAC,IAAInG,SAAA,gBAAyB,GAAG;QACrD;MACF;MACAoD,SAAA,CAAU;IACZ;EACF;EAEA;EACA;EACA;EAEA3D,SAAA,CAAU;IACR,IAAI,CAACuD,MAAA,EAAQ;MACX,MAAMU,OAAA,GAAQjB,QAAA,CAASc,OAAO;MAC9B,IAAIG,OAAA,EAAO;QACT;QACA;QACA;QACA;QACAA,OAAA,CAAM+B,KAAK,CAAC3E,QAAQ,GAAG;QACvB4C,OAAA,CAAM+B,KAAK,CAACtB,GAAG,GAAG;QAClBT,OAAA,CAAM+B,KAAK,CAACrB,IAAI,GAAG;MACrB;MACA;IACF;IAEA,MAAMV,OAAA,GAAQjB,QAAA,CAASc,OAAO;IAC9B,IAAI,CAACG,OAAA,EAAO;MACV;IACF;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA;IACAf,UAAA,CAAWY,OAAO,GAAGjD,gBAAA,CAAiBoC,UAAA,CAAWa,OAAO;IAExDC,cAAA;IACA,MAAMgE,KAAA,GAAQC,qBAAA,CAAsB;MAClCjE,cAAA;IACF;IAEA;IACA;IACA;IACA;IACA;IAEA,IAAIZ,oBAAA,CAAqBW,OAAO,EAAE;MAChC;MACAkE,qBAAA,CAAsB;QACpB,MAAMC,cAAA,GAAiBhE,OAAA,CAAM8C,aAAa,CAActG,iBAAA;QACxDwH,cAAA,EAAgBjB,KAAA;MAClB;IACF;IAEA;IACA;IACA;IACA;IACA;IACA;IAEA7F,MAAA,CAAO+G,gBAAgB,CAAC,UAAUnE,cAAA;IAClC5C,MAAA,CAAO+G,gBAAgB,CAAC,UAAUnE,cAAA,EAAgB;MAAEoE,OAAA,EAAS;MAAMC,OAAA,EAAS;IAAK;IACjFnH,QAAA,CAASiH,gBAAgB,CAAC,aAAa/B,kBAAA;IACvClF,QAAA,CAASiH,gBAAgB,CAAC,WAAWtB,aAAA;IACrC3C,OAAA,CAAMiE,gBAAgB,CAAC,SAASL,qBAAA;IAEhC,OAAO;MACLQ,oBAAA,CAAqBN,KAAA;MACrB5G,MAAA,CAAOmH,mBAAmB,CAAC,UAAUvE,cAAA;MACrC5C,MAAA,CAAOmH,mBAAmB,CAAC,UAAUvE,cAAA,EAAgB;QAAEoE,OAAA,EAAS;MAAK;MACrElH,QAAA,CAASqH,mBAAmB,CAAC,aAAanC,kBAAA;MAC1ClF,QAAA,CAASqH,mBAAmB,CAAC,WAAW1B,aAAA;MACxC3C,OAAA,CAAMqE,mBAAmB,CAAC,SAAST,qBAAA;IACrC;EACF,GAAG,CAACtE,MAAA,CAAO;EAEXvD,SAAA,CAAU;IACR,IAAIiC,SAAA,KAAcsG,SAAA,EAAW;MAC3B5E,SAAA,CAAU1B,SAAA;IACZ;EACF,GAAG,CAACA,SAAA,EAAW0B,SAAA,CAAU;EAEzB,MAAM6E,OAAA,gBACJC,IAAA,CAACnI,YAAA;IACCiD,MAAA,EAAQA,MAAA;IACR9B,MAAA,EAAQA,MAAA;IACRG,UAAA,EAAYA,UAAA;IACZG,SAAA,EAAWL,eAAA;IACXM,QAAA,EAAUA,QAAA;IACVI,YAAA,EAAcA,YAAA;IACdK,YAAA,EAAcA,YAAA;IACdkB,SAAA,EAAWA,SAAA;IACXd,IAAA,EAAMlB;;EAIV,oBACE+G,KAAA,CAAC;IAAI3G,SAAA,EAAW,CAACxB,SAAA,EAAWwB,SAAA,CAAU,CAAC4G,MAAM,CAACC,OAAA,EAAShI,IAAI,CAAC;IAAMY,EAAA,EAAIA,EAAA;4BACpEiH,IAAA,CAAC;MAAI1G,SAAA,EAAW,GAAGxB,SAAA,gBAAyB;MAAEsI,GAAA,EAAK5F,UAAA;gBAChDP,WAAA,gBACC+F,IAAA,CAAC;QACC1G,SAAA,EAAW,GAAGxB,SAAA,kBAA2B;QACzCuI,YAAA,EAAcA,CAAA,KAAMnF,SAAA,CAAU;QAC9BoF,YAAA,EAAcA,CAAA,KAAMpF,SAAA,CAAU;QAC9BqF,IAAA,EAAK;QACLC,QAAA,EAAU;kBAETT;WAGHA;QAIHnF,OAAA;IAEG;IACA;IACA;;IACAlD,YAAA,cACEsI,IAAA,CAACjI,YAAA;MAAa0I,KAAA,EAAO;QAAElG;MAAS;gBAC9B,aAAA0F,KAAA,CAAC;QACC3G,SAAA,EACEwB,MAAA,GACI,CACE,GAAGhD,SAAA,WAAoB,EACvB,GAAGA,SAAA,UAAmBsC,IAAA,EAAM,EAC5BD,IAAA,GACI,GAAGrC,SAAA,UAAmBqC,IAAA,EAAM,GAC5Ba,OAAA,GACE,GAAGlD,SAAA,SAAkB,GACrB,GAAGA,SAAA,YAAqB,EAC9BgC,eAAA,CACD,CACEoG,MAAM,CAACC,OAAA,EACPhI,IAAI,CAAC;QAER;QACA,GAAGL,SAAA,kBAA2B;QAEpC,iBAAeiB,EAAA,IAAM+G,SAAA;QACrB,cAAYzF,KAAA,KAAU,SAASyF,SAAA,GAAYzF,KAAA;QAC3C+F,GAAA,EAAK7F,QAAA;gCAELyF,IAAA,CAAC;UACC1G,SAAA,EAAW,GAAGxB,SAAA,qBAA8BoC,aAAA,GAAgB,IAAIpC,SAAA,oCAA6C,GAAG,IAAI;oBAEnHuC,KAAA,KAAU,sBACT4F,KAAA,CAAAS,SAAA;uBACG3G,MAAA,GAAS;cAAE4G,KAAA,EAAOA,CAAA,KAAMzF,SAAA,CAAU;YAAO,IACzC7B,QAAA;4BAGH4G,KAAA,CAACrI,aAAA;YAAcyC,KAAA,EAAOA,KAAA;uBACnBN,MAAA,GAAS;cAAE4G,KAAA,EAAOA,CAAA,KAAMzF,SAAA,CAAU;YAAO,IACzC7B,QAAA;;YAIND,KAAA,IAAS,CAACe,IAAA,iBAAQ6F,IAAA,CAAC;UAAI1G,SAAA,EAAW,GAAGxB,SAAA;;;QAG1CU,QAAA,CAASC,IAAI,IAEf;;AAGV","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["PopupList","React","createContext","use","useCallback","useEffect","useRef","useState","createPortal","useEffectEvent","ThemeProvider","PopupTrigger","baseClass","PopupContext","TABBABLE_SELECTOR","map","s","join","hasFixedAncestor","element","node","parentElement","document","body","window","getComputedStyle","position","Popup","props","id","button","buttonAriaLabel","buttonClassName","buttonSize","buttonType","caret","children","className","disabled","forceOpen","horizontalAlign","initActive","noBackground","onToggleClose","onToggleOpen","portalClassName","render","renderButton","showOnHover","showScrollbar","side","size","theme","verticalAlign","popupRef","triggerRef","isFixedRef","openedViaKeyboardRef","parentPopup","mounted","setMounted","active","setActiveInternal","isOnTop","setIsOnTop","setActive","isActive","viaKeyboard","current","updatePosition","trigger","popup","triggerRect","getBoundingClientRect","popupRect","useFixed","scrollY","scrollX","offset","sideOffset","top","left","caretLeft","maxTop","innerHeight","height","Math","max","min","anchorRect","width","right","innerWidth","onTop","bottom","topIfAbove","triggerCenter","newTop","round","newLeft","newCaretLeft","newPosition","style","getPropertyValue","setProperty","handleClickOutside","e","target","isOutsidePopup","contains","isOutsideTrigger","clickedPopupContent","closest","isInsideChildPopup","handleKeyDown","key","preventDefault","querySelector","focus","focusable","Array","from","querySelectorAll","length","currentIndex","findIndex","el","activeElement","goBackward","shiftKey","nextIndex","handleActionableClick","actionable","rafId","requestAnimationFrame","firstFocusable","addEventListener","capture","passive","cancelAnimationFrame","removeEventListener","undefined","Trigger","_jsx","_jsxs","filter","Boolean","ref","onMouseEnter","onMouseLeave","role","tabIndex","value","_Fragment","close"],"sources":["../../../src/elements/Popup/index.tsx"],"sourcesContent":["'use client'\nimport type { CSSProperties } from 'react'\n\nexport * as PopupList from './PopupButtonList/index.js'\n\nimport React, { createContext, use, useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { ThemeProvider } from '../../providers/Theme/index.js'\nimport './index.css'\nimport { PopupTrigger } from './PopupTrigger/index.js'\n\nconst baseClass = 'popup'\n\ntype PopupContextValue = {\n popupRef: React.RefObject<HTMLDivElement | null>\n}\n\nconst PopupContext = createContext<null | PopupContextValue>(null)\n\n/**\n * Selector for all elements the browser considers tabbable.\n */\nconst TABBABLE_SELECTOR = [\n 'a[href]',\n 'button:not(:disabled)',\n 'input:not(:disabled):not([type=\"hidden\"])',\n 'select:not(:disabled)',\n 'textarea:not(:disabled)',\n '[tabindex]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'audio[controls]',\n 'video[controls]',\n 'summary',\n]\n .map((s) => `${s}:not([tabindex=\"-1\"])`)\n .join(', ')\n\n/**\n * Returns whether the element has a `position: fixed` ancestor (e.g. an open Drawer).\n * Such popups must be positioned with `fixed` so they don't drift when the background scrolls.\n */\nconst hasFixedAncestor = (element: HTMLElement | null): boolean => {\n let node = element?.parentElement\n while (node && node !== document.body) {\n if (window.getComputedStyle(node).position === 'fixed') {\n return true\n }\n node = node.parentElement\n }\n return false\n}\n\nexport type PopupProps = {\n backgroundColor?: CSSProperties['backgroundColor']\n boundingRef?: React.RefObject<HTMLElement>\n button?: React.ReactNode\n /**\n * Accessible label for the trigger button.\n * Necessary when the button has an icon-only content,\n * so the button has an accessible name for screen readers.\n */\n buttonAriaLabel?: string\n /**\n * The class name to apply to the button that triggers the popup.\n */\n buttonClassName?: string\n buttonSize?: 'large' | 'medium'\n buttonType?: 'custom' | 'default'\n caret?: boolean\n children?: React.ReactNode\n /**\n * The class name to apply to the popup container containing the trigger.\n * This does not wrap the actual popup content, which is rendered in a portal.\n */\n className?: string\n disabled?: boolean\n /**\n * Force control the open state of the popup, regardless of the trigger.\n */\n forceOpen?: boolean\n /**\n * Preferred horizontal alignment of the popup, if there is enough space available.\n *\n * @default 'left'\n */\n horizontalAlign?: 'center' | 'left' | 'right'\n id?: string\n initActive?: boolean\n noBackground?: boolean\n onToggleClose?: () => void\n onToggleOpen?: (active: boolean) => void\n /**\n * Class name to apply to the portal container.\n */\n portalClassName?: string\n render?: (args: { close: () => void }) => React.ReactNode\n /**\n * Render prop for custom trigger button. Receives onClick/onKeyDown/aria props.\n * When provided, `button` and `buttonType` are ignored.\n */\n renderButton?: (props: {\n active: boolean\n 'aria-expanded': boolean\n 'aria-haspopup': true\n onClick: React.MouseEventHandler\n onKeyDown: React.KeyboardEventHandler\n }) => React.ReactNode\n showOnHover?: boolean\n /**\n * By default, the scrollbar is hidden. If you want to show it, set this to true.\n * In both cases, the container is still scrollable.\n *\n * @default false\n */\n showScrollbar?: boolean\n /**\n * Position the popup to the side of the trigger instead of above/below.\n * The popup's top edge aligns with the trigger's top edge (with viewport clamping).\n * Automatically flips to the opposite side if there is not enough space.\n * When set, `verticalAlign`, `horizontalAlign`, and the caret are ignored.\n */\n side?: 'left' | 'right'\n size?: 'fit-content' | 'large' | 'small'\n /**\n * Theme for the popup content. Defaults to 'dark'.\n * Set to 'auto' to inherit the current theme.\n *\n * @default 'dark'\n */\n theme?: 'auto' | 'dark' | 'light'\n /**\n * Preferred vertical alignment of the popup (position below or above the trigger),\n * if there is enough space available.\n *\n * If the popup is too close to the edge of the viewport, it will flip to the opposite side\n * regardless of the preferred vertical alignment.\n *\n * @default 'bottom'\n */\n verticalAlign?: 'bottom' | 'top'\n}\n\n/**\n * Component that renders a popup, as well as a button that triggers the popup.\n *\n * The popup is rendered in a portal, and is automatically positioned above / below the trigger,\n * depending on the verticalAlign prop and the space available.\n */\nexport const Popup: React.FC<PopupProps> = (props) => {\n const {\n id,\n button,\n buttonAriaLabel,\n buttonClassName,\n buttonSize,\n buttonType = 'default',\n caret = true,\n children,\n className,\n disabled,\n forceOpen,\n horizontalAlign = 'left',\n initActive = false,\n noBackground,\n onToggleClose,\n onToggleOpen,\n portalClassName,\n render,\n renderButton,\n showOnHover = false,\n showScrollbar = false,\n side,\n size = 'fit-content',\n theme = 'dark',\n verticalAlign = 'bottom',\n } = props\n\n const popupRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLDivElement>(null)\n\n /**\n * Whether the trigger is inside a `position: fixed` ancestor (e.g. a Drawer),\n * in which case the popup is positioned with `fixed` instead of `absolute`.\n */\n const isFixedRef = useRef(false)\n\n /**\n * Keeps track of whether the popup was opened via keyboard.\n * This is used to determine whether to autofocus the first element in the popup.\n * If the popup was opened via mouse, we do not want to autofocus the first element.\n */\n const openedViaKeyboardRef = useRef(false)\n\n const parentPopup = use(PopupContext)\n\n const [mounted, setMounted] = useState(false)\n const [active, setActiveInternal] = useState(initActive)\n const [isOnTop, setIsOnTop] = useState(verticalAlign === 'top')\n\n // Track when component is mounted to avoid SSR/client hydration mismatch\n useEffect(() => {\n setMounted(true)\n }, [])\n\n const setActive = useCallback(\n (isActive: boolean, viaKeyboard = false) => {\n if (isActive) {\n openedViaKeyboardRef.current = viaKeyboard\n onToggleOpen?.(true)\n } else {\n onToggleClose?.()\n }\n setActiveInternal(isActive)\n },\n [onToggleClose, onToggleOpen],\n )\n\n // /////////////////////////////////////\n // Position Calculation\n //\n // Calculates and applies popup position relative to trigger.\n // Always checks viewport bounds (for flipping), but only updates\n // styles if the calculated position differs from current position.\n // /////////////////////////////////////\n\n const updatePosition = useEffectEvent(() => {\n const trigger = triggerRef.current\n const popup = popupRef.current\n if (!trigger || !popup) {\n return\n }\n\n const triggerRect = trigger.getBoundingClientRect()\n const popupRect = popup.getBoundingClientRect()\n\n // Inside a fixed ancestor, use `fixed` (no scroll offset) so background scrolling\n // doesn't shift the popup. Otherwise use page coordinates (absolute).\n const useFixed = isFixedRef.current\n const scrollY = useFixed ? 0 : window.scrollY\n const scrollX = useFixed ? 0 : window.scrollX\n\n // Gap between the popup and the trigger/viewport edges (in pixels)\n const offset = 10\n // Additional gap used in side mode so the child popup has breathing room from its parent\n const sideOffset = 4\n\n let top: number\n let left: number\n let caretLeft: number\n\n if (side) {\n // /////////////////////////////////////\n // Side Positioning\n // Places the popup to the left or right of the parent popup (not just the trigger),\n // top-aligned with the trigger. Flips to the opposite side if there is not enough\n // viewport space.\n // /////////////////////////////////////\n\n // Top: align with trigger top, clamped to viewport\n top = triggerRect.top + scrollY\n const maxTop = scrollY + window.innerHeight - popupRect.height - offset\n top = Math.max(scrollY + offset, Math.min(top, maxTop))\n\n // Use the parent popup's bounding rect as the reference for left/right positioning\n // so the child appears 4px from the parent popup edge, not just the trigger button.\n const anchorRect = parentPopup?.popupRef.current\n ? parentPopup.popupRef.current.getBoundingClientRect()\n : triggerRect\n\n if (side === 'left') {\n left = anchorRect.left - popupRect.width - sideOffset\n if (left < offset) {\n // flip to right side\n left = anchorRect.right + sideOffset\n }\n } else {\n left = anchorRect.right + sideOffset\n if (left + popupRect.width + offset > window.innerWidth) {\n // flip to left side\n left = anchorRect.left - popupRect.width - sideOffset\n }\n }\n\n left = left + scrollX\n // Caret not used in side mode; set a neutral value\n caretLeft = popupRect.width / 2\n\n setIsOnTop(false)\n } else {\n // /////////////////////////////////////\n // Vertical Positioning\n // Calculates the `top` position in absolute page coordinates.\n // Uses `verticalAlign` prop as the preferred direction, but flips\n // to the opposite side if there's not enough viewport space.\n // /////////////////////////////////////\n\n let onTop = verticalAlign === 'top'\n\n if (verticalAlign === 'bottom') {\n top = triggerRect.bottom + scrollY + offset\n\n if (triggerRect.bottom + popupRect.height + offset > window.innerHeight) {\n // Try to flip above — only do so if there's actually enough room\n const topIfAbove = triggerRect.top + scrollY - popupRect.height - offset\n if (topIfAbove >= scrollY) {\n top = topIfAbove\n onTop = true\n }\n // else: not enough room above either — keep below and let it overflow rather than going off-screen\n }\n } else {\n top = triggerRect.top + scrollY - popupRect.height - offset\n\n if (triggerRect.top - popupRect.height - offset < 0) {\n top = triggerRect.bottom + scrollY + offset\n onTop = false\n }\n }\n\n setIsOnTop(onTop)\n\n // /////////////////////////////////////\n // Horizontal Positioning\n // Calculates the `left` position based on `horizontalAlign` prop:\n // - 'left': aligns popup's left edge with trigger's left edge\n // - 'right': aligns popup's right edge with trigger's right edge\n // - 'center': centers popup horizontally relative to trigger\n // Then clamps to keep the popup within viewport bounds.\n // /////////////////////////////////////\n\n left =\n horizontalAlign === 'right'\n ? triggerRect.right - popupRect.width\n : horizontalAlign === 'center'\n ? triggerRect.left + triggerRect.width / 2 - popupRect.width / 2\n : triggerRect.left\n\n left = Math.max(offset, Math.min(left, window.innerWidth - popupRect.width - offset))\n\n // /////////////////////////////////////\n // Caret Positioning\n // Positions the caret arrow to point at the trigger's horizontal center.\n // Clamps between 12px from edges to prevent caret from overflowing the popup.\n // /////////////////////////////////////\n\n const triggerCenter = triggerRect.left + triggerRect.width / 2\n caretLeft = Math.max(12, Math.min(triggerCenter - left, popupRect.width - 12))\n }\n\n // /////////////////////////////////////\n // Apply Styles (only if changed)\n // Compares calculated position with current styles to avoid unnecessary\n // DOM updates during scroll. This prevents visual lag by relying on the absolute\n // positioning where possible (popup slightly lags behind when scrolling really fast),\n // while still allowing position changes when needed (e.g., sticky parent, viewport flip).\n // Values are rounded to match browser's CSS precision and avoid false updates.\n // /////////////////////////////////////\n\n const newTop = `${Math.round(top)}px`\n const newLeft = `${Math.round(left + scrollX)}px`\n const newCaretLeft = `${Math.round(caretLeft)}px`\n const newPosition = useFixed ? 'fixed' : ''\n\n if (popup.style.position !== newPosition) {\n popup.style.position = newPosition\n }\n if (popup.style.top !== newTop) {\n popup.style.top = newTop\n }\n if (popup.style.left !== newLeft) {\n popup.style.left = newLeft\n }\n if (popup.style.getPropertyValue('--caret-left') !== newCaretLeft) {\n popup.style.setProperty('--caret-left', newCaretLeft)\n }\n })\n\n // /////////////////////////////////////\n // Click Outside Handler\n // Closes popup when clicking outside both the popup and trigger.\n // Distinguishes between parent and child popups:\n // - Click in child popup: parent stays open\n // - Click in parent popup: child closes\n // /////////////////////////////////////\n\n const handleClickOutside = useEffectEvent((e: MouseEvent) => {\n const target = e.target as Node\n const isOutsidePopup = !popupRef.current?.contains(target)\n const isOutsideTrigger = !triggerRef.current?.contains(target)\n\n // Check if click is inside a popup portal\n const clickedPopupContent = (target as Element).closest?.('.popup__content')\n\n // If the clicked popup contains this popup's trigger, it's a parent popup\n // and we should close. If it doesn't contain our trigger, it's a child popup\n // and we should stay open to avoid closing parent when interacting with child.\n const isInsideChildPopup =\n clickedPopupContent && !clickedPopupContent.contains(triggerRef.current)\n\n if (isOutsidePopup && isOutsideTrigger && !isInsideChildPopup) {\n setActive(false)\n }\n })\n\n // /////////////////////////////////////\n // Keyboard Navigation\n // Handles keyboard interactions when popup is open:\n // - Escape: closes popup and returns focus to trigger\n // - Tab/Shift+Tab: cycles through focusable items with wrapping\n // - ArrowUp/ArrowDown: same as Shift+Tab/Tab for menu-style navigation\n // Focus is managed manually to support elements the browser might skip.\n // /////////////////////////////////////\n\n const handleKeyDown = useEffectEvent((e: KeyboardEvent) => {\n const popup = popupRef.current\n if (!popup || !active) {\n return\n }\n\n if (e.key === 'Escape') {\n e.preventDefault()\n setActive(false)\n triggerRef.current?.querySelector<HTMLElement>('button, [tabindex=\"0\"]')?.focus()\n return\n }\n\n if (e.key === 'Tab' || e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n const focusable = Array.from(popup.querySelectorAll<HTMLElement>(TABBABLE_SELECTOR))\n if (focusable.length === 0) {\n return\n }\n\n e.preventDefault()\n\n const currentIndex = focusable.findIndex((el) => el === document.activeElement)\n const goBackward = e.key === 'ArrowUp' || (e.key === 'Tab' && e.shiftKey)\n\n let nextIndex: number\n if (currentIndex === -1) {\n nextIndex = goBackward ? focusable.length - 1 : 0\n } else if (goBackward) {\n nextIndex = currentIndex === 0 ? focusable.length - 1 : currentIndex - 1\n } else {\n nextIndex = currentIndex === focusable.length - 1 ? 0 : currentIndex + 1\n }\n\n focusable[nextIndex].focus()\n }\n })\n\n // /////////////////////////////////////\n // Click Handler for Actionable Elements\n // Closes popup when buttons/links inside are clicked (includes Enter/Space activation).\n // /////////////////////////////////////\n\n const handleActionableClick = useEffectEvent((e: MouseEvent) => {\n const target = e.target as HTMLElement\n\n // Allow opting out with data-popup-prevent-close attribute on element or ancestor\n if (target.closest('[data-popup-prevent-close]')) {\n return\n }\n\n // Check if the clicked element or any ancestor is an actionable element\n const actionable = target.closest('button, a[href], [role=\"button\"], [role=\"menuitem\"]')\n if (actionable && popupRef.current?.contains(actionable)) {\n // Don't close if clicking a nested popup's trigger — it will manage its own open state\n if (actionable.closest(`.${baseClass}__trigger-wrap`)) {\n return\n }\n setActive(false)\n }\n })\n\n // /////////////////////////////////////\n // Effect: Setup/Teardown position and focus management\n // /////////////////////////////////////\n\n useEffect(() => {\n if (!active) {\n const popup = popupRef.current\n if (popup) {\n // Clear inline position styles so the CSS `top: -9999px` rule on\n // `.popup__hidden-content` takes effect. Without this, the inline\n // styles set during positioning would win over the CSS rule, keeping\n // portaled children (e.g. a ReactSelect menu) visually on-screen.\n popup.style.position = ''\n popup.style.top = ''\n popup.style.left = ''\n }\n return\n }\n\n const popup = popupRef.current\n if (!popup) {\n return\n }\n\n // /////////////////////////////////////\n // Initial Position\n // Calculate and apply popup position.\n // getBoundingClientRect() forces synchronous layout.\n //\n // We call updatePosition() twice: once synchronously (so the popup\n // snaps to roughly the right place immediately rather than flashing\n // from -9999px) and once in a requestAnimationFrame, which fires\n // after the browser has finished laying out the newly-visible popup\n // content. The rAF call is the authoritative one — it catches cases\n // where the popup height wasn't stable yet during the first call\n // (e.g. ColumnSelection popup content rendering after hidden → visible\n // class switch), which was causing incorrect flip-to-top decisions.\n // /////////////////////////////////////\n\n // Decide the positioning strategy once per open.\n isFixedRef.current = hasFixedAncestor(triggerRef.current)\n\n updatePosition()\n const rafId = requestAnimationFrame(() => {\n updatePosition()\n })\n\n // /////////////////////////////////////\n // Focus Management\n // When opened via keyboard, autofocus the first focusable button.\n // When opened via mouse, skip autofocus to avoid unwanted highlights.\n // /////////////////////////////////////\n\n if (openedViaKeyboardRef.current) {\n // Use requestAnimationFrame to ensure DOM is ready.\n requestAnimationFrame(() => {\n const firstFocusable = popup.querySelector<HTMLElement>(TABBABLE_SELECTOR)\n firstFocusable?.focus()\n })\n }\n\n // /////////////////////////////////////\n // Event Listeners\n // - resize/scroll: recalculate position (only applies styles if changed)\n // - mousedown: detect clicks outside to close\n // - keydown: handle keyboard navigation\n // /////////////////////////////////////\n\n window.addEventListener('resize', updatePosition)\n window.addEventListener('scroll', updatePosition, { capture: true, passive: true })\n document.addEventListener('mousedown', handleClickOutside)\n document.addEventListener('keydown', handleKeyDown)\n popup.addEventListener('click', handleActionableClick)\n\n return () => {\n cancelAnimationFrame(rafId)\n window.removeEventListener('resize', updatePosition)\n window.removeEventListener('scroll', updatePosition, { capture: true })\n document.removeEventListener('mousedown', handleClickOutside)\n document.removeEventListener('keydown', handleKeyDown)\n popup.removeEventListener('click', handleActionableClick)\n }\n }, [active])\n\n useEffect(() => {\n if (forceOpen !== undefined) {\n setActive(forceOpen)\n }\n }, [forceOpen, setActive])\n\n const Trigger = (\n <PopupTrigger\n active={active}\n button={button}\n buttonAriaLabel={buttonAriaLabel}\n buttonType={buttonType}\n className={buttonClassName}\n disabled={disabled}\n noBackground={noBackground}\n renderButton={renderButton}\n setActive={setActive}\n size={buttonSize}\n />\n )\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')} id={id}>\n <div className={`${baseClass}__trigger-wrap`} ref={triggerRef}>\n {showOnHover ? (\n <div\n className={`${baseClass}__on-hover-watch`}\n onMouseEnter={() => setActive(true)}\n onMouseLeave={() => setActive(false)}\n role=\"button\"\n tabIndex={0}\n >\n {Trigger}\n </div>\n ) : (\n Trigger\n )}\n </div>\n\n {mounted\n ? // We need to make sure the popup is part of the DOM (although invisible), even if it's not active.\n // This ensures that components within the popup, like modals, do not unmount when the popup closes.\n // Otherwise, modals opened from the popup will close unexpectedly when clicking within the modal, since\n // that closes the popup due to the click outside handler.\n createPortal(\n <PopupContext value={{ popupRef }}>\n <div\n className={\n active\n ? [\n `${baseClass}__content`,\n `${baseClass}--size-${size}`,\n side\n ? `${baseClass}--side-${side}`\n : isOnTop\n ? `${baseClass}--v-top`\n : `${baseClass}--v-bottom`,\n portalClassName,\n ]\n .filter(Boolean)\n .join(' ')\n : // Do not share any class names between active and disabled popups, to make sure\n // tests do not accidentally target inactive popups.\n `${baseClass}__hidden-content`\n }\n data-popup-id={id || undefined}\n data-theme={theme === 'auto' ? undefined : theme}\n ref={popupRef}\n >\n <div\n className={`${baseClass}__scroll-container${showScrollbar ? ` ${baseClass}__scroll-container--show-scrollbar` : ''}`}\n >\n {theme === 'auto' ? (\n <>\n {render?.({ close: () => setActive(false) })}\n {children}\n </>\n ) : (\n <ThemeProvider theme={theme}>\n {render?.({ close: () => setActive(false) })}\n {children}\n </ThemeProvider>\n )}\n </div>\n {caret && !side && <div className={`${baseClass}__caret`} />}\n </div>\n </PopupContext>,\n document.body,\n )\n : null}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}