robobyte-front-builder 1.0.17 → 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 (516) 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 +59 -1
  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 +723 -563
  21. package/src/pages/reportModule/reportBuilder/reportViewer/index.js +137 -71
  22. package/src/pages/reportModule/reportBuilder/reports/index.js +51 -13
  23. package/src/pages/reportModule/reportBuilder/reportsPermissions/index.js +126 -0
  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 +241 -0
  49. package/src/services/helper/reportSessionHelper.js +83 -0
  50. package/src/services/reportData/fetchReportData.js +69 -28
  51. package/src/services/routerRef.js +35 -0
  52. package/src/views/ConfirmDialog.js +2 -2
  53. package/src/views/builder/JSEditor.js +105 -107
  54. package/src/views/builder/inspector/Inspector.jsx +6 -9
  55. package/src/views/builder/inspector/Tabs/ComponentActionsTab.jsx +7 -13
  56. package/src/views/builder/inspector/Tabs/MainTab.jsx +143 -25
  57. package/src/views/builder/inspector/Tabs/RulesTab.jsx +9 -24
  58. package/src/views/builder/inspector/Tabs/StyleTab.jsx +9 -24
  59. package/src/views/builder/inspector/definitions/autocomplete/main.js +4 -6
  60. package/src/views/builder/inspector/definitions/banner/actions.js +7 -0
  61. package/src/views/builder/inspector/definitions/banner/main.js +22 -0
  62. package/src/views/builder/inspector/definitions/banner/rules.js +1 -0
  63. package/src/views/builder/inspector/definitions/banner/style.js +1 -0
  64. package/src/views/builder/inspector/definitions/breadcrumb/main.js +43 -6
  65. package/src/views/builder/inspector/definitions/button/main.js +11 -12
  66. package/src/views/builder/inspector/definitions/button/style.js +18 -30
  67. package/src/views/builder/inspector/definitions/checkbox/actions.js +3 -1
  68. package/src/views/builder/inspector/definitions/checkbox/main.js +4 -6
  69. package/src/views/builder/inspector/definitions/common/main.js +13 -2
  70. package/src/views/builder/inspector/definitions/dataGrid/main.js +23 -0
  71. package/src/views/builder/inspector/definitions/dataTableViewer/main.js +46 -0
  72. package/src/views/builder/inspector/definitions/datepicker/actions.js +3 -1
  73. package/src/views/builder/inspector/definitions/datepicker/main.js +6 -14
  74. package/src/views/builder/inspector/definitions/dialog/main.js +36 -0
  75. package/src/views/builder/inspector/definitions/dropdown/main.js +5 -8
  76. package/src/views/builder/inspector/definitions/excelUpload/actions.js +23 -0
  77. package/src/views/builder/inspector/definitions/excelUpload/main.js +17 -0
  78. package/src/views/builder/inspector/definitions/excelUpload/rules.js +1 -0
  79. package/src/views/builder/inspector/definitions/excelUpload/style.js +45 -0
  80. package/src/views/builder/inspector/definitions/header/main.js +10 -1
  81. package/src/views/builder/inspector/definitions/index.js +106 -19
  82. package/src/views/builder/inspector/definitions/input/actions.js +4 -1
  83. package/src/views/builder/inspector/definitions/input/main.js +20 -11
  84. package/src/views/builder/inspector/definitions/kpi/avatarGroup.js +22 -0
  85. package/src/views/builder/inspector/definitions/kpi/badge.js +17 -0
  86. package/src/views/builder/inspector/definitions/kpi/bulletChart.js +47 -0
  87. package/src/views/builder/inspector/definitions/kpi/chart.js +55 -0
  88. package/src/views/builder/inspector/definitions/kpi/colorScale.js +60 -0
  89. package/src/views/builder/inspector/definitions/kpi/comparisonBars.js +41 -0
  90. package/src/views/builder/inspector/definitions/kpi/countdown.js +46 -0
  91. package/src/views/builder/inspector/definitions/kpi/donut.js +51 -0
  92. package/src/views/builder/inspector/definitions/kpi/funnel.js +25 -0
  93. package/src/views/builder/inspector/definitions/kpi/gauge.js +39 -0
  94. package/src/views/builder/inspector/definitions/kpi/heatmapGrid.js +96 -0
  95. package/src/views/builder/inspector/definitions/kpi/iconBox.js +20 -0
  96. package/src/views/builder/inspector/definitions/kpi/metric.js +45 -0
  97. package/src/views/builder/inspector/definitions/kpi/rating.js +27 -0
  98. package/src/views/builder/inspector/definitions/kpi/statusDot.js +18 -0
  99. package/src/views/builder/inspector/definitions/kpi/stepStage.js +65 -0
  100. package/src/views/builder/inspector/definitions/kpi/tagList.js +32 -0
  101. package/src/views/builder/inspector/definitions/kpi/timeline.js +80 -0
  102. package/src/views/builder/inspector/definitions/kpi/trend.js +20 -0
  103. package/src/views/builder/inspector/definitions/label/main.js +10 -1
  104. package/src/views/builder/inspector/definitions/layout/main.js +27 -3
  105. package/src/views/builder/inspector/definitions/number/main.js +6 -14
  106. package/src/views/builder/inspector/definitions/pageNumber/main.js +21 -0
  107. package/src/views/builder/inspector/definitions/popover/main.js +71 -0
  108. package/src/views/builder/inspector/definitions/radio/main.js +5 -8
  109. package/src/views/builder/inspector/definitions/repeater/main.js +31 -0
  110. package/src/views/builder/inspector/definitions/reportViewer/main.js +15 -1
  111. package/src/views/builder/inspector/definitions/richtext/main.js +5 -8
  112. package/src/views/builder/inspector/definitions/signature/main.js +4 -1
  113. package/src/views/builder/inspector/definitions/tag/main.js +5 -8
  114. package/src/views/builder/inspector/definitions/textarea/actions.js +4 -1
  115. package/src/views/builder/inspector/definitions/textarea/main.js +5 -7
  116. package/src/views/builder/inspector/definitions/time/main.js +5 -8
  117. package/src/views/builder/inspector/definitions/toggle/main.js +5 -19
  118. package/src/views/builder/inspector/definitions/treeView/main.js +61 -0
  119. package/src/views/builder/inspector/definitions/viewRenderer/main.js +53 -0
  120. package/src/views/builder/inspector/definitions/wizard/main.js +68 -0
  121. package/src/views/builder/inspector/definitions/wizard-step/main.js +25 -0
  122. package/src/views/builder/inspector/fields/ActionsConfigEditor.jsx +426 -0
  123. package/src/views/builder/inspector/fields/ColorSchemaField.jsx +140 -0
  124. package/src/views/builder/inspector/fields/ColumnFunctionEditor.jsx +238 -0
  125. package/src/views/builder/inspector/fields/ColumnMappingEditor.jsx +105 -0
  126. package/src/views/builder/inspector/fields/ColumnsConfigEditor.jsx +506 -0
  127. package/src/views/builder/inspector/fields/DonutRingsEditorField.jsx +337 -0
  128. package/src/views/builder/inspector/fields/ExtraColsEditor.jsx +618 -0
  129. package/src/views/builder/inspector/fields/FunctionHelpPopover.jsx +295 -0
  130. package/src/views/builder/inspector/fields/IconEditor.jsx +64 -0
  131. package/src/views/builder/inspector/fields/KpiActionField.jsx +223 -0
  132. package/src/views/builder/inspector/fields/MarkersEditorField.jsx +173 -0
  133. package/src/views/builder/inspector/fields/SelectEditor.jsx +9 -5
  134. package/src/views/builder/inspector/fields/SeriesEditorField.jsx +363 -0
  135. package/src/views/builder/inspector/fields/TableColumnsEditor.jsx +104 -0
  136. package/src/views/builder/inspector/fields/ThresholdsEditor.jsx +247 -0
  137. package/src/views/builder/inspector/fields/ValueFunctionsRefPanel.jsx +217 -0
  138. package/src/views/builder/inspector/fields/columnEditorShared.jsx +217 -0
  139. package/src/views/builder/sidebar/Sidebar.jsx +4 -2
  140. package/src/views/builder/sidebar/SidebarTabs.jsx +28 -17
  141. package/src/views/builder/sidebar/tabs/ActionsTab.jsx +7 -3
  142. package/src/views/builder/sidebar/tabs/AiTab/AiPreviewDialog.jsx +193 -0
  143. package/src/views/builder/sidebar/tabs/AiTab/aiProvider.js +49 -0
  144. package/src/views/builder/sidebar/tabs/AiTab/index.jsx +409 -0
  145. package/src/views/builder/sidebar/tabs/AiTab/schemaTransformer.js +102 -0
  146. package/src/views/builder/sidebar/tabs/AiTab/schemaValidator.js +64 -0
  147. package/src/views/builder/sidebar/tabs/AiTab/systemPrompt.js +1151 -0
  148. package/src/views/builder/sidebar/tabs/Components/ComponentsTab.jsx +31 -31
  149. package/src/views/builder/sidebar/tabs/Components/componentCatalog.js +43 -21
  150. package/src/views/builder/sidebar/tabs/Components/printComponentCatalog.js +81 -0
  151. package/src/views/builder/sidebar/tabs/TimersTab.jsx +338 -0
  152. package/src/views/builder/sidebar/tabs/TreeTab.jsx +13 -4
  153. package/src/views/builder/sidebar/tabs/ViewTab.jsx +1 -1
  154. package/src/views/builder/viewer/AdornedLabel.jsx +82 -0
  155. package/src/views/builder/viewer/ComponentRenderer.jsx +98 -24
  156. package/src/views/builder/viewer/DialogsZone.jsx +259 -0
  157. package/src/views/builder/viewer/FieldLabel.jsx +106 -0
  158. package/src/views/builder/viewer/PrintDialog.jsx +481 -0
  159. package/src/views/builder/viewer/ProductionViewer.jsx +80 -5
  160. package/src/views/builder/viewer/Viewer.jsx +106 -8
  161. package/src/views/builder/viewer/ViewerComponentWrapper.jsx +61 -4
  162. package/src/views/builder/viewer/ViewerToolbar.jsx +273 -59
  163. package/src/views/builder/viewer/renderers/AutoCompleteRenderer.jsx +26 -22
  164. package/src/views/builder/viewer/renderers/AvatarGroupRenderer.jsx +112 -0
  165. package/src/views/builder/viewer/renderers/BadgeRenderer.jsx +79 -0
  166. package/src/views/builder/viewer/renderers/BannerRenderer.jsx +62 -0
  167. package/src/views/builder/viewer/renderers/BreadcrumbRenderer.jsx +203 -15
  168. package/src/views/builder/viewer/renderers/BulletChartRenderer.jsx +147 -0
  169. package/src/views/builder/viewer/renderers/ButtonRenderer.jsx +98 -39
  170. package/src/views/builder/viewer/renderers/CardRenderer.jsx +1 -1
  171. package/src/views/builder/viewer/renderers/ChartRenderer.jsx +388 -0
  172. package/src/views/builder/viewer/renderers/CheckboxRenderer.jsx +17 -9
  173. package/src/views/builder/viewer/renderers/ColorScaleRenderer.jsx +300 -0
  174. package/src/views/builder/viewer/renderers/ComparisonBarsRenderer.jsx +133 -0
  175. package/src/views/builder/viewer/renderers/ContainerRenderer.jsx +3 -1
  176. package/src/views/builder/viewer/renderers/CountdownRenderer.jsx +249 -0
  177. package/src/views/builder/viewer/renderers/DataGridRenderer.jsx +380 -0
  178. package/src/views/builder/viewer/renderers/DataTableViewerRenderer.jsx +240 -0
  179. package/src/views/builder/viewer/renderers/DatePickerRenderer.jsx +25 -24
  180. package/src/views/builder/viewer/renderers/DialogRenderer.jsx +327 -0
  181. package/src/views/builder/viewer/renderers/DividerRenderer.jsx +1 -1
  182. package/src/views/builder/viewer/renderers/DonutRenderer.jsx +294 -0
  183. package/src/views/builder/viewer/renderers/DropdownRenderer.jsx +36 -44
  184. package/src/views/builder/viewer/renderers/ExcelUploadRenderer.jsx +639 -0
  185. package/src/views/builder/viewer/renderers/FunnelRenderer.jsx +93 -0
  186. package/src/views/builder/viewer/renderers/GaugeRenderer.jsx +159 -0
  187. package/src/views/builder/viewer/renderers/HeaderRenderer.jsx +31 -9
  188. package/src/views/builder/viewer/renderers/HeatmapGridRenderer.jsx +432 -0
  189. package/src/views/builder/viewer/renderers/IconBoxRenderer.jsx +59 -0
  190. package/src/views/builder/viewer/renderers/ImageRenderer.jsx +1 -1
  191. package/src/views/builder/viewer/renderers/InputRenderer.jsx +75 -18
  192. package/src/views/builder/viewer/renderers/LabelRenderer.jsx +35 -9
  193. package/src/views/builder/viewer/renderers/LayoutCellRenderer.jsx +102 -40
  194. package/src/views/builder/viewer/renderers/LayoutContextMenu.jsx +8 -8
  195. package/src/views/builder/viewer/renderers/LayoutRenderer.jsx +48 -6
  196. package/src/views/builder/viewer/renderers/LinkRenderer.jsx +1 -1
  197. package/src/views/builder/viewer/renderers/MenuRenderer.jsx +2 -2
  198. package/src/views/builder/viewer/renderers/MetricRenderer.jsx +80 -0
  199. package/src/views/builder/viewer/renderers/NumberFormatRenderer.jsx +21 -30
  200. package/src/views/builder/viewer/renderers/PageNumberRenderer.jsx +76 -0
  201. package/src/views/builder/viewer/renderers/PopoverRenderer.jsx +350 -0
  202. package/src/views/builder/viewer/renderers/ProgressCircleRenderer.jsx +1 -1
  203. package/src/views/builder/viewer/renderers/ProgressLineRenderer.jsx +1 -1
  204. package/src/views/builder/viewer/renderers/RadioGroupRenderer.jsx +28 -39
  205. package/src/views/builder/viewer/renderers/RatingRenderer.jsx +80 -0
  206. package/src/views/builder/viewer/renderers/RepeaterRenderer.jsx +297 -38
  207. package/src/views/builder/viewer/renderers/ReportViewerRenderer.jsx +219 -5
  208. package/src/views/builder/viewer/renderers/RichTextRenderer.jsx +60 -66
  209. package/src/views/builder/viewer/renderers/RowActionsCell.jsx +308 -0
  210. package/src/views/builder/viewer/renderers/SignatureRenderer.jsx +33 -62
  211. package/src/views/builder/viewer/renderers/StatusDotRenderer.jsx +75 -0
  212. package/src/views/builder/viewer/renderers/StepStageRenderer.jsx +348 -0
  213. package/src/views/builder/viewer/renderers/TagListRenderer.jsx +115 -0
  214. package/src/views/builder/viewer/renderers/TagPickerRenderer.jsx +31 -45
  215. package/src/views/builder/viewer/renderers/TextAreaRenderer.jsx +25 -18
  216. package/src/views/builder/viewer/renderers/TextRenderer.jsx +7 -1
  217. package/src/views/builder/viewer/renderers/TimePickerRenderer.jsx +25 -24
  218. package/src/views/builder/viewer/renderers/TimelineRenderer.jsx +525 -0
  219. package/src/views/builder/viewer/renderers/ToggleRenderer.jsx +21 -27
  220. package/src/views/builder/viewer/renderers/TreeViewRenderer.jsx +832 -0
  221. package/src/views/builder/viewer/renderers/TrendRenderer.jsx +66 -0
  222. package/src/views/builder/viewer/renderers/ViewRendererRenderer.jsx +315 -0
  223. package/src/views/builder/viewer/renderers/WizardRenderer.jsx +380 -64
  224. package/src/views/builder/viewer/renderers/WizardStepRenderer.jsx +21 -12
  225. package/src/views/builder/viewer/renderers/dataGridComponents.jsx +824 -0
  226. package/src/views/customFilter/CustomFilterDialog.js +1023 -660
  227. package/src/views/customFilter/FixedFilterDialog.js +649 -0
  228. package/src/views/customFilter/SearchFilterDialog.js +248 -0
  229. package/src/views/genericTable/BuilderExpressionParams.js +3 -3
  230. package/src/views/genericTable/ColumnConfiguratorDialog.js +771 -0
  231. package/src/views/genericTable/FixedFilterDialog.js +3 -2
  232. package/src/views/genericTable/FormattingSettingsDialog.js +551 -0
  233. package/src/views/genericTable/ReportSettingsDialog.js +151 -0
  234. package/src/views/genericTable/SGrid.js +1061 -247
  235. package/src/views/genericTable/SearchFilterDialog.js +3 -2
  236. package/src/views/genericTable/TAGGrid.js +83 -69
  237. package/src/views/genericTable/cellEditors/autocompleteEditor.js +5 -9
  238. package/src/views/genericTable/convertStringFunctions.js +336 -0
  239. package/src/views/genericTable/statusBar/rowCountStatusBar.js +3 -1
  240. package/src/views/genericTable/updateRefHelpers.js +424 -0
  241. package/src/views/printBuilder/PrintBuilderViewer.jsx +607 -0
  242. package/src/views/printBuilder/PrintPreviewCanvas.jsx +157 -0
  243. package/src/views/rolePermissions/UpdateReportPermissionDialog.js +316 -0
  244. package/src/@core/components/auth/AclGuard.js +0 -55
  245. package/src/@core/components/auth/AuthGuard.js +0 -40
  246. package/src/@core/components/auth/GuestGuard.js +0 -30
  247. package/src/@core/components/custom-inputs/Horizontal.jsx +0 -143
  248. package/src/@core/components/custom-inputs/Image.jsx +0 -78
  249. package/src/@core/components/custom-inputs/Vertical.jsx +0 -113
  250. package/src/@core/components/customizer/index.jsx +0 -470
  251. package/src/@core/components/customizer/styles.module.css +0 -169
  252. package/src/@core/components/mui/Avatar.jsx +0 -41
  253. package/src/@core/components/mui/Badge.jsx +0 -20
  254. package/src/@core/components/mui/IconButton.jsx +0 -74
  255. package/src/@core/components/mui/TabList.jsx +0 -60
  256. package/src/@core/components/option-menu/index.jsx +0 -137
  257. package/src/@core/components/scroll-to-top/index.jsx +0 -43
  258. package/src/@core/components/spinner/index.js +0 -26
  259. package/src/@core/components/window-wrapper/index.js +0 -27
  260. package/src/@core/contexts/settingsContext.jsx +0 -98
  261. package/src/@core/hooks/useBgColor.js +0 -63
  262. package/src/@core/hooks/useImageVariant.js +0 -27
  263. package/src/@core/hooks/useLayoutInit.js +0 -37
  264. package/src/@core/hooks/useObjectCookie.js +0 -18
  265. package/src/@core/hooks/useSettings.jsx +0 -15
  266. package/src/@core/layouts/BlankLayout.js +0 -37
  267. package/src/@core/layouts/BlankLayoutWithAppBar.js +0 -51
  268. package/src/@core/layouts/HorizontalLayout.jsx +0 -151
  269. package/src/@core/layouts/Layout.js +0 -39
  270. package/src/@core/layouts/VerticalLayout.jsx +0 -124
  271. package/src/@core/layouts/components/blank-layout-with-appBar/index.js +0 -115
  272. package/src/@core/layouts/components/horizontal/app-bar-content/index.js +0 -67
  273. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavGroup.js +0 -352
  274. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavItems.js +0 -21
  275. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavLink.js +0 -195
  276. package/src/@core/layouts/components/horizontal/navigation/index.js +0 -31
  277. package/src/@core/layouts/components/shared-components/LanguageDropdown.js +0 -96
  278. package/src/@core/layouts/components/shared-components/ModeToggler.js +0 -32
  279. package/src/@core/layouts/components/shared-components/NotificationDropdown.js +0 -226
  280. package/src/@core/layouts/components/shared-components/UserDropdown.js +0 -177
  281. package/src/@core/layouts/components/shared-components/footer/FooterContent.js +0 -46
  282. package/src/@core/layouts/components/shared-components/footer/index.js +0 -61
  283. package/src/@core/layouts/components/vertical/appBar/index.js +0 -74
  284. package/src/@core/layouts/components/vertical/navigation/Drawer.js +0 -122
  285. package/src/@core/layouts/components/vertical/navigation/VerticalNavGroup.js +0 -435
  286. package/src/@core/layouts/components/vertical/navigation/VerticalNavHeader.js +0 -180
  287. package/src/@core/layouts/components/vertical/navigation/VerticalNavItems.js +0 -26
  288. package/src/@core/layouts/components/vertical/navigation/VerticalNavLink.js +0 -258
  289. package/src/@core/layouts/components/vertical/navigation/VerticalNavSectionTitle.js +0 -102
  290. package/src/@core/layouts/components/vertical/navigation/index.js +0 -169
  291. package/src/@core/layouts/utils.js +0 -69
  292. package/src/@core/styles/Table.module.css +0 -93
  293. package/src/@core/styles/horizontal/menuItemStyles.js +0 -100
  294. package/src/@core/styles/horizontal/menuRootStyles.js +0 -19
  295. package/src/@core/styles/libs/fullcalendar/index.js +0 -461
  296. package/src/@core/styles/libs/keen-slider/index.js +0 -111
  297. package/src/@core/styles/libs/react-apexcharts/index.js +0 -107
  298. package/src/@core/styles/libs/react-cleave/index.js +0 -33
  299. package/src/@core/styles/libs/react-credit-cards/index.js +0 -11
  300. package/src/@core/styles/libs/react-datepicker/index.js +0 -388
  301. package/src/@core/styles/libs/react-draft-wysiwyg/index.js +0 -144
  302. package/src/@core/styles/libs/react-dropzone/index.js +0 -76
  303. package/src/@core/styles/libs/react-hot-toast/index.js +0 -37
  304. package/src/@core/styles/libs/recharts/index.js +0 -47
  305. package/src/@core/styles/stepper.js +0 -103
  306. package/src/@core/styles/vertical/menuItemStyles.js +0 -138
  307. package/src/@core/styles/vertical/menuSectionStyles.js +0 -54
  308. package/src/@core/styles/vertical/navigationCustomStyles.js +0 -62
  309. package/src/@core/svg/ContentCompact.jsx +0 -17
  310. package/src/@core/svg/ContentWide.jsx +0 -17
  311. package/src/@core/svg/DirectionLtr.jsx +0 -93
  312. package/src/@core/svg/DirectionRtl.jsx +0 -93
  313. package/src/@core/svg/LayoutCollapsed.jsx +0 -59
  314. package/src/@core/svg/LayoutHorizontal.jsx +0 -42
  315. package/src/@core/svg/LayoutVertical.jsx +0 -59
  316. package/src/@core/svg/Logo.jsx +0 -76
  317. package/src/@core/svg/SkinBordered.jsx +0 -54
  318. package/src/@core/svg/SkinDefault.jsx +0 -59
  319. package/src/@core/tailwind/plugin.js +0 -78
  320. package/src/@core/theme/ThemeComponent.js +0 -63
  321. package/src/@core/theme/ThemeOptions.js +0 -71
  322. package/src/@core/theme/breakpoints/index.js +0 -11
  323. package/src/@core/theme/colorSchemes.js +0 -326
  324. package/src/@core/theme/customShadows.js +0 -11
  325. package/src/@core/theme/globalStyles.js +0 -81
  326. package/src/@core/theme/index.js +0 -42
  327. package/src/@core/theme/overrides/accordion.js +0 -51
  328. package/src/@core/theme/overrides/accordion.jsx +0 -85
  329. package/src/@core/theme/overrides/alerts.js +0 -110
  330. package/src/@core/theme/overrides/alerts.jsx +0 -180
  331. package/src/@core/theme/overrides/autocomplete.js +0 -14
  332. package/src/@core/theme/overrides/autocomplete.jsx +0 -68
  333. package/src/@core/theme/overrides/avatar.js +0 -38
  334. package/src/@core/theme/overrides/avatars.js +0 -27
  335. package/src/@core/theme/overrides/backdrop.js +0 -22
  336. package/src/@core/theme/overrides/badges.js +0 -16
  337. package/src/@core/theme/overrides/breadcrumbs.js +0 -11
  338. package/src/@core/theme/overrides/button-group.js +0 -84
  339. package/src/@core/theme/overrides/button.js +0 -93
  340. package/src/@core/theme/overrides/buttonGroup.js +0 -9
  341. package/src/@core/theme/overrides/card.js +0 -83
  342. package/src/@core/theme/overrides/checkbox.jsx +0 -95
  343. package/src/@core/theme/overrides/chip.js +0 -72
  344. package/src/@core/theme/overrides/dataGrid.js +0 -114
  345. package/src/@core/theme/overrides/dateTimePicker.js +0 -65
  346. package/src/@core/theme/overrides/dialog.js +0 -120
  347. package/src/@core/theme/overrides/divider.js +0 -13
  348. package/src/@core/theme/overrides/drawer.js +0 -20
  349. package/src/@core/theme/overrides/fab.js +0 -13
  350. package/src/@core/theme/overrides/form-control-label.js +0 -19
  351. package/src/@core/theme/overrides/icon-button.js +0 -145
  352. package/src/@core/theme/overrides/index.js +0 -103
  353. package/src/@core/theme/overrides/input.js +0 -72
  354. package/src/@core/theme/overrides/link.js +0 -9
  355. package/src/@core/theme/overrides/list.js +0 -44
  356. package/src/@core/theme/overrides/menu.js +0 -25
  357. package/src/@core/theme/overrides/pagination.js +0 -41
  358. package/src/@core/theme/overrides/paper.js +0 -9
  359. package/src/@core/theme/overrides/popover.js +0 -16
  360. package/src/@core/theme/overrides/progress.js +0 -38
  361. package/src/@core/theme/overrides/radio.jsx +0 -80
  362. package/src/@core/theme/overrides/rating.js +0 -16
  363. package/src/@core/theme/overrides/rating.jsx +0 -32
  364. package/src/@core/theme/overrides/select.js +0 -19
  365. package/src/@core/theme/overrides/select.jsx +0 -52
  366. package/src/@core/theme/overrides/slider.js +0 -97
  367. package/src/@core/theme/overrides/snackbar.js +0 -19
  368. package/src/@core/theme/overrides/switch.js +0 -73
  369. package/src/@core/theme/overrides/switches.js +0 -25
  370. package/src/@core/theme/overrides/table-pagination.js +0 -39
  371. package/src/@core/theme/overrides/table.js +0 -81
  372. package/src/@core/theme/overrides/tabs.js +0 -30
  373. package/src/@core/theme/overrides/timeline.js +0 -80
  374. package/src/@core/theme/overrides/toggle-button.js +0 -33
  375. package/src/@core/theme/overrides/toggleButton.js +0 -16
  376. package/src/@core/theme/overrides/tooltip.js +0 -21
  377. package/src/@core/theme/overrides/typography.js +0 -13
  378. package/src/@core/theme/palette/index.js +0 -107
  379. package/src/@core/theme/shadows/index.js +0 -61
  380. package/src/@core/theme/shadows.js +0 -12
  381. package/src/@core/theme/spacing/index.js +0 -3
  382. package/src/@core/theme/spacing.js +0 -5
  383. package/src/@core/theme/typography/index.js +0 -65
  384. package/src/@core/theme/typography.js +0 -84
  385. package/src/@core/utils/create-emotion-cache.js +0 -5
  386. package/src/@core/utils/hex-to-rgba.js +0 -11
  387. package/src/@core/utils/serverHelpers.js +0 -45
  388. package/src/@menu/components/RouterLink.jsx +0 -18
  389. package/src/@menu/components/horizontal-menu/HorizontalNav.jsx +0 -88
  390. package/src/@menu/components/horizontal-menu/Menu.jsx +0 -83
  391. package/src/@menu/components/horizontal-menu/MenuButton.jsx +0 -100
  392. package/src/@menu/components/horizontal-menu/MenuItem.jsx +0 -183
  393. package/src/@menu/components/horizontal-menu/SubMenu.jsx +0 -418
  394. package/src/@menu/components/horizontal-menu/SubMenuContent.jsx +0 -41
  395. package/src/@menu/components/horizontal-menu/VerticalNavInHorizontal.jsx +0 -20
  396. package/src/@menu/components/vertical-menu/Menu.jsx +0 -161
  397. package/src/@menu/components/vertical-menu/MenuButton.jsx +0 -95
  398. package/src/@menu/components/vertical-menu/MenuItem.jsx +0 -180
  399. package/src/@menu/components/vertical-menu/MenuSection.jsx +0 -124
  400. package/src/@menu/components/vertical-menu/NavCollapseIcons.jsx +0 -70
  401. package/src/@menu/components/vertical-menu/NavHeader.jsx +0 -39
  402. package/src/@menu/components/vertical-menu/SubMenu.jsx +0 -420
  403. package/src/@menu/components/vertical-menu/SubMenuContent.jsx +0 -101
  404. package/src/@menu/components/vertical-menu/VerticalNav.jsx +0 -216
  405. package/src/@menu/contexts/horizontalNavContext.jsx +0 -29
  406. package/src/@menu/contexts/verticalNavContext.jsx +0 -65
  407. package/src/@menu/defaultConfigs.js +0 -12
  408. package/src/@menu/hooks/useHorizontalMenu.jsx +0 -19
  409. package/src/@menu/hooks/useHorizontalNav.jsx +0 -19
  410. package/src/@menu/hooks/useMediaQuery.jsx +0 -29
  411. package/src/@menu/hooks/useVerticalMenu.jsx +0 -19
  412. package/src/@menu/hooks/useVerticalNav.jsx +0 -19
  413. package/src/@menu/horizontal-menu/index.jsx +0 -8
  414. package/src/@menu/styles/StyledBackdrop.jsx +0 -15
  415. package/src/@menu/styles/StyledMenuIcon.jsx +0 -12
  416. package/src/@menu/styles/StyledMenuLabel.jsx +0 -16
  417. package/src/@menu/styles/StyledMenuPrefix.jsx +0 -10
  418. package/src/@menu/styles/StyledMenuSectionLabel.jsx +0 -21
  419. package/src/@menu/styles/StyledMenuSuffix.jsx +0 -10
  420. package/src/@menu/styles/StyledSubMenuContent.jsx +0 -43
  421. package/src/@menu/styles/horizontal/StyledHorizontalMenu.jsx +0 -13
  422. package/src/@menu/styles/horizontal/StyledHorizontalMenuItem.jsx +0 -26
  423. package/src/@menu/styles/horizontal/StyledHorizontalNav.jsx +0 -11
  424. package/src/@menu/styles/horizontal/StyledHorizontalNavExpandIcon.jsx +0 -33
  425. package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContent.jsx +0 -18
  426. package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContentWrapper.jsx +0 -10
  427. package/src/@menu/styles/horizontal/horizontalUl.module.css +0 -15
  428. package/src/@menu/styles/styles.module.css +0 -5
  429. package/src/@menu/styles/vertical/StyledVerticalMenu.jsx +0 -16
  430. package/src/@menu/styles/vertical/StyledVerticalMenuItem.jsx +0 -28
  431. package/src/@menu/styles/vertical/StyledVerticalMenuSection.jsx +0 -23
  432. package/src/@menu/styles/vertical/StyledVerticalNav.jsx +0 -67
  433. package/src/@menu/styles/vertical/StyledVerticalNavBgColorContainer.jsx +0 -15
  434. package/src/@menu/styles/vertical/StyledVerticalNavContainer.jsx +0 -23
  435. package/src/@menu/styles/vertical/StyledVerticalNavExpandIcon.jsx +0 -25
  436. package/src/@menu/styles/vertical/verticalNavBgImage.module.css +0 -10
  437. package/src/@menu/svg/ChevronRight.jsx +0 -9
  438. package/src/@menu/svg/Close.jsx +0 -12
  439. package/src/@menu/svg/RadioCircle.jsx +0 -12
  440. package/src/@menu/svg/RadioCircleMarked.jsx +0 -13
  441. package/src/@menu/utils/menuClasses.js +0 -44
  442. package/src/@menu/utils/menuUtils.jsx +0 -145
  443. package/src/@menu/vertical-menu/index.jsx +0 -11
  444. package/src/configs/acl.js +0 -115
  445. package/src/configs/auth.js +0 -5
  446. package/src/configs/aws-exports.js +0 -30
  447. package/src/configs/firebase.js +0 -25
  448. package/src/configs/i18n.js +0 -34
  449. package/src/configs/primaryColorConfig.js +0 -35
  450. package/src/configs/themeConfig.js +0 -44
  451. package/src/layouts/UserLayout.js +0 -94
  452. package/src/layouts/UserThemeOptions.js +0 -191
  453. package/src/layouts/components/Direction.js +0 -30
  454. package/src/layouts/components/HtmlTooltip.js +0 -15
  455. package/src/layouts/components/Translations.js +0 -11
  456. package/src/layouts/components/UserDropdown.js +0 -217
  457. package/src/layouts/components/UserIcon.js +0 -40
  458. package/src/layouts/components/acl/Can.js +0 -6
  459. package/src/layouts/components/acl/CanViewNavGroup.js +0 -36
  460. package/src/layouts/components/acl/CanViewNavLink.js +0 -17
  461. package/src/layouts/components/acl/CanViewNavSectionTitle.js +0 -17
  462. package/src/layouts/components/horizontal/AppBarContent.js +0 -39
  463. package/src/layouts/components/horizontal/ServerSideNavItems.js +0 -44
  464. package/src/layouts/components/mui/StepperComps.js +0 -55
  465. package/src/layouts/components/vertical/AppBarContent.js +0 -35
  466. package/src/layouts/components/vertical/ServerSideNavItems.js +0 -44
  467. package/src/libs/ApexCharts.jsx +0 -5
  468. package/src/libs/ReactPlayer.jsx +0 -5
  469. package/src/libs/Recharts.jsx +0 -4
  470. package/src/libs/auth.js +0 -124
  471. package/src/libs/styles/AppFullCalendar.js +0 -505
  472. package/src/libs/styles/AppKeenSlider.js +0 -116
  473. package/src/libs/styles/AppReactApexCharts.jsx +0 -110
  474. package/src/libs/styles/AppReactDatepicker.jsx +0 -470
  475. package/src/libs/styles/AppReactDropzone.js +0 -76
  476. package/src/libs/styles/AppReactToastify.jsx +0 -108
  477. package/src/libs/styles/AppRecharts.js +0 -55
  478. package/src/libs/styles/inputOtp.module.css +0 -39
  479. package/src/libs/styles/tiptapEditor.css +0 -72
  480. package/src/navigation/horizontal/index.js +0 -246
  481. package/src/navigation/vertical/index.js +0 -253
  482. package/src/pages/401.js +0 -70
  483. package/src/pages/404.js +0 -67
  484. package/src/pages/500.js +0 -68
  485. package/src/pages/[slug].js +0 -115
  486. package/src/pages/_document.js +0 -72
  487. package/src/pages/api/navigation/regenerate-registry.js +0 -116
  488. package/src/pages/api/navigation/save.js +0 -218
  489. package/src/pages/authModule/acl/index.js +0 -48
  490. package/src/pages/authModule/forgot-password/index.js +0 -228
  491. package/src/pages/authModule/permissions/rolePermissions/[id]/rolePermissionsUser/index.js +0 -392
  492. package/src/pages/authModule/permissions/rolePermissions/index.js +0 -343
  493. package/src/pages/authModule/permissions/systemPermissions/index.js +0 -354
  494. package/src/pages/authModule/privacy/index.js +0 -721
  495. package/src/pages/authModule/users/index.js +0 -210
  496. package/src/pages/login/index.js +0 -328
  497. package/src/pages/mainHome/index.js +0 -181
  498. package/src/views/builder/inspector/definitions/cell/main.js +0 -4
  499. package/src/views/builder/inspector/definitions/column/main.js +0 -9
  500. package/src/views/builder/inspector/definitions/column-group/main.js +0 -18
  501. package/src/views/builder/inspector/definitions/header-cell/main.js +0 -5
  502. package/src/views/builder/inspector/definitions/table/main.js +0 -9
  503. package/src/views/builder/viewer/renderers/CellRenderer.jsx +0 -71
  504. package/src/views/builder/viewer/renderers/ColumnGroupRenderer.jsx +0 -96
  505. package/src/views/builder/viewer/renderers/ColumnRenderer.jsx +0 -71
  506. package/src/views/builder/viewer/renderers/HeaderCellRenderer.jsx +0 -78
  507. package/src/views/builder/viewer/renderers/TabRenderer.jsx +0 -82
  508. package/src/views/builder/viewer/renderers/TableRenderer.jsx +0 -92
  509. package/src/views/pages/auth/FooterIllustrationsV2.js +0 -40
  510. package/src/views/pages/misc/FooterIllustrations.js +0 -47
  511. package/src/views/pages/misc/muiTable/CustomPagination.js +0 -34
  512. package/src/views/pages/users/UserManageDialog.js +0 -283
  513. package/src/views/pages/users/UserViewPage.js +0 -199
  514. package/src/views/users/AddUserNameDialog.js +0 -162
  515. package/src/views/users/ContactManage.js +0 -449
  516. 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.17",
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,