@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,359 @@
1
+ import {
2
+ Box,
3
+ ClickAwayListener,
4
+ List,
5
+ ListItemButton,
6
+ ListItemIcon,
7
+ ListItemText,
8
+ Paper,
9
+ Popper,
10
+ Typography,
11
+ useMediaQuery
12
+ } from '@mui/material'
13
+ import { DownOutlined, RightOutlined } from '@ant-design/icons'
14
+ import { Fragment, useEffect, useState } from 'react'
15
+ import { styled, useTheme } from '@mui/material/styles'
16
+ import { useMenuConfig, useThemeConfig } from '../../../../../hooks'
17
+
18
+ import NavCollapse from './NavCollapse'
19
+ import NavItem from './NavItem'
20
+ import PropTypes from 'prop-types'
21
+ import { Transitions } from '../../../../@extended'
22
+ import { useTranslate } from 'react-admin'
23
+
24
+ const PopperStyled = styled(Popper)(({ theme }) => ({
25
+ overflow: 'visible',
26
+ zIndex: 1202,
27
+ minWidth: 180,
28
+ '&:before': {
29
+ content: '""',
30
+ display: 'block',
31
+ position: 'absolute',
32
+ top: 5,
33
+ left: 32,
34
+ width: 12,
35
+ height: 12,
36
+ transform: 'translateY(-50%) rotate(45deg)',
37
+ zIndex: 120,
38
+ borderWidth: '6px',
39
+ borderStyle: 'solid',
40
+ borderColor: `${theme.palette.background.paper} transparent transparent ${theme.palette.background.paper}`
41
+ }
42
+ }))
43
+
44
+ const NavGroup = ({
45
+ item,
46
+ lastItem,
47
+ remItems,
48
+ lastItemId,
49
+ setSelectedItems,
50
+ selectedItems,
51
+ setSelectedLevel,
52
+ selectedLevel
53
+ }) => {
54
+ const theme = useTheme()
55
+ const translate = useTranslate()
56
+ const { pathname } = { pathname: '' } // useLocation()
57
+ const { menuOrientation, isVerticalLayout } = useThemeConfig()
58
+ const menu = useMenuConfig()
59
+ const { drawerOpen, selectedID } = menu
60
+ const { activeID } = useMenuConfig()
61
+ const downLG = useMediaQuery(theme.breakpoints.down('lg'))
62
+
63
+ const [anchorEl, setAnchorEl] = useState(null)
64
+ const [currentItem, setCurrentItem] = useState(item)
65
+
66
+ const openMini = Boolean(anchorEl)
67
+
68
+ useEffect(() => {
69
+ if (lastItem) {
70
+ if (item.id === lastItemId) {
71
+ const localItem = { ...item }
72
+ const elements = remItems.map((ele) => ele.elements)
73
+ localItem.children = elements.flat(1)
74
+ setCurrentItem(localItem)
75
+ } else {
76
+ setCurrentItem(item)
77
+ }
78
+ }
79
+ // eslint-disable-next-line react-hooks/exhaustive-deps
80
+ }, [item, lastItem, downLG])
81
+
82
+ const checkOpenForParent = (child, id) => {
83
+ child.forEach((ele) => {
84
+ if (ele.children?.length) {
85
+ checkOpenForParent(ele.children, currentItem.id)
86
+ }
87
+ if (ele.url === pathname) {
88
+ activeID(id)
89
+ }
90
+ })
91
+ }
92
+ const checkSelectedOnload = (data) => {
93
+ const childrens = data.children ? data.children : []
94
+ childrens.forEach((itemCheck) => {
95
+ if (itemCheck.children?.length) {
96
+ checkOpenForParent(itemCheck.children, currentItem.id)
97
+ }
98
+ if (itemCheck.url === pathname) {
99
+ activeID(currentItem.id)
100
+ }
101
+ })
102
+ }
103
+
104
+ useEffect(() => {
105
+ checkSelectedOnload(currentItem)
106
+ if (openMini) setAnchorEl(null)
107
+ // eslint-disable-next-line react-hooks/exhaustive-deps
108
+ }, [pathname, currentItem])
109
+
110
+ const handleClick = (event) => {
111
+ if (!openMini) {
112
+ setAnchorEl(event?.currentTarget)
113
+ }
114
+ }
115
+
116
+ const handleClose = () => {
117
+ setAnchorEl(null)
118
+ }
119
+
120
+ const Icon = currentItem?.icon
121
+ const itemIcon = currentItem?.icon ? (
122
+ <Icon
123
+ style={{
124
+ fontSize: 20,
125
+ stroke: '1.5',
126
+ color:
127
+ selectedID === currentItem.id ? theme.palette.primary.main : theme.palette.secondary.dark
128
+ }}
129
+ />
130
+ ) : null
131
+
132
+ const navCollapse = item.children?.map((menuItem) => {
133
+ switch (menuItem.type) {
134
+ case 'collapse':
135
+ return (
136
+ <NavCollapse
137
+ key={menuItem.id}
138
+ menu={menuItem}
139
+ setSelectedItems={setSelectedItems}
140
+ setSelectedLevel={setSelectedLevel}
141
+ selectedLevel={selectedLevel}
142
+ selectedItems={selectedItems}
143
+ level={1}
144
+ parentId={currentItem.id}
145
+ />
146
+ )
147
+ case 'item':
148
+ return <NavItem key={menuItem.id} item={menuItem} level={1} />
149
+ default:
150
+ }
151
+ })
152
+
153
+ const moreItems = remItems.map((itemRem, i) => (
154
+ <Fragment key={i}>
155
+ {itemRem.title && (
156
+ <Typography variant="caption" sx={{ pl: 2 }}>
157
+ {itemRem.title}
158
+ </Typography>
159
+ )}
160
+ {itemRem?.elements?.map((menu) => {
161
+ switch (menu.type) {
162
+ case 'collapse':
163
+ return (
164
+ <NavCollapse
165
+ key={menu.id}
166
+ menu={menu}
167
+ level={1}
168
+ parentId={currentItem.id}
169
+ setSelectedItems={setSelectedItems}
170
+ setSelectedLevel={setSelectedLevel}
171
+ selectedLevel={selectedLevel}
172
+ selectedItems={selectedItems}
173
+ />
174
+ )
175
+ case 'item':
176
+ return <NavItem key={menu.id} item={menu} level={1} />
177
+ default:
178
+ return (
179
+ <Typography key={menu.id} variant="h6" color="error" align="center">
180
+ Menu Items Error
181
+ </Typography>
182
+ )
183
+ }
184
+ })}
185
+ </Fragment>
186
+ ))
187
+
188
+ // menu list collapse & items
189
+ const items = currentItem.children?.map((menu) => {
190
+ switch (menu.type) {
191
+ case 'collapse':
192
+ return (
193
+ <NavCollapse
194
+ key={menu.id}
195
+ menu={menu}
196
+ level={1}
197
+ parentId={currentItem.id}
198
+ setSelectedItems={setSelectedItems}
199
+ setSelectedLevel={setSelectedLevel}
200
+ selectedLevel={selectedLevel}
201
+ selectedItems={selectedItems}
202
+ />
203
+ )
204
+ case 'item':
205
+ return <NavItem key={menu.id} item={menu} level={1} />
206
+ default:
207
+ return (
208
+ <Typography key={menu.id} variant="h6" color="error" align="center">
209
+ Menu Items Error
210
+ </Typography>
211
+ )
212
+ }
213
+ })
214
+
215
+ const popperId = openMini ? `group-pop-${item.id}` : undefined
216
+
217
+ return (
218
+ <>
219
+ {isVerticalLayout(menuOrientation) || downLG ? (
220
+ <List
221
+ subheader={
222
+ item.title &&
223
+ drawerOpen && (
224
+ <Box sx={{ pl: 3, mb: 1.5 }}>
225
+ <Typography
226
+ variant="subtitle2"
227
+ color={theme.palette.mode === 'dark' ? 'textSecondary' : 'text.secondary'}
228
+ >
229
+ {item.title}
230
+ </Typography>
231
+ {item.caption && (
232
+ <Typography variant="caption" color="secondary">
233
+ {item.caption}
234
+ </Typography>
235
+ )}
236
+ </Box>
237
+ )
238
+ }
239
+ sx={{ mt: drawerOpen && item.title ? 1.5 : 0, py: 0, zIndex: 0 }}
240
+ >
241
+ {navCollapse}
242
+ </List>
243
+ ) : (
244
+ <List>
245
+ <ListItemButton
246
+ selected={selectedID === currentItem.id}
247
+ sx={{
248
+ p: 1,
249
+ my: 0.5,
250
+ mr: 1,
251
+ display: 'flex',
252
+ alignItems: 'center',
253
+ backgroundColor: 'inherit',
254
+ '&.Mui-selected': {
255
+ bgcolor: 'transparent'
256
+ }
257
+ }}
258
+ onMouseEnter={handleClick}
259
+ onClick={handleClick}
260
+ onMouseLeave={handleClose}
261
+ aria-describedby={popperId}
262
+ >
263
+ {itemIcon && (
264
+ <ListItemIcon sx={{ minWidth: 28 }}>
265
+ {currentItem.id === lastItemId ? (
266
+ <DownOutlined style={{ fontSize: 20, stroke: '1.5' }} />
267
+ ) : (
268
+ itemIcon
269
+ )}
270
+ </ListItemIcon>
271
+ )}
272
+ <ListItemText
273
+ sx={{ mr: 1 }}
274
+ primary={
275
+ <Typography
276
+ variant="body1"
277
+ color={
278
+ selectedID === currentItem.id
279
+ ? theme.palette.primary.main
280
+ : theme.palette.secondary.dark
281
+ }
282
+ >
283
+ {currentItem.id === lastItemId ? translate('ra.actions.more') : currentItem.title}
284
+ </Typography>
285
+ }
286
+ />
287
+ {openMini ? (
288
+ <DownOutlined style={{ fontSize: 16, stroke: '1.5' }} />
289
+ ) : (
290
+ <RightOutlined style={{ fontSize: 16, stroke: '1.5' }} />
291
+ )}
292
+ {anchorEl && (
293
+ <PopperStyled
294
+ id={popperId}
295
+ open={openMini}
296
+ anchorEl={anchorEl}
297
+ placement="bottom-start"
298
+ style={{
299
+ zIndex: 2001
300
+ }}
301
+ >
302
+ {({ TransitionProps }) => (
303
+ <Transitions in={openMini} {...TransitionProps}>
304
+ <Paper
305
+ sx={{
306
+ mt: 0.5,
307
+ py: 1.25,
308
+ boxShadow: theme.shadows[8],
309
+ backgroundImage: 'none'
310
+ }}
311
+ >
312
+ <ClickAwayListener onClickAway={handleClose}>
313
+ <Box
314
+ sx={{
315
+ maxHeight: 'calc(100vh - 170px)',
316
+ overflowY: 'auto',
317
+ '&::-webkit-scrollbar': {
318
+ opacity: 0,
319
+ width: 4,
320
+ '&:hover': {
321
+ opacity: 0.7
322
+ }
323
+ },
324
+ '&::-webkit-scrollbar-track': {
325
+ background: 'transparent'
326
+ },
327
+ '&::-webkit-scrollbar-thumb': {
328
+ background: theme.palette.divider,
329
+ borderRadius: 4
330
+ }
331
+ }}
332
+ >
333
+ {currentItem.id !== lastItemId ? items : moreItems}
334
+ </Box>
335
+ </ClickAwayListener>
336
+ </Paper>
337
+ </Transitions>
338
+ )}
339
+ </PopperStyled>
340
+ )}
341
+ </ListItemButton>
342
+ </List>
343
+ )}
344
+ </>
345
+ )
346
+ }
347
+
348
+ NavGroup.propTypes = {
349
+ item: PropTypes.object,
350
+ lastItem: PropTypes.number,
351
+ remItems: PropTypes.array,
352
+ lastItemId: PropTypes.string,
353
+ setSelectedItems: PropTypes.func,
354
+ selectedItems: PropTypes.string,
355
+ setSelectedLevel: PropTypes.func,
356
+ selectedLevel: PropTypes.number
357
+ }
358
+
359
+ export default NavGroup
@@ -0,0 +1,259 @@
1
+ import {
2
+ Avatar,
3
+ Chip,
4
+ ListItemButton,
5
+ ListItemIcon,
6
+ ListItemText,
7
+ Typography,
8
+ useMediaQuery,
9
+ } from '@mui/material'
10
+ import { Link, useLocation } from 'react-router-dom'
11
+ import { forwardRef, useEffect } from 'react'
12
+ import { useMenuConfig, useThemeConfig } from '../../../../../hooks'
13
+
14
+ import { Dot } from '../../../../@extended'
15
+ import PropTypes from 'prop-types'
16
+ import { useTheme } from '@mui/material/styles'
17
+
18
+ const NavItem = ({ item, level }) => {
19
+ const theme = useTheme()
20
+
21
+ const { menuOrientation, isVerticalLayout } = useThemeConfig()
22
+ const { drawerOpen, openItem, activeItem, openDrawer } = useMenuConfig()
23
+
24
+ const downLG = useMediaQuery(theme.breakpoints.down('lg'))
25
+
26
+ let itemTarget = '_self'
27
+ if (item.target) {
28
+ itemTarget = '_blank'
29
+ }
30
+
31
+ let listItemProps = {
32
+ component: forwardRef((props, ref) => (
33
+ <Link {...props} to={item.url} target={itemTarget} ref={ref} />
34
+ )),
35
+ }
36
+ if (item?.external) {
37
+ listItemProps = { component: 'a', href: item.url, target: itemTarget }
38
+ }
39
+
40
+ const Icon = item.icon
41
+ const itemIcon = item.icon ? (
42
+ <Icon style={{ fontSize: drawerOpen ? '1rem' : '1.25rem' }} />
43
+ ) : (
44
+ false
45
+ )
46
+ const isSelected = openItem.findIndex((id) => id === item.id) > -1
47
+ const { pathname } = useLocation()
48
+
49
+ // active menu item on page load
50
+ useEffect(() => {
51
+ if (pathname.includes(item.url)) {
52
+ activeItem([item.id])
53
+ }
54
+ // eslint-disable-next-line
55
+ }, [pathname])
56
+
57
+ const textColor = theme.palette.mode === 'dark' ? 'grey.400' : 'text.primary'
58
+ const iconSelectedColor =
59
+ theme.palette.mode === 'dark' && drawerOpen ? 'text.primary' : 'primary.main'
60
+ return (
61
+ <>
62
+ {isVerticalLayout(menuOrientation) || downLG ? (
63
+ <ListItemButton
64
+ {...listItemProps}
65
+ disabled={item.disabled}
66
+ selected={isSelected}
67
+ sx={{
68
+ zIndex: 1201,
69
+ pl: drawerOpen ? `${level * 28}px` : 1.5,
70
+ py: !drawerOpen && level === 1 ? 1.25 : 1,
71
+ ...(drawerOpen && {
72
+ '&:hover': {
73
+ bgcolor: theme.palette.mode === 'dark' ? 'divider' : 'primary.lighter',
74
+ },
75
+ '&.Mui-selected': {
76
+ bgcolor: theme.palette.mode === 'dark' ? 'divider' : 'primary.lighter',
77
+ borderRight: `2px solid ${theme.palette.primary.main}`,
78
+ color: iconSelectedColor,
79
+ '&:hover': {
80
+ color: iconSelectedColor,
81
+ bgcolor: theme.palette.mode === 'dark' ? 'divider' : 'primary.lighter',
82
+ },
83
+ },
84
+ }),
85
+ ...(!drawerOpen && {
86
+ '&:hover': {
87
+ bgcolor: 'transparent',
88
+ },
89
+ '&.Mui-selected': {
90
+ '&:hover': {
91
+ bgcolor: 'transparent',
92
+ },
93
+ bgcolor: 'transparent',
94
+ },
95
+ }),
96
+ }}
97
+ {...(downLG && {
98
+ onClick: () => openDrawer(false),
99
+ })}
100
+ >
101
+ {itemIcon && (
102
+ <ListItemIcon
103
+ sx={{
104
+ minWidth: 28,
105
+ color: isSelected ? iconSelectedColor : textColor,
106
+ ...(!drawerOpen && {
107
+ borderRadius: 1.5,
108
+ width: 36,
109
+ height: 36,
110
+ alignItems: 'center',
111
+ justifyContent: 'center',
112
+ '&:hover': {
113
+ bgcolor:
114
+ theme.palette.mode === 'dark' ? 'secondary.light' : 'secondary.lighter',
115
+ },
116
+ }),
117
+ ...(!drawerOpen &&
118
+ isSelected && {
119
+ bgcolor: theme.palette.mode === 'dark' ? 'primary.900' : 'primary.lighter',
120
+ '&:hover': {
121
+ bgcolor: theme.palette.mode === 'dark' ? 'primary.darker' : 'primary.lighter',
122
+ },
123
+ }),
124
+ }}
125
+ >
126
+ {itemIcon}
127
+ </ListItemIcon>
128
+ )}
129
+ {(drawerOpen || (!drawerOpen && level !== 1)) && (
130
+ <ListItemText
131
+ primary={
132
+ <Typography variant="h6" sx={{ color: isSelected ? iconSelectedColor : textColor }}>
133
+ {item.title}
134
+ </Typography>
135
+ }
136
+ />
137
+ )}
138
+ {(drawerOpen || (!drawerOpen && level !== 1)) && item.chip && (
139
+ <Chip
140
+ color={item.chip.color}
141
+ variant={item.chip.variant}
142
+ size={item.chip.size}
143
+ label={item.chip.label}
144
+ avatar={item.chip.avatar && <Avatar>{item.chip.avatar}</Avatar>}
145
+ />
146
+ )}
147
+ </ListItemButton>
148
+ ) : (
149
+ <ListItemButton
150
+ {...listItemProps}
151
+ disabled={item.disabled}
152
+ selected={isSelected}
153
+ sx={{
154
+ zIndex: 1201,
155
+ ...(drawerOpen && {
156
+ '&:hover': {
157
+ bgcolor: 'transparent',
158
+ },
159
+ '&.Mui-selected': {
160
+ bgcolor: 'transparent',
161
+ color: iconSelectedColor,
162
+ '&:hover': {
163
+ color: iconSelectedColor,
164
+ bgcolor: 'transparent',
165
+ },
166
+ },
167
+ }),
168
+ ...(!drawerOpen && {
169
+ '&:hover': {
170
+ bgcolor: 'transparent',
171
+ },
172
+ '&.Mui-selected': {
173
+ '&:hover': {
174
+ bgcolor: 'transparent',
175
+ },
176
+ bgcolor: 'transparent',
177
+ },
178
+ }),
179
+ }}
180
+ >
181
+ {itemIcon && (
182
+ <ListItemIcon
183
+ sx={{
184
+ minWidth: 36,
185
+ ...(!drawerOpen && {
186
+ borderRadius: 1.5,
187
+ width: 36,
188
+ height: 36,
189
+ alignItems: 'center',
190
+ justifyContent: 'flex-start',
191
+ '&:hover': {
192
+ bgcolor: 'transparent',
193
+ },
194
+ }),
195
+ ...(!drawerOpen &&
196
+ isSelected && {
197
+ bgcolor: 'transparent',
198
+ '&:hover': {
199
+ bgcolor: 'transparent',
200
+ },
201
+ }),
202
+ }}
203
+ >
204
+ {itemIcon}
205
+ </ListItemIcon>
206
+ )}
207
+
208
+ {!itemIcon && (
209
+ <ListItemIcon
210
+ sx={{
211
+ color: isSelected ? 'primary.main' : 'secondary.main',
212
+ ...(!drawerOpen && {
213
+ borderRadius: 1.5,
214
+ alignItems: 'center',
215
+ justifyContent: 'flex-start',
216
+ '&:hover': {
217
+ bgcolor: 'transparent',
218
+ },
219
+ }),
220
+ ...(!drawerOpen &&
221
+ isSelected && {
222
+ bgcolor: 'transparent',
223
+ '&:hover': {
224
+ bgcolor: 'transparent',
225
+ },
226
+ }),
227
+ }}
228
+ >
229
+ <Dot size={4} color={isSelected ? 'primary' : 'secondary'} />
230
+ </ListItemIcon>
231
+ )}
232
+ <ListItemText
233
+ primary={
234
+ <Typography variant="h6" color="inherit">
235
+ {item.title}
236
+ </Typography>
237
+ }
238
+ />
239
+ {(drawerOpen || (!drawerOpen && level !== 1)) && item.chip && (
240
+ <Chip
241
+ color={item.chip.color}
242
+ variant={item.chip.variant}
243
+ size={item.chip.size}
244
+ label={item.chip.label}
245
+ avatar={item.chip.avatar && <Avatar>{item.chip.avatar}</Avatar>}
246
+ />
247
+ )}
248
+ </ListItemButton>
249
+ )}
250
+ </>
251
+ )
252
+ }
253
+
254
+ NavItem.propTypes = {
255
+ item: PropTypes.object,
256
+ level: PropTypes.number,
257
+ }
258
+
259
+ export default NavItem
@@ -0,0 +1,73 @@
1
+ import { Box, Typography, useMediaQuery } from '@mui/material'
2
+ import { useMenu, useMenuConfig, useThemeConfig } from '../../../../../hooks'
3
+
4
+ import NavGroup from './NavGroup'
5
+ import { useState } from 'react'
6
+ import { useTheme } from '@mui/material/styles'
7
+
8
+ const Navigation = () => {
9
+ const theme = useTheme()
10
+ const { menu, isLoading } = useMenu()
11
+ const downLG = useMediaQuery(theme.breakpoints.down('lg'))
12
+
13
+ const { menuOrientation, horizontalMaxItems, isHorizontalLayout } = useThemeConfig()
14
+ const { drawerOpen } = useMenuConfig()
15
+ const [selectedItems, setSelectedItems] = useState('')
16
+ const [selectedLevel, setSelectedLevel] = useState(0)
17
+ const isHorizontal = isHorizontalLayout(menuOrientation) && !downLG
18
+ const lastItem = isHorizontal ? horizontalMaxItems : null
19
+
20
+ let lastItemIndex = isLoading ? 0 : menu.length - 1
21
+ let remItems = []
22
+ let lastItemId
23
+
24
+ if (!isLoading && lastItem && lastItem < menu.length) {
25
+ lastItemId = menu[lastItem - 1].id
26
+ lastItemIndex = lastItem - 1
27
+ remItems = menu.slice(lastItem - 1, menu.length).map((item) => ({
28
+ title: item.title,
29
+ elements: item.children,
30
+ icon: item.icon,
31
+ }))
32
+ }
33
+
34
+ const navGroups = isLoading
35
+ ? []
36
+ : menu.slice(0, lastItemIndex + 1).map((item) => {
37
+ switch (item.type) {
38
+ case 'group':
39
+ return (
40
+ <NavGroup
41
+ key={item.id}
42
+ setSelectedItems={setSelectedItems}
43
+ setSelectedLevel={setSelectedLevel}
44
+ selectedLevel={selectedLevel}
45
+ selectedItems={selectedItems}
46
+ lastItem={lastItem}
47
+ remItems={remItems}
48
+ lastItemId={lastItemId}
49
+ item={item}
50
+ />
51
+ )
52
+ default:
53
+ return (
54
+ <Typography key={item.id} variant="h6" color="error" align="center">
55
+ Fix - Navigation Group
56
+ </Typography>
57
+ )
58
+ }
59
+ })
60
+ return (
61
+ <Box
62
+ sx={{
63
+ pt: drawerOpen ? (isHorizontal ? 0 : 2) : 0,
64
+ '& > ul:first-of-type': { mt: 0 },
65
+ display: isHorizontal ? { xs: 'block', lg: 'flex' } : 'block',
66
+ }}
67
+ >
68
+ {navGroups}
69
+ </Box>
70
+ )
71
+ }
72
+
73
+ export default Navigation
@@ -0,0 +1,19 @@
1
+ import Navigation from './Navigation'
2
+ import { SimpleBar } from '../../../third-party'
3
+
4
+ const DrawerContent = () => {
5
+ return (
6
+ <SimpleBar
7
+ sx={{
8
+ '& .simplebar-content': {
9
+ display: 'flex',
10
+ flexDirection: 'column',
11
+ },
12
+ }}
13
+ >
14
+ <Navigation />
15
+ </SimpleBar>
16
+ )
17
+ }
18
+
19
+ export default DrawerContent