robobyte-front-builder 1.0.19 → 1.0.21

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 (513) hide show
  1. package/README.md +211 -0
  2. package/next.config.js +19 -48
  3. package/package.json +39 -85
  4. package/src/context/BuilderContext.jsx +134 -6
  5. package/src/context/SystemContext.js +2 -2
  6. package/src/hooks/useGlobalStore.js +36 -0
  7. package/src/hooks/useTimerEngine.js +54 -0
  8. package/src/lib/index.js +11 -3
  9. package/src/lib/layouts/BlankLayout.jsx +13 -0
  10. package/src/lib/providers/RoboByteFrontBuilderProvider.jsx +61 -7
  11. package/src/lib/themes/builderTheme.js +41 -0
  12. package/src/pages/_app.js +32 -134
  13. package/src/pages/api/ai.js +87 -0
  14. package/src/pages/builders/report/index.js +1 -0
  15. package/src/pages/builders/report/list/index.js +1 -0
  16. package/src/pages/builders/report/viewer/index.js +1 -0
  17. package/src/pages/index.js +88 -37
  18. package/src/pages/printBuilder/index.jsx +263 -0
  19. package/src/pages/printBuilder/layouts/index.jsx +298 -0
  20. package/src/pages/reportModule/reportBuilder/index.js +8 -6
  21. package/src/pages/reportModule/reportBuilder/reportViewer/index.js +33 -22
  22. package/src/pages/reportModule/reportBuilder/reports/index.js +3 -5
  23. package/src/pages/reportModule/reportBuilder/reportsPermissions/index.js +2 -3
  24. package/src/pages/viewBuilder/index.jsx +117 -32
  25. package/src/pages/viewBuilder/views/index.js +3 -3
  26. package/src/pages/viewer/[id]/index.js +2 -1
  27. package/src/services/DeleteService.js +31 -60
  28. package/src/services/Endpoints/PrintLayoutEndpoints.js +42 -0
  29. package/src/services/Endpoints.js +2 -0
  30. package/src/services/GetService.js +33 -54
  31. package/src/services/PatchService.js +38 -65
  32. package/src/services/PostService.js +37 -63
  33. package/src/services/UpdateService.js +39 -65
  34. package/src/services/builderHelper/actionExecutor.js +141 -25
  35. package/src/services/builderHelper/builderHelper.js +92 -0
  36. package/src/services/builderHelper/colorSchema.js +95 -0
  37. package/src/services/builderHelper/iconResolver.js +50 -0
  38. package/src/services/builderHelper/jsExecutor.js +212 -46
  39. package/src/services/builderHelper/nodeFactory.js +32 -15
  40. package/src/services/builderHelper/numberFormat.js +123 -0
  41. package/src/services/builderHelper/resolveProps.js +73 -4
  42. package/src/services/builderHelper/thresholdEngine.js +77 -0
  43. package/src/services/builderHelper/tree.js +31 -0
  44. package/src/services/components/agGridAutoComplete.js +5 -9
  45. package/src/services/config.js +9 -1
  46. package/src/services/globalStore.js +80 -0
  47. package/src/services/helper/multiSelectEditor.js +5 -9
  48. package/src/services/helper/multiSelectEditorByBuilder.js +5 -9
  49. package/src/services/reportData/fetchReportData.js +69 -28
  50. package/src/services/routerRef.js +35 -0
  51. package/src/views/ConfirmDialog.js +2 -2
  52. package/src/views/builder/JSEditor.js +105 -107
  53. package/src/views/builder/inspector/Inspector.jsx +6 -9
  54. package/src/views/builder/inspector/Tabs/ComponentActionsTab.jsx +7 -13
  55. package/src/views/builder/inspector/Tabs/MainTab.jsx +143 -25
  56. package/src/views/builder/inspector/Tabs/RulesTab.jsx +9 -24
  57. package/src/views/builder/inspector/Tabs/StyleTab.jsx +9 -24
  58. package/src/views/builder/inspector/definitions/autocomplete/main.js +4 -6
  59. package/src/views/builder/inspector/definitions/banner/actions.js +7 -0
  60. package/src/views/builder/inspector/definitions/banner/main.js +22 -0
  61. package/src/views/builder/inspector/definitions/banner/rules.js +1 -0
  62. package/src/views/builder/inspector/definitions/banner/style.js +1 -0
  63. package/src/views/builder/inspector/definitions/breadcrumb/main.js +43 -6
  64. package/src/views/builder/inspector/definitions/button/main.js +11 -12
  65. package/src/views/builder/inspector/definitions/button/style.js +18 -30
  66. package/src/views/builder/inspector/definitions/checkbox/actions.js +3 -1
  67. package/src/views/builder/inspector/definitions/checkbox/main.js +4 -6
  68. package/src/views/builder/inspector/definitions/common/main.js +13 -2
  69. package/src/views/builder/inspector/definitions/dataGrid/main.js +23 -0
  70. package/src/views/builder/inspector/definitions/dataTableViewer/main.js +46 -0
  71. package/src/views/builder/inspector/definitions/datepicker/actions.js +3 -1
  72. package/src/views/builder/inspector/definitions/datepicker/main.js +6 -14
  73. package/src/views/builder/inspector/definitions/dialog/main.js +36 -0
  74. package/src/views/builder/inspector/definitions/dropdown/main.js +5 -8
  75. package/src/views/builder/inspector/definitions/excelUpload/actions.js +23 -0
  76. package/src/views/builder/inspector/definitions/excelUpload/main.js +17 -0
  77. package/src/views/builder/inspector/definitions/excelUpload/rules.js +1 -0
  78. package/src/views/builder/inspector/definitions/excelUpload/style.js +45 -0
  79. package/src/views/builder/inspector/definitions/header/main.js +10 -1
  80. package/src/views/builder/inspector/definitions/index.js +106 -19
  81. package/src/views/builder/inspector/definitions/input/actions.js +4 -1
  82. package/src/views/builder/inspector/definitions/input/main.js +20 -11
  83. package/src/views/builder/inspector/definitions/kpi/avatarGroup.js +22 -0
  84. package/src/views/builder/inspector/definitions/kpi/badge.js +17 -0
  85. package/src/views/builder/inspector/definitions/kpi/bulletChart.js +47 -0
  86. package/src/views/builder/inspector/definitions/kpi/chart.js +55 -0
  87. package/src/views/builder/inspector/definitions/kpi/colorScale.js +60 -0
  88. package/src/views/builder/inspector/definitions/kpi/comparisonBars.js +41 -0
  89. package/src/views/builder/inspector/definitions/kpi/countdown.js +46 -0
  90. package/src/views/builder/inspector/definitions/kpi/donut.js +51 -0
  91. package/src/views/builder/inspector/definitions/kpi/funnel.js +25 -0
  92. package/src/views/builder/inspector/definitions/kpi/gauge.js +39 -0
  93. package/src/views/builder/inspector/definitions/kpi/heatmapGrid.js +96 -0
  94. package/src/views/builder/inspector/definitions/kpi/iconBox.js +20 -0
  95. package/src/views/builder/inspector/definitions/kpi/metric.js +45 -0
  96. package/src/views/builder/inspector/definitions/kpi/rating.js +27 -0
  97. package/src/views/builder/inspector/definitions/kpi/statusDot.js +18 -0
  98. package/src/views/builder/inspector/definitions/kpi/stepStage.js +65 -0
  99. package/src/views/builder/inspector/definitions/kpi/tagList.js +32 -0
  100. package/src/views/builder/inspector/definitions/kpi/timeline.js +80 -0
  101. package/src/views/builder/inspector/definitions/kpi/trend.js +20 -0
  102. package/src/views/builder/inspector/definitions/label/main.js +10 -1
  103. package/src/views/builder/inspector/definitions/layout/main.js +27 -3
  104. package/src/views/builder/inspector/definitions/number/main.js +6 -14
  105. package/src/views/builder/inspector/definitions/pageNumber/main.js +21 -0
  106. package/src/views/builder/inspector/definitions/popover/main.js +71 -0
  107. package/src/views/builder/inspector/definitions/radio/main.js +5 -8
  108. package/src/views/builder/inspector/definitions/repeater/main.js +31 -0
  109. package/src/views/builder/inspector/definitions/reportViewer/main.js +15 -1
  110. package/src/views/builder/inspector/definitions/richtext/main.js +5 -8
  111. package/src/views/builder/inspector/definitions/signature/main.js +4 -1
  112. package/src/views/builder/inspector/definitions/tag/main.js +5 -8
  113. package/src/views/builder/inspector/definitions/textarea/actions.js +4 -1
  114. package/src/views/builder/inspector/definitions/textarea/main.js +5 -7
  115. package/src/views/builder/inspector/definitions/time/main.js +5 -8
  116. package/src/views/builder/inspector/definitions/toggle/main.js +5 -19
  117. package/src/views/builder/inspector/definitions/treeView/main.js +61 -0
  118. package/src/views/builder/inspector/definitions/viewRenderer/main.js +53 -0
  119. package/src/views/builder/inspector/definitions/wizard/main.js +68 -0
  120. package/src/views/builder/inspector/definitions/wizard-step/main.js +25 -0
  121. package/src/views/builder/inspector/fields/ActionsConfigEditor.jsx +426 -0
  122. package/src/views/builder/inspector/fields/ColorSchemaField.jsx +140 -0
  123. package/src/views/builder/inspector/fields/ColumnFunctionEditor.jsx +238 -0
  124. package/src/views/builder/inspector/fields/ColumnMappingEditor.jsx +105 -0
  125. package/src/views/builder/inspector/fields/ColumnsConfigEditor.jsx +506 -0
  126. package/src/views/builder/inspector/fields/DonutRingsEditorField.jsx +337 -0
  127. package/src/views/builder/inspector/fields/ExtraColsEditor.jsx +618 -0
  128. package/src/views/builder/inspector/fields/FunctionHelpPopover.jsx +295 -0
  129. package/src/views/builder/inspector/fields/IconEditor.jsx +64 -0
  130. package/src/views/builder/inspector/fields/KpiActionField.jsx +223 -0
  131. package/src/views/builder/inspector/fields/MarkersEditorField.jsx +173 -0
  132. package/src/views/builder/inspector/fields/SelectEditor.jsx +9 -5
  133. package/src/views/builder/inspector/fields/SeriesEditorField.jsx +363 -0
  134. package/src/views/builder/inspector/fields/TableColumnsEditor.jsx +104 -0
  135. package/src/views/builder/inspector/fields/ThresholdsEditor.jsx +247 -0
  136. package/src/views/builder/inspector/fields/ValueFunctionsRefPanel.jsx +217 -0
  137. package/src/views/builder/inspector/fields/columnEditorShared.jsx +217 -0
  138. package/src/views/builder/sidebar/Sidebar.jsx +4 -2
  139. package/src/views/builder/sidebar/SidebarTabs.jsx +28 -17
  140. package/src/views/builder/sidebar/tabs/ActionsTab.jsx +7 -3
  141. package/src/views/builder/sidebar/tabs/AiTab/AiPreviewDialog.jsx +193 -0
  142. package/src/views/builder/sidebar/tabs/AiTab/aiProvider.js +49 -0
  143. package/src/views/builder/sidebar/tabs/AiTab/index.jsx +409 -0
  144. package/src/views/builder/sidebar/tabs/AiTab/schemaTransformer.js +102 -0
  145. package/src/views/builder/sidebar/tabs/AiTab/schemaValidator.js +64 -0
  146. package/src/views/builder/sidebar/tabs/AiTab/systemPrompt.js +1151 -0
  147. package/src/views/builder/sidebar/tabs/Components/ComponentsTab.jsx +31 -31
  148. package/src/views/builder/sidebar/tabs/Components/componentCatalog.js +43 -21
  149. package/src/views/builder/sidebar/tabs/Components/printComponentCatalog.js +81 -0
  150. package/src/views/builder/sidebar/tabs/TimersTab.jsx +338 -0
  151. package/src/views/builder/sidebar/tabs/TreeTab.jsx +13 -4
  152. package/src/views/builder/sidebar/tabs/ViewTab.jsx +1 -1
  153. package/src/views/builder/viewer/AdornedLabel.jsx +82 -0
  154. package/src/views/builder/viewer/ComponentRenderer.jsx +98 -24
  155. package/src/views/builder/viewer/DialogsZone.jsx +259 -0
  156. package/src/views/builder/viewer/FieldLabel.jsx +106 -0
  157. package/src/views/builder/viewer/PrintDialog.jsx +481 -0
  158. package/src/views/builder/viewer/ProductionViewer.jsx +80 -5
  159. package/src/views/builder/viewer/Viewer.jsx +106 -8
  160. package/src/views/builder/viewer/ViewerComponentWrapper.jsx +61 -4
  161. package/src/views/builder/viewer/ViewerToolbar.jsx +273 -59
  162. package/src/views/builder/viewer/renderers/AutoCompleteRenderer.jsx +26 -22
  163. package/src/views/builder/viewer/renderers/AvatarGroupRenderer.jsx +112 -0
  164. package/src/views/builder/viewer/renderers/BadgeRenderer.jsx +79 -0
  165. package/src/views/builder/viewer/renderers/BannerRenderer.jsx +62 -0
  166. package/src/views/builder/viewer/renderers/BreadcrumbRenderer.jsx +203 -15
  167. package/src/views/builder/viewer/renderers/BulletChartRenderer.jsx +147 -0
  168. package/src/views/builder/viewer/renderers/ButtonRenderer.jsx +98 -39
  169. package/src/views/builder/viewer/renderers/CardRenderer.jsx +1 -1
  170. package/src/views/builder/viewer/renderers/ChartRenderer.jsx +388 -0
  171. package/src/views/builder/viewer/renderers/CheckboxRenderer.jsx +17 -9
  172. package/src/views/builder/viewer/renderers/ColorScaleRenderer.jsx +300 -0
  173. package/src/views/builder/viewer/renderers/ComparisonBarsRenderer.jsx +133 -0
  174. package/src/views/builder/viewer/renderers/ContainerRenderer.jsx +3 -1
  175. package/src/views/builder/viewer/renderers/CountdownRenderer.jsx +249 -0
  176. package/src/views/builder/viewer/renderers/DataGridRenderer.jsx +380 -0
  177. package/src/views/builder/viewer/renderers/DataTableViewerRenderer.jsx +240 -0
  178. package/src/views/builder/viewer/renderers/DatePickerRenderer.jsx +25 -24
  179. package/src/views/builder/viewer/renderers/DialogRenderer.jsx +327 -0
  180. package/src/views/builder/viewer/renderers/DividerRenderer.jsx +1 -1
  181. package/src/views/builder/viewer/renderers/DonutRenderer.jsx +294 -0
  182. package/src/views/builder/viewer/renderers/DropdownRenderer.jsx +36 -44
  183. package/src/views/builder/viewer/renderers/ExcelUploadRenderer.jsx +639 -0
  184. package/src/views/builder/viewer/renderers/FunnelRenderer.jsx +93 -0
  185. package/src/views/builder/viewer/renderers/GaugeRenderer.jsx +159 -0
  186. package/src/views/builder/viewer/renderers/HeaderRenderer.jsx +31 -9
  187. package/src/views/builder/viewer/renderers/HeatmapGridRenderer.jsx +432 -0
  188. package/src/views/builder/viewer/renderers/IconBoxRenderer.jsx +59 -0
  189. package/src/views/builder/viewer/renderers/ImageRenderer.jsx +1 -1
  190. package/src/views/builder/viewer/renderers/InputRenderer.jsx +75 -18
  191. package/src/views/builder/viewer/renderers/LabelRenderer.jsx +35 -9
  192. package/src/views/builder/viewer/renderers/LayoutCellRenderer.jsx +102 -40
  193. package/src/views/builder/viewer/renderers/LayoutContextMenu.jsx +8 -8
  194. package/src/views/builder/viewer/renderers/LayoutRenderer.jsx +48 -6
  195. package/src/views/builder/viewer/renderers/LinkRenderer.jsx +1 -1
  196. package/src/views/builder/viewer/renderers/MenuRenderer.jsx +2 -2
  197. package/src/views/builder/viewer/renderers/MetricRenderer.jsx +80 -0
  198. package/src/views/builder/viewer/renderers/NumberFormatRenderer.jsx +21 -30
  199. package/src/views/builder/viewer/renderers/PageNumberRenderer.jsx +76 -0
  200. package/src/views/builder/viewer/renderers/PopoverRenderer.jsx +350 -0
  201. package/src/views/builder/viewer/renderers/ProgressCircleRenderer.jsx +1 -1
  202. package/src/views/builder/viewer/renderers/ProgressLineRenderer.jsx +1 -1
  203. package/src/views/builder/viewer/renderers/RadioGroupRenderer.jsx +28 -39
  204. package/src/views/builder/viewer/renderers/RatingRenderer.jsx +80 -0
  205. package/src/views/builder/viewer/renderers/RepeaterRenderer.jsx +297 -38
  206. package/src/views/builder/viewer/renderers/ReportViewerRenderer.jsx +219 -5
  207. package/src/views/builder/viewer/renderers/RichTextRenderer.jsx +60 -66
  208. package/src/views/builder/viewer/renderers/RowActionsCell.jsx +308 -0
  209. package/src/views/builder/viewer/renderers/SignatureRenderer.jsx +33 -62
  210. package/src/views/builder/viewer/renderers/StatusDotRenderer.jsx +75 -0
  211. package/src/views/builder/viewer/renderers/StepStageRenderer.jsx +348 -0
  212. package/src/views/builder/viewer/renderers/TagListRenderer.jsx +115 -0
  213. package/src/views/builder/viewer/renderers/TagPickerRenderer.jsx +31 -45
  214. package/src/views/builder/viewer/renderers/TextAreaRenderer.jsx +25 -18
  215. package/src/views/builder/viewer/renderers/TextRenderer.jsx +7 -1
  216. package/src/views/builder/viewer/renderers/TimePickerRenderer.jsx +25 -24
  217. package/src/views/builder/viewer/renderers/TimelineRenderer.jsx +525 -0
  218. package/src/views/builder/viewer/renderers/ToggleRenderer.jsx +21 -27
  219. package/src/views/builder/viewer/renderers/TreeViewRenderer.jsx +832 -0
  220. package/src/views/builder/viewer/renderers/TrendRenderer.jsx +66 -0
  221. package/src/views/builder/viewer/renderers/ViewRendererRenderer.jsx +315 -0
  222. package/src/views/builder/viewer/renderers/WizardRenderer.jsx +380 -64
  223. package/src/views/builder/viewer/renderers/WizardStepRenderer.jsx +21 -12
  224. package/src/views/builder/viewer/renderers/dataGridComponents.jsx +824 -0
  225. package/src/views/customFilter/CustomFilterDialog.js +1023 -660
  226. package/src/views/customFilter/FixedFilterDialog.js +649 -0
  227. package/src/views/customFilter/SearchFilterDialog.js +248 -0
  228. package/src/views/genericTable/BuilderExpressionParams.js +3 -3
  229. package/src/views/genericTable/ColumnConfiguratorDialog.js +33 -24
  230. package/src/views/genericTable/FixedFilterDialog.js +3 -2
  231. package/src/views/genericTable/FormattingSettingsDialog.js +8 -3
  232. package/src/views/genericTable/SGrid.js +198 -97
  233. package/src/views/genericTable/SearchFilterDialog.js +3 -2
  234. package/src/views/genericTable/cellEditors/autocompleteEditor.js +5 -9
  235. package/src/views/genericTable/convertStringFunctions.js +274 -138
  236. package/src/views/genericTable/statusBar/rowCountStatusBar.js +3 -1
  237. package/src/views/genericTable/updateRefHelpers.js +9 -6
  238. package/src/views/printBuilder/PrintBuilderViewer.jsx +607 -0
  239. package/src/views/printBuilder/PrintPreviewCanvas.jsx +157 -0
  240. package/src/views/rolePermissions/UpdateReportPermissionDialog.js +3 -2
  241. package/src/@core/components/auth/AclGuard.js +0 -55
  242. package/src/@core/components/auth/AuthGuard.js +0 -40
  243. package/src/@core/components/auth/GuestGuard.js +0 -30
  244. package/src/@core/components/custom-inputs/Horizontal.jsx +0 -143
  245. package/src/@core/components/custom-inputs/Image.jsx +0 -78
  246. package/src/@core/components/custom-inputs/Vertical.jsx +0 -113
  247. package/src/@core/components/customizer/index.jsx +0 -470
  248. package/src/@core/components/customizer/styles.module.css +0 -169
  249. package/src/@core/components/mui/Avatar.jsx +0 -41
  250. package/src/@core/components/mui/Badge.jsx +0 -20
  251. package/src/@core/components/mui/IconButton.jsx +0 -74
  252. package/src/@core/components/mui/TabList.jsx +0 -60
  253. package/src/@core/components/option-menu/index.jsx +0 -137
  254. package/src/@core/components/scroll-to-top/index.jsx +0 -43
  255. package/src/@core/components/spinner/index.js +0 -26
  256. package/src/@core/components/window-wrapper/index.js +0 -27
  257. package/src/@core/contexts/settingsContext.jsx +0 -98
  258. package/src/@core/hooks/useBgColor.js +0 -63
  259. package/src/@core/hooks/useImageVariant.js +0 -27
  260. package/src/@core/hooks/useLayoutInit.js +0 -37
  261. package/src/@core/hooks/useObjectCookie.js +0 -18
  262. package/src/@core/hooks/useSettings.jsx +0 -15
  263. package/src/@core/layouts/BlankLayout.js +0 -37
  264. package/src/@core/layouts/BlankLayoutWithAppBar.js +0 -51
  265. package/src/@core/layouts/HorizontalLayout.jsx +0 -151
  266. package/src/@core/layouts/Layout.js +0 -39
  267. package/src/@core/layouts/VerticalLayout.jsx +0 -124
  268. package/src/@core/layouts/components/blank-layout-with-appBar/index.js +0 -115
  269. package/src/@core/layouts/components/horizontal/app-bar-content/index.js +0 -67
  270. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavGroup.js +0 -352
  271. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavItems.js +0 -21
  272. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavLink.js +0 -195
  273. package/src/@core/layouts/components/horizontal/navigation/index.js +0 -31
  274. package/src/@core/layouts/components/shared-components/LanguageDropdown.js +0 -96
  275. package/src/@core/layouts/components/shared-components/ModeToggler.js +0 -32
  276. package/src/@core/layouts/components/shared-components/NotificationDropdown.js +0 -226
  277. package/src/@core/layouts/components/shared-components/UserDropdown.js +0 -177
  278. package/src/@core/layouts/components/shared-components/footer/FooterContent.js +0 -46
  279. package/src/@core/layouts/components/shared-components/footer/index.js +0 -61
  280. package/src/@core/layouts/components/vertical/appBar/index.js +0 -74
  281. package/src/@core/layouts/components/vertical/navigation/Drawer.js +0 -122
  282. package/src/@core/layouts/components/vertical/navigation/VerticalNavGroup.js +0 -435
  283. package/src/@core/layouts/components/vertical/navigation/VerticalNavHeader.js +0 -180
  284. package/src/@core/layouts/components/vertical/navigation/VerticalNavItems.js +0 -26
  285. package/src/@core/layouts/components/vertical/navigation/VerticalNavLink.js +0 -258
  286. package/src/@core/layouts/components/vertical/navigation/VerticalNavSectionTitle.js +0 -102
  287. package/src/@core/layouts/components/vertical/navigation/index.js +0 -169
  288. package/src/@core/layouts/utils.js +0 -69
  289. package/src/@core/styles/Table.module.css +0 -93
  290. package/src/@core/styles/horizontal/menuItemStyles.js +0 -100
  291. package/src/@core/styles/horizontal/menuRootStyles.js +0 -19
  292. package/src/@core/styles/libs/fullcalendar/index.js +0 -461
  293. package/src/@core/styles/libs/keen-slider/index.js +0 -111
  294. package/src/@core/styles/libs/react-apexcharts/index.js +0 -107
  295. package/src/@core/styles/libs/react-cleave/index.js +0 -33
  296. package/src/@core/styles/libs/react-credit-cards/index.js +0 -11
  297. package/src/@core/styles/libs/react-datepicker/index.js +0 -388
  298. package/src/@core/styles/libs/react-draft-wysiwyg/index.js +0 -144
  299. package/src/@core/styles/libs/react-dropzone/index.js +0 -76
  300. package/src/@core/styles/libs/react-hot-toast/index.js +0 -37
  301. package/src/@core/styles/libs/recharts/index.js +0 -47
  302. package/src/@core/styles/stepper.js +0 -103
  303. package/src/@core/styles/vertical/menuItemStyles.js +0 -138
  304. package/src/@core/styles/vertical/menuSectionStyles.js +0 -54
  305. package/src/@core/styles/vertical/navigationCustomStyles.js +0 -62
  306. package/src/@core/svg/ContentCompact.jsx +0 -17
  307. package/src/@core/svg/ContentWide.jsx +0 -17
  308. package/src/@core/svg/DirectionLtr.jsx +0 -93
  309. package/src/@core/svg/DirectionRtl.jsx +0 -93
  310. package/src/@core/svg/LayoutCollapsed.jsx +0 -59
  311. package/src/@core/svg/LayoutHorizontal.jsx +0 -42
  312. package/src/@core/svg/LayoutVertical.jsx +0 -59
  313. package/src/@core/svg/Logo.jsx +0 -76
  314. package/src/@core/svg/SkinBordered.jsx +0 -54
  315. package/src/@core/svg/SkinDefault.jsx +0 -59
  316. package/src/@core/tailwind/plugin.js +0 -78
  317. package/src/@core/theme/ThemeComponent.js +0 -63
  318. package/src/@core/theme/ThemeOptions.js +0 -71
  319. package/src/@core/theme/breakpoints/index.js +0 -11
  320. package/src/@core/theme/colorSchemes.js +0 -326
  321. package/src/@core/theme/customShadows.js +0 -11
  322. package/src/@core/theme/globalStyles.js +0 -81
  323. package/src/@core/theme/index.js +0 -42
  324. package/src/@core/theme/overrides/accordion.js +0 -51
  325. package/src/@core/theme/overrides/accordion.jsx +0 -85
  326. package/src/@core/theme/overrides/alerts.js +0 -110
  327. package/src/@core/theme/overrides/alerts.jsx +0 -180
  328. package/src/@core/theme/overrides/autocomplete.js +0 -14
  329. package/src/@core/theme/overrides/autocomplete.jsx +0 -68
  330. package/src/@core/theme/overrides/avatar.js +0 -38
  331. package/src/@core/theme/overrides/avatars.js +0 -27
  332. package/src/@core/theme/overrides/backdrop.js +0 -22
  333. package/src/@core/theme/overrides/badges.js +0 -16
  334. package/src/@core/theme/overrides/breadcrumbs.js +0 -11
  335. package/src/@core/theme/overrides/button-group.js +0 -84
  336. package/src/@core/theme/overrides/button.js +0 -93
  337. package/src/@core/theme/overrides/buttonGroup.js +0 -9
  338. package/src/@core/theme/overrides/card.js +0 -83
  339. package/src/@core/theme/overrides/checkbox.jsx +0 -95
  340. package/src/@core/theme/overrides/chip.js +0 -72
  341. package/src/@core/theme/overrides/dataGrid.js +0 -114
  342. package/src/@core/theme/overrides/dateTimePicker.js +0 -65
  343. package/src/@core/theme/overrides/dialog.js +0 -120
  344. package/src/@core/theme/overrides/divider.js +0 -13
  345. package/src/@core/theme/overrides/drawer.js +0 -20
  346. package/src/@core/theme/overrides/fab.js +0 -13
  347. package/src/@core/theme/overrides/form-control-label.js +0 -19
  348. package/src/@core/theme/overrides/icon-button.js +0 -145
  349. package/src/@core/theme/overrides/index.js +0 -103
  350. package/src/@core/theme/overrides/input.js +0 -72
  351. package/src/@core/theme/overrides/link.js +0 -9
  352. package/src/@core/theme/overrides/list.js +0 -44
  353. package/src/@core/theme/overrides/menu.js +0 -25
  354. package/src/@core/theme/overrides/pagination.js +0 -41
  355. package/src/@core/theme/overrides/paper.js +0 -9
  356. package/src/@core/theme/overrides/popover.js +0 -16
  357. package/src/@core/theme/overrides/progress.js +0 -38
  358. package/src/@core/theme/overrides/radio.jsx +0 -80
  359. package/src/@core/theme/overrides/rating.js +0 -16
  360. package/src/@core/theme/overrides/rating.jsx +0 -32
  361. package/src/@core/theme/overrides/select.js +0 -19
  362. package/src/@core/theme/overrides/select.jsx +0 -52
  363. package/src/@core/theme/overrides/slider.js +0 -97
  364. package/src/@core/theme/overrides/snackbar.js +0 -19
  365. package/src/@core/theme/overrides/switch.js +0 -73
  366. package/src/@core/theme/overrides/switches.js +0 -25
  367. package/src/@core/theme/overrides/table-pagination.js +0 -39
  368. package/src/@core/theme/overrides/table.js +0 -81
  369. package/src/@core/theme/overrides/tabs.js +0 -30
  370. package/src/@core/theme/overrides/timeline.js +0 -80
  371. package/src/@core/theme/overrides/toggle-button.js +0 -33
  372. package/src/@core/theme/overrides/toggleButton.js +0 -16
  373. package/src/@core/theme/overrides/tooltip.js +0 -21
  374. package/src/@core/theme/overrides/typography.js +0 -13
  375. package/src/@core/theme/palette/index.js +0 -107
  376. package/src/@core/theme/shadows/index.js +0 -61
  377. package/src/@core/theme/shadows.js +0 -12
  378. package/src/@core/theme/spacing/index.js +0 -3
  379. package/src/@core/theme/spacing.js +0 -5
  380. package/src/@core/theme/typography/index.js +0 -65
  381. package/src/@core/theme/typography.js +0 -84
  382. package/src/@core/utils/create-emotion-cache.js +0 -5
  383. package/src/@core/utils/hex-to-rgba.js +0 -11
  384. package/src/@core/utils/serverHelpers.js +0 -45
  385. package/src/@menu/components/RouterLink.jsx +0 -18
  386. package/src/@menu/components/horizontal-menu/HorizontalNav.jsx +0 -88
  387. package/src/@menu/components/horizontal-menu/Menu.jsx +0 -83
  388. package/src/@menu/components/horizontal-menu/MenuButton.jsx +0 -100
  389. package/src/@menu/components/horizontal-menu/MenuItem.jsx +0 -183
  390. package/src/@menu/components/horizontal-menu/SubMenu.jsx +0 -418
  391. package/src/@menu/components/horizontal-menu/SubMenuContent.jsx +0 -41
  392. package/src/@menu/components/horizontal-menu/VerticalNavInHorizontal.jsx +0 -20
  393. package/src/@menu/components/vertical-menu/Menu.jsx +0 -161
  394. package/src/@menu/components/vertical-menu/MenuButton.jsx +0 -95
  395. package/src/@menu/components/vertical-menu/MenuItem.jsx +0 -180
  396. package/src/@menu/components/vertical-menu/MenuSection.jsx +0 -124
  397. package/src/@menu/components/vertical-menu/NavCollapseIcons.jsx +0 -70
  398. package/src/@menu/components/vertical-menu/NavHeader.jsx +0 -39
  399. package/src/@menu/components/vertical-menu/SubMenu.jsx +0 -420
  400. package/src/@menu/components/vertical-menu/SubMenuContent.jsx +0 -101
  401. package/src/@menu/components/vertical-menu/VerticalNav.jsx +0 -216
  402. package/src/@menu/contexts/horizontalNavContext.jsx +0 -29
  403. package/src/@menu/contexts/verticalNavContext.jsx +0 -65
  404. package/src/@menu/defaultConfigs.js +0 -12
  405. package/src/@menu/hooks/useHorizontalMenu.jsx +0 -19
  406. package/src/@menu/hooks/useHorizontalNav.jsx +0 -19
  407. package/src/@menu/hooks/useMediaQuery.jsx +0 -29
  408. package/src/@menu/hooks/useVerticalMenu.jsx +0 -19
  409. package/src/@menu/hooks/useVerticalNav.jsx +0 -19
  410. package/src/@menu/horizontal-menu/index.jsx +0 -8
  411. package/src/@menu/styles/StyledBackdrop.jsx +0 -15
  412. package/src/@menu/styles/StyledMenuIcon.jsx +0 -12
  413. package/src/@menu/styles/StyledMenuLabel.jsx +0 -16
  414. package/src/@menu/styles/StyledMenuPrefix.jsx +0 -10
  415. package/src/@menu/styles/StyledMenuSectionLabel.jsx +0 -21
  416. package/src/@menu/styles/StyledMenuSuffix.jsx +0 -10
  417. package/src/@menu/styles/StyledSubMenuContent.jsx +0 -43
  418. package/src/@menu/styles/horizontal/StyledHorizontalMenu.jsx +0 -13
  419. package/src/@menu/styles/horizontal/StyledHorizontalMenuItem.jsx +0 -26
  420. package/src/@menu/styles/horizontal/StyledHorizontalNav.jsx +0 -11
  421. package/src/@menu/styles/horizontal/StyledHorizontalNavExpandIcon.jsx +0 -33
  422. package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContent.jsx +0 -18
  423. package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContentWrapper.jsx +0 -10
  424. package/src/@menu/styles/horizontal/horizontalUl.module.css +0 -15
  425. package/src/@menu/styles/styles.module.css +0 -5
  426. package/src/@menu/styles/vertical/StyledVerticalMenu.jsx +0 -16
  427. package/src/@menu/styles/vertical/StyledVerticalMenuItem.jsx +0 -28
  428. package/src/@menu/styles/vertical/StyledVerticalMenuSection.jsx +0 -23
  429. package/src/@menu/styles/vertical/StyledVerticalNav.jsx +0 -67
  430. package/src/@menu/styles/vertical/StyledVerticalNavBgColorContainer.jsx +0 -15
  431. package/src/@menu/styles/vertical/StyledVerticalNavContainer.jsx +0 -23
  432. package/src/@menu/styles/vertical/StyledVerticalNavExpandIcon.jsx +0 -25
  433. package/src/@menu/styles/vertical/verticalNavBgImage.module.css +0 -10
  434. package/src/@menu/svg/ChevronRight.jsx +0 -9
  435. package/src/@menu/svg/Close.jsx +0 -12
  436. package/src/@menu/svg/RadioCircle.jsx +0 -12
  437. package/src/@menu/svg/RadioCircleMarked.jsx +0 -13
  438. package/src/@menu/utils/menuClasses.js +0 -44
  439. package/src/@menu/utils/menuUtils.jsx +0 -145
  440. package/src/@menu/vertical-menu/index.jsx +0 -11
  441. package/src/configs/acl.js +0 -115
  442. package/src/configs/auth.js +0 -5
  443. package/src/configs/aws-exports.js +0 -30
  444. package/src/configs/firebase.js +0 -25
  445. package/src/configs/i18n.js +0 -34
  446. package/src/configs/primaryColorConfig.js +0 -35
  447. package/src/configs/themeConfig.js +0 -44
  448. package/src/layouts/UserLayout.js +0 -94
  449. package/src/layouts/UserThemeOptions.js +0 -191
  450. package/src/layouts/components/Direction.js +0 -30
  451. package/src/layouts/components/HtmlTooltip.js +0 -15
  452. package/src/layouts/components/Translations.js +0 -11
  453. package/src/layouts/components/UserDropdown.js +0 -217
  454. package/src/layouts/components/UserIcon.js +0 -40
  455. package/src/layouts/components/acl/Can.js +0 -6
  456. package/src/layouts/components/acl/CanViewNavGroup.js +0 -36
  457. package/src/layouts/components/acl/CanViewNavLink.js +0 -17
  458. package/src/layouts/components/acl/CanViewNavSectionTitle.js +0 -17
  459. package/src/layouts/components/horizontal/AppBarContent.js +0 -39
  460. package/src/layouts/components/horizontal/ServerSideNavItems.js +0 -44
  461. package/src/layouts/components/mui/StepperComps.js +0 -55
  462. package/src/layouts/components/vertical/AppBarContent.js +0 -35
  463. package/src/layouts/components/vertical/ServerSideNavItems.js +0 -44
  464. package/src/libs/ApexCharts.jsx +0 -5
  465. package/src/libs/ReactPlayer.jsx +0 -5
  466. package/src/libs/Recharts.jsx +0 -4
  467. package/src/libs/auth.js +0 -124
  468. package/src/libs/styles/AppFullCalendar.js +0 -505
  469. package/src/libs/styles/AppKeenSlider.js +0 -116
  470. package/src/libs/styles/AppReactApexCharts.jsx +0 -110
  471. package/src/libs/styles/AppReactDatepicker.jsx +0 -470
  472. package/src/libs/styles/AppReactDropzone.js +0 -76
  473. package/src/libs/styles/AppReactToastify.jsx +0 -108
  474. package/src/libs/styles/AppRecharts.js +0 -55
  475. package/src/libs/styles/inputOtp.module.css +0 -39
  476. package/src/libs/styles/tiptapEditor.css +0 -72
  477. package/src/navigation/horizontal/index.js +0 -246
  478. package/src/navigation/vertical/index.js +0 -253
  479. package/src/pages/401.js +0 -70
  480. package/src/pages/404.js +0 -67
  481. package/src/pages/500.js +0 -68
  482. package/src/pages/[slug].js +0 -115
  483. package/src/pages/_document.js +0 -72
  484. package/src/pages/api/navigation/regenerate-registry.js +0 -116
  485. package/src/pages/api/navigation/save.js +0 -218
  486. package/src/pages/authModule/acl/index.js +0 -48
  487. package/src/pages/authModule/forgot-password/index.js +0 -228
  488. package/src/pages/authModule/permissions/rolePermissions/[id]/rolePermissionsUser/index.js +0 -392
  489. package/src/pages/authModule/permissions/rolePermissions/index.js +0 -343
  490. package/src/pages/authModule/permissions/systemPermissions/index.js +0 -354
  491. package/src/pages/authModule/privacy/index.js +0 -721
  492. package/src/pages/authModule/users/index.js +0 -210
  493. package/src/pages/login/index.js +0 -328
  494. package/src/pages/mainHome/index.js +0 -181
  495. package/src/views/builder/inspector/definitions/cell/main.js +0 -4
  496. package/src/views/builder/inspector/definitions/column/main.js +0 -9
  497. package/src/views/builder/inspector/definitions/column-group/main.js +0 -18
  498. package/src/views/builder/inspector/definitions/header-cell/main.js +0 -5
  499. package/src/views/builder/inspector/definitions/table/main.js +0 -9
  500. package/src/views/builder/viewer/renderers/CellRenderer.jsx +0 -71
  501. package/src/views/builder/viewer/renderers/ColumnGroupRenderer.jsx +0 -96
  502. package/src/views/builder/viewer/renderers/ColumnRenderer.jsx +0 -71
  503. package/src/views/builder/viewer/renderers/HeaderCellRenderer.jsx +0 -78
  504. package/src/views/builder/viewer/renderers/TabRenderer.jsx +0 -82
  505. package/src/views/builder/viewer/renderers/TableRenderer.jsx +0 -92
  506. package/src/views/pages/auth/FooterIllustrationsV2.js +0 -40
  507. package/src/views/pages/misc/FooterIllustrations.js +0 -47
  508. package/src/views/pages/misc/muiTable/CustomPagination.js +0 -34
  509. package/src/views/pages/users/UserManageDialog.js +0 -283
  510. package/src/views/pages/users/UserViewPage.js +0 -199
  511. package/src/views/users/AddUserNameDialog.js +0 -162
  512. package/src/views/users/ContactManage.js +0 -449
  513. package/src/views/users/ResetPasswordDialog.js +0 -242
package/README.md ADDED
@@ -0,0 +1,211 @@
1
+ # robobyte-front-builder
2
+
3
+ A low-code UI builder, Report builder, Print Layout designer, and Navigation extension system for Next.js applications.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/robobyte-front-builder)](https://www.npmjs.com/package/robobyte-front-builder)
6
+
7
+ ---
8
+
9
+ ## What's included
10
+
11
+ - **UI Builder** — drag-and-drop canvas for building data-driven views with 50+ components
12
+ - **Report Builder** — design and preview paginated reports
13
+ - **Print Layout Designer** — multi-zone print templates (header / body pages / footer)
14
+ - **Navigator Builder** — configure sidebar navigation
15
+ - **Viewer** — production read-only renderer for saved UI Builder views
16
+ - **Navigation Extension API** — inject nav items from the host app without forking the package
17
+ - **KPI Components** — 12 ready-to-use metric visualisations (gauge, trend, bullet chart, rating, countdown, …)
18
+ - **Timer Engine** — configurable auto-refresh timers per view
19
+ - **Undo / Redo / Copy / Paste** — full clipboard and history support in the builder
20
+
21
+ ---
22
+
23
+ ## Requirements
24
+
25
+ | Dependency | Version |
26
+ |---|---|
27
+ | Node.js | ≥ 18 |
28
+ | React / React DOM | ≥ 18 |
29
+ | Next.js | ≥ 13 |
30
+ | @mui/material | ≥ 7 |
31
+ | AG Grid | ≥ 33 |
32
+
33
+ ---
34
+
35
+ ## Installation
36
+
37
+ ```bash
38
+ npm install robobyte-front-builder
39
+ ```
40
+
41
+ ### Required peer dependencies
42
+
43
+ These must be installed in the **host app** (they must be shared as a single instance):
44
+
45
+ ```bash
46
+ npm install \
47
+ react react-dom next \
48
+ @mui/material @mui/icons-material @mui/lab @mui/system \
49
+ @mui/x-data-grid @mui/x-date-pickers @mui/x-internals @mui/x-virtualizer \
50
+ @emotion/react @emotion/styled \
51
+ ag-grid-community ag-grid-enterprise ag-grid-react \
52
+ xlsx react-hot-toast
53
+ ```
54
+
55
+ > Everything else (`dayjs`, `lodash`, `recharts`, etc.) ships inside the package and does not need to be installed in the host app.
56
+
57
+ ---
58
+
59
+ ## Setup
60
+
61
+ ### 1. next.config.js
62
+
63
+ Add the package to `transpilePackages` so Next.js compiles the source-first package:
64
+
65
+ ```js
66
+ /** @type {import('next').NextConfig} */
67
+ const nextConfig = {
68
+ transpilePackages: ['robobyte-front-builder'],
69
+ }
70
+
71
+ module.exports = nextConfig
72
+ ```
73
+
74
+ ### 2. Wrap your app
75
+
76
+ In `pages/_app.js`, wrap your tree with the provider:
77
+
78
+ ```jsx
79
+ import { RoboByteFrontBuilderProvider } from 'robobyte-front-builder'
80
+
81
+ export default function App({ Component, pageProps }) {
82
+ return (
83
+ <RoboByteFrontBuilderProvider
84
+ baseURL="https://your-api.example.com"
85
+ apiURL="https://your-api.example.com/api"
86
+ getAccessToken={() => yourAuthModule.getToken()}
87
+ getUser={() => yourAuthModule.getCurrentUser()}
88
+ >
89
+ <Component {...pageProps} />
90
+ </RoboByteFrontBuilderProvider>
91
+ )
92
+ }
93
+ ```
94
+
95
+ ### 3. Add pages
96
+
97
+ Create page files in your host app that re-export the builder pages:
98
+
99
+ ```js
100
+ // pages/ui-builder/[id].js
101
+ export { default } from 'robobyte-front-builder/UIBuilderPage'
102
+ // or:
103
+ import { UIBuilderPage } from 'robobyte-front-builder'
104
+ export default UIBuilderPage
105
+ ```
106
+
107
+ | Host page path | Export to use |
108
+ |---|---|
109
+ | `pages/ui-builder/[id].js` | `UIBuilderPage` |
110
+ | `pages/ui-builder/views/index.js` | `ViewsList` |
111
+ | `pages/viewer/[id].js` | `ViewerPage` |
112
+ | `pages/report-builder/[id].js` | `ReportBuilderPage` |
113
+ | `pages/report-builder/reports/index.js` | `ReportsList` |
114
+ | `pages/report-builder/viewer/index.js` | `ReportViewer` |
115
+ | `pages/navigator-builder/index.js` | `NavigatorBuilderPage` |
116
+ | `pages/print-builder/index.js` | `PrintBuilderPage` |
117
+ | `pages/print-builder/layouts/index.js` | `PrintLayoutsList` |
118
+
119
+ ---
120
+
121
+ ## Navigation Extension API
122
+
123
+ Inject nav items into the builder's sidebar from anywhere in the host app without touching this package:
124
+
125
+ ```jsx
126
+ import { useNavExtension } from 'robobyte-front-builder'
127
+
128
+ export default function MyFeatureModule() {
129
+ useNavExtension({
130
+ key: 'my-feature',
131
+ label: 'My Feature',
132
+ icon: <MyIcon />,
133
+ href: '/my-feature',
134
+ order: 10,
135
+ })
136
+
137
+ return <div>...</div>
138
+ }
139
+ ```
140
+
141
+ ---
142
+
143
+ ## RoboByteFrontBuilderProvider props
144
+
145
+ | Prop | Type | Description |
146
+ |---|---|---|
147
+ | `baseURL` | `string` | Base URL for file/asset requests |
148
+ | `apiURL` | `string` | API base URL for all data endpoints |
149
+ | `getAccessToken` | `() => string` | Called before each request to get the auth token |
150
+ | `getUser` | `() => object` | Returns the current user object |
151
+ | `navExtensions` | `array` | Static nav items to inject (alternative to `useNavExtension`) |
152
+ | `theme` | `object` | MUI theme override |
153
+
154
+ ---
155
+
156
+ ## Advanced: accessing builder context
157
+
158
+ For host apps that need to read or drive builder state programmatically:
159
+
160
+ ```js
161
+ import { useBuilder } from 'robobyte-front-builder'
162
+
163
+ const { schema, dispatch } = useBuilder()
164
+ ```
165
+
166
+ ---
167
+
168
+ ## Local development
169
+
170
+ To link the package locally without publishing:
171
+
172
+ ```json
173
+ // host app package.json
174
+ "robobyte-front-builder": "file:../../RoboByteFrontBuilder"
175
+ ```
176
+
177
+ Run `npm install` once, then Next.js hot-reload picks up changes automatically.
178
+
179
+ ---
180
+
181
+ ## Publishing
182
+
183
+ ```bash
184
+ npm version patch # bug fix → 1.0.x
185
+ npm version minor # feature → 1.x.0
186
+ npm version major # breaking → x.0.0
187
+ npm publish
188
+ ```
189
+
190
+ ---
191
+
192
+ ## Changelog
193
+
194
+ ### 1.0.21
195
+ - Added Timer Engine — configurable auto-refresh timers per view (interval, cron, manual trigger)
196
+ - Added full Undo / Redo history with keyboard shortcuts (Ctrl+Z / Ctrl+Y)
197
+ - Added Cut / Copy / Paste with system clipboard support (Ctrl+X / Ctrl+C / Ctrl+V)
198
+ - Added Undo / Redo buttons to the viewer toolbar
199
+ - Expanded KPI component suite: Gauge, BulletChart, ColorScale, Rating, Countdown, AvatarGroup, StepStage
200
+ - Print Layout designer: multi-zone canvas (header / body / footer), `@page` CSS, print dialog
201
+
202
+ ### 1.0.20
203
+ - KPI components: Metric, Trend, Badge, StatusDot, IconBox, Sparkline, MiniBarChart, Donut, Funnel, HeatmapGrid, TagList, Timeline, ComparisonBars
204
+ - Threshold engine and number formatting utilities
205
+ - Dark / light theme toggle in UI builder and Print Layout builder
206
+
207
+ ### 1.0.x
208
+ - UI Builder, Report Builder, Navigator Builder, Print Builder initial releases
209
+ - Navigation Extension API
210
+ - AG Grid and MUI data grid integration
211
+ - Drag-and-drop canvas with 50+ components
package/next.config.js CHANGED
@@ -1,33 +1,36 @@
1
1
  const path = require('path');
2
- const withTM = require('next-transpile-modules')([
3
- '@fullcalendar/common',
4
- '@fullcalendar/react',
5
- '@fullcalendar/daygrid',
6
- '@fullcalendar/list',
7
- '@fullcalendar/timegrid',
8
- '@mui/x-data-grid',
9
- '@mui/material',
10
- '@mui/utils',
11
- 'suneditor',
12
- 'suneditor-react',
13
- ]);
14
2
 
15
3
  /** @type {import('next').NextConfig} */
16
4
  const nextConfig = {
5
+ // Next.js 13+ has built-in transpilePackages — no need for next-transpile-modules
6
+ transpilePackages: [
7
+ '@mui/x-data-grid',
8
+ '@mui/material',
9
+ '@mui/utils',
10
+ 'suneditor',
11
+ 'suneditor-react',
12
+ ],
17
13
  trailingSlash: true,
18
14
  reactStrictMode: false,
19
15
  eslint: {
20
16
  ignoreDuringBuilds: true,
21
17
  },
22
18
  async rewrites() {
23
- // Dynamic rewrites for friendly URLs - handled by [slug].js
24
- // This allows /reports to internally route to /viewer/22
25
19
  return []
26
20
  },
27
21
  webpack: (config) => {
22
+ const src = path.resolve(__dirname, 'src');
23
+
24
+ // Resolve bare imports (pages/*, services/*, views/*, context/*, src/*)
25
+ // to the local src/ directory — same as the host app would do via
26
+ // NormalModuleReplacementPlugin, but simpler for standalone dev mode.
28
27
  config.resolve.alias = {
29
28
  ...config.resolve.alias,
30
- apexcharts: path.resolve(__dirname, './node_modules/apexcharts-clevision'),
29
+ pages: path.join(src, 'pages'),
30
+ services: path.join(src, 'services'),
31
+ views: path.join(src, 'views'),
32
+ context: path.join(src, 'context'),
33
+ src: src,
31
34
  };
32
35
 
33
36
  config.module.rules.push({
@@ -40,36 +43,4 @@ const nextConfig = {
40
43
  },
41
44
  };
42
45
 
43
- module.exports = withTM(nextConfig);
44
-
45
-
46
-
47
-
48
-
49
- // const path = require('path');
50
- // const withTM = require('next-transpile-modules')([
51
- // '@fullcalendar/common',
52
- // '@fullcalendar/react',
53
- // '@fullcalendar/daygrid',
54
- // '@fullcalendar/list',
55
- // '@fullcalendar/timegrid',
56
- // '@mui/x-data-grid',
57
- // ]);
58
-
59
- // /** @type {import('next').NextConfig} */
60
- // const nextConfig = {
61
- // trailingSlash: true,
62
- // reactStrictMode: false,
63
- // eslint: {
64
- // ignoreDuringBuilds: true,
65
- // },
66
- // webpack: config => {
67
- // config.resolve.alias = {
68
- // ...config.resolve.alias,
69
- // apexcharts: path.resolve(__dirname, './node_modules/apexcharts-clevision'),
70
- // };
71
- // return config;
72
- // },
73
- // };
74
-
75
- // module.exports = withTM(nextConfig);
46
+ module.exports = nextConfig;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "robobyte-front-builder",
3
- "version": "1.0.19",
3
+ "version": "1.0.21",
4
4
  "description": "RoboByte low-code UI builder, Report builder, and navigation extension system",
5
5
  "main": "src/lib/index.js",
6
6
  "files": [
@@ -21,133 +21,87 @@
21
21
  "dev": "next dev",
22
22
  "build": "next build",
23
23
  "start": "next start",
24
- "export": "next export",
25
24
  "lint": "eslint --fix \"src/**/*.{js,jsx}\"",
26
25
  "format": "prettier --write \"src/**/*.{js,jsx}\"",
27
- "prepublishOnly": "echo 'Publishing @robobyte/front-builder — source-first package, no build step required'"
26
+ "prepublishOnly": "echo 'Publishing robobyte-front-builder — source-first package, no build step required'"
28
27
  },
29
28
  "peerDependencies": {
29
+ "@emotion/react": "^11",
30
+ "@emotion/styled": "^11",
31
+ "@mui/icons-material": "^7",
32
+ "@mui/lab": "^7",
33
+ "@mui/material": "^7",
34
+ "@mui/system": "^7",
35
+ "@mui/x-data-grid": "^7",
36
+ "@mui/x-date-pickers": "^7",
37
+ "@mui/x-internals": "^7",
38
+ "@mui/x-virtualizer": "^7",
39
+ "ag-grid-community": "^33",
40
+ "ag-grid-enterprise": "^33",
41
+ "ag-grid-react": "^33",
42
+ "next": ">=13",
30
43
  "react": ">=18",
31
44
  "react-dom": ">=18",
32
- "next": ">=13",
33
- "@mui/material": ">=7",
34
- "@mui/icons-material": ">=7",
35
- "@mui/lab": ">=7",
36
- "@mui/system": ">=7",
37
- "@mui/x-data-grid": ">=7",
38
- "@mui/x-date-pickers": ">=7",
39
- "@mui/x-tree-view": ">=7",
40
- "@emotion/cache": ">=11",
41
- "@emotion/react": ">=11",
42
- "@emotion/server": ">=11",
43
- "@emotion/styled": ">=11",
44
- "axios": ">=1"
45
+ "xlsx": ">=0.18",
46
+ "react-hot-toast": ">=2"
45
47
  },
46
48
  "dependencies": {
47
- "@auth0/auth0-react": "2.1.0",
48
- "@aws-amplify/auth": "5.3.6",
49
- "@aws-amplify/ui-react": "4.6.3",
50
- "@babel/eslint-parser": "7.21.8",
51
- "@casl/ability": "6.5.0",
52
- "@casl/react": "3.1.0",
53
- "@date-io/date-fns": "^2.16.0",
54
49
  "@dnd-kit/core": "^6.3.1",
55
50
  "@dnd-kit/sortable": "^10.0.0",
56
51
  "@dnd-kit/utilities": "^3.2.2",
57
- "@fullcalendar/common": "5.11.5",
58
- "@fullcalendar/core": "6.1.7",
59
- "@fullcalendar/daygrid": "6.1.7",
60
- "@fullcalendar/interaction": "6.1.7",
61
- "@fullcalendar/list": "6.1.7",
62
- "@fullcalendar/react": "6.1.7",
63
- "@fullcalendar/timegrid": "6.1.7",
64
52
  "@hookform/resolvers": "3.1.0",
65
- "@microsoft/signalr": "^8.0.0",
66
53
  "@monaco-editor/react": "^4.7.0",
67
- "@popperjs/core": "2.11.7",
68
54
  "@react-google-maps/api": "^2.19.2",
69
- "@reduxjs/toolkit": "1.9.5",
70
- "@unicef/material-ui-currency-textfield": "^0.8.6",
71
- "ag-grid-community": "^33.3.2",
72
- "ag-grid-enterprise": "^33.3.2",
73
- "ag-grid-react": "^33.3.2",
74
- "apexcharts-clevision": "3.28.5",
75
- "aws-amplify": "^5.3.13",
76
- "axios-mock-adapter": "1.21.4",
77
- "babel-eslint": "10.1.0",
78
- "chart.js": "4.3.0",
55
+ "axios": "^1.6.0",
79
56
  "classnames": "2.5.1",
80
- "cleave.js": "1.6.0",
81
- "clipboard-copy": "4.0.1",
82
- "clsx": "1.2.1",
83
- "date-fns": "^2.30.0",
84
57
  "dayjs": "^1.11.9",
85
58
  "draft-js": "0.11.7",
86
- "firebase": "9.22.0",
87
- "hls.js": "^1.0.3-0.canary.7275",
88
- "https": "^1.0.0",
89
- "i18next": "22.5.0",
90
- "i18next-browser-languagedetector": "7.0.1",
91
- "i18next-http-backend": "2.2.1",
92
- "jsonwebtoken": "9.0.0",
93
59
  "jspdf": "^3.0.3",
94
- "jspdf-autotable": "^5.0.2",
95
- "jwt-decode": "^4.0.0",
96
- "keen-slider": "6.8.5",
60
+ "jspdf-autotable": "^5.0.7",
97
61
  "list": "^2.0.19",
62
+ "lodash": "^4.17.21",
98
63
  "mdi-material-ui": "7.7.0",
99
64
  "moment": "^2.30.1",
100
65
  "moment-timezone": "^0.5.47",
101
- "notistack": "^3.0.2",
102
- "nprogress": "0.2.0",
103
66
  "numeral": "^2.0.6",
104
- "payment": "2.4.6",
105
- "prismjs": "1.29.0",
106
- "prop-types": "^15.8.1",
107
- "react-apexcharts": "1.4.0",
108
67
  "react-beautiful-dnd": "13.1.1",
109
- "react-chartjs-2": "5.2.0",
110
- "react-colorful": "^5.6.1",
111
- "react-credit-cards": "0.8.3",
112
68
  "react-datepicker": "4.11.0",
113
- "react-draft-wysiwyg": "1.15.0",
114
- "react-dropzone": "14.2.3",
115
69
  "react-hook-form": "7.43.9",
116
- "react-hot-toast": "2.4.1",
117
- "react-i18next": "12.3.1",
118
- "react-multi-date-picker": "^4.5.2",
119
70
  "react-number-format": "^5.4.0",
120
71
  "react-perfect-scrollbar": "1.5.8",
121
- "react-popper": "2.3.0",
122
- "react-quill": "^2.0.0",
123
- "react-redux": "8.0.5",
124
72
  "react-signature-canvas": "^1.1.0-alpha.2",
125
- "react-to-pdf": "0.0.14",
126
73
  "react-use": "^17.6.0",
127
- "react-viewer": "^3.2.2",
128
74
  "recharts": "2.6.2",
129
- "rsuite": "^5.60.1",
130
- "sass": "^1.77.8",
131
- "styled-components": "^6.1.10",
132
- "stylelint": "16.6.1",
133
- "stylis": "4.2.0",
134
- "stylis-plugin-rtl": "2.1.1",
135
75
  "suneditor": "^2.47.5",
136
76
  "suneditor-react": "^3.6.1",
137
- "sweetalert2": "^11.17.2",
138
- "swiper": "^11.2.5",
139
77
  "uuid": "^11.1.0",
78
+ "xlsx": "^0.18.5",
140
79
  "yup": "1.1.1"
141
80
  },
142
81
  "devDependencies": {
143
82
  "@babel/core": "^7.22.0",
83
+ "@emotion/react": "^11",
84
+ "@emotion/styled": "^11",
85
+ "@mui/icons-material": "^7",
86
+ "@mui/lab": "^7",
87
+ "@mui/material": "^7",
88
+ "@mui/system": "^7",
89
+ "@mui/x-data-grid": "^7",
90
+ "@mui/x-date-pickers": "^7",
91
+ "ag-charts-enterprise": "latest",
92
+ "ag-grid-community": "^33",
93
+ "ag-grid-enterprise": "^33",
94
+ "ag-grid-react": "^33",
144
95
  "eslint": "8.41.0",
145
96
  "eslint-config-next": "13.4.3",
146
97
  "eslint-config-prettier": "8.8.0",
147
98
  "eslint-import-resolver-alias": "1.1.2",
148
99
  "eslint-import-resolver-typescript": "3.5.5",
149
100
  "eslint-plugin-import": "2.27.5",
150
- "next-transpile-modules": "^10.0.0",
151
- "prettier": "2.8.8"
101
+ "next": "^13",
102
+ "next-transpile-modules": "^9",
103
+ "prettier": "2.8.8",
104
+ "react": "^18",
105
+ "react-dom": "^18"
152
106
  }
153
107
  }
@@ -1,4 +1,4 @@
1
- import { createContext, useContext, useEffect, useState } from 'react'
1
+ import { createContext, useCallback, useContext, useEffect, useReducer, useRef, useState } from 'react'
2
2
  import { executeActionsByEvent } from 'services/builderHelper/actionExecutor'
3
3
  import { findNode } from 'services/builderHelper'
4
4
  import { executeJSCode } from 'services/builderHelper/jsExecutor'
@@ -88,11 +88,74 @@ const initialSchema = {
88
88
  className: '',
89
89
  children: []
90
90
  },
91
- actions: []
91
+ dialogs: [],
92
+ actions: [],
93
+ timers: []
94
+ }
95
+
96
+ // ── History reducer (undo / redo) ─────────────────────────────────────────────
97
+ //
98
+ // State shape: { past: Schema[], present: Schema, future: Schema[] }
99
+ //
100
+ // SET — normal edit: discard redo stack, push present → past, apply new state
101
+ // UNDO — move one step back in history
102
+ // REDO — move one step forward in history
103
+ //
104
+ // History is capped at 100 entries per direction to bound memory usage.
105
+ //
106
+ const HISTORY_LIMIT = 100
107
+
108
+ function historyReducer(state, action) {
109
+ switch (action.type) {
110
+ case 'SET': {
111
+ const next = typeof action.payload === 'function'
112
+ ? action.payload(state.present)
113
+ : action.payload
114
+ if (next === state.present) return state
115
+ return {
116
+ past: [...state.past, state.present].slice(-HISTORY_LIMIT),
117
+ present: next,
118
+ future: []
119
+ }
120
+ }
121
+ case 'UNDO': {
122
+ if (state.past.length === 0) return state
123
+ const prev = state.past[state.past.length - 1]
124
+ return {
125
+ past: state.past.slice(0, -1),
126
+ present: prev,
127
+ future: [state.present, ...state.future].slice(0, HISTORY_LIMIT)
128
+ }
129
+ }
130
+ case 'REDO': {
131
+ if (state.future.length === 0) return state
132
+ const next = state.future[0]
133
+ return {
134
+ past: [...state.past, state.present].slice(-HISTORY_LIMIT),
135
+ present: next,
136
+ future: state.future.slice(1)
137
+ }
138
+ }
139
+ default:
140
+ return state
141
+ }
92
142
  }
93
143
 
94
144
  export function BuilderProvider({ children }) {
95
- const [schema, setSchema] = useState(initialSchema)
145
+ const [historyState, dispatch] = useReducer(historyReducer, {
146
+ past: [],
147
+ present: initialSchema,
148
+ future: []
149
+ })
150
+
151
+ // Convenience aliases — schema reads the present snapshot;
152
+ // setSchema dispatches a SET action (automatically tracked in history).
153
+ const schema = historyState.present
154
+ const setSchema = useCallback((updater) => dispatch({ type: 'SET', payload: updater }), [])
155
+ const undo = useCallback(() => dispatch({ type: 'UNDO' }), [])
156
+ const redo = useCallback(() => dispatch({ type: 'REDO' }), [])
157
+ const canUndo = historyState.past.length > 0
158
+ const canRedo = historyState.future.length > 0
96
159
  const [selectedId, setSelectedId] = useState(null)
97
160
  const [viewMetaData, setViewMetaData] = useState({
98
161
  id: null,
@@ -105,7 +168,7 @@ export function BuilderProvider({ children }) {
105
168
  })
106
169
 
107
170
  // ✅ NEW: editor mode
108
- const [mode, setMode] = useState('edit') // 'edit' | 'preview'
171
+ const [mode, setMode] = useState('edit') // 'edit' | 'preview' | 'print'
109
172
 
110
173
  // ✅ NEW: global data object for action results
111
174
  const [data, setData] = useState({})
@@ -116,6 +179,39 @@ export function BuilderProvider({ children }) {
116
179
  // ✅ NEW: validation errors
117
180
  const [validationErrors, setValidationErrors] = useState({})
118
181
  const [draggingNodeId, setDraggingNodeId] = useState(null)
182
+ const [clipboard, setClipboard] = useState(null) // copy/paste clipboard
183
+
184
+ // ── Unified ref storage ────────────────────────────────────────────────────
185
+ // dataRef : mutable non-reactive store; read/write from any function
186
+ // without triggering re-renders. Access via dataRef.current.
187
+ // reportRefs : registry of { [nodeId]: updateRef } for every ReportViewer.
188
+ // Each report registers itself; access from JS functions via
189
+ // reportRefs['nodeId'].current (the updateRef array).
190
+ const dataRef = useRef({})
191
+ const reportRefs = useRef({})
192
+ const dialogRefs = useRef({})
193
+ const printDialogRef = useRef(null) // { open: (data?) => void, close: () => void }
194
+
195
+ const openDialog = useCallback((key, data) => {
196
+ const ref = dialogRefs.current[key]
197
+ if (ref) ref.open(data)
198
+ else console.warn(`[openDialog] No dialog registered with key "${key}"`)
199
+ }, [])
200
+
201
+ const closeDialog = useCallback((key) => {
202
+ const ref = dialogRefs.current[key]
203
+ if (ref) ref.close()
204
+ else console.warn(`[closeDialog] No dialog registered with key "${key}"`)
205
+ }, [])
206
+
207
+ const openPrintLayout = useCallback((data) => {
208
+ if (printDialogRef.current) printDialogRef.current.open(data)
209
+ else console.warn('[openPrintLayout] PrintDialog is not mounted')
210
+ }, [])
211
+
212
+ const closePrintLayout = useCallback(() => {
213
+ if (printDialogRef.current) printDialogRef.current.close()
214
+ }, [])
119
215
 
120
216
  useEffect(() => {
121
217
  console.log('BUILDER SCHEMA:', schema)
@@ -131,7 +227,10 @@ export function BuilderProvider({ children }) {
131
227
 
132
228
  // Execute onLoad actions with fresh context
133
229
  if (schema.actions && schema.actions.length > 0) {
134
- executeActionsByEvent(schema.actions, 'onLoad', { form: {}, data: {} }, setData).catch(err => {
230
+ executeActionsByEvent(schema.actions, 'onLoad', {
231
+ form: {}, data: {}, setData,
232
+ dataRef: dataRef.current, reportRefs: reportRefs.current,
233
+ }).catch(err => {
135
234
  console.error('onLoad actions error:', err)
136
235
  })
137
236
  }
@@ -154,7 +253,10 @@ export function BuilderProvider({ children }) {
154
253
 
155
254
  // If validation passes, execute onSubmit actions
156
255
  if (Object.keys(errors).length === 0) {
157
- await executeActionsByEvent(schema.actions, 'onSubmit', { form, data }, setData)
256
+ await executeActionsByEvent(schema.actions, 'onSubmit', {
257
+ form, data, setData,
258
+ dataRef: dataRef.current, reportRefs: reportRefs.current,
259
+ })
158
260
  return true
159
261
  }
160
262
  return false
@@ -172,6 +274,12 @@ export function BuilderProvider({ children }) {
172
274
  schema,
173
275
  setSchema,
174
276
 
277
+ // ── Undo / redo ──────────────────────────────────────────────────────
278
+ undo,
279
+ redo,
280
+ canUndo,
281
+ canRedo,
282
+
175
283
  viewMetaData,
176
284
  setViewMetaData,
177
285
 
@@ -181,6 +289,12 @@ export function BuilderProvider({ children }) {
181
289
  draggingNodeId,
182
290
  setDraggingNodeId,
183
291
 
292
+ // ── Copy/paste clipboard ─────────────────────────────────────────────
293
+ // clipboard — the last copied node (plain object, not cloned yet)
294
+ // setClipboard — store a node reference for later paste
295
+ clipboard,
296
+ setClipboard,
297
+
184
298
  // ✅ mode API
185
299
  mode,
186
300
  setMode,
@@ -191,6 +305,20 @@ export function BuilderProvider({ children }) {
191
305
  data,
192
306
  setData,
193
307
 
308
+ // ── Unified ref storage ──────────────────────────────────────────────
309
+ // dataRef — mutable non-reactive store (useRef({})); mutate via dataRef.current
310
+ // reportRefs — registry of { [nodeId]: updateRef } for all ReportViewers
311
+ // dialogRefs — registry of { [key]: { open, close } } for all Dialogs
312
+ // printDialogRef — ref to the single PrintDialog { open, close }
313
+ dataRef,
314
+ reportRefs,
315
+ dialogRefs,
316
+ openDialog,
317
+ closeDialog,
318
+ printDialogRef,
319
+ openPrintLayout,
320
+ closePrintLayout,
321
+
194
322
  // ✅ form state and handlers
195
323
  form,
196
324
  setForm,