robobyte-front-builder 1.0.19 → 1.0.23

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 (520) hide show
  1. package/INTEGRATION.md +1586 -0
  2. package/README.md +928 -0
  3. package/RoboByteBuilder_User_Manual.docx +0 -0
  4. package/next.config.js +19 -48
  5. package/package.json +42 -86
  6. package/src/context/BuilderContext.jsx +191 -7
  7. package/src/context/SystemContext.js +2 -2
  8. package/src/hooks/useGlobalStore.js +36 -0
  9. package/src/hooks/useTimerEngine.js +54 -0
  10. package/src/lib/index.js +11 -3
  11. package/src/lib/layouts/BlankLayout.jsx +13 -0
  12. package/src/lib/providers/RoboByteFrontBuilderProvider.jsx +61 -7
  13. package/src/lib/themes/builderTheme.js +41 -0
  14. package/src/pages/_app.js +32 -134
  15. package/src/pages/api/ai.js +107 -0
  16. package/src/pages/builders/report/index.js +1 -0
  17. package/src/pages/builders/report/list/index.js +1 -0
  18. package/src/pages/builders/report/viewer/index.js +1 -0
  19. package/src/pages/index.js +88 -37
  20. package/src/pages/printBuilder/index.jsx +263 -0
  21. package/src/pages/printBuilder/layouts/index.jsx +298 -0
  22. package/src/pages/reportModule/reportBuilder/index.js +8 -6
  23. package/src/pages/reportModule/reportBuilder/reportViewer/index.js +92 -25
  24. package/src/pages/reportModule/reportBuilder/reports/index.js +3 -5
  25. package/src/pages/reportModule/reportBuilder/reportsPermissions/index.js +2 -3
  26. package/src/pages/viewBuilder/index.jsx +117 -32
  27. package/src/pages/viewBuilder/views/index.js +3 -3
  28. package/src/pages/viewer/[id]/index.js +2 -1
  29. package/src/services/DeleteService.js +31 -60
  30. package/src/services/Endpoints/PrintLayoutEndpoints.js +42 -0
  31. package/src/services/Endpoints/ReportBuilderEndpoints.js +7 -7
  32. package/src/services/Endpoints.js +2 -0
  33. package/src/services/GetService.js +33 -54
  34. package/src/services/PatchService.js +38 -65
  35. package/src/services/PostService.js +37 -63
  36. package/src/services/UpdateService.js +39 -65
  37. package/src/services/builderHelper/actionExecutor.js +141 -25
  38. package/src/services/builderHelper/builderHelper.js +92 -0
  39. package/src/services/builderHelper/colorSchema.js +95 -0
  40. package/src/services/builderHelper/iconResolver.js +50 -0
  41. package/src/services/builderHelper/jsExecutor.js +212 -46
  42. package/src/services/builderHelper/nodeFactory.js +32 -15
  43. package/src/services/builderHelper/numberFormat.js +123 -0
  44. package/src/services/builderHelper/resolveProps.js +73 -4
  45. package/src/services/builderHelper/thresholdEngine.js +77 -0
  46. package/src/services/builderHelper/tree.js +31 -0
  47. package/src/services/components/agGridAutoComplete.js +5 -9
  48. package/src/services/config.js +9 -1
  49. package/src/services/globalStore.js +80 -0
  50. package/src/services/helper/multiSelectEditor.js +5 -9
  51. package/src/services/helper/multiSelectEditorByBuilder.js +5 -9
  52. package/src/services/reportData/fetchReportData.js +69 -28
  53. package/src/services/routerRef.js +35 -0
  54. package/src/services/sessionLog.js +171 -0
  55. package/src/views/ConfirmDialog.js +2 -2
  56. package/src/views/builder/JSEditor.js +105 -107
  57. package/src/views/builder/SessionLogDialog.jsx +350 -0
  58. package/src/views/builder/UnsavedChangesGuard.jsx +103 -0
  59. package/src/views/builder/inspector/Inspector.jsx +6 -9
  60. package/src/views/builder/inspector/Tabs/ComponentActionsTab.jsx +7 -13
  61. package/src/views/builder/inspector/Tabs/MainTab.jsx +143 -25
  62. package/src/views/builder/inspector/Tabs/RulesTab.jsx +9 -24
  63. package/src/views/builder/inspector/Tabs/StyleTab.jsx +9 -24
  64. package/src/views/builder/inspector/definitions/autocomplete/main.js +4 -6
  65. package/src/views/builder/inspector/definitions/banner/actions.js +7 -0
  66. package/src/views/builder/inspector/definitions/banner/main.js +22 -0
  67. package/src/views/builder/inspector/definitions/banner/rules.js +1 -0
  68. package/src/views/builder/inspector/definitions/banner/style.js +1 -0
  69. package/src/views/builder/inspector/definitions/breadcrumb/main.js +43 -6
  70. package/src/views/builder/inspector/definitions/button/main.js +11 -12
  71. package/src/views/builder/inspector/definitions/button/style.js +18 -30
  72. package/src/views/builder/inspector/definitions/checkbox/actions.js +3 -1
  73. package/src/views/builder/inspector/definitions/checkbox/main.js +4 -6
  74. package/src/views/builder/inspector/definitions/common/main.js +13 -2
  75. package/src/views/builder/inspector/definitions/dataGrid/main.js +23 -0
  76. package/src/views/builder/inspector/definitions/dataTableViewer/main.js +46 -0
  77. package/src/views/builder/inspector/definitions/datepicker/actions.js +3 -1
  78. package/src/views/builder/inspector/definitions/datepicker/main.js +6 -14
  79. package/src/views/builder/inspector/definitions/dialog/main.js +36 -0
  80. package/src/views/builder/inspector/definitions/dropdown/main.js +5 -8
  81. package/src/views/builder/inspector/definitions/excelUpload/actions.js +23 -0
  82. package/src/views/builder/inspector/definitions/excelUpload/main.js +17 -0
  83. package/src/views/builder/inspector/definitions/excelUpload/rules.js +1 -0
  84. package/src/views/builder/inspector/definitions/excelUpload/style.js +45 -0
  85. package/src/views/builder/inspector/definitions/header/main.js +10 -1
  86. package/src/views/builder/inspector/definitions/index.js +106 -19
  87. package/src/views/builder/inspector/definitions/input/actions.js +4 -1
  88. package/src/views/builder/inspector/definitions/input/main.js +20 -11
  89. package/src/views/builder/inspector/definitions/kpi/avatarGroup.js +22 -0
  90. package/src/views/builder/inspector/definitions/kpi/badge.js +17 -0
  91. package/src/views/builder/inspector/definitions/kpi/bulletChart.js +47 -0
  92. package/src/views/builder/inspector/definitions/kpi/chart.js +55 -0
  93. package/src/views/builder/inspector/definitions/kpi/colorScale.js +60 -0
  94. package/src/views/builder/inspector/definitions/kpi/comparisonBars.js +41 -0
  95. package/src/views/builder/inspector/definitions/kpi/countdown.js +46 -0
  96. package/src/views/builder/inspector/definitions/kpi/donut.js +51 -0
  97. package/src/views/builder/inspector/definitions/kpi/funnel.js +25 -0
  98. package/src/views/builder/inspector/definitions/kpi/gauge.js +39 -0
  99. package/src/views/builder/inspector/definitions/kpi/heatmapGrid.js +96 -0
  100. package/src/views/builder/inspector/definitions/kpi/iconBox.js +20 -0
  101. package/src/views/builder/inspector/definitions/kpi/metric.js +45 -0
  102. package/src/views/builder/inspector/definitions/kpi/rating.js +27 -0
  103. package/src/views/builder/inspector/definitions/kpi/statusDot.js +18 -0
  104. package/src/views/builder/inspector/definitions/kpi/stepStage.js +65 -0
  105. package/src/views/builder/inspector/definitions/kpi/tagList.js +32 -0
  106. package/src/views/builder/inspector/definitions/kpi/timeline.js +80 -0
  107. package/src/views/builder/inspector/definitions/kpi/trend.js +20 -0
  108. package/src/views/builder/inspector/definitions/label/main.js +10 -1
  109. package/src/views/builder/inspector/definitions/layout/main.js +27 -3
  110. package/src/views/builder/inspector/definitions/number/main.js +6 -14
  111. package/src/views/builder/inspector/definitions/pageNumber/main.js +21 -0
  112. package/src/views/builder/inspector/definitions/popover/main.js +71 -0
  113. package/src/views/builder/inspector/definitions/radio/main.js +5 -8
  114. package/src/views/builder/inspector/definitions/repeater/main.js +31 -0
  115. package/src/views/builder/inspector/definitions/reportViewer/main.js +28 -1
  116. package/src/views/builder/inspector/definitions/richtext/main.js +5 -8
  117. package/src/views/builder/inspector/definitions/signature/main.js +4 -1
  118. package/src/views/builder/inspector/definitions/tag/main.js +5 -8
  119. package/src/views/builder/inspector/definitions/textarea/actions.js +4 -1
  120. package/src/views/builder/inspector/definitions/textarea/main.js +5 -7
  121. package/src/views/builder/inspector/definitions/time/main.js +5 -8
  122. package/src/views/builder/inspector/definitions/toggle/main.js +5 -19
  123. package/src/views/builder/inspector/definitions/treeView/main.js +61 -0
  124. package/src/views/builder/inspector/definitions/viewRenderer/main.js +53 -0
  125. package/src/views/builder/inspector/definitions/wizard/main.js +68 -0
  126. package/src/views/builder/inspector/definitions/wizard-step/main.js +25 -0
  127. package/src/views/builder/inspector/fields/ActionsConfigEditor.jsx +426 -0
  128. package/src/views/builder/inspector/fields/ColorSchemaField.jsx +140 -0
  129. package/src/views/builder/inspector/fields/ColumnFunctionEditor.jsx +238 -0
  130. package/src/views/builder/inspector/fields/ColumnMappingEditor.jsx +105 -0
  131. package/src/views/builder/inspector/fields/ColumnsConfigEditor.jsx +506 -0
  132. package/src/views/builder/inspector/fields/DonutRingsEditorField.jsx +337 -0
  133. package/src/views/builder/inspector/fields/ExtraColsEditor.jsx +618 -0
  134. package/src/views/builder/inspector/fields/FunctionHelpPopover.jsx +295 -0
  135. package/src/views/builder/inspector/fields/IconEditor.jsx +64 -0
  136. package/src/views/builder/inspector/fields/KpiActionField.jsx +223 -0
  137. package/src/views/builder/inspector/fields/MarkersEditorField.jsx +173 -0
  138. package/src/views/builder/inspector/fields/SelectEditor.jsx +9 -5
  139. package/src/views/builder/inspector/fields/SeriesEditorField.jsx +363 -0
  140. package/src/views/builder/inspector/fields/TableColumnsEditor.jsx +104 -0
  141. package/src/views/builder/inspector/fields/ThresholdsEditor.jsx +247 -0
  142. package/src/views/builder/inspector/fields/ValueFunctionsRefPanel.jsx +217 -0
  143. package/src/views/builder/inspector/fields/columnEditorShared.jsx +217 -0
  144. package/src/views/builder/sidebar/Sidebar.jsx +4 -2
  145. package/src/views/builder/sidebar/SidebarTabs.jsx +28 -17
  146. package/src/views/builder/sidebar/tabs/ActionsTab.jsx +7 -3
  147. package/src/views/builder/sidebar/tabs/AiTab/AiPreviewDialog.jsx +193 -0
  148. package/src/views/builder/sidebar/tabs/AiTab/aiProvider.js +53 -0
  149. package/src/views/builder/sidebar/tabs/AiTab/index.jsx +409 -0
  150. package/src/views/builder/sidebar/tabs/AiTab/schemaTransformer.js +167 -0
  151. package/src/views/builder/sidebar/tabs/AiTab/schemaValidator.js +64 -0
  152. package/src/views/builder/sidebar/tabs/AiTab/systemPrompt.js +1151 -0
  153. package/src/views/builder/sidebar/tabs/AiTab/trainingExport.js +131 -0
  154. package/src/views/builder/sidebar/tabs/Components/ComponentsTab.jsx +31 -31
  155. package/src/views/builder/sidebar/tabs/Components/componentCatalog.js +43 -21
  156. package/src/views/builder/sidebar/tabs/Components/printComponentCatalog.js +81 -0
  157. package/src/views/builder/sidebar/tabs/TimersTab.jsx +338 -0
  158. package/src/views/builder/sidebar/tabs/TreeTab.jsx +13 -4
  159. package/src/views/builder/sidebar/tabs/ViewTab.jsx +173 -13
  160. package/src/views/builder/viewer/AdornedLabel.jsx +82 -0
  161. package/src/views/builder/viewer/ComponentRenderer.jsx +98 -24
  162. package/src/views/builder/viewer/DialogsZone.jsx +259 -0
  163. package/src/views/builder/viewer/FieldLabel.jsx +106 -0
  164. package/src/views/builder/viewer/PrintDialog.jsx +481 -0
  165. package/src/views/builder/viewer/ProductionViewer.jsx +80 -5
  166. package/src/views/builder/viewer/Viewer.jsx +106 -8
  167. package/src/views/builder/viewer/ViewerComponentWrapper.jsx +70 -9
  168. package/src/views/builder/viewer/ViewerToolbar.jsx +285 -56
  169. package/src/views/builder/viewer/renderers/AutoCompleteRenderer.jsx +26 -22
  170. package/src/views/builder/viewer/renderers/AvatarGroupRenderer.jsx +112 -0
  171. package/src/views/builder/viewer/renderers/BadgeRenderer.jsx +79 -0
  172. package/src/views/builder/viewer/renderers/BannerRenderer.jsx +62 -0
  173. package/src/views/builder/viewer/renderers/BreadcrumbRenderer.jsx +203 -15
  174. package/src/views/builder/viewer/renderers/BulletChartRenderer.jsx +147 -0
  175. package/src/views/builder/viewer/renderers/ButtonRenderer.jsx +98 -39
  176. package/src/views/builder/viewer/renderers/CardRenderer.jsx +1 -1
  177. package/src/views/builder/viewer/renderers/ChartRenderer.jsx +388 -0
  178. package/src/views/builder/viewer/renderers/CheckboxRenderer.jsx +17 -9
  179. package/src/views/builder/viewer/renderers/ColorScaleRenderer.jsx +300 -0
  180. package/src/views/builder/viewer/renderers/ComparisonBarsRenderer.jsx +133 -0
  181. package/src/views/builder/viewer/renderers/ContainerRenderer.jsx +3 -1
  182. package/src/views/builder/viewer/renderers/CountdownRenderer.jsx +249 -0
  183. package/src/views/builder/viewer/renderers/DataGridRenderer.jsx +380 -0
  184. package/src/views/builder/viewer/renderers/DataTableViewerRenderer.jsx +240 -0
  185. package/src/views/builder/viewer/renderers/DatePickerRenderer.jsx +25 -24
  186. package/src/views/builder/viewer/renderers/DialogRenderer.jsx +327 -0
  187. package/src/views/builder/viewer/renderers/DividerRenderer.jsx +1 -1
  188. package/src/views/builder/viewer/renderers/DonutRenderer.jsx +294 -0
  189. package/src/views/builder/viewer/renderers/DropdownRenderer.jsx +36 -44
  190. package/src/views/builder/viewer/renderers/ExcelUploadRenderer.jsx +639 -0
  191. package/src/views/builder/viewer/renderers/FunnelRenderer.jsx +93 -0
  192. package/src/views/builder/viewer/renderers/GaugeRenderer.jsx +159 -0
  193. package/src/views/builder/viewer/renderers/HeaderRenderer.jsx +31 -9
  194. package/src/views/builder/viewer/renderers/HeatmapGridRenderer.jsx +432 -0
  195. package/src/views/builder/viewer/renderers/IconBoxRenderer.jsx +59 -0
  196. package/src/views/builder/viewer/renderers/ImageRenderer.jsx +1 -1
  197. package/src/views/builder/viewer/renderers/InputRenderer.jsx +75 -18
  198. package/src/views/builder/viewer/renderers/LabelRenderer.jsx +35 -9
  199. package/src/views/builder/viewer/renderers/LayoutCellRenderer.jsx +102 -40
  200. package/src/views/builder/viewer/renderers/LayoutContextMenu.jsx +8 -8
  201. package/src/views/builder/viewer/renderers/LayoutRenderer.jsx +48 -6
  202. package/src/views/builder/viewer/renderers/LinkRenderer.jsx +1 -1
  203. package/src/views/builder/viewer/renderers/MenuRenderer.jsx +2 -2
  204. package/src/views/builder/viewer/renderers/MetricRenderer.jsx +80 -0
  205. package/src/views/builder/viewer/renderers/NumberFormatRenderer.jsx +21 -30
  206. package/src/views/builder/viewer/renderers/PageNumberRenderer.jsx +76 -0
  207. package/src/views/builder/viewer/renderers/PopoverRenderer.jsx +350 -0
  208. package/src/views/builder/viewer/renderers/ProgressCircleRenderer.jsx +1 -1
  209. package/src/views/builder/viewer/renderers/ProgressLineRenderer.jsx +1 -1
  210. package/src/views/builder/viewer/renderers/RadioGroupRenderer.jsx +28 -39
  211. package/src/views/builder/viewer/renderers/RatingRenderer.jsx +80 -0
  212. package/src/views/builder/viewer/renderers/RepeaterRenderer.jsx +297 -38
  213. package/src/views/builder/viewer/renderers/ReportViewerRenderer.jsx +263 -5
  214. package/src/views/builder/viewer/renderers/RichTextRenderer.jsx +60 -66
  215. package/src/views/builder/viewer/renderers/RowActionsCell.jsx +308 -0
  216. package/src/views/builder/viewer/renderers/SignatureRenderer.jsx +33 -62
  217. package/src/views/builder/viewer/renderers/StatusDotRenderer.jsx +75 -0
  218. package/src/views/builder/viewer/renderers/StepStageRenderer.jsx +348 -0
  219. package/src/views/builder/viewer/renderers/TagListRenderer.jsx +115 -0
  220. package/src/views/builder/viewer/renderers/TagPickerRenderer.jsx +31 -45
  221. package/src/views/builder/viewer/renderers/TextAreaRenderer.jsx +25 -18
  222. package/src/views/builder/viewer/renderers/TextRenderer.jsx +7 -1
  223. package/src/views/builder/viewer/renderers/TimePickerRenderer.jsx +25 -24
  224. package/src/views/builder/viewer/renderers/TimelineRenderer.jsx +525 -0
  225. package/src/views/builder/viewer/renderers/ToggleRenderer.jsx +21 -27
  226. package/src/views/builder/viewer/renderers/TreeViewRenderer.jsx +832 -0
  227. package/src/views/builder/viewer/renderers/TrendRenderer.jsx +66 -0
  228. package/src/views/builder/viewer/renderers/ViewRendererRenderer.jsx +315 -0
  229. package/src/views/builder/viewer/renderers/WizardRenderer.jsx +380 -64
  230. package/src/views/builder/viewer/renderers/WizardStepRenderer.jsx +21 -12
  231. package/src/views/builder/viewer/renderers/dataGridComponents.jsx +824 -0
  232. package/src/views/customFilter/CustomFilterDialog.js +1023 -660
  233. package/src/views/customFilter/FixedFilterDialog.js +649 -0
  234. package/src/views/customFilter/SearchFilterDialog.js +248 -0
  235. package/src/views/genericTable/BuilderExpressionParams.js +3 -3
  236. package/src/views/genericTable/ColumnConfiguratorDialog.js +33 -24
  237. package/src/views/genericTable/FixedFilterDialog.js +3 -2
  238. package/src/views/genericTable/FormattingSettingsDialog.js +8 -3
  239. package/src/views/genericTable/SGrid.js +821 -448
  240. package/src/views/genericTable/SearchFilterDialog.js +3 -2
  241. package/src/views/genericTable/cellEditors/autocompleteEditor.js +5 -9
  242. package/src/views/genericTable/convertStringFunctions.js +274 -138
  243. package/src/views/genericTable/statusBar/rowCountStatusBar.js +3 -1
  244. package/src/views/genericTable/updateRefHelpers.js +9 -6
  245. package/src/views/printBuilder/PrintBuilderViewer.jsx +627 -0
  246. package/src/views/printBuilder/PrintPreviewCanvas.jsx +157 -0
  247. package/src/views/rolePermissions/UpdateReportPermissionDialog.js +3 -2
  248. package/src/@core/components/auth/AclGuard.js +0 -55
  249. package/src/@core/components/auth/AuthGuard.js +0 -40
  250. package/src/@core/components/auth/GuestGuard.js +0 -30
  251. package/src/@core/components/custom-inputs/Horizontal.jsx +0 -143
  252. package/src/@core/components/custom-inputs/Image.jsx +0 -78
  253. package/src/@core/components/custom-inputs/Vertical.jsx +0 -113
  254. package/src/@core/components/customizer/index.jsx +0 -470
  255. package/src/@core/components/customizer/styles.module.css +0 -169
  256. package/src/@core/components/mui/Avatar.jsx +0 -41
  257. package/src/@core/components/mui/Badge.jsx +0 -20
  258. package/src/@core/components/mui/IconButton.jsx +0 -74
  259. package/src/@core/components/mui/TabList.jsx +0 -60
  260. package/src/@core/components/option-menu/index.jsx +0 -137
  261. package/src/@core/components/scroll-to-top/index.jsx +0 -43
  262. package/src/@core/components/spinner/index.js +0 -26
  263. package/src/@core/components/window-wrapper/index.js +0 -27
  264. package/src/@core/contexts/settingsContext.jsx +0 -98
  265. package/src/@core/hooks/useBgColor.js +0 -63
  266. package/src/@core/hooks/useImageVariant.js +0 -27
  267. package/src/@core/hooks/useLayoutInit.js +0 -37
  268. package/src/@core/hooks/useObjectCookie.js +0 -18
  269. package/src/@core/hooks/useSettings.jsx +0 -15
  270. package/src/@core/layouts/BlankLayout.js +0 -37
  271. package/src/@core/layouts/BlankLayoutWithAppBar.js +0 -51
  272. package/src/@core/layouts/HorizontalLayout.jsx +0 -151
  273. package/src/@core/layouts/Layout.js +0 -39
  274. package/src/@core/layouts/VerticalLayout.jsx +0 -124
  275. package/src/@core/layouts/components/blank-layout-with-appBar/index.js +0 -115
  276. package/src/@core/layouts/components/horizontal/app-bar-content/index.js +0 -67
  277. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavGroup.js +0 -352
  278. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavItems.js +0 -21
  279. package/src/@core/layouts/components/horizontal/navigation/HorizontalNavLink.js +0 -195
  280. package/src/@core/layouts/components/horizontal/navigation/index.js +0 -31
  281. package/src/@core/layouts/components/shared-components/LanguageDropdown.js +0 -96
  282. package/src/@core/layouts/components/shared-components/ModeToggler.js +0 -32
  283. package/src/@core/layouts/components/shared-components/NotificationDropdown.js +0 -226
  284. package/src/@core/layouts/components/shared-components/UserDropdown.js +0 -177
  285. package/src/@core/layouts/components/shared-components/footer/FooterContent.js +0 -46
  286. package/src/@core/layouts/components/shared-components/footer/index.js +0 -61
  287. package/src/@core/layouts/components/vertical/appBar/index.js +0 -74
  288. package/src/@core/layouts/components/vertical/navigation/Drawer.js +0 -122
  289. package/src/@core/layouts/components/vertical/navigation/VerticalNavGroup.js +0 -435
  290. package/src/@core/layouts/components/vertical/navigation/VerticalNavHeader.js +0 -180
  291. package/src/@core/layouts/components/vertical/navigation/VerticalNavItems.js +0 -26
  292. package/src/@core/layouts/components/vertical/navigation/VerticalNavLink.js +0 -258
  293. package/src/@core/layouts/components/vertical/navigation/VerticalNavSectionTitle.js +0 -102
  294. package/src/@core/layouts/components/vertical/navigation/index.js +0 -169
  295. package/src/@core/layouts/utils.js +0 -69
  296. package/src/@core/styles/Table.module.css +0 -93
  297. package/src/@core/styles/horizontal/menuItemStyles.js +0 -100
  298. package/src/@core/styles/horizontal/menuRootStyles.js +0 -19
  299. package/src/@core/styles/libs/fullcalendar/index.js +0 -461
  300. package/src/@core/styles/libs/keen-slider/index.js +0 -111
  301. package/src/@core/styles/libs/react-apexcharts/index.js +0 -107
  302. package/src/@core/styles/libs/react-cleave/index.js +0 -33
  303. package/src/@core/styles/libs/react-credit-cards/index.js +0 -11
  304. package/src/@core/styles/libs/react-datepicker/index.js +0 -388
  305. package/src/@core/styles/libs/react-draft-wysiwyg/index.js +0 -144
  306. package/src/@core/styles/libs/react-dropzone/index.js +0 -76
  307. package/src/@core/styles/libs/react-hot-toast/index.js +0 -37
  308. package/src/@core/styles/libs/recharts/index.js +0 -47
  309. package/src/@core/styles/stepper.js +0 -103
  310. package/src/@core/styles/vertical/menuItemStyles.js +0 -138
  311. package/src/@core/styles/vertical/menuSectionStyles.js +0 -54
  312. package/src/@core/styles/vertical/navigationCustomStyles.js +0 -62
  313. package/src/@core/svg/ContentCompact.jsx +0 -17
  314. package/src/@core/svg/ContentWide.jsx +0 -17
  315. package/src/@core/svg/DirectionLtr.jsx +0 -93
  316. package/src/@core/svg/DirectionRtl.jsx +0 -93
  317. package/src/@core/svg/LayoutCollapsed.jsx +0 -59
  318. package/src/@core/svg/LayoutHorizontal.jsx +0 -42
  319. package/src/@core/svg/LayoutVertical.jsx +0 -59
  320. package/src/@core/svg/Logo.jsx +0 -76
  321. package/src/@core/svg/SkinBordered.jsx +0 -54
  322. package/src/@core/svg/SkinDefault.jsx +0 -59
  323. package/src/@core/tailwind/plugin.js +0 -78
  324. package/src/@core/theme/ThemeComponent.js +0 -63
  325. package/src/@core/theme/ThemeOptions.js +0 -71
  326. package/src/@core/theme/breakpoints/index.js +0 -11
  327. package/src/@core/theme/colorSchemes.js +0 -326
  328. package/src/@core/theme/customShadows.js +0 -11
  329. package/src/@core/theme/globalStyles.js +0 -81
  330. package/src/@core/theme/index.js +0 -42
  331. package/src/@core/theme/overrides/accordion.js +0 -51
  332. package/src/@core/theme/overrides/accordion.jsx +0 -85
  333. package/src/@core/theme/overrides/alerts.js +0 -110
  334. package/src/@core/theme/overrides/alerts.jsx +0 -180
  335. package/src/@core/theme/overrides/autocomplete.js +0 -14
  336. package/src/@core/theme/overrides/autocomplete.jsx +0 -68
  337. package/src/@core/theme/overrides/avatar.js +0 -38
  338. package/src/@core/theme/overrides/avatars.js +0 -27
  339. package/src/@core/theme/overrides/backdrop.js +0 -22
  340. package/src/@core/theme/overrides/badges.js +0 -16
  341. package/src/@core/theme/overrides/breadcrumbs.js +0 -11
  342. package/src/@core/theme/overrides/button-group.js +0 -84
  343. package/src/@core/theme/overrides/button.js +0 -93
  344. package/src/@core/theme/overrides/buttonGroup.js +0 -9
  345. package/src/@core/theme/overrides/card.js +0 -83
  346. package/src/@core/theme/overrides/checkbox.jsx +0 -95
  347. package/src/@core/theme/overrides/chip.js +0 -72
  348. package/src/@core/theme/overrides/dataGrid.js +0 -114
  349. package/src/@core/theme/overrides/dateTimePicker.js +0 -65
  350. package/src/@core/theme/overrides/dialog.js +0 -120
  351. package/src/@core/theme/overrides/divider.js +0 -13
  352. package/src/@core/theme/overrides/drawer.js +0 -20
  353. package/src/@core/theme/overrides/fab.js +0 -13
  354. package/src/@core/theme/overrides/form-control-label.js +0 -19
  355. package/src/@core/theme/overrides/icon-button.js +0 -145
  356. package/src/@core/theme/overrides/index.js +0 -103
  357. package/src/@core/theme/overrides/input.js +0 -72
  358. package/src/@core/theme/overrides/link.js +0 -9
  359. package/src/@core/theme/overrides/list.js +0 -44
  360. package/src/@core/theme/overrides/menu.js +0 -25
  361. package/src/@core/theme/overrides/pagination.js +0 -41
  362. package/src/@core/theme/overrides/paper.js +0 -9
  363. package/src/@core/theme/overrides/popover.js +0 -16
  364. package/src/@core/theme/overrides/progress.js +0 -38
  365. package/src/@core/theme/overrides/radio.jsx +0 -80
  366. package/src/@core/theme/overrides/rating.js +0 -16
  367. package/src/@core/theme/overrides/rating.jsx +0 -32
  368. package/src/@core/theme/overrides/select.js +0 -19
  369. package/src/@core/theme/overrides/select.jsx +0 -52
  370. package/src/@core/theme/overrides/slider.js +0 -97
  371. package/src/@core/theme/overrides/snackbar.js +0 -19
  372. package/src/@core/theme/overrides/switch.js +0 -73
  373. package/src/@core/theme/overrides/switches.js +0 -25
  374. package/src/@core/theme/overrides/table-pagination.js +0 -39
  375. package/src/@core/theme/overrides/table.js +0 -81
  376. package/src/@core/theme/overrides/tabs.js +0 -30
  377. package/src/@core/theme/overrides/timeline.js +0 -80
  378. package/src/@core/theme/overrides/toggle-button.js +0 -33
  379. package/src/@core/theme/overrides/toggleButton.js +0 -16
  380. package/src/@core/theme/overrides/tooltip.js +0 -21
  381. package/src/@core/theme/overrides/typography.js +0 -13
  382. package/src/@core/theme/palette/index.js +0 -107
  383. package/src/@core/theme/shadows/index.js +0 -61
  384. package/src/@core/theme/shadows.js +0 -12
  385. package/src/@core/theme/spacing/index.js +0 -3
  386. package/src/@core/theme/spacing.js +0 -5
  387. package/src/@core/theme/typography/index.js +0 -65
  388. package/src/@core/theme/typography.js +0 -84
  389. package/src/@core/utils/create-emotion-cache.js +0 -5
  390. package/src/@core/utils/hex-to-rgba.js +0 -11
  391. package/src/@core/utils/serverHelpers.js +0 -45
  392. package/src/@menu/components/RouterLink.jsx +0 -18
  393. package/src/@menu/components/horizontal-menu/HorizontalNav.jsx +0 -88
  394. package/src/@menu/components/horizontal-menu/Menu.jsx +0 -83
  395. package/src/@menu/components/horizontal-menu/MenuButton.jsx +0 -100
  396. package/src/@menu/components/horizontal-menu/MenuItem.jsx +0 -183
  397. package/src/@menu/components/horizontal-menu/SubMenu.jsx +0 -418
  398. package/src/@menu/components/horizontal-menu/SubMenuContent.jsx +0 -41
  399. package/src/@menu/components/horizontal-menu/VerticalNavInHorizontal.jsx +0 -20
  400. package/src/@menu/components/vertical-menu/Menu.jsx +0 -161
  401. package/src/@menu/components/vertical-menu/MenuButton.jsx +0 -95
  402. package/src/@menu/components/vertical-menu/MenuItem.jsx +0 -180
  403. package/src/@menu/components/vertical-menu/MenuSection.jsx +0 -124
  404. package/src/@menu/components/vertical-menu/NavCollapseIcons.jsx +0 -70
  405. package/src/@menu/components/vertical-menu/NavHeader.jsx +0 -39
  406. package/src/@menu/components/vertical-menu/SubMenu.jsx +0 -420
  407. package/src/@menu/components/vertical-menu/SubMenuContent.jsx +0 -101
  408. package/src/@menu/components/vertical-menu/VerticalNav.jsx +0 -216
  409. package/src/@menu/contexts/horizontalNavContext.jsx +0 -29
  410. package/src/@menu/contexts/verticalNavContext.jsx +0 -65
  411. package/src/@menu/defaultConfigs.js +0 -12
  412. package/src/@menu/hooks/useHorizontalMenu.jsx +0 -19
  413. package/src/@menu/hooks/useHorizontalNav.jsx +0 -19
  414. package/src/@menu/hooks/useMediaQuery.jsx +0 -29
  415. package/src/@menu/hooks/useVerticalMenu.jsx +0 -19
  416. package/src/@menu/hooks/useVerticalNav.jsx +0 -19
  417. package/src/@menu/horizontal-menu/index.jsx +0 -8
  418. package/src/@menu/styles/StyledBackdrop.jsx +0 -15
  419. package/src/@menu/styles/StyledMenuIcon.jsx +0 -12
  420. package/src/@menu/styles/StyledMenuLabel.jsx +0 -16
  421. package/src/@menu/styles/StyledMenuPrefix.jsx +0 -10
  422. package/src/@menu/styles/StyledMenuSectionLabel.jsx +0 -21
  423. package/src/@menu/styles/StyledMenuSuffix.jsx +0 -10
  424. package/src/@menu/styles/StyledSubMenuContent.jsx +0 -43
  425. package/src/@menu/styles/horizontal/StyledHorizontalMenu.jsx +0 -13
  426. package/src/@menu/styles/horizontal/StyledHorizontalMenuItem.jsx +0 -26
  427. package/src/@menu/styles/horizontal/StyledHorizontalNav.jsx +0 -11
  428. package/src/@menu/styles/horizontal/StyledHorizontalNavExpandIcon.jsx +0 -33
  429. package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContent.jsx +0 -18
  430. package/src/@menu/styles/horizontal/StyledHorizontalSubMenuContentWrapper.jsx +0 -10
  431. package/src/@menu/styles/horizontal/horizontalUl.module.css +0 -15
  432. package/src/@menu/styles/styles.module.css +0 -5
  433. package/src/@menu/styles/vertical/StyledVerticalMenu.jsx +0 -16
  434. package/src/@menu/styles/vertical/StyledVerticalMenuItem.jsx +0 -28
  435. package/src/@menu/styles/vertical/StyledVerticalMenuSection.jsx +0 -23
  436. package/src/@menu/styles/vertical/StyledVerticalNav.jsx +0 -67
  437. package/src/@menu/styles/vertical/StyledVerticalNavBgColorContainer.jsx +0 -15
  438. package/src/@menu/styles/vertical/StyledVerticalNavContainer.jsx +0 -23
  439. package/src/@menu/styles/vertical/StyledVerticalNavExpandIcon.jsx +0 -25
  440. package/src/@menu/styles/vertical/verticalNavBgImage.module.css +0 -10
  441. package/src/@menu/svg/ChevronRight.jsx +0 -9
  442. package/src/@menu/svg/Close.jsx +0 -12
  443. package/src/@menu/svg/RadioCircle.jsx +0 -12
  444. package/src/@menu/svg/RadioCircleMarked.jsx +0 -13
  445. package/src/@menu/utils/menuClasses.js +0 -44
  446. package/src/@menu/utils/menuUtils.jsx +0 -145
  447. package/src/@menu/vertical-menu/index.jsx +0 -11
  448. package/src/configs/acl.js +0 -115
  449. package/src/configs/auth.js +0 -5
  450. package/src/configs/aws-exports.js +0 -30
  451. package/src/configs/firebase.js +0 -25
  452. package/src/configs/i18n.js +0 -34
  453. package/src/configs/primaryColorConfig.js +0 -35
  454. package/src/configs/themeConfig.js +0 -44
  455. package/src/layouts/UserLayout.js +0 -94
  456. package/src/layouts/UserThemeOptions.js +0 -191
  457. package/src/layouts/components/Direction.js +0 -30
  458. package/src/layouts/components/HtmlTooltip.js +0 -15
  459. package/src/layouts/components/Translations.js +0 -11
  460. package/src/layouts/components/UserDropdown.js +0 -217
  461. package/src/layouts/components/UserIcon.js +0 -40
  462. package/src/layouts/components/acl/Can.js +0 -6
  463. package/src/layouts/components/acl/CanViewNavGroup.js +0 -36
  464. package/src/layouts/components/acl/CanViewNavLink.js +0 -17
  465. package/src/layouts/components/acl/CanViewNavSectionTitle.js +0 -17
  466. package/src/layouts/components/horizontal/AppBarContent.js +0 -39
  467. package/src/layouts/components/horizontal/ServerSideNavItems.js +0 -44
  468. package/src/layouts/components/mui/StepperComps.js +0 -55
  469. package/src/layouts/components/vertical/AppBarContent.js +0 -35
  470. package/src/layouts/components/vertical/ServerSideNavItems.js +0 -44
  471. package/src/libs/ApexCharts.jsx +0 -5
  472. package/src/libs/ReactPlayer.jsx +0 -5
  473. package/src/libs/Recharts.jsx +0 -4
  474. package/src/libs/auth.js +0 -124
  475. package/src/libs/styles/AppFullCalendar.js +0 -505
  476. package/src/libs/styles/AppKeenSlider.js +0 -116
  477. package/src/libs/styles/AppReactApexCharts.jsx +0 -110
  478. package/src/libs/styles/AppReactDatepicker.jsx +0 -470
  479. package/src/libs/styles/AppReactDropzone.js +0 -76
  480. package/src/libs/styles/AppReactToastify.jsx +0 -108
  481. package/src/libs/styles/AppRecharts.js +0 -55
  482. package/src/libs/styles/inputOtp.module.css +0 -39
  483. package/src/libs/styles/tiptapEditor.css +0 -72
  484. package/src/navigation/horizontal/index.js +0 -246
  485. package/src/navigation/vertical/index.js +0 -253
  486. package/src/pages/401.js +0 -70
  487. package/src/pages/404.js +0 -67
  488. package/src/pages/500.js +0 -68
  489. package/src/pages/[slug].js +0 -115
  490. package/src/pages/_document.js +0 -72
  491. package/src/pages/api/navigation/regenerate-registry.js +0 -116
  492. package/src/pages/api/navigation/save.js +0 -218
  493. package/src/pages/authModule/acl/index.js +0 -48
  494. package/src/pages/authModule/forgot-password/index.js +0 -228
  495. package/src/pages/authModule/permissions/rolePermissions/[id]/rolePermissionsUser/index.js +0 -392
  496. package/src/pages/authModule/permissions/rolePermissions/index.js +0 -343
  497. package/src/pages/authModule/permissions/systemPermissions/index.js +0 -354
  498. package/src/pages/authModule/privacy/index.js +0 -721
  499. package/src/pages/authModule/users/index.js +0 -210
  500. package/src/pages/login/index.js +0 -328
  501. package/src/pages/mainHome/index.js +0 -181
  502. package/src/views/builder/inspector/definitions/cell/main.js +0 -4
  503. package/src/views/builder/inspector/definitions/column/main.js +0 -9
  504. package/src/views/builder/inspector/definitions/column-group/main.js +0 -18
  505. package/src/views/builder/inspector/definitions/header-cell/main.js +0 -5
  506. package/src/views/builder/inspector/definitions/table/main.js +0 -9
  507. package/src/views/builder/viewer/renderers/CellRenderer.jsx +0 -71
  508. package/src/views/builder/viewer/renderers/ColumnGroupRenderer.jsx +0 -96
  509. package/src/views/builder/viewer/renderers/ColumnRenderer.jsx +0 -71
  510. package/src/views/builder/viewer/renderers/HeaderCellRenderer.jsx +0 -78
  511. package/src/views/builder/viewer/renderers/TabRenderer.jsx +0 -82
  512. package/src/views/builder/viewer/renderers/TableRenderer.jsx +0 -92
  513. package/src/views/pages/auth/FooterIllustrationsV2.js +0 -40
  514. package/src/views/pages/misc/FooterIllustrations.js +0 -47
  515. package/src/views/pages/misc/muiTable/CustomPagination.js +0 -34
  516. package/src/views/pages/users/UserManageDialog.js +0 -283
  517. package/src/views/pages/users/UserViewPage.js +0 -199
  518. package/src/views/users/AddUserNameDialog.js +0 -162
  519. package/src/views/users/ContactManage.js +0 -449
  520. package/src/views/users/ResetPasswordDialog.js +0 -242
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Shared number formatting utility.
3
+ *
4
+ * format options:
5
+ * 'number' — 1,234.56
6
+ * 'currency' — $1,234.56 (currencyCode defaults to USD)
7
+ * 'percent' — 12.4% (expects 0-100 range; pass asRatio:true for 0-1)
8
+ * 'compact' — 84.2k / 1.2M
9
+ * 'duration' — value treated as total seconds → "2h 14m 05s"
10
+ * 'bytes' — 1.2 MB / 4.3 GB
11
+ * 'custom' — returns raw value (caller formats via expression)
12
+ */
13
+
14
+ /** Sanitise a decimals value from an expression field.
15
+ * Accepts string/number, clamps to [0, 20], falls back to `fallback`. */
16
+ function clampDec(val, fallback = 0) {
17
+ if (val == null) return fallback
18
+ const n = Math.round(Number(val))
19
+ if (!isFinite(n) || n < 0) return fallback
20
+ return Math.min(20, n)
21
+ }
22
+
23
+ /** Sanitise prefix/suffix — ensure they are plain strings. */
24
+ function safeStr(val) {
25
+ if (val == null) return ''
26
+ return typeof val === 'string' ? val : String(val)
27
+ }
28
+
29
+ export function formatNumber(value, {
30
+ format = 'number',
31
+ decimals,
32
+ prefix = '',
33
+ suffix = '',
34
+ locale = 'en-US',
35
+ currency = 'USD',
36
+ asRatio = false, // for percent: true means value is 0-1
37
+ } = {}) {
38
+ if (value == null || value === '') return '—'
39
+ const num = Number(value)
40
+ if (isNaN(num)) return String(value)
41
+
42
+ // Sanitise caller-supplied strings from expression fields
43
+ const pfx = safeStr(prefix)
44
+ const sfx = safeStr(suffix)
45
+
46
+ let core
47
+
48
+ switch (format) {
49
+ case 'currency': {
50
+ const dec = clampDec(decimals, 2)
51
+ core = new Intl.NumberFormat(locale, {
52
+ style: 'currency', currency: safeStr(currency) || 'USD',
53
+ minimumFractionDigits: dec, maximumFractionDigits: dec,
54
+ }).format(num)
55
+ break
56
+ }
57
+
58
+ case 'percent': {
59
+ const pct = asRatio ? num * 100 : num
60
+ const dec = clampDec(decimals, 1)
61
+ core = pct.toFixed(dec) + '%'
62
+ break
63
+ }
64
+
65
+ case 'compact': {
66
+ core = new Intl.NumberFormat(locale, {
67
+ notation: 'compact',
68
+ maximumFractionDigits: clampDec(decimals, 1),
69
+ }).format(num)
70
+ break
71
+ }
72
+
73
+ case 'duration': {
74
+ // value = total seconds
75
+ const totalSec = Math.abs(Math.round(num))
76
+ const h = Math.floor(totalSec / 3600)
77
+ const m = Math.floor((totalSec % 3600) / 60)
78
+ const s = totalSec % 60
79
+ const parts = []
80
+ if (h) parts.push(`${h}h`)
81
+ if (m || h) parts.push(`${m}m`)
82
+ parts.push(`${String(s).padStart(2, '0')}s`)
83
+ core = (num < 0 ? '-' : '') + parts.join(' ')
84
+ break
85
+ }
86
+
87
+ case 'bytes': {
88
+ const abs = Math.abs(num)
89
+ const sign = num < 0 ? '-' : ''
90
+ const dec = clampDec(decimals, 1)
91
+ if (abs >= 1e12) core = sign + (abs / 1e12).toFixed(dec) + ' TB'
92
+ else if (abs >= 1e9) core = sign + (abs / 1e9).toFixed(dec) + ' GB'
93
+ else if (abs >= 1e6) core = sign + (abs / 1e6).toFixed(dec) + ' MB'
94
+ else if (abs >= 1e3) core = sign + (abs / 1e3).toFixed(dec) + ' KB'
95
+ else core = sign + abs + ' B'
96
+ break
97
+ }
98
+
99
+ default: { // 'number'
100
+ const dec = clampDec(decimals, 0)
101
+ core = new Intl.NumberFormat(locale, {
102
+ minimumFractionDigits: dec,
103
+ maximumFractionDigits: dec,
104
+ }).format(num)
105
+ break
106
+ }
107
+ }
108
+
109
+ return `${pfx}${core}${sfx}`
110
+ }
111
+
112
+ /** Format a trend delta. Returns { text, positive, zero } */
113
+ export function formatTrend(value, { isPercent = true, decimals = 1, invertColors = false } = {}) {
114
+ if (value == null || value === '') return { text: '—', positive: null, zero: true }
115
+ const num = Number(value)
116
+ if (isNaN(num)) return { text: String(value), positive: null, zero: false }
117
+ const zero = num === 0
118
+ const positive = invertColors ? num < 0 : num > 0
119
+ const abs = Math.abs(num)
120
+ const text = (num > 0 ? '+' : num < 0 ? '−' : '') +
121
+ (isPercent ? abs.toFixed(decimals) + '%' : abs.toFixed(decimals))
122
+ return { text, positive, zero }
123
+ }
@@ -1,21 +1,68 @@
1
- import { getJSCalculationFunction } from './jsExecutor'
1
+ import { getJSCalculationFunction, getUrlParams } from './jsExecutor'
2
2
 
3
+ /**
4
+ * Resolve a node's props tab (main / style / advanced) into plain values.
5
+ *
6
+ * Accepts either:
7
+ * - a plain context object: { form, data, setData, dataRef, reportRefs, … }
8
+ * - a full viewerContext (has dataRef as a React ref with .current)
9
+ *
10
+ * Backward-compatible: callers that pass only { form, data } still work.
11
+ * Callers that pass the full viewerContext get dataItem / itemIndex / all
12
+ * page stores automatically, without any per-renderer boilerplate.
13
+ */
3
14
  export function resolveProps(node, tab, context = {}) {
4
15
  const props = node.props?.[tab] ?? {}
5
16
  const resolved = {}
6
17
 
18
+ const form = context.form ?? {}
19
+ const data = context.data ?? {}
20
+ const setData = context.setData ?? (() => {})
21
+
22
+ // dataRef may be a React ref ({ current: obj }) when viewerContext is passed
23
+ // directly, or a plain object when a custom resolveCtx is constructed.
24
+ const rawDataRef = context.dataRef
25
+ const dataRef = rawDataRef?.current !== undefined ? rawDataRef.current : (rawDataRef ?? {})
26
+
27
+ const rawReportRefs = context.reportRefs
28
+ const reportRefs = rawReportRefs?.current !== undefined ? rawReportRefs.current : (rawReportRefs ?? {})
29
+
30
+ const openDialog = context.openDialog ?? (() => {})
31
+ const closeDialog = context.closeDialog ?? (() => {})
32
+ const urlParams = getUrlParams()
33
+
34
+ // `page` — parent/main-page stores forwarded from the viewerContext.
35
+ // In isolated dialogs/embedded views these differ from the component's own data.
36
+ const page = context.page ?? {
37
+ data: context.pageData ?? data,
38
+ setData: context.pageSetData ?? setData,
39
+ dataRef: context.pageDataRef ?? dataRef,
40
+ reportRefs: context.pageReportRefs ?? reportRefs,
41
+ }
42
+
43
+ const execContext = {
44
+ form, data, setData, dataRef, reportRefs, openDialog, closeDialog, page,
45
+ // Repeater item context — present when inside a Repeater, null elsewhere
46
+ dataItem: context.dataItem ?? null,
47
+ itemIndex: context.itemIndex ?? null,
48
+ }
49
+
7
50
  for (const [key, field] of Object.entries(props)) {
8
51
  if (!field) continue
9
52
 
10
53
  if ((field.valueType || field.type) === 'value') {
11
- resolved[key] = field.value
54
+ // Skip empty strings so the renderer's destructuring default kicks in.
55
+ // An explicitly cleared field should behave identically to "never set".
56
+ if (field.value !== '') resolved[key] = field.value
12
57
  continue
13
58
  }
14
59
 
15
60
  if ((field.valueType || field.type) === 'expression' && field.expression?.code) {
16
61
  try {
17
- const calc = getJSCalculationFunction(field.expression.code, context)
18
- const value = calc(context.form, context.data)
62
+ const calc = getJSCalculationFunction(field.expression.code, execContext)
63
+
64
+ // Call Calculation with all args — old functions that only declare (form, data) ignore extras
65
+ const value = calc(form, data, setData, dataRef, reportRefs, openDialog, closeDialog, urlParams, page)
19
66
 
20
67
  // Viewer prop resolution is synchronous. Skip unresolved promises.
21
68
  if (value && typeof value.then === 'function') {
@@ -32,3 +79,25 @@ export function resolveProps(node, tab, context = {}) {
32
79
 
33
80
  return resolved
34
81
  }
82
+
83
+ /**
84
+ * Resolve a scalar value from a KPI component's "value key" field.
85
+ *
86
+ * The field type is `expression`, so resolveProps already evaluates it.
87
+ * The result can be either:
88
+ * • a string → treat as a data key and look up data[key]
89
+ * • anything else (number, boolean, null …) → use the value directly
90
+ *
91
+ * This lets users write either:
92
+ * valueKey: "revenue" → data["revenue"]
93
+ * valueKey: data.price * data.qty → computed value used as-is
94
+ * valueKey: 42 → literal 42
95
+ *
96
+ * @param {*} key The resolved value from resolveProps (already evaluated)
97
+ * @param {object} data The current page data object
98
+ * @param {*} fallback Returned when key is null/undefined (default: undefined)
99
+ */
100
+ export function resolveValue(key, data, fallback = undefined) {
101
+ if (key == null) return fallback
102
+ return typeof key === 'string' ? (data?.[key] ?? fallback) : key
103
+ }
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Shared threshold evaluation engine.
3
+ *
4
+ * A threshold rule:
5
+ * { operator: '<' | '<=' | '>' | '>=' | '==' | '!=' | 'between',
6
+ * value: number,
7
+ * value2: number, // only used for 'between'
8
+ * color: string, // MUI palette key or CSS color
9
+ * label: string, // optional override label
10
+ * bg: string, // optional background override
11
+ * }
12
+ *
13
+ * evaluateThreshold returns the first matching rule (or null).
14
+ * resolveColor maps a MUI palette key to a CSS color.
15
+ */
16
+
17
+ const MUI_COLOR_MAP = {
18
+ // semantic
19
+ error: { color: '#d32f2f', bg: '#ffebee' },
20
+ warning: { color: '#e65100', bg: '#fff3e0' },
21
+ success: { color: '#2e7d32', bg: '#e8f5e9' },
22
+ info: { color: '#0277bd', bg: '#e1f5fe' },
23
+ primary: { color: '#1565c0', bg: '#e3f2fd' },
24
+ secondary:{ color: '#6a1b9a', bg: '#f3e5f5' },
25
+ // extras
26
+ purple: { color: '#7b1fa2', bg: '#f3e5f5' },
27
+ pink: { color: '#c2185b', bg: '#fce4ec' },
28
+ teal: { color: '#00695c', bg: '#e0f2f1' },
29
+ cyan: { color: '#00838f', bg: '#e0f7fa' },
30
+ orange: { color: '#e64a19', bg: '#fbe9e7' },
31
+ indigo: { color: '#283593', bg: '#e8eaf6' },
32
+ default: { color: 'inherit', bg: 'transparent' },
33
+ }
34
+
35
+ /** Resolve a color string: MUI key → { color, bg } or pass-through. */
36
+ export function resolveMuiColor(key) {
37
+ return MUI_COLOR_MAP[key] ?? { color: key ?? 'inherit', bg: 'transparent' }
38
+ }
39
+
40
+ /** Evaluate a value against a threshold list. Returns the first matching rule or null. */
41
+ export function evaluateThreshold(value, thresholds) {
42
+ if (!Array.isArray(thresholds) || !thresholds.length) return null
43
+ const v = Number(value)
44
+ for (const rule of thresholds) {
45
+ if (matches(v, rule)) return rule
46
+ }
47
+ return null
48
+ }
49
+
50
+ function matches(v, rule) {
51
+ const a = Number(rule.value)
52
+ const b = Number(rule.value2)
53
+ switch (rule.operator) {
54
+ case '<': return v < a
55
+ case '<=': return v <= a
56
+ case '>': return v > a
57
+ case '>=': return v >= a
58
+ case '==': return v === a
59
+ case '!=': return v !== a
60
+ case 'between': return v >= a && v <= b
61
+ default: return false
62
+ }
63
+ }
64
+
65
+ /**
66
+ * Convenience: returns { color, bg } for a value+thresholds pair.
67
+ * Falls back to { color: 'inherit', bg: 'transparent' }.
68
+ */
69
+ export function thresholdColors(value, thresholds) {
70
+ const rule = evaluateThreshold(value, thresholds)
71
+ if (!rule) return { color: 'inherit', bg: 'transparent' }
72
+ const base = resolveMuiColor(rule.color)
73
+ return {
74
+ color: rule.colorOverride ?? base.color,
75
+ bg: rule.bg ?? base.bg,
76
+ }
77
+ }
@@ -10,6 +10,37 @@ export function findNode(node, targetId) {
10
10
  return null
11
11
  }
12
12
 
13
+ /**
14
+ * Find a node anywhere in the schema — searches both root tree and dialogs array.
15
+ * Returns { node, location: 'root' | 'dialog', dialogId? }
16
+ */
17
+ export function findNodeAnywhere(schema, targetId) {
18
+ const inRoot = findNode(schema.root, targetId)
19
+ if (inRoot) return { node: inRoot, location: 'root' }
20
+
21
+ for (const dialog of schema.dialogs ?? []) {
22
+ const inDialog = findNode(dialog, targetId)
23
+ if (inDialog) return { node: inDialog, location: 'dialog', dialogId: dialog.id }
24
+ }
25
+
26
+ return { node: null, location: null }
27
+ }
28
+
29
+ /**
30
+ * Update a node anywhere in the schema — patches root tree or the matching dialog.
31
+ */
32
+ export function updateNodeAnywhere(schema, nodeId, patch, location, dialogId) {
33
+ if (location === 'dialog') {
34
+ return {
35
+ ...schema,
36
+ dialogs: (schema.dialogs ?? []).map(d =>
37
+ d.id === dialogId ? updateNodeInTree(d, nodeId, patch) : d
38
+ ),
39
+ }
40
+ }
41
+ return { ...schema, root: updateNodeInTree(schema.root, nodeId, patch) }
42
+ }
43
+
13
44
  export function removeFromTree(node, targetId) {
14
45
  if (!node.children) return node
15
46
 
@@ -9,10 +9,10 @@ import React, {
9
9
  import Autocomplete from '@mui/material/Autocomplete';
10
10
  import TextField from '@mui/material/TextField';
11
11
  import Chip from '@mui/material/Chip';
12
- import {SettingsConsumer} from 'src/@core/contexts/settingsContext';
13
- import ThemeComponent from 'src/@core/theme/ThemeComponent';
12
+ import { ThemeProvider, createTheme, lighten, styled } from '@mui/material/styles';
14
13
  import moment from 'moment';
15
- import {lighten, styled} from '@mui/material/styles';
14
+
15
+ const defaultTheme = createTheme();
16
16
  import izColors from 'src/configs/izColors.json';
17
17
 
18
18
  // Utility for nested value access
@@ -112,9 +112,7 @@ const AutocompleteEditor = (props, ref) => {
112
112
  };
113
113
 
114
114
  return (
115
- <SettingsConsumer>
116
- {({settings}) => (
117
- <ThemeComponent settings={settings}>
115
+ <ThemeProvider theme={defaultTheme}>
118
116
  <Autocomplete
119
117
  multiple={!isSingle}
120
118
  size="small"
@@ -163,9 +161,7 @@ const AutocompleteEditor = (props, ref) => {
163
161
  ))
164
162
  }
165
163
  />
166
- </ThemeComponent>
167
- )}
168
- </SettingsConsumer>
164
+ </ThemeProvider>
169
165
  );
170
166
  };
171
167
 
@@ -39,9 +39,17 @@ const _config = {
39
39
 
40
40
  // Default token reader — reads the key Mazajk (and most host apps) use.
41
41
  // Override via configureRoboByte({ getAccessToken }) or via the provider prop.
42
+ //
43
+ // Resolution order:
44
+ // 1. localStorage 'accessToken' (normal auth flow — takes priority)
45
+ // 2. NEXT_PUBLIC_DEV_ACCESS_TOKEN env var (dev convenience, .env.local only)
42
46
  getAccessToken: () => {
43
47
  if (typeof window === 'undefined') return null
44
- return localStorage.getItem('accessToken') ?? null
48
+ return (
49
+ localStorage.getItem('accessToken') ??
50
+ (process.env.NODE_ENV === 'development' ? process.env.NEXT_PUBLIC_DEV_ACCESS_TOKEN : null) ??
51
+ null
52
+ )
45
53
  },
46
54
 
47
55
  // Default user reader — parses the JSON object Mazajk stores in localStorage.
@@ -0,0 +1,80 @@
1
+ /**
2
+ * globalStore — cross-route reactive data store.
3
+ *
4
+ * Lives at module scope so it survives Next.js client-side navigations.
5
+ * Any page, dialog, renderer, or Calculation function can read and write it.
6
+ *
7
+ * ── In action code (Calculation functions) ───────────────────────────────────
8
+ *
9
+ * // Read current global state
10
+ * console.log(globalData.selectedUser)
11
+ *
12
+ * // Write (like setData but global — persists across route changes)
13
+ * setGlobalData(prev => ({ ...prev, selectedUser: clickedItem }))
14
+ * setGlobalData({ theme: 'dark', locale: 'en' }) // full replace also works
15
+ *
16
+ * // Then navigate — globalData.selectedUser is still there on the next page
17
+ * router.push('/user-detail')
18
+ *
19
+ * ── In React components ───────────────────────────────────────────────────────
20
+ *
21
+ * import { useGlobalStore } from 'src/hooks/useGlobalStore'
22
+ *
23
+ * function MyRenderer() {
24
+ * const { globalData, setGlobalData } = useGlobalStore()
25
+ * return <div>{globalData.selectedUser?.name}</div>
26
+ * }
27
+ */
28
+
29
+ // ── Internal state ────────────────────────────────────────────────────────────
30
+
31
+ let _state = {}
32
+ const _listeners = new Set()
33
+
34
+ // ── Public API ────────────────────────────────────────────────────────────────
35
+
36
+ /**
37
+ * Returns a snapshot of the current global state.
38
+ * This is synchronous and safe to call from anywhere, including jsExecutor.
39
+ * @returns {object}
40
+ */
41
+ export function getGlobalData() {
42
+ return _state
43
+ }
44
+
45
+ /**
46
+ * Updates the global state.
47
+ * Accepts either a plain object (shallow-merged) or an updater function
48
+ * that receives the previous state and returns the next state.
49
+ *
50
+ * All subscribed React components are notified synchronously so they
51
+ * re-render with the new values.
52
+ *
53
+ * @param {object | ((prev: object) => object)} updater
54
+ */
55
+ export function setGlobalData(updater) {
56
+ const next = typeof updater === 'function' ? updater(_state) : updater
57
+ _state = next && typeof next === 'object' ? { ..._state, ...next } : _state
58
+ _listeners.forEach(fn => fn(_state))
59
+ }
60
+
61
+ /**
62
+ * Subscribe to global state changes.
63
+ * Returns an unsubscribe function — call it in useEffect cleanup.
64
+ *
65
+ * @param {(state: object) => void} listener
66
+ * @returns {() => void} unsubscribe
67
+ */
68
+ export function subscribeGlobal(listener) {
69
+ _listeners.add(listener)
70
+ return () => _listeners.delete(listener)
71
+ }
72
+
73
+ /**
74
+ * Resets the global store to an empty object.
75
+ * Useful for logout / session reset.
76
+ */
77
+ export function resetGlobalData() {
78
+ _state = {}
79
+ _listeners.forEach(fn => fn(_state))
80
+ }
@@ -3,12 +3,12 @@ import Autocomplete from '@mui/material/Autocomplete';
3
3
  import TextField from '@mui/material/TextField';
4
4
  import Chip from '@mui/material/Chip';
5
5
  import { createRoot } from 'react-dom/client';
6
- import ThemeComponent from 'src/@core/theme/ThemeComponent';
6
+ import { ThemeProvider, createTheme, darken, lighten, styled } from "@mui/material/styles";
7
7
  import moment from 'moment';
8
8
  import Typography from "@mui/material/Typography";
9
- import { darken, lighten, styled } from "@mui/material/styles";
10
9
  import izColors from "src/configs/izColors.json"
11
- import { SettingsConsumer } from "src/@core/contexts/settingsContext";
10
+
11
+ const defaultTheme = createTheme();
12
12
  const AutocompleteEditor = React.memo(
13
13
  forwardRef((props, ref) => {
14
14
  // Initialize as an array for multi-selection.
@@ -122,9 +122,7 @@ const AutocompleteEditor = React.memo(
122
122
  });
123
123
 
124
124
  return (
125
- <SettingsConsumer>
126
- {({ settings }) => (
127
- <ThemeComponent settings={settings}>
125
+ <ThemeProvider theme={defaultTheme}>
128
126
  <Autocomplete
129
127
  multiple={!props.isSingle === true}
130
128
  size="small"
@@ -179,9 +177,7 @@ const AutocompleteEditor = React.memo(
179
177
  ))
180
178
  }
181
179
  />
182
- </ThemeComponent>
183
- )}
184
- </SettingsConsumer>
180
+ </ThemeProvider>
185
181
  );
186
182
  })
187
183
  );
@@ -3,13 +3,13 @@ import Autocomplete from '@mui/material/Autocomplete';
3
3
  import TextField from '@mui/material/TextField';
4
4
  import Chip from '@mui/material/Chip';
5
5
  import {createRoot} from 'react-dom/client';
6
- import {SettingsConsumer} from 'src/@core/context/settingsContext';
7
- import ThemeComponent from 'src/@core/theme/ThemeComponent';
6
+ import { ThemeProvider, createTheme, darken, lighten, styled } from "@mui/material/styles";
8
7
  import moment from 'moment';
9
8
  import Typography from "@mui/material/Typography";
10
- import {darken, lighten, styled} from "@mui/material/styles";
11
9
  import izColors from "src/configs/izColors.json"
12
10
 
11
+ const defaultTheme = createTheme();
12
+
13
13
  const AutocompleteEditor = React.memo(
14
14
  forwardRef((props, ref) => {
15
15
  // Initialize as an array for multi-selection.
@@ -128,9 +128,7 @@ const AutocompleteEditor = React.memo(
128
128
  });
129
129
 
130
130
  return (
131
- <SettingsConsumer>
132
- {({settings}) => (
133
- <ThemeComponent settings={settings}>
131
+ <ThemeProvider theme={defaultTheme}>
134
132
  <Autocomplete
135
133
  multiple={!props.isSingle === true}
136
134
  size="small"
@@ -198,9 +196,7 @@ const AutocompleteEditor = React.memo(
198
196
  ))
199
197
  }
200
198
  />
201
- </ThemeComponent>
202
- )}
203
- </SettingsConsumer>
199
+ </ThemeProvider>
204
200
  );
205
201
  })
206
202
  );