@applica-software-guru/react-admin 1.0.32 → 1.0.34

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 (350) hide show
  1. package/.eslintrc.json +43 -0
  2. package/.husky/pre-commit +4 -0
  3. package/.nvmrc +1 -0
  4. package/.prettierrc +8 -0
  5. package/bitbucket-pipelines.yml +30 -0
  6. package/dist/Admin.d.ts +1 -1
  7. package/dist/ApplicaAdmin.d.ts +3 -3
  8. package/dist/ApplicaAdmin.d.ts.map +1 -1
  9. package/dist/components/@extended/AnimateButton.d.ts +5 -5
  10. package/dist/components/@extended/Avatar.d.ts +3 -3
  11. package/dist/components/@extended/Breadcrumbs.d.ts +5 -5
  12. package/dist/components/@extended/Dot.d.ts +1 -1
  13. package/dist/components/@extended/Tooltip.d.ts +1 -1
  14. package/dist/components/ActionsMenu.d.ts +1 -1
  15. package/dist/components/ActionsMenu.d.ts.map +1 -1
  16. package/dist/components/Layout/Drawer/DrawerContent/Navigation/NavGroup.d.ts +1 -1
  17. package/dist/components/Layout/Drawer/DrawerContent/Navigation/NavGroup.d.ts.map +1 -1
  18. package/dist/components/Layout/Drawer/DrawerHeader/DrawerHeaderStyled.d.ts +5 -5
  19. package/dist/components/Layout/Header/AppBarStyled.d.ts +13 -13
  20. package/dist/components/Layout/Header/HeaderContent/NotificationItem.d.ts +3 -3
  21. package/dist/components/Logo.d.ts +2 -2
  22. package/dist/components/MenuPopover/MenuPopover.d.ts +1 -1
  23. package/dist/components/Notification.d.ts +5 -1
  24. package/dist/components/Notification.d.ts.map +1 -1
  25. package/dist/components/ra-buttons/CreateInDialogButton.d.ts +16 -1
  26. package/dist/components/ra-buttons/CreateInDialogButton.d.ts.map +1 -1
  27. package/dist/components/ra-buttons/ImpersonateUserButton.d.ts +1 -1
  28. package/dist/components/ra-fields/ActionsField.d.ts +1 -1
  29. package/dist/components/ra-fields/ActionsField.d.ts.map +1 -1
  30. package/dist/components/ra-fields/AttachmentField.d.ts +19 -1
  31. package/dist/components/ra-fields/AttachmentField.d.ts.map +1 -1
  32. package/dist/components/ra-fields/BaseAttachmentField.d.ts +2 -2
  33. package/dist/components/ra-fields/CoverField.d.ts +19 -1
  34. package/dist/components/ra-fields/CoverField.d.ts.map +1 -1
  35. package/dist/components/ra-fields/EmailField.d.ts +12 -1
  36. package/dist/components/ra-fields/FileField.d.ts +19 -1
  37. package/dist/components/ra-fields/FileField.d.ts.map +1 -1
  38. package/dist/components/ra-fields/ImageField.d.ts +15 -1
  39. package/dist/components/ra-fields/ImageField.d.ts.map +1 -1
  40. package/dist/components/ra-fields/ReadonlyField.d.ts +1 -1
  41. package/dist/components/ra-fields/ReferenceManyField.d.ts +32 -2
  42. package/dist/components/ra-fields/ReferenceManyField.d.ts.map +1 -1
  43. package/dist/components/ra-forms/Edit.d.ts +24 -1
  44. package/dist/components/ra-forms/Edit.d.ts.map +1 -1
  45. package/dist/components/ra-forms/LongForm/LongFormHeader.d.ts +1 -1
  46. package/dist/components/ra-forms/LongForm/LongFormHeader.d.ts.map +1 -1
  47. package/dist/components/ra-forms/LongForm/LongFormTab.d.ts +4 -4
  48. package/dist/components/ra-forms/LongForm/LongFormTab.d.ts.map +1 -1
  49. package/dist/components/ra-forms/LongForm/LongFormTabs.d.ts +2 -2
  50. package/dist/components/ra-forms/SimpleForm.d.ts +13 -1
  51. package/dist/components/ra-forms/SimpleForm.d.ts.map +1 -1
  52. package/dist/components/ra-forms/TabbedForm.d.ts +9 -1
  53. package/dist/components/ra-forms/TabbedForm.d.ts.map +1 -1
  54. package/dist/components/ra-forms/Toolbar.d.ts +5 -1
  55. package/dist/components/ra-inputs/AttachmentInput.d.ts +20 -1
  56. package/dist/components/ra-inputs/AttachmentInput.d.ts.map +1 -1
  57. package/dist/components/ra-inputs/AutocompleteArrayInput.d.ts +1 -2
  58. package/dist/components/ra-inputs/AutocompleteArrayInput.d.ts.map +1 -1
  59. package/dist/components/ra-inputs/AutocompleteInput.d.ts +1 -2
  60. package/dist/components/ra-inputs/AutocompleteInput.d.ts.map +1 -1
  61. package/dist/components/ra-inputs/BooleanInput.d.ts +19 -2
  62. package/dist/components/ra-inputs/BooleanInput.d.ts.map +1 -1
  63. package/dist/components/ra-inputs/DateInput.d.ts +11 -1
  64. package/dist/components/ra-inputs/FileInput.d.ts +21 -1
  65. package/dist/components/ra-inputs/FileInput.d.ts.map +1 -1
  66. package/dist/components/ra-inputs/LabeledInput.d.ts +2 -2
  67. package/dist/components/ra-inputs/NumberInput.d.ts +19 -2
  68. package/dist/components/ra-inputs/RecordInput.d.ts +1 -1
  69. package/dist/components/ra-inputs/ReferenceArrayInput.d.ts +25 -2
  70. package/dist/components/ra-inputs/ReferenceArrayInput.d.ts.map +1 -1
  71. package/dist/components/ra-inputs/ReferenceInput.d.ts +26 -2
  72. package/dist/components/ra-inputs/ReferenceInput.d.ts.map +1 -1
  73. package/dist/components/ra-inputs/ReferenceManyInput.d.ts +34 -2
  74. package/dist/components/ra-inputs/ReferenceManyInput.d.ts.map +1 -1
  75. package/dist/components/ra-inputs/SelectArrayInput.d.ts +18 -1
  76. package/dist/components/ra-inputs/SelectInput.d.ts +21 -1
  77. package/dist/components/ra-inputs/SmartTextInput.d.ts +17 -1
  78. package/dist/components/ra-inputs/SmartTextInput.d.ts.map +1 -1
  79. package/dist/components/ra-inputs/TextInput.d.ts +16 -2
  80. package/dist/components/ra-inputs/TimeInput.d.ts +11 -1
  81. package/dist/components/ra-lists/Datagrid.d.ts +616 -2
  82. package/dist/components/ra-lists/List.d.ts +28 -2
  83. package/dist/contexts/AppConfigContext.d.ts +1 -1
  84. package/dist/contexts/MenuConfigContext.d.ts +4 -4
  85. package/dist/dev/useCliErrorCatcher.d.ts +5 -5
  86. package/dist/hooks/useAppConfig.d.ts +1 -1
  87. package/dist/hooks/useBreadcrumbs.d.ts +2 -2
  88. package/dist/hooks/useMenu.d.ts +2 -2
  89. package/dist/hooks/useMenu.d.ts.map +1 -1
  90. package/dist/hooks/useMenuConfig.d.ts +2 -2
  91. package/dist/i18n/createI18nProvider.d.ts +1 -1
  92. package/dist/i18n/useI18nCatcher.d.ts +4 -4
  93. package/dist/i18n/useI18nLanguages.d.ts +4 -4
  94. package/dist/i18n/useI18nProvider.d.ts +2 -2
  95. package/dist/index.d.ts +1 -1
  96. package/dist/react-admin.cjs.js +25 -25
  97. package/dist/react-admin.es.js +304 -315
  98. package/dist/react-admin.umd.js +25 -25
  99. package/dist/themes/overrides/PaginationItem.d.ts +72 -72
  100. package/jsconfig.json +31 -0
  101. package/jsconfig.node.json +10 -0
  102. package/package.json +6 -5
  103. package/playground/config-overrides.js +31 -0
  104. package/playground/jsconfig.json +9 -0
  105. package/playground/package-lock.json +17764 -0
  106. package/playground/package.json +69 -0
  107. package/playground/public/favicon-dark.png +0 -0
  108. package/playground/public/favicon-light.png +0 -0
  109. package/playground/public/index.html +46 -0
  110. package/playground/src/App.js +49 -0
  111. package/playground/src/build.json +1 -0
  112. package/playground/src/components/index.js +5 -0
  113. package/playground/src/components/pages/CustomPage.jsx +7 -0
  114. package/playground/src/components/pages/index.jsx +2 -0
  115. package/playground/src/components/ra-buttons/index.js +1 -0
  116. package/playground/src/components/ra-fields/UserPictureField.js +20 -0
  117. package/playground/src/components/ra-fields/index.js +2 -0
  118. package/playground/src/components/ra-forms/DeviceForm.js +36 -0
  119. package/playground/src/components/ra-forms/I18nMessageForm.js +24 -0
  120. package/playground/src/components/ra-forms/UserForm.js +51 -0
  121. package/playground/src/components/ra-forms/index.js +5 -0
  122. package/playground/src/components/ra-inputs/LangSelectInput.js +4 -0
  123. package/playground/src/components/ra-inputs/YesOrNoSelectInput.js +14 -0
  124. package/playground/src/components/ra-inputs/index.js +3 -0
  125. package/playground/src/components/ra-lists/DeviceList.js +33 -0
  126. package/playground/src/components/ra-lists/I18nMessageList.js +20 -0
  127. package/playground/src/components/ra-lists/UserList.js +96 -0
  128. package/playground/src/components/ra-lists/index.js +4 -0
  129. package/playground/src/config.js +19 -0
  130. package/playground/src/contexts/index.js +1 -0
  131. package/playground/src/hooks/index.js +1 -0
  132. package/playground/src/index.js +10 -0
  133. package/playground/src/menu.js +72 -0
  134. package/playground/src/react-app-env.d.js +1 -0
  135. package/playground/src/reportWebVitals.js +13 -0
  136. package/playground/src/resource/device.js +23 -0
  137. package/playground/src/resource/i18n-message.js +29 -0
  138. package/playground/src/resource/index.js +4 -0
  139. package/playground/src/resource/notification.js +18 -0
  140. package/playground/src/resource/user.js +28 -0
  141. package/playground/src/theme.js +3 -0
  142. package/src/Admin.jsx +67 -0
  143. package/src/AdminContext.jsx +26 -0
  144. package/src/ApplicaAdmin.jsx +210 -0
  145. package/src/assets/README.md +7 -0
  146. package/src/assets/logo-icon.png +0 -0
  147. package/src/assets/logo-main.png +0 -0
  148. package/src/components/@extended/AnimateButton.jsx +96 -0
  149. package/src/components/@extended/Avatar.jsx +125 -0
  150. package/src/components/@extended/Breadcrumbs.jsx +324 -0
  151. package/src/components/@extended/Dot.jsx +35 -0
  152. package/src/components/@extended/IconButton.jsx +166 -0
  153. package/src/components/@extended/LoadingButton.jsx +228 -0
  154. package/src/components/@extended/Tooltip.jsx +67 -0
  155. package/src/components/@extended/Transitions.jsx +125 -0
  156. package/src/components/@extended/index.jsx +11 -0
  157. package/src/components/@extended/progress/CircularWithLabel.jsx +34 -0
  158. package/src/components/@extended/progress/CircularWithPath.jsx +74 -0
  159. package/src/components/@extended/progress/LinearWithIcon.jsx +22 -0
  160. package/src/components/@extended/progress/LinearWithLabel.jsx +23 -0
  161. package/src/components/@extended/progress/index.jsx +6 -0
  162. package/src/components/ActionsMenu.jsx +77 -0
  163. package/src/components/Layout/Drawer/DrawerContent/Navigation/NavCollapse.jsx +440 -0
  164. package/src/components/Layout/Drawer/DrawerContent/Navigation/NavGroup.jsx +359 -0
  165. package/src/components/Layout/Drawer/DrawerContent/Navigation/NavItem.jsx +259 -0
  166. package/src/components/Layout/Drawer/DrawerContent/Navigation/index.jsx +73 -0
  167. package/src/components/Layout/Drawer/DrawerContent/index.jsx +19 -0
  168. package/src/components/Layout/Drawer/DrawerHeader/DrawerHeaderStyled.jsx +20 -0
  169. package/src/components/Layout/Drawer/DrawerHeader/index.jsx +44 -0
  170. package/src/components/Layout/Drawer/HorizontalBar.jsx +55 -0
  171. package/src/components/Layout/Drawer/MiniDrawerStyled.jsx +47 -0
  172. package/src/components/Layout/Drawer/index.jsx +63 -0
  173. package/src/components/Layout/Footer.jsx +23 -0
  174. package/src/components/Layout/Header/AppBarStyled.jsx +34 -0
  175. package/src/components/Layout/Header/HeaderContent/MobileSection.jsx +91 -0
  176. package/src/components/Layout/Header/HeaderContent/Notification.jsx +179 -0
  177. package/src/components/Layout/Header/HeaderContent/NotificationItem.jsx +109 -0
  178. package/src/components/Layout/Header/HeaderContent/Profile.jsx +181 -0
  179. package/src/components/Layout/Header/HeaderContent/index.jsx +38 -0
  180. package/src/components/Layout/Header/index.jsx +99 -0
  181. package/src/components/Layout/index.jsx +119 -0
  182. package/src/components/Loadable.jsx +11 -0
  183. package/src/components/Loader.jsx +21 -0
  184. package/src/components/Logo.jsx +29 -0
  185. package/src/components/MainCard.jsx +111 -0
  186. package/src/components/MainIcon.jsx +20 -0
  187. package/src/components/MenuPopover/MenuPopover.jsx +61 -0
  188. package/src/components/MenuPopover/getPosition.jsx +98 -0
  189. package/src/components/MenuPopover/index.jsx +3 -0
  190. package/src/components/MenuPopover/styles.jsx +87 -0
  191. package/src/components/Notification.jsx +13 -0
  192. package/src/components/ScrollTop.jsx +24 -0
  193. package/src/components/ScrollX.jsx +10 -0
  194. package/src/components/SmallIcon.jsx +14 -0
  195. package/src/components/index.jsx +36 -0
  196. package/src/components/ra-buttons/CreateInDialogButton.jsx +203 -0
  197. package/src/components/ra-buttons/EditInDialogButton.jsx +108 -0
  198. package/src/components/ra-buttons/ImpersonateUserButton.jsx +41 -0
  199. package/src/components/ra-buttons/index.jsx +4 -0
  200. package/src/components/ra-fields/ActionsField.jsx +33 -0
  201. package/src/components/ra-fields/AttachmentField.jsx +82 -0
  202. package/src/components/ra-fields/BaseAttachmentField.jsx +72 -0
  203. package/src/components/ra-fields/CoverField.jsx +83 -0
  204. package/src/components/ra-fields/DateAgoField.jsx +35 -0
  205. package/src/components/ra-fields/DateField.jsx +27 -0
  206. package/src/components/ra-fields/EmailField.jsx +27 -0
  207. package/src/components/ra-fields/FileField.jsx +40 -0
  208. package/src/components/ra-fields/FunctionField.jsx +9 -0
  209. package/src/components/ra-fields/ImageField.jsx +20 -0
  210. package/src/components/ra-fields/ReadonlyField.jsx +107 -0
  211. package/src/components/ra-fields/ReferenceManyField.jsx +63 -0
  212. package/src/components/ra-fields/SizeField.jsx +32 -0
  213. package/src/components/ra-fields/TextField.jsx +27 -0
  214. package/src/components/ra-fields/index.jsx +28 -0
  215. package/src/components/ra-forms/CardForm.jsx +113 -0
  216. package/src/components/ra-forms/Edit.jsx +13 -0
  217. package/src/components/ra-forms/FormHeader.jsx +42 -0
  218. package/src/components/ra-forms/LongForm/DispositionProps.jsx +10 -0
  219. package/src/components/ra-forms/LongForm/LongForm.jsx +38 -0
  220. package/src/components/ra-forms/LongForm/LongFormHeader.jsx +24 -0
  221. package/src/components/ra-forms/LongForm/LongFormTab.jsx +121 -0
  222. package/src/components/ra-forms/LongForm/LongFormTabs.jsx +63 -0
  223. package/src/components/ra-forms/LongForm/LongFormView.jsx +129 -0
  224. package/src/components/ra-forms/LongForm/index.jsx +2 -0
  225. package/src/components/ra-forms/LongForm/useFormRootPath.jsx +22 -0
  226. package/src/components/ra-forms/SimpleForm.jsx +69 -0
  227. package/src/components/ra-forms/TabbedForm.jsx +19 -0
  228. package/src/components/ra-forms/Toolbar.jsx +36 -0
  229. package/src/components/ra-forms/index.jsx +8 -0
  230. package/src/components/ra-inputs/ArrayInput.jsx +29 -0
  231. package/src/components/ra-inputs/AttachmentInput.jsx +57 -0
  232. package/src/components/ra-inputs/AutocompleteArrayInput.jsx +25 -0
  233. package/src/components/ra-inputs/AutocompleteInput.jsx +24 -0
  234. package/src/components/ra-inputs/BooleanInput.jsx +54 -0
  235. package/src/components/ra-inputs/DateInput.jsx +30 -0
  236. package/src/components/ra-inputs/FileInput.jsx +98 -0
  237. package/src/components/ra-inputs/ImageInput.jsx +44 -0
  238. package/src/components/ra-inputs/LabeledInput.jsx +80 -0
  239. package/src/components/ra-inputs/NumberInput.jsx +28 -0
  240. package/src/components/ra-inputs/RecordInput.jsx +102 -0
  241. package/src/components/ra-inputs/ReferenceArrayInput.jsx +23 -0
  242. package/src/components/ra-inputs/ReferenceInput.jsx +23 -0
  243. package/src/components/ra-inputs/ReferenceManyInput.jsx +44 -0
  244. package/src/components/ra-inputs/SearchInput.jsx +14 -0
  245. package/src/components/ra-inputs/SelectArrayInput.jsx +45 -0
  246. package/src/components/ra-inputs/SelectInput.jsx +24 -0
  247. package/src/components/ra-inputs/SmartTextInput.jsx +52 -0
  248. package/src/components/ra-inputs/TextInput.jsx +20 -0
  249. package/src/components/ra-inputs/TimeInput.jsx +46 -0
  250. package/src/components/ra-inputs/index.jsx +42 -0
  251. package/src/components/ra-lists/Datagrid.jsx +42 -0
  252. package/src/components/ra-lists/Empty.jsx +94 -0
  253. package/src/components/ra-lists/List.jsx +81 -0
  254. package/src/components/ra-lists/NotificationList/NotificationList.jsx +41 -0
  255. package/src/components/ra-lists/NotificationList/button/MarkAsReadedButton.jsx +57 -0
  256. package/src/components/ra-lists/NotificationList/button/MarkAsUnreadedButton.jsx +56 -0
  257. package/src/components/ra-lists/NotificationList/button/index.jsx +2 -0
  258. package/src/components/ra-lists/NotificationList/field/NotificationField.jsx +80 -0
  259. package/src/components/ra-lists/NotificationList/field/index.jsx +1 -0
  260. package/src/components/ra-lists/NotificationList/index.jsx +2 -0
  261. package/src/components/ra-lists/index.jsx +5 -0
  262. package/src/components/third-party/SimpleBar.jsx +61 -0
  263. package/src/components/third-party/index.jsx +3 -0
  264. package/src/contexts/AppConfigContext.jsx +54 -0
  265. package/src/contexts/MenuConfigContext.jsx +93 -0
  266. package/src/contexts/MenuPropTypes.jsx +19 -0
  267. package/src/contexts/ThemeConfigContext.jsx +138 -0
  268. package/src/contexts/index.jsx +5 -0
  269. package/src/dev/index.jsx +2 -0
  270. package/src/dev/useCliErrorCatcher.jsx +86 -0
  271. package/src/hooks/index.jsx +16 -0
  272. package/src/hooks/useAppConfig.jsx +6 -0
  273. package/src/hooks/useBreadcrumbs.jsx +68 -0
  274. package/src/hooks/useLocalStorage.jsx +31 -0
  275. package/src/hooks/useMenu.jsx +223 -0
  276. package/src/hooks/useMenuConfig.jsx +6 -0
  277. package/src/hooks/useResourceTitle.jsx +25 -0
  278. package/src/hooks/useThemeConfig.jsx +6 -0
  279. package/src/i18n/createI18nProvider.jsx +15 -0
  280. package/src/i18n/index.jsx +4 -0
  281. package/src/i18n/useI18nCatcher.jsx +71 -0
  282. package/src/i18n/useI18nLanguages.jsx +22 -0
  283. package/src/i18n/useI18nProvider.jsx +5 -0
  284. package/src/index.jsx +67 -0
  285. package/src/themes/getColors.jsx +18 -0
  286. package/src/themes/getShadow.jsx +37 -0
  287. package/src/themes/index.jsx +70 -0
  288. package/src/themes/overrides/Accordion.jsx +27 -0
  289. package/src/themes/overrides/AccordionDetails.jsx +14 -0
  290. package/src/themes/overrides/AccordionSummary.jsx +33 -0
  291. package/src/themes/overrides/Alert.jsx +72 -0
  292. package/src/themes/overrides/AlertTitle.jsx +15 -0
  293. package/src/themes/overrides/Autocomplete.jsx +23 -0
  294. package/src/themes/overrides/Badge.jsx +36 -0
  295. package/src/themes/overrides/Button.jsx +229 -0
  296. package/src/themes/overrides/ButtonBase.jsx +12 -0
  297. package/src/themes/overrides/ButtonGroup.jsx +11 -0
  298. package/src/themes/overrides/CardContent.jsx +16 -0
  299. package/src/themes/overrides/Checkbox.jsx +125 -0
  300. package/src/themes/overrides/Chip.jsx +75 -0
  301. package/src/themes/overrides/Dialog.jsx +18 -0
  302. package/src/themes/overrides/DialogContentText.jsx +14 -0
  303. package/src/themes/overrides/DialogTitle.jsx +14 -0
  304. package/src/themes/overrides/Fab.jsx +77 -0
  305. package/src/themes/overrides/IconButton.jsx +28 -0
  306. package/src/themes/overrides/InputBase.jsx +13 -0
  307. package/src/themes/overrides/InputLabel.jsx +25 -0
  308. package/src/themes/overrides/LinearProgress.jsx +17 -0
  309. package/src/themes/overrides/Link.jsx +11 -0
  310. package/src/themes/overrides/ListItemButton.jsx +18 -0
  311. package/src/themes/overrides/ListItemIcon.jsx +14 -0
  312. package/src/themes/overrides/LoadingButton.jsx +17 -0
  313. package/src/themes/overrides/OutlinedInput.jsx +54 -0
  314. package/src/themes/overrides/Pagination.jsx +11 -0
  315. package/src/themes/overrides/PaginationItem.jsx +211 -0
  316. package/src/themes/overrides/Popover.jsx +13 -0
  317. package/src/themes/overrides/Radio.jsx +121 -0
  318. package/src/themes/overrides/Slider.jsx +66 -0
  319. package/src/themes/overrides/Switch.jsx +88 -0
  320. package/src/themes/overrides/Tab.jsx +24 -0
  321. package/src/themes/overrides/TableBody.jsx +27 -0
  322. package/src/themes/overrides/TableCell.jsx +44 -0
  323. package/src/themes/overrides/TableFooter.jsx +15 -0
  324. package/src/themes/overrides/TableHead.jsx +15 -0
  325. package/src/themes/overrides/TablePagination.jsx +16 -0
  326. package/src/themes/overrides/TableRow.jsx +25 -0
  327. package/src/themes/overrides/Tabs.jsx +13 -0
  328. package/src/themes/overrides/ToggleButton.jsx +20 -0
  329. package/src/themes/overrides/Tooltip.jsx +13 -0
  330. package/src/themes/overrides/TreeItem.jsx +18 -0
  331. package/src/themes/overrides/Typography.jsx +13 -0
  332. package/src/themes/overrides/index.jsx +98 -0
  333. package/src/themes/palette.jsx +78 -0
  334. package/src/themes/shadows.jsx +27 -0
  335. package/src/themes/theme/default.jsx +98 -0
  336. package/src/themes/theme/index.jsx +44 -0
  337. package/src/themes/theme/theme1.jsx +128 -0
  338. package/src/themes/theme/theme2.jsx +128 -0
  339. package/src/themes/theme/theme3.jsx +128 -0
  340. package/src/themes/theme/theme4.jsx +128 -0
  341. package/src/themes/theme/theme5.jsx +128 -0
  342. package/src/themes/theme/theme6.jsx +128 -0
  343. package/src/themes/theme/theme7.jsx +128 -0
  344. package/src/themes/theme/theme8.jsx +128 -0
  345. package/src/themes/typography.jsx +71 -0
  346. package/src/utils/index.js +2 -0
  347. package/src/utils/lang.js +12 -0
  348. package/src/utils/time.js +13 -0
  349. package/tsconfig.json +28 -0
  350. package/vite.config.js +74 -0
@@ -0,0 +1,181 @@
1
+ import { Avatar, IconButton, Transitions } from '../../../@extended'
2
+ import {
3
+ Box,
4
+ ButtonBase,
5
+ CardContent,
6
+ ClickAwayListener,
7
+ Grid,
8
+ Paper,
9
+ Popper,
10
+ Stack,
11
+ Tooltip,
12
+ Typography,
13
+ } from '@mui/material'
14
+ import { useAuthProvider, useDataProvider, useGetIdentity, useLogout } from 'react-admin'
15
+ import { useCallback, useEffect, useRef, useState } from 'react'
16
+
17
+ import { LogoutOutlined } from '@ant-design/icons'
18
+ import MainCard from '../../../MainCard'
19
+ import PropTypes from 'prop-types'
20
+ import { useTheme } from '@mui/material/styles'
21
+
22
+ function TabPanel({ children, value, index, ...other }) {
23
+ return (
24
+ <div
25
+ role="tabpanel"
26
+ hidden={value !== index}
27
+ id={`profile-tabpanel-${index}`}
28
+ aria-labelledby={`profile-tab-${index}`}
29
+ {...other}
30
+ >
31
+ {value === index && children}
32
+ </div>
33
+ )
34
+ }
35
+
36
+ TabPanel.propTypes = {
37
+ children: PropTypes.node,
38
+ index: PropTypes.any.isRequired,
39
+ value: PropTypes.any.isRequired,
40
+ }
41
+
42
+ const Profile = () => {
43
+ const theme = useTheme()
44
+
45
+ const { identity } = useGetIdentity()
46
+
47
+ const anchorRef = useRef(null)
48
+ const [open, setOpen] = useState(false)
49
+ const handleToggle = () => {
50
+ setOpen((prevOpen) => !prevOpen)
51
+ }
52
+
53
+ const handleClose = (event) => {
54
+ if (anchorRef.current && anchorRef.current.contains(event.target)) {
55
+ return
56
+ }
57
+ setOpen(false)
58
+ }
59
+
60
+ const iconBackColorOpen = theme.palette.mode === 'dark' ? 'grey.200' : 'grey.300'
61
+ const isImpersonating = false // authProvider?.isImpersonating && authProvider?.isImpersonating() === true
62
+ const logout = useLogout()
63
+
64
+ const dataProvider = useDataProvider()
65
+ const authProvider = useAuthProvider()
66
+ const handleLogout = useCallback(() => {
67
+ if (isImpersonating) {
68
+ authProvider.stopImpersonate().then(() => (document.location.href = '/'))
69
+ } else {
70
+ logout()
71
+ }
72
+ }, [authProvider, isImpersonating, logout])
73
+ const [profileImage, setProfileImage] = useState(null)
74
+ useEffect(() => {
75
+ async function fetchProfileImage() {
76
+ var image = await dataProvider.getFile('/profile/me/image')
77
+ setProfileImage(image)
78
+ }
79
+ fetchProfileImage()
80
+ }, [dataProvider])
81
+
82
+ return (
83
+ <Box sx={{ flexShrink: 0, ml: 0.75 }}>
84
+ <ButtonBase
85
+ sx={{
86
+ p: 0.25,
87
+ bgcolor: open ? iconBackColorOpen : 'transparent',
88
+ borderRadius: 1,
89
+ '&:hover': {
90
+ bgcolor: theme.palette.mode === 'dark' ? 'secondary.light' : 'secondary.lighter',
91
+ },
92
+ '&:focus-visible': {
93
+ outline: `2px solid ${theme.palette.secondary.dark}`,
94
+ outlineOffset: 2,
95
+ },
96
+ }}
97
+ aria-label="open profile"
98
+ ref={anchorRef}
99
+ aria-controls={open ? 'profile-grow' : undefined}
100
+ aria-haspopup="true"
101
+ onClick={handleToggle}
102
+ >
103
+ <Stack direction="row" spacing={2} alignItems="center" sx={{ p: 0.5 }}>
104
+ <Avatar alt={identity?.name?.toUpperCase()} src={profileImage} size="xs" />
105
+ <Typography variant="subtitle1">{identity?.name}</Typography>
106
+ </Stack>
107
+ </ButtonBase>
108
+ <Popper
109
+ placement="bottom-end"
110
+ open={open}
111
+ anchorEl={anchorRef.current}
112
+ role={undefined}
113
+ transition
114
+ disablePortal
115
+ popperOptions={{
116
+ modifiers: [
117
+ {
118
+ name: 'offset',
119
+ options: {
120
+ offset: [0, 9],
121
+ },
122
+ },
123
+ ],
124
+ }}
125
+ >
126
+ {({ TransitionProps }) => (
127
+ <Transitions type="grow" position="top-right" in={open} {...TransitionProps}>
128
+ <Paper
129
+ sx={{
130
+ boxShadow: theme.customShadows.z1,
131
+ width: 290,
132
+ minWidth: 240,
133
+ maxWidth: 290,
134
+ [theme.breakpoints.down('md')]: {
135
+ maxWidth: 250,
136
+ },
137
+ }}
138
+ >
139
+ <ClickAwayListener onClickAway={handleClose}>
140
+ <MainCard elevation={0} border={false} content={false}>
141
+ <CardContent sx={{ px: 2.5, pt: 3 }}>
142
+ <Grid container justifyContent="space-between" alignItems="center">
143
+ <Grid item>
144
+ <Stack direction="row" spacing={1.25} alignItems="center">
145
+ <Avatar
146
+ alt="profile user"
147
+ src={profileImage}
148
+ sx={{ width: 32, height: 32 }}
149
+ />
150
+ <Stack>
151
+ <Typography variant="h6">{identity?.name}</Typography>
152
+ <Typography variant="body2" color="textSecondary">
153
+ {identity?.roles?.map((r) => r.name).join(',')}
154
+ </Typography>
155
+ </Stack>
156
+ </Stack>
157
+ </Grid>
158
+ <Grid item>
159
+ <Tooltip title="Logout">
160
+ <IconButton
161
+ size="large"
162
+ sx={{ color: 'text.primary' }}
163
+ onClick={handleLogout}
164
+ >
165
+ <LogoutOutlined />
166
+ </IconButton>
167
+ </Tooltip>
168
+ </Grid>
169
+ </Grid>
170
+ </CardContent>
171
+ </MainCard>
172
+ </ClickAwayListener>
173
+ </Paper>
174
+ </Transitions>
175
+ )}
176
+ </Popper>
177
+ </Box>
178
+ )
179
+ }
180
+
181
+ export default Profile
@@ -0,0 +1,38 @@
1
+ import { Box, useMediaQuery } from '@mui/material'
2
+ import { useMenuConfig, useThemeConfig } from '../../../../hooks'
3
+
4
+ import DrawerHeader from '../../Drawer/DrawerHeader'
5
+ import { LoadingIndicator } from 'react-admin'
6
+ import MobileSection from './MobileSection'
7
+ import Notification from './Notification'
8
+ import Profile from './Profile'
9
+ import PropTypes from 'prop-types'
10
+
11
+ const HeaderContent = ({ logoMain, logoIcon, notification, disableNotification }) => {
12
+ const matchesXs = useMediaQuery((theme) => theme.breakpoints.down('md'))
13
+ const { isHorizontalLayout, menuOrientation } = useThemeConfig()
14
+ const { drawerOpen } = useMenuConfig()
15
+ return (
16
+ <>
17
+ {(!drawerOpen || !matchesXs) && isHorizontalLayout(menuOrientation) && (
18
+ <DrawerHeader open logoMain={logoMain} logoIcon={logoIcon} />
19
+ )}
20
+ <Box sx={{ flexGrow: 1 }} />
21
+ {matchesXs && <Box sx={{ width: '100%', ml: 1 }} />}
22
+
23
+ <LoadingIndicator />
24
+ {!disableNotification && <Notification resource={notification} />}
25
+ {!matchesXs && <Profile />}
26
+ {matchesXs && <MobileSection />}
27
+ </>
28
+ )
29
+ }
30
+
31
+ HeaderContent.propTypes = {
32
+ logoMain: PropTypes.node,
33
+ logoIcon: PropTypes.node,
34
+ notification: PropTypes.string,
35
+ disableNotification: PropTypes.bool
36
+ }
37
+
38
+ export default HeaderContent
@@ -0,0 +1,99 @@
1
+ import { AppBar, Toolbar, useMediaQuery } from '@mui/material'
2
+ import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons'
3
+
4
+ import AppBarStyled from './AppBarStyled'
5
+ import HeaderContent from './HeaderContent'
6
+ import { IconButton } from '../../@extended'
7
+ import PropTypes from 'prop-types'
8
+ import { useMemo } from 'react'
9
+ import { useTheme } from '@mui/material/styles'
10
+ import { useThemeConfig } from '../../../hooks'
11
+
12
+ const Header = ({
13
+ open,
14
+ logoMain,
15
+ logoIcon,
16
+ handleDrawerToggle,
17
+ notification,
18
+ disableNotification
19
+ }) => {
20
+ const theme = useTheme()
21
+ const downLG = useMediaQuery(theme.breakpoints.down('lg'))
22
+ const { menuOrientation, isHorizontalLayout } = useThemeConfig()
23
+
24
+ const isHorizontal = isHorizontalLayout(menuOrientation) && !downLG
25
+ const headerContent = useMemo(
26
+ () => (
27
+ <HeaderContent
28
+ logoMain={logoMain}
29
+ logoIcon={logoIcon}
30
+ notification={notification}
31
+ disableNotification={disableNotification}
32
+ />
33
+ ),
34
+ [logoMain, logoIcon, notification]
35
+ )
36
+
37
+ const iconBackColorOpen = theme.palette.mode === 'dark' ? 'grey.200' : 'grey.300'
38
+ const iconBackColor = theme.palette.mode === 'dark' ? 'background.default' : 'grey.100'
39
+
40
+ const mainHeader = (
41
+ <Toolbar>
42
+ {!isHorizontal ? (
43
+ <IconButton
44
+ aria-label="open drawer"
45
+ onClick={handleDrawerToggle}
46
+ edge="start"
47
+ color="secondary"
48
+ variant="light"
49
+ sx={{
50
+ color: 'text.primary',
51
+ bgcolor: open ? iconBackColorOpen : iconBackColor,
52
+ ml: { xs: 0, lg: -2 }
53
+ }}
54
+ >
55
+ {!open ? <MenuUnfoldOutlined /> : <MenuFoldOutlined />}
56
+ </IconButton>
57
+ ) : null}
58
+ {headerContent}
59
+ </Toolbar>
60
+ )
61
+
62
+ const appBar = {
63
+ position: 'fixed',
64
+ color: 'inherit',
65
+ elevation: 0,
66
+ sx: {
67
+ borderBottom: `1px solid ${theme.palette.divider}`,
68
+ zIndex: 1200,
69
+ width: isHorizontal
70
+ ? '100%'
71
+ : open
72
+ ? 'calc(100% - 260px)'
73
+ : { xs: '100%', lg: 'calc(100% - 60px)' }
74
+ }
75
+ }
76
+
77
+ return (
78
+ <>
79
+ {!downLG ? (
80
+ <AppBarStyled open={open} {...appBar}>
81
+ {mainHeader}
82
+ </AppBarStyled>
83
+ ) : (
84
+ <AppBar {...appBar}>{mainHeader}</AppBar>
85
+ )}
86
+ </>
87
+ )
88
+ }
89
+
90
+ Header.propTypes = {
91
+ open: PropTypes.bool,
92
+ handleDrawerToggle: PropTypes.func,
93
+ logoMain: PropTypes.node,
94
+ logoIcon: PropTypes.node,
95
+ notification: PropTypes.string,
96
+ disableNotification: PropTypes.bool
97
+ }
98
+
99
+ export default Header
@@ -0,0 +1,119 @@
1
+ import 'simplebar/dist/simplebar.css'
2
+
3
+ import { Box, Container, Toolbar, useMediaQuery } from '@mui/material'
4
+ import { useBreadcrumbs, useMenuConfig, useThemeConfig } from '../../hooks'
5
+ import { useEffect, useState } from 'react'
6
+
7
+ import Breadcrumbs from '../@extended/Breadcrumbs'
8
+ import Drawer from './Drawer'
9
+ import Footer from './Footer'
10
+ import Header from './Header'
11
+ import HorizontalBar from './Drawer/HorizontalBar'
12
+ import { Outlet } from 'react-router-dom'
13
+ import PropTypes from 'prop-types'
14
+ import { useTheme } from '@mui/material/styles'
15
+
16
+ const Layout = ({
17
+ children,
18
+ name,
19
+ version,
20
+ logoMain,
21
+ logoIcon,
22
+ notification,
23
+ disableNotification
24
+ }) => {
25
+ const theme = useTheme()
26
+ const { openDrawer } = useMenuConfig()
27
+ const { isLoading, navigation, breadcrumbs } = useBreadcrumbs()
28
+ const matchDownLG = useMediaQuery(theme.breakpoints.down('xl'))
29
+ const downLG = useMediaQuery(theme.breakpoints.down('lg'))
30
+ const { container, miniDrawer, menuOrientation, isHorizontalLayout } = useThemeConfig()
31
+
32
+ const { drawerOpen } = useMenuConfig()
33
+ const isHorizontal = isHorizontalLayout(menuOrientation) && !downLG
34
+ const [open, setOpen] = useState(!miniDrawer || drawerOpen)
35
+ const handleDrawerToggle = () => {
36
+ setOpen(!open)
37
+ openDrawer(!open)
38
+ }
39
+ useEffect(() => {
40
+ if (!miniDrawer) {
41
+ setOpen(!matchDownLG)
42
+ openDrawer(!matchDownLG)
43
+ }
44
+ // eslint-disable-next-line react-hooks/exhaustive-deps
45
+ }, [matchDownLG])
46
+
47
+ useEffect(() => {
48
+ if (open !== drawerOpen) setOpen(drawerOpen)
49
+ // eslint-disable-next-line react-hooks/exhaustive-deps
50
+ }, [drawerOpen])
51
+
52
+ return (
53
+ <Box sx={{ display: 'flex', width: '100%' }}>
54
+ <Header
55
+ open={open}
56
+ handleDrawerToggle={handleDrawerToggle}
57
+ logoMain={logoMain}
58
+ logoIcon={logoIcon}
59
+ notification={notification}
60
+ disableNotification={disableNotification}
61
+ />
62
+ {!isHorizontal ? (
63
+ <Drawer
64
+ open={open}
65
+ handleDrawerToggle={handleDrawerToggle}
66
+ logoMain={logoMain}
67
+ logoIcon={logoIcon}
68
+ />
69
+ ) : (
70
+ <HorizontalBar />
71
+ )}
72
+ <Box
73
+ component="main"
74
+ sx={{ width: 'calc(100% - 260px)', flexGrow: 1, p: { xs: 0, sm: 2, lg: 1 }, pt: { lg: 2 } }}
75
+ >
76
+ <Toolbar sx={{ mt: isHorizontal ? 8 : 'inherit' }} />
77
+ <Container
78
+ maxWidth={container ? 'xl' : false}
79
+ sx={{
80
+ ...(container && { px: { xs: 0, sm: 2 } }),
81
+ position: 'relative',
82
+ minHeight: 'calc(100vh - 110px)',
83
+ display: 'flex',
84
+ flexDirection: 'column'
85
+ }}
86
+ >
87
+ {!isLoading && (
88
+ <Breadcrumbs
89
+ titleBottom
90
+ mode="breadcrumbs"
91
+ navigation={navigation}
92
+ breadcrumbs={breadcrumbs}
93
+ card={false}
94
+ divider={false}
95
+ icon
96
+ icons
97
+ home={false}
98
+ />
99
+ )}
100
+ {children}
101
+ <Outlet />
102
+ <Footer name={name} version={version} />
103
+ </Container>
104
+ </Box>
105
+ </Box>
106
+ )
107
+ }
108
+
109
+ Layout.propTypes = {
110
+ name: PropTypes.string,
111
+ version: PropTypes.string,
112
+ children: PropTypes.node,
113
+ logoMain: PropTypes.node,
114
+ logoIcon: PropTypes.node,
115
+ notification: PropTypes.string,
116
+ disableNotification: PropTypes.bool
117
+ }
118
+
119
+ export default Layout
@@ -0,0 +1,11 @@
1
+ import Loader from './Loader'
2
+ import { Suspense } from 'react'
3
+
4
+ const Loadable = (Component) => (props) =>
5
+ (
6
+ <Suspense fallback={<Loader />}>
7
+ <Component {...props} />
8
+ </Suspense>
9
+ )
10
+
11
+ export default Loadable
@@ -0,0 +1,21 @@
1
+ import LinearProgress from '@mui/material/LinearProgress'
2
+ import { styled } from '@mui/material/styles'
3
+
4
+ const LoaderWrapper = styled('div')(({ theme }) => ({
5
+ position: 'fixed',
6
+ top: 0,
7
+ left: 0,
8
+ zIndex: 2001,
9
+ width: '100%',
10
+ '& > * + *': {
11
+ marginTop: theme.spacing(2),
12
+ },
13
+ }))
14
+
15
+ const Loader = () => (
16
+ <LoaderWrapper>
17
+ <LinearProgress color="primary" />
18
+ </LoaderWrapper>
19
+ )
20
+
21
+ export default Loader
@@ -0,0 +1,29 @@
1
+ import { ButtonBase } from '@mui/material'
2
+ import { Link } from 'react-router-dom'
3
+ import PropTypes from 'prop-types'
4
+ import logoIcon from '../assets/logo-icon.png'
5
+ import logoMain from '../assets/logo-main.png'
6
+ import { useThemeConfig } from '../hooks'
7
+
8
+ const defaultIcon = <img src={logoIcon} alt="Applica" width="20px" />
9
+ const defaultMain = <img src={logoMain} alt="Applica" width="100px" />
10
+
11
+ const Logo = ({ isIcon, sx, to, logoIcon = defaultIcon, logoMain = defaultMain }) => {
12
+ const { appDefaultPath } = useThemeConfig()
13
+ return (
14
+ <ButtonBase disableRipple component={Link} to={!to ? appDefaultPath : to} sx={sx}>
15
+ {isIcon ? logoIcon : logoMain}
16
+ </ButtonBase>
17
+ )
18
+ }
19
+
20
+ Logo.propTypes = {
21
+ reverse: PropTypes.bool,
22
+ isIcon: PropTypes.bool,
23
+ sx: PropTypes.object,
24
+ to: PropTypes.string,
25
+ logoIcon: PropTypes.node,
26
+ logoMain: PropTypes.node,
27
+ }
28
+
29
+ export default Logo
@@ -0,0 +1,111 @@
1
+ import { Card, CardContent, CardHeader, Divider, Typography } from '@mui/material'
2
+
3
+ import PropTypes from 'prop-types'
4
+ import { forwardRef } from 'react'
5
+ import { useTheme } from '@mui/material/styles'
6
+
7
+ const headerSX = {
8
+ p: 2.5,
9
+ '& .MuiCardHeader-action': { m: '0px auto', alignSelf: 'center' },
10
+ }
11
+
12
+ const MainCard = forwardRef(
13
+ (
14
+ {
15
+ border = true,
16
+ boxShadow,
17
+ children,
18
+ subheader,
19
+ content = true,
20
+ contentSX = {},
21
+ darkTitle,
22
+ divider = true,
23
+ elevation,
24
+ secondary,
25
+ shadow,
26
+ sx = {},
27
+ title,
28
+ modal = false,
29
+ ...others
30
+ },
31
+ ref,
32
+ ) => {
33
+ const theme = useTheme()
34
+ boxShadow = theme.palette.mode === 'dark' ? boxShadow || true : boxShadow
35
+
36
+ return (
37
+ <Card
38
+ elevation={elevation || 0}
39
+ ref={ref}
40
+ {...others}
41
+ sx={{
42
+ position: 'relative',
43
+ border: border ? '1px solid' : 'none',
44
+ borderRadius: 1,
45
+ borderColor:
46
+ theme.palette.mode === 'dark' ? theme.palette.divider : theme.palette.grey.A800,
47
+ boxShadow:
48
+ boxShadow && (!border || theme.palette.mode === 'dark')
49
+ ? shadow || theme.customShadows.z1
50
+ : 'inherit',
51
+ ':hover': {
52
+ boxShadow: boxShadow ? shadow || theme.customShadows.z1 : 'inherit',
53
+ },
54
+ ...(modal && {
55
+ position: 'absolute',
56
+ top: '50%',
57
+ left: '50%',
58
+ transform: 'translate(-50%, -50%)',
59
+ width: { xs: `calc( 100% - 50px)`, sm: 'auto' },
60
+ '& .MuiCardContent-root': {
61
+ overflowY: 'auto',
62
+ minHeight: 'auto',
63
+ maxHeight: `calc(100vh - 200px)`,
64
+ },
65
+ }),
66
+ ...sx,
67
+ }}
68
+ >
69
+ {!darkTitle && title && (
70
+ <CardHeader
71
+ sx={headerSX}
72
+ titleTypographyProps={{ variant: 'subtitle1' }}
73
+ title={title}
74
+ action={secondary}
75
+ subheader={subheader}
76
+ />
77
+ )}
78
+ {darkTitle && title && (
79
+ <CardHeader
80
+ sx={headerSX}
81
+ title={<Typography variant="h4">{title}</Typography>}
82
+ action={secondary}
83
+ />
84
+ )}
85
+ {title && divider && <Divider />}
86
+ {content && <CardContent sx={contentSX}>{children}</CardContent>}
87
+ {!content && children}
88
+ </Card>
89
+ )
90
+ },
91
+ )
92
+
93
+ MainCard.propTypes = {
94
+ border: PropTypes.bool,
95
+ boxShadow: PropTypes.bool,
96
+ children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),
97
+ subheader: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),
98
+ content: PropTypes.bool,
99
+ contentClass: PropTypes.string,
100
+ contentSX: PropTypes.object,
101
+ darkTitle: PropTypes.bool,
102
+ divider: PropTypes.bool,
103
+ elevation: PropTypes.number,
104
+ secondary: PropTypes.oneOfType([PropTypes.node, PropTypes.string, PropTypes.object]),
105
+ shadow: PropTypes.string,
106
+ sx: PropTypes.object,
107
+ title: PropTypes.oneOfType([PropTypes.node, PropTypes.string, PropTypes.object]),
108
+ modal: PropTypes.bool,
109
+ }
110
+
111
+ export default MainCard
@@ -0,0 +1,20 @@
1
+ import PropTypes from 'prop-types'
2
+ import { Typography } from '@mui/material'
3
+
4
+ const MainIcon = ({ title }) => (
5
+ <>
6
+ <Typography variant="h2" sx={{ fontWeight: 'regular', letterSpacing: -2.5 }}>
7
+ a.
8
+ </Typography>
9
+ &nbsp;
10
+ <Typography variant="h2" sx={{ fontWeight: 'bold' }}>
11
+ {title}
12
+ </Typography>
13
+ </>
14
+ )
15
+
16
+ MainIcon.propTypes = {
17
+ title: PropTypes.string.isRequired,
18
+ }
19
+
20
+ export default MainIcon
@@ -0,0 +1,61 @@
1
+ import { Popover } from '@mui/material'
2
+ import PropTypes from 'prop-types'
3
+ import React from 'react'
4
+ import { StyledArrow } from './styles'
5
+ import getPosition from './getPosition'
6
+
7
+ const MenuPopover = ({ open, children, arrow = 'top-right', disabledArrow, sx, ...other }) => {
8
+ const { style, anchorOrigin, transformOrigin } = getPosition(arrow)
9
+
10
+ return (
11
+ <Popover
12
+ open={Boolean(open)}
13
+ anchorEl={open}
14
+ anchorOrigin={anchorOrigin}
15
+ transformOrigin={transformOrigin}
16
+ PaperProps={{
17
+ sx: {
18
+ p: 1,
19
+ width: 'auto',
20
+ overflow: 'inherit',
21
+ ...style,
22
+ '& .MuiMenuItem-root': {
23
+ px: 1,
24
+ typography: 'body2',
25
+ borderRadius: 0.75,
26
+ '& svg': { mr: 2, width: 20, height: 20, flexShrink: 0 },
27
+ },
28
+ ...sx,
29
+ },
30
+ }}
31
+ {...other}
32
+ >
33
+ {!disabledArrow && <StyledArrow arrow={arrow} />}
34
+
35
+ {children}
36
+ </Popover>
37
+ )
38
+ }
39
+
40
+ MenuPopover.propTypes = {
41
+ sx: PropTypes.object,
42
+ open: PropTypes.object,
43
+ children: PropTypes.node,
44
+ disabledArrow: PropTypes.bool,
45
+ arrow: PropTypes.oneOf([
46
+ 'top-left',
47
+ 'top-center',
48
+ 'top-right',
49
+ 'bottom-left',
50
+ 'bottom-center',
51
+ 'bottom-right',
52
+ 'left-top',
53
+ 'left-center',
54
+ 'left-bottom',
55
+ 'right-top',
56
+ 'right-center',
57
+ 'right-bottom',
58
+ ]),
59
+ }
60
+
61
+ export default MenuPopover